@supersoniks/concorde 4.9.93 → 4.9.95

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 (657) hide show
  1. package/README.md +16 -30
  2. package/build-infos.json +1 -1
  3. package/concorde-3d.bundle.js +3911 -0
  4. package/concorde-3d.es.js +32635 -0
  5. package/concorde-core.bundle.js +299 -292
  6. package/concorde-core.es.js +10104 -6071
  7. package/concorde-hugging-face-infer.bundle.js +32 -0
  8. package/concorde-hugging-face-infer.es.js +2952 -0
  9. package/concorde-shader.bundle.js +105 -0
  10. package/concorde-shader.es.js +7982 -0
  11. package/concorde-webgpu.bundle.js +296 -0
  12. package/concorde-webgpu.es.js +8268 -0
  13. package/dist/concorde-core.bundle.js +299 -292
  14. package/dist/concorde-core.es.js +10104 -6071
  15. package/dist/docs-mock-api-sw.js +110 -0
  16. package/dist/docs-mock-api-sw.js.map +3 -3
  17. package/docs/assets/{index-D2Q3JyQ6.css → index-BZiZXMU-.css} +1 -1
  18. package/docs/assets/index-FmK4JaIM.js +11992 -0
  19. package/docs/crawl/core/components/functional/jsonata/jsonata.html +79 -0
  20. package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +1 -1
  21. package/docs/crawl/docs/_core-concept/dataFlow.html +12 -1
  22. package/docs/crawl/docs/_decorators/get.html +27 -6
  23. package/docs/crawl/docs/_decorators/patch.html +6 -0
  24. package/docs/crawl/docs/_decorators/post.html +8 -0
  25. package/docs/crawl/docs/_decorators/put.html +6 -0
  26. package/docs/crawl/docs/_misc/docs-mock-api.html +12 -0
  27. package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +138 -0
  28. package/docs/crawl/docs/_misc/html-integration.html +3 -2
  29. package/docs/crawl/hubs/decorators.html +36 -31
  30. package/docs/crawl/hubs/remote-data.html +39 -36
  31. package/docs/crawl/index.html +2 -0
  32. package/docs/docs-mock-api-sw.js +110 -0
  33. package/docs/docs-mock-api-sw.js.map +3 -3
  34. package/docs/index.html +2 -2
  35. package/docs/llms-full.txt +240 -5
  36. package/docs/llms.txt +2 -0
  37. package/docs/sitemap.xml +6 -0
  38. package/docs/src/core/components/functional/jsonata/jsonata.md +56 -0
  39. package/docs/src/core/components/ui/form/checkbox/checkbox.md +1 -1
  40. package/docs/src/docs/_core-concept/dataFlow.md +10 -1
  41. package/docs/src/docs/_decorators/get.md +31 -0
  42. package/docs/src/docs/_decorators/patch.md +9 -0
  43. package/docs/src/docs/_decorators/post.md +11 -0
  44. package/docs/src/docs/_decorators/put.md +9 -0
  45. package/docs/src/docs/_misc/docs-mock-api.md +3 -0
  46. package/docs/src/docs/_misc/formelement-subscriber-removal.md +115 -0
  47. package/docs/src/docs/_misc/html-integration.md +2 -0
  48. package/docs/src/docs/search/docs-search.json +300 -5
  49. package/docs/src/tsconfig.json +286 -268
  50. package/package.json +382 -1080
  51. package/public/docs-mock-api-sw.js +110 -0
  52. package/public/docs-mock-api-sw.js.map +3 -3
  53. package/scripts/post-build.mjs +0 -43
  54. package/scripts/pre-build.mjs +4 -33
  55. package/scripts/pre-publish.mjs +0 -2
  56. package/src/core/components/functional/functional.ts +1 -0
  57. package/src/core/components/functional/jsonata/jsonata.md +56 -0
  58. package/src/core/components/functional/jsonata/jsonata.spec.ts +202 -0
  59. package/src/core/components/functional/jsonata/jsonata.ts +116 -0
  60. package/src/core/components/functional/sdui/sdui.md +0 -0
  61. package/src/core/components/ui/button/button.ts +2 -2
  62. package/src/core/components/ui/form/checkbox/checkbox.md +0 -0
  63. package/src/core/components/ui/form/input/input.ts +0 -0
  64. package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -0
  65. package/src/core/components/ui/form/select/select.ts +0 -0
  66. package/src/core/components/ui/form/textarea/textarea.ts +0 -0
  67. package/src/core/decorators/Subscriber.ts +2 -0
  68. package/src/core/decorators/subscriber/derive.ts +95 -0
  69. package/src/core/utils/derive.spec.ts +190 -0
  70. package/src/core/utils/derive.ts +357 -0
  71. package/src/core/utils/jsonataHelpers.ts +100 -0
  72. package/src/core/utils/jsonataRuntime.ts +88 -0
  73. package/src/docs/_core-concept/dataFlow.md +9 -0
  74. package/src/docs/_getting-started/create-a-component.md +0 -0
  75. package/src/docs/_misc/docs-mock-api.md +3 -0
  76. package/src/docs/components/docs-demo-sources.ts +26 -0
  77. package/src/docs/docs.ts +1 -0
  78. package/src/docs/example/docs-jsonata-demos.ts +128 -0
  79. package/src/docs/mock-api/fixtures-jsonata.ts +131 -0
  80. package/src/docs/mock-api/router.ts +26 -0
  81. package/src/docs/navigation/navigation.ts +4 -0
  82. package/src/docs/search/docs-search.json +2210 -615
  83. package/src/tsconfig.json +327 -0
  84. package/src/tsconfig.tsbuildinfo +1 -1
  85. package/src/utils.ts +13 -0
  86. package/vite/config.js +23 -35
  87. package/dist/js/components.js +0 -12
  88. package/dist/js/components.js.map +0 -1
  89. package/dist/js/concorde-loaded.js +0 -5
  90. package/dist/js/concorde-loaded.js.map +0 -1
  91. package/dist/js/core/_types/endpoint.js +0 -5
  92. package/dist/js/core/_types/endpoint.js.map +0 -1
  93. package/dist/js/core/_types/key.js +0 -2
  94. package/dist/js/core/_types/key.js.map +0 -1
  95. package/dist/js/core/_types/types.js +0 -3
  96. package/dist/js/core/_types/types.js.map +0 -1
  97. package/dist/js/core/components/functional/date/date.js +0 -272
  98. package/dist/js/core/components/functional/date/date.js.map +0 -1
  99. package/dist/js/core/components/functional/example/example.js +0 -44
  100. package/dist/js/core/components/functional/example/example.js.map +0 -1
  101. package/dist/js/core/components/functional/fetch/fetch.js +0 -79
  102. package/dist/js/core/components/functional/fetch/fetch.js.map +0 -1
  103. package/dist/js/core/components/functional/functional.js +0 -17
  104. package/dist/js/core/components/functional/functional.js.map +0 -1
  105. package/dist/js/core/components/functional/if/if.js +0 -39
  106. package/dist/js/core/components/functional/if/if.js.map +0 -1
  107. package/dist/js/core/components/functional/list/list.js +0 -341
  108. package/dist/js/core/components/functional/list/list.js.map +0 -1
  109. package/dist/js/core/components/functional/mix/mix.js +0 -103
  110. package/dist/js/core/components/functional/mix/mix.js.map +0 -1
  111. package/dist/js/core/components/functional/queue/queue.js +0 -450
  112. package/dist/js/core/components/functional/queue/queue.js.map +0 -1
  113. package/dist/js/core/components/functional/router/redirect.js +0 -54
  114. package/dist/js/core/components/functional/router/redirect.js.map +0 -1
  115. package/dist/js/core/components/functional/router/router.js +0 -179
  116. package/dist/js/core/components/functional/router/router.js.map +0 -1
  117. package/dist/js/core/components/functional/sdui/SDUIDescriptorTransformer.js +0 -216
  118. package/dist/js/core/components/functional/sdui/SDUIDescriptorTransformer.js.map +0 -1
  119. package/dist/js/core/components/functional/sdui/default-library.json +0 -108
  120. package/dist/js/core/components/functional/sdui/sdui-utils.js +0 -64
  121. package/dist/js/core/components/functional/sdui/sdui-utils.js.map +0 -1
  122. package/dist/js/core/components/functional/sdui/sdui.js +0 -266
  123. package/dist/js/core/components/functional/sdui/sdui.js.map +0 -1
  124. package/dist/js/core/components/functional/sdui/types.js +0 -2
  125. package/dist/js/core/components/functional/sdui/types.js.map +0 -1
  126. package/dist/js/core/components/functional/sonic-scope/sonic-scope.js +0 -22
  127. package/dist/js/core/components/functional/sonic-scope/sonic-scope.js.map +0 -1
  128. package/dist/js/core/components/functional/states/states.js +0 -172
  129. package/dist/js/core/components/functional/states/states.js.map +0 -1
  130. package/dist/js/core/components/functional/submit/submit.js +0 -284
  131. package/dist/js/core/components/functional/submit/submit.js.map +0 -1
  132. package/dist/js/core/components/functional/subscriber/subscriber.js +0 -39
  133. package/dist/js/core/components/functional/subscriber/subscriber.js.map +0 -1
  134. package/dist/js/core/components/functional/translation/translation.js +0 -28
  135. package/dist/js/core/components/functional/translation/translation.js.map +0 -1
  136. package/dist/js/core/components/functional/value/value.js +0 -28
  137. package/dist/js/core/components/functional/value/value.js.map +0 -1
  138. package/dist/js/core/components/ui/_css/scroll.js +0 -27
  139. package/dist/js/core/components/ui/_css/scroll.js.map +0 -1
  140. package/dist/js/core/components/ui/_css/shadow.js +0 -22
  141. package/dist/js/core/components/ui/_css/shadow.js.map +0 -1
  142. package/dist/js/core/components/ui/_css/size.js +0 -36
  143. package/dist/js/core/components/ui/_css/size.js.map +0 -1
  144. package/dist/js/core/components/ui/_css/type.js +0 -92
  145. package/dist/js/core/components/ui/_css/type.js.map +0 -1
  146. package/dist/js/core/components/ui/alert/alert.js +0 -213
  147. package/dist/js/core/components/ui/alert/alert.js.map +0 -1
  148. package/dist/js/core/components/ui/alert-messages/alert-messages.js +0 -68
  149. package/dist/js/core/components/ui/alert-messages/alert-messages.js.map +0 -1
  150. package/dist/js/core/components/ui/badge/badge.js +0 -199
  151. package/dist/js/core/components/ui/badge/badge.js.map +0 -1
  152. package/dist/js/core/components/ui/button/button.js +0 -697
  153. package/dist/js/core/components/ui/button/button.js.map +0 -1
  154. package/dist/js/core/components/ui/captcha/altchaStyles.js +0 -226
  155. package/dist/js/core/components/ui/captcha/altchaStyles.js.map +0 -1
  156. package/dist/js/core/components/ui/captcha/captcha.js +0 -167
  157. package/dist/js/core/components/ui/captcha/captcha.js.map +0 -1
  158. package/dist/js/core/components/ui/card/card-footer.js +0 -26
  159. package/dist/js/core/components/ui/card/card-footer.js.map +0 -1
  160. package/dist/js/core/components/ui/card/card-header-descripton.js +0 -30
  161. package/dist/js/core/components/ui/card/card-header-descripton.js.map +0 -1
  162. package/dist/js/core/components/ui/card/card-header.js +0 -79
  163. package/dist/js/core/components/ui/card/card-header.js.map +0 -1
  164. package/dist/js/core/components/ui/card/card-main.js +0 -26
  165. package/dist/js/core/components/ui/card/card-main.js.map +0 -1
  166. package/dist/js/core/components/ui/card/card.js +0 -67
  167. package/dist/js/core/components/ui/card/card.js.map +0 -1
  168. package/dist/js/core/components/ui/divider/divider.js +0 -200
  169. package/dist/js/core/components/ui/divider/divider.js.map +0 -1
  170. package/dist/js/core/components/ui/form/checkbox/checkbox.js +0 -257
  171. package/dist/js/core/components/ui/form/checkbox/checkbox.js.map +0 -1
  172. package/dist/js/core/components/ui/form/css/form-control.js +0 -393
  173. package/dist/js/core/components/ui/form/css/form-control.js.map +0 -1
  174. package/dist/js/core/components/ui/form/fieldset/fieldset.js +0 -124
  175. package/dist/js/core/components/ui/form/fieldset/fieldset.js.map +0 -1
  176. package/dist/js/core/components/ui/form/fieldset/legend-description.js +0 -38
  177. package/dist/js/core/components/ui/form/fieldset/legend-description.js.map +0 -1
  178. package/dist/js/core/components/ui/form/fieldset/legend.js +0 -130
  179. package/dist/js/core/components/ui/form/fieldset/legend.js.map +0 -1
  180. package/dist/js/core/components/ui/form/form-actions/form-actions.js +0 -47
  181. package/dist/js/core/components/ui/form/form-actions/form-actions.js.map +0 -1
  182. package/dist/js/core/components/ui/form/form-layout/form-layout.js +0 -84
  183. package/dist/js/core/components/ui/form/form-layout/form-layout.js.map +0 -1
  184. package/dist/js/core/components/ui/form/input/input.js +0 -316
  185. package/dist/js/core/components/ui/form/input/input.js.map +0 -1
  186. package/dist/js/core/components/ui/form/input/password-helper.js +0 -134
  187. package/dist/js/core/components/ui/form/input/password-helper.js.map +0 -1
  188. package/dist/js/core/components/ui/form/input/same-value-helper.js +0 -85
  189. package/dist/js/core/components/ui/form/input/same-value-helper.js.map +0 -1
  190. package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js +0 -405
  191. package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js.map +0 -1
  192. package/dist/js/core/components/ui/form/radio/radio.js +0 -63
  193. package/dist/js/core/components/ui/form/radio/radio.js.map +0 -1
  194. package/dist/js/core/components/ui/form/select/select.js +0 -323
  195. package/dist/js/core/components/ui/form/select/select.js.map +0 -1
  196. package/dist/js/core/components/ui/form/switch/switch.js +0 -90
  197. package/dist/js/core/components/ui/form/switch/switch.js.map +0 -1
  198. package/dist/js/core/components/ui/form/textarea/textarea.js +0 -162
  199. package/dist/js/core/components/ui/form/textarea/textarea.js.map +0 -1
  200. package/dist/js/core/components/ui/group/group.js +0 -128
  201. package/dist/js/core/components/ui/group/group.js.map +0 -1
  202. package/dist/js/core/components/ui/icon/icon.js +0 -145
  203. package/dist/js/core/components/ui/icon/icon.js.map +0 -1
  204. package/dist/js/core/components/ui/icon/icons.js +0 -184
  205. package/dist/js/core/components/ui/icon/icons.js.map +0 -1
  206. package/dist/js/core/components/ui/icon/icons.json +0 -1
  207. package/dist/js/core/components/ui/image/image.js +0 -160
  208. package/dist/js/core/components/ui/image/image.js.map +0 -1
  209. package/dist/js/core/components/ui/link/link.js +0 -125
  210. package/dist/js/core/components/ui/link/link.js.map +0 -1
  211. package/dist/js/core/components/ui/loader/loader.js +0 -106
  212. package/dist/js/core/components/ui/loader/loader.js.map +0 -1
  213. package/dist/js/core/components/ui/loader/styles/fixed.js +0 -56
  214. package/dist/js/core/components/ui/loader/styles/fixed.js.map +0 -1
  215. package/dist/js/core/components/ui/loader/styles/inline.js +0 -70
  216. package/dist/js/core/components/ui/loader/styles/inline.js.map +0 -1
  217. package/dist/js/core/components/ui/menu/menu-item.js +0 -35
  218. package/dist/js/core/components/ui/menu/menu-item.js.map +0 -1
  219. package/dist/js/core/components/ui/menu/menu.js +0 -436
  220. package/dist/js/core/components/ui/menu/menu.js.map +0 -1
  221. package/dist/js/core/components/ui/modal/modal-actions.js +0 -44
  222. package/dist/js/core/components/ui/modal/modal-actions.js.map +0 -1
  223. package/dist/js/core/components/ui/modal/modal-close.js +0 -56
  224. package/dist/js/core/components/ui/modal/modal-close.js.map +0 -1
  225. package/dist/js/core/components/ui/modal/modal-content.js +0 -27
  226. package/dist/js/core/components/ui/modal/modal-content.js.map +0 -1
  227. package/dist/js/core/components/ui/modal/modal-subtitle.js +0 -34
  228. package/dist/js/core/components/ui/modal/modal-subtitle.js.map +0 -1
  229. package/dist/js/core/components/ui/modal/modal-title.js +0 -35
  230. package/dist/js/core/components/ui/modal/modal-title.js.map +0 -1
  231. package/dist/js/core/components/ui/modal/modal-utils.js +0 -32
  232. package/dist/js/core/components/ui/modal/modal-utils.js.map +0 -1
  233. package/dist/js/core/components/ui/modal/modal.js +0 -568
  234. package/dist/js/core/components/ui/modal/modal.js.map +0 -1
  235. package/dist/js/core/components/ui/pop/pop.js +0 -337
  236. package/dist/js/core/components/ui/pop/pop.js.map +0 -1
  237. package/dist/js/core/components/ui/progress/progress.js +0 -164
  238. package/dist/js/core/components/ui/progress/progress.js.map +0 -1
  239. package/dist/js/core/components/ui/table/table-caption.js +0 -29
  240. package/dist/js/core/components/ui/table/table-caption.js.map +0 -1
  241. package/dist/js/core/components/ui/table/table-tbody.js +0 -41
  242. package/dist/js/core/components/ui/table/table-tbody.js.map +0 -1
  243. package/dist/js/core/components/ui/table/table-td.js +0 -69
  244. package/dist/js/core/components/ui/table/table-td.js.map +0 -1
  245. package/dist/js/core/components/ui/table/table-tfoot.js +0 -28
  246. package/dist/js/core/components/ui/table/table-tfoot.js.map +0 -1
  247. package/dist/js/core/components/ui/table/table-th.js +0 -80
  248. package/dist/js/core/components/ui/table/table-th.js.map +0 -1
  249. package/dist/js/core/components/ui/table/table-thead.js +0 -26
  250. package/dist/js/core/components/ui/table/table-thead.js.map +0 -1
  251. package/dist/js/core/components/ui/table/table-tr.js +0 -67
  252. package/dist/js/core/components/ui/table/table-tr.js.map +0 -1
  253. package/dist/js/core/components/ui/table/table.js +0 -106
  254. package/dist/js/core/components/ui/table/table.js.map +0 -1
  255. package/dist/js/core/components/ui/theme/theme-collection/core-variables.js +0 -74
  256. package/dist/js/core/components/ui/theme/theme-collection/core-variables.js.map +0 -1
  257. package/dist/js/core/components/ui/theme/theme-collection/dark.js +0 -39
  258. package/dist/js/core/components/ui/theme/theme-collection/dark.js.map +0 -1
  259. package/dist/js/core/components/ui/theme/theme-collection/light.js +0 -32
  260. package/dist/js/core/components/ui/theme/theme-collection/light.js.map +0 -1
  261. package/dist/js/core/components/ui/theme/theme.js +0 -150
  262. package/dist/js/core/components/ui/theme/theme.js.map +0 -1
  263. package/dist/js/core/components/ui/toast/message-subscriber.js +0 -41
  264. package/dist/js/core/components/ui/toast/message-subscriber.js.map +0 -1
  265. package/dist/js/core/components/ui/toast/toast-item.js +0 -379
  266. package/dist/js/core/components/ui/toast/toast-item.js.map +0 -1
  267. package/dist/js/core/components/ui/toast/toast.js +0 -269
  268. package/dist/js/core/components/ui/toast/toast.js.map +0 -1
  269. package/dist/js/core/components/ui/toast/types.js +0 -2
  270. package/dist/js/core/components/ui/toast/types.js.map +0 -1
  271. package/dist/js/core/components/ui/tooltip/tooltip.js +0 -219
  272. package/dist/js/core/components/ui/tooltip/tooltip.js.map +0 -1
  273. package/dist/js/core/components/ui/ui.js +0 -41
  274. package/dist/js/core/components/ui/ui.js.map +0 -1
  275. package/dist/js/core/core.js +0 -14
  276. package/dist/js/core/core.js.map +0 -1
  277. package/dist/js/core/decorators/Subscriber.js +0 -9
  278. package/dist/js/core/decorators/Subscriber.js.map +0 -1
  279. package/dist/js/core/decorators/api.js +0 -806
  280. package/dist/js/core/decorators/api.js.map +0 -1
  281. package/dist/js/core/decorators/lifecycle.js +0 -67
  282. package/dist/js/core/decorators/lifecycle.js.map +0 -1
  283. package/dist/js/core/decorators/subscriber/ancestorAttribute.js +0 -27
  284. package/dist/js/core/decorators/subscriber/ancestorAttribute.js.map +0 -1
  285. package/dist/js/core/decorators/subscriber/autoFill.js +0 -26
  286. package/dist/js/core/decorators/subscriber/autoFill.js.map +0 -1
  287. package/dist/js/core/decorators/subscriber/autoSubscribe.js +0 -46
  288. package/dist/js/core/decorators/subscriber/autoSubscribe.js.map +0 -1
  289. package/dist/js/core/decorators/subscriber/bind.js +0 -150
  290. package/dist/js/core/decorators/subscriber/bind.js.map +0 -1
  291. package/dist/js/core/decorators/subscriber/common.js +0 -44
  292. package/dist/js/core/decorators/subscriber/common.js.map +0 -1
  293. package/dist/js/core/decorators/subscriber/dynamicPath.js +0 -75
  294. package/dist/js/core/decorators/subscriber/dynamicPath.js.map +0 -1
  295. package/dist/js/core/decorators/subscriber/dynamicPropertyWatch.js +0 -138
  296. package/dist/js/core/decorators/subscriber/dynamicPropertyWatch.js.map +0 -1
  297. package/dist/js/core/decorators/subscriber/handle.js +0 -22
  298. package/dist/js/core/decorators/subscriber/handle.js.map +0 -1
  299. package/dist/js/core/decorators/subscriber/onAssign.js +0 -199
  300. package/dist/js/core/decorators/subscriber/onAssign.js.map +0 -1
  301. package/dist/js/core/decorators/subscriber/publish.js +0 -108
  302. package/dist/js/core/decorators/subscriber/publish.js.map +0 -1
  303. package/dist/js/core/decorators/subscriber/publisherPath.js +0 -16
  304. package/dist/js/core/decorators/subscriber/publisherPath.js.map +0 -1
  305. package/dist/js/core/decorators/subscriber/subscribe.js +0 -20
  306. package/dist/js/core/decorators/subscriber/subscribe.js.map +0 -1
  307. package/dist/js/core/directives/DataProvider.js +0 -127
  308. package/dist/js/core/directives/DataProvider.js.map +0 -1
  309. package/dist/js/core/directives/Wording.js +0 -221
  310. package/dist/js/core/directives/Wording.js.map +0 -1
  311. package/dist/js/core/mixins/Fetcher.js +0 -325
  312. package/dist/js/core/mixins/Fetcher.js.map +0 -1
  313. package/dist/js/core/mixins/FormCheckable.js +0 -313
  314. package/dist/js/core/mixins/FormCheckable.js.map +0 -1
  315. package/dist/js/core/mixins/FormElement.js +0 -304
  316. package/dist/js/core/mixins/FormElement.js.map +0 -1
  317. package/dist/js/core/mixins/FormInput.js +0 -82
  318. package/dist/js/core/mixins/FormInput.js.map +0 -1
  319. package/dist/js/core/mixins/Subscriber.js +0 -354
  320. package/dist/js/core/mixins/Subscriber.js.map +0 -1
  321. package/dist/js/core/mixins/TemplatesContainer.js +0 -70
  322. package/dist/js/core/mixins/TemplatesContainer.js.map +0 -1
  323. package/dist/js/core/mixins/mixins.js +0 -7
  324. package/dist/js/core/mixins/mixins.js.map +0 -1
  325. package/dist/js/core/utils/AncestorAttributeObserver.js +0 -140
  326. package/dist/js/core/utils/AncestorAttributeObserver.js.map +0 -1
  327. package/dist/js/core/utils/Arrays.js +0 -141
  328. package/dist/js/core/utils/Arrays.js.map +0 -1
  329. package/dist/js/core/utils/DataBindObserver.js +0 -265
  330. package/dist/js/core/utils/DataBindObserver.js.map +0 -1
  331. package/dist/js/core/utils/Electron.js +0 -14
  332. package/dist/js/core/utils/Electron.js.map +0 -1
  333. package/dist/js/core/utils/Format.js +0 -43
  334. package/dist/js/core/utils/Format.js.map +0 -1
  335. package/dist/js/core/utils/HTML.js +0 -272
  336. package/dist/js/core/utils/HTML.js.map +0 -1
  337. package/dist/js/core/utils/LocationHandler.js +0 -143
  338. package/dist/js/core/utils/LocationHandler.js.map +0 -1
  339. package/dist/js/core/utils/Objects.js +0 -111
  340. package/dist/js/core/utils/Objects.js.map +0 -1
  341. package/dist/js/core/utils/PublisherProxy.js +0 -946
  342. package/dist/js/core/utils/PublisherProxy.js.map +0 -1
  343. package/dist/js/core/utils/SafariScrollGuard.js +0 -384
  344. package/dist/js/core/utils/SafariScrollGuard.js.map +0 -1
  345. package/dist/js/core/utils/Utils.js +0 -19
  346. package/dist/js/core/utils/Utils.js.map +0 -1
  347. package/dist/js/core/utils/aesCrypto.js +0 -98
  348. package/dist/js/core/utils/aesCrypto.js.map +0 -1
  349. package/dist/js/core/utils/api.js +0 -595
  350. package/dist/js/core/utils/api.js.map +0 -1
  351. package/dist/js/core/utils/dataProviderKey.js +0 -64
  352. package/dist/js/core/utils/dataProviderKey.js.map +0 -1
  353. package/dist/js/core/utils/endpoint.js +0 -74
  354. package/dist/js/core/utils/endpoint.js.map +0 -1
  355. package/dist/js/core/utils/route.js +0 -149
  356. package/dist/js/core/utils/route.js.map +0 -1
  357. package/dist/js/core/utils/url-pattern.js +0 -3
  358. package/dist/js/core/utils/url-pattern.js.map +0 -1
  359. package/dist/js/dataprovider.js +0 -2
  360. package/dist/js/dataprovider.js.map +0 -1
  361. package/dist/js/decorators.js +0 -43
  362. package/dist/js/decorators.js.map +0 -1
  363. package/dist/js/directives.js +0 -30
  364. package/dist/js/directives.js.map +0 -1
  365. package/dist/js/index.js +0 -8
  366. package/dist/js/index.js.map +0 -1
  367. package/dist/js/mixins.js +0 -23
  368. package/dist/js/mixins.js.map +0 -1
  369. package/dist/js/test-utils/TestUtils.js +0 -10
  370. package/dist/js/test-utils/TestUtils.js.map +0 -1
  371. package/dist/js/utils.js +0 -44
  372. package/dist/js/utils.js.map +0 -1
  373. package/dist/types/components.d.ts +0 -5
  374. package/dist/types/components.d.ts.map +0 -1
  375. package/dist/types/concorde-loaded.d.ts +0 -2
  376. package/dist/types/concorde-loaded.d.ts.map +0 -1
  377. package/dist/types/core/_types/endpoint.d.ts +0 -5
  378. package/dist/types/core/_types/endpoint.d.ts.map +0 -1
  379. package/dist/types/core/_types/key.d.ts +0 -2
  380. package/dist/types/core/_types/key.d.ts.map +0 -1
  381. package/dist/types/core/_types/types.d.ts +0 -28
  382. package/dist/types/core/_types/types.d.ts.map +0 -1
  383. package/dist/types/core/components/functional/date/date.d.ts +0 -52
  384. package/dist/types/core/components/functional/date/date.d.ts.map +0 -1
  385. package/dist/types/core/components/functional/example/example.d.ts +0 -15
  386. package/dist/types/core/components/functional/example/example.d.ts.map +0 -1
  387. package/dist/types/core/components/functional/fetch/fetch.d.ts +0 -102
  388. package/dist/types/core/components/functional/fetch/fetch.d.ts.map +0 -1
  389. package/dist/types/core/components/functional/functional.d.ts +0 -17
  390. package/dist/types/core/components/functional/functional.d.ts.map +0 -1
  391. package/dist/types/core/components/functional/if/if.d.ts +0 -13
  392. package/dist/types/core/components/functional/if/if.d.ts.map +0 -1
  393. package/dist/types/core/components/functional/list/list.d.ts +0 -149
  394. package/dist/types/core/components/functional/list/list.d.ts.map +0 -1
  395. package/dist/types/core/components/functional/mix/mix.d.ts +0 -23
  396. package/dist/types/core/components/functional/mix/mix.d.ts.map +0 -1
  397. package/dist/types/core/components/functional/queue/queue.d.ts +0 -93
  398. package/dist/types/core/components/functional/queue/queue.d.ts.map +0 -1
  399. package/dist/types/core/components/functional/router/redirect.d.ts +0 -19
  400. package/dist/types/core/components/functional/router/redirect.d.ts.map +0 -1
  401. package/dist/types/core/components/functional/router/router.d.ts +0 -46
  402. package/dist/types/core/components/functional/router/router.d.ts.map +0 -1
  403. package/dist/types/core/components/functional/sdui/SDUIDescriptorTransformer.d.ts +0 -59
  404. package/dist/types/core/components/functional/sdui/SDUIDescriptorTransformer.d.ts.map +0 -1
  405. package/dist/types/core/components/functional/sdui/sdui-utils.d.ts +0 -6
  406. package/dist/types/core/components/functional/sdui/sdui-utils.d.ts.map +0 -1
  407. package/dist/types/core/components/functional/sdui/sdui.d.ts +0 -145
  408. package/dist/types/core/components/functional/sdui/sdui.d.ts.map +0 -1
  409. package/dist/types/core/components/functional/sdui/types.d.ts +0 -38
  410. package/dist/types/core/components/functional/sdui/types.d.ts.map +0 -1
  411. package/dist/types/core/components/functional/sonic-scope/sonic-scope.d.ts +0 -6
  412. package/dist/types/core/components/functional/sonic-scope/sonic-scope.d.ts.map +0 -1
  413. package/dist/types/core/components/functional/states/states.d.ts +0 -42
  414. package/dist/types/core/components/functional/states/states.d.ts.map +0 -1
  415. package/dist/types/core/components/functional/submit/submit.d.ts +0 -37
  416. package/dist/types/core/components/functional/submit/submit.d.ts.map +0 -1
  417. package/dist/types/core/components/functional/subscriber/subscriber.d.ts +0 -13
  418. package/dist/types/core/components/functional/subscriber/subscriber.d.ts.map +0 -1
  419. package/dist/types/core/components/functional/translation/translation.d.ts +0 -7
  420. package/dist/types/core/components/functional/translation/translation.d.ts.map +0 -1
  421. package/dist/types/core/components/functional/value/value.d.ts +0 -8
  422. package/dist/types/core/components/functional/value/value.d.ts.map +0 -1
  423. package/dist/types/core/components/ui/_css/scroll.d.ts +0 -2
  424. package/dist/types/core/components/ui/_css/scroll.d.ts.map +0 -1
  425. package/dist/types/core/components/ui/_css/shadow.d.ts +0 -3
  426. package/dist/types/core/components/ui/_css/shadow.d.ts.map +0 -1
  427. package/dist/types/core/components/ui/_css/size.d.ts +0 -3
  428. package/dist/types/core/components/ui/_css/size.d.ts.map +0 -1
  429. package/dist/types/core/components/ui/_css/type.d.ts +0 -3
  430. package/dist/types/core/components/ui/_css/type.d.ts.map +0 -1
  431. package/dist/types/core/components/ui/alert/alert.d.ts +0 -37
  432. package/dist/types/core/components/ui/alert/alert.d.ts.map +0 -1
  433. package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts +0 -15
  434. package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts.map +0 -1
  435. package/dist/types/core/components/ui/badge/badge.d.ts +0 -27
  436. package/dist/types/core/components/ui/badge/badge.d.ts.map +0 -1
  437. package/dist/types/core/components/ui/button/button.d.ts +0 -180
  438. package/dist/types/core/components/ui/button/button.d.ts.map +0 -1
  439. package/dist/types/core/components/ui/captcha/altchaStyles.d.ts +0 -2
  440. package/dist/types/core/components/ui/captcha/altchaStyles.d.ts.map +0 -1
  441. package/dist/types/core/components/ui/captcha/captcha.d.ts +0 -30
  442. package/dist/types/core/components/ui/captcha/captcha.d.ts.map +0 -1
  443. package/dist/types/core/components/ui/card/card-footer.d.ts +0 -6
  444. package/dist/types/core/components/ui/card/card-footer.d.ts.map +0 -1
  445. package/dist/types/core/components/ui/card/card-header-descripton.d.ts +0 -6
  446. package/dist/types/core/components/ui/card/card-header-descripton.d.ts.map +0 -1
  447. package/dist/types/core/components/ui/card/card-header.d.ts +0 -9
  448. package/dist/types/core/components/ui/card/card-header.d.ts.map +0 -1
  449. package/dist/types/core/components/ui/card/card-main.d.ts +0 -6
  450. package/dist/types/core/components/ui/card/card-main.d.ts.map +0 -1
  451. package/dist/types/core/components/ui/card/card.d.ts +0 -13
  452. package/dist/types/core/components/ui/card/card.d.ts.map +0 -1
  453. package/dist/types/core/components/ui/divider/divider.d.ts +0 -16
  454. package/dist/types/core/components/ui/divider/divider.d.ts.map +0 -1
  455. package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts +0 -176
  456. package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts.map +0 -1
  457. package/dist/types/core/components/ui/form/css/form-control.d.ts +0 -5
  458. package/dist/types/core/components/ui/form/css/form-control.d.ts.map +0 -1
  459. package/dist/types/core/components/ui/form/fieldset/fieldset.d.ts +0 -24
  460. package/dist/types/core/components/ui/form/fieldset/fieldset.d.ts.map +0 -1
  461. package/dist/types/core/components/ui/form/fieldset/legend-description.d.ts +0 -6
  462. package/dist/types/core/components/ui/form/fieldset/legend-description.d.ts.map +0 -1
  463. package/dist/types/core/components/ui/form/fieldset/legend.d.ts +0 -17
  464. package/dist/types/core/components/ui/form/fieldset/legend.d.ts.map +0 -1
  465. package/dist/types/core/components/ui/form/form-actions/form-actions.d.ts +0 -8
  466. package/dist/types/core/components/ui/form/form-actions/form-actions.d.ts.map +0 -1
  467. package/dist/types/core/components/ui/form/form-layout/form-layout.d.ts +0 -13
  468. package/dist/types/core/components/ui/form/form-layout/form-layout.d.ts.map +0 -1
  469. package/dist/types/core/components/ui/form/input/input.d.ts +0 -123
  470. package/dist/types/core/components/ui/form/input/input.d.ts.map +0 -1
  471. package/dist/types/core/components/ui/form/input/password-helper.d.ts +0 -26
  472. package/dist/types/core/components/ui/form/input/password-helper.d.ts.map +0 -1
  473. package/dist/types/core/components/ui/form/input/same-value-helper.d.ts +0 -17
  474. package/dist/types/core/components/ui/form/input/same-value-helper.d.ts.map +0 -1
  475. package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts +0 -155
  476. package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts.map +0 -1
  477. package/dist/types/core/components/ui/form/radio/radio.d.ts +0 -15
  478. package/dist/types/core/components/ui/form/radio/radio.d.ts.map +0 -1
  479. package/dist/types/core/components/ui/form/select/select.d.ts +0 -59
  480. package/dist/types/core/components/ui/form/select/select.d.ts.map +0 -1
  481. package/dist/types/core/components/ui/form/switch/switch.d.ts +0 -6
  482. package/dist/types/core/components/ui/form/switch/switch.d.ts.map +0 -1
  483. package/dist/types/core/components/ui/form/textarea/textarea.d.ts +0 -94
  484. package/dist/types/core/components/ui/form/textarea/textarea.d.ts.map +0 -1
  485. package/dist/types/core/components/ui/group/group.d.ts +0 -17
  486. package/dist/types/core/components/ui/group/group.d.ts.map +0 -1
  487. package/dist/types/core/components/ui/icon/icon.d.ts +0 -30
  488. package/dist/types/core/components/ui/icon/icon.d.ts.map +0 -1
  489. package/dist/types/core/components/ui/icon/icons.d.ts +0 -13
  490. package/dist/types/core/components/ui/icon/icons.d.ts.map +0 -1
  491. package/dist/types/core/components/ui/image/image.d.ts +0 -16
  492. package/dist/types/core/components/ui/image/image.d.ts.map +0 -1
  493. package/dist/types/core/components/ui/link/link.d.ts +0 -30
  494. package/dist/types/core/components/ui/link/link.d.ts.map +0 -1
  495. package/dist/types/core/components/ui/loader/loader.d.ts +0 -24
  496. package/dist/types/core/components/ui/loader/loader.d.ts.map +0 -1
  497. package/dist/types/core/components/ui/loader/styles/fixed.d.ts +0 -2
  498. package/dist/types/core/components/ui/loader/styles/fixed.d.ts.map +0 -1
  499. package/dist/types/core/components/ui/loader/styles/inline.d.ts +0 -2
  500. package/dist/types/core/components/ui/loader/styles/inline.d.ts.map +0 -1
  501. package/dist/types/core/components/ui/menu/menu-item.d.ts +0 -6
  502. package/dist/types/core/components/ui/menu/menu-item.d.ts.map +0 -1
  503. package/dist/types/core/components/ui/menu/menu.d.ts +0 -52
  504. package/dist/types/core/components/ui/menu/menu.d.ts.map +0 -1
  505. package/dist/types/core/components/ui/modal/modal-actions.d.ts +0 -9
  506. package/dist/types/core/components/ui/modal/modal-actions.d.ts.map +0 -1
  507. package/dist/types/core/components/ui/modal/modal-close.d.ts +0 -11
  508. package/dist/types/core/components/ui/modal/modal-close.d.ts.map +0 -1
  509. package/dist/types/core/components/ui/modal/modal-content.d.ts +0 -6
  510. package/dist/types/core/components/ui/modal/modal-content.d.ts.map +0 -1
  511. package/dist/types/core/components/ui/modal/modal-subtitle.d.ts +0 -6
  512. package/dist/types/core/components/ui/modal/modal-subtitle.d.ts.map +0 -1
  513. package/dist/types/core/components/ui/modal/modal-title.d.ts +0 -6
  514. package/dist/types/core/components/ui/modal/modal-title.d.ts.map +0 -1
  515. package/dist/types/core/components/ui/modal/modal-utils.d.ts +0 -4
  516. package/dist/types/core/components/ui/modal/modal-utils.d.ts.map +0 -1
  517. package/dist/types/core/components/ui/modal/modal.d.ts +0 -79
  518. package/dist/types/core/components/ui/modal/modal.d.ts.map +0 -1
  519. package/dist/types/core/components/ui/pop/pop.d.ts +0 -42
  520. package/dist/types/core/components/ui/pop/pop.d.ts.map +0 -1
  521. package/dist/types/core/components/ui/progress/progress.d.ts +0 -12
  522. package/dist/types/core/components/ui/progress/progress.d.ts.map +0 -1
  523. package/dist/types/core/components/ui/table/table-caption.d.ts +0 -6
  524. package/dist/types/core/components/ui/table/table-caption.d.ts.map +0 -1
  525. package/dist/types/core/components/ui/table/table-tbody.d.ts +0 -6
  526. package/dist/types/core/components/ui/table/table-tbody.d.ts.map +0 -1
  527. package/dist/types/core/components/ui/table/table-td.d.ts +0 -13
  528. package/dist/types/core/components/ui/table/table-td.d.ts.map +0 -1
  529. package/dist/types/core/components/ui/table/table-tfoot.d.ts +0 -6
  530. package/dist/types/core/components/ui/table/table-tfoot.d.ts.map +0 -1
  531. package/dist/types/core/components/ui/table/table-th.d.ts +0 -12
  532. package/dist/types/core/components/ui/table/table-th.d.ts.map +0 -1
  533. package/dist/types/core/components/ui/table/table-thead.d.ts +0 -6
  534. package/dist/types/core/components/ui/table/table-thead.d.ts.map +0 -1
  535. package/dist/types/core/components/ui/table/table-tr.d.ts +0 -14
  536. package/dist/types/core/components/ui/table/table-tr.d.ts.map +0 -1
  537. package/dist/types/core/components/ui/table/table.d.ts +0 -18
  538. package/dist/types/core/components/ui/table/table.d.ts.map +0 -1
  539. package/dist/types/core/components/ui/theme/theme-collection/core-variables.d.ts +0 -2
  540. package/dist/types/core/components/ui/theme/theme-collection/core-variables.d.ts.map +0 -1
  541. package/dist/types/core/components/ui/theme/theme-collection/dark.d.ts +0 -2
  542. package/dist/types/core/components/ui/theme/theme-collection/dark.d.ts.map +0 -1
  543. package/dist/types/core/components/ui/theme/theme-collection/light.d.ts +0 -2
  544. package/dist/types/core/components/ui/theme/theme-collection/light.d.ts.map +0 -1
  545. package/dist/types/core/components/ui/theme/theme.d.ts +0 -20
  546. package/dist/types/core/components/ui/theme/theme.d.ts.map +0 -1
  547. package/dist/types/core/components/ui/toast/message-subscriber.d.ts +0 -19
  548. package/dist/types/core/components/ui/toast/message-subscriber.d.ts.map +0 -1
  549. package/dist/types/core/components/ui/toast/toast-item.d.ts +0 -41
  550. package/dist/types/core/components/ui/toast/toast-item.d.ts.map +0 -1
  551. package/dist/types/core/components/ui/toast/toast.d.ts +0 -28
  552. package/dist/types/core/components/ui/toast/toast.d.ts.map +0 -1
  553. package/dist/types/core/components/ui/toast/types.d.ts +0 -12
  554. package/dist/types/core/components/ui/toast/types.d.ts.map +0 -1
  555. package/dist/types/core/components/ui/tooltip/tooltip.d.ts +0 -21
  556. package/dist/types/core/components/ui/tooltip/tooltip.d.ts.map +0 -1
  557. package/dist/types/core/components/ui/ui.d.ts +0 -35
  558. package/dist/types/core/components/ui/ui.d.ts.map +0 -1
  559. package/dist/types/core/core.d.ts +0 -5
  560. package/dist/types/core/core.d.ts.map +0 -1
  561. package/dist/types/core/decorators/Subscriber.d.ts +0 -11
  562. package/dist/types/core/decorators/Subscriber.d.ts.map +0 -1
  563. package/dist/types/core/decorators/api.d.ts +0 -155
  564. package/dist/types/core/decorators/api.d.ts.map +0 -1
  565. package/dist/types/core/decorators/lifecycle.d.ts +0 -19
  566. package/dist/types/core/decorators/lifecycle.d.ts.map +0 -1
  567. package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts +0 -11
  568. package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts.map +0 -1
  569. package/dist/types/core/decorators/subscriber/autoFill.d.ts +0 -2
  570. package/dist/types/core/decorators/subscriber/autoFill.d.ts.map +0 -1
  571. package/dist/types/core/decorators/subscriber/autoSubscribe.d.ts +0 -2
  572. package/dist/types/core/decorators/subscriber/autoSubscribe.d.ts.map +0 -1
  573. package/dist/types/core/decorators/subscriber/bind.d.ts +0 -28
  574. package/dist/types/core/decorators/subscriber/bind.d.ts.map +0 -1
  575. package/dist/types/core/decorators/subscriber/common.d.ts +0 -14
  576. package/dist/types/core/decorators/subscriber/common.d.ts.map +0 -1
  577. package/dist/types/core/decorators/subscriber/dynamicPath.d.ts +0 -23
  578. package/dist/types/core/decorators/subscriber/dynamicPath.d.ts.map +0 -1
  579. package/dist/types/core/decorators/subscriber/dynamicPropertyWatch.d.ts +0 -42
  580. package/dist/types/core/decorators/subscriber/dynamicPropertyWatch.d.ts.map +0 -1
  581. package/dist/types/core/decorators/subscriber/handle.d.ts +0 -74
  582. package/dist/types/core/decorators/subscriber/handle.d.ts.map +0 -1
  583. package/dist/types/core/decorators/subscriber/onAssign.d.ts +0 -53
  584. package/dist/types/core/decorators/subscriber/onAssign.d.ts.map +0 -1
  585. package/dist/types/core/decorators/subscriber/publish.d.ts +0 -23
  586. package/dist/types/core/decorators/subscriber/publish.d.ts.map +0 -1
  587. package/dist/types/core/decorators/subscriber/publisherPath.d.ts +0 -3
  588. package/dist/types/core/decorators/subscriber/publisherPath.d.ts.map +0 -1
  589. package/dist/types/core/decorators/subscriber/subscribe.d.ts +0 -20
  590. package/dist/types/core/decorators/subscriber/subscribe.d.ts.map +0 -1
  591. package/dist/types/core/directives/DataProvider.d.ts +0 -45
  592. package/dist/types/core/directives/DataProvider.d.ts.map +0 -1
  593. package/dist/types/core/directives/Wording.d.ts +0 -44
  594. package/dist/types/core/directives/Wording.d.ts.map +0 -1
  595. package/dist/types/core/mixins/Fetcher.d.ts +0 -108
  596. package/dist/types/core/mixins/Fetcher.d.ts.map +0 -1
  597. package/dist/types/core/mixins/FormCheckable.d.ts +0 -95
  598. package/dist/types/core/mixins/FormCheckable.d.ts.map +0 -1
  599. package/dist/types/core/mixins/FormElement.d.ts +0 -37
  600. package/dist/types/core/mixins/FormElement.d.ts.map +0 -1
  601. package/dist/types/core/mixins/FormInput.d.ts +0 -79
  602. package/dist/types/core/mixins/FormInput.d.ts.map +0 -1
  603. package/dist/types/core/mixins/Subscriber.d.ts +0 -38
  604. package/dist/types/core/mixins/Subscriber.d.ts.map +0 -1
  605. package/dist/types/core/mixins/TemplatesContainer.d.ts +0 -14
  606. package/dist/types/core/mixins/TemplatesContainer.d.ts.map +0 -1
  607. package/dist/types/core/mixins/mixins.d.ts +0 -7
  608. package/dist/types/core/mixins/mixins.d.ts.map +0 -1
  609. package/dist/types/core/utils/AncestorAttributeObserver.d.ts +0 -38
  610. package/dist/types/core/utils/AncestorAttributeObserver.d.ts.map +0 -1
  611. package/dist/types/core/utils/Arrays.d.ts +0 -98
  612. package/dist/types/core/utils/Arrays.d.ts.map +0 -1
  613. package/dist/types/core/utils/DataBindObserver.d.ts +0 -84
  614. package/dist/types/core/utils/DataBindObserver.d.ts.map +0 -1
  615. package/dist/types/core/utils/Electron.d.ts +0 -8
  616. package/dist/types/core/utils/Electron.d.ts.map +0 -1
  617. package/dist/types/core/utils/Format.d.ts +0 -13
  618. package/dist/types/core/utils/Format.d.ts.map +0 -1
  619. package/dist/types/core/utils/HTML.d.ts +0 -79
  620. package/dist/types/core/utils/HTML.d.ts.map +0 -1
  621. package/dist/types/core/utils/LocationHandler.d.ts +0 -48
  622. package/dist/types/core/utils/LocationHandler.d.ts.map +0 -1
  623. package/dist/types/core/utils/Objects.d.ts +0 -31
  624. package/dist/types/core/utils/Objects.d.ts.map +0 -1
  625. package/dist/types/core/utils/PublisherProxy.d.ts +0 -230
  626. package/dist/types/core/utils/PublisherProxy.d.ts.map +0 -1
  627. package/dist/types/core/utils/SafariScrollGuard.d.ts +0 -36
  628. package/dist/types/core/utils/SafariScrollGuard.d.ts.map +0 -1
  629. package/dist/types/core/utils/Utils.d.ts +0 -6
  630. package/dist/types/core/utils/Utils.d.ts.map +0 -1
  631. package/dist/types/core/utils/aesCrypto.d.ts +0 -53
  632. package/dist/types/core/utils/aesCrypto.d.ts.map +0 -1
  633. package/dist/types/core/utils/api.d.ts +0 -173
  634. package/dist/types/core/utils/api.d.ts.map +0 -1
  635. package/dist/types/core/utils/dataProviderKey.d.ts +0 -56
  636. package/dist/types/core/utils/dataProviderKey.d.ts.map +0 -1
  637. package/dist/types/core/utils/endpoint.d.ts +0 -37
  638. package/dist/types/core/utils/endpoint.d.ts.map +0 -1
  639. package/dist/types/core/utils/route.d.ts +0 -41
  640. package/dist/types/core/utils/route.d.ts.map +0 -1
  641. package/dist/types/core/utils/url-pattern.d.ts +0 -3
  642. package/dist/types/core/utils/url-pattern.d.ts.map +0 -1
  643. package/dist/types/dataprovider.d.ts +0 -2
  644. package/dist/types/dataprovider.d.ts.map +0 -1
  645. package/dist/types/decorators.d.ts +0 -30
  646. package/dist/types/decorators.d.ts.map +0 -1
  647. package/dist/types/directives.d.ts +0 -21
  648. package/dist/types/directives.d.ts.map +0 -1
  649. package/dist/types/index.d.ts +0 -8
  650. package/dist/types/index.d.ts.map +0 -1
  651. package/dist/types/mixins.d.ts +0 -204
  652. package/dist/types/mixins.d.ts.map +0 -1
  653. package/dist/types/test-utils/TestUtils.d.ts +0 -4
  654. package/dist/types/test-utils/TestUtils.d.ts.map +0 -1
  655. package/dist/types/utils.d.ts +0 -18
  656. package/dist/types/utils.d.ts.map +0 -1
  657. package/docs/assets/index-DURr6O71.js +0 -11453
@@ -1,12 +1,12 @@
1
1
  [
2
2
  {
3
- "search": "Date",
3
+ "search": "3D",
4
4
  "files": {
5
- "core/components/functional/date/date.md": {
6
- "title": "Date",
5
+ "core/components/functional/3d/3d.md": {
6
+ "title": "3D",
7
7
  "hashes": {
8
- "date": {
9
- "count": 2,
8
+ "3d": {
9
+ "count": 1,
10
10
  "title": "",
11
11
  "type": "page"
12
12
  }
@@ -15,42 +15,12 @@
15
15
  }
16
16
  },
17
17
  {
18
- "search": "Nothing is displayed.\n",
19
- "files": {
20
- "core/components/functional/date/date.md": {
21
- "title": "Date",
22
- "hashes": {
23
- "no-attribute": {
24
- "count": 1,
25
- "title": "No attribute",
26
- "type": "paragraph"
27
- }
28
- }
29
- }
30
- }
31
- },
32
- {
33
- "search": "Displays the current date.\n",
34
- "files": {
35
- "core/components/functional/date/date.md": {
36
- "title": "Date",
37
- "hashes": {
38
- "now": {
39
- "count": 1,
40
- "title": "Now",
41
- "type": "paragraph"
42
- }
43
- }
44
- }
45
- }
46
- },
47
- {
48
- "search": "Displays a date from a timestamp.\n",
18
+ "search": "sonic-3d — viewer Three.js (glTF / GLB), caméra orbit / perspective / ortho, outputs dataProvider paresseux.\n",
49
19
  "files": {
50
- "core/components/functional/date/date.md": {
51
- "title": "Date",
20
+ "core/components/functional/3d/3d.md": {
21
+ "title": "3D",
52
22
  "hashes": {
53
- "date": {
23
+ "3d": {
54
24
  "count": 1,
55
25
  "title": "",
56
26
  "type": "paragraph"
@@ -60,112 +30,22 @@
60
30
  }
61
31
  },
62
32
  {
63
- "search": "Displays a date from a string.\n",
64
- "files": {
65
- "core/components/functional/date/date.md": {
66
- "title": "Date",
67
- "hashes": {
68
- "date_string": {
69
- "count": 1,
70
- "title": "Date_string",
71
- "type": "paragraph"
72
- }
73
- }
74
- }
75
- }
76
- },
77
- {
78
- "search": "Displays a period of time from start_date to end_date.When by itself start_date will act as dateif a start_date is not specified it will be set by the current date.if the end_date is anterior to start date date it will be used as the start_date. \n",
79
- "files": {
80
- "core/components/functional/date/date.md": {
81
- "title": "Date",
82
- "hashes": {
83
- "start_date--end_date": {
84
- "count": 1,
85
- "title": "Start_date / end_date",
86
- "type": "paragraph"
87
- }
88
- }
89
- }
90
- }
91
- },
92
- {
93
- "search": "ISO 639-1 Language Codes\n",
94
- "files": {
95
- "core/components/functional/date/date.md": {
96
- "title": "Date",
97
- "hashes": {
98
- "language": {
99
- "count": 1,
100
- "title": "Language",
101
- "type": "paragraph"
102
- }
103
- }
104
- }
105
- }
106
- },
107
- {
108
- "search": "For the list of supported timeZones, run Intl.supportedValuesOf('timeZone') in the console\n",
109
- "files": {
110
- "core/components/functional/date/date.md": {
111
- "title": "Date",
112
- "hashes": {
113
- "time_zone": {
114
- "count": 1,
115
- "title": "Time_zone",
116
- "type": "paragraph"
117
- }
118
- }
119
- }
120
- }
121
- },
122
- {
123
- "search": "Deprecated\n",
33
+ "search": "Import opt-in (hors bundle functional) :\n",
124
34
  "files": {
125
- "core/components/functional/date/date.md": {
126
- "title": "Date",
35
+ "core/components/functional/3d/3d.md": {
36
+ "title": "3D",
127
37
  "hashes": {
128
- "renderif": {
38
+ "3d": {
129
39
  "count": 1,
130
- "title": ".renderIf",
40
+ "title": "",
131
41
  "type": "paragraph"
132
42
  }
133
43
  }
134
44
  },
135
- "core/components/functional/fetch/fetch.md": {
136
- "title": "Fetch",
137
- "hashes": {
138
- "headersdataprovider": {
139
- "count": 1,
140
- "title": "HeadersDataProvider",
141
- "type": "paragraph"
142
- }
143
- }
144
- }
145
- }
146
- },
147
- {
148
- "search": "Fetch",
149
- "files": {
150
- "core/components/functional/fetch/fetch.md": {
151
- "title": "Fetch",
152
- "hashes": {
153
- "fetch": {
154
- "count": 1,
155
- "title": "",
156
- "type": "page"
157
- }
158
- }
159
- }
160
- }
161
- },
162
- {
163
- "search": "New apps: prefer @get for a typed GET on a component, or List / Queue with fetch for collections. Use Local API demos (serviceURL="/docs-mock-api") to try examples offline.\n",
164
- "files": {
165
- "core/components/functional/fetch/fetch.md": {
166
- "title": "Fetch",
45
+ "core/components/functional/shader/shader.md": {
46
+ "title": "Shader",
167
47
  "hashes": {
168
- "fetch": {
48
+ "shader": {
169
49
  "count": 1,
170
50
  "title": "",
171
51
  "type": "paragraph"
@@ -175,12 +55,12 @@
175
55
  }
176
56
  },
177
57
  {
178
- "search": "The sonic-fetch component requests and stores API data. It extends the Fetcher and Subscriber mixins.\n",
58
+ "search": "CDN (after the core): concorde-3d.bundle.js — see CDN addons.\n",
179
59
  "files": {
180
- "core/components/functional/fetch/fetch.md": {
181
- "title": "Fetch",
60
+ "core/components/functional/3d/3d.md": {
61
+ "title": "3D",
182
62
  "hashes": {
183
- "fetch": {
63
+ "3d": {
184
64
  "count": 1,
185
65
  "title": "",
186
66
  "type": "paragraph"
@@ -190,44 +70,14 @@
190
70
  }
191
71
  },
192
72
  {
193
- "search": "In order to work properly the sonic-fetch component needs at least the following attributes. \n",
194
- "files": {
195
- "core/components/functional/fetch/fetch.md": {
196
- "title": "Fetch",
197
- "hashes": {
198
- "basic-usage": {
199
- "count": 1,
200
- "title": "Basic usage",
201
- "type": "paragraph"
202
- }
203
- }
204
- }
205
- }
206
- },
207
- {
208
- "search": "If no endPoint is specified it will be filled by the dataProvider ID instead \n",
209
- "files": {
210
- "core/components/functional/fetch/fetch.md": {
211
- "title": "Fetch",
212
- "hashes": {
213
- "dataprovider-as-an-endpoint": {
214
- "count": 1,
215
- "title": "DataProvider as an endPoint",
216
- "type": "paragraph"
217
- }
218
- }
219
- }
220
- }
221
- },
222
- {
223
- "search": "When the key attribute is present, only a sub-part of the data received is injected into the dataProvider.\nWe can use the dot syntax to target what we want to keep.\n",
73
+ "search": "DamagedHelmet (Khronos, jsDelivr). Orbit · zoom · pan · survol highlight · pick · double-clic = recentrer. Sans src : cube de démo. Molette : zoom tant qu’il reste de la marge ; aux bornes minDistance / maxDistance, le scroll page reprend.\n",
224
74
  "files": {
225
- "core/components/functional/fetch/fetch.md": {
226
- "title": "Fetch",
75
+ "core/components/functional/3d/3d.md": {
76
+ "title": "3D",
227
77
  "hashes": {
228
- "key": {
78
+ "démo-modèle-cdn": {
229
79
  "count": 1,
230
- "title": "Key",
80
+ "title": "Démo (modèle CDN)",
231
81
  "type": "paragraph"
232
82
  }
233
83
  }
@@ -235,89 +85,64 @@
235
85
  }
236
86
  },
237
87
  {
238
- "search": "For example if the data is {my:{data:{a:1,b:2}}} and the key is key="my.data", the data available in the dataProvider will be {a:1 , b:2}\n",
88
+ "search": "\n",
239
89
  "files": {
240
- "core/components/functional/fetch/fetch.md": {
241
- "title": "Fetch",
90
+ "core/components/functional/3d/3d.md": {
91
+ "title": "3D",
242
92
  "hashes": {
243
- "key": {
93
+ "démo-modèle-cdn": {
244
94
  "count": 1,
245
- "title": "Key",
95
+ "title": "Démo (modèle CDN)",
246
96
  "type": "paragraph"
247
- }
248
- }
249
- }
250
- }
251
- },
252
- {
253
- "search": "if the mime type of the content returned by the service begins with text/, then the dataProvider has a key named "text" which contains the text returned by the service.\n",
254
- "files": {
255
- "core/components/functional/fetch/fetch.md": {
256
- "title": "Fetch",
257
- "hashes": {
258
- "text-mode": {
97
+ },
98
+ "form-auto-bind-formdataprovider": {
259
99
  "count": 1,
260
- "title": "Text mode",
100
+ "title": "Form auto-bind (`formDataProvider`)",
261
101
  "type": "paragraph"
262
- }
263
- }
264
- }
265
- }
266
- },
267
- {
268
- "search": "The noLoader attribute disables display of the default loader\n",
269
- "files": {
270
- "core/components/functional/fetch/fetch.md": {
271
- "title": "Fetch",
272
- "hashes": {
273
- "noloader": {
102
+ },
103
+ "sortie--dataprovider": {
274
104
  "count": 1,
275
- "title": "NoLoader",
105
+ "title": "Sortie / dataProvider",
276
106
  "type": "paragraph"
277
107
  }
278
108
  }
279
- }
280
- }
281
- },
282
- {
283
- "search": "if",
284
- "files": {
109
+ },
285
110
  "core/components/functional/if/if.md": {
286
111
  "title": "if",
287
112
  "hashes": {
288
113
  "if": {
289
114
  "count": 1,
290
115
  "title": "",
291
- "type": "page"
116
+ "type": "paragraph"
292
117
  }
293
118
  }
294
- }
295
- }
296
- },
297
- {
298
- "search": "The sonic-if component shows its slot when .condition is true. In Lit, bind .condition from store-driven state (@subscribe on a formDataProvider field) — live preview and TypeScript source are the same file (docs-lit-demo):\n",
299
- "files": {
300
- "core/components/functional/if/if.md": {
301
- "title": "if",
119
+ },
120
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
121
+ "title": "Hugging Face infer",
302
122
  "hashes": {
303
- "if": {
123
+ "image--background-removal": {
304
124
  "count": 1,
305
- "title": "",
125
+ "title": "Image — `background-removal`",
126
+ "type": "paragraph"
127
+ },
128
+ "text--zero-shot-classification": {
129
+ "count": 1,
130
+ "title": "Text — `zero-shot-classification`",
306
131
  "type": "paragraph"
307
132
  }
308
133
  }
309
- }
310
- }
311
- },
312
- {
313
- "search": "\n",
314
- "files": {
315
- "core/components/functional/if/if.md": {
316
- "title": "if",
134
+ },
135
+ "core/components/functional/jsonata/jsonata.md": {
136
+ "title": "Jsonata",
317
137
  "hashes": {
318
- "if": {
138
+ "groupby--top-n": {
319
139
  "count": 1,
320
- "title": "",
140
+ "title": "Groupby + top N",
141
+ "type": "paragraph"
142
+ },
143
+ "totaux-somme--taxe": {
144
+ "count": 1,
145
+ "title": "Totaux (somme + taxe)",
321
146
  "type": "paragraph"
322
147
  }
323
148
  }
@@ -377,20 +202,45 @@
377
202
  }
378
203
  }
379
204
  },
380
- "core/components/functional/submit/submit.md": {
381
- "title": "Submit",
205
+ "core/components/functional/shader/shader.md": {
206
+ "title": "Shader",
382
207
  "hashes": {
383
- "form-and-result-handling": {
208
+ "multipass-sur-une-photo": {
384
209
  "count": 1,
385
- "title": "Form and result handling",
210
+ "title": "Multipass sur une photo",
386
211
  "type": "paragraph"
387
212
  },
388
- "native-html-form": {
213
+ "chaînage-deffets-officiel": {
389
214
  "count": 1,
390
- "title": "Native HTML form",
215
+ "title": "Chaînage d’effets (officiel)",
391
216
  "type": "paragraph"
392
217
  },
393
- "sendasformdata": {
218
+ "rollover--roll-out-hover-param": {
219
+ "count": 1,
220
+ "title": "Rollover / roll-out (`hover-param`)",
221
+ "type": "paragraph"
222
+ },
223
+ "sortie--sampling-sample--dataprovider": {
224
+ "count": 1,
225
+ "title": "Sortie / sampling (`sample` + dataProvider)",
226
+ "type": "paragraph"
227
+ }
228
+ }
229
+ },
230
+ "core/components/functional/submit/submit.md": {
231
+ "title": "Submit",
232
+ "hashes": {
233
+ "form-and-result-handling": {
234
+ "count": 1,
235
+ "title": "Form and result handling",
236
+ "type": "paragraph"
237
+ },
238
+ "native-html-form": {
239
+ "count": 1,
240
+ "title": "Native HTML form",
241
+ "type": "paragraph"
242
+ },
243
+ "sendasformdata": {
394
244
  "count": 1,
395
245
  "title": "sendAsFormData",
396
246
  "type": "paragraph"
@@ -422,6 +272,16 @@
422
272
  }
423
273
  }
424
274
  },
275
+ "core/components/functional/webgpu/webgpu.md": {
276
+ "title": "WebGPU",
277
+ "hashes": {
278
+ "demo--particles-compute": {
279
+ "count": 1,
280
+ "title": "Demo — particles (compute)",
281
+ "type": "paragraph"
282
+ }
283
+ }
284
+ },
425
285
  "core/components/ui/form/checkbox/checkbox.md": {
426
286
  "title": "Checkbox",
427
287
  "hashes": {
@@ -531,18 +391,33 @@
531
391
  "type": "paragraph"
532
392
  }
533
393
  }
394
+ },
395
+ "docs/_misc/visual-stack.md": {
396
+ "title": "Visual stack",
397
+ "hashes": {
398
+ "demo": {
399
+ "count": 1,
400
+ "title": "Demo",
401
+ "type": "paragraph"
402
+ },
403
+ "harris--patches--webgpu": {
404
+ "count": 1,
405
+ "title": "Harris → patches → WebGPU",
406
+ "type": "paragraph"
407
+ }
408
+ }
534
409
  }
535
410
  }
536
411
  },
537
412
  {
538
- "search": "Plain HTML without Lit: HTML integration.\n",
413
+ "search": "Comme sonic-shader : si dataProvider (ou un ancêtre formDataProvider) contient des champs aux mêmes noms que l’API, ils pilotent le viewer sans JS.\n",
539
414
  "files": {
540
- "core/components/functional/if/if.md": {
541
- "title": "if",
415
+ "core/components/functional/3d/3d.md": {
416
+ "title": "3D",
542
417
  "hashes": {
543
- "if": {
418
+ "form-auto-bind-formdataprovider": {
544
419
  "count": 1,
545
- "title": "",
420
+ "title": "Form auto-bind (`formDataProvider`)",
546
421
  "type": "paragraph"
547
422
  }
548
423
  }
@@ -550,13 +425,103 @@
550
425
  }
551
426
  },
552
427
  {
553
- "search": "List",
428
+ "search": "Conseil : séparer out-data-provider du form. Les entrées pures (fov, exposure, autoRotate, src…) ne sont jamais réécrites en out sur un DP partagé. yaw / distance / pitch restent publiables ; un changement manuel d’orbit coupe autoRotate.\n",
554
429
  "files": {
555
- "core/components/functional/list/list.md": {
556
- "title": "List",
430
+ "core/components/functional/3d/3d.md": {
431
+ "title": "3D",
557
432
  "hashes": {
558
- "list": {
433
+ "form-auto-bind-formdataprovider": {
434
+ "count": 1,
435
+ "title": "Form auto-bind (`formDataProvider`)",
436
+ "type": "paragraph"
437
+ }
438
+ }
439
+ }
440
+ }
441
+ },
442
+ {
443
+ "search": "Gate paresseuse : un sonic-input name="yaw" ne déclenche pas la publication out (seul un lecteur sur ready / frame / cam* / hit*… le fait).\n",
444
+ "files": {
445
+ "core/components/functional/3d/3d.md": {
446
+ "title": "3D",
447
+ "hashes": {
448
+ "form-auto-bind-formdataprovider": {
449
+ "count": 1,
450
+ "title": "Form auto-bind (`formDataProvider`)",
451
+ "type": "paragraph"
452
+ }
453
+ }
454
+ }
455
+ }
456
+ },
457
+ {
458
+ "search": "Entrée : champs ci-dessus. Sortie (Sonic3dOutput) : cam* / target* / distance / yaw / pitch / pointer* / ready / hit*… With frame-out (or a listener on frameUrl / snapshot): lazy JPEG canvas capture → frameUrl + snapshot (SonicMediaRef). Event out. Publication paresseuse.\n",
459
+ "files": {
460
+ "core/components/functional/3d/3d.md": {
461
+ "title": "3D",
462
+ "hashes": {
463
+ "sortie--dataprovider": {
464
+ "count": 1,
465
+ "title": "Sortie / dataProvider",
466
+ "type": "paragraph"
467
+ }
468
+ }
469
+ }
470
+ }
471
+ },
472
+ {
473
+ "search": "Le viewer lit asset ou src depuis le DP — la source (fetch, upload, HF) n’est pas couplée.\n",
474
+ "files": {
475
+ "core/components/functional/3d/3d.md": {
476
+ "title": "3D",
477
+ "hashes": {
478
+ "asset-neutre-hf-plus-tard": {
479
+ "count": 1,
480
+ "title": "Asset neutre (HF plus tard)",
481
+ "type": "paragraph"
482
+ }
483
+ }
484
+ }
485
+ }
486
+ },
487
+ {
488
+ "search": "No shared WebGL context between sonic-3d and sonic-shader. Bridge: frame-out publishes frameUrl + snapshot (SonicMediaRef) to the DP → shader channels.\n",
489
+ "files": {
490
+ "core/components/functional/3d/3d.md": {
491
+ "title": "3D",
492
+ "hashes": {
493
+ "shader-bridging": {
494
+ "count": 1,
495
+ "title": "Shader bridging",
496
+ "type": "paragraph"
497
+ }
498
+ }
499
+ }
500
+ }
501
+ },
502
+ {
503
+ "search": "Note: each new snapshot revokes the previous ObjectURL. To freeze a frame (HF / shader), clone with cloneMediaRef — otherwise Failed to load texture: blob:….\n",
504
+ "files": {
505
+ "core/components/functional/3d/3d.md": {
506
+ "title": "3D",
507
+ "hashes": {
508
+ "shader-bridging": {
559
509
  "count": 1,
510
+ "title": "Shader bridging",
511
+ "type": "paragraph"
512
+ }
513
+ }
514
+ }
515
+ }
516
+ },
517
+ {
518
+ "search": "Date",
519
+ "files": {
520
+ "core/components/functional/date/date.md": {
521
+ "title": "Date",
522
+ "hashes": {
523
+ "date": {
524
+ "count": 2,
560
525
  "title": "",
561
526
  "type": "page"
562
527
  }
@@ -565,14 +530,14 @@
565
530
  }
566
531
  },
567
532
  {
568
- "search": "Try offline: serviceURL="/docs-mock-api" and dataProvider="api/users" with key="data" — see Local API demos. Recommended patterns: Data flow.\n",
533
+ "search": "Nothing is displayed.\n",
569
534
  "files": {
570
- "core/components/functional/list/list.md": {
571
- "title": "List",
535
+ "core/components/functional/date/date.md": {
536
+ "title": "Date",
572
537
  "hashes": {
573
- "list": {
538
+ "no-attribute": {
574
539
  "count": 1,
575
- "title": "",
540
+ "title": "No attribute",
576
541
  "type": "paragraph"
577
542
  }
578
543
  }
@@ -580,14 +545,14 @@
580
545
  }
581
546
  },
582
547
  {
583
- "search": "The sonic-list component renders one row per entry in props (array from fetch or set on the element).\n",
548
+ "search": "Displays the current date.\n",
584
549
  "files": {
585
- "core/components/functional/list/list.md": {
586
- "title": "List",
550
+ "core/components/functional/date/date.md": {
551
+ "title": "Date",
587
552
  "hashes": {
588
- "list": {
553
+ "now": {
589
554
  "count": 1,
590
- "title": "",
555
+ "title": "Now",
591
556
  "type": "paragraph"
592
557
  }
593
558
  }
@@ -595,12 +560,12 @@
595
560
  }
596
561
  },
597
562
  {
598
- "search": "List extends Subscriber and Fetcher:\n",
563
+ "search": "Displays a date from a timestamp.\n",
599
564
  "files": {
600
- "core/components/functional/list/list.md": {
601
- "title": "List",
565
+ "core/components/functional/date/date.md": {
566
+ "title": "Date",
602
567
  "hashes": {
603
- "list": {
568
+ "date": {
604
569
  "count": 1,
605
570
  "title": "",
606
571
  "type": "paragraph"
@@ -610,14 +575,14 @@
610
575
  }
611
576
  },
612
577
  {
613
- "search": "From a Lit parent, pass a function on the items property (ListItems). Each row is wrapped in a sonic-subscriber with dataProvider="…/list-item/n" (hover rows with debug).\n",
578
+ "search": "Displays a date from a string.\n",
614
579
  "files": {
615
- "core/components/functional/list/list.md": {
616
- "title": "List",
580
+ "core/components/functional/date/date.md": {
581
+ "title": "Date",
617
582
  "hashes": {
618
- "row-renderer-items--recommended": {
583
+ "date_string": {
619
584
  "count": 1,
620
- "title": "Row renderer (`items`) — recommended",
585
+ "title": "Date_string",
621
586
  "type": "paragraph"
622
587
  }
623
588
  }
@@ -625,14 +590,14 @@
625
590
  }
626
591
  },
627
592
  {
628
- "search": "Use .items=${fn} (property binding): Lit passes functions only as properties, not as HTML attributes — @property({ type: Function }) does not change that. Same for .noItems, .separator, .skeleton. The callback receives each row object (replacing data-bind / <sonic-value> in a <template>).\n",
593
+ "search": "Displays a period of time from start_date to end_date.When by itself start_date will act as dateif a start_date is not specified it will be set by the current date.if the end_date is anterior to start date date it will be used as the start_date. \n",
629
594
  "files": {
630
- "core/components/functional/list/list.md": {
631
- "title": "List",
595
+ "core/components/functional/date/date.md": {
596
+ "title": "Date",
632
597
  "hashes": {
633
- "row-renderer-items--recommended": {
598
+ "start_date--end_date": {
634
599
  "count": 1,
635
- "title": "Row renderer (`items`) — recommended",
600
+ "title": "Start_date / end_date",
636
601
  "type": "paragraph"
637
602
  }
638
603
  }
@@ -640,14 +605,14 @@
640
605
  }
641
606
  },
642
607
  {
643
- "search": "Live demo + TypeScript source (one file, no Markdown copy):\n",
608
+ "search": "ISO 639-1 Language Codes\n",
644
609
  "files": {
645
- "core/components/functional/list/list.md": {
646
- "title": "List",
610
+ "core/components/functional/date/date.md": {
611
+ "title": "Date",
647
612
  "hashes": {
648
- "row-renderer-items--recommended": {
613
+ "language": {
649
614
  "count": 1,
650
- "title": "Row renderer (`items`) — recommended",
615
+ "title": "Language",
651
616
  "type": "paragraph"
652
617
  }
653
618
  }
@@ -655,14 +620,1329 @@
655
620
  }
656
621
  },
657
622
  {
658
- "search": "Implementation: src/docs/example/docs-users-list.ts — row markup in the items callback (item.first_name, …), same idea as replacing data-bind / <sonic-value> in a <template>.\n",
623
+ "search": "For the list of supported timeZones, run Intl.supportedValuesOf('timeZone') in the console\n",
659
624
  "files": {
660
- "core/components/functional/list/list.md": {
661
- "title": "List",
625
+ "core/components/functional/date/date.md": {
626
+ "title": "Date",
627
+ "hashes": {
628
+ "time_zone": {
629
+ "count": 1,
630
+ "title": "Time_zone",
631
+ "type": "paragraph"
632
+ }
633
+ }
634
+ }
635
+ }
636
+ },
637
+ {
638
+ "search": "Deprecated\n",
639
+ "files": {
640
+ "core/components/functional/date/date.md": {
641
+ "title": "Date",
642
+ "hashes": {
643
+ "renderif": {
644
+ "count": 1,
645
+ "title": ".renderIf",
646
+ "type": "paragraph"
647
+ }
648
+ }
649
+ },
650
+ "core/components/functional/fetch/fetch.md": {
651
+ "title": "Fetch",
652
+ "hashes": {
653
+ "headersdataprovider": {
654
+ "count": 1,
655
+ "title": "HeadersDataProvider",
656
+ "type": "paragraph"
657
+ }
658
+ }
659
+ }
660
+ }
661
+ },
662
+ {
663
+ "search": "Fetch",
664
+ "files": {
665
+ "core/components/functional/fetch/fetch.md": {
666
+ "title": "Fetch",
667
+ "hashes": {
668
+ "fetch": {
669
+ "count": 1,
670
+ "title": "",
671
+ "type": "page"
672
+ }
673
+ }
674
+ }
675
+ }
676
+ },
677
+ {
678
+ "search": "New apps: prefer @get for a typed GET on a component, or List / Queue with fetch for collections. Use Local API demos (serviceURL="/docs-mock-api") to try examples offline.\n",
679
+ "files": {
680
+ "core/components/functional/fetch/fetch.md": {
681
+ "title": "Fetch",
682
+ "hashes": {
683
+ "fetch": {
684
+ "count": 1,
685
+ "title": "",
686
+ "type": "paragraph"
687
+ }
688
+ }
689
+ }
690
+ }
691
+ },
692
+ {
693
+ "search": "The sonic-fetch component requests and stores API data. It extends the Fetcher and Subscriber mixins.\n",
694
+ "files": {
695
+ "core/components/functional/fetch/fetch.md": {
696
+ "title": "Fetch",
697
+ "hashes": {
698
+ "fetch": {
699
+ "count": 1,
700
+ "title": "",
701
+ "type": "paragraph"
702
+ }
703
+ }
704
+ }
705
+ }
706
+ },
707
+ {
708
+ "search": "In order to work properly the sonic-fetch component needs at least the following attributes. \n",
709
+ "files": {
710
+ "core/components/functional/fetch/fetch.md": {
711
+ "title": "Fetch",
712
+ "hashes": {
713
+ "basic-usage": {
714
+ "count": 1,
715
+ "title": "Basic usage",
716
+ "type": "paragraph"
717
+ }
718
+ }
719
+ }
720
+ }
721
+ },
722
+ {
723
+ "search": "If no endPoint is specified it will be filled by the dataProvider ID instead \n",
724
+ "files": {
725
+ "core/components/functional/fetch/fetch.md": {
726
+ "title": "Fetch",
727
+ "hashes": {
728
+ "dataprovider-as-an-endpoint": {
729
+ "count": 1,
730
+ "title": "DataProvider as an endPoint",
731
+ "type": "paragraph"
732
+ }
733
+ }
734
+ }
735
+ }
736
+ },
737
+ {
738
+ "search": "When the key attribute is present, only a sub-part of the data received is injected into the dataProvider.\nWe can use the dot syntax to target what we want to keep.\n",
739
+ "files": {
740
+ "core/components/functional/fetch/fetch.md": {
741
+ "title": "Fetch",
742
+ "hashes": {
743
+ "key": {
744
+ "count": 1,
745
+ "title": "Key",
746
+ "type": "paragraph"
747
+ }
748
+ }
749
+ }
750
+ }
751
+ },
752
+ {
753
+ "search": "For example if the data is {my:{data:{a:1,b:2}}} and the key is key="my.data", the data available in the dataProvider will be {a:1 , b:2}\n",
754
+ "files": {
755
+ "core/components/functional/fetch/fetch.md": {
756
+ "title": "Fetch",
757
+ "hashes": {
758
+ "key": {
759
+ "count": 1,
760
+ "title": "Key",
761
+ "type": "paragraph"
762
+ }
763
+ }
764
+ }
765
+ }
766
+ },
767
+ {
768
+ "search": "if the mime type of the content returned by the service begins with text/, then the dataProvider has a key named "text" which contains the text returned by the service.\n",
769
+ "files": {
770
+ "core/components/functional/fetch/fetch.md": {
771
+ "title": "Fetch",
772
+ "hashes": {
773
+ "text-mode": {
774
+ "count": 1,
775
+ "title": "Text mode",
776
+ "type": "paragraph"
777
+ }
778
+ }
779
+ }
780
+ }
781
+ },
782
+ {
783
+ "search": "The noLoader attribute disables display of the default loader\n",
784
+ "files": {
785
+ "core/components/functional/fetch/fetch.md": {
786
+ "title": "Fetch",
787
+ "hashes": {
788
+ "noloader": {
789
+ "count": 1,
790
+ "title": "NoLoader",
791
+ "type": "paragraph"
792
+ }
793
+ }
794
+ }
795
+ }
796
+ },
797
+ {
798
+ "search": "if",
799
+ "files": {
800
+ "core/components/functional/if/if.md": {
801
+ "title": "if",
802
+ "hashes": {
803
+ "if": {
804
+ "count": 1,
805
+ "title": "",
806
+ "type": "page"
807
+ }
808
+ }
809
+ }
810
+ }
811
+ },
812
+ {
813
+ "search": "The sonic-if component shows its slot when .condition is true. In Lit, bind .condition from store-driven state (@subscribe on a formDataProvider field) — live preview and TypeScript source are the same file (docs-lit-demo):\n",
814
+ "files": {
815
+ "core/components/functional/if/if.md": {
816
+ "title": "if",
817
+ "hashes": {
818
+ "if": {
819
+ "count": 1,
820
+ "title": "",
821
+ "type": "paragraph"
822
+ }
823
+ }
824
+ }
825
+ }
826
+ },
827
+ {
828
+ "search": "Plain HTML without Lit: HTML integration.\n",
829
+ "files": {
830
+ "core/components/functional/if/if.md": {
831
+ "title": "if",
832
+ "hashes": {
833
+ "if": {
834
+ "count": 1,
835
+ "title": "",
836
+ "type": "paragraph"
837
+ }
838
+ }
839
+ }
840
+ }
841
+ },
842
+ {
843
+ "search": "Hugging Face infer",
844
+ "files": {
845
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
846
+ "title": "Hugging Face infer",
847
+ "hashes": {
848
+ "hugging-face-infer": {
849
+ "count": 1,
850
+ "title": "",
851
+ "type": "page"
852
+ }
853
+ }
854
+ }
855
+ }
856
+ },
857
+ {
858
+ "search": "sonic-hugging-face-infer: 1 input → Hugging Face model → 1 output (readonly), computed in the browser with Transformers.js. Data never leaves the device.\n",
859
+ "files": {
860
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
861
+ "title": "Hugging Face infer",
862
+ "hashes": {
863
+ "hugging-face-infer": {
864
+ "count": 1,
865
+ "title": "",
866
+ "type": "paragraph"
867
+ }
868
+ }
869
+ }
870
+ }
871
+ },
872
+ {
873
+ "search": "The name names the engine: other inference paths (server, browser AI, …) will get their own sonic-<engine>-infer, with the same attributes, states, and typed outputs.\n",
874
+ "files": {
875
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
876
+ "title": "Hugging Face infer",
877
+ "hashes": {
878
+ "hugging-face-infer": {
879
+ "count": 1,
880
+ "title": "",
881
+ "type": "paragraph"
882
+ }
883
+ }
884
+ }
885
+ }
886
+ },
887
+ {
888
+ "search": "Each demo stays idle until you click Try. The model downloads only after consent.\n",
889
+ "files": {
890
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
891
+ "title": "Hugging Face infer",
892
+ "hashes": {
893
+ "examples": {
894
+ "count": 1,
895
+ "title": "Examples",
896
+ "type": "paragraph"
897
+ }
898
+ }
899
+ }
900
+ }
901
+ },
902
+ {
903
+ "search": "Image + depth / shader chains: Visual stack.\n",
904
+ "files": {
905
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
906
+ "title": "Hugging Face infer",
907
+ "hashes": {
908
+ "text--zero-shot-classification": {
909
+ "count": 1,
910
+ "title": "Text — `zero-shot-classification`",
911
+ "type": "paragraph"
912
+ }
913
+ }
914
+ }
915
+ }
916
+ },
917
+ {
918
+ "search": "Same component, different allowlist alias. Common patterns:\n",
919
+ "files": {
920
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
921
+ "title": "Hugging Face infer",
922
+ "hashes": {
923
+ "other-tasks-markup": {
924
+ "count": 1,
925
+ "title": "Other tasks (markup)",
926
+ "type": "paragraph"
927
+ }
928
+ }
929
+ }
930
+ }
931
+ },
932
+ {
933
+ "search": "<!-- Translation FR → EN -->\n<sonic-hugging-face-infer\n model="fr-en"\n inputProvider="event.edito.description"\n outputProvider="event.edito.descriptionEn"\n load="consent"\n trigger="demand"\n triggerProvider="translateClick"\n></sonic-hugging-face-infer>\n",
934
+ "files": {
935
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
936
+ "title": "Hugging Face infer",
937
+ "hashes": {
938
+ "other-tasks-markup": {
939
+ "count": 1,
940
+ "title": "Other tasks (markup)",
941
+ "type": "paragraph"
942
+ }
943
+ }
944
+ }
945
+ }
946
+ },
947
+ {
948
+ "search": "<!-- Dictation (Whisper) -->\n<sonic-hugging-face-infer\n model="whisper-tiny"\n inputProvider="voice.clipUrl"\n outputProvider="voice.transcript"\n load="consent"\n></sonic-hugging-face-infer>\n \n\n",
949
+ "files": {
950
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
951
+ "title": "Hugging Face infer",
952
+ "hashes": {
953
+ "other-tasks-markup": {
954
+ "count": 1,
955
+ "title": "Other tasks (markup)",
956
+ "type": "paragraph"
957
+ }
958
+ }
959
+ }
960
+ }
961
+ },
962
+ {
963
+ "search": "Load concorde-hugging-face-infer.bundle.js after the core, then call ConcordeHF.configureHuggingFace(…) once. Details: CDN addons.\n",
964
+ "files": {
965
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
966
+ "title": "Hugging Face infer",
967
+ "hashes": {
968
+ "cdn-script--bootstrap": {
969
+ "count": 1,
970
+ "title": "CDN (script + bootstrap)",
971
+ "type": "paragraph"
972
+ }
973
+ }
974
+ }
975
+ }
976
+ },
977
+ {
978
+ "search": "The script checks that ONNX Runtime binaries are exactly those expected by Transformers.js. Serve the folder with Cache-Control: public, max-age=31536000, immutable: the path includes the version and never changes. To upgrade: new folder, regression tests, then change version / url in config. The previous version can stay served.\n",
979
+ "files": {
980
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
981
+ "title": "Hugging Face infer",
982
+ "hashes": {
983
+ "1-pin-and-host-the-runtime": {
984
+ "count": 1,
985
+ "title": "1. Pin and host the runtime",
986
+ "type": "paragraph"
987
+ }
988
+ }
989
+ }
990
+ }
991
+ },
992
+ {
993
+ "search": "The script prints size (sizeBytes) and license for you to verify.\n",
994
+ "files": {
995
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
996
+ "title": "Hugging Face infer",
997
+ "hashes": {
998
+ "2-host-models-pinned-revision": {
999
+ "count": 1,
1000
+ "title": "2. Host models (pinned revision)",
1001
+ "type": "paragraph"
1002
+ }
1003
+ }
1004
+ }
1005
+ }
1006
+ },
1007
+ {
1008
+ "search": "Three ways to supply the runtime (runtime.source):\n",
1009
+ "files": {
1010
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1011
+ "title": "Hugging Face infer",
1012
+ "hashes": {
1013
+ "3-configure-once-at-startup": {
1014
+ "count": 1,
1015
+ "title": "3. Configure (once, at startup)",
1016
+ "type": "paragraph"
1017
+ }
1018
+ }
1019
+ }
1020
+ }
1021
+ },
1022
+ {
1023
+ "search": "<!-- Catalog: runs when the browser is idle, cached in IndexedDB -->\n<sonic-hugging-face-infer\n model="multilingual-mini"\n inputProvider="events"\n outputProvider="search.vectors"\n options='{"text":"label + edito.sub_title + categories.title"}'\n load="idle"\n persistResults\n></sonic-hugging-face-infer>\n",
1024
+ "files": {
1025
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1026
+ "title": "Hugging Face infer",
1027
+ "hashes": {
1028
+ "markup": {
1029
+ "count": 1,
1030
+ "title": "Markup",
1031
+ "type": "paragraph"
1032
+ }
1033
+ }
1034
+ }
1035
+ }
1036
+ },
1037
+ {
1038
+ "search": "<!-- Query: on each keystroke (300 ms debounce) -->\n<sonic-hugging-face-infer\n model="multilingual-mini"\n inputProvider="searchForm.q"\n outputProvider="search.query"\n statusProvider="searchAiStatus"\n debounce="300"\n></sonic-hugging-face-infer>\n \n\n",
1039
+ "files": {
1040
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1041
+ "title": "Hugging Face infer",
1042
+ "hashes": {
1043
+ "markup": {
1044
+ "count": 1,
1045
+ "title": "Markup",
1046
+ "type": "paragraph"
1047
+ }
1048
+ }
1049
+ }
1050
+ }
1051
+ },
1052
+ {
1053
+ "search": "Ranking combines several inputs (events, vectors, query). With the TypeScript API:\n",
1054
+ "files": {
1055
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1056
+ "title": "Hugging Face infer",
1057
+ "hashes": {
1058
+ "markup": {
1059
+ "count": 1,
1060
+ "title": "Markup",
1061
+ "type": "paragraph"
1062
+ }
1063
+ }
1064
+ }
1065
+ }
1066
+ },
1067
+ {
1068
+ "search": "On the JSONata side, $cosine(a, b) and $rankBySimilarity(items, vectors, query, topN?, minScore?) are available in sonic-jsonata (one input: group data under the same DataProvider).\n",
1069
+ "files": {
1070
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1071
+ "title": "Hugging Face infer",
1072
+ "hashes": {
1073
+ "markup": {
1074
+ "count": 1,
1075
+ "title": "Markup",
1076
+ "type": "paragraph"
1077
+ }
1078
+ }
1079
+ }
1080
+ }
1081
+ },
1082
+ {
1083
+ "search": "Methods: run(), loadModel(), accept(), decline().\n",
1084
+ "files": {
1085
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1086
+ "title": "Hugging Face infer",
1087
+ "hashes": {
1088
+ "attributes": {
1089
+ "count": 1,
1090
+ "title": "Attributes",
1091
+ "type": "paragraph"
1092
+ }
1093
+ }
1094
+ }
1095
+ }
1096
+ },
1097
+ {
1098
+ "search": "Guards, regardless of policy: switch to consent on data-saver, slow network (2G), or when the model exceeds consentAboveMB. A cached model loads without prompting. Choice is stored per alias and revision (hf.revokeConsent(alias) to clear). Nothing downloads while the input is empty.\n",
1099
+ "files": {
1100
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1101
+ "title": "Hugging Face infer",
1102
+ "hashes": {
1103
+ "model-loading": {
1104
+ "count": 1,
1105
+ "title": "Model loading",
1106
+ "type": "paragraph"
1107
+ }
1108
+ }
1109
+ }
1110
+ }
1111
+ },
1112
+ {
1113
+ "search": "Consent without JavaScript (SDUI):\n",
1114
+ "files": {
1115
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1116
+ "title": "Hugging Face infer",
1117
+ "hashes": {
1118
+ "model-loading": {
1119
+ "count": 1,
1120
+ "title": "Model loading",
1121
+ "type": "paragraph"
1122
+ }
1123
+ }
1124
+ }
1125
+ }
1126
+ },
1127
+ {
1128
+ "search": "{outputProvider root}/_state_ → { status } (loading | ready | error | empty), like sonic-jsonata, for sonic-states.\n",
1129
+ "files": {
1130
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1131
+ "title": "Hugging Face infer",
1132
+ "hashes": {
1133
+ "states": {
1134
+ "count": 1,
1135
+ "title": "States",
1136
+ "type": "paragraph"
1137
+ }
1138
+ }
1139
+ }
1140
+ }
1141
+ },
1142
+ {
1143
+ "search": "Detailed status on statusProvider:\n",
1144
+ "files": {
1145
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1146
+ "title": "Hugging Face infer",
1147
+ "hashes": {
1148
+ "states": {
1149
+ "count": 1,
1150
+ "title": "States",
1151
+ "type": "paragraph"
1152
+ }
1153
+ }
1154
+ }
1155
+ }
1156
+ },
1157
+ {
1158
+ "search": "ONNX Runtime is a WASM binary in every case (≈ 27 MB, ≈ 6.6 MB compressed for 1.31), including WebGPU: it downloads with the first model from your CDN, then is cached. It is not part of the component.\n",
1159
+ "files": {
1160
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1161
+ "title": "Hugging Face infer",
1162
+ "hashes": {
1163
+ "webgpu-and-wasm": {
1164
+ "count": 1,
1165
+ "title": "WebGPU and WASM",
1166
+ "type": "paragraph"
1167
+ }
1168
+ }
1169
+ }
1170
+ }
1171
+ },
1172
+ {
1173
+ "search": "What you control: CPU (WASM) execution when WebGPU is missing. Allowed per model (devices) and only under allowWasmUpToMB. Beyond that → unsupported; the page keeps working without the model.\n",
1174
+ "files": {
1175
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1176
+ "title": "Hugging Face infer",
1177
+ "hashes": {
1178
+ "webgpu-and-wasm": {
1179
+ "count": 1,
1180
+ "title": "WebGPU and WASM",
1181
+ "type": "paragraph"
1182
+ }
1183
+ }
1184
+ }
1185
+ }
1186
+ },
1187
+ {
1188
+ "search": "configureHuggingFace returns an API typed by the allowlist:\n",
1189
+ "files": {
1190
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1191
+ "title": "Hugging Face infer",
1192
+ "hashes": {
1193
+ "typescript": {
1194
+ "count": 1,
1195
+ "title": "TypeScript",
1196
+ "type": "paragraph"
1197
+ }
1198
+ }
1199
+ }
1200
+ }
1201
+ },
1202
+ {
1203
+ "search": "Cleanup: hf.clearModel(alias), hf.clearAll() (models, WASM, and results).\n",
1204
+ "files": {
1205
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1206
+ "title": "Hugging Face infer",
1207
+ "hashes": {
1208
+ "typescript": {
1209
+ "count": 1,
1210
+ "title": "TypeScript",
1211
+ "type": "paragraph"
1212
+ }
1213
+ }
1214
+ }
1215
+ }
1216
+ },
1217
+ {
1218
+ "search": "Supported tasks: feature-extraction, text-classification, zero-shot-classification, translation, token-classification, fill-mask, question-answering, image-classification, zero-shot-image-classification, object-detection, zero-shot-object-detection, image-feature-extraction, image-segmentation, depth-estimation, background-removal, image-to-text, audio-classification, automatic-speech-recognition. No free-form LLM (text-generation, etc.).\n",
1219
+ "files": {
1220
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1221
+ "title": "Hugging Face infer",
1222
+ "hashes": {
1223
+ "tasks-and-light-models": {
1224
+ "count": 1,
1225
+ "title": "Tasks and light models",
1226
+ "type": "paragraph"
1227
+ }
1228
+ }
1229
+ }
1230
+ }
1231
+ },
1232
+ {
1233
+ "search": "Indicative sizes (quantized); verify with hf-vendor.mjs before allowlisting, including license:\n",
1234
+ "files": {
1235
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1236
+ "title": "Hugging Face infer",
1237
+ "hashes": {
1238
+ "tasks-and-light-models": {
1239
+ "count": 1,
1240
+ "title": "Tasks and light models",
1241
+ "type": "paragraph"
1242
+ }
1243
+ }
1244
+ }
1245
+ }
1246
+ },
1247
+ {
1248
+ "search": "Produced images (cutout, depth, segmentation) come out as { width, height, channels, blob, url } (PNG). url is an ObjectURL attached on the main thread at publish time — chainable into sonic-shader / sonic-jsonata ($mediaUrl) without app glue. Images are not stored in IndexedDB.\n",
1249
+ "files": {
1250
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1251
+ "title": "Hugging Face infer",
1252
+ "hashes": {
1253
+ "tasks-and-light-models": {
1254
+ "count": 1,
1255
+ "title": "Tasks and light models",
1256
+ "type": "paragraph"
1257
+ }
1258
+ }
1259
+ }
1260
+ }
1261
+ },
1262
+ {
1263
+ "search": "End-to-end (depth + shader / Harris) : Visual stack.\n",
1264
+ "files": {
1265
+ "core/components/functional/infer/hugging-face/hugging-face-infer.md": {
1266
+ "title": "Hugging Face infer",
1267
+ "hashes": {
1268
+ "tasks-and-light-models": {
1269
+ "count": 1,
1270
+ "title": "Tasks and light models",
1271
+ "type": "paragraph"
1272
+ }
1273
+ }
1274
+ }
1275
+ }
1276
+ },
1277
+ {
1278
+ "search": "Jsonata",
1279
+ "files": {
1280
+ "core/components/functional/jsonata/jsonata.md": {
1281
+ "title": "Jsonata",
1282
+ "hashes": {
1283
+ "jsonata": {
1284
+ "count": 1,
1285
+ "title": "",
1286
+ "type": "page"
1287
+ }
1288
+ }
1289
+ }
1290
+ }
1291
+ },
1292
+ {
1293
+ "search": "sonic-jsonata : 1 input → expression → 1 output (readonly).\n",
1294
+ "files": {
1295
+ "core/components/functional/jsonata/jsonata.md": {
1296
+ "title": "Jsonata",
1297
+ "hashes": {
1298
+ "jsonata": {
1299
+ "count": 1,
1300
+ "title": "",
1301
+ "type": "paragraph"
1302
+ }
1303
+ }
1304
+ }
1305
+ }
1306
+ },
1307
+ {
1308
+ "search": "Unidirectional (fetch → compute → display), unlike sonic-mix.\n",
1309
+ "files": {
1310
+ "core/components/functional/jsonata/jsonata.md": {
1311
+ "title": "Jsonata",
1312
+ "hashes": {
1313
+ "jsonata": {
1314
+ "count": 1,
1315
+ "title": "",
1316
+ "type": "paragraph"
1317
+ }
1318
+ }
1319
+ }
1320
+ }
1321
+ },
1322
+ {
1323
+ "search": "Offline : serviceURL="/docs-mock-api" — Local API demos.\n",
1324
+ "files": {
1325
+ "core/components/functional/jsonata/jsonata.md": {
1326
+ "title": "Jsonata",
1327
+ "hashes": {
1328
+ "jsonata": {
1329
+ "count": 1,
1330
+ "title": "",
1331
+ "type": "paragraph"
1332
+ }
1333
+ }
1334
+ }
1335
+ }
1336
+ },
1337
+ {
1338
+ "search": "Change Top N → recalcul sans refetch.\n",
1339
+ "files": {
1340
+ "core/components/functional/jsonata/jsonata.md": {
1341
+ "title": "Jsonata",
1342
+ "hashes": {
1343
+ "groupby--top-n": {
1344
+ "count": 1,
1345
+ "title": "Groupby + top N",
1346
+ "type": "paragraph"
1347
+ }
1348
+ }
1349
+ }
1350
+ }
1351
+ },
1352
+ {
1353
+ "search": "Change Tax % → même idée.\n",
1354
+ "files": {
1355
+ "core/components/functional/jsonata/jsonata.md": {
1356
+ "title": "Jsonata",
1357
+ "hashes": {
1358
+ "totaux-somme--taxe": {
1359
+ "count": 1,
1360
+ "title": "Totaux (somme + taxe)",
1361
+ "type": "paragraph"
1362
+ }
1363
+ }
1364
+ }
1365
+ }
1366
+ },
1367
+ {
1368
+ "search": "$ucFirst · $currency · $percent · $date · $toChart(items, labelKey, valueKey, datasetLabel?) · $cosine · $rankBySimilarity · $mediaUrl(x) (string | {url} | {blobUrl})\n",
1369
+ "files": {
1370
+ "core/components/functional/jsonata/jsonata.md": {
1371
+ "title": "Jsonata",
1372
+ "hashes": {
1373
+ "helpers": {
1374
+ "count": 1,
1375
+ "title": "Helpers",
1376
+ "type": "paragraph"
1377
+ }
1378
+ }
1379
+ }
1380
+ }
1381
+ },
1382
+ {
1383
+ "search": "Pas de DOM, pas de réseau, pas d’eval. $mediaUrl ne crée pas d’ObjectURL (les producteurs HF / extract publient déjà url).\n",
1384
+ "files": {
1385
+ "core/components/functional/jsonata/jsonata.md": {
1386
+ "title": "Jsonata",
1387
+ "hashes": {
1388
+ "helpers": {
1389
+ "count": 1,
1390
+ "title": "Helpers",
1391
+ "type": "paragraph"
1392
+ }
1393
+ }
1394
+ }
1395
+ }
1396
+ },
1397
+ {
1398
+ "search": "Pour du multi-entrées ou une fonction TS : primitive derive.\n",
1399
+ "files": {
1400
+ "core/components/functional/jsonata/jsonata.md": {
1401
+ "title": "Jsonata",
1402
+ "hashes": {
1403
+ "markup": {
1404
+ "count": 1,
1405
+ "title": "Markup",
1406
+ "type": "paragraph"
1407
+ }
1408
+ }
1409
+ }
1410
+ }
1411
+ },
1412
+ {
1413
+ "search": "Visual stack (3d → HF → jsonata → shader): Visual stack.\n",
1414
+ "files": {
1415
+ "core/components/functional/jsonata/jsonata.md": {
1416
+ "title": "Jsonata",
1417
+ "hashes": {
1418
+ "markup": {
1419
+ "count": 1,
1420
+ "title": "Markup",
1421
+ "type": "paragraph"
1422
+ }
1423
+ }
1424
+ }
1425
+ }
1426
+ },
1427
+ {
1428
+ "search": "{output}/_state_ → { status, error? } (loading | ready | error | empty). Brancher avec sonic-states.\n",
1429
+ "files": {
1430
+ "core/components/functional/jsonata/jsonata.md": {
1431
+ "title": "Jsonata",
1432
+ "hashes": {
1433
+ "states": {
1434
+ "count": 1,
1435
+ "title": "States",
1436
+ "type": "paragraph"
1437
+ }
1438
+ }
1439
+ }
1440
+ }
1441
+ },
1442
+ {
1443
+ "search": "List",
1444
+ "files": {
1445
+ "core/components/functional/list/list.md": {
1446
+ "title": "List",
1447
+ "hashes": {
1448
+ "list": {
1449
+ "count": 1,
1450
+ "title": "",
1451
+ "type": "page"
1452
+ }
1453
+ }
1454
+ }
1455
+ }
1456
+ },
1457
+ {
1458
+ "search": "Try offline: serviceURL="/docs-mock-api" and dataProvider="api/users" with key="data" — see Local API demos. Recommended patterns: Data flow.\n",
1459
+ "files": {
1460
+ "core/components/functional/list/list.md": {
1461
+ "title": "List",
1462
+ "hashes": {
1463
+ "list": {
1464
+ "count": 1,
1465
+ "title": "",
1466
+ "type": "paragraph"
1467
+ }
1468
+ }
1469
+ }
1470
+ }
1471
+ },
1472
+ {
1473
+ "search": "The sonic-list component renders one row per entry in props (array from fetch or set on the element).\n",
1474
+ "files": {
1475
+ "core/components/functional/list/list.md": {
1476
+ "title": "List",
1477
+ "hashes": {
1478
+ "list": {
1479
+ "count": 1,
1480
+ "title": "",
1481
+ "type": "paragraph"
1482
+ }
1483
+ }
1484
+ }
1485
+ }
1486
+ },
1487
+ {
1488
+ "search": "List extends Subscriber and Fetcher:\n",
1489
+ "files": {
1490
+ "core/components/functional/list/list.md": {
1491
+ "title": "List",
1492
+ "hashes": {
1493
+ "list": {
1494
+ "count": 1,
1495
+ "title": "",
1496
+ "type": "paragraph"
1497
+ }
1498
+ }
1499
+ }
1500
+ }
1501
+ },
1502
+ {
1503
+ "search": "From a Lit parent, pass a function on the items property (ListItems). Each row is wrapped in a sonic-subscriber with dataProvider="…/list-item/n" (hover rows with debug).\n",
1504
+ "files": {
1505
+ "core/components/functional/list/list.md": {
1506
+ "title": "List",
1507
+ "hashes": {
1508
+ "row-renderer-items--recommended": {
1509
+ "count": 1,
1510
+ "title": "Row renderer (`items`) — recommended",
1511
+ "type": "paragraph"
1512
+ }
1513
+ }
1514
+ }
1515
+ }
1516
+ },
1517
+ {
1518
+ "search": "Use .items=${fn} (property binding): Lit passes functions only as properties, not as HTML attributes — @property({ type: Function }) does not change that. Same for .noItems, .separator, .skeleton. The callback receives each row object (replacing data-bind / <sonic-value> in a <template>).\n",
1519
+ "files": {
1520
+ "core/components/functional/list/list.md": {
1521
+ "title": "List",
1522
+ "hashes": {
1523
+ "row-renderer-items--recommended": {
1524
+ "count": 1,
1525
+ "title": "Row renderer (`items`) — recommended",
1526
+ "type": "paragraph"
1527
+ }
1528
+ }
1529
+ }
1530
+ }
1531
+ },
1532
+ {
1533
+ "search": "Live demo + TypeScript source (one file, no Markdown copy):\n",
1534
+ "files": {
1535
+ "core/components/functional/list/list.md": {
1536
+ "title": "List",
1537
+ "hashes": {
1538
+ "row-renderer-items--recommended": {
1539
+ "count": 1,
1540
+ "title": "Row renderer (`items`) — recommended",
1541
+ "type": "paragraph"
1542
+ }
1543
+ }
1544
+ }
1545
+ }
1546
+ },
1547
+ {
1548
+ "search": "Implementation: src/docs/example/docs-users-list.ts — row markup in the items callback (item.first_name, …), same idea as replacing data-bind / <sonic-value> in a <template>.\n",
1549
+ "files": {
1550
+ "core/components/functional/list/list.md": {
1551
+ "title": "List",
1552
+ "hashes": {
1553
+ "row-renderer-items--recommended": {
1554
+ "count": 1,
1555
+ "title": "Row renderer (`items`) — recommended",
1556
+ "type": "paragraph"
1557
+ }
1558
+ }
1559
+ }
1560
+ }
1561
+ },
1562
+ {
1563
+ "search": "Use metadata (even, odd, firstChild, …) or fields on each item (e.g. tpl with templateKey):\n",
1564
+ "files": {
1565
+ "core/components/functional/list/list.md": {
1566
+ "title": "List",
1567
+ "hashes": {
1568
+ "alternating-row-layouts": {
1569
+ "count": 1,
1570
+ "title": "Alternating row layouts",
1571
+ "type": "paragraph"
1572
+ }
1573
+ }
1574
+ }
1575
+ }
1576
+ },
1577
+ {
1578
+ "search": "For plain HTML hosts, you can still declare <template> children (and data-value for templateKey, separator, no-item). That path is for HTML integration — not used in Concorde doc live demos.\n",
1579
+ "files": {
1580
+ "core/components/functional/list/list.md": {
1581
+ "title": "List",
1582
+ "hashes": {
1583
+ "html-template-children-integration-without-lit": {
1584
+ "count": 1,
1585
+ "title": "HTML `<template>` children (integration without Lit)",
1586
+ "type": "paragraph"
1587
+ }
1588
+ }
1589
+ }
1590
+ }
1591
+ },
1592
+ {
1593
+ "search": "Each list row still gets dataProvider=&quot;[list]/list-item/[index]&quot;.\n",
1594
+ "files": {
1595
+ "core/components/functional/list/list.md": {
1596
+ "title": "List",
1597
+ "hashes": {
1598
+ "html-template-children-integration-without-lit": {
1599
+ "count": 1,
1600
+ "title": "HTML `<template>` children (integration without Lit)",
1601
+ "type": "paragraph"
1602
+ }
1603
+ }
1604
+ }
1605
+ }
1606
+ },
1607
+ {
1608
+ "search": "Mix",
1609
+ "files": {
1610
+ "core/components/functional/mix/mix.md": {
1611
+ "title": "Mix",
1612
+ "hashes": {
1613
+ "mix": {
1614
+ "count": 1,
1615
+ "title": "",
1616
+ "type": "page"
1617
+ }
1618
+ }
1619
+ }
1620
+ }
1621
+ },
1622
+ {
1623
+ "search": "Mix allows you to mix several subsets of dataProvider in a new key/value structure which is itself associated with a new dataProvider. The data update is then bidirectional.\n",
1624
+ "files": {
1625
+ "core/components/functional/mix/mix.md": {
1626
+ "title": "Mix",
1627
+ "hashes": {
1628
+ "mix": {
1629
+ "count": 1,
1630
+ "title": "",
1631
+ "type": "paragraph"
1632
+ }
1633
+ }
1634
+ }
1635
+ }
1636
+ },
1637
+ {
1638
+ "search": "Dot notation is supported to extract a sub-part of the data.\n",
1639
+ "files": {
1640
+ "core/components/functional/mix/mix.md": {
1641
+ "title": "Mix",
1642
+ "hashes": {
1643
+ "mix": {
1644
+ "count": 1,
1645
+ "title": "",
1646
+ "type": "paragraph"
1647
+ }
1648
+ }
1649
+ }
1650
+ }
1651
+ },
1652
+ {
1653
+ "search": "For example, if we declare dataproviders as follows :\n\nWe can rearrange the data as follows\n\nThen we can change values in both dataProviders programaticaly this way, they will stay in sync\n\nOr by using a form element\n\n",
1654
+ "files": {
1655
+ "core/components/functional/mix/mix.md": {
1656
+ "title": "Mix",
1657
+ "hashes": {
1658
+ "mix": {
1659
+ "count": 1,
1660
+ "title": "",
1661
+ "type": "paragraph"
1662
+ }
1663
+ }
1664
+ }
1665
+ }
1666
+ },
1667
+ {
1668
+ "search": "Queue",
1669
+ "files": {
1670
+ "core/components/functional/queue/queue.md": {
1671
+ "title": "Queue",
1672
+ "hashes": {
1673
+ "queue": {
1674
+ "count": 1,
1675
+ "title": "",
1676
+ "type": "page"
1677
+ }
1678
+ }
1679
+ }
1680
+ }
1681
+ },
1682
+ {
1683
+ "search": "Try offline: serviceURL=&quot;/docs-mock-api&quot; — see Local API demos. Row rendering: Data flow (.items property binding).\n",
1684
+ "files": {
1685
+ "core/components/functional/queue/queue.md": {
1686
+ "title": "Queue",
1687
+ "hashes": {
1688
+ "queue": {
1689
+ "count": 1,
1690
+ "title": "",
1691
+ "type": "paragraph"
1692
+ }
1693
+ }
1694
+ }
1695
+ }
1696
+ },
1697
+ {
1698
+ "search": "sonic-queue loads data in batches. Each batch is an internal List with its own dataProvider (…/list-item/0, …/1, …).\n",
1699
+ "files": {
1700
+ "core/components/functional/queue/queue.md": {
1701
+ "title": "Queue",
1702
+ "hashes": {
1703
+ "queue": {
1704
+ "count": 1,
1705
+ "title": "",
1706
+ "type": "paragraph"
1707
+ }
1708
+ }
1709
+ }
1710
+ }
1711
+ },
1712
+ {
1713
+ "search": "When the expression contains $offset and $limit, the queue:\n",
1714
+ "files": {
1715
+ "core/components/functional/queue/queue.md": {
1716
+ "title": "Queue",
1717
+ "hashes": {
1718
+ "lazy-load--offset-and-limit": {
1719
+ "count": 1,
1720
+ "title": "Lazy load — `$offset` and `$limit`",
1721
+ "type": "paragraph"
1722
+ }
1723
+ }
1724
+ }
1725
+ }
1726
+ },
1727
+ {
1728
+ "search": "The doc mock implements this on GET /docs-mock-api/api/users?offset=…&amp;per_page=… (paginateUsers in src/docs/mock-api/router.ts).\n",
1729
+ "files": {
1730
+ "core/components/functional/queue/queue.md": {
1731
+ "title": "Queue",
1732
+ "hashes": {
1733
+ "lazy-load--offset-and-limit": {
1734
+ "count": 1,
1735
+ "title": "Lazy load — `$offset` and `$limit`",
1736
+ "type": "paragraph"
1737
+ }
1738
+ }
1739
+ }
1740
+ }
1741
+ },
1742
+ {
1743
+ "search": "Wrap the queue in a fixed height with overflow-y-auto so lazy load triggers when scrolling inside the box (same layout as the TS starter demo-queue-templates).\n",
1744
+ "files": {
1745
+ "core/components/functional/queue/queue.md": {
1746
+ "title": "Queue",
1747
+ "hashes": {
1748
+ "lazy-load--offset-and-limit": {
1749
+ "count": 1,
1750
+ "title": "Lazy load — `$offset` and `$limit`",
1751
+ "type": "paragraph"
1752
+ }
1753
+ }
1754
+ }
1755
+ }
1756
+ },
1757
+ {
1758
+ "search": "Try scrolling after load — batches of 4 users. Search e.g. George, Bluth, or zzz for empty results.\n",
1759
+ "files": {
1760
+ "core/components/functional/queue/queue.md": {
1761
+ "title": "Queue",
1762
+ "hashes": {
1763
+ "lazy-load--offset-and-limit": {
1764
+ "count": 1,
1765
+ "title": "Lazy load — `$offset` and `$limit`",
1766
+ "type": "paragraph"
1767
+ }
1768
+ }
1769
+ }
1770
+ }
1771
+ },
1772
+ {
1773
+ "search": "Without $offset in the expression, the queue behaves like a single list (one batch), e.g. geo communes below.\n",
1774
+ "files": {
1775
+ "core/components/functional/queue/queue.md": {
1776
+ "title": "Queue",
1777
+ "hashes": {
1778
+ "expression-example": {
1779
+ "count": 1,
1780
+ "title": "Expression example",
1781
+ "type": "paragraph"
1782
+ }
1783
+ }
1784
+ }
1785
+ }
1786
+ },
1787
+ {
1788
+ "search": "One search field (name=&quot;q&quot;) on formDataProvider=&quot;filter&quot;. The queue listens via dataFilterProvider=&quot;filter&quot; and, on change:\n",
1789
+ "files": {
1790
+ "core/components/functional/queue/queue.md": {
1791
+ "title": "Queue",
1792
+ "hashes": {
1793
+ "filter--datafilterprovider--q": {
1794
+ "count": 1,
1795
+ "title": "Filter — `dataFilterProvider` + `q`",
1796
+ "type": "paragraph"
1797
+ }
1798
+ }
1799
+ }
1800
+ }
1801
+ },
1802
+ {
1803
+ "search": "Use filteredFields only when the form has extra fields that must not be sent to the API (e.g. filteredFields=&quot;rememberMe internalId&quot;).\n",
1804
+ "files": {
1805
+ "core/components/functional/queue/queue.md": {
1806
+ "title": "Queue",
1807
+ "hashes": {
1808
+ "filter--datafilterprovider--q": {
1809
+ "count": 1,
1810
+ "title": "Filter — `dataFilterProvider` + `q`",
1811
+ "type": "paragraph"
1812
+ }
1813
+ }
1814
+ }
1815
+ }
1816
+ },
1817
+ {
1818
+ "search": "The mock API filters before pagination — same haystack logic as the starter (filterDocsUsers in src/docs/mock-api/fixtures.ts, used by paginateUsers in router.ts / Service Worker):\n",
1819
+ "files": {
1820
+ "core/components/functional/queue/queue.md": {
1821
+ "title": "Queue",
1822
+ "hashes": {
1823
+ "filter--datafilterprovider--q": {
1824
+ "count": 1,
1825
+ "title": "Filter — `dataFilterProvider` + `q`",
1826
+ "type": "paragraph"
1827
+ }
1828
+ }
1829
+ }
1830
+ }
1831
+ },
1832
+ {
1833
+ "search": "Geo communes: expression uses $limit only (no $offset) — one request, one batch.\n",
1834
+ "files": {
1835
+ "core/components/functional/queue/queue.md": {
1836
+ "title": "Queue",
1837
+ "hashes": {
1838
+ "simple-batch-no-lazy-scroll": {
1839
+ "count": 1,
1840
+ "title": "Simple batch (no lazy scroll)",
1841
+ "type": "paragraph"
1842
+ }
1843
+ }
1844
+ }
1845
+ }
1846
+ },
1847
+ {
1848
+ "search": "Optional for hosts without Lit — see HTML integration.\n",
1849
+ "files": {
1850
+ "core/components/functional/queue/queue.md": {
1851
+ "title": "Queue",
1852
+ "hashes": {
1853
+ "html-template-children": {
1854
+ "count": 1,
1855
+ "title": "HTML `<template>` children",
1856
+ "type": "paragraph"
1857
+ }
1858
+ }
1859
+ }
1860
+ }
1861
+ },
1862
+ {
1863
+ "search": "Router",
1864
+ "files": {
1865
+ "core/components/functional/router/router.md": {
1866
+ "title": "Router",
1867
+ "hashes": {
1868
+ "router": {
1869
+ "count": 1,
1870
+ "title": "",
1871
+ "type": "page"
1872
+ }
1873
+ }
1874
+ }
1875
+ }
1876
+ },
1877
+ {
1878
+ "search": "sonic-router watches document.location (pathname + hash) and renders the matching view.\n",
1879
+ "files": {
1880
+ "core/components/functional/router/router.md": {
1881
+ "title": "Router",
1882
+ "hashes": {
1883
+ "router": {
1884
+ "count": 1,
1885
+ "title": "",
1886
+ "type": "paragraph"
1887
+ }
1888
+ }
1889
+ }
1890
+ }
1891
+ },
1892
+ {
1893
+ "search": "From a Lit parent, pass a .routes map (property binding — same rule as .items on list): keys are path patterns, values are render functions. Use fallback when nothing matches.\n",
1894
+ "files": {
1895
+ "core/components/functional/router/router.md": {
1896
+ "title": "Router",
1897
+ "hashes": {
1898
+ "router": {
1899
+ "count": 1,
1900
+ "title": "",
1901
+ "type": "paragraph"
1902
+ }
1903
+ }
1904
+ }
1905
+ }
1906
+ },
1907
+ {
1908
+ "search": "Legacy HTML &lt;template data-route=&quot;…&quot;&gt; remains for hosts without Lit — HTML integration.\n",
1909
+ "files": {
1910
+ "core/components/functional/router/router.md": {
1911
+ "title": "Router",
1912
+ "hashes": {
1913
+ "router": {
1914
+ "count": 1,
1915
+ "title": "",
1916
+ "type": "paragraph"
1917
+ }
1918
+ }
1919
+ }
1920
+ }
1921
+ },
1922
+ {
1923
+ "search": "Route keys are matched against pathname + hash. A simple hash route #home matches when the location contains that segment.\n",
1924
+ "files": {
1925
+ "core/components/functional/router/router.md": {
1926
+ "title": "Router",
1927
+ "hashes": {
1928
+ "static-routes-no-parameters": {
1929
+ "count": 1,
1930
+ "title": "Static routes (no parameters)",
1931
+ "type": "paragraph"
1932
+ }
1933
+ }
1934
+ }
1935
+ }
1936
+ },
1937
+ {
1938
+ "search": "On the doc site, the page URL is already a hash (#…/router.md/router). Demos append a second hash for in-page routes (#…/router#home), use href + autoActive=&quot;strict&quot; on sonic-button for the active state, and history.replaceState on click so markdown is not reloaded (setDocsDemoSubHash in src/docs/docs-location.ts).\n",
1939
+ "files": {
1940
+ "core/components/functional/router/router.md": {
1941
+ "title": "Router",
662
1942
  "hashes": {
663
- "row-renderer-items--recommended": {
1943
+ "static-routes-no-parameters": {
664
1944
  "count": 1,
665
- "title": "Row renderer (`items`) — recommended",
1945
+ "title": "Static routes (no parameters)",
666
1946
  "type": "paragraph"
667
1947
  }
668
1948
  }
@@ -670,14 +1950,14 @@
670
1950
  }
671
1951
  },
672
1952
  {
673
- "search": "Use metadata (even, odd, firstChild, …) or fields on each item (e.g. tpl with templateKey):\n",
1953
+ "search": "Two styles (see router.demo.ts and docs-router-params-demo):\n",
674
1954
  "files": {
675
- "core/components/functional/list/list.md": {
676
- "title": "List",
1955
+ "core/components/functional/router/router.md": {
1956
+ "title": "Router",
677
1957
  "hashes": {
678
- "alternating-row-layouts": {
1958
+ "routes-with-parameters": {
679
1959
  "count": 1,
680
- "title": "Alternating row layouts",
1960
+ "title": "Routes with parameters",
681
1961
  "type": "paragraph"
682
1962
  }
683
1963
  }
@@ -685,14 +1965,14 @@
685
1965
  }
686
1966
  },
687
1967
  {
688
- "search": "For plain HTML hosts, you can still declare &lt;template&gt; children (and data-value for templateKey, separator, no-item). That path is for HTML integration — not used in Concorde doc live demos.\n",
1968
+ "search": "Key uses :param segments. The render function receives an object { param: string }.\n",
689
1969
  "files": {
690
- "core/components/functional/list/list.md": {
691
- "title": "List",
1970
+ "core/components/functional/router/router.md": {
1971
+ "title": "Router",
692
1972
  "hashes": {
693
- "html-template-children-integration-without-lit": {
1973
+ "url-pattern-name": {
694
1974
  "count": 1,
695
- "title": "HTML `<template>` children (integration without Lit)",
1975
+ "title": "Url-pattern (`:name`)",
696
1976
  "type": "paragraph"
697
1977
  }
698
1978
  }
@@ -700,14 +1980,14 @@
700
1980
  }
701
1981
  },
702
1982
  {
703
- "search": "Each list row still gets dataProvider=&quot;[list]/list-item/[index]&quot;.\n",
1983
+ "search": "Key is a RegExp string with (\\d+) / (\\w+) groups. The render function receives an array of captured strings (in order).\n",
704
1984
  "files": {
705
- "core/components/functional/list/list.md": {
706
- "title": "List",
1985
+ "core/components/functional/router/router.md": {
1986
+ "title": "Router",
707
1987
  "hashes": {
708
- "html-template-children-integration-without-lit": {
1988
+ "regexp-capturing-groups": {
709
1989
  "count": 1,
710
- "title": "HTML `<template>` children (integration without Lit)",
1990
+ "title": "RegExp (capturing groups)",
711
1991
  "type": "paragraph"
712
1992
  }
713
1993
  }
@@ -715,29 +1995,29 @@
715
1995
  }
716
1996
  },
717
1997
  {
718
- "search": "Mix",
1998
+ "search": "With parameters you usually render data directly in Lit (${id}). The old &lt;template data-route&gt; + dataProviderExpression pattern scoped a dataProvider for data-bind / fetch children — prefer @subscribe or explicit props when using .routes.\n",
719
1999
  "files": {
720
- "core/components/functional/mix/mix.md": {
721
- "title": "Mix",
2000
+ "core/components/functional/router/router.md": {
2001
+ "title": "Router",
722
2002
  "hashes": {
723
- "mix": {
2003
+ "regexp-capturing-groups": {
724
2004
  "count": 1,
725
- "title": "",
726
- "type": "page"
2005
+ "title": "RegExp (capturing groups)",
2006
+ "type": "paragraph"
727
2007
  }
728
2008
  }
729
2009
  }
730
2010
  }
731
2011
  },
732
2012
  {
733
- "search": "Mix allows you to mix several subsets of dataProvider in a new key/value structure which is itself associated with a new dataProvider. The data update is then bidirectional.\n",
2013
+ "search": "Always use .routes=${…} in Lit templates: route handlers are functions and must be set as properties, not HTML attributes.\n",
734
2014
  "files": {
735
- "core/components/functional/mix/mix.md": {
736
- "title": "Mix",
2015
+ "core/components/functional/router/router.md": {
2016
+ "title": "Router",
737
2017
  "hashes": {
738
- "mix": {
2018
+ "routes-binding": {
739
2019
  "count": 1,
740
- "title": "",
2020
+ "title": "`.routes` binding",
741
2021
  "type": "paragraph"
742
2022
  }
743
2023
  }
@@ -745,14 +2025,14 @@
745
2025
  }
746
2026
  },
747
2027
  {
748
- "search": "Dot notation is supported to extract a sub-part of the data.\n",
2028
+ "search": "Separate component: redirect when data appears on a publisher (login steps, wizards). Not part of the .routes map.\n",
749
2029
  "files": {
750
- "core/components/functional/mix/mix.md": {
751
- "title": "Mix",
2030
+ "core/components/functional/router/router.md": {
2031
+ "title": "Router",
752
2032
  "hashes": {
753
- "mix": {
2033
+ "sonic-redirect": {
754
2034
  "count": 1,
755
- "title": "",
2035
+ "title": "`sonic-redirect`",
756
2036
  "type": "paragraph"
757
2037
  }
758
2038
  }
@@ -760,14 +2040,14 @@
760
2040
  }
761
2041
  },
762
2042
  {
763
- "search": "For example, if we declare dataproviders as follows :\n\nWe can rearrange the data as follows\n\nThen we can change values in both dataProviders programaticaly this way, they will stay in sync\n\nOr by using a form element\n\n",
2043
+ "search": "Example: combine with .routes and submit for login / logout / profile steps.\n",
764
2044
  "files": {
765
- "core/components/functional/mix/mix.md": {
766
- "title": "Mix",
2045
+ "core/components/functional/router/router.md": {
2046
+ "title": "Router",
767
2047
  "hashes": {
768
- "mix": {
2048
+ "sonic-redirect": {
769
2049
  "count": 1,
770
- "title": "",
2050
+ "title": "`sonic-redirect`",
771
2051
  "type": "paragraph"
772
2052
  }
773
2053
  }
@@ -775,44 +2055,44 @@
775
2055
  }
776
2056
  },
777
2057
  {
778
- "search": "Queue",
2058
+ "search": "sonic-router-demo (router.demo.ts) — home, user profile (#user/:id/:slug), products RegExp, fallback 404.\n",
779
2059
  "files": {
780
- "core/components/functional/queue/queue.md": {
781
- "title": "Queue",
2060
+ "core/components/functional/router/router.md": {
2061
+ "title": "Router",
782
2062
  "hashes": {
783
- "queue": {
2063
+ "package-demo": {
784
2064
  "count": 1,
785
- "title": "",
786
- "type": "page"
2065
+ "title": "Package demo",
2066
+ "type": "paragraph"
787
2067
  }
788
2068
  }
789
2069
  }
790
2070
  }
791
2071
  },
792
2072
  {
793
- "search": "Try offline: serviceURL=&quot;/docs-mock-api&quot; — see Local API demos. Row rendering: Data flow (.items property binding).\n",
2073
+ "search": "SDUI",
794
2074
  "files": {
795
- "core/components/functional/queue/queue.md": {
796
- "title": "Queue",
2075
+ "core/components/functional/sdui/sdui.md": {
2076
+ "title": "SDUI",
797
2077
  "hashes": {
798
- "queue": {
2078
+ "sdui": {
799
2079
  "count": 1,
800
2080
  "title": "",
801
- "type": "paragraph"
2081
+ "type": "page"
802
2082
  }
803
2083
  }
804
2084
  }
805
2085
  }
806
2086
  },
807
2087
  {
808
- "search": "sonic-queue loads data in batches. Each batch is an internal List with its own dataProvider (…/list-item/0, …/1, …).\n",
2088
+ "search": "SDUI stands for Server Driven User Interfaces.\nBasically, it generates a user interface based on a JSON SDUI Descriptor.\n",
809
2089
  "files": {
810
- "core/components/functional/queue/queue.md": {
811
- "title": "Queue",
2090
+ "core/components/functional/sdui/sdui.md": {
2091
+ "title": "SDUI",
812
2092
  "hashes": {
813
- "queue": {
2093
+ "what-is-sdui": {
814
2094
  "count": 1,
815
- "title": "",
2095
+ "title": "What is SDUI?",
816
2096
  "type": "paragraph"
817
2097
  }
818
2098
  }
@@ -820,14 +2100,14 @@
820
2100
  }
821
2101
  },
822
2102
  {
823
- "search": "When the expression contains $offset and $limit, the queue:\n",
2103
+ "search": "SDUI extends the mixin Subscriber.\nThis means that you must set a dataProvider with an id pointing to the publisher that will hold your SDUI Descriptor.\nThis also means that it has a reactive property named props that you can set with the JSON SDUI Descriptor in order to configure it.\n",
824
2104
  "files": {
825
- "core/components/functional/queue/queue.md": {
826
- "title": "Queue",
2105
+ "core/components/functional/sdui/sdui.md": {
2106
+ "title": "SDUI",
827
2107
  "hashes": {
828
- "lazy-load--offset-and-limit": {
2108
+ "subscriber-extension": {
829
2109
  "count": 1,
830
- "title": "Lazy load — `$offset` and `$limit`",
2110
+ "title": "Subscriber extension:",
831
2111
  "type": "paragraph"
832
2112
  }
833
2113
  }
@@ -835,14 +2115,14 @@
835
2115
  }
836
2116
  },
837
2117
  {
838
- "search": "The doc mock implements this on GET /docs-mock-api/api/users?offset=…&amp;per_page=… (paginateUsers in src/docs/mock-api/router.ts).\n",
2118
+ "search": "SDUI extends the mixin Fetcher as Fetch and List.\n",
839
2119
  "files": {
840
- "core/components/functional/queue/queue.md": {
841
- "title": "Queue",
2120
+ "core/components/functional/sdui/sdui.md": {
2121
+ "title": "SDUI",
842
2122
  "hashes": {
843
- "lazy-load--offset-and-limit": {
2123
+ "fetcher-extension": {
844
2124
  "count": 1,
845
- "title": "Lazy load — `$offset` and `$limit`",
2125
+ "title": "Fetcher extension:",
846
2126
  "type": "paragraph"
847
2127
  }
848
2128
  }
@@ -850,14 +2130,14 @@
850
2130
  }
851
2131
  },
852
2132
  {
853
- "search": "Wrap the queue in a fixed height with overflow-y-auto so lazy load triggers when scrolling inside the box (same layout as the TS starter demo-queue-templates).\n",
2133
+ "search": "In this case, it will parse the JSON coming from the request.\nThe JSON must comply with the SDUI descriptor format.\n",
854
2134
  "files": {
855
- "core/components/functional/queue/queue.md": {
856
- "title": "Queue",
2135
+ "core/components/functional/sdui/sdui.md": {
2136
+ "title": "SDUI",
857
2137
  "hashes": {
858
- "lazy-load--offset-and-limit": {
2138
+ "fetcher-extension": {
859
2139
  "count": 1,
860
- "title": "Lazy load — `$offset` and `$limit`",
2140
+ "title": "Fetcher extension:",
861
2141
  "type": "paragraph"
862
2142
  }
863
2143
  }
@@ -865,14 +2145,14 @@
865
2145
  }
866
2146
  },
867
2147
  {
868
- "search": "Try scrolling after load — batches of 4 users. Search e.g. George, Bluth, or zzz for empty results.\n",
2148
+ "search": "As a fetcher, invalidating the publisher or updating the endpoint will trigger a new fetch and update accordingly.\n",
869
2149
  "files": {
870
- "core/components/functional/queue/queue.md": {
871
- "title": "Queue",
2150
+ "core/components/functional/sdui/sdui.md": {
2151
+ "title": "SDUI",
872
2152
  "hashes": {
873
- "lazy-load--offset-and-limit": {
2153
+ "fetcher-extension": {
874
2154
  "count": 1,
875
- "title": "Lazy load — `$offset` and `$limit`",
2155
+ "title": "Fetcher extension:",
876
2156
  "type": "paragraph"
877
2157
  }
878
2158
  }
@@ -880,14 +2160,14 @@
880
2160
  }
881
2161
  },
882
2162
  {
883
- "search": "Without $offset in the expression, the queue behaves like a single list (one batch), e.g. geo communes below.\n",
2163
+ "search": "It has no shadowdom, and its display style is set to contents, so an empty SDUI has the fewest impact on the layout.\n",
884
2164
  "files": {
885
- "core/components/functional/queue/queue.md": {
886
- "title": "Queue",
2165
+ "core/components/functional/sdui/sdui.md": {
2166
+ "title": "SDUI",
887
2167
  "hashes": {
888
- "expression-example": {
2168
+ "rendering": {
889
2169
  "count": 1,
890
- "title": "Expression example",
2170
+ "title": "Rendering:",
891
2171
  "type": "paragraph"
892
2172
  }
893
2173
  }
@@ -895,14 +2175,14 @@
895
2175
  }
896
2176
  },
897
2177
  {
898
- "search": "One search field (name=&quot;q&quot;) on formDataProvider=&quot;filter&quot;. The queue listens via dataFilterProvider=&quot;filter&quot; and, on change:\n",
2178
+ "search": "An SDUINode represents an HTMLElement.\n",
899
2179
  "files": {
900
- "core/components/functional/queue/queue.md": {
901
- "title": "Queue",
2180
+ "core/components/functional/sdui/sdui.md": {
2181
+ "title": "SDUI",
902
2182
  "hashes": {
903
- "filter--datafilterprovider--q": {
2183
+ "descriptor": {
904
2184
  "count": 1,
905
- "title": "Filter — `dataFilterProvider` + `q`",
2185
+ "title": "Descriptor",
906
2186
  "type": "paragraph"
907
2187
  }
908
2188
  }
@@ -910,14 +2190,14 @@
910
2190
  }
911
2191
  },
912
2192
  {
913
- "search": "Use filteredFields only when the form has extra fields that must not be sent to the API (e.g. filteredFields=&quot;rememberMe internalId&quot;).\n",
2193
+ "search": "TypeScript definition:\n",
914
2194
  "files": {
915
- "core/components/functional/queue/queue.md": {
916
- "title": "Queue",
2195
+ "core/components/functional/sdui/sdui.md": {
2196
+ "title": "SDUI",
917
2197
  "hashes": {
918
- "filter--datafilterprovider--q": {
2198
+ "descriptor": {
919
2199
  "count": 1,
920
- "title": "Filter — `dataFilterProvider` + `q`",
2200
+ "title": "Descriptor",
921
2201
  "type": "paragraph"
922
2202
  }
923
2203
  }
@@ -925,14 +2205,14 @@
925
2205
  }
926
2206
  },
927
2207
  {
928
- "search": "The mock API filters before pagination — same haystack logic as the starter (filterDocsUsers in src/docs/mock-api/fixtures.ts, used by paginateUsers in router.ts / Service Worker):\n",
2208
+ "search": "Summary of properties:\n",
929
2209
  "files": {
930
- "core/components/functional/queue/queue.md": {
931
- "title": "Queue",
2210
+ "core/components/functional/sdui/sdui.md": {
2211
+ "title": "SDUI",
932
2212
  "hashes": {
933
- "filter--datafilterprovider--q": {
2213
+ "descriptor": {
934
2214
  "count": 1,
935
- "title": "Filter — `dataFilterProvider` + `q`",
2215
+ "title": "Descriptor",
936
2216
  "type": "paragraph"
937
2217
  }
938
2218
  }
@@ -940,14 +2220,14 @@
940
2220
  }
941
2221
  },
942
2222
  {
943
- "search": "Geo communes: expression uses $limit only (no $offset) — one request, one batch.\n",
2223
+ "search": "Use it if you prefer to define your node entirely using an HTML string.\n",
944
2224
  "files": {
945
- "core/components/functional/queue/queue.md": {
946
- "title": "Queue",
2225
+ "core/components/functional/sdui/sdui.md": {
2226
+ "title": "SDUI",
947
2227
  "hashes": {
948
- "simple-batch-no-lazy-scroll": {
2228
+ "markup": {
949
2229
  "count": 1,
950
- "title": "Simple batch (no lazy scroll)",
2230
+ "title": "Markup",
951
2231
  "type": "paragraph"
952
2232
  }
953
2233
  }
@@ -955,14 +2235,14 @@
955
2235
  }
956
2236
  },
957
2237
  {
958
- "search": "Optional for hosts without Lit — see HTML integration.\n",
2238
+ "search": "Here we use the field tagName of SDUINode to create an element with tag name sonic-input.\n",
959
2239
  "files": {
960
- "core/components/functional/queue/queue.md": {
961
- "title": "Queue",
2240
+ "core/components/functional/sdui/sdui.md": {
2241
+ "title": "SDUI",
962
2242
  "hashes": {
963
- "html-template-children": {
2243
+ "tag-name": {
964
2244
  "count": 1,
965
- "title": "HTML `<template>` children",
2245
+ "title": "Tag name",
966
2246
  "type": "paragraph"
967
2247
  }
968
2248
  }
@@ -970,29 +2250,29 @@
970
2250
  }
971
2251
  },
972
2252
  {
973
- "search": "Router",
2253
+ "search": "A string key/value pair storing each attribute name/value of the HTML element created.\nAs no tag name is defined, a div element is created.\nHere we define the style attribute to create a tiny red square.\n",
974
2254
  "files": {
975
- "core/components/functional/router/router.md": {
976
- "title": "Router",
2255
+ "core/components/functional/sdui/sdui.md": {
2256
+ "title": "SDUI",
977
2257
  "hashes": {
978
- "router": {
2258
+ "attributes": {
979
2259
  "count": 1,
980
- "title": "",
981
- "type": "page"
2260
+ "title": "Attributes",
2261
+ "type": "paragraph"
982
2262
  }
983
2263
  }
984
2264
  }
985
2265
  }
986
2266
  },
987
2267
  {
988
- "search": "sonic-router watches document.location (pathname + hash) and renders the matching view.\n",
2268
+ "search": "Children of the current node can be added using the field nodes recursively.\n",
989
2269
  "files": {
990
- "core/components/functional/router/router.md": {
991
- "title": "Router",
2270
+ "core/components/functional/sdui/sdui.md": {
2271
+ "title": "SDUI",
992
2272
  "hashes": {
993
- "router": {
2273
+ "nodes": {
994
2274
  "count": 1,
995
- "title": "",
2275
+ "title": "Nodes",
996
2276
  "type": "paragraph"
997
2277
  }
998
2278
  }
@@ -1000,14 +2280,14 @@
1000
2280
  }
1001
2281
  },
1002
2282
  {
1003
- "search": "From a Lit parent, pass a .routes map (property binding — same rule as .items on list): keys are path patterns, values are render functions. Use fallback when nothing matches.\n",
2283
+ "search": "As no tag name is defined, a div element is created, and then we use innerHTML to add content to it.\n",
1004
2284
  "files": {
1005
- "core/components/functional/router/router.md": {
1006
- "title": "Router",
2285
+ "core/components/functional/sdui/sdui.md": {
2286
+ "title": "SDUI",
1007
2287
  "hashes": {
1008
- "router": {
2288
+ "innerhtml": {
1009
2289
  "count": 1,
1010
- "title": "",
2290
+ "title": "InnerHTML",
1011
2291
  "type": "paragraph"
1012
2292
  }
1013
2293
  }
@@ -1015,14 +2295,14 @@
1015
2295
  }
1016
2296
  },
1017
2297
  {
1018
- "search": "Legacy HTML &lt;template data-route=&quot;…&quot;&gt; remains for hosts without Lit — HTML integration.\n",
2298
+ "search": "Use them if you want to wrap the component with some HTML string.\n",
1019
2299
  "files": {
1020
- "core/components/functional/router/router.md": {
1021
- "title": "Router",
2300
+ "core/components/functional/sdui/sdui.md": {
2301
+ "title": "SDUI",
1022
2302
  "hashes": {
1023
- "router": {
2303
+ "prefix-and-suffix": {
1024
2304
  "count": 1,
1025
- "title": "",
2305
+ "title": "Prefix and suffix",
1026
2306
  "type": "paragraph"
1027
2307
  }
1028
2308
  }
@@ -1030,14 +2310,14 @@
1030
2310
  }
1031
2311
  },
1032
2312
  {
1033
- "search": "Route keys are matched against pathname + hash. A simple hash route #home matches when the location contains that segment.\n",
1034
- "files": {
1035
- "core/components/functional/router/router.md": {
1036
- "title": "Router",
2313
+ "search": "The libraryKey of SDUINode is an identifier that points to an SDUINode description in the library to be used as a model for this node.\n",
2314
+ "files": {
2315
+ "core/components/functional/sdui/sdui.md": {
2316
+ "title": "SDUI",
1037
2317
  "hashes": {
1038
- "static-routes-no-parameters": {
2318
+ "library-key-and-contentelementselector": {
1039
2319
  "count": 1,
1040
- "title": "Static routes (no parameters)",
2320
+ "title": "Library key and contentElementSelector",
1041
2321
  "type": "paragraph"
1042
2322
  }
1043
2323
  }
@@ -1045,14 +2325,14 @@
1045
2325
  }
1046
2326
  },
1047
2327
  {
1048
- "search": "On the doc site, the page URL is already a hash (#…/router.md/router). Demos append a second hash for in-page routes (#…/router#home), use href + autoActive=&quot;strict&quot; on sonic-button for the active state, and history.replaceState on click so markdown is not reloaded (setDocsDemoSubHash in src/docs/docs-location.ts).\n",
2328
+ "search": "Note that the SDUI has a default library containing some basic component definitions useful for form declaration (see default-library.json).\n",
1049
2329
  "files": {
1050
- "core/components/functional/router/router.md": {
1051
- "title": "Router",
2330
+ "core/components/functional/sdui/sdui.md": {
2331
+ "title": "SDUI",
1052
2332
  "hashes": {
1053
- "static-routes-no-parameters": {
2333
+ "library-key-and-contentelementselector": {
1054
2334
  "count": 1,
1055
- "title": "Static routes (no parameters)",
2335
+ "title": "Library key and contentElementSelector",
1056
2336
  "type": "paragraph"
1057
2337
  }
1058
2338
  }
@@ -1060,14 +2340,14 @@
1060
2340
  }
1061
2341
  },
1062
2342
  {
1063
- "search": "Two styles (see router.demo.ts and docs-router-params-demo):\n",
2343
+ "search": "This example uses the library key submit which points to a sonic-submit containing a button also coming from the library.\n",
1064
2344
  "files": {
1065
- "core/components/functional/router/router.md": {
1066
- "title": "Router",
2345
+ "core/components/functional/sdui/sdui.md": {
2346
+ "title": "SDUI",
1067
2347
  "hashes": {
1068
- "routes-with-parameters": {
2348
+ "library-key-and-contentelementselector": {
1069
2349
  "count": 1,
1070
- "title": "Routes with parameters",
2350
+ "title": "Library key and contentElementSelector",
1071
2351
  "type": "paragraph"
1072
2352
  }
1073
2353
  }
@@ -1075,14 +2355,14 @@
1075
2355
  }
1076
2356
  },
1077
2357
  {
1078
- "search": "Key uses :param segments. The render function receives an object { param: string }.\n",
2358
+ "search": "The element named button in the library is a sonic-button of type success containing a check icon as a prefix.\n",
1079
2359
  "files": {
1080
- "core/components/functional/router/router.md": {
1081
- "title": "Router",
2360
+ "core/components/functional/sdui/sdui.md": {
2361
+ "title": "SDUI",
1082
2362
  "hashes": {
1083
- "url-pattern-name": {
2363
+ "library-key-and-contentelementselector": {
1084
2364
  "count": 1,
1085
- "title": "Url-pattern (`:name`)",
2365
+ "title": "Library key and contentElementSelector",
1086
2366
  "type": "paragraph"
1087
2367
  }
1088
2368
  }
@@ -1090,14 +2370,14 @@
1090
2370
  }
1091
2371
  },
1092
2372
  {
1093
- "search": "Key is a RegExp string with (\\d+) / (\\w+) groups. The render function receives an array of captured strings (in order).\n",
2373
+ "search": "Since the submit library element contains an attribute contentElementSelector with the value sonic-button, the &quot;injected content&quot; is put inside the button.\n",
1094
2374
  "files": {
1095
- "core/components/functional/router/router.md": {
1096
- "title": "Router",
2375
+ "core/components/functional/sdui/sdui.md": {
2376
+ "title": "SDUI",
1097
2377
  "hashes": {
1098
- "regexp-capturing-groups": {
2378
+ "library-key-and-contentelementselector": {
1099
2379
  "count": 1,
1100
- "title": "RegExp (capturing groups)",
2380
+ "title": "Library key and contentElementSelector",
1101
2381
  "type": "paragraph"
1102
2382
  }
1103
2383
  }
@@ -1105,14 +2385,14 @@
1105
2385
  }
1106
2386
  },
1107
2387
  {
1108
- "search": "With parameters you usually render data directly in Lit (${id}). The old &lt;template data-route&gt; + dataProviderExpression pattern scoped a dataProvider for data-bind / fetch children — prefer @subscribe or explicit props when using .routes.\n",
2388
+ "search": "We used innerHTML for the sake of simplicity, but you can use nodes to add any complex content.\n",
1109
2389
  "files": {
1110
- "core/components/functional/router/router.md": {
1111
- "title": "Router",
2390
+ "core/components/functional/sdui/sdui.md": {
2391
+ "title": "SDUI",
1112
2392
  "hashes": {
1113
- "regexp-capturing-groups": {
2393
+ "library-key-and-contentelementselector": {
1114
2394
  "count": 1,
1115
- "title": "RegExp (capturing groups)",
2395
+ "title": "Library key and contentElementSelector",
1116
2396
  "type": "paragraph"
1117
2397
  }
1118
2398
  }
@@ -1120,14 +2400,14 @@
1120
2400
  }
1121
2401
  },
1122
2402
  {
1123
- "search": "Always use .routes=${…} in Lit templates: route handlers are functions and must be set as properties, not HTML attributes.\n",
2403
+ "search": "This special field lets you inject the content at any place in the HTML flow already set inside the parent SDUI component by using a CSS selector.\n",
1124
2404
  "files": {
1125
- "core/components/functional/router/router.md": {
1126
- "title": "Router",
2405
+ "core/components/functional/sdui/sdui.md": {
2406
+ "title": "SDUI",
1127
2407
  "hashes": {
1128
- "routes-binding": {
2408
+ "parentelementselector": {
1129
2409
  "count": 1,
1130
- "title": "`.routes` binding",
2410
+ "title": "parentElementSelector",
1131
2411
  "type": "paragraph"
1132
2412
  }
1133
2413
  }
@@ -1135,14 +2415,14 @@
1135
2415
  }
1136
2416
  },
1137
2417
  {
1138
- "search": "Separate component: redirect when data appears on a publisher (login steps, wizards). Not part of the .routes map.\n",
2418
+ "search": "⚠️ Note that it doesn&#39;t work with top-level nodes.\n",
1139
2419
  "files": {
1140
- "core/components/functional/router/router.md": {
1141
- "title": "Router",
2420
+ "core/components/functional/sdui/sdui.md": {
2421
+ "title": "SDUI",
1142
2422
  "hashes": {
1143
- "sonic-redirect": {
2423
+ "parentelementselector": {
1144
2424
  "count": 1,
1145
- "title": "`sonic-redirect`",
2425
+ "title": "parentElementSelector",
1146
2426
  "type": "paragraph"
1147
2427
  }
1148
2428
  }
@@ -1150,14 +2430,14 @@
1150
2430
  }
1151
2431
  },
1152
2432
  {
1153
- "search": "Example: combine with .routes and submit for login / logout / profile steps.\n",
2433
+ "search": "The transformers let you transform the structure of the SDUI Descriptor into a new one before parsing and rendering it.\n",
1154
2434
  "files": {
1155
- "core/components/functional/router/router.md": {
1156
- "title": "Router",
2435
+ "core/components/functional/sdui/sdui.md": {
2436
+ "title": "SDUI",
1157
2437
  "hashes": {
1158
- "sonic-redirect": {
2438
+ "transformers": {
1159
2439
  "count": 1,
1160
- "title": "`sonic-redirect`",
2440
+ "title": "Transformers:",
1161
2441
  "type": "paragraph"
1162
2442
  }
1163
2443
  }
@@ -1165,14 +2445,14 @@
1165
2445
  }
1166
2446
  },
1167
2447
  {
1168
- "search": "sonic-router-demo (router.demo.ts) — home, user profile (#user/:id/:slug), products RegExp, fallback 404.\n",
2448
+ "search": "To enable it, you must fill the transformation attribute of the component with a URL pointing to a Transform descriptor.\n",
1169
2449
  "files": {
1170
- "core/components/functional/router/router.md": {
1171
- "title": "Router",
2450
+ "core/components/functional/sdui/sdui.md": {
2451
+ "title": "SDUI",
1172
2452
  "hashes": {
1173
- "package-demo": {
2453
+ "transformers": {
1174
2454
  "count": 1,
1175
- "title": "Package demo",
2455
+ "title": "Transformers:",
1176
2456
  "type": "paragraph"
1177
2457
  }
1178
2458
  }
@@ -1180,29 +2460,29 @@
1180
2460
  }
1181
2461
  },
1182
2462
  {
1183
- "search": "SDUI",
2463
+ "search": "Each key of the library will be merged with the current library in the SDUI Descriptor, by replacing or creating items library key by key.\n",
1184
2464
  "files": {
1185
2465
  "core/components/functional/sdui/sdui.md": {
1186
2466
  "title": "SDUI",
1187
2467
  "hashes": {
1188
- "sdui": {
2468
+ "the-library": {
1189
2469
  "count": 1,
1190
- "title": "",
1191
- "type": "page"
2470
+ "title": "The library:",
2471
+ "type": "paragraph"
1192
2472
  }
1193
2473
  }
1194
2474
  }
1195
2475
  }
1196
2476
  },
1197
2477
  {
1198
- "search": "SDUI stands for Server Driven User Interfaces.\nBasically, it generates a user interface based on a JSON SDUI Descriptor.\n",
2478
+ "search": "Each transform represents an action that will be done on the SDUI descriptor before the creation of the entire UI.\n",
1199
2479
  "files": {
1200
2480
  "core/components/functional/sdui/sdui.md": {
1201
2481
  "title": "SDUI",
1202
2482
  "hashes": {
1203
- "what-is-sdui": {
2483
+ "the-transform-actions": {
1204
2484
  "count": 1,
1205
- "title": "What is SDUI?",
2485
+ "title": "The transform actions:",
1206
2486
  "type": "paragraph"
1207
2487
  }
1208
2488
  }
@@ -1210,14 +2490,14 @@
1210
2490
  }
1211
2491
  },
1212
2492
  {
1213
- "search": "SDUI extends the mixin Subscriber.\nThis means that you must set a dataProvider with an id pointing to the publisher that will hold your SDUI Descriptor.\nThis also means that it has a reactive property named props that you can set with the JSON SDUI Descriptor in order to configure it.\n",
2493
+ "search": "The action that will be done is a verb:\n",
1214
2494
  "files": {
1215
2495
  "core/components/functional/sdui/sdui.md": {
1216
2496
  "title": "SDUI",
1217
2497
  "hashes": {
1218
- "subscriber-extension": {
2498
+ "the-transform-actions": {
1219
2499
  "count": 1,
1220
- "title": "Subscriber extension:",
2500
+ "title": "The transform actions:",
1221
2501
  "type": "paragraph"
1222
2502
  }
1223
2503
  }
@@ -1225,14 +2505,14 @@
1225
2505
  }
1226
2506
  },
1227
2507
  {
1228
- "search": "SDUI extends the mixin Fetcher as Fetch and List.\n",
2508
+ "search": "This is an HTML attribute to set on the component if needed. In this case, the component will not treat its props value directly as an SDUI descriptor. Internally, it will basically extract the SDUIDescriptor by doing something like this: const sduiDescriptor = this.props[this.sduikey].\n",
1229
2509
  "files": {
1230
2510
  "core/components/functional/sdui/sdui.md": {
1231
2511
  "title": "SDUI",
1232
2512
  "hashes": {
1233
- "fetcher-extension": {
2513
+ "sduikey": {
1234
2514
  "count": 1,
1235
- "title": "Fetcher extension:",
2515
+ "title": "sduiKey",
1236
2516
  "type": "paragraph"
1237
2517
  }
1238
2518
  }
@@ -1240,14 +2520,14 @@
1240
2520
  }
1241
2521
  },
1242
2522
  {
1243
- "search": "In this case, it will parse the JSON coming from the request.\nThe JSON must comply with the SDUI descriptor format.\n",
2523
+ "search": "This is an HTML attribute to set on the component if needed. In this case, the component will automatically create a sonic-toast-message-subscriber component. The data found in props[messageKey] will be treated as the data expected by the sonic-toast-message-subscriber. So, by respecting the format of data supported by this component, you will be able to show multiple toasts in the result of a request.\n",
1244
2524
  "files": {
1245
2525
  "core/components/functional/sdui/sdui.md": {
1246
2526
  "title": "SDUI",
1247
2527
  "hashes": {
1248
- "fetcher-extension": {
2528
+ "messagekey": {
1249
2529
  "count": 1,
1250
- "title": "Fetcher extension:",
2530
+ "title": "messageKey",
1251
2531
  "type": "paragraph"
1252
2532
  }
1253
2533
  }
@@ -1255,14 +2535,14 @@
1255
2535
  }
1256
2536
  },
1257
2537
  {
1258
- "search": "As a fetcher, invalidating the publisher or updating the endpoint will trigger a new fetch and update accordingly.\n",
2538
+ "search": "Example of JSON with messageKey=messages:\n\n",
1259
2539
  "files": {
1260
2540
  "core/components/functional/sdui/sdui.md": {
1261
2541
  "title": "SDUI",
1262
2542
  "hashes": {
1263
- "fetcher-extension": {
2543
+ "messagekey": {
1264
2544
  "count": 1,
1265
- "title": "Fetcher extension:",
2545
+ "title": "messageKey",
1266
2546
  "type": "paragraph"
1267
2547
  }
1268
2548
  }
@@ -1270,14 +2550,14 @@
1270
2550
  }
1271
2551
  },
1272
2552
  {
1273
- "search": "It has no shadowdom, and its display style is set to contents, so an empty SDUI has the fewest impact on the layout.\n",
2553
+ "search": "This is an HTML attribute to set on the component if needed. You can set a URL pointing to a JSON describing a library with the same structure as the library in the SDUIDescriptor. The component will simply override its library with the given one.\n",
1274
2554
  "files": {
1275
2555
  "core/components/functional/sdui/sdui.md": {
1276
2556
  "title": "SDUI",
1277
2557
  "hashes": {
1278
- "rendering": {
2558
+ "library": {
1279
2559
  "count": 1,
1280
- "title": "Rendering:",
2560
+ "title": "library",
1281
2561
  "type": "paragraph"
1282
2562
  }
1283
2563
  }
@@ -1285,14 +2565,14 @@
1285
2565
  }
1286
2566
  },
1287
2567
  {
1288
- "search": "An SDUINode represents an HTMLElement.\n",
2568
+ "search": "Here is a little playground to let you test some simple tricks.\n",
1289
2569
  "files": {
1290
2570
  "core/components/functional/sdui/sdui.md": {
1291
2571
  "title": "SDUI",
1292
2572
  "hashes": {
1293
- "descriptor": {
2573
+ "playground": {
1294
2574
  "count": 1,
1295
- "title": "Descriptor",
2575
+ "title": "Playground",
1296
2576
  "type": "paragraph"
1297
2577
  }
1298
2578
  }
@@ -1300,29 +2580,29 @@
1300
2580
  }
1301
2581
  },
1302
2582
  {
1303
- "search": "TypeScript definition:\n",
2583
+ "search": "Shader",
1304
2584
  "files": {
1305
- "core/components/functional/sdui/sdui.md": {
1306
- "title": "SDUI",
2585
+ "core/components/functional/shader/shader.md": {
2586
+ "title": "Shader",
1307
2587
  "hashes": {
1308
- "descriptor": {
2588
+ "shader": {
1309
2589
  "count": 1,
1310
- "title": "Descriptor",
1311
- "type": "paragraph"
2590
+ "title": "",
2591
+ "type": "page"
1312
2592
  }
1313
2593
  }
1314
2594
  }
1315
2595
  }
1316
2596
  },
1317
2597
  {
1318
- "search": "Summary of properties:\n",
2598
+ "search": "sonic-shader — renderer WebGL2 compatible ShaderToy (pass Image + buffers A–D + Common).\n",
1319
2599
  "files": {
1320
- "core/components/functional/sdui/sdui.md": {
1321
- "title": "SDUI",
2600
+ "core/components/functional/shader/shader.md": {
2601
+ "title": "Shader",
1322
2602
  "hashes": {
1323
- "descriptor": {
2603
+ "shader": {
1324
2604
  "count": 1,
1325
- "title": "Descriptor",
2605
+ "title": "",
1326
2606
  "type": "paragraph"
1327
2607
  }
1328
2608
  }
@@ -1330,14 +2610,14 @@
1330
2610
  }
1331
2611
  },
1332
2612
  {
1333
- "search": "Use it if you prefer to define your node entirely using an HTML string.\n",
2613
+ "search": "For WGSL / WebGPU (1 pass, same DP glue): sonic-webgpu.\n",
1334
2614
  "files": {
1335
- "core/components/functional/sdui/sdui.md": {
1336
- "title": "SDUI",
2615
+ "core/components/functional/shader/shader.md": {
2616
+ "title": "Shader",
1337
2617
  "hashes": {
1338
- "markup": {
2618
+ "shader": {
1339
2619
  "count": 1,
1340
- "title": "Markup",
2620
+ "title": "",
1341
2621
  "type": "paragraph"
1342
2622
  }
1343
2623
  }
@@ -1345,14 +2625,14 @@
1345
2625
  }
1346
2626
  },
1347
2627
  {
1348
- "search": "Here we use the field tagName of SDUINode to create an element with tag name sonic-input.\n",
2628
+ "search": "CDN (after the core): concorde-shader.bundle.js — see CDN addons.\n",
1349
2629
  "files": {
1350
- "core/components/functional/sdui/sdui.md": {
1351
- "title": "SDUI",
2630
+ "core/components/functional/shader/shader.md": {
2631
+ "title": "Shader",
1352
2632
  "hashes": {
1353
- "tag-name": {
2633
+ "shader": {
1354
2634
  "count": 1,
1355
- "title": "Tag name",
2635
+ "title": "",
1356
2636
  "type": "paragraph"
1357
2637
  }
1358
2638
  }
@@ -1360,14 +2640,14 @@
1360
2640
  }
1361
2641
  },
1362
2642
  {
1363
- "search": "A string key/value pair storing each attribute name/value of the HTML element created.\nAs no tag name is defined, a div element is created.\nHere we define the style attribute to create a tiny red square.\n",
2643
+ "search": "Uniforms supportés : iResolution, iTime, iTimeDelta, iFrame, iFrameRate, iMouse, iDate, iChannel0–3, iChannelResolution, iChannelTime, iSampleRate, uParam0–3.\n",
1364
2644
  "files": {
1365
- "core/components/functional/sdui/sdui.md": {
1366
- "title": "SDUI",
2645
+ "core/components/functional/shader/shader.md": {
2646
+ "title": "Shader",
1367
2647
  "hashes": {
1368
- "attributes": {
2648
+ "shader": {
1369
2649
  "count": 1,
1370
- "title": "Attributes",
2650
+ "title": "",
1371
2651
  "type": "paragraph"
1372
2652
  }
1373
2653
  }
@@ -1375,14 +2655,14 @@
1375
2655
  }
1376
2656
  },
1377
2657
  {
1378
- "search": "Children of the current node can be added using the field nodes recursively.\n",
2658
+ "search": "Textures channel0–3 : images ou vidéos (.webm / .mp4 / …).\n",
1379
2659
  "files": {
1380
- "core/components/functional/sdui/sdui.md": {
1381
- "title": "SDUI",
2660
+ "core/components/functional/shader/shader.md": {
2661
+ "title": "Shader",
1382
2662
  "hashes": {
1383
- "nodes": {
2663
+ "shader": {
1384
2664
  "count": 1,
1385
- "title": "Nodes",
2665
+ "title": "",
1386
2666
  "type": "paragraph"
1387
2667
  }
1388
2668
  }
@@ -1390,14 +2670,14 @@
1390
2670
  }
1391
2671
  },
1392
2672
  {
1393
- "search": "As no tag name is defined, a div element is created, and then we use innerHTML to add content to it.\n",
2673
+ "search": "Buffer A simule une height-map d’ondes (ripple) ; Image réfracte la photo via le gradient — sans teinte. Glisser la souris pour faire des vagues.\n",
1394
2674
  "files": {
1395
- "core/components/functional/sdui/sdui.md": {
1396
- "title": "SDUI",
2675
+ "core/components/functional/shader/shader.md": {
2676
+ "title": "Shader",
1397
2677
  "hashes": {
1398
- "innerhtml": {
2678
+ "multipass-sur-une-photo": {
1399
2679
  "count": 1,
1400
- "title": "InnerHTML",
2680
+ "title": "Multipass sur une photo",
1401
2681
  "type": "paragraph"
1402
2682
  }
1403
2683
  }
@@ -1405,14 +2685,14 @@
1405
2685
  }
1406
2686
  },
1407
2687
  {
1408
- "search": "Use them if you want to wrap the component with some HTML string.\n",
2688
+ "search": "Photo + depth parallax (HF): Visual stack.\n",
1409
2689
  "files": {
1410
- "core/components/functional/sdui/sdui.md": {
1411
- "title": "SDUI",
2690
+ "core/components/functional/shader/shader.md": {
2691
+ "title": "Shader",
1412
2692
  "hashes": {
1413
- "prefix-and-suffix": {
2693
+ "multipass-sur-une-photo": {
1414
2694
  "count": 1,
1415
- "title": "Prefix and suffix",
2695
+ "title": "Multipass sur une photo",
1416
2696
  "type": "paragraph"
1417
2697
  }
1418
2698
  }
@@ -1420,14 +2700,14 @@
1420
2700
  }
1421
2701
  },
1422
2702
  {
1423
- "search": "The libraryKey of SDUINode is an identifier that points to an SDUINode description in the library to be used as a model for this node.\n",
2703
+ "search": "Règle : brancher des passes dans un sonic-shader (buffers A–D → Image), pas deux composants via dataProvider.\n",
1424
2704
  "files": {
1425
- "core/components/functional/sdui/sdui.md": {
1426
- "title": "SDUI",
2705
+ "core/components/functional/shader/shader.md": {
2706
+ "title": "Shader",
1427
2707
  "hashes": {
1428
- "library-key-and-contentelementselector": {
2708
+ "chaînage-deffets-officiel": {
1429
2709
  "count": 1,
1430
- "title": "Library key and contentElementSelector",
2710
+ "title": "Chaînage d’effets (officiel)",
1431
2711
  "type": "paragraph"
1432
2712
  }
1433
2713
  }
@@ -1435,14 +2715,14 @@
1435
2715
  }
1436
2716
  },
1437
2717
  {
1438
- "search": "Note that the SDUI has a default library containing some basic component definitions useful for form declaration (see default-library.json).\n",
2718
+ "search": "Les passes intermédiaires sont déjà offscreen (FBO). Pas besoin d’un second sonic-shader invisible.\n",
1439
2719
  "files": {
1440
- "core/components/functional/sdui/sdui.md": {
1441
- "title": "SDUI",
2720
+ "core/components/functional/shader/shader.md": {
2721
+ "title": "Shader",
1442
2722
  "hashes": {
1443
- "library-key-and-contentelementselector": {
2723
+ "chaînage-deffets-officiel": {
1444
2724
  "count": 1,
1445
- "title": "Library key and contentElementSelector",
2725
+ "title": "Chaînage d’effets (officiel)",
1446
2726
  "type": "paragraph"
1447
2727
  }
1448
2728
  }
@@ -1450,14 +2730,14 @@
1450
2730
  }
1451
2731
  },
1452
2732
  {
1453
- "search": "This example uses the library key submit which points to a sonic-submit containing a button also coming from the library.\n",
2733
+ "search": "Deux instances séparées ne partagent pas leurs textures WebGL (contextes distincts). Un bus texture via DP n’existe pas (et un toBlob/dataURL ne serait pas temps réel).\n",
1454
2734
  "files": {
1455
- "core/components/functional/sdui/sdui.md": {
1456
- "title": "SDUI",
2735
+ "core/components/functional/shader/shader.md": {
2736
+ "title": "Shader",
1457
2737
  "hashes": {
1458
- "library-key-and-contentelementselector": {
2738
+ "chaînage-deffets-officiel": {
1459
2739
  "count": 1,
1460
- "title": "Library key and contentElementSelector",
2740
+ "title": "Chaînage d’effets (officiel)",
1461
2741
  "type": "paragraph"
1462
2742
  }
1463
2743
  }
@@ -1465,14 +2745,14 @@
1465
2745
  }
1466
2746
  },
1467
2747
  {
1468
- "search": "The element named button in the library is a sonic-button of type success containing a check icon as a prefix.\n",
2748
+ "search": "Démo pédagogique : Buffer&nbsp;A = Sobel → Image = overlay + param0.\n",
1469
2749
  "files": {
1470
- "core/components/functional/sdui/sdui.md": {
1471
- "title": "SDUI",
2750
+ "core/components/functional/shader/shader.md": {
2751
+ "title": "Shader",
1472
2752
  "hashes": {
1473
- "library-key-and-contentelementselector": {
2753
+ "chaînage-deffets-officiel": {
1474
2754
  "count": 1,
1475
- "title": "Library key and contentElementSelector",
2755
+ "title": "Chaînage d’effets (officiel)",
1476
2756
  "type": "paragraph"
1477
2757
  }
1478
2758
  }
@@ -1480,14 +2760,14 @@
1480
2760
  }
1481
2761
  },
1482
2762
  {
1483
- "search": "Since the submit library element contains an attribute contentElementSelector with the value sonic-button, the &quot;injected content&quot; is put inside the button.\n",
2763
+ "search": "Exemple de câblage :\n",
1484
2764
  "files": {
1485
- "core/components/functional/sdui/sdui.md": {
1486
- "title": "SDUI",
2765
+ "core/components/functional/shader/shader.md": {
2766
+ "title": "Shader",
1487
2767
  "hashes": {
1488
- "library-key-and-contentelementselector": {
2768
+ "chaînage-deffets-officiel": {
1489
2769
  "count": 1,
1490
- "title": "Library key and contentElementSelector",
2770
+ "title": "Chaînage d’effets (officiel)",
1491
2771
  "type": "paragraph"
1492
2772
  }
1493
2773
  }
@@ -1495,14 +2775,14 @@
1495
2775
  }
1496
2776
  },
1497
2777
  {
1498
- "search": "We used innerHTML for the sake of simplicity, but you can use nodes to add any complex content.\n",
2778
+ "search": "Au survol, le composant anime un uParamN de 0 → 1 (et l’inverse au leave), avec easing hover-speed. Le shader lit ce param pour mixer l’effet on/off (zoom, aberration, ripple…). play-on-hover n’anime que pendant le hover / la transition.\n",
1499
2779
  "files": {
1500
- "core/components/functional/sdui/sdui.md": {
1501
- "title": "SDUI",
2780
+ "core/components/functional/shader/shader.md": {
2781
+ "title": "Shader",
1502
2782
  "hashes": {
1503
- "library-key-and-contentelementselector": {
2783
+ "rollover--roll-out-hover-param": {
1504
2784
  "count": 1,
1505
- "title": "Library key and contentElementSelector",
2785
+ "title": "Rollover / roll-out (`hover-param`)",
1506
2786
  "type": "paragraph"
1507
2787
  }
1508
2788
  }
@@ -1510,14 +2790,14 @@
1510
2790
  }
1511
2791
  },
1512
2792
  {
1513
- "search": "This special field lets you inject the content at any place in the HTML flow already set inside the parent SDUI component by using a CSS selector.\n",
2793
+ "search": "Type : ShaderHoverParam = 0 | 1 | 2 | 3 | &quot;param0&quot;…&quot;param3&quot; | &quot;&quot;.\n",
1514
2794
  "files": {
1515
- "core/components/functional/sdui/sdui.md": {
1516
- "title": "SDUI",
2795
+ "core/components/functional/shader/shader.md": {
2796
+ "title": "Shader",
1517
2797
  "hashes": {
1518
- "parentelementselector": {
2798
+ "rollover--roll-out-hover-param": {
1519
2799
  "count": 1,
1520
- "title": "parentElementSelector",
2800
+ "title": "Rollover / roll-out (`hover-param`)",
1521
2801
  "type": "paragraph"
1522
2802
  }
1523
2803
  }
@@ -1525,14 +2805,14 @@
1525
2805
  }
1526
2806
  },
1527
2807
  {
1528
- "search": "⚠️ Note that it doesn&#39;t work with top-level nodes.\n",
2808
+ "search": "dataProvider est bidirectionnel : param0… en entrée ; en sortie mouseX / mouseY / hovering / frame (+ param0… si out-data-provider est séparé, ou le slot hover-param seul si le DP est partagé avec le formulaire). Avec sample, lit la couleur sous le curseur → sampleR/G/B/A + sampleLuma (SonicShaderOutput). Event out (payload complet, y compris les params). Optionnel : out-data-provider pour séparer l’écriture.\n",
1529
2809
  "files": {
1530
- "core/components/functional/sdui/sdui.md": {
1531
- "title": "SDUI",
2810
+ "core/components/functional/shader/shader.md": {
2811
+ "title": "Shader",
1532
2812
  "hashes": {
1533
- "parentelementselector": {
2813
+ "sortie--sampling-sample--dataprovider": {
1534
2814
  "count": 1,
1535
- "title": "parentElementSelector",
2815
+ "title": "Sortie / sampling (`sample` + dataProvider)",
1536
2816
  "type": "paragraph"
1537
2817
  }
1538
2818
  }
@@ -1540,14 +2820,14 @@
1540
2820
  }
1541
2821
  },
1542
2822
  {
1543
- "search": "The transformers let you transform the structure of the SDUI Descriptor into a new one before parsing and rendering it.\n",
2823
+ "search": "Publication paresseuse : rien n’est écrit (ni readPixels) tant qu’aucun champ méta/sample n’a de lecteur DP (@handle(frame) / @subscribe / sonic-value…) et qu’aucun listener out n’est branché. Un sonic-input name=&quot;param0&quot; ne compte pas comme consommateur out (évite le write-back qui remettait les champs à 0). Dès qu’un vrai consommateur apparaît, les maj partent au rythme de out-interval. Avec sample, le readPixels suit le même gate.\n",
1544
2824
  "files": {
1545
- "core/components/functional/sdui/sdui.md": {
1546
- "title": "SDUI",
2825
+ "core/components/functional/shader/shader.md": {
2826
+ "title": "Shader",
1547
2827
  "hashes": {
1548
- "transformers": {
2828
+ "sortie--sampling-sample--dataprovider": {
1549
2829
  "count": 1,
1550
- "title": "Transformers:",
2830
+ "title": "Sortie / sampling (`sample` + dataProvider)",
1551
2831
  "type": "paragraph"
1552
2832
  }
1553
2833
  }
@@ -1555,14 +2835,14 @@
1555
2835
  }
1556
2836
  },
1557
2837
  {
1558
- "search": "To enable it, you must fill the transformation attribute of the component with a URL pointing to a Transform descriptor.\n",
2838
+ "search": "Pattern typique — écoute frame + lecture massive :\n",
1559
2839
  "files": {
1560
- "core/components/functional/sdui/sdui.md": {
1561
- "title": "SDUI",
2840
+ "core/components/functional/shader/shader.md": {
2841
+ "title": "Shader",
1562
2842
  "hashes": {
1563
- "transformers": {
2843
+ "sortie--sampling-sample--dataprovider": {
1564
2844
  "count": 1,
1565
- "title": "Transformers:",
2845
+ "title": "Sortie / sampling (`sample` + dataProvider)",
1566
2846
  "type": "paragraph"
1567
2847
  }
1568
2848
  }
@@ -1570,14 +2850,14 @@
1570
2850
  }
1571
2851
  },
1572
2852
  {
1573
- "search": "Each key of the library will be merged with the current library in the SDUI Descriptor, by replacing or creating items library key by key.\n",
2853
+ "search": "A GPU pass writes a score mask (R channel) into a buffer; extract scans it, crops patches around peaks, and publishes scalars + blobUrl for downstream use.\n",
1574
2854
  "files": {
1575
- "core/components/functional/sdui/sdui.md": {
1576
- "title": "SDUI",
2855
+ "core/components/functional/shader/shader.md": {
2856
+ "title": "Shader",
1577
2857
  "hashes": {
1578
- "the-library": {
2858
+ "extraction-patches--singularities-extract": {
1579
2859
  "count": 1,
1580
- "title": "The library:",
2860
+ "title": "Extraction patches / singularities (`extract`)",
1581
2861
  "type": "paragraph"
1582
2862
  }
1583
2863
  }
@@ -1585,14 +2865,14 @@
1585
2865
  }
1586
2866
  },
1587
2867
  {
1588
- "search": "Each transform represents an action that will be done on the SDUI descriptor before the creation of the entire UI.\n",
2868
+ "search": "detect scores: mask R channel (prefer a soft map, not hard-clipped), then renormalized to the best peak in the batch (1 = strongest). findPeaks sorts and keeps the top ones (NMS ≈ min(patch/3, 16) px).\n",
1589
2869
  "files": {
1590
- "core/components/functional/sdui/sdui.md": {
1591
- "title": "SDUI",
2870
+ "core/components/functional/shader/shader.md": {
2871
+ "title": "Shader",
1592
2872
  "hashes": {
1593
- "the-transform-actions": {
2873
+ "extraction-patches--singularities-extract": {
1594
2874
  "count": 1,
1595
- "title": "The transform actions:",
2875
+ "title": "Extraction patches / singularities (`extract`)",
1596
2876
  "type": "paragraph"
1597
2877
  }
1598
2878
  }
@@ -1600,14 +2880,14 @@
1600
2880
  }
1601
2881
  },
1602
2882
  {
1603
- "search": "The action that will be done is a verb:\n",
2883
+ "search": "Lazy: no readPixels without a DP reader / extract event listener.\n",
1604
2884
  "files": {
1605
- "core/components/functional/sdui/sdui.md": {
1606
- "title": "SDUI",
2885
+ "core/components/functional/shader/shader.md": {
2886
+ "title": "Shader",
1607
2887
  "hashes": {
1608
- "the-transform-actions": {
2888
+ "extraction-patches--singularities-extract": {
1609
2889
  "count": 1,
1610
- "title": "The transform actions:",
2890
+ "title": "Extraction patches / singularities (`extract`)",
1611
2891
  "type": "paragraph"
1612
2892
  }
1613
2893
  }
@@ -1615,14 +2895,14 @@
1615
2895
  }
1616
2896
  },
1617
2897
  {
1618
- "search": "This is an HTML attribute to set on the component if needed. In this case, the component will not treat its props value directly as an SDUI descriptor. Internally, it will basically extract the SDUIDescriptor by doing something like this: const sduiDescriptor = this.props[this.sduikey].\n",
2898
+ "search": "Live Harris → patches → WebGPU: Visual stack.\n",
1619
2899
  "files": {
1620
- "core/components/functional/sdui/sdui.md": {
1621
- "title": "SDUI",
2900
+ "core/components/functional/shader/shader.md": {
2901
+ "title": "Shader",
1622
2902
  "hashes": {
1623
- "sduikey": {
2903
+ "extraction-patches--singularities-extract": {
1624
2904
  "count": 1,
1625
- "title": "sduiKey",
2905
+ "title": "Extraction patches / singularities (`extract`)",
1626
2906
  "type": "paragraph"
1627
2907
  }
1628
2908
  }
@@ -1630,14 +2910,14 @@
1630
2910
  }
1631
2911
  },
1632
2912
  {
1633
- "search": "This is an HTML attribute to set on the component if needed. In this case, the component will automatically create a sonic-toast-message-subscriber component. The data found in props[messageKey] will be treated as the data expected by the sonic-toast-message-subscriber. So, by respecting the format of data supported by this component, you will be able to show multiple toasts in the result of a request.\n",
2913
+ "search": "Assigne le GLSL via .image (et .bufferA, …) depuis JS / Lit.\n",
1634
2914
  "files": {
1635
- "core/components/functional/sdui/sdui.md": {
1636
- "title": "SDUI",
2915
+ "core/components/functional/shader/shader.md": {
2916
+ "title": "Shader",
1637
2917
  "hashes": {
1638
- "messagekey": {
2918
+ "markup": {
1639
2919
  "count": 1,
1640
- "title": "messageKey",
2920
+ "title": "Markup",
1641
2921
  "type": "paragraph"
1642
2922
  }
1643
2923
  }
@@ -1645,14 +2925,14 @@
1645
2925
  }
1646
2926
  },
1647
2927
  {
1648
- "search": "Example of JSON with messageKey=messages:\n\n",
2928
+ "search": "error — compile / link / WebGL (detail.message, detail.pass, detail.infoLog).\n",
1649
2929
  "files": {
1650
- "core/components/functional/sdui/sdui.md": {
1651
- "title": "SDUI",
2930
+ "core/components/functional/shader/shader.md": {
2931
+ "title": "Shader",
1652
2932
  "hashes": {
1653
- "messagekey": {
2933
+ "events": {
1654
2934
  "count": 1,
1655
- "title": "messageKey",
2935
+ "title": "Events",
1656
2936
  "type": "paragraph"
1657
2937
  }
1658
2938
  }
@@ -1660,14 +2940,14 @@
1660
2940
  }
1661
2941
  },
1662
2942
  {
1663
- "search": "This is an HTML attribute to set on the component if needed. You can set a URL pointing to a JSON describing a library with the same structure as the library in the SDUIDescriptor. The component will simply override its library with the given one.\n",
2943
+ "search": "out — snapshot SonicShaderOutput (throttlé par out-interval, seulement s’il y a un listener) : souris, params, samples.\n",
1664
2944
  "files": {
1665
- "core/components/functional/sdui/sdui.md": {
1666
- "title": "SDUI",
2945
+ "core/components/functional/shader/shader.md": {
2946
+ "title": "Shader",
1667
2947
  "hashes": {
1668
- "library": {
2948
+ "events": {
1669
2949
  "count": 1,
1670
- "title": "library",
2950
+ "title": "Events",
1671
2951
  "type": "paragraph"
1672
2952
  }
1673
2953
  }
@@ -1675,14 +2955,14 @@
1675
2955
  }
1676
2956
  },
1677
2957
  {
1678
- "search": "Here is a little playground to let you test some simple tricks.\n",
2958
+ "search": "extract — snapshot ShaderExtractOutput (throttlé, paresseux) : patches manuels + détectés.\n",
1679
2959
  "files": {
1680
- "core/components/functional/sdui/sdui.md": {
1681
- "title": "SDUI",
2960
+ "core/components/functional/shader/shader.md": {
2961
+ "title": "Shader",
1682
2962
  "hashes": {
1683
- "playground": {
2963
+ "events": {
1684
2964
  "count": 1,
1685
- "title": "Playground",
2965
+ "title": "Events",
1686
2966
  "type": "paragraph"
1687
2967
  }
1688
2968
  }
@@ -2209,6 +3489,111 @@
2209
3489
  }
2210
3490
  }
2211
3491
  },
3492
+ {
3493
+ "search": "WebGPU",
3494
+ "files": {
3495
+ "core/components/functional/webgpu/webgpu.md": {
3496
+ "title": "WebGPU",
3497
+ "hashes": {
3498
+ "webgpu": {
3499
+ "count": 1,
3500
+ "title": "",
3501
+ "type": "page"
3502
+ }
3503
+ }
3504
+ }
3505
+ }
3506
+ },
3507
+ {
3508
+ "search": "sonic-webgpu — GPU compute / effects (companion to sonic-shader, not a clone).\n",
3509
+ "files": {
3510
+ "core/components/functional/webgpu/webgpu.md": {
3511
+ "title": "WebGPU",
3512
+ "hashes": {
3513
+ "webgpu": {
3514
+ "count": 1,
3515
+ "title": "",
3516
+ "type": "paragraph"
3517
+ }
3518
+ }
3519
+ }
3520
+ }
3521
+ },
3522
+ {
3523
+ "search": "Opt-in import:\n",
3524
+ "files": {
3525
+ "core/components/functional/webgpu/webgpu.md": {
3526
+ "title": "WebGPU",
3527
+ "hashes": {
3528
+ "webgpu": {
3529
+ "count": 1,
3530
+ "title": "",
3531
+ "type": "paragraph"
3532
+ }
3533
+ }
3534
+ }
3535
+ }
3536
+ },
3537
+ {
3538
+ "search": "Harris → patches → WebGPU mosaic: Visual stack.\n",
3539
+ "files": {
3540
+ "core/components/functional/webgpu/webgpu.md": {
3541
+ "title": "WebGPU",
3542
+ "hashes": {
3543
+ "webgpu": {
3544
+ "count": 1,
3545
+ "title": "",
3546
+ "type": "paragraph"
3547
+ }
3548
+ }
3549
+ }
3550
+ }
3551
+ },
3552
+ {
3553
+ "search": "Simulation: param0 = speed, param1 = mouse attraction. WebGPU compute when available, otherwise CPU.\n",
3554
+ "files": {
3555
+ "core/components/functional/webgpu/webgpu.md": {
3556
+ "title": "WebGPU",
3557
+ "hashes": {
3558
+ "demo--particles-compute": {
3559
+ "count": 1,
3560
+ "title": "Demo — particles (compute)",
3561
+ "type": "paragraph"
3562
+ }
3563
+ }
3564
+ }
3565
+ }
3566
+ },
3567
+ {
3568
+ "search": "Same MediaRef / DP bridge as the rest of the stack. No live texture bus with sonic-shader (separate contexts).\n",
3569
+ "files": {
3570
+ "core/components/functional/webgpu/webgpu.md": {
3571
+ "title": "WebGPU",
3572
+ "hashes": {
3573
+ "chaining": {
3574
+ "count": 1,
3575
+ "title": "Chaining",
3576
+ "type": "paragraph"
3577
+ }
3578
+ }
3579
+ }
3580
+ }
3581
+ },
3582
+ {
3583
+ "search": "concorde-webgpu.bundle.js after the core.\n",
3584
+ "files": {
3585
+ "core/components/functional/webgpu/webgpu.md": {
3586
+ "title": "WebGPU",
3587
+ "hashes": {
3588
+ "cdn": {
3589
+ "count": 1,
3590
+ "title": "CDN",
3591
+ "type": "paragraph"
3592
+ }
3593
+ }
3594
+ }
3595
+ }
3596
+ },
2212
3597
  {
2213
3598
  "search": "Alert",
2214
3599
  "files": {
@@ -3199,6 +4584,21 @@
3199
4584
  }
3200
4585
  }
3201
4586
  },
4587
+ {
4588
+ "search": "Opt-in addons (HF / shader / WebGPU): Visual stack.\n",
4589
+ "files": {
4590
+ "docs/_core-concept/dataFlow.md": {
4591
+ "title": "Data flow",
4592
+ "hashes": {
4593
+ "quick-map": {
4594
+ "count": 1,
4595
+ "title": "Quick map",
4596
+ "type": "paragraph"
4597
+ }
4598
+ }
4599
+ }
4600
+ }
4601
+ },
3202
4602
  {
3203
4603
  "search": "Skill: concorde-get-set-dp in the package ai/ folder.\n",
3204
4604
  "files": {
@@ -3304,6 +4704,21 @@
3304
4704
  }
3305
4705
  }
3306
4706
  },
4707
+ {
4708
+ "search": "Use when you need client-side aggregations (groupby, top N, chart shapes) from existing DataProviders — without inline app JS in SDUI.\n",
4709
+ "files": {
4710
+ "docs/_core-concept/dataFlow.md": {
4711
+ "title": "Data flow",
4712
+ "hashes": {
4713
+ "derived-data-derive--sonic-jsonata": {
4714
+ "count": 1,
4715
+ "title": "Derived data (`derive` / `sonic-jsonata`)",
4716
+ "type": "paragraph"
4717
+ }
4718
+ }
4719
+ }
4720
+ }
4721
+ },
3307
4722
  {
3308
4723
  "search": "lit + tailwind + vite",
3309
4724
  "files": {
@@ -7074,6 +8489,96 @@
7074
8489
  }
7075
8490
  }
7076
8491
  },
8492
+ {
8493
+ "search": "CDN addons",
8494
+ "files": {
8495
+ "docs/_getting-started/cdn-addons.md": {
8496
+ "title": "CDN addons",
8497
+ "hashes": {
8498
+ "cdn-addons": {
8499
+ "count": 1,
8500
+ "title": "",
8501
+ "type": "page"
8502
+ }
8503
+ }
8504
+ }
8505
+ }
8506
+ },
8507
+ {
8508
+ "search": "Heavy opt-in features stay out of concorde-core.bundle.js. Load the core bundle first, then the addon you need.\n",
8509
+ "files": {
8510
+ "docs/_getting-started/cdn-addons.md": {
8511
+ "title": "CDN addons",
8512
+ "hashes": {
8513
+ "cdn-addons": {
8514
+ "count": 1,
8515
+ "title": "",
8516
+ "type": "paragraph"
8517
+ }
8518
+ }
8519
+ }
8520
+ }
8521
+ },
8522
+ {
8523
+ "search": "npm: @supersoniks/concorde/bundle/3d, …/bundle/shader, …/bundle/webgpu, …/bundle/hugging-face-infer (IIFE). ESM twins: …/bundle/3d/es, etc.\n",
8524
+ "files": {
8525
+ "docs/_getting-started/cdn-addons.md": {
8526
+ "title": "CDN addons",
8527
+ "hashes": {
8528
+ "cdn-addons": {
8529
+ "count": 1,
8530
+ "title": "",
8531
+ "type": "paragraph"
8532
+ }
8533
+ }
8534
+ }
8535
+ }
8536
+ },
8537
+ {
8538
+ "search": "Scripts in the descriptor are awaited before nodes are created. A failed loadJS throws (no UI parse without deps). Prefer the IIFE .bundle.js files. Descriptors (js[], markup, innerHTML) must be trusted.\n",
8539
+ "files": {
8540
+ "docs/_getting-started/cdn-addons.md": {
8541
+ "title": "CDN addons",
8542
+ "hashes": {
8543
+ "sdui-js": {
8544
+ "count": 1,
8545
+ "title": "SDUI (`js[]`)",
8546
+ "type": "paragraph"
8547
+ }
8548
+ }
8549
+ }
8550
+ }
8551
+ },
8552
+ {
8553
+ "search": "The CE alone is not enough: configure runtime + allowlist once (page script or app entry). The IIFE exposes window.ConcordeHF.\n",
8554
+ "files": {
8555
+ "docs/_getting-started/cdn-addons.md": {
8556
+ "title": "CDN addons",
8557
+ "hashes": {
8558
+ "hugging-face--minimal-bootstrap": {
8559
+ "count": 1,
8560
+ "title": "Hugging Face — minimal bootstrap",
8561
+ "type": "paragraph"
8562
+ }
8563
+ }
8564
+ }
8565
+ }
8566
+ },
8567
+ {
8568
+ "search": "Peer deps (npm, optional): three@0.180.0, @huggingface/transformers@4.3.0. Not needed when using the CDN IIFE addons (Three is inlined in concorde-3d; Transformers.js stays on its own CDN via configureHuggingFace).\n",
8569
+ "files": {
8570
+ "docs/_getting-started/cdn-addons.md": {
8571
+ "title": "CDN addons",
8572
+ "hashes": {
8573
+ "hugging-face--minimal-bootstrap": {
8574
+ "count": 1,
8575
+ "title": "Hugging Face — minimal bootstrap",
8576
+ "type": "paragraph"
8577
+ }
8578
+ }
8579
+ }
8580
+ }
8581
+ },
7077
8582
  {
7078
8583
  "search": "Manual installation (Vite)",
7079
8584
  "files": {
@@ -7600,7 +9105,7 @@
7600
9105
  }
7601
9106
  },
7602
9107
  {
7603
- "search": "In the case where it can be directly used in a page, it should also be globally referenced, especially considering the creation of specific bundles in the future.\n",
9108
+ "search": "In the case where it can be directly used in a page, it should also be globally referenced. Heavy / optional features (3d, shader, webgpu, hugging-face) use CDN addon bundles — see CDN addons — and must not be added to functional.ts / ui.ts.\n",
7604
9109
  "files": {
7605
9110
  "docs/_getting-started/create-a-component.md": {
7606
9111
  "title": "Creating components",
@@ -9328,5 +10833,95 @@
9328
10833
  }
9329
10834
  }
9330
10835
  }
10836
+ },
10837
+ {
10838
+ "search": "Visual stack",
10839
+ "files": {
10840
+ "docs/_misc/visual-stack.md": {
10841
+ "title": "Visual stack",
10842
+ "hashes": {
10843
+ "visual-stack": {
10844
+ "count": 1,
10845
+ "title": "",
10846
+ "type": "page"
10847
+ }
10848
+ }
10849
+ }
10850
+ }
10851
+ },
10852
+ {
10853
+ "search": "Examples of chaining opt-in addons (HF, shader, WebGPU). Outside the main “functional” flow.\n",
10854
+ "files": {
10855
+ "docs/_misc/visual-stack.md": {
10856
+ "title": "Visual stack",
10857
+ "hashes": {
10858
+ "visual-stack": {
10859
+ "count": 1,
10860
+ "title": "",
10861
+ "type": "paragraph"
10862
+ }
10863
+ }
10864
+ }
10865
+ }
10866
+ },
10867
+ {
10868
+ "search": "Photo → sonic-hugging-face-infer (depth) → sonic-shader (parallax) → extract → sonic-jsonata (stats / thresholds).\n",
10869
+ "files": {
10870
+ "docs/_misc/visual-stack.md": {
10871
+ "title": "Visual stack",
10872
+ "hashes": {
10873
+ "hf-depth--parallax": {
10874
+ "count": 1,
10875
+ "title": "HF depth → parallax",
10876
+ "type": "paragraph"
10877
+ }
10878
+ }
10879
+ }
10880
+ }
10881
+ },
10882
+ {
10883
+ "search": "Do not pipe texture channels through jsonata on every frame / slider: that forces rebuilds. JSONata is for scalar derivatives, not the media bus.\n",
10884
+ "files": {
10885
+ "docs/_misc/visual-stack.md": {
10886
+ "title": "Visual stack",
10887
+ "hashes": {
10888
+ "golden-rule": {
10889
+ "count": 1,
10890
+ "title": "Golden rule",
10891
+ "type": "paragraph"
10892
+ }
10893
+ }
10894
+ }
10895
+ }
10896
+ },
10897
+ {
10898
+ "search": "sonic-shader detects corners (Harris) and extracts patches → channel0…3 on sonic-webgpu (kernel=&quot;image&quot;): GPU mosaic.\n",
10899
+ "files": {
10900
+ "docs/_misc/visual-stack.md": {
10901
+ "title": "Visual stack",
10902
+ "hashes": {
10903
+ "harris--patches--webgpu": {
10904
+ "count": 1,
10905
+ "title": "Harris → patches → WebGPU",
10906
+ "type": "paragraph"
10907
+ }
10908
+ }
10909
+ }
10910
+ }
10911
+ },
10912
+ {
10913
+ "search": "SonicMediaRef / toMediaUrl / cloneMediaRef — @supersoniks/concorde/core/utils/mediaRef.\n",
10914
+ "files": {
10915
+ "docs/_misc/visual-stack.md": {
10916
+ "title": "Visual stack",
10917
+ "hashes": {
10918
+ "media-contract": {
10919
+ "count": 1,
10920
+ "title": "Media contract",
10921
+ "type": "paragraph"
10922
+ }
10923
+ }
10924
+ }
10925
+ }
9331
10926
  }
9332
10927
  ]