canvasengine 2.0.0-beta.6 → 2.0.0-beta.61

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 (164) hide show
  1. package/dist/DebugRenderer-DkjTAc48.js +1384 -0
  2. package/dist/DebugRenderer-DkjTAc48.js.map +1 -0
  3. package/dist/components/Button.d.ts +185 -0
  4. package/dist/components/Button.d.ts.map +1 -0
  5. package/dist/components/Canvas.d.ts +17 -0
  6. package/dist/components/Canvas.d.ts.map +1 -0
  7. package/dist/components/DOMElement.d.ts +54 -0
  8. package/dist/components/DOMElement.d.ts.map +1 -0
  9. package/dist/components/DOMSprite.d.ts +127 -0
  10. package/dist/components/DOMSprite.d.ts.map +1 -0
  11. package/dist/components/FocusContainer.d.ts +129 -0
  12. package/dist/components/FocusContainer.d.ts.map +1 -0
  13. package/dist/components/Graphic.d.ts +64 -0
  14. package/dist/components/Graphic.d.ts.map +1 -0
  15. package/dist/components/Joystick.d.ts +36 -0
  16. package/dist/components/Joystick.d.ts.map +1 -0
  17. package/dist/components/NineSliceSprite.d.ts +16 -0
  18. package/dist/components/NineSliceSprite.d.ts.map +1 -0
  19. package/dist/components/ParticleEmitter.d.ts +4 -0
  20. package/dist/components/ParticleEmitter.d.ts.map +1 -0
  21. package/dist/components/Scene.d.ts +2 -0
  22. package/dist/components/Scene.d.ts.map +1 -0
  23. package/dist/components/Text.d.ts +24 -0
  24. package/dist/components/Text.d.ts.map +1 -0
  25. package/dist/components/TilingSprite.d.ts +17 -0
  26. package/dist/components/TilingSprite.d.ts.map +1 -0
  27. package/dist/components/Video.d.ts +14 -0
  28. package/dist/components/Video.d.ts.map +1 -0
  29. package/dist/components/index.d.ts +20 -0
  30. package/dist/components/index.d.ts.map +1 -0
  31. package/dist/components/types/DisplayObject.d.ts +118 -0
  32. package/dist/components/types/DisplayObject.d.ts.map +1 -0
  33. package/dist/components/types/MouseEvent.d.ts +4 -0
  34. package/dist/components/types/MouseEvent.d.ts.map +1 -0
  35. package/dist/components/types/Spritesheet.d.ts +248 -0
  36. package/dist/components/types/Spritesheet.d.ts.map +1 -0
  37. package/dist/components/types/index.d.ts +4 -0
  38. package/dist/components/types/index.d.ts.map +1 -0
  39. package/dist/directives/Controls.d.ts +112 -0
  40. package/dist/directives/Controls.d.ts.map +1 -0
  41. package/dist/directives/ControlsBase.d.ts +199 -0
  42. package/dist/directives/ControlsBase.d.ts.map +1 -0
  43. package/dist/directives/Drag.d.ts +69 -0
  44. package/dist/directives/Drag.d.ts.map +1 -0
  45. package/dist/directives/Flash.d.ts +116 -0
  46. package/dist/directives/Flash.d.ts.map +1 -0
  47. package/dist/directives/FocusNavigation.d.ts +52 -0
  48. package/dist/directives/FocusNavigation.d.ts.map +1 -0
  49. package/dist/directives/FogVisibility.d.ts +47 -0
  50. package/dist/directives/FogVisibility.d.ts.map +1 -0
  51. package/dist/directives/GamepadControls.d.ts +224 -0
  52. package/dist/directives/GamepadControls.d.ts.map +1 -0
  53. package/dist/directives/JoystickControls.d.ts +171 -0
  54. package/dist/directives/JoystickControls.d.ts.map +1 -0
  55. package/dist/directives/KeyboardControls.d.ts +219 -0
  56. package/dist/directives/KeyboardControls.d.ts.map +1 -0
  57. package/dist/directives/Scheduler.d.ts +36 -0
  58. package/dist/directives/Scheduler.d.ts.map +1 -0
  59. package/dist/directives/Shake.d.ts +98 -0
  60. package/dist/directives/Shake.d.ts.map +1 -0
  61. package/dist/directives/Sound.d.ts +25 -0
  62. package/dist/directives/Sound.d.ts.map +1 -0
  63. package/dist/directives/Transition.d.ts +10 -0
  64. package/dist/directives/Transition.d.ts.map +1 -0
  65. package/dist/directives/ViewportCull.d.ts +11 -0
  66. package/dist/directives/ViewportCull.d.ts.map +1 -0
  67. package/dist/directives/ViewportFollow.d.ts +18 -0
  68. package/dist/directives/ViewportFollow.d.ts.map +1 -0
  69. package/dist/directives/index.d.ts +14 -0
  70. package/dist/directives/index.d.ts.map +1 -0
  71. package/dist/dist-BOOc43Qm.js +778 -0
  72. package/dist/dist-BOOc43Qm.js.map +1 -0
  73. package/dist/engine/FocusManager.d.ts +174 -0
  74. package/dist/engine/FocusManager.d.ts.map +1 -0
  75. package/dist/engine/animation.d.ts +72 -0
  76. package/dist/engine/animation.d.ts.map +1 -0
  77. package/dist/engine/bootstrap.d.ts +52 -0
  78. package/dist/engine/bootstrap.d.ts.map +1 -0
  79. package/dist/engine/directive.d.ts +13 -0
  80. package/dist/engine/directive.d.ts.map +1 -0
  81. package/dist/engine/reactive.d.ts +135 -0
  82. package/dist/engine/reactive.d.ts.map +1 -0
  83. package/dist/engine/signal.d.ts +73 -0
  84. package/dist/engine/signal.d.ts.map +1 -0
  85. package/dist/engine/trigger.d.ts +54 -0
  86. package/dist/engine/trigger.d.ts.map +1 -0
  87. package/dist/engine/utils.d.ts +89 -0
  88. package/dist/engine/utils.d.ts.map +1 -0
  89. package/dist/hooks/addContext.d.ts +2 -0
  90. package/dist/hooks/addContext.d.ts.map +1 -0
  91. package/dist/hooks/useFocus.d.ts +60 -0
  92. package/dist/hooks/useFocus.d.ts.map +1 -0
  93. package/dist/hooks/useProps.d.ts +42 -0
  94. package/dist/hooks/useProps.d.ts.map +1 -0
  95. package/dist/hooks/useRef.d.ts +4 -0
  96. package/dist/hooks/useRef.d.ts.map +1 -0
  97. package/dist/index.d.ts +19 -1107
  98. package/dist/index.d.ts.map +1 -0
  99. package/dist/index.global.js +8 -0
  100. package/dist/index.global.js.map +1 -0
  101. package/dist/index.js +14708 -3135
  102. package/dist/index.js.map +1 -1
  103. package/dist/utils/Ease.d.ts +17 -0
  104. package/dist/utils/Ease.d.ts.map +1 -0
  105. package/dist/utils/GlobalAssetLoader.d.ts +141 -0
  106. package/dist/utils/GlobalAssetLoader.d.ts.map +1 -0
  107. package/dist/utils/RadialGradient.d.ts +57 -0
  108. package/dist/utils/RadialGradient.d.ts.map +1 -0
  109. package/dist/utils/functions.d.ts +2 -0
  110. package/dist/utils/functions.d.ts.map +1 -0
  111. package/dist/utils/tabindex.d.ts +16 -0
  112. package/dist/utils/tabindex.d.ts.map +1 -0
  113. package/package.json +16 -9
  114. package/src/components/Button.ts +399 -0
  115. package/src/components/Canvas.ts +82 -51
  116. package/src/components/Container.ts +21 -2
  117. package/src/components/DOMContainer.ts +379 -0
  118. package/src/components/DOMElement.ts +556 -0
  119. package/src/components/DOMSprite.ts +1040 -0
  120. package/src/components/DisplayObject.ts +422 -201
  121. package/src/components/FocusContainer.ts +368 -0
  122. package/src/components/Graphic.ts +239 -73
  123. package/src/components/Joystick.ts +363 -0
  124. package/src/components/Mesh.ts +222 -0
  125. package/src/components/NineSliceSprite.ts +4 -1
  126. package/src/components/ParticleEmitter.ts +12 -8
  127. package/src/components/Sprite.ts +418 -52
  128. package/src/components/Text.ts +270 -26
  129. package/src/components/Viewport.ts +122 -63
  130. package/src/components/index.ts +9 -2
  131. package/src/components/types/DisplayObject.ts +53 -5
  132. package/src/components/types/Spritesheet.ts +0 -118
  133. package/src/directives/Controls.ts +254 -0
  134. package/src/directives/ControlsBase.ts +267 -0
  135. package/src/directives/Drag.ts +357 -52
  136. package/src/directives/Flash.ts +419 -0
  137. package/src/directives/FocusNavigation.ts +113 -0
  138. package/src/directives/FogVisibility.ts +273 -0
  139. package/src/directives/GamepadControls.ts +537 -0
  140. package/src/directives/JoystickControls.ts +396 -0
  141. package/src/directives/KeyboardControls.ts +85 -430
  142. package/src/directives/Scheduler.ts +21 -5
  143. package/src/directives/Shake.ts +298 -0
  144. package/src/directives/Sound.ts +94 -31
  145. package/src/directives/ViewportFollow.ts +40 -9
  146. package/src/directives/index.ts +13 -6
  147. package/src/engine/FocusManager.ts +510 -0
  148. package/src/engine/animation.ts +175 -21
  149. package/src/engine/bootstrap.ts +140 -6
  150. package/src/engine/directive.ts +4 -4
  151. package/src/engine/reactive.ts +980 -177
  152. package/src/engine/signal.ts +241 -47
  153. package/src/engine/trigger.ts +34 -7
  154. package/src/engine/utils.ts +19 -3
  155. package/src/hooks/useFocus.ts +91 -0
  156. package/src/hooks/useProps.ts +1 -1
  157. package/src/index.ts +8 -2
  158. package/src/types/pixi-cull.d.ts +7 -0
  159. package/src/utils/GlobalAssetLoader.ts +257 -0
  160. package/src/utils/functions.ts +7 -0
  161. package/src/utils/tabindex.ts +70 -0
  162. package/testing/index.ts +35 -4
  163. package/tsconfig.json +18 -0
  164. package/vite.config.ts +39 -0
@@ -0,0 +1,199 @@
1
+ export interface ControlOptions {
2
+ repeat?: boolean;
3
+ bind: string | string[];
4
+ keyUp?: Function;
5
+ keyDown?: Function;
6
+ throttle?: number;
7
+ delay?: number | {
8
+ duration: number;
9
+ otherControls?: (string)[];
10
+ };
11
+ }
12
+ export interface Controls {
13
+ [controlName: string]: ControlOptions;
14
+ }
15
+ export type BoundKey = {
16
+ actionName: string;
17
+ options: ControlOptions;
18
+ parameters?: any;
19
+ };
20
+ /**
21
+ * Abstract base class for control systems (keyboard, gamepad, etc.)
22
+ *
23
+ * This class provides common functionality shared across all control implementations:
24
+ * - Input binding and management
25
+ * - Control configuration
26
+ * - Input state management
27
+ * - Common methods for querying and triggering controls
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * class MyControls extends ControlsBase {
32
+ * protected setupListeners() {
33
+ * // Setup specific input listeners
34
+ * }
35
+ *
36
+ * protected cleanup() {
37
+ * // Cleanup specific resources
38
+ * }
39
+ *
40
+ * protected preStep() {
41
+ * // Process inputs each frame
42
+ * }
43
+ * }
44
+ * ```
45
+ */
46
+ export declare abstract class ControlsBase {
47
+ protected boundKeys: {
48
+ [keyName: string]: BoundKey;
49
+ };
50
+ protected stop: boolean;
51
+ protected _controlsOptions: Controls;
52
+ protected interval: any;
53
+ protected serverFps: number;
54
+ /**
55
+ * Setup input listeners specific to this control implementation
56
+ * Must be implemented by subclasses
57
+ */
58
+ protected abstract setupListeners(): void;
59
+ /**
60
+ * Cleanup resources specific to this control implementation
61
+ * Must be implemented by subclasses
62
+ */
63
+ protected abstract cleanup(): void;
64
+ /**
65
+ * Process inputs each step/frame
66
+ * Must be implemented by subclasses
67
+ */
68
+ protected abstract preStep(): void;
69
+ /**
70
+ * Start the control processing loop
71
+ * Initializes listeners and starts the interval
72
+ */
73
+ start(): void;
74
+ /**
75
+ * Stop the control processing and cleanup resources
76
+ */
77
+ destroy(): void;
78
+ /**
79
+ * Bind a key/input to a control action
80
+ *
81
+ * @param keys - Single key or array of keys to bind
82
+ * @param actionName - Name of the control action
83
+ * @param options - Control options (repeat, keyDown, keyUp, etc.)
84
+ * @param parameters - Optional parameters to pass to the control callbacks
85
+ */
86
+ protected bindKey(keys: string | string[], actionName: string, options: ControlOptions, parameters?: object): void;
87
+ /**
88
+ * Apply an input action for a bound key
89
+ * Can be overridden by subclasses for custom behavior
90
+ *
91
+ * @param keyName - Name of the key/input to process
92
+ */
93
+ protected applyInput(keyName: string): void;
94
+ /**
95
+ * Get a control by input name
96
+ *
97
+ * @param inputName - Name of the input/key
98
+ * @returns BoundKey if found, undefined otherwise
99
+ * @example
100
+ * ```ts
101
+ * const control = controls.getControl('up');
102
+ * if (control) {
103
+ * console.log(control.actionName); // 'up'
104
+ * }
105
+ * ```
106
+ */
107
+ getControl(inputName: string): BoundKey | undefined;
108
+ /**
109
+ * Get all bound controls
110
+ *
111
+ * @returns Object mapping input names to BoundKey objects
112
+ * @example
113
+ * ```ts
114
+ * const allControls = controls.getControls();
115
+ * console.log(Object.keys(allControls)); // ['up', 'down', 'left', 'right', ...]
116
+ * ```
117
+ */
118
+ getControls(): {
119
+ [key: string]: BoundKey;
120
+ };
121
+ /**
122
+ * Apply a control action programmatically
123
+ *
124
+ * Must be implemented by subclasses to provide input-specific behavior
125
+ *
126
+ * @param controlName - Name or identifier of the control
127
+ * @param isDown - Whether the control is pressed down (true) or released (false)
128
+ * @returns Promise that resolves when the control action is complete
129
+ * @example
130
+ * ```ts
131
+ * // Press a control
132
+ * await controls.applyControl('action', true);
133
+ *
134
+ * // Release a control
135
+ * await controls.applyControl('action', false);
136
+ *
137
+ * // Press and release (default)
138
+ * await controls.applyControl('action');
139
+ * ```
140
+ */
141
+ abstract applyControl(controlName: string | number, isDown?: boolean): Promise<void>;
142
+ /**
143
+ * Stop listening to inputs
144
+ * Input events will be ignored until listenInputs() is called
145
+ *
146
+ * @example
147
+ * ```ts
148
+ * controls.stopInputs();
149
+ * // ... later
150
+ * controls.listenInputs();
151
+ * ```
152
+ */
153
+ stopInputs(): void;
154
+ /**
155
+ * Resume listening to inputs after stopInputs() was called
156
+ *
157
+ * @example
158
+ * ```ts
159
+ * controls.stopInputs();
160
+ * // ... later
161
+ * controls.listenInputs();
162
+ * ```
163
+ */
164
+ listenInputs(): void;
165
+ /**
166
+ * Configure controls with input mappings
167
+ *
168
+ * This method sets up the binding between input keys/buttons and control actions.
169
+ * It clears existing bindings and creates new ones based on the provided configuration.
170
+ *
171
+ * @param inputs - Control configuration object
172
+ * @example
173
+ * ```ts
174
+ * controls.setInputs({
175
+ * up: {
176
+ * repeat: true,
177
+ * bind: 'up',
178
+ * keyDown() {
179
+ * console.log('Up pressed');
180
+ * }
181
+ * },
182
+ * action: {
183
+ * bind: ['space', 'enter'],
184
+ * keyDown() {
185
+ * console.log('Action triggered');
186
+ * }
187
+ * }
188
+ * });
189
+ * ```
190
+ */
191
+ setInputs(inputs: Controls): void;
192
+ /**
193
+ * Get the current controls configuration
194
+ *
195
+ * @returns The controls options object
196
+ */
197
+ get options(): Controls;
198
+ }
199
+ //# sourceMappingURL=ControlsBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlsBase.d.ts","sourceRoot":"","sources":["../../src/directives/ControlsBase.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;KAC9B,CAAC;CACL;AAED,MAAM,WAAW,QAAQ;IACrB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC;CACzC;AAED,MAAM,MAAM,QAAQ,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAC;IAAC,UAAU,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC;AAEzF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,8BAAsB,YAAY;IAC9B,SAAS,CAAC,SAAS,EAAE;QACjB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAA;KAC9B,CAAK;IACN,SAAS,CAAC,IAAI,EAAE,OAAO,CAAQ;IAC/B,SAAS,CAAC,gBAAgB,EAAE,QAAQ,CAAK;IACzC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAA;IACvB,SAAS,CAAC,SAAS,EAAE,MAAM,CAAK;IAEhC;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI;IAEzC;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI;IAElC;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI;IAElC;;;OAGG;IACH,KAAK;IAOL;;OAEG;IACH,OAAO;IAOP;;;;;;;OAOG;IACH,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,MAAM;IAU3G;;;;;OAKG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM;IAepC;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAInD;;;;;;;;;OASG;IACH,WAAW,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE;IAI1C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAEpF;;;;;;;;;;OAUG;IACH,UAAU;IAIV;;;;;;;;;OASG;IACH,YAAY;IAIZ;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,SAAS,CAAC,MAAM,EAAE,QAAQ;IAiB1B;;;;OAIG;IACH,IAAI,OAAO,IAAI,QAAQ,CAEtB;CACJ"}
@@ -0,0 +1,69 @@
1
+ import { Container, FederatedPointerEvent } from 'pixi.js';
2
+ import { Directive } from '../engine/directive';
3
+ import { Element } from '../engine/reactive';
4
+ import { SignalOrPrimitive } from '../components/types';
5
+ export type DragProps = {
6
+ move?: (event: FederatedPointerEvent) => void;
7
+ start?: () => void;
8
+ end?: () => void;
9
+ snap?: SignalOrPrimitive<number>;
10
+ direction?: SignalOrPrimitive<'x' | 'y' | 'all'>;
11
+ keyToPress?: SignalOrPrimitive<string[]>;
12
+ viewport?: {
13
+ edgeThreshold?: SignalOrPrimitive<number>;
14
+ maxSpeed?: SignalOrPrimitive<number>;
15
+ };
16
+ };
17
+ export declare class Drop extends Directive {
18
+ private elementRef;
19
+ onInit(element: Element<Container>): void;
20
+ onMount(element: Element<Container>): void;
21
+ onUpdate(): void;
22
+ onDestroy(): void;
23
+ }
24
+ export declare class Drag extends Directive {
25
+ private elementRef;
26
+ private stageRef;
27
+ private offsetInParent;
28
+ private isDragging;
29
+ private viewport;
30
+ private animationFrameId;
31
+ private lastPointerPosition;
32
+ private pressedKeys;
33
+ private pointerIsDown;
34
+ private onDragMoveHandler;
35
+ private onDragEndHandler;
36
+ private onDragStartHandler;
37
+ private onKeyDownHandler;
38
+ private onKeyUpHandler;
39
+ private subscriptions;
40
+ onInit(element: Element<Container>): void;
41
+ onMount(element: Element<Container>): void;
42
+ get dragProps(): any;
43
+ get axis(): {
44
+ x: boolean;
45
+ y: boolean;
46
+ };
47
+ /**
48
+ * Updates element position when dragging and starts continuous viewport movement
49
+ * @param event The pointer event that triggered the drag move
50
+ */
51
+ private onDragMove;
52
+ /**
53
+ * Moves the viewport if the dragged element is near screen edges
54
+ * @param globalPosition The global pointer position
55
+ */
56
+ private updateViewportPosition;
57
+ /**
58
+ * Handles drag end event and stops viewport movement
59
+ */
60
+ private onDragEnd;
61
+ onKeyDown(event: KeyboardEvent): void;
62
+ onKeyUp(event: KeyboardEvent): void;
63
+ private areRequiredKeysPressed;
64
+ private onPointerDown;
65
+ private startDrag;
66
+ onUpdate(props: any): void;
67
+ onDestroy(): void;
68
+ }
69
+ //# sourceMappingURL=Drag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drag.d.ts","sourceRoot":"","sources":["../../src/directives/Drag.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAoB,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAqB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAK7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,iBAAiB,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE;QACP,aAAa,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1C,QAAQ,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;KACxC,CAAC;CACL,CAAA;AAED,qBAAa,IAAK,SAAQ,SAAS;IAC/B,OAAO,CAAC,UAAU,CAAmC;IAErD,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;IAIlC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;IAInC,QAAQ;IAER,SAAS;CAGZ;AAED,qBAAa,IAAK,SAAQ,SAAS;IAC/B,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,iBAAiB,CAAoD;IAC7E,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,kBAAkB,CAAoD;IAC9E,OAAO,CAAC,gBAAgB,CAA4C;IACpE,OAAO,CAAC,cAAc,CAA4C;IAElE,OAAO,CAAC,aAAa,CAAsB;IAE3C,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;IASlC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;IA6CnC,IAAI,SAAS,QAaZ;IAED,IAAI,IAAI;;;MAaP;IAED;;;OAGG;IACH,OAAO,CAAC,UAAU;IA2ClB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA4D9B;;OAEG;IACH,OAAO,CAAC,SAAS;IAejB,SAAS,CAAC,KAAK,EAAE,aAAa;IAS9B,OAAO,CAAC,KAAK,EAAE,aAAa;IAQ5B,OAAO,CAAC,sBAAsB;IAqC9B,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,SAAS;IASjB,QAAQ,CAAC,KAAK,KAAA;IAOd,SAAS;CAqBZ"}
@@ -0,0 +1,116 @@
1
+ import { Container } from 'pixi.js';
2
+ import { Directive } from '../engine/directive';
3
+ import { Element } from '../engine/reactive';
4
+ import { Trigger } from '../engine/trigger';
5
+ import { SignalOrPrimitive } from '../components/types';
6
+ export type FlashType = 'alpha' | 'tint' | 'both';
7
+ export type FlashProps = {
8
+ /**
9
+ * Trigger that activates the flash animation
10
+ * When the trigger is activated, the flash animation will start
11
+ */
12
+ trigger?: Trigger<any>;
13
+ /**
14
+ * Type of flash effect: 'alpha' (opacity), 'tint' (color), or 'both'
15
+ * @default 'alpha'
16
+ */
17
+ type?: SignalOrPrimitive<FlashType>;
18
+ /**
19
+ * Duration of the flash animation in milliseconds
20
+ * @default 300
21
+ */
22
+ duration?: SignalOrPrimitive<number>;
23
+ /**
24
+ * Number of flash cycles (flash on/off)
25
+ * @default 1
26
+ */
27
+ cycles?: SignalOrPrimitive<number>;
28
+ /**
29
+ * Alpha value when flashing (0 to 1)
30
+ * Only used when type is 'alpha' or 'both'
31
+ * @default 0.3
32
+ */
33
+ alpha?: SignalOrPrimitive<number>;
34
+ /**
35
+ * Tint color when flashing (hex color value)
36
+ * Only used when type is 'tint' or 'both'
37
+ * @default 0xffffff (white)
38
+ */
39
+ tint?: SignalOrPrimitive<number>;
40
+ /**
41
+ * Original alpha value to restore after flash
42
+ * If not provided, uses the current alpha value
43
+ */
44
+ originalAlpha?: number;
45
+ /**
46
+ * Original tint value to restore after flash
47
+ * If not provided, uses the current tint value
48
+ */
49
+ originalTint?: number;
50
+ /**
51
+ * Callback function called when flash starts
52
+ */
53
+ onStart?: () => void;
54
+ /**
55
+ * Callback function called when flash completes
56
+ */
57
+ onComplete?: () => void;
58
+ };
59
+ /**
60
+ * Flash directive that animates a display object's alpha and/or tint when a trigger is activated.
61
+ * Creates a flash effect by rapidly changing opacity or color.
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * // Basic usage with trigger
66
+ * const flashTrigger = trigger();
67
+ *
68
+ * onMount(element) {
69
+ * // Element will flash when trigger is activated
70
+ * element.props.flash = { trigger: flashTrigger };
71
+ * }
72
+ *
73
+ * // Trigger the flash
74
+ * flashTrigger.start();
75
+ * ```
76
+ */
77
+ export declare class Flash extends Directive {
78
+ private elementRef;
79
+ private progressSignal;
80
+ private flashSubscription;
81
+ private alphaEffect;
82
+ private tintEffect;
83
+ private originalAlpha;
84
+ private originalTint;
85
+ private currentFlashConfig;
86
+ /**
87
+ * Initializes the flash directive
88
+ * @param element - The element to attach the flash effect to
89
+ */
90
+ onInit(element: Element<Container>): void;
91
+ /**
92
+ * Mounts the flash directive and sets up trigger listener
93
+ * @param element - The element being mounted
94
+ */
95
+ onMount(element: Element<Container>): void;
96
+ /**
97
+ * Gets the flash props with default values
98
+ * @returns FlashProps with defaults applied
99
+ */
100
+ get flashProps(): FlashProps;
101
+ /**
102
+ * Performs the flash animation using animatedSignal
103
+ * @param data - Optional data passed from the trigger that can override default options
104
+ */
105
+ private performFlash;
106
+ /**
107
+ * Updates the flash directive when props change
108
+ * @param props - Updated props
109
+ */
110
+ onUpdate(props: any): void;
111
+ /**
112
+ * Cleans up the flash directive
113
+ */
114
+ onDestroy(): void;
115
+ }
116
+ //# sourceMappingURL=Flash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flash.d.ts","sourceRoot":"","sources":["../../src/directives/Flash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,SAAS,EAAqB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAiB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACrC;;;OAGG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACnC;;;;OAIG;IACH,KAAK,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAClC;;;;OAIG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,KAAM,SAAQ,SAAS;IAChC,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,kBAAkB,CAMV;IAEhB;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;IAIlC;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;IAgCnC;;;OAGG;IACH,IAAI,UAAU,IAAI,UAAU,CAS3B;IAED;;;OAGG;YACW,YAAY;IAgM1B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG;IAUnB;;OAEG;IACH,SAAS;CA4CZ"}
@@ -0,0 +1,52 @@
1
+ import { Directive } from '../engine/directive';
2
+ import { Element } from '../engine/reactive';
3
+ import { CanvasFocusContainer } from '../components/FocusContainer';
4
+ /**
5
+ * FocusNavigation directive for wiring Controls with FocusContainer
6
+ *
7
+ * This directive integrates with the Controls system and lets external
8
+ * control handlers update the FocusContainer tabindex signal.
9
+ *
10
+ * The directive is automatically applied when a FocusContainer has a `controls` prop.
11
+ * It keeps the Controls directive in sync with the provided controls config.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // Automatic navigation with Controls
16
+ * <FocusContainer tabindex={0} controls={controlsConfig}>
17
+ * <Button tabindex={0} text="Button 1" />
18
+ * <Button tabindex={1} text="Button 2" />
19
+ * </FocusContainer>
20
+ * ```
21
+ */
22
+ export declare class FocusNavigationDirective extends Directive {
23
+ private element;
24
+ private controlsDirective;
25
+ private controlsSubscription;
26
+ /**
27
+ * Initialize the focus navigation directive
28
+ *
29
+ * @param element - FocusContainer element
30
+ */
31
+ onInit(element: Element<CanvasFocusContainer>): void;
32
+ /**
33
+ * Mount hook
34
+ *
35
+ * @param element - FocusContainer element
36
+ */
37
+ onMount(element: Element<CanvasFocusContainer>): void;
38
+ /**
39
+ * Update hook
40
+ *
41
+ * @param props - Updated properties
42
+ * @param element - FocusContainer element
43
+ */
44
+ onUpdate(props: any, element: Element<CanvasFocusContainer>): void;
45
+ /**
46
+ * Destroy hook
47
+ *
48
+ * @param element - FocusContainer element
49
+ */
50
+ onDestroy(element: Element<CanvasFocusContainer>): void;
51
+ }
52
+ //# sourceMappingURL=FocusNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FocusNavigation.d.ts","sourceRoot":"","sources":["../../src/directives/FocusNavigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqC,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAIlD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,wBAAyB,SAAQ,SAAS;IACrD,OAAO,CAAC,OAAO,CAA8C;IAC7D,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,oBAAoB,CAAa;IAEzC;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAI7C;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAmC9C;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAU3D;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC;CAUjD"}
@@ -0,0 +1,47 @@
1
+ import { Container } from 'pixi.js';
2
+ import { SignalOrPrimitive } from '../components/types';
3
+ import { Directive } from '../engine/directive';
4
+ import { Element } from '../engine/reactive';
5
+ export type FogVisibilityState = "visible" | "explored" | "unknown";
6
+ export type FogVisibilityMode = "visible" | "explored";
7
+ export type FogVisibilityHideAs = "visible" | "alpha";
8
+ export type FogVisibilityController = {
9
+ version?: () => number;
10
+ clarityAt?: (x: number, y: number) => number;
11
+ isVisibleAt?: (x: number, y: number, threshold?: number) => boolean;
12
+ isExploredAt?: (x: number, y: number) => boolean;
13
+ stateAt?: (x: number, y: number, clearThreshold?: number) => FogVisibilityState | string;
14
+ };
15
+ export type FogVisibilityPoint = {
16
+ x: SignalOrPrimitive<number>;
17
+ y: SignalOrPrimitive<number>;
18
+ };
19
+ export type FogVisibilityProps = {
20
+ controller?: SignalOrPrimitive<FogVisibilityController | null | undefined>;
21
+ mode?: SignalOrPrimitive<FogVisibilityMode>;
22
+ threshold?: SignalOrPrimitive<number>;
23
+ point?: SignalOrPrimitive<FogVisibilityPoint>;
24
+ hideAs?: SignalOrPrimitive<FogVisibilityHideAs>;
25
+ hiddenAlpha?: SignalOrPrimitive<number>;
26
+ sampleHz?: SignalOrPrimitive<number>;
27
+ };
28
+ export declare class FogVisibility extends Directive {
29
+ private elementRef;
30
+ private tickSubscription;
31
+ private sampleAccumulatorMs;
32
+ private managesAlpha;
33
+ onInit(element: Element<Container>): void;
34
+ onMount(element: Element<Container>): void;
35
+ onUpdate(): void;
36
+ onDestroy(): void;
37
+ private bindTick;
38
+ private resolveSignalValue;
39
+ private readOptions;
40
+ private readBaseVisible;
41
+ private readBaseAlpha;
42
+ private samplePoint;
43
+ private resolveVisibleState;
44
+ private resolveExploredState;
45
+ private evaluateVisibility;
46
+ }
47
+ //# sourceMappingURL=FogVisibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FogVisibility.d.ts","sourceRoot":"","sources":["../../src/directives/FogVisibility.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAqB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AACpE,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,CAAC;AACvD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtD,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACpE,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,kBAAkB,GAAG,MAAM,CAAC;CAC1F,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,CAAC,EAAE,iBAAiB,CAAC,uBAAuB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC3E,IAAI,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAChD,WAAW,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CACtC,CAAC;AAeF,qBAAa,aAAc,SAAQ,SAAS;IAC1C,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,YAAY,CAAS;IAE7B,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;IAIlC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;IAMnC,QAAQ;IAKR,SAAS;IAiBT,OAAO,CAAC,QAAQ;IAqBhB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,WAAW;IA2CnB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,kBAAkB;CA+C3B"}