@supersoniks/concorde 4.8.0 → 4.9.1

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 (701) hide show
  1. package/.github/workflows/ci.yml +21 -0
  2. package/.github-export-ignore +30 -0
  3. package/.gitlab-ci.yml +13 -0
  4. package/CONTRIBUTING.md +59 -0
  5. package/DEV.md +54 -0
  6. package/LICENSE +21 -0
  7. package/OPEN_SOURCE_CHECKPOINT.md +133 -0
  8. package/README.md +29 -15
  9. package/build-infos.json +1 -1
  10. package/concorde-core.bundle.js +271 -271
  11. package/concorde-core.es.js +4503 -4389
  12. package/dist/concorde-core.bundle.js +271 -271
  13. package/dist/concorde-core.es.js +4503 -4389
  14. package/dist/docs-mock-api-sw.js +3 -2
  15. package/dist/docs-mock-api-sw.js.map +2 -2
  16. package/dist/js/components.js +12 -0
  17. package/dist/js/components.js.map +1 -0
  18. package/dist/js/concorde-loaded.js +5 -0
  19. package/dist/js/concorde-loaded.js.map +1 -0
  20. package/dist/js/core/_types/endpoint.js +5 -0
  21. package/dist/js/core/_types/endpoint.js.map +1 -0
  22. package/dist/js/core/_types/key.js +2 -0
  23. package/dist/js/core/_types/key.js.map +1 -0
  24. package/dist/js/core/_types/types.js +3 -0
  25. package/dist/js/core/_types/types.js.map +1 -0
  26. package/dist/js/core/components/functional/date/date.js +272 -0
  27. package/dist/js/core/components/functional/date/date.js.map +1 -0
  28. package/dist/js/core/components/functional/example/example.js +44 -0
  29. package/dist/js/core/components/functional/example/example.js.map +1 -0
  30. package/dist/js/core/components/functional/fetch/fetch.js +79 -0
  31. package/dist/js/core/components/functional/fetch/fetch.js.map +1 -0
  32. package/dist/js/core/components/functional/functional.js +17 -0
  33. package/dist/js/core/components/functional/functional.js.map +1 -0
  34. package/dist/js/core/components/functional/if/if.js +39 -0
  35. package/dist/js/core/components/functional/if/if.js.map +1 -0
  36. package/dist/js/core/components/functional/list/list.js +341 -0
  37. package/dist/js/core/components/functional/list/list.js.map +1 -0
  38. package/dist/js/core/components/functional/mix/mix.js +103 -0
  39. package/dist/js/core/components/functional/mix/mix.js.map +1 -0
  40. package/dist/js/core/components/functional/queue/queue.js +386 -0
  41. package/dist/js/core/components/functional/queue/queue.js.map +1 -0
  42. package/dist/js/core/components/functional/router/redirect.js +54 -0
  43. package/dist/js/core/components/functional/router/redirect.js.map +1 -0
  44. package/dist/js/core/components/functional/router/router.js +179 -0
  45. package/dist/js/core/components/functional/router/router.js.map +1 -0
  46. package/dist/js/core/components/functional/sdui/SDUIDescriptorTransformer.js +216 -0
  47. package/dist/js/core/components/functional/sdui/SDUIDescriptorTransformer.js.map +1 -0
  48. package/dist/js/core/components/functional/sdui/default-library.json +108 -0
  49. package/dist/js/core/components/functional/sdui/sdui-utils.js +64 -0
  50. package/dist/js/core/components/functional/sdui/sdui-utils.js.map +1 -0
  51. package/dist/js/core/components/functional/sdui/sdui.js +266 -0
  52. package/dist/js/core/components/functional/sdui/sdui.js.map +1 -0
  53. package/dist/js/core/components/functional/sdui/types.js +2 -0
  54. package/dist/js/core/components/functional/sdui/types.js.map +1 -0
  55. package/dist/js/core/components/functional/sonic-scope/sonic-scope.js +22 -0
  56. package/dist/js/core/components/functional/sonic-scope/sonic-scope.js.map +1 -0
  57. package/dist/js/core/components/functional/states/states.js +172 -0
  58. package/dist/js/core/components/functional/states/states.js.map +1 -0
  59. package/dist/js/core/components/functional/submit/submit.js +284 -0
  60. package/dist/js/core/components/functional/submit/submit.js.map +1 -0
  61. package/dist/js/core/components/functional/subscriber/subscriber.js +39 -0
  62. package/dist/js/core/components/functional/subscriber/subscriber.js.map +1 -0
  63. package/dist/js/core/components/functional/translation/translation.js +28 -0
  64. package/dist/js/core/components/functional/translation/translation.js.map +1 -0
  65. package/dist/js/core/components/functional/value/value.js +28 -0
  66. package/dist/js/core/components/functional/value/value.js.map +1 -0
  67. package/dist/js/core/components/ui/_css/scroll.js +25 -0
  68. package/dist/js/core/components/ui/_css/scroll.js.map +1 -0
  69. package/dist/js/core/components/ui/_css/shadow.js +22 -0
  70. package/dist/js/core/components/ui/_css/shadow.js.map +1 -0
  71. package/dist/js/core/components/ui/_css/size.js +36 -0
  72. package/dist/js/core/components/ui/_css/size.js.map +1 -0
  73. package/dist/js/core/components/ui/_css/type.js +92 -0
  74. package/dist/js/core/components/ui/_css/type.js.map +1 -0
  75. package/dist/js/core/components/ui/alert/alert.js +213 -0
  76. package/dist/js/core/components/ui/alert/alert.js.map +1 -0
  77. package/dist/js/core/components/ui/alert-messages/alert-messages.js +68 -0
  78. package/dist/js/core/components/ui/alert-messages/alert-messages.js.map +1 -0
  79. package/dist/js/core/components/ui/badge/badge.js +199 -0
  80. package/dist/js/core/components/ui/badge/badge.js.map +1 -0
  81. package/dist/js/core/components/ui/button/button.js +697 -0
  82. package/dist/js/core/components/ui/button/button.js.map +1 -0
  83. package/dist/js/core/components/ui/captcha/altchaStyles.js +226 -0
  84. package/dist/js/core/components/ui/captcha/altchaStyles.js.map +1 -0
  85. package/dist/js/core/components/ui/captcha/captcha.js +167 -0
  86. package/dist/js/core/components/ui/captcha/captcha.js.map +1 -0
  87. package/dist/js/core/components/ui/card/card-footer.js +26 -0
  88. package/dist/js/core/components/ui/card/card-footer.js.map +1 -0
  89. package/dist/js/core/components/ui/card/card-header-descripton.js +30 -0
  90. package/dist/js/core/components/ui/card/card-header-descripton.js.map +1 -0
  91. package/dist/js/core/components/ui/card/card-header.js +79 -0
  92. package/dist/js/core/components/ui/card/card-header.js.map +1 -0
  93. package/dist/js/core/components/ui/card/card-main.js +26 -0
  94. package/dist/js/core/components/ui/card/card-main.js.map +1 -0
  95. package/dist/js/core/components/ui/card/card.js +67 -0
  96. package/dist/js/core/components/ui/card/card.js.map +1 -0
  97. package/dist/js/core/components/ui/divider/divider.js +200 -0
  98. package/dist/js/core/components/ui/divider/divider.js.map +1 -0
  99. package/dist/js/core/components/ui/form/checkbox/checkbox.js +257 -0
  100. package/dist/js/core/components/ui/form/checkbox/checkbox.js.map +1 -0
  101. package/dist/js/core/components/ui/form/css/form-control.js +393 -0
  102. package/dist/js/core/components/ui/form/css/form-control.js.map +1 -0
  103. package/dist/js/core/components/ui/form/fieldset/fieldset.js +124 -0
  104. package/dist/js/core/components/ui/form/fieldset/fieldset.js.map +1 -0
  105. package/dist/js/core/components/ui/form/fieldset/legend-description.js +38 -0
  106. package/dist/js/core/components/ui/form/fieldset/legend-description.js.map +1 -0
  107. package/dist/js/core/components/ui/form/fieldset/legend.js +130 -0
  108. package/dist/js/core/components/ui/form/fieldset/legend.js.map +1 -0
  109. package/dist/js/core/components/ui/form/form-actions/form-actions.js +47 -0
  110. package/dist/js/core/components/ui/form/form-actions/form-actions.js.map +1 -0
  111. package/dist/js/core/components/ui/form/form-layout/form-layout.js +84 -0
  112. package/dist/js/core/components/ui/form/form-layout/form-layout.js.map +1 -0
  113. package/dist/js/core/components/ui/form/input/input.js +316 -0
  114. package/dist/js/core/components/ui/form/input/input.js.map +1 -0
  115. package/dist/js/core/components/ui/form/input/password-helper.js +134 -0
  116. package/dist/js/core/components/ui/form/input/password-helper.js.map +1 -0
  117. package/dist/js/core/components/ui/form/input/same-value-helper.js +85 -0
  118. package/dist/js/core/components/ui/form/input/same-value-helper.js.map +1 -0
  119. package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js +405 -0
  120. package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js.map +1 -0
  121. package/dist/js/core/components/ui/form/radio/radio.js +63 -0
  122. package/dist/js/core/components/ui/form/radio/radio.js.map +1 -0
  123. package/dist/js/core/components/ui/form/select/select.js +323 -0
  124. package/dist/js/core/components/ui/form/select/select.js.map +1 -0
  125. package/dist/js/core/components/ui/form/switch/switch.js +90 -0
  126. package/dist/js/core/components/ui/form/switch/switch.js.map +1 -0
  127. package/dist/js/core/components/ui/form/textarea/textarea.js +162 -0
  128. package/dist/js/core/components/ui/form/textarea/textarea.js.map +1 -0
  129. package/dist/js/core/components/ui/group/group.js +128 -0
  130. package/dist/js/core/components/ui/group/group.js.map +1 -0
  131. package/dist/js/core/components/ui/icon/icon.js +129 -0
  132. package/dist/js/core/components/ui/icon/icon.js.map +1 -0
  133. package/dist/js/core/components/ui/icon/icons.js +163 -0
  134. package/dist/js/core/components/ui/icon/icons.js.map +1 -0
  135. package/dist/js/core/components/ui/icon/icons.json +1 -0
  136. package/dist/js/core/components/ui/image/image.js +160 -0
  137. package/dist/js/core/components/ui/image/image.js.map +1 -0
  138. package/dist/js/core/components/ui/link/link.js +125 -0
  139. package/dist/js/core/components/ui/link/link.js.map +1 -0
  140. package/dist/js/core/components/ui/loader/loader.js +106 -0
  141. package/dist/js/core/components/ui/loader/loader.js.map +1 -0
  142. package/dist/js/core/components/ui/loader/styles/fixed.js +56 -0
  143. package/dist/js/core/components/ui/loader/styles/fixed.js.map +1 -0
  144. package/dist/js/core/components/ui/loader/styles/inline.js +70 -0
  145. package/dist/js/core/components/ui/loader/styles/inline.js.map +1 -0
  146. package/dist/js/core/components/ui/menu/menu-item.js +35 -0
  147. package/dist/js/core/components/ui/menu/menu-item.js.map +1 -0
  148. package/dist/js/core/components/ui/menu/menu.js +436 -0
  149. package/dist/js/core/components/ui/menu/menu.js.map +1 -0
  150. package/dist/js/core/components/ui/modal/modal-actions.js +44 -0
  151. package/dist/js/core/components/ui/modal/modal-actions.js.map +1 -0
  152. package/dist/js/core/components/ui/modal/modal-close.js +56 -0
  153. package/dist/js/core/components/ui/modal/modal-close.js.map +1 -0
  154. package/dist/js/core/components/ui/modal/modal-content.js +27 -0
  155. package/dist/js/core/components/ui/modal/modal-content.js.map +1 -0
  156. package/dist/js/core/components/ui/modal/modal-subtitle.js +34 -0
  157. package/dist/js/core/components/ui/modal/modal-subtitle.js.map +1 -0
  158. package/dist/js/core/components/ui/modal/modal-title.js +35 -0
  159. package/dist/js/core/components/ui/modal/modal-title.js.map +1 -0
  160. package/dist/js/core/components/ui/modal/modal-utils.js +32 -0
  161. package/dist/js/core/components/ui/modal/modal-utils.js.map +1 -0
  162. package/dist/js/core/components/ui/modal/modal.js +568 -0
  163. package/dist/js/core/components/ui/modal/modal.js.map +1 -0
  164. package/dist/js/core/components/ui/pop/pop.js +337 -0
  165. package/dist/js/core/components/ui/pop/pop.js.map +1 -0
  166. package/dist/js/core/components/ui/progress/progress.js +164 -0
  167. package/dist/js/core/components/ui/progress/progress.js.map +1 -0
  168. package/dist/js/core/components/ui/table/table-caption.js +29 -0
  169. package/dist/js/core/components/ui/table/table-caption.js.map +1 -0
  170. package/dist/js/core/components/ui/table/table-tbody.js +41 -0
  171. package/dist/js/core/components/ui/table/table-tbody.js.map +1 -0
  172. package/dist/js/core/components/ui/table/table-td.js +69 -0
  173. package/dist/js/core/components/ui/table/table-td.js.map +1 -0
  174. package/dist/js/core/components/ui/table/table-tfoot.js +28 -0
  175. package/dist/js/core/components/ui/table/table-tfoot.js.map +1 -0
  176. package/dist/js/core/components/ui/table/table-th.js +80 -0
  177. package/dist/js/core/components/ui/table/table-th.js.map +1 -0
  178. package/dist/js/core/components/ui/table/table-thead.js +26 -0
  179. package/dist/js/core/components/ui/table/table-thead.js.map +1 -0
  180. package/dist/js/core/components/ui/table/table-tr.js +67 -0
  181. package/dist/js/core/components/ui/table/table-tr.js.map +1 -0
  182. package/dist/js/core/components/ui/table/table.js +106 -0
  183. package/dist/js/core/components/ui/table/table.js.map +1 -0
  184. package/dist/js/core/components/ui/theme/theme-collection/core-variables.js +74 -0
  185. package/dist/js/core/components/ui/theme/theme-collection/core-variables.js.map +1 -0
  186. package/dist/js/core/components/ui/theme/theme-collection/dark.js +39 -0
  187. package/dist/js/core/components/ui/theme/theme-collection/dark.js.map +1 -0
  188. package/dist/js/core/components/ui/theme/theme-collection/light.js +32 -0
  189. package/dist/js/core/components/ui/theme/theme-collection/light.js.map +1 -0
  190. package/dist/js/core/components/ui/theme/theme.js +150 -0
  191. package/dist/js/core/components/ui/theme/theme.js.map +1 -0
  192. package/dist/js/core/components/ui/toast/message-subscriber.js +41 -0
  193. package/dist/js/core/components/ui/toast/message-subscriber.js.map +1 -0
  194. package/dist/js/core/components/ui/toast/toast-item.js +379 -0
  195. package/dist/js/core/components/ui/toast/toast-item.js.map +1 -0
  196. package/dist/js/core/components/ui/toast/toast.js +269 -0
  197. package/dist/js/core/components/ui/toast/toast.js.map +1 -0
  198. package/dist/js/core/components/ui/toast/types.js +2 -0
  199. package/dist/js/core/components/ui/toast/types.js.map +1 -0
  200. package/dist/js/core/components/ui/tooltip/tooltip.js +219 -0
  201. package/dist/js/core/components/ui/tooltip/tooltip.js.map +1 -0
  202. package/dist/js/core/components/ui/ui.js +41 -0
  203. package/dist/js/core/components/ui/ui.js.map +1 -0
  204. package/dist/js/core/core.js +14 -0
  205. package/dist/js/core/core.js.map +1 -0
  206. package/dist/js/core/decorators/Subscriber.js +9 -0
  207. package/dist/js/core/decorators/Subscriber.js.map +1 -0
  208. package/dist/js/core/decorators/api.js +611 -0
  209. package/dist/js/core/decorators/api.js.map +1 -0
  210. package/dist/js/core/decorators/lifecycle.js +67 -0
  211. package/dist/js/core/decorators/lifecycle.js.map +1 -0
  212. package/dist/js/core/decorators/subscriber/ancestorAttribute.js +27 -0
  213. package/dist/js/core/decorators/subscriber/ancestorAttribute.js.map +1 -0
  214. package/dist/js/core/decorators/subscriber/autoFill.js +26 -0
  215. package/dist/js/core/decorators/subscriber/autoFill.js.map +1 -0
  216. package/dist/js/core/decorators/subscriber/autoSubscribe.js +46 -0
  217. package/dist/js/core/decorators/subscriber/autoSubscribe.js.map +1 -0
  218. package/dist/js/core/decorators/subscriber/bind.js +150 -0
  219. package/dist/js/core/decorators/subscriber/bind.js.map +1 -0
  220. package/dist/js/core/decorators/subscriber/common.js +44 -0
  221. package/dist/js/core/decorators/subscriber/common.js.map +1 -0
  222. package/dist/js/core/decorators/subscriber/dynamicPath.js +75 -0
  223. package/dist/js/core/decorators/subscriber/dynamicPath.js.map +1 -0
  224. package/dist/js/core/decorators/subscriber/dynamicPropertyWatch.js +138 -0
  225. package/dist/js/core/decorators/subscriber/dynamicPropertyWatch.js.map +1 -0
  226. package/dist/js/core/decorators/subscriber/handle.js +22 -0
  227. package/dist/js/core/decorators/subscriber/handle.js.map +1 -0
  228. package/dist/js/core/decorators/subscriber/onAssign.js +199 -0
  229. package/dist/js/core/decorators/subscriber/onAssign.js.map +1 -0
  230. package/dist/js/core/decorators/subscriber/publish.js +108 -0
  231. package/dist/js/core/decorators/subscriber/publish.js.map +1 -0
  232. package/dist/js/core/decorators/subscriber/publisherPath.js +16 -0
  233. package/dist/js/core/decorators/subscriber/publisherPath.js.map +1 -0
  234. package/dist/js/core/decorators/subscriber/subscribe.js +20 -0
  235. package/dist/js/core/decorators/subscriber/subscribe.js.map +1 -0
  236. package/dist/js/core/directives/DataProvider.js +127 -0
  237. package/dist/js/core/directives/DataProvider.js.map +1 -0
  238. package/dist/js/core/directives/Wording.js +221 -0
  239. package/dist/js/core/directives/Wording.js.map +1 -0
  240. package/dist/js/core/mixins/Fetcher.js +325 -0
  241. package/dist/js/core/mixins/Fetcher.js.map +1 -0
  242. package/dist/js/core/mixins/FormCheckable.js +313 -0
  243. package/dist/js/core/mixins/FormCheckable.js.map +1 -0
  244. package/dist/js/core/mixins/FormElement.js +304 -0
  245. package/dist/js/core/mixins/FormElement.js.map +1 -0
  246. package/dist/js/core/mixins/FormInput.js +82 -0
  247. package/dist/js/core/mixins/FormInput.js.map +1 -0
  248. package/dist/js/core/mixins/Subscriber.js +354 -0
  249. package/dist/js/core/mixins/Subscriber.js.map +1 -0
  250. package/dist/js/core/mixins/TemplatesContainer.js +70 -0
  251. package/dist/js/core/mixins/TemplatesContainer.js.map +1 -0
  252. package/dist/js/core/mixins/mixins.js +7 -0
  253. package/dist/js/core/mixins/mixins.js.map +1 -0
  254. package/dist/js/core/utils/AncestorAttributeObserver.js +140 -0
  255. package/dist/js/core/utils/AncestorAttributeObserver.js.map +1 -0
  256. package/dist/js/core/utils/Arrays.js +141 -0
  257. package/dist/js/core/utils/Arrays.js.map +1 -0
  258. package/dist/js/core/utils/DataBindObserver.js +265 -0
  259. package/dist/js/core/utils/DataBindObserver.js.map +1 -0
  260. package/dist/js/core/utils/Electron.js +14 -0
  261. package/dist/js/core/utils/Electron.js.map +1 -0
  262. package/dist/js/core/utils/Format.js +43 -0
  263. package/dist/js/core/utils/Format.js.map +1 -0
  264. package/dist/js/core/utils/HTML.js +248 -0
  265. package/dist/js/core/utils/HTML.js.map +1 -0
  266. package/dist/js/core/utils/LocationHandler.js +143 -0
  267. package/dist/js/core/utils/LocationHandler.js.map +1 -0
  268. package/dist/js/core/utils/Objects.js +111 -0
  269. package/dist/js/core/utils/Objects.js.map +1 -0
  270. package/dist/js/core/utils/PublisherProxy.js +946 -0
  271. package/dist/js/core/utils/PublisherProxy.js.map +1 -0
  272. package/dist/js/core/utils/Utils.js +19 -0
  273. package/dist/js/core/utils/Utils.js.map +1 -0
  274. package/dist/js/core/utils/aesCrypto.js +98 -0
  275. package/dist/js/core/utils/aesCrypto.js.map +1 -0
  276. package/dist/js/core/utils/api.js +574 -0
  277. package/dist/js/core/utils/api.js.map +1 -0
  278. package/dist/js/core/utils/dataProviderKey.js +64 -0
  279. package/dist/js/core/utils/dataProviderKey.js.map +1 -0
  280. package/dist/js/core/utils/endpoint.js +74 -0
  281. package/dist/js/core/utils/endpoint.js.map +1 -0
  282. package/dist/js/core/utils/route.js +149 -0
  283. package/dist/js/core/utils/route.js.map +1 -0
  284. package/dist/js/core/utils/url-pattern.js +3 -0
  285. package/dist/js/core/utils/url-pattern.js.map +1 -0
  286. package/dist/js/dataprovider.js +2 -0
  287. package/dist/js/dataprovider.js.map +1 -0
  288. package/dist/js/decorators.js +39 -0
  289. package/dist/js/decorators.js.map +1 -0
  290. package/dist/js/directives.js +30 -0
  291. package/dist/js/directives.js.map +1 -0
  292. package/dist/js/index.js +8 -0
  293. package/dist/js/index.js.map +1 -0
  294. package/dist/js/mixins.js +23 -0
  295. package/dist/js/mixins.js.map +1 -0
  296. package/dist/js/test-utils/TestUtils.js +10 -0
  297. package/dist/js/test-utils/TestUtils.js.map +1 -0
  298. package/dist/js/utils.js +41 -0
  299. package/dist/js/utils.js.map +1 -0
  300. package/dist/types/components.d.ts +5 -0
  301. package/dist/types/components.d.ts.map +1 -0
  302. package/dist/types/concorde-loaded.d.ts +2 -0
  303. package/dist/types/concorde-loaded.d.ts.map +1 -0
  304. package/dist/types/core/_types/endpoint.d.ts +5 -0
  305. package/dist/types/core/_types/endpoint.d.ts.map +1 -0
  306. package/dist/types/core/_types/key.d.ts +2 -0
  307. package/dist/types/core/_types/key.d.ts.map +1 -0
  308. package/dist/types/core/_types/types.d.ts +28 -0
  309. package/dist/types/core/_types/types.d.ts.map +1 -0
  310. package/dist/types/core/components/functional/date/date.d.ts +52 -0
  311. package/dist/types/core/components/functional/date/date.d.ts.map +1 -0
  312. package/dist/types/core/components/functional/example/example.d.ts +15 -0
  313. package/dist/types/core/components/functional/example/example.d.ts.map +1 -0
  314. package/dist/types/core/components/functional/fetch/fetch.d.ts +102 -0
  315. package/dist/types/core/components/functional/fetch/fetch.d.ts.map +1 -0
  316. package/dist/types/core/components/functional/functional.d.ts +17 -0
  317. package/dist/types/core/components/functional/functional.d.ts.map +1 -0
  318. package/dist/types/core/components/functional/if/if.d.ts +13 -0
  319. package/dist/types/core/components/functional/if/if.d.ts.map +1 -0
  320. package/dist/types/core/components/functional/list/list.d.ts +149 -0
  321. package/dist/types/core/components/functional/list/list.d.ts.map +1 -0
  322. package/dist/types/core/components/functional/mix/mix.d.ts +23 -0
  323. package/dist/types/core/components/functional/mix/mix.d.ts.map +1 -0
  324. package/dist/types/core/components/functional/queue/queue.d.ts +79 -0
  325. package/dist/types/core/components/functional/queue/queue.d.ts.map +1 -0
  326. package/dist/types/core/components/functional/router/redirect.d.ts +19 -0
  327. package/dist/types/core/components/functional/router/redirect.d.ts.map +1 -0
  328. package/dist/types/core/components/functional/router/router.d.ts +46 -0
  329. package/dist/types/core/components/functional/router/router.d.ts.map +1 -0
  330. package/dist/types/core/components/functional/sdui/SDUIDescriptorTransformer.d.ts +59 -0
  331. package/dist/types/core/components/functional/sdui/SDUIDescriptorTransformer.d.ts.map +1 -0
  332. package/dist/types/core/components/functional/sdui/sdui-utils.d.ts +6 -0
  333. package/dist/types/core/components/functional/sdui/sdui-utils.d.ts.map +1 -0
  334. package/dist/types/core/components/functional/sdui/sdui.d.ts +145 -0
  335. package/dist/types/core/components/functional/sdui/sdui.d.ts.map +1 -0
  336. package/dist/types/core/components/functional/sdui/types.d.ts +38 -0
  337. package/dist/types/core/components/functional/sdui/types.d.ts.map +1 -0
  338. package/dist/types/core/components/functional/sonic-scope/sonic-scope.d.ts +6 -0
  339. package/dist/types/core/components/functional/sonic-scope/sonic-scope.d.ts.map +1 -0
  340. package/dist/types/core/components/functional/states/states.d.ts +42 -0
  341. package/dist/types/core/components/functional/states/states.d.ts.map +1 -0
  342. package/dist/types/core/components/functional/submit/submit.d.ts +37 -0
  343. package/dist/types/core/components/functional/submit/submit.d.ts.map +1 -0
  344. package/dist/types/core/components/functional/subscriber/subscriber.d.ts +13 -0
  345. package/dist/types/core/components/functional/subscriber/subscriber.d.ts.map +1 -0
  346. package/dist/types/core/components/functional/translation/translation.d.ts +7 -0
  347. package/dist/types/core/components/functional/translation/translation.d.ts.map +1 -0
  348. package/dist/types/core/components/functional/value/value.d.ts +8 -0
  349. package/dist/types/core/components/functional/value/value.d.ts.map +1 -0
  350. package/dist/types/core/components/ui/_css/scroll.d.ts +2 -0
  351. package/dist/types/core/components/ui/_css/scroll.d.ts.map +1 -0
  352. package/dist/types/core/components/ui/_css/shadow.d.ts +3 -0
  353. package/dist/types/core/components/ui/_css/shadow.d.ts.map +1 -0
  354. package/dist/types/core/components/ui/_css/size.d.ts +3 -0
  355. package/dist/types/core/components/ui/_css/size.d.ts.map +1 -0
  356. package/dist/types/core/components/ui/_css/type.d.ts +3 -0
  357. package/dist/types/core/components/ui/_css/type.d.ts.map +1 -0
  358. package/dist/types/core/components/ui/alert/alert.d.ts +37 -0
  359. package/dist/types/core/components/ui/alert/alert.d.ts.map +1 -0
  360. package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts +15 -0
  361. package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts.map +1 -0
  362. package/dist/types/core/components/ui/badge/badge.d.ts +27 -0
  363. package/dist/types/core/components/ui/badge/badge.d.ts.map +1 -0
  364. package/dist/types/core/components/ui/button/button.d.ts +180 -0
  365. package/dist/types/core/components/ui/button/button.d.ts.map +1 -0
  366. package/dist/types/core/components/ui/captcha/altchaStyles.d.ts +2 -0
  367. package/dist/types/core/components/ui/captcha/altchaStyles.d.ts.map +1 -0
  368. package/dist/types/core/components/ui/captcha/captcha.d.ts +30 -0
  369. package/dist/types/core/components/ui/captcha/captcha.d.ts.map +1 -0
  370. package/dist/types/core/components/ui/card/card-footer.d.ts +6 -0
  371. package/dist/types/core/components/ui/card/card-footer.d.ts.map +1 -0
  372. package/dist/types/core/components/ui/card/card-header-descripton.d.ts +6 -0
  373. package/dist/types/core/components/ui/card/card-header-descripton.d.ts.map +1 -0
  374. package/dist/types/core/components/ui/card/card-header.d.ts +9 -0
  375. package/dist/types/core/components/ui/card/card-header.d.ts.map +1 -0
  376. package/dist/types/core/components/ui/card/card-main.d.ts +6 -0
  377. package/dist/types/core/components/ui/card/card-main.d.ts.map +1 -0
  378. package/dist/types/core/components/ui/card/card.d.ts +13 -0
  379. package/dist/types/core/components/ui/card/card.d.ts.map +1 -0
  380. package/dist/types/core/components/ui/divider/divider.d.ts +16 -0
  381. package/dist/types/core/components/ui/divider/divider.d.ts.map +1 -0
  382. package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts +176 -0
  383. package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts.map +1 -0
  384. package/dist/types/core/components/ui/form/css/form-control.d.ts +5 -0
  385. package/dist/types/core/components/ui/form/css/form-control.d.ts.map +1 -0
  386. package/dist/types/core/components/ui/form/fieldset/fieldset.d.ts +24 -0
  387. package/dist/types/core/components/ui/form/fieldset/fieldset.d.ts.map +1 -0
  388. package/dist/types/core/components/ui/form/fieldset/legend-description.d.ts +6 -0
  389. package/dist/types/core/components/ui/form/fieldset/legend-description.d.ts.map +1 -0
  390. package/dist/types/core/components/ui/form/fieldset/legend.d.ts +17 -0
  391. package/dist/types/core/components/ui/form/fieldset/legend.d.ts.map +1 -0
  392. package/dist/types/core/components/ui/form/form-actions/form-actions.d.ts +8 -0
  393. package/dist/types/core/components/ui/form/form-actions/form-actions.d.ts.map +1 -0
  394. package/dist/types/core/components/ui/form/form-layout/form-layout.d.ts +13 -0
  395. package/dist/types/core/components/ui/form/form-layout/form-layout.d.ts.map +1 -0
  396. package/dist/types/core/components/ui/form/input/input.d.ts +123 -0
  397. package/dist/types/core/components/ui/form/input/input.d.ts.map +1 -0
  398. package/dist/types/core/components/ui/form/input/password-helper.d.ts +26 -0
  399. package/dist/types/core/components/ui/form/input/password-helper.d.ts.map +1 -0
  400. package/dist/types/core/components/ui/form/input/same-value-helper.d.ts +17 -0
  401. package/dist/types/core/components/ui/form/input/same-value-helper.d.ts.map +1 -0
  402. package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts +155 -0
  403. package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts.map +1 -0
  404. package/dist/types/core/components/ui/form/radio/radio.d.ts +15 -0
  405. package/dist/types/core/components/ui/form/radio/radio.d.ts.map +1 -0
  406. package/dist/types/core/components/ui/form/select/select.d.ts +59 -0
  407. package/dist/types/core/components/ui/form/select/select.d.ts.map +1 -0
  408. package/dist/types/core/components/ui/form/switch/switch.d.ts +6 -0
  409. package/dist/types/core/components/ui/form/switch/switch.d.ts.map +1 -0
  410. package/dist/types/core/components/ui/form/textarea/textarea.d.ts +94 -0
  411. package/dist/types/core/components/ui/form/textarea/textarea.d.ts.map +1 -0
  412. package/dist/types/core/components/ui/group/group.d.ts +17 -0
  413. package/dist/types/core/components/ui/group/group.d.ts.map +1 -0
  414. package/dist/types/core/components/ui/icon/icon.d.ts +28 -0
  415. package/dist/types/core/components/ui/icon/icon.d.ts.map +1 -0
  416. package/dist/types/core/components/ui/icon/icons.d.ts +11 -0
  417. package/dist/types/core/components/ui/icon/icons.d.ts.map +1 -0
  418. package/dist/types/core/components/ui/image/image.d.ts +16 -0
  419. package/dist/types/core/components/ui/image/image.d.ts.map +1 -0
  420. package/dist/types/core/components/ui/link/link.d.ts +30 -0
  421. package/dist/types/core/components/ui/link/link.d.ts.map +1 -0
  422. package/dist/types/core/components/ui/loader/loader.d.ts +24 -0
  423. package/dist/types/core/components/ui/loader/loader.d.ts.map +1 -0
  424. package/dist/types/core/components/ui/loader/styles/fixed.d.ts +2 -0
  425. package/dist/types/core/components/ui/loader/styles/fixed.d.ts.map +1 -0
  426. package/dist/types/core/components/ui/loader/styles/inline.d.ts +2 -0
  427. package/dist/types/core/components/ui/loader/styles/inline.d.ts.map +1 -0
  428. package/dist/types/core/components/ui/menu/menu-item.d.ts +6 -0
  429. package/dist/types/core/components/ui/menu/menu-item.d.ts.map +1 -0
  430. package/dist/types/core/components/ui/menu/menu.d.ts +52 -0
  431. package/dist/types/core/components/ui/menu/menu.d.ts.map +1 -0
  432. package/dist/types/core/components/ui/modal/modal-actions.d.ts +9 -0
  433. package/dist/types/core/components/ui/modal/modal-actions.d.ts.map +1 -0
  434. package/dist/types/core/components/ui/modal/modal-close.d.ts +11 -0
  435. package/dist/types/core/components/ui/modal/modal-close.d.ts.map +1 -0
  436. package/dist/types/core/components/ui/modal/modal-content.d.ts +6 -0
  437. package/dist/types/core/components/ui/modal/modal-content.d.ts.map +1 -0
  438. package/dist/types/core/components/ui/modal/modal-subtitle.d.ts +6 -0
  439. package/dist/types/core/components/ui/modal/modal-subtitle.d.ts.map +1 -0
  440. package/dist/types/core/components/ui/modal/modal-title.d.ts +6 -0
  441. package/dist/types/core/components/ui/modal/modal-title.d.ts.map +1 -0
  442. package/dist/types/core/components/ui/modal/modal-utils.d.ts +4 -0
  443. package/dist/types/core/components/ui/modal/modal-utils.d.ts.map +1 -0
  444. package/dist/types/core/components/ui/modal/modal.d.ts +79 -0
  445. package/dist/types/core/components/ui/modal/modal.d.ts.map +1 -0
  446. package/dist/types/core/components/ui/pop/pop.d.ts +42 -0
  447. package/dist/types/core/components/ui/pop/pop.d.ts.map +1 -0
  448. package/dist/types/core/components/ui/progress/progress.d.ts +12 -0
  449. package/dist/types/core/components/ui/progress/progress.d.ts.map +1 -0
  450. package/dist/types/core/components/ui/table/table-caption.d.ts +6 -0
  451. package/dist/types/core/components/ui/table/table-caption.d.ts.map +1 -0
  452. package/dist/types/core/components/ui/table/table-tbody.d.ts +6 -0
  453. package/dist/types/core/components/ui/table/table-tbody.d.ts.map +1 -0
  454. package/dist/types/core/components/ui/table/table-td.d.ts +13 -0
  455. package/dist/types/core/components/ui/table/table-td.d.ts.map +1 -0
  456. package/dist/types/core/components/ui/table/table-tfoot.d.ts +6 -0
  457. package/dist/types/core/components/ui/table/table-tfoot.d.ts.map +1 -0
  458. package/dist/types/core/components/ui/table/table-th.d.ts +12 -0
  459. package/dist/types/core/components/ui/table/table-th.d.ts.map +1 -0
  460. package/dist/types/core/components/ui/table/table-thead.d.ts +6 -0
  461. package/dist/types/core/components/ui/table/table-thead.d.ts.map +1 -0
  462. package/dist/types/core/components/ui/table/table-tr.d.ts +14 -0
  463. package/dist/types/core/components/ui/table/table-tr.d.ts.map +1 -0
  464. package/dist/types/core/components/ui/table/table.d.ts +18 -0
  465. package/dist/types/core/components/ui/table/table.d.ts.map +1 -0
  466. package/dist/types/core/components/ui/theme/theme-collection/core-variables.d.ts +2 -0
  467. package/dist/types/core/components/ui/theme/theme-collection/core-variables.d.ts.map +1 -0
  468. package/dist/types/core/components/ui/theme/theme-collection/dark.d.ts +2 -0
  469. package/dist/types/core/components/ui/theme/theme-collection/dark.d.ts.map +1 -0
  470. package/dist/types/core/components/ui/theme/theme-collection/light.d.ts +2 -0
  471. package/dist/types/core/components/ui/theme/theme-collection/light.d.ts.map +1 -0
  472. package/dist/types/core/components/ui/theme/theme.d.ts +20 -0
  473. package/dist/types/core/components/ui/theme/theme.d.ts.map +1 -0
  474. package/dist/types/core/components/ui/toast/message-subscriber.d.ts +19 -0
  475. package/dist/types/core/components/ui/toast/message-subscriber.d.ts.map +1 -0
  476. package/dist/types/core/components/ui/toast/toast-item.d.ts +41 -0
  477. package/dist/types/core/components/ui/toast/toast-item.d.ts.map +1 -0
  478. package/dist/types/core/components/ui/toast/toast.d.ts +28 -0
  479. package/dist/types/core/components/ui/toast/toast.d.ts.map +1 -0
  480. package/dist/types/core/components/ui/toast/types.d.ts +12 -0
  481. package/dist/types/core/components/ui/toast/types.d.ts.map +1 -0
  482. package/dist/types/core/components/ui/tooltip/tooltip.d.ts +21 -0
  483. package/dist/types/core/components/ui/tooltip/tooltip.d.ts.map +1 -0
  484. package/dist/types/core/components/ui/ui.d.ts +35 -0
  485. package/dist/types/core/components/ui/ui.d.ts.map +1 -0
  486. package/dist/types/core/core.d.ts +5 -0
  487. package/dist/types/core/core.d.ts.map +1 -0
  488. package/dist/types/core/decorators/Subscriber.d.ts +11 -0
  489. package/dist/types/core/decorators/Subscriber.d.ts.map +1 -0
  490. package/dist/types/core/decorators/api.d.ts +119 -0
  491. package/dist/types/core/decorators/api.d.ts.map +1 -0
  492. package/dist/types/core/decorators/lifecycle.d.ts +19 -0
  493. package/dist/types/core/decorators/lifecycle.d.ts.map +1 -0
  494. package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts +11 -0
  495. package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts.map +1 -0
  496. package/dist/types/core/decorators/subscriber/autoFill.d.ts +2 -0
  497. package/dist/types/core/decorators/subscriber/autoFill.d.ts.map +1 -0
  498. package/dist/types/core/decorators/subscriber/autoSubscribe.d.ts +2 -0
  499. package/dist/types/core/decorators/subscriber/autoSubscribe.d.ts.map +1 -0
  500. package/dist/types/core/decorators/subscriber/bind.d.ts +28 -0
  501. package/dist/types/core/decorators/subscriber/bind.d.ts.map +1 -0
  502. package/dist/types/core/decorators/subscriber/common.d.ts +14 -0
  503. package/dist/types/core/decorators/subscriber/common.d.ts.map +1 -0
  504. package/dist/types/core/decorators/subscriber/dynamicPath.d.ts +23 -0
  505. package/dist/types/core/decorators/subscriber/dynamicPath.d.ts.map +1 -0
  506. package/dist/types/core/decorators/subscriber/dynamicPropertyWatch.d.ts +42 -0
  507. package/dist/types/core/decorators/subscriber/dynamicPropertyWatch.d.ts.map +1 -0
  508. package/dist/types/core/decorators/subscriber/handle.d.ts +74 -0
  509. package/dist/types/core/decorators/subscriber/handle.d.ts.map +1 -0
  510. package/dist/types/core/decorators/subscriber/onAssign.d.ts +53 -0
  511. package/dist/types/core/decorators/subscriber/onAssign.d.ts.map +1 -0
  512. package/dist/types/core/decorators/subscriber/publish.d.ts +23 -0
  513. package/dist/types/core/decorators/subscriber/publish.d.ts.map +1 -0
  514. package/dist/types/core/decorators/subscriber/publisherPath.d.ts +3 -0
  515. package/dist/types/core/decorators/subscriber/publisherPath.d.ts.map +1 -0
  516. package/dist/types/core/decorators/subscriber/subscribe.d.ts +20 -0
  517. package/dist/types/core/decorators/subscriber/subscribe.d.ts.map +1 -0
  518. package/dist/types/core/directives/DataProvider.d.ts +45 -0
  519. package/dist/types/core/directives/DataProvider.d.ts.map +1 -0
  520. package/dist/types/core/directives/Wording.d.ts +44 -0
  521. package/dist/types/core/directives/Wording.d.ts.map +1 -0
  522. package/dist/types/core/mixins/Fetcher.d.ts +108 -0
  523. package/dist/types/core/mixins/Fetcher.d.ts.map +1 -0
  524. package/dist/types/core/mixins/FormCheckable.d.ts +95 -0
  525. package/dist/types/core/mixins/FormCheckable.d.ts.map +1 -0
  526. package/dist/types/core/mixins/FormElement.d.ts +37 -0
  527. package/dist/types/core/mixins/FormElement.d.ts.map +1 -0
  528. package/dist/types/core/mixins/FormInput.d.ts +79 -0
  529. package/dist/types/core/mixins/FormInput.d.ts.map +1 -0
  530. package/dist/types/core/mixins/Subscriber.d.ts +38 -0
  531. package/dist/types/core/mixins/Subscriber.d.ts.map +1 -0
  532. package/dist/types/core/mixins/TemplatesContainer.d.ts +14 -0
  533. package/dist/types/core/mixins/TemplatesContainer.d.ts.map +1 -0
  534. package/dist/types/core/mixins/mixins.d.ts +7 -0
  535. package/dist/types/core/mixins/mixins.d.ts.map +1 -0
  536. package/dist/types/core/utils/AncestorAttributeObserver.d.ts +38 -0
  537. package/dist/types/core/utils/AncestorAttributeObserver.d.ts.map +1 -0
  538. package/dist/types/core/utils/Arrays.d.ts +98 -0
  539. package/dist/types/core/utils/Arrays.d.ts.map +1 -0
  540. package/dist/types/core/utils/DataBindObserver.d.ts +84 -0
  541. package/dist/types/core/utils/DataBindObserver.d.ts.map +1 -0
  542. package/dist/types/core/utils/Electron.d.ts +8 -0
  543. package/dist/types/core/utils/Electron.d.ts.map +1 -0
  544. package/dist/types/core/utils/Format.d.ts +13 -0
  545. package/dist/types/core/utils/Format.d.ts.map +1 -0
  546. package/dist/types/core/utils/HTML.d.ts +64 -0
  547. package/dist/types/core/utils/HTML.d.ts.map +1 -0
  548. package/dist/types/core/utils/LocationHandler.d.ts +48 -0
  549. package/dist/types/core/utils/LocationHandler.d.ts.map +1 -0
  550. package/dist/types/core/utils/Objects.d.ts +31 -0
  551. package/dist/types/core/utils/Objects.d.ts.map +1 -0
  552. package/dist/types/core/utils/PublisherProxy.d.ts +230 -0
  553. package/dist/types/core/utils/PublisherProxy.d.ts.map +1 -0
  554. package/dist/types/core/utils/Utils.d.ts +6 -0
  555. package/dist/types/core/utils/Utils.d.ts.map +1 -0
  556. package/dist/types/core/utils/aesCrypto.d.ts +53 -0
  557. package/dist/types/core/utils/aesCrypto.d.ts.map +1 -0
  558. package/dist/types/core/utils/api.d.ts +173 -0
  559. package/dist/types/core/utils/api.d.ts.map +1 -0
  560. package/dist/types/core/utils/dataProviderKey.d.ts +56 -0
  561. package/dist/types/core/utils/dataProviderKey.d.ts.map +1 -0
  562. package/dist/types/core/utils/endpoint.d.ts +37 -0
  563. package/dist/types/core/utils/endpoint.d.ts.map +1 -0
  564. package/dist/types/core/utils/route.d.ts +41 -0
  565. package/dist/types/core/utils/route.d.ts.map +1 -0
  566. package/dist/types/core/utils/url-pattern.d.ts +3 -0
  567. package/dist/types/core/utils/url-pattern.d.ts.map +1 -0
  568. package/dist/types/dataprovider.d.ts +2 -0
  569. package/dist/types/dataprovider.d.ts.map +1 -0
  570. package/dist/types/decorators.d.ts +28 -0
  571. package/dist/types/decorators.d.ts.map +1 -0
  572. package/dist/types/directives.d.ts +21 -0
  573. package/dist/types/directives.d.ts.map +1 -0
  574. package/dist/types/index.d.ts +8 -0
  575. package/dist/types/index.d.ts.map +1 -0
  576. package/dist/types/mixins.d.ts +204 -0
  577. package/dist/types/mixins.d.ts.map +1 -0
  578. package/dist/types/test-utils/TestUtils.d.ts +4 -0
  579. package/dist/types/test-utils/TestUtils.d.ts.map +1 -0
  580. package/dist/types/utils.d.ts +17 -0
  581. package/dist/types/utils.d.ts.map +1 -0
  582. package/docs/assets/{index-t0-i22oI.css → index-CZLTFws2.css} +1 -1
  583. package/docs/assets/{index-wyNMyWT9.js → index-nkkwC13U.js} +781 -506
  584. package/docs/index.html +2 -3
  585. package/docs/src/core/components/functional/date/date.md +290 -0
  586. package/docs/src/core/components/functional/fetch/fetch.md +125 -0
  587. package/docs/src/core/components/functional/if/if.md +9 -0
  588. package/docs/src/core/components/functional/list/list.md +65 -0
  589. package/docs/src/core/components/functional/mix/mix.md +41 -0
  590. package/docs/src/core/components/functional/queue/queue.md +72 -0
  591. package/docs/src/core/components/functional/router/router.md +94 -0
  592. package/docs/src/core/components/functional/sdui/default-library.json +108 -0
  593. package/docs/src/core/components/functional/sdui/example.json +99 -0
  594. package/docs/src/core/components/functional/sdui/sdui.md +356 -0
  595. package/docs/src/core/components/functional/states/states.md +87 -0
  596. package/docs/src/core/components/functional/submit/submit.md +114 -0
  597. package/docs/src/core/components/functional/subscriber/subscriber.md +91 -0
  598. package/docs/src/core/components/functional/value/value.md +35 -0
  599. package/docs/src/core/components/ui/alert/alert.md +121 -0
  600. package/docs/src/core/components/ui/alert-messages/alert-messages.md +0 -0
  601. package/docs/src/core/components/ui/badge/badge.md +127 -0
  602. package/docs/src/core/components/ui/button/button.md +182 -0
  603. package/docs/src/core/components/ui/captcha/captcha.md +12 -0
  604. package/docs/src/core/components/ui/card/card.md +97 -0
  605. package/docs/src/core/components/ui/divider/divider.md +35 -0
  606. package/docs/src/core/components/ui/form/checkbox/checkbox.md +77 -0
  607. package/docs/src/core/components/ui/form/fieldset/fieldset.md +129 -0
  608. package/docs/src/core/components/ui/form/form-actions/form-actions.md +77 -0
  609. package/docs/src/core/components/ui/form/form-layout/form-layout.md +44 -0
  610. package/docs/src/core/components/ui/form/input/input.md +142 -0
  611. package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +133 -0
  612. package/docs/src/core/components/ui/form/radio/radio.md +57 -0
  613. package/docs/src/core/components/ui/form/select/select.md +71 -0
  614. package/docs/src/core/components/ui/form/switch/switch.md +57 -0
  615. package/docs/src/core/components/ui/form/textarea/textarea.md +65 -0
  616. package/docs/src/core/components/ui/group/group.md +75 -0
  617. package/docs/src/core/components/ui/icon/icon.md +125 -0
  618. package/docs/src/core/components/ui/icon/icons.json +1 -0
  619. package/docs/src/core/components/ui/image/image.md +107 -0
  620. package/docs/src/core/components/ui/link/link.md +43 -0
  621. package/docs/src/core/components/ui/loader/loader.md +55 -0
  622. package/docs/src/core/components/ui/menu/menu.md +329 -0
  623. package/docs/src/core/components/ui/modal/modal.md +119 -0
  624. package/docs/src/core/components/ui/pop/pop.md +96 -0
  625. package/docs/src/core/components/ui/progress/progress.md +63 -0
  626. package/docs/src/core/components/ui/table/table.md +455 -0
  627. package/docs/src/core/components/ui/toast/toast.md +166 -0
  628. package/docs/src/core/components/ui/tooltip/tooltip.md +82 -0
  629. package/docs/src/docs/_core-concept/dataFlow.md +79 -0
  630. package/docs/src/docs/_core-concept/overview.md +57 -0
  631. package/docs/src/docs/_core-concept/subscriber.md +75 -0
  632. package/docs/src/docs/_decorators/ancestor-attribute.md +127 -0
  633. package/docs/src/docs/_decorators/auto-subscribe.md +202 -0
  634. package/docs/src/docs/_decorators/bind.md +167 -0
  635. package/docs/src/docs/_decorators/get.md +77 -0
  636. package/docs/src/docs/_decorators/handle.md +175 -0
  637. package/docs/src/docs/_decorators/on-assign.md +390 -0
  638. package/docs/src/docs/_decorators/patch.md +45 -0
  639. package/docs/src/docs/_decorators/post.md +93 -0
  640. package/docs/src/docs/_decorators/publish.md +55 -0
  641. package/docs/src/docs/_decorators/put.md +43 -0
  642. package/docs/src/docs/_decorators/subscribe.md +100 -0
  643. package/docs/src/docs/_decorators/wait-for-ancestors.md +163 -0
  644. package/docs/src/docs/_directives/sub.md +91 -0
  645. package/docs/src/docs/_getting-started/ai-agents.md +56 -0
  646. package/docs/src/docs/_getting-started/concorde-manual-install.md +133 -0
  647. package/docs/src/docs/_getting-started/concorde-outside.md +33 -0
  648. package/docs/src/docs/_getting-started/create-a-component.md +139 -0
  649. package/docs/src/docs/_getting-started/my-first-component.md +236 -0
  650. package/docs/src/docs/_getting-started/my-first-subscriber.md +120 -0
  651. package/docs/src/docs/_getting-started/pubsub.md +37 -0
  652. package/docs/src/docs/_getting-started/start.md +47 -0
  653. package/docs/src/docs/_getting-started/theming.md +91 -0
  654. package/docs/src/docs/_misc/api-configuration.md +81 -0
  655. package/docs/src/docs/_misc/dataProviderKey.md +168 -0
  656. package/docs/src/docs/_misc/docs-mock-api.md +60 -0
  657. package/docs/src/docs/_misc/dynamic-path.md +71 -0
  658. package/docs/src/docs/_misc/endpoint.md +45 -0
  659. package/docs/src/docs/_misc/html-integration.md +13 -0
  660. package/docs/src/docs/search/docs-search.json +9117 -0
  661. package/docs/src/tag-list.json +1 -0
  662. package/docs/src/tsconfig-model.json +23 -0
  663. package/docs/src/tsconfig.declarations.json +22 -0
  664. package/docs/src/tsconfig.emit.json +23 -0
  665. package/docs/src/tsconfig.json +837 -0
  666. package/gitlab/job_github_mirror.sh +39 -0
  667. package/index.html +0 -1
  668. package/package.json +1084 -364
  669. package/public/docs-mock-api-sw.js +3 -2
  670. package/public/docs-mock-api-sw.js.map +2 -2
  671. package/scripts/github-export.mjs +150 -0
  672. package/scripts/post-build.mjs +43 -0
  673. package/scripts/pre-build.mjs +32 -4
  674. package/scripts/pre-publish.mjs +2 -0
  675. package/src/core/components/functional/queue/queue.ts +2 -2
  676. package/src/core/components/ui/modal/modal.ts +1 -1
  677. package/src/core/decorators/Subscriber.ts +1 -0
  678. package/src/core/decorators/api.spec.ts +74 -4
  679. package/src/core/decorators/api.ts +111 -30
  680. package/src/core/decorators/subscriber/ancestorAttribute.spec.ts +197 -0
  681. package/src/core/decorators/subscriber/ancestorAttribute.ts +40 -7
  682. package/src/core/decorators/subscriber/autoSubscribe.ts +7 -3
  683. package/src/core/mixins/Fetcher.ts +12 -6
  684. package/src/core/utils/AncestorAttributeObserver.ts +199 -0
  685. package/src/core/utils/HTML.ts +3 -11
  686. package/src/core/utils/PublisherProxy.ts +28 -37
  687. package/src/core/utils/api.ts +10 -10
  688. package/src/css.d.ts +19 -0
  689. package/src/directives.ts +3 -2
  690. package/src/docs/_decorators/ancestor-attribute.md +56 -8
  691. package/src/docs/_decorators/get.md +47 -1
  692. package/src/docs/components/docs-demo-sources.ts +20 -3
  693. package/src/docs/example/decorators-demo-geo.ts +5 -0
  694. package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +72 -31
  695. package/src/docs/example/decorators-demo.ts +164 -8
  696. package/src/docs/mock-api/router.ts +3 -1
  697. package/src/docs/search/docs-search.json +92 -2
  698. package/src/tsconfig.declarations.json +22 -0
  699. package/src/tsconfig.emit.json +23 -0
  700. package/src/tsconfig.json +3 -285
  701. package/src/tsconfig.tsbuildinfo +1 -1
@@ -162,14 +162,25 @@ function watchScopedConfiguration(
162
162
  };
163
163
  }
164
164
 
165
- type ApiGetState = {
166
- cleanupWatchers: Array<() => void>;
167
- requestGeneration: number;
168
- configPublisher: DataProvider | null;
169
- configMutationHandler: (() => void) | null;
170
- scopeWatchCleanup: (() => void) | null;
165
+ type TriggerPublisherBinding = {
166
+ triggerPublisher: DataProvider | null;
167
+ triggerInvalidateHandler: (() => void) | null;
168
+ };
169
+
170
+ type RefetchScheduleState = {
171
+ refetchTimeoutId: ReturnType<typeof setTimeout> | null;
172
+ refetchEveryMs: number;
171
173
  };
172
174
 
175
+ type ApiGetState = TriggerPublisherBinding &
176
+ RefetchScheduleState & {
177
+ cleanupWatchers: Array<() => void>;
178
+ requestGeneration: number;
179
+ configPublisher: DataProvider | null;
180
+ configMutationHandler: (() => void) | null;
181
+ scopeWatchCleanup: (() => void) | null;
182
+ };
183
+
173
184
  function detachConfigPublisher(state: ApiGetState): void {
174
185
  if (state.configPublisher && state.configMutationHandler) {
175
186
  state.configPublisher.offInternalMutation(state.configMutationHandler);
@@ -191,6 +202,9 @@ function detachConfigPublisher(state: ApiGetState): void {
191
202
  * `PublisherManager` sur le chemin résolu (même syntaxe dynamique que `@subscribe`).
192
203
  * Toute mutation interne du publisher (`onInternalMutation`) relance le GET.
193
204
  *
205
+ * **Options** (`GetOptions`) : `triggerKey` — `PublisherManager.get(...).invalidate()` relance le GET ;
206
+ * `refetchEveryMs` — polling automatique.
207
+ *
194
208
  * @example
195
209
  * @get(new Endpoint<User, { userId: string }>("users/${userId}"))
196
210
  * payload?: ApiResult<User>;
@@ -200,6 +214,11 @@ function detachConfigPublisher(state: ApiGetState): void {
200
214
  * PublisherManager.get("myApiConf").set({ serviceURL: "...", token: null, ... });
201
215
  * @get(new Endpoint<Thing, { id: string }>("things/${id}"), apiConf)
202
216
  * payload?: ApiResult<Thing>;
217
+ *
218
+ * @example
219
+ * @get(usersEndpoint, { triggerKey: refreshUsersKey })
220
+ * payload?: ApiResult<User[]>;
221
+ * // PublisherManager.get("users.refresh").invalidate() → refetch
203
222
  */
204
223
  export function get<T, Ue = any>(
205
224
  endpoint: Endpoint<T, Ue>,
@@ -260,18 +279,24 @@ export function get<T, Ue = any, Uk = any, _Ut = any>(
260
279
  skipEmptyPlaceholder: options?.skipEmptyPlaceholder,
261
280
  };
262
281
  const configurationKeyPath = configurationKey?.path;
282
+ const triggerKeyPath = options?.triggerKey?.path;
263
283
  const endpointDynamicDependencies = extractDynamicDependencies(pathTemplate);
264
284
  const configKeyDynamicDependencies = configurationKeyPath
265
285
  ? extractDynamicDependencies(configurationKeyPath)
266
286
  : [];
287
+ const triggerKeyDynamicDependencies = triggerKeyPath
288
+ ? extractDynamicDependencies(triggerKeyPath)
289
+ : [];
267
290
  const mergedDynamicDependencies = [
268
291
  ...new Set([
269
292
  ...endpointDynamicDependencies,
270
293
  ...configKeyDynamicDependencies,
294
+ ...triggerKeyDynamicDependencies,
271
295
  ]),
272
296
  ];
273
297
  const isDynamicPath = endpointDynamicDependencies.length > 0;
274
298
  const usesPublisherConfig = Boolean(configurationKeyPath);
299
+ const refetchEveryMs = options?.refetchEveryMs ?? 0;
275
300
 
276
301
  return function (target: object, propertyKey: string) {
277
302
  if (!target) return;
@@ -288,6 +313,10 @@ export function get<T, Ue = any, Uk = any, _Ut = any>(
288
313
  configPublisher: null,
289
314
  configMutationHandler: null,
290
315
  scopeWatchCleanup: null,
316
+ triggerPublisher: null,
317
+ triggerInvalidateHandler: null,
318
+ refetchTimeoutId: null,
319
+ refetchEveryMs,
291
320
  };
292
321
  comp[stateKey] = state;
293
322
  }
@@ -295,6 +324,17 @@ export function get<T, Ue = any, Uk = any, _Ut = any>(
295
324
  state.cleanupWatchers.forEach((cleanup) => cleanup());
296
325
  state.cleanupWatchers = [];
297
326
  state.requestGeneration++;
327
+ state.refetchEveryMs = refetchEveryMs;
328
+ clearRefetch(state);
329
+
330
+ const scheduleRefetch = () => {
331
+ clearRefetch(state);
332
+ if (!state.refetchEveryMs || state.refetchEveryMs <= 0) return;
333
+ state.refetchTimeoutId = setTimeout(() => {
334
+ state.refetchTimeoutId = null;
335
+ runFetch();
336
+ }, state.refetchEveryMs);
337
+ };
298
338
 
299
339
  const runFetch = () => {
300
340
  const resolution = isDynamicPath
@@ -302,6 +342,7 @@ export function get<T, Ue = any, Uk = any, _Ut = any>(
302
342
  : { ready: true, path: pathTemplate };
303
343
  if (!resolution.ready || !resolution.path) {
304
344
  comp[propertyKey] = undefined;
345
+ scheduleRefetch();
305
346
  return;
306
347
  }
307
348
  let config: APIConfiguration | null = null;
@@ -313,6 +354,7 @@ export function get<T, Ue = any, Uk = any, _Ut = any>(
313
354
  );
314
355
  if (!configRes.ready || !configRes.path) {
315
356
  comp[propertyKey] = undefined;
357
+ scheduleRefetch();
316
358
  return;
317
359
  }
318
360
  const configPublisher = getPublisherFromPath(configRes.path);
@@ -329,6 +371,7 @@ export function get<T, Ue = any, Uk = any, _Ut = any>(
329
371
  state.scopeWatchCleanup = null;
330
372
  });
331
373
  }
374
+ scheduleRefetch();
332
375
  return;
333
376
  }
334
377
  const generation = ++state.requestGeneration;
@@ -338,9 +381,31 @@ export function get<T, Ue = any, Uk = any, _Ut = any>(
338
381
  .then((payload?: ApiResult<T>) => {
339
382
  if (generation !== state.requestGeneration) return;
340
383
  comp[propertyKey] = payload;
384
+ scheduleRefetch();
341
385
  });
342
386
  };
343
387
 
388
+ const scheduleFetch = createAnimationFrameCoalescedRunner(runFetch);
389
+
390
+ const rebindTriggerPublisher = () => {
391
+ detachTriggerPublisher(state);
392
+ if (!triggerKeyPath) return;
393
+ const triggerResolution = resolveDynamicPath(
394
+ component,
395
+ triggerKeyPath,
396
+ pathOptions,
397
+ );
398
+ if (!triggerResolution.ready || !triggerResolution.path) {
399
+ return;
400
+ }
401
+ const publisher = getPublisherFromPath(triggerResolution.path);
402
+ if (!publisher) return;
403
+ const invalidateHandler = () => scheduleFetch();
404
+ publisher.onInvalidate(invalidateHandler);
405
+ state.triggerPublisher = publisher;
406
+ state.triggerInvalidateHandler = invalidateHandler;
407
+ };
408
+
344
409
  const rebindPublisherConfig = () => {
345
410
  if (!usesPublisherConfig || !configurationKeyPath) return;
346
411
  detachConfigPublisher(state);
@@ -358,26 +423,32 @@ export function get<T, Ue = any, Uk = any, _Ut = any>(
358
423
  comp[propertyKey] = undefined;
359
424
  return;
360
425
  }
361
- const mutationHandler = () => {
362
- runFetch();
363
- };
426
+ const mutationHandler = () => scheduleFetch();
364
427
  publisher.onInternalMutation(mutationHandler);
365
428
  state.configPublisher = publisher;
366
429
  state.configMutationHandler = mutationHandler;
367
430
  };
368
431
 
369
- if (usesPublisherConfig) {
432
+ const rebindAll = () => {
433
+ rebindTriggerPublisher();
434
+ rebindPublisherConfig();
435
+ if (!usesPublisherConfig) {
436
+ scheduleFetch();
437
+ }
438
+ };
439
+
440
+ if (usesPublisherConfig || triggerKeyDynamicDependencies.length) {
370
441
  for (const dependency of mergedDynamicDependencies) {
371
442
  const unsubscribe = observeDynamicProperty(
372
443
  getDynamicWatchKeys.watcherStore,
373
444
  getDynamicWatchKeys.hooked,
374
445
  component,
375
446
  dependency,
376
- () => rebindPublisherConfig(),
447
+ () => rebindAll(),
377
448
  );
378
449
  state.cleanupWatchers.push(unsubscribe);
379
450
  }
380
- rebindPublisherConfig();
451
+ rebindAll();
381
452
  } else {
382
453
  const startScopedFetch = () => {
383
454
  if (isDynamicPath) {
@@ -387,11 +458,12 @@ export function get<T, Ue = any, Uk = any, _Ut = any>(
387
458
  getDynamicWatchKeys.hooked,
388
459
  component,
389
460
  dependency,
390
- () => runFetch(),
461
+ () => scheduleFetch(),
391
462
  );
392
463
  state.cleanupWatchers.push(unsubscribe);
393
464
  }
394
465
  }
466
+ rebindTriggerPublisher();
395
467
  runFetch();
396
468
  };
397
469
  state.cleanupWatchers.push(
@@ -405,6 +477,8 @@ export function get<T, Ue = any, Uk = any, _Ut = any>(
405
477
  const state = comp[stateKey] as ApiGetState | undefined;
406
478
  if (!state) return;
407
479
  detachConfigPublisher(state);
480
+ detachTriggerPublisher(state);
481
+ clearRefetch(state);
408
482
  state.cleanupWatchers.forEach((cleanup) => cleanup());
409
483
  state.cleanupWatchers = [];
410
484
  state.requestGeneration++;
@@ -413,7 +487,12 @@ export function get<T, Ue = any, Uk = any, _Ut = any>(
413
487
  };
414
488
  }
415
489
 
416
- export type GetOptions = DynamicPathOptions;
490
+ export type GetOptions<Uk = any> = DynamicPathOptions & {
491
+ /** Intervalle de refetch automatique (ms). 0 ou absent = pas de polling. */
492
+ refetchEveryMs?: number;
493
+ /** Publisher dont `invalidate()` relance le GET. */
494
+ triggerKey?: DataProviderKey<unknown, Uk>;
495
+ };
417
496
 
418
497
  export type ApiSendOptions<Uk = any> = DynamicPathOptions & {
419
498
  /** Intervalle de renvoi automatique (ms). 0 ou absent = pas de polling. */
@@ -436,7 +515,11 @@ export type PatchOptions<Uk = any> = ApiSendOptions<Uk>;
436
515
 
437
516
  function isGetOptions(value: unknown): value is GetOptions {
438
517
  if (!value || typeof value !== "object") return false;
439
- return "skipEmptyPlaceholder" in value;
518
+ return (
519
+ "skipEmptyPlaceholder" in value ||
520
+ "refetchEveryMs" in value ||
521
+ "triggerKey" in value
522
+ );
440
523
  }
441
524
 
442
525
  function isApiSendOptions(value: unknown): value is ApiSendOptions {
@@ -469,7 +552,7 @@ function detachBodyPublisher(state: ApiSendState): void {
469
552
  state.bodyMutationHandler = null;
470
553
  }
471
554
 
472
- function detachTriggerPublisher(state: ApiSendState): void {
555
+ function detachTriggerPublisher(state: TriggerPublisherBinding): void {
473
556
  if (state.triggerPublisher && state.triggerInvalidateHandler) {
474
557
  state.triggerPublisher.offInvalidate(state.triggerInvalidateHandler);
475
558
  }
@@ -477,7 +560,7 @@ function detachTriggerPublisher(state: ApiSendState): void {
477
560
  state.triggerInvalidateHandler = null;
478
561
  }
479
562
 
480
- function clearSendRefetch(state: ApiSendState): void {
563
+ function clearRefetch(state: RefetchScheduleState): void {
481
564
  if (state.refetchTimeoutId) {
482
565
  clearTimeout(state.refetchTimeoutId);
483
566
  state.refetchTimeoutId = null;
@@ -522,7 +605,8 @@ function createApiSendDecorator<T, B, Ue = any, Uk = any, Ut = any>(
522
605
  : maybeOptions;
523
606
  const configurationKeyPath = configurationKey?.path;
524
607
  const triggerKeyPath = options?.triggerKey?.path;
525
- const endpointDynamicDependencies = extractDynamicDependencies(pathTemplate);
608
+ const endpointDynamicDependencies =
609
+ extractDynamicDependencies(pathTemplate);
526
610
  const bodyKeyDynamicDependencies = extractDynamicDependencies(bodyKeyPath);
527
611
  const configKeyDynamicDependencies = configurationKeyPath
528
612
  ? extractDynamicDependencies(configurationKeyPath)
@@ -581,10 +665,10 @@ function createApiSendDecorator<T, B, Ue = any, Uk = any, Ut = any>(
581
665
  state.refetchEveryMs = refetchEveryMs;
582
666
  state.skipIfBodyMissing = skipIfBodyMissing;
583
667
  state.autoPostOnBodyMutation = autoPostOnBodyMutation;
584
- clearSendRefetch(state);
668
+ clearRefetch(state);
585
669
 
586
670
  const scheduleRefetch = () => {
587
- clearSendRefetch(state);
671
+ clearRefetch(state);
588
672
  if (!state.refetchEveryMs || state.refetchEveryMs <= 0) return;
589
673
  state.refetchTimeoutId = setTimeout(() => {
590
674
  state.refetchTimeoutId = null;
@@ -788,7 +872,7 @@ function createApiSendDecorator<T, B, Ue = any, Uk = any, Ut = any>(
788
872
  detachConfigPublisher(state);
789
873
  detachBodyPublisher(state);
790
874
  detachTriggerPublisher(state);
791
- clearSendRefetch(state);
875
+ clearRefetch(state);
792
876
  state.cleanupWatchers.forEach((cleanup) => cleanup());
793
877
  state.cleanupWatchers = [];
794
878
  state.requestGeneration++;
@@ -861,9 +945,8 @@ export function post<T, B, Ue = any, Uk = any, Ut = any>(
861
945
  target: object & { [P in K]?: ApiResult<T> | null | undefined },
862
946
  propertyKey: K,
863
947
  ) => void {
864
- return createApiSendDecorator<T, B, Ue, Uk, Ut>(
865
- "POST",
866
- (api, path, body) => api.postDetailed<T, B>(path, body as B),
948
+ return createApiSendDecorator<T, B, Ue, Uk, Ut>("POST", (api, path, body) =>
949
+ api.postDetailed<T, B>(path, body as B),
867
950
  )(endpoint, bodyKey, configurationKeyOrOptions, maybeOptions);
868
951
  }
869
952
 
@@ -921,9 +1004,8 @@ export function put<T, B, Ue = any, Uk = any, Ut = any>(
921
1004
  target: object & { [P in K]?: ApiResult<T> | null | undefined },
922
1005
  propertyKey: K,
923
1006
  ) => void {
924
- return createApiSendDecorator<T, B, Ue, Uk, Ut>(
925
- "PUT",
926
- (api, path, body) => api.putDetailed<T, B>(path, body as B),
1007
+ return createApiSendDecorator<T, B, Ue, Uk, Ut>("PUT", (api, path, body) =>
1008
+ api.putDetailed<T, B>(path, body as B),
927
1009
  )(endpoint, bodyKey, configurationKeyOrOptions, maybeOptions);
928
1010
  }
929
1011
 
@@ -981,8 +1063,7 @@ export function patch<T, B, Ue = any, Uk = any, Ut = any>(
981
1063
  target: object & { [P in K]?: ApiResult<T> | null | undefined },
982
1064
  propertyKey: K,
983
1065
  ) => void {
984
- return createApiSendDecorator<T, B, Ue, Uk, Ut>(
985
- "PATCH",
986
- (api, path, body) => api.patchDetailed<T, B>(path, body as B),
1066
+ return createApiSendDecorator<T, B, Ue, Uk, Ut>("PATCH", (api, path, body) =>
1067
+ api.patchDetailed<T, B>(path, body as B),
987
1068
  )(endpoint, bodyKey, configurationKeyOrOptions, maybeOptions);
988
1069
  }
@@ -0,0 +1,197 @@
1
+ import { afterEach, describe, expect, it } from "vitest";
2
+ import { ancestorAttribute } from "./ancestorAttribute";
3
+
4
+ async function flushFrames(count = 2): Promise<void> {
5
+ for (let i = 0; i < count; i += 1) {
6
+ await new Promise<void>((resolve) => {
7
+ requestAnimationFrame(() => resolve());
8
+ });
9
+ }
10
+ }
11
+
12
+ describe("ancestorAttribute", () => {
13
+ afterEach(() => {
14
+ document.body.replaceChildren();
15
+ });
16
+
17
+ it("lit la valeur initiale au connect (mode statique par défaut)", () => {
18
+ const tag = "test-ancestor-attr-static-init";
19
+ class C extends HTMLElement {
20
+ @ancestorAttribute("dataProvider")
21
+ dataProvider: string | null = null;
22
+ }
23
+ if (!customElements.get(tag)) {
24
+ customElements.define(tag, C);
25
+ }
26
+
27
+ const wrap = document.createElement("div");
28
+ wrap.setAttribute("dataProvider", "scope-a");
29
+ const el = document.createElement(tag) as InstanceType<typeof C>;
30
+ wrap.appendChild(el);
31
+ document.body.appendChild(wrap);
32
+
33
+ expect(el.dataProvider).toBe("scope-a");
34
+ });
35
+
36
+ it("ne réagit pas aux mutations en mode statique (défaut)", async () => {
37
+ const tag = "test-ancestor-attr-static-no-react";
38
+ class C extends HTMLElement {
39
+ @ancestorAttribute("dataProvider")
40
+ dataProvider: string | null = null;
41
+ }
42
+ if (!customElements.get(tag)) {
43
+ customElements.define(tag, C);
44
+ }
45
+
46
+ const wrap = document.createElement("div");
47
+ wrap.setAttribute("dataProvider", "scope-a");
48
+ const el = document.createElement(tag) as InstanceType<typeof C>;
49
+ wrap.appendChild(el);
50
+ document.body.appendChild(wrap);
51
+
52
+ wrap.setAttribute("dataProvider", "scope-b");
53
+ await flushFrames();
54
+
55
+ expect(el.dataProvider).toBe("scope-a");
56
+ });
57
+
58
+ it("met à jour la propriété quand un ancêtre change (mode dynamique)", async () => {
59
+ const tag = "test-ancestor-attr-dynamic-mutation";
60
+ class C extends HTMLElement {
61
+ @ancestorAttribute("dataProvider", { dynamic: true })
62
+ dataProvider: string | null = null;
63
+ }
64
+ if (!customElements.get(tag)) {
65
+ customElements.define(tag, C);
66
+ }
67
+
68
+ const wrap = document.createElement("div");
69
+ wrap.setAttribute("dataProvider", "scope-a");
70
+ const el = document.createElement(tag) as InstanceType<typeof C>;
71
+ wrap.appendChild(el);
72
+ document.body.appendChild(wrap);
73
+
74
+ expect(el.dataProvider).toBe("scope-a");
75
+
76
+ wrap.setAttribute("dataProvider", "scope-b");
77
+ await flushFrames();
78
+
79
+ expect(el.dataProvider).toBe("scope-b");
80
+ });
81
+
82
+ it("assigne null si l'attribut ancêtre est retiré (mode dynamique)", async () => {
83
+ const tag = "test-ancestor-attr-dynamic-null";
84
+ class C extends HTMLElement {
85
+ @ancestorAttribute("dataProvider", { dynamic: true })
86
+ dataProvider: string | null = "initial";
87
+ }
88
+ if (!customElements.get(tag)) {
89
+ customElements.define(tag, C);
90
+ }
91
+
92
+ const wrap = document.createElement("div");
93
+ wrap.setAttribute("dataProvider", "scope-a");
94
+ const el = document.createElement(tag) as InstanceType<typeof C>;
95
+ wrap.appendChild(el);
96
+ document.body.appendChild(wrap);
97
+
98
+ wrap.removeAttribute("dataProvider");
99
+ await flushFrames();
100
+
101
+ expect(el.dataProvider).toBeNull();
102
+ });
103
+
104
+ it("retombe sur l'ancêtre suivant quand le plus proche perd l'attribut", async () => {
105
+ const tag = "test-ancestor-attr-dynamic-fallback";
106
+ class C extends HTMLElement {
107
+ @ancestorAttribute("dataProvider", { dynamic: true })
108
+ dataProvider: string | null = null;
109
+ }
110
+ if (!customElements.get(tag)) {
111
+ customElements.define(tag, C);
112
+ }
113
+
114
+ const outer = document.createElement("div");
115
+ outer.setAttribute("dataProvider", "from-outer");
116
+ const parent = document.createElement("div");
117
+ parent.setAttribute("dataProvider", "from-parent");
118
+ const el = document.createElement(tag) as InstanceType<typeof C>;
119
+ parent.appendChild(el);
120
+ outer.appendChild(parent);
121
+ document.body.appendChild(outer);
122
+
123
+ expect(el.dataProvider).toBe("from-parent");
124
+
125
+ parent.removeAttribute("dataProvider");
126
+ await flushFrames();
127
+
128
+ expect(el.dataProvider).toBe("from-outer");
129
+ });
130
+
131
+ it("met à jour dans un shadow root (Lit)", async () => {
132
+ const hostTag = "test-ancestor-shadow-host";
133
+ const childTag = "test-ancestor-shadow-child";
134
+
135
+ class Host extends HTMLElement {
136
+ connectedCallback() {
137
+ const shadow = this.attachShadow({ mode: "open" });
138
+ const wrap = document.createElement("div");
139
+ wrap.setAttribute("dataProvider", "scope-a");
140
+ const child = document.createElement(childTag);
141
+ wrap.appendChild(child);
142
+ shadow.append(wrap);
143
+ }
144
+ }
145
+
146
+ class Child extends HTMLElement {
147
+ @ancestorAttribute("dataProvider", { dynamic: true })
148
+ dataProvider: string | null = null;
149
+ }
150
+
151
+ if (!customElements.get(hostTag)) {
152
+ customElements.define(hostTag, Host);
153
+ }
154
+ if (!customElements.get(childTag)) {
155
+ customElements.define(childTag, Child);
156
+ }
157
+
158
+ const host = document.createElement(hostTag);
159
+ document.body.appendChild(host);
160
+ await flushFrames();
161
+
162
+ const wrap = host.shadowRoot!.querySelector("div")!;
163
+ const child = host.shadowRoot!.querySelector(childTag) as InstanceType<
164
+ typeof Child
165
+ >;
166
+
167
+ expect(child.dataProvider).toBe("scope-a");
168
+
169
+ wrap.setAttribute("dataProvider", "scope-b");
170
+ await flushFrames();
171
+
172
+ expect(child.dataProvider).toBe("scope-b");
173
+ });
174
+
175
+ it("ne met plus à jour après disconnect (mode dynamique)", async () => {
176
+ const tag = "test-ancestor-attr-dynamic-disconnect";
177
+ class C extends HTMLElement {
178
+ @ancestorAttribute("dataProvider", { dynamic: true })
179
+ dataProvider: string | null = null;
180
+ }
181
+ if (!customElements.get(tag)) {
182
+ customElements.define(tag, C);
183
+ }
184
+
185
+ const wrap = document.createElement("div");
186
+ wrap.setAttribute("dataProvider", "scope-a");
187
+ const el = document.createElement(tag) as InstanceType<typeof C>;
188
+ wrap.appendChild(el);
189
+ document.body.appendChild(wrap);
190
+
191
+ el.remove();
192
+ wrap.setAttribute("dataProvider", "scope-b");
193
+ await flushFrames();
194
+
195
+ expect(el.dataProvider).toBe("scope-a");
196
+ });
197
+ });
@@ -1,18 +1,51 @@
1
- import HTML from "../../utils/HTML";
1
+ import AncestorAttributeObserver, {
2
+ syncAncestorAttributeValue,
3
+ } from "../../utils/AncestorAttributeObserver";
2
4
  import { ConnectedComponent, setSubscribable } from "./common";
3
5
 
4
- export function ancestorAttribute(attributeName: string) {
6
+ export type AncestorAttributeOptions = {
7
+ /**
8
+ * Si true, le composant reste synchronisé avec les attributs ancêtres via
9
+ * `AncestorAttributeObserver` (mutations + reparenting). Requis pour que
10
+ * `@bind` / `@subscribe` avec `${dataProvider}` se re-lient quand le scope change.
11
+ * Défaut : false (lecture unique au connect, rétrocompat).
12
+ */
13
+ dynamic?: boolean;
14
+ };
15
+
16
+ export function ancestorAttribute(
17
+ attributeName: string,
18
+ options?: AncestorAttributeOptions,
19
+ ) {
20
+ const dynamic = options?.dynamic ?? false;
21
+ const assignNull = dynamic;
22
+
5
23
  return function (target: unknown, propertyKey: string) {
6
24
  if (!target) return;
7
25
  setSubscribable(target);
26
+
8
27
  (target as ConnectedComponent).__onBeforeConnected__((component) => {
9
- const value = HTML.getAncestorAttributeValue(
10
- component as any,
28
+ syncAncestorAttributeValue(component, attributeName, propertyKey, {
29
+ assignNull,
30
+ });
31
+ });
32
+
33
+ if (!dynamic) return;
34
+
35
+ let unsubscribe: (() => void) | null = null;
36
+
37
+ (target as ConnectedComponent).__onConnected__((component) => {
38
+ unsubscribe = AncestorAttributeObserver.subscribe(
39
+ component as unknown as HTMLElement,
11
40
  attributeName,
41
+ propertyKey,
42
+ { assignNull: true },
12
43
  );
13
- if (value !== null) {
14
- component[propertyKey] = value;
15
- }
44
+ });
45
+
46
+ (target as ConnectedComponent).__onDisconnected__(() => {
47
+ unsubscribe?.();
48
+ unsubscribe = null;
16
49
  });
17
50
  };
18
51
  }
@@ -1,4 +1,8 @@
1
- import { PublisherProxy, PublisherManager } from "../../utils/PublisherProxy";
1
+ import {
2
+ PublisherProxy,
3
+ collectModifiedPublisher,
4
+ getModifiedPublishers,
5
+ } from "../../utils/PublisherProxy";
2
6
 
3
7
  export function autoSubscribe() {
4
8
  return function (
@@ -33,10 +37,10 @@ export function autoSubscribe() {
33
37
  publishers.forEach((publisher: PublisherProxy) => {
34
38
  publisher.offAssign(onAssign);
35
39
  });
36
- PublisherManager.collectModifiedPublisher();
40
+ collectModifiedPublisher();
37
41
  const result = originalMethod.apply(this, args);
38
42
  publishers =
39
- PublisherManager.getModifiedPublishers() || new Set<PublisherProxy>();
43
+ getModifiedPublishers() || new Set<PublisherProxy>();
40
44
 
41
45
  publishers.forEach((publisher: PublisherProxy) => {
42
46
  publisher.onAssign(onAssign, false);
@@ -11,12 +11,13 @@ import { ResultTypeInterface } from "@supersoniks/concorde/core/utils/api";
11
11
  import { detecHTMLLanguageChange } from "../utils/HTML";
12
12
  type Constructor<T> = new (...args: MixinArgsType[]) => T;
13
13
 
14
- const fetchersInError: Set<{ _fetchData: () => void }> = new Set();
14
+ type Refetchable = { refetch: () => void | Promise<void> };
15
+ const fetchersInError: Set<Refetchable> = new Set();
15
16
  export const invalidateFetchersInError = () => {
16
17
  const fetchersInErrorCopy = new Set(fetchersInError);
17
18
  fetchersInError.clear();
18
19
  for (const fetcher of fetchersInErrorCopy) {
19
- fetcher._fetchData();
20
+ fetcher.refetch();
20
21
  }
21
22
  };
22
23
 
@@ -39,7 +40,7 @@ const dispatchFetchError = (apiResponse: Response) => {
39
40
  }
40
41
  };
41
42
 
42
- const fetchComponents = new Set<{ _fetchData: () => void }>();
43
+ const fetchComponents = new Set<Refetchable>();
43
44
  let languageChangeRequestId = 0;
44
45
  detecHTMLLanguageChange(async () => {
45
46
  //relaunch 4 fetchs then wait the result before launching the next 4 fetchs
@@ -49,7 +50,7 @@ detecHTMLLanguageChange(async () => {
49
50
  while (fetchers.length > 0) {
50
51
  if (currentRequestId != languageChangeRequestId) return;
51
52
  const fourFetchers = fetchers.splice(0, 4);
52
- await Promise.all(fourFetchers.map((fetcher) => fetcher._fetchData()));
53
+ await Promise.all(fourFetchers.map((fetcher) => fetcher.refetch()));
53
54
  }
54
55
  });
55
56
 
@@ -148,13 +149,18 @@ const Fetcher = <
148
149
  this._fetchData();
149
150
  }
150
151
  }
152
+
153
+ refetch() {
154
+ return this._fetchData();
155
+ }
156
+
151
157
  /**
152
158
  *
153
159
  * C'est ici que les données sont chargées via l'utilitaire API
154
160
  * Elles sont ensuite injectées dans le publisher en accord avec la cible définie dans la propriété key
155
161
  * Un Toast est affiché si le chargement échoue
156
162
  */
157
- async _fetchData() {
163
+ protected async _fetchData() {
158
164
  this.requestUpdate();
159
165
  if (!this.isFetchEnabled) return;
160
166
  this.api = new API(this.getApiConfiguration());
@@ -372,6 +378,6 @@ const Fetcher = <
372
378
  }
373
379
  }
374
380
  }
375
- return FetcherElement; //as Constructor<SubscriberInterface> & T;
381
+ return FetcherElement;
376
382
  };
377
383
  export default Fetcher;