@lightningtv/solid 3.0.0-2 → 3.0.0-21

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 (206) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +6 -0
  3. package/dist/src/activeElement.d.ts +1 -1
  4. package/dist/src/core/animation.d.ts +35 -0
  5. package/dist/src/core/animation.js +120 -0
  6. package/dist/src/core/animation.js.map +1 -0
  7. package/dist/src/core/config.d.ts +47 -0
  8. package/dist/src/core/config.js +23 -0
  9. package/dist/src/core/config.js.map +1 -0
  10. package/dist/src/core/domRenderer.d.ts +117 -0
  11. package/dist/src/core/domRenderer.js +1160 -0
  12. package/dist/src/core/domRenderer.js.map +1 -0
  13. package/dist/src/core/elementNode.d.ts +209 -0
  14. package/dist/src/core/elementNode.js +829 -0
  15. package/dist/src/core/elementNode.js.map +1 -0
  16. package/dist/src/core/flex.d.ts +2 -0
  17. package/dist/src/core/flex.js +243 -0
  18. package/dist/src/core/flex.js.map +1 -0
  19. package/dist/src/core/focusKeyTypes.d.ts +42 -0
  20. package/dist/src/core/focusKeyTypes.js +2 -0
  21. package/dist/src/core/focusKeyTypes.js.map +1 -0
  22. package/dist/src/core/focusManager.d.ts +13 -0
  23. package/dist/src/core/focusManager.js +269 -0
  24. package/dist/src/core/focusManager.js.map +1 -0
  25. package/dist/src/core/index.d.ts +12 -0
  26. package/dist/src/core/index.js +12 -0
  27. package/dist/src/core/index.js.map +1 -0
  28. package/dist/src/core/intrinsicTypes.d.ts +90 -0
  29. package/dist/src/core/intrinsicTypes.js +2 -0
  30. package/dist/src/core/intrinsicTypes.js.map +1 -0
  31. package/dist/src/core/lightningInit.d.ts +89 -0
  32. package/dist/src/core/lightningInit.js +26 -0
  33. package/dist/src/core/lightningInit.js.map +1 -0
  34. package/dist/src/core/nodeTypes.d.ts +6 -0
  35. package/dist/src/core/nodeTypes.js +6 -0
  36. package/dist/src/core/nodeTypes.js.map +1 -0
  37. package/dist/src/core/shaders.d.ts +51 -0
  38. package/dist/src/core/shaders.js +446 -0
  39. package/dist/src/core/shaders.js.map +1 -0
  40. package/dist/src/core/states.d.ts +12 -0
  41. package/dist/src/core/states.js +84 -0
  42. package/dist/src/core/states.js.map +1 -0
  43. package/dist/src/core/timings.d.ts +36 -0
  44. package/dist/src/core/timings.js +199 -0
  45. package/dist/src/core/timings.js.map +1 -0
  46. package/dist/src/core/utils.d.ts +39 -0
  47. package/dist/src/core/utils.js +164 -0
  48. package/dist/src/core/utils.js.map +1 -0
  49. package/dist/src/devtools/index.d.ts +1 -1
  50. package/dist/src/devtools/index.js +1 -1
  51. package/dist/src/devtools/index.js.map +1 -1
  52. package/dist/src/index.d.ts +3 -3
  53. package/dist/src/index.js +1 -1
  54. package/dist/src/index.js.map +1 -1
  55. package/dist/src/jsx-runtime.d.ts +1 -3
  56. package/dist/src/primitives/Column.jsx +9 -10
  57. package/dist/src/primitives/Column.jsx.map +1 -1
  58. package/dist/src/primitives/FPSCounter.jsx +14 -1
  59. package/dist/src/primitives/FPSCounter.jsx.map +1 -1
  60. package/dist/src/primitives/Grid.d.ts +15 -6
  61. package/dist/src/primitives/Grid.jsx +35 -22
  62. package/dist/src/primitives/Grid.jsx.map +1 -1
  63. package/dist/src/primitives/Image.d.ts +8 -0
  64. package/dist/src/primitives/Image.jsx +24 -0
  65. package/dist/src/primitives/Image.jsx.map +1 -0
  66. package/dist/src/primitives/KeepAlive.d.ts +30 -0
  67. package/dist/src/primitives/KeepAlive.jsx +77 -0
  68. package/dist/src/primitives/KeepAlive.jsx.map +1 -0
  69. package/dist/src/primitives/Lazy.d.ts +8 -7
  70. package/dist/src/primitives/Lazy.jsx +52 -23
  71. package/dist/src/primitives/Lazy.jsx.map +1 -1
  72. package/dist/src/primitives/Marquee.d.ts +64 -0
  73. package/dist/src/primitives/Marquee.jsx +86 -0
  74. package/dist/src/primitives/Marquee.jsx.map +1 -0
  75. package/dist/src/primitives/Preserve.d.ts +4 -0
  76. package/dist/src/primitives/Preserve.jsx +11 -0
  77. package/dist/src/primitives/Preserve.jsx.map +1 -0
  78. package/dist/src/primitives/Row.jsx +9 -10
  79. package/dist/src/primitives/Row.jsx.map +1 -1
  80. package/dist/src/primitives/Suspense.d.ts +22 -0
  81. package/dist/src/primitives/Suspense.jsx +33 -0
  82. package/dist/src/primitives/Suspense.jsx.map +1 -0
  83. package/dist/src/primitives/Virtual.d.ts +18 -0
  84. package/dist/src/primitives/Virtual.jsx +434 -0
  85. package/dist/src/primitives/Virtual.jsx.map +1 -0
  86. package/dist/src/primitives/VirtualGrid.d.ts +13 -0
  87. package/dist/src/primitives/VirtualGrid.jsx +160 -0
  88. package/dist/src/primitives/VirtualGrid.jsx.map +1 -0
  89. package/dist/src/primitives/VirtualList.d.ts +11 -0
  90. package/dist/src/primitives/VirtualList.jsx +96 -0
  91. package/dist/src/primitives/VirtualList.jsx.map +1 -0
  92. package/dist/src/primitives/VirtualRow.d.ts +13 -0
  93. package/dist/src/primitives/VirtualRow.jsx +97 -0
  94. package/dist/src/primitives/VirtualRow.jsx.map +1 -0
  95. package/dist/src/primitives/Visible.d.ts +0 -1
  96. package/dist/src/primitives/Visible.jsx +1 -1
  97. package/dist/src/primitives/Visible.jsx.map +1 -1
  98. package/dist/src/primitives/announcer/announcer.d.ts +2 -0
  99. package/dist/src/primitives/announcer/announcer.js +7 -5
  100. package/dist/src/primitives/announcer/announcer.js.map +1 -1
  101. package/dist/src/primitives/announcer/index.d.ts +5 -1
  102. package/dist/src/primitives/announcer/index.js +8 -2
  103. package/dist/src/primitives/announcer/index.js.map +1 -1
  104. package/dist/src/primitives/announcer/speech.d.ts +2 -2
  105. package/dist/src/primitives/announcer/speech.js +157 -28
  106. package/dist/src/primitives/announcer/speech.js.map +1 -1
  107. package/dist/src/primitives/createFocusStack.d.ts +4 -4
  108. package/dist/src/primitives/createFocusStack.jsx +15 -6
  109. package/dist/src/primitives/createFocusStack.jsx.map +1 -1
  110. package/dist/src/primitives/createTag.d.ts +8 -0
  111. package/dist/src/primitives/createTag.jsx +20 -0
  112. package/dist/src/primitives/createTag.jsx.map +1 -0
  113. package/dist/src/primitives/index.d.ts +14 -4
  114. package/dist/src/primitives/index.js +13 -3
  115. package/dist/src/primitives/index.js.map +1 -1
  116. package/dist/src/primitives/types.d.ts +5 -2
  117. package/dist/src/primitives/useFocusManager.d.ts +2 -2
  118. package/dist/src/primitives/useFocusManager.js +2 -2
  119. package/dist/src/primitives/useFocusManager.js.map +1 -1
  120. package/dist/src/primitives/useHold.d.ts +27 -0
  121. package/dist/src/primitives/useHold.js +54 -0
  122. package/dist/src/primitives/useHold.js.map +1 -0
  123. package/dist/src/primitives/useMouse.d.ts +18 -2
  124. package/dist/src/primitives/useMouse.js +171 -47
  125. package/dist/src/primitives/useMouse.js.map +1 -1
  126. package/dist/src/primitives/utils/chainFunctions.d.ts +30 -4
  127. package/dist/src/primitives/utils/chainFunctions.js +14 -3
  128. package/dist/src/primitives/utils/chainFunctions.js.map +1 -1
  129. package/dist/src/primitives/utils/createBlurredImage.d.ts +56 -0
  130. package/dist/src/primitives/utils/createBlurredImage.js +223 -0
  131. package/dist/src/primitives/utils/createBlurredImage.js.map +1 -0
  132. package/dist/src/primitives/utils/createSpriteMap.d.ts +2 -2
  133. package/dist/src/primitives/utils/createSpriteMap.js +1 -1
  134. package/dist/src/primitives/utils/createSpriteMap.js.map +1 -1
  135. package/dist/src/primitives/utils/handleNavigation.d.ts +79 -5
  136. package/dist/src/primitives/utils/handleNavigation.js +242 -69
  137. package/dist/src/primitives/utils/handleNavigation.js.map +1 -1
  138. package/dist/src/primitives/utils/withScrolling.d.ts +14 -2
  139. package/dist/src/primitives/utils/withScrolling.js +66 -7
  140. package/dist/src/primitives/utils/withScrolling.js.map +1 -1
  141. package/dist/src/render.d.ts +8 -7
  142. package/dist/src/render.js +5 -1
  143. package/dist/src/render.js.map +1 -1
  144. package/dist/src/solidOpts.d.ts +1 -7
  145. package/dist/src/solidOpts.js +32 -16
  146. package/dist/src/solidOpts.js.map +1 -1
  147. package/dist/src/types.d.ts +1 -13
  148. package/dist/src/universal.d.ts +25 -0
  149. package/dist/src/universal.js +232 -0
  150. package/dist/src/universal.js.map +1 -0
  151. package/dist/src/utils.d.ts +3 -1
  152. package/dist/src/utils.js +9 -1
  153. package/dist/src/utils.js.map +1 -1
  154. package/dist/tsconfig.tsbuildinfo +1 -1
  155. package/jsx-runtime.d.ts +2 -4
  156. package/package.json +17 -15
  157. package/src/activeElement.ts +1 -1
  158. package/src/core/animation.ts +183 -0
  159. package/src/core/config.ts +77 -0
  160. package/src/core/domRenderer.ts +1308 -0
  161. package/src/core/elementNode.ts +1198 -0
  162. package/src/core/flex.ts +284 -0
  163. package/src/core/focusKeyTypes.ts +87 -0
  164. package/src/core/focusManager.ts +359 -0
  165. package/src/core/index.ts +13 -0
  166. package/src/core/intrinsicTypes.ts +199 -0
  167. package/src/core/lightningInit.ts +147 -0
  168. package/src/core/nodeTypes.ts +6 -0
  169. package/src/core/shaders.ts +567 -0
  170. package/src/core/states.ts +91 -0
  171. package/src/core/timings.ts +261 -0
  172. package/src/core/utils.ts +222 -0
  173. package/src/devtools/index.ts +1 -1
  174. package/src/index.ts +3 -3
  175. package/src/primitives/Column.tsx +10 -12
  176. package/src/primitives/FPSCounter.tsx +15 -1
  177. package/src/primitives/Grid.tsx +57 -33
  178. package/src/primitives/Image.tsx +36 -0
  179. package/src/primitives/KeepAlive.tsx +124 -0
  180. package/src/primitives/Lazy.tsx +66 -37
  181. package/src/primitives/Marquee.tsx +149 -0
  182. package/src/primitives/Preserve.tsx +18 -0
  183. package/src/primitives/Row.tsx +13 -14
  184. package/src/primitives/Suspense.tsx +39 -0
  185. package/src/primitives/Virtual.tsx +478 -0
  186. package/src/primitives/VirtualGrid.tsx +220 -0
  187. package/src/primitives/Visible.tsx +1 -2
  188. package/src/primitives/announcer/announcer.ts +16 -10
  189. package/src/primitives/announcer/index.ts +12 -2
  190. package/src/primitives/announcer/speech.ts +188 -27
  191. package/src/primitives/createFocusStack.tsx +18 -7
  192. package/src/primitives/createTag.tsx +31 -0
  193. package/src/primitives/index.ts +18 -4
  194. package/src/primitives/types.ts +12 -2
  195. package/src/primitives/useFocusManager.ts +3 -3
  196. package/src/primitives/useHold.ts +69 -0
  197. package/src/primitives/useMouse.ts +306 -67
  198. package/src/primitives/utils/chainFunctions.ts +40 -9
  199. package/src/primitives/utils/createBlurredImage.ts +366 -0
  200. package/src/primitives/utils/createSpriteMap.ts +6 -4
  201. package/src/primitives/utils/handleNavigation.ts +300 -84
  202. package/src/primitives/utils/withScrolling.ts +91 -18
  203. package/src/render.ts +10 -8
  204. package/src/solidOpts.ts +31 -24
  205. package/src/types.ts +1 -15
  206. package/src/utils.ts +11 -1
@@ -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
  *
@@ -30,11 +98,20 @@ function delay(pause) {
30
98
  * @param lang Language to speak in
31
99
  * @return {Promise<void>} Promise resolved when the utterance has finished speaking, and rejected if there's an error
32
100
  */
33
- function speak(phrase, utterances, lang = 'en-US') {
101
+ function speak(phrase, utterances, lang = 'en-US', voiceName) {
34
102
  const synth = window.speechSynthesis;
35
103
  return new Promise((resolve, reject) => {
104
+ let selectedVoice;
105
+ if (voiceName) {
106
+ const availableVoices = synth.getVoices();
107
+ selectedVoice =
108
+ availableVoices.find((v) => v.name === voiceName) || availableVoices[0];
109
+ }
36
110
  const utterance = new SpeechSynthesisUtterance(phrase);
37
111
  utterance.lang = lang;
112
+ if (selectedVoice) {
113
+ utterance.voice = selectedVoice;
114
+ }
38
115
  utterance.onend = () => {
39
116
  resolve();
40
117
  };
@@ -45,15 +122,10 @@ function speak(phrase, utterances, lang = 'en-US') {
45
122
  synth.speak(utterance);
46
123
  });
47
124
  }
48
- function speakSeries(series, lang, root = true) {
125
+ function speakSeries(series, aria, lang, voice, root = true) {
49
126
  const synth = window.speechSynthesis;
50
127
  const remainingPhrases = flattenStrings(Array.isArray(series) ? series : [series]);
51
128
  const nestedSeriesResults = [];
52
- /*
53
- We hold this array of SpeechSynthesisUtterances in order to prevent them from being
54
- garbage collected prematurely on STB hardware which can cause the 'onend' events of
55
- utterances to not fire consistently.
56
- */
57
129
  const utterances = [];
58
130
  let active = true;
59
131
  const seriesChain = (async () => {
@@ -61,26 +133,68 @@ function speakSeries(series, lang, root = true) {
61
133
  while (active && remainingPhrases.length) {
62
134
  const phrase = await Promise.resolve(remainingPhrases.shift());
63
135
  if (!active) {
64
- // Exit
65
- // Need to check this after the await in case it was cancelled in between
66
- break;
136
+ break; // Exit if canceled
137
+ }
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
+ }
67
144
  }
68
- else if (typeof phrase === 'string' && phrase.includes('PAUSE-')) {
69
- // Pause it
70
- let pause = Number(phrase.split('PAUSE-')[1]) * 1000;
71
- if (isNaN(pause)) {
72
- pause = 0;
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
+ }
73
180
  }
74
- await delay(pause);
75
181
  }
76
- else if (typeof phrase === 'string' && phrase.length) {
77
- // Speak it
182
+ else if (phrase instanceof SpeechSynthesisUtterance) {
183
+ // Handle SpeechSynthesisUtterance objects with retry logic
78
184
  const totalRetries = 3;
79
185
  let retriesLeft = totalRetries;
186
+ const text = phrase.text;
187
+ const objectLang = phrase?.lang;
188
+ const objectVoice = phrase?.voice;
80
189
  while (active && retriesLeft > 0) {
81
190
  try {
82
- await speak(phrase, utterances, lang);
83
- 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
+ }
84
198
  }
85
199
  catch (e) {
86
200
  if (e instanceof SpeechSynthesisErrorEvent) {
@@ -105,13 +219,14 @@ function speakSeries(series, lang, root = true) {
105
219
  }
106
220
  }
107
221
  else if (typeof phrase === 'function') {
108
- const seriesResult = speakSeries(phrase(), lang, false);
222
+ // Handle functions
223
+ const seriesResult = speakSeries(phrase(), aria, lang, voice, false);
109
224
  nestedSeriesResults.push(seriesResult);
110
225
  await seriesResult.series;
111
226
  }
112
227
  else if (Array.isArray(phrase)) {
113
- // Speak it (recursively)
114
- const seriesResult = speakSeries(phrase, lang, false);
228
+ // Handle nested arrays
229
+ const seriesResult = speakSeries(phrase, aria, lang, voice, false);
115
230
  nestedSeriesResults.push(seriesResult);
116
231
  await seriesResult.series;
117
232
  }
@@ -119,6 +234,10 @@ function speakSeries(series, lang, root = true) {
119
234
  }
120
235
  finally {
121
236
  active = false;
237
+ // Call completion logic only for the original (root) series
238
+ if (root && aria) {
239
+ focusElementForAria();
240
+ }
122
241
  }
123
242
  })();
124
243
  return {
@@ -134,19 +253,29 @@ function speakSeries(series, lang, root = true) {
134
253
  return;
135
254
  }
136
255
  if (root) {
137
- 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
138
267
  }
139
- nestedSeriesResults.forEach((nestedSeriesResults) => {
140
- nestedSeriesResults.cancel();
268
+ nestedSeriesResults.forEach((nestedSeriesResult) => {
269
+ nestedSeriesResult.cancel();
141
270
  });
142
271
  active = false;
143
272
  },
144
273
  };
145
274
  }
146
275
  let currentSeries;
147
- export default function (toSpeak, lang = 'en-US') {
276
+ export default function (toSpeak, aria, lang = 'en-US', voice) {
148
277
  currentSeries && currentSeries.cancel();
149
- currentSeries = speakSeries(toSpeak, lang);
278
+ currentSeries = speakSeries(toSpeak, aria, lang, voice);
150
279
  return currentSeries;
151
280
  }
152
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 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,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,10 +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 { withScrolling } from './utils/withScrolling.js';
16
- export { chainFunctions } from './utils/chainFunctions.js';
17
- export { handleNavigation, onGridFocus } from './utils/handleNavigation.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';
25
+ export { type AnyFunction, chainFunctions, chainRefs, } from './utils/chainFunctions.js';
26
+ export * from './utils/handleNavigation.js';
18
27
  export { createSpriteMap, type SpriteDef } from './utils/createSpriteMap.js';
28
+ export { createBlurredImage } from './utils/createBlurredImage.js';
19
29
  export type * from './types.js';
20
- 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,9 +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 { withScrolling } from './utils/withScrolling.js';
16
- export { chainFunctions } from './utils/chainFunctions.js';
17
- export { handleNavigation, onGridFocus } from './utils/handleNavigation.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';
25
+ export { chainFunctions, chainRefs, } from './utils/chainFunctions.js';
26
+ export * from './utils/handleNavigation.js';
18
27
  export { createSpriteMap } from './utils/createSpriteMap.js';
28
+ export { createBlurredImage } from './utils/createBlurredImage.js';
19
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,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,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"}
@@ -0,0 +1,27 @@
1
+ export type UseHoldProps = {
2
+ onHold: () => void;
3
+ onEnter: () => void;
4
+ onRelease?: () => void;
5
+ holdThreshold?: number;
6
+ performOnEnterImmediately?: boolean;
7
+ };
8
+ /**
9
+ * @example
10
+ * const [holdRight, releaseRight] = useHold({
11
+ * onHold: handleHoldRight,
12
+ * onEnter: handleOnRight,
13
+ * onRelease: handleReleaseHold,
14
+ * holdThreshold: 200,
15
+ * performOnEnterImmediately: true
16
+ * });
17
+ *
18
+ * <View
19
+ * onRight={holdRight}
20
+ * onRightRelease={releaseRight}
21
+ * />
22
+ *
23
+ * @param {UseHoldProps} props - The properties for configuring the hold behavior.
24
+ * @returns {[() => boolean, () => boolean]} A tuple containing `startHold` and `releaseHold` functions.
25
+ */
26
+ export declare function useHold(props: UseHoldProps): ((() => boolean) | (() => true | undefined))[];
27
+ export default useHold;
@@ -0,0 +1,54 @@
1
+ import { createMemo } from 'solid-js';
2
+ /**
3
+ * @example
4
+ * const [holdRight, releaseRight] = useHold({
5
+ * onHold: handleHoldRight,
6
+ * onEnter: handleOnRight,
7
+ * onRelease: handleReleaseHold,
8
+ * holdThreshold: 200,
9
+ * performOnEnterImmediately: true
10
+ * });
11
+ *
12
+ * <View
13
+ * onRight={holdRight}
14
+ * onRightRelease={releaseRight}
15
+ * />
16
+ *
17
+ * @param {UseHoldProps} props - The properties for configuring the hold behavior.
18
+ * @returns {[() => boolean, () => boolean]} A tuple containing `startHold` and `releaseHold` functions.
19
+ */
20
+ export function useHold(props) {
21
+ const holdThreshold = createMemo(() => props.holdThreshold ?? 500);
22
+ const performOnEnterImmediately = createMemo(() => props.performOnEnterImmediately ?? false);
23
+ let holdTimeout = -1;
24
+ let wasHeld = false;
25
+ const startHold = () => {
26
+ if (holdTimeout === -1) {
27
+ if (performOnEnterImmediately()) {
28
+ props.onEnter();
29
+ }
30
+ holdTimeout = setTimeout(() => {
31
+ wasHeld = true;
32
+ props.onHold();
33
+ }, holdThreshold());
34
+ }
35
+ return true;
36
+ };
37
+ const releaseHold = () => {
38
+ if (holdTimeout !== -1) {
39
+ clearTimeout(holdTimeout);
40
+ holdTimeout = -1;
41
+ if (!wasHeld) {
42
+ if (!performOnEnterImmediately())
43
+ props.onEnter();
44
+ return;
45
+ }
46
+ props.onRelease?.();
47
+ wasHeld = false;
48
+ }
49
+ return true;
50
+ };
51
+ return [startHold, releaseHold];
52
+ }
53
+ export default useHold;
54
+ //# sourceMappingURL=useHold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHold.js","sourceRoot":"","sources":["../../../src/primitives/useHold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAUtC;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,IAAI,GAAG,CAAC,CAAC;IACnE,MAAM,yBAAyB,GAAG,UAAU,CAC1C,GAAG,EAAE,CAAC,KAAK,CAAC,yBAAyB,IAAI,KAAK,CAC/C,CAAC;IAEF,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,IAAI,yBAAyB,EAAE,EAAE,CAAC;gBAChC,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,CAAC;YACD,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,OAAO,GAAG,IAAI,CAAC;gBACf,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,CAAC,EAAE,aAAa,EAAE,CAAsB,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,YAAY,CAAC,WAAW,CAAC,CAAC;YAC1B,WAAW,GAAG,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,yBAAyB,EAAE;oBAAE,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClD,OAAO;YACT,CAAC;YACD,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;YACpB,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAClC,CAAC;AAED,eAAe,OAAO,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 {};