@lightningtv/solid 3.0.0-25 → 3.0.0-27

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 (59) hide show
  1. package/dist/jsx-runtime.d.ts +14 -0
  2. package/dist/src/core/config.d.ts +2 -2
  3. package/dist/tsconfig.tsbuildinfo +1 -1
  4. package/package.json +6 -3
  5. package/src/core/config.ts +2 -2
  6. package/dist/src/client.d.ts +0 -1
  7. package/dist/src/client.js +0 -2
  8. package/dist/src/client.js.map +0 -1
  9. package/dist/src/core/dom-renderer/domRenderer.d.ts +0 -137
  10. package/dist/src/core/dom-renderer/domRenderer.js +0 -1545
  11. package/dist/src/core/dom-renderer/domRenderer.js.map +0 -1
  12. package/dist/src/core/dom-renderer/domRendererTypes.d.ts +0 -117
  13. package/dist/src/core/dom-renderer/domRendererTypes.js +0 -2
  14. package/dist/src/core/dom-renderer/domRendererTypes.js.map +0 -1
  15. package/dist/src/core/dom-renderer/domRendererUtils.d.ts +0 -16
  16. package/dist/src/core/dom-renderer/domRendererUtils.js +0 -132
  17. package/dist/src/core/dom-renderer/domRendererUtils.js.map +0 -1
  18. package/dist/src/core/timings.d.ts +0 -36
  19. package/dist/src/core/timings.js +0 -199
  20. package/dist/src/core/timings.js.map +0 -1
  21. package/dist/src/core.d.ts +0 -1
  22. package/dist/src/core.js +0 -3
  23. package/dist/src/core.js.map +0 -1
  24. package/dist/src/jsx-runtime.d.ts +0 -10
  25. package/dist/src/jsx-runtime.js +0 -2
  26. package/dist/src/jsx-runtime.js.map +0 -1
  27. package/dist/src/primitives/Infinite.d.ts +0 -15
  28. package/dist/src/primitives/Infinite.jsx +0 -59
  29. package/dist/src/primitives/Infinite.jsx.map +0 -1
  30. package/dist/src/primitives/LazyUp.d.ts +0 -11
  31. package/dist/src/primitives/LazyUp.jsx +0 -38
  32. package/dist/src/primitives/LazyUp.jsx.map +0 -1
  33. package/dist/src/primitives/VirtualList.d.ts +0 -11
  34. package/dist/src/primitives/VirtualList.jsx +0 -96
  35. package/dist/src/primitives/VirtualList.jsx.map +0 -1
  36. package/dist/src/primitives/VirtualRow.d.ts +0 -13
  37. package/dist/src/primitives/VirtualRow.jsx +0 -97
  38. package/dist/src/primitives/VirtualRow.jsx.map +0 -1
  39. package/dist/src/primitives/sprite.d.ts +0 -9
  40. package/dist/src/primitives/sprite.js +0 -18
  41. package/dist/src/primitives/sprite.js.map +0 -1
  42. package/dist/src/primitives/utils/createFocusStack.d.ts +0 -24
  43. package/dist/src/primitives/utils/createFocusStack.js +0 -59
  44. package/dist/src/primitives/utils/createFocusStack.js.map +0 -1
  45. package/dist/src/primitives/utils/scrollToIndex.d.ts +0 -2
  46. package/dist/src/primitives/utils/scrollToIndex.js +0 -33
  47. package/dist/src/primitives/utils/scrollToIndex.js.map +0 -1
  48. package/dist/src/renderClient.d.ts +0 -21
  49. package/dist/src/renderClient.js +0 -64
  50. package/dist/src/renderClient.js.map +0 -1
  51. package/dist/src/shaders/LinearGradient.d.ts +0 -3
  52. package/dist/src/shaders/LinearGradient.js +0 -108
  53. package/dist/src/shaders/LinearGradient.js.map +0 -1
  54. package/dist/src/shaders/templates/LinearGradientTemplate.d.ts +0 -9
  55. package/dist/src/shaders/templates/LinearGradientTemplate.js +0 -23
  56. package/dist/src/shaders/templates/LinearGradientTemplate.js.map +0 -1
  57. package/dist/src/universal.d.ts +0 -25
  58. package/dist/src/universal.js +0 -232
  59. package/dist/src/universal.js.map +0 -1
@@ -1 +0,0 @@
1
- export { getOwner, createComponent, createRoot as root, createRenderEffect as effect, createMemo as memo, sharedConfig, untrack, mergeProps } from "solid-js";
package/dist/src/core.js DELETED
@@ -1,3 +0,0 @@
1
- //@ts-nocheck
2
- export { getOwner, createComponent, createRoot as root, createRenderEffect as effect, createMemo as memo, sharedConfig, untrack, mergeProps } from "solid-js";
3
- //# sourceMappingURL=core.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EACL,QAAQ,EACR,eAAe,EACf,UAAU,IAAI,IAAI,EAClB,kBAAkB,IAAI,MAAM,EAC5B,UAAU,IAAI,IAAI,EAClB,YAAY,EACZ,OAAO,EACP,UAAU,EACX,MAAM,UAAU,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { NodeProps, TextProps } from '@lightningtv/core';
2
- declare module 'solid-js' {
3
- namespace JSX {
4
- interface IntrinsicElements {
5
- node: NodeProps;
6
- view: NodeProps;
7
- text: TextProps;
8
- }
9
- }
10
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=jsx-runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../../src/jsx-runtime.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- import { type JSX } from 'solid-js';
2
- import { type NodeProps } from '@lightningtv/solid';
3
- type InfiniteProps<T extends readonly any[]> = Omit<NodeProps, 'children'> & {
4
- each: T | undefined | null | false;
5
- fallback?: JSX.Element;
6
- upCount: number;
7
- delay?: number;
8
- sync?: boolean;
9
- eagerLoad?: boolean;
10
- selected?: number;
11
- children: (item: T[number], index: number) => JSX.Element;
12
- };
13
- export declare function InfiniteRow<T extends readonly any[]>(props: InfiniteProps<T>): JSX.Element;
14
- export declare function InfiniteColumn<T extends readonly any[]>(props: InfiniteProps<T>): JSX.Element;
15
- export {};
@@ -1,59 +0,0 @@
1
- import { createEffect, createMemo, createSignal, Show, untrack, } from 'solid-js';
2
- import { Dynamic, scheduleTask } from '@lightningtv/solid';
3
- import { Row, Column } from '@lightningtv/solid/primitives';
4
- import { List } from '@solid-primitives/list';
5
- function createInfinite(component, props) {
6
- // Need at least one item so it can be focused
7
- const [offset, setOffset] = createSignal(1);
8
- let timeoutId = null;
9
- createEffect(() => setOffset(props.selected || 1));
10
- if (props.sync) {
11
- setOffset(props.upCount);
12
- }
13
- else {
14
- createEffect(() => {
15
- if (props.each) {
16
- let count = untrack(offset);
17
- const loadItems = () => {
18
- if (count < props.upCount) {
19
- setOffset(count + 1);
20
- timeoutId = setTimeout(loadItems, 16); // ~60fps
21
- count++;
22
- }
23
- else if (props.eagerLoad) {
24
- const maxOffset = props.each ? props.each.length : 0;
25
- if (offset() > maxOffset)
26
- return;
27
- setOffset((prev) => Math.min(prev + 1, maxOffset));
28
- scheduleTask(loadItems);
29
- }
30
- };
31
- loadItems();
32
- }
33
- });
34
- }
35
- const items = createMemo(() => (Array.isArray(props.each) ? props.each.slice(0, offset()) : []));
36
- const updateOffset = () => {
37
- const maxOffset = props.each ? props.each.length : 0;
38
- if (offset() > maxOffset)
39
- return;
40
- if (timeoutId)
41
- clearTimeout(timeoutId);
42
- timeoutId = setTimeout(() => {
43
- setOffset((prev) => Math.min(prev + 1, maxOffset));
44
- timeoutId = null;
45
- }, props.delay ?? 0);
46
- };
47
- return (<Show when={items()} fallback={props.fallback}>
48
- <Dynamic component={component} {...props} display="block" onSelectedChanged={updateOffset}>
49
- <List each={items()} children={props.children}/>
50
- </Dynamic>
51
- </Show>);
52
- }
53
- export function InfiniteRow(props) {
54
- return createInfinite(Row, props);
55
- }
56
- export function InfiniteColumn(props) {
57
- return createInfinite(Column, props);
58
- }
59
- //# sourceMappingURL=Infinite.jsx.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Infinite.jsx","sourceRoot":"","sources":["../../../src/primitives/Infinite.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { type JSX, type ValidComponent } from 'solid-js';
2
- import { type ElementNode } from '@lightningtv/solid';
3
- export declare function LazyUp<T extends readonly any[], U extends JSX.Element>(props: T & ElementNode & {
4
- each: T | undefined | null | false;
5
- fallback?: JSX.Element;
6
- container?: JSX.Element;
7
- component?: ValidComponent;
8
- direction?: 'row' | 'column';
9
- upCount: number;
10
- children: (item: T[number], index: number) => U;
11
- }): JSX.Element;
@@ -1,38 +0,0 @@
1
- import { Index, createEffect, createMemo, createSignal, splitProps, Show, } from 'solid-js';
2
- import { Dynamic } from '@lightningtv/solid';
3
- export function LazyUp(props) {
4
- const [p, others] = splitProps(props, [
5
- 'component',
6
- 'each',
7
- 'fallback',
8
- 'children',
9
- ]);
10
- const [offset, setOffset] = createSignal(0);
11
- createEffect(() => {
12
- setOffset(props.selected || 0);
13
- });
14
- const items = createMemo(() => {
15
- if (p.each) {
16
- return p.each.slice(0, props.upCount + offset());
17
- }
18
- });
19
- console.log('LazyUp is deprecated. Please use LazyRow or LazyColumn instead.');
20
- const isRow = createMemo(() => {
21
- return (others.direction !== undefined && others.direction === 'row' ||
22
- others.style?.flexDirection === 'row' ||
23
- others.flexDirection === 'row');
24
- });
25
- const keyHandlers = createMemo(() => {
26
- const updateOffset = () => {
27
- setOffset((prev) => p.each && Math.min(prev + 1, p.each.length - props.upCount));
28
- };
29
- return isRow() ? { onRight: updateOffset } : { onDown: updateOffset };
30
- });
31
- return (<Show when={items()}>
32
- {/* @ts-ignore */}
33
- <Dynamic component={p.component} {...others} {...keyHandlers()}>
34
- <Index each={items()} fallback={p.fallback} children={p.children}/>
35
- </Dynamic>
36
- </Show>);
37
- }
38
- //# sourceMappingURL=LazyUp.jsx.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LazyUp.jsx","sourceRoot":"","sources":["../../../src/primitives/LazyUp.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,UAAU,EACV,IAAI,GAGL,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAoB,MAAM,oBAAoB,CAAC;AAE/D,MAAM,UAAU,MAAM,CACpB,KASG;IAEH,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE;QACpC,WAAW;QACX,MAAM;QACN,UAAU;QACV,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAE5C,YAAY,CAAC,GAAG,EAAE;QAChB,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;IAE/E,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,OAAO,CACL,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK;YAC5D,MAAM,CAAC,KAAK,EAAE,aAAa,KAAK,KAAK;YACrC,MAAM,CAAC,aAAa,KAAK,KAAK,CAC/B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;QAClC,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,SAAS,CACP,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CACtE,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAClB;MAAA,CAAC,gBAAgB,CACjB;MAAA,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAC7D;QAAA,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EACnE;MAAA,EAAE,OAAO,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
@@ -1,11 +0,0 @@
1
- import * as s from 'solid-js';
2
- import * as lng from '@lightningtv/solid';
3
- import * as lngp from '@lightningtv/solid/primitives';
4
- export type VirtualListProps<T> = lng.NewOmit<lngp.RowProps, 'children'> & {
5
- each: readonly T[] | undefined | null | false;
6
- displaySize: number;
7
- bufferSize?: number;
8
- fallback?: s.JSX.Element;
9
- children: (item: s.Accessor<T>, index: s.Accessor<number>) => s.JSX.Element;
10
- };
11
- export declare function VirtualList<T>(props: VirtualListProps<T>): s.JSX.Element;
@@ -1,96 +0,0 @@
1
- import * as s from 'solid-js';
2
- import * as lng from '@lightningtv/solid';
3
- import * as lngp from '@lightningtv/solid/primitives';
4
- import { List } from '@solid-primitives/list';
5
- import * as utils from '../utils.js';
6
- const rowOnLeft = lngp.handleNavigation('left');
7
- const rowOnRight = lngp.handleNavigation('right');
8
- const rowScroll = lngp.withScrolling(true);
9
- const rowStyles = {
10
- display: 'flex',
11
- gap: 30,
12
- transition: {
13
- x: {
14
- duration: 250,
15
- easing: 'ease-out',
16
- },
17
- },
18
- };
19
- function scrollToIndex(index) {
20
- this.selected = index;
21
- rowScroll(index, this);
22
- this.setFocus();
23
- }
24
- export function VirtualList(props) {
25
- const [cursor, setCursor] = s.createSignal(props.selected ?? 0);
26
- const bufferSize = () => props.bufferSize ?? 2;
27
- const items = s.createMemo(() => props.each || []);
28
- const start = () => utils.clamp(cursor() - bufferSize(), 0, Math.max(0, items().length - props.displaySize - bufferSize()));
29
- const end = () => Math.min(items().length, cursor() + props.displaySize + bufferSize());
30
- const [slice, setSlice] = s.createSignal(items().slice(start(), end()));
31
- s.createEffect(s.on([() => props.selected, items], ([selected]) => {
32
- if (!viewRef || !selected)
33
- return;
34
- const item = items()[selected];
35
- let active = viewRef.children.find(x => x.item === item);
36
- const lastSelected = viewRef.selected;
37
- if (active instanceof lng.ElementNode) {
38
- viewRef.selected = viewRef.children.indexOf(active);
39
- chainedOnSelectedChanged.call(viewRef, viewRef.selected, viewRef, active, lastSelected);
40
- }
41
- else {
42
- setCursor(selected);
43
- setSlice(items().slice(start(), end()));
44
- queueMicrotask(() => {
45
- viewRef.updateLayout();
46
- active = viewRef.children.find(x => x.item === item);
47
- if (active instanceof lng.ElementNode) {
48
- viewRef.selected = viewRef.children.indexOf(active);
49
- chainedOnSelectedChanged.call(viewRef, viewRef.selected, viewRef, active, lastSelected);
50
- }
51
- });
52
- }
53
- }));
54
- s.createEffect(s.on(items, () => {
55
- if (!viewRef)
56
- return;
57
- setSlice(items().slice(start(), end()));
58
- }, { defer: true }));
59
- const onSelectedChanged = function (_idx, elm, active, _lastIdx) {
60
- let idx = _idx;
61
- let lastIdx = _lastIdx;
62
- if (idx === lastIdx)
63
- return;
64
- const prevChildX = this.x + active.x;
65
- const prevStart = start();
66
- // Update the displayed slice of items
67
- setCursor(prevStart + idx);
68
- setSlice(items().slice(start(), end()));
69
- // this.selected is relative to the slice
70
- // and it doesn't get corrected automatically after children change
71
- const idxCorrection = prevStart - start();
72
- if (lastIdx)
73
- lastIdx += idxCorrection;
74
- idx += idxCorrection;
75
- this.selected += idxCorrection;
76
- // Microtask & this.updateLayout() to make sure the child position is recalculated
77
- queueMicrotask(() => {
78
- this.updateLayout();
79
- // Correct this.x for changes to children, bypass animation
80
- this.lng.x = prevChildX - active.x;
81
- // smoothly scroll to new selected element
82
- rowScroll(idx, elm, active, lastIdx);
83
- });
84
- };
85
- const chainedOnSelectedChanged = lngp.chainFunctions(props.onSelectedChanged, onSelectedChanged);
86
- let viewRef;
87
- return <>
88
- <view {...props} scroll='always' // only supporting always scroll at the moment
89
- ref={lngp.chainRefs(el => { viewRef = el; }, props.ref)} selected={props.selected || 0} cursor={cursor()} onLeft={/* @once */lngp.chainFunctions(props.onLeft, rowOnLeft)} onRight={/* @once */lngp.chainFunctions(props.onRight, rowOnRight)} forwardFocus={/* @once */lngp.navigableForwardFocus} scrollToIndex={scrollToIndex} onCreate={/* @once */props.selected ? lngp.chainFunctions(props.onCreate, rowScroll) : props.onCreate}
90
- /* lngp.NavigableElement.onSelectedChanged is used by lngp.handleNavigation */
91
- onSelectedChanged={chainedOnSelectedChanged} style={/* @once */lng.combineStyles(props.style, rowStyles)}>
92
- <List each={slice()}>{props.children}</List>
93
- </view>
94
- </>;
95
- }
96
- //# sourceMappingURL=VirtualList.jsx.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VirtualList.jsx","sourceRoot":"","sources":["../../../src/primitives/VirtualList.tsx"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import * as s from 'solid-js';
2
- import * as lng from '@lightningtv/solid';
3
- import * as lngp from '@lightningtv/solid/primitives';
4
- export type VirtualRowProps<T> = lng.NewOmit<lngp.RowProps, 'children'> & {
5
- each: readonly T[] | undefined | null | false;
6
- displaySize: number;
7
- bufferSize?: number;
8
- onEndReached?: () => void;
9
- onEndReachedThreshold?: number;
10
- fallback?: s.JSX.Element;
11
- children: (item: s.Accessor<T>, index: s.Accessor<number>) => s.JSX.Element;
12
- };
13
- export declare function VirtualRow<T>(props: VirtualRowProps<T>): s.JSX.Element;
@@ -1,97 +0,0 @@
1
- import * as s from 'solid-js';
2
- import * as lng from '@lightningtv/solid';
3
- import * as lngp from '@lightningtv/solid/primitives';
4
- import { List } from '@solid-primitives/list';
5
- import * as utils from '../utils.js';
6
- const rowOnLeft = lngp.handleNavigation('left');
7
- const rowOnRight = lngp.handleNavigation('right');
8
- const rowScroll = lngp.withScrolling(true);
9
- const rowStyles = {
10
- display: 'flex',
11
- gap: 30,
12
- transition: {
13
- x: {
14
- duration: 250,
15
- easing: 'ease-out',
16
- },
17
- },
18
- };
19
- function scrollToIndex(index) {
20
- this.selected = index;
21
- rowScroll(index, this);
22
- this.setFocus();
23
- }
24
- export function VirtualRow(props) {
25
- const [cursor, setCursor] = s.createSignal(props.selected ?? 0);
26
- const bufferSize = () => props.bufferSize ?? 2;
27
- const items = s.createMemo(() => props.each || []);
28
- const start = () => utils.clamp(cursor() - bufferSize(), 0, Math.max(0, items().length - props.displaySize - bufferSize()));
29
- const end = () => Math.min(items().length, cursor() + props.displaySize + bufferSize());
30
- const [slice, setSlice] = s.createSignal(items().slice(start(), end()));
31
- s.createEffect(s.on([() => props.selected, items], ([selected]) => {
32
- if (!viewRef || !selected)
33
- return;
34
- const item = items()[selected];
35
- let active = viewRef.children.find(x => x.item === item);
36
- const lastSelected = viewRef.selected;
37
- if (active instanceof lng.ElementNode) {
38
- viewRef.selected = viewRef.children.indexOf(active);
39
- chainedOnSelectedChanged.call(viewRef, viewRef.selected, viewRef, active, lastSelected);
40
- }
41
- else {
42
- setCursor(selected);
43
- setSlice(items().slice(start(), end()));
44
- queueMicrotask(() => {
45
- viewRef.updateLayout();
46
- active = viewRef.children.find(x => x.item === item);
47
- if (active instanceof lng.ElementNode) {
48
- viewRef.selected = viewRef.children.indexOf(active);
49
- chainedOnSelectedChanged.call(viewRef, viewRef.selected, viewRef, active, lastSelected);
50
- }
51
- });
52
- }
53
- }));
54
- s.createEffect(s.on(items, () => {
55
- if (!viewRef)
56
- return;
57
- setSlice(items().slice(start(), end()));
58
- }, { defer: true }));
59
- const onSelectedChanged = function (_idx, elm, active, _lastIdx) {
60
- let idx = _idx;
61
- let lastIdx = _lastIdx;
62
- if (idx === lastIdx)
63
- return;
64
- const prevChildX = this.x + active.x;
65
- const prevStart = start();
66
- // Update the displayed slice of items
67
- setCursor(prevStart + idx);
68
- setSlice(items().slice(start(), end()));
69
- // this.selected is relative to the slice
70
- // and it doesn't get corrected automatically after children change
71
- const idxCorrection = prevStart - start();
72
- if (lastIdx)
73
- lastIdx += idxCorrection;
74
- idx += idxCorrection;
75
- this.selected += idxCorrection;
76
- if (props.onEndReachedThreshold !== undefined && cursor() >= items().length - props.onEndReachedThreshold) {
77
- props.onEndReached?.();
78
- }
79
- // Microtask & this.updateLayout() to make sure the child position is recalculated
80
- queueMicrotask(() => {
81
- this.updateLayout();
82
- // Correct this.x for changes to children, bypass animation
83
- this.lng.x = prevChildX - active.x;
84
- // smoothly scroll to new selected element
85
- rowScroll(idx, elm, active, lastIdx);
86
- });
87
- };
88
- const chainedOnSelectedChanged = lngp.chainFunctions(props.onSelectedChanged, onSelectedChanged);
89
- let viewRef;
90
- return <view {...props} scroll='always' // only supporting always scroll at the moment
91
- ref={lngp.chainRefs(el => { viewRef = el; }, props.ref)} selected={props.selected || 0} cursor={cursor()} onLeft={/* @once */lngp.chainFunctions(props.onLeft, rowOnLeft)} onRight={/* @once */lngp.chainFunctions(props.onRight, rowOnRight)} forwardFocus={/* @once */lngp.navigableForwardFocus} scrollToIndex={scrollToIndex} onCreate={/* @once */props.selected ? lngp.chainFunctions(props.onCreate, rowScroll) : props.onCreate}
92
- /* lngp.NavigableElement.onSelectedChanged is used by lngp.handleNavigation */
93
- onSelectedChanged={chainedOnSelectedChanged} style={/* @once */lng.combineStyles(props.style, rowStyles)}>
94
- <List each={slice()}>{props.children}</List>
95
- </view>;
96
- }
97
- //# sourceMappingURL=VirtualRow.jsx.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VirtualRow.jsx","sourceRoot":"","sources":["../../../src/primitives/VirtualRow.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import { type TextureMap } from '@lightningtv/core';
2
- export interface SpriteDef {
3
- name: string;
4
- x: number;
5
- y: number;
6
- width: number;
7
- height: number;
8
- }
9
- export declare function createSpriteMap(src: string, subTextures: SpriteDef[]): Record<string, InstanceType<TextureMap['SubTexture']>>;
@@ -1,18 +0,0 @@
1
- import { renderer } from '@lightningtv/core';
2
- export function createSpriteMap(src, subTextures) {
3
- const spriteMapTexture = renderer.createTexture('ImageTexture', {
4
- src,
5
- });
6
- return subTextures.reduce((acc, t) => {
7
- const { x, y, width, height } = t;
8
- acc[t.name] = renderer.createTexture('SubTexture', {
9
- texture: spriteMapTexture,
10
- x,
11
- y,
12
- width,
13
- height,
14
- });
15
- return acc;
16
- }, {});
17
- }
18
- //# sourceMappingURL=sprite.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sprite.js","sourceRoot":"","sources":["../../../src/primitives/sprite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,mBAAmB,CAAC;AAU9D,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,WAAwB;IAExB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE;QAC9D,GAAG;KACJ,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC,MAAM,CAEvB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACX,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAClC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,EAAE;YACjD,OAAO,EAAE,gBAAgB;YACzB,CAAC;YACD,CAAC;YACD,KAAK;YACL,MAAM;SACP,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Focus Stack Utility
3
- *
4
- * This utility manages a stack of focused elements, allowing for easy restoration
5
- * of the previous focus state when navigating through a UI.
6
- *
7
- * Usage:
8
- * ```ts
9
- * const { storeFocus, restoreFocus } = useFocusStack();
10
- * storeFocus(element); // Store the currently focused element
11
- * const success = restoreFocus(); // Restore the last stored focus and return success status
12
- * ```
13
- *
14
- * Functions:
15
- * - `storeFocus(element: ElementNode, prevElement?: ElementNode)`: Stores the provided element in the focus stack.
16
- * - `restoreFocus()`: Restores focus to the last stored element and removes it from the stack. Returns `true` if successful, `false` otherwise.
17
- */
18
- import { JSX } from 'solid-js';
19
- interface FocusStackProviderProps {
20
- children: JSX.Element;
21
- }
22
- export declare function FocusStackProvider(props: FocusStackProviderProps): {};
23
- export declare function useFocusStack(): FocusStackContextType;
24
- export {};
@@ -1,59 +0,0 @@
1
- /**
2
- * Focus Stack Utility
3
- *
4
- * This utility manages a stack of focused elements, allowing for easy restoration
5
- * of the previous focus state when navigating through a UI.
6
- *
7
- * Usage:
8
- * ```ts
9
- * const { storeFocus, restoreFocus } = useFocusStack();
10
- * storeFocus(element); // Store the currently focused element
11
- * const success = restoreFocus(); // Restore the last stored focus and return success status
12
- * ```
13
- *
14
- * Functions:
15
- * - `storeFocus(element: ElementNode, prevElement?: ElementNode)`: Stores the provided element in the focus stack.
16
- * - `restoreFocus()`: Restores focus to the last stored element and removes it from the stack. Returns `true` if successful, `false` otherwise.
17
- */
18
- import { createSignal, createContext, useContext, untrack } from 'solid-js';
19
- import { activeElement } from '@lightningtv/solid';
20
- const FocusStackContext = createContext();
21
- export function FocusStackProvider(props) {
22
- const [_focusStack, setFocusStack] = createSignal([]);
23
- function storeFocus(element, prevElement) {
24
- if (element && untrack(activeElement) !== element) {
25
- setFocusStack((stack) => [...stack, element]);
26
- }
27
- else if (prevElement) {
28
- setFocusStack((stack) => [...stack, prevElement]);
29
- }
30
- }
31
- function restoreFocus() {
32
- let wasFocused = false;
33
- setFocusStack((stack) => {
34
- const prevElement = stack.pop();
35
- if (prevElement && typeof prevElement.setFocus === 'function') {
36
- prevElement.setFocus();
37
- wasFocused = true;
38
- }
39
- return [...stack];
40
- });
41
- return wasFocused;
42
- }
43
- return value = {};
44
- {
45
- storeFocus, restoreFocus;
46
- }
47
- }
48
- >
49
- { props, : .children }
50
- < /FocusStackContext.Provider>;
51
- ;
52
- export function useFocusStack() {
53
- const context = useContext(FocusStackContext);
54
- if (!context) {
55
- throw new Error("useFocusStack must be used within a FocusStackProvider");
56
- }
57
- return context;
58
- }
59
- //# sourceMappingURL=createFocusStack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createFocusStack.js","sourceRoot":"","sources":["../../../../src/primitives/utils/createFocusStack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAO,MAAM,UAAU,CAAC;AACjF,OAAO,EAAE,aAAa,EAAoB,MAAM,oBAAoB,CAAC;AAErE,MAAM,iBAAiB,GAAG,aAAa,EAGnC,CAAC;AAML,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,YAAY,CAAgB,EAAE,CAAC,CAAC;IAErE,SAAS,UAAU,CAAC,OAAoB,EAAE,WAAyB;QACjE,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,OAAO,EAAE,CAAC;YAClD,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,SAAS,YAAY;QACnB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE;YACtB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC9D,WAAW,CAAC,QAAQ,EAAE,CAAC;gBACvB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAC8B,KAAK,GAAC,EAAC,CAAA;IAAA,CAAC;QAAC,UAAU,EAAE,YAAY,CAAA;IAAC,CAAC;AAAA,CAAC;AAAA;IAC9D,EAAC,KAAK,EAAA,EAAA,CAAC,QAAQ,EAAC;MACjB,4BAA4B,CAAA;AAC9B,CAAC;AAGJ,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { ElementNode } from '@lightningtv/core';
2
- export declare function scrollToIndex(componentRef: ElementNode, selectedIndex: number): false | undefined;
@@ -1,33 +0,0 @@
1
- /*
2
- * Copyright 2024 Comcast Cable Communications Management, LLC
3
- * Licensed under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License.
5
- * You may obtain a copy of the License at
6
- *
7
- * http://www.apache.org/licenses/LICENSE-2.0
8
- *
9
- * Unless required by applicable law or agreed to in writing, software
10
- * distributed under the License is distributed on an "AS IS" BASIS,
11
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- * See the License for the specific language governing permissions and
13
- * limitations under the License.
14
- *
15
- * SPDX-License-Identifier: Apache-2.0
16
- */
17
- export function scrollToIndex(componentRef, selectedIndex) {
18
- if (!componentRef ||
19
- componentRef.selected === undefined ||
20
- componentRef.children.length === 0 ||
21
- componentRef.children.length <= selectedIndex ||
22
- componentRef.selected === selectedIndex) {
23
- return false;
24
- }
25
- componentRef.selected = selectedIndex;
26
- if (componentRef.flexDirection === 'row') {
27
- componentRef.x = -Number(componentRef.children[selectedIndex].x);
28
- }
29
- else if (componentRef.flexDirection === 'column') {
30
- componentRef.y = -Number(componentRef.children[selectedIndex].y);
31
- }
32
- }
33
- //# sourceMappingURL=scrollToIndex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scrollToIndex.js","sourceRoot":"","sources":["../../../../src/primitives/utils/scrollToIndex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,UAAU,aAAa,CAAC,YAAyB,EAAE,aAAqB;IAC5E,IACE,CAAC,YAAY;QACb,YAAY,CAAC,QAAQ,KAAK,SAAS;QACnC,YAAY,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAClC,YAAY,CAAC,QAAQ,CAAC,MAAM,IAAI,aAAa;QAC7C,YAAY,CAAC,QAAQ,KAAK,aAAa,EACvC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY,CAAC,QAAQ,GAAG,aAAa,CAAC;IAEtC,IAAI,YAAY,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QACzC,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,YAAY,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QACnD,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;AACH,CAAC"}
@@ -1,21 +0,0 @@
1
- export * from 'solid-js/web';
2
- import { type NodeProps, type TextProps, type RendererMain, type RendererMainSettings } from '@lightningtv/core';
3
- import { type JSXElement, type ValidComponent } from 'solid-js';
4
- export declare const rootNode: import("@lightningtv/core").ElementNode;
5
- export declare function createRenderer(rendererOptions?: RendererMainSettings, node?: HTMLElement | string): {
6
- renderer: RendererMain;
7
- rootNode: import("@lightningtv/core").ElementNode;
8
- render: (code: () => JSXElement) => () => void;
9
- };
10
- /**
11
- * renders an arbitrary custom or native component and passes the other props
12
- * ```typescript
13
- * <Dynamic component={multiline() ? 'textarea' : 'input'} value={value()} />
14
- * ```
15
- * @description https://www.solidjs.com/docs/latest/api#dynamic
16
- */
17
- export declare function Dynamic<T>(props: T & {
18
- component?: ValidComponent;
19
- }): JSXElement;
20
- export declare const View: (props: NodeProps) => JSXElement;
21
- export declare const Text: (props: TextProps) => JSXElement;