@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.
- package/LICENSE +1 -1
- package/README.md +6 -0
- package/dist/src/activeElement.d.ts +1 -1
- package/dist/src/core/animation.d.ts +35 -0
- package/dist/src/core/animation.js +120 -0
- package/dist/src/core/animation.js.map +1 -0
- package/dist/src/core/config.d.ts +47 -0
- package/dist/src/core/config.js +23 -0
- package/dist/src/core/config.js.map +1 -0
- package/dist/src/core/domRenderer.d.ts +117 -0
- package/dist/src/core/domRenderer.js +1160 -0
- package/dist/src/core/domRenderer.js.map +1 -0
- package/dist/src/core/elementNode.d.ts +209 -0
- package/dist/src/core/elementNode.js +829 -0
- package/dist/src/core/elementNode.js.map +1 -0
- package/dist/src/core/flex.d.ts +2 -0
- package/dist/src/core/flex.js +243 -0
- package/dist/src/core/flex.js.map +1 -0
- package/dist/src/core/focusKeyTypes.d.ts +42 -0
- package/dist/src/core/focusKeyTypes.js +2 -0
- package/dist/src/core/focusKeyTypes.js.map +1 -0
- package/dist/src/core/focusManager.d.ts +13 -0
- package/dist/src/core/focusManager.js +269 -0
- package/dist/src/core/focusManager.js.map +1 -0
- package/dist/src/core/index.d.ts +12 -0
- package/dist/src/core/index.js +12 -0
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/core/intrinsicTypes.d.ts +90 -0
- package/dist/src/core/intrinsicTypes.js +2 -0
- package/dist/src/core/intrinsicTypes.js.map +1 -0
- package/dist/src/core/lightningInit.d.ts +89 -0
- package/dist/src/core/lightningInit.js +26 -0
- package/dist/src/core/lightningInit.js.map +1 -0
- package/dist/src/core/nodeTypes.d.ts +6 -0
- package/dist/src/core/nodeTypes.js +6 -0
- package/dist/src/core/nodeTypes.js.map +1 -0
- package/dist/src/core/shaders.d.ts +51 -0
- package/dist/src/core/shaders.js +446 -0
- package/dist/src/core/shaders.js.map +1 -0
- package/dist/src/core/states.d.ts +12 -0
- package/dist/src/core/states.js +84 -0
- package/dist/src/core/states.js.map +1 -0
- package/dist/src/core/timings.d.ts +36 -0
- package/dist/src/core/timings.js +199 -0
- package/dist/src/core/timings.js.map +1 -0
- package/dist/src/core/utils.d.ts +39 -0
- package/dist/src/core/utils.js +164 -0
- package/dist/src/core/utils.js.map +1 -0
- package/dist/src/devtools/index.d.ts +1 -1
- package/dist/src/devtools/index.js +1 -1
- package/dist/src/devtools/index.js.map +1 -1
- package/dist/src/index.d.ts +3 -3
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/jsx-runtime.d.ts +1 -3
- package/dist/src/primitives/Column.jsx +9 -10
- package/dist/src/primitives/Column.jsx.map +1 -1
- package/dist/src/primitives/FPSCounter.jsx +14 -1
- package/dist/src/primitives/FPSCounter.jsx.map +1 -1
- package/dist/src/primitives/Grid.d.ts +15 -6
- package/dist/src/primitives/Grid.jsx +35 -22
- package/dist/src/primitives/Grid.jsx.map +1 -1
- package/dist/src/primitives/Image.d.ts +8 -0
- package/dist/src/primitives/Image.jsx +24 -0
- package/dist/src/primitives/Image.jsx.map +1 -0
- package/dist/src/primitives/KeepAlive.d.ts +30 -0
- package/dist/src/primitives/KeepAlive.jsx +77 -0
- package/dist/src/primitives/KeepAlive.jsx.map +1 -0
- package/dist/src/primitives/Lazy.d.ts +8 -7
- package/dist/src/primitives/Lazy.jsx +52 -23
- package/dist/src/primitives/Lazy.jsx.map +1 -1
- package/dist/src/primitives/Marquee.d.ts +64 -0
- package/dist/src/primitives/Marquee.jsx +86 -0
- package/dist/src/primitives/Marquee.jsx.map +1 -0
- package/dist/src/primitives/Preserve.d.ts +4 -0
- package/dist/src/primitives/Preserve.jsx +11 -0
- package/dist/src/primitives/Preserve.jsx.map +1 -0
- package/dist/src/primitives/Row.jsx +9 -10
- package/dist/src/primitives/Row.jsx.map +1 -1
- package/dist/src/primitives/Suspense.d.ts +22 -0
- package/dist/src/primitives/Suspense.jsx +33 -0
- package/dist/src/primitives/Suspense.jsx.map +1 -0
- package/dist/src/primitives/Virtual.d.ts +18 -0
- package/dist/src/primitives/Virtual.jsx +434 -0
- package/dist/src/primitives/Virtual.jsx.map +1 -0
- package/dist/src/primitives/VirtualGrid.d.ts +13 -0
- package/dist/src/primitives/VirtualGrid.jsx +160 -0
- package/dist/src/primitives/VirtualGrid.jsx.map +1 -0
- package/dist/src/primitives/VirtualList.d.ts +11 -0
- package/dist/src/primitives/VirtualList.jsx +96 -0
- package/dist/src/primitives/VirtualList.jsx.map +1 -0
- package/dist/src/primitives/VirtualRow.d.ts +13 -0
- package/dist/src/primitives/VirtualRow.jsx +97 -0
- package/dist/src/primitives/VirtualRow.jsx.map +1 -0
- package/dist/src/primitives/Visible.d.ts +0 -1
- package/dist/src/primitives/Visible.jsx +1 -1
- package/dist/src/primitives/Visible.jsx.map +1 -1
- package/dist/src/primitives/announcer/announcer.d.ts +2 -0
- package/dist/src/primitives/announcer/announcer.js +7 -5
- package/dist/src/primitives/announcer/announcer.js.map +1 -1
- package/dist/src/primitives/announcer/index.d.ts +5 -1
- package/dist/src/primitives/announcer/index.js +8 -2
- package/dist/src/primitives/announcer/index.js.map +1 -1
- package/dist/src/primitives/announcer/speech.d.ts +2 -2
- package/dist/src/primitives/announcer/speech.js +157 -28
- package/dist/src/primitives/announcer/speech.js.map +1 -1
- package/dist/src/primitives/createFocusStack.d.ts +4 -4
- package/dist/src/primitives/createFocusStack.jsx +15 -6
- package/dist/src/primitives/createFocusStack.jsx.map +1 -1
- package/dist/src/primitives/createTag.d.ts +8 -0
- package/dist/src/primitives/createTag.jsx +20 -0
- package/dist/src/primitives/createTag.jsx.map +1 -0
- package/dist/src/primitives/index.d.ts +14 -4
- package/dist/src/primitives/index.js +13 -3
- package/dist/src/primitives/index.js.map +1 -1
- package/dist/src/primitives/types.d.ts +5 -2
- package/dist/src/primitives/useFocusManager.d.ts +2 -2
- package/dist/src/primitives/useFocusManager.js +2 -2
- package/dist/src/primitives/useFocusManager.js.map +1 -1
- package/dist/src/primitives/useHold.d.ts +27 -0
- package/dist/src/primitives/useHold.js +54 -0
- package/dist/src/primitives/useHold.js.map +1 -0
- package/dist/src/primitives/useMouse.d.ts +18 -2
- package/dist/src/primitives/useMouse.js +171 -47
- package/dist/src/primitives/useMouse.js.map +1 -1
- package/dist/src/primitives/utils/chainFunctions.d.ts +30 -4
- package/dist/src/primitives/utils/chainFunctions.js +14 -3
- package/dist/src/primitives/utils/chainFunctions.js.map +1 -1
- package/dist/src/primitives/utils/createBlurredImage.d.ts +56 -0
- package/dist/src/primitives/utils/createBlurredImage.js +223 -0
- package/dist/src/primitives/utils/createBlurredImage.js.map +1 -0
- package/dist/src/primitives/utils/createSpriteMap.d.ts +2 -2
- package/dist/src/primitives/utils/createSpriteMap.js +1 -1
- package/dist/src/primitives/utils/createSpriteMap.js.map +1 -1
- package/dist/src/primitives/utils/handleNavigation.d.ts +79 -5
- package/dist/src/primitives/utils/handleNavigation.js +242 -69
- package/dist/src/primitives/utils/handleNavigation.js.map +1 -1
- package/dist/src/primitives/utils/withScrolling.d.ts +14 -2
- package/dist/src/primitives/utils/withScrolling.js +66 -7
- package/dist/src/primitives/utils/withScrolling.js.map +1 -1
- package/dist/src/render.d.ts +8 -7
- package/dist/src/render.js +5 -1
- package/dist/src/render.js.map +1 -1
- package/dist/src/solidOpts.d.ts +1 -7
- package/dist/src/solidOpts.js +32 -16
- package/dist/src/solidOpts.js.map +1 -1
- package/dist/src/types.d.ts +1 -13
- package/dist/src/universal.d.ts +25 -0
- package/dist/src/universal.js +232 -0
- package/dist/src/universal.js.map +1 -0
- package/dist/src/utils.d.ts +3 -1
- package/dist/src/utils.js +9 -1
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/jsx-runtime.d.ts +2 -4
- package/package.json +17 -15
- package/src/activeElement.ts +1 -1
- package/src/core/animation.ts +183 -0
- package/src/core/config.ts +77 -0
- package/src/core/domRenderer.ts +1308 -0
- package/src/core/elementNode.ts +1198 -0
- package/src/core/flex.ts +284 -0
- package/src/core/focusKeyTypes.ts +87 -0
- package/src/core/focusManager.ts +359 -0
- package/src/core/index.ts +13 -0
- package/src/core/intrinsicTypes.ts +199 -0
- package/src/core/lightningInit.ts +147 -0
- package/src/core/nodeTypes.ts +6 -0
- package/src/core/shaders.ts +567 -0
- package/src/core/states.ts +91 -0
- package/src/core/timings.ts +261 -0
- package/src/core/utils.ts +222 -0
- package/src/devtools/index.ts +1 -1
- package/src/index.ts +3 -3
- package/src/primitives/Column.tsx +10 -12
- package/src/primitives/FPSCounter.tsx +15 -1
- package/src/primitives/Grid.tsx +57 -33
- package/src/primitives/Image.tsx +36 -0
- package/src/primitives/KeepAlive.tsx +124 -0
- package/src/primitives/Lazy.tsx +66 -37
- package/src/primitives/Marquee.tsx +149 -0
- package/src/primitives/Preserve.tsx +18 -0
- package/src/primitives/Row.tsx +13 -14
- package/src/primitives/Suspense.tsx +39 -0
- package/src/primitives/Virtual.tsx +478 -0
- package/src/primitives/VirtualGrid.tsx +220 -0
- package/src/primitives/Visible.tsx +1 -2
- package/src/primitives/announcer/announcer.ts +16 -10
- package/src/primitives/announcer/index.ts +12 -2
- package/src/primitives/announcer/speech.ts +188 -27
- package/src/primitives/createFocusStack.tsx +18 -7
- package/src/primitives/createTag.tsx +31 -0
- package/src/primitives/index.ts +18 -4
- package/src/primitives/types.ts +12 -2
- package/src/primitives/useFocusManager.ts +3 -3
- package/src/primitives/useHold.ts +69 -0
- package/src/primitives/useMouse.ts +306 -67
- package/src/primitives/utils/chainFunctions.ts +40 -9
- package/src/primitives/utils/createBlurredImage.ts +366 -0
- package/src/primitives/utils/createSpriteMap.ts +6 -4
- package/src/primitives/utils/handleNavigation.ts +300 -84
- package/src/primitives/utils/withScrolling.ts +91 -18
- package/src/render.ts +10 -8
- package/src/solidOpts.ts +31 -24
- package/src/types.ts +1 -15
- 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
|
-
|
|
66
|
-
|
|
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'
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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 (
|
|
77
|
-
//
|
|
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
|
-
|
|
83
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
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
|
-
|
|
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((
|
|
140
|
-
|
|
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":"
|
|
1
|
+
{"version":3,"file":"speech.js","sourceRoot":"","sources":["../../../../src/primitives/announcer/speech.ts"],"names":[],"mappings":"AAgBA,MAAM,cAAc,GAAG,aAAa,CAAC;AACrC,IAAI,gBAAgB,GAAgB,EAAE,CAAC;AAEvC,sCAAsC;AACtC,SAAS,cAAc,CAAC,SAAuB,EAAE;IAC/C,MAAM,eAAe,GAAG,EAAE,CAAC;IAE3B,IAAI,CAAC,CAAC;IACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IACD,6EAA6E;IAC7E,oEAAoE;IACpE,8EAA8E;IAC9E,kEAAkE;IAClE,OAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAkB,CAAC,MAAM,CAC5D,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAChB,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,MAAiB;IAC7C,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9C,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB;IAC1B,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAEpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE5C,oFAAoF;QACpF,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,UAAU;IACV,UAAU,CAAC,GAAG,EAAE;QACd,gBAAgB,GAAG,EAAE,CAAC;QACtB,oBAAoB,EAAE,CAAC;QACvB,WAAW,EAAE,CAAC;IAChB,CAAC,EAAE,GAAG,CAAC,CAAC;AACV,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB;IAC3B,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC1D,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC;YAC5B,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,WAAW;IAClB,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAyB,CAAC;IACzE,MAAM,EAAE,KAAK,EAAE,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB;IACxB,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAE/D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC3C,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC/C,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,KAAK,CACZ,MAAc,EACd,UAAsC,EACtC,IAAI,GAAG,OAAO,EACd,SAAkB;IAElB,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC;IAErC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,aAAa,CAAC;QAClB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAC1C,aAAa;gBACX,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACvD,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;QACtB,IAAI,aAAa,EAAE,CAAC;YAClB,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC;QAClC,CAAC;QACD,SAAS,CAAC,KAAK,GAAG,GAAG,EAAE;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE;YACxB,MAAM,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAClB,MAAkB,EAClB,IAAa,EACb,IAAY,EACZ,KAAc,EACd,IAAI,GAAG,IAAI;IAEX,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC;IACrC,MAAM,gBAAgB,GAAG,cAAc,CACrC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAC1C,CAAC;IACF,MAAM,mBAAmB,GAAmB,EAAE,CAAC;IAC/C,MAAM,UAAU,GAA+B,EAAE,CAAC;IAClD,IAAI,MAAM,GAAY,IAAI,CAAC;IAE3B,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;QAC9B,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/D,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,CAAC,mBAAmB;gBAC5B,CAAC;gBAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5D,gBAAgB;oBAChB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBACvD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClB,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACtC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,SAAS,CAAC,qBAAqB;oBACjC,CAAC;oBACD,0CAA0C;oBAC1C,MAAM,YAAY,GAAG,CAAC,CAAC;oBACvB,IAAI,WAAW,GAAG,YAAY,CAAC;oBAE/B,OAAO,MAAM,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;wBACjC,IAAI,CAAC;4BACH,IAAI,IAAI;gCAAE,oBAAoB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;;gCAClD,MAAM,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;4BAClD,WAAW,GAAG,CAAC,CAAC,CAAC,6BAA6B;wBAChD,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACX,IAAI,CAAC,YAAY,yBAAyB,EAAE,CAAC;gCAC3C,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oCAC1B,WAAW,EAAE,CAAC;oCACd,OAAO,CAAC,IAAI,CACV,iDAAiD,WAAW,EAAE,CAC/D,CAAC;oCACF,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC;gCAClD,CAAC;qCAAM,IACL,CAAC,CAAC,KAAK,KAAK,UAAU;oCACtB,CAAC,CAAC,KAAK,KAAK,aAAa,EACzB,CAAC;oCACD,qCAAqC;oCACrC,WAAW,GAAG,CAAC,CAAC;gCAClB,CAAC;qCAAM,CAAC;oCACN,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gCAC3D,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,MAAM,CAAC,CAAC;4BACV,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,MAAM,YAAY,wBAAwB,EAAE,CAAC;oBACtD,2DAA2D;oBAC3D,MAAM,YAAY,GAAG,CAAC,CAAC;oBACvB,IAAI,WAAW,GAAG,YAAY,CAAC;oBAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBACzB,MAAM,UAAU,GAAG,MAAM,EAAE,IAAI,CAAC;oBAChC,MAAM,WAAW,GAAG,MAAM,EAAE,KAAK,CAAC;oBAElC,OAAO,MAAM,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;wBACjC,IAAI,CAAC;4BACH,IAAI,IAAI,EAAE,CAAC;gCACT,IAAI,IAAI;oCAAE,oBAAoB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;;oCAEzD,MAAM,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;gCAC/D,WAAW,GAAG,CAAC,CAAC,CAAC,6BAA6B;4BAChD,CAAC;wBACH,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACX,IAAI,CAAC,YAAY,yBAAyB,EAAE,CAAC;gCAC3C,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oCAC1B,WAAW,EAAE,CAAC;oCACd,OAAO,CAAC,IAAI,CACV,iDAAiD,WAAW,EAAE,CAC/D,CAAC;oCACF,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC;gCAClD,CAAC;qCAAM,IACL,CAAC,CAAC,KAAK,KAAK,UAAU;oCACtB,CAAC,CAAC,KAAK,KAAK,aAAa,EACzB,CAAC;oCACD,qCAAqC;oCACrC,WAAW,GAAG,CAAC,CAAC;gCAClB,CAAC;qCAAM,CAAC;oCACN,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gCAC3D,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,MAAM,CAAC,CAAC;4BACV,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;oBACxC,mBAAmB;oBACnB,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBACrE,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACvC,MAAM,YAAY,CAAC,MAAM,CAAC;gBAC5B,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjC,uBAAuB;oBACvB,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBACnE,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACvC,MAAM,YAAY,CAAC,MAAM,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,GAAG,KAAK,CAAC;YACf,4DAA4D;YAC5D,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,mBAAmB,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,IAAI,MAAM;YACR,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,EAAE,CAAC,OAAmB,EAAE,EAAE;YAC9B,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACX,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,IAAI,EAAE,CAAC;oBACT,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;oBAEpC,IAAI,OAAO,EAAE,CAAC;wBACZ,gBAAgB,GAAG,EAAE,CAAC;wBACtB,oBAAoB,EAAE,CAAC;wBACvB,OAAO,CAAC,KAAK,EAAE,CAAC;wBAChB,WAAW,EAAE,CAAC;oBAChB,CAAC;oBAED,OAAO;gBACT,CAAC;gBAED,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,4BAA4B;YAC9C,CAAC;YACD,mBAAmB,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,EAAE;gBACjD,kBAAkB,CAAC,MAAM,EAAE,CAAC;YAC9B,CAAC,CAAC,CAAC;YACH,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,IAAI,aAAuC,CAAC;AAC5C,MAAM,CAAC,OAAO,WACZ,OAAmB,EACnB,IAAa,EACb,OAAe,OAAO,EACtB,KAAc;IAEd,aAAa,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;IACxC,aAAa,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACxD,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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,
|
|
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,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
|
|
16
|
-
export
|
|
17
|
-
export
|
|
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 '
|
|
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
|
|
16
|
-
export
|
|
17
|
-
export
|
|
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,
|
|
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 '
|
|
2
|
-
import type { KeyHandler } from '
|
|
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 '
|
|
2
|
-
import { type KeyMap, type KeyHoldOptions } from '
|
|
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 '
|
|
3
|
-
import { useFocusManager as useFocusManagerCore, } from '
|
|
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,
|
|
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 {
|
|
2
|
-
|
|
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 {};
|