@startinblox/core 0.17.21-beta.1 → 0.17.21-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_snowpack/env.js +3 -0
- package/dist/_snowpack/pkg/autolinker.js +4281 -0
- package/dist/_snowpack/pkg/autolinker.js.map +1 -0
- package/dist/_snowpack/pkg/autolinker.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/common/_baseUnary-217dffb2.js +377 -0
- package/dist/_snowpack/pkg/common/_baseUnary-217dffb2.js.map +1 -0
- package/dist/_snowpack/pkg/common/_baseUnary-217dffb2.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/common/_commonjsHelpers-8c19dec8.js +22 -0
- package/dist/_snowpack/pkg/common/_commonjsHelpers-8c19dec8.js.map +1 -0
- package/dist/_snowpack/pkg/common/_commonjsHelpers-8c19dec8.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/common/decode-a4c334cf.js +216 -0
- package/dist/_snowpack/pkg/common/decode-a4c334cf.js.map +1 -0
- package/dist/_snowpack/pkg/common/decode-a4c334cf.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/common/lit-html-babd44cd.js +1119 -0
- package/dist/_snowpack/pkg/common/lit-html-babd44cd.js.map +1 -0
- package/dist/_snowpack/pkg/common/lit-html-babd44cd.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/delta-markdown-for-quill.js +25677 -0
- package/dist/_snowpack/pkg/delta-markdown-for-quill.js.map +1 -0
- package/dist/_snowpack/pkg/delta-markdown-for-quill.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/dialog-polyfill.js +859 -0
- package/dist/_snowpack/pkg/dialog-polyfill.js.map +1 -0
- package/dist/_snowpack/pkg/dialog-polyfill.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/fusejs.js +1783 -0
- package/dist/_snowpack/pkg/fusejs.js.map +1 -0
- package/dist/_snowpack/pkg/fusejs.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/import-map.json +23 -0
- package/dist/_snowpack/pkg/jsonld-context-parser.js +804 -0
- package/dist/_snowpack/pkg/jsonld-context-parser.js.map +1 -0
- package/dist/_snowpack/pkg/jsonld-context-parser.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/leaflet/dist/leaflet.css +640 -0
- package/dist/_snowpack/pkg/leaflet/dist/leaflet.css.proxy.js +10 -0
- package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.Default.css +60 -0
- package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.Default.css.proxy.js +10 -0
- package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.css +14 -0
- package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.css.proxy.js +10 -0
- package/dist/_snowpack/pkg/lit-html/directives/if-defined.js +40 -0
- package/dist/_snowpack/pkg/lit-html/directives/if-defined.js.map +1 -0
- package/dist/_snowpack/pkg/lit-html/directives/if-defined.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js +46 -0
- package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js.map +1 -0
- package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/lit-html/directives/until.js +88 -0
- package/dist/_snowpack/pkg/lit-html/directives/until.js.map +1 -0
- package/dist/_snowpack/pkg/lit-html/directives/until.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/lit-html.js +92 -0
- package/dist/_snowpack/pkg/lit-html.js.map +1 -0
- package/dist/_snowpack/pkg/lit-html.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/markdown-it.js +11860 -0
- package/dist/_snowpack/pkg/markdown-it.js.map +1 -0
- package/dist/_snowpack/pkg/markdown-it.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/quill/dist/quill.snow.css +945 -0
- package/dist/_snowpack/pkg/quill/dist/quill.snow.css.proxy.js +10 -0
- package/dist/_snowpack/pkg/quill-delta-to-markdown.js +1029 -0
- package/dist/_snowpack/pkg/quill-delta-to-markdown.js.map +1 -0
- package/dist/_snowpack/pkg/quill-delta-to-markdown.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/quill.js +13382 -0
- package/dist/_snowpack/pkg/quill.js.map +1 -0
- package/dist/_snowpack/pkg/quill.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/slim-select.js +4 -0
- package/dist/_snowpack/pkg/slim-select.js.map +1 -0
- package/dist/_snowpack/pkg/slim-select.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/tui-calendar/dist/tui-calendar.css +1164 -0
- package/dist/_snowpack/pkg/tui-calendar/dist/tui-calendar.css.proxy.js +10 -0
- package/dist/_snowpack/pkg/tui-calendar.js +42285 -0
- package/dist/_snowpack/pkg/tui-calendar.js.map +1 -0
- package/dist/_snowpack/pkg/tui-calendar.js.map.proxy.js +1 -0
- package/dist/components/solid-ac-checker.js +51 -0
- package/dist/components/solid-ac-checker.js.map +1 -0
- package/dist/components/solid-calendar.js +87 -0
- package/dist/components/solid-calendar.js.map +1 -0
- package/dist/components/solid-delete.js +111 -0
- package/dist/components/solid-delete.js.map +1 -0
- package/dist/components/solid-display.js +194 -0
- package/dist/components/solid-display.js.map +1 -0
- package/dist/components/solid-form-search.js +226 -0
- package/dist/components/solid-form-search.js.map +1 -0
- package/dist/components/solid-form.js +358 -0
- package/dist/components/solid-form.js.map +1 -0
- package/dist/components/solid-lang.js +46 -0
- package/dist/components/solid-lang.js.map +1 -0
- package/dist/components/solid-map.js +242 -0
- package/dist/components/solid-map.js.map +1 -0
- package/dist/components/solid-table.js +263 -0
- package/dist/components/solid-table.js.map +1 -0
- package/dist/components/solid-widget.js +94 -0
- package/dist/components/solid-widget.js.map +1 -0
- package/dist/import.css +4 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/libs/Component.js +19 -0
- package/dist/libs/Component.js.map +1 -0
- package/dist/libs/ComponentFactory.js +196 -0
- package/dist/libs/ComponentFactory.js.map +1 -0
- package/dist/libs/Compositor.js +103 -0
- package/dist/libs/Compositor.js.map +1 -0
- package/dist/libs/Sib.js +58 -0
- package/dist/libs/Sib.js.map +1 -0
- package/dist/libs/filter.js +214 -0
- package/dist/libs/filter.js.map +1 -0
- package/dist/libs/helpers.js +219 -0
- package/dist/libs/helpers.js.map +1 -0
- package/dist/libs/interfaces.js +6 -0
- package/dist/libs/interfaces.js.map +1 -0
- package/dist/libs/lit-helpers.js +169 -0
- package/dist/libs/lit-helpers.js.map +1 -0
- package/dist/libs/polyfills.js +40 -0
- package/dist/libs/polyfills.js.map +1 -0
- package/dist/libs/store/server-pagination.js +20 -0
- package/dist/libs/store/server-pagination.js.map +1 -0
- package/dist/libs/store/store.js +879 -0
- package/dist/libs/store/store.js.map +1 -0
- package/dist/locales/en.json +10 -0
- package/dist/locales/en.json.proxy.js +2 -0
- package/dist/locales/fr.json +10 -0
- package/dist/locales/fr.json.proxy.js +2 -0
- package/dist/mixins/attributeBinderMixin.js +126 -0
- package/dist/mixins/attributeBinderMixin.js.map +1 -0
- package/dist/mixins/contextMixin.js +28 -0
- package/dist/mixins/contextMixin.js.map +1 -0
- package/dist/mixins/counterMixin.js +75 -0
- package/dist/mixins/counterMixin.js.map +1 -0
- package/dist/mixins/federationMixin.js +65 -0
- package/dist/mixins/federationMixin.js.map +1 -0
- package/dist/mixins/filterMixin.js +136 -0
- package/dist/mixins/filterMixin.js.map +1 -0
- package/dist/mixins/grouperMixin.js +80 -0
- package/dist/mixins/grouperMixin.js.map +1 -0
- package/dist/mixins/highlighterMixin.js +42 -0
- package/dist/mixins/highlighterMixin.js.map +1 -0
- package/dist/mixins/interfaces.js +8 -0
- package/dist/mixins/interfaces.js.map +1 -0
- package/dist/mixins/listMixin.js +138 -0
- package/dist/mixins/listMixin.js.map +1 -0
- package/dist/mixins/nextMixin.js +26 -0
- package/dist/mixins/nextMixin.js.map +1 -0
- package/dist/mixins/paginateMixin.js +110 -0
- package/dist/mixins/paginateMixin.js.map +1 -0
- package/dist/mixins/requiredMixin.js +34 -0
- package/dist/mixins/requiredMixin.js.map +1 -0
- package/dist/mixins/serverPaginationMixin.js +130 -0
- package/dist/mixins/serverPaginationMixin.js.map +1 -0
- package/dist/mixins/sorterMixin.js +149 -0
- package/dist/mixins/sorterMixin.js.map +1 -0
- package/dist/mixins/storeMixin.js +111 -0
- package/dist/mixins/storeMixin.js.map +1 -0
- package/dist/mixins/translationMixin.js +68 -0
- package/dist/mixins/translationMixin.js.map +1 -0
- package/dist/mixins/validationMixin.js +113 -0
- package/dist/mixins/validationMixin.js.map +1 -0
- package/dist/mixins/widgetMixin.js +451 -0
- package/dist/mixins/widgetMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/actionMixin.js +14 -0
- package/dist/new-widgets/attributeMixins/actionMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/blankMixin.js +10 -0
- package/dist/new-widgets/attributeMixins/blankMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/booleanMixin.js +10 -0
- package/dist/new-widgets/attributeMixins/booleanMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/index.js +20 -0
- package/dist/new-widgets/attributeMixins/index.js.map +1 -0
- package/dist/new-widgets/attributeMixins/mailtoMixin.js +10 -0
- package/dist/new-widgets/attributeMixins/mailtoMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/multipleMixin.js +28 -0
- package/dist/new-widgets/attributeMixins/multipleMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/numberMixin.js +10 -0
- package/dist/new-widgets/attributeMixins/numberMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/placeholderMixin.js +19 -0
- package/dist/new-widgets/attributeMixins/placeholderMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/telMixin.js +10 -0
- package/dist/new-widgets/attributeMixins/telMixin.js.map +1 -0
- package/dist/new-widgets/baseWidgetMixin.js +122 -0
- package/dist/new-widgets/baseWidgetMixin.js.map +1 -0
- package/dist/new-widgets/callbackMixins/autocompletionMixin.js +104 -0
- package/dist/new-widgets/callbackMixins/autocompletionMixin.js.map +1 -0
- package/dist/new-widgets/callbackMixins/index.js +8 -0
- package/dist/new-widgets/callbackMixins/index.js.map +1 -0
- package/dist/new-widgets/callbackMixins/richtextMixin.js +42 -0
- package/dist/new-widgets/callbackMixins/richtextMixin.js.map +1 -0
- package/dist/new-widgets/callbackMixins/slimselect.css +2 -0
- package/dist/new-widgets/callbackMixins/slimselect.css.proxy.js +10 -0
- package/dist/new-widgets/new-widget-factory.js +96 -0
- package/dist/new-widgets/new-widget-factory.js.map +1 -0
- package/dist/new-widgets/templateAdditionMixins/addableMixin.js +41 -0
- package/dist/new-widgets/templateAdditionMixins/addableMixin.js.map +1 -0
- package/dist/new-widgets/templateAdditionMixins/index.js +14 -0
- package/dist/new-widgets/templateAdditionMixins/index.js.map +1 -0
- package/dist/new-widgets/templateAdditionMixins/labelLastMixin.js +29 -0
- package/dist/new-widgets/templateAdditionMixins/labelLastMixin.js.map +1 -0
- package/dist/new-widgets/templateAdditionMixins/labelMixin.js +31 -0
- package/dist/new-widgets/templateAdditionMixins/labelMixin.js.map +1 -0
- package/dist/new-widgets/templates/defaultTemplatesDirectory.js +36 -0
- package/dist/new-widgets/templates/defaultTemplatesDirectory.js.map +1 -0
- package/dist/new-widgets/templates/displayTemplatesDirectory.js +90 -0
- package/dist/new-widgets/templates/displayTemplatesDirectory.js.map +1 -0
- package/dist/new-widgets/templates/formTemplatesDirectory.js +397 -0
- package/dist/new-widgets/templates/formTemplatesDirectory.js.map +1 -0
- package/dist/new-widgets/templates/groupTemplatesDirectory.js +21 -0
- package/dist/new-widgets/templates/groupTemplatesDirectory.js.map +1 -0
- package/dist/new-widgets/templates/index.js +7 -0
- package/dist/new-widgets/templates/index.js.map +1 -0
- package/dist/new-widgets/templates/setTemplatesDirectory.js +49 -0
- package/dist/new-widgets/templates/setTemplatesDirectory.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/altMixin.js +13 -0
- package/dist/new-widgets/templatesDependencies/altMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/editableMixin.js +77 -0
- package/dist/new-widgets/templatesDependencies/editableMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/filterRangeFormMixin.js +38 -0
- package/dist/new-widgets/templatesDependencies/filterRangeFormMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formCheckboxMixin.js +14 -0
- package/dist/new-widgets/templatesDependencies/formCheckboxMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formCheckboxesMixin.js +51 -0
- package/dist/new-widgets/templatesDependencies/formCheckboxesMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formDropdownMixin.js +66 -0
- package/dist/new-widgets/templatesDependencies/formDropdownMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formFileMixin.js +81 -0
- package/dist/new-widgets/templatesDependencies/formFileMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formLengthMixin.js +19 -0
- package/dist/new-widgets/templatesDependencies/formLengthMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formMinMaxMixin.js +19 -0
- package/dist/new-widgets/templatesDependencies/formMinMaxMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formMixin.js +66 -0
- package/dist/new-widgets/templatesDependencies/formMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formNumberMixin.js +14 -0
- package/dist/new-widgets/templatesDependencies/formNumberMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formRadioMixin.js +16 -0
- package/dist/new-widgets/templatesDependencies/formRadioMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formStepMixin.js +13 -0
- package/dist/new-widgets/templatesDependencies/formStepMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/linkTextMixin.js +14 -0
- package/dist/new-widgets/templatesDependencies/linkTextMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/multipleFormMixin.js +125 -0
- package/dist/new-widgets/templatesDependencies/multipleFormMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/multipleselectFormMixin.js +74 -0
- package/dist/new-widgets/templatesDependencies/multipleselectFormMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/patternMixin.js +19 -0
- package/dist/new-widgets/templatesDependencies/patternMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/rangeMixin.js +110 -0
- package/dist/new-widgets/templatesDependencies/rangeMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/setMixin.js +12 -0
- package/dist/new-widgets/templatesDependencies/setMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/valueRichtextMixin.js +12 -0
- package/dist/new-widgets/templatesDependencies/valueRichtextMixin.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/autolinkMixin.js +18 -0
- package/dist/new-widgets/valueTransformationMixins/autolinkMixin.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/dateMixin.js +35 -0
- package/dist/new-widgets/valueTransformationMixins/dateMixin.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/dateTimeMixin.js +16 -0
- package/dist/new-widgets/valueTransformationMixins/dateTimeMixin.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/index.js +16 -0
- package/dist/new-widgets/valueTransformationMixins/index.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/markdownMixin.js +25 -0
- package/dist/new-widgets/valueTransformationMixins/markdownMixin.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/multilineMixin.js +17 -0
- package/dist/new-widgets/valueTransformationMixins/multilineMixin.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/oembedMixin.js +27 -0
- package/dist/new-widgets/valueTransformationMixins/oembedMixin.js.map +1 -0
- package/dist/solid-template-element.js +164 -0
- package/dist/solid-template-element.js.map +1 -0
- package/dist/style/default-theme.css +24 -0
- package/dist/style/default-theme.css.proxy.js +10 -0
- package/dist/widgets/baseWidget.js +334 -0
- package/dist/widgets/baseWidget.js.map +1 -0
- package/dist/widgets/widget-factory.js +24 -0
- package/dist/widgets/widget-factory.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { unsafeHTML } from '../../_snowpack/pkg/lit-html/directives/unsafe-html.js';
|
|
2
|
+
const MultilineMixin = {
|
|
3
|
+
name: 'multiline-mixin',
|
|
4
|
+
|
|
5
|
+
created() {
|
|
6
|
+
this.listValueTransformations.push(this.transformValue.bind(this));
|
|
7
|
+
},
|
|
8
|
+
|
|
9
|
+
transformValue(value, listValueTransformations) {
|
|
10
|
+
const newValue = value ? unsafeHTML(value.replace(/\n/g, "<br/>")) : value;
|
|
11
|
+
const nextProcessor = listValueTransformations.shift();
|
|
12
|
+
if (nextProcessor) nextProcessor(newValue, listValueTransformations);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
};
|
|
16
|
+
export { MultilineMixin };
|
|
17
|
+
//# sourceMappingURL=multilineMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["multilineMixin.ts"],"names":["unsafeHTML","MultilineMixin","name","created","listValueTransformations","push","transformValue","bind","value","newValue","replace","nextProcessor","shift"],"mappings":"AAAA,SAASA,UAAT,QAA2B,iCAA3B;AAEA,MAAMC,cAAc,GAAG;AACrBC,EAAAA,IAAI,EAAE,iBADe;;AAErBC,EAAAA,OAAO,GAAG;AACR,SAAKC,wBAAL,CAA8BC,IAA9B,CAAmC,KAAKC,cAAL,CAAoBC,IAApB,CAAyB,IAAzB,CAAnC;AACD,GAJoB;;AAKrBD,EAAAA,cAAc,CAACE,KAAD,EAAgBJ,wBAAhB,EAAsD;AAClE,UAAMK,QAAQ,GAAGD,KAAK,GAAGR,UAAU,CAACQ,KAAK,CAACE,OAAN,CAAc,KAAd,EAAqB,OAArB,CAAD,CAAb,GAA+CF,KAArE;AAEA,UAAMG,aAAa,GAAGP,wBAAwB,CAACQ,KAAzB,EAAtB;AACA,QAAGD,aAAH,EAAkBA,aAAa,CAACF,QAAD,EAAWL,wBAAX,CAAb;AACnB;;AAVoB,CAAvB;AAaA,SACEH,cADF","sourcesContent":["import { unsafeHTML } from 'lit-html/directives/unsafe-html';\n\nconst MultilineMixin = {\n name: 'multiline-mixin',\n created() {\n this.listValueTransformations.push(this.transformValue.bind(this));\n },\n transformValue(value: string, listValueTransformations: Function[]) {\n const newValue = value ? unsafeHTML(value.replace(/\\n/g, \"<br/>\")) : value;\n\n const nextProcessor = listValueTransformations.shift();\n if(nextProcessor) nextProcessor(newValue, listValueTransformations);\n }\n}\n\nexport {\n MultilineMixin\n}"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { unsafeHTML } from '../../_snowpack/pkg/lit-html/directives/unsafe-html.js';
|
|
2
|
+
const OembedMixin = {
|
|
3
|
+
name: 'oembed-mixin',
|
|
4
|
+
initialState: {
|
|
5
|
+
existingOembed: null
|
|
6
|
+
},
|
|
7
|
+
|
|
8
|
+
created() {
|
|
9
|
+
this.listValueTransformations.push(this.transformValue.bind(this));
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
async transformValue(value, listValueTransformations) {
|
|
13
|
+
if (!value) return;
|
|
14
|
+
|
|
15
|
+
if (this.existingOembed == null) {
|
|
16
|
+
const response = await fetch(this.value);
|
|
17
|
+
this.existingOembed = await response.json();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const newValue = unsafeHTML(this.existingOembed.html);
|
|
21
|
+
const nextProcessor = listValueTransformations.shift();
|
|
22
|
+
if (nextProcessor) nextProcessor(newValue, listValueTransformations);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
};
|
|
26
|
+
export { OembedMixin };
|
|
27
|
+
//# sourceMappingURL=oembedMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["oembedMixin.ts"],"names":["unsafeHTML","OembedMixin","name","initialState","existingOembed","created","listValueTransformations","push","transformValue","bind","value","response","fetch","json","newValue","html","nextProcessor","shift"],"mappings":"AAAA,SAASA,UAAT,QAA2B,iCAA3B;AAEA,MAAMC,WAAW,GAAG;AAClBC,EAAAA,IAAI,EAAE,cADY;AAElBC,EAAAA,YAAY,EAAG;AACbC,IAAAA,cAAc,EAAE;AADH,GAFG;;AAKlBC,EAAAA,OAAO,GAAS;AACd,SAAKC,wBAAL,CAA8BC,IAA9B,CAAmC,KAAKC,cAAL,CAAoBC,IAApB,CAAyB,IAAzB,CAAnC;AACD,GAPiB;;AAQlB,QAAMD,cAAN,CAAqBE,KAArB,EAAoCJ,wBAApC,EAA0E;AACxE,QAAI,CAACI,KAAL,EAAY;;AACZ,QAAI,KAAKN,cAAL,IAAuB,IAA3B,EAAiC;AAC/B,YAAMO,QAAQ,GAAG,MAAMC,KAAK,CAAC,KAAKF,KAAN,CAA5B;AACA,WAAKN,cAAL,GAAsB,MAAMO,QAAQ,CAACE,IAAT,EAA5B;AACD;;AACD,UAAMC,QAAQ,GAAGd,UAAU,CAAC,KAAKI,cAAL,CAAoBW,IAArB,CAA3B;AAEA,UAAMC,aAAa,GAAGV,wBAAwB,CAACW,KAAzB,EAAtB;AACA,QAAGD,aAAH,EAAkBA,aAAa,CAACF,QAAD,EAAWR,wBAAX,CAAb;AACnB;;AAlBiB,CAApB;AAqBA,SACEL,WADF","sourcesContent":["import { unsafeHTML } from 'lit-html/directives/unsafe-html';\n\nconst OembedMixin = {\n name: 'oembed-mixin',\n initialState : {\n existingOembed: null,\n },\n created(): void {\n this.listValueTransformations.push(this.transformValue.bind(this));\n },\n async transformValue(value: string, listValueTransformations: Function[]) {\n if (!value) return;\n if (this.existingOembed == null) {\n const response = await fetch(this.value);\n this.existingOembed = await response.json();\n }\n const newValue = unsafeHTML(this.existingOembed.html);\n \n const nextProcessor = listValueTransformations.shift();\n if(nextProcessor) nextProcessor(newValue, listValueTransformations);\n }\n}\n\nexport {\n OembedMixin\n}"]}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
3
|
+
///@ts-nocheck
|
|
4
|
+
export default class SolidTemplateElement extends HTMLElement {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
|
|
8
|
+
_defineProperty(this, "renderPlanned", false);
|
|
9
|
+
|
|
10
|
+
_defineProperty(this, "strings", {});
|
|
11
|
+
|
|
12
|
+
_defineProperty(this, "translationsPath", null);
|
|
13
|
+
|
|
14
|
+
_defineProperty(this, "translationsFetched", false);
|
|
15
|
+
|
|
16
|
+
_defineProperty(this, "props", {});
|
|
17
|
+
|
|
18
|
+
this.initProps();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
static get observedAttributes() {
|
|
22
|
+
return Object.values(this.propsDefinition);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static get propsDefinition() {
|
|
26
|
+
return {};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
initProps() {
|
|
30
|
+
this.props = {};
|
|
31
|
+
|
|
32
|
+
for (let key in this.constructor.propsDefinition) {
|
|
33
|
+
this.props[key] = undefined;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
updateProps() {
|
|
38
|
+
const declaredAttributes = []; // Get props values
|
|
39
|
+
|
|
40
|
+
for (let key in this.constructor.propsDefinition) {
|
|
41
|
+
const def = this.constructor.propsDefinition[key];
|
|
42
|
+
|
|
43
|
+
if (typeof def === "string") {
|
|
44
|
+
this.props[key] = this.hasAttribute(def) ? this.getAttribute(def) : undefined;
|
|
45
|
+
declaredAttributes.push(def);
|
|
46
|
+
} else if (typeof def === "object" && def.attribute && typeof def.attribute === "string") {
|
|
47
|
+
this.props[key] = this.hasAttribute(def.attribute) ? this.getAttribute(def.attribute) : def.default || undefined;
|
|
48
|
+
declaredAttributes.push(def.attribute);
|
|
49
|
+
}
|
|
50
|
+
} // Add attributes to props
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
for (let attr of this.attributes) {
|
|
54
|
+
if (!declaredAttributes.includes(attr.name)) {
|
|
55
|
+
// if attribute not in propsDefinition
|
|
56
|
+
this.props[this._camelize(attr.name)] = attr.value || undefined; // add it to props
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Define the path folder of translations files
|
|
62
|
+
* @param path
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
setTranslationsPath(path) {
|
|
67
|
+
this.translationsPath = path;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Fetch all localized strings
|
|
71
|
+
*/
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
async fetchLocaleStrings() {
|
|
75
|
+
if (this.translationsFetched) return;
|
|
76
|
+
const filesToFetch = [];
|
|
77
|
+
if (this.translationsPath) // fetch component translations
|
|
78
|
+
filesToFetch.push(this.fetchTranslationFile(this.translationsPath));
|
|
79
|
+
const extraTranslationsPath = this.getAttribute('extra-translations-path');
|
|
80
|
+
if (extraTranslationsPath) // fetch developer translations
|
|
81
|
+
filesToFetch.push(this.fetchTranslationFile(extraTranslationsPath)); // merge all translations
|
|
82
|
+
|
|
83
|
+
return Promise.all(filesToFetch).then(res => {
|
|
84
|
+
this.translationsFetched = true;
|
|
85
|
+
this.strings = Object.assign({}, ...res);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Fetch the translation file from [path]
|
|
90
|
+
*/
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
async fetchTranslationFile(path) {
|
|
94
|
+
const ln = this.getLocale();
|
|
95
|
+
const fullPath = "".concat(path, "/").concat(ln, ".json");
|
|
96
|
+
return fetch(fullPath).then(result => {
|
|
97
|
+
if (result.ok) {
|
|
98
|
+
return result.json() // parse content
|
|
99
|
+
.catch(e => console.error("Error while parsing the translation file: ".concat(fullPath)));
|
|
100
|
+
}
|
|
101
|
+
}).catch(e => console.error("Error while retrieving the translation file: ".concat(fullPath)));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Returns current locale of app
|
|
105
|
+
*/
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
getLocale() {
|
|
109
|
+
return localStorage.getItem('language') || window.navigator.language.slice(0, 2);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Return localized string for [key]
|
|
113
|
+
* @param key
|
|
114
|
+
*/
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
localize(key) {
|
|
118
|
+
return this.strings[key] || key;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
attributeChangedCallback() {
|
|
122
|
+
this.updateProps();
|
|
123
|
+
this.planRender();
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
connectedCallback() {
|
|
127
|
+
this.updateProps();
|
|
128
|
+
this.planRender();
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Plan a render if none is already waiting to prevent multi re-renders
|
|
132
|
+
*/
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
planRender() {
|
|
136
|
+
if (!this.renderPlanned) {
|
|
137
|
+
this.renderPlanned = true;
|
|
138
|
+
setTimeout(() => {
|
|
139
|
+
this.render();
|
|
140
|
+
this.renderPlanned = false;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
renderCallback() {}
|
|
146
|
+
|
|
147
|
+
render() {
|
|
148
|
+
this.fetchLocaleStrings().finally(() => {
|
|
149
|
+
// render even if some errors occurred
|
|
150
|
+
this.innerHTML = this.template(this.props);
|
|
151
|
+
this.renderCallback();
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
template() {
|
|
156
|
+
return '';
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
_camelize(str) {
|
|
160
|
+
return str.replace(/\W+(.)/g, (match, chr) => chr.toUpperCase());
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=solid-template-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["solid-template-element.ts"],"names":["SolidTemplateElement","HTMLElement","constructor","initProps","observedAttributes","Object","values","propsDefinition","props","key","undefined","updateProps","declaredAttributes","def","hasAttribute","getAttribute","push","attribute","default","attr","attributes","includes","name","_camelize","value","setTranslationsPath","path","translationsPath","fetchLocaleStrings","translationsFetched","filesToFetch","fetchTranslationFile","extraTranslationsPath","Promise","all","then","res","strings","assign","ln","getLocale","fullPath","fetch","result","ok","json","catch","e","console","error","localStorage","getItem","window","navigator","language","slice","localize","attributeChangedCallback","planRender","connectedCallback","renderPlanned","setTimeout","render","renderCallback","finally","innerHTML","template","str","replace","match","chr","toUpperCase"],"mappings":";;AAAA;AAEA,eAAe,MAAMA,oBAAN,SAAmCC,WAAnC,CAA+C;AAM5DC,EAAAA,WAAW,GAAG;AACZ;;AADY,2CALE,KAKF;;AAAA,qCAJJ,EAII;;AAAA,8CAHK,IAGL;;AAAA,iDAFQ,KAER;;AAAA,mCADe,EACf;;AAEZ,SAAKC,SAAL;AACD;;AACD,aAAWC,kBAAX,GAAgC;AAC9B,WAAOC,MAAM,CAACC,MAAP,CAAc,KAAKC,eAAnB,CAAP;AACD;;AAED,aAAWA,eAAX,GAAgD;AAC9C,WAAO,EAAP;AAED;;AAEDJ,EAAAA,SAAS,GAAG;AACV,SAAKK,KAAL,GAAa,EAAb;;AACA,SAAI,IAAIC,GAAR,IAAe,KAAKP,WAAL,CAAiBK,eAAhC,EAAiD;AAC/C,WAAKC,KAAL,CAAWC,GAAX,IAAkBC,SAAlB;AACD;AACF;;AAEDC,EAAAA,WAAW,GAAG;AACZ,UAAMC,kBAA4B,GAAG,EAArC,CADY,CAGZ;;AACA,SAAI,IAAIH,GAAR,IAAe,KAAKP,WAAL,CAAiBK,eAAhC,EAAiD;AAC/C,YAAMM,GAAG,GAAG,KAAKX,WAAL,CAAiBK,eAAjB,CAAiCE,GAAjC,CAAZ;;AACA,UAAI,OAAOI,GAAP,KAAe,QAAnB,EAA6B;AAC3B,aAAKL,KAAL,CAAWC,GAAX,IAAkB,KAAKK,YAAL,CAAkBD,GAAlB,IAAyB,KAAKE,YAAL,CAAkBF,GAAlB,CAAzB,GAAkDH,SAApE;AACAE,QAAAA,kBAAkB,CAACI,IAAnB,CAAwBH,GAAxB;AACD,OAHD,MAGO,IAAI,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,CAACI,SAA/B,IAA4C,OAAOJ,GAAG,CAACI,SAAX,KAAyB,QAAzE,EAAmF;AACxF,aAAKT,KAAL,CAAWC,GAAX,IAAkB,KAAKK,YAAL,CAAkBD,GAAG,CAACI,SAAtB,IAAmC,KAAKF,YAAL,CAAkBF,GAAG,CAACI,SAAtB,CAAnC,GAAsEJ,GAAG,CAACK,OAAJ,IAAeR,SAAvG;AACAE,QAAAA,kBAAkB,CAACI,IAAnB,CAAwBH,GAAG,CAACI,SAA5B;AACD;AACF,KAbW,CAeZ;;;AACA,SAAK,IAAIE,IAAT,IAAiB,KAAKC,UAAtB,EAAkC;AAChC,UAAI,CAACR,kBAAkB,CAACS,QAAnB,CAA4BF,IAAI,CAACG,IAAjC,CAAL,EAA6C;AAAE;AAC7C,aAAKd,KAAL,CAAW,KAAKe,SAAL,CAAeJ,IAAI,CAACG,IAApB,CAAX,IAAwCH,IAAI,CAACK,KAAL,IAAcd,SAAtD,CAD2C,CACsB;AAClE;AACF;AACF;AAED;AACF;AACA;AACA;;;AACEe,EAAAA,mBAAmB,CAACC,IAAD,EAAO;AACxB,SAAKC,gBAAL,GAAwBD,IAAxB;AACD;AAED;AACF;AACA;;;AACE,QAAME,kBAAN,GAA2B;AACzB,QAAI,KAAKC,mBAAT,EAA8B;AAC9B,UAAMC,YAAkB,GAAG,EAA3B;AACA,QAAI,KAAKH,gBAAT,EAA2B;AACzBG,MAAAA,YAAY,CAACd,IAAb,CAAkB,KAAKe,oBAAL,CAA0B,KAAKJ,gBAA/B,CAAlB;AAEF,UAAMK,qBAAqB,GAAG,KAAKjB,YAAL,CAAkB,yBAAlB,CAA9B;AACA,QAAIiB,qBAAJ,EAA2B;AACzBF,MAAAA,YAAY,CAACd,IAAb,CAAkB,KAAKe,oBAAL,CAA0BC,qBAA1B,CAAlB,EARuB,CAUzB;;AACA,WAAOC,OAAO,CAACC,GAAR,CAAYJ,YAAZ,EAA0BK,IAA1B,CAA+BC,GAAG,IAAI;AAC3C,WAAKP,mBAAL,GAA2B,IAA3B;AACA,WAAKQ,OAAL,GAAehC,MAAM,CAACiC,MAAP,CAAc,EAAd,EAAkB,GAAGF,GAArB,CAAf;AACD,KAHM,CAAP;AAID;AAED;AACF;AACA;;;AACE,QAAML,oBAAN,CAA2BL,IAA3B,EAAiC;AAC/B,UAAMa,EAAE,GAAG,KAAKC,SAAL,EAAX;AACA,UAAMC,QAAQ,aAAMf,IAAN,cAAca,EAAd,UAAd;AACA,WAAOG,KAAK,CAACD,QAAD,CAAL,CACJN,IADI,CACEQ,MAAD,IAAY;AAChB,UAAIA,MAAM,CAACC,EAAX,EAAe;AACb,eAAOD,MAAM,CAACE,IAAP,GAAc;AAAd,SACJC,KADI,CACEC,CAAC,IAAIC,OAAO,CAACC,KAAR,qDAA2DR,QAA3D,EADP,CAAP;AAED;AACF,KANI,EAMFK,KANE,CAMIC,CAAC,IAAIC,OAAO,CAACC,KAAR,wDAA8DR,QAA9D,EANT,CAAP;AAOD;AAED;AACF;AACA;;;AACED,EAAAA,SAAS,GAAG;AACV,WAAOU,YAAY,CAACC,OAAb,CAAqB,UAArB,KAAoCC,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,KAA1B,CAAgC,CAAhC,EAAmC,CAAnC,CAA3C;AACD;AAED;AACF;AACA;AACA;;;AACEC,EAAAA,QAAQ,CAAC/C,GAAD,EAAM;AACZ,WAAO,KAAK4B,OAAL,CAAa5B,GAAb,KAAqBA,GAA5B;AACD;;AAEDgD,EAAAA,wBAAwB,GACxB;AACE,SAAK9C,WAAL;AACA,SAAK+C,UAAL;AACD;;AAEDC,EAAAA,iBAAiB,GAAG;AAClB,SAAKhD,WAAL;AACA,SAAK+C,UAAL;AACD;AAED;AACF;AACA;;;AACEA,EAAAA,UAAU,GAAG;AACX,QAAI,CAAC,KAAKE,aAAV,EAAyB;AACvB,WAAKA,aAAL,GAAqB,IAArB;AACAC,MAAAA,UAAU,CAAC,MAAM;AACf,aAAKC,MAAL;AACA,aAAKF,aAAL,GAAqB,KAArB;AACD,OAHS,CAAV;AAID;AACF;;AAEDG,EAAAA,cAAc,GAAG,CAAG;;AAEpBD,EAAAA,MAAM,GAAG;AACP,SAAKlC,kBAAL,GAA0BoC,OAA1B,CAAkC,MAAM;AAAE;AACxC,WAAKC,SAAL,GAAiB,KAAKC,QAAL,CAAc,KAAK1D,KAAnB,CAAjB;AACA,WAAKuD,cAAL;AACD,KAHD;AAID;;AAEDG,EAAAA,QAAQ,GAAG;AACT,WAAO,EAAP;AACD;;AAED3C,EAAAA,SAAS,CAAC4C,GAAD,EAAM;AACb,WAAOA,GAAG,CAACC,OAAJ,CAAY,SAAZ,EAAuB,CAACC,KAAD,EAAQC,GAAR,KAAgBA,GAAG,CAACC,WAAJ,EAAvC,CAAP;AACD;;AAlJ2D","sourcesContent":["///@ts-nocheck\n\nexport default class SolidTemplateElement extends HTMLElement {\n renderPlanned = false;\n strings = {};\n translationsPath = null;\n translationsFetched = false;\n props : {[key:string]:any} = {}\n constructor() {\n super();\n this.initProps();\n }\n static get observedAttributes() {\n return Object.values(this.propsDefinition);\n }\n\n static get propsDefinition():{[key:string]:any} {\n return {\n };\n }\n\n initProps() {\n this.props = {}\n for(let key in this.constructor.propsDefinition) {\n this.props[key] = undefined;\n }\n }\n\n updateProps() {\n const declaredAttributes: string[] = [];\n\n // Get props values\n for(let key in this.constructor.propsDefinition) {\n const def = this.constructor.propsDefinition[key];\n if (typeof def === \"string\") {\n this.props[key] = this.hasAttribute(def) ? this.getAttribute(def) : undefined;\n declaredAttributes.push(def);\n } else if (typeof def === \"object\" && def.attribute && typeof def.attribute === \"string\") {\n this.props[key] = this.hasAttribute(def.attribute) ? this.getAttribute(def.attribute) : def.default || undefined;\n declaredAttributes.push(def.attribute);\n }\n }\n\n // Add attributes to props\n for (let attr of this.attributes) {\n if (!declaredAttributes.includes(attr.name)) { // if attribute not in propsDefinition\n this.props[this._camelize(attr.name)] = attr.value || undefined; // add it to props\n }\n }\n }\n\n /**\n * Define the path folder of translations files\n * @param path\n */\n setTranslationsPath(path) {\n this.translationsPath = path;\n }\n\n /**\n * Fetch all localized strings\n */\n async fetchLocaleStrings() {\n if (this.translationsFetched) return;\n const filesToFetch:any[] = [];\n if (this.translationsPath) // fetch component translations\n filesToFetch.push(this.fetchTranslationFile(this.translationsPath));\n\n const extraTranslationsPath = this.getAttribute('extra-translations-path');\n if (extraTranslationsPath) // fetch developer translations\n filesToFetch.push(this.fetchTranslationFile(extraTranslationsPath));\n\n // merge all translations\n return Promise.all(filesToFetch).then(res => {\n this.translationsFetched = true;\n this.strings = Object.assign({}, ...res);\n })\n }\n\n /**\n * Fetch the translation file from [path]\n */\n async fetchTranslationFile(path) {\n const ln = this.getLocale();\n const fullPath = `${path}/${ln}.json`;\n return fetch(fullPath)\n .then((result) => {\n if (result.ok) {\n return result.json() // parse content\n .catch(e => console.error(`Error while parsing the translation file: ${fullPath}`));\n }\n }).catch(e => console.error(`Error while retrieving the translation file: ${fullPath}`));\n }\n\n /**\n * Returns current locale of app\n */\n getLocale() {\n return localStorage.getItem('language') || window.navigator.language.slice(0, 2);\n }\n\n /**\n * Return localized string for [key]\n * @param key\n */\n localize(key) {\n return this.strings[key] || key;\n }\n\n attributeChangedCallback()\n {\n this.updateProps();\n this.planRender();\n }\n\n connectedCallback() {\n this.updateProps();\n this.planRender();\n }\n\n /**\n * Plan a render if none is already waiting to prevent multi re-renders\n */\n planRender() {\n if (!this.renderPlanned) {\n this.renderPlanned = true;\n setTimeout(() => {\n this.render();\n this.renderPlanned = false;\n });\n }\n }\n\n renderCallback() { }\n\n render() {\n this.fetchLocaleStrings().finally(() => { // render even if some errors occurred\n this.innerHTML = this.template(this.props);\n this.renderCallback();\n });\n }\n\n template() {\n return '';\n }\n\n _camelize(str) {\n return str.replace(/\\W+(.)/g, (match, chr) => chr.toUpperCase());\n }\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*==== SOLID-MAP ====*/
|
|
2
|
+
/* map custom marker */
|
|
3
|
+
.sib-custom-marker {
|
|
4
|
+
position: absolute;
|
|
5
|
+
top: 40%;
|
|
6
|
+
left: 50%;
|
|
7
|
+
margin-left: 115px;
|
|
8
|
+
border-radius: 50%;
|
|
9
|
+
border: 8px solid #1c78c9;
|
|
10
|
+
width: 8px;
|
|
11
|
+
height: 8px;
|
|
12
|
+
}
|
|
13
|
+
.sib-custom-marker::after {
|
|
14
|
+
position: absolute;
|
|
15
|
+
content: '';
|
|
16
|
+
width: 0px;
|
|
17
|
+
height: 0px;
|
|
18
|
+
bottom: -30px;
|
|
19
|
+
left: -6px;
|
|
20
|
+
border: 10px solid transparent;
|
|
21
|
+
border-top-width: 17px;
|
|
22
|
+
border-top-style: solid;
|
|
23
|
+
border-top-color: inherit;
|
|
24
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// [snowpack] add styles to the page (skip if no document exists)
|
|
2
|
+
if (typeof document !== 'undefined') {
|
|
3
|
+
const code = "/*==== SOLID-MAP ====*/\n/* map custom marker */\n.sib-custom-marker {\n position: absolute;\n top: 40%;\n left: 50%;\n margin-left: 115px;\n border-radius: 50%;\n border: 8px solid #1c78c9;\n width: 8px;\n height: 8px;\n}\n.sib-custom-marker::after {\n position: absolute;\n content: '';\n width: 0px;\n height: 0px;\n bottom: -30px;\n left: -6px;\n border: 10px solid transparent;\n border-top-width: 17px;\n border-top-style: solid;\n border-top-color: inherit;\n}";
|
|
4
|
+
|
|
5
|
+
const styleEl = document.createElement("style");
|
|
6
|
+
const codeEl = document.createTextNode(code);
|
|
7
|
+
styleEl.type = 'text/css';
|
|
8
|
+
styleEl.appendChild(codeEl);
|
|
9
|
+
document.head.appendChild(styleEl);
|
|
10
|
+
}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
3
|
+
import { evalTemplateString } from '../libs/helpers.js';
|
|
4
|
+
import { store } from '../libs/store/store.js';
|
|
5
|
+
export class BaseWidget extends HTMLElement {
|
|
6
|
+
constructor(...args) {
|
|
7
|
+
super(...args);
|
|
8
|
+
|
|
9
|
+
_defineProperty(this, "src", void 0);
|
|
10
|
+
|
|
11
|
+
_defineProperty(this, "multiple", void 0);
|
|
12
|
+
|
|
13
|
+
_defineProperty(this, "editable", void 0);
|
|
14
|
+
|
|
15
|
+
_defineProperty(this, "required", void 0);
|
|
16
|
+
|
|
17
|
+
_defineProperty(this, "resourceId", void 0);
|
|
18
|
+
|
|
19
|
+
_defineProperty(this, "_value", void 0);
|
|
20
|
+
|
|
21
|
+
_defineProperty(this, "_range", void 0);
|
|
22
|
+
|
|
23
|
+
_defineProperty(this, "_context", void 0);
|
|
24
|
+
|
|
25
|
+
_defineProperty(this, "_subscriptions", new Map());
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
connectedCallback() {
|
|
29
|
+
this.render();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
disconnectedCallback() {
|
|
33
|
+
this._subscriptions.forEach(subscription => {
|
|
34
|
+
PubSub.unsubscribe(subscription);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async render() {
|
|
39
|
+
this.innerHTML = await evalTemplateString(this.template, {
|
|
40
|
+
src: this.src,
|
|
41
|
+
name: this.name,
|
|
42
|
+
label: this.label,
|
|
43
|
+
placeholder: this.placeholder,
|
|
44
|
+
value: this.value,
|
|
45
|
+
id: this._value && this._value['@id'] || '',
|
|
46
|
+
escapedValue: this.escapedValue,
|
|
47
|
+
range: await this.htmlRange,
|
|
48
|
+
multiple: this.multiple,
|
|
49
|
+
editable: this.editable === '' ? true : false,
|
|
50
|
+
required: this.required === '' ? true : false
|
|
51
|
+
});
|
|
52
|
+
this.addEditButtons();
|
|
53
|
+
this.initChangeEvents();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
get label() {
|
|
57
|
+
return this.hasAttribute('label') ? this.getAttribute('label') : this.name;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
set label(label) {
|
|
61
|
+
if (label != null) this.setAttribute('label', label);
|
|
62
|
+
this.render();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
get placeholder() {
|
|
66
|
+
return this.hasAttribute('placeholder') ? this.getAttribute('placeholder') : this.label;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
set placeholder(placeholder) {
|
|
70
|
+
if (placeholder != null) this.setAttribute('placeholder', placeholder);
|
|
71
|
+
this.render();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
get name() {
|
|
75
|
+
return this.getAttribute('name');
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
set name(name) {
|
|
79
|
+
if (name) this.setAttribute('name', name);
|
|
80
|
+
this.render();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
get value() {
|
|
84
|
+
if (this.dataHolder) {
|
|
85
|
+
let values = this.dataHolder.map(element => {
|
|
86
|
+
if (element instanceof HTMLInputElement && element.type == "checkbox") return element.checked; // if value is defined, push it in the array
|
|
87
|
+
|
|
88
|
+
return this.getValueHolder(element).value;
|
|
89
|
+
}); // If only one value, do not return an array
|
|
90
|
+
|
|
91
|
+
return values.length === 1 ? values[0] : values;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return this._value || '';
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
set value(value) {
|
|
98
|
+
this._value = value; // ... store `value` in the widget
|
|
99
|
+
|
|
100
|
+
if (this._value == null || this._value == undefined) return;
|
|
101
|
+
|
|
102
|
+
if (this.dataHolder && this.dataHolder.length === 1) {
|
|
103
|
+
// if one dataHolder in the widget...
|
|
104
|
+
const element = this.getValueHolder(this.dataHolder[0]);
|
|
105
|
+
|
|
106
|
+
if (element.type == "checkbox") {
|
|
107
|
+
element.checked = value;
|
|
108
|
+
} else {
|
|
109
|
+
element.value = value; // ... set `value` to the dataHolder element
|
|
110
|
+
} // remove when https://git.happy-dev.fr/startinblox/framework/sib-core/issues/426 fixed
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
if (element.dispatchEvent) element.dispatchEvent(new Event('change')); // trigger change manually
|
|
114
|
+
} else if (this.dataHolder && this.dataHolder.length > 1) {
|
|
115
|
+
// if multiple dataHolder in the widget ...
|
|
116
|
+
this.dataHolder.forEach((el, index) => {
|
|
117
|
+
const element = this.getValueHolder(el);
|
|
118
|
+
|
|
119
|
+
if (element.type == "checkbox") {
|
|
120
|
+
element.checked = value ? value[index] : '';
|
|
121
|
+
} else {
|
|
122
|
+
element.value = value ? value[index] : '';
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
element.dispatchEvent(new Event('change')); // trigger change manually
|
|
126
|
+
}); // ... set each `value` to each dataHolder element
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
this.render();
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
get ['each-label']() {
|
|
133
|
+
return this.getAttribute('each-label') || '';
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
set ['each-label'](label) {
|
|
137
|
+
this.setAttribute('each-label', label);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
set ['add-label'](label) {
|
|
141
|
+
this.setAttribute('add-label', label);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
set ['remove-label'](label) {
|
|
145
|
+
this.setAttribute('remove-label', label);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
get dataHolder() {
|
|
149
|
+
const widgetDataHolders = Array.from(this.querySelectorAll('[data-holder]')).filter(element => {
|
|
150
|
+
const dataHolderAncestor = element.parentElement ? element.parentElement.closest('[data-holder]') : null; // get the dataHolder of the widget only if no dataHolder ancestor in the current widget
|
|
151
|
+
|
|
152
|
+
return dataHolderAncestor === this || !dataHolderAncestor || !this.contains(dataHolderAncestor);
|
|
153
|
+
});
|
|
154
|
+
return widgetDataHolders.length ? widgetDataHolders : null;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
get template() {
|
|
158
|
+
return '';
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
get childTemplate() {
|
|
162
|
+
return '';
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
get escapedValue() {
|
|
166
|
+
return ('' + this.value).replace(/&/g, '&').replace(/'/g, ''').replace(/"/g, '"');
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
set context(value) {
|
|
170
|
+
this._context = value;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
get context() {
|
|
174
|
+
return this._context || {};
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
get range() {
|
|
178
|
+
return this.fetchSources(this._range);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
set range(range) {
|
|
182
|
+
(async () => {
|
|
183
|
+
this._listen(range, async () => this._range = await store.getData(range, this.context));
|
|
184
|
+
|
|
185
|
+
this._range = await store.getData(range, this.context);
|
|
186
|
+
this.render();
|
|
187
|
+
})();
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
async fetchSources(resource) {
|
|
191
|
+
if (!resource || !resource['ldp:contains']) return null;
|
|
192
|
+
let resources = [];
|
|
193
|
+
let index = 0;
|
|
194
|
+
|
|
195
|
+
for (let res of resource['ldp:contains']) {
|
|
196
|
+
var _res$isContainer, _res;
|
|
197
|
+
|
|
198
|
+
if (!res) {
|
|
199
|
+
// child not in cache yet
|
|
200
|
+
try {
|
|
201
|
+
const resourceId = resource.getChildren()[index]['@id'];
|
|
202
|
+
res = await store.getData(resourceId, this.context);
|
|
203
|
+
} catch (e) {
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
if ((_res$isContainer = (_res = res).isContainer) !== null && _res$isContainer !== void 0 && _res$isContainer.call(_res)) {
|
|
209
|
+
// if nested container
|
|
210
|
+
let resourcesFromContainer = await store.getData(res['@id'], this.context); // fetch the datas
|
|
211
|
+
|
|
212
|
+
this._listen(res['@id']);
|
|
213
|
+
|
|
214
|
+
if (resourcesFromContainer) resources.push(...resourcesFromContainer['ldp:contains']);
|
|
215
|
+
} else {
|
|
216
|
+
resources.push(res);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
index++;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
return resources;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
get htmlRange() {
|
|
226
|
+
return (async () => {
|
|
227
|
+
let htmlRange = '';
|
|
228
|
+
const rangeResources = await this.range;
|
|
229
|
+
if (!rangeResources) return;
|
|
230
|
+
|
|
231
|
+
for await (let element of rangeResources) {
|
|
232
|
+
element = await store.getData(element['@id'], this.context); // fetch the resource to display the name
|
|
233
|
+
|
|
234
|
+
this._listen(element['@id']);
|
|
235
|
+
|
|
236
|
+
let selected;
|
|
237
|
+
|
|
238
|
+
if (this._value && this._value.isContainer && this._value.isContainer()) {
|
|
239
|
+
// selected options for multiple select
|
|
240
|
+
selected = false;
|
|
241
|
+
|
|
242
|
+
for await (let value of this._value["ldp:contains"]) {
|
|
243
|
+
if (value['@id'] == element['@id']) {
|
|
244
|
+
selected = true;
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
} else {
|
|
249
|
+
// selected options for simple dropdowns
|
|
250
|
+
selected = this._value ? this._value['@id'] == element['@id'] : false;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
htmlRange += await evalTemplateString(this.childTemplate, {
|
|
254
|
+
name: await element.name,
|
|
255
|
+
id: element['@id'],
|
|
256
|
+
selected: selected
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
return htmlRange || '';
|
|
261
|
+
})();
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
getValueHolder(element) {
|
|
265
|
+
return element.component ? element.component : element;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
subscribe(event) {
|
|
269
|
+
this._listen(event);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
_listen(id, callback = () => {}) {
|
|
273
|
+
if (!this._subscriptions.get(id)) {
|
|
274
|
+
this._subscriptions.set(id, PubSub.subscribe(id, async () => {
|
|
275
|
+
await callback();
|
|
276
|
+
this.render();
|
|
277
|
+
}));
|
|
278
|
+
}
|
|
279
|
+
} // Editable widgets
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
addEditButtons() {
|
|
283
|
+
const editableField = this.querySelector('[data-editable]');
|
|
284
|
+
|
|
285
|
+
if (editableField) {
|
|
286
|
+
// Add edit button
|
|
287
|
+
const editButton = document.createElement('button');
|
|
288
|
+
editButton.innerText = "Modifier";
|
|
289
|
+
|
|
290
|
+
editButton.onclick = () => this.activateEditableField(editableField, editButton);
|
|
291
|
+
|
|
292
|
+
editableField.insertAdjacentElement('afterend', editButton); // Save on focusout
|
|
293
|
+
|
|
294
|
+
editableField.addEventListener('focusout', () => this.save(editableField, editButton));
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
activateEditableField(editableField, editButton) {
|
|
299
|
+
editableField.setAttribute('contenteditable', 'true');
|
|
300
|
+
editableField.focus();
|
|
301
|
+
editButton.setAttribute("disabled", "disabled");
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Dispatch change events of data holders from the current widget
|
|
305
|
+
*/
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
initChangeEvents() {
|
|
309
|
+
if (this.dataHolder) {
|
|
310
|
+
const event = new Event('change', {
|
|
311
|
+
bubbles: true
|
|
312
|
+
});
|
|
313
|
+
this.dataHolder.forEach(element => {
|
|
314
|
+
element.addEventListener('change', e => {
|
|
315
|
+
e.preventDefault();
|
|
316
|
+
e.stopPropagation();
|
|
317
|
+
this.dispatchEvent(event);
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
save(editableField, editButton) {
|
|
324
|
+
editableField.setAttribute('contenteditable', 'false');
|
|
325
|
+
editButton.removeAttribute("disabled");
|
|
326
|
+
if (!this.name) return;
|
|
327
|
+
const resource = {};
|
|
328
|
+
resource[this.name] = editableField.innerText;
|
|
329
|
+
resource['@context'] = this.context;
|
|
330
|
+
if (this.resourceId && resource) store.patch(resource, this.resourceId);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=baseWidget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["baseWidget.ts"],"names":["evalTemplateString","store","BaseWidget","HTMLElement","Map","connectedCallback","render","disconnectedCallback","_subscriptions","forEach","subscription","PubSub","unsubscribe","innerHTML","template","src","name","label","placeholder","value","id","_value","escapedValue","range","htmlRange","multiple","editable","required","addEditButtons","initChangeEvents","hasAttribute","getAttribute","setAttribute","dataHolder","values","map","element","HTMLInputElement","type","checked","getValueHolder","length","undefined","dispatchEvent","Event","el","index","widgetDataHolders","Array","from","querySelectorAll","filter","dataHolderAncestor","parentElement","closest","contains","childTemplate","replace","context","_context","fetchSources","_range","_listen","getData","resource","resources","res","resourceId","getChildren","e","isContainer","resourcesFromContainer","push","rangeResources","selected","component","subscribe","event","callback","get","set","editableField","querySelector","editButton","document","createElement","innerText","onclick","activateEditableField","insertAdjacentElement","addEventListener","save","focus","bubbles","preventDefault","stopPropagation","removeAttribute","patch"],"mappings":"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","sourcesContent":["import { evalTemplateString } from '../libs/helpers';\nimport { store } from '../libs/store/store';\n\nexport class BaseWidget extends HTMLElement {\n private src: string | undefined;\n private multiple: string | undefined;\n private editable: string | undefined;\n private required: string | undefined;\n private resourceId: string | undefined;\n public _value: any | undefined;\n private _range: any | undefined;\n private _context: object | undefined;\n private _subscriptions = new Map();\n\n connectedCallback(): void {\n this.render();\n }\n disconnectedCallback(): void {\n this._subscriptions.forEach((subscription) => {\n PubSub.unsubscribe(subscription);\n })\n }\n async render() {\n this.innerHTML = await evalTemplateString(this.template, {\n src: this.src,\n name: this.name,\n label: this.label,\n placeholder: this.placeholder,\n value: this.value,\n id: (this._value && this._value['@id']) || '',\n escapedValue: this.escapedValue,\n range: await this.htmlRange,\n multiple: this.multiple,\n editable: this.editable === '' ? true : false,\n required: this.required === '' ? true : false\n });\n\n this.addEditButtons();\n this.initChangeEvents();\n }\n get label(): string | null {\n return this.hasAttribute('label') ? this.getAttribute('label') : this.name;\n }\n set label(label: string | null) {\n if(label != null) this.setAttribute('label', label);\n this.render();\n }\n get placeholder(): string | null {\n return this.hasAttribute('placeholder') ? this.getAttribute('placeholder') : this.label;\n }\n set placeholder(placeholder: string | null) {\n if(placeholder != null) this.setAttribute('placeholder', placeholder);\n this.render();\n }\n get name(): string | null {\n return this.getAttribute('name');\n }\n set name(name: string | null) {\n if(name) this.setAttribute('name', name);\n this.render();\n }\n get value() {\n if (this.dataHolder) {\n let values = this.dataHolder.map(element => {\n if (element instanceof HTMLInputElement && element.type == \"checkbox\") return element.checked;\n // if value is defined, push it in the array\n return this.getValueHolder(element).value;\n });\n // If only one value, do not return an array\n return values.length === 1 ? values[0] : values;\n }\n return this._value || '';\n }\n set value(value) {\n this._value = value; // ... store `value` in the widget\n if (this._value == null || this._value == undefined) return;\n\n if (this.dataHolder && this.dataHolder.length === 1) {\n // if one dataHolder in the widget...\n const element = this.getValueHolder(this.dataHolder[0]);\n if (element.type == \"checkbox\") {\n element.checked = value;\n } else {\n element.value = value; // ... set `value` to the dataHolder element\n }\n // remove when https://git.happy-dev.fr/startinblox/framework/sib-core/issues/426 fixed\n if (element.dispatchEvent) element.dispatchEvent(new Event('change')); // trigger change manually\n } else if (this.dataHolder && this.dataHolder.length > 1) {\n // if multiple dataHolder in the widget ...\n this.dataHolder.forEach(\n (el, index) => {\n const element = this.getValueHolder(el);\n if (element.type == \"checkbox\") {\n element.checked = value ? value[index] : ''\n } else {\n element.value = value ? value[index] : ''\n }\n element.dispatchEvent(new Event('change')); // trigger change manually\n },\n ); // ... set each `value` to each dataHolder element\n }\n\n this.render();\n }\n get ['each-label'](): string{\n return this.getAttribute('each-label') || '';\n }\n set ['each-label'](label: string) {\n this.setAttribute('each-label', label);\n }\n set ['add-label'](label: string) {\n this.setAttribute('add-label', label);\n }\n set ['remove-label'](label: string) {\n this.setAttribute('remove-label', label);\n }\n get dataHolder(): Element[] | null {\n const widgetDataHolders = Array.from(this.querySelectorAll('[data-holder]')).filter(element => {\n const dataHolderAncestor = element.parentElement ? element.parentElement.closest('[data-holder]') : null;\n // get the dataHolder of the widget only if no dataHolder ancestor in the current widget\n return dataHolderAncestor === this || !dataHolderAncestor || !this.contains(dataHolderAncestor)\n });\n\n return widgetDataHolders.length ? widgetDataHolders : null;\n }\n get template(): string {\n return '';\n }\n get childTemplate(): string {\n return '';\n }\n get escapedValue(): string {\n return ('' + this.value)\n .replace(/&/g, '&')\n .replace(/'/g, ''')\n .replace(/\"/g, '"');\n }\n set context(value) {\n this._context = value;\n }\n get context() {\n return this._context || {};\n }\n\n get range(): any {\n return this.fetchSources(this._range);\n }\n set range(range) {\n (async () => {\n this._listen(range, async () => this._range = await store.getData(range, this.context));\n this._range = await store.getData(range, this.context);\n this.render();\n })();\n }\n async fetchSources(resource: any) {\n if (!resource || !resource['ldp:contains']) return null;\n let resources: any[] = [];\n let index = 0;\n for (let res of resource['ldp:contains']) {\n if (!res) { // child not in cache yet\n try {\n const resourceId = resource.getChildren()[index]['@id'];\n res = await store.getData(resourceId, this.context)\n } catch (e) { continue; }\n }\n if (res.isContainer?.()) { // if nested container\n let resourcesFromContainer = await store.getData(res['@id'], this.context); // fetch the datas\n this._listen(res['@id']);\n if (resourcesFromContainer) resources.push(...resourcesFromContainer['ldp:contains']);\n } else {\n resources.push(res);\n }\n index++;\n }\n return resources;\n }\n\n get htmlRange(): Promise<string | undefined> {\n return (async () => {\n let htmlRange = '';\n const rangeResources = await this.range;\n if (!rangeResources) return;\n for await (let element of rangeResources) {\n element = await store.getData(element['@id'], this.context); // fetch the resource to display the name\n this._listen(element['@id']);\n\n let selected: boolean;\n if (this._value && this._value.isContainer && this._value.isContainer()) { // selected options for multiple select\n selected = false;\n for await (let value of this._value[\"ldp:contains\"]) {\n if (value['@id'] == element['@id']) {\n selected = true;\n break;\n }\n }\n } else { // selected options for simple dropdowns\n selected = this._value ? this._value['@id'] == element['@id'] : false;\n }\n htmlRange += await evalTemplateString(this.childTemplate, {\n name: await element.name,\n id: element['@id'],\n selected: selected\n });\n }\n return htmlRange || '';\n })();\n }\n getValueHolder(element) {\n return element.component ? element.component : element;\n }\n\n subscribe(event: string) {\n this._listen(event);\n }\n\n _listen(id: string, callback: Function = () => {}) {\n if (!this._subscriptions.get(id)) {\n this._subscriptions.set(id, PubSub.subscribe(id, async () => {\n await callback();\n this.render();\n }))\n }\n }\n\n // Editable widgets\n addEditButtons(): void {\n const editableField = this.querySelector('[data-editable]') as HTMLElement;\n\n if (editableField) {\n // Add edit button\n const editButton = document.createElement('button');\n editButton.innerText = \"Modifier\";\n editButton.onclick = () => this.activateEditableField(editableField, editButton);\n editableField.insertAdjacentElement('afterend', editButton);\n\n // Save on focusout\n editableField.addEventListener('focusout', () => this.save(editableField, editButton));\n }\n }\n activateEditableField(editableField: HTMLElement, editButton: HTMLButtonElement): void {\n editableField.setAttribute('contenteditable', 'true');\n editableField.focus();\n editButton.setAttribute(\"disabled\", \"disabled\");\n }\n /**\n * Dispatch change events of data holders from the current widget\n */\n initChangeEvents(): void {\n if (this.dataHolder) {\n const event = new Event('change', { bubbles: true });\n this.dataHolder.forEach(element => {\n element.addEventListener('change', e => {\n e.preventDefault();\n e.stopPropagation();\n this.dispatchEvent(event);\n });\n });\n }\n }\n save(editableField: HTMLElement, editButton: HTMLButtonElement): void {\n editableField.setAttribute('contenteditable', 'false');\n editButton.removeAttribute(\"disabled\");\n\n if (!this.name) return;\n const resource = {};\n resource[this.name] = editableField.innerText;\n resource['@context'] = this.context;\n\n if(this.resourceId && resource) store.patch(resource, this.resourceId)\n }\n}\n"]}
|