@lightningtv/solid 3.0.0-8 → 3.0.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 (232) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +6 -0
  3. package/dist/jsx-runtime.d.ts +14 -0
  4. package/dist/src/activeElement.d.ts +1 -1
  5. package/dist/src/core/animation.d.ts +35 -0
  6. package/dist/src/core/animation.js +119 -0
  7. package/dist/src/core/animation.js.map +1 -0
  8. package/dist/src/core/config.d.ts +49 -0
  9. package/dist/src/core/config.js +33 -0
  10. package/dist/src/core/config.js.map +1 -0
  11. package/dist/src/core/domRenderer.d.ts +115 -0
  12. package/dist/src/core/domRenderer.js +1152 -0
  13. package/dist/src/core/domRenderer.js.map +1 -0
  14. package/dist/src/core/elementNode.d.ts +463 -0
  15. package/dist/src/core/elementNode.js +833 -0
  16. package/dist/src/core/elementNode.js.map +1 -0
  17. package/dist/src/core/flex.d.ts +2 -0
  18. package/dist/src/core/flex.js +243 -0
  19. package/dist/src/core/flex.js.map +1 -0
  20. package/dist/src/core/focusKeyTypes.d.ts +42 -0
  21. package/dist/src/core/focusKeyTypes.js +2 -0
  22. package/dist/src/core/focusKeyTypes.js.map +1 -0
  23. package/dist/src/core/focusManager.d.ts +13 -0
  24. package/dist/src/core/focusManager.js +276 -0
  25. package/dist/src/core/focusManager.js.map +1 -0
  26. package/dist/src/core/index.d.ts +12 -0
  27. package/dist/src/core/index.js +12 -0
  28. package/dist/src/core/index.js.map +1 -0
  29. package/dist/src/core/intrinsicTypes.d.ts +90 -0
  30. package/dist/src/core/intrinsicTypes.js +2 -0
  31. package/dist/src/core/intrinsicTypes.js.map +1 -0
  32. package/dist/src/core/lightningInit.d.ts +89 -0
  33. package/dist/src/core/lightningInit.js +26 -0
  34. package/dist/src/core/lightningInit.js.map +1 -0
  35. package/dist/src/core/nodeTypes.d.ts +6 -0
  36. package/dist/src/core/nodeTypes.js +6 -0
  37. package/dist/src/core/nodeTypes.js.map +1 -0
  38. package/dist/src/core/shaders.d.ts +51 -0
  39. package/dist/src/core/shaders.js +446 -0
  40. package/dist/src/core/shaders.js.map +1 -0
  41. package/dist/src/core/states.d.ts +12 -0
  42. package/dist/src/core/states.js +84 -0
  43. package/dist/src/core/states.js.map +1 -0
  44. package/dist/src/core/utils.d.ts +39 -0
  45. package/dist/src/core/utils.js +164 -0
  46. package/dist/src/core/utils.js.map +1 -0
  47. package/dist/src/devtools/index.d.ts +1 -1
  48. package/dist/src/devtools/index.js +1 -1
  49. package/dist/src/devtools/index.js.map +1 -1
  50. package/dist/src/index.d.ts +3 -3
  51. package/dist/src/index.js +1 -1
  52. package/dist/src/index.js.map +1 -1
  53. package/dist/src/primitives/Column.jsx +9 -10
  54. package/dist/src/primitives/Column.jsx.map +1 -1
  55. package/dist/src/primitives/FPSCounter.jsx +15 -2
  56. package/dist/src/primitives/FPSCounter.jsx.map +1 -1
  57. package/dist/src/primitives/Grid.d.ts +2 -2
  58. package/dist/src/primitives/Grid.jsx +27 -17
  59. package/dist/src/primitives/Grid.jsx.map +1 -1
  60. package/dist/src/primitives/Image.d.ts +8 -0
  61. package/dist/src/primitives/Image.jsx +24 -0
  62. package/dist/src/primitives/Image.jsx.map +1 -0
  63. package/dist/src/primitives/KeepAlive.d.ts +30 -0
  64. package/dist/src/primitives/KeepAlive.jsx +77 -0
  65. package/dist/src/primitives/KeepAlive.jsx.map +1 -0
  66. package/dist/src/primitives/Lazy.d.ts +8 -7
  67. package/dist/src/primitives/Lazy.jsx +52 -20
  68. package/dist/src/primitives/Lazy.jsx.map +1 -1
  69. package/dist/src/primitives/Marquee.jsx +2 -2
  70. package/dist/src/primitives/Marquee.jsx.map +1 -1
  71. package/dist/src/primitives/Preserve.d.ts +4 -0
  72. package/dist/src/primitives/Preserve.jsx +11 -0
  73. package/dist/src/primitives/Preserve.jsx.map +1 -0
  74. package/dist/src/primitives/Row.jsx +9 -10
  75. package/dist/src/primitives/Row.jsx.map +1 -1
  76. package/dist/src/primitives/Suspense.d.ts +22 -0
  77. package/dist/src/primitives/Suspense.jsx +33 -0
  78. package/dist/src/primitives/Suspense.jsx.map +1 -0
  79. package/dist/src/primitives/Virtual.d.ts +18 -0
  80. package/dist/src/primitives/Virtual.jsx +443 -0
  81. package/dist/src/primitives/Virtual.jsx.map +1 -0
  82. package/dist/src/primitives/VirtualGrid.d.ts +13 -0
  83. package/dist/src/primitives/VirtualGrid.jsx +160 -0
  84. package/dist/src/primitives/VirtualGrid.jsx.map +1 -0
  85. package/dist/src/primitives/Visible.d.ts +0 -1
  86. package/dist/src/primitives/Visible.jsx +1 -1
  87. package/dist/src/primitives/Visible.jsx.map +1 -1
  88. package/dist/src/primitives/announcer/announcer.d.ts +1 -0
  89. package/dist/src/primitives/announcer/announcer.js +4 -4
  90. package/dist/src/primitives/announcer/announcer.js.map +1 -1
  91. package/dist/src/primitives/announcer/speech.d.ts +2 -2
  92. package/dist/src/primitives/announcer/speech.js +147 -27
  93. package/dist/src/primitives/announcer/speech.js.map +1 -1
  94. package/dist/src/primitives/createFocusStack.d.ts +4 -4
  95. package/dist/src/primitives/createFocusStack.jsx +15 -6
  96. package/dist/src/primitives/createFocusStack.jsx.map +1 -1
  97. package/dist/src/primitives/createTag.d.ts +8 -0
  98. package/dist/src/primitives/createTag.jsx +20 -0
  99. package/dist/src/primitives/createTag.jsx.map +1 -0
  100. package/dist/src/primitives/index.d.ts +13 -4
  101. package/dist/src/primitives/index.js +12 -3
  102. package/dist/src/primitives/index.js.map +1 -1
  103. package/dist/src/primitives/types.d.ts +5 -2
  104. package/dist/src/primitives/useFocusManager.d.ts +2 -2
  105. package/dist/src/primitives/useFocusManager.js +2 -2
  106. package/dist/src/primitives/useFocusManager.js.map +1 -1
  107. package/dist/src/primitives/useMouse.d.ts +18 -2
  108. package/dist/src/primitives/useMouse.js +171 -47
  109. package/dist/src/primitives/useMouse.js.map +1 -1
  110. package/dist/src/primitives/utils/createBlurredImage.d.ts +56 -0
  111. package/dist/src/primitives/utils/createBlurredImage.js +223 -0
  112. package/dist/src/primitives/utils/createBlurredImage.js.map +1 -0
  113. package/dist/src/primitives/utils/createSpriteMap.d.ts +2 -2
  114. package/dist/src/primitives/utils/createSpriteMap.js +3 -3
  115. package/dist/src/primitives/utils/createSpriteMap.js.map +1 -1
  116. package/dist/src/primitives/utils/handleNavigation.d.ts +79 -5
  117. package/dist/src/primitives/utils/handleNavigation.js +241 -69
  118. package/dist/src/primitives/utils/handleNavigation.js.map +1 -1
  119. package/dist/src/primitives/utils/withScrolling.d.ts +14 -2
  120. package/dist/src/primitives/utils/withScrolling.js +66 -7
  121. package/dist/src/primitives/utils/withScrolling.js.map +1 -1
  122. package/dist/src/render.d.ts +5 -4
  123. package/dist/src/render.js +5 -1
  124. package/dist/src/render.js.map +1 -1
  125. package/dist/src/shaders/Rounded.d.ts +7 -0
  126. package/dist/src/shaders/Rounded.js +88 -0
  127. package/dist/src/shaders/Rounded.js.map +1 -0
  128. package/dist/src/shaders/RoundedWithBorder.d.ts +3 -0
  129. package/dist/src/shaders/RoundedWithBorder.js +217 -0
  130. package/dist/src/shaders/RoundedWithBorder.js.map +1 -0
  131. package/dist/src/shaders/index.d.ts +4 -0
  132. package/dist/src/shaders/index.js +5 -0
  133. package/dist/src/shaders/index.js.map +1 -0
  134. package/dist/src/shaders/templates/RoundedTemplate.d.ts +12 -0
  135. package/dist/src/shaders/templates/RoundedTemplate.js +48 -0
  136. package/dist/src/shaders/templates/RoundedTemplate.js.map +1 -0
  137. package/dist/src/shaders/templates/RoundedWithBorderTemplate.d.ts +20 -0
  138. package/dist/src/shaders/templates/RoundedWithBorderTemplate.js +93 -0
  139. package/dist/src/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
  140. package/dist/src/shaders/utils.d.ts +3 -0
  141. package/dist/src/shaders/utils.js +31 -0
  142. package/dist/src/shaders/utils.js.map +1 -0
  143. package/dist/src/solidOpts.d.ts +1 -7
  144. package/dist/src/solidOpts.js +9 -1
  145. package/dist/src/solidOpts.js.map +1 -1
  146. package/dist/src/types.d.ts +1 -13
  147. package/dist/src/utils.d.ts +3 -1
  148. package/dist/src/utils.js +9 -1
  149. package/dist/src/utils.js.map +1 -1
  150. package/dist/tsconfig.tsbuildinfo +1 -1
  151. package/jsx-runtime.d.ts +2 -1
  152. package/package.json +28 -16
  153. package/src/activeElement.ts +1 -1
  154. package/src/core/animation.ts +185 -0
  155. package/src/core/config.ts +89 -0
  156. package/src/core/domRenderer.ts +1300 -0
  157. package/src/core/elementNode.ts +1458 -0
  158. package/src/core/flex.ts +284 -0
  159. package/src/core/focusKeyTypes.ts +90 -0
  160. package/src/core/focusManager.ts +381 -0
  161. package/src/core/index.ts +13 -0
  162. package/src/core/intrinsicTypes.ts +199 -0
  163. package/src/core/lightningInit.ts +147 -0
  164. package/src/core/nodeTypes.ts +6 -0
  165. package/src/core/shaders.ts +567 -0
  166. package/src/core/states.ts +91 -0
  167. package/src/core/utils.ts +222 -0
  168. package/src/devtools/index.ts +1 -1
  169. package/src/index.ts +3 -3
  170. package/src/primitives/Column.tsx +10 -12
  171. package/src/primitives/FPSCounter.tsx +16 -2
  172. package/src/primitives/Grid.tsx +32 -22
  173. package/src/primitives/Image.tsx +36 -0
  174. package/src/primitives/KeepAlive.tsx +124 -0
  175. package/src/primitives/Lazy.tsx +66 -37
  176. package/src/primitives/{marquee.tsx → Marquee.tsx} +1 -1
  177. package/src/primitives/Preserve.tsx +18 -0
  178. package/src/primitives/Row.tsx +13 -14
  179. package/src/primitives/Suspense.tsx +39 -0
  180. package/src/primitives/Virtual.tsx +486 -0
  181. package/src/primitives/VirtualGrid.tsx +220 -0
  182. package/src/primitives/Visible.tsx +1 -2
  183. package/src/primitives/announcer/announcer.ts +10 -4
  184. package/src/primitives/announcer/speech.ts +170 -26
  185. package/src/primitives/createFocusStack.tsx +18 -7
  186. package/src/primitives/createTag.tsx +33 -0
  187. package/src/primitives/index.ts +13 -4
  188. package/src/primitives/types.ts +12 -2
  189. package/src/primitives/useFocusManager.ts +3 -3
  190. package/src/primitives/useHold.ts +69 -0
  191. package/src/primitives/useMouse.ts +306 -67
  192. package/src/primitives/utils/createBlurredImage.ts +366 -0
  193. package/src/primitives/utils/createSpriteMap.ts +8 -6
  194. package/src/primitives/utils/handleNavigation.ts +300 -84
  195. package/src/primitives/utils/withScrolling.ts +91 -18
  196. package/src/render.ts +7 -3
  197. package/src/shaders/Rounded.ts +100 -0
  198. package/src/shaders/RoundedWithBorder.ts +245 -0
  199. package/src/shaders/index.ts +4 -0
  200. package/src/shaders/templates/RoundedTemplate.ts +57 -0
  201. package/src/shaders/templates/RoundedWithBorderTemplate.ts +110 -0
  202. package/src/shaders/utils.ts +44 -0
  203. package/src/solidOpts.ts +9 -7
  204. package/src/types.ts +1 -15
  205. package/src/utils.ts +11 -1
  206. package/dist/src/client.d.ts +0 -1
  207. package/dist/src/client.js +0 -2
  208. package/dist/src/client.js.map +0 -1
  209. package/dist/src/core.d.ts +0 -1
  210. package/dist/src/core.js +0 -3
  211. package/dist/src/core.js.map +0 -1
  212. package/dist/src/jsx-runtime.d.ts +0 -10
  213. package/dist/src/jsx-runtime.js +0 -2
  214. package/dist/src/jsx-runtime.js.map +0 -1
  215. package/dist/src/primitives/Infinite.d.ts +0 -15
  216. package/dist/src/primitives/Infinite.jsx +0 -59
  217. package/dist/src/primitives/Infinite.jsx.map +0 -1
  218. package/dist/src/primitives/LazyUp.d.ts +0 -11
  219. package/dist/src/primitives/LazyUp.jsx +0 -38
  220. package/dist/src/primitives/LazyUp.jsx.map +0 -1
  221. package/dist/src/primitives/sprite.d.ts +0 -9
  222. package/dist/src/primitives/sprite.js +0 -18
  223. package/dist/src/primitives/sprite.js.map +0 -1
  224. package/dist/src/primitives/utils/createFocusStack.d.ts +0 -24
  225. package/dist/src/primitives/utils/createFocusStack.js +0 -59
  226. package/dist/src/primitives/utils/createFocusStack.js.map +0 -1
  227. package/dist/src/primitives/utils/scrollToIndex.d.ts +0 -2
  228. package/dist/src/primitives/utils/scrollToIndex.js +0 -33
  229. package/dist/src/primitives/utils/scrollToIndex.js.map +0 -1
  230. package/dist/src/renderClient.d.ts +0 -21
  231. package/dist/src/renderClient.js +0 -64
  232. package/dist/src/renderClient.js.map +0 -1
@@ -2,6 +2,5 @@ import { JSX } from 'solid-js';
2
2
  export declare function Visible<T>(props: {
3
3
  when: T | undefined | null | false;
4
4
  keyed?: boolean;
5
- fallback?: JSX.Element;
6
5
  children: JSX.Element;
7
6
  }): JSX.Element;
@@ -30,7 +30,7 @@ export function Visible(props) {
30
30
  childNode.hidden = isHidden;
31
31
  }
32
32
  });
33
- return c ? child : props.fallback;
33
+ return c || child ? child : null;
34
34
  });
35
35
  }
36
36
  ;
@@ -1 +1 @@
1
- {"version":3,"file":"Visible.jsx","sourceRoot":"","sources":["../../../src/primitives/Visible.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,QAAQ,EACR,UAAU,EAGV,OAAO,EACP,SAAS,EACT,UAAU,GACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,UAAU,OAAO,CAAI,KAK1B;IACC,IAAI,KAAiC,CAAC;IACtC,IAAI,QAAkC,CAAC;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,SAAS,GAAG,UAAU,CAC1B,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAChB,SAAS,EACT,GAAG;QACD,CAAC,CAAC;YACE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,IAAI,EAAE,WAAW;SAClB;QACH,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CACxD,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAG9B,OAAO,UAAU,CAAC,GAAG,EAAE;QACrB,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,OAAO,EAAC,CAAC;YACX,QAAQ,EAAE,EAAE,CAAC;YACb,KAAK,GAAG,SAAS,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,QAAQ,GAAG,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE;gBAChC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACvC,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC;QACpB,KAAK,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACrC,IAAI,SAAS,YAAY,WAAW,EAAE,CAAC;gBACrC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IACpC,CAAC,CAA2B,CAAC;AAC/B,CAAC;AAAA,CAAC"}
1
+ {"version":3,"file":"Visible.jsx","sourceRoot":"","sources":["../../../src/primitives/Visible.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,QAAQ,EACR,UAAU,EAGV,OAAO,EACP,SAAS,EACT,UAAU,GACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,UAAU,OAAO,CAAI,KAI1B;IACC,IAAI,KAAiC,CAAC;IACtC,IAAI,QAAkC,CAAC;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,SAAS,GAAG,UAAU,CAC1B,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAChB,SAAS,EACT,GAAG;QACD,CAAC,CAAC;YACE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,IAAI,EAAE,WAAW;SAClB;QACH,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CACxD,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAG9B,OAAO,UAAU,CAAC,GAAG,EAAE;QACrB,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,OAAO,EAAC,CAAC;YACX,QAAQ,EAAE,EAAE,CAAC;YACb,KAAK,GAAG,SAAS,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,QAAQ,GAAG,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE;gBAChC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACvC,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC;QACpB,KAAK,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACrC,IAAI,SAAS,YAAY,WAAW,EAAE,CAAC;gBACrC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACnC,CAAC,CAA2B,CAAC;AAC/B,CAAC;AAAA,CAAC"}
@@ -21,6 +21,7 @@ export interface Announcer {
21
21
  debug: boolean;
22
22
  enabled: boolean;
23
23
  lang: string;
24
+ aria: boolean;
24
25
  voice?: string;
25
26
  cancel: VoidFunction;
26
27
  clearPrevFocus: (depth?: number) => void;
@@ -70,16 +70,17 @@ function onFocusChangeCore(focusPath = []) {
70
70
  return Announcer.speak(toAnnounceText.reduce((acc, val) => acc.concat(val), []));
71
71
  }
72
72
  }
73
- function textToSpeech(toSpeak, lang, voice) {
73
+ function textToSpeech(toSpeak, aria, lang, voice) {
74
74
  if (voiceOutDisabled) {
75
75
  return;
76
76
  }
77
- return (currentlySpeaking = SpeechEngine(toSpeak, lang, voice));
77
+ return (currentlySpeaking = SpeechEngine(toSpeak, aria, lang, voice));
78
78
  }
79
79
  export const Announcer = {
80
80
  debug: false,
81
81
  enabled: true,
82
82
  lang: 'en-US',
83
+ aria: false,
83
84
  cancel: function () {
84
85
  currentlySpeaking && currentlySpeaking.cancel();
85
86
  },
@@ -89,13 +90,12 @@ export const Announcer = {
89
90
  },
90
91
  speak: function (text, { append = false, notification = false } = {}) {
91
92
  if (Announcer.onFocusChange && Announcer.enabled) {
92
- Announcer.onFocusChange.flush();
93
93
  if (append && currentlySpeaking && currentlySpeaking.active) {
94
94
  currentlySpeaking.append(text);
95
95
  }
96
96
  else {
97
97
  Announcer.cancel();
98
- textToSpeech(text, Announcer.lang, Announcer.voice);
98
+ textToSpeech(text, Announcer.aria, Announcer.lang, Announcer.voice);
99
99
  }
100
100
  if (notification) {
101
101
  voiceOutDisabled = true;
@@ -1 +1 @@
1
- {"version":3,"file":"announcer.js","sourceRoot":"","sources":["../../../../src/primitives/announcer/announcer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,YAAoD,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAqBlD,IAAI,mBAAoD,CAAC;AACzD,IAAI,aAAa,GAAkB,EAAE,CAAC;AACtC,IAAI,iBAA2C,CAAC;AAChD,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC7B,MAAM,WAAW,GAAG,MAAM,CAAC;AAE3B,SAAS,iBAAiB,CACxB,QAA+B,EAC/B,IAAa;IAEb,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,WAAc,CAAC;IAEnB,MAAM,SAAS,GAAG,CAAC,QAAW,EAAE,EAAE;QAChC,WAAW,GAAG,QAAQ,CAAC;QACvB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,SAAS,CAAC,KAAK,GAAG,GAAG,EAAE;QACrB,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,QAAQ,CAAC,WAAW,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAEhC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,GAAgB;IAClC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,CAAW,CAAC;AACxC,CAAC;AAED,SAAS,iBAAiB,CAAC,YAA2B,EAAE;IACtD,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACnD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAE1E,mBAAmB,EAAE,CAAC;IAEtB,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;QACvC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,cAAc,GAAiB,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,SAAS;SACzB,OAAO,EAAE;SACT,MAAM,CAAC,CAAC,GAAmC,EAAE,GAAG,EAAE,EAAE;QACnD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtD,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAChD,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IAET,SAAS,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;YAC5D,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,UAAU,CAAC,CAAC;IAEf,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC,KAAK,CACpB,cAAc,CAAC,MAAM,CAAC,CAAC,GAAiB,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CACvE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAmB,EAAE,IAAY,EAAE,KAAc;IACrE,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,iBAAiB,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAClE,CAAC;AAqBD,MAAM,CAAC,MAAM,SAAS,GAAc;IAClC,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,OAAO;IACb,MAAM,EAAE;QACN,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;IAClD,CAAC;IACD,cAAc,EAAE,UAAU,KAAK,GAAG,CAAC;QACjC,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9C,mBAAmB,EAAE,CAAC;IACxB,CAAC;IACD,KAAK,EAAE,UAAU,IAAI,EAAE,EAAE,MAAM,GAAG,KAAK,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,EAAE;QAClE,IAAI,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACjD,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,MAAM,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBAC5D,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,MAAM,EAAE,CAAC;gBACnB,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,YAAY,EAAE,CAAC;gBACjB,gBAAgB,GAAG,IAAI,CAAC;gBACxB,iBAAiB,EAAE,MAAM;qBACtB,OAAO,CAAC,GAAG,EAAE;oBACZ,gBAAgB,GAAG,KAAK,CAAC;oBACzB,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtB,CAAC,CAAC;qBACD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,iBAAiC,CAAC;IAC3C,CAAC;IACD,OAAO,EAAE,UAAU,KAAK,GAAG,CAAC;QAC1B,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAChC,SAAS,CAAC,aAAa;YACrB,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,WAAW,EAAE,UAAU,EACrB,aAAa,GAAG,GAAG,EACnB,kBAAkB,GAAG,WAAW,GACjC,GAAG,EAAE;QACJ,SAAS,CAAC,aAAa,GAAG,iBAAiB,CACzC,iBAAiB,EACjB,aAAa,CACd,CAAC;QAEF,mBAAmB,GAAG,iBAAiB,CAAC,GAAG,EAAE;YAC3C,qCAAqC;YACrC,aAAa,GAAG,EAAE,CAAC;QACrB,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACzB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"announcer.js","sourceRoot":"","sources":["../../../../src/primitives/announcer/announcer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- type CoreSpeechType = string | (() => SpeechType) | SpeechType[];
1
+ type CoreSpeechType = string | (() => SpeechType) | SpeechType[] | SpeechSynthesisUtterance;
2
2
  export type SpeechType = CoreSpeechType | Promise<CoreSpeechType>;
3
3
  export interface SeriesResult {
4
4
  series: Promise<void>;
@@ -6,5 +6,5 @@ export interface SeriesResult {
6
6
  append: (toSpeak: SpeechType) => void;
7
7
  cancel: () => void;
8
8
  }
9
- export default function (toSpeak: SpeechType, lang?: string, voice?: string): SeriesResult;
9
+ export default function (toSpeak: SpeechType, aria: boolean, lang?: string, voice?: string): SeriesResult;
10
10
  export {};
@@ -1,3 +1,5 @@
1
+ const ARIA_PARENT_ID = 'aria-parent';
2
+ let ariaLabelPhrases = [];
1
3
  /* global SpeechSynthesisErrorEvent */
2
4
  function flattenStrings(series = []) {
3
5
  const flattenedSeries = [];
@@ -22,6 +24,72 @@ function delay(pause) {
22
24
  setTimeout(resolve, pause);
23
25
  });
24
26
  }
27
+ /**
28
+ * @description This function is called at the end of the speak series
29
+ * @param Phrase is an object containing the text and the language
30
+ */
31
+ function addChildrenToAriaDiv(phrase) {
32
+ if (phrase?.text?.trim().length === 0)
33
+ return;
34
+ ariaLabelPhrases.push(phrase);
35
+ }
36
+ /**
37
+ * @description This function is triggered finally when the speak series is finished and we are to speak the aria labels
38
+ */
39
+ function focusElementForAria() {
40
+ const element = createAriaElement();
41
+ if (!element) {
42
+ console.error(`ARIA div not found: ${ARIA_PARENT_ID}`);
43
+ return;
44
+ }
45
+ for (const object of ariaLabelPhrases) {
46
+ const span = document.createElement('span');
47
+ // TODO: Not sure LG or Samsung support lang attribute on span or switching language
48
+ span.setAttribute('lang', object.lang);
49
+ span.setAttribute('aria-label', object.text);
50
+ element.appendChild(span);
51
+ }
52
+ // Cleanup
53
+ setTimeout(() => {
54
+ ariaLabelPhrases = [];
55
+ cleanAriaLabelParent();
56
+ focusCanvas();
57
+ }, 100);
58
+ }
59
+ /**
60
+ * @description Clean the aria label parent after speaking
61
+ */
62
+ function cleanAriaLabelParent() {
63
+ const parentTag = document.getElementById(ARIA_PARENT_ID);
64
+ if (parentTag) {
65
+ while (parentTag.firstChild) {
66
+ parentTag.removeChild(parentTag.firstChild);
67
+ }
68
+ }
69
+ }
70
+ /**
71
+ * @description Focus the canvas element
72
+ */
73
+ function focusCanvas() {
74
+ const canvas = document.getElementById('app')?.firstChild;
75
+ canvas?.focus();
76
+ }
77
+ /**
78
+ * @description Create the aria element in the DOM if it doesn't exist
79
+ * @private For xbox, we may need to create a different element each time we wanna use aria
80
+ */
81
+ function createAriaElement() {
82
+ const aria_container = document.getElementById(ARIA_PARENT_ID);
83
+ if (!aria_container) {
84
+ const element = document.createElement('div');
85
+ element.setAttribute('id', ARIA_PARENT_ID);
86
+ element.setAttribute('aria-live', 'assertive');
87
+ element.setAttribute('tabindex', '0');
88
+ document.body.appendChild(element);
89
+ return element;
90
+ }
91
+ return aria_container;
92
+ }
25
93
  /**
26
94
  * Speak a string
27
95
  *
@@ -54,15 +122,10 @@ function speak(phrase, utterances, lang = 'en-US', voiceName) {
54
122
  synth.speak(utterance);
55
123
  });
56
124
  }
57
- function speakSeries(series, lang, voice, root = true) {
125
+ function speakSeries(series, aria, lang, voice, root = true) {
58
126
  const synth = window.speechSynthesis;
59
127
  const remainingPhrases = flattenStrings(Array.isArray(series) ? series : [series]);
60
128
  const nestedSeriesResults = [];
61
- /*
62
- We hold this array of SpeechSynthesisUtterances in order to prevent them from being
63
- garbage collected prematurely on STB hardware which can cause the 'onend' events of
64
- utterances to not fire consistently.
65
- */
66
129
  const utterances = [];
67
130
  let active = true;
68
131
  const seriesChain = (async () => {
@@ -70,26 +133,68 @@ function speakSeries(series, lang, voice, root = true) {
70
133
  while (active && remainingPhrases.length) {
71
134
  const phrase = await Promise.resolve(remainingPhrases.shift());
72
135
  if (!active) {
73
- // Exit
74
- // Need to check this after the await in case it was cancelled in between
75
- break;
136
+ break; // Exit if canceled
76
137
  }
77
- else if (typeof phrase === 'string' && phrase.includes('PAUSE-')) {
78
- // Pause it
79
- let pause = Number(phrase.split('PAUSE-')[1]) * 1000;
80
- if (isNaN(pause)) {
81
- pause = 0;
138
+ if (typeof phrase === 'string' && phrase.includes('PAUSE-')) {
139
+ // Handle pauses
140
+ const pause = Number(phrase.split('PAUSE-')[1]) * 1000;
141
+ if (!isNaN(pause)) {
142
+ await delay(pause);
143
+ }
144
+ }
145
+ else if (typeof phrase === 'string') {
146
+ if (!phrase) {
147
+ continue; // Skip empty strings
148
+ }
149
+ // Handle regular strings with retry logic
150
+ const totalRetries = 3;
151
+ let retriesLeft = totalRetries;
152
+ while (active && retriesLeft > 0) {
153
+ try {
154
+ if (aria)
155
+ addChildrenToAriaDiv({ text: phrase, lang });
156
+ else
157
+ await speak(phrase, utterances, lang, voice);
158
+ retriesLeft = 0; // Exit retry loop on success
159
+ }
160
+ catch (e) {
161
+ if (e instanceof SpeechSynthesisErrorEvent) {
162
+ if (e.error === 'network') {
163
+ retriesLeft--;
164
+ console.warn(`Speech synthesis network error. Retries left: ${retriesLeft}`);
165
+ await delay(500 * (totalRetries - retriesLeft));
166
+ }
167
+ else if (e.error === 'canceled' ||
168
+ e.error === 'interrupted') {
169
+ // Cancel or interrupt error (ignore)
170
+ retriesLeft = 0;
171
+ }
172
+ else {
173
+ throw new Error(`SpeechSynthesisErrorEvent: ${e.error}`);
174
+ }
175
+ }
176
+ else {
177
+ throw e;
178
+ }
179
+ }
82
180
  }
83
- await delay(pause);
84
181
  }
85
- else if (typeof phrase === 'string' && phrase.length) {
86
- // Speak it
182
+ else if (phrase instanceof SpeechSynthesisUtterance) {
183
+ // Handle SpeechSynthesisUtterance objects with retry logic
87
184
  const totalRetries = 3;
88
185
  let retriesLeft = totalRetries;
186
+ const text = phrase.text;
187
+ const objectLang = phrase?.lang;
188
+ const objectVoice = phrase?.voice;
89
189
  while (active && retriesLeft > 0) {
90
190
  try {
91
- await speak(phrase, utterances, lang, voice);
92
- retriesLeft = 0;
191
+ if (text) {
192
+ if (aria)
193
+ addChildrenToAriaDiv({ text, lang: objectLang });
194
+ else
195
+ await speak(text, utterances, objectLang, objectVoice?.name);
196
+ retriesLeft = 0; // Exit retry loop on success
197
+ }
93
198
  }
94
199
  catch (e) {
95
200
  if (e instanceof SpeechSynthesisErrorEvent) {
@@ -114,13 +219,14 @@ function speakSeries(series, lang, voice, root = true) {
114
219
  }
115
220
  }
116
221
  else if (typeof phrase === 'function') {
117
- const seriesResult = speakSeries(phrase(), lang, voice, false);
222
+ // Handle functions
223
+ const seriesResult = speakSeries(phrase(), aria, lang, voice, false);
118
224
  nestedSeriesResults.push(seriesResult);
119
225
  await seriesResult.series;
120
226
  }
121
227
  else if (Array.isArray(phrase)) {
122
- // Speak it (recursively)
123
- const seriesResult = speakSeries(phrase, lang, voice, false);
228
+ // Handle nested arrays
229
+ const seriesResult = speakSeries(phrase, aria, lang, voice, false);
124
230
  nestedSeriesResults.push(seriesResult);
125
231
  await seriesResult.series;
126
232
  }
@@ -128,6 +234,10 @@ function speakSeries(series, lang, voice, root = true) {
128
234
  }
129
235
  finally {
130
236
  active = false;
237
+ // Call completion logic only for the original (root) series
238
+ if (root && aria) {
239
+ focusElementForAria();
240
+ }
131
241
  }
132
242
  })();
133
243
  return {
@@ -143,19 +253,29 @@ function speakSeries(series, lang, voice, root = true) {
143
253
  return;
144
254
  }
145
255
  if (root) {
146
- synth.cancel();
256
+ if (aria) {
257
+ const element = createAriaElement();
258
+ if (element) {
259
+ ariaLabelPhrases = [];
260
+ cleanAriaLabelParent();
261
+ element.focus();
262
+ focusCanvas();
263
+ }
264
+ return;
265
+ }
266
+ synth.cancel(); // Cancel all ongoing speech
147
267
  }
148
- nestedSeriesResults.forEach((nestedSeriesResults) => {
149
- nestedSeriesResults.cancel();
268
+ nestedSeriesResults.forEach((nestedSeriesResult) => {
269
+ nestedSeriesResult.cancel();
150
270
  });
151
271
  active = false;
152
272
  },
153
273
  };
154
274
  }
155
275
  let currentSeries;
156
- export default function (toSpeak, lang = 'en-US', voice) {
276
+ export default function (toSpeak, aria, lang = 'en-US', voice) {
157
277
  currentSeries && currentSeries.cancel();
158
- currentSeries = speakSeries(toSpeak, lang, voice);
278
+ currentSeries = speakSeries(toSpeak, aria, lang, voice);
159
279
  return currentSeries;
160
280
  }
161
281
  //# sourceMappingURL=speech.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"speech.js","sourceRoot":"","sources":["../../../../src/primitives/announcer/speech.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speech.js","sourceRoot":"","sources":["../../../../src/primitives/announcer/speech.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@
17
17
  * - `restoreFocus()`: Restores focus to the last stored element and removes it from the stack. Returns `true` if successful, `false` otherwise.
18
18
  * - `clearFocusStack()`: Empties the focus stack.
19
19
  */
20
- import { JSX } from 'solid-js';
20
+ import * as s from 'solid-js';
21
21
  import { type ElementNode } from '@lightningtv/solid';
22
22
  interface FocusStackContextType {
23
23
  storeFocus: (element: ElementNode, prevElement?: ElementNode) => void;
@@ -25,7 +25,7 @@ interface FocusStackContextType {
25
25
  clearFocusStack: () => void;
26
26
  }
27
27
  export declare function FocusStackProvider(props: {
28
- children: JSX.Element;
29
- }): JSX.Element;
30
- export declare function useFocusStack(): FocusStackContextType;
28
+ children: s.JSX.Element;
29
+ }): s.JSX.Element;
30
+ export declare function useFocusStack(autoClear?: boolean): FocusStackContextType;
31
31
  export {};
@@ -17,12 +17,15 @@
17
17
  * - `restoreFocus()`: Restores focus to the last stored element and removes it from the stack. Returns `true` if successful, `false` otherwise.
18
18
  * - `clearFocusStack()`: Empties the focus stack.
19
19
  */
20
- import { createSignal, createContext, useContext } from 'solid-js';
21
- const FocusStackContext = createContext(undefined);
20
+ import * as s from 'solid-js';
21
+ const FocusStackContext = s.createContext(undefined);
22
22
  export function FocusStackProvider(props) {
23
- const [_focusStack, setFocusStack] = createSignal([]);
23
+ const [_focusStack, setFocusStack] = s.createSignal([]);
24
24
  function storeFocus(element, prevElement) {
25
- setFocusStack((stack) => [...stack, prevElement || element]);
25
+ const elm = prevElement || element;
26
+ if (elm) {
27
+ setFocusStack(stack => [...stack, elm]);
28
+ }
26
29
  }
27
30
  function restoreFocus() {
28
31
  let wasFocused = false;
@@ -43,11 +46,17 @@ export function FocusStackProvider(props) {
43
46
  {props.children}
44
47
  </FocusStackContext.Provider>);
45
48
  }
46
- export function useFocusStack() {
47
- const context = useContext(FocusStackContext);
49
+ export function useFocusStack(autoClear = true) {
50
+ const context = s.useContext(FocusStackContext);
48
51
  if (!context) {
49
52
  throw new Error("useFocusStack must be used within a FocusStackProvider");
50
53
  }
54
+ if (autoClear) {
55
+ s.onCleanup(() => {
56
+ // delay clearing the focus stack so restoreFocus can happen first.
57
+ setTimeout(() => context.clearFocusStack(), 5);
58
+ });
59
+ }
51
60
  return context;
52
61
  }
53
62
  //# sourceMappingURL=createFocusStack.jsx.map
@@ -1 +1 @@
1
- {"version":3,"file":"createFocusStack.jsx","sourceRoot":"","sources":["../../../src/primitives/createFocusStack.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAO,MAAM,UAAU,CAAC;AASxE,MAAM,iBAAiB,GAAG,aAAa,CAAoC,SAAS,CAAC,CAAC;AAEtF,MAAM,UAAU,kBAAkB,CAAC,KAA+B;IAChE,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,YAAY,CAAgB,EAAE,CAAC,CAAC;IAErE,SAAS,UAAU,CAAC,OAAoB,EAAE,WAAyB;QACjE,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,SAAS,YAAY;QACnB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE;YACtB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC9D,WAAW,CAAC,QAAQ,EAAE,CAAC;gBACvB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,SAAS,eAAe;QACtB,aAAa,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,CACL,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC,CAC/E;MAAA,CAAC,KAAK,CAAC,QAAQ,CACjB;IAAA,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"createFocusStack.jsx","sourceRoot":"","sources":["../../../src/primitives/createFocusStack.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAS9B,MAAM,iBAAiB,GAAG,CAAC,CAAC,aAAa,CAAoC,SAAS,CAAC,CAAC;AAExF,MAAM,UAAU,kBAAkB,CAAC,KAAiC;IAClE,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,CAAgB,EAAE,CAAC,CAAC;IAEvE,SAAS,UAAU,CAAC,OAAoB,EAAE,WAAyB;QACjE,MAAM,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC;QACnC,IAAI,GAAG,EAAE,CAAC;YACR,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,SAAS,YAAY;QACnB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE;YACtB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC9D,WAAW,CAAC,QAAQ,EAAE,CAAC;gBACvB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,SAAS,eAAe;QACtB,aAAa,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,CACL,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC,CAC/E;MAAA,CAAC,KAAK,CAAC,QAAQ,CACjB;IAAA,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAAS,GAAG,IAAI;IAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;YACf,mEAAmE;YACnE,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import * as s from 'solid-js';
2
+ import * as lng from '@lightningtv/solid';
3
+ interface Destroyable {
4
+ (props: lng.NodeProps): s.JSX.Element;
5
+ destroy: () => void;
6
+ }
7
+ export declare function createTag(children: s.JSX.Element): Destroyable;
8
+ export {};
@@ -0,0 +1,20 @@
1
+ import * as s from 'solid-js';
2
+ import * as lng from '@lightningtv/solid';
3
+ export function createTag(children) {
4
+ const [texture, setTexture] = s.createSignal(null);
5
+ const Tag = <view x={lng.rootNode.w - 1} y={lng.rootNode.h - 1} display='flex' onLayout={(n) => {
6
+ if (n.preFlexwidth && n.width !== n.preFlexwidth) {
7
+ n.rtt = true;
8
+ setTimeout(() => setTexture(n.texture), 1);
9
+ }
10
+ }} parent={lng.rootNode} children={children} textureOptions={{
11
+ preventCleanup: true
12
+ }}/>;
13
+ Tag.render(false);
14
+ const TagComponent = (props) => {
15
+ return <view color={0xffffffff} autosize {...props} texture={texture()}/>;
16
+ };
17
+ TagComponent.destroy = () => Tag.destroy();
18
+ return TagComponent;
19
+ }
20
+ //# sourceMappingURL=createTag.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTag.jsx","sourceRoot":"","sources":["../../../src/primitives/createTag.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAC7B,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAOzC,MAAM,UAAU,SAAS,CAAC,QAAuB;IAC/C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,YAAY,CAAiC,IAAI,CAAC,CAAC;IACnF,MAAM,GAAG,GAAG,CAAC,IAAI,CACf,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CACtB,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CACtB,OAAO,CAAC,MAAM,CACd,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC;gBACjD,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;gBACb,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC,CAAC,CACF,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACzC,cAAc,CAAC,CAAC;YAChB,cAAc,EAAE,IAAI;SACrB,CAAC,EAA6B,CAAA;IAC/B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAElB,MAAM,YAAY,GAAG,CAAC,KAAoB,EAAE,EAAE;QAC5C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAG,CAAC;IAC7E,CAAC,CAAC;IACF,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAE3C,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -4,6 +4,7 @@ export * from './createInfiniteItems.js';
4
4
  export * from './useMouse.js';
5
5
  export * from './portal.jsx';
6
6
  export * from './Lazy.jsx';
7
+ export * from './Image.jsx';
7
8
  export * from './Visible.jsx';
8
9
  export * from './router.js';
9
10
  export * from './Column.jsx';
@@ -11,11 +12,19 @@ export * from './Row.jsx';
11
12
  export * from './Grid.jsx';
12
13
  export * from './FPSCounter.jsx';
13
14
  export * from './FadeInOut.jsx';
15
+ export * from './Preserve.jsx';
16
+ export * from './Suspense.jsx';
17
+ export * from './Marquee.jsx';
14
18
  export * from './createFocusStack.jsx';
15
- export * from './marquee.jsx';
16
- export { withScrolling } from './utils/withScrolling.js';
19
+ export * from './useHold.js';
20
+ export * from './KeepAlive.jsx';
21
+ export * from './VirtualGrid.jsx';
22
+ export * from './Virtual.jsx';
23
+ export * from './utils/withScrolling.js';
24
+ export * from './createTag.jsx';
17
25
  export { type AnyFunction, chainFunctions, chainRefs, } from './utils/chainFunctions.js';
18
- export { handleNavigation, onGridFocus } from './utils/handleNavigation.js';
26
+ export * from './utils/handleNavigation.js';
19
27
  export { createSpriteMap, type SpriteDef } from './utils/createSpriteMap.js';
28
+ export { createBlurredImage } from './utils/createBlurredImage.js';
20
29
  export type * from './types.js';
21
- export type { KeyHandler } from '@lightningtv/core/focusManager';
30
+ export type { KeyHandler } from '../core/focusManager.js';
@@ -4,6 +4,7 @@ export * from './createInfiniteItems.js';
4
4
  export * from './useMouse.js';
5
5
  export * from './portal.jsx';
6
6
  export * from './Lazy.jsx';
7
+ export * from './Image.jsx';
7
8
  export * from './Visible.jsx';
8
9
  export * from './router.js';
9
10
  export * from './Column.jsx';
@@ -11,10 +12,18 @@ export * from './Row.jsx';
11
12
  export * from './Grid.jsx';
12
13
  export * from './FPSCounter.jsx';
13
14
  export * from './FadeInOut.jsx';
15
+ export * from './Preserve.jsx';
16
+ export * from './Suspense.jsx';
17
+ export * from './Marquee.jsx';
14
18
  export * from './createFocusStack.jsx';
15
- export * from './marquee.jsx';
16
- export { withScrolling } from './utils/withScrolling.js';
19
+ export * from './useHold.js';
20
+ export * from './KeepAlive.jsx';
21
+ export * from './VirtualGrid.jsx';
22
+ export * from './Virtual.jsx';
23
+ export * from './utils/withScrolling.js';
24
+ export * from './createTag.jsx';
17
25
  export { chainFunctions, chainRefs, } from './utils/chainFunctions.js';
18
- export { handleNavigation, onGridFocus } from './utils/handleNavigation.js';
26
+ export * from './utils/handleNavigation.js';
19
27
  export { createSpriteMap } from './utils/createSpriteMap.js';
28
+ export { createBlurredImage } from './utils/createBlurredImage.js';
20
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAEL,cAAc,EACd,SAAS,GACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAkB,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAEL,cAAc,EACd,SAAS,GACV,MAAM,2BAA2B,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAkB,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -1,5 +1,5 @@
1
- import type { ElementNode, NodeProps, NodeStyles } from '@lightningtv/solid';
2
- import type { KeyHandler } from '@lightningtv/core/focusManager';
1
+ import type { ElementNode, NodeProps, NodeStyles } from '../index.js';
2
+ import type { KeyHandler } from '../core/focusManager.js';
3
3
  export type OnSelectedChanged = (this: NavigableElement, selectedIndex: number, elm: NavigableElement, active: ElementNode, lastSelectedIndex?: number) => void;
4
4
  export interface NavigableProps extends NodeProps {
5
5
  /** function to be called when the selected of the component changes */
@@ -28,9 +28,12 @@ export interface NavigableProps extends NodeProps {
28
28
  * Wrap the row so active goes back to the beginning of the row
29
29
  */
30
30
  wrap?: boolean;
31
+ /** function to be called when scrolled */
32
+ onScrolled?: (elm: NavigableElement, offset: number, isInitial: boolean) => void;
31
33
  }
32
34
  export interface NavigableElement extends ElementNode, NavigableProps {
33
35
  selected: number;
36
+ scrollToIndex: (this: NavigableElement, index: number) => void;
34
37
  }
35
38
  export interface NavigableStyleProperties {
36
39
  /**
@@ -1,5 +1,5 @@
1
- import type { ElementNode } from '@lightningtv/core';
2
- import { type KeyMap, type KeyHoldOptions } from '@lightningtv/core/focusManager';
1
+ import type { ElementNode } from '../core/index.js';
2
+ import { type KeyMap, type KeyHoldOptions } from '../core/focusManager.js';
3
3
  declare const focusPath: import("solid-js").Accessor<ElementNode[]>;
4
4
  export { focusPath };
5
5
  export declare const useFocusManager: (userKeyMap?: Partial<KeyMap>, keyHoldOptions?: KeyHoldOptions) => void;
@@ -1,6 +1,6 @@
1
1
  import { createEffect, on, createSignal, onCleanup, getOwner, runWithOwner, } from 'solid-js';
2
- import { Config } from '@lightningtv/core';
3
- import { useFocusManager as useFocusManagerCore, } from '@lightningtv/core/focusManager';
2
+ import { Config } from '../core/index.js';
3
+ import { useFocusManager as useFocusManagerCore, } from '../core/focusManager.js';
4
4
  import { activeElement, setActiveElement } from '../activeElement.js';
5
5
  const [focusPath, setFocusPath] = createSignal([]);
6
6
  export { focusPath };
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusManager.js","sourceRoot":"","sources":["../../../src/primitives/useFocusManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,EAAE,EACF,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EACL,eAAe,IAAI,mBAAmB,GAGvC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,YAAY,CAAgB,EAAE,CAAC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,UAA4B,EAC5B,cAA+B,EAC/B,EAAE;IACF,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,gBAAgB,GAAG,CAAC,SAAS,EAAE,EAAE,CACtC,YAAY,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;IAElD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,mBAAmB,CAAC;QAChE,UAAU;QACV,cAAc;QACd,YAAY;KACb,CAAC,CAAC;IAEH,YAAY,CACV,EAAE,CACA,aAAa,EACb,GAAG,EAAE;QACH,YAAY,CAAC,CAAC,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,EACD,EAAE,KAAK,EAAE,IAAI,EAAE,CAChB,CACF,CAAC;IAEF,SAAS,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC,CAAC"}
1
+ {"version":3,"file":"useFocusManager.js","sourceRoot":"","sources":["../../../src/primitives/useFocusManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,EAAE,EACF,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EACL,eAAe,IAAI,mBAAmB,GAGvC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,YAAY,CAAgB,EAAE,CAAC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,UAA4B,EAC5B,cAA+B,EAC/B,EAAE;IACF,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,gBAAgB,GAAG,CAAC,SAAS,EAAE,EAAE,CACtC,YAAY,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;IAElD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,mBAAmB,CAAC;QAChE,UAAU;QACV,cAAc;QACd,YAAY;KACb,CAAC,CAAC;IAEH,YAAY,CACV,EAAE,CACA,aAAa,EACb,GAAG,EAAE;QACH,YAAY,CAAC,CAAC,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,EACD,EAAE,KAAK,EAAE,IAAI,EAAE,CAChB,CACF,CAAC;IAEF,SAAS,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC,CAAC"}
@@ -1,2 +1,18 @@
1
- import { ElementNode } from '@lightningtv/solid';
2
- export declare function useMouse(myApp?: ElementNode, throttleBy?: number): void;
1
+ import type { ElementText, TextNode } from '../core/index.js';
2
+ import { ElementNode } from '../index.js';
3
+ type CustomState = `$${string}`;
4
+ type RenderableNode = ElementNode | ElementText | TextNode;
5
+ interface MouseStateOptions {
6
+ hoverState: CustomState;
7
+ pressedState: CustomState;
8
+ }
9
+ type UseMouseOptions = {
10
+ customStates: MouseStateOptions;
11
+ } | {
12
+ customStates: undefined;
13
+ };
14
+ export declare function addCustomStateToElement(element: RenderableNode, state: CustomState): void;
15
+ export declare function removeCustomStateFromElement(element: RenderableNode, state: CustomState): void;
16
+ export declare function hasCustomState(element: RenderableNode, state: CustomState): boolean;
17
+ export declare function useMouse<TApp extends ElementNode = ElementNode>(myApp?: TApp, throttleBy?: number, options?: UseMouseOptions): void;
18
+ export {};