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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) 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 +358 -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/server-pagination.js +20 -0
  109. package/dist/libs/store/server-pagination.js.map +1 -0
  110. package/dist/libs/store/store.js +879 -0
  111. package/dist/libs/store/store.js.map +1 -0
  112. package/dist/locales/en.json +10 -0
  113. package/dist/locales/en.json.proxy.js +2 -0
  114. package/dist/locales/fr.json +10 -0
  115. package/dist/locales/fr.json.proxy.js +2 -0
  116. package/dist/mixins/attributeBinderMixin.js +126 -0
  117. package/dist/mixins/attributeBinderMixin.js.map +1 -0
  118. package/dist/mixins/contextMixin.js +28 -0
  119. package/dist/mixins/contextMixin.js.map +1 -0
  120. package/dist/mixins/counterMixin.js +75 -0
  121. package/dist/mixins/counterMixin.js.map +1 -0
  122. package/dist/mixins/federationMixin.js +65 -0
  123. package/dist/mixins/federationMixin.js.map +1 -0
  124. package/dist/mixins/filterMixin.js +136 -0
  125. package/dist/mixins/filterMixin.js.map +1 -0
  126. package/dist/mixins/grouperMixin.js +80 -0
  127. package/dist/mixins/grouperMixin.js.map +1 -0
  128. package/dist/mixins/highlighterMixin.js +42 -0
  129. package/dist/mixins/highlighterMixin.js.map +1 -0
  130. package/dist/mixins/interfaces.js +8 -0
  131. package/dist/mixins/interfaces.js.map +1 -0
  132. package/dist/mixins/listMixin.js +138 -0
  133. package/dist/mixins/listMixin.js.map +1 -0
  134. package/dist/mixins/nextMixin.js +26 -0
  135. package/dist/mixins/nextMixin.js.map +1 -0
  136. package/dist/mixins/paginateMixin.js +110 -0
  137. package/dist/mixins/paginateMixin.js.map +1 -0
  138. package/dist/mixins/requiredMixin.js +34 -0
  139. package/dist/mixins/requiredMixin.js.map +1 -0
  140. package/dist/mixins/serverPaginationMixin.js +130 -0
  141. package/dist/mixins/serverPaginationMixin.js.map +1 -0
  142. package/dist/mixins/sorterMixin.js +149 -0
  143. package/dist/mixins/sorterMixin.js.map +1 -0
  144. package/dist/mixins/storeMixin.js +111 -0
  145. package/dist/mixins/storeMixin.js.map +1 -0
  146. package/dist/mixins/translationMixin.js +68 -0
  147. package/dist/mixins/translationMixin.js.map +1 -0
  148. package/dist/mixins/validationMixin.js +113 -0
  149. package/dist/mixins/validationMixin.js.map +1 -0
  150. package/dist/mixins/widgetMixin.js +451 -0
  151. package/dist/mixins/widgetMixin.js.map +1 -0
  152. package/dist/new-widgets/attributeMixins/actionMixin.js +14 -0
  153. package/dist/new-widgets/attributeMixins/actionMixin.js.map +1 -0
  154. package/dist/new-widgets/attributeMixins/blankMixin.js +10 -0
  155. package/dist/new-widgets/attributeMixins/blankMixin.js.map +1 -0
  156. package/dist/new-widgets/attributeMixins/booleanMixin.js +10 -0
  157. package/dist/new-widgets/attributeMixins/booleanMixin.js.map +1 -0
  158. package/dist/new-widgets/attributeMixins/index.js +20 -0
  159. package/dist/new-widgets/attributeMixins/index.js.map +1 -0
  160. package/dist/new-widgets/attributeMixins/mailtoMixin.js +10 -0
  161. package/dist/new-widgets/attributeMixins/mailtoMixin.js.map +1 -0
  162. package/dist/new-widgets/attributeMixins/multipleMixin.js +28 -0
  163. package/dist/new-widgets/attributeMixins/multipleMixin.js.map +1 -0
  164. package/dist/new-widgets/attributeMixins/numberMixin.js +10 -0
  165. package/dist/new-widgets/attributeMixins/numberMixin.js.map +1 -0
  166. package/dist/new-widgets/attributeMixins/placeholderMixin.js +19 -0
  167. package/dist/new-widgets/attributeMixins/placeholderMixin.js.map +1 -0
  168. package/dist/new-widgets/attributeMixins/telMixin.js +10 -0
  169. package/dist/new-widgets/attributeMixins/telMixin.js.map +1 -0
  170. package/dist/new-widgets/baseWidgetMixin.js +122 -0
  171. package/dist/new-widgets/baseWidgetMixin.js.map +1 -0
  172. package/dist/new-widgets/callbackMixins/autocompletionMixin.js +104 -0
  173. package/dist/new-widgets/callbackMixins/autocompletionMixin.js.map +1 -0
  174. package/dist/new-widgets/callbackMixins/index.js +8 -0
  175. package/dist/new-widgets/callbackMixins/index.js.map +1 -0
  176. package/dist/new-widgets/callbackMixins/richtextMixin.js +42 -0
  177. package/dist/new-widgets/callbackMixins/richtextMixin.js.map +1 -0
  178. package/dist/new-widgets/callbackMixins/slimselect.css +2 -0
  179. package/dist/new-widgets/callbackMixins/slimselect.css.proxy.js +10 -0
  180. package/dist/new-widgets/new-widget-factory.js +96 -0
  181. package/dist/new-widgets/new-widget-factory.js.map +1 -0
  182. package/dist/new-widgets/templateAdditionMixins/addableMixin.js +41 -0
  183. package/dist/new-widgets/templateAdditionMixins/addableMixin.js.map +1 -0
  184. package/dist/new-widgets/templateAdditionMixins/index.js +14 -0
  185. package/dist/new-widgets/templateAdditionMixins/index.js.map +1 -0
  186. package/dist/new-widgets/templateAdditionMixins/labelLastMixin.js +29 -0
  187. package/dist/new-widgets/templateAdditionMixins/labelLastMixin.js.map +1 -0
  188. package/dist/new-widgets/templateAdditionMixins/labelMixin.js +31 -0
  189. package/dist/new-widgets/templateAdditionMixins/labelMixin.js.map +1 -0
  190. package/dist/new-widgets/templates/defaultTemplatesDirectory.js +36 -0
  191. package/dist/new-widgets/templates/defaultTemplatesDirectory.js.map +1 -0
  192. package/dist/new-widgets/templates/displayTemplatesDirectory.js +90 -0
  193. package/dist/new-widgets/templates/displayTemplatesDirectory.js.map +1 -0
  194. package/dist/new-widgets/templates/formTemplatesDirectory.js +397 -0
  195. package/dist/new-widgets/templates/formTemplatesDirectory.js.map +1 -0
  196. package/dist/new-widgets/templates/groupTemplatesDirectory.js +21 -0
  197. package/dist/new-widgets/templates/groupTemplatesDirectory.js.map +1 -0
  198. package/dist/new-widgets/templates/index.js +7 -0
  199. package/dist/new-widgets/templates/index.js.map +1 -0
  200. package/dist/new-widgets/templates/setTemplatesDirectory.js +49 -0
  201. package/dist/new-widgets/templates/setTemplatesDirectory.js.map +1 -0
  202. package/dist/new-widgets/templatesDependencies/altMixin.js +13 -0
  203. package/dist/new-widgets/templatesDependencies/altMixin.js.map +1 -0
  204. package/dist/new-widgets/templatesDependencies/editableMixin.js +77 -0
  205. package/dist/new-widgets/templatesDependencies/editableMixin.js.map +1 -0
  206. package/dist/new-widgets/templatesDependencies/filterRangeFormMixin.js +38 -0
  207. package/dist/new-widgets/templatesDependencies/filterRangeFormMixin.js.map +1 -0
  208. package/dist/new-widgets/templatesDependencies/formCheckboxMixin.js +14 -0
  209. package/dist/new-widgets/templatesDependencies/formCheckboxMixin.js.map +1 -0
  210. package/dist/new-widgets/templatesDependencies/formCheckboxesMixin.js +51 -0
  211. package/dist/new-widgets/templatesDependencies/formCheckboxesMixin.js.map +1 -0
  212. package/dist/new-widgets/templatesDependencies/formDropdownMixin.js +66 -0
  213. package/dist/new-widgets/templatesDependencies/formDropdownMixin.js.map +1 -0
  214. package/dist/new-widgets/templatesDependencies/formFileMixin.js +81 -0
  215. package/dist/new-widgets/templatesDependencies/formFileMixin.js.map +1 -0
  216. package/dist/new-widgets/templatesDependencies/formLengthMixin.js +19 -0
  217. package/dist/new-widgets/templatesDependencies/formLengthMixin.js.map +1 -0
  218. package/dist/new-widgets/templatesDependencies/formMinMaxMixin.js +19 -0
  219. package/dist/new-widgets/templatesDependencies/formMinMaxMixin.js.map +1 -0
  220. package/dist/new-widgets/templatesDependencies/formMixin.js +66 -0
  221. package/dist/new-widgets/templatesDependencies/formMixin.js.map +1 -0
  222. package/dist/new-widgets/templatesDependencies/formNumberMixin.js +14 -0
  223. package/dist/new-widgets/templatesDependencies/formNumberMixin.js.map +1 -0
  224. package/dist/new-widgets/templatesDependencies/formRadioMixin.js +16 -0
  225. package/dist/new-widgets/templatesDependencies/formRadioMixin.js.map +1 -0
  226. package/dist/new-widgets/templatesDependencies/formStepMixin.js +13 -0
  227. package/dist/new-widgets/templatesDependencies/formStepMixin.js.map +1 -0
  228. package/dist/new-widgets/templatesDependencies/linkTextMixin.js +14 -0
  229. package/dist/new-widgets/templatesDependencies/linkTextMixin.js.map +1 -0
  230. package/dist/new-widgets/templatesDependencies/multipleFormMixin.js +125 -0
  231. package/dist/new-widgets/templatesDependencies/multipleFormMixin.js.map +1 -0
  232. package/dist/new-widgets/templatesDependencies/multipleselectFormMixin.js +74 -0
  233. package/dist/new-widgets/templatesDependencies/multipleselectFormMixin.js.map +1 -0
  234. package/dist/new-widgets/templatesDependencies/patternMixin.js +19 -0
  235. package/dist/new-widgets/templatesDependencies/patternMixin.js.map +1 -0
  236. package/dist/new-widgets/templatesDependencies/rangeMixin.js +110 -0
  237. package/dist/new-widgets/templatesDependencies/rangeMixin.js.map +1 -0
  238. package/dist/new-widgets/templatesDependencies/setMixin.js +12 -0
  239. package/dist/new-widgets/templatesDependencies/setMixin.js.map +1 -0
  240. package/dist/new-widgets/templatesDependencies/valueRichtextMixin.js +12 -0
  241. package/dist/new-widgets/templatesDependencies/valueRichtextMixin.js.map +1 -0
  242. package/dist/new-widgets/valueTransformationMixins/autolinkMixin.js +18 -0
  243. package/dist/new-widgets/valueTransformationMixins/autolinkMixin.js.map +1 -0
  244. package/dist/new-widgets/valueTransformationMixins/dateMixin.js +35 -0
  245. package/dist/new-widgets/valueTransformationMixins/dateMixin.js.map +1 -0
  246. package/dist/new-widgets/valueTransformationMixins/dateTimeMixin.js +16 -0
  247. package/dist/new-widgets/valueTransformationMixins/dateTimeMixin.js.map +1 -0
  248. package/dist/new-widgets/valueTransformationMixins/index.js +16 -0
  249. package/dist/new-widgets/valueTransformationMixins/index.js.map +1 -0
  250. package/dist/new-widgets/valueTransformationMixins/markdownMixin.js +25 -0
  251. package/dist/new-widgets/valueTransformationMixins/markdownMixin.js.map +1 -0
  252. package/dist/new-widgets/valueTransformationMixins/multilineMixin.js +17 -0
  253. package/dist/new-widgets/valueTransformationMixins/multilineMixin.js.map +1 -0
  254. package/dist/new-widgets/valueTransformationMixins/oembedMixin.js +27 -0
  255. package/dist/new-widgets/valueTransformationMixins/oembedMixin.js.map +1 -0
  256. package/dist/solid-template-element.js +164 -0
  257. package/dist/solid-template-element.js.map +1 -0
  258. package/dist/style/default-theme.css +24 -0
  259. package/dist/style/default-theme.css.proxy.js +10 -0
  260. package/dist/widgets/baseWidget.js +334 -0
  261. package/dist/widgets/baseWidget.js.map +1 -0
  262. package/dist/widgets/widget-factory.js +24 -0
  263. package/dist/widgets/widget-factory.js.map +1 -0
  264. package/package.json +1 -1
@@ -0,0 +1,451 @@
1
+ function _templateObject6() {
2
+ const data = _taggedTemplateLiteral(["\n <span>", "</span>\n "]);
3
+
4
+ _templateObject6 = function () {
5
+ return data;
6
+ };
7
+
8
+ return data;
9
+ }
10
+
11
+ function _templateObject5() {
12
+ const data = _taggedTemplateLiteral(["", ""]);
13
+
14
+ _templateObject5 = function () {
15
+ return data;
16
+ };
17
+
18
+ return data;
19
+ }
20
+
21
+ function _templateObject4() {
22
+ const data = _taggedTemplateLiteral(["<", " ...=", "></", ">"]);
23
+
24
+ _templateObject4 = function () {
25
+ return data;
26
+ };
27
+
28
+ return data;
29
+ }
30
+
31
+ function _templateObject3() {
32
+ const data = _taggedTemplateLiteral(["<", " ...=", "></", ">"]);
33
+
34
+ _templateObject3 = function () {
35
+ return data;
36
+ };
37
+
38
+ return data;
39
+ }
40
+
41
+ function _templateObject2() {
42
+ const data = _taggedTemplateLiteral(["\n <", "\n name=\"", "\"\n class=\"", "\"\n >", "</", ">\n "]);
43
+
44
+ _templateObject2 = function () {
45
+ return data;
46
+ };
47
+
48
+ return data;
49
+ }
50
+
51
+ function _templateObject() {
52
+ const data = _taggedTemplateLiteral([""]);
53
+
54
+ _templateObject = function () {
55
+ return data;
56
+ };
57
+
58
+ return data;
59
+ }
60
+
61
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
62
+
63
+ import { spread, preHTML } from '../libs/lit-helpers.js';
64
+ import { parseFieldsString, findClosingBracketMatchIndex } from '../libs/helpers.js';
65
+ import { newWidgetFactory } from '../new-widgets/new-widget-factory.js';
66
+ import { WidgetType } from './interfaces.js';
67
+ import { html, render } from '../_snowpack/pkg/lit-html.js';
68
+ import { ifDefined } from '../_snowpack/pkg/lit-html/directives/if-defined.js';
69
+ const WidgetMixin = {
70
+ name: 'widget-mixin',
71
+ use: [],
72
+ attributes: {
73
+ fields: {
74
+ type: String,
75
+ default: undefined
76
+ }
77
+ },
78
+ initialState: {
79
+ nameWidgets: null,
80
+ _div: null
81
+ },
82
+
83
+ created() {
84
+ this.nameWidgets = [];
85
+ },
86
+
87
+ attached() {
88
+ if (!this.dataSrc && !this.resource && this.noRender === null) this.populate();
89
+ },
90
+
91
+ get parentElement() {
92
+ return 'div';
93
+ },
94
+
95
+ get div() {
96
+ if (this._div) return this._div;
97
+ this._div = document.createElement(this.parentElement);
98
+ this.element.appendChild(this._div);
99
+ return this._div;
100
+ },
101
+
102
+ set div(value) {
103
+ this._div = value;
104
+ },
105
+
106
+ get widgets() {
107
+ return this.nameWidgets.map(name => this.element.querySelector("[name=\"".concat(name, "\"]")));
108
+ },
109
+
110
+ /**
111
+ * Return field list of the component
112
+ */
113
+ async getFields() {
114
+ var _resource$isContainer, _resource;
115
+
116
+ // TODO : improve code
117
+ const attr = this.fields;
118
+ if (attr === '') return [];
119
+ if (attr) return parseFieldsString(attr);
120
+ let resource = this.resource;
121
+
122
+ if (resource && (_resource$isContainer = (_resource = resource).isContainer) !== null && _resource$isContainer !== void 0 && _resource$isContainer.call(_resource)) {
123
+ // If container, keep the 1rst resource
124
+ for (let res of resource['ldp:contains']) {
125
+ resource = res;
126
+ break;
127
+ }
128
+ }
129
+
130
+ if (!this.dataSrc) console.error(new Error('You must provide a "fields" attribute'));
131
+ if (!resource) return [];
132
+ let fields = [];
133
+
134
+ for (const prop of resource.properties) {
135
+ if (!prop.startsWith('@') && !(prop === "permissions") && (await resource[prop])) fields.push(prop);
136
+ }
137
+
138
+ return fields;
139
+ },
140
+
141
+ /**
142
+ * return attribute if "field" is an action
143
+ * @param field - string
144
+ */
145
+ getAction(field) {
146
+ const action = this.element.getAttribute('action-' + field);
147
+ return action;
148
+ },
149
+
150
+ /**
151
+ * return true if "field" is editable
152
+ * @param field - string
153
+ */
154
+ editable(field) {
155
+ return this.element.hasAttribute('editable-' + field);
156
+ },
157
+
158
+ /**
159
+ * Return regexp to check if "field" is a set
160
+ * @param field - string
161
+ */
162
+ getSetRegexp(field) {
163
+ return new RegExp("(^|\\,|\\(|\\s)\\s*".concat(field, "\\s*\\("), 'g');
164
+ },
165
+
166
+ /**
167
+ * Return fields contained in set "field"
168
+ * @param field - string
169
+ */
170
+ getSet(field) {
171
+ const setString = this.fields.match(this.getSetRegexp(field));
172
+ if (!setString) return [];
173
+ const firstSetBracket = this.fields.indexOf(setString[0]) + setString[0].length - 1;
174
+ const lastSetBracket = findClosingBracketMatchIndex(this.fields, firstSetBracket);
175
+ const set = this.fields.substring(firstSetBracket + 1, lastSetBracket);
176
+ return parseFieldsString(set);
177
+ },
178
+
179
+ /**
180
+ * Return true if "field" is a set
181
+ * @param field - string
182
+ */
183
+ isSet(field) {
184
+ if (!this.fields) return false;
185
+ let foundSets = this.fields.match(this.getSetRegexp(field));
186
+ return foundSets ? foundSets.length > 0 : false;
187
+ },
188
+
189
+ isString(field) {
190
+ return field.startsWith('\'') || field.startsWith('\"');
191
+ },
192
+
193
+ /**
194
+ * Return the value of "resource" for predicate "field"
195
+ * @param field - string
196
+ * @param resource - Resource
197
+ */
198
+ async fetchValue(field, resource) {
199
+ var _resource$isContainer2;
200
+
201
+ return resource && !((_resource$isContainer2 = resource.isContainer) !== null && _resource$isContainer2 !== void 0 && _resource$isContainer2.call(resource)) ? await resource[field] : undefined;
202
+ },
203
+
204
+ /**
205
+ * Return the value of the field
206
+ * @param field - field
207
+ */
208
+ async getValue(field, resource) {
209
+ const escapedField = this.getEscapedField(field);
210
+
211
+ if (this.getAction(escapedField)) {
212
+ return this.getAction(escapedField);
213
+ }
214
+
215
+ if (this.element.hasAttribute('value-' + field)) {
216
+ return this.element.getAttribute('value-' + field);
217
+ }
218
+
219
+ let resourceValue = await this.fetchValue(field, resource); // Empty value
220
+
221
+ if (resourceValue === undefined || resourceValue === '' || resourceValue === null) // If null or empty, return field default value
222
+ return this.element.hasAttribute('default-' + field) ? this.element.getAttribute('default-' + field) : '';
223
+ return resourceValue;
224
+ },
225
+
226
+ empty() {},
227
+
228
+ /**
229
+ * Return a widget from a tagName, and create it if necessary
230
+ * @param tagName - string
231
+ */
232
+ widgetFromTagName(tagName) {
233
+ let type = tagName.startsWith('solid') ? WidgetType.CUSTOM : WidgetType.USER;
234
+
235
+ if (!customElements.get(tagName)) {
236
+ // component does not exist
237
+ if (tagName.startsWith('solid')) newWidgetFactory(tagName); // solid- -> create it
238
+ else type = WidgetType.NATIVE; // or use a native tag
239
+ }
240
+
241
+ return {
242
+ tagName,
243
+ type
244
+ }; // return tagName
245
+ },
246
+
247
+ /**
248
+ * Return widget for field "field"
249
+ * @param field - string
250
+ * @param isSet - boolean
251
+ */
252
+ getWidget(field, isSet = false) {
253
+ const widget = this.element.getAttribute('widget-' + field);
254
+ if (widget) return this.widgetFromTagName(widget);
255
+ if (this.getAction(field)) return this.widgetFromTagName('solid-action');
256
+ return !isSet ? this.widgetFromTagName(this.defaultWidget) : this.widgetFromTagName(this.defaultSetWidget);
257
+ },
258
+
259
+ /**
260
+ * Return multiple widget if "field" is a multiple, false if it's not
261
+ * @param field - string
262
+ */
263
+ multiple(field) {
264
+ const attribute = 'multiple-' + field;
265
+ if (!this.element.hasAttribute(attribute)) return null;
266
+ const widget = this.element.getAttribute(attribute) || this.defaultMultipleWidget;
267
+ return this.widgetFromTagName(widget);
268
+ },
269
+
270
+ /**
271
+ * If attribute "lookForAttr" is set on element, add "attrKey" to the "attributes" list
272
+ * @param lookForAttr - string
273
+ * @param setAttrKey - string
274
+ * @param attributes - object
275
+ */
276
+ addToAttributes(lookForAttr, setAttrKey, attributes) {
277
+ const attribute = this.element.getAttribute(lookForAttr);
278
+ if (attribute == null) return;
279
+ attributes[setAttrKey] = attribute;
280
+ },
281
+
282
+ /**
283
+ * Return all the attributes of widget "field"
284
+ * @param field - string
285
+ * @param resource - Resource
286
+ */
287
+ widgetAttributes(field, resource) {
288
+ const attrs = {
289
+ name: field
290
+ };
291
+ const escapedField = this.getEscapedField(field); // transfer all multiple-[field]-[attr] attributes as [attr] for multiple widget [field]
292
+
293
+ const multipleAttributes = ['fields', 'label', 'widget', 'add-label', 'remove-label', 'next', 'empty-widget', 'add-class', 'remove-class'];
294
+
295
+ for (let attr of multipleAttributes) this.addToAttributes("multiple-".concat(escapedField, "-").concat(attr), attr, attrs); // transfer all [attr]-[field] attributes as [attr] attribute for widget [field]
296
+
297
+
298
+ const defaultAttributes = ['range', 'enum', 'label', 'placeholder', 'class',,
299
+ /* 'widget', */
300
+ 'required', 'editable', 'autocomplete', 'upload-url', 'option-label', 'option-value', 'order-by', // deprecated. Remove in 0.15
301
+ 'each-label', 'order-asc', 'order-desc', 'min', 'max', 'pattern', 'title', 'start-value', 'end-value', 'alt', 'step', 'maxlength', 'minlength', 'search-text', 'search-placeholder', 'link-text'];
302
+
303
+ for (let attr of defaultAttributes) this.addToAttributes("".concat(attr, "-").concat(escapedField), attr, attrs);
304
+
305
+ const addableAttributes = Array.from(this.element.attributes).filter(a => a.name.startsWith("addable-".concat(escapedField)));
306
+
307
+ for (let attr of addableAttributes) this.addToAttributes(attr.name, attr.name.replace("addable-".concat(escapedField), 'addable'), attrs);
308
+
309
+ const resourceId = resource ? resource['@id'] : null;
310
+ if (this.multiple(escapedField)) attrs['widget'] = this.getWidget(escapedField).tagName;
311
+ if (this.getAction(escapedField) && resourceId) attrs['src'] = this.element.getAttribute('src-' + escapedField) || resourceId;
312
+ if (this.editable(escapedField) && resourceId) attrs['value-id'] = resourceId;
313
+ return attrs;
314
+ },
315
+
316
+ /**
317
+ * Creates and return a widget for field + add it to the widget list
318
+ * @param field - string
319
+ */
320
+ async createWidgetTemplate(field, resource = null, transformAttributes = false) {
321
+ if (this.isString(field)) return this.createString(field); // field is a static string
322
+
323
+ if (this.isSet(field)) return await this.createSet(field);
324
+ const currentResource = resource || this.resource;
325
+ let attributes = this.widgetAttributes(field, currentResource);
326
+ const escapedField = this.getEscapedField(field);
327
+ const widgetMeta = this.multiple(escapedField) || this.getWidget(escapedField);
328
+ let tagName = widgetMeta.tagName;
329
+ let widgetTemplate = html(_templateObject()); // Set attributes
330
+
331
+ let value = await this.getValue(field, currentResource);
332
+
333
+ if (widgetMeta.type === WidgetType.NATIVE) {
334
+ // native widget (ie: h1)
335
+ widgetTemplate = preHTML(_templateObject2(), tagName, ifDefined(attributes.name), ifDefined(attributes.class), value, tagName);
336
+ } else {
337
+ // custom widget (ie: solid-display-value)
338
+ // Check if value is defined, and if the default widget is needed
339
+ if ((value === null || value === '') && this.element.hasAttribute('default-widget-' + field)) {
340
+ tagName = this.element.getAttribute('default-widget-' + field);
341
+ } // Set attributes to the widget
342
+ // setAttribute set a string. Make sure null values are empty
343
+
344
+
345
+ if (value === null || value === undefined) attributes.value = '';
346
+
347
+ if (widgetMeta.type === WidgetType.USER && value['@id']) {
348
+ // if value is a resource and solid-widget used, set data-src
349
+ attributes['data-src'] = value['@id'];
350
+ } else {
351
+ // otherwise, set value attribute
352
+ attributes['value'] = value;
353
+ } // Subscribe widgets if they show a resource
354
+
355
+
356
+ if (value && value['@id']) attributes['auto-subscribe'] = value['@id']; // Transform store://XXX attributes
357
+
358
+ if (transformAttributes) attributes = await this.transformAttributes(attributes, currentResource);
359
+ widgetTemplate = preHTML(_templateObject3(), tagName, spread(attributes), tagName);
360
+ }
361
+
362
+ this.nameWidgets.push(field);
363
+ return widgetTemplate;
364
+ },
365
+
366
+ defineAttribute(widget, attribute, value) {
367
+ if (widget.getAttribute(attribute) !== value) {
368
+ // if attribute is different than previous one
369
+ widget.setAttribute(attribute, value); // set it
370
+ }
371
+ },
372
+
373
+ /**
374
+ * Create a set and add fields to it
375
+ * @param field - string
376
+ */
377
+ async createSet(field) {
378
+ const setWidget = this.getWidget(field, true); // Get set attributes
379
+
380
+ const attrs = {
381
+ name: field
382
+ };
383
+ const setAttributes = ['class', 'label'];
384
+
385
+ for (let attr of setAttributes) this.addToAttributes("".concat(attr, "-").concat(field), attr, attrs); // Create widget if not already existing
386
+
387
+
388
+ let widget = this.element.querySelector("".concat(setWidget.tagName, "[name=\"").concat(field, "\"]"));
389
+ let initializing = false; // used to render widget only first time
390
+
391
+ if (!widget) {
392
+ widget = document.createElement(setWidget.tagName);
393
+ initializing = true;
394
+ }
395
+
396
+ for (let name of Object.keys(attrs)) {
397
+ this.defineAttribute(widget, name, attrs[name], setWidget.type);
398
+ }
399
+
400
+ if (widget.component && initializing) widget.component.render();
401
+ let setFields = this.getSet(field); // Catch widget for the set if all these fields are empty
402
+
403
+ if (this.element.hasAttribute('empty-' + field)) {
404
+ let hasOnlyEmpty = true;
405
+
406
+ for (let field of setFields) {
407
+ let value = await this.getValue(field, this.resource);
408
+
409
+ if (value !== '') {
410
+ // if one not empty
411
+ hasOnlyEmpty = false;
412
+ continue; // break loop
413
+ }
414
+ }
415
+
416
+ ;
417
+
418
+ if (hasOnlyEmpty) {
419
+ // if only empty values, return empty-widget
420
+ const attributes = this.widgetAttributes(field, this.resource);
421
+ const tagName = this.element.getAttribute("empty-".concat(field));
422
+ const valueSet = this.element.getAttribute("empty-".concat(field, "-value"));
423
+ if (valueSet) attributes.value = valueSet;
424
+ return preHTML(_templateObject4(), tagName, spread(attributes), tagName);
425
+ }
426
+
427
+ ;
428
+ } // Render template
429
+
430
+
431
+ const widgetsTemplate = await Promise.all(setFields.map(field => this.createWidgetTemplate(field)));
432
+ const template = html(_templateObject5(), widgetsTemplate);
433
+ render(template, widget.querySelector('[data-content]') || widget);
434
+ return widget;
435
+ },
436
+
437
+ createString(value) {
438
+ return html(_templateObject6(), value.slice(1, -1).replace(/\\(['"])/g, '$1'));
439
+ },
440
+
441
+ /**
442
+ * Returns field name without starting "@"
443
+ * @param field
444
+ */
445
+ getEscapedField(field) {
446
+ return field.startsWith('@') ? field.slice(1, field.length) : field;
447
+ }
448
+
449
+ };
450
+ export { WidgetMixin };
451
+ //# sourceMappingURL=widgetMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["widgetMixin.ts"],"names":["spread","preHTML","parseFieldsString","findClosingBracketMatchIndex","newWidgetFactory","WidgetType","html","render","ifDefined","WidgetMixin","name","use","attributes","fields","type","String","default","undefined","initialState","nameWidgets","_div","created","attached","dataSrc","resource","noRender","populate","parentElement","div","document","createElement","element","appendChild","value","widgets","map","querySelector","getFields","attr","isContainer","res","console","error","Error","prop","properties","startsWith","push","getAction","field","action","getAttribute","editable","hasAttribute","getSetRegexp","RegExp","getSet","setString","match","firstSetBracket","indexOf","length","lastSetBracket","set","substring","isSet","foundSets","isString","fetchValue","getValue","escapedField","getEscapedField","resourceValue","empty","widgetFromTagName","tagName","CUSTOM","USER","customElements","get","NATIVE","getWidget","widget","defaultWidget","defaultSetWidget","multiple","attribute","defaultMultipleWidget","addToAttributes","lookForAttr","setAttrKey","widgetAttributes","attrs","multipleAttributes","defaultAttributes","addableAttributes","Array","from","filter","a","replace","resourceId","createWidgetTemplate","transformAttributes","createString","createSet","currentResource","widgetMeta","widgetTemplate","class","defineAttribute","setAttribute","setWidget","setAttributes","initializing","Object","keys","component","setFields","hasOnlyEmpty","valueSet","widgetsTemplate","Promise","all","template","slice"],"mappings":"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","sourcesContent":["import { spread, preHTML } from '../libs/lit-helpers';\nimport { parseFieldsString, findClosingBracketMatchIndex } from '../libs/helpers';\nimport { newWidgetFactory } from '../new-widgets/new-widget-factory';\nimport { WidgetInterface, WidgetType, Resource } from './interfaces';\nimport { html, render, TemplateResult } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nconst WidgetMixin = {\n name: 'widget-mixin',\n use: [],\n attributes: {\n fields: {\n type: String,\n default: undefined,\n }\n },\n initialState: {\n nameWidgets: null,\n _div: null\n },\n created(): void {\n this.nameWidgets = [];\n },\n attached(): void {\n if (!this.dataSrc && !this.resource && this.noRender === null) this.populate();\n },\n get parentElement(): string {\n return 'div';\n },\n get div(): HTMLElement {\n if (this._div) return this._div;\n this._div = document.createElement(this.parentElement);\n this.element.appendChild(this._div);\n return this._div;\n },\n set div(value) {\n this._div = value\n },\n get widgets() {\n return this.nameWidgets.map((name: string) => this.element.querySelector(`[name=\"${name}\"]`));\n },\n /**\n * Return field list of the component\n */\n async getFields(): Promise<string[]>{ // TODO : improve code\n const attr = this.fields;\n if (attr === '') return [];\n if (attr) return parseFieldsString(attr);\n\n let resource = this.resource as Resource;\n if (resource && resource.isContainer?.()) { // If container, keep the 1rst resource\n for (let res of resource['ldp:contains']) {\n resource = res;\n break;\n }\n }\n\n if (!this.dataSrc) console.error(new Error('You must provide a \"fields\" attribute'));\n if(!resource) return [];\n\n let fields: string[] = [];\n for (const prop of resource.properties) {\n if ((!prop.startsWith('@') && !(prop === \"permissions\")) && await resource[prop]) fields.push(prop);\n }\n return fields;\n },\n /**\n * return attribute if \"field\" is an action\n * @param field - string\n */\n getAction(field: string): string {\n const action = this.element.getAttribute('action-' + field);\n return action;\n },\n /**\n * return true if \"field\" is editable\n * @param field - string\n */\n editable(field: string): string {\n return this.element.hasAttribute('editable-' + field);\n },\n /**\n * Return regexp to check if \"field\" is a set\n * @param field - string\n */\n getSetRegexp(field: string) {\n return new RegExp(`(^|\\\\,|\\\\(|\\\\s)\\\\s*${field}\\\\s*\\\\(`, 'g')\n },\n /**\n * Return fields contained in set \"field\"\n * @param field - string\n */\n getSet(field: string): string[] {\n const setString = this.fields.match(this.getSetRegexp(field));\n if (!setString) return [];\n const firstSetBracket = this.fields.indexOf(setString[0]) + (setString[0].length) - 1;\n const lastSetBracket = findClosingBracketMatchIndex(this.fields, firstSetBracket);\n const set = this.fields.substring(firstSetBracket + 1, lastSetBracket);\n return parseFieldsString(set);\n },\n /**\n * Return true if \"field\" is a set\n * @param field - string\n */\n isSet(field: string): boolean {\n if (!this.fields) return false;\n let foundSets = this.fields.match(this.getSetRegexp(field));\n return foundSets ? foundSets.length > 0 : false;\n },\n isString(field: string): boolean {\n return field.startsWith('\\'') || field.startsWith('\\\"');\n },\n /**\n * Return the value of \"resource\" for predicate \"field\"\n * @param field - string\n * @param resource - Resource\n */\n async fetchValue(field: string, resource: Resource) {\n return resource && !resource.isContainer?.() ? await resource[field] : undefined;\n },\n /**\n * Return the value of the field\n * @param field - field\n */\n async getValue(field: string, resource: Resource) {\n const escapedField = this.getEscapedField(field);\n if (this.getAction(escapedField)) {\n return this.getAction(escapedField);\n }\n if (this.element.hasAttribute('value-' + field)) {\n return this.element.getAttribute('value-' + field);\n }\n let resourceValue = await this.fetchValue(field, resource);\n\n // Empty value\n if (resourceValue === undefined || resourceValue === '' || resourceValue === null) // If null or empty, return field default value\n return this.element.hasAttribute('default-' + field) ?\n this.element.getAttribute('default-' + field) : '';\n\n return resourceValue;\n },\n empty(): void {},\n /**\n * Return a widget from a tagName, and create it if necessary\n * @param tagName - string\n */\n widgetFromTagName(tagName: string) {\n let type = tagName.startsWith('solid') ? WidgetType.CUSTOM : WidgetType.USER;\n if (!customElements.get(tagName)) { // component does not exist\n if (tagName.startsWith('solid')) newWidgetFactory(tagName); // solid- -> create it\n else type = WidgetType.NATIVE; // or use a native tag\n }\n return { tagName, type }; // return tagName\n },\n /**\n * Return widget for field \"field\"\n * @param field - string\n * @param isSet - boolean\n */\n getWidget(field: string, isSet: boolean = false): WidgetInterface {\n const widget = this.element.getAttribute('widget-' + field);\n\n if (widget) return this.widgetFromTagName(widget);\n if (this.getAction(field)) return this.widgetFromTagName('solid-action');\n\n return !isSet ? this.widgetFromTagName(this.defaultWidget) : this.widgetFromTagName(this.defaultSetWidget);\n },\n /**\n * Return multiple widget if \"field\" is a multiple, false if it's not\n * @param field - string\n */\n multiple(field: string): WidgetInterface|null {\n const attribute = 'multiple-' + field;\n if (!this.element.hasAttribute(attribute)) return null;\n const widget = this.element.getAttribute(attribute) || this.defaultMultipleWidget;\n return this.widgetFromTagName(widget);\n },\n /**\n * If attribute \"lookForAttr\" is set on element, add \"attrKey\" to the \"attributes\" list\n * @param lookForAttr - string\n * @param setAttrKey - string\n * @param attributes - object\n */\n addToAttributes(lookForAttr: string, setAttrKey: string, attributes: object) {\n const attribute = this.element.getAttribute(lookForAttr);\n if (attribute == null) return;\n attributes[setAttrKey] = attribute;\n },\n /**\n * Return all the attributes of widget \"field\"\n * @param field - string\n * @param resource - Resource\n */\n widgetAttributes(field: string, resource: Resource): object {\n const attrs = { name: field };\n const escapedField = this.getEscapedField(field);\n\n // transfer all multiple-[field]-[attr] attributes as [attr] for multiple widget [field]\n const multipleAttributes = [\n 'fields',\n 'label',\n 'widget',\n 'add-label',\n 'remove-label',\n 'next', \n 'empty-widget',\n 'add-class',\n 'remove-class'\n ];\n for (let attr of multipleAttributes) this.addToAttributes(`multiple-${escapedField}-${attr}`, attr, attrs)\n\n // transfer all [attr]-[field] attributes as [attr] attribute for widget [field]\n const defaultAttributes = [\n 'range',\n 'enum',\n 'label',\n 'placeholder',\n 'class',\n /* 'widget', */,\n 'required',\n 'editable',\n 'autocomplete',\n 'upload-url',\n 'option-label',\n 'option-value',\n 'order-by', // deprecated. Remove in 0.15\n 'each-label',\n 'order-asc',\n 'order-desc',\n 'min',\n 'max',\n 'pattern',\n 'title',\n 'start-value',\n 'end-value',\n 'alt',\n 'step',\n 'maxlength',\n 'minlength',\n 'search-text',\n 'search-placeholder',\n 'link-text',\n ];\n for (let attr of defaultAttributes) this.addToAttributes(`${attr}-${escapedField}`, attr, attrs)\n\n const addableAttributes: Attr[] = (Array.from(this.element.attributes) as Attr[]).filter((a: Attr) => a.name.startsWith(`addable-${escapedField}`));\n for (let attr of addableAttributes) this.addToAttributes(attr.name, attr.name.replace(`addable-${escapedField}`, 'addable'), attrs)\n\n const resourceId = resource ? resource!['@id'] : null;\n if (this.multiple(escapedField)) attrs['widget'] = this.getWidget(escapedField).tagName;\n if (this.getAction(escapedField) && resourceId) attrs['src'] = this.element.getAttribute('src-' + escapedField) || resourceId;\n if (this.editable(escapedField) && resourceId) attrs['value-id'] = resourceId;\n\n return attrs;\n },\n /**\n * Creates and return a widget for field + add it to the widget list\n * @param field - string\n */\n async createWidgetTemplate(field: string, resource = null, transformAttributes = false): Promise<TemplateResult> {\n if (this.isString(field)) return this.createString(field); // field is a static string\n if (this.isSet(field)) return await this.createSet(field);\n\n const currentResource = resource || this.resource;\n let attributes = this.widgetAttributes(field, currentResource);\n const escapedField = this.getEscapedField(field);\n const widgetMeta = this.multiple(escapedField) || this.getWidget(escapedField);\n let tagName = widgetMeta.tagName;\n let widgetTemplate = html``;\n\n // Set attributes\n let value = await this.getValue(field, currentResource);\n if (widgetMeta.type === WidgetType.NATIVE) { // native widget (ie: h1)\n widgetTemplate = preHTML`\n <${tagName}\n name=\"${ifDefined(attributes.name)}\"\n class=\"${ifDefined(attributes.class)}\"\n >${value}</${tagName}>\n `;\n } else { // custom widget (ie: solid-display-value)\n // Check if value is defined, and if the default widget is needed\n if ((value === null || value === '') && this.element.hasAttribute('default-widget-' + field)) {\n tagName = this.element.getAttribute('default-widget-' + field);\n }\n // Set attributes to the widget\n // setAttribute set a string. Make sure null values are empty\n if (value === null || value === undefined) attributes.value = '';\n if (widgetMeta.type === WidgetType.USER && value['@id']) { // if value is a resource and solid-widget used, set data-src\n attributes['data-src'] = value['@id'];\n } else { // otherwise, set value attribute\n attributes['value'] = value;\n }\n\n // Subscribe widgets if they show a resource\n if (value && value['@id']) attributes['auto-subscribe'] = value['@id'];\n\n // Transform store://XXX attributes\n if (transformAttributes) attributes = await this.transformAttributes(attributes, currentResource);\n\n widgetTemplate = preHTML`<${tagName} ...=${spread(attributes)}></${tagName}>`;\n }\n\n this.nameWidgets.push(field);\n return widgetTemplate;\n },\n defineAttribute(widget: HTMLElement, attribute: string, value: any) {\n if (widget.getAttribute(attribute) !== value) { // if attribute is different than previous one\n widget.setAttribute(attribute, value); // set it\n }\n },\n /**\n * Create a set and add fields to it\n * @param field - string\n */\n async createSet(field: string): Promise<TemplateResult> {\n const setWidget = this.getWidget(field, true);\n\n // Get set attributes\n const attrs = { name: field };\n const setAttributes = [\n 'class',\n 'label'\n ];\n for (let attr of setAttributes) this.addToAttributes(`${attr}-${field}`, attr, attrs);\n\n // Create widget if not already existing\n let widget = this.element.querySelector(`${setWidget.tagName}[name=\"${field}\"]`);\n let initializing = false; // used to render widget only first time\n if (!widget) {\n widget = document.createElement(setWidget.tagName);\n initializing = true;\n }\n for (let name of Object.keys(attrs)) {\n this.defineAttribute(widget, name, attrs[name], setWidget.type);\n }\n if (widget.component && initializing) widget.component.render();\n let setFields = this.getSet(field);\n // Catch widget for the set if all these fields are empty\n if (this.element.hasAttribute('empty-' + field)) {\n let hasOnlyEmpty = true;\n for(let field of setFields) {\n let value: string = await this.getValue(field, this.resource);\n if (value !== '') { // if one not empty\n hasOnlyEmpty = false;\n continue; // break loop\n }\n };\n if(hasOnlyEmpty) { // if only empty values, return empty-widget\n const attributes = this.widgetAttributes(field, this.resource);\n const tagName = this.element.getAttribute(`empty-${field}`);\n const valueSet = this.element.getAttribute(`empty-${field}-value`);\n if (valueSet) attributes.value = valueSet;\n return preHTML`<${tagName} ...=${spread(attributes)}></${tagName}>`;\n };\n }\n\n // Render template\n const widgetsTemplate = await Promise.all(setFields.map((field: string) => this.createWidgetTemplate(field)));\n const template = html`${widgetsTemplate}`;\n render(template, widget.querySelector('[data-content]') || widget);\n return widget;\n },\n createString(value: string): TemplateResult {\n return html`\n <span>${value.slice(1, -1).replace(/\\\\(['\"])/g, '$1')}</span>\n `;\n },\n /**\n * Returns field name without starting \"@\"\n * @param field\n */\n getEscapedField(field: string): string {\n return field.startsWith('@') ? field.slice(1, field.length) : field;\n }\n}\n\nexport {\n WidgetMixin\n}"]}
@@ -0,0 +1,14 @@
1
+ const ActionMixin = {
2
+ name: 'action-mixin',
3
+ attributes: {
4
+ src: {
5
+ type: String,
6
+ default: '',
7
+ callback: function (newValue) {
8
+ this.addToAttributes(newValue, 'src');
9
+ }
10
+ }
11
+ }
12
+ };
13
+ export { ActionMixin };
14
+ //# sourceMappingURL=actionMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["actionMixin.ts"],"names":["ActionMixin","name","attributes","src","type","String","default","callback","newValue","addToAttributes"],"mappings":"AAAA,MAAMA,WAAW,GAAG;AAClBC,EAAAA,IAAI,EAAE,cADY;AAElBC,EAAAA,UAAU,EAAE;AACVC,IAAAA,GAAG,EAAE;AACHC,MAAAA,IAAI,EAAEC,MADH;AAEHC,MAAAA,OAAO,EAAE,EAFN;AAGHC,MAAAA,QAAQ,EAAE,UAAUC,QAAV,EAA4B;AACpC,aAAKC,eAAL,CAAqBD,QAArB,EAA+B,KAA/B;AACD;AALE;AADK;AAFM,CAApB;AAaA,SACER,WADF","sourcesContent":["const ActionMixin = {\n name: 'action-mixin',\n attributes: {\n src: {\n type: String,\n default: '',\n callback: function (newValue: string) {\n this.addToAttributes(newValue, 'src');\n }\n },\n },\n}\n\nexport {\n ActionMixin\n}"]}
@@ -0,0 +1,10 @@
1
+ const BlankMixin = {
2
+ name: 'blank-mixin',
3
+
4
+ created() {
5
+ this.listAttributes['target'] = '_blank';
6
+ }
7
+
8
+ };
9
+ export { BlankMixin };
10
+ //# sourceMappingURL=blankMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["blankMixin.ts"],"names":["BlankMixin","name","created","listAttributes"],"mappings":"AAAA,MAAMA,UAAU,GAAG;AACjBC,EAAAA,IAAI,EAAE,aADW;;AAEjBC,EAAAA,OAAO,GAAG;AACR,SAAKC,cAAL,CAAoB,QAApB,IAAgC,QAAhC;AACD;;AAJgB,CAAnB;AAOA,SACEH,UADF","sourcesContent":["const BlankMixin = {\n name: 'blank-mixin',\n created() {\n this.listAttributes['target'] = '_blank';\n }\n}\n\nexport {\n BlankMixin\n}"]}
@@ -0,0 +1,10 @@
1
+ const BooleanMixin = {
2
+ name: 'boolean-mixin',
3
+
4
+ get type() {
5
+ return 'boolean';
6
+ }
7
+
8
+ };
9
+ export { BooleanMixin };
10
+ //# sourceMappingURL=booleanMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["booleanMixin.ts"],"names":["BooleanMixin","name","type"],"mappings":"AAAA,MAAMA,YAAY,GAAG;AACnBC,EAAAA,IAAI,EAAE,eADa;;AAEnB,MAAIC,IAAJ,GAAW;AACT,WAAO,SAAP;AACD;;AAJkB,CAArB;AAOA,SAASF,YAAT","sourcesContent":["const BooleanMixin = {\n name: 'boolean-mixin',\n get type() {\n return 'boolean';\n },\n};\n\nexport { BooleanMixin };\n"]}
@@ -0,0 +1,20 @@
1
+ import { MultipleMixin } from './multipleMixin.js';
2
+ import { ActionMixin } from './actionMixin.js';
3
+ import { BlankMixin } from './blankMixin.js';
4
+ import { MailtoMixin } from './mailtoMixin.js';
5
+ import { TelMixin } from './telMixin.js';
6
+ import { PlaceholderMixin } from './placeholderMixin.js';
7
+ import { BooleanMixin } from './booleanMixin.js';
8
+ import { NumberMixin } from './numberMixin.js';
9
+ const attributeDirectory = {
10
+ multiple: MultipleMixin,
11
+ action: ActionMixin,
12
+ blank: BlankMixin,
13
+ mailto: MailtoMixin,
14
+ tel: TelMixin,
15
+ placeholder: PlaceholderMixin,
16
+ bool: BooleanMixin,
17
+ num: NumberMixin
18
+ };
19
+ export { attributeDirectory, MultipleMixin, ActionMixin, BlankMixin, MailtoMixin, TelMixin, PlaceholderMixin };
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["MultipleMixin","ActionMixin","BlankMixin","MailtoMixin","TelMixin","PlaceholderMixin","BooleanMixin","NumberMixin","attributeDirectory","multiple","action","blank","mailto","tel","placeholder","bool","num"],"mappings":"AAAA,SAASA,aAAT,QAA8B,iBAA9B;AACA,SAASC,WAAT,QAA4B,eAA5B;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,WAAT,QAA4B,eAA5B;AACA,SAASC,QAAT,QAAyB,YAAzB;AACA,SAASC,gBAAT,QAAiC,oBAAjC;AACA,SAASC,YAAT,QAA6B,gBAA7B;AACA,SAASC,WAAT,QAA4B,eAA5B;AAEA,MAAMC,kBAAkB,GAAG;AACzBC,EAAAA,QAAQ,EAAET,aADe;AAEzBU,EAAAA,MAAM,EAAET,WAFiB;AAGzBU,EAAAA,KAAK,EAAET,UAHkB;AAIzBU,EAAAA,MAAM,EAAET,WAJiB;AAKzBU,EAAAA,GAAG,EAAET,QALoB;AAMzBU,EAAAA,WAAW,EAAET,gBANY;AAOzBU,EAAAA,IAAI,EAAET,YAPmB;AAQzBU,EAAAA,GAAG,EAAET;AARoB,CAA3B;AAWA,SACEC,kBADF,EAEER,aAFF,EAGEC,WAHF,EAIEC,UAJF,EAKEC,WALF,EAMEC,QANF,EAOEC,gBAPF","sourcesContent":["import { MultipleMixin } from './multipleMixin';\nimport { ActionMixin } from './actionMixin';\nimport { BlankMixin } from './blankMixin';\nimport { MailtoMixin } from './mailtoMixin';\nimport { TelMixin } from './telMixin';\nimport { PlaceholderMixin } from './placeholderMixin';\nimport { BooleanMixin } from './booleanMixin';\nimport { NumberMixin } from './numberMixin';\n\nconst attributeDirectory = {\n multiple: MultipleMixin,\n action: ActionMixin,\n blank: BlankMixin,\n mailto: MailtoMixin,\n tel: TelMixin,\n placeholder: PlaceholderMixin,\n bool: BooleanMixin,\n num: NumberMixin,\n}\n\nexport {\n attributeDirectory,\n MultipleMixin,\n ActionMixin,\n BlankMixin,\n MailtoMixin,\n TelMixin,\n PlaceholderMixin,\n}\n"]}
@@ -0,0 +1,10 @@
1
+ const MailtoMixin = {
2
+ name: 'mailto-mixin',
3
+
4
+ created() {
5
+ this.listAttributes['mailto'] = 'mailto:';
6
+ }
7
+
8
+ };
9
+ export { MailtoMixin };
10
+ //# sourceMappingURL=mailtoMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["mailtoMixin.ts"],"names":["MailtoMixin","name","created","listAttributes"],"mappings":"AAAA,MAAMA,WAAW,GAAG;AAClBC,EAAAA,IAAI,EAAE,cADY;;AAElBC,EAAAA,OAAO,GAAG;AACR,SAAKC,cAAL,CAAoB,QAApB,IAAgC,SAAhC;AACD;;AAJiB,CAApB;AAOA,SACEH,WADF","sourcesContent":["const MailtoMixin = {\n name: 'mailto-mixin',\n created() {\n this.listAttributes['mailto'] = 'mailto:';\n }\n}\n\nexport {\n MailtoMixin\n}"]}
@@ -0,0 +1,28 @@
1
+ const MultipleMixin = {
2
+ name: 'multiple-mixin',
3
+ attributes: {
4
+ fields: {
5
+ type: String,
6
+ default: '',
7
+ callback: function (newValue) {
8
+ this.addToAttributes(newValue, 'fields');
9
+ }
10
+ },
11
+ next: {
12
+ type: String,
13
+ default: '',
14
+ callback: function (newValue) {
15
+ this.addToAttributes(newValue, 'next');
16
+ }
17
+ },
18
+ emptyWidget: {
19
+ type: String,
20
+ default: '',
21
+ callback: function (newValue) {
22
+ this.addToAttributes(newValue, 'emptyWidget');
23
+ }
24
+ }
25
+ }
26
+ };
27
+ export { MultipleMixin };
28
+ //# sourceMappingURL=multipleMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["multipleMixin.ts"],"names":["MultipleMixin","name","attributes","fields","type","String","default","callback","newValue","addToAttributes","next","emptyWidget"],"mappings":"AAAA,MAAMA,aAAa,GAAG;AACpBC,EAAAA,IAAI,EAAE,gBADc;AAEpBC,EAAAA,UAAU,EAAE;AACVC,IAAAA,MAAM,EAAE;AACNC,MAAAA,IAAI,EAAEC,MADA;AAENC,MAAAA,OAAO,EAAE,EAFH;AAGNC,MAAAA,QAAQ,EAAE,UAAUC,QAAV,EAA4B;AACpC,aAAKC,eAAL,CAAqBD,QAArB,EAA+B,QAA/B;AACD;AALK,KADE;AAQVE,IAAAA,IAAI,EAAE;AACJN,MAAAA,IAAI,EAAEC,MADF;AAEJC,MAAAA,OAAO,EAAE,EAFL;AAGJC,MAAAA,QAAQ,EAAE,UAAUC,QAAV,EAA4B;AACpC,aAAKC,eAAL,CAAqBD,QAArB,EAA+B,MAA/B;AACD;AALG,KARI;AAeVG,IAAAA,WAAW,EAAE;AACXP,MAAAA,IAAI,EAAEC,MADK;AAEXC,MAAAA,OAAO,EAAE,EAFE;AAGXC,MAAAA,QAAQ,EAAE,UAAUC,QAAV,EAA4B;AACpC,aAAKC,eAAL,CAAqBD,QAArB,EAA+B,aAA/B;AACD;AALU;AAfH;AAFQ,CAAtB;AA2BA,SACER,aADF","sourcesContent":["const MultipleMixin = {\n name: 'multiple-mixin',\n attributes: {\n fields: {\n type: String,\n default: '',\n callback: function (newValue: string) {\n this.addToAttributes(newValue, 'fields');\n }\n },\n next: {\n type: String,\n default: '',\n callback: function (newValue: string) {\n this.addToAttributes(newValue, 'next');\n }\n },\n emptyWidget: {\n type: String,\n default: '',\n callback: function (newValue: string) {\n this.addToAttributes(newValue, 'emptyWidget');\n }\n }\n },\n}\n\nexport {\n MultipleMixin\n}"]}
@@ -0,0 +1,10 @@
1
+ const NumberMixin = {
2
+ name: 'number-mixin',
3
+
4
+ get type() {
5
+ return 'number';
6
+ }
7
+
8
+ };
9
+ export { NumberMixin };
10
+ //# sourceMappingURL=numberMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["numberMixin.ts"],"names":["NumberMixin","name","type"],"mappings":"AAAA,MAAMA,WAAW,GAAG;AAClBC,EAAAA,IAAI,EAAE,cADY;;AAElB,MAAIC,IAAJ,GAAW;AACT,WAAO,QAAP;AACD;;AAJiB,CAApB;AAOA,SAASF,WAAT","sourcesContent":["const NumberMixin = {\n name: 'number-mixin',\n get type() {\n return 'number';\n },\n};\n\nexport { NumberMixin };\n"]}