@supersoniks/concorde 4.9.95 → 4.9.97-visual-stack.0

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 (1013) hide show
  1. package/README.md +34 -17
  2. package/build-infos.json +1 -1
  3. package/concorde-3d.bundle.js +1 -1
  4. package/concorde-3d.es.js +1 -1
  5. package/concorde-core.bundle.js +147 -147
  6. package/concorde-core.es.js +4375 -4282
  7. package/concorde-hugging-face-infer.bundle.js +1 -1
  8. package/concorde-hugging-face-infer.es.js +1 -1
  9. package/concorde-shader.bundle.js +1 -1
  10. package/concorde-shader.es.js +1 -1
  11. package/concorde-webgpu.bundle.js +1 -1
  12. package/concorde-webgpu.es.js +1 -1
  13. package/dist/concorde-3d.bundle.js +3911 -0
  14. package/dist/concorde-3d.es.js +32635 -0
  15. package/dist/concorde-core.bundle.js +147 -147
  16. package/dist/concorde-core.es.js +4375 -4282
  17. package/dist/concorde-hugging-face-infer.bundle.js +32 -0
  18. package/dist/concorde-hugging-face-infer.es.js +2952 -0
  19. package/dist/concorde-shader.bundle.js +105 -0
  20. package/dist/concorde-shader.es.js +7982 -0
  21. package/dist/concorde-webgpu.bundle.js +296 -0
  22. package/dist/concorde-webgpu.es.js +8268 -0
  23. package/dist/docs/hf-samples/beach.jpg +0 -0
  24. package/dist/docs/hf-samples/cats.jpg +0 -0
  25. package/dist/docs/hf-samples/corgi.jpg +0 -0
  26. package/dist/docs/hf-samples/portrait.jpg +0 -0
  27. package/dist/docs/hf-samples/scene.jpg +0 -0
  28. package/dist/docs/hf-samples/singer.jpg +0 -0
  29. package/dist/docs/shader-samples/color.jpg +0 -0
  30. package/dist/docs/shader-samples/depth.png +0 -0
  31. package/dist/docs/shader-samples/impact.jpg +0 -0
  32. package/dist/docs/shader-samples/video.webm +0 -0
  33. package/dist/js/addons/3d.js +6 -0
  34. package/dist/js/addons/3d.js.map +1 -0
  35. package/dist/js/addons/hugging-face-infer.js +8 -0
  36. package/dist/js/addons/hugging-face-infer.js.map +1 -0
  37. package/dist/js/addons/shader.js +6 -0
  38. package/dist/js/addons/shader.js.map +1 -0
  39. package/dist/js/addons/webgpu.js +7 -0
  40. package/dist/js/addons/webgpu.js.map +1 -0
  41. package/dist/js/components.js +12 -0
  42. package/dist/js/components.js.map +1 -0
  43. package/dist/js/concorde-loaded.js +5 -0
  44. package/dist/js/concorde-loaded.js.map +1 -0
  45. package/dist/js/core/_types/endpoint.js +5 -0
  46. package/dist/js/core/_types/endpoint.js.map +1 -0
  47. package/dist/js/core/_types/key.js +2 -0
  48. package/dist/js/core/_types/key.js.map +1 -0
  49. package/dist/js/core/_types/types.js +3 -0
  50. package/dist/js/core/_types/types.js.map +1 -0
  51. package/dist/js/core/components/functional/3d/3d.js +151 -0
  52. package/dist/js/core/components/functional/3d/3d.js.map +1 -0
  53. package/dist/js/core/components/functional/3d/asset.js +20 -0
  54. package/dist/js/core/components/functional/3d/asset.js.map +1 -0
  55. package/dist/js/core/components/functional/3d/boot.js +47 -0
  56. package/dist/js/core/components/functional/3d/boot.js.map +1 -0
  57. package/dist/js/core/components/functional/3d/constants.js +88 -0
  58. package/dist/js/core/components/functional/3d/constants.js.map +1 -0
  59. package/dist/js/core/components/functional/3d/demo-content.js +38 -0
  60. package/dist/js/core/components/functional/3d/demo-content.js.map +1 -0
  61. package/dist/js/core/components/functional/3d/ensure.js +73 -0
  62. package/dist/js/core/components/functional/3d/ensure.js.map +1 -0
  63. package/dist/js/core/components/functional/3d/form-bind.js +25 -0
  64. package/dist/js/core/components/functional/3d/form-bind.js.map +1 -0
  65. package/dist/js/core/components/functional/3d/form-fields.js +76 -0
  66. package/dist/js/core/components/functional/3d/form-fields.js.map +1 -0
  67. package/dist/js/core/components/functional/3d/form-params.js +67 -0
  68. package/dist/js/core/components/functional/3d/form-params.js.map +1 -0
  69. package/dist/js/core/components/functional/3d/frame-capture.js +108 -0
  70. package/dist/js/core/components/functional/3d/frame-capture.js.map +1 -0
  71. package/dist/js/core/components/functional/3d/gl.js +34 -0
  72. package/dist/js/core/components/functional/3d/gl.js.map +1 -0
  73. package/dist/js/core/components/functional/3d/life.js +55 -0
  74. package/dist/js/core/components/functional/3d/life.js.map +1 -0
  75. package/dist/js/core/components/functional/3d/load.js +109 -0
  76. package/dist/js/core/components/functional/3d/load.js.map +1 -0
  77. package/dist/js/core/components/functional/3d/ops.js +78 -0
  78. package/dist/js/core/components/functional/3d/ops.js.map +1 -0
  79. package/dist/js/core/components/functional/3d/opts.js +2 -0
  80. package/dist/js/core/components/functional/3d/opts.js.map +1 -0
  81. package/dist/js/core/components/functional/3d/orbit.js +136 -0
  82. package/dist/js/core/components/functional/3d/orbit.js.map +1 -0
  83. package/dist/js/core/components/functional/3d/out-publish.js +103 -0
  84. package/dist/js/core/components/functional/3d/out-publish.js.map +1 -0
  85. package/dist/js/core/components/functional/3d/parse.js +95 -0
  86. package/dist/js/core/components/functional/3d/parse.js.map +1 -0
  87. package/dist/js/core/components/functional/3d/pick.js +62 -0
  88. package/dist/js/core/components/functional/3d/pick.js.map +1 -0
  89. package/dist/js/core/components/functional/3d/playback.js +56 -0
  90. package/dist/js/core/components/functional/3d/playback.js.map +1 -0
  91. package/dist/js/core/components/functional/3d/pointer.js +58 -0
  92. package/dist/js/core/components/functional/3d/pointer.js.map +1 -0
  93. package/dist/js/core/components/functional/3d/props.js +105 -0
  94. package/dist/js/core/components/functional/3d/props.js.map +1 -0
  95. package/dist/js/core/components/functional/3d/publisher-listen.js +6 -0
  96. package/dist/js/core/components/functional/3d/publisher-listen.js.map +1 -0
  97. package/dist/js/core/components/functional/3d/reload.js +60 -0
  98. package/dist/js/core/components/functional/3d/reload.js.map +1 -0
  99. package/dist/js/core/components/functional/3d/runtime.js +116 -0
  100. package/dist/js/core/components/functional/3d/runtime.js.map +1 -0
  101. package/dist/js/core/components/functional/3d/scene-runtime.js +6 -0
  102. package/dist/js/core/components/functional/3d/scene-runtime.js.map +1 -0
  103. package/dist/js/core/components/functional/3d/snapshot.js +47 -0
  104. package/dist/js/core/components/functional/3d/snapshot.js.map +1 -0
  105. package/dist/js/core/components/functional/3d/styles.js +38 -0
  106. package/dist/js/core/components/functional/3d/styles.js.map +1 -0
  107. package/dist/js/core/components/functional/3d/tune.js +42 -0
  108. package/dist/js/core/components/functional/3d/tune.js.map +1 -0
  109. package/dist/js/core/components/functional/3d/types.js +8 -0
  110. package/dist/js/core/components/functional/3d/types.js.map +1 -0
  111. package/dist/js/core/components/functional/3d/updated.js +58 -0
  112. package/dist/js/core/components/functional/3d/updated.js.map +1 -0
  113. package/dist/js/core/components/functional/3d/view.js +40 -0
  114. package/dist/js/core/components/functional/3d/view.js.map +1 -0
  115. package/dist/js/core/components/functional/3d/wire.js +34 -0
  116. package/dist/js/core/components/functional/3d/wire.js.map +1 -0
  117. package/dist/js/core/components/functional/date/date.js +272 -0
  118. package/dist/js/core/components/functional/date/date.js.map +1 -0
  119. package/dist/js/core/components/functional/example/example.js +44 -0
  120. package/dist/js/core/components/functional/example/example.js.map +1 -0
  121. package/dist/js/core/components/functional/fetch/fetch.js +79 -0
  122. package/dist/js/core/components/functional/fetch/fetch.js.map +1 -0
  123. package/dist/js/core/components/functional/functional.js +18 -0
  124. package/dist/js/core/components/functional/functional.js.map +1 -0
  125. package/dist/js/core/components/functional/if/if.js +39 -0
  126. package/dist/js/core/components/functional/if/if.js.map +1 -0
  127. package/dist/js/core/components/functional/infer/hugging-face/hf-cache.js +183 -0
  128. package/dist/js/core/components/functional/infer/hugging-face/hf-cache.js.map +1 -0
  129. package/dist/js/core/components/functional/infer/hugging-face/hf-config.js +50 -0
  130. package/dist/js/core/components/functional/infer/hugging-face/hf-config.js.map +1 -0
  131. package/dist/js/core/components/functional/infer/hugging-face/hf-controller.js +460 -0
  132. package/dist/js/core/components/functional/infer/hugging-face/hf-controller.js.map +1 -0
  133. package/dist/js/core/components/functional/infer/hugging-face/hf-engine.js +116 -0
  134. package/dist/js/core/components/functional/infer/hugging-face/hf-engine.js.map +1 -0
  135. package/dist/js/core/components/functional/infer/hugging-face/hf-input.js +170 -0
  136. package/dist/js/core/components/functional/infer/hugging-face/hf-input.js.map +1 -0
  137. package/dist/js/core/components/functional/infer/hugging-face/hf-protocol.js +2 -0
  138. package/dist/js/core/components/functional/infer/hugging-face/hf-protocol.js.map +1 -0
  139. package/dist/js/core/components/functional/infer/hugging-face/hf-registry.js +367 -0
  140. package/dist/js/core/components/functional/infer/hugging-face/hf-registry.js.map +1 -0
  141. package/dist/js/core/components/functional/infer/hugging-face/hf-schema.js +288 -0
  142. package/dist/js/core/components/functional/infer/hugging-face/hf-schema.js.map +1 -0
  143. package/dist/js/core/components/functional/infer/hugging-face/hf-worker-runtime.js +309 -0
  144. package/dist/js/core/components/functional/infer/hugging-face/hf-worker-runtime.js.map +1 -0
  145. package/dist/js/core/components/functional/infer/hugging-face/hugging-face-infer.js +213 -0
  146. package/dist/js/core/components/functional/infer/hugging-face/hugging-face-infer.js.map +1 -0
  147. package/dist/js/core/components/functional/infer/hugging-face/hugging-face.js +76 -0
  148. package/dist/js/core/components/functional/infer/hugging-face/hugging-face.js.map +1 -0
  149. package/dist/js/core/components/functional/infer/hugging-face/types.js +62 -0
  150. package/dist/js/core/components/functional/infer/hugging-face/types.js.map +1 -0
  151. package/dist/js/core/components/functional/jsonata/jsonata.js +119 -0
  152. package/dist/js/core/components/functional/jsonata/jsonata.js.map +1 -0
  153. package/dist/js/core/components/functional/list/list.js +341 -0
  154. package/dist/js/core/components/functional/list/list.js.map +1 -0
  155. package/dist/js/core/components/functional/mix/mix.js +103 -0
  156. package/dist/js/core/components/functional/mix/mix.js.map +1 -0
  157. package/dist/js/core/components/functional/queue/queue.js +450 -0
  158. package/dist/js/core/components/functional/queue/queue.js.map +1 -0
  159. package/dist/js/core/components/functional/router/redirect.js +54 -0
  160. package/dist/js/core/components/functional/router/redirect.js.map +1 -0
  161. package/dist/js/core/components/functional/router/router.js +179 -0
  162. package/dist/js/core/components/functional/router/router.js.map +1 -0
  163. package/dist/js/core/components/functional/sdui/SDUIDescriptorTransformer.js +216 -0
  164. package/dist/js/core/components/functional/sdui/SDUIDescriptorTransformer.js.map +1 -0
  165. package/dist/js/core/components/functional/sdui/default-library.json +108 -0
  166. package/dist/js/core/components/functional/sdui/sdui-utils.js +64 -0
  167. package/dist/js/core/components/functional/sdui/sdui-utils.js.map +1 -0
  168. package/dist/js/core/components/functional/sdui/sdui.js +271 -0
  169. package/dist/js/core/components/functional/sdui/sdui.js.map +1 -0
  170. package/dist/js/core/components/functional/sdui/types.js +2 -0
  171. package/dist/js/core/components/functional/sdui/types.js.map +1 -0
  172. package/dist/js/core/components/functional/shader/gl-runtime.js +603 -0
  173. package/dist/js/core/components/functional/shader/gl-runtime.js.map +1 -0
  174. package/dist/js/core/components/functional/shader/shader.js +1593 -0
  175. package/dist/js/core/components/functional/shader/shader.js.map +1 -0
  176. package/dist/js/core/components/functional/shader/shadertoy-prelude.js +48 -0
  177. package/dist/js/core/components/functional/shader/shadertoy-prelude.js.map +1 -0
  178. package/dist/js/core/components/functional/shader/types.js +179 -0
  179. package/dist/js/core/components/functional/shader/types.js.map +1 -0
  180. package/dist/js/core/components/functional/sonic-scope/sonic-scope.js +22 -0
  181. package/dist/js/core/components/functional/sonic-scope/sonic-scope.js.map +1 -0
  182. package/dist/js/core/components/functional/states/states.js +172 -0
  183. package/dist/js/core/components/functional/states/states.js.map +1 -0
  184. package/dist/js/core/components/functional/submit/submit.js +284 -0
  185. package/dist/js/core/components/functional/submit/submit.js.map +1 -0
  186. package/dist/js/core/components/functional/subscriber/subscriber.js +39 -0
  187. package/dist/js/core/components/functional/subscriber/subscriber.js.map +1 -0
  188. package/dist/js/core/components/functional/translation/translation.js +28 -0
  189. package/dist/js/core/components/functional/translation/translation.js.map +1 -0
  190. package/dist/js/core/components/functional/value/value.js +28 -0
  191. package/dist/js/core/components/functional/value/value.js.map +1 -0
  192. package/dist/js/core/components/functional/webgpu/canvas2d-fallback.js +117 -0
  193. package/dist/js/core/components/functional/webgpu/canvas2d-fallback.js.map +1 -0
  194. package/dist/js/core/components/functional/webgpu/form-bind.js +92 -0
  195. package/dist/js/core/components/functional/webgpu/form-bind.js.map +1 -0
  196. package/dist/js/core/components/functional/webgpu/gl-fallback.js +135 -0
  197. package/dist/js/core/components/functional/webgpu/gl-fallback.js.map +1 -0
  198. package/dist/js/core/components/functional/webgpu/gpu-runtime.js +305 -0
  199. package/dist/js/core/components/functional/webgpu/gpu-runtime.js.map +1 -0
  200. package/dist/js/core/components/functional/webgpu/helpers.js +44 -0
  201. package/dist/js/core/components/functional/webgpu/helpers.js.map +1 -0
  202. package/dist/js/core/components/functional/webgpu/out-frame.js +117 -0
  203. package/dist/js/core/components/functional/webgpu/out-frame.js.map +1 -0
  204. package/dist/js/core/components/functional/webgpu/particles-runtime.js +407 -0
  205. package/dist/js/core/components/functional/webgpu/particles-runtime.js.map +1 -0
  206. package/dist/js/core/components/functional/webgpu/pointer.js +56 -0
  207. package/dist/js/core/components/functional/webgpu/pointer.js.map +1 -0
  208. package/dist/js/core/components/functional/webgpu/types.js +24 -0
  209. package/dist/js/core/components/functional/webgpu/types.js.map +1 -0
  210. package/dist/js/core/components/functional/webgpu/webgpu.js +667 -0
  211. package/dist/js/core/components/functional/webgpu/webgpu.js.map +1 -0
  212. package/dist/js/core/components/functional/webgpu/wgsl-prelude.js +77 -0
  213. package/dist/js/core/components/functional/webgpu/wgsl-prelude.js.map +1 -0
  214. package/dist/js/core/components/ui/_css/scroll.js +27 -0
  215. package/dist/js/core/components/ui/_css/scroll.js.map +1 -0
  216. package/dist/js/core/components/ui/_css/shadow.js +22 -0
  217. package/dist/js/core/components/ui/_css/shadow.js.map +1 -0
  218. package/dist/js/core/components/ui/_css/size.js +36 -0
  219. package/dist/js/core/components/ui/_css/size.js.map +1 -0
  220. package/dist/js/core/components/ui/_css/type.js +92 -0
  221. package/dist/js/core/components/ui/_css/type.js.map +1 -0
  222. package/dist/js/core/components/ui/alert/alert.js +213 -0
  223. package/dist/js/core/components/ui/alert/alert.js.map +1 -0
  224. package/dist/js/core/components/ui/alert-messages/alert-messages.js +68 -0
  225. package/dist/js/core/components/ui/alert-messages/alert-messages.js.map +1 -0
  226. package/dist/js/core/components/ui/badge/badge.js +199 -0
  227. package/dist/js/core/components/ui/badge/badge.js.map +1 -0
  228. package/dist/js/core/components/ui/button/button.js +697 -0
  229. package/dist/js/core/components/ui/button/button.js.map +1 -0
  230. package/dist/js/core/components/ui/captcha/altchaStyles.js +226 -0
  231. package/dist/js/core/components/ui/captcha/altchaStyles.js.map +1 -0
  232. package/dist/js/core/components/ui/captcha/captcha.js +167 -0
  233. package/dist/js/core/components/ui/captcha/captcha.js.map +1 -0
  234. package/dist/js/core/components/ui/card/card-footer.js +26 -0
  235. package/dist/js/core/components/ui/card/card-footer.js.map +1 -0
  236. package/dist/js/core/components/ui/card/card-header-descripton.js +30 -0
  237. package/dist/js/core/components/ui/card/card-header-descripton.js.map +1 -0
  238. package/dist/js/core/components/ui/card/card-header.js +79 -0
  239. package/dist/js/core/components/ui/card/card-header.js.map +1 -0
  240. package/dist/js/core/components/ui/card/card-main.js +26 -0
  241. package/dist/js/core/components/ui/card/card-main.js.map +1 -0
  242. package/dist/js/core/components/ui/card/card.js +67 -0
  243. package/dist/js/core/components/ui/card/card.js.map +1 -0
  244. package/dist/js/core/components/ui/divider/divider.js +200 -0
  245. package/dist/js/core/components/ui/divider/divider.js.map +1 -0
  246. package/dist/js/core/components/ui/form/checkbox/checkbox.js +257 -0
  247. package/dist/js/core/components/ui/form/checkbox/checkbox.js.map +1 -0
  248. package/dist/js/core/components/ui/form/css/form-control.js +393 -0
  249. package/dist/js/core/components/ui/form/css/form-control.js.map +1 -0
  250. package/dist/js/core/components/ui/form/fieldset/fieldset.js +124 -0
  251. package/dist/js/core/components/ui/form/fieldset/fieldset.js.map +1 -0
  252. package/dist/js/core/components/ui/form/fieldset/legend-description.js +38 -0
  253. package/dist/js/core/components/ui/form/fieldset/legend-description.js.map +1 -0
  254. package/dist/js/core/components/ui/form/fieldset/legend.js +130 -0
  255. package/dist/js/core/components/ui/form/fieldset/legend.js.map +1 -0
  256. package/dist/js/core/components/ui/form/form-actions/form-actions.js +47 -0
  257. package/dist/js/core/components/ui/form/form-actions/form-actions.js.map +1 -0
  258. package/dist/js/core/components/ui/form/form-layout/form-layout.js +84 -0
  259. package/dist/js/core/components/ui/form/form-layout/form-layout.js.map +1 -0
  260. package/dist/js/core/components/ui/form/input/input.js +316 -0
  261. package/dist/js/core/components/ui/form/input/input.js.map +1 -0
  262. package/dist/js/core/components/ui/form/input/password-helper.js +134 -0
  263. package/dist/js/core/components/ui/form/input/password-helper.js.map +1 -0
  264. package/dist/js/core/components/ui/form/input/same-value-helper.js +85 -0
  265. package/dist/js/core/components/ui/form/input/same-value-helper.js.map +1 -0
  266. package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js +405 -0
  267. package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js.map +1 -0
  268. package/dist/js/core/components/ui/form/radio/radio.js +63 -0
  269. package/dist/js/core/components/ui/form/radio/radio.js.map +1 -0
  270. package/dist/js/core/components/ui/form/select/select.js +323 -0
  271. package/dist/js/core/components/ui/form/select/select.js.map +1 -0
  272. package/dist/js/core/components/ui/form/switch/switch.js +90 -0
  273. package/dist/js/core/components/ui/form/switch/switch.js.map +1 -0
  274. package/dist/js/core/components/ui/form/textarea/textarea.js +162 -0
  275. package/dist/js/core/components/ui/form/textarea/textarea.js.map +1 -0
  276. package/dist/js/core/components/ui/group/group.js +128 -0
  277. package/dist/js/core/components/ui/group/group.js.map +1 -0
  278. package/dist/js/core/components/ui/icon/icon.js +145 -0
  279. package/dist/js/core/components/ui/icon/icon.js.map +1 -0
  280. package/dist/js/core/components/ui/icon/icons.js +184 -0
  281. package/dist/js/core/components/ui/icon/icons.js.map +1 -0
  282. package/dist/js/core/components/ui/icon/icons.json +1 -0
  283. package/dist/js/core/components/ui/image/image.js +160 -0
  284. package/dist/js/core/components/ui/image/image.js.map +1 -0
  285. package/dist/js/core/components/ui/link/link.js +125 -0
  286. package/dist/js/core/components/ui/link/link.js.map +1 -0
  287. package/dist/js/core/components/ui/loader/loader.js +106 -0
  288. package/dist/js/core/components/ui/loader/loader.js.map +1 -0
  289. package/dist/js/core/components/ui/loader/styles/fixed.js +56 -0
  290. package/dist/js/core/components/ui/loader/styles/fixed.js.map +1 -0
  291. package/dist/js/core/components/ui/loader/styles/inline.js +70 -0
  292. package/dist/js/core/components/ui/loader/styles/inline.js.map +1 -0
  293. package/dist/js/core/components/ui/menu/menu-item.js +35 -0
  294. package/dist/js/core/components/ui/menu/menu-item.js.map +1 -0
  295. package/dist/js/core/components/ui/menu/menu.js +436 -0
  296. package/dist/js/core/components/ui/menu/menu.js.map +1 -0
  297. package/dist/js/core/components/ui/modal/modal-actions.js +44 -0
  298. package/dist/js/core/components/ui/modal/modal-actions.js.map +1 -0
  299. package/dist/js/core/components/ui/modal/modal-close.js +56 -0
  300. package/dist/js/core/components/ui/modal/modal-close.js.map +1 -0
  301. package/dist/js/core/components/ui/modal/modal-content.js +27 -0
  302. package/dist/js/core/components/ui/modal/modal-content.js.map +1 -0
  303. package/dist/js/core/components/ui/modal/modal-subtitle.js +34 -0
  304. package/dist/js/core/components/ui/modal/modal-subtitle.js.map +1 -0
  305. package/dist/js/core/components/ui/modal/modal-title.js +35 -0
  306. package/dist/js/core/components/ui/modal/modal-title.js.map +1 -0
  307. package/dist/js/core/components/ui/modal/modal-utils.js +32 -0
  308. package/dist/js/core/components/ui/modal/modal-utils.js.map +1 -0
  309. package/dist/js/core/components/ui/modal/modal.js +568 -0
  310. package/dist/js/core/components/ui/modal/modal.js.map +1 -0
  311. package/dist/js/core/components/ui/pop/pop.js +337 -0
  312. package/dist/js/core/components/ui/pop/pop.js.map +1 -0
  313. package/dist/js/core/components/ui/progress/progress.js +164 -0
  314. package/dist/js/core/components/ui/progress/progress.js.map +1 -0
  315. package/dist/js/core/components/ui/table/table-caption.js +29 -0
  316. package/dist/js/core/components/ui/table/table-caption.js.map +1 -0
  317. package/dist/js/core/components/ui/table/table-tbody.js +41 -0
  318. package/dist/js/core/components/ui/table/table-tbody.js.map +1 -0
  319. package/dist/js/core/components/ui/table/table-td.js +69 -0
  320. package/dist/js/core/components/ui/table/table-td.js.map +1 -0
  321. package/dist/js/core/components/ui/table/table-tfoot.js +28 -0
  322. package/dist/js/core/components/ui/table/table-tfoot.js.map +1 -0
  323. package/dist/js/core/components/ui/table/table-th.js +80 -0
  324. package/dist/js/core/components/ui/table/table-th.js.map +1 -0
  325. package/dist/js/core/components/ui/table/table-thead.js +26 -0
  326. package/dist/js/core/components/ui/table/table-thead.js.map +1 -0
  327. package/dist/js/core/components/ui/table/table-tr.js +67 -0
  328. package/dist/js/core/components/ui/table/table-tr.js.map +1 -0
  329. package/dist/js/core/components/ui/table/table.js +106 -0
  330. package/dist/js/core/components/ui/table/table.js.map +1 -0
  331. package/dist/js/core/components/ui/theme/theme-collection/core-variables.js +74 -0
  332. package/dist/js/core/components/ui/theme/theme-collection/core-variables.js.map +1 -0
  333. package/dist/js/core/components/ui/theme/theme-collection/dark.js +39 -0
  334. package/dist/js/core/components/ui/theme/theme-collection/dark.js.map +1 -0
  335. package/dist/js/core/components/ui/theme/theme-collection/light.js +32 -0
  336. package/dist/js/core/components/ui/theme/theme-collection/light.js.map +1 -0
  337. package/dist/js/core/components/ui/theme/theme.js +150 -0
  338. package/dist/js/core/components/ui/theme/theme.js.map +1 -0
  339. package/dist/js/core/components/ui/toast/message-subscriber.js +41 -0
  340. package/dist/js/core/components/ui/toast/message-subscriber.js.map +1 -0
  341. package/dist/js/core/components/ui/toast/toast-item.js +379 -0
  342. package/dist/js/core/components/ui/toast/toast-item.js.map +1 -0
  343. package/dist/js/core/components/ui/toast/toast.js +269 -0
  344. package/dist/js/core/components/ui/toast/toast.js.map +1 -0
  345. package/dist/js/core/components/ui/toast/types.js +2 -0
  346. package/dist/js/core/components/ui/toast/types.js.map +1 -0
  347. package/dist/js/core/components/ui/tooltip/tooltip.js +219 -0
  348. package/dist/js/core/components/ui/tooltip/tooltip.js.map +1 -0
  349. package/dist/js/core/components/ui/ui.js +41 -0
  350. package/dist/js/core/components/ui/ui.js.map +1 -0
  351. package/dist/js/core/core.js +14 -0
  352. package/dist/js/core/core.js.map +1 -0
  353. package/dist/js/core/decorators/Subscriber.js +10 -0
  354. package/dist/js/core/decorators/Subscriber.js.map +1 -0
  355. package/dist/js/core/decorators/api.js +806 -0
  356. package/dist/js/core/decorators/api.js.map +1 -0
  357. package/dist/js/core/decorators/lifecycle.js +67 -0
  358. package/dist/js/core/decorators/lifecycle.js.map +1 -0
  359. package/dist/js/core/decorators/subscriber/ancestorAttribute.js +27 -0
  360. package/dist/js/core/decorators/subscriber/ancestorAttribute.js.map +1 -0
  361. package/dist/js/core/decorators/subscriber/autoFill.js +26 -0
  362. package/dist/js/core/decorators/subscriber/autoFill.js.map +1 -0
  363. package/dist/js/core/decorators/subscriber/autoSubscribe.js +46 -0
  364. package/dist/js/core/decorators/subscriber/autoSubscribe.js.map +1 -0
  365. package/dist/js/core/decorators/subscriber/bind.js +150 -0
  366. package/dist/js/core/decorators/subscriber/bind.js.map +1 -0
  367. package/dist/js/core/decorators/subscriber/common.js +44 -0
  368. package/dist/js/core/decorators/subscriber/common.js.map +1 -0
  369. package/dist/js/core/decorators/subscriber/derive.js +60 -0
  370. package/dist/js/core/decorators/subscriber/derive.js.map +1 -0
  371. package/dist/js/core/decorators/subscriber/dynamicPath.js +75 -0
  372. package/dist/js/core/decorators/subscriber/dynamicPath.js.map +1 -0
  373. package/dist/js/core/decorators/subscriber/dynamicPropertyWatch.js +138 -0
  374. package/dist/js/core/decorators/subscriber/dynamicPropertyWatch.js.map +1 -0
  375. package/dist/js/core/decorators/subscriber/handle.js +22 -0
  376. package/dist/js/core/decorators/subscriber/handle.js.map +1 -0
  377. package/dist/js/core/decorators/subscriber/onAssign.js +199 -0
  378. package/dist/js/core/decorators/subscriber/onAssign.js.map +1 -0
  379. package/dist/js/core/decorators/subscriber/publish.js +108 -0
  380. package/dist/js/core/decorators/subscriber/publish.js.map +1 -0
  381. package/dist/js/core/decorators/subscriber/publisherPath.js +16 -0
  382. package/dist/js/core/decorators/subscriber/publisherPath.js.map +1 -0
  383. package/dist/js/core/decorators/subscriber/subscribe.js +20 -0
  384. package/dist/js/core/decorators/subscriber/subscribe.js.map +1 -0
  385. package/dist/js/core/directives/DataProvider.js +127 -0
  386. package/dist/js/core/directives/DataProvider.js.map +1 -0
  387. package/dist/js/core/directives/Wording.js +221 -0
  388. package/dist/js/core/directives/Wording.js.map +1 -0
  389. package/dist/js/core/mixins/Fetcher.js +325 -0
  390. package/dist/js/core/mixins/Fetcher.js.map +1 -0
  391. package/dist/js/core/mixins/FormCheckable.js +313 -0
  392. package/dist/js/core/mixins/FormCheckable.js.map +1 -0
  393. package/dist/js/core/mixins/FormElement.js +304 -0
  394. package/dist/js/core/mixins/FormElement.js.map +1 -0
  395. package/dist/js/core/mixins/FormInput.js +82 -0
  396. package/dist/js/core/mixins/FormInput.js.map +1 -0
  397. package/dist/js/core/mixins/Subscriber.js +354 -0
  398. package/dist/js/core/mixins/Subscriber.js.map +1 -0
  399. package/dist/js/core/mixins/TemplatesContainer.js +70 -0
  400. package/dist/js/core/mixins/TemplatesContainer.js.map +1 -0
  401. package/dist/js/core/mixins/mixins.js +7 -0
  402. package/dist/js/core/mixins/mixins.js.map +1 -0
  403. package/dist/js/core/utils/AncestorAttributeObserver.js +140 -0
  404. package/dist/js/core/utils/AncestorAttributeObserver.js.map +1 -0
  405. package/dist/js/core/utils/Arrays.js +141 -0
  406. package/dist/js/core/utils/Arrays.js.map +1 -0
  407. package/dist/js/core/utils/DataBindObserver.js +265 -0
  408. package/dist/js/core/utils/DataBindObserver.js.map +1 -0
  409. package/dist/js/core/utils/Electron.js +14 -0
  410. package/dist/js/core/utils/Electron.js.map +1 -0
  411. package/dist/js/core/utils/Format.js +43 -0
  412. package/dist/js/core/utils/Format.js.map +1 -0
  413. package/dist/js/core/utils/HTML.js +307 -0
  414. package/dist/js/core/utils/HTML.js.map +1 -0
  415. package/dist/js/core/utils/LocationHandler.js +143 -0
  416. package/dist/js/core/utils/LocationHandler.js.map +1 -0
  417. package/dist/js/core/utils/Objects.js +111 -0
  418. package/dist/js/core/utils/Objects.js.map +1 -0
  419. package/dist/js/core/utils/PublisherProxy.js +970 -0
  420. package/dist/js/core/utils/PublisherProxy.js.map +1 -0
  421. package/dist/js/core/utils/SafariScrollGuard.js +384 -0
  422. package/dist/js/core/utils/SafariScrollGuard.js.map +1 -0
  423. package/dist/js/core/utils/Utils.js +19 -0
  424. package/dist/js/core/utils/Utils.js.map +1 -0
  425. package/dist/js/core/utils/aesCrypto.js +98 -0
  426. package/dist/js/core/utils/aesCrypto.js.map +1 -0
  427. package/dist/js/core/utils/api.js +595 -0
  428. package/dist/js/core/utils/api.js.map +1 -0
  429. package/dist/js/core/utils/dataProviderKey.js +64 -0
  430. package/dist/js/core/utils/dataProviderKey.js.map +1 -0
  431. package/dist/js/core/utils/derive.js +246 -0
  432. package/dist/js/core/utils/derive.js.map +1 -0
  433. package/dist/js/core/utils/endpoint.js +74 -0
  434. package/dist/js/core/utils/endpoint.js.map +1 -0
  435. package/dist/js/core/utils/jsonataHelpers.js +84 -0
  436. package/dist/js/core/utils/jsonataHelpers.js.map +1 -0
  437. package/dist/js/core/utils/jsonataRuntime.js +75 -0
  438. package/dist/js/core/utils/jsonataRuntime.js.map +1 -0
  439. package/dist/js/core/utils/mediaRef.js +120 -0
  440. package/dist/js/core/utils/mediaRef.js.map +1 -0
  441. package/dist/js/core/utils/route.js +149 -0
  442. package/dist/js/core/utils/route.js.map +1 -0
  443. package/dist/js/core/utils/similarity.js +44 -0
  444. package/dist/js/core/utils/similarity.js.map +1 -0
  445. package/dist/js/core/utils/url-pattern.js +3 -0
  446. package/dist/js/core/utils/url-pattern.js.map +1 -0
  447. package/dist/js/dataprovider.js +2 -0
  448. package/dist/js/dataprovider.js.map +1 -0
  449. package/dist/js/decorators.js +43 -0
  450. package/dist/js/decorators.js.map +1 -0
  451. package/dist/js/directives.js +30 -0
  452. package/dist/js/directives.js.map +1 -0
  453. package/dist/js/index.js +8 -0
  454. package/dist/js/index.js.map +1 -0
  455. package/dist/js/mixins.js +23 -0
  456. package/dist/js/mixins.js.map +1 -0
  457. package/dist/js/test-utils/TestUtils.js +10 -0
  458. package/dist/js/test-utils/TestUtils.js.map +1 -0
  459. package/dist/js/utils.js +46 -0
  460. package/dist/js/utils.js.map +1 -0
  461. package/dist/types/addons/3d.d.ts +6 -0
  462. package/dist/types/addons/3d.d.ts.map +1 -0
  463. package/dist/types/addons/hugging-face-infer.d.ts +8 -0
  464. package/dist/types/addons/hugging-face-infer.d.ts.map +1 -0
  465. package/dist/types/addons/shader.d.ts +6 -0
  466. package/dist/types/addons/shader.d.ts.map +1 -0
  467. package/dist/types/addons/webgpu.d.ts +7 -0
  468. package/dist/types/addons/webgpu.d.ts.map +1 -0
  469. package/dist/types/components.d.ts +5 -0
  470. package/dist/types/components.d.ts.map +1 -0
  471. package/dist/types/concorde-loaded.d.ts +2 -0
  472. package/dist/types/concorde-loaded.d.ts.map +1 -0
  473. package/dist/types/core/_types/endpoint.d.ts +5 -0
  474. package/dist/types/core/_types/endpoint.d.ts.map +1 -0
  475. package/dist/types/core/_types/key.d.ts +2 -0
  476. package/dist/types/core/_types/key.d.ts.map +1 -0
  477. package/dist/types/core/_types/types.d.ts +28 -0
  478. package/dist/types/core/_types/types.d.ts.map +1 -0
  479. package/dist/types/core/components/functional/3d/3d.d.ts +66 -0
  480. package/dist/types/core/components/functional/3d/3d.d.ts.map +1 -0
  481. package/dist/types/core/components/functional/3d/asset.d.ts +12 -0
  482. package/dist/types/core/components/functional/3d/asset.d.ts.map +1 -0
  483. package/dist/types/core/components/functional/3d/boot.d.ts +23 -0
  484. package/dist/types/core/components/functional/3d/boot.d.ts.map +1 -0
  485. package/dist/types/core/components/functional/3d/constants.d.ts +43 -0
  486. package/dist/types/core/components/functional/3d/constants.d.ts.map +1 -0
  487. package/dist/types/core/components/functional/3d/demo-content.d.ts +10 -0
  488. package/dist/types/core/components/functional/3d/demo-content.d.ts.map +1 -0
  489. package/dist/types/core/components/functional/3d/ensure.d.ts +36 -0
  490. package/dist/types/core/components/functional/3d/ensure.d.ts.map +1 -0
  491. package/dist/types/core/components/functional/3d/form-bind.d.ts +20 -0
  492. package/dist/types/core/components/functional/3d/form-bind.d.ts.map +1 -0
  493. package/dist/types/core/components/functional/3d/form-fields.d.ts +14 -0
  494. package/dist/types/core/components/functional/3d/form-fields.d.ts.map +1 -0
  495. package/dist/types/core/components/functional/3d/form-params.d.ts +37 -0
  496. package/dist/types/core/components/functional/3d/form-params.d.ts.map +1 -0
  497. package/dist/types/core/components/functional/3d/frame-capture.d.ts +33 -0
  498. package/dist/types/core/components/functional/3d/frame-capture.d.ts.map +1 -0
  499. package/dist/types/core/components/functional/3d/gl.d.ts +4 -0
  500. package/dist/types/core/components/functional/3d/gl.d.ts.map +1 -0
  501. package/dist/types/core/components/functional/3d/life.d.ts +41 -0
  502. package/dist/types/core/components/functional/3d/life.d.ts.map +1 -0
  503. package/dist/types/core/components/functional/3d/load.d.ts +36 -0
  504. package/dist/types/core/components/functional/3d/load.d.ts.map +1 -0
  505. package/dist/types/core/components/functional/3d/ops.d.ts +48 -0
  506. package/dist/types/core/components/functional/3d/ops.d.ts.map +1 -0
  507. package/dist/types/core/components/functional/3d/opts.d.ts +16 -0
  508. package/dist/types/core/components/functional/3d/opts.d.ts.map +1 -0
  509. package/dist/types/core/components/functional/3d/orbit.d.ts +55 -0
  510. package/dist/types/core/components/functional/3d/orbit.d.ts.map +1 -0
  511. package/dist/types/core/components/functional/3d/out-publish.d.ts +47 -0
  512. package/dist/types/core/components/functional/3d/out-publish.d.ts.map +1 -0
  513. package/dist/types/core/components/functional/3d/parse.d.ts +23 -0
  514. package/dist/types/core/components/functional/3d/parse.d.ts.map +1 -0
  515. package/dist/types/core/components/functional/3d/pick.d.ts +32 -0
  516. package/dist/types/core/components/functional/3d/pick.d.ts.map +1 -0
  517. package/dist/types/core/components/functional/3d/playback.d.ts +26 -0
  518. package/dist/types/core/components/functional/3d/playback.d.ts.map +1 -0
  519. package/dist/types/core/components/functional/3d/pointer.d.ts +27 -0
  520. package/dist/types/core/components/functional/3d/pointer.d.ts.map +1 -0
  521. package/dist/types/core/components/functional/3d/props.d.ts +30 -0
  522. package/dist/types/core/components/functional/3d/props.d.ts.map +1 -0
  523. package/dist/types/core/components/functional/3d/publisher-listen.d.ts +8 -0
  524. package/dist/types/core/components/functional/3d/publisher-listen.d.ts.map +1 -0
  525. package/dist/types/core/components/functional/3d/reload.d.ts +35 -0
  526. package/dist/types/core/components/functional/3d/reload.d.ts.map +1 -0
  527. package/dist/types/core/components/functional/3d/runtime.d.ts +75 -0
  528. package/dist/types/core/components/functional/3d/runtime.d.ts.map +1 -0
  529. package/dist/types/core/components/functional/3d/scene-runtime.d.ts +6 -0
  530. package/dist/types/core/components/functional/3d/scene-runtime.d.ts.map +1 -0
  531. package/dist/types/core/components/functional/3d/snapshot.d.ts +29 -0
  532. package/dist/types/core/components/functional/3d/snapshot.d.ts.map +1 -0
  533. package/dist/types/core/components/functional/3d/styles.d.ts +2 -0
  534. package/dist/types/core/components/functional/3d/styles.d.ts.map +1 -0
  535. package/dist/types/core/components/functional/3d/tune.d.ts +32 -0
  536. package/dist/types/core/components/functional/3d/tune.d.ts.map +1 -0
  537. package/dist/types/core/components/functional/3d/types.d.ts +133 -0
  538. package/dist/types/core/components/functional/3d/types.d.ts.map +1 -0
  539. package/dist/types/core/components/functional/3d/updated.d.ts +7 -0
  540. package/dist/types/core/components/functional/3d/updated.d.ts.map +1 -0
  541. package/dist/types/core/components/functional/3d/view.d.ts +25 -0
  542. package/dist/types/core/components/functional/3d/view.d.ts.map +1 -0
  543. package/dist/types/core/components/functional/3d/wire.d.ts +32 -0
  544. package/dist/types/core/components/functional/3d/wire.d.ts.map +1 -0
  545. package/dist/types/core/components/functional/date/date.d.ts +52 -0
  546. package/dist/types/core/components/functional/date/date.d.ts.map +1 -0
  547. package/dist/types/core/components/functional/example/example.d.ts +15 -0
  548. package/dist/types/core/components/functional/example/example.d.ts.map +1 -0
  549. package/dist/types/core/components/functional/fetch/fetch.d.ts +102 -0
  550. package/dist/types/core/components/functional/fetch/fetch.d.ts.map +1 -0
  551. package/dist/types/core/components/functional/functional.d.ts +18 -0
  552. package/dist/types/core/components/functional/functional.d.ts.map +1 -0
  553. package/dist/types/core/components/functional/if/if.d.ts +13 -0
  554. package/dist/types/core/components/functional/if/if.d.ts.map +1 -0
  555. package/dist/types/core/components/functional/infer/hugging-face/hf-cache.d.ts +21 -0
  556. package/dist/types/core/components/functional/infer/hugging-face/hf-cache.d.ts.map +1 -0
  557. package/dist/types/core/components/functional/infer/hugging-face/hf-config.d.ts +133 -0
  558. package/dist/types/core/components/functional/infer/hugging-face/hf-config.d.ts.map +1 -0
  559. package/dist/types/core/components/functional/infer/hugging-face/hf-controller.d.ts +79 -0
  560. package/dist/types/core/components/functional/infer/hugging-face/hf-controller.d.ts.map +1 -0
  561. package/dist/types/core/components/functional/infer/hugging-face/hf-engine.d.ts +43 -0
  562. package/dist/types/core/components/functional/infer/hugging-face/hf-engine.d.ts.map +1 -0
  563. package/dist/types/core/components/functional/infer/hugging-face/hf-input.d.ts +47 -0
  564. package/dist/types/core/components/functional/infer/hugging-face/hf-input.d.ts.map +1 -0
  565. package/dist/types/core/components/functional/infer/hugging-face/hf-protocol.d.ts +95 -0
  566. package/dist/types/core/components/functional/infer/hugging-face/hf-protocol.d.ts.map +1 -0
  567. package/dist/types/core/components/functional/infer/hugging-face/hf-registry.d.ts +77 -0
  568. package/dist/types/core/components/functional/infer/hugging-face/hf-registry.d.ts.map +1 -0
  569. package/dist/types/core/components/functional/infer/hugging-face/hf-schema.d.ts +1251 -0
  570. package/dist/types/core/components/functional/infer/hugging-face/hf-schema.d.ts.map +1 -0
  571. package/dist/types/core/components/functional/infer/hugging-face/hf-worker-runtime.d.ts +56 -0
  572. package/dist/types/core/components/functional/infer/hugging-face/hf-worker-runtime.d.ts.map +1 -0
  573. package/dist/types/core/components/functional/infer/hugging-face/hugging-face-infer.d.ts +67 -0
  574. package/dist/types/core/components/functional/infer/hugging-face/hugging-face-infer.d.ts.map +1 -0
  575. package/dist/types/core/components/functional/infer/hugging-face/hugging-face.d.ts +116 -0
  576. package/dist/types/core/components/functional/infer/hugging-face/hugging-face.d.ts.map +1 -0
  577. package/dist/types/core/components/functional/infer/hugging-face/types.d.ts +167 -0
  578. package/dist/types/core/components/functional/infer/hugging-face/types.d.ts.map +1 -0
  579. package/dist/types/core/components/functional/jsonata/jsonata.d.ts +29 -0
  580. package/dist/types/core/components/functional/jsonata/jsonata.d.ts.map +1 -0
  581. package/dist/types/core/components/functional/list/list.d.ts +149 -0
  582. package/dist/types/core/components/functional/list/list.d.ts.map +1 -0
  583. package/dist/types/core/components/functional/mix/mix.d.ts +23 -0
  584. package/dist/types/core/components/functional/mix/mix.d.ts.map +1 -0
  585. package/dist/types/core/components/functional/queue/queue.d.ts +93 -0
  586. package/dist/types/core/components/functional/queue/queue.d.ts.map +1 -0
  587. package/dist/types/core/components/functional/router/redirect.d.ts +19 -0
  588. package/dist/types/core/components/functional/router/redirect.d.ts.map +1 -0
  589. package/dist/types/core/components/functional/router/router.d.ts +46 -0
  590. package/dist/types/core/components/functional/router/router.d.ts.map +1 -0
  591. package/dist/types/core/components/functional/sdui/SDUIDescriptorTransformer.d.ts +59 -0
  592. package/dist/types/core/components/functional/sdui/SDUIDescriptorTransformer.d.ts.map +1 -0
  593. package/dist/types/core/components/functional/sdui/sdui-utils.d.ts +6 -0
  594. package/dist/types/core/components/functional/sdui/sdui-utils.d.ts.map +1 -0
  595. package/dist/types/core/components/functional/sdui/sdui.d.ts +148 -0
  596. package/dist/types/core/components/functional/sdui/sdui.d.ts.map +1 -0
  597. package/dist/types/core/components/functional/sdui/types.d.ts +38 -0
  598. package/dist/types/core/components/functional/sdui/types.d.ts.map +1 -0
  599. package/dist/types/core/components/functional/shader/gl-runtime.d.ts +71 -0
  600. package/dist/types/core/components/functional/shader/gl-runtime.d.ts.map +1 -0
  601. package/dist/types/core/components/functional/shader/shader.d.ts +274 -0
  602. package/dist/types/core/components/functional/shader/shader.d.ts.map +1 -0
  603. package/dist/types/core/components/functional/shader/shadertoy-prelude.d.ts +6 -0
  604. package/dist/types/core/components/functional/shader/shadertoy-prelude.d.ts.map +1 -0
  605. package/dist/types/core/components/functional/shader/types.d.ts +256 -0
  606. package/dist/types/core/components/functional/shader/types.d.ts.map +1 -0
  607. package/dist/types/core/components/functional/sonic-scope/sonic-scope.d.ts +6 -0
  608. package/dist/types/core/components/functional/sonic-scope/sonic-scope.d.ts.map +1 -0
  609. package/dist/types/core/components/functional/states/states.d.ts +42 -0
  610. package/dist/types/core/components/functional/states/states.d.ts.map +1 -0
  611. package/dist/types/core/components/functional/submit/submit.d.ts +37 -0
  612. package/dist/types/core/components/functional/submit/submit.d.ts.map +1 -0
  613. package/dist/types/core/components/functional/subscriber/subscriber.d.ts +13 -0
  614. package/dist/types/core/components/functional/subscriber/subscriber.d.ts.map +1 -0
  615. package/dist/types/core/components/functional/translation/translation.d.ts +7 -0
  616. package/dist/types/core/components/functional/translation/translation.d.ts.map +1 -0
  617. package/dist/types/core/components/functional/value/value.d.ts +8 -0
  618. package/dist/types/core/components/functional/value/value.d.ts.map +1 -0
  619. package/dist/types/core/components/functional/webgpu/canvas2d-fallback.d.ts +29 -0
  620. package/dist/types/core/components/functional/webgpu/canvas2d-fallback.d.ts.map +1 -0
  621. package/dist/types/core/components/functional/webgpu/form-bind.d.ts +43 -0
  622. package/dist/types/core/components/functional/webgpu/form-bind.d.ts.map +1 -0
  623. package/dist/types/core/components/functional/webgpu/gl-fallback.d.ts +31 -0
  624. package/dist/types/core/components/functional/webgpu/gl-fallback.d.ts.map +1 -0
  625. package/dist/types/core/components/functional/webgpu/gpu-runtime.d.ts +53 -0
  626. package/dist/types/core/components/functional/webgpu/gpu-runtime.d.ts.map +1 -0
  627. package/dist/types/core/components/functional/webgpu/helpers.d.ts +9 -0
  628. package/dist/types/core/components/functional/webgpu/helpers.d.ts.map +1 -0
  629. package/dist/types/core/components/functional/webgpu/out-frame.d.ts +29 -0
  630. package/dist/types/core/components/functional/webgpu/out-frame.d.ts.map +1 -0
  631. package/dist/types/core/components/functional/webgpu/particles-runtime.d.ts +37 -0
  632. package/dist/types/core/components/functional/webgpu/particles-runtime.d.ts.map +1 -0
  633. package/dist/types/core/components/functional/webgpu/pointer.d.ts +41 -0
  634. package/dist/types/core/components/functional/webgpu/pointer.d.ts.map +1 -0
  635. package/dist/types/core/components/functional/webgpu/types.d.ts +75 -0
  636. package/dist/types/core/components/functional/webgpu/types.d.ts.map +1 -0
  637. package/dist/types/core/components/functional/webgpu/webgpu.d.ts +123 -0
  638. package/dist/types/core/components/functional/webgpu/webgpu.d.ts.map +1 -0
  639. package/dist/types/core/components/functional/webgpu/wgsl-prelude.d.ts +8 -0
  640. package/dist/types/core/components/functional/webgpu/wgsl-prelude.d.ts.map +1 -0
  641. package/dist/types/core/components/ui/_css/scroll.d.ts +2 -0
  642. package/dist/types/core/components/ui/_css/scroll.d.ts.map +1 -0
  643. package/dist/types/core/components/ui/_css/shadow.d.ts +3 -0
  644. package/dist/types/core/components/ui/_css/shadow.d.ts.map +1 -0
  645. package/dist/types/core/components/ui/_css/size.d.ts +3 -0
  646. package/dist/types/core/components/ui/_css/size.d.ts.map +1 -0
  647. package/dist/types/core/components/ui/_css/type.d.ts +3 -0
  648. package/dist/types/core/components/ui/_css/type.d.ts.map +1 -0
  649. package/dist/types/core/components/ui/alert/alert.d.ts +37 -0
  650. package/dist/types/core/components/ui/alert/alert.d.ts.map +1 -0
  651. package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts +15 -0
  652. package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts.map +1 -0
  653. package/dist/types/core/components/ui/badge/badge.d.ts +27 -0
  654. package/dist/types/core/components/ui/badge/badge.d.ts.map +1 -0
  655. package/dist/types/core/components/ui/button/button.d.ts +180 -0
  656. package/dist/types/core/components/ui/button/button.d.ts.map +1 -0
  657. package/dist/types/core/components/ui/captcha/altchaStyles.d.ts +2 -0
  658. package/dist/types/core/components/ui/captcha/altchaStyles.d.ts.map +1 -0
  659. package/dist/types/core/components/ui/captcha/captcha.d.ts +30 -0
  660. package/dist/types/core/components/ui/captcha/captcha.d.ts.map +1 -0
  661. package/dist/types/core/components/ui/card/card-footer.d.ts +6 -0
  662. package/dist/types/core/components/ui/card/card-footer.d.ts.map +1 -0
  663. package/dist/types/core/components/ui/card/card-header-descripton.d.ts +6 -0
  664. package/dist/types/core/components/ui/card/card-header-descripton.d.ts.map +1 -0
  665. package/dist/types/core/components/ui/card/card-header.d.ts +9 -0
  666. package/dist/types/core/components/ui/card/card-header.d.ts.map +1 -0
  667. package/dist/types/core/components/ui/card/card-main.d.ts +6 -0
  668. package/dist/types/core/components/ui/card/card-main.d.ts.map +1 -0
  669. package/dist/types/core/components/ui/card/card.d.ts +13 -0
  670. package/dist/types/core/components/ui/card/card.d.ts.map +1 -0
  671. package/dist/types/core/components/ui/divider/divider.d.ts +16 -0
  672. package/dist/types/core/components/ui/divider/divider.d.ts.map +1 -0
  673. package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts +176 -0
  674. package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts.map +1 -0
  675. package/dist/types/core/components/ui/form/css/form-control.d.ts +5 -0
  676. package/dist/types/core/components/ui/form/css/form-control.d.ts.map +1 -0
  677. package/dist/types/core/components/ui/form/fieldset/fieldset.d.ts +24 -0
  678. package/dist/types/core/components/ui/form/fieldset/fieldset.d.ts.map +1 -0
  679. package/dist/types/core/components/ui/form/fieldset/legend-description.d.ts +6 -0
  680. package/dist/types/core/components/ui/form/fieldset/legend-description.d.ts.map +1 -0
  681. package/dist/types/core/components/ui/form/fieldset/legend.d.ts +17 -0
  682. package/dist/types/core/components/ui/form/fieldset/legend.d.ts.map +1 -0
  683. package/dist/types/core/components/ui/form/form-actions/form-actions.d.ts +8 -0
  684. package/dist/types/core/components/ui/form/form-actions/form-actions.d.ts.map +1 -0
  685. package/dist/types/core/components/ui/form/form-layout/form-layout.d.ts +13 -0
  686. package/dist/types/core/components/ui/form/form-layout/form-layout.d.ts.map +1 -0
  687. package/dist/types/core/components/ui/form/input/input.d.ts +123 -0
  688. package/dist/types/core/components/ui/form/input/input.d.ts.map +1 -0
  689. package/dist/types/core/components/ui/form/input/password-helper.d.ts +26 -0
  690. package/dist/types/core/components/ui/form/input/password-helper.d.ts.map +1 -0
  691. package/dist/types/core/components/ui/form/input/same-value-helper.d.ts +17 -0
  692. package/dist/types/core/components/ui/form/input/same-value-helper.d.ts.map +1 -0
  693. package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts +155 -0
  694. package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts.map +1 -0
  695. package/dist/types/core/components/ui/form/radio/radio.d.ts +15 -0
  696. package/dist/types/core/components/ui/form/radio/radio.d.ts.map +1 -0
  697. package/dist/types/core/components/ui/form/select/select.d.ts +59 -0
  698. package/dist/types/core/components/ui/form/select/select.d.ts.map +1 -0
  699. package/dist/types/core/components/ui/form/switch/switch.d.ts +6 -0
  700. package/dist/types/core/components/ui/form/switch/switch.d.ts.map +1 -0
  701. package/dist/types/core/components/ui/form/textarea/textarea.d.ts +94 -0
  702. package/dist/types/core/components/ui/form/textarea/textarea.d.ts.map +1 -0
  703. package/dist/types/core/components/ui/group/group.d.ts +17 -0
  704. package/dist/types/core/components/ui/group/group.d.ts.map +1 -0
  705. package/dist/types/core/components/ui/icon/icon.d.ts +30 -0
  706. package/dist/types/core/components/ui/icon/icon.d.ts.map +1 -0
  707. package/dist/types/core/components/ui/icon/icons.d.ts +13 -0
  708. package/dist/types/core/components/ui/icon/icons.d.ts.map +1 -0
  709. package/dist/types/core/components/ui/image/image.d.ts +16 -0
  710. package/dist/types/core/components/ui/image/image.d.ts.map +1 -0
  711. package/dist/types/core/components/ui/link/link.d.ts +30 -0
  712. package/dist/types/core/components/ui/link/link.d.ts.map +1 -0
  713. package/dist/types/core/components/ui/loader/loader.d.ts +24 -0
  714. package/dist/types/core/components/ui/loader/loader.d.ts.map +1 -0
  715. package/dist/types/core/components/ui/loader/styles/fixed.d.ts +2 -0
  716. package/dist/types/core/components/ui/loader/styles/fixed.d.ts.map +1 -0
  717. package/dist/types/core/components/ui/loader/styles/inline.d.ts +2 -0
  718. package/dist/types/core/components/ui/loader/styles/inline.d.ts.map +1 -0
  719. package/dist/types/core/components/ui/menu/menu-item.d.ts +6 -0
  720. package/dist/types/core/components/ui/menu/menu-item.d.ts.map +1 -0
  721. package/dist/types/core/components/ui/menu/menu.d.ts +52 -0
  722. package/dist/types/core/components/ui/menu/menu.d.ts.map +1 -0
  723. package/dist/types/core/components/ui/modal/modal-actions.d.ts +9 -0
  724. package/dist/types/core/components/ui/modal/modal-actions.d.ts.map +1 -0
  725. package/dist/types/core/components/ui/modal/modal-close.d.ts +11 -0
  726. package/dist/types/core/components/ui/modal/modal-close.d.ts.map +1 -0
  727. package/dist/types/core/components/ui/modal/modal-content.d.ts +6 -0
  728. package/dist/types/core/components/ui/modal/modal-content.d.ts.map +1 -0
  729. package/dist/types/core/components/ui/modal/modal-subtitle.d.ts +6 -0
  730. package/dist/types/core/components/ui/modal/modal-subtitle.d.ts.map +1 -0
  731. package/dist/types/core/components/ui/modal/modal-title.d.ts +6 -0
  732. package/dist/types/core/components/ui/modal/modal-title.d.ts.map +1 -0
  733. package/dist/types/core/components/ui/modal/modal-utils.d.ts +4 -0
  734. package/dist/types/core/components/ui/modal/modal-utils.d.ts.map +1 -0
  735. package/dist/types/core/components/ui/modal/modal.d.ts +79 -0
  736. package/dist/types/core/components/ui/modal/modal.d.ts.map +1 -0
  737. package/dist/types/core/components/ui/pop/pop.d.ts +42 -0
  738. package/dist/types/core/components/ui/pop/pop.d.ts.map +1 -0
  739. package/dist/types/core/components/ui/progress/progress.d.ts +12 -0
  740. package/dist/types/core/components/ui/progress/progress.d.ts.map +1 -0
  741. package/dist/types/core/components/ui/table/table-caption.d.ts +6 -0
  742. package/dist/types/core/components/ui/table/table-caption.d.ts.map +1 -0
  743. package/dist/types/core/components/ui/table/table-tbody.d.ts +6 -0
  744. package/dist/types/core/components/ui/table/table-tbody.d.ts.map +1 -0
  745. package/dist/types/core/components/ui/table/table-td.d.ts +13 -0
  746. package/dist/types/core/components/ui/table/table-td.d.ts.map +1 -0
  747. package/dist/types/core/components/ui/table/table-tfoot.d.ts +6 -0
  748. package/dist/types/core/components/ui/table/table-tfoot.d.ts.map +1 -0
  749. package/dist/types/core/components/ui/table/table-th.d.ts +12 -0
  750. package/dist/types/core/components/ui/table/table-th.d.ts.map +1 -0
  751. package/dist/types/core/components/ui/table/table-thead.d.ts +6 -0
  752. package/dist/types/core/components/ui/table/table-thead.d.ts.map +1 -0
  753. package/dist/types/core/components/ui/table/table-tr.d.ts +14 -0
  754. package/dist/types/core/components/ui/table/table-tr.d.ts.map +1 -0
  755. package/dist/types/core/components/ui/table/table.d.ts +18 -0
  756. package/dist/types/core/components/ui/table/table.d.ts.map +1 -0
  757. package/dist/types/core/components/ui/theme/theme-collection/core-variables.d.ts +2 -0
  758. package/dist/types/core/components/ui/theme/theme-collection/core-variables.d.ts.map +1 -0
  759. package/dist/types/core/components/ui/theme/theme-collection/dark.d.ts +2 -0
  760. package/dist/types/core/components/ui/theme/theme-collection/dark.d.ts.map +1 -0
  761. package/dist/types/core/components/ui/theme/theme-collection/light.d.ts +2 -0
  762. package/dist/types/core/components/ui/theme/theme-collection/light.d.ts.map +1 -0
  763. package/dist/types/core/components/ui/theme/theme.d.ts +20 -0
  764. package/dist/types/core/components/ui/theme/theme.d.ts.map +1 -0
  765. package/dist/types/core/components/ui/toast/message-subscriber.d.ts +19 -0
  766. package/dist/types/core/components/ui/toast/message-subscriber.d.ts.map +1 -0
  767. package/dist/types/core/components/ui/toast/toast-item.d.ts +41 -0
  768. package/dist/types/core/components/ui/toast/toast-item.d.ts.map +1 -0
  769. package/dist/types/core/components/ui/toast/toast.d.ts +28 -0
  770. package/dist/types/core/components/ui/toast/toast.d.ts.map +1 -0
  771. package/dist/types/core/components/ui/toast/types.d.ts +12 -0
  772. package/dist/types/core/components/ui/toast/types.d.ts.map +1 -0
  773. package/dist/types/core/components/ui/tooltip/tooltip.d.ts +21 -0
  774. package/dist/types/core/components/ui/tooltip/tooltip.d.ts.map +1 -0
  775. package/dist/types/core/components/ui/ui.d.ts +35 -0
  776. package/dist/types/core/components/ui/ui.d.ts.map +1 -0
  777. package/dist/types/core/core.d.ts +5 -0
  778. package/dist/types/core/core.d.ts.map +1 -0
  779. package/dist/types/core/decorators/Subscriber.d.ts +13 -0
  780. package/dist/types/core/decorators/Subscriber.d.ts.map +1 -0
  781. package/dist/types/core/decorators/api.d.ts +155 -0
  782. package/dist/types/core/decorators/api.d.ts.map +1 -0
  783. package/dist/types/core/decorators/lifecycle.d.ts +19 -0
  784. package/dist/types/core/decorators/lifecycle.d.ts.map +1 -0
  785. package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts +11 -0
  786. package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts.map +1 -0
  787. package/dist/types/core/decorators/subscriber/autoFill.d.ts +2 -0
  788. package/dist/types/core/decorators/subscriber/autoFill.d.ts.map +1 -0
  789. package/dist/types/core/decorators/subscriber/autoSubscribe.d.ts +2 -0
  790. package/dist/types/core/decorators/subscriber/autoSubscribe.d.ts.map +1 -0
  791. package/dist/types/core/decorators/subscriber/bind.d.ts +28 -0
  792. package/dist/types/core/decorators/subscriber/bind.d.ts.map +1 -0
  793. package/dist/types/core/decorators/subscriber/common.d.ts +14 -0
  794. package/dist/types/core/decorators/subscriber/common.d.ts.map +1 -0
  795. package/dist/types/core/decorators/subscriber/derive.d.ts +30 -0
  796. package/dist/types/core/decorators/subscriber/derive.d.ts.map +1 -0
  797. package/dist/types/core/decorators/subscriber/dynamicPath.d.ts +23 -0
  798. package/dist/types/core/decorators/subscriber/dynamicPath.d.ts.map +1 -0
  799. package/dist/types/core/decorators/subscriber/dynamicPropertyWatch.d.ts +42 -0
  800. package/dist/types/core/decorators/subscriber/dynamicPropertyWatch.d.ts.map +1 -0
  801. package/dist/types/core/decorators/subscriber/handle.d.ts +74 -0
  802. package/dist/types/core/decorators/subscriber/handle.d.ts.map +1 -0
  803. package/dist/types/core/decorators/subscriber/onAssign.d.ts +53 -0
  804. package/dist/types/core/decorators/subscriber/onAssign.d.ts.map +1 -0
  805. package/dist/types/core/decorators/subscriber/publish.d.ts +23 -0
  806. package/dist/types/core/decorators/subscriber/publish.d.ts.map +1 -0
  807. package/dist/types/core/decorators/subscriber/publisherPath.d.ts +3 -0
  808. package/dist/types/core/decorators/subscriber/publisherPath.d.ts.map +1 -0
  809. package/dist/types/core/decorators/subscriber/subscribe.d.ts +20 -0
  810. package/dist/types/core/decorators/subscriber/subscribe.d.ts.map +1 -0
  811. package/dist/types/core/directives/DataProvider.d.ts +45 -0
  812. package/dist/types/core/directives/DataProvider.d.ts.map +1 -0
  813. package/dist/types/core/directives/Wording.d.ts +44 -0
  814. package/dist/types/core/directives/Wording.d.ts.map +1 -0
  815. package/dist/types/core/mixins/Fetcher.d.ts +108 -0
  816. package/dist/types/core/mixins/Fetcher.d.ts.map +1 -0
  817. package/dist/types/core/mixins/FormCheckable.d.ts +95 -0
  818. package/dist/types/core/mixins/FormCheckable.d.ts.map +1 -0
  819. package/dist/types/core/mixins/FormElement.d.ts +37 -0
  820. package/dist/types/core/mixins/FormElement.d.ts.map +1 -0
  821. package/dist/types/core/mixins/FormInput.d.ts +79 -0
  822. package/dist/types/core/mixins/FormInput.d.ts.map +1 -0
  823. package/dist/types/core/mixins/Subscriber.d.ts +38 -0
  824. package/dist/types/core/mixins/Subscriber.d.ts.map +1 -0
  825. package/dist/types/core/mixins/TemplatesContainer.d.ts +14 -0
  826. package/dist/types/core/mixins/TemplatesContainer.d.ts.map +1 -0
  827. package/dist/types/core/mixins/mixins.d.ts +7 -0
  828. package/dist/types/core/mixins/mixins.d.ts.map +1 -0
  829. package/dist/types/core/utils/AncestorAttributeObserver.d.ts +38 -0
  830. package/dist/types/core/utils/AncestorAttributeObserver.d.ts.map +1 -0
  831. package/dist/types/core/utils/Arrays.d.ts +98 -0
  832. package/dist/types/core/utils/Arrays.d.ts.map +1 -0
  833. package/dist/types/core/utils/DataBindObserver.d.ts +84 -0
  834. package/dist/types/core/utils/DataBindObserver.d.ts.map +1 -0
  835. package/dist/types/core/utils/Electron.d.ts +8 -0
  836. package/dist/types/core/utils/Electron.d.ts.map +1 -0
  837. package/dist/types/core/utils/Format.d.ts +13 -0
  838. package/dist/types/core/utils/Format.d.ts.map +1 -0
  839. package/dist/types/core/utils/HTML.d.ts +59 -0
  840. package/dist/types/core/utils/HTML.d.ts.map +1 -0
  841. package/dist/types/core/utils/LocationHandler.d.ts +48 -0
  842. package/dist/types/core/utils/LocationHandler.d.ts.map +1 -0
  843. package/dist/types/core/utils/Objects.d.ts +31 -0
  844. package/dist/types/core/utils/Objects.d.ts.map +1 -0
  845. package/dist/types/core/utils/PublisherProxy.d.ts +230 -0
  846. package/dist/types/core/utils/PublisherProxy.d.ts.map +1 -0
  847. package/dist/types/core/utils/SafariScrollGuard.d.ts +36 -0
  848. package/dist/types/core/utils/SafariScrollGuard.d.ts.map +1 -0
  849. package/dist/types/core/utils/Utils.d.ts +6 -0
  850. package/dist/types/core/utils/Utils.d.ts.map +1 -0
  851. package/dist/types/core/utils/aesCrypto.d.ts +53 -0
  852. package/dist/types/core/utils/aesCrypto.d.ts.map +1 -0
  853. package/dist/types/core/utils/api.d.ts +173 -0
  854. package/dist/types/core/utils/api.d.ts.map +1 -0
  855. package/dist/types/core/utils/dataProviderKey.d.ts +56 -0
  856. package/dist/types/core/utils/dataProviderKey.d.ts.map +1 -0
  857. package/dist/types/core/utils/derive.d.ts +40 -0
  858. package/dist/types/core/utils/derive.d.ts.map +1 -0
  859. package/dist/types/core/utils/endpoint.d.ts +37 -0
  860. package/dist/types/core/utils/endpoint.d.ts.map +1 -0
  861. package/dist/types/core/utils/jsonataHelpers.d.ts +15 -0
  862. package/dist/types/core/utils/jsonataHelpers.d.ts.map +1 -0
  863. package/dist/types/core/utils/jsonataRuntime.d.ts +13 -0
  864. package/dist/types/core/utils/jsonataRuntime.d.ts.map +1 -0
  865. package/dist/types/core/utils/mediaRef.d.ts +34 -0
  866. package/dist/types/core/utils/mediaRef.d.ts.map +1 -0
  867. package/dist/types/core/utils/route.d.ts +41 -0
  868. package/dist/types/core/utils/route.d.ts.map +1 -0
  869. package/dist/types/core/utils/similarity.d.ts +15 -0
  870. package/dist/types/core/utils/similarity.d.ts.map +1 -0
  871. package/dist/types/core/utils/url-pattern.d.ts +3 -0
  872. package/dist/types/core/utils/url-pattern.d.ts.map +1 -0
  873. package/dist/types/dataprovider.d.ts +2 -0
  874. package/dist/types/dataprovider.d.ts.map +1 -0
  875. package/dist/types/decorators.d.ts +30 -0
  876. package/dist/types/decorators.d.ts.map +1 -0
  877. package/dist/types/directives.d.ts +21 -0
  878. package/dist/types/directives.d.ts.map +1 -0
  879. package/dist/types/index.d.ts +8 -0
  880. package/dist/types/index.d.ts.map +1 -0
  881. package/dist/types/mixins.d.ts +204 -0
  882. package/dist/types/mixins.d.ts.map +1 -0
  883. package/dist/types/test-utils/TestUtils.d.ts +4 -0
  884. package/dist/types/test-utils/TestUtils.d.ts.map +1 -0
  885. package/dist/types/utils.d.ts +20 -0
  886. package/dist/types/utils.d.ts.map +1 -0
  887. package/package.json +1780 -382
  888. package/public/docs/hf-samples/beach.jpg +0 -0
  889. package/public/docs/hf-samples/cats.jpg +0 -0
  890. package/public/docs/hf-samples/corgi.jpg +0 -0
  891. package/public/docs/hf-samples/portrait.jpg +0 -0
  892. package/public/docs/hf-samples/scene.jpg +0 -0
  893. package/public/docs/hf-samples/singer.jpg +0 -0
  894. package/public/docs/shader-samples/color.jpg +0 -0
  895. package/public/docs/shader-samples/depth.png +0 -0
  896. package/public/docs/shader-samples/impact.jpg +0 -0
  897. package/public/docs/shader-samples/video.webm +0 -0
  898. package/scripts/build-addons.mjs +26 -0
  899. package/scripts/gen-shader-depth.mjs +85 -0
  900. package/scripts/gen-shader-harris-video.mjs +17 -0
  901. package/scripts/gen-shader-harris-video.py +84 -0
  902. package/scripts/hf-vendor.mjs +154 -0
  903. package/scripts/post-build.mjs +116 -10
  904. package/scripts/pre-build.mjs +119 -36
  905. package/scripts/pre-publish.mjs +76 -54
  906. package/src/addons/3d.ts +5 -0
  907. package/src/addons/hugging-face-infer.ts +11 -0
  908. package/src/addons/shader.ts +5 -0
  909. package/src/addons/webgpu.ts +15 -0
  910. package/src/core/components/functional/3d/3d.md +118 -0
  911. package/src/core/components/functional/3d/3d.spec.ts +171 -0
  912. package/src/core/components/functional/3d/3d.ts +175 -0
  913. package/src/core/components/functional/3d/asset.ts +22 -0
  914. package/src/core/components/functional/3d/boot.ts +77 -0
  915. package/src/core/components/functional/3d/constants.ts +98 -0
  916. package/src/core/components/functional/3d/demo-content.ts +45 -0
  917. package/src/core/components/functional/3d/ensure.ts +99 -0
  918. package/src/core/components/functional/3d/form-bind.ts +40 -0
  919. package/src/core/components/functional/3d/form-fields.ts +80 -0
  920. package/src/core/components/functional/3d/form-params.ts +97 -0
  921. package/src/core/components/functional/3d/frame-capture.spec.ts +72 -0
  922. package/src/core/components/functional/3d/frame-capture.ts +135 -0
  923. package/src/core/components/functional/3d/gl.ts +35 -0
  924. package/src/core/components/functional/3d/life.ts +101 -0
  925. package/src/core/components/functional/3d/load.ts +129 -0
  926. package/src/core/components/functional/3d/ops.ts +126 -0
  927. package/src/core/components/functional/3d/opts.ts +16 -0
  928. package/src/core/components/functional/3d/orbit.ts +185 -0
  929. package/src/core/components/functional/3d/out-publish.ts +140 -0
  930. package/src/core/components/functional/3d/parse.ts +95 -0
  931. package/src/core/components/functional/3d/pick.ts +92 -0
  932. package/src/core/components/functional/3d/playback.ts +70 -0
  933. package/src/core/components/functional/3d/pointer.ts +79 -0
  934. package/src/core/components/functional/3d/props.ts +50 -0
  935. package/src/core/components/functional/3d/publisher-listen.ts +13 -0
  936. package/src/core/components/functional/3d/reload.ts +88 -0
  937. package/src/core/components/functional/3d/runtime.ts +148 -0
  938. package/src/core/components/functional/3d/scene-runtime.ts +9 -0
  939. package/src/core/components/functional/3d/snapshot.ts +73 -0
  940. package/src/core/components/functional/3d/styles.ts +38 -0
  941. package/src/core/components/functional/3d/tune.ts +72 -0
  942. package/src/core/components/functional/3d/types.ts +145 -0
  943. package/src/core/components/functional/3d/updated.ts +70 -0
  944. package/src/core/components/functional/3d/view.ts +63 -0
  945. package/src/core/components/functional/3d/wire.ts +65 -0
  946. package/src/core/components/functional/infer/hugging-face/hf-cache.ts +198 -0
  947. package/src/core/components/functional/infer/hugging-face/hf-config.ts +188 -0
  948. package/src/core/components/functional/infer/hugging-face/hf-controller.spec.ts +350 -0
  949. package/src/core/components/functional/infer/hugging-face/hf-controller.ts +622 -0
  950. package/src/core/components/functional/infer/hugging-face/hf-engine.ts +178 -0
  951. package/src/core/components/functional/infer/hugging-face/hf-input.spec.ts +99 -0
  952. package/src/core/components/functional/infer/hugging-face/hf-input.ts +218 -0
  953. package/src/core/components/functional/infer/hugging-face/hf-protocol.ts +76 -0
  954. package/src/core/components/functional/infer/hugging-face/hf-registry.ts +457 -0
  955. package/src/core/components/functional/infer/hugging-face/hf-schema.spec.ts +124 -0
  956. package/src/core/components/functional/infer/hugging-face/hf-schema.ts +390 -0
  957. package/src/core/components/functional/infer/hugging-face/hf-worker-runtime.spec.ts +147 -0
  958. package/src/core/components/functional/infer/hugging-face/hf-worker-runtime.ts +381 -0
  959. package/src/core/components/functional/infer/hugging-face/hugging-face-infer.md +304 -0
  960. package/src/core/components/functional/infer/hugging-face/hugging-face-infer.ts +202 -0
  961. package/src/core/components/functional/infer/hugging-face/hugging-face.ts +282 -0
  962. package/src/core/components/functional/infer/hugging-face/types.ts +325 -0
  963. package/src/core/components/functional/jsonata/jsonata.md +4 -2
  964. package/src/core/components/functional/sdui/sdui.md +2 -2
  965. package/src/core/components/functional/sdui/sdui.ts +40 -29
  966. package/src/core/components/functional/shader/gl-runtime.ts +782 -0
  967. package/src/core/components/functional/shader/shader.md +207 -0
  968. package/src/core/components/functional/shader/shader.spec.ts +288 -0
  969. package/src/core/components/functional/shader/shader.ts +1569 -0
  970. package/src/core/components/functional/shader/shadertoy-prelude.ts +52 -0
  971. package/src/core/components/functional/shader/types.ts +446 -0
  972. package/src/core/components/functional/webgpu/canvas2d-fallback.ts +125 -0
  973. package/src/core/components/functional/webgpu/form-bind.ts +116 -0
  974. package/src/core/components/functional/webgpu/gl-fallback.ts +158 -0
  975. package/src/core/components/functional/webgpu/gpu-runtime.ts +349 -0
  976. package/src/core/components/functional/webgpu/helpers.ts +47 -0
  977. package/src/core/components/functional/webgpu/out-frame.ts +137 -0
  978. package/src/core/components/functional/webgpu/particles-runtime.ts +426 -0
  979. package/src/core/components/functional/webgpu/pointer.ts +85 -0
  980. package/src/core/components/functional/webgpu/types.ts +96 -0
  981. package/src/core/components/functional/webgpu/webgpu.md +75 -0
  982. package/src/core/components/functional/webgpu/webgpu.spec.ts +141 -0
  983. package/src/core/components/functional/webgpu/webgpu.ts +659 -0
  984. package/src/core/components/functional/webgpu/wgsl-prelude.ts +81 -0
  985. package/src/core/utils/HTML.ts +107 -74
  986. package/src/core/utils/PublisherProxy.ts +29 -6
  987. package/src/core/utils/jsonataHelpers.ts +36 -0
  988. package/src/core/utils/mediaRef.spec.ts +85 -0
  989. package/src/core/utils/mediaRef.ts +130 -0
  990. package/src/core/utils/similarity.spec.ts +34 -0
  991. package/src/core/utils/similarity.ts +54 -0
  992. package/src/docs/_core-concept/dataFlow.md +2 -0
  993. package/src/docs/_getting-started/cdn-addons.md +73 -0
  994. package/src/docs/_getting-started/create-a-component.md +1 -1
  995. package/src/docs/_misc/visual-stack.md +49 -0
  996. package/src/docs/components/docs-demo-sources.ts +359 -39
  997. package/src/docs/docs.ts +6 -0
  998. package/src/docs/example/docs-3d-demos.ts +8 -0
  999. package/src/docs/example/docs-3d-form.ts +95 -0
  1000. package/src/docs/example/docs-3d-orbit.ts +44 -0
  1001. package/src/docs/example/docs-3d-out.ts +56 -0
  1002. package/src/docs/example/docs-3d-shared.ts +15 -0
  1003. package/src/docs/example/docs-harris-webgpu-demo.ts +482 -0
  1004. package/src/docs/example/docs-hugging-face-demos.ts +516 -0
  1005. package/src/docs/example/docs-shader-demos.ts +357 -0
  1006. package/src/docs/example/docs-visual-stack-demo.ts +394 -0
  1007. package/src/docs/example/docs-webgpu-demo.ts +77 -0
  1008. package/src/docs/navigation/navigation.ts +25 -0
  1009. package/src/docs/search/docs-search.json +899 -2319
  1010. package/src/tsconfig.json +481 -301
  1011. package/src/tsconfig.tsbuildinfo +1 -1
  1012. package/vite/config.js +42 -30
  1013. package/vite.config.mts +51 -12
@@ -0,0 +1,1593 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { css, html, LitElement } from "lit";
8
+ import { customElement, property, state } from "lit/decorators.js";
9
+ import HTML from "@supersoniks/concorde/core/utils/HTML";
10
+ import { revokeMediaUrls, toMediaUrl } from "@supersoniks/concorde/core/utils/mediaRef";
11
+ import { PublisherManager } from "@supersoniks/concorde/utils";
12
+ import { parseChannelSource, ShaderToyRuntime, } from "./gl-runtime";
13
+ import { ShaderCompileError, findPeaks, meanRgba, parseExtractPass, parseHoverParam, roiToPixels, } from "./types";
14
+ const tagName = "sonic-shader";
15
+ const MAX_PATCH_PX = 128;
16
+ /**
17
+ * Champs méta publiés vers le out-dataProvider.
18
+ * `param0…3` sont exclus du gate « consommateur » : un `sonic-input name="param0"`
19
+ * ne doit pas activer la publication (sinon write-back → reset des champs form).
20
+ */
21
+ const OUT_META_KEYS = [
22
+ "time",
23
+ "frame",
24
+ "mouseX",
25
+ "mouseY",
26
+ "hovering",
27
+ ];
28
+ const OUT_PARAM_KEYS = ["param0", "param1", "param2", "param3"];
29
+ /** Champs canaux lisibles depuis dataProvider (string | SonicMediaRef). */
30
+ const CHANNEL_FORM_KEYS = [
31
+ "channel0",
32
+ "channel1",
33
+ "channel2",
34
+ "channel3",
35
+ "imageCh0",
36
+ "imageCh1",
37
+ "imageCh2",
38
+ "imageCh3",
39
+ "bufferACh0",
40
+ "bufferACh1",
41
+ "bufferACh2",
42
+ "bufferACh3",
43
+ "bufferBCh0",
44
+ "bufferBCh1",
45
+ "bufferBCh2",
46
+ "bufferBCh3",
47
+ "bufferCCh0",
48
+ "bufferCCh1",
49
+ "bufferCCh2",
50
+ "bufferCCh3",
51
+ "bufferDCh0",
52
+ "bufferDCh1",
53
+ "bufferDCh2",
54
+ "bufferDCh3",
55
+ ];
56
+ /** Champs sample (coûteux : readPixels). */
57
+ const OUT_SAMPLE_KEYS = [
58
+ "sampleR",
59
+ "sampleG",
60
+ "sampleB",
61
+ "sampleA",
62
+ "sampleLuma",
63
+ ];
64
+ const EXTRACT_OUT_KEYS = ["extracts", "extractCount", "extractSeq"];
65
+ function prefersReducedMotion() {
66
+ return (typeof matchMedia === "function" &&
67
+ matchMedia("(prefers-reduced-motion: reduce)").matches);
68
+ }
69
+ function toNum(v, fallback) {
70
+ if (typeof v === "number" && Number.isFinite(v))
71
+ return v;
72
+ if (typeof v === "string" && v.trim() !== "") {
73
+ const n = Number(v);
74
+ if (Number.isFinite(n))
75
+ return n;
76
+ }
77
+ return fallback;
78
+ }
79
+ /** Valeur canal depuis DP : string (url ou buffer-a) | MediaRef → url. */
80
+ function channelFormValue(value) {
81
+ if (value === null || value === "")
82
+ return "";
83
+ if (typeof value === "string")
84
+ return value.trim();
85
+ const url = toMediaUrl(value);
86
+ if (url)
87
+ return url;
88
+ if (value && typeof value === "object")
89
+ return undefined;
90
+ return "";
91
+ }
92
+ function parseRois(value) {
93
+ if (!Array.isArray(value))
94
+ return [];
95
+ const out = [];
96
+ for (const raw of value) {
97
+ if (!raw || typeof raw !== "object")
98
+ continue;
99
+ const o = raw;
100
+ const x = toNum(o.x, NaN);
101
+ const y = toNum(o.y, NaN);
102
+ if (!Number.isFinite(x) || !Number.isFinite(y))
103
+ continue;
104
+ const roi = { x, y, source: "manual" };
105
+ if (typeof o.id === "string" && o.id)
106
+ roi.id = o.id;
107
+ if ("w" in o)
108
+ roi.w = toNum(o.w, 0);
109
+ if ("h" in o)
110
+ roi.h = toNum(o.h, 0);
111
+ if ("patch" in o)
112
+ roi.patch = toNum(o.patch, 16);
113
+ out.push(roi);
114
+ }
115
+ return out;
116
+ }
117
+ const BYTES_PER_PIXEL = 4;
118
+ async function rgbaToBlobUrl(data, width, height) {
119
+ if (typeof document === "undefined" || width < 1 || height < 1)
120
+ return null;
121
+ try {
122
+ const canvas = document.createElement("canvas");
123
+ canvas.width = width;
124
+ canvas.height = height;
125
+ const ctx = canvas.getContext("2d");
126
+ if (!ctx)
127
+ return null;
128
+ // WebGL readPixels is bottom-up; flip for canvas display.
129
+ const imageData = ctx.createImageData(width, height);
130
+ const dst = imageData.data;
131
+ for (let y = 0; y < height; y++) {
132
+ const srcRow = (height - 1 - y) * width * BYTES_PER_PIXEL;
133
+ const dstRow = y * width * BYTES_PER_PIXEL;
134
+ for (let i = 0; i < width * BYTES_PER_PIXEL; i++) {
135
+ dst[dstRow + i] = data[srcRow + i];
136
+ }
137
+ }
138
+ ctx.putImageData(imageData, 0, 0);
139
+ const blob = await new Promise((resolve) => {
140
+ try {
141
+ canvas.toBlob((b) => resolve(b), "image/png");
142
+ }
143
+ catch {
144
+ resolve(null);
145
+ }
146
+ });
147
+ if (blob)
148
+ return URL.createObjectURL(blob);
149
+ // Fallback (certs navigateurs / contexts bloquent toBlob)
150
+ const dataUrl = canvas.toDataURL("image/png");
151
+ return dataUrl || null;
152
+ }
153
+ catch {
154
+ return null;
155
+ }
156
+ }
157
+ function assignExtractMediaUrls(item, url) {
158
+ item.blobUrl = url;
159
+ item.url = url;
160
+ }
161
+ /**
162
+ * ShaderToy-compatible multipass renderer (Image + Buffer A–D + Common).
163
+ * Opt-in: import `@supersoniks/concorde/shader`.
164
+ *
165
+ * Optional `dataProvider` (attr or ancestor `dataProvider` / `formDataProvider`):
166
+ * maps form fields `param0`…`param3` → uniforms `uParam0`…`uParam3`.
167
+ */
168
+ let SonicShader = class SonicShader extends LitElement {
169
+ constructor() {
170
+ super(...arguments);
171
+ this.image = "";
172
+ this.bufferA = "";
173
+ this.bufferB = "";
174
+ this.bufferC = "";
175
+ this.bufferD = "";
176
+ this.common = "";
177
+ this.channel0 = "";
178
+ this.channel1 = "";
179
+ this.channel2 = "";
180
+ this.channel3 = "";
181
+ this.imageCh0 = "";
182
+ this.imageCh1 = "";
183
+ this.imageCh2 = "";
184
+ this.imageCh3 = "";
185
+ this.bufferACh0 = "";
186
+ this.bufferACh1 = "";
187
+ this.bufferACh2 = "";
188
+ this.bufferACh3 = "";
189
+ this.bufferBCh0 = "";
190
+ this.bufferBCh1 = "";
191
+ this.bufferBCh2 = "";
192
+ this.bufferBCh3 = "";
193
+ this.bufferCCh0 = "";
194
+ this.bufferCCh1 = "";
195
+ this.bufferCCh2 = "";
196
+ this.bufferCCh3 = "";
197
+ this.bufferDCh0 = "";
198
+ this.bufferDCh1 = "";
199
+ this.bufferDCh2 = "";
200
+ this.bufferDCh3 = "";
201
+ this.play = true;
202
+ /**
203
+ * N’anime que pendant le hover (ou tant que le param hover n’a pas fini
204
+ * sa transition). Utile avec beaucoup d’instances.
205
+ */
206
+ this.playOnHover = false;
207
+ this.mouse = true;
208
+ /**
209
+ * `direct` — `iMouse.xy` = pointeur (ShaderToy).
210
+ * `target` — le pointeur est une cible ; `iMouse.xy` suit (vitesse ∝ distance).
211
+ */
212
+ this.mouseMode = "direct";
213
+ /**
214
+ * Vitesse de poursuite en mode `target` (1/s). Plus haut = plus snappy.
215
+ * Déplacement ≈ `(cible − pos) * (1 − e^(−speed·dt))`.
216
+ */
217
+ this.mouseSpeed = 8;
218
+ /**
219
+ * Anime `uParamN` au rollover / roll-out (0↔1). Ex. `hover-param="0"` ou `"param0"`.
220
+ * Le shader lit `uParamN` pour mixer l’effet on/off.
221
+ */
222
+ this.hoverParam = "";
223
+ /** Vitesse d’easing hover on/off (1/s, défaut 10). */
224
+ this.hoverSpeed = 10;
225
+ /**
226
+ * Libère le contexte WebGL hors viewport (défaut true).
227
+ * Les navigateurs limitent ~8–16 contextes.
228
+ */
229
+ this.releaseOffscreen = true;
230
+ this.dprMax = 2;
231
+ /** Generic float uniforms `uParam0`…`uParam3` (no shader rebuild). */
232
+ this.param0 = 0;
233
+ this.param1 = 0;
234
+ this.param2 = 0;
235
+ this.param3 = 0;
236
+ /**
237
+ * Publisher id. Fields `param0`…`param3` feed `uParam0`…`uParam3`.
238
+ * Falls back to ancestor `dataProvider` or `formDataProvider` when unset.
239
+ * Also used as default out publisher (see `outDataProvider`).
240
+ */
241
+ this.dataProvider = "";
242
+ /**
243
+ * Publisher de sortie. Défaut : même id que `dataProvider` / ancêtre.
244
+ * Écrit mouseX/Y, hovering, frame (+ sample* si `sample`).
245
+ * Sur DP partagé form+out : ne réécrit pas param0…3 (sauf slot hover-param).
246
+ * Paresseux : pas de set / readPixels sans lecteur méta/sample ni listener `out`.
247
+ */
248
+ this.outDataProvider = "";
249
+ /**
250
+ * Active le sample couleur → sampleR/G/B/A + sampleLuma.
251
+ * `readPixels` uniquement s’il y a un consommateur out (DP ou event `out`).
252
+ */
253
+ this.sample = false;
254
+ /** Intervalle de publication / event `out` (ms, défaut 80). */
255
+ this.outInterval = 80;
256
+ /** Active l’extraction de patches / singularités. */
257
+ this.extract = false;
258
+ /** Throttle extract ms (défaut = `out-interval` ou 100). */
259
+ this.extractInterval = 0;
260
+ /** Pass où lire les pixels couleur : `image` \| `buffer-a`… */
261
+ this.extractSource = "image";
262
+ /** Pass mask pour détection : `none` \| `buffer-a`… */
263
+ this.extractMask = "none";
264
+ /** Seuil 0–1 sur le mask (défaut 0.5). */
265
+ this.extractThreshold = 0.5;
266
+ /** Cap N items détectés (défaut 8). */
267
+ this.extractMax = 8;
268
+ /** Taille patch px par défaut pour un point (défaut 16). */
269
+ this.extractPatch = 16;
270
+ /** Génère des blob URLs par item. */
271
+ this.extractBitmaps = false;
272
+ /** Publisher dédié extract (défaut = out / dataProvider). */
273
+ this.extractDataProvider = "";
274
+ /**
275
+ * Force CSS aspect-ratio (e.g. `"16/9"`, `"1"`).
276
+ * When empty, uses channel0 (or first texture) dimensions.
277
+ */
278
+ this.aspectRatio = "";
279
+ this.errorMessage = "";
280
+ this.runtime = null;
281
+ this.raf = 0;
282
+ this.startTime = 0;
283
+ this.lastTime = 0;
284
+ this.frame = 0;
285
+ this.mouseVec = [0, 0, 0, 0];
286
+ /** Cible pointeur (px drawing buffer, origine bas-gauche). */
287
+ this.mouseTarget = [0, 0];
288
+ /** Position suivie → `iMouse.xy` en mode target. */
289
+ this.mouseFollow = [0, 0];
290
+ this.mouseHasPointer = false;
291
+ this.pointerDown = false;
292
+ this.hovering = false;
293
+ this.hoverGoal = 0;
294
+ /**
295
+ * Valeur easée 0↔1 pour le slot `hover-param`.
296
+ * Privée (pas une @property) pour éviter un requestUpdate Lit à chaque frame
297
+ * — sinon re-renders / write-back dataProvider → enter/leave en boucle.
298
+ */
299
+ this.hoverMix = 0;
300
+ this.leaveRaf = 0;
301
+ /** Compteur d’écouteurs `out` (publication paresseuse). */
302
+ this.outEventListeners = 0;
303
+ /** Compteur d’écouteurs `extract`. */
304
+ this.extractEventListeners = 0;
305
+ this.releasing = false;
306
+ this.inView = true;
307
+ this.resizeObserver = null;
308
+ this.intersectionObserver = null;
309
+ this.rebuildToken = 0;
310
+ this.ready = false;
311
+ this.formPublisher = null;
312
+ this.outPublisher = null;
313
+ this.extractPublisher = null;
314
+ this.lastOutAt = 0;
315
+ this.lastExtractAt = 0;
316
+ this.manualRois = [];
317
+ this.lastBlobUrls = [];
318
+ this.pendingRevokeUrls = [];
319
+ this.extractRunning = false;
320
+ this.extractSeq = 0;
321
+ this.onFormMutation = () => {
322
+ const data = (this.formPublisher?.get() ?? {});
323
+ this.applyFormParams(data);
324
+ };
325
+ this.onContextLost = (e) => {
326
+ e.preventDefault();
327
+ if (this.releasing)
328
+ return;
329
+ this.rebuildToken++;
330
+ this.stopLoop();
331
+ this.ready = false;
332
+ this.runtime = null;
333
+ };
334
+ this.onContextRestored = () => {
335
+ if (this.releasing || !this.inView)
336
+ return;
337
+ void this.ensureRuntime();
338
+ };
339
+ this.loop = () => {
340
+ this.raf = requestAnimationFrame(this.loop);
341
+ this.drawFrame(performance.now());
342
+ // play-on-hover : arrêter une fois la transition terminée
343
+ if (this.playOnHover && !this.hovering && this.hoverSettled()) {
344
+ this.stopLoop();
345
+ this.runtime?.setVideosPlaying(false);
346
+ }
347
+ };
348
+ this.onPointerMove = (e) => {
349
+ if (!this.mouse)
350
+ return;
351
+ const { x, y } = this.localPointer(e);
352
+ this.setPointerTarget(x, y);
353
+ if (this.pointerDown) {
354
+ this.mouseVec[2] = x;
355
+ this.mouseVec[3] = y;
356
+ }
357
+ };
358
+ this.onPointerDown = (e) => {
359
+ if (!this.mouse)
360
+ return;
361
+ this.pointerDown = true;
362
+ this.setPointerCapture?.(e.pointerId);
363
+ const { x, y } = this.localPointer(e);
364
+ this.setPointerTarget(x, y, true);
365
+ this.mouseVec[2] = x;
366
+ this.mouseVec[3] = y;
367
+ };
368
+ this.onPointerUp = (e) => {
369
+ if (!this.mouse)
370
+ return;
371
+ this.pointerDown = false;
372
+ const { x, y } = this.localPointer(e);
373
+ this.setPointerTarget(x, y);
374
+ this.mouseVec[2] = -Math.abs(this.mouseVec[2]);
375
+ this.mouseVec[3] = -Math.abs(this.mouseVec[3]);
376
+ };
377
+ this.onPointerEnter = () => {
378
+ if (this.leaveRaf) {
379
+ cancelAnimationFrame(this.leaveRaf);
380
+ this.leaveRaf = 0;
381
+ }
382
+ this.hovering = true;
383
+ this.hoverGoal = 1;
384
+ this.syncPlayback();
385
+ };
386
+ this.onPointerLeave = () => {
387
+ // Différer : un leave parasite (re-render / enfant shadow) suivi d’un
388
+ // re-enter immédiat provoquait activation↔désactivation en boucle.
389
+ if (this.leaveRaf)
390
+ cancelAnimationFrame(this.leaveRaf);
391
+ this.leaveRaf = requestAnimationFrame(() => {
392
+ this.leaveRaf = 0;
393
+ if (!this.isConnected || this.matches(":hover"))
394
+ return;
395
+ this.hovering = false;
396
+ this.hoverGoal = 0;
397
+ this.pointerDown = false;
398
+ this.syncPlayback();
399
+ });
400
+ };
401
+ }
402
+ connectedCallback() {
403
+ super.connectedCallback();
404
+ this.addEventListener("pointermove", this.onPointerMove);
405
+ this.addEventListener("pointerdown", this.onPointerDown);
406
+ this.addEventListener("pointerup", this.onPointerUp);
407
+ this.addEventListener("pointerleave", this.onPointerLeave);
408
+ this.addEventListener("pointerenter", this.onPointerEnter);
409
+ this.bindFormProvider();
410
+ this.bindOutPublisher();
411
+ this.bindExtractPublisher();
412
+ }
413
+ /**
414
+ * Suit les listeners `out` / `extract` pour ne publier (et ne readPixels)
415
+ * que s’il y a un consommateur — zéro coût tant que personne ne lit.
416
+ */
417
+ addEventListener(type, listener, options) {
418
+ if (type === "out" && listener)
419
+ this.outEventListeners++;
420
+ if (type === "extract" && listener)
421
+ this.extractEventListeners++;
422
+ super.addEventListener(type, listener, options);
423
+ }
424
+ removeEventListener(type, listener, options) {
425
+ if (type === "out" && listener) {
426
+ this.outEventListeners = Math.max(0, this.outEventListeners - 1);
427
+ }
428
+ if (type === "extract" && listener) {
429
+ this.extractEventListeners = Math.max(0, this.extractEventListeners - 1);
430
+ }
431
+ super.removeEventListener(type, listener, options);
432
+ }
433
+ disconnectedCallback() {
434
+ super.disconnectedCallback();
435
+ this.removeEventListener("pointermove", this.onPointerMove);
436
+ this.removeEventListener("pointerdown", this.onPointerDown);
437
+ this.removeEventListener("pointerup", this.onPointerUp);
438
+ this.removeEventListener("pointerleave", this.onPointerLeave);
439
+ this.removeEventListener("pointerenter", this.onPointerEnter);
440
+ if (this.leaveRaf) {
441
+ cancelAnimationFrame(this.leaveRaf);
442
+ this.leaveRaf = 0;
443
+ }
444
+ this.unbindFormProvider();
445
+ this.unbindContextEvents();
446
+ this.revokeBlobUrls();
447
+ for (const url of this.pendingRevokeUrls) {
448
+ try {
449
+ URL.revokeObjectURL(url);
450
+ }
451
+ catch {
452
+ /* ignore */
453
+ }
454
+ }
455
+ this.pendingRevokeUrls = [];
456
+ this.stopLoop();
457
+ this.resizeObserver?.disconnect();
458
+ this.intersectionObserver?.disconnect();
459
+ this.rebuildToken++;
460
+ this.ready = false;
461
+ this.releasing = true;
462
+ this.runtime?.dispose(true); // libère le slot navigateur
463
+ this.runtime = null;
464
+ this.outPublisher = null;
465
+ this.releasing = false;
466
+ }
467
+ firstUpdated() {
468
+ this.resizeObserver = new ResizeObserver(() => this.syncSize());
469
+ this.resizeObserver.observe(this);
470
+ this.intersectionObserver = new IntersectionObserver((entries) => {
471
+ this.inView = entries.some((e) => e.isIntersecting);
472
+ this.syncVisibility();
473
+ }, { threshold: 0 });
474
+ this.intersectionObserver.observe(this);
475
+ this.bindFormProvider();
476
+ this.bindOutPublisher();
477
+ this.bindExtractPublisher();
478
+ requestAnimationFrame(() => {
479
+ if (this.inView || !this.releaseOffscreen) {
480
+ void this.ensureRuntime();
481
+ }
482
+ });
483
+ }
484
+ updated(changed) {
485
+ if (!this.runtime)
486
+ return;
487
+ const shaderKeys = [
488
+ "image",
489
+ "bufferA",
490
+ "bufferB",
491
+ "bufferC",
492
+ "bufferD",
493
+ "common",
494
+ "channel0",
495
+ "channel1",
496
+ "channel2",
497
+ "channel3",
498
+ "imageCh0",
499
+ "imageCh1",
500
+ "imageCh2",
501
+ "imageCh3",
502
+ "bufferACh0",
503
+ "bufferACh1",
504
+ "bufferACh2",
505
+ "bufferACh3",
506
+ "bufferBCh0",
507
+ "bufferBCh1",
508
+ "bufferBCh2",
509
+ "bufferBCh3",
510
+ "bufferCCh0",
511
+ "bufferCCh1",
512
+ "bufferCCh2",
513
+ "bufferCCh3",
514
+ "bufferDCh0",
515
+ "bufferDCh1",
516
+ "bufferDCh2",
517
+ "bufferDCh3",
518
+ ];
519
+ if (shaderKeys.some((k) => changed.has(k))) {
520
+ void this.rebuild();
521
+ }
522
+ if (changed.has("play")) {
523
+ this.syncPlayback();
524
+ }
525
+ if (changed.has("dataProvider") ||
526
+ changed.has("outDataProvider") ||
527
+ changed.has("extractDataProvider")) {
528
+ this.bindFormProvider();
529
+ this.bindOutPublisher();
530
+ this.bindExtractPublisher();
531
+ }
532
+ if (changed.has("aspectRatio")) {
533
+ this.applyAspectRatio();
534
+ }
535
+ }
536
+ applyAspectRatio(textureUrl) {
537
+ const forced = this.aspectRatio.trim();
538
+ if (forced) {
539
+ this.style.setProperty("--sonic-shader-ar", forced.includes("/") ? forced : forced.replace(":", " / "));
540
+ return;
541
+ }
542
+ const url = textureUrl || this.channel0;
543
+ const size = url ? this.runtime?.getTextureSize(url) : null;
544
+ if (size) {
545
+ this.style.setProperty("--sonic-shader-ar", `${size.width} / ${size.height}`);
546
+ return;
547
+ }
548
+ this.style.removeProperty("--sonic-shader-ar");
549
+ }
550
+ resolveFormProviderId() {
551
+ const own = this.dataProvider?.trim();
552
+ if (own)
553
+ return own;
554
+ return (HTML.getAncestorAttributeValue(this, "dataProvider") ||
555
+ HTML.getAncestorAttributeValue(this, "formDataProvider") ||
556
+ "");
557
+ }
558
+ unbindFormProvider() {
559
+ if (this.formPublisher) {
560
+ // Nested form fields (sonic-input) mutate children — root onAssign
561
+ // does not fire; onInternalMutation does.
562
+ this.formPublisher.offInternalMutation(this.onFormMutation);
563
+ this.formPublisher = null;
564
+ }
565
+ }
566
+ bindFormProvider() {
567
+ this.unbindFormProvider();
568
+ const id = this.resolveFormProviderId();
569
+ if (!id)
570
+ return;
571
+ this.formPublisher = PublisherManager.get(id);
572
+ this.formPublisher.onInternalMutation(this.onFormMutation);
573
+ this.onFormMutation();
574
+ }
575
+ resolveOutProviderId() {
576
+ const own = this.outDataProvider?.trim();
577
+ if (own)
578
+ return own;
579
+ return this.resolveFormProviderId();
580
+ }
581
+ bindOutPublisher() {
582
+ const id = this.resolveOutProviderId();
583
+ this.outPublisher = id ? PublisherManager.get(id) : null;
584
+ }
585
+ resolveExtractProviderId() {
586
+ const own = this.extractDataProvider?.trim();
587
+ if (own)
588
+ return own;
589
+ return this.resolveOutProviderId();
590
+ }
591
+ bindExtractPublisher() {
592
+ const id = this.resolveExtractProviderId();
593
+ this.extractPublisher = id ? PublisherManager.get(id) : null;
594
+ }
595
+ applyFormParams(value) {
596
+ const data = value && typeof value === "object"
597
+ ? value
598
+ : {};
599
+ // Le slot hover-param est piloté en interne : ne pas le réécrire depuis le
600
+ // publisher (évite la boucle out → mutation → param ↔ hoverGoal).
601
+ const hoverSlot = parseHoverParam(this.hoverParam);
602
+ if (hoverSlot !== 0)
603
+ this.param0 = toNum(data.param0, this.param0);
604
+ if (hoverSlot !== 1)
605
+ this.param1 = toNum(data.param1, this.param1);
606
+ if (hoverSlot !== 2)
607
+ this.param2 = toNum(data.param2, this.param2);
608
+ if (hoverSlot !== 3)
609
+ this.param3 = toNum(data.param3, this.param3);
610
+ if ("mouseSpeed" in data) {
611
+ this.mouseSpeed = toNum(data.mouseSpeed, this.mouseSpeed);
612
+ }
613
+ if ("hoverSpeed" in data) {
614
+ this.hoverSpeed = toNum(data.hoverSpeed, this.hoverSpeed);
615
+ }
616
+ if ("extractThreshold" in data) {
617
+ this.extractThreshold = toNum(data.extractThreshold, this.extractThreshold);
618
+ }
619
+ if ("extractMax" in data) {
620
+ this.extractMax = toNum(data.extractMax, this.extractMax);
621
+ }
622
+ if ("extractPatch" in data) {
623
+ this.extractPatch = toNum(data.extractPatch, this.extractPatch);
624
+ }
625
+ if ("rois" in data) {
626
+ this.manualRois = parseRois(data.rois);
627
+ }
628
+ for (const key of CHANNEL_FORM_KEYS) {
629
+ if (!(key in data))
630
+ continue;
631
+ const next = channelFormValue(data[key]);
632
+ if (next === undefined)
633
+ continue;
634
+ if (this[key] !== next) {
635
+ this[key] = next;
636
+ }
637
+ }
638
+ }
639
+ /** Params GPU : remplace le slot `hover-param` par `hoverMix`. */
640
+ effectiveParams() {
641
+ const params = [
642
+ this.param0,
643
+ this.param1,
644
+ this.param2,
645
+ this.param3,
646
+ ];
647
+ const slot = parseHoverParam(this.hoverParam);
648
+ if (slot !== null)
649
+ params[slot] = this.hoverMix;
650
+ return params;
651
+ }
652
+ /**
653
+ * Hors viewport : libère textures / FBO / programmes, **sans** loseContext
654
+ * (sinon le même canvas ne peut plus compiler au retour).
655
+ * Le slot navigateur est libéré au disconnect (`dispose(true)`).
656
+ */
657
+ releaseRuntime() {
658
+ this.rebuildToken++;
659
+ this.stopLoop();
660
+ this.ready = false;
661
+ this.releasing = true;
662
+ this.unbindContextEvents();
663
+ this.runtime?.dispose(false);
664
+ this.runtime = null;
665
+ this.releasing = false;
666
+ }
667
+ getCanvas() {
668
+ return (this.renderRoot?.querySelector("canvas") ??
669
+ null);
670
+ }
671
+ bindContextEvents() {
672
+ const canvas = this.getCanvas();
673
+ canvas?.addEventListener("webglcontextlost", this.onContextLost);
674
+ canvas?.addEventListener("webglcontextrestored", this.onContextRestored);
675
+ }
676
+ unbindContextEvents() {
677
+ const canvas = this.getCanvas();
678
+ canvas?.removeEventListener("webglcontextlost", this.onContextLost);
679
+ canvas?.removeEventListener("webglcontextrestored", this.onContextRestored);
680
+ }
681
+ async ensureRuntime() {
682
+ if (this.runtime && !this.runtime.isLost)
683
+ return;
684
+ this.runtime = null;
685
+ await this.updateComplete;
686
+ if (!this.isConnected || (!this.inView && this.releaseOffscreen))
687
+ return;
688
+ const canvas = this.getCanvas();
689
+ if (!canvas)
690
+ return;
691
+ try {
692
+ this.errorMessage = "";
693
+ this.runtime = new ShaderToyRuntime(canvas);
694
+ this.bindContextEvents();
695
+ this.syncSize();
696
+ await this.rebuild();
697
+ }
698
+ catch (err) {
699
+ this.emitError(err);
700
+ }
701
+ }
702
+ syncVisibility() {
703
+ if (!this.inView && this.releaseOffscreen) {
704
+ this.releaseRuntime();
705
+ return;
706
+ }
707
+ if (this.inView && (!this.runtime || this.runtime.isLost)) {
708
+ void this.ensureRuntime();
709
+ return;
710
+ }
711
+ this.syncPlayback();
712
+ }
713
+ syncSize() {
714
+ if (!this.runtime)
715
+ return;
716
+ const rect = this.getBoundingClientRect();
717
+ const cssW = Math.max(rect.width, this.clientWidth, 1);
718
+ const cssH = Math.max(rect.height, this.clientHeight, 1);
719
+ const dpr = Math.min(window.devicePixelRatio || 1, this.dprMax);
720
+ this.runtime.resize(cssW * dpr, cssH * dpr);
721
+ if (this.ready) {
722
+ this.drawFrame(performance.now());
723
+ }
724
+ }
725
+ buildChannels(pass) {
726
+ const fallbacks = [
727
+ this.channel0,
728
+ this.channel1,
729
+ this.channel2,
730
+ this.channel3,
731
+ ];
732
+ const overrides = pass === "image"
733
+ ? [this.imageCh0, this.imageCh1, this.imageCh2, this.imageCh3]
734
+ : pass === "bufferA"
735
+ ? [
736
+ this.bufferACh0,
737
+ this.bufferACh1,
738
+ this.bufferACh2,
739
+ this.bufferACh3,
740
+ ]
741
+ : pass === "bufferB"
742
+ ? [
743
+ this.bufferBCh0,
744
+ this.bufferBCh1,
745
+ this.bufferBCh2,
746
+ this.bufferBCh3,
747
+ ]
748
+ : pass === "bufferC"
749
+ ? [
750
+ this.bufferCCh0,
751
+ this.bufferCCh1,
752
+ this.bufferCCh2,
753
+ this.bufferCCh3,
754
+ ]
755
+ : [
756
+ this.bufferDCh0,
757
+ this.bufferDCh1,
758
+ this.bufferDCh2,
759
+ this.bufferDCh3,
760
+ ];
761
+ return [0, 1, 2, 3].map((i) => parseChannelSource(overrides[i], fallbacks[i]));
762
+ }
763
+ collectUrls(channels) {
764
+ const urls = [];
765
+ for (const chs of channels.values()) {
766
+ for (const c of chs) {
767
+ if (c.kind === "url")
768
+ urls.push(c.url);
769
+ }
770
+ }
771
+ return urls;
772
+ }
773
+ async rebuild() {
774
+ if (!this.runtime || this.runtime.isLost || !this.image.trim())
775
+ return;
776
+ const token = ++this.rebuildToken;
777
+ this.errorMessage = "";
778
+ const sources = {
779
+ common: this.common,
780
+ image: this.image,
781
+ bufferA: this.bufferA,
782
+ bufferB: this.bufferB,
783
+ bufferC: this.bufferC,
784
+ bufferD: this.bufferD,
785
+ };
786
+ const channels = new Map();
787
+ for (const pass of [
788
+ "bufferA",
789
+ "bufferB",
790
+ "bufferC",
791
+ "bufferD",
792
+ "image",
793
+ ]) {
794
+ channels.set(pass, this.buildChannels(pass));
795
+ }
796
+ try {
797
+ this.syncSize();
798
+ const urls = this.collectUrls(channels);
799
+ await this.runtime.ensureTextures(urls);
800
+ if (token !== this.rebuildToken || !this.runtime || this.runtime.isLost) {
801
+ return;
802
+ }
803
+ this.applyAspectRatio(this.channel0 || urls[0]);
804
+ this.syncSize();
805
+ this.runtime.setSources(sources, channels);
806
+ if (token !== this.rebuildToken || !this.runtime || this.runtime.isLost) {
807
+ return;
808
+ }
809
+ this.ready = true;
810
+ this.startTime = performance.now();
811
+ this.lastTime = this.startTime;
812
+ this.frame = 0;
813
+ this.drawFrame(this.startTime);
814
+ this.syncPlayback();
815
+ }
816
+ catch (err) {
817
+ if (token !== this.rebuildToken)
818
+ return;
819
+ this.ready = false;
820
+ this.stopLoop();
821
+ this.emitError(err);
822
+ }
823
+ }
824
+ emitError(err) {
825
+ const message = err instanceof ShaderCompileError
826
+ ? err.message
827
+ : err instanceof Error
828
+ ? err.message
829
+ : String(err);
830
+ this.errorMessage = message;
831
+ this.dispatchEvent(new CustomEvent("error", {
832
+ detail: {
833
+ message,
834
+ pass: err instanceof ShaderCompileError ? err.pass : undefined,
835
+ infoLog: err instanceof ShaderCompileError ? err.infoLog : undefined,
836
+ },
837
+ bubbles: true,
838
+ composed: true,
839
+ }));
840
+ }
841
+ shouldAnimate() {
842
+ if (!this.play ||
843
+ !this.ready ||
844
+ !this.inView ||
845
+ prefersReducedMotion() ||
846
+ !this.runtime) {
847
+ return false;
848
+ }
849
+ if (this.playOnHover) {
850
+ return this.hovering || !this.hoverSettled();
851
+ }
852
+ return true;
853
+ }
854
+ hoverSettled() {
855
+ if (parseHoverParam(this.hoverParam) === null)
856
+ return true;
857
+ return Math.abs(this.hoverMix - this.hoverGoal) < 0.002;
858
+ }
859
+ syncPlayback() {
860
+ if (this.shouldAnimate()) {
861
+ this.runtime?.setVideosPlaying(true);
862
+ if (!this.raf) {
863
+ this.lastTime = performance.now();
864
+ this.loop();
865
+ }
866
+ }
867
+ else {
868
+ this.stopLoop();
869
+ this.runtime?.setVideosPlaying(false);
870
+ if (this.ready)
871
+ this.drawFrame(performance.now());
872
+ }
873
+ }
874
+ stopLoop() {
875
+ if (this.raf) {
876
+ cancelAnimationFrame(this.raf);
877
+ this.raf = 0;
878
+ }
879
+ }
880
+ drawFrame(now) {
881
+ if (!this.runtime || !this.ready)
882
+ return;
883
+ const time = (now - this.startTime) / 1000;
884
+ const timeDelta = Math.max(0, (now - this.lastTime) / 1000);
885
+ this.lastTime = now;
886
+ this.advanceMouseFollow(timeDelta);
887
+ this.advanceHover(timeDelta);
888
+ const params = this.effectiveParams();
889
+ this.runtime.render({
890
+ time,
891
+ timeDelta,
892
+ frame: this.frame++,
893
+ mouse: this.mouseVec,
894
+ params,
895
+ });
896
+ this.maybePublishOut(now, time, params);
897
+ void this.maybeExtract(now, time);
898
+ }
899
+ round3(n) {
900
+ return Math.round(n * 1000) / 1000;
901
+ }
902
+ buildOutput(time, params, wantSample = false) {
903
+ const { width, height } = this.runtime?.size ?? { width: 1, height: 1 };
904
+ const hasPtr = this.mouseHasPointer;
905
+ const mx = hasPtr && width > 0 ? this.mouseVec[0] / width : 0.5;
906
+ const my = hasPtr && height > 0 ? this.mouseVec[1] / height : 0.5;
907
+ const p = params ?? this.effectiveParams();
908
+ const out = {
909
+ time: this.round3(time),
910
+ frame: this.frame,
911
+ mouseX: this.round3(mx),
912
+ mouseY: this.round3(my),
913
+ hovering: this.hovering ? 1 : 0,
914
+ param0: this.round3(p[0]),
915
+ param1: this.round3(p[1]),
916
+ param2: this.round3(p[2]),
917
+ param3: this.round3(p[3]),
918
+ };
919
+ if (wantSample && this.runtime) {
920
+ const sx = hasPtr ? this.mouseVec[0] : width * 0.5;
921
+ const sy = hasPtr ? this.mouseVec[1] : height * 0.5;
922
+ const [r8, g8, b8, a8] = this.runtime.readPixel(sx, sy);
923
+ const r = r8 / 255;
924
+ const g = g8 / 255;
925
+ const b = b8 / 255;
926
+ const a = a8 / 255;
927
+ out.sampleR = this.round3(r);
928
+ out.sampleG = this.round3(g);
929
+ out.sampleB = this.round3(b);
930
+ out.sampleA = this.round3(a);
931
+ out.sampleLuma = this.round3(0.2126 * r + 0.7152 * g + 0.0722 * b);
932
+ }
933
+ return out;
934
+ }
935
+ /** Un champ out du publisher a-t-il un listener (sonic-value, @subscribe…) ? */
936
+ publisherFieldHasListener(key) {
937
+ const pub = this.outPublisher;
938
+ const child = pub?._proxies_?.get(key);
939
+ return !!child?.hasListener?.();
940
+ }
941
+ /**
942
+ * Publication paresseuse : uniquement s’il y a un event `out` ou un lecteur
943
+ * DP sur un champ de sortie. Sinon aucun coût (pas de set, pas de readPixels).
944
+ */
945
+ hasOutConsumers() {
946
+ if (this.outEventListeners > 0)
947
+ return true;
948
+ if (!this.outPublisher)
949
+ return false;
950
+ for (const key of OUT_META_KEYS) {
951
+ if (this.publisherFieldHasListener(key))
952
+ return true;
953
+ }
954
+ for (const key of OUT_SAMPLE_KEYS) {
955
+ if (this.publisherFieldHasListener(key))
956
+ return true;
957
+ }
958
+ return false;
959
+ }
960
+ /**
961
+ * Même DP pour form (entrée param*) et out : ne pas réécrire les params
962
+ * pilotés par le formulaire (sinon sortie viewport / hoverMix → champs à 0).
963
+ * Seul le slot `hover-param` reste écrit (piloté par le shader).
964
+ */
965
+ shouldSkipParamOutWrite(key) {
966
+ if (!OUT_PARAM_KEYS.includes(key))
967
+ return false;
968
+ if (!this.formPublisher || this.formPublisher !== this.outPublisher) {
969
+ return false;
970
+ }
971
+ const slot = parseHoverParam(this.hoverParam);
972
+ if (slot === null)
973
+ return true;
974
+ return Number(key.slice(5)) !== slot;
975
+ }
976
+ /**
977
+ * `readPixels` si `sample` et au moins un consommateur out.
978
+ * (Un `@handle(frame)` + `get(dp)` massif doit recevoir les samples.)
979
+ */
980
+ needsSampleRead() {
981
+ return this.sample && this.hasOutConsumers();
982
+ }
983
+ maybePublishOut(now, time, params) {
984
+ if (!this.outPublisher)
985
+ this.bindOutPublisher();
986
+ if (!this.hasOutConsumers())
987
+ return;
988
+ const interval = Math.max(16, this.outInterval || 80);
989
+ if (now - this.lastOutAt < interval)
990
+ return;
991
+ this.lastOutAt = now;
992
+ const payload = this.buildOutput(time, params, this.needsSampleRead());
993
+ const pub = this.outPublisher;
994
+ if (pub) {
995
+ for (const [key, value] of Object.entries(payload)) {
996
+ if (value === undefined)
997
+ continue;
998
+ if (this.shouldSkipParamOutWrite(key))
999
+ continue;
1000
+ try {
1001
+ // Champs individuels pour ne pas écraser le reste du form
1002
+ pub[key].set(value);
1003
+ }
1004
+ catch {
1005
+ /* publisher leaf manquant / non settable */
1006
+ }
1007
+ }
1008
+ }
1009
+ this.dispatchEvent(new CustomEvent("out", {
1010
+ detail: payload,
1011
+ bubbles: true,
1012
+ composed: true,
1013
+ }));
1014
+ }
1015
+ revokeBlobUrls() {
1016
+ for (const url of this.lastBlobUrls) {
1017
+ try {
1018
+ URL.revokeObjectURL(url);
1019
+ }
1020
+ catch {
1021
+ /* ignore */
1022
+ }
1023
+ }
1024
+ this.lastBlobUrls = [];
1025
+ }
1026
+ /** Révoque les URLs du batch précédent après un court délai (évite img cassées). */
1027
+ scheduleRevokePreviousBlobs(urls) {
1028
+ const objectUrls = urls.filter((u) => u.startsWith("blob:"));
1029
+ if (objectUrls.length === 0)
1030
+ return;
1031
+ this.pendingRevokeUrls.push(...objectUrls);
1032
+ const toRevoke = objectUrls;
1033
+ window.setTimeout(() => {
1034
+ for (const url of toRevoke) {
1035
+ try {
1036
+ URL.revokeObjectURL(url);
1037
+ }
1038
+ catch {
1039
+ /* ignore */
1040
+ }
1041
+ const i = this.pendingRevokeUrls.indexOf(url);
1042
+ if (i >= 0)
1043
+ this.pendingRevokeUrls.splice(i, 1);
1044
+ }
1045
+ }, 1500);
1046
+ }
1047
+ publisherHasFieldListener(pub, key) {
1048
+ const child = pub?._proxies_?.get(key);
1049
+ return !!child?.hasListener?.();
1050
+ }
1051
+ hasExtractConsumers() {
1052
+ if (this.extractEventListeners > 0)
1053
+ return true;
1054
+ const pub = this.extractPublisher;
1055
+ if (!pub)
1056
+ return false;
1057
+ for (const key of EXTRACT_OUT_KEYS) {
1058
+ if (this.publisherHasFieldListener(pub, key))
1059
+ return true;
1060
+ }
1061
+ return false;
1062
+ }
1063
+ syncManualRoisFromPublishers() {
1064
+ const tryGet = (pub) => {
1065
+ if (!pub?.get)
1066
+ return;
1067
+ try {
1068
+ const data = pub.get() ?? {};
1069
+ if ("rois" in data)
1070
+ this.manualRois = parseRois(data.rois);
1071
+ }
1072
+ catch {
1073
+ /* ignore */
1074
+ }
1075
+ };
1076
+ tryGet(this.formPublisher);
1077
+ if (this.extractPublisher && this.extractPublisher !== this.formPublisher) {
1078
+ tryGet(this.extractPublisher);
1079
+ }
1080
+ }
1081
+ resolveExtractInterval() {
1082
+ if (this.extractInterval > 0)
1083
+ return Math.max(16, this.extractInterval);
1084
+ return Math.max(16, this.outInterval || 100);
1085
+ }
1086
+ /**
1087
+ * Lit une ROI à la demande (hors throttle). Nécessite un runtime prêt.
1088
+ */
1089
+ async readRegion(roi) {
1090
+ if (!this.runtime || !this.ready)
1091
+ return null;
1092
+ const item = await this.buildExtractItem(roi, "manual", undefined);
1093
+ return item;
1094
+ }
1095
+ /** Lance une extraction complète immédiatement. */
1096
+ async extractNow() {
1097
+ const time = (performance.now() - this.startTime) / 1000;
1098
+ return this.runExtract(time);
1099
+ }
1100
+ async maybeExtract(now, time) {
1101
+ if (!this.extract || !this.ready || !this.runtime)
1102
+ return;
1103
+ if (!this.extractPublisher)
1104
+ this.bindExtractPublisher();
1105
+ if (!this.hasExtractConsumers())
1106
+ return;
1107
+ if (now - this.lastExtractAt < this.resolveExtractInterval())
1108
+ return;
1109
+ if (this.extractRunning)
1110
+ return;
1111
+ this.lastExtractAt = now;
1112
+ await this.runExtract(time);
1113
+ }
1114
+ async runExtract(time) {
1115
+ const empty = {
1116
+ frame: this.frame,
1117
+ time: this.round3(time),
1118
+ items: [],
1119
+ };
1120
+ if (!this.runtime || !this.ready)
1121
+ return empty;
1122
+ this.extractRunning = true;
1123
+ try {
1124
+ this.syncManualRoisFromPublishers();
1125
+ const { width: bufW, height: bufH } = this.runtime.size;
1126
+ const rois = this.manualRois.map((r) => ({
1127
+ ...r,
1128
+ source: "manual",
1129
+ }));
1130
+ const maskPass = parseExtractPass(this.extractMask);
1131
+ if (maskPass) {
1132
+ const full = this.runtime.readBufferRect(maskPass, 0, 0, bufW, bufH);
1133
+ if (full) {
1134
+ const peaks = findPeaks(full.data, full.width, full.height, {
1135
+ threshold: this.extractThreshold,
1136
+ maxCount: Math.max(0, Math.floor(this.extractMax)),
1137
+ // Défaut ≈ patch/3 plafonné à 16 (doc) — laisse assez de coins espacés
1138
+ minDistance: Math.max(8, Math.floor(Math.min(this.extractPatch / 3, 16))),
1139
+ });
1140
+ // Score relatif au meilleur peak du batch (ordre inchangé, UI lisible)
1141
+ const topScore = peaks[0]?.score || 1;
1142
+ for (let i = 0; i < peaks.length; i++) {
1143
+ const p = peaks[i];
1144
+ rois.push({
1145
+ id: `detect-${i}`,
1146
+ x: (p.x + 0.5) / bufW,
1147
+ y: (p.y + 0.5) / bufH,
1148
+ patch: this.extractPatch,
1149
+ source: "detect",
1150
+ score: topScore > 0 ? p.score / topScore : p.score,
1151
+ });
1152
+ }
1153
+ }
1154
+ }
1155
+ const pending = [];
1156
+ let detectIdx = 0;
1157
+ const pass = parseExtractPass(this.extractSource) ?? "image";
1158
+ for (const roi of rois) {
1159
+ const source = roi.source === "detect" ? "detect" : "manual";
1160
+ if (source === "detect") {
1161
+ if (detectIdx >= Math.max(0, Math.floor(this.extractMax)))
1162
+ continue;
1163
+ detectIdx++;
1164
+ }
1165
+ const px = roiToPixels(roi, bufW, bufH, this.extractPatch, MAX_PATCH_PX);
1166
+ if (!px)
1167
+ continue;
1168
+ const rect = pass === "image"
1169
+ ? this.runtime.readRect(px.x, px.y, px.w, px.h)
1170
+ : this.runtime.readBufferRect(pass, px.x, px.y, px.w, px.h);
1171
+ if (!rect)
1172
+ continue;
1173
+ // Copie : le buffer WebGL peut être réutilisé / invalidé ensuite
1174
+ const rgba = new Uint8Array(rect.data);
1175
+ const mean = meanRgba(rgba);
1176
+ const item = {
1177
+ id: roi.id || `${source}-${px.x}-${px.y}`,
1178
+ x: this.round3(rect.x / bufW),
1179
+ y: this.round3(rect.y / bufH),
1180
+ w: this.round3(rect.width / bufW),
1181
+ h: this.round3(rect.height / bufH),
1182
+ meanR: this.round3(mean.r),
1183
+ meanG: this.round3(mean.g),
1184
+ meanB: this.round3(mean.b),
1185
+ meanA: this.round3(mean.a),
1186
+ meanLuma: this.round3(mean.luma),
1187
+ source,
1188
+ };
1189
+ if (typeof roi.score === "number")
1190
+ item.score = this.round3(roi.score);
1191
+ pending.push({
1192
+ item,
1193
+ rgba,
1194
+ width: rect.width,
1195
+ height: rect.height,
1196
+ });
1197
+ }
1198
+ // Phase async : bitmaps (après copies CPU)
1199
+ if (this.extractBitmaps) {
1200
+ const token = this.rebuildToken;
1201
+ for (const p of pending) {
1202
+ if (token !== this.rebuildToken || !this.isConnected) {
1203
+ for (const q of pending) {
1204
+ if (q.item.blobUrl)
1205
+ revokeMediaUrls([q.item.blobUrl]);
1206
+ }
1207
+ return empty;
1208
+ }
1209
+ const url = await rgbaToBlobUrl(p.rgba, p.width, p.height);
1210
+ if (token !== this.rebuildToken || !this.isConnected) {
1211
+ if (url)
1212
+ revokeMediaUrls([url]);
1213
+ for (const q of pending) {
1214
+ if (q.item.blobUrl)
1215
+ revokeMediaUrls([q.item.blobUrl]);
1216
+ }
1217
+ return empty;
1218
+ }
1219
+ if (url)
1220
+ assignExtractMediaUrls(p.item, url);
1221
+ }
1222
+ }
1223
+ if (!this.isConnected) {
1224
+ for (const p of pending) {
1225
+ if (p.item.blobUrl)
1226
+ revokeMediaUrls([p.item.blobUrl]);
1227
+ }
1228
+ return empty;
1229
+ }
1230
+ const items = pending.map((p) => p.item);
1231
+ const payload = {
1232
+ frame: this.frame,
1233
+ time: this.round3(time),
1234
+ items,
1235
+ };
1236
+ this.publishExtract(payload);
1237
+ return payload;
1238
+ }
1239
+ finally {
1240
+ this.extractRunning = false;
1241
+ }
1242
+ }
1243
+ async buildExtractItem(roi, source, score) {
1244
+ if (!this.runtime)
1245
+ return null;
1246
+ const { width: bufW, height: bufH } = this.runtime.size;
1247
+ const px = roiToPixels(roi, bufW, bufH, this.extractPatch, MAX_PATCH_PX);
1248
+ if (!px)
1249
+ return null;
1250
+ const pass = parseExtractPass(this.extractSource) ?? "image";
1251
+ const rect = pass === "image"
1252
+ ? this.runtime.readRect(px.x, px.y, px.w, px.h)
1253
+ : this.runtime.readBufferRect(pass, px.x, px.y, px.w, px.h);
1254
+ if (!rect)
1255
+ return null;
1256
+ const mean = meanRgba(rect.data);
1257
+ const item = {
1258
+ id: roi.id || `${source}-${px.x}-${px.y}`,
1259
+ x: this.round3(rect.x / bufW),
1260
+ y: this.round3(rect.y / bufH),
1261
+ w: this.round3(rect.width / bufW),
1262
+ h: this.round3(rect.height / bufH),
1263
+ meanR: this.round3(mean.r),
1264
+ meanG: this.round3(mean.g),
1265
+ meanB: this.round3(mean.b),
1266
+ meanA: this.round3(mean.a),
1267
+ meanLuma: this.round3(mean.luma),
1268
+ source,
1269
+ };
1270
+ if (typeof score === "number")
1271
+ item.score = this.round3(score);
1272
+ if (this.extractBitmaps) {
1273
+ const token = this.rebuildToken;
1274
+ const url = await rgbaToBlobUrl(rect.data, rect.width, rect.height);
1275
+ if (token !== this.rebuildToken || !this.isConnected) {
1276
+ if (url)
1277
+ revokeMediaUrls([url]);
1278
+ return null;
1279
+ }
1280
+ if (url)
1281
+ assignExtractMediaUrls(item, url);
1282
+ }
1283
+ return item;
1284
+ }
1285
+ publishExtract(payload) {
1286
+ // Ne pas révoquer tout de suite : les <img> du batch précédent casseraient.
1287
+ this.scheduleRevokePreviousBlobs(this.lastBlobUrls);
1288
+ this.lastBlobUrls = [];
1289
+ for (const it of payload.items) {
1290
+ if (it.blobUrl)
1291
+ this.lastBlobUrls.push(it.blobUrl);
1292
+ }
1293
+ this.extractSeq++;
1294
+ if (!this.extractPublisher)
1295
+ this.bindExtractPublisher();
1296
+ const pub = this.extractPublisher;
1297
+ if (pub) {
1298
+ // Set atomique sur la racine : invalide `_cachedGet_` du parent.
1299
+ // (pub.extracts.set(...) seul laisse un snapshot périmé → 1 seul item en get()).
1300
+ try {
1301
+ const prev = pub.get?.() ?? {};
1302
+ pub.set({
1303
+ ...prev,
1304
+ rois: Array.isArray(prev.rois) ? prev.rois : this.manualRois,
1305
+ extracts: payload.items,
1306
+ extractCount: payload.items.length,
1307
+ extractSeq: this.extractSeq,
1308
+ });
1309
+ }
1310
+ catch {
1311
+ try {
1312
+ pub.extracts.set(payload.items);
1313
+ pub.extractCount.set(payload.items.length);
1314
+ pub.extractSeq.set(this.extractSeq);
1315
+ }
1316
+ catch {
1317
+ /* ignore */
1318
+ }
1319
+ }
1320
+ }
1321
+ this.dispatchEvent(new CustomEvent("extract", {
1322
+ detail: payload,
1323
+ bubbles: true,
1324
+ composed: true,
1325
+ }));
1326
+ }
1327
+ /**
1328
+ * Mode target : poursuite exponentielle (vitesse proportionnelle à la distance).
1329
+ * Frame-rate indépendant via `1 - exp(-speed * dt)`.
1330
+ */
1331
+ advanceMouseFollow(dt) {
1332
+ if (!this.mouse || this.mouseMode !== "target" || !this.mouseHasPointer) {
1333
+ return;
1334
+ }
1335
+ const speed = Math.max(0, this.mouseSpeed);
1336
+ const t = speed <= 0 || dt <= 0 ? 1 : 1 - Math.exp(-speed * dt);
1337
+ this.mouseFollow[0] += (this.mouseTarget[0] - this.mouseFollow[0]) * t;
1338
+ this.mouseFollow[1] += (this.mouseTarget[1] - this.mouseFollow[1]) * t;
1339
+ this.mouseVec[0] = this.mouseFollow[0];
1340
+ this.mouseVec[1] = this.mouseFollow[1];
1341
+ }
1342
+ /** Rollover / roll-out → easing de `hoverMix` (0↔1) pour le slot choisi. */
1343
+ advanceHover(dt) {
1344
+ if (parseHoverParam(this.hoverParam) === null)
1345
+ return;
1346
+ const speed = Math.max(0, this.hoverSpeed);
1347
+ const t = speed <= 0 || dt <= 0 ? 1 : 1 - Math.exp(-speed * dt);
1348
+ const next = this.hoverMix + (this.hoverGoal - this.hoverMix) * t;
1349
+ // Snap pour éviter une micro-animation infinie (play-on-hover qui redémarre).
1350
+ this.hoverMix =
1351
+ Math.abs(next - this.hoverGoal) < 0.002 ? this.hoverGoal : next;
1352
+ }
1353
+ localPointer(e) {
1354
+ const rect = this.getBoundingClientRect();
1355
+ const dpr = Math.min(window.devicePixelRatio || 1, this.dprMax);
1356
+ const x = (e.clientX - rect.left) * dpr;
1357
+ const y = (rect.height - (e.clientY - rect.top)) * dpr;
1358
+ return { x, y };
1359
+ }
1360
+ setPointerTarget(x, y, snap = false) {
1361
+ this.mouseTarget[0] = x;
1362
+ this.mouseTarget[1] = y;
1363
+ if (!this.mouseHasPointer || snap || this.mouseMode === "direct") {
1364
+ this.mouseHasPointer = true;
1365
+ this.mouseFollow[0] = x;
1366
+ this.mouseFollow[1] = y;
1367
+ this.mouseVec[0] = x;
1368
+ this.mouseVec[1] = y;
1369
+ }
1370
+ }
1371
+ render() {
1372
+ return html `
1373
+ <canvas part="canvas"></canvas>
1374
+ ${this.errorMessage
1375
+ ? html `<div class="err" part="error">${this.errorMessage}</div>`
1376
+ : null}
1377
+ `;
1378
+ }
1379
+ };
1380
+ SonicShader.styles = css `
1381
+ :host {
1382
+ display: block;
1383
+ position: relative;
1384
+ width: 100%;
1385
+ max-width: 100%;
1386
+ height: auto;
1387
+ aspect-ratio: var(--sonic-shader-ar, 16 / 9);
1388
+ overflow: hidden;
1389
+ background: #0a0a0a;
1390
+ color: #f87171;
1391
+ font: 12px/1.4 ui-monospace, monospace;
1392
+ }
1393
+ canvas {
1394
+ position: absolute;
1395
+ inset: 0;
1396
+ width: 100%;
1397
+ height: 100%;
1398
+ display: block;
1399
+ touch-action: none;
1400
+ }
1401
+ .err {
1402
+ position: absolute;
1403
+ inset: 0;
1404
+ z-index: 1;
1405
+ padding: 0.75rem;
1406
+ background: rgba(0, 0, 0, 0.85);
1407
+ white-space: pre-wrap;
1408
+ overflow: auto;
1409
+ }
1410
+ `;
1411
+ __decorate([
1412
+ property()
1413
+ ], SonicShader.prototype, "image", void 0);
1414
+ __decorate([
1415
+ property({ attribute: "buffer-a" })
1416
+ ], SonicShader.prototype, "bufferA", void 0);
1417
+ __decorate([
1418
+ property({ attribute: "buffer-b" })
1419
+ ], SonicShader.prototype, "bufferB", void 0);
1420
+ __decorate([
1421
+ property({ attribute: "buffer-c" })
1422
+ ], SonicShader.prototype, "bufferC", void 0);
1423
+ __decorate([
1424
+ property({ attribute: "buffer-d" })
1425
+ ], SonicShader.prototype, "bufferD", void 0);
1426
+ __decorate([
1427
+ property()
1428
+ ], SonicShader.prototype, "common", void 0);
1429
+ __decorate([
1430
+ property()
1431
+ ], SonicShader.prototype, "channel0", void 0);
1432
+ __decorate([
1433
+ property()
1434
+ ], SonicShader.prototype, "channel1", void 0);
1435
+ __decorate([
1436
+ property()
1437
+ ], SonicShader.prototype, "channel2", void 0);
1438
+ __decorate([
1439
+ property()
1440
+ ], SonicShader.prototype, "channel3", void 0);
1441
+ __decorate([
1442
+ property({ attribute: "image-ch0" })
1443
+ ], SonicShader.prototype, "imageCh0", void 0);
1444
+ __decorate([
1445
+ property({ attribute: "image-ch1" })
1446
+ ], SonicShader.prototype, "imageCh1", void 0);
1447
+ __decorate([
1448
+ property({ attribute: "image-ch2" })
1449
+ ], SonicShader.prototype, "imageCh2", void 0);
1450
+ __decorate([
1451
+ property({ attribute: "image-ch3" })
1452
+ ], SonicShader.prototype, "imageCh3", void 0);
1453
+ __decorate([
1454
+ property({ attribute: "buffer-a-ch0" })
1455
+ ], SonicShader.prototype, "bufferACh0", void 0);
1456
+ __decorate([
1457
+ property({ attribute: "buffer-a-ch1" })
1458
+ ], SonicShader.prototype, "bufferACh1", void 0);
1459
+ __decorate([
1460
+ property({ attribute: "buffer-a-ch2" })
1461
+ ], SonicShader.prototype, "bufferACh2", void 0);
1462
+ __decorate([
1463
+ property({ attribute: "buffer-a-ch3" })
1464
+ ], SonicShader.prototype, "bufferACh3", void 0);
1465
+ __decorate([
1466
+ property({ attribute: "buffer-b-ch0" })
1467
+ ], SonicShader.prototype, "bufferBCh0", void 0);
1468
+ __decorate([
1469
+ property({ attribute: "buffer-b-ch1" })
1470
+ ], SonicShader.prototype, "bufferBCh1", void 0);
1471
+ __decorate([
1472
+ property({ attribute: "buffer-b-ch2" })
1473
+ ], SonicShader.prototype, "bufferBCh2", void 0);
1474
+ __decorate([
1475
+ property({ attribute: "buffer-b-ch3" })
1476
+ ], SonicShader.prototype, "bufferBCh3", void 0);
1477
+ __decorate([
1478
+ property({ attribute: "buffer-c-ch0" })
1479
+ ], SonicShader.prototype, "bufferCCh0", void 0);
1480
+ __decorate([
1481
+ property({ attribute: "buffer-c-ch1" })
1482
+ ], SonicShader.prototype, "bufferCCh1", void 0);
1483
+ __decorate([
1484
+ property({ attribute: "buffer-c-ch2" })
1485
+ ], SonicShader.prototype, "bufferCCh2", void 0);
1486
+ __decorate([
1487
+ property({ attribute: "buffer-c-ch3" })
1488
+ ], SonicShader.prototype, "bufferCCh3", void 0);
1489
+ __decorate([
1490
+ property({ attribute: "buffer-d-ch0" })
1491
+ ], SonicShader.prototype, "bufferDCh0", void 0);
1492
+ __decorate([
1493
+ property({ attribute: "buffer-d-ch1" })
1494
+ ], SonicShader.prototype, "bufferDCh1", void 0);
1495
+ __decorate([
1496
+ property({ attribute: "buffer-d-ch2" })
1497
+ ], SonicShader.prototype, "bufferDCh2", void 0);
1498
+ __decorate([
1499
+ property({ attribute: "buffer-d-ch3" })
1500
+ ], SonicShader.prototype, "bufferDCh3", void 0);
1501
+ __decorate([
1502
+ property({ type: Boolean, reflect: true })
1503
+ ], SonicShader.prototype, "play", void 0);
1504
+ __decorate([
1505
+ property({ type: Boolean, attribute: "play-on-hover" })
1506
+ ], SonicShader.prototype, "playOnHover", void 0);
1507
+ __decorate([
1508
+ property({ type: Boolean })
1509
+ ], SonicShader.prototype, "mouse", void 0);
1510
+ __decorate([
1511
+ property({ type: String, attribute: "mouse-mode" })
1512
+ ], SonicShader.prototype, "mouseMode", void 0);
1513
+ __decorate([
1514
+ property({ type: Number, attribute: "mouse-speed" })
1515
+ ], SonicShader.prototype, "mouseSpeed", void 0);
1516
+ __decorate([
1517
+ property({ attribute: "hover-param" })
1518
+ ], SonicShader.prototype, "hoverParam", void 0);
1519
+ __decorate([
1520
+ property({ type: Number, attribute: "hover-speed" })
1521
+ ], SonicShader.prototype, "hoverSpeed", void 0);
1522
+ __decorate([
1523
+ property({ type: Boolean, attribute: "release-offscreen" })
1524
+ ], SonicShader.prototype, "releaseOffscreen", void 0);
1525
+ __decorate([
1526
+ property({ type: Number, attribute: "dpr-max" })
1527
+ ], SonicShader.prototype, "dprMax", void 0);
1528
+ __decorate([
1529
+ property({ type: Number, attribute: "param0" })
1530
+ ], SonicShader.prototype, "param0", void 0);
1531
+ __decorate([
1532
+ property({ type: Number, attribute: "param1" })
1533
+ ], SonicShader.prototype, "param1", void 0);
1534
+ __decorate([
1535
+ property({ type: Number, attribute: "param2" })
1536
+ ], SonicShader.prototype, "param2", void 0);
1537
+ __decorate([
1538
+ property({ type: Number, attribute: "param3" })
1539
+ ], SonicShader.prototype, "param3", void 0);
1540
+ __decorate([
1541
+ property({ type: String })
1542
+ ], SonicShader.prototype, "dataProvider", void 0);
1543
+ __decorate([
1544
+ property({ type: String, attribute: "out-data-provider" })
1545
+ ], SonicShader.prototype, "outDataProvider", void 0);
1546
+ __decorate([
1547
+ property({ type: Boolean })
1548
+ ], SonicShader.prototype, "sample", void 0);
1549
+ __decorate([
1550
+ property({ type: Number, attribute: "out-interval" })
1551
+ ], SonicShader.prototype, "outInterval", void 0);
1552
+ __decorate([
1553
+ property({ type: Boolean })
1554
+ ], SonicShader.prototype, "extract", void 0);
1555
+ __decorate([
1556
+ property({ type: Number, attribute: "extract-interval" })
1557
+ ], SonicShader.prototype, "extractInterval", void 0);
1558
+ __decorate([
1559
+ property({ type: String, attribute: "extract-source" })
1560
+ ], SonicShader.prototype, "extractSource", void 0);
1561
+ __decorate([
1562
+ property({ type: String, attribute: "extract-mask" })
1563
+ ], SonicShader.prototype, "extractMask", void 0);
1564
+ __decorate([
1565
+ property({ type: Number, attribute: "extract-threshold" })
1566
+ ], SonicShader.prototype, "extractThreshold", void 0);
1567
+ __decorate([
1568
+ property({ type: Number, attribute: "extract-max" })
1569
+ ], SonicShader.prototype, "extractMax", void 0);
1570
+ __decorate([
1571
+ property({ type: Number, attribute: "extract-patch" })
1572
+ ], SonicShader.prototype, "extractPatch", void 0);
1573
+ __decorate([
1574
+ property({ type: Boolean, attribute: "extract-bitmaps" })
1575
+ ], SonicShader.prototype, "extractBitmaps", void 0);
1576
+ __decorate([
1577
+ property({ type: String, attribute: "extract-data-provider" })
1578
+ ], SonicShader.prototype, "extractDataProvider", void 0);
1579
+ __decorate([
1580
+ property({ type: String, attribute: "aspect-ratio" })
1581
+ ], SonicShader.prototype, "aspectRatio", void 0);
1582
+ __decorate([
1583
+ state()
1584
+ ], SonicShader.prototype, "errorMessage", void 0);
1585
+ SonicShader = __decorate([
1586
+ customElement(tagName)
1587
+ ], SonicShader);
1588
+ export { SonicShader };
1589
+ export { parseChannelSource, ShaderToyRuntime } from "./gl-runtime";
1590
+ export { buildFragmentSource } from "./shadertoy-prelude";
1591
+ export { toMediaUrl, cloneMediaRef, } from "@supersoniks/concorde/core/utils/mediaRef";
1592
+ export { findPeaks, meanRgba, parseExtractPass, parseHoverParam, roiToPixels, ShaderCompileError, } from "./types";
1593
+ //# sourceMappingURL=shader.js.map