@startinblox/core 0.17.21-beta.2 → 0.17.21-beta.3
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 +354 -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/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/store.js +862 -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 +124 -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 +63 -0
- package/dist/mixins/federationMixin.js.map +1 -0
- package/dist/mixins/filterMixin.js +195 -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 +136 -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/sorterMixin.js +149 -0
- package/dist/mixins/sorterMixin.js.map +1 -0
- package/dist/mixins/storeMixin.js +102 -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 +447 -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 +332 -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,94 @@
|
|
|
1
|
+
function _templateObject() {
|
|
2
|
+
const data = _taggedTemplateLiteral(["", ""]);
|
|
3
|
+
|
|
4
|
+
_templateObject = function () {
|
|
5
|
+
return data;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
return data;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
12
|
+
|
|
13
|
+
import { Sib } from '../libs/Sib.js';
|
|
14
|
+
import { StoreMixin } from '../mixins/storeMixin.js';
|
|
15
|
+
import { BaseWidgetMixin } from '../new-widgets/baseWidgetMixin.js';
|
|
16
|
+
import { FormMixin } from '../new-widgets/templatesDependencies/formMixin.js';
|
|
17
|
+
import { ActionMixin } from '../new-widgets/attributeMixins/actionMixin.js';
|
|
18
|
+
import { evalTemplateString } from '../libs/helpers.js';
|
|
19
|
+
import { html, render } from '../_snowpack/pkg/lit-html.js';
|
|
20
|
+
import { unsafeHTML } from '../_snowpack/pkg/lit-html/directives/unsafe-html.js';
|
|
21
|
+
export const SolidWidget = {
|
|
22
|
+
name: 'solid-widget',
|
|
23
|
+
use: [],
|
|
24
|
+
attributes: {
|
|
25
|
+
name: {
|
|
26
|
+
type: String,
|
|
27
|
+
default: "",
|
|
28
|
+
required: true
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
attached() {
|
|
33
|
+
if (!this.name) return;
|
|
34
|
+
const template = this.template;
|
|
35
|
+
const newWidget = {
|
|
36
|
+
name: this.name,
|
|
37
|
+
use: [BaseWidgetMixin, StoreMixin, FormMixin, ActionMixin],
|
|
38
|
+
attributes: {
|
|
39
|
+
label: {
|
|
40
|
+
type: String,
|
|
41
|
+
default: '',
|
|
42
|
+
callback: function (newValue) {
|
|
43
|
+
this.addToAttributes(newValue, 'label');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
get template() {
|
|
49
|
+
return () => this.evalTemplate(template).then(tpl => html(_templateObject(), unsafeHTML(tpl)));
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
evalTemplate(template) {
|
|
53
|
+
const tpl = evalTemplateString(template, {
|
|
54
|
+
name: this.name,
|
|
55
|
+
value: this.value || this.resource || '',
|
|
56
|
+
src: this.src,
|
|
57
|
+
label: this.label
|
|
58
|
+
});
|
|
59
|
+
return tpl;
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
async templateToDOM(template) {
|
|
63
|
+
render(await template, this.element);
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
// For form widgets, handle nested solid-form
|
|
67
|
+
getValueFromElement(element) {
|
|
68
|
+
if (element.tagName === "SOLID-FORM") return element.component.value; // nested solid-form
|
|
69
|
+
else if (element.component) return element.component.getValue(); // form widget
|
|
70
|
+
|
|
71
|
+
return element.value; // input
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
updateDOM() {
|
|
75
|
+
// override StoreMixin method to launch render when resource fetched
|
|
76
|
+
this.planRender();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
};
|
|
80
|
+
Sib.register(newWidget); // and register component
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
get template() {
|
|
84
|
+
return this.element.querySelector('template:not([data-range])').innerHTML;
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
get childTemplate() {
|
|
88
|
+
const child = this.element.querySelector('template[data-range]');
|
|
89
|
+
return child ? child.innerHTML : null;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
};
|
|
93
|
+
Sib.register(SolidWidget);
|
|
94
|
+
//# sourceMappingURL=solid-widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["solid-widget.ts"],"names":["Sib","StoreMixin","BaseWidgetMixin","FormMixin","ActionMixin","evalTemplateString","html","render","unsafeHTML","SolidWidget","name","use","attributes","type","String","default","required","attached","template","newWidget","label","callback","newValue","addToAttributes","evalTemplate","then","tpl","value","resource","src","templateToDOM","element","getValueFromElement","tagName","component","getValue","updateDOM","planRender","register","querySelector","innerHTML","childTemplate","child"],"mappings":"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","sourcesContent":["import { Sib } from '../libs/Sib';\nimport { StoreMixin } from '../mixins/storeMixin';\nimport { BaseWidgetMixin } from '../new-widgets/baseWidgetMixin';\nimport { FormMixin } from '../new-widgets/templatesDependencies/formMixin';\nimport { ActionMixin } from '../new-widgets/attributeMixins/actionMixin';\nimport { evalTemplateString } from '../libs/helpers';\nimport { html, render } from 'lit-html';\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html';\n\nexport const SolidWidget = {\n name: 'solid-widget',\n use: [],\n attributes: {\n name: {\n type: String,\n default: \"\",\n required: true\n }\n },\n attached(): void {\n if (!this.name) return;\n const template = this.template;\n const newWidget = {\n name: this.name,\n use: [\n BaseWidgetMixin,\n StoreMixin,\n FormMixin,\n ActionMixin\n ],\n attributes: {\n label: {\n type: String,\n default: '',\n callback: function (newValue: string) {\n this.addToAttributes(newValue, 'label');\n }\n },\n },\n get template() {\n return () => this.evalTemplate(template).then((tpl: string) => html`${unsafeHTML(tpl)}`)\n },\n evalTemplate(template: string) {\n const tpl = evalTemplateString(template, {\n name: this.name,\n value: this.value || this.resource || '',\n src: this.src,\n label: this.label,\n });\n return tpl;\n },\n async templateToDOM(template) {\n render(await template, this.element);\n },\n // For form widgets, handle nested solid-form\n getValueFromElement(element: any) {\n if (element.tagName === \"SOLID-FORM\") return element.component.value; // nested solid-form\n else if (element.component) return element.component.getValue(); // form widget\n return element.value; // input\n },\n updateDOM() { // override StoreMixin method to launch render when resource fetched\n this.planRender();\n }\n };\n\n Sib.register(newWidget); // and register component\n },\n get template() {\n return this.element.querySelector('template:not([data-range])').innerHTML;\n },\n get childTemplate(): string | null {\n const child = this.element.querySelector('template[data-range]');\n return child ? child.innerHTML : null;\n }\n};\n\nSib.register(SolidWidget);"]}
|
package/dist/import.css
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import "./libs/polyfills.js"; // Components
|
|
2
|
+
|
|
3
|
+
import { SolidDisplay } from './components/solid-display.js';
|
|
4
|
+
import { SolidForm } from './components/solid-form.js';
|
|
5
|
+
import { SolidFormSearch } from './components/solid-form-search.js';
|
|
6
|
+
import { SolidWidget } from './components/solid-widget.js';
|
|
7
|
+
import { SolidAcChecker } from './components/solid-ac-checker.js';
|
|
8
|
+
import { SolidDelete } from './components/solid-delete.js';
|
|
9
|
+
import { SolidLang } from './components/solid-lang.js';
|
|
10
|
+
import { SolidTable } from './components/solid-table.js';
|
|
11
|
+
import { SolidMap } from './components/solid-map.js'; // Mixins
|
|
12
|
+
|
|
13
|
+
import { CounterMixin } from './mixins/counterMixin.js';
|
|
14
|
+
import { FederationMixin } from './mixins/federationMixin.js';
|
|
15
|
+
import { FilterMixin } from './mixins/filterMixin.js';
|
|
16
|
+
import { GrouperMixin } from './mixins/grouperMixin.js';
|
|
17
|
+
import { HighlighterMixin } from './mixins/highlighterMixin.js';
|
|
18
|
+
import { ListMixin } from './mixins/listMixin.js';
|
|
19
|
+
import { NextMixin } from './mixins/nextMixin.js';
|
|
20
|
+
import { PaginateMixin } from './mixins/paginateMixin.js';
|
|
21
|
+
import { RequiredMixin } from './mixins/requiredMixin.js';
|
|
22
|
+
import { SorterMixin } from './mixins/sorterMixin.js';
|
|
23
|
+
import { StoreMixin } from './mixins/storeMixin.js';
|
|
24
|
+
import { TranslationMixin } from './mixins/translationMixin.js';
|
|
25
|
+
import { ValidationMixin } from './mixins/validationMixin.js';
|
|
26
|
+
import { WidgetMixin } from './mixins/widgetMixin.js'; // Libs
|
|
27
|
+
|
|
28
|
+
import { store } from './libs/store/store.js';
|
|
29
|
+
import { Sib } from './libs/Sib.js';
|
|
30
|
+
import SolidTemplateElement from './solid-template-element.js';
|
|
31
|
+
import { widgetFactory } from './widgets/widget-factory.js';
|
|
32
|
+
import * as Helpers from './libs/helpers.js'; // lit-html
|
|
33
|
+
|
|
34
|
+
import { html, render } from './_snowpack/pkg/lit-html.js';
|
|
35
|
+
import { ifDefined } from './_snowpack/pkg/lit-html/directives/if-defined.js';
|
|
36
|
+
import { until } from './_snowpack/pkg/lit-html/directives/until.js';
|
|
37
|
+
import { unsafeHTML } from './_snowpack/pkg/lit-html/directives/unsafe-html.js';
|
|
38
|
+
export { // Components
|
|
39
|
+
SolidDisplay, SolidForm, SolidFormSearch, SolidWidget, SolidAcChecker, SolidDelete, SolidLang, SolidTable, SolidMap // Mixins
|
|
40
|
+
, CounterMixin, FederationMixin, FilterMixin, GrouperMixin, HighlighterMixin, ListMixin, NextMixin, PaginateMixin, RequiredMixin, SorterMixin, StoreMixin, TranslationMixin, ValidationMixin, WidgetMixin // Libs
|
|
41
|
+
, store, Sib, SolidTemplateElement, widgetFactory, Helpers // lit-html
|
|
42
|
+
, html, render, ifDefined, until, unsafeHTML };
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["SolidDisplay","SolidForm","SolidFormSearch","SolidWidget","SolidAcChecker","SolidDelete","SolidLang","SolidTable","SolidMap","CounterMixin","FederationMixin","FilterMixin","GrouperMixin","HighlighterMixin","ListMixin","NextMixin","PaginateMixin","RequiredMixin","SorterMixin","StoreMixin","TranslationMixin","ValidationMixin","WidgetMixin","store","Sib","SolidTemplateElement","widgetFactory","Helpers","html","render","ifDefined","until","unsafeHTML"],"mappings":"AAAA,OAAO,qBAAP,C,CACA;;AACA,SAASA,YAAT,QAA6B,4BAA7B;AACA,SAASC,SAAT,QAA0B,yBAA1B;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,WAAT,QAA4B,2BAA5B;AACA,SAASC,cAAT,QAA+B,+BAA/B;AACA,SAASC,WAAT,QAA4B,2BAA5B;AACA,SAASC,SAAT,QAA0B,yBAA1B;AACA,SAASC,UAAT,QAA2B,0BAA3B;AACA,SAASC,QAAT,QAAyB,wBAAzB,C,CAEA;;AACA,SAASC,YAAT,QAA6B,uBAA7B;AACA,SAASC,eAAT,QAAgC,0BAAhC;AACA,SAASC,WAAT,QAA4B,sBAA5B;AACA,SAASC,YAAT,QAA6B,uBAA7B;AACA,SAASC,gBAAT,QAAiC,2BAAjC;AACA,SAASC,SAAT,QAA0B,oBAA1B;AACA,SAASC,SAAT,QAA0B,oBAA1B;AACA,SAASC,aAAT,QAA8B,wBAA9B;AACA,SAASC,aAAT,QAA8B,wBAA9B;AACA,SAASC,WAAT,QAA4B,sBAA5B;AACA,SAASC,UAAT,QAA2B,qBAA3B;AACA,SAASC,gBAAT,QAAiC,2BAAjC;AACA,SAASC,eAAT,QAAgC,0BAAhC;AACA,SAASC,WAAT,QAA4B,sBAA5B,C,CAEA;;AACA,SAASC,KAAT,QAAsB,oBAAtB;AACA,SAASC,GAAT,QAAoB,YAApB;AACA,OAAOC,oBAAP,MAAiC,0BAAjC;AACA,SAASC,aAAT,QAA8B,0BAA9B;AACA,OAAO,KAAKC,OAAZ,MAAyB,gBAAzB,C,CAEA;;AACA,SAASC,IAAT,EAAeC,MAAf,QAA6B,UAA7B;AACA,SAASC,SAAT,QAA0B,gCAA1B;AACA,SAASC,KAAT,QAAsB,2BAAtB;AACA,SAASC,UAAT,QAA2B,iCAA3B;AAEA,SACE;AACAhC,YAFF,EAGEC,SAHF,EAIEC,eAJF,EAKEC,WALF,EAMEC,cANF,EAOEC,WAPF,EAQEC,SARF,EASEC,UATF,EAUEC,QAVF,CAYE;AAZF,EAaEC,YAbF,EAcEC,eAdF,EAeEC,WAfF,EAgBEC,YAhBF,EAiBEC,gBAjBF,EAkBEC,SAlBF,EAmBEC,SAnBF,EAoBEC,aApBF,EAqBEC,aArBF,EAsBEC,WAtBF,EAuBEC,UAvBF,EAwBEC,gBAxBF,EAyBEC,eAzBF,EA0BEC,WA1BF,CA4BE;AA5BF,EA6BEC,KA7BF,EA8BEC,GA9BF,EA+BEC,oBA/BF,EAgCEC,aAhCF,EAiCEC,OAjCF,CAmCE;AAnCF,EAoCEC,IApCF,EAqCEC,MArCF,EAsCEC,SAtCF,EAuCEC,KAvCF,EAwCEC,UAxCF","sourcesContent":["import \"./libs/polyfills.js\";\n// Components\nimport { SolidDisplay } from './components/solid-display';\nimport { SolidForm } from './components/solid-form';\nimport { SolidFormSearch } from './components/solid-form-search';\nimport { SolidWidget } from './components/solid-widget';\nimport { SolidAcChecker } from './components/solid-ac-checker';\nimport { SolidDelete } from './components/solid-delete';\nimport { SolidLang } from './components/solid-lang';\nimport { SolidTable } from './components/solid-table';\nimport { SolidMap } from './components/solid-map';\n\n// Mixins\nimport { CounterMixin } from './mixins/counterMixin';\nimport { FederationMixin } from './mixins/federationMixin';\nimport { FilterMixin } from './mixins/filterMixin';\nimport { GrouperMixin } from './mixins/grouperMixin';\nimport { HighlighterMixin } from './mixins/highlighterMixin';\nimport { ListMixin } from './mixins/listMixin';\nimport { NextMixin } from './mixins/nextMixin';\nimport { PaginateMixin } from './mixins/paginateMixin';\nimport { RequiredMixin } from './mixins/requiredMixin';\nimport { SorterMixin } from './mixins/sorterMixin';\nimport { StoreMixin } from './mixins/storeMixin';\nimport { TranslationMixin } from './mixins/translationMixin';\nimport { ValidationMixin } from './mixins/validationMixin';\nimport { WidgetMixin } from './mixins/widgetMixin';\n\n// Libs\nimport { store } from './libs/store/store';\nimport { Sib } from './libs/Sib';\nimport SolidTemplateElement from './solid-template-element';\nimport { widgetFactory } from './widgets/widget-factory';\nimport * as Helpers from './libs/helpers';\n\n// lit-html\nimport { html, render } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { until } from 'lit-html/directives/until';\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html';\n\nexport {\n // Components\n SolidDisplay,\n SolidForm,\n SolidFormSearch,\n SolidWidget,\n SolidAcChecker,\n SolidDelete,\n SolidLang,\n SolidTable,\n SolidMap,\n\n // Mixins\n CounterMixin,\n FederationMixin,\n FilterMixin,\n GrouperMixin,\n HighlighterMixin,\n ListMixin,\n NextMixin,\n PaginateMixin,\n RequiredMixin,\n SorterMixin,\n StoreMixin,\n TranslationMixin,\n ValidationMixin,\n WidgetMixin,\n\n // Libs\n store,\n Sib,\n SolidTemplateElement,\n widgetFactory,\n Helpers,\n\n // lit-html\n html,\n render,\n ifDefined,\n until,\n unsafeHTML\n}"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
export class Component {
|
|
4
|
+
constructor(element) {
|
|
5
|
+
_defineProperty(this, "element", void 0);
|
|
6
|
+
|
|
7
|
+
this.element = element;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
created() {}
|
|
11
|
+
|
|
12
|
+
attached() {}
|
|
13
|
+
|
|
14
|
+
detached() {}
|
|
15
|
+
|
|
16
|
+
attributesCallback(_key, _value, _oldValue) {}
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Component.ts"],"names":["Component","constructor","element","created","attached","detached","attributesCallback","_key","_value","_oldValue"],"mappings":";;AAEA,OAAO,MAAeA,SAAf,CAAuD;AAG5DC,EAAAA,WAAW,CAACC,OAAD,EAAuB;AAAA;;AAChC,SAAKA,OAAL,GAAeA,OAAf;AACD;;AAEDC,EAAAA,OAAO,GAAG,CAAE;;AACZC,EAAAA,QAAQ,GAAG,CAAE;;AACbC,EAAAA,QAAQ,GAAG,CAAE;;AAEbC,EAAAA,kBAAkB,CAACC,IAAD,EAAeC,MAAf,EAA4BC,SAA5B,EAAiD,CAAE;;AAXT","sourcesContent":["import type { ComponentInterface } from \"./interfaces.js\";\n\nexport abstract class Component implements ComponentInterface {\n public element: HTMLElement;\n\n constructor(element: HTMLElement) {\n this.element = element;\n }\n\n created() {}\n attached() {}\n detached() {}\n\n attributesCallback(_key: string, _value: any, _oldValue: any):void {}\n}\n"]}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { Compositor } from './Compositor.js';
|
|
2
|
+
import { Component } from './Component.js';
|
|
3
|
+
export class ComponentFactory {
|
|
4
|
+
static build(component) {
|
|
5
|
+
const {
|
|
6
|
+
initialState,
|
|
7
|
+
attributes,
|
|
8
|
+
methods,
|
|
9
|
+
hooks,
|
|
10
|
+
accessors,
|
|
11
|
+
name
|
|
12
|
+
} = Compositor.merge(component, Compositor.mergeMixin(component));
|
|
13
|
+
let componentConstructor = class extends Component {};
|
|
14
|
+
componentConstructor = ComponentFactory.bindInitialState(componentConstructor, initialState);
|
|
15
|
+
componentConstructor = ComponentFactory.bindAttributes(componentConstructor, attributes);
|
|
16
|
+
componentConstructor = ComponentFactory.bindMethods(componentConstructor, methods);
|
|
17
|
+
componentConstructor = ComponentFactory.bindAccessors(componentConstructor, accessors);
|
|
18
|
+
componentConstructor = ComponentFactory.bindHooks(componentConstructor, hooks);
|
|
19
|
+
Reflect.defineProperty(componentConstructor, 'name', {
|
|
20
|
+
value: name
|
|
21
|
+
});
|
|
22
|
+
return componentConstructor;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static bindInitialState(componentConstructor, initialState) {
|
|
26
|
+
if (initialState) {
|
|
27
|
+
Reflect.ownKeys(initialState).forEach(key => {
|
|
28
|
+
Reflect.defineProperty(componentConstructor.prototype, key, {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
writable: true,
|
|
31
|
+
value: initialState[key]
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return componentConstructor;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static bindAttributes(componentConstructor, attributes) {
|
|
40
|
+
if (attributes) {
|
|
41
|
+
const attributesList = Reflect.ownKeys(attributes).map(key => String(key));
|
|
42
|
+
const attributesCallback = {};
|
|
43
|
+
attributesList.forEach(key => {
|
|
44
|
+
const {
|
|
45
|
+
default: def,
|
|
46
|
+
type,
|
|
47
|
+
required,
|
|
48
|
+
callback
|
|
49
|
+
} = attributes[key];
|
|
50
|
+
let fromType;
|
|
51
|
+
let toType;
|
|
52
|
+
|
|
53
|
+
switch (type) {
|
|
54
|
+
case String:
|
|
55
|
+
fromType = value => String(value);
|
|
56
|
+
|
|
57
|
+
toType = value => value;
|
|
58
|
+
|
|
59
|
+
break;
|
|
60
|
+
|
|
61
|
+
case Object:
|
|
62
|
+
fromType = value => JSON.parse(value);
|
|
63
|
+
|
|
64
|
+
toType = value => JSON.stringify(value);
|
|
65
|
+
|
|
66
|
+
break;
|
|
67
|
+
|
|
68
|
+
case Number:
|
|
69
|
+
fromType = value => Number(value);
|
|
70
|
+
|
|
71
|
+
toType = value => Number(value).toString();
|
|
72
|
+
|
|
73
|
+
break;
|
|
74
|
+
|
|
75
|
+
case Boolean:
|
|
76
|
+
fromType = value => Boolean(value);
|
|
77
|
+
|
|
78
|
+
toType = value => value;
|
|
79
|
+
|
|
80
|
+
break;
|
|
81
|
+
|
|
82
|
+
default:
|
|
83
|
+
fromType = value => value;
|
|
84
|
+
|
|
85
|
+
toType = value => value;
|
|
86
|
+
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const attribute = key.replace(/([a-z0-9])([A-Z0-9])/g, '$1-$2').toLowerCase();
|
|
91
|
+
Reflect.defineProperty(componentConstructor.prototype, key, {
|
|
92
|
+
enumerable: true,
|
|
93
|
+
configurable: false,
|
|
94
|
+
get: function () {
|
|
95
|
+
const element = this.element;
|
|
96
|
+
|
|
97
|
+
if (!element.hasAttribute(attribute)) {
|
|
98
|
+
if (required && type !== Boolean) {
|
|
99
|
+
throw new Error("Attribute ".concat(key, " is required"));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return def;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return fromType(element.getAttribute(attribute));
|
|
106
|
+
},
|
|
107
|
+
set: function (value) {
|
|
108
|
+
const element = this.element;
|
|
109
|
+
|
|
110
|
+
if (type === Boolean) {
|
|
111
|
+
if (!value) {
|
|
112
|
+
element.removeAttribute(attribute);
|
|
113
|
+
} else {
|
|
114
|
+
element.setAttribute(attribute, '');
|
|
115
|
+
}
|
|
116
|
+
} else {
|
|
117
|
+
element.setAttribute(attribute, toType(value));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
if (callback && typeof callback === 'function') {
|
|
123
|
+
attributesCallback[key] = callback;
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
Reflect.defineProperty(componentConstructor, 'observedAttributes', {
|
|
127
|
+
get: () => attributesList.map(attr => attr.replace(/([a-z0-9])([A-Z0-9])/g, '$1-$2').toLowerCase())
|
|
128
|
+
});
|
|
129
|
+
Reflect.defineProperty(componentConstructor.prototype, 'attributesCallback', {
|
|
130
|
+
value: function (key, newValue, oldValue) {
|
|
131
|
+
if (key in attributesCallback) {
|
|
132
|
+
Reflect.apply(attributesCallback[key], this, [newValue, oldValue]);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
Reflect.defineProperty(componentConstructor.prototype, 'attributesCallback', attributesCallback);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return componentConstructor;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
static bindAccessors(componentConstructor, accessors) {
|
|
143
|
+
if (accessors) {
|
|
144
|
+
Object.keys(accessors).forEach(property => {
|
|
145
|
+
Reflect.defineProperty(componentConstructor.prototype, property, {
|
|
146
|
+
get: function () {
|
|
147
|
+
return Reflect.apply(accessors[property].get, this, []);
|
|
148
|
+
},
|
|
149
|
+
set: function (value) {
|
|
150
|
+
return Reflect.apply(accessors[property].set, this, [value]);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return componentConstructor;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
static bindMethods(componentConstructor, methods) {
|
|
160
|
+
methods.forEach((method, methodName) => {
|
|
161
|
+
Reflect.defineProperty(componentConstructor.prototype, methodName, {
|
|
162
|
+
value: function (...args) {
|
|
163
|
+
return Reflect.apply(method, this, args);
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
return componentConstructor;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
static bindHooks(componentConstructor, hooks) {
|
|
171
|
+
Reflect.defineProperty(componentConstructor.prototype, 'created', {
|
|
172
|
+
value: function () {
|
|
173
|
+
hooks.created.forEach(hook => {
|
|
174
|
+
Reflect.apply(hook, this, []);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
Reflect.defineProperty(componentConstructor.prototype, 'attached', {
|
|
179
|
+
value: function () {
|
|
180
|
+
hooks.attached.forEach(hook => {
|
|
181
|
+
Reflect.apply(hook, this, []);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
Reflect.defineProperty(componentConstructor.prototype, 'detached', {
|
|
186
|
+
value: function () {
|
|
187
|
+
hooks.detached.forEach(hook => {
|
|
188
|
+
Reflect.apply(hook, this, []);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
return componentConstructor;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=ComponentFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ComponentFactory.ts"],"names":["Compositor","Component","ComponentFactory","build","component","initialState","attributes","methods","hooks","accessors","name","merge","mergeMixin","componentConstructor","bindInitialState","bindAttributes","bindMethods","bindAccessors","bindHooks","Reflect","defineProperty","value","ownKeys","forEach","key","prototype","enumerable","writable","attributesList","map","String","attributesCallback","default","def","type","required","callback","fromType","toType","Object","JSON","parse","stringify","Number","toString","Boolean","attribute","replace","toLowerCase","configurable","get","element","hasAttribute","Error","getAttribute","set","removeAttribute","setAttribute","attr","newValue","oldValue","apply","keys","property","method","methodName","args","created","hook","attached","detached"],"mappings":"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","sourcesContent":["import { Compositor } from './Compositor';\nimport { Component } from './Component';\nimport type {\n MixinStaticInterface,\n AttributesDefinitionInterface,\n ComponentConstructorInterface,\n ArrayOfHooksInterface,\n AccessorStaticInterface\n} from './interfaces';\n\nexport class ComponentFactory {\n public static build(component: MixinStaticInterface): ComponentConstructorInterface {\n const { initialState, attributes, methods, hooks, accessors, name } = Compositor.merge(component, Compositor.mergeMixin(component));\n\n let componentConstructor = class extends Component {};\n\n componentConstructor = ComponentFactory.bindInitialState(componentConstructor, initialState);\n componentConstructor = ComponentFactory.bindAttributes(componentConstructor, attributes);\n componentConstructor = ComponentFactory.bindMethods(componentConstructor, methods);\n componentConstructor = ComponentFactory.bindAccessors(componentConstructor, accessors);\n componentConstructor = ComponentFactory.bindHooks(componentConstructor, hooks);\n\n Reflect.defineProperty(componentConstructor, 'name', {\n value: name,\n });\n\n return componentConstructor;\n }\n\n protected static bindInitialState(componentConstructor: ComponentConstructorInterface, initialState: object | undefined):any {\n if (initialState) {\n Reflect.ownKeys(initialState).forEach(key => {\n Reflect.defineProperty(componentConstructor.prototype, key, {\n enumerable: true,\n writable: true,\n value: initialState[key],\n });\n });\n }\n\n return componentConstructor;\n }\n\n protected static bindAttributes(componentConstructor: ComponentConstructorInterface, attributes: AttributesDefinitionInterface | undefined): ComponentConstructorInterface {\n if (attributes) {\n const attributesList = Reflect.ownKeys(attributes).map(key => String(key));\n const attributesCallback = {};\n\n attributesList.forEach(key => {\n const { default: def, type, required, callback } = attributes[key];\n\n let fromType;\n let toType;\n\n switch (type) {\n case String:\n fromType = value => String(value);\n toType = value => value;\n break;\n case Object:\n fromType = value => JSON.parse(value);\n toType = value => JSON.stringify(value);\n break;\n case Number:\n fromType = value => Number(value);\n toType = value => Number(value).toString();\n break;\n case Boolean:\n fromType = value => Boolean(value);\n toType = value => value;\n break;\n default:\n fromType = value => value;\n toType = value => value;\n break;\n }\n\n const attribute = key.replace(/([a-z0-9])([A-Z0-9])/g, '$1-$2').toLowerCase();\n\n Reflect.defineProperty(componentConstructor.prototype, key, {\n enumerable: true,\n configurable: false,\n get: function () {\n const element = this.element;\n if (!element.hasAttribute(attribute)) {\n if (required && type !== Boolean) {\n throw new Error(`Attribute ${key} is required`);\n }\n return def;\n }\n return fromType(element.getAttribute(attribute));\n },\n set: function (value) {\n const element = this.element;\n if (type === Boolean) {\n if (!value) {\n element.removeAttribute(attribute);\n } else {\n element.setAttribute(attribute, '');\n }\n } else {\n element.setAttribute(attribute, toType(value));\n }\n },\n });\n\n if (callback && typeof callback === 'function') {\n attributesCallback[key] = callback;\n }\n });\n\n Reflect.defineProperty(componentConstructor, 'observedAttributes', {\n get: () => attributesList.map(attr => attr.replace(/([a-z0-9])([A-Z0-9])/g, '$1-$2').toLowerCase()),\n });\n\n Reflect.defineProperty(componentConstructor.prototype, 'attributesCallback', {\n value: function(key, newValue, oldValue) {\n if (key in attributesCallback) {\n Reflect.apply(attributesCallback[key], this, [newValue, oldValue]);\n }\n }\n });\n\n Reflect.defineProperty(componentConstructor.prototype, 'attributesCallback', attributesCallback);\n }\n return componentConstructor;\n }\n\n protected static bindAccessors(componentConstructor: ComponentConstructorInterface, accessors: AccessorStaticInterface): ComponentConstructorInterface {\n if (accessors) {\n Object.keys(accessors).forEach(property => {\n Reflect.defineProperty(componentConstructor.prototype, property, {\n get: function () {\n return Reflect.apply(accessors[property].get, this, [])\n },\n set: function (value) {\n return Reflect.apply(accessors[property].set, this, [value])\n }\n });\n });\n }\n return componentConstructor;\n }\n\n protected static bindMethods(componentConstructor: ComponentConstructorInterface, methods: Map<string, Function>): ComponentConstructorInterface {\n methods.forEach((method, methodName: string) => {\n Reflect.defineProperty(componentConstructor.prototype, methodName, {\n value: function (...args) {\n return Reflect.apply(method, this, args);\n },\n });\n });\n return componentConstructor;\n }\n\n protected static bindHooks(componentConstructor: ComponentConstructorInterface, hooks: ArrayOfHooksInterface): ComponentConstructorInterface {\n Reflect.defineProperty(componentConstructor.prototype, 'created', {\n value: function() {\n hooks.created.forEach(hook => {\n Reflect.apply(hook, this, []);\n });\n },\n });\n\n Reflect.defineProperty(componentConstructor.prototype, 'attached', {\n value: function() {\n hooks.attached.forEach(hook => {\n Reflect.apply(hook, this, []);\n });\n },\n });\n\n Reflect.defineProperty(componentConstructor.prototype, 'detached', {\n value: function() {\n hooks.detached.forEach(hook => {\n Reflect.apply(hook, this, []);\n });\n },\n });\n return componentConstructor;\n }\n}\n"]}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
const HOOKS = ['created', 'attached', 'detached'];
|
|
2
|
+
const API = ['name', 'use', 'attributes', 'initialState', ...HOOKS];
|
|
3
|
+
export class Compositor {
|
|
4
|
+
static merge(component, mixins) {
|
|
5
|
+
return {
|
|
6
|
+
name: component.name,
|
|
7
|
+
attributes: Compositor.mergeAttributes([component, ...mixins]),
|
|
8
|
+
initialState: Compositor.mergeInitialState([component, ...mixins]),
|
|
9
|
+
methods: Compositor.mergeMethods([component, ...mixins]),
|
|
10
|
+
accessors: Compositor.mergeAccessors([component, ...mixins]),
|
|
11
|
+
hooks: Compositor.mergeHooks([component, ...mixins])
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static mergeMixin(component) {
|
|
16
|
+
function deepMergeMixin(mixinAccumulator, currentMixin) {
|
|
17
|
+
const {
|
|
18
|
+
use: currentMixins
|
|
19
|
+
} = currentMixin;
|
|
20
|
+
|
|
21
|
+
if (currentMixins) {
|
|
22
|
+
currentMixins.forEach(mix => {
|
|
23
|
+
if (!mixinAccumulator.has(mix)) {
|
|
24
|
+
mixinAccumulator.set(mix, mix);
|
|
25
|
+
deepMergeMixin(mixinAccumulator, mix);
|
|
26
|
+
} else {
|
|
27
|
+
console.warn("Duplicate mixin import (".concat(mix.name, ")"));
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const mixins = new Map();
|
|
34
|
+
deepMergeMixin(mixins, component);
|
|
35
|
+
return Array.from(mixins.values());
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
static mergeAttributes(mixins) {
|
|
39
|
+
let attributes = {};
|
|
40
|
+
mixins.forEach(mixin => {
|
|
41
|
+
if (!!mixin.attributes) {
|
|
42
|
+
attributes = { ...mixin.attributes,
|
|
43
|
+
...attributes
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return attributes;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
static mergeInitialState(mixins) {
|
|
51
|
+
let initialState = {};
|
|
52
|
+
mixins.forEach(mixin => {
|
|
53
|
+
if (!!mixin.initialState) {
|
|
54
|
+
initialState = { ...mixin.initialState,
|
|
55
|
+
...initialState
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return initialState;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
static mergeHooks(mixins) {
|
|
63
|
+
const hooks = {
|
|
64
|
+
created: [],
|
|
65
|
+
attached: [],
|
|
66
|
+
detached: []
|
|
67
|
+
};
|
|
68
|
+
mixins.reverse().forEach(mixin => {
|
|
69
|
+
HOOKS.forEach(hookName => {
|
|
70
|
+
if (!!mixin[hookName] && typeof mixin[hookName] === 'function') {
|
|
71
|
+
hooks[hookName].push(mixin[hookName]);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
return hooks;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
static mergeMethods(mixins) {
|
|
79
|
+
const methods = new Map();
|
|
80
|
+
mixins.reverse().forEach(mixin => {
|
|
81
|
+
const keys = Reflect.ownKeys(mixin).filter(key => typeof key === 'string' && API.indexOf(key) < 0 && !Object.getOwnPropertyDescriptor(mixin, key).get && !Object.getOwnPropertyDescriptor(mixin, key).set && typeof mixin[key] === 'function');
|
|
82
|
+
keys.forEach(key => {
|
|
83
|
+
methods.set(key, mixin[key]);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
return methods;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
static mergeAccessors(mixins) {
|
|
90
|
+
const accessors = {};
|
|
91
|
+
mixins.reverse().forEach(mixin => {
|
|
92
|
+
Reflect.ownKeys(mixin).filter(key => typeof key === 'string' && API.indexOf(key) < 0 && (Object.getOwnPropertyDescriptor(mixin, key).get || Object.getOwnPropertyDescriptor(mixin, key).set)).forEach(prop => {
|
|
93
|
+
accessors[prop] = { ...accessors[prop]
|
|
94
|
+
};
|
|
95
|
+
if (Reflect.getOwnPropertyDescriptor(mixin, prop).get) accessors[prop].get = Reflect.getOwnPropertyDescriptor(mixin, prop).get;
|
|
96
|
+
if (Reflect.getOwnPropertyDescriptor(mixin, prop).set) accessors[prop].set = Reflect.getOwnPropertyDescriptor(mixin, prop).set;
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
return accessors;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=Compositor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Compositor.ts"],"names":["HOOKS","API","Compositor","merge","component","mixins","name","attributes","mergeAttributes","initialState","mergeInitialState","methods","mergeMethods","accessors","mergeAccessors","hooks","mergeHooks","mergeMixin","deepMergeMixin","mixinAccumulator","currentMixin","use","currentMixins","forEach","mix","has","set","console","warn","Map","Array","from","values","mixin","created","attached","detached","reverse","hookName","push","keys","Reflect","ownKeys","filter","key","indexOf","Object","getOwnPropertyDescriptor","get","prop"],"mappings":"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","sourcesContent":["import type {\n MixinStaticInterface,\n ComponentStaticInterface,\n AttributesDefinitionInterface,\n ArrayOfHooksInterface,\n AccessorStaticInterface\n} from './interfaces';\n\nconst HOOKS = ['created', 'attached', 'detached'];\nconst API = [\n 'name',\n 'use',\n 'attributes',\n 'initialState',\n ...HOOKS,\n];\n\nexport class Compositor {\n public static merge(component: MixinStaticInterface, mixins: MixinStaticInterface[]): ComponentStaticInterface {\n return {\n name: component.name,\n attributes: Compositor.mergeAttributes([ component, ...mixins ]),\n initialState: Compositor.mergeInitialState([ component, ...mixins ]),\n methods: Compositor.mergeMethods([ component, ...mixins]),\n accessors: Compositor.mergeAccessors([ component, ...mixins]),\n hooks: Compositor.mergeHooks([ component, ...mixins ]),\n };\n }\n\n public static mergeMixin(component: MixinStaticInterface): MixinStaticInterface[] {\n function deepMergeMixin(mixinAccumulator: Map<MixinStaticInterface, MixinStaticInterface>, currentMixin: MixinStaticInterface) {\n const { use: currentMixins } = currentMixin;\n if (currentMixins) {\n currentMixins.forEach(mix => {\n if (!mixinAccumulator.has(mix)) {\n mixinAccumulator.set(mix, mix);\n deepMergeMixin(mixinAccumulator, mix);\n } else {\n console.warn(`Duplicate mixin import (${mix.name})`);\n }\n });\n }\n }\n\n const mixins = new Map();\n deepMergeMixin(mixins, component);\n\n return Array.from(mixins.values());\n }\n\n public static mergeAttributes(mixins: MixinStaticInterface[]): AttributesDefinitionInterface {\n let attributes = {};\n\n mixins.forEach(mixin => {\n if (!!mixin.attributes) {\n attributes = {...mixin.attributes, ...attributes };\n }\n });\n\n return attributes;\n }\n\n public static mergeInitialState(mixins: MixinStaticInterface[]): any {\n let initialState = {};\n\n mixins.forEach(mixin => {\n if (!!mixin.initialState) {\n initialState = {...mixin.initialState, ...initialState };\n }\n });\n\n return initialState;\n }\n\n public static mergeHooks(mixins: MixinStaticInterface[]): ArrayOfHooksInterface {\n const hooks = {\n created: [],\n attached: [],\n detached: [],\n };\n mixins\n .reverse()\n .forEach(mixin => {\n HOOKS.forEach(hookName => {\n if(!!mixin[hookName] && typeof mixin[hookName] === 'function') {\n hooks[hookName].push(mixin[hookName]);\n }\n });\n });\n \n\n return hooks;\n }\n\n public static mergeMethods(mixins: MixinStaticInterface[]): Map<any, any> {\n const methods = new Map();\n\n mixins.reverse().forEach(mixin => {\n const keys = Reflect\n .ownKeys(mixin)\n .filter(key => (\n typeof key === 'string' &&\n API.indexOf(key) < 0 &&\n !Object.getOwnPropertyDescriptor(mixin, key)!.get &&\n !Object.getOwnPropertyDescriptor(mixin, key)!.set &&\n typeof mixin[key] === 'function'));\n\n keys.forEach(key => {\n methods.set(key, mixin[key]);\n });\n });\n return methods;\n }\n\n public static mergeAccessors(mixins: MixinStaticInterface[]): AccessorStaticInterface {\n const accessors = {};\n mixins.reverse().forEach(mixin => {\n Reflect\n .ownKeys(mixin)\n .filter(key => (\n typeof key === 'string' &&\n API.indexOf(key) < 0 &&\n (Object.getOwnPropertyDescriptor(mixin, key)!.get || Object.getOwnPropertyDescriptor(mixin, key)!.set)\n ))\n .forEach(prop => {\n accessors[prop] = { ...accessors[prop] };\n if (Reflect.getOwnPropertyDescriptor(mixin, prop)!.get) accessors[prop].get = Reflect.getOwnPropertyDescriptor(mixin, prop)!.get;\n if (Reflect.getOwnPropertyDescriptor(mixin, prop)!.set) accessors[prop].set = Reflect.getOwnPropertyDescriptor(mixin, prop)!.set;\n });\n });\n return accessors;\n }\n}\n"]}
|
package/dist/libs/Sib.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
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 { ComponentFactory } from "./ComponentFactory.js";
|
|
4
|
+
import { defineComponent } from "./helpers.js";
|
|
5
|
+
export class Sib {
|
|
6
|
+
static register(componentDefinition) {
|
|
7
|
+
const component = ComponentFactory.build(componentDefinition);
|
|
8
|
+
const cls = this.toElement(component);
|
|
9
|
+
defineComponent(component.name, cls);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
static toElement(component) {
|
|
13
|
+
var _temp;
|
|
14
|
+
|
|
15
|
+
return _temp = class extends HTMLElement {
|
|
16
|
+
constructor() {
|
|
17
|
+
super();
|
|
18
|
+
|
|
19
|
+
_defineProperty(this, "_component", null);
|
|
20
|
+
|
|
21
|
+
this.component = new component(this);
|
|
22
|
+
this.component.created();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
get component() {
|
|
26
|
+
if (this._component === null) {
|
|
27
|
+
throw new Error('No component found');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return this._component;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
set component(component) {
|
|
34
|
+
this._component = component;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static get observedAttributes() {
|
|
38
|
+
return component.observedAttributes;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
42
|
+
const attr = name.replace(/([a-z0-9])-([a-z0-9])/g, (_c, p1, p2) => "".concat(p1).concat(p2.toUpperCase()));
|
|
43
|
+
this.component.attributesCallback(attr, newValue, oldValue);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
connectedCallback() {
|
|
47
|
+
this.component.attached();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
disconnectedCallback() {
|
|
51
|
+
this.component.detached();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
}, _temp;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=Sib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Sib.ts"],"names":["ComponentFactory","defineComponent","Sib","register","componentDefinition","component","build","cls","toElement","name","HTMLElement","constructor","created","_component","Error","observedAttributes","attributeChangedCallback","oldValue","newValue","attr","replace","_c","p1","p2","toUpperCase","attributesCallback","connectedCallback","attached","disconnectedCallback","detached"],"mappings":";;AAAA,SAASA,gBAAT,QAAiC,uBAAjC;AACA,SAASC,eAAT,QAAgC,cAAhC;AAOA,OAAO,MAAMC,GAAN,CAAU;AACb,SAAcC,QAAd,CAAuBC,mBAAvB,EAAuE;AACnE,UAAMC,SAAS,GAAGL,gBAAgB,CAACM,KAAjB,CAAuBF,mBAAvB,CAAlB;AACA,UAAMG,GAAG,GAAG,KAAKC,SAAL,CAAeH,SAAf,CAAZ;AACAJ,IAAAA,eAAe,CAACI,SAAS,CAACI,IAAX,EAAiBF,GAAjB,CAAf;AACH;;AAED,SAAiBC,SAAjB,CAA2BH,SAA3B,EAAyF;AAAA;;AACrF,mBAAO,cAAcK,WAAd,CAA0B;AAG7BC,MAAAA,WAAW,GAAG;AACV;;AADU,4CAFkC,IAElC;;AAEV,aAAKN,SAAL,GAAiB,IAAIA,SAAJ,CAAc,IAAd,CAAjB;AACA,aAAKA,SAAL,CAAeO,OAAf;AACH;;AAED,UAAIP,SAAJ,GAAoC;AAChC,YAAI,KAAKQ,UAAL,KAAoB,IAAxB,EAA8B;AAC1B,gBAAM,IAAIC,KAAJ,CAAU,oBAAV,CAAN;AACH;;AACD,eAAO,KAAKD,UAAZ;AACH;;AACD,UAAIR,SAAJ,CAAcA,SAAd,EAA6C;AACzC,aAAKQ,UAAL,GAAkBR,SAAlB;AACH;;AAED,iBAAWU,kBAAX,GAAgC;AAC5B,eAAaV,SAAN,CAAiBU,kBAAxB;AACH;;AAEDC,MAAAA,wBAAwB,CAACP,IAAD,EAAOQ,QAAP,EAAiBC,QAAjB,EAA2B;AAC/C,cAAMC,IAAI,GAAGV,IAAI,CAACW,OAAL,CAAa,wBAAb,EAAuC,CAACC,EAAD,EAAKC,EAAL,EAASC,EAAT,eAAmBD,EAAnB,SAAwBC,EAAE,CAACC,WAAH,EAAxB,CAAvC,CAAb;AACA,aAAKnB,SAAL,CAAeoB,kBAAf,CAAkCN,IAAlC,EAAwCD,QAAxC,EAAkDD,QAAlD;AACH;;AAEDS,MAAAA,iBAAiB,GAAG;AAChB,aAAKrB,SAAL,CAAesB,QAAf;AACH;;AAEDC,MAAAA,oBAAoB,GAAG;AACnB,aAAKvB,SAAL,CAAewB,QAAf;AACH;;AAlC4B,KAAjC;AAoCH;;AA5CY","sourcesContent":["import { ComponentFactory } from \"./ComponentFactory.js\";\nimport { defineComponent } from \"./helpers.js\";\nimport type {\n ComponentConstructorInterface,\n ComponentInterface,\n MixinStaticInterface\n} from \"./interfaces.js\";\n\nexport class Sib {\n public static register(componentDefinition: MixinStaticInterface):void {\n const component = ComponentFactory.build(componentDefinition);\n const cls = this.toElement(component);\n defineComponent(component.name, cls);\n }\n\n protected static toElement(component: ComponentConstructorInterface): typeof HTMLElement {\n return class extends HTMLElement {\n private _component: ComponentInterface | null = null;\n\n constructor() {\n super();\n this.component = new component(this);\n this.component.created();\n }\n\n get component(): ComponentInterface {\n if (this._component === null) {\n throw new Error('No component found');\n }\n return this._component;\n }\n set component(component: ComponentInterface) {\n this._component = component;\n }\n\n static get observedAttributes() {\n return (<any>component).observedAttributes;\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n const attr = name.replace(/([a-z0-9])-([a-z0-9])/g, (_c, p1, p2) => `${p1}${p2.toUpperCase()}`);\n this.component.attributesCallback(attr, newValue, oldValue);\n }\n\n connectedCallback() {\n this.component.attached();\n }\n\n disconnectedCallback() {\n this.component.detached();\n }\n }\n }\n}\n"]}
|