@startinblox/core 0.17.22 → 0.17.23

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 (262) 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 +25 -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.js +14066 -0
  33. package/dist/_snowpack/pkg/leaflet.js.map +1 -0
  34. package/dist/_snowpack/pkg/leaflet.js.map.proxy.js +1 -0
  35. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.Default.css +60 -0
  36. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.Default.css.proxy.js +10 -0
  37. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.css +14 -0
  38. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.css.proxy.js +10 -0
  39. package/dist/_snowpack/pkg/leaflet.markercluster.js +2697 -0
  40. package/dist/_snowpack/pkg/leaflet.markercluster.js.map +1 -0
  41. package/dist/_snowpack/pkg/leaflet.markercluster.js.map.proxy.js +1 -0
  42. package/dist/_snowpack/pkg/lit-html/directives/if-defined.js +40 -0
  43. package/dist/_snowpack/pkg/lit-html/directives/if-defined.js.map +1 -0
  44. package/dist/_snowpack/pkg/lit-html/directives/if-defined.js.map.proxy.js +1 -0
  45. package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js +46 -0
  46. package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js.map +1 -0
  47. package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js.map.proxy.js +1 -0
  48. package/dist/_snowpack/pkg/lit-html/directives/until.js +88 -0
  49. package/dist/_snowpack/pkg/lit-html/directives/until.js.map +1 -0
  50. package/dist/_snowpack/pkg/lit-html/directives/until.js.map.proxy.js +1 -0
  51. package/dist/_snowpack/pkg/lit-html.js +92 -0
  52. package/dist/_snowpack/pkg/lit-html.js.map +1 -0
  53. package/dist/_snowpack/pkg/lit-html.js.map.proxy.js +1 -0
  54. package/dist/_snowpack/pkg/markdown-it.js +11860 -0
  55. package/dist/_snowpack/pkg/markdown-it.js.map +1 -0
  56. package/dist/_snowpack/pkg/markdown-it.js.map.proxy.js +1 -0
  57. package/dist/_snowpack/pkg/quill/dist/quill.snow.css +945 -0
  58. package/dist/_snowpack/pkg/quill/dist/quill.snow.css.proxy.js +10 -0
  59. package/dist/_snowpack/pkg/quill-delta-to-markdown.js +1029 -0
  60. package/dist/_snowpack/pkg/quill-delta-to-markdown.js.map +1 -0
  61. package/dist/_snowpack/pkg/quill-delta-to-markdown.js.map.proxy.js +1 -0
  62. package/dist/_snowpack/pkg/quill.js +13382 -0
  63. package/dist/_snowpack/pkg/quill.js.map +1 -0
  64. package/dist/_snowpack/pkg/quill.js.map.proxy.js +1 -0
  65. package/dist/_snowpack/pkg/slim-select.js +4 -0
  66. package/dist/_snowpack/pkg/slim-select.js.map +1 -0
  67. package/dist/_snowpack/pkg/slim-select.js.map.proxy.js +1 -0
  68. package/dist/_snowpack/pkg/tui-calendar/dist/tui-calendar.css +1164 -0
  69. package/dist/_snowpack/pkg/tui-calendar/dist/tui-calendar.css.proxy.js +10 -0
  70. package/dist/_snowpack/pkg/tui-calendar.js +42285 -0
  71. package/dist/_snowpack/pkg/tui-calendar.js.map +1 -0
  72. package/dist/_snowpack/pkg/tui-calendar.js.map.proxy.js +1 -0
  73. package/dist/components/solid-ac-checker.js +58 -0
  74. package/dist/components/solid-ac-checker.js.map +1 -0
  75. package/dist/components/solid-calendar.js +87 -0
  76. package/dist/components/solid-calendar.js.map +1 -0
  77. package/dist/components/solid-delete.js +111 -0
  78. package/dist/components/solid-delete.js.map +1 -0
  79. package/dist/components/solid-display.js +194 -0
  80. package/dist/components/solid-display.js.map +1 -0
  81. package/dist/components/solid-form-search.js +226 -0
  82. package/dist/components/solid-form-search.js.map +1 -0
  83. package/dist/components/solid-form.js +354 -0
  84. package/dist/components/solid-form.js.map +1 -0
  85. package/dist/components/solid-lang.js +46 -0
  86. package/dist/components/solid-lang.js.map +1 -0
  87. package/dist/components/solid-map.js +242 -0
  88. package/dist/components/solid-map.js.map +1 -0
  89. package/dist/components/solid-table.js +263 -0
  90. package/dist/components/solid-table.js.map +1 -0
  91. package/dist/components/solid-widget.js +94 -0
  92. package/dist/components/solid-widget.js.map +1 -0
  93. package/dist/import.css +4 -0
  94. package/dist/index.js +43 -0
  95. package/dist/index.js.map +1 -0
  96. package/dist/libs/Component.js +19 -0
  97. package/dist/libs/Component.js.map +1 -0
  98. package/dist/libs/ComponentFactory.js +196 -0
  99. package/dist/libs/ComponentFactory.js.map +1 -0
  100. package/dist/libs/Compositor.js +103 -0
  101. package/dist/libs/Compositor.js.map +1 -0
  102. package/dist/libs/Sib.js +58 -0
  103. package/dist/libs/Sib.js.map +1 -0
  104. package/dist/libs/helpers.js +219 -0
  105. package/dist/libs/helpers.js.map +1 -0
  106. package/dist/libs/interfaces.js +6 -0
  107. package/dist/libs/interfaces.js.map +1 -0
  108. package/dist/libs/lit-helpers.js +169 -0
  109. package/dist/libs/lit-helpers.js.map +1 -0
  110. package/dist/libs/polyfills.js +40 -0
  111. package/dist/libs/polyfills.js.map +1 -0
  112. package/dist/libs/store/store.js +802 -0
  113. package/dist/libs/store/store.js.map +1 -0
  114. package/dist/locales/en.json +10 -0
  115. package/dist/locales/en.json.proxy.js +2 -0
  116. package/dist/locales/fr.json +10 -0
  117. package/dist/locales/fr.json.proxy.js +2 -0
  118. package/dist/mixins/attributeBinderMixin.js +124 -0
  119. package/dist/mixins/attributeBinderMixin.js.map +1 -0
  120. package/dist/mixins/contextMixin.js +28 -0
  121. package/dist/mixins/contextMixin.js.map +1 -0
  122. package/dist/mixins/counterMixin.js +75 -0
  123. package/dist/mixins/counterMixin.js.map +1 -0
  124. package/dist/mixins/federationMixin.js +63 -0
  125. package/dist/mixins/federationMixin.js.map +1 -0
  126. package/dist/mixins/filterMixin.js +195 -0
  127. package/dist/mixins/filterMixin.js.map +1 -0
  128. package/dist/mixins/grouperMixin.js +80 -0
  129. package/dist/mixins/grouperMixin.js.map +1 -0
  130. package/dist/mixins/highlighterMixin.js +42 -0
  131. package/dist/mixins/highlighterMixin.js.map +1 -0
  132. package/dist/mixins/interfaces.js +8 -0
  133. package/dist/mixins/interfaces.js.map +1 -0
  134. package/dist/mixins/listMixin.js +136 -0
  135. package/dist/mixins/listMixin.js.map +1 -0
  136. package/dist/mixins/nextMixin.js +26 -0
  137. package/dist/mixins/nextMixin.js.map +1 -0
  138. package/dist/mixins/paginateMixin.js +110 -0
  139. package/dist/mixins/paginateMixin.js.map +1 -0
  140. package/dist/mixins/requiredMixin.js +34 -0
  141. package/dist/mixins/requiredMixin.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 +102 -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 +447 -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 +35 -0
  191. package/dist/new-widgets/templates/defaultTemplatesDirectory.js.map +1 -0
  192. package/dist/new-widgets/templates/displayTemplatesDirectory.js +89 -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/multipleFormMixin.js +107 -0
  229. package/dist/new-widgets/templatesDependencies/multipleFormMixin.js.map +1 -0
  230. package/dist/new-widgets/templatesDependencies/multipleselectFormMixin.js +74 -0
  231. package/dist/new-widgets/templatesDependencies/multipleselectFormMixin.js.map +1 -0
  232. package/dist/new-widgets/templatesDependencies/patternMixin.js +19 -0
  233. package/dist/new-widgets/templatesDependencies/patternMixin.js.map +1 -0
  234. package/dist/new-widgets/templatesDependencies/rangeMixin.js +110 -0
  235. package/dist/new-widgets/templatesDependencies/rangeMixin.js.map +1 -0
  236. package/dist/new-widgets/templatesDependencies/setMixin.js +12 -0
  237. package/dist/new-widgets/templatesDependencies/setMixin.js.map +1 -0
  238. package/dist/new-widgets/templatesDependencies/valueRichtextMixin.js +12 -0
  239. package/dist/new-widgets/templatesDependencies/valueRichtextMixin.js.map +1 -0
  240. package/dist/new-widgets/valueTransformationMixins/autolinkMixin.js +18 -0
  241. package/dist/new-widgets/valueTransformationMixins/autolinkMixin.js.map +1 -0
  242. package/dist/new-widgets/valueTransformationMixins/dateMixin.js +35 -0
  243. package/dist/new-widgets/valueTransformationMixins/dateMixin.js.map +1 -0
  244. package/dist/new-widgets/valueTransformationMixins/dateTimeMixin.js +16 -0
  245. package/dist/new-widgets/valueTransformationMixins/dateTimeMixin.js.map +1 -0
  246. package/dist/new-widgets/valueTransformationMixins/index.js +16 -0
  247. package/dist/new-widgets/valueTransformationMixins/index.js.map +1 -0
  248. package/dist/new-widgets/valueTransformationMixins/markdownMixin.js +25 -0
  249. package/dist/new-widgets/valueTransformationMixins/markdownMixin.js.map +1 -0
  250. package/dist/new-widgets/valueTransformationMixins/multilineMixin.js +17 -0
  251. package/dist/new-widgets/valueTransformationMixins/multilineMixin.js.map +1 -0
  252. package/dist/new-widgets/valueTransformationMixins/oembedMixin.js +27 -0
  253. package/dist/new-widgets/valueTransformationMixins/oembedMixin.js.map +1 -0
  254. package/dist/solid-template-element.js +164 -0
  255. package/dist/solid-template-element.js.map +1 -0
  256. package/dist/style/default-theme.css +24 -0
  257. package/dist/style/default-theme.css.proxy.js +10 -0
  258. package/dist/widgets/baseWidget.js +332 -0
  259. package/dist/widgets/baseWidget.js.map +1 -0
  260. package/dist/widgets/widget-factory.js +24 -0
  261. package/dist/widgets/widget-factory.js.map +1 -0
  262. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ export default "/_snowpack/pkg/tui-calendar.js.map";
@@ -0,0 +1,58 @@
1
+ import JSONLDContextParser from '../_snowpack/pkg/jsonld-context-parser.js';
2
+ import { Sib } from '../libs/Sib.js';
3
+ import { StoreMixin } from '../mixins/storeMixin.js';
4
+ export const SolidAcChecker = {
5
+ name: 'solid-ac-checker',
6
+ use: [StoreMixin],
7
+ attributes: {
8
+ permission: {
9
+ type: String,
10
+ default: ''
11
+ },
12
+ noPermission: {
13
+ type: String,
14
+ default: ''
15
+ }
16
+ },
17
+
18
+ async populate() {
19
+ if (!this.resource) return;
20
+ let displayElement;
21
+ const ContextParser = JSONLDContextParser.ContextParser;
22
+ const myParser = new ContextParser();
23
+ const context = await myParser.parse(this.context);
24
+
25
+ if (this.permission) {
26
+ // User has permission of ...
27
+ displayElement = this.resource.permissions.some(p => {
28
+ return ContextParser.compactIri(p, context) === this.permission;
29
+ });
30
+ /* displayElement = await asyncSome(
31
+ (permission: object) => ContextParser.compactIri(permission.toString(), context) === this.permission,
32
+ this.resource.permissions.mode['@type']
33
+ )*/
34
+ } else if (this.noPermission) {
35
+ // User has no permission of ...
36
+ displayElement = this.resource.permissions.every(p => {
37
+ return ContextParser.compactIri(p, context) !== this.noPermission;
38
+ });
39
+ /*displayElement = await asyncEvery(
40
+ (permission: object) => ContextParser.compactIri(permission.toString(), context) !== this.noPermission,
41
+ this.resource.permissions.mode['@type']
42
+ )*/
43
+ } else {
44
+ // No parameter provided
45
+ console.warn('solid-ac-checker: you should define at least one of "permission" or "no-permission" attribute.');
46
+ return;
47
+ }
48
+
49
+ if (displayElement) this.element.removeAttribute('hidden');
50
+ },
51
+
52
+ empty() {
53
+ this.element.setAttribute('hidden', '');
54
+ }
55
+
56
+ };
57
+ Sib.register(SolidAcChecker);
58
+ //# sourceMappingURL=solid-ac-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["solid-ac-checker.ts"],"names":["JSONLDContextParser","Sib","StoreMixin","SolidAcChecker","name","use","attributes","permission","type","String","default","noPermission","populate","resource","displayElement","ContextParser","myParser","context","parse","permissions","some","p","compactIri","every","console","warn","element","removeAttribute","empty","setAttribute","register"],"mappings":"AAAA,OAAOA,mBAAP,MAAgC,uBAAhC;AACA,SAASC,GAAT,QAAoB,aAApB;AACA,SAASC,UAAT,QAA2B,sBAA3B;AAEA,OAAO,MAAMC,cAAc,GAAG;AAC5BC,EAAAA,IAAI,EAAE,kBADsB;AAE5BC,EAAAA,GAAG,EAAE,CAACH,UAAD,CAFuB;AAG5BI,EAAAA,UAAU,EAAE;AACVC,IAAAA,UAAU,EAAE;AACVC,MAAAA,IAAI,EAAEC,MADI;AAEVC,MAAAA,OAAO,EAAE;AAFC,KADF;AAKVC,IAAAA,YAAY,EAAE;AACZH,MAAAA,IAAI,EAAEC,MADM;AAEZC,MAAAA,OAAO,EAAE;AAFG;AALJ,GAHgB;;AAc5B,QAAME,QAAN,GAAgC;AAC9B,QAAI,CAAC,KAAKC,QAAV,EAAoB;AACpB,QAAIC,cAAJ;AACA,UAAMC,aAAa,GAAGf,mBAAmB,CAACe,aAA1C;AACA,UAAMC,QAAQ,GAAG,IAAID,aAAJ,EAAjB;AACA,UAAME,OAAO,GAAG,MAAMD,QAAQ,CAACE,KAAT,CAAe,KAAKD,OAApB,CAAtB;;AAEA,QAAI,KAAKV,UAAT,EAAqB;AAAE;AACrBO,MAAAA,cAAc,GAAG,KAAKD,QAAL,CAAcM,WAAd,CAA0BC,IAA1B,CAAgCC,CAAD,IAAW;AACzD,eAAON,aAAa,CAACO,UAAd,CAAyBD,CAAzB,EAA4BJ,OAA5B,MAAyC,KAAKV,UAArD;AACD,OAFgB,CAAjB;AAGA;AACN;AACA;AACA;AACK,KARD,MAQO,IAAI,KAAKI,YAAT,EAAuB;AAAE;AAC9BG,MAAAA,cAAc,GAAG,KAAKD,QAAL,CAAcM,WAAd,CAA0BI,KAA1B,CAAiCF,CAAD,IAAW;AAC1D,eAAON,aAAa,CAACO,UAAd,CAAyBD,CAAzB,EAA4BJ,OAA5B,MAAyC,KAAKN,YAArD;AACD,OAFgB,CAAjB;AAGA;AACN;AACA;AACA;AACK,KARM,MAQA;AAAE;AACPa,MAAAA,OAAO,CAACC,IAAR,CAAa,gGAAb;AACA;AACD;;AAED,QAAIX,cAAJ,EAAoB,KAAKY,OAAL,CAAaC,eAAb,CAA6B,QAA7B;AACrB,GA3C2B;;AA4C5BC,EAAAA,KAAK,GAAS;AACZ,SAAKF,OAAL,CAAaG,YAAb,CAA0B,QAA1B,EAAoC,EAApC;AACD;;AA9C2B,CAAvB;AAiDP5B,GAAG,CAAC6B,QAAJ,CAAa3B,cAAb","sourcesContent":["import JSONLDContextParser from 'jsonld-context-parser';\nimport { Sib } from '../libs/Sib';\nimport { StoreMixin } from '../mixins/storeMixin';\n\nexport const SolidAcChecker = {\n name: 'solid-ac-checker',\n use: [StoreMixin],\n attributes: {\n permission: {\n type: String,\n default: '',\n },\n noPermission: {\n type: String,\n default: '',\n }\n },\n\n async populate(): Promise<void> {\n if (!this.resource) return;\n let displayElement: boolean;\n const ContextParser = JSONLDContextParser.ContextParser;\n const myParser = new ContextParser();\n const context = await myParser.parse(this.context);\n\n if (this.permission) { // User has permission of ...\n displayElement = this.resource.permissions.some((p:any) => {\n return ContextParser.compactIri(p, context) === this.permission;\n });\n /* displayElement = await asyncSome(\n (permission: object) => ContextParser.compactIri(permission.toString(), context) === this.permission,\n this.resource.permissions.mode['@type']\n )*/\n } else if (this.noPermission) { // User has no permission of ...\n displayElement = this.resource.permissions.every((p:any) => {\n return ContextParser.compactIri(p, context) !== this.noPermission;\n });\n /*displayElement = await asyncEvery(\n (permission: object) => ContextParser.compactIri(permission.toString(), context) !== this.noPermission,\n this.resource.permissions.mode['@type']\n )*/\n } else { // No parameter provided\n console.warn('solid-ac-checker: you should define at least one of \"permission\" or \"no-permission\" attribute.');\n return;\n }\n\n if (displayElement) this.element.removeAttribute('hidden');\n },\n empty(): void {\n this.element.setAttribute('hidden', '');\n }\n};\n\nSib.register(SolidAcChecker);"]}
@@ -0,0 +1,87 @@
1
+ function _templateObject() {
2
+ const data = _taggedTemplateLiteral(["\n <div id=", " style=\"width:100%;height:100%;\"></div>\n "]);
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 { ListMixin } from '../mixins/listMixin.js';
15
+ import { StoreMixin } from '../mixins/storeMixin.js';
16
+ import { NextMixin } from '../mixins/nextMixin.js';
17
+ import { store } from '../libs/store/store.js';
18
+ import { uniqID } from '../libs/helpers.js';
19
+ import Calendar from '../_snowpack/pkg/tui-calendar.js';
20
+ import { html, render } from '../_snowpack/pkg/lit-html.js';
21
+ export const SolidCalendar = {
22
+ name: 'solid-calendar',
23
+ use: [ListMixin, StoreMixin, NextMixin],
24
+ initialState: {
25
+ subscriptions: null
26
+ },
27
+
28
+ created() {
29
+ //@ts-ignore
30
+ import("../_snowpack/pkg/tui-calendar/dist/tui-calendar.css.proxy.js");
31
+ const id = uniqID();
32
+ const template = html(_templateObject(), id);
33
+ render(template, this.element);
34
+ this.calendar = new Calendar(this.element.querySelector("#".concat(id)), {
35
+ defaultView: 'month'
36
+ });
37
+ this.calendar.on('clickSchedule', this.dispatchSelect.bind(this));
38
+ this.subscriptions = new Map();
39
+ },
40
+
41
+ get extra_context() {
42
+ return {
43
+ date: "http://www.w3.org/2001/XMLSchema#dateTime"
44
+ };
45
+ },
46
+
47
+ dispatchSelect(event) {
48
+ const resource = {
49
+ '@id': event['schedule'].id
50
+ };
51
+ this.element.dispatchEvent(new CustomEvent('resourceSelect', {
52
+ detail: {
53
+ resource: resource
54
+ }
55
+ }));
56
+ this.goToNext(resource);
57
+ },
58
+
59
+ async appendChildElt(resourceId) {
60
+ const resource = await store.getData(resourceId, this.context);
61
+ if (!resource) return;
62
+
63
+ if (!this.subscriptions.get(resourceId)) {
64
+ this.subscriptions.set(resourceId, PubSub.subscribe(resourceId, () => this.updateDOM()));
65
+ } // TODO : mixin gestion des enfants
66
+
67
+
68
+ const date = await resource['date'];
69
+ const name = await resource['name'];
70
+
71
+ if (name && date) {
72
+ this.calendar.createSchedules([{
73
+ id: resource['@id'],
74
+ title: name.toString(),
75
+ category: 'time',
76
+ start: date.toString()
77
+ }]);
78
+ }
79
+ },
80
+
81
+ empty() {
82
+ this.calendar.clear();
83
+ }
84
+
85
+ };
86
+ Sib.register(SolidCalendar);
87
+ //# sourceMappingURL=solid-calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["solid-calendar.ts"],"names":["Sib","ListMixin","StoreMixin","NextMixin","store","uniqID","Calendar","html","render","SolidCalendar","name","use","initialState","subscriptions","created","id","template","element","calendar","querySelector","defaultView","on","dispatchSelect","bind","Map","extra_context","date","event","resource","dispatchEvent","CustomEvent","detail","goToNext","appendChildElt","resourceId","getData","context","get","set","PubSub","subscribe","updateDOM","createSchedules","title","toString","category","start","empty","clear","register"],"mappings":"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","sourcesContent":["import { Sib } from '../libs/Sib';\nimport { ListMixin } from '../mixins/listMixin';\nimport { StoreMixin } from '../mixins/storeMixin';\nimport { NextMixin } from '../mixins/nextMixin';\nimport { store } from '../libs/store/store';\nimport { uniqID } from '../libs/helpers';\n\nimport Calendar from 'tui-calendar';\nimport { html, render } from 'lit-html';\n\nexport const SolidCalendar = {\n name: 'solid-calendar',\n use: [\n ListMixin,\n StoreMixin,\n NextMixin\n ],\n initialState: {\n subscriptions: null\n },\n created(): void {\n //@ts-ignore\n import('tui-calendar/dist/tui-calendar.css');\n const id = uniqID();\n const template = html`\n <div id=${id} style=\"width:100%;height:100%;\"></div>\n `;\n render(template, this.element);\n this.calendar = new Calendar(this.element.querySelector(`#${id}`), { defaultView: 'month' });\n this.calendar.on('clickSchedule', this.dispatchSelect.bind(this));\n this.subscriptions = new Map();\n },\n get extra_context(): object {\n return { date: \"http://www.w3.org/2001/XMLSchema#dateTime\" }\n },\n dispatchSelect(event: Event): void {\n const resource = { '@id': event['schedule'].id };\n this.element.dispatchEvent(\n new CustomEvent('resourceSelect', { detail: { resource: resource } }),\n );\n this.goToNext(resource);\n },\n async appendChildElt(resourceId: string) {\n const resource = await store.getData(resourceId, this.context);\n if(!resource) return;\n if (!this.subscriptions.get(resourceId)) {\n this.subscriptions.set(resourceId, PubSub.subscribe(resourceId, () => this.updateDOM()))\n } // TODO : mixin gestion des enfants\n const date = await resource['date'];\n const name = await resource['name'];\n\n if (name && date) {\n this.calendar.createSchedules([\n {\n id: resource['@id'],\n title: name.toString(),\n category: 'time',\n start: date.toString(),\n },\n ]);\n }\n },\n empty(): void {\n this.calendar.clear();\n }\n};\n\nSib.register(SolidCalendar);"]}
@@ -0,0 +1,111 @@
1
+ function _templateObject() {
2
+ const data = _taggedTemplateLiteral(["\n <button @click=", ">", "</button>\n ", "\n "]);
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 { base_context, store } from '../libs/store/store.js';
15
+ import { NextMixin } from '../mixins/nextMixin.js';
16
+ import { ValidationMixin } from '../mixins/validationMixin.js';
17
+ import { AttributeBinderMixin } from '../mixins/attributeBinderMixin.js';
18
+ import { html, render } from '../_snowpack/pkg/lit-html.js';
19
+ export const SolidDelete = {
20
+ name: 'solid-delete',
21
+ use: [NextMixin, ValidationMixin, AttributeBinderMixin],
22
+ attributes: {
23
+ dataSrc: {
24
+ type: String,
25
+ default: null,
26
+ callback: function () {
27
+ this.resourceId = this.dataSrc;
28
+ }
29
+ },
30
+ dataLabel: {
31
+ type: String,
32
+ default: null,
33
+ callback: function (newValue, oldValue) {
34
+ if (newValue !== oldValue) this.planRender();
35
+ }
36
+ },
37
+ extraContext: {
38
+ type: String,
39
+ default: null
40
+ }
41
+ },
42
+ initialState: {
43
+ renderPlanned: false
44
+ },
45
+
46
+ created() {
47
+ this.planRender();
48
+ },
49
+
50
+ planRender() {
51
+ if (!this.renderPlanned) {
52
+ this.renderPlanned = true;
53
+ setTimeout(() => {
54
+ this.render();
55
+ this.renderPlanned = false;
56
+ });
57
+ }
58
+ },
59
+
60
+ get context() {
61
+ let extraContextElement = this.extraContext ? document.getElementById(this.extraContext) : // take element extra context first
62
+ document.querySelector('[data-default-context]'); // ... or look for a default extra context
63
+
64
+ let extraContext = {};
65
+ if (extraContextElement) extraContext = JSON.parse(extraContextElement.textContent || "{}");
66
+ return { ...base_context,
67
+ ...extraContext
68
+ };
69
+ },
70
+
71
+ async delete(e) {
72
+ e.stopPropagation();
73
+ if (!this.dataSrc) return;
74
+ this.performAction(); // In validationMixin, method defining what to do according to the present attributes
75
+ },
76
+
77
+ deletion() {
78
+ return store.delete(this.dataSrc, this.context).then(response => {
79
+ if (!response.ok) return;
80
+ this.goToNext(null);
81
+ const eventData = {
82
+ detail: {
83
+ resource: {
84
+ "@id": this.dataSrc
85
+ }
86
+ },
87
+ bubbles: true
88
+ };
89
+ this.element.dispatchEvent(new CustomEvent('save', eventData));
90
+ this.element.dispatchEvent(new CustomEvent('resourceDeleted', eventData)); // Deprecated. To remove in 0.15
91
+ });
92
+ },
93
+
94
+ validateModal() {
95
+ // Send method to validationMixin, used by the dialog modal and performAction method
96
+ return this.deletion();
97
+ },
98
+
99
+ update() {
100
+ this.render();
101
+ },
102
+
103
+ async render() {
104
+ await this.replaceAttributesData(false);
105
+ const button = html(_templateObject(), this.delete.bind(this), this.dataLabel || this.t("solid-delete.button"), this.getModalDialog());
106
+ render(button, this.element);
107
+ }
108
+
109
+ };
110
+ Sib.register(SolidDelete);
111
+ //# sourceMappingURL=solid-delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["solid-delete.ts"],"names":["Sib","base_context","store","NextMixin","ValidationMixin","AttributeBinderMixin","html","render","SolidDelete","name","use","attributes","dataSrc","type","String","default","callback","resourceId","dataLabel","newValue","oldValue","planRender","extraContext","initialState","renderPlanned","created","setTimeout","context","extraContextElement","document","getElementById","querySelector","JSON","parse","textContent","delete","e","stopPropagation","performAction","deletion","then","response","ok","goToNext","eventData","detail","resource","bubbles","element","dispatchEvent","CustomEvent","validateModal","update","replaceAttributesData","button","bind","t","getModalDialog","register"],"mappings":"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","sourcesContent":["import { Sib } from '../libs/Sib';\nimport { base_context, store } from '../libs/store/store';\nimport { NextMixin } from '../mixins/nextMixin';\nimport { ValidationMixin } from '../mixins/validationMixin';\nimport { AttributeBinderMixin } from '../mixins/attributeBinderMixin';\n\nimport { html, render } from 'lit-html';\n\nexport const SolidDelete = {\n name: 'solid-delete',\n use: [NextMixin, ValidationMixin, AttributeBinderMixin],\n attributes: {\n dataSrc: {\n type: String,\n default: null,\n callback: function () {\n this.resourceId = this.dataSrc;\n },\n },\n dataLabel: {\n type: String,\n default: null,\n callback: function (newValue: string, oldValue: string) {\n if (newValue !== oldValue) this.planRender();\n },\n },\n extraContext: {\n type: String,\n default: null\n }\n },\n initialState: {\n renderPlanned: false,\n },\n created(): void {\n this.planRender();\n },\n planRender() {\n if (!this.renderPlanned) {\n this.renderPlanned = true;\n setTimeout(() => {\n this.render();\n this.renderPlanned = false;\n });\n }\n },\n get context(): object {\n let extraContextElement = this.extraContext ?\n document.getElementById(this.extraContext) : // take element extra context first\n document.querySelector('[data-default-context]'); // ... or look for a default extra context\n\n let extraContext = {};\n if (extraContextElement) extraContext = JSON.parse(extraContextElement.textContent || \"{}\");\n\n return { ...base_context, ...extraContext };\n },\n async delete(e: Event): Promise<void> {\n e.stopPropagation();\n if (!this.dataSrc) return;\n this.performAction(); // In validationMixin, method defining what to do according to the present attributes\n },\n deletion() {\n return store.delete(this.dataSrc, this.context).then(response => {\n if (!response.ok) return;\n this.goToNext(null);\n const eventData = { detail: { resource: { \"@id\": this.dataSrc } }, bubbles: true };\n this.element.dispatchEvent(new CustomEvent('save', eventData));\n this.element.dispatchEvent(new CustomEvent('resourceDeleted', eventData)); // Deprecated. To remove in 0.15\n })\n },\n validateModal() { // Send method to validationMixin, used by the dialog modal and performAction method\n return this.deletion();\n },\n update() {\n this.render();\n },\n async render(): Promise<void> {\n await this.replaceAttributesData(false);\n const button = html`\n <button @click=${this.delete.bind(this)}>${this.dataLabel || this.t(\"solid-delete.button\")}</button>\n ${this.getModalDialog()}\n `;\n render(button, this.element);\n }\n};\n\nSib.register(SolidDelete);"]}
@@ -0,0 +1,194 @@
1
+ function _templateObject3() {
2
+ const data = _taggedTemplateLiteral(["", ""]);
3
+
4
+ _templateObject3 = function () {
5
+ return data;
6
+ };
7
+
8
+ return data;
9
+ }
10
+
11
+ function _templateObject2() {
12
+ const data = _taggedTemplateLiteral(["", ""]);
13
+
14
+ _templateObject2 = function () {
15
+ return data;
16
+ };
17
+
18
+ return data;
19
+ }
20
+
21
+ function _templateObject() {
22
+ const data = _taggedTemplateLiteral(["\n <solid-display\n data-src=", "\n @click=", "\n @keydown=", "\n fields=", "\n ...=", "\n ></solid-display>\n "]);
23
+
24
+ _templateObject = function () {
25
+ return data;
26
+ };
27
+
28
+ return data;
29
+ }
30
+
31
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
32
+
33
+ import { Sib } from '../libs/Sib.js';
34
+ import { WidgetMixin } from '../mixins/widgetMixin.js';
35
+ import { ListMixin } from '../mixins/listMixin.js';
36
+ import { StoreMixin } from '../mixins/storeMixin.js';
37
+ import { PaginateMixin } from '../mixins/paginateMixin.js';
38
+ import { FilterMixin } from '../mixins/filterMixin.js';
39
+ import { CounterMixin } from '../mixins/counterMixin.js';
40
+ import { SorterMixin } from '../mixins/sorterMixin.js';
41
+ import { GrouperMixin } from '../mixins/grouperMixin.js';
42
+ import { FederationMixin } from '../mixins/federationMixin.js';
43
+ import { HighlighterMixin } from '../mixins/highlighterMixin.js';
44
+ import { NextMixin } from '../mixins/nextMixin.js';
45
+ import { RequiredMixin } from '../mixins/requiredMixin.js';
46
+ import { spread } from '../libs/lit-helpers.js';
47
+ import { html, render } from '../_snowpack/pkg/lit-html.js';
48
+ import { ifDefined } from '../_snowpack/pkg/lit-html/directives/if-defined.js';
49
+ export const SolidDisplay = {
50
+ name: 'solid-display',
51
+ use: [WidgetMixin, ListMixin, StoreMixin, PaginateMixin, GrouperMixin, CounterMixin, HighlighterMixin, FilterMixin, SorterMixin, RequiredMixin, FederationMixin, NextMixin],
52
+ attributes: {
53
+ defaultWidget: {
54
+ type: String,
55
+ default: 'solid-display-value'
56
+ }
57
+ },
58
+ initialState: {
59
+ activeSubscription: null,
60
+ removeActiveSubscription: null
61
+ },
62
+
63
+ created() {
64
+ // Set route active at initialization
65
+ const route = document.querySelector('solid-route[active]');
66
+ if (!route) return;
67
+ setTimeout(() => {
68
+ if (route['resourceId'] === this.resourceId) this.addActiveCallback();
69
+ });
70
+ },
71
+
72
+ detached() {
73
+ if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);
74
+ if (this.removeActiveSubscription) PubSub.unsubscribe(this.removeActiveSubscription);
75
+ },
76
+
77
+ // Update subscription when id changes
78
+ updateNavigateSubscription() {
79
+ if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);
80
+
81
+ if (this.resourceId) {
82
+ this.activeSubscription = PubSub.subscribe('enterRoute.' + this.resourceId, this.addActiveCallback.bind(this));
83
+ }
84
+ },
85
+
86
+ addActiveCallback() {
87
+ this.element.setAttribute('active', '');
88
+ this.removeActiveSubscription = PubSub.subscribe('leaveRoute', this.removeActiveCallback.bind(this));
89
+ },
90
+
91
+ removeActiveCallback() {
92
+ this.element.removeAttribute('active');
93
+ PubSub.unsubscribe(this.removeActiveSubscription);
94
+ },
95
+
96
+ get childTag() {
97
+ return this.element.dataset.child || this.element.tagName;
98
+ },
99
+
100
+ get defaultMultipleWidget() {
101
+ return 'solid-multiple';
102
+ },
103
+
104
+ get defaultSetWidget() {
105
+ return 'solid-set-default';
106
+ },
107
+
108
+ // Here "even.target" points to the content of the widgets of the children of solid-display
109
+ dispatchSelect(event, resourceId) {
110
+ const linkTarget = event.target.closest('a');
111
+ if (linkTarget && linkTarget.hasAttribute('href')) return;
112
+ const resource = {
113
+ "@id": resourceId
114
+ };
115
+ this.element.dispatchEvent(new CustomEvent('resourceSelect', {
116
+ detail: {
117
+ resource: resource
118
+ }
119
+ }));
120
+ this.goToNext(resource);
121
+ },
122
+
123
+ enterKeydownAction(event, resourceId) {
124
+ if (event.keyCode === 13) {
125
+ const resource = {
126
+ "@id": resourceId
127
+ };
128
+ this.goToNext(resource);
129
+ }
130
+ },
131
+
132
+ /**
133
+ * Returns template of a child element (resource)
134
+ * @param resourceId
135
+ * @param attributes
136
+ */
137
+ getChildTemplate(resourceId, attributes) {
138
+ let template = html(_templateObject(), resourceId, event => this.dispatchSelect(event, resourceId), event => this.enterKeydownAction(event, resourceId), ifDefined(this.fields), spread(attributes));
139
+ return template;
140
+ },
141
+
142
+ /**
143
+ * Creates and render the content of a single element (resource)
144
+ * @param parent
145
+ */
146
+ async appendSingleElt(parent) {
147
+ const fields = await this.getFields();
148
+ const widgetTemplates = await Promise.all( // generate all widget templates
149
+ fields.map(field => this.createWidgetTemplate(field)));
150
+ render(html(_templateObject2(), widgetTemplates), parent);
151
+ },
152
+
153
+ /**
154
+ * @override listMixin method to use litHtml
155
+ *
156
+ * Render resources from a container
157
+ * @param resources
158
+ * @param listPostProcessors
159
+ * @param div
160
+ * @param context
161
+ */
162
+ async renderDOM(resources, listPostProcessors, div, context) {
163
+ const attributes = this.getChildAttributes(); // get attributes of children only once
164
+ // and create a child template for each resource
165
+
166
+ const template = html(_templateObject3(), resources.map(r => r ? this.getChildTemplate(r['@id'], attributes) : null));
167
+ render(template, div);
168
+ const nextProcessor = listPostProcessors.shift();
169
+ if (nextProcessor) await nextProcessor(resources, listPostProcessors, div, context);
170
+ },
171
+
172
+ /**
173
+ * Get attributes to dispatch to children from current element
174
+ */
175
+ getChildAttributes() {
176
+ const attributes = {};
177
+
178
+ for (let attr of this.element.attributes) {
179
+ //copy widget and value attributes
180
+ if (attr.name.startsWith('value-') || attr.name.startsWith('label-') || attr.name.startsWith('placeholder-') || attr.name.startsWith('widget-') || attr.name.startsWith('class-') || attr.name.startsWith('multiple-') || attr.name.startsWith('editable-') || attr.name.startsWith('action-') || attr.name.startsWith('default-') || attr.name == 'extra-context') attributes[attr.name] = attr.value;
181
+ if (attr.name.startsWith('child-')) attributes[attr.name.replace(/^child-/, '')] = attr.value;
182
+
183
+ if (attr.name == 'next') {
184
+ attributes['role'] = 'button';
185
+ attributes['tabindex'] = '0';
186
+ }
187
+ }
188
+
189
+ return attributes;
190
+ }
191
+
192
+ };
193
+ Sib.register(SolidDisplay);
194
+ //# sourceMappingURL=solid-display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["solid-display.ts"],"names":["Sib","WidgetMixin","ListMixin","StoreMixin","PaginateMixin","FilterMixin","CounterMixin","SorterMixin","GrouperMixin","FederationMixin","HighlighterMixin","NextMixin","RequiredMixin","spread","html","render","ifDefined","SolidDisplay","name","use","attributes","defaultWidget","type","String","default","initialState","activeSubscription","removeActiveSubscription","created","route","document","querySelector","setTimeout","resourceId","addActiveCallback","detached","PubSub","unsubscribe","updateNavigateSubscription","subscribe","bind","element","setAttribute","removeActiveCallback","removeAttribute","childTag","dataset","child","tagName","defaultMultipleWidget","defaultSetWidget","dispatchSelect","event","linkTarget","target","closest","hasAttribute","resource","dispatchEvent","CustomEvent","detail","goToNext","enterKeydownAction","keyCode","getChildTemplate","template","fields","appendSingleElt","parent","getFields","widgetTemplates","Promise","all","map","field","createWidgetTemplate","renderDOM","resources","listPostProcessors","div","context","getChildAttributes","r","nextProcessor","shift","attr","startsWith","value","replace","register"],"mappings":"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","sourcesContent":["import { Sib } from '../libs/Sib';\nimport { WidgetMixin } from '../mixins/widgetMixin';\nimport { ListMixin } from '../mixins/listMixin';\nimport { StoreMixin } from '../mixins/storeMixin';\nimport { PaginateMixin } from '../mixins/paginateMixin';\nimport { FilterMixin } from '../mixins/filterMixin';\nimport { CounterMixin } from '../mixins/counterMixin';\nimport { SorterMixin } from '../mixins/sorterMixin';\nimport { GrouperMixin } from '../mixins/grouperMixin';\nimport { FederationMixin } from '../mixins/federationMixin';\nimport { HighlighterMixin } from '../mixins/highlighterMixin';\nimport { NextMixin } from '../mixins/nextMixin';\nimport { RequiredMixin } from '../mixins/requiredMixin';\nimport { spread } from '../libs/lit-helpers';\n\nimport { html, render } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nexport const SolidDisplay = {\n name: 'solid-display',\n use: [\n WidgetMixin,\n ListMixin,\n StoreMixin,\n PaginateMixin,\n GrouperMixin,\n CounterMixin,\n HighlighterMixin,\n FilterMixin,\n SorterMixin,\n RequiredMixin,\n FederationMixin,\n NextMixin,\n ],\n attributes: {\n defaultWidget: {\n type: String,\n default: 'solid-display-value',\n },\n },\n initialState: {\n activeSubscription: null,\n removeActiveSubscription: null,\n },\n created(): void {\n // Set route active at initialization\n const route = document.querySelector('solid-route[active]') as any;\n if (!route) return;\n setTimeout(() => {\n if (route['resourceId'] === this.resourceId) this.addActiveCallback();\n });\n },\n detached(): void {\n if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);\n if (this.removeActiveSubscription) PubSub.unsubscribe(this.removeActiveSubscription);\n },\n // Update subscription when id changes\n updateNavigateSubscription() {\n if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);\n\n if (this.resourceId) {\n this.activeSubscription = PubSub.subscribe(\n 'enterRoute.' + this.resourceId,\n this.addActiveCallback.bind(this)\n );\n }\n },\n addActiveCallback() {\n this.element.setAttribute('active', '');\n this.removeActiveSubscription = PubSub.subscribe(\n 'leaveRoute',\n this.removeActiveCallback.bind(this)\n );\n },\n removeActiveCallback() {\n this.element.removeAttribute('active');\n PubSub.unsubscribe(this.removeActiveSubscription);\n },\n get childTag(): string {\n return this.element.dataset.child || this.element.tagName;\n },\n get defaultMultipleWidget(): string {\n return 'solid-multiple';\n },\n get defaultSetWidget(): string {\n return 'solid-set-default';\n },\n // Here \"even.target\" points to the content of the widgets of the children of solid-display\n dispatchSelect(event: Event, resourceId: string): void {\n const linkTarget = (event!.target as Element).closest('a');\n if (linkTarget && linkTarget.hasAttribute('href')) return;\n const resource = { \"@id\": resourceId };\n this.element.dispatchEvent(\n new CustomEvent('resourceSelect', { detail: { resource: resource } }),\n );\n this.goToNext(resource);\n },\n \n enterKeydownAction (event, resourceId: string): void {\n if (event.keyCode === 13) {\n const resource = { \"@id\" : resourceId };\n this.goToNext(resource);\n }\n },\n /**\n * Returns template of a child element (resource)\n * @param resourceId\n * @param attributes\n */\n getChildTemplate(resourceId: string, attributes: object) {\n let template = html`\n <solid-display\n data-src=${resourceId}\n @click=${(event: Event) => this.dispatchSelect(event, resourceId)}\n @keydown=${(event: Event) => this.enterKeydownAction(event, resourceId)}\n fields=${ifDefined(this.fields)}\n ...=${spread(attributes)}\n ></solid-display>\n `\n return template;\n },\n\n /**\n * Creates and render the content of a single element (resource)\n * @param parent\n */\n async appendSingleElt(parent: HTMLElement): Promise<void> {\n const fields = await this.getFields();\n const widgetTemplates = await Promise.all( // generate all widget templates\n fields.map((field: string) => this.createWidgetTemplate(field))\n );\n render(html`${widgetTemplates}`, parent);\n },\n\n /**\n * @override listMixin method to use litHtml\n *\n * Render resources from a container\n * @param resources\n * @param listPostProcessors\n * @param div\n * @param context\n */\n async renderDOM(\n resources: object[],\n listPostProcessors: Function[],\n div: HTMLElement,\n context: string,\n ) {\n const attributes = this.getChildAttributes(); // get attributes of children only once\n // and create a child template for each resource\n const template = html`${resources.map(r => r ? this.getChildTemplate(r['@id'], attributes) : null)}`;\n render(template, div);\n\n const nextProcessor = listPostProcessors.shift();\n if (nextProcessor)\n await nextProcessor(\n resources,\n listPostProcessors,\n div,\n context\n );\n },\n\n /**\n * Get attributes to dispatch to children from current element\n */\n getChildAttributes() {\n const attributes:{[key:string]: string} = {};\n for (let attr of this.element.attributes) {\n //copy widget and value attributes\n if (\n attr.name.startsWith('value-') ||\n attr.name.startsWith('label-') ||\n attr.name.startsWith('placeholder-') ||\n attr.name.startsWith('widget-') ||\n attr.name.startsWith('class-') ||\n attr.name.startsWith('multiple-') ||\n attr.name.startsWith('editable-') ||\n attr.name.startsWith('action-') ||\n attr.name.startsWith('default-') ||\n attr.name == 'extra-context'\n )\n attributes[attr.name] = attr.value;\n if (attr.name.startsWith('child-'))\n attributes[attr.name.replace(/^child-/, '')] = attr.value;\n if (attr.name == 'next') {\n attributes['role'] = 'button';\n attributes['tabindex'] = '0';\n }\n }\n return attributes;\n }\n};\n\nSib.register(SolidDisplay);\n"]}