2020-09-23 10:15:54 +00:00
|
|
|
import { store } from 'https://unpkg.com/@startinblox/core@0.12';
|
|
|
|
import { Sib } from "https://unpkg.com/@startinblox/core@0.12/dist/libs/Sib.js";
|
|
|
|
import { StoreMixin } from "https://unpkg.com/@startinblox/core@0.12/dist/mixins/storeMixin.js";
|
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();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
dataSrc: {
|
|
|
|
type: String,
|
|
|
|
default: '',
|
|
|
|
callback: async function (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();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
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);
|