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.
Files changed (251) hide show
  1. package/LICENSE +1 -0
  2. package/NOTICE +1 -0
  3. package/README.md +98 -0
  4. package/dist/LightningRoot.svelte +25 -0
  5. package/dist/LightningRoot.svelte.d.ts +15 -0
  6. package/dist/Text.svelte +19 -0
  7. package/dist/Text.svelte.d.ts +7 -0
  8. package/dist/View.svelte +18 -0
  9. package/dist/View.svelte.d.ts +7 -0
  10. package/dist/__package_types_tmp__/LightningRoot.svelte.d.ts +15 -0
  11. package/dist/__package_types_tmp__/Text.svelte.d.ts +7 -0
  12. package/dist/__package_types_tmp__/View.svelte.d.ts +7 -0
  13. package/dist/__package_types_tmp__/core/activeElement.d.ts +4 -0
  14. package/dist/__package_types_tmp__/core/clickInspector.d.ts +1 -0
  15. package/dist/__package_types_tmp__/core/config.d.ts +26 -0
  16. package/dist/__package_types_tmp__/core/dom-renderer/domRendererTypes.d.ts +15 -0
  17. package/dist/__package_types_tmp__/core/elementNode.d.ts +548 -0
  18. package/dist/__package_types_tmp__/core/env.d.ts +3 -0
  19. package/dist/__package_types_tmp__/core/flex.d.ts +2 -0
  20. package/dist/__package_types_tmp__/core/flexLayout.d.ts +2 -0
  21. package/dist/__package_types_tmp__/core/focusKeyTypes.d.ts +47 -0
  22. package/dist/__package_types_tmp__/core/focusManager.d.ts +34 -0
  23. package/dist/__package_types_tmp__/core/index.d.ts +14 -0
  24. package/dist/__package_types_tmp__/core/intrinsicTypes.d.ts +102 -0
  25. package/dist/__package_types_tmp__/core/lightningInit.d.ts +7 -0
  26. package/dist/__package_types_tmp__/core/nodeTypes.d.ts +13 -0
  27. package/dist/__package_types_tmp__/core/root.d.ts +8 -0
  28. package/dist/__package_types_tmp__/core/shaders.d.ts +44 -0
  29. package/dist/__package_types_tmp__/core/states.d.ts +12 -0
  30. package/dist/__package_types_tmp__/core/svelteNode.d.ts +21 -0
  31. package/dist/__package_types_tmp__/core/utils.d.ts +41 -0
  32. package/dist/__package_types_tmp__/fonts.d.ts +3 -0
  33. package/dist/__package_types_tmp__/index.d.ts +7 -0
  34. package/dist/__package_types_tmp__/primitives/Button.svelte.d.ts +12 -0
  35. package/dist/__package_types_tmp__/primitives/Card.svelte.d.ts +12 -0
  36. package/dist/__package_types_tmp__/primitives/Column.svelte.d.ts +14 -0
  37. package/dist/__package_types_tmp__/primitives/Drawer.svelte.d.ts +20 -0
  38. package/dist/__package_types_tmp__/primitives/FPSCounter.svelte.d.ts +7 -0
  39. package/dist/__package_types_tmp__/primitives/FadeInOut.svelte.d.ts +21 -0
  40. package/dist/__package_types_tmp__/primitives/Grid.svelte.d.ts +51 -0
  41. package/dist/__package_types_tmp__/primitives/IconButton.svelte.d.ts +15 -0
  42. package/dist/__package_types_tmp__/primitives/Image.svelte.d.ts +10 -0
  43. package/dist/__package_types_tmp__/primitives/Marquee.svelte.d.ts +13 -0
  44. package/dist/__package_types_tmp__/primitives/Modal.svelte.d.ts +16 -0
  45. package/dist/__package_types_tmp__/primitives/Preserve.svelte.d.ts +10 -0
  46. package/dist/__package_types_tmp__/primitives/Row.svelte.d.ts +14 -0
  47. package/dist/__package_types_tmp__/primitives/Skeleton.svelte.d.ts +13 -0
  48. package/dist/__package_types_tmp__/primitives/Toast.svelte.d.ts +14 -0
  49. package/dist/__package_types_tmp__/primitives/Virtual.svelte.d.ts +49 -0
  50. package/dist/__package_types_tmp__/primitives/VirtualGrid.svelte.d.ts +47 -0
  51. package/dist/__package_types_tmp__/primitives/Visible.svelte.d.ts +8 -0
  52. package/dist/__package_types_tmp__/primitives/announcer/announcer.d.ts +14 -0
  53. package/dist/__package_types_tmp__/primitives/announcer/index.d.ts +4 -0
  54. package/dist/__package_types_tmp__/primitives/announcer/speech.d.ts +10 -0
  55. package/dist/__package_types_tmp__/primitives/createInfiniteItems.d.ts +8 -0
  56. package/dist/__package_types_tmp__/primitives/index.d.ts +28 -0
  57. package/dist/__package_types_tmp__/primitives/router/HashRouter.svelte.d.ts +9 -0
  58. package/dist/__package_types_tmp__/primitives/router/KeepAliveRoute.svelte.d.ts +13 -0
  59. package/dist/__package_types_tmp__/primitives/router/Navigate.svelte.d.ts +7 -0
  60. package/dist/__package_types_tmp__/primitives/router/Route.svelte.d.ts +13 -0
  61. package/dist/__package_types_tmp__/primitives/router/RouteView.svelte.d.ts +14 -0
  62. package/dist/__package_types_tmp__/primitives/router/context.d.ts +9 -0
  63. package/dist/__package_types_tmp__/primitives/router/index.d.ts +8 -0
  64. package/dist/__package_types_tmp__/primitives/router/lazy.d.ts +6 -0
  65. package/dist/__package_types_tmp__/primitives/router/match.d.ts +5 -0
  66. package/dist/__package_types_tmp__/primitives/router/routeContext.d.ts +6 -0
  67. package/dist/__package_types_tmp__/primitives/router/types.d.ts +53 -0
  68. package/dist/__package_types_tmp__/primitives/types.d.ts +86 -0
  69. package/dist/__package_types_tmp__/primitives/useHold.d.ts +9 -0
  70. package/dist/__package_types_tmp__/primitives/utils/chainFunctions.d.ts +5 -0
  71. package/dist/__package_types_tmp__/primitives/utils/createBlurredImage.d.ts +10 -0
  72. package/dist/__package_types_tmp__/primitives/utils/createSpriteMap.d.ts +9 -0
  73. package/dist/__package_types_tmp__/primitives/utils/handleNavigation.d.ts +103 -0
  74. package/dist/__package_types_tmp__/primitives/utils/withScrolling.d.ts +23 -0
  75. package/dist/__package_types_tmp__/shaders/index.d.ts +1 -0
  76. package/dist/__package_types_tmp__/utils.d.ts +11 -0
  77. package/dist/__package_types_tmp__/vite/index.d.ts +18 -0
  78. package/dist/core/activeElement.d.ts +4 -0
  79. package/dist/core/activeElement.js +6 -0
  80. package/dist/core/clickInspector.d.ts +1 -0
  81. package/dist/core/clickInspector.js +3 -0
  82. package/dist/core/config.d.ts +26 -0
  83. package/dist/core/config.js +35 -0
  84. package/dist/core/dom-renderer/domRendererTypes.d.ts +15 -0
  85. package/dist/core/dom-renderer/domRendererTypes.js +2 -0
  86. package/dist/core/elementNode.d.ts +548 -0
  87. package/dist/core/elementNode.js +1355 -0
  88. package/dist/core/env.d.ts +3 -0
  89. package/dist/core/env.js +5 -0
  90. package/dist/core/flex.d.ts +2 -0
  91. package/dist/core/flex.js +295 -0
  92. package/dist/core/flexLayout.d.ts +2 -0
  93. package/dist/core/flexLayout.js +367 -0
  94. package/dist/core/focusKeyTypes.d.ts +47 -0
  95. package/dist/core/focusKeyTypes.js +1 -0
  96. package/dist/core/focusManager.d.ts +34 -0
  97. package/dist/core/focusManager.js +410 -0
  98. package/dist/core/index.d.ts +14 -0
  99. package/dist/core/index.js +12 -0
  100. package/dist/core/intrinsicTypes.d.ts +102 -0
  101. package/dist/core/intrinsicTypes.js +1 -0
  102. package/dist/core/lightningInit.d.ts +7 -0
  103. package/dist/core/lightningInit.js +31 -0
  104. package/dist/core/nodeTypes.d.ts +13 -0
  105. package/dist/core/nodeTypes.js +13 -0
  106. package/dist/core/root.d.ts +8 -0
  107. package/dist/core/root.js +16 -0
  108. package/dist/core/shaders.d.ts +44 -0
  109. package/dist/core/shaders.js +81 -0
  110. package/dist/core/states.d.ts +12 -0
  111. package/dist/core/states.js +83 -0
  112. package/dist/core/svelteNode.d.ts +21 -0
  113. package/dist/core/svelteNode.js +72 -0
  114. package/dist/core/utils.d.ts +41 -0
  115. package/dist/core/utils.js +163 -0
  116. package/dist/fonts/Roboto-Regular.ttf +0 -0
  117. package/dist/fonts.d.ts +3 -0
  118. package/dist/fonts.js +7 -0
  119. package/dist/index.d.ts +7 -0
  120. package/dist/index.js +7 -0
  121. package/dist/primitives/Button.svelte +35 -0
  122. package/dist/primitives/Button.svelte.d.ts +12 -0
  123. package/dist/primitives/Card.svelte +36 -0
  124. package/dist/primitives/Card.svelte.d.ts +12 -0
  125. package/dist/primitives/Column.svelte +56 -0
  126. package/dist/primitives/Column.svelte.d.ts +14 -0
  127. package/dist/primitives/Drawer.svelte +214 -0
  128. package/dist/primitives/Drawer.svelte.d.ts +20 -0
  129. package/dist/primitives/FPSCounter.svelte +85 -0
  130. package/dist/primitives/FPSCounter.svelte.d.ts +7 -0
  131. package/dist/primitives/FadeInOut.svelte +81 -0
  132. package/dist/primitives/FadeInOut.svelte.d.ts +21 -0
  133. package/dist/primitives/Grid.svelte +114 -0
  134. package/dist/primitives/Grid.svelte.d.ts +51 -0
  135. package/dist/primitives/IconButton.svelte +52 -0
  136. package/dist/primitives/IconButton.svelte.d.ts +15 -0
  137. package/dist/primitives/Image.svelte +39 -0
  138. package/dist/primitives/Image.svelte.d.ts +10 -0
  139. package/dist/primitives/Marquee.svelte +62 -0
  140. package/dist/primitives/Marquee.svelte.d.ts +13 -0
  141. package/dist/primitives/Modal.svelte +55 -0
  142. package/dist/primitives/Modal.svelte.d.ts +16 -0
  143. package/dist/primitives/Preserve.svelte +26 -0
  144. package/dist/primitives/Preserve.svelte.d.ts +10 -0
  145. package/dist/primitives/Row.svelte +55 -0
  146. package/dist/primitives/Row.svelte.d.ts +14 -0
  147. package/dist/primitives/Skeleton.svelte +48 -0
  148. package/dist/primitives/Skeleton.svelte.d.ts +13 -0
  149. package/dist/primitives/Toast.svelte +33 -0
  150. package/dist/primitives/Toast.svelte.d.ts +14 -0
  151. package/dist/primitives/Virtual.svelte +116 -0
  152. package/dist/primitives/Virtual.svelte.d.ts +49 -0
  153. package/dist/primitives/VirtualGrid.svelte +42 -0
  154. package/dist/primitives/VirtualGrid.svelte.d.ts +47 -0
  155. package/dist/primitives/Visible.svelte +7 -0
  156. package/dist/primitives/Visible.svelte.d.ts +8 -0
  157. package/dist/primitives/announcer/announcer.d.ts +14 -0
  158. package/dist/primitives/announcer/announcer.js +63 -0
  159. package/dist/primitives/announcer/index.d.ts +4 -0
  160. package/dist/primitives/announcer/index.js +5 -0
  161. package/dist/primitives/announcer/speech.d.ts +10 -0
  162. package/dist/primitives/announcer/speech.js +106 -0
  163. package/dist/primitives/createInfiniteItems.d.ts +8 -0
  164. package/dist/primitives/createInfiniteItems.js +28 -0
  165. package/dist/primitives/index.d.ts +28 -0
  166. package/dist/primitives/index.js +28 -0
  167. package/dist/primitives/router/HashRouter.svelte +110 -0
  168. package/dist/primitives/router/HashRouter.svelte.d.ts +9 -0
  169. package/dist/primitives/router/KeepAliveRoute.svelte +27 -0
  170. package/dist/primitives/router/KeepAliveRoute.svelte.d.ts +13 -0
  171. package/dist/primitives/router/Navigate.svelte +5 -0
  172. package/dist/primitives/router/Navigate.svelte.d.ts +7 -0
  173. package/dist/primitives/router/Route.svelte +26 -0
  174. package/dist/primitives/router/Route.svelte.d.ts +13 -0
  175. package/dist/primitives/router/RouteView.svelte +60 -0
  176. package/dist/primitives/router/RouteView.svelte.d.ts +14 -0
  177. package/dist/primitives/router/context.d.ts +9 -0
  178. package/dist/primitives/router/context.js +43 -0
  179. package/dist/primitives/router/index.d.ts +8 -0
  180. package/dist/primitives/router/index.js +7 -0
  181. package/dist/primitives/router/lazy.d.ts +6 -0
  182. package/dist/primitives/router/lazy.js +15 -0
  183. package/dist/primitives/router/match.d.ts +5 -0
  184. package/dist/primitives/router/match.js +104 -0
  185. package/dist/primitives/router/routeContext.d.ts +6 -0
  186. package/dist/primitives/router/routeContext.js +8 -0
  187. package/dist/primitives/router/types.d.ts +53 -0
  188. package/dist/primitives/router/types.js +1 -0
  189. package/dist/primitives/types.d.ts +86 -0
  190. package/dist/primitives/types.js +1 -0
  191. package/dist/primitives/useHold.d.ts +9 -0
  192. package/dist/primitives/useHold.js +55 -0
  193. package/dist/primitives/utils/chainFunctions.d.ts +5 -0
  194. package/dist/primitives/utils/chainFunctions.js +42 -0
  195. package/dist/primitives/utils/createBlurredImage.d.ts +10 -0
  196. package/dist/primitives/utils/createBlurredImage.js +49 -0
  197. package/dist/primitives/utils/createSpriteMap.d.ts +9 -0
  198. package/dist/primitives/utils/createSpriteMap.js +15 -0
  199. package/dist/primitives/utils/handleNavigation.d.ts +103 -0
  200. package/dist/primitives/utils/handleNavigation.js +306 -0
  201. package/dist/primitives/utils/withScrolling.d.ts +23 -0
  202. package/dist/primitives/utils/withScrolling.js +192 -0
  203. package/dist/shaders/index.d.ts +1 -0
  204. package/dist/shaders/index.js +1 -0
  205. package/dist/src/core/activeElement.d.ts +4 -0
  206. package/dist/src/core/clickInspector.d.ts +1 -0
  207. package/dist/src/core/config.d.ts +26 -0
  208. package/dist/src/core/dom-renderer/domRendererTypes.d.ts +15 -0
  209. package/dist/src/core/elementNode.d.ts +548 -0
  210. package/dist/src/core/env.d.ts +3 -0
  211. package/dist/src/core/flex.d.ts +2 -0
  212. package/dist/src/core/flexLayout.d.ts +2 -0
  213. package/dist/src/core/focusKeyTypes.d.ts +47 -0
  214. package/dist/src/core/focusManager.d.ts +34 -0
  215. package/dist/src/core/index.d.ts +14 -0
  216. package/dist/src/core/intrinsicTypes.d.ts +102 -0
  217. package/dist/src/core/lightningInit.d.ts +7 -0
  218. package/dist/src/core/nodeTypes.d.ts +13 -0
  219. package/dist/src/core/root.d.ts +8 -0
  220. package/dist/src/core/shaders.d.ts +44 -0
  221. package/dist/src/core/states.d.ts +12 -0
  222. package/dist/src/core/svelteNode.d.ts +21 -0
  223. package/dist/src/core/utils.d.ts +41 -0
  224. package/dist/src/fonts.d.ts +3 -0
  225. package/dist/src/index.d.ts +7 -0
  226. package/dist/src/primitives/announcer/announcer.d.ts +14 -0
  227. package/dist/src/primitives/announcer/index.d.ts +4 -0
  228. package/dist/src/primitives/announcer/speech.d.ts +10 -0
  229. package/dist/src/primitives/createInfiniteItems.d.ts +8 -0
  230. package/dist/src/primitives/index.d.ts +28 -0
  231. package/dist/src/primitives/router/context.d.ts +8 -0
  232. package/dist/src/primitives/router/index.d.ts +8 -0
  233. package/dist/src/primitives/router/lazy.d.ts +6 -0
  234. package/dist/src/primitives/router/match.d.ts +5 -0
  235. package/dist/src/primitives/router/routeContext.d.ts +6 -0
  236. package/dist/src/primitives/router/types.d.ts +53 -0
  237. package/dist/src/primitives/types.d.ts +86 -0
  238. package/dist/src/primitives/useHold.d.ts +9 -0
  239. package/dist/src/primitives/utils/chainFunctions.d.ts +5 -0
  240. package/dist/src/primitives/utils/createBlurredImage.d.ts +10 -0
  241. package/dist/src/primitives/utils/createSpriteMap.d.ts +9 -0
  242. package/dist/src/primitives/utils/handleNavigation.d.ts +103 -0
  243. package/dist/src/primitives/utils/withScrolling.d.ts +23 -0
  244. package/dist/src/shaders/index.d.ts +1 -0
  245. package/dist/src/utils.d.ts +11 -0
  246. package/dist/src/vite/index.d.ts +18 -0
  247. package/dist/utils.d.ts +11 -0
  248. package/dist/utils.js +73 -0
  249. package/dist/vite/index.d.ts +18 -0
  250. package/dist/vite/index.js +149 -0
  251. 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,3 @@
1
+ export declare const isDev: boolean;
2
+ /** Whether element shaders are enabled */
3
+ export declare const SHADERS_ENABLED: boolean;
@@ -0,0 +1,2 @@
1
+ import { type ElementNode } from './elementNode.js';
2
+ export default function (node: ElementNode): boolean;
@@ -0,0 +1,2 @@
1
+ import { type ElementNode } from './elementNode.js';
2
+ export default function (node: ElementNode): boolean;
@@ -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';