@startinblox/core 0.17.21-beta.1 → 0.17.21-beta.10

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.
Files changed (260) hide show
  1. package/dist/_snowpack/env.js +3 -0
  2. package/dist/_snowpack/pkg/autolinker.js +4281 -0
  3. package/dist/_snowpack/pkg/autolinker.js.map +1 -0
  4. package/dist/_snowpack/pkg/autolinker.js.map.proxy.js +1 -0
  5. package/dist/_snowpack/pkg/common/_baseUnary-217dffb2.js +377 -0
  6. package/dist/_snowpack/pkg/common/_baseUnary-217dffb2.js.map +1 -0
  7. package/dist/_snowpack/pkg/common/_baseUnary-217dffb2.js.map.proxy.js +1 -0
  8. package/dist/_snowpack/pkg/common/_commonjsHelpers-8c19dec8.js +22 -0
  9. package/dist/_snowpack/pkg/common/_commonjsHelpers-8c19dec8.js.map +1 -0
  10. package/dist/_snowpack/pkg/common/_commonjsHelpers-8c19dec8.js.map.proxy.js +1 -0
  11. package/dist/_snowpack/pkg/common/decode-a4c334cf.js +216 -0
  12. package/dist/_snowpack/pkg/common/decode-a4c334cf.js.map +1 -0
  13. package/dist/_snowpack/pkg/common/decode-a4c334cf.js.map.proxy.js +1 -0
  14. package/dist/_snowpack/pkg/common/lit-html-babd44cd.js +1119 -0
  15. package/dist/_snowpack/pkg/common/lit-html-babd44cd.js.map +1 -0
  16. package/dist/_snowpack/pkg/common/lit-html-babd44cd.js.map.proxy.js +1 -0
  17. package/dist/_snowpack/pkg/delta-markdown-for-quill.js +25677 -0
  18. package/dist/_snowpack/pkg/delta-markdown-for-quill.js.map +1 -0
  19. package/dist/_snowpack/pkg/delta-markdown-for-quill.js.map.proxy.js +1 -0
  20. package/dist/_snowpack/pkg/dialog-polyfill.js +859 -0
  21. package/dist/_snowpack/pkg/dialog-polyfill.js.map +1 -0
  22. package/dist/_snowpack/pkg/dialog-polyfill.js.map.proxy.js +1 -0
  23. package/dist/_snowpack/pkg/fusejs.js +1783 -0
  24. package/dist/_snowpack/pkg/fusejs.js.map +1 -0
  25. package/dist/_snowpack/pkg/fusejs.js.map.proxy.js +1 -0
  26. package/dist/_snowpack/pkg/import-map.json +23 -0
  27. package/dist/_snowpack/pkg/jsonld-context-parser.js +804 -0
  28. package/dist/_snowpack/pkg/jsonld-context-parser.js.map +1 -0
  29. package/dist/_snowpack/pkg/jsonld-context-parser.js.map.proxy.js +1 -0
  30. package/dist/_snowpack/pkg/leaflet/dist/leaflet.css +640 -0
  31. package/dist/_snowpack/pkg/leaflet/dist/leaflet.css.proxy.js +10 -0
  32. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.Default.css +60 -0
  33. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.Default.css.proxy.js +10 -0
  34. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.css +14 -0
  35. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.css.proxy.js +10 -0
  36. package/dist/_snowpack/pkg/lit-html/directives/if-defined.js +40 -0
  37. package/dist/_snowpack/pkg/lit-html/directives/if-defined.js.map +1 -0
  38. package/dist/_snowpack/pkg/lit-html/directives/if-defined.js.map.proxy.js +1 -0
  39. package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js +46 -0
  40. package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js.map +1 -0
  41. package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js.map.proxy.js +1 -0
  42. package/dist/_snowpack/pkg/lit-html/directives/until.js +88 -0
  43. package/dist/_snowpack/pkg/lit-html/directives/until.js.map +1 -0
  44. package/dist/_snowpack/pkg/lit-html/directives/until.js.map.proxy.js +1 -0
  45. package/dist/_snowpack/pkg/lit-html.js +92 -0
  46. package/dist/_snowpack/pkg/lit-html.js.map +1 -0
  47. package/dist/_snowpack/pkg/lit-html.js.map.proxy.js +1 -0
  48. package/dist/_snowpack/pkg/markdown-it.js +11860 -0
  49. package/dist/_snowpack/pkg/markdown-it.js.map +1 -0
  50. package/dist/_snowpack/pkg/markdown-it.js.map.proxy.js +1 -0
  51. package/dist/_snowpack/pkg/quill/dist/quill.snow.css +945 -0
  52. package/dist/_snowpack/pkg/quill/dist/quill.snow.css.proxy.js +10 -0
  53. package/dist/_snowpack/pkg/quill-delta-to-markdown.js +1029 -0
  54. package/dist/_snowpack/pkg/quill-delta-to-markdown.js.map +1 -0
  55. package/dist/_snowpack/pkg/quill-delta-to-markdown.js.map.proxy.js +1 -0
  56. package/dist/_snowpack/pkg/quill.js +13382 -0
  57. package/dist/_snowpack/pkg/quill.js.map +1 -0
  58. package/dist/_snowpack/pkg/quill.js.map.proxy.js +1 -0
  59. package/dist/_snowpack/pkg/slim-select.js +4 -0
  60. package/dist/_snowpack/pkg/slim-select.js.map +1 -0
  61. package/dist/_snowpack/pkg/slim-select.js.map.proxy.js +1 -0
  62. package/dist/_snowpack/pkg/tui-calendar/dist/tui-calendar.css +1164 -0
  63. package/dist/_snowpack/pkg/tui-calendar/dist/tui-calendar.css.proxy.js +10 -0
  64. package/dist/_snowpack/pkg/tui-calendar.js +42285 -0
  65. package/dist/_snowpack/pkg/tui-calendar.js.map +1 -0
  66. package/dist/_snowpack/pkg/tui-calendar.js.map.proxy.js +1 -0
  67. package/dist/components/solid-ac-checker.js +51 -0
  68. package/dist/components/solid-ac-checker.js.map +1 -0
  69. package/dist/components/solid-calendar.js +87 -0
  70. package/dist/components/solid-calendar.js.map +1 -0
  71. package/dist/components/solid-delete.js +111 -0
  72. package/dist/components/solid-delete.js.map +1 -0
  73. package/dist/components/solid-display.js +194 -0
  74. package/dist/components/solid-display.js.map +1 -0
  75. package/dist/components/solid-form-search.js +226 -0
  76. package/dist/components/solid-form-search.js.map +1 -0
  77. package/dist/components/solid-form.js +354 -0
  78. package/dist/components/solid-form.js.map +1 -0
  79. package/dist/components/solid-lang.js +46 -0
  80. package/dist/components/solid-lang.js.map +1 -0
  81. package/dist/components/solid-map.js +242 -0
  82. package/dist/components/solid-map.js.map +1 -0
  83. package/dist/components/solid-table.js +263 -0
  84. package/dist/components/solid-table.js.map +1 -0
  85. package/dist/components/solid-widget.js +94 -0
  86. package/dist/components/solid-widget.js.map +1 -0
  87. package/dist/import.css +4 -0
  88. package/dist/index.js +43 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/libs/Component.js +19 -0
  91. package/dist/libs/Component.js.map +1 -0
  92. package/dist/libs/ComponentFactory.js +196 -0
  93. package/dist/libs/ComponentFactory.js.map +1 -0
  94. package/dist/libs/Compositor.js +103 -0
  95. package/dist/libs/Compositor.js.map +1 -0
  96. package/dist/libs/Sib.js +58 -0
  97. package/dist/libs/Sib.js.map +1 -0
  98. package/dist/libs/filter.js +214 -0
  99. package/dist/libs/filter.js.map +1 -0
  100. package/dist/libs/helpers.js +219 -0
  101. package/dist/libs/helpers.js.map +1 -0
  102. package/dist/libs/interfaces.js +6 -0
  103. package/dist/libs/interfaces.js.map +1 -0
  104. package/dist/libs/lit-helpers.js +169 -0
  105. package/dist/libs/lit-helpers.js.map +1 -0
  106. package/dist/libs/polyfills.js +40 -0
  107. package/dist/libs/polyfills.js.map +1 -0
  108. package/dist/libs/store/store.js +863 -0
  109. package/dist/libs/store/store.js.map +1 -0
  110. package/dist/locales/en.json +10 -0
  111. package/dist/locales/en.json.proxy.js +2 -0
  112. package/dist/locales/fr.json +10 -0
  113. package/dist/locales/fr.json.proxy.js +2 -0
  114. package/dist/mixins/attributeBinderMixin.js +124 -0
  115. package/dist/mixins/attributeBinderMixin.js.map +1 -0
  116. package/dist/mixins/contextMixin.js +28 -0
  117. package/dist/mixins/contextMixin.js.map +1 -0
  118. package/dist/mixins/counterMixin.js +75 -0
  119. package/dist/mixins/counterMixin.js.map +1 -0
  120. package/dist/mixins/federationMixin.js +63 -0
  121. package/dist/mixins/federationMixin.js.map +1 -0
  122. package/dist/mixins/filterMixin.js +136 -0
  123. package/dist/mixins/filterMixin.js.map +1 -0
  124. package/dist/mixins/grouperMixin.js +80 -0
  125. package/dist/mixins/grouperMixin.js.map +1 -0
  126. package/dist/mixins/highlighterMixin.js +42 -0
  127. package/dist/mixins/highlighterMixin.js.map +1 -0
  128. package/dist/mixins/interfaces.js +8 -0
  129. package/dist/mixins/interfaces.js.map +1 -0
  130. package/dist/mixins/listMixin.js +136 -0
  131. package/dist/mixins/listMixin.js.map +1 -0
  132. package/dist/mixins/nextMixin.js +26 -0
  133. package/dist/mixins/nextMixin.js.map +1 -0
  134. package/dist/mixins/paginateMixin.js +110 -0
  135. package/dist/mixins/paginateMixin.js.map +1 -0
  136. package/dist/mixins/requiredMixin.js +34 -0
  137. package/dist/mixins/requiredMixin.js.map +1 -0
  138. package/dist/mixins/sorterMixin.js +149 -0
  139. package/dist/mixins/sorterMixin.js.map +1 -0
  140. package/dist/mixins/storeMixin.js +102 -0
  141. package/dist/mixins/storeMixin.js.map +1 -0
  142. package/dist/mixins/translationMixin.js +68 -0
  143. package/dist/mixins/translationMixin.js.map +1 -0
  144. package/dist/mixins/validationMixin.js +113 -0
  145. package/dist/mixins/validationMixin.js.map +1 -0
  146. package/dist/mixins/widgetMixin.js +447 -0
  147. package/dist/mixins/widgetMixin.js.map +1 -0
  148. package/dist/new-widgets/attributeMixins/actionMixin.js +14 -0
  149. package/dist/new-widgets/attributeMixins/actionMixin.js.map +1 -0
  150. package/dist/new-widgets/attributeMixins/blankMixin.js +10 -0
  151. package/dist/new-widgets/attributeMixins/blankMixin.js.map +1 -0
  152. package/dist/new-widgets/attributeMixins/booleanMixin.js +10 -0
  153. package/dist/new-widgets/attributeMixins/booleanMixin.js.map +1 -0
  154. package/dist/new-widgets/attributeMixins/index.js +20 -0
  155. package/dist/new-widgets/attributeMixins/index.js.map +1 -0
  156. package/dist/new-widgets/attributeMixins/mailtoMixin.js +10 -0
  157. package/dist/new-widgets/attributeMixins/mailtoMixin.js.map +1 -0
  158. package/dist/new-widgets/attributeMixins/multipleMixin.js +28 -0
  159. package/dist/new-widgets/attributeMixins/multipleMixin.js.map +1 -0
  160. package/dist/new-widgets/attributeMixins/numberMixin.js +10 -0
  161. package/dist/new-widgets/attributeMixins/numberMixin.js.map +1 -0
  162. package/dist/new-widgets/attributeMixins/placeholderMixin.js +19 -0
  163. package/dist/new-widgets/attributeMixins/placeholderMixin.js.map +1 -0
  164. package/dist/new-widgets/attributeMixins/telMixin.js +10 -0
  165. package/dist/new-widgets/attributeMixins/telMixin.js.map +1 -0
  166. package/dist/new-widgets/baseWidgetMixin.js +122 -0
  167. package/dist/new-widgets/baseWidgetMixin.js.map +1 -0
  168. package/dist/new-widgets/callbackMixins/autocompletionMixin.js +104 -0
  169. package/dist/new-widgets/callbackMixins/autocompletionMixin.js.map +1 -0
  170. package/dist/new-widgets/callbackMixins/index.js +8 -0
  171. package/dist/new-widgets/callbackMixins/index.js.map +1 -0
  172. package/dist/new-widgets/callbackMixins/richtextMixin.js +42 -0
  173. package/dist/new-widgets/callbackMixins/richtextMixin.js.map +1 -0
  174. package/dist/new-widgets/callbackMixins/slimselect.css +2 -0
  175. package/dist/new-widgets/callbackMixins/slimselect.css.proxy.js +10 -0
  176. package/dist/new-widgets/new-widget-factory.js +96 -0
  177. package/dist/new-widgets/new-widget-factory.js.map +1 -0
  178. package/dist/new-widgets/templateAdditionMixins/addableMixin.js +41 -0
  179. package/dist/new-widgets/templateAdditionMixins/addableMixin.js.map +1 -0
  180. package/dist/new-widgets/templateAdditionMixins/index.js +14 -0
  181. package/dist/new-widgets/templateAdditionMixins/index.js.map +1 -0
  182. package/dist/new-widgets/templateAdditionMixins/labelLastMixin.js +29 -0
  183. package/dist/new-widgets/templateAdditionMixins/labelLastMixin.js.map +1 -0
  184. package/dist/new-widgets/templateAdditionMixins/labelMixin.js +31 -0
  185. package/dist/new-widgets/templateAdditionMixins/labelMixin.js.map +1 -0
  186. package/dist/new-widgets/templates/defaultTemplatesDirectory.js +36 -0
  187. package/dist/new-widgets/templates/defaultTemplatesDirectory.js.map +1 -0
  188. package/dist/new-widgets/templates/displayTemplatesDirectory.js +90 -0
  189. package/dist/new-widgets/templates/displayTemplatesDirectory.js.map +1 -0
  190. package/dist/new-widgets/templates/formTemplatesDirectory.js +397 -0
  191. package/dist/new-widgets/templates/formTemplatesDirectory.js.map +1 -0
  192. package/dist/new-widgets/templates/groupTemplatesDirectory.js +21 -0
  193. package/dist/new-widgets/templates/groupTemplatesDirectory.js.map +1 -0
  194. package/dist/new-widgets/templates/index.js +7 -0
  195. package/dist/new-widgets/templates/index.js.map +1 -0
  196. package/dist/new-widgets/templates/setTemplatesDirectory.js +49 -0
  197. package/dist/new-widgets/templates/setTemplatesDirectory.js.map +1 -0
  198. package/dist/new-widgets/templatesDependencies/altMixin.js +13 -0
  199. package/dist/new-widgets/templatesDependencies/altMixin.js.map +1 -0
  200. package/dist/new-widgets/templatesDependencies/editableMixin.js +77 -0
  201. package/dist/new-widgets/templatesDependencies/editableMixin.js.map +1 -0
  202. package/dist/new-widgets/templatesDependencies/filterRangeFormMixin.js +38 -0
  203. package/dist/new-widgets/templatesDependencies/filterRangeFormMixin.js.map +1 -0
  204. package/dist/new-widgets/templatesDependencies/formCheckboxMixin.js +14 -0
  205. package/dist/new-widgets/templatesDependencies/formCheckboxMixin.js.map +1 -0
  206. package/dist/new-widgets/templatesDependencies/formCheckboxesMixin.js +51 -0
  207. package/dist/new-widgets/templatesDependencies/formCheckboxesMixin.js.map +1 -0
  208. package/dist/new-widgets/templatesDependencies/formDropdownMixin.js +66 -0
  209. package/dist/new-widgets/templatesDependencies/formDropdownMixin.js.map +1 -0
  210. package/dist/new-widgets/templatesDependencies/formFileMixin.js +81 -0
  211. package/dist/new-widgets/templatesDependencies/formFileMixin.js.map +1 -0
  212. package/dist/new-widgets/templatesDependencies/formLengthMixin.js +19 -0
  213. package/dist/new-widgets/templatesDependencies/formLengthMixin.js.map +1 -0
  214. package/dist/new-widgets/templatesDependencies/formMinMaxMixin.js +19 -0
  215. package/dist/new-widgets/templatesDependencies/formMinMaxMixin.js.map +1 -0
  216. package/dist/new-widgets/templatesDependencies/formMixin.js +66 -0
  217. package/dist/new-widgets/templatesDependencies/formMixin.js.map +1 -0
  218. package/dist/new-widgets/templatesDependencies/formNumberMixin.js +14 -0
  219. package/dist/new-widgets/templatesDependencies/formNumberMixin.js.map +1 -0
  220. package/dist/new-widgets/templatesDependencies/formRadioMixin.js +16 -0
  221. package/dist/new-widgets/templatesDependencies/formRadioMixin.js.map +1 -0
  222. package/dist/new-widgets/templatesDependencies/formStepMixin.js +13 -0
  223. package/dist/new-widgets/templatesDependencies/formStepMixin.js.map +1 -0
  224. package/dist/new-widgets/templatesDependencies/linkTextMixin.js +14 -0
  225. package/dist/new-widgets/templatesDependencies/linkTextMixin.js.map +1 -0
  226. package/dist/new-widgets/templatesDependencies/multipleFormMixin.js +125 -0
  227. package/dist/new-widgets/templatesDependencies/multipleFormMixin.js.map +1 -0
  228. package/dist/new-widgets/templatesDependencies/multipleselectFormMixin.js +74 -0
  229. package/dist/new-widgets/templatesDependencies/multipleselectFormMixin.js.map +1 -0
  230. package/dist/new-widgets/templatesDependencies/patternMixin.js +19 -0
  231. package/dist/new-widgets/templatesDependencies/patternMixin.js.map +1 -0
  232. package/dist/new-widgets/templatesDependencies/rangeMixin.js +110 -0
  233. package/dist/new-widgets/templatesDependencies/rangeMixin.js.map +1 -0
  234. package/dist/new-widgets/templatesDependencies/setMixin.js +12 -0
  235. package/dist/new-widgets/templatesDependencies/setMixin.js.map +1 -0
  236. package/dist/new-widgets/templatesDependencies/valueRichtextMixin.js +12 -0
  237. package/dist/new-widgets/templatesDependencies/valueRichtextMixin.js.map +1 -0
  238. package/dist/new-widgets/valueTransformationMixins/autolinkMixin.js +18 -0
  239. package/dist/new-widgets/valueTransformationMixins/autolinkMixin.js.map +1 -0
  240. package/dist/new-widgets/valueTransformationMixins/dateMixin.js +35 -0
  241. package/dist/new-widgets/valueTransformationMixins/dateMixin.js.map +1 -0
  242. package/dist/new-widgets/valueTransformationMixins/dateTimeMixin.js +16 -0
  243. package/dist/new-widgets/valueTransformationMixins/dateTimeMixin.js.map +1 -0
  244. package/dist/new-widgets/valueTransformationMixins/index.js +16 -0
  245. package/dist/new-widgets/valueTransformationMixins/index.js.map +1 -0
  246. package/dist/new-widgets/valueTransformationMixins/markdownMixin.js +25 -0
  247. package/dist/new-widgets/valueTransformationMixins/markdownMixin.js.map +1 -0
  248. package/dist/new-widgets/valueTransformationMixins/multilineMixin.js +17 -0
  249. package/dist/new-widgets/valueTransformationMixins/multilineMixin.js.map +1 -0
  250. package/dist/new-widgets/valueTransformationMixins/oembedMixin.js +27 -0
  251. package/dist/new-widgets/valueTransformationMixins/oembedMixin.js.map +1 -0
  252. package/dist/solid-template-element.js +164 -0
  253. package/dist/solid-template-element.js.map +1 -0
  254. package/dist/style/default-theme.css +24 -0
  255. package/dist/style/default-theme.css.proxy.js +10 -0
  256. package/dist/widgets/baseWidget.js +332 -0
  257. package/dist/widgets/baseWidget.js.map +1 -0
  258. package/dist/widgets/widget-factory.js +24 -0
  259. package/dist/widgets/widget-factory.js.map +1 -0
  260. 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);"]}
@@ -0,0 +1,4 @@
1
+ /* @ import 'slim-select/dist/slimselect.css'; */
2
+ @import "./_snowpack/pkg/leaflet/dist/leaflet.css";
3
+ @import "./_snowpack/pkg/quill/dist/quill.snow.css";
4
+ @import "./_snowpack/pkg/tui-calendar/dist/tui-calendar.css";
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"]}
@@ -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"]}