svelte-tv 1.0.0 → 1.0.2
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 -0
- package/NOTICE +1 -0
- package/README.md +98 -0
- package/dist/LightningRoot.svelte +25 -0
- package/dist/LightningRoot.svelte.d.ts +15 -0
- package/dist/Text.svelte +19 -0
- package/dist/Text.svelte.d.ts +7 -0
- package/dist/View.svelte +18 -0
- package/dist/View.svelte.d.ts +7 -0
- package/dist/__package_types_tmp__/LightningRoot.svelte.d.ts +15 -0
- package/dist/__package_types_tmp__/Text.svelte.d.ts +7 -0
- package/dist/__package_types_tmp__/View.svelte.d.ts +7 -0
- package/dist/__package_types_tmp__/core/activeElement.d.ts +4 -0
- package/dist/__package_types_tmp__/core/clickInspector.d.ts +1 -0
- package/dist/__package_types_tmp__/core/config.d.ts +26 -0
- package/dist/__package_types_tmp__/core/dom-renderer/domRendererTypes.d.ts +15 -0
- package/dist/__package_types_tmp__/core/elementNode.d.ts +548 -0
- package/dist/__package_types_tmp__/core/env.d.ts +3 -0
- package/dist/__package_types_tmp__/core/flex.d.ts +2 -0
- package/dist/__package_types_tmp__/core/flexLayout.d.ts +2 -0
- package/dist/__package_types_tmp__/core/focusKeyTypes.d.ts +47 -0
- package/dist/__package_types_tmp__/core/focusManager.d.ts +34 -0
- package/dist/__package_types_tmp__/core/index.d.ts +14 -0
- package/dist/__package_types_tmp__/core/intrinsicTypes.d.ts +102 -0
- package/dist/__package_types_tmp__/core/lightningInit.d.ts +7 -0
- package/dist/__package_types_tmp__/core/nodeTypes.d.ts +13 -0
- package/dist/__package_types_tmp__/core/root.d.ts +8 -0
- package/dist/__package_types_tmp__/core/shaders.d.ts +44 -0
- package/dist/__package_types_tmp__/core/states.d.ts +12 -0
- package/dist/__package_types_tmp__/core/svelteNode.d.ts +21 -0
- package/dist/__package_types_tmp__/core/utils.d.ts +41 -0
- package/dist/__package_types_tmp__/fonts.d.ts +3 -0
- package/dist/__package_types_tmp__/index.d.ts +7 -0
- package/dist/__package_types_tmp__/primitives/Button.svelte.d.ts +12 -0
- package/dist/__package_types_tmp__/primitives/Card.svelte.d.ts +12 -0
- package/dist/__package_types_tmp__/primitives/Column.svelte.d.ts +14 -0
- package/dist/__package_types_tmp__/primitives/Drawer.svelte.d.ts +20 -0
- package/dist/__package_types_tmp__/primitives/FPSCounter.svelte.d.ts +7 -0
- package/dist/__package_types_tmp__/primitives/FadeInOut.svelte.d.ts +21 -0
- package/dist/__package_types_tmp__/primitives/Grid.svelte.d.ts +51 -0
- package/dist/__package_types_tmp__/primitives/IconButton.svelte.d.ts +15 -0
- package/dist/__package_types_tmp__/primitives/Image.svelte.d.ts +10 -0
- package/dist/__package_types_tmp__/primitives/Marquee.svelte.d.ts +13 -0
- package/dist/__package_types_tmp__/primitives/Modal.svelte.d.ts +16 -0
- package/dist/__package_types_tmp__/primitives/Preserve.svelte.d.ts +10 -0
- package/dist/__package_types_tmp__/primitives/Row.svelte.d.ts +14 -0
- package/dist/__package_types_tmp__/primitives/Skeleton.svelte.d.ts +13 -0
- package/dist/__package_types_tmp__/primitives/Toast.svelte.d.ts +14 -0
- package/dist/__package_types_tmp__/primitives/Virtual.svelte.d.ts +49 -0
- package/dist/__package_types_tmp__/primitives/VirtualGrid.svelte.d.ts +47 -0
- package/dist/__package_types_tmp__/primitives/Visible.svelte.d.ts +8 -0
- package/dist/__package_types_tmp__/primitives/announcer/announcer.d.ts +14 -0
- package/dist/__package_types_tmp__/primitives/announcer/index.d.ts +4 -0
- package/dist/__package_types_tmp__/primitives/announcer/speech.d.ts +10 -0
- package/dist/__package_types_tmp__/primitives/createInfiniteItems.d.ts +8 -0
- package/dist/__package_types_tmp__/primitives/index.d.ts +28 -0
- package/dist/__package_types_tmp__/primitives/router/HashRouter.svelte.d.ts +9 -0
- package/dist/__package_types_tmp__/primitives/router/KeepAliveRoute.svelte.d.ts +13 -0
- package/dist/__package_types_tmp__/primitives/router/Navigate.svelte.d.ts +7 -0
- package/dist/__package_types_tmp__/primitives/router/Route.svelte.d.ts +13 -0
- package/dist/__package_types_tmp__/primitives/router/RouteView.svelte.d.ts +14 -0
- package/dist/__package_types_tmp__/primitives/router/context.d.ts +9 -0
- package/dist/__package_types_tmp__/primitives/router/index.d.ts +8 -0
- package/dist/__package_types_tmp__/primitives/router/lazy.d.ts +6 -0
- package/dist/__package_types_tmp__/primitives/router/match.d.ts +5 -0
- package/dist/__package_types_tmp__/primitives/router/routeContext.d.ts +6 -0
- package/dist/__package_types_tmp__/primitives/router/types.d.ts +53 -0
- package/dist/__package_types_tmp__/primitives/types.d.ts +86 -0
- package/dist/__package_types_tmp__/primitives/useHold.d.ts +9 -0
- package/dist/__package_types_tmp__/primitives/utils/chainFunctions.d.ts +5 -0
- package/dist/__package_types_tmp__/primitives/utils/createBlurredImage.d.ts +10 -0
- package/dist/__package_types_tmp__/primitives/utils/createSpriteMap.d.ts +9 -0
- package/dist/__package_types_tmp__/primitives/utils/handleNavigation.d.ts +103 -0
- package/dist/__package_types_tmp__/primitives/utils/withScrolling.d.ts +23 -0
- package/dist/__package_types_tmp__/shaders/index.d.ts +1 -0
- package/dist/__package_types_tmp__/utils.d.ts +11 -0
- package/dist/__package_types_tmp__/vite/index.d.ts +18 -0
- package/dist/core/activeElement.d.ts +4 -0
- package/dist/core/activeElement.js +6 -0
- package/dist/core/clickInspector.d.ts +1 -0
- package/dist/core/clickInspector.js +3 -0
- package/dist/core/config.d.ts +26 -0
- package/dist/core/config.js +35 -0
- package/dist/core/dom-renderer/domRendererTypes.d.ts +15 -0
- package/dist/core/dom-renderer/domRendererTypes.js +2 -0
- package/dist/core/elementNode.d.ts +548 -0
- package/dist/core/elementNode.js +1355 -0
- package/dist/core/env.d.ts +3 -0
- package/dist/core/env.js +5 -0
- package/dist/core/flex.d.ts +2 -0
- package/dist/core/flex.js +295 -0
- package/dist/core/flexLayout.d.ts +2 -0
- package/dist/core/flexLayout.js +367 -0
- package/dist/core/focusKeyTypes.d.ts +47 -0
- package/dist/core/focusKeyTypes.js +1 -0
- package/dist/core/focusManager.d.ts +34 -0
- package/dist/core/focusManager.js +410 -0
- package/dist/core/index.d.ts +14 -0
- package/dist/core/index.js +12 -0
- package/dist/core/intrinsicTypes.d.ts +102 -0
- package/dist/core/intrinsicTypes.js +1 -0
- package/dist/core/lightningInit.d.ts +7 -0
- package/dist/core/lightningInit.js +31 -0
- package/dist/core/nodeTypes.d.ts +13 -0
- package/dist/core/nodeTypes.js +13 -0
- package/dist/core/root.d.ts +8 -0
- package/dist/core/root.js +16 -0
- package/dist/core/shaders.d.ts +44 -0
- package/dist/core/shaders.js +81 -0
- package/dist/core/states.d.ts +12 -0
- package/dist/core/states.js +83 -0
- package/dist/core/svelteNode.d.ts +21 -0
- package/dist/core/svelteNode.js +72 -0
- package/dist/core/utils.d.ts +41 -0
- package/dist/core/utils.js +163 -0
- package/dist/fonts/Roboto-Regular.ttf +0 -0
- package/dist/fonts.d.ts +3 -0
- package/dist/fonts.js +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/primitives/Button.svelte +35 -0
- package/dist/primitives/Button.svelte.d.ts +12 -0
- package/dist/primitives/Card.svelte +36 -0
- package/dist/primitives/Card.svelte.d.ts +12 -0
- package/dist/primitives/Column.svelte +56 -0
- package/dist/primitives/Column.svelte.d.ts +14 -0
- package/dist/primitives/Drawer.svelte +214 -0
- package/dist/primitives/Drawer.svelte.d.ts +20 -0
- package/dist/primitives/FPSCounter.svelte +85 -0
- package/dist/primitives/FPSCounter.svelte.d.ts +7 -0
- package/dist/primitives/FadeInOut.svelte +81 -0
- package/dist/primitives/FadeInOut.svelte.d.ts +21 -0
- package/dist/primitives/Grid.svelte +114 -0
- package/dist/primitives/Grid.svelte.d.ts +51 -0
- package/dist/primitives/IconButton.svelte +52 -0
- package/dist/primitives/IconButton.svelte.d.ts +15 -0
- package/dist/primitives/Image.svelte +39 -0
- package/dist/primitives/Image.svelte.d.ts +10 -0
- package/dist/primitives/Marquee.svelte +62 -0
- package/dist/primitives/Marquee.svelte.d.ts +13 -0
- package/dist/primitives/Modal.svelte +55 -0
- package/dist/primitives/Modal.svelte.d.ts +16 -0
- package/dist/primitives/Preserve.svelte +26 -0
- package/dist/primitives/Preserve.svelte.d.ts +10 -0
- package/dist/primitives/Row.svelte +55 -0
- package/dist/primitives/Row.svelte.d.ts +14 -0
- package/dist/primitives/Skeleton.svelte +48 -0
- package/dist/primitives/Skeleton.svelte.d.ts +13 -0
- package/dist/primitives/Toast.svelte +33 -0
- package/dist/primitives/Toast.svelte.d.ts +14 -0
- package/dist/primitives/Virtual.svelte +116 -0
- package/dist/primitives/Virtual.svelte.d.ts +49 -0
- package/dist/primitives/VirtualGrid.svelte +42 -0
- package/dist/primitives/VirtualGrid.svelte.d.ts +47 -0
- package/dist/primitives/Visible.svelte +7 -0
- package/dist/primitives/Visible.svelte.d.ts +8 -0
- package/dist/primitives/announcer/announcer.d.ts +14 -0
- package/dist/primitives/announcer/announcer.js +63 -0
- package/dist/primitives/announcer/index.d.ts +4 -0
- package/dist/primitives/announcer/index.js +5 -0
- package/dist/primitives/announcer/speech.d.ts +10 -0
- package/dist/primitives/announcer/speech.js +106 -0
- package/dist/primitives/createInfiniteItems.d.ts +8 -0
- package/dist/primitives/createInfiniteItems.js +28 -0
- package/dist/primitives/index.d.ts +28 -0
- package/dist/primitives/index.js +28 -0
- package/dist/primitives/router/HashRouter.svelte +110 -0
- package/dist/primitives/router/HashRouter.svelte.d.ts +9 -0
- package/dist/primitives/router/KeepAliveRoute.svelte +27 -0
- package/dist/primitives/router/KeepAliveRoute.svelte.d.ts +13 -0
- package/dist/primitives/router/Navigate.svelte +5 -0
- package/dist/primitives/router/Navigate.svelte.d.ts +7 -0
- package/dist/primitives/router/Route.svelte +26 -0
- package/dist/primitives/router/Route.svelte.d.ts +13 -0
- package/dist/primitives/router/RouteView.svelte +60 -0
- package/dist/primitives/router/RouteView.svelte.d.ts +14 -0
- package/dist/primitives/router/context.d.ts +9 -0
- package/dist/primitives/router/context.js +43 -0
- package/dist/primitives/router/index.d.ts +8 -0
- package/dist/primitives/router/index.js +7 -0
- package/dist/primitives/router/lazy.d.ts +6 -0
- package/dist/primitives/router/lazy.js +15 -0
- package/dist/primitives/router/match.d.ts +5 -0
- package/dist/primitives/router/match.js +104 -0
- package/dist/primitives/router/routeContext.d.ts +6 -0
- package/dist/primitives/router/routeContext.js +8 -0
- package/dist/primitives/router/types.d.ts +53 -0
- package/dist/primitives/router/types.js +1 -0
- package/dist/primitives/types.d.ts +86 -0
- package/dist/primitives/types.js +1 -0
- package/dist/primitives/useHold.d.ts +9 -0
- package/dist/primitives/useHold.js +55 -0
- package/dist/primitives/utils/chainFunctions.d.ts +5 -0
- package/dist/primitives/utils/chainFunctions.js +42 -0
- package/dist/primitives/utils/createBlurredImage.d.ts +10 -0
- package/dist/primitives/utils/createBlurredImage.js +49 -0
- package/dist/primitives/utils/createSpriteMap.d.ts +9 -0
- package/dist/primitives/utils/createSpriteMap.js +15 -0
- package/dist/primitives/utils/handleNavigation.d.ts +103 -0
- package/dist/primitives/utils/handleNavigation.js +306 -0
- package/dist/primitives/utils/withScrolling.d.ts +23 -0
- package/dist/primitives/utils/withScrolling.js +192 -0
- package/dist/shaders/index.d.ts +1 -0
- package/dist/shaders/index.js +1 -0
- package/dist/src/core/activeElement.d.ts +4 -0
- package/dist/src/core/clickInspector.d.ts +1 -0
- package/dist/src/core/config.d.ts +26 -0
- package/dist/src/core/dom-renderer/domRendererTypes.d.ts +15 -0
- package/dist/src/core/elementNode.d.ts +548 -0
- package/dist/src/core/env.d.ts +3 -0
- package/dist/src/core/flex.d.ts +2 -0
- package/dist/src/core/flexLayout.d.ts +2 -0
- package/dist/src/core/focusKeyTypes.d.ts +47 -0
- package/dist/src/core/focusManager.d.ts +34 -0
- package/dist/src/core/index.d.ts +14 -0
- package/dist/src/core/intrinsicTypes.d.ts +102 -0
- package/dist/src/core/lightningInit.d.ts +7 -0
- package/dist/src/core/nodeTypes.d.ts +13 -0
- package/dist/src/core/root.d.ts +8 -0
- package/dist/src/core/shaders.d.ts +44 -0
- package/dist/src/core/states.d.ts +12 -0
- package/dist/src/core/svelteNode.d.ts +21 -0
- package/dist/src/core/utils.d.ts +41 -0
- package/dist/src/fonts.d.ts +3 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/primitives/announcer/announcer.d.ts +14 -0
- package/dist/src/primitives/announcer/index.d.ts +4 -0
- package/dist/src/primitives/announcer/speech.d.ts +10 -0
- package/dist/src/primitives/createInfiniteItems.d.ts +8 -0
- package/dist/src/primitives/index.d.ts +28 -0
- package/dist/src/primitives/router/context.d.ts +8 -0
- package/dist/src/primitives/router/index.d.ts +8 -0
- package/dist/src/primitives/router/lazy.d.ts +6 -0
- package/dist/src/primitives/router/match.d.ts +5 -0
- package/dist/src/primitives/router/routeContext.d.ts +6 -0
- package/dist/src/primitives/router/types.d.ts +53 -0
- package/dist/src/primitives/types.d.ts +86 -0
- package/dist/src/primitives/useHold.d.ts +9 -0
- package/dist/src/primitives/utils/chainFunctions.d.ts +5 -0
- package/dist/src/primitives/utils/createBlurredImage.d.ts +10 -0
- package/dist/src/primitives/utils/createSpriteMap.d.ts +9 -0
- package/dist/src/primitives/utils/handleNavigation.d.ts +103 -0
- package/dist/src/primitives/utils/withScrolling.d.ts +23 -0
- package/dist/src/shaders/index.d.ts +1 -0
- package/dist/src/utils.d.ts +11 -0
- package/dist/src/vite/index.d.ts +18 -0
- package/dist/utils.d.ts +11 -0
- package/dist/utils.js +73 -0
- package/dist/vite/index.d.ts +18 -0
- package/dist/vite/index.js +149 -0
- package/package.json +72 -8
|
@@ -0,0 +1,548 @@
|
|
|
1
|
+
import { type BorderRadius, type BorderStyle, type StyleEffects, type AnimationSettings, type ElementText, type Styles, type AnimationEvents, type AnimationEventHandler, AddColorString, type OnEvent, NewOmit, SingleBorderStyle, type DollarString } from './intrinsicTypes.js';
|
|
2
|
+
import States, { type NodeStates } from './states.js';
|
|
3
|
+
import type { RendererMain, INode, INodeAnimateProps, IAnimationController, LinearGradientProps, RadialGradientProps, CoreShaderNode } from '@lightningjs/renderer';
|
|
4
|
+
import { TextNode } from './nodeTypes.js';
|
|
5
|
+
import { ForwardFocusHandler, FocusNode } from './focusManager.js';
|
|
6
|
+
import { IRendererNode, IRendererShader, IRendererShaderProps, IRendererTextNode } from './dom-renderer/domRendererTypes.js';
|
|
7
|
+
export declare function enqueueDelete(node: ElementNode, n: number): void;
|
|
8
|
+
export declare function convertToShader(_node: ElementNode, v: StyleEffects): IRendererShader;
|
|
9
|
+
declare global {
|
|
10
|
+
interface HTMLElement {
|
|
11
|
+
/** Assigned for development, to quickly get ElementNode from selected HTMLElement */
|
|
12
|
+
element?: ElementNode;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export type RendererNode = AddColorString<Partial<NewOmit<INode, 'parent' | 'shader' | 'src' | 'children' | 'id' | 'removeChild'>>>;
|
|
16
|
+
export interface ElementNode extends RendererNode, FocusNode {
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
/** @internal for managing series of insertions and deletions */
|
|
19
|
+
_queueDelete?: number;
|
|
20
|
+
_animationQueue?: Array<{
|
|
21
|
+
props: Partial<INodeAnimateProps<CoreShaderNode>>;
|
|
22
|
+
animationSettings?: AnimationSettings;
|
|
23
|
+
}> | undefined;
|
|
24
|
+
_animationQueueSettings?: AnimationSettings;
|
|
25
|
+
_animationRunning?: boolean;
|
|
26
|
+
_animationSettings?: AnimationSettings;
|
|
27
|
+
_autofocus?: any;
|
|
28
|
+
_containsFlexGrow?: boolean | null;
|
|
29
|
+
_deferAlphaUntilLayout?: number | undefined;
|
|
30
|
+
_hasRenderedChildren?: boolean;
|
|
31
|
+
_effects?: Record<string, any>;
|
|
32
|
+
_fontFamily?: string;
|
|
33
|
+
_id: string | undefined;
|
|
34
|
+
_parent: ElementNode | undefined;
|
|
35
|
+
_rendererProps?: any;
|
|
36
|
+
_states?: States;
|
|
37
|
+
_style?: Styles;
|
|
38
|
+
_stateStyleFallbacks?: Record<string, unknown>;
|
|
39
|
+
_stateStyleFallbackVersion?: number;
|
|
40
|
+
_theme?: Styles;
|
|
41
|
+
_transitionAnimations?: Record<string, IAnimationController | undefined>;
|
|
42
|
+
_transitionAnimationVersions?: Record<string, number | undefined>;
|
|
43
|
+
_lastAnyKeyPressTime?: number;
|
|
44
|
+
_type: 'element' | 'textNode';
|
|
45
|
+
_undoStyles?: string[];
|
|
46
|
+
_display?: 'flex' | 'block';
|
|
47
|
+
_onLayout?: (this: ElementNode, target: ElementNode) => void;
|
|
48
|
+
_requiresLayout: boolean;
|
|
49
|
+
autosize?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Optional component name for inspector / dev tooling — emitted by the
|
|
52
|
+
* Babel devtools plugin (see `devtools/jsx-locator.js`).
|
|
53
|
+
*/
|
|
54
|
+
componentName?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Optional source-location string for inspector / dev tooling — emitted by
|
|
57
|
+
* the Babel devtools plugin.
|
|
58
|
+
*/
|
|
59
|
+
componentLocation?: string;
|
|
60
|
+
/**
|
|
61
|
+
* The distance from the bottom edge of the parent element.
|
|
62
|
+
* When `bottom` is set, `mountY` is automatically set to 1.
|
|
63
|
+
*
|
|
64
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout
|
|
65
|
+
*/
|
|
66
|
+
bottom?: number;
|
|
67
|
+
/**
|
|
68
|
+
* An array of child `ElementNode` or `ElementText` nodes.
|
|
69
|
+
*/
|
|
70
|
+
children: Array<ElementNode | ElementText>;
|
|
71
|
+
/**
|
|
72
|
+
* Enable debug logging for this specific node.
|
|
73
|
+
*/
|
|
74
|
+
debug?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Specifies how much a flex item should grow relative to the rest of the flex items.
|
|
77
|
+
*
|
|
78
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex-grow
|
|
79
|
+
*/
|
|
80
|
+
flexGrow?: number;
|
|
81
|
+
/**
|
|
82
|
+
* Specifies whether flex items are forced onto one line or can wrap onto multiple lines.
|
|
83
|
+
*
|
|
84
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex
|
|
85
|
+
*/
|
|
86
|
+
flexWrap?: 'nowrap' | 'wrap' | 'wrap-reverse';
|
|
87
|
+
/**
|
|
88
|
+
* Determines if an element is a flex item. If set to `false`, the element will be ignored by the flexbox layout.
|
|
89
|
+
* @default false
|
|
90
|
+
*/
|
|
91
|
+
flexItem?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Specifies the order of a flex item relative to the rest of the flex items.
|
|
94
|
+
*
|
|
95
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex
|
|
96
|
+
*/
|
|
97
|
+
flexOrder?: number;
|
|
98
|
+
/**
|
|
99
|
+
* Defines the ability for a flex item to shrink if necessary.
|
|
100
|
+
* Defaults to 0 since existing legacy implementations did not shrink layout boxes.
|
|
101
|
+
* Only available in NEW flex layout.
|
|
102
|
+
*/
|
|
103
|
+
flexShrink?: number;
|
|
104
|
+
/**
|
|
105
|
+
* Defines the default size of an element before the remaining space is distributed.
|
|
106
|
+
* Only available in NEW flex layout.
|
|
107
|
+
*/
|
|
108
|
+
flexBasis?: number | string;
|
|
109
|
+
/**
|
|
110
|
+
* Forwards focus to a child element. It can be a numeric index of the child or a handler function.
|
|
111
|
+
*
|
|
112
|
+
* @see https://lightning-tv.github.io/solid/#/essentials/focus?id=forwardfocus
|
|
113
|
+
*/
|
|
114
|
+
forwardFocus?: number | ForwardFocusHandler;
|
|
115
|
+
/**
|
|
116
|
+
* If `true`, the states of this node will be propagated to its children.
|
|
117
|
+
*
|
|
118
|
+
* @see https://lightning-tv.github.io/solid/#/essentials/states?id=forwardstates
|
|
119
|
+
*/
|
|
120
|
+
forwardStates?: boolean;
|
|
121
|
+
/**
|
|
122
|
+
* The underlying Lightning Renderer node object. This is where the properties are ultimately set for rendering.
|
|
123
|
+
*/
|
|
124
|
+
lng: INode | IRendererNode | Partial<ElementNode> | (IRendererTextNode & {
|
|
125
|
+
shader?: any;
|
|
126
|
+
});
|
|
127
|
+
/**
|
|
128
|
+
* A boolean indicating whether the node has been rendered.
|
|
129
|
+
*/
|
|
130
|
+
rendered: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* The main renderer instance.
|
|
133
|
+
*/
|
|
134
|
+
renderer?: RendererMain;
|
|
135
|
+
/**
|
|
136
|
+
* The distance from the right edge of the parent element.
|
|
137
|
+
* When `right` is set, `mountX` is automatically set to 1.
|
|
138
|
+
*
|
|
139
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=layout-and-positioning-elements
|
|
140
|
+
*/
|
|
141
|
+
right?: number;
|
|
142
|
+
/**
|
|
143
|
+
* The index of the currently selected child element, used for focus management for Column and Row components.
|
|
144
|
+
*/
|
|
145
|
+
selected?: number;
|
|
146
|
+
/**
|
|
147
|
+
* The width of the element before flexbox layout is applied. Used internally for layout calculations.
|
|
148
|
+
*/
|
|
149
|
+
preFlexwidth?: number;
|
|
150
|
+
/**
|
|
151
|
+
* The height of the element before flexbox layout is applied. Used internally for layout calculations.
|
|
152
|
+
*/
|
|
153
|
+
preFlexheight?: number;
|
|
154
|
+
/**
|
|
155
|
+
* The text content of a text node.
|
|
156
|
+
*/
|
|
157
|
+
text?: string;
|
|
158
|
+
/**
|
|
159
|
+
* Aligns flex items along the cross axis of the current line of the flex container.
|
|
160
|
+
*
|
|
161
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex-properties
|
|
162
|
+
*/
|
|
163
|
+
alignItems?: 'flexStart' | 'flexEnd' | 'center';
|
|
164
|
+
/**
|
|
165
|
+
* Aligns a flex item along the cross axis, overriding the `alignItems` value of the flex container.
|
|
166
|
+
*
|
|
167
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex-properties
|
|
168
|
+
*/
|
|
169
|
+
alignSelf?: 'flexStart' | 'flexEnd' | 'center';
|
|
170
|
+
/**
|
|
171
|
+
* The border style for all sides of the element. Takes an object with width and color properties.
|
|
172
|
+
*
|
|
173
|
+
* @see https://lightning-tv.github.io/solid/#/essentials/effects?id=border-and-borderradius
|
|
174
|
+
*/
|
|
175
|
+
border?: BorderStyle;
|
|
176
|
+
/**
|
|
177
|
+
* The border style for the bottom side of the element.
|
|
178
|
+
*
|
|
179
|
+
* @see https://lightning-tv.github.io/solid/#/essentials/effects?id=border-and-borderradius
|
|
180
|
+
*/
|
|
181
|
+
borderBottom?: SingleBorderStyle;
|
|
182
|
+
/**
|
|
183
|
+
* The border style for the left side of the element.
|
|
184
|
+
*
|
|
185
|
+
* @see https://lightning-tv.github.io/solid/#/essentials/effects?id=border-and-borderradius
|
|
186
|
+
*/
|
|
187
|
+
borderLeft?: SingleBorderStyle;
|
|
188
|
+
/**
|
|
189
|
+
* The radius of the element's corners.
|
|
190
|
+
*
|
|
191
|
+
* @see https://lightning-tv.github.io/solid/#/essentials/effects?id=border-and-borderradius
|
|
192
|
+
*/
|
|
193
|
+
borderRadius?: BorderRadius;
|
|
194
|
+
/**
|
|
195
|
+
* The border style for the right side of the element.
|
|
196
|
+
*
|
|
197
|
+
* @see https://lightning-tv.github.io/solid/#/essentials/effects?id=border-and-borderradius
|
|
198
|
+
*/
|
|
199
|
+
borderRight?: SingleBorderStyle;
|
|
200
|
+
/**
|
|
201
|
+
* The border style for the top side of the element.
|
|
202
|
+
*
|
|
203
|
+
* @see https://lightning-tv.github.io/solid/#/essentials/effects?id=border-and-borderradius
|
|
204
|
+
*/
|
|
205
|
+
borderTop?: SingleBorderStyle;
|
|
206
|
+
/**
|
|
207
|
+
* A shorthand to set both `centerX` and `centerY` to true.
|
|
208
|
+
*
|
|
209
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=layout-and-positioning-elements
|
|
210
|
+
*/
|
|
211
|
+
center?: boolean;
|
|
212
|
+
/**
|
|
213
|
+
* If `true`, centers the element horizontally within its parent.
|
|
214
|
+
*
|
|
215
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=layout-and-positioning-elements
|
|
216
|
+
*/
|
|
217
|
+
centerX?: boolean;
|
|
218
|
+
/**
|
|
219
|
+
* If `true`, centers the element vertically within its parent.
|
|
220
|
+
*
|
|
221
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=layout-and-positioning-elements
|
|
222
|
+
*/
|
|
223
|
+
centerY?: boolean;
|
|
224
|
+
/**
|
|
225
|
+
* Specifies the direction of the flex items.
|
|
226
|
+
*
|
|
227
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex
|
|
228
|
+
*/
|
|
229
|
+
direction?: 'ltr' | 'rtl';
|
|
230
|
+
/**
|
|
231
|
+
* Defines how the flex container's size is determined. 'contain' allows it to grow with its content, 'fixed' keeps it at its specified size.
|
|
232
|
+
*
|
|
233
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex
|
|
234
|
+
*/
|
|
235
|
+
flexBoundary?: 'contain' | 'fixed';
|
|
236
|
+
/**
|
|
237
|
+
* Defines how the flex container's cross-axis size is determined. 'fixed' keeps it at its specified size. Default is 'contain'.
|
|
238
|
+
*
|
|
239
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex
|
|
240
|
+
*/
|
|
241
|
+
flexCrossBoundary?: 'fixed';
|
|
242
|
+
/**
|
|
243
|
+
* Specifies the direction of the main axis for flex items.
|
|
244
|
+
*
|
|
245
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex
|
|
246
|
+
*/
|
|
247
|
+
flexDirection?: 'row' | 'column' | 'row-reverse' | 'column-reverse';
|
|
248
|
+
/**
|
|
249
|
+
* The gap between flex items.
|
|
250
|
+
*
|
|
251
|
+
* @see @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex
|
|
252
|
+
*/
|
|
253
|
+
gap?: number;
|
|
254
|
+
/**
|
|
255
|
+
* The gap between flex rows.
|
|
256
|
+
*
|
|
257
|
+
* @see @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex
|
|
258
|
+
*/
|
|
259
|
+
rowGap?: number;
|
|
260
|
+
/**
|
|
261
|
+
* The gap between flex columns.
|
|
262
|
+
*
|
|
263
|
+
* @see @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex
|
|
264
|
+
*/
|
|
265
|
+
columnGap?: number;
|
|
266
|
+
/**
|
|
267
|
+
* Defines the alignment of flex items along the main axis.
|
|
268
|
+
*
|
|
269
|
+
* @see @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex
|
|
270
|
+
*/
|
|
271
|
+
justifyContent?: 'flexStart' | 'flexEnd' | 'center' | 'spaceBetween' | 'spaceAround' | 'spaceEvenly';
|
|
272
|
+
/**
|
|
273
|
+
* Applies a linear gradient effect to the element.
|
|
274
|
+
*
|
|
275
|
+
* @see https://lightning-tv.github.io/solid/#/essentials/effects
|
|
276
|
+
*/
|
|
277
|
+
linearGradient?: LinearGradientProps;
|
|
278
|
+
/**
|
|
279
|
+
* Applies a radial gradient effect to the element.
|
|
280
|
+
*
|
|
281
|
+
* @see https://lightning-tv.github.io/solid/#/essentials/effects
|
|
282
|
+
*/
|
|
283
|
+
radialGradient?: RadialGradientProps;
|
|
284
|
+
/**
|
|
285
|
+
* The margin on the bottom side of the element for a flexItem.
|
|
286
|
+
*
|
|
287
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout
|
|
288
|
+
*/
|
|
289
|
+
marginBottom?: number;
|
|
290
|
+
/**
|
|
291
|
+
* The margin on the left side of the element for a flexItem.
|
|
292
|
+
*
|
|
293
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout
|
|
294
|
+
*/
|
|
295
|
+
marginLeft?: number;
|
|
296
|
+
/**
|
|
297
|
+
* The margin on the right side of the element for a flexItem.
|
|
298
|
+
*
|
|
299
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout
|
|
300
|
+
*/
|
|
301
|
+
marginRight?: number;
|
|
302
|
+
/**
|
|
303
|
+
* The margin on the top side of the element for a flexItem.
|
|
304
|
+
*
|
|
305
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout
|
|
306
|
+
*/
|
|
307
|
+
marginTop?: number;
|
|
308
|
+
/**
|
|
309
|
+
* The padding on all sides of the flex element, or an array defining [Top, Right, Bottom, Left] padding.
|
|
310
|
+
*
|
|
311
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout
|
|
312
|
+
*/
|
|
313
|
+
padding?: number | [number, number] | [number, number, number] | [number, number, number, number];
|
|
314
|
+
/**
|
|
315
|
+
* The margin on all sides of the flex element, or an array defining [Top, Right, Bottom, Left] margins.
|
|
316
|
+
*
|
|
317
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout
|
|
318
|
+
*/
|
|
319
|
+
margin?: number | [number, number] | [number, number, number] | [number, number, number, number];
|
|
320
|
+
/**
|
|
321
|
+
* The x-coordinate of the element's position.
|
|
322
|
+
*
|
|
323
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout
|
|
324
|
+
*/
|
|
325
|
+
x: number;
|
|
326
|
+
/**
|
|
327
|
+
* The y-coordinate of the element's position.
|
|
328
|
+
*
|
|
329
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout
|
|
330
|
+
*/
|
|
331
|
+
y: number;
|
|
332
|
+
/**
|
|
333
|
+
* Throttles key press events by the specified number of milliseconds.
|
|
334
|
+
*
|
|
335
|
+
* @see https://lightning-tv.github.io/solid/#/primitives/useFocusManager?id=input-throttling-available-core-212
|
|
336
|
+
*/
|
|
337
|
+
throttleInput?: number;
|
|
338
|
+
/**
|
|
339
|
+
* The width of the element.
|
|
340
|
+
*
|
|
341
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout
|
|
342
|
+
*/
|
|
343
|
+
w: number;
|
|
344
|
+
/**
|
|
345
|
+
* The height of the element.
|
|
346
|
+
*
|
|
347
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout
|
|
348
|
+
*/
|
|
349
|
+
h: number;
|
|
350
|
+
/**
|
|
351
|
+
* The maximum width of the element.
|
|
352
|
+
*/
|
|
353
|
+
maxWidth?: number;
|
|
354
|
+
/**
|
|
355
|
+
* The maximum height of the element.
|
|
356
|
+
*/
|
|
357
|
+
maxHeight?: number;
|
|
358
|
+
/**
|
|
359
|
+
* The minimum width of the element.
|
|
360
|
+
*/
|
|
361
|
+
minWidth?: number;
|
|
362
|
+
/**
|
|
363
|
+
* The minimum height of the element.
|
|
364
|
+
*/
|
|
365
|
+
minHeight?: number;
|
|
366
|
+
/**
|
|
367
|
+
* The z-index of the element, which affects its stacking order.
|
|
368
|
+
*
|
|
369
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout
|
|
370
|
+
*/
|
|
371
|
+
zIndex?: number;
|
|
372
|
+
/**
|
|
373
|
+
* Defines transitions for animatable properties.
|
|
374
|
+
*
|
|
375
|
+
* @see https://lightning-tv.github.io/solid/#/essentials/transitions?id=transitions-animations
|
|
376
|
+
*/
|
|
377
|
+
transition?: Record<string, AnimationSettings | undefined | true | false> | true | false;
|
|
378
|
+
/**
|
|
379
|
+
* Optional handlers for animation events.
|
|
380
|
+
*
|
|
381
|
+
* Available animation events:
|
|
382
|
+
* - 'animating': Fired when the animation starts.
|
|
383
|
+
* - 'stopped': Fired (via setTimeout for the animation duration) when the animation completes.
|
|
384
|
+
*
|
|
385
|
+
* Each event handler is optional and maps to a corresponding event.
|
|
386
|
+
*
|
|
387
|
+
* @see https://lightning-tv.github.io/solid/#/essentials/transitions?id=animation-callbacks
|
|
388
|
+
*/
|
|
389
|
+
onAnimation?: Partial<Record<AnimationEvents, AnimationEventHandler>>;
|
|
390
|
+
/** Optional handler for when the element is created and rendered.
|
|
391
|
+
*
|
|
392
|
+
* @see https://lightning-tv.github.io/solid/#/flow/ondestroy
|
|
393
|
+
*/
|
|
394
|
+
onCreate?: (this: ElementNode, el: ElementNode) => void;
|
|
395
|
+
/**
|
|
396
|
+
* Optional handler for when the element is destroyed.
|
|
397
|
+
* It can return a promise to wait for the cleanup to finish before the element is destroyed.
|
|
398
|
+
*
|
|
399
|
+
* @see https://lightning-tv.github.io/solid/#/flow/ondestroy
|
|
400
|
+
*/
|
|
401
|
+
onDestroy?: (this: ElementNode, el: ElementNode) => Promise<void> | void;
|
|
402
|
+
/**
|
|
403
|
+
* Optional handlers for when the element is rendered—after creation and when switching parents.
|
|
404
|
+
*
|
|
405
|
+
* @see https://lightning-tv.github.io/solid/#/primitives/KeepAlive
|
|
406
|
+
*/
|
|
407
|
+
onRender?: (this: ElementNode, el: ElementNode) => void;
|
|
408
|
+
/**
|
|
409
|
+
* Optional handlers for when the element is removed from a parent element.
|
|
410
|
+
*
|
|
411
|
+
* @see https://lightning-tv.github.io/solid/#/primitives/KeepAlive
|
|
412
|
+
*/
|
|
413
|
+
onRemove?: (this: ElementNode, el: ElementNode) => void;
|
|
414
|
+
/**
|
|
415
|
+
* Listen to Events coming from the renderer
|
|
416
|
+
* @param NodeEvents
|
|
417
|
+
*
|
|
418
|
+
* Available events:
|
|
419
|
+
* - 'loaded'
|
|
420
|
+
* - 'failed'
|
|
421
|
+
* - 'freed'
|
|
422
|
+
* - 'inBounds'
|
|
423
|
+
* - 'outOfBounds'
|
|
424
|
+
* - 'inViewport'
|
|
425
|
+
* - 'outOfViewport'
|
|
426
|
+
*
|
|
427
|
+
* @typedef {'loaded' | 'failed' | 'freed' | 'inBounds' | 'outOfBounds' | 'inViewport' | 'outOfViewport'} NodeEvents
|
|
428
|
+
*
|
|
429
|
+
* @param {Partial<Record<NodeEvents, EventHandler>>} events - An object where the keys are event names from NodeEvents and the values are the respective event handlers.
|
|
430
|
+
* @returns {void}
|
|
431
|
+
*
|
|
432
|
+
* @see https://lightning-tv.github.io/solid/#/essentials/events
|
|
433
|
+
*/
|
|
434
|
+
onEvent?: OnEvent;
|
|
435
|
+
/**
|
|
436
|
+
* The individual padding on each side of an element, acting as an override to the `padding` array property.
|
|
437
|
+
* `paddingTop`, `paddingRight`, `paddingBottom`, `paddingLeft`.
|
|
438
|
+
* Only in the new flex engine.
|
|
439
|
+
*
|
|
440
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex
|
|
441
|
+
*/
|
|
442
|
+
paddingTop?: number;
|
|
443
|
+
paddingRight?: number;
|
|
444
|
+
paddingBottom?: number;
|
|
445
|
+
paddingLeft?: number;
|
|
446
|
+
/**
|
|
447
|
+
* Defines the order in which state styles are applied for this element.
|
|
448
|
+
* Overrides the global `Config.stateOrder`.
|
|
449
|
+
*/
|
|
450
|
+
stateOrder?: DollarString[];
|
|
451
|
+
}
|
|
452
|
+
export declare class ElementNode {
|
|
453
|
+
constructor(name: string);
|
|
454
|
+
get effects(): StyleEffects | undefined;
|
|
455
|
+
/**
|
|
456
|
+
* Commit a built shader-props target back to `this.lng.shader`. When the
|
|
457
|
+
* node is already rendered we either convert the props into a real shader
|
|
458
|
+
* (first time) or self-assign so the DOM renderer's setter reapplies style;
|
|
459
|
+
* pre-render we just attach the bag for the upcoming `render()`.
|
|
460
|
+
*/
|
|
461
|
+
_writeShaderTarget(target: unknown): void;
|
|
462
|
+
set effects(v: StyleEffects);
|
|
463
|
+
set id(id: string);
|
|
464
|
+
get id(): string | undefined;
|
|
465
|
+
get parent(): ElementNode | undefined;
|
|
466
|
+
set parent(p: ElementNode | undefined);
|
|
467
|
+
get height(): number;
|
|
468
|
+
set height(h: number);
|
|
469
|
+
get width(): number;
|
|
470
|
+
set width(w: number);
|
|
471
|
+
set fontWeight(v: unknown);
|
|
472
|
+
get fontWeight(): unknown;
|
|
473
|
+
set fontFamily(v: string | undefined);
|
|
474
|
+
get fontFamily(): string | undefined;
|
|
475
|
+
insertChild(node: ElementNode | ElementText | TextNode, beforeNode?: ElementNode | ElementText | TextNode | null): void;
|
|
476
|
+
removeChild(node: ElementNode | ElementText | TextNode): void;
|
|
477
|
+
get selectedNode(): ElementNode | undefined;
|
|
478
|
+
set shader(shaderProps: IRendererShader | [kind: string, props: IRendererShaderProps]);
|
|
479
|
+
_sendToLightningAnimatable(name: string, value: number): IAnimationController | undefined;
|
|
480
|
+
_fireAnimationEvents(name: string, value: number, animationSettings?: AnimationSettings): void;
|
|
481
|
+
_clearStateStyleFallbacksAfterTransitions(styleKeys: string[]): void;
|
|
482
|
+
animate(props: Partial<INodeAnimateProps<CoreShaderNode>>, animationSettings?: AnimationSettings): IAnimationController;
|
|
483
|
+
chain(props: Partial<INodeAnimateProps<CoreShaderNode>>, animationSettings?: AnimationSettings): this;
|
|
484
|
+
start(): Promise<void>;
|
|
485
|
+
emit(event: string, ...args: any[]): boolean;
|
|
486
|
+
setFocus(): void;
|
|
487
|
+
_layoutOnLoad(): void;
|
|
488
|
+
getText(this: ElementText): string;
|
|
489
|
+
rerender(): void;
|
|
490
|
+
destroy(): void;
|
|
491
|
+
_destroy(): void;
|
|
492
|
+
set style(style: Styles | undefined);
|
|
493
|
+
get style(): Styles;
|
|
494
|
+
set theme(styles: Styles | undefined);
|
|
495
|
+
get theme(): Styles;
|
|
496
|
+
get hasChildren(): boolean;
|
|
497
|
+
set src(src: string | null | undefined);
|
|
498
|
+
get src(): string | null | undefined;
|
|
499
|
+
getChildById(id: string): ElementText | ElementNode | undefined;
|
|
500
|
+
searchChildrenById(id: string): ElementNode | undefined;
|
|
501
|
+
set states(states: NodeStates);
|
|
502
|
+
get states(): States;
|
|
503
|
+
get animationSettings(): AnimationSettings | undefined;
|
|
504
|
+
set animationSettings(animationSettings: AnimationSettings | undefined);
|
|
505
|
+
set hidden(val: boolean);
|
|
506
|
+
get hidden(): boolean;
|
|
507
|
+
get preserve(): boolean;
|
|
508
|
+
set preserve(v: boolean);
|
|
509
|
+
/**
|
|
510
|
+
* Sets the autofocus state of the element.
|
|
511
|
+
* When set to a truthy value, the element will automatically gain focus.
|
|
512
|
+
* You can also set it to a signal to recalculate
|
|
513
|
+
*
|
|
514
|
+
* @param val - A value to determine if the element should autofocus.
|
|
515
|
+
* A truthy value enables autofocus, otherwise disables it.
|
|
516
|
+
*/
|
|
517
|
+
set autofocus(val: any);
|
|
518
|
+
get autofocus(): any;
|
|
519
|
+
/**
|
|
520
|
+
* Specifies the display behavior of an element. 'flex' enables flexbox layout.
|
|
521
|
+
*
|
|
522
|
+
* @default 'block'
|
|
523
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout?id=flex
|
|
524
|
+
*/
|
|
525
|
+
get display(): 'flex' | 'block' | undefined;
|
|
526
|
+
set display(v: 'flex' | 'block' | undefined);
|
|
527
|
+
/**
|
|
528
|
+
* Callback run after flex layout is calculated on flex elements.
|
|
529
|
+
*
|
|
530
|
+
* @see https://lightning-tv.github.io/solid/#/flow/layout
|
|
531
|
+
*/
|
|
532
|
+
get onLayout(): ((this: ElementNode, target: ElementNode) => void) | undefined;
|
|
533
|
+
set onLayout(fn: ((this: ElementNode, target: ElementNode) => void) | undefined);
|
|
534
|
+
requiresLayout(): boolean;
|
|
535
|
+
set updateLayoutOn(_v: unknown);
|
|
536
|
+
get updateLayoutOn(): unknown;
|
|
537
|
+
updateLayout(): void;
|
|
538
|
+
_stateChanged(): void;
|
|
539
|
+
render(topNode?: boolean): void;
|
|
540
|
+
}
|
|
541
|
+
export declare function createRawShaderAccessor<T>(key: keyof StyleEffects): {
|
|
542
|
+
set(this: ElementNode, value: T): void;
|
|
543
|
+
get(this: ElementNode): any;
|
|
544
|
+
};
|
|
545
|
+
export declare function shaderAccessor<T extends Record<string, any> | number>(key: 'border' | 'shadow' | 'rounded' | 'borderBottom' | 'borderLeft' | 'borderRight' | 'borderTop'): {
|
|
546
|
+
set(this: ElementNode, value: T): void;
|
|
547
|
+
get(this: ElementNode): any;
|
|
548
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ElementNode } from './elementNode.js';
|
|
2
|
+
export interface FocusNode {
|
|
3
|
+
onFocus?: (this: ElementNode, currentFocusedElm: ElementNode, prevFocusedElm: ElementNode | undefined, nodeWithCallback: ElementNode) => void;
|
|
4
|
+
onFocusChanged?: (this: ElementNode, hasFocus: boolean, currentFocusedElm: ElementNode, prevFocusedElm: ElementNode | undefined, nodeWithCallback: ElementNode) => void;
|
|
5
|
+
onBlur?: (this: ElementNode, currentFocusedElm: ElementNode, prevFocusedElm: ElementNode, nodeWithCallback: ElementNode) => void;
|
|
6
|
+
onKeyPress?: (this: ElementNode, e: KeyboardEvent, mappedKeyEvent: string | undefined, handlerElm: ElementNode, currentFocusedElm: ElementNode) => KeyHandlerReturn;
|
|
7
|
+
onKeyHold?: (this: ElementNode, e: KeyboardEvent, mappedKeyEvent: string | undefined, handlerElm: ElementNode, currentFocusedElm: ElementNode) => KeyHandlerReturn;
|
|
8
|
+
}
|
|
9
|
+
export type KeyNameOrKeyCode = string | number;
|
|
10
|
+
export interface DefaultKeyMap {
|
|
11
|
+
Left: KeyNameOrKeyCode | KeyNameOrKeyCode[] | null;
|
|
12
|
+
Right: KeyNameOrKeyCode | KeyNameOrKeyCode[] | null;
|
|
13
|
+
Up: KeyNameOrKeyCode | KeyNameOrKeyCode[] | null;
|
|
14
|
+
Down: KeyNameOrKeyCode | KeyNameOrKeyCode[] | null;
|
|
15
|
+
Enter: KeyNameOrKeyCode | KeyNameOrKeyCode[] | null;
|
|
16
|
+
Last: KeyNameOrKeyCode | KeyNameOrKeyCode[] | null;
|
|
17
|
+
}
|
|
18
|
+
export interface KeyMap extends DefaultKeyMap {
|
|
19
|
+
[key: string]: KeyNameOrKeyCode | KeyNameOrKeyCode[] | null;
|
|
20
|
+
}
|
|
21
|
+
export interface DefaultKeyHoldMap {
|
|
22
|
+
EnterHold: KeyNameOrKeyCode | KeyNameOrKeyCode[] | null;
|
|
23
|
+
LeftHold: KeyNameOrKeyCode | KeyNameOrKeyCode[] | null;
|
|
24
|
+
RightHold: KeyNameOrKeyCode | KeyNameOrKeyCode[] | null;
|
|
25
|
+
UpHold: KeyNameOrKeyCode | KeyNameOrKeyCode[] | null;
|
|
26
|
+
DownHold: KeyNameOrKeyCode | KeyNameOrKeyCode[] | null;
|
|
27
|
+
}
|
|
28
|
+
export type EventHandlers<Map> = {
|
|
29
|
+
[K in keyof Map as `on${Capitalize<string & K>}`]?: KeyHandler;
|
|
30
|
+
} & {
|
|
31
|
+
[K in keyof Map as `on${Capitalize<string & K>}Release`]?: KeyHandler;
|
|
32
|
+
} & {
|
|
33
|
+
[K in keyof Map as `onCapture${Capitalize<string & K>}`]?: KeyHandler;
|
|
34
|
+
} & {
|
|
35
|
+
onCaptureKey?: KeyHandler;
|
|
36
|
+
onCaptureKeyRelease?: KeyHandler;
|
|
37
|
+
};
|
|
38
|
+
export interface KeyHoldMap extends DefaultKeyHoldMap {
|
|
39
|
+
}
|
|
40
|
+
export type KeyHandlerReturn = boolean | void;
|
|
41
|
+
export type KeyHandler = (this: ElementNode, e: KeyboardEvent, target: ElementNode, handlerElm: ElementNode, mappedEvent?: string) => KeyHandlerReturn;
|
|
42
|
+
export type ForwardFocusHandler = (this: ElementNode, elm: ElementNode) => boolean | void;
|
|
43
|
+
export type KeyHoldOptions = {
|
|
44
|
+
userKeyHoldMap: Partial<KeyHoldMap>;
|
|
45
|
+
holdThreshold?: number;
|
|
46
|
+
repeatInterval?: number;
|
|
47
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type * from './focusKeyTypes.js';
|
|
2
|
+
import { ElementNode } from './elementNode.js';
|
|
3
|
+
import type { KeyHoldOptions, KeyMap } from './focusKeyTypes.js';
|
|
4
|
+
export interface FocusHistoryEntry {
|
|
5
|
+
timestamp: number;
|
|
6
|
+
keyPressed: string | number | undefined;
|
|
7
|
+
mappedKey: string | undefined;
|
|
8
|
+
prev: ElementNode | undefined;
|
|
9
|
+
next: ElementNode;
|
|
10
|
+
}
|
|
11
|
+
/** Returns a snapshot of the focus history ring buffer (up to 50 entries). */
|
|
12
|
+
export declare const getFocusHistory: () => Readonly<FocusHistoryEntry[]>;
|
|
13
|
+
/**
|
|
14
|
+
* Prints the last `count` focus history entries as a console.table.
|
|
15
|
+
* Callable at any time from the browser console: `printFocusHistory(20)`
|
|
16
|
+
*/
|
|
17
|
+
export declare const printFocusHistory: (count: number) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Built-in "apply focus" routine: diffs the focus path, fires
|
|
20
|
+
* `onFocus`/`onBlur`/`onFocusChanged`, records history, then publishes the
|
|
21
|
+
* active element through the `Config.setActiveElement` hook.
|
|
22
|
+
*
|
|
23
|
+
* This is what `ElementNode.setFocus()` ultimately invokes. It is intentionally
|
|
24
|
+
* *not* the public `setActiveElement` export — that name is the raw signal
|
|
25
|
+
* setter (see {@link ./activeElement.ts}). Keeping them separate is what stops
|
|
26
|
+
* a custom `Config.setActiveElement` (wired to a setter) from recursing back
|
|
27
|
+
* through the focus-path logic.
|
|
28
|
+
*/
|
|
29
|
+
export declare const setActiveElementCore: (elm: ElementNode) => void;
|
|
30
|
+
export declare const focusPathStore: import("svelte/store").Writable<ElementNode[]>;
|
|
31
|
+
export declare const focusPath: (() => ElementNode[]) & import("svelte/store").Writable<ElementNode[]>;
|
|
32
|
+
export declare const setFocusPath: (path: ElementNode[]) => void;
|
|
33
|
+
export declare const createFocusManager: (userKeyMap?: Partial<KeyMap>, keyHoldOptions?: KeyHoldOptions) => (() => void);
|
|
34
|
+
export declare const useFocusManager: (userKeyMap?: Partial<KeyMap>, keyHoldOptions?: KeyHoldOptions) => (() => void);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './activeElement.js';
|
|
2
|
+
export * from './config.js';
|
|
3
|
+
export * from './elementNode.js';
|
|
4
|
+
export * from './focusKeyTypes.js';
|
|
5
|
+
export * from './focusManager.js';
|
|
6
|
+
export * from './lightningInit.js';
|
|
7
|
+
export * from './nodeTypes.js';
|
|
8
|
+
export * from './root.js';
|
|
9
|
+
export * from './shaders.js';
|
|
10
|
+
export * from './svelteNode.js';
|
|
11
|
+
export * from './utils.js';
|
|
12
|
+
export type * from './intrinsicTypes.js';
|
|
13
|
+
export type { INode } from '@lightningjs/renderer';
|
|
14
|
+
export { assertTruthy, deg2Rad } from '@lightningjs/renderer/utils';
|