@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
@@ -0,0 +1,199 @@
1
+ import HTML, { SearchableDomElement } from "./HTML";
2
+
3
+ /**
4
+ * Observateur pour `@ancestorAttribute({ dynamic: true })`.
5
+ *
6
+ * Un MutationObserver sur `document` ne voit pas les mutations dans les shadow
7
+ * roots (Lit par défaut). Chaque abonnement observe donc directement les nœuds
8
+ * de sa chaîne d'ancêtres (composant → parent → … → host shadow), comme
9
+ * `watchScopedConfiguration` dans `api.ts`.
10
+ *
11
+ * Après un `childList` (wrapper plus proche, reparenting), la chaîne est
12
+ * recalculée pour écouter les nouveaux ancêtres.
13
+ */
14
+
15
+ type SyncOptions = {
16
+ /** En mode dynamique : écrire `null` si l'attribut ancêtre disparaît. */
17
+ assignNull: boolean;
18
+ };
19
+
20
+ type Subscription = {
21
+ component: HTMLElement;
22
+ attributeName: string;
23
+ propertyKey: string;
24
+ syncOptions: SyncOptions;
25
+ disconnectObservers: (() => void) | null;
26
+ };
27
+
28
+ /** Chaîne composant → ancêtres, en traversant les shadow roots. */
29
+ function walkAncestorElements(node: Node): Element[] {
30
+ const elements: Element[] = [];
31
+ let current: Node | null = node;
32
+ while (current) {
33
+ if (current instanceof Element) {
34
+ elements.push(current);
35
+ }
36
+ const parent: Node | null =
37
+ current.parentNode || ((current as ShadowRoot).host ?? null);
38
+ current = parent;
39
+ }
40
+ return elements;
41
+ }
42
+
43
+ /**
44
+ * Observe attributs + enfants directs de chaque ancêtre.
45
+ * Retourne une fonction de nettoyage (disconnect).
46
+ */
47
+ function attachAncestorChainObservers(
48
+ subscription: Subscription,
49
+ onMutation: () => void,
50
+ ): () => void {
51
+ const observers: MutationObserver[] = [];
52
+ let disconnected = false;
53
+ const attributeFilter = HTML.scopeAttributeNames(subscription.attributeName);
54
+
55
+ const reconnect = () => {
56
+ for (const observer of observers) {
57
+ observer.disconnect();
58
+ }
59
+ observers.length = 0;
60
+ if (disconnected) return;
61
+
62
+ for (const element of walkAncestorElements(subscription.component)) {
63
+ const observer = new MutationObserver((records) => {
64
+ if (disconnected) return;
65
+ if (records.some((record) => record.type === "childList")) {
66
+ reconnect();
67
+ }
68
+ onMutation();
69
+ });
70
+ observer.observe(element, {
71
+ attributes: true,
72
+ attributeFilter,
73
+ childList: true,
74
+ subtree: false,
75
+ });
76
+ observers.push(observer);
77
+ }
78
+ };
79
+
80
+ reconnect();
81
+
82
+ return () => {
83
+ disconnected = true;
84
+ for (const observer of observers) {
85
+ observer.disconnect();
86
+ }
87
+ observers.length = 0;
88
+ };
89
+ }
90
+
91
+ /**
92
+ * Point unique de synchronisation DOM → propriété du composant.
93
+ * N'assigne que si la valeur change (`Object.is`) pour limiter les re-renders Lit
94
+ * et éviter de reboucler inutilement `observeDynamicProperty` (@bind / @subscribe).
95
+ */
96
+ export function syncAncestorAttributeValue(
97
+ component: object,
98
+ attributeName: string,
99
+ propertyKey: string,
100
+ options: SyncOptions,
101
+ ): void {
102
+ const record = component as Record<string, unknown>;
103
+ const value = HTML.getAncestorAttributeValue(
104
+ component as unknown as SearchableDomElement,
105
+ attributeName,
106
+ );
107
+ if (!options.assignNull && value === null) return;
108
+ if (!Object.is(record[propertyKey], value)) {
109
+ record[propertyKey] = value;
110
+ }
111
+ }
112
+
113
+ export default class AncestorAttributeObserver {
114
+ private static subscriptions = new Set<Subscription>();
115
+ private static pendingRefresh = new Set<Subscription>();
116
+ private static animationFrameId: number | null = null;
117
+
118
+ /**
119
+ * Enregistre un composant en mode `{ dynamic: true }`.
120
+ * Le `unsubscribe` retourné doit être appelé au `disconnectedCallback`.
121
+ */
122
+ static subscribe(
123
+ component: HTMLElement,
124
+ attributeName: string,
125
+ propertyKey: string,
126
+ syncOptions: SyncOptions = { assignNull: true },
127
+ ): () => void {
128
+ const subscription: Subscription = {
129
+ component,
130
+ attributeName,
131
+ propertyKey,
132
+ syncOptions,
133
+ disconnectObservers: null,
134
+ };
135
+
136
+ subscription.disconnectObservers = attachAncestorChainObservers(
137
+ subscription,
138
+ () => {
139
+ if (!AncestorAttributeObserver.subscriptions.has(subscription)) return;
140
+ AncestorAttributeObserver.pendingRefresh.add(subscription);
141
+ AncestorAttributeObserver.scheduleRefresh();
142
+ },
143
+ );
144
+
145
+ AncestorAttributeObserver.subscriptions.add(subscription);
146
+
147
+ return () => {
148
+ AncestorAttributeObserver.unsubscribe(subscription);
149
+ };
150
+ }
151
+
152
+ /** Coupe les observateurs et retire l'abonnement (pas de fuite après disconnect). */
153
+ private static unsubscribe(subscription: Subscription): void {
154
+ if (!AncestorAttributeObserver.subscriptions.has(subscription)) return;
155
+
156
+ subscription.disconnectObservers?.();
157
+ subscription.disconnectObservers = null;
158
+
159
+ AncestorAttributeObserver.subscriptions.delete(subscription);
160
+ AncestorAttributeObserver.pendingRefresh.delete(subscription);
161
+
162
+ if (AncestorAttributeObserver.subscriptions.size === 0) {
163
+ AncestorAttributeObserver.cancelScheduledRefresh();
164
+ }
165
+ }
166
+
167
+ private static scheduleRefresh(): void {
168
+ if (AncestorAttributeObserver.pendingRefresh.size === 0) return;
169
+ if (AncestorAttributeObserver.animationFrameId !== null) return;
170
+ AncestorAttributeObserver.animationFrameId = requestAnimationFrame(() => {
171
+ AncestorAttributeObserver.flushRefresh();
172
+ });
173
+ }
174
+
175
+ private static cancelScheduledRefresh(): void {
176
+ if (AncestorAttributeObserver.animationFrameId !== null) {
177
+ cancelAnimationFrame(AncestorAttributeObserver.animationFrameId);
178
+ AncestorAttributeObserver.animationFrameId = null;
179
+ }
180
+ AncestorAttributeObserver.pendingRefresh.clear();
181
+ }
182
+
183
+ private static flushRefresh(): void {
184
+ AncestorAttributeObserver.animationFrameId = null;
185
+ const subscriptions = Array.from(AncestorAttributeObserver.pendingRefresh);
186
+ AncestorAttributeObserver.pendingRefresh.clear();
187
+
188
+ for (const subscription of subscriptions) {
189
+ if (!AncestorAttributeObserver.subscriptions.has(subscription)) continue;
190
+ if (!subscription.component.isConnected) continue;
191
+ syncAncestorAttributeValue(
192
+ subscription.component,
193
+ subscription.attributeName,
194
+ subscription.propertyKey,
195
+ subscription.syncOptions,
196
+ );
197
+ }
198
+ }
199
+ }
@@ -60,21 +60,15 @@ class HTML {
60
60
  }
61
61
 
62
62
  /** Noms d'attribut DOM à tester (Lit reflect → minuscules, ex. serviceURL → serviceurl). */
63
- private static scopeAttributeNames(attributeName: string): string[] {
63
+ static scopeAttributeNames(attributeName: string): string[] {
64
64
  const lower = attributeName.toLowerCase();
65
65
  return lower === attributeName ? [attributeName] : [attributeName, lower];
66
66
  }
67
67
 
68
- private static readScopeValueOnElement(
68
+ private static readScopeAttributeOnElement(
69
69
  element: HTMLElement,
70
70
  attributeName: string,
71
71
  ): string | null {
72
- // Lit : la propriété est fiable avant le reflect ; un attribut vide (serviceurl="")
73
- // ne doit pas masquer la propriété.
74
- const prop = (element as unknown as Record<string, unknown>)[attributeName];
75
- if (typeof prop === "string" && prop.length > 0) {
76
- return prop;
77
- }
78
72
  for (const attrName of HTML.scopeAttributeNames(attributeName)) {
79
73
  if (element.hasAttribute(attrName)) {
80
74
  const attr = element.getAttribute(attrName);
@@ -88,8 +82,6 @@ class HTML {
88
82
 
89
83
  /**
90
84
  * Va de parent en parent en partant de node pour trouver un attribut.
91
- * Si l'attribut n'est pas encore reflété (ex. Lit `@property({ reflect: true })`
92
- * au premier `connectedCallback`), lit la propriété homonyme sur l'élément.
93
85
  * @param attributeName nom de l'attribut
94
86
  * @returns valeur de l'attribut ou null si l'attribut n'est pas trouvé
95
87
  */
@@ -101,7 +93,7 @@ class HTML {
101
93
  let current: SearchableDomElement | null = node;
102
94
  while (current) {
103
95
  if (current instanceof HTMLElement) {
104
- const value = HTML.readScopeValueOnElement(current, attributeName);
96
+ const value = HTML.readScopeAttributeOnElement(current, attributeName);
105
97
  if (value != null && value.length > 0) {
106
98
  return value;
107
99
  }
@@ -481,8 +481,7 @@ export class PublisherProxy<T = any> {
481
481
  */
482
482
  _cachedGet_?: T;
483
483
  get(): T {
484
- if (PublisherManager.modifiedCollectore.length > 0)
485
- PublisherManager.modifiedCollectore[0].add(this);
484
+ trackModifiedPublisher(this);
486
485
  if (this._cachedGet_ !== undefined) return this._cachedGet_;
487
486
  if (Object.prototype.hasOwnProperty.call(this._value_, "__value")) {
488
487
  const v = (this._value_ as any).__value;
@@ -519,6 +518,20 @@ export class PublisherProxy<T = any> {
519
518
  *
520
519
  */
521
520
 
521
+ const modifiedCollectore: Set<any>[] = [];
522
+
523
+ function trackModifiedPublisher(proxy: any) {
524
+ if (modifiedCollectore.length > 0) modifiedCollectore[0].add(proxy);
525
+ }
526
+
527
+ export function collectModifiedPublisher() {
528
+ modifiedCollectore.unshift(new Set<any>());
529
+ }
530
+
531
+ export function getModifiedPublishers() {
532
+ return modifiedCollectore.shift() as Set<any>;
533
+ }
534
+
522
535
  export class PublisherManager {
523
536
  static buildDate = __BUILD_DATE__;
524
537
  static changed = false;
@@ -541,9 +554,19 @@ export class PublisherManager {
541
554
  if (PublisherManager.instance != null) throw "Singleton / use getInstance";
542
555
  PublisherManager.instance = this;
543
556
  this.isLocalStrorageReady = this.cleanStorageData() as Promise<boolean>;
557
+ PublisherManager.initPageShowHandler();
558
+ }
559
+
560
+ private static pageShowHandlerInitialized = false;
561
+ private static initPageShowHandler() {
562
+ if (PublisherManager.pageShowHandlerInitialized) return;
563
+ PublisherManager.pageShowHandlerInitialized = true;
564
+ window.addEventListener("pageshow", (e) => {
565
+ if (e.persisted) PublisherManager.getInstance().invalidateAll();
566
+ });
544
567
  }
545
568
 
546
- invalidateAll() {
569
+ private invalidateAll() {
547
570
  this.publishers.forEach((publisher) => {
548
571
  if (!publisher._invalidate_on_page_show_) {
549
572
  return;
@@ -617,16 +640,6 @@ export class PublisherManager {
617
640
  return PublisherManager.instance;
618
641
  }
619
642
 
620
- static registerInstance(id: string, instance: PublisherManager) {
621
- if (PublisherManager.instances.has(id)) {
622
- console.warn(
623
- "PublisherManager instance already registered with id: ",
624
- id,
625
- );
626
- }
627
- PublisherManager.instances.set(id, instance);
628
- }
629
-
630
643
  /**
631
644
  * shortcut static pour obtenir un publisher vias sont id/adresse sans taper getInstance.
632
645
  * Si le publisher n'existe pas, il est créé.
@@ -638,22 +651,6 @@ export class PublisherManager {
638
651
  return PublisherManager.getInstance().get(id, options);
639
652
  }
640
653
 
641
- public static modifiedCollectore: Set<any>[] = [];
642
- public static collectModifiedPublisher() {
643
- PublisherManager.modifiedCollectore.unshift(new Set<any>());
644
- }
645
- public static getModifiedPublishers() {
646
- return PublisherManager.modifiedCollectore.shift() as Set<any>;
647
- }
648
-
649
- /**
650
- * shortcut static pour supprimer un publisher de la liste et appel également delete sur le publisher ce qui le supprime, de même que ses sous publishers
651
- */
652
- static delete(id: string | null) {
653
- if (!id) return false;
654
- return PublisherManager.getInstance().delete(id);
655
- }
656
-
657
654
  /**
658
655
  * Obtenir un publisher vias sont id/adresse
659
656
  * Si le publisher n'existe pas, il est créé.
@@ -1063,9 +1060,9 @@ export const getObservables = <T = any>(
1063
1060
  ): Set<DataProvider<T>> => {
1064
1061
  if (typeof observable === "function") {
1065
1062
  const func = observable as () => any;
1066
- PublisherManager.collectModifiedPublisher();
1063
+ collectModifiedPublisher();
1067
1064
  func();
1068
- return PublisherManager.getModifiedPublishers() as Set<DataProvider<T>>;
1065
+ return getModifiedPublishers() as Set<DataProvider<T>>;
1069
1066
  }
1070
1067
  if (typeof observable === "string") {
1071
1068
  const split = observable.split(".");
@@ -1187,9 +1184,3 @@ export function set<T>(id: string | DataProviderKey<T>, value: T): void {
1187
1184
  getObservables(path).values().next().value?.set(value);
1188
1185
  }
1189
1186
 
1190
- /**
1191
- * next back handling data invalidation
1192
- */
1193
- window.addEventListener("pageshow", (e) => {
1194
- if (e.persisted) PublisherManager.getInstance().invalidateAll();
1195
- });
@@ -50,7 +50,7 @@ export type ApiResult<T> = {
50
50
  export type ApiGetResult<T> = ApiResult<T>;
51
51
 
52
52
  /** Extrait le corps typé depuis le résultat traité par `handleResult`. */
53
- export function extractTypedApiResult<T>(
53
+ function extractTypedApiResult<T>(
54
54
  processed: ResultTypeInterface | null | undefined,
55
55
  ): T {
56
56
  if (processed == null || typeof processed !== "object") {
@@ -67,7 +67,7 @@ class API {
67
67
  /**
68
68
  * Ce tableau static permet de ne pas appeler plusieurs fois le même service lors d'appel concurrents en GET.
69
69
  */
70
- static loadingGetPromises: Map<string, Promise<unknown>> = new Map();
70
+ private static loadingGetPromises: Map<string, Promise<unknown>> = new Map();
71
71
  /**
72
72
  * L'url de base du service sans endpoint
73
73
  */
@@ -123,14 +123,14 @@ class API {
123
123
  /**
124
124
  * Tableau static des tokens stokés en memoire vive (comportement à revoir à l'occasion)
125
125
  */
126
- static tokens = new Map<string | null, string | null | undefined>();
126
+ private static tokens = new Map<string | null, string | null | undefined>();
127
127
 
128
128
  /**
129
129
  * Tableau stockant l'ensemble des tokens invalides
130
130
  */
131
- static invalidTokens: (string | null | undefined)[] = [];
131
+ private static invalidTokens: (string | null | undefined)[] = [];
132
132
 
133
- handleInvalidToken(token: string | null | undefined) {
133
+ private handleInvalidToken(token: string | null | undefined) {
134
134
  if (!token) return;
135
135
 
136
136
  if (API.invalidTokens.includes(token)) return;
@@ -142,11 +142,11 @@ class API {
142
142
  /**
143
143
  * Tableau static des tentatives échouées de récupération auto du token
144
144
  */
145
- static failledTokenUpdates = new Map<string | null, true>();
145
+ private static failledTokenUpdates = new Map<string | null, true>();
146
146
  /**
147
147
  * Tableau static des flags pour savoir si le premier appel a été fait pour chaque serviceURL
148
148
  */
149
- static firstCallDoneFlags = new Map<string | null, CallState>();
149
+ private static firstCallDoneFlags = new Map<string | null, CallState>();
150
150
 
151
151
  /**
152
152
  * Le endPoint pour obtenir le bearer token qui sera concaténé à l'url du service
@@ -174,7 +174,7 @@ class API {
174
174
  this.cache = config.cache || "default";
175
175
  this.keepAlive = config.keepAlive || false;
176
176
  }
177
- async handleResult(
177
+ private async handleResult(
178
178
  fetchResult: Response,
179
179
  lastCall: APICall,
180
180
  ): Promise<ResultTypeInterface> {
@@ -231,7 +231,7 @@ class API {
231
231
  /**
232
232
  * Basic auth
233
233
  */
234
- async auth() {
234
+ private async auth() {
235
235
  if (this.token) return;
236
236
  if (API.tokens.has(this.serviceURL)) {
237
237
  this.token = API.tokens.get(this.serviceURL);
@@ -362,7 +362,7 @@ class API {
362
362
  /**
363
363
  * firstCallDone is a function that returns a promise that is resolved when the first call to the API is done for each serviceURL whatever api instance is used
364
364
  */
365
- firstCallDone() {
365
+ private firstCallDone() {
366
366
  return new Promise((resolve) => {
367
367
  if (!API.firstCallDoneFlags.has(this.serviceURL)) {
368
368
  API.firstCallDoneFlags.set(this.serviceURL, "loading");
package/src/css.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ declare module "*.css" {
2
+ const css: import("lit").CSSResult;
3
+ export default css;
4
+ }
5
+
6
+ declare module "*.css?inline" {
7
+ const css: string;
8
+ export default css;
9
+ }
10
+
11
+ declare module "*.scss" {
12
+ const css: import("lit").CSSResult;
13
+ export default css;
14
+ }
15
+
16
+ declare module "*.scss?inline" {
17
+ const css: string;
18
+ export default css;
19
+ }
package/src/directives.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as directives from "@supersoniks/concorde/core/directives/DataProvider";
2
2
  import {dp as pubDp, dataProvider as pubDataProvider, get as pubGet, set as pubSet} from "@supersoniks/concorde/core/utils/PublisherProxy";
3
+ import type {DirectiveResult} from "lit/async-directive.js";
3
4
 
4
5
  import {ConcordeWindow} from "./core/_types/types";
5
6
  /**
@@ -10,8 +11,8 @@ export const dp = pubDp;
10
11
  * @deprecated @see pubDataProvider
11
12
  */
12
13
  export const dataProvider = pubDataProvider;
13
- export const subscribe = directives.subscribe;
14
- export const sub = directives.sub;
14
+ export const subscribe = directives.subscribe as DirectiveResult;
15
+ export const sub = directives.sub as DirectiveResult;
15
16
 
16
17
  /**
17
18
  * @deprecated @see pubGet
@@ -18,7 +18,7 @@ import { ancestorAttribute } from "@supersoniks/concorde/decorators";
18
18
 
19
19
  ### Basic example
20
20
 
21
- The component reads `dataProvider` and `testAttribute` from its ancestor wrapper.
21
+ The component reads `dataProvider` and `testAttribute` from its ancestor wrapper. By default (`dynamic: false`), values are read once at connect.
22
22
 
23
23
  <sonic-code language="typescript">
24
24
  <template>
@@ -36,10 +36,8 @@ export class DemoAncestorAttribute extends LitElement {
36
36
 
37
37
  render() {
38
38
  return html`
39
- <section>
40
- <p>dataProvider: <strong>${this.dataProvider || "null"}</strong></p>
41
- <p>testAttribute: <strong>${this.testAttribute || "null"}</strong></p>
42
- </section>
39
+ <p>dataProvider: <strong>${this.dataProvider ?? "null"}</strong></p>
40
+ <p>testAttribute: <strong>${this.testAttribute ?? "null"}</strong></p>
43
41
  `;
44
42
  }
45
43
  }
@@ -55,7 +53,6 @@ export class DemoAncestorAttribute extends LitElement {
55
53
  </template>
56
54
  </sonic-code>
57
55
 
58
-
59
56
  ## Use cases
60
57
 
61
58
  This decorator is particularly useful for:
@@ -68,9 +65,60 @@ This decorator is particularly useful for:
68
65
  ## Behavior
69
66
 
70
67
  - The search starts from the current element and traverses up the DOM tree
71
- - If the attribute is not found, the property will be assigned `null`
72
68
  - The injection happens automatically at the time of `connectedCallback`
73
- - The value is not reactive: it is only updated once when the element is connected to the DOM
69
+ - By default (`dynamic: false`), the value is read once at connect time and is not updated afterward
70
+ - With `{ dynamic: true }`, the property stays in sync when:
71
+ - an ancestor **changes** the attribute value
72
+ - a **closer** ancestor **gains** the attribute (that value wins)
73
+ - the **nearest** ancestor **loses** the attribute (falls back to the next one up, or `null`)
74
+ - When `dynamic` is enabled, updates also propagate to `@subscribe` / `@bind` paths that depend on the decorated property (e.g. `${dataProvider}`)
75
+
76
+ ### Dynamic mode
77
+
78
+ Use `{ dynamic: true }` when the decorated property must follow the DOM. With Lit, add **`@state()`** on the same property so template updates are visible when the observer assigns a new value.
79
+
80
+ The live demo below shows only the resolved attribute value — no store, no reparenting.
81
+
82
+ <sonic-code language="typescript">
83
+ <template>
84
+ @customElement("demo-ancestor-attribute-dynamic")
85
+ export class DemoAncestorAttributeDynamic extends LitElement {
86
+ @ancestorAttribute("dataProvider", { dynamic: true })
87
+ @state()
88
+ dataProvider: string | null = null;
89
+
90
+ render() {
91
+ return html`
92
+ &lt;p&gt;Nearest ancestor: &lt;strong&gt;${this.dataProvider ?? "null"}&lt;/strong&gt;&lt;/p&gt;
93
+ `;
94
+ }
95
+ }
96
+ </template>
97
+ </sonic-code>
98
+
99
+ Try in the demo:
100
+
101
+ - **parent-a** / **parent-b** — change the value on the direct parent
102
+ - **Remove parent attr** — falls back to **outer**
103
+ - **Add closer** — a wrapper with `from-closer` becomes the nearest ancestor
104
+ - **Remove closer** — back to parent or outer
105
+ - **Remove outer attr** — if parent has no attribute either, the child shows `null`
106
+
107
+ <sonic-code>
108
+ <template>
109
+ <docs-demo-sources for="demo-ancestor-attribute-dynamic-section"></docs-demo-sources>
110
+ <demo-ancestor-attribute-dynamic-section></demo-ancestor-attribute-dynamic-section>
111
+ </template>
112
+ </sonic-code>
113
+
114
+ Static mode (default) — read once at connect, no observer:
115
+
116
+ <sonic-code language="typescript">
117
+ <template>
118
+ @ancestorAttribute("dataProvider")
119
+ dataProvider: string | null = null;
120
+ </template>
121
+ </sonic-code>
74
122
 
75
123
  ## Notes
76
124
 
@@ -13,10 +13,53 @@ Pass an [`Endpoint<T>`](#docs/_misc/endpoint.md/endpoint) as the first argument.
13
13
 
14
14
  `${prop}` on the endpoint or config key is resolved on the host. While a placeholder is `null` or `undefined`, no GET runs. Optional `skipEmptyPlaceholder: true` also blocks `""` (empty string only). Details: [Dynamic path placeholders](#docs/_misc/dynamic-path.md/dynamic-path).
15
15
 
16
+ ## Options (`GetOptions`)
17
+
18
+ Pass as the **second** argument (scoped config) or **third** (with a configuration key). Same shape as send decorators where applicable:
19
+
20
+ | Option | Description |
21
+ |--------|-------------|
22
+ | `skipEmptyPlaceholder` | Treat `""` as not ready (see [Dynamic path](#docs/_misc/dynamic-path.md/dynamic-path)). |
23
+ | `refetchEveryMs` | Automatic polling interval (ms). `0` or omitted = no polling. |
24
+ | `triggerKey` | `DataProviderKey` — `PublisherManager.get(...).invalidate()` on that publisher re-runs the GET. |
25
+
26
+ ### Manual refetch (`triggerKey`)
27
+
28
+ Same pattern as [@post](#docs/_decorators/post.md/post): a publisher acts as a **signal**, independent of the response payload.
29
+
30
+ ```typescript
31
+ import { get, type ApiResult } from "@supersoniks/concorde/decorators";
32
+ import { Endpoint } from "@supersoniks/concorde/utils/endpoint";
33
+ import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
34
+ import { dp } from "@supersoniks/concorde/core/utils/PublisherProxy";
35
+
36
+ const geoCommunesEndpoint = new Endpoint<GeoCommuneRow[]>(
37
+ "communes?limit=5&fields=nom,code",
38
+ );
39
+ const geoCommunesRefreshKey = new DataProviderKey<void>(
40
+ "docsDemoGeoCommunesRefresh",
41
+ );
42
+
43
+ @get(geoCommunesEndpoint, apiConfigurationKey, {
44
+ triggerKey: geoCommunesRefreshKey,
45
+ })
46
+ @state()
47
+ payload: ApiResult<GeoCommuneRow[]> | null = null;
48
+
49
+ // Same component or anywhere else:
50
+ dp(geoCommunesRefreshKey).invalidate();
51
+ ```
52
+
53
+ Prefer `triggerKey` over mutating the API configuration publisher when you only want to **reload the same URL** — no need to touch `serviceURL`, tokens, etc.
54
+
55
+ The docs mock adds an **`X-Fetched-At`** response header on `/docs-mock-api/geo/communes` so live demos can show when the last fetch happened (`response.headers.get("X-Fetched-At")`).
56
+
16
57
  ## When the GET runs again
17
58
 
18
59
  - A referenced Lit property changes (endpoint path and/or config key contains `${...}`).
19
60
  - `set` on the active configuration publisher (`onInternalMutation`).
61
+ - `triggerKey` publisher `invalidate()`.
62
+ - `refetchEveryMs` polling (after each successful fetch).
20
63
 
21
64
  ## Import
22
65
 
@@ -42,6 +85,8 @@ payload: ApiResult<User> | null = null;
42
85
 
43
86
  ## Live demos
44
87
 
88
+ `@get` with **`triggerKey`** — refresh button + `X-Fetched-At` timestamp in the UI:
89
+
45
90
  <sonic-code>
46
91
  <template>
47
92
  <docs-demo-sources for="demo-api-get"></docs-demo-sources>
@@ -49,12 +94,13 @@ payload: ApiResult<User> | null = null;
49
94
  </template>
50
95
  </sonic-code>
51
96
 
52
- Dynamic config and endpoint path (`demo-api-get-configuration-key` in doc sources):
97
+ Dynamic config and endpoint path. Manual refetch is triggered **from a separate component** (same `triggerKey` publisher):
53
98
 
54
99
  <sonic-code>
55
100
  <template>
56
101
  <docs-demo-sources for="demo-api-get-configuration-key"></docs-demo-sources>
57
102
  <demo-api-get-configuration-key></demo-api-get-configuration-key>
103
+ <demo-api-get-refresh-remote></demo-api-get-refresh-remote>
58
104
  </template>
59
105
  </sonic-code>
60
106
 
@@ -255,10 +255,15 @@ export const DOCS_DEMO_SOURCE_REGISTRY: Record<string, DocsSource[]> = {
255
255
  "demo-api-get-configuration-key": [
256
256
  {
257
257
  path: "src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",
258
- line: 126,
258
+ line: 147,
259
259
  label: "demo-api-get-configuration-key",
260
260
  },
261
- { path: "src/docs/example/decorators-demo-geo.ts", label: "geo API" },
261
+ {
262
+ path: "src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",
263
+ line: 239,
264
+ label: "demo-api-get-refresh-remote",
265
+ },
266
+ { path: "src/docs/example/decorators-demo-geo.ts", label: "geo API + triggerKey" },
262
267
  ],
263
268
  "demo-api-get-publish-subscribe": [
264
269
  {
@@ -329,7 +334,19 @@ export const DOCS_DEMO_SOURCE_REGISTRY: Record<string, DocsSource[]> = {
329
334
  { path: "src/docs/example/decorators-demo-init.ts", label: "demo data" },
330
335
  ],
331
336
  "demo-ancestor-attribute": [
332
- { path: "src/docs/example/decorators-demo.ts", line: 19, label: "demo-ancestor-attribute" },
337
+ { path: "src/docs/example/decorators-demo.ts", line: 35, label: "demo-ancestor-attribute" },
338
+ ],
339
+ "demo-ancestor-attribute-dynamic-section": [
340
+ {
341
+ path: "src/docs/example/decorators-demo.ts",
342
+ line: 60,
343
+ label: "demo-ancestor-attribute-dynamic",
344
+ },
345
+ {
346
+ path: "src/docs/example/decorators-demo.ts",
347
+ line: 81,
348
+ label: "demo-ancestor-attribute-dynamic-section",
349
+ },
333
350
  ],
334
351
  "demo-on-assign": [
335
352
  { path: "src/docs/example/decorators-demo.ts", line: 43, label: "demo-on-assign" },
@@ -49,3 +49,8 @@ export const geoCommunesApiGetEndpointDynamic = new Endpoint<GeoCommuneRow[]>(
49
49
  export const geoCommunesApiGetPublishKey = new DataProviderKey<
50
50
  ApiResult<GeoCommuneRow[]>
51
51
  >(geoCommunesApiGetEndpoint.path);
52
+
53
+ /** Signal de refetch manuel pour les démos `@get` (voir `triggerKey`). */
54
+ export const docsDemoGeoCommunesRefreshKey = new DataProviderKey<void>(
55
+ "docsDemoGeoCommunesRefresh",
56
+ );