canvasengine 2.0.0-beta.42 → 2.0.0-beta.44
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/dist/{DebugRenderer-BosXI2Pd.js → DebugRenderer-P5sZ-0Tq.js} +2 -2
- package/dist/{DebugRenderer-BosXI2Pd.js.map → DebugRenderer-P5sZ-0Tq.js.map} +1 -1
- package/dist/components/Button.d.ts +3 -1
- package/dist/components/Button.d.ts.map +1 -1
- package/dist/components/Canvas.d.ts +0 -1
- package/dist/components/DOMElement.d.ts +0 -1
- package/dist/components/DOMElement.d.ts.map +1 -1
- package/dist/components/Graphic.d.ts +1 -2
- package/dist/components/Graphic.d.ts.map +1 -1
- package/dist/components/NineSliceSprite.d.ts +0 -1
- package/dist/components/ParticleEmitter.d.ts +0 -1
- package/dist/components/Text.d.ts +0 -1
- package/dist/components/TilingSprite.d.ts +0 -1
- package/dist/components/Video.d.ts +0 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/types/DisplayObject.d.ts +12 -16
- package/dist/components/types/DisplayObject.d.ts.map +1 -1
- package/dist/components/types/index.d.ts +0 -1
- package/dist/directives/Controls.d.ts +0 -1
- package/dist/directives/Drag.d.ts +0 -1
- package/dist/directives/Flash.d.ts +0 -1
- package/dist/directives/FocusNavigation.d.ts +70 -0
- package/dist/directives/FocusNavigation.d.ts.map +1 -0
- package/dist/directives/GamepadControls.d.ts +0 -1
- package/dist/directives/JoystickControls.d.ts +0 -1
- package/dist/directives/KeyboardControls.d.ts +0 -1
- package/dist/directives/KeyboardControls.d.ts.map +1 -1
- package/dist/directives/Scheduler.d.ts +0 -1
- package/dist/directives/Shake.d.ts +0 -1
- package/dist/directives/Sound.d.ts +0 -1
- package/dist/directives/Transition.d.ts +0 -1
- package/dist/directives/ViewportCull.d.ts +0 -1
- package/dist/directives/ViewportFollow.d.ts +0 -1
- package/dist/directives/ViewportFollow.d.ts.map +1 -1
- package/dist/engine/FocusManager.d.ts +173 -0
- package/dist/engine/FocusManager.d.ts.map +1 -0
- package/dist/engine/animation.d.ts +0 -1
- package/dist/engine/bootstrap.d.ts +0 -1
- package/dist/engine/directive.d.ts +0 -1
- package/dist/engine/reactive.d.ts +0 -1
- package/dist/engine/reactive.d.ts.map +1 -1
- package/dist/engine/signal.d.ts +0 -1
- package/dist/engine/utils.d.ts +0 -1
- package/dist/hooks/useFocus.d.ts +60 -0
- package/dist/hooks/useFocus.d.ts.map +1 -0
- package/dist/hooks/useRef.d.ts +0 -1
- package/dist/{index-DNwqVzaq.js → index-VPoz4ufu.js} +6792 -6117
- package/dist/index-VPoz4ufu.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.global.js +4 -28
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +67 -61
- package/dist/utils/RadialGradient.d.ts +0 -1
- package/package.json +4 -4
- package/src/components/Button.ts +7 -4
- package/src/components/Canvas.ts +1 -1
- package/src/components/DOMContainer.ts +27 -2
- package/src/components/DOMElement.ts +37 -29
- package/src/components/DisplayObject.ts +15 -3
- package/src/components/FocusContainer.ts +372 -0
- package/src/components/Graphic.ts +43 -48
- package/src/components/Sprite.ts +4 -2
- package/src/components/Viewport.ts +65 -26
- package/src/components/index.ts +2 -1
- package/src/components/types/DisplayObject.ts +7 -4
- package/src/directives/Controls.ts +1 -1
- package/src/directives/ControlsBase.ts +1 -1
- package/src/directives/FocusNavigation.ts +251 -0
- package/src/directives/KeyboardControls.ts +12 -8
- package/src/directives/ViewportFollow.ts +8 -5
- package/src/engine/FocusManager.ts +495 -0
- package/src/engine/reactive.ts +20 -19
- package/src/hooks/useFocus.ts +94 -0
- package/src/index.ts +2 -0
- package/dist/index-DNwqVzaq.js.map +0 -1
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { Signal } from '@signe/reactive';
|
|
2
|
+
import { Element } from './reactive';
|
|
3
|
+
import { CanvasViewport } from '../components/Viewport';
|
|
4
|
+
import { SignalOrPrimitive } from '../components/types';
|
|
5
|
+
/**
|
|
6
|
+
* Options for scroll behavior when navigating to focused elements
|
|
7
|
+
*
|
|
8
|
+
* @property padding - Padding around the element in pixels (default: 0)
|
|
9
|
+
* @property smooth - Enable smooth scrolling animation (default: false)
|
|
10
|
+
* @property center - Center the element in the viewport (default: true)
|
|
11
|
+
* @property duration - Animation duration in ms if smooth=true (default: 300)
|
|
12
|
+
*/
|
|
13
|
+
export interface ScrollOptions {
|
|
14
|
+
padding?: number;
|
|
15
|
+
smooth?: boolean;
|
|
16
|
+
center?: boolean;
|
|
17
|
+
duration?: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Data structure for a focus container
|
|
21
|
+
*/
|
|
22
|
+
interface FocusContainerData {
|
|
23
|
+
id: string;
|
|
24
|
+
element?: Element;
|
|
25
|
+
focusables: Map<number, Element>;
|
|
26
|
+
currentIndex: Signal<number | null>;
|
|
27
|
+
focusedElement: Signal<Element | null>;
|
|
28
|
+
onFocusChange?: (index: number, element: Element | null) => void;
|
|
29
|
+
autoScroll?: boolean | ScrollOptions;
|
|
30
|
+
viewport?: CanvasViewport;
|
|
31
|
+
throttle?: number;
|
|
32
|
+
lastNavigateTime?: number;
|
|
33
|
+
tabindex?: SignalOrPrimitive<number>;
|
|
34
|
+
tabindexSubscription?: any;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Central manager for focus navigation system
|
|
38
|
+
*
|
|
39
|
+
* Manages focusable elements within containers, handles navigation,
|
|
40
|
+
* and provides scroll integration with Viewport.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const manager = FocusManager.getInstance();
|
|
45
|
+
* manager.registerContainer('menu', containerData);
|
|
46
|
+
* manager.navigate('menu', 'next');
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare class FocusManager {
|
|
50
|
+
private static instance;
|
|
51
|
+
private containers;
|
|
52
|
+
private scrollAnimations;
|
|
53
|
+
/**
|
|
54
|
+
* Get the singleton instance of FocusManager
|
|
55
|
+
*
|
|
56
|
+
* @returns The FocusManager instance
|
|
57
|
+
*/
|
|
58
|
+
static getInstance(): FocusManager;
|
|
59
|
+
/**
|
|
60
|
+
* Register a focus container
|
|
61
|
+
*
|
|
62
|
+
* @param id - Unique identifier for the container
|
|
63
|
+
* @param data - Container data including signals and callbacks
|
|
64
|
+
*/
|
|
65
|
+
registerContainer(id: string, data: Omit<FocusContainerData, 'id'>): void;
|
|
66
|
+
/**
|
|
67
|
+
* Update a focus container's data
|
|
68
|
+
*
|
|
69
|
+
* @param id - Container identifier
|
|
70
|
+
* @param data - Partial container data to update
|
|
71
|
+
*/
|
|
72
|
+
updateContainer(id: string, data: Partial<Omit<FocusContainerData, 'id'>>): void;
|
|
73
|
+
setTabindex(id: string, tabindex: SignalOrPrimitive<number>): void;
|
|
74
|
+
/**
|
|
75
|
+
* Unregister a focus container
|
|
76
|
+
*
|
|
77
|
+
* @param id - Container identifier to remove
|
|
78
|
+
*/
|
|
79
|
+
unregisterContainer(id: string): void;
|
|
80
|
+
/**
|
|
81
|
+
* Register a focusable element in a container
|
|
82
|
+
*
|
|
83
|
+
* @param containerId - Container identifier
|
|
84
|
+
* @param element - Element to register
|
|
85
|
+
* @param index - Focus index for this element
|
|
86
|
+
*/
|
|
87
|
+
registerFocusable(containerId: string, element: Element, index: number): void;
|
|
88
|
+
/**
|
|
89
|
+
* Unregister a focusable element from a container
|
|
90
|
+
*
|
|
91
|
+
* @param containerId - Container identifier
|
|
92
|
+
* @param index - Focus index to remove
|
|
93
|
+
*/
|
|
94
|
+
unregisterFocusable(containerId: string, index: number): void;
|
|
95
|
+
/**
|
|
96
|
+
* Navigate to next or previous focusable element
|
|
97
|
+
*
|
|
98
|
+
* @param containerId - Container identifier
|
|
99
|
+
* @param direction - Navigation direction ('next' or 'previous')
|
|
100
|
+
*/
|
|
101
|
+
navigate(containerId: string, direction: 'next' | 'previous'): void;
|
|
102
|
+
/**
|
|
103
|
+
* Set the focus index for a container
|
|
104
|
+
*
|
|
105
|
+
* @param containerId - Container identifier
|
|
106
|
+
* @param index - Focus index to set
|
|
107
|
+
*/
|
|
108
|
+
setIndex(containerId: string, index: number): void;
|
|
109
|
+
/**
|
|
110
|
+
* Get the element at a specific index
|
|
111
|
+
*
|
|
112
|
+
* @param containerId - Container identifier
|
|
113
|
+
* @param index - Focus index
|
|
114
|
+
* @returns Element at index or null
|
|
115
|
+
*/
|
|
116
|
+
getElement(containerId: string, index: number): Element | null;
|
|
117
|
+
/**
|
|
118
|
+
* Get current focus index for a container
|
|
119
|
+
*
|
|
120
|
+
* @param containerId - Container identifier
|
|
121
|
+
* @returns Current index signal
|
|
122
|
+
*/
|
|
123
|
+
getCurrentIndexSignal(containerId: string): Signal<number | null> | null;
|
|
124
|
+
/**
|
|
125
|
+
* Get current focused element signal for a container
|
|
126
|
+
*
|
|
127
|
+
* @param containerId - Container identifier
|
|
128
|
+
* @returns Current element signal
|
|
129
|
+
*/
|
|
130
|
+
getFocusedElementSignal(containerId: string): Signal<Element | null> | null;
|
|
131
|
+
/**
|
|
132
|
+
* Check if an element is visible in the viewport
|
|
133
|
+
*
|
|
134
|
+
* @param element - Element to check
|
|
135
|
+
* @param viewport - Viewport to check against (optional)
|
|
136
|
+
* @returns True if element is visible
|
|
137
|
+
*/
|
|
138
|
+
isElementVisible(element: Element, viewport?: CanvasViewport): boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Get global bounds of an element
|
|
141
|
+
*
|
|
142
|
+
* @param element - Element to get bounds for
|
|
143
|
+
* @returns Bounds object with x, y, width, height
|
|
144
|
+
*/
|
|
145
|
+
getElementBounds(element: Element): {
|
|
146
|
+
x: number;
|
|
147
|
+
y: number;
|
|
148
|
+
width: number;
|
|
149
|
+
height: number;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Scroll viewport to show an element
|
|
153
|
+
*
|
|
154
|
+
* @param containerId - Container identifier
|
|
155
|
+
* @param index - Focus index of element to scroll to
|
|
156
|
+
* @param viewport - Viewport instance (optional, uses container's viewport if not provided)
|
|
157
|
+
* @param options - Scroll options
|
|
158
|
+
*/
|
|
159
|
+
scrollToElement(containerId: string, index: number, viewport?: CanvasViewport, options?: ScrollOptions): void;
|
|
160
|
+
/**
|
|
161
|
+
* Animate smooth scrolling
|
|
162
|
+
*
|
|
163
|
+
* @param containerId - Container identifier
|
|
164
|
+
* @param viewport - Viewport instance
|
|
165
|
+
* @param targetX - Target X position
|
|
166
|
+
* @param targetY - Target Y position
|
|
167
|
+
* @param duration - Animation duration in ms
|
|
168
|
+
*/
|
|
169
|
+
private animateScroll;
|
|
170
|
+
}
|
|
171
|
+
export declare const focusManager: FocusManager;
|
|
172
|
+
export {};
|
|
173
|
+
//# sourceMappingURL=FocusManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FocusManager.d.ts","sourceRoot":"","sources":["../../src/engine/FocusManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactive.d.ts","sourceRoot":"","sources":["../../src/engine/reactive.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,MAAM,EAAqF,MAAM,iBAAiB,CAAC;AAEvJ,OAAO,EACL,UAAU,EACV,OAAO,EACP,YAAY,
|
|
1
|
+
{"version":3,"file":"reactive.d.ts","sourceRoot":"","sources":["../../src/engine/reactive.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/signal.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Subscription } from 'rxjs';
|
|
2
2
|
import { Element } from './reactive';
|
|
3
3
|
import { Tick } from '../directives/Scheduler';
|
|
4
|
-
|
|
5
4
|
type MountFunction = (fn: (element: Element) => void) => void;
|
|
6
5
|
export type ComponentFunction<P = {}> = (props: P) => Element | Promise<Element>;
|
|
7
6
|
export declare let currentSubscriptionsTracker: ((subscription: Subscription) => void) | null;
|
package/dist/engine/utils.d.ts
CHANGED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Signal } from '@signe/reactive';
|
|
2
|
+
import { Element } from '../engine/reactive';
|
|
3
|
+
/**
|
|
4
|
+
* Get the current focus index signal for a container
|
|
5
|
+
*
|
|
6
|
+
* Returns a reactive signal that updates when the focus index changes.
|
|
7
|
+
*
|
|
8
|
+
* @param containerId - Container identifier
|
|
9
|
+
* @returns Signal for current focus index, or null if container not found
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const focusIndex = useFocusIndex('myContainer');
|
|
14
|
+
* effect(() => {
|
|
15
|
+
* console.log('Current focus index:', focusIndex?.());
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function useFocusIndex(containerId: string): Signal<number | null> | null;
|
|
20
|
+
/**
|
|
21
|
+
* Get the current focused element signal for a container
|
|
22
|
+
*
|
|
23
|
+
* Returns a reactive signal that updates when the focused element changes.
|
|
24
|
+
*
|
|
25
|
+
* @param containerId - Container identifier
|
|
26
|
+
* @returns Signal for current focused element, or null if container not found
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const focusedElement = useFocusedElement('myContainer');
|
|
31
|
+
* effect(() => {
|
|
32
|
+
* const element = focusedElement?.();
|
|
33
|
+
* if (element) {
|
|
34
|
+
* console.log('Focused element:', element);
|
|
35
|
+
* }
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function useFocusedElement(containerId: string): Signal<Element | null> | null;
|
|
40
|
+
/**
|
|
41
|
+
* Hook to react to focus changes
|
|
42
|
+
*
|
|
43
|
+
* Sets up a reactive effect that calls the callback whenever the focus changes.
|
|
44
|
+
*
|
|
45
|
+
* @param containerId - Container identifier
|
|
46
|
+
* @param callback - Function to call when focus changes
|
|
47
|
+
* @returns Cleanup function to unsubscribe
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* useFocusChange('myContainer', (index, element) => {
|
|
52
|
+
* console.log('Focus changed to index', index);
|
|
53
|
+
* if (element) {
|
|
54
|
+
* console.log('Focused element:', element);
|
|
55
|
+
* }
|
|
56
|
+
* });
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare function useFocusChange(containerId: string, callback: (index: number | null, element: Element | null) => void): () => void;
|
|
60
|
+
//# sourceMappingURL=useFocus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFocus.d.ts","sourceRoot":"","sources":["../../src/hooks/useFocus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAE/E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAEpF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,GAChE,MAAM,IAAI,CAsBZ"}
|
package/dist/hooks/useRef.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Element } from '../engine/reactive';
|
|
2
2
|
import { ComponentInstance } from '../components/DisplayObject';
|
|
3
|
-
|
|
4
3
|
export declare function useRef(element: Element<ComponentInstance>, ref: string): Element<ComponentInstance> | null;
|
|
5
4
|
//# sourceMappingURL=useRef.d.ts.map
|