2020-12-04 12:03:36 +00:00
|
|
|
import { store, Sib, StoreMixin } from 'https://cdn.skypack.dev/@startinblox/core@0.14';
|
2020-06-18 18:02:54 +00:00
|
|
|
|
|
|
|
export const HublReactivity = {
|
|
|
|
name: 'hubl-reactivity',
|
|
|
|
use: [StoreMixin],
|
|
|
|
attributes: {
|
|
|
|
targetSrc: {
|
|
|
|
type: String,
|
|
|
|
default: '',
|
|
|
|
callback: function () {
|
|
|
|
this.subscribe();
|
|
|
|
}
|
|
|
|
},
|
2020-12-02 09:35:21 +00:00
|
|
|
},
|
|
|
|
async fetchData(value) {
|
|
|
|
this.resourceId = null;
|
|
|
|
if (this.nestedField) {
|
|
|
|
const resource = store.get(value) || await store.getData(value, this.context);
|
|
|
|
const nestedResource = await resource[this.nestedField]
|
|
|
|
this.resourceId = nestedResource ? nestedResource['@id'] : null;
|
|
|
|
} else {
|
|
|
|
this.resourceId = value;
|
|
|
|
}
|
|
|
|
this.subscribe();
|
2020-06-18 18:02:54 +00:00
|
|
|
},
|
|
|
|
subscribe() {
|
|
|
|
if (this.resourceId && this.targetSrc) {
|
|
|
|
store.subscribeVirtualContainerTo(this.resourceId, this.targetSrc);
|
2020-06-23 18:29:12 +00:00
|
|
|
store.subscribeVirtualContainerTo(this.targetSrc, this.resourceId);
|
2020-06-18 18:02:54 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Sib.register(HublReactivity);
|