@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.
- package/LICENSE +1 -1
- package/README.md +6 -0
- package/dist/jsx-runtime.d.ts +14 -0
- package/dist/src/activeElement.d.ts +1 -1
- package/dist/src/core/animation.d.ts +35 -0
- package/dist/src/core/animation.js +119 -0
- package/dist/src/core/animation.js.map +1 -0
- package/dist/src/core/config.d.ts +49 -0
- package/dist/src/core/config.js +33 -0
- package/dist/src/core/config.js.map +1 -0
- package/dist/src/core/domRenderer.d.ts +115 -0
- package/dist/src/core/domRenderer.js +1152 -0
- package/dist/src/core/domRenderer.js.map +1 -0
- package/dist/src/core/elementNode.d.ts +463 -0
- package/dist/src/core/elementNode.js +833 -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 +276 -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/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/primitives/Column.jsx +9 -10
- package/dist/src/primitives/Column.jsx.map +1 -1
- package/dist/src/primitives/FPSCounter.jsx +15 -2
- package/dist/src/primitives/FPSCounter.jsx.map +1 -1
- package/dist/src/primitives/Grid.d.ts +2 -2
- package/dist/src/primitives/Grid.jsx +27 -17
- 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 -20
- package/dist/src/primitives/Lazy.jsx.map +1 -1
- package/dist/src/primitives/Marquee.jsx +2 -2
- package/dist/src/primitives/Marquee.jsx.map +1 -1
- 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 +443 -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/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 +1 -0
- package/dist/src/primitives/announcer/announcer.js +4 -4
- package/dist/src/primitives/announcer/announcer.js.map +1 -1
- package/dist/src/primitives/announcer/speech.d.ts +2 -2
- package/dist/src/primitives/announcer/speech.js +147 -27
- 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 +13 -4
- package/dist/src/primitives/index.js +12 -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/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/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 +3 -3
- 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 +241 -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 +5 -4
- package/dist/src/render.js +5 -1
- package/dist/src/render.js.map +1 -1
- package/dist/src/shaders/Rounded.d.ts +7 -0
- package/dist/src/shaders/Rounded.js +88 -0
- package/dist/src/shaders/Rounded.js.map +1 -0
- package/dist/src/shaders/RoundedWithBorder.d.ts +3 -0
- package/dist/src/shaders/RoundedWithBorder.js +217 -0
- package/dist/src/shaders/RoundedWithBorder.js.map +1 -0
- package/dist/src/shaders/index.d.ts +4 -0
- package/dist/src/shaders/index.js +5 -0
- package/dist/src/shaders/index.js.map +1 -0
- package/dist/src/shaders/templates/RoundedTemplate.d.ts +12 -0
- package/dist/src/shaders/templates/RoundedTemplate.js +48 -0
- package/dist/src/shaders/templates/RoundedTemplate.js.map +1 -0
- package/dist/src/shaders/templates/RoundedWithBorderTemplate.d.ts +20 -0
- package/dist/src/shaders/templates/RoundedWithBorderTemplate.js +93 -0
- package/dist/src/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
- package/dist/src/shaders/utils.d.ts +3 -0
- package/dist/src/shaders/utils.js +31 -0
- package/dist/src/shaders/utils.js.map +1 -0
- package/dist/src/solidOpts.d.ts +1 -7
- package/dist/src/solidOpts.js +9 -1
- package/dist/src/solidOpts.js.map +1 -1
- package/dist/src/types.d.ts +1 -13
- 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 -1
- package/package.json +28 -16
- package/src/activeElement.ts +1 -1
- package/src/core/animation.ts +185 -0
- package/src/core/config.ts +89 -0
- package/src/core/domRenderer.ts +1300 -0
- package/src/core/elementNode.ts +1458 -0
- package/src/core/flex.ts +284 -0
- package/src/core/focusKeyTypes.ts +90 -0
- package/src/core/focusManager.ts +381 -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/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 +16 -2
- package/src/primitives/Grid.tsx +32 -22
- 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 → Marquee.tsx} +1 -1
- 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 +486 -0
- package/src/primitives/VirtualGrid.tsx +220 -0
- package/src/primitives/Visible.tsx +1 -2
- package/src/primitives/announcer/announcer.ts +10 -4
- package/src/primitives/announcer/speech.ts +170 -26
- package/src/primitives/createFocusStack.tsx +18 -7
- package/src/primitives/createTag.tsx +33 -0
- package/src/primitives/index.ts +13 -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/createBlurredImage.ts +366 -0
- package/src/primitives/utils/createSpriteMap.ts +8 -6
- package/src/primitives/utils/handleNavigation.ts +300 -84
- package/src/primitives/utils/withScrolling.ts +91 -18
- package/src/render.ts +7 -3
- package/src/shaders/Rounded.ts +100 -0
- package/src/shaders/RoundedWithBorder.ts +245 -0
- package/src/shaders/index.ts +4 -0
- package/src/shaders/templates/RoundedTemplate.ts +57 -0
- package/src/shaders/templates/RoundedWithBorderTemplate.ts +110 -0
- package/src/shaders/utils.ts +44 -0
- package/src/solidOpts.ts +9 -7
- package/src/types.ts +1 -15
- package/src/utils.ts +11 -1
- package/dist/src/client.d.ts +0 -1
- package/dist/src/client.js +0 -2
- package/dist/src/client.js.map +0 -1
- package/dist/src/core.d.ts +0 -1
- package/dist/src/core.js +0 -3
- package/dist/src/core.js.map +0 -1
- package/dist/src/jsx-runtime.d.ts +0 -10
- package/dist/src/jsx-runtime.js +0 -2
- package/dist/src/jsx-runtime.js.map +0 -1
- package/dist/src/primitives/Infinite.d.ts +0 -15
- package/dist/src/primitives/Infinite.jsx +0 -59
- package/dist/src/primitives/Infinite.jsx.map +0 -1
- package/dist/src/primitives/LazyUp.d.ts +0 -11
- package/dist/src/primitives/LazyUp.jsx +0 -38
- package/dist/src/primitives/LazyUp.jsx.map +0 -1
- package/dist/src/primitives/sprite.d.ts +0 -9
- package/dist/src/primitives/sprite.js +0 -18
- package/dist/src/primitives/sprite.js.map +0 -1
- package/dist/src/primitives/utils/createFocusStack.d.ts +0 -24
- package/dist/src/primitives/utils/createFocusStack.js +0 -59
- package/dist/src/primitives/utils/createFocusStack.js.map +0 -1
- package/dist/src/primitives/utils/scrollToIndex.d.ts +0 -2
- package/dist/src/primitives/utils/scrollToIndex.js +0 -33
- package/dist/src/primitives/utils/scrollToIndex.js.map +0 -1
- package/dist/src/renderClient.d.ts +0 -21
- package/dist/src/renderClient.js +0 -64
- package/dist/src/renderClient.js.map +0 -1
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { Config, isDev } from './config.js';
|
|
2
|
+
import { ElementNode } from './elementNode.js';
|
|
3
|
+
import { NodeType } from './nodeTypes.js';
|
|
4
|
+
function hasDebug(node) {
|
|
5
|
+
return isObject(node) && node.debug;
|
|
6
|
+
}
|
|
7
|
+
export function log(msg, node, ...args) {
|
|
8
|
+
if (isDev) {
|
|
9
|
+
if (Config.debug || hasDebug(node) || hasDebug(args[0])) {
|
|
10
|
+
console.log(msg, node, ...args);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export const isFunc = (obj) => obj instanceof Function;
|
|
15
|
+
export const isFunction = (obj) => typeof obj === 'function';
|
|
16
|
+
export function isObject(item) {
|
|
17
|
+
return typeof item === 'object';
|
|
18
|
+
}
|
|
19
|
+
export function isArray(item) {
|
|
20
|
+
return Array.isArray(item);
|
|
21
|
+
}
|
|
22
|
+
export function isString(item) {
|
|
23
|
+
return typeof item === 'string';
|
|
24
|
+
}
|
|
25
|
+
export function isNumber(item) {
|
|
26
|
+
return typeof item === 'number';
|
|
27
|
+
}
|
|
28
|
+
export function isInteger(item) {
|
|
29
|
+
return Number.isInteger(item);
|
|
30
|
+
}
|
|
31
|
+
export function isINode(node) {
|
|
32
|
+
return 'destroy' in node && typeof node.destroy === 'function';
|
|
33
|
+
}
|
|
34
|
+
export function isElementNode(node) {
|
|
35
|
+
return node instanceof ElementNode;
|
|
36
|
+
}
|
|
37
|
+
export function isElementText(node) {
|
|
38
|
+
return node._type === NodeType.TextNode;
|
|
39
|
+
}
|
|
40
|
+
export function isTextNode(node) {
|
|
41
|
+
return node._type === NodeType.Text;
|
|
42
|
+
}
|
|
43
|
+
export function keyExists(obj, keys) {
|
|
44
|
+
for (const key of keys) {
|
|
45
|
+
if (key in obj) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
export function spliceItem(arr, item, deleteCount, ...insert) {
|
|
52
|
+
const index = arr.indexOf(item);
|
|
53
|
+
if (index > -1) {
|
|
54
|
+
arr.splice(index, deleteCount, ...insert);
|
|
55
|
+
}
|
|
56
|
+
return index;
|
|
57
|
+
}
|
|
58
|
+
export function flattenStyles(obj, result = {}) {
|
|
59
|
+
if (isArray(obj)) {
|
|
60
|
+
obj.forEach((item) => {
|
|
61
|
+
flattenStyles(item, result);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
else if (obj) {
|
|
65
|
+
// handle the case where the object is not an array
|
|
66
|
+
for (const key in obj) {
|
|
67
|
+
// be careful of 0 values
|
|
68
|
+
if (result[key] === undefined) {
|
|
69
|
+
result[key] = obj[key];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
export function logRenderTree(node) {
|
|
76
|
+
const tree = [node];
|
|
77
|
+
let parent = node.parent;
|
|
78
|
+
while (parent) {
|
|
79
|
+
tree.push(parent);
|
|
80
|
+
parent = parent.parent;
|
|
81
|
+
}
|
|
82
|
+
tree.reverse();
|
|
83
|
+
let output = `
|
|
84
|
+
function convertEffectsToShader(styleEffects) {
|
|
85
|
+
const effects = [];
|
|
86
|
+
let index = 0;
|
|
87
|
+
|
|
88
|
+
for (const [type, props] of Object.entries(styleEffects)) {
|
|
89
|
+
effects.push({ type, props });
|
|
90
|
+
index++;
|
|
91
|
+
}
|
|
92
|
+
return createShader('DynamicShader', { effects });
|
|
93
|
+
}
|
|
94
|
+
`;
|
|
95
|
+
tree.forEach((node, i) => {
|
|
96
|
+
if (!node._rendererProps) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
node._rendererProps.parent = undefined;
|
|
100
|
+
node._rendererProps.shader = undefined;
|
|
101
|
+
const props = JSON.stringify(node._rendererProps, null, 2);
|
|
102
|
+
const effects = node._effects
|
|
103
|
+
? `props${i}.shader = convertEffectsToShader(${JSON.stringify(node._effects, null, 2)});`
|
|
104
|
+
: '';
|
|
105
|
+
const parent = i === 0 ? 'rootNode' : `node${i - 1}`;
|
|
106
|
+
output += `
|
|
107
|
+
const props${i} = ${props};
|
|
108
|
+
props${i}.parent = ${parent};
|
|
109
|
+
${effects}
|
|
110
|
+
const node${i} = renderer.createNode(props${i});
|
|
111
|
+
`;
|
|
112
|
+
});
|
|
113
|
+
return output;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Calculates the rectangle of an element on the screen,
|
|
117
|
+
* taking into account its position, size, and scaling.
|
|
118
|
+
*
|
|
119
|
+
* @param el - The element to calculate the rectangle for.
|
|
120
|
+
* @param from - Optional ancestor element to calculate the rectangle relative to.
|
|
121
|
+
* @param out - Optional output rectangle to fill with the result.
|
|
122
|
+
* @returns The rectangle of the element on the screen.
|
|
123
|
+
*/
|
|
124
|
+
export function getElementScreenRect(el, from, out = { x: 0, y: 0, width: 0, height: 0 }) {
|
|
125
|
+
out.x = 0;
|
|
126
|
+
out.y = 0;
|
|
127
|
+
out.width = el.width;
|
|
128
|
+
out.height = el.height;
|
|
129
|
+
if (el.scaleX != null)
|
|
130
|
+
out.width *= el.scaleX;
|
|
131
|
+
if (el.scaleY != null)
|
|
132
|
+
out.height *= el.scaleY;
|
|
133
|
+
let curr = el;
|
|
134
|
+
while (curr != null && curr !== from) {
|
|
135
|
+
out.x += curr.x;
|
|
136
|
+
out.y += curr.y;
|
|
137
|
+
if (curr.scaleX != null) {
|
|
138
|
+
out.x += (curr.width / 2) * (1 - curr.scaleX);
|
|
139
|
+
}
|
|
140
|
+
if (curr.scaleY != null) {
|
|
141
|
+
out.y += (curr.height / 2) * (1 - curr.scaleY);
|
|
142
|
+
}
|
|
143
|
+
curr = curr.parent;
|
|
144
|
+
}
|
|
145
|
+
if (Config.rendererOptions != null) {
|
|
146
|
+
let dpr = Config.rendererOptions.deviceLogicalPixelRatio;
|
|
147
|
+
if (dpr != null) {
|
|
148
|
+
out.x *= dpr;
|
|
149
|
+
out.y *= dpr;
|
|
150
|
+
out.width *= dpr;
|
|
151
|
+
out.height *= dpr;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return out;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Checks if the element has focus.\
|
|
158
|
+
* ({@link ElementNode.states} contains the {@link Config.focusStateKey} focus state)
|
|
159
|
+
*/
|
|
160
|
+
export function isFocused(el) {
|
|
161
|
+
return el?.states?.has(Config.focusStateKey);
|
|
162
|
+
}
|
|
163
|
+
export const hasFocus = isFocused;
|
|
164
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/devtools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gCAAgC,CAAC;AACxD,OAAO,KAAK,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/devtools/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from '@lightningtv/solid/jsx-runtime';
|
|
2
|
-
export * from '
|
|
3
|
-
export type * from '
|
|
4
|
-
export type { KeyHandler, KeyMap } from '
|
|
2
|
+
export * from './core/index.js';
|
|
3
|
+
export type * from './core/index.js';
|
|
4
|
+
export type { KeyHandler, KeyMap } from './core/focusManager.js';
|
|
5
5
|
export * from './activeElement.js';
|
|
6
6
|
export * from './utils.js';
|
|
7
7
|
export * from './render.js';
|
package/dist/src/index.js
CHANGED
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAGhC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,KAAK,EACL,KAAK,EACL,aAAa,GACd,MAAM,UAAU,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { combineStyles } from '@lightningtv/solid';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { navigableForwardFocus, handleNavigation } from './utils/handleNavigation.js';
|
|
3
|
+
import { scrollColumn } from './utils/withScrolling.js';
|
|
4
4
|
import { chainFunctions } from './utils/chainFunctions.js';
|
|
5
5
|
const ColumnStyles = {
|
|
6
6
|
display: 'flex',
|
|
@@ -13,18 +13,17 @@ const ColumnStyles = {
|
|
|
13
13
|
},
|
|
14
14
|
},
|
|
15
15
|
};
|
|
16
|
-
const onUp = handleNavigation('up');
|
|
17
|
-
const onDown = handleNavigation('down');
|
|
18
|
-
const scroll = withScrolling(false);
|
|
19
16
|
function scrollToIndex(index) {
|
|
20
17
|
this.selected = index;
|
|
21
|
-
|
|
22
|
-
this.setFocus();
|
|
18
|
+
scrollColumn(index, this);
|
|
19
|
+
this.children[index]?.setFocus();
|
|
23
20
|
}
|
|
21
|
+
const onUp = handleNavigation('up');
|
|
22
|
+
const onDown = handleNavigation('down');
|
|
24
23
|
export const Column = (props) => {
|
|
25
|
-
return (<view {...props} onUp={/* @once */chainFunctions(props.onUp, onUp)} onDown={/* @once */chainFunctions(props.onDown, onDown)} selected={props.selected || 0} scrollToIndex={scrollToIndex} forwardFocus={
|
|
24
|
+
return (<view {...props} onUp={/* @once */chainFunctions(props.onUp, onUp)} onDown={/* @once */chainFunctions(props.onDown, onDown)} selected={props.selected || 0} scrollToIndex={scrollToIndex} forwardFocus={navigableForwardFocus} onLayout={
|
|
26
25
|
/* @once */
|
|
27
|
-
props.selected ? chainFunctions(props.onLayout,
|
|
28
|
-
/* @once */ chainFunctions(props.onSelectedChanged, props.scroll !== 'none' ?
|
|
26
|
+
props.selected ? chainFunctions(props.onLayout, scrollColumn) : props.onLayout} onSelectedChanged={
|
|
27
|
+
/* @once */ chainFunctions(props.onSelectedChanged, props.scroll !== 'none' ? scrollColumn : undefined)} style={/* @once */combineStyles(props.style, ColumnStyles)}/>);
|
|
29
28
|
};
|
|
30
29
|
//# sourceMappingURL=Column.jsx.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Column.jsx","sourceRoot":"","sources":["../../../src/primitives/Column.tsx"],"names":[],"mappings":"AACA,OAAO,EAAe,aAAa,EAAmB,MAAM,oBAAoB,CAAC;AACjF,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"Column.jsx","sourceRoot":"","sources":["../../../src/primitives/Column.tsx"],"names":[],"mappings":"AACA,OAAO,EAAe,aAAa,EAAmB,MAAM,oBAAoB,CAAC;AACjF,OAAO,EACL,qBAAqB,EAAE,gBAAgB,EACxC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,MAAM,YAAY,GAAe;IAC/B,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,EAAE;IACP,UAAU,EAAE;QACV,CAAC,EAAE;YACD,QAAQ,EAAE,GAAG;YACb,MAAM,EAAE,aAAa;SACtB;KACF;CACF,CAAC;AAEF,SAAS,aAAa,CAAoB,KAAa;IACrD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACtB,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,MAAM,GAA2B,CAAC,KAAK,EAAE,EAAE;IACtD,OAAO,CACL,CAAC,IAAI,CACH,IAAI,KAAK,CAAC,CACV,IAAI,CAAC,CAAC,WAAY,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CACnD,MAAM,CAAC,CAAC,WAAY,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CACzD,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAC9B,aAAa,CAAC,CAAC,aAAa,CAAC,CAC7B,YAAY,CAAC,CAAC,qBAAqB,CAAC,CACpC,QAAQ,CAAC,CAAC;QACR,WAAW;QACX,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QACxE,CAAC,CACD,iBAAiB,CAAC,CAAC;QACjB,WAAW,CAAC,cAAc,CACxB,KAAK,CAAC,iBAAiB,EACvB,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAEtD,CAAC,CACD,KAAK,CAAC,CAAC,WAAY,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,EAC5D,CACH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { createSignal } from 'solid-js';
|
|
2
2
|
const fpsStyle = {
|
|
3
3
|
color: 0x000000ff,
|
|
4
|
-
height:
|
|
4
|
+
height: 192,
|
|
5
5
|
width: 330,
|
|
6
6
|
x: 1900,
|
|
7
7
|
y: 6,
|
|
8
8
|
mountX: 1,
|
|
9
|
-
alpha:
|
|
9
|
+
alpha: 1,
|
|
10
10
|
zIndex: 100
|
|
11
11
|
};
|
|
12
12
|
const fpsLabel = {
|
|
@@ -22,6 +22,7 @@ const [fps, setFps] = createSignal(0);
|
|
|
22
22
|
const [avgFps, setAvgFps] = createSignal(0);
|
|
23
23
|
const [minFps, setMinFps] = createSignal(99);
|
|
24
24
|
const [maxFps, setMaxFps] = createSignal(0);
|
|
25
|
+
const [quads, setQuads] = createSignal(0);
|
|
25
26
|
const [criticalThresholdSignal, setCriticalThresholdSignal] = createSignal('');
|
|
26
27
|
const [targetThresholdSignal, setTargetThresholdSignal] = createSignal('');
|
|
27
28
|
const [renderableMemUsedSignal, setRenderableMemUsedSignal] = createSignal('');
|
|
@@ -73,6 +74,9 @@ export function setupFPS(root) {
|
|
|
73
74
|
frameCount++;
|
|
74
75
|
}
|
|
75
76
|
});
|
|
77
|
+
root.renderer.on('quadsUpdate', (target, quadsData) => {
|
|
78
|
+
setQuads(quadsData.quads);
|
|
79
|
+
});
|
|
76
80
|
}
|
|
77
81
|
export const FPSCounter = (props) => {
|
|
78
82
|
return (<view {...props} style={fpsStyle}>
|
|
@@ -158,6 +162,15 @@ export const FPSCounter = (props) => {
|
|
|
158
162
|
{loadedTexturesSignal().toString()}
|
|
159
163
|
</text>
|
|
160
164
|
</view>
|
|
165
|
+
|
|
166
|
+
<view height={infoFontSize}>
|
|
167
|
+
<text fontSize={infoFontSize} style={fpsLabel}>
|
|
168
|
+
quads:
|
|
169
|
+
</text>
|
|
170
|
+
<text fontSize={infoFontSize} style={fpsLabel} x={230}>
|
|
171
|
+
{quads().toString()}
|
|
172
|
+
</text>
|
|
173
|
+
</view>
|
|
161
174
|
</view>
|
|
162
175
|
</view>);
|
|
163
176
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FPSCounter.jsx","sourceRoot":"","sources":["../../../src/primitives/FPSCounter.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,QAAQ,GAAG;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;IACV,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,CAAC;IACJ,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"FPSCounter.jsx","sourceRoot":"","sources":["../../../src/primitives/FPSCounter.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JSX } from "solid-js";
|
|
2
|
-
import { type NodeProps,
|
|
2
|
+
import { type NodeProps, ElementNode, NewOmit } from "@lightningtv/solid";
|
|
3
3
|
export interface GridItemProps<T> {
|
|
4
4
|
item: T;
|
|
5
5
|
index: number;
|
|
@@ -9,7 +9,7 @@ export interface GridItemProps<T> {
|
|
|
9
9
|
y: number;
|
|
10
10
|
}
|
|
11
11
|
export interface GridProps<T> extends NewOmit<NodeProps, 'children'> {
|
|
12
|
-
items: T[];
|
|
12
|
+
items: readonly T[];
|
|
13
13
|
children: (props: GridItemProps<T>) => JSX.Element;
|
|
14
14
|
itemHeight?: number;
|
|
15
15
|
itemWidth?: number;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { For, createSignal, createMemo } from "solid-js";
|
|
2
|
-
import {
|
|
1
|
+
import { For, createSignal, createMemo, createEffect } from "solid-js";
|
|
2
|
+
import { ElementNode } from "@lightningtv/solid";
|
|
3
|
+
import { chainRefs } from "./utils/chainFunctions.js";
|
|
3
4
|
export function Grid(props) {
|
|
4
5
|
const [focusedIndex, setFocusedIndex] = createSignal(0);
|
|
5
6
|
const baseColumns = 4;
|
|
@@ -8,7 +9,16 @@ export function Grid(props) {
|
|
|
8
9
|
const columns = createMemo(() => props.columns || baseColumns);
|
|
9
10
|
const totalWidth = createMemo(() => itemWidth() + (props.itemOffset ?? 0));
|
|
10
11
|
const totalHeight = createMemo(() => itemHeight() + (props.itemOffset ?? 0));
|
|
11
|
-
|
|
12
|
+
function focus() {
|
|
13
|
+
const focusedElm = gridRef.children[focusedIndex()];
|
|
14
|
+
if (focusedElm instanceof ElementNode && !focusedElm.states.has('$focus')) {
|
|
15
|
+
focusedElm.setFocus();
|
|
16
|
+
props.onSelectedChanged?.call(gridRef, focusedIndex(), gridRef, focusedElm);
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
function moveFocus(delta) {
|
|
12
22
|
if (!props.items || props.items.length === 0)
|
|
13
23
|
return false;
|
|
14
24
|
const newIndex = focusedIndex() + delta;
|
|
@@ -29,12 +39,10 @@ export function Grid(props) {
|
|
|
29
39
|
else {
|
|
30
40
|
return false;
|
|
31
41
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
};
|
|
37
|
-
const handleHorizontalFocus = (delta, elm) => {
|
|
42
|
+
return focus();
|
|
43
|
+
}
|
|
44
|
+
;
|
|
45
|
+
function handleHorizontalFocus(delta) {
|
|
38
46
|
if (!props.items || props.items.length === 0)
|
|
39
47
|
return false;
|
|
40
48
|
const newIndex = focusedIndex() + delta;
|
|
@@ -50,16 +58,18 @@ export function Grid(props) {
|
|
|
50
58
|
else {
|
|
51
59
|
return false;
|
|
52
60
|
}
|
|
53
|
-
|
|
54
|
-
focusedElm.setFocus();
|
|
55
|
-
isFunction(props.onSelectedChanged) && props.onSelectedChanged.call(elm, focusedIndex(), elm, focusedElm);
|
|
56
|
-
return true;
|
|
57
|
-
};
|
|
58
|
-
function onFocus() {
|
|
59
|
-
handleHorizontalFocus(0, this);
|
|
61
|
+
return focus();
|
|
60
62
|
}
|
|
63
|
+
;
|
|
64
|
+
// Handle focus when items change - important for autofocus
|
|
65
|
+
createEffect(() => {
|
|
66
|
+
if (props.items && props.items.length > 0 && gridRef && gridRef.states.has('$focus')) {
|
|
67
|
+
queueMicrotask(focus);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
61
70
|
const scrollY = createMemo(() => props.scroll === "none" ? props.y ?? 0 : -Math.floor(focusedIndex() / columns()) * totalHeight() + (props.y || 0));
|
|
62
|
-
|
|
71
|
+
let gridRef;
|
|
72
|
+
return (<view {...props} ref={chainRefs(el => gridRef = el, props.ref)} transition={{ y: true }} onUp={() => moveFocus(-columns())} onDown={() => moveFocus(columns())} onLeft={() => handleHorizontalFocus(-1)} onRight={() => handleHorizontalFocus(1)} onFocus={() => handleHorizontalFocus(0)} strictBounds={false} y={scrollY()}>
|
|
63
73
|
<For each={props.items}>
|
|
64
74
|
{(item, index) => (<props.children item={item} index={index()} width={itemWidth()} height={itemHeight()} x={(index() % columns()) * totalWidth()} y={Math.floor(index() / columns()) * totalHeight()}/>)}
|
|
65
75
|
</For>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.jsx","sourceRoot":"","sources":["../../../src/primitives/Grid.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAO,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Grid.jsx","sourceRoot":"","sources":["../../../src/primitives/Grid.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createRenderEffect, createSignal } from 'solid-js';
|
|
2
|
+
import { renderer } from '@lightningtv/solid';
|
|
3
|
+
export const Image = (props) => {
|
|
4
|
+
const [texture, setTexture] = createSignal(null);
|
|
5
|
+
const [src, setSrc] = createSignal(props.placeholder || null);
|
|
6
|
+
createRenderEffect(() => {
|
|
7
|
+
const srcTexture = renderer.createTexture('ImageTexture', props);
|
|
8
|
+
if (props.fallback) {
|
|
9
|
+
srcTexture.once('failed', () => {
|
|
10
|
+
if (props.fallback === props.placeholder) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
setSrc(props.fallback);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
srcTexture.getTextureData().then(resp => {
|
|
17
|
+
// if texture fails to load, this is still called after the failed handler
|
|
18
|
+
if (resp.data)
|
|
19
|
+
setTexture(srcTexture);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
return (<view {...props} src={src()} color={props.color || 0xffffffff} texture={texture()}/>);
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=Image.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Image.jsx","sourceRoot":"","sources":["../../../src/primitives/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAoC,MAAM,oBAAoB,CAAC;AAQhF,MAAM,CAAC,MAAM,KAAK,GAA0B,CAAC,KAAK,EAAE,EAAE;IACpD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,YAAY,CAAM,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,YAAY,CAAgB,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;IAE7E,kBAAkB,CAAC,GAAG,EAAE;QACtB,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,KAAK,CAAiB,CAAC;QAEjF,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;gBAC7B,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;oBACzC,OAAO;gBACT,CAAC;gBACD,MAAM,CAAC,KAAK,CAAC,QAAS,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,UAAU,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACtC,0EAA0E;YAC1E,IAAI,IAAI,CAAC,IAAI;gBACX,UAAU,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,CACL,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAG,CACtF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { RouteProps } from "@solidjs/router";
|
|
2
|
+
import * as s from 'solid-js';
|
|
3
|
+
import { ElementNode } from "@lightningtv/solid";
|
|
4
|
+
export interface KeepAliveElement {
|
|
5
|
+
id: string;
|
|
6
|
+
owner: s.Owner | null;
|
|
7
|
+
children: s.JSX.Element;
|
|
8
|
+
routeSignal?: s.Signal<unknown>;
|
|
9
|
+
dispose: () => void;
|
|
10
|
+
}
|
|
11
|
+
export declare const storeKeepAlive: (element: KeepAliveElement) => KeepAliveElement | undefined;
|
|
12
|
+
export declare const removeKeepAlive: (id: string) => void;
|
|
13
|
+
interface KeepAliveProps {
|
|
14
|
+
id: string;
|
|
15
|
+
shouldDispose?: (key: string) => boolean;
|
|
16
|
+
onRemove?: ElementNode['onRemove'];
|
|
17
|
+
onRender?: ElementNode['onRender'];
|
|
18
|
+
transition?: ElementNode['transition'];
|
|
19
|
+
}
|
|
20
|
+
export declare const KeepAlive: (props: s.ParentProps<KeepAliveProps>) => s.JSX.Element;
|
|
21
|
+
export declare const KeepAliveRoute: <S extends string>(props: RouteProps<S> & {
|
|
22
|
+
id?: string;
|
|
23
|
+
path: string;
|
|
24
|
+
component: s.Component<RouteProps<S>>;
|
|
25
|
+
shouldDispose?: (key: string) => boolean;
|
|
26
|
+
onRemove?: ElementNode["onRemove"];
|
|
27
|
+
onRender?: ElementNode["onRender"];
|
|
28
|
+
transition?: ElementNode["transition"];
|
|
29
|
+
}) => s.JSX.Element;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Route } from "@solidjs/router";
|
|
2
|
+
import * as s from 'solid-js';
|
|
3
|
+
const keepAliveElements = new Map();
|
|
4
|
+
export const storeKeepAlive = (element) => {
|
|
5
|
+
if (keepAliveElements.has(element.id)) {
|
|
6
|
+
console.warn(`[KeepAlive] Element with id "${element.id}" already in cache. Recreating.`);
|
|
7
|
+
return element;
|
|
8
|
+
}
|
|
9
|
+
keepAliveElements.set(element.id, element);
|
|
10
|
+
return element;
|
|
11
|
+
};
|
|
12
|
+
export const removeKeepAlive = (id) => {
|
|
13
|
+
const element = keepAliveElements.get(id);
|
|
14
|
+
if (element) {
|
|
15
|
+
element.dispose();
|
|
16
|
+
keepAliveElements.delete(id);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
function wrapChildren(props) {
|
|
20
|
+
const onRemove = props.onRemove || ((elm) => { elm.alpha = 0; });
|
|
21
|
+
const onRender = props.onRender || ((elm) => { elm.alpha = 1; });
|
|
22
|
+
const transition = props.transition || { alpha: true };
|
|
23
|
+
return (<view preserve onRemove={onRemove} onRender={onRender} forwardFocus={0} transition={transition} {...props}/>);
|
|
24
|
+
}
|
|
25
|
+
export const KeepAlive = (props) => {
|
|
26
|
+
let existing = keepAliveElements.get(props.id);
|
|
27
|
+
if (existing && props.shouldDispose?.(props.id)) {
|
|
28
|
+
existing.dispose();
|
|
29
|
+
keepAliveElements.delete(props.id);
|
|
30
|
+
existing = undefined;
|
|
31
|
+
}
|
|
32
|
+
if (!existing) {
|
|
33
|
+
return s.createRoot((dispose) => {
|
|
34
|
+
const children = wrapChildren(props);
|
|
35
|
+
storeKeepAlive({
|
|
36
|
+
id: props.id,
|
|
37
|
+
owner: s.getOwner(),
|
|
38
|
+
children,
|
|
39
|
+
dispose,
|
|
40
|
+
});
|
|
41
|
+
return children;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
else if (existing && !existing.children) {
|
|
45
|
+
existing.children = s.runWithOwner(existing.owner, () => wrapChildren(props));
|
|
46
|
+
}
|
|
47
|
+
return existing.children;
|
|
48
|
+
};
|
|
49
|
+
export const KeepAliveRoute = (props) => {
|
|
50
|
+
const key = props.id || props.path;
|
|
51
|
+
const preload = props.preload ? (preloadProps) => {
|
|
52
|
+
let existing = keepAliveElements.get(key);
|
|
53
|
+
if (existing && props.shouldDispose?.(key)) {
|
|
54
|
+
existing.dispose();
|
|
55
|
+
keepAliveElements.delete(key);
|
|
56
|
+
existing = undefined;
|
|
57
|
+
}
|
|
58
|
+
if (!existing) {
|
|
59
|
+
return s.createRoot((dispose) => {
|
|
60
|
+
storeKeepAlive({
|
|
61
|
+
id: key,
|
|
62
|
+
owner: s.getOwner(),
|
|
63
|
+
dispose,
|
|
64
|
+
children: null,
|
|
65
|
+
});
|
|
66
|
+
return props.preload(preloadProps);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
else if (existing.children) {
|
|
70
|
+
existing.children?.setFocus();
|
|
71
|
+
}
|
|
72
|
+
} : undefined;
|
|
73
|
+
return (<Route {...props} preload={preload} component={(childProps) => <KeepAlive id={key} onRemove={props.onRemove} onRender={props.onRender} transition={props.transition}>
|
|
74
|
+
{props.component(childProps)}
|
|
75
|
+
</KeepAlive>}/>);
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=KeepAlive.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeepAlive.jsx","sourceRoot":"","sources":["../../../src/primitives/KeepAlive.tsx"],"names":[],"mappings":"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"}
|