canvasengine 2.0.0-beta.44 → 2.0.0-beta.46

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 (83) hide show
  1. package/dist/components/Container.d.ts +86 -0
  2. package/dist/components/Container.d.ts.map +1 -0
  3. package/dist/components/DOMContainer.d.ts +98 -0
  4. package/dist/components/DOMContainer.d.ts.map +1 -0
  5. package/dist/components/DOMElement.d.ts +16 -5
  6. package/dist/components/DOMElement.d.ts.map +1 -1
  7. package/dist/components/DOMSprite.d.ts +108 -0
  8. package/dist/components/DOMSprite.d.ts.map +1 -0
  9. package/dist/components/DisplayObject.d.ts +94 -0
  10. package/dist/components/DisplayObject.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/Mesh.d.ts +208 -0
  14. package/dist/components/Mesh.d.ts.map +1 -0
  15. package/dist/components/Sprite.d.ts +242 -0
  16. package/dist/components/Sprite.d.ts.map +1 -0
  17. package/dist/components/Viewport.d.ts +121 -0
  18. package/dist/components/Viewport.d.ts.map +1 -0
  19. package/dist/components/index.d.ts +2 -1
  20. package/dist/components/index.d.ts.map +1 -1
  21. package/dist/directives/Controls.d.ts +4 -4
  22. package/dist/directives/Controls.d.ts.map +1 -1
  23. package/dist/directives/ControlsBase.d.ts +1 -0
  24. package/dist/directives/ControlsBase.d.ts.map +1 -1
  25. package/dist/directives/FocusNavigation.d.ts +4 -22
  26. package/dist/directives/FocusNavigation.d.ts.map +1 -1
  27. package/dist/directives/KeyboardControls.d.ts +1 -0
  28. package/dist/directives/KeyboardControls.d.ts.map +1 -1
  29. package/dist/directives/Scheduler.d.ts.map +1 -1
  30. package/dist/directives/Shake.d.ts +1 -0
  31. package/dist/directives/Shake.d.ts.map +1 -1
  32. package/dist/engine/FocusManager.d.ts +10 -9
  33. package/dist/engine/FocusManager.d.ts.map +1 -1
  34. package/dist/engine/bootstrap.d.ts +1 -0
  35. package/dist/engine/bootstrap.d.ts.map +1 -1
  36. package/dist/engine/directive.d.ts +1 -1
  37. package/dist/engine/directive.d.ts.map +1 -1
  38. package/dist/engine/reactive.d.ts +10 -0
  39. package/dist/engine/reactive.d.ts.map +1 -1
  40. package/dist/engine/signal.d.ts +19 -19
  41. package/dist/engine/signal.d.ts.map +1 -1
  42. package/dist/hooks/useFocus.d.ts.map +1 -1
  43. package/dist/index-DaGekQUW.js +2218 -0
  44. package/dist/index-DaGekQUW.js.map +1 -0
  45. package/dist/index.d.ts +1 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.global.js +3 -3
  48. package/dist/index.global.js.map +1 -1
  49. package/dist/index.js +11868 -86
  50. package/dist/index.js.map +1 -1
  51. package/dist/utils/tabindex.d.ts +16 -0
  52. package/dist/utils/tabindex.d.ts.map +1 -0
  53. package/package.json +1 -1
  54. package/src/components/DOMContainer.ts +186 -1
  55. package/src/components/DOMElement.ts +164 -37
  56. package/src/components/DOMSprite.ts +759 -0
  57. package/src/components/DisplayObject.ts +33 -7
  58. package/src/components/FocusContainer.ts +22 -26
  59. package/src/components/Sprite.ts +12 -3
  60. package/src/components/Text.ts +1 -1
  61. package/src/components/Viewport.ts +5 -5
  62. package/src/components/index.ts +2 -1
  63. package/src/directives/Controls.ts +5 -5
  64. package/src/directives/ControlsBase.ts +1 -0
  65. package/src/directives/FocusNavigation.ts +8 -146
  66. package/src/directives/KeyboardControls.ts +11 -2
  67. package/src/directives/Scheduler.ts +12 -4
  68. package/src/directives/Shake.ts +9 -6
  69. package/src/engine/FocusManager.ts +44 -29
  70. package/src/engine/bootstrap.ts +5 -2
  71. package/src/engine/directive.ts +2 -2
  72. package/src/engine/reactive.ts +137 -27
  73. package/src/engine/signal.ts +80 -23
  74. package/src/hooks/useFocus.ts +2 -5
  75. package/src/index.ts +2 -1
  76. package/src/types/pixi-cull.d.ts +7 -0
  77. package/src/utils/tabindex.ts +70 -0
  78. package/testing/index.ts +31 -3
  79. package/tsconfig.json +3 -2
  80. package/dist/DebugRenderer-P5sZ-0Tq.js +0 -172
  81. package/dist/DebugRenderer-P5sZ-0Tq.js.map +0 -1
  82. package/dist/index-VPoz4ufu.js +0 -13252
  83. package/dist/index-VPoz4ufu.js.map +0 -1
@@ -0,0 +1,208 @@
1
+ import { Geometry, Shader, Texture } from 'pixi.js';
2
+ import { Element } from '../engine/reactive';
3
+ import { ComponentInstance } from './DisplayObject';
4
+ import { DisplayObjectProps } from './types/DisplayObject';
5
+ import { SignalOrPrimitive } from './types';
6
+ import { ComponentFunction } from '../engine/signal';
7
+ /**
8
+ * Interface defining the properties for a Mesh component.
9
+ * Extends DisplayObjectProps to inherit common display object properties.
10
+ */
11
+ interface MeshProps extends DisplayObjectProps {
12
+ /** The geometry defining the mesh structure (vertices, indices, UVs, etc.) */
13
+ geometry?: Geometry;
14
+ /** The shader to render the mesh with */
15
+ shader?: Shader;
16
+ /** The texture to apply to the mesh */
17
+ texture?: Texture | string;
18
+ /** The image URL to load as texture */
19
+ image?: string;
20
+ /** The tint color to apply to the mesh */
21
+ tint?: SignalOrPrimitive<number>;
22
+ /** Whether to round pixels for sharper rendering */
23
+ roundPixels?: SignalOrPrimitive<boolean>;
24
+ }
25
+ declare const CanvasMesh_base: {
26
+ new (): {
27
+ [x: string]: any;
28
+ "__#private@#canvasContext": {
29
+ [key: string]: any;
30
+ } | null;
31
+ isFlex: boolean;
32
+ fullProps: import('..').Props;
33
+ isMounted: boolean;
34
+ _anchorPoints: import('pixi.js').ObservablePoint;
35
+ isCustomAnchor: boolean;
36
+ displayWidth: import('@signe/reactive').WritableSignal<number>;
37
+ displayHeight: import('@signe/reactive').WritableSignal<number>;
38
+ overrideProps: string[];
39
+ layout: any;
40
+ onBeforeDestroy: import('./DisplayObject').OnHook | null;
41
+ onAfterMount: import('./DisplayObject').OnHook | null;
42
+ subjectInit: import('rxjs').BehaviorSubject<any>;
43
+ disableLayout: boolean;
44
+ "__#private@#registeredEvents": Map<string, Function>;
45
+ "__#private@#computedLayoutBox": {
46
+ width?: number;
47
+ height?: number;
48
+ } | null;
49
+ "__#private@#element": Element<any> | null;
50
+ getElement(): Element<any> | null;
51
+ onLayoutComputed(_event: any): void;
52
+ get deltaRatio(): any;
53
+ get parentIsFlex(): any;
54
+ onInit(props: import('..').Props): void;
55
+ onMount(element: Element<any>, index?: number): Promise<void>;
56
+ onUpdate(props: import('..').Props): void;
57
+ onDestroy(parent: Element, afterDestroy?: () => void): Promise<void>;
58
+ setFlexDirection(direction: import('./types/DisplayObject').FlexDirection): void;
59
+ setFlexWrap(wrap: "wrap" | "nowrap" | "wrap-reverse"): void;
60
+ setAlignContent(align: import('./types/DisplayObject').AlignContent): void;
61
+ setAlignSelf(align: import('./types/DisplayObject').AlignContent): void;
62
+ setAlignItems(align: import('./types/DisplayObject').AlignContent): void;
63
+ setJustifyContent(justifyContent: "flex-start" | "flex-end" | "center" | "space-between" | "space-around"): void;
64
+ setPosition(position: import('./types/DisplayObject').EdgeSize): void;
65
+ setX(x: number): void;
66
+ setY(y: number): void;
67
+ setPadding(padding: import('./types/DisplayObject').EdgeSize): void;
68
+ setMargin(margin: import('./types/DisplayObject').EdgeSize): void;
69
+ setGap(gap: import('./types/DisplayObject').EdgeSize): void;
70
+ setBorder(border: import('./types/DisplayObject').EdgeSize): void;
71
+ setPositionType(positionType: "relative" | "absolute"): void;
72
+ setWidth(width: number): void;
73
+ setHeight(height: number): void;
74
+ getWidth(): number;
75
+ getHeight(): number;
76
+ setMinWidth(minWidth: number | string): void;
77
+ setMinHeight(minHeight: number | string): void;
78
+ setMaxWidth(maxWidth: number | string): void;
79
+ setMaxHeight(maxHeight: number | string): void;
80
+ setAspectRatio(aspectRatio: number): void;
81
+ setFlexGrow(flexGrow: number): void;
82
+ setFlexShrink(flexShrink: number): void;
83
+ setFlexBasis(flexBasis: number | string): void;
84
+ setRowGap(rowGap: number): void;
85
+ setColumnGap(columnGap: number): void;
86
+ setTop(top: number | string): void;
87
+ setLeft(left: number | string): void;
88
+ setRight(right: number | string): void;
89
+ setBottom(bottom: number | string): void;
90
+ setObjectFit(objectFit: import('./types/DisplayObject').ObjectFit): void;
91
+ setObjectPosition(objectPosition: import('./types/DisplayObject').ObjectPosition): void;
92
+ setTransformOrigin(transformOrigin: import('./types/DisplayObject').TransformOrigin): void;
93
+ };
94
+ [x: string]: any;
95
+ };
96
+ /**
97
+ * Canvas Mesh component class that extends DisplayObject with PixiMesh functionality.
98
+ * This component allows rendering of custom 3D meshes with shaders and textures.
99
+ *
100
+ * @example
101
+ * ```typescript
102
+ * // Basic mesh with geometry and texture
103
+ * const mesh = Mesh({
104
+ * geometry: myGeometry,
105
+ * texture: "path/to/texture.png",
106
+ * tint: 0xff0000
107
+ * });
108
+ *
109
+ * // Mesh with custom shader
110
+ * const customMesh = Mesh({
111
+ * geometry: myGeometry,
112
+ * shader: myCustomShader,
113
+ * draw: (mesh) => {
114
+ * // Custom mesh manipulation
115
+ * mesh.rotation += 0.01;
116
+ * }
117
+ * });
118
+ * ```
119
+ */
120
+ declare class CanvasMesh extends CanvasMesh_base {
121
+ /**
122
+ * Constructor for the CanvasMesh component.
123
+ * Initializes the PixiMesh with default geometry and shader to prevent errors.
124
+ *
125
+ * @example
126
+ * ```typescript
127
+ * // This constructor is called internally by the engine
128
+ * const mesh = new CanvasMesh();
129
+ * ```
130
+ */
131
+ constructor();
132
+ /**
133
+ * Initializes the mesh component with the provided properties.
134
+ * This method is called before onUpdate to set up initial state.
135
+ *
136
+ * @param props - The initial properties
137
+ * @example
138
+ * ```typescript
139
+ * // This method is called internally when the component is created
140
+ * mesh.onInit({
141
+ * geometry: myGeometry,
142
+ * texture: "texture.png"
143
+ * });
144
+ * ```
145
+ */
146
+ onInit(props: MeshProps): void;
147
+ /**
148
+ * Updates the mesh component when properties change.
149
+ * Handles texture loading, shader updates, and other property changes.
150
+ *
151
+ * @param props - The updated properties
152
+ * @example
153
+ * ```typescript
154
+ * // This method is called internally when props change
155
+ * mesh.onUpdate({
156
+ * tint: 0x00ff00,
157
+ * texture: "new-texture.png"
158
+ * });
159
+ * ```
160
+ */
161
+ onUpdate(props: MeshProps): Promise<void>;
162
+ /**
163
+ * Called when the component is about to be destroyed.
164
+ * Cleans up the draw effect subscription and calls the parent destroy method.
165
+ *
166
+ * @param parent - The parent element
167
+ * @param afterDestroy - Callback function to execute after destruction
168
+ * @example
169
+ * ```typescript
170
+ * // This method is typically called by the engine internally
171
+ * await mesh.onDestroy(parentElement, () => console.log('Mesh destroyed'));
172
+ * ```
173
+ */
174
+ onDestroy(parent: Element<ComponentInstance>, afterDestroy: () => void): Promise<void>;
175
+ }
176
+ /**
177
+ * Creates a Mesh component with the specified properties.
178
+ * This is the main function used to create mesh instances in your application.
179
+ *
180
+ * @param props - The properties for the mesh component
181
+ * @returns A mesh component element
182
+ * @example
183
+ * ```typescript
184
+ * import { Mesh } from 'canvasengine';
185
+ *
186
+ * // Create a basic textured mesh
187
+ * const myMesh = Mesh({
188
+ * geometry: triangleGeometry,
189
+ * texture: "assets/texture.png",
190
+ * x: 100,
191
+ * y: 100,
192
+ * tint: 0xff0000
193
+ * });
194
+ *
195
+ * // Create a mesh with custom shader
196
+ * const shaderMesh = Mesh({
197
+ * geometry: planeGeometry,
198
+ * shader: customShader,
199
+ * draw: (mesh) => {
200
+ * mesh.rotation += 0.01;
201
+ * }
202
+ * });
203
+ * ```
204
+ */
205
+ export declare const Mesh: ComponentFunction<MeshProps>;
206
+ export { CanvasMesh };
207
+ export type { MeshProps };
208
+ //# sourceMappingURL=Mesh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mesh.d.ts","sourceRoot":"","sources":["../../src/components/Mesh.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAuB,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAmB,OAAO,EAAqB,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;GAGG;AACH,UAAU,SAAU,SAAQ,kBAAkB;IAC5C,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACjC,oDAAoD;IACpD,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;CAC1C;;;;;;;;;;;;;;;;;;;;;;iBA+Ec,CAAC;kBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA7EjC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,cAAM,UAAW,SAAQ,eAAuB;IAC9C;;;;;;;;;OASG;;IASH;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,EAAE,SAAS;IAkBvB;;;;;;;;;;;;;OAaG;IACG,QAAQ,CAAC,KAAK,EAAE,SAAS;IA4C/B;;;;;;;;;;;OAWG;IACG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAM7F;AAKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAE7C,CAAC;AAGF,OAAO,EAAE,UAAU,EAAE,CAAC;AAGtB,YAAY,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,242 @@
1
+ import { Signal } from '@signe/reactive';
2
+ import { Sprite as PixiSprite, Texture } from 'pixi.js';
3
+ import { Element } from '../engine/reactive';
4
+ import { AnimationFrames, FrameOptions, SpritesheetOptions, TextureOptions, TransformOptions } from './types/Spritesheet';
5
+ import { ComponentFunction } from '../engine/signal';
6
+ import { DisplayObjectProps } from './types/DisplayObject';
7
+ import { Layout } from '@pixi/layout';
8
+ type Image = {
9
+ image: string;
10
+ };
11
+ type TextureOptionsMerging = TextureOptions & {
12
+ spriteWidth: number;
13
+ spriteHeight: number;
14
+ sound?: string;
15
+ } & Image & TransformOptions;
16
+ type FrameOptionsMerging = TextureOptionsMerging & FrameOptions;
17
+ type SpritesheetOptionsMerging = TextureOptionsMerging & SpritesheetOptions;
18
+ type AnimationDataFrames = {
19
+ sprites: FrameOptionsMerging[];
20
+ frames: Texture[][];
21
+ name: string;
22
+ animations: AnimationFrames;
23
+ params: any[];
24
+ data: TextureOptionsMerging;
25
+ };
26
+ export declare enum StandardAnimation {
27
+ Stand = "stand",
28
+ Walk = "walk"
29
+ }
30
+ declare const CanvasSprite_base: {
31
+ new (): {
32
+ [x: string]: any;
33
+ "__#private@#canvasContext": {
34
+ [key: string]: any;
35
+ } | null;
36
+ isFlex: boolean;
37
+ fullProps: import('..').Props;
38
+ isMounted: boolean;
39
+ _anchorPoints: import('pixi.js').ObservablePoint;
40
+ isCustomAnchor: boolean;
41
+ displayWidth: import('@signe/reactive').WritableSignal<number>;
42
+ displayHeight: import('@signe/reactive').WritableSignal<number>;
43
+ overrideProps: string[];
44
+ layout: any;
45
+ onBeforeDestroy: import('./DisplayObject').OnHook | null;
46
+ onAfterMount: import('./DisplayObject').OnHook | null;
47
+ subjectInit: import('rxjs').BehaviorSubject<any>;
48
+ disableLayout: boolean;
49
+ "__#private@#registeredEvents": Map<string, Function>;
50
+ "__#private@#computedLayoutBox": {
51
+ width?: number;
52
+ height?: number;
53
+ } | null;
54
+ "__#private@#element": Element<any> | null;
55
+ getElement(): Element<any> | null;
56
+ onLayoutComputed(_event: any): void;
57
+ get deltaRatio(): any;
58
+ get parentIsFlex(): any;
59
+ onInit(props: import('..').Props): void;
60
+ onMount(element: Element<any>, index?: number): Promise<void>;
61
+ onUpdate(props: import('..').Props): void;
62
+ onDestroy(parent: Element, afterDestroy?: () => void): Promise<void>;
63
+ setFlexDirection(direction: import('./types/DisplayObject').FlexDirection): void;
64
+ setFlexWrap(wrap: "wrap" | "nowrap" | "wrap-reverse"): void;
65
+ setAlignContent(align: import('./types/DisplayObject').AlignContent): void;
66
+ setAlignSelf(align: import('./types/DisplayObject').AlignContent): void;
67
+ setAlignItems(align: import('./types/DisplayObject').AlignContent): void;
68
+ setJustifyContent(justifyContent: "flex-start" | "flex-end" | "center" | "space-between" | "space-around"): void;
69
+ setPosition(position: import('./types/DisplayObject').EdgeSize): void;
70
+ setX(x: number): void;
71
+ setY(y: number): void;
72
+ setPadding(padding: import('./types/DisplayObject').EdgeSize): void;
73
+ setMargin(margin: import('./types/DisplayObject').EdgeSize): void;
74
+ setGap(gap: import('./types/DisplayObject').EdgeSize): void;
75
+ setBorder(border: import('./types/DisplayObject').EdgeSize): void;
76
+ setPositionType(positionType: "relative" | "absolute"): void;
77
+ setWidth(width: number): void;
78
+ setHeight(height: number): void;
79
+ getWidth(): number;
80
+ getHeight(): number;
81
+ setMinWidth(minWidth: number | string): void;
82
+ setMinHeight(minHeight: number | string): void;
83
+ setMaxWidth(maxWidth: number | string): void;
84
+ setMaxHeight(maxHeight: number | string): void;
85
+ setAspectRatio(aspectRatio: number): void;
86
+ setFlexGrow(flexGrow: number): void;
87
+ setFlexShrink(flexShrink: number): void;
88
+ setFlexBasis(flexBasis: number | string): void;
89
+ setRowGap(rowGap: number): void;
90
+ setColumnGap(columnGap: number): void;
91
+ setTop(top: number | string): void;
92
+ setLeft(left: number | string): void;
93
+ setRight(right: number | string): void;
94
+ setBottom(bottom: number | string): void;
95
+ setObjectFit(objectFit: import('./types/DisplayObject').ObjectFit): void;
96
+ setObjectPosition(objectPosition: import('./types/DisplayObject').ObjectPosition): void;
97
+ setTransformOrigin(transformOrigin: import('./types/DisplayObject').TransformOrigin): void;
98
+ };
99
+ [x: string]: any;
100
+ };
101
+ export declare class CanvasSprite extends CanvasSprite_base {
102
+ hitbox: {
103
+ w: number;
104
+ h: number;
105
+ };
106
+ applyTransform: (frame: FrameOptionsMerging, data: TextureOptionsMerging, spritesheet: SpritesheetOptionsMerging) => Partial<FrameOptionsMerging>;
107
+ private spritesheet;
108
+ private currentAnimation;
109
+ private time;
110
+ private frameIndex;
111
+ private animations;
112
+ private subscriptionTick;
113
+ private subscriptionSheet;
114
+ private sheetParams;
115
+ private sheetCurrentAnimation;
116
+ private app;
117
+ onFinish: () => void;
118
+ private globalLoader;
119
+ private trackedAssetIds;
120
+ get renderer(): import('pixi.js').Renderer;
121
+ private currentAnimationContainer;
122
+ /**
123
+ * Auto-detects image dimensions by loading the image and reading its natural size
124
+ * This is used when width/height are not explicitly provided in the spritesheet definition
125
+ *
126
+ * @param imagePath - Path to the image file
127
+ * @returns Object containing the detected width and height of the image
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * const { width, height } = await sprite.detectImageDimensions('path/to/image.png');
132
+ * // width: 256, height: 128
133
+ * ```
134
+ */
135
+ private detectImageDimensions;
136
+ /**
137
+ * Creates textures from a spritesheet image by cutting it into frames
138
+ * Automatically detects image dimensions if width/height are not provided
139
+ *
140
+ * @param options - Texture options containing image path, dimensions, and frame configuration
141
+ * @returns A 2D array of textures organized by rows and columns
142
+ *
143
+ * @example
144
+ * ```typescript
145
+ * // With explicit dimensions
146
+ * const textures = await sprite.createTextures({
147
+ * image: 'path/to/image.png',
148
+ * width: 256,
149
+ * height: 128,
150
+ * framesWidth: 4,
151
+ * framesHeight: 2,
152
+ * spriteWidth: 64,
153
+ * spriteHeight: 64
154
+ * });
155
+ *
156
+ * // Without dimensions (automatically detected)
157
+ * const textures = await sprite.createTextures({
158
+ * image: 'path/to/image.png',
159
+ * framesWidth: 4,
160
+ * framesHeight: 2,
161
+ * spriteWidth: 64,
162
+ * spriteHeight: 64
163
+ * });
164
+ * ```
165
+ */
166
+ private createTextures;
167
+ private createAnimations;
168
+ onMount(params: Element<any>): Promise<void>;
169
+ onUpdate(props: any): Promise<void>;
170
+ onDestroy(parent: Element, afterDestroy: () => void): Promise<void>;
171
+ has(name: string): boolean;
172
+ get(name: string): AnimationDataFrames;
173
+ isPlaying(name?: string): boolean;
174
+ stop(): void;
175
+ play(name: string, params?: any[]): void;
176
+ /**
177
+ * Resets the sprite by destroying and recreating all animations
178
+ * This method clears the current animation state, destroys existing textures,
179
+ * and recreates all animations from the spritesheet
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * // Reset all animations to their initial state
184
+ * sprite.resetAnimations();
185
+ *
186
+ * // Reset and then play a specific animation
187
+ * await sprite.resetAnimations();
188
+ * sprite.play('walk');
189
+ * ```
190
+ */
191
+ resetAnimations(): Promise<void>;
192
+ update({ deltaRatio }: {
193
+ deltaRatio: any;
194
+ }): void;
195
+ }
196
+ export interface CanvasSprite extends PixiSprite {
197
+ layout: Layout | null;
198
+ }
199
+ export interface SpriteProps extends DisplayObjectProps {
200
+ sheet?: {
201
+ definition?: SpritesheetOptionsMerging;
202
+ playing?: string;
203
+ params?: any;
204
+ onFinish?: () => void;
205
+ };
206
+ scaleMode?: number;
207
+ image?: string;
208
+ rectangle?: {
209
+ x: number;
210
+ y: number;
211
+ width: number;
212
+ height: number;
213
+ };
214
+ context?: {
215
+ tick: Signal;
216
+ };
217
+ }
218
+ export interface SpritePropsWithImage extends Omit<SpriteProps, "sheet"> {
219
+ image: string;
220
+ rectangle?: {
221
+ x: number;
222
+ y: number;
223
+ width: number;
224
+ height: number;
225
+ };
226
+ }
227
+ export interface SpritePropsWithSheet extends Omit<SpriteProps, "image" | "rectangle"> {
228
+ sheet: {
229
+ definition: SpritesheetOptionsMerging;
230
+ playing?: string;
231
+ params?: any;
232
+ onFinish?: () => void;
233
+ };
234
+ loader?: {
235
+ onProgress?: (progress: number) => void;
236
+ onComplete?: (texture: Texture) => void;
237
+ };
238
+ }
239
+ export type SpritePropTypes = SpritePropsWithImage | SpritePropsWithSheet;
240
+ export declare const Sprite: ComponentFunction<SpritePropTypes>;
241
+ export {};
242
+ //# sourceMappingURL=Sprite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sprite.d.ts","sourceRoot":"","sources":["../../src/components/Sprite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ import { Viewport as PixiViewport } from 'pixi-viewport';
2
+ import { Element, Props } from '../engine/reactive';
3
+ import { ComponentInstance } from './DisplayObject';
4
+ import { ContainerChild, IRenderLayer } from 'pixi.js';
5
+ export interface ViewportProps extends Props {
6
+ screenWidth?: number;
7
+ screenHeight?: number;
8
+ worldWidth?: number;
9
+ worldHeight?: number;
10
+ clamp?: boolean | {
11
+ left?: number;
12
+ right?: number;
13
+ top?: number;
14
+ bottom?: number;
15
+ };
16
+ context?: any;
17
+ [key: string]: any;
18
+ }
19
+ declare const CanvasViewport_base: {
20
+ new (): {
21
+ [x: string]: any;
22
+ "__#private@#canvasContext": {
23
+ [key: string]: any;
24
+ } | null;
25
+ isFlex: boolean;
26
+ fullProps: Props;
27
+ isMounted: boolean;
28
+ _anchorPoints: import('pixi.js').ObservablePoint;
29
+ isCustomAnchor: boolean;
30
+ displayWidth: import('@signe/reactive').WritableSignal<number>;
31
+ displayHeight: import('@signe/reactive').WritableSignal<number>;
32
+ overrideProps: string[];
33
+ layout: any;
34
+ onBeforeDestroy: import('./DisplayObject').OnHook | null;
35
+ onAfterMount: import('./DisplayObject').OnHook | null;
36
+ subjectInit: import('rxjs').BehaviorSubject<any>;
37
+ disableLayout: boolean;
38
+ "__#private@#registeredEvents": Map<string, Function>;
39
+ "__#private@#computedLayoutBox": {
40
+ width?: number;
41
+ height?: number;
42
+ } | null;
43
+ "__#private@#element": Element<any> | null;
44
+ getElement(): Element<any> | null;
45
+ onLayoutComputed(_event: any): void;
46
+ get deltaRatio(): any;
47
+ get parentIsFlex(): any;
48
+ onInit(props: Props): void;
49
+ onMount(element: Element<any>, index?: number): Promise<void>;
50
+ onUpdate(props: Props): void;
51
+ onDestroy(parent: Element, afterDestroy?: () => void): Promise<void>;
52
+ setFlexDirection(direction: import('./types/DisplayObject').FlexDirection): void;
53
+ setFlexWrap(wrap: "wrap" | "nowrap" | "wrap-reverse"): void;
54
+ setAlignContent(align: import('./types/DisplayObject').AlignContent): void;
55
+ setAlignSelf(align: import('./types/DisplayObject').AlignContent): void;
56
+ setAlignItems(align: import('./types/DisplayObject').AlignContent): void;
57
+ setJustifyContent(justifyContent: "flex-start" | "flex-end" | "center" | "space-between" | "space-around"): void;
58
+ setPosition(position: import('./types/DisplayObject').EdgeSize): void;
59
+ setX(x: number): void;
60
+ setY(y: number): void;
61
+ setPadding(padding: import('./types/DisplayObject').EdgeSize): void;
62
+ setMargin(margin: import('./types/DisplayObject').EdgeSize): void;
63
+ setGap(gap: import('./types/DisplayObject').EdgeSize): void;
64
+ setBorder(border: import('./types/DisplayObject').EdgeSize): void;
65
+ setPositionType(positionType: "relative" | "absolute"): void;
66
+ setWidth(width: number): void;
67
+ setHeight(height: number): void;
68
+ getWidth(): number;
69
+ getHeight(): number;
70
+ setMinWidth(minWidth: number | string): void;
71
+ setMinHeight(minHeight: number | string): void;
72
+ setMaxWidth(maxWidth: number | string): void;
73
+ setMaxHeight(maxHeight: number | string): void;
74
+ setAspectRatio(aspectRatio: number): void;
75
+ setFlexGrow(flexGrow: number): void;
76
+ setFlexShrink(flexShrink: number): void;
77
+ setFlexBasis(flexBasis: number | string): void;
78
+ setRowGap(rowGap: number): void;
79
+ setColumnGap(columnGap: number): void;
80
+ setTop(top: number | string): void;
81
+ setLeft(left: number | string): void;
82
+ setRight(right: number | string): void;
83
+ setBottom(bottom: number | string): void;
84
+ setObjectFit(objectFit: import('./types/DisplayObject').ObjectFit): void;
85
+ setObjectPosition(objectPosition: import('./types/DisplayObject').ObjectPosition): void;
86
+ setTransformOrigin(transformOrigin: import('./types/DisplayObject').TransformOrigin): void;
87
+ };
88
+ [x: string]: any;
89
+ };
90
+ export declare class CanvasViewport extends CanvasViewport_base {
91
+ #private;
92
+ private tickSubscription;
93
+ overrideProps: string[];
94
+ viewport: PixiViewport;
95
+ constructor();
96
+ addChild<U extends any[]>(...children: U): U[0];
97
+ addChildAt<T extends ContainerChild | IRenderLayer>(child: T, index: number): T;
98
+ onInit(props: any): void;
99
+ /**
100
+ * Called when the component is mounted to the scene graph.
101
+ * Initializes viewport settings and subscriptions.
102
+ * @param {Element<CanvasViewport>} element - The element being mounted. Its `props` property (of type ViewportProps) contains component properties and context.
103
+ * @param {number} [index] - The index of the component among its siblings.
104
+ */
105
+ onMount(element: Element<any>, index?: number): Promise<void>;
106
+ onUpdate(props: any): void;
107
+ private updateViewportSettings;
108
+ private updateMask;
109
+ /**
110
+ * Called when the component is about to be destroyed.
111
+ * Unsubscribes from the tick observable.
112
+ * @param {Element<any>} parent - The parent element.
113
+ * @param {() => void} [afterDestroy] - An optional callback function to be executed after the component's own destruction logic.
114
+ */
115
+ onDestroy(parent: Element<any>, afterDestroy?: () => void): Promise<void>;
116
+ follow(...args: any[]): any;
117
+ get plugins(): import('pixi-viewport').PluginManager;
118
+ }
119
+ export declare function Viewport(props: ViewportProps): Element<ComponentInstance>;
120
+ export {};
121
+ //# sourceMappingURL=Viewport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Viewport.d.ts","sourceRoot":"","sources":["../../src/components/Viewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAsC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAiB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAuB,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA0B5E,MAAM,WAAW,aAAc,SAAQ,KAAK;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,GAAG;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;;;;;;;;;;;;;;;;;;;;;;iBAiEW,CAAA;kBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA/D7B,qBAAa,cAAe,SAAQ,mBAAwB;;IACxD,OAAO,CAAC,gBAAgB,CAAc;IACtC,aAAa,WAAY;IAElB,QAAQ,EAAE,YAAY,CAAA;;IAqB7B,QAAQ,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAI/C,UAAU,CAAC,CAAC,SAAS,cAAc,GAAG,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;IAI/E,MAAM,CAAC,KAAK,KAAA;IAOZ;;;;;OAKG;IACG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCnE,QAAQ,CAAC,KAAK,KAAA;IAKd,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,CAAC,UAAU;IAQlB;;;;;OAKG;IACG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/E,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAIrB,IAAI,OAAO,0CAEV;CACJ;AAID,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,8BAE5C"}
@@ -13,7 +13,8 @@ export { NineSliceSprite } from './NineSliceSprite';
13
13
  export { type ComponentInstance } from './DisplayObject';
14
14
  export { DOMContainer } from './DOMContainer';
15
15
  export { DOMElement } from './DOMElement';
16
+ export { DOMSprite } from './DOMSprite';
16
17
  export { Button, ButtonState, type ButtonProps, type ButtonStyle } from './Button';
17
18
  export { Joystick, type JoystickSettings } from './Joystick';
18
- export { FocusContainer, type FocusContainerProps } from './FocusContainer';
19
+ export { FocusContainer, Navigation, type FocusContainerProps } from './FocusContainer';
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AAClF,OAAO,EAAE,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AAClF,OAAO,EAAE,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -32,20 +32,20 @@ export declare class ControlsDirective extends Directive {
32
32
  * Initialize the controls directive
33
33
  * Sets up keyboard, gamepad, and joystick controls if available
34
34
  */
35
- onInit(element: Element): void;
35
+ onInit(element: Element<any>): void;
36
36
  /**
37
37
  * Mount hook (no specific action needed)
38
38
  */
39
- onMount(element: Element): void;
39
+ onMount(element: Element<any>): void;
40
40
  /**
41
41
  * Update controls configuration
42
42
  * Updates both keyboard and gamepad controls
43
43
  */
44
- onUpdate(props: any, element: Element): void;
44
+ onUpdate(props: any, element: Element<any>): void;
45
45
  /**
46
46
  * Cleanup and destroy all control systems
47
47
  */
48
- onDestroy(element: Element): void;
48
+ onDestroy(element: Element<any>): void;
49
49
  /**
50
50
  * Get a control by input name
51
51
  * Delegates to keyboard controls (primary system)
@@ -1 +1 @@
1
- {"version":3,"file":"Controls.d.ts","sourceRoot":"","sources":["../../src/directives/Controls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAmB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAgB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,oBAAoB,CAAC;AAItE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,iBAAkB,SAAQ,SAAS;IAC5C,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,OAAO,CAAwB;IAEvC;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO;IA6CvB;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO;IAExB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO;IAsBrC;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,OAAO;IAwB1B;;;;;;OAMG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM;IAI5B;;;;;OAKG;IACH,WAAW;;;IAIX;;;;;;;;OAQG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhG;;;OAGG;IACH,UAAU;IAYV;;;OAGG;IACH,YAAY;IAYZ;;;;;OAKG;IACH,IAAI,OAAO,IAAI,QAAQ,CAEtB;IAED;;;;OAIG;IACH,IAAI,QAAQ,IAAI,gBAAgB,GAAG,IAAI,CAEtC;IAED;;;;OAIG;IACH,IAAI,OAAO,IAAI,eAAe,GAAG,IAAI,CAEpC;IAED;;;;OAIG;IACH,IAAI,QAAQ,IAAI,gBAAgB,GAAG,IAAI,CAEtC;CACJ"}
1
+ {"version":3,"file":"Controls.d.ts","sourceRoot":"","sources":["../../src/directives/Controls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAmB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAgB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,oBAAoB,CAAC;AAItE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,iBAAkB,SAAQ,SAAS;IAC5C,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,OAAO,CAAwB;IAEvC;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;IA6C5B;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;IAsB1C;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;IAwB/B;;;;;;OAMG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM;IAI5B;;;;;OAKG;IACH,WAAW;;;IAIX;;;;;;;;OAQG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhG;;;OAGG;IACH,UAAU;IAYV;;;OAGG;IACH,YAAY;IAYZ;;;;;OAKG;IACH,IAAI,OAAO,IAAI,QAAQ,CAEtB;IAED;;;;OAIG;IACH,IAAI,QAAQ,IAAI,gBAAgB,GAAG,IAAI,CAEtC;IAED;;;;OAIG;IACH,IAAI,OAAO,IAAI,eAAe,GAAG,IAAI,CAEpC;IAED;;;;OAIG;IACH,IAAI,QAAQ,IAAI,gBAAgB,GAAG,IAAI,CAEtC;CACJ"}
@@ -3,6 +3,7 @@ export interface ControlOptions {
3
3
  bind: string | string[];
4
4
  keyUp?: Function;
5
5
  keyDown?: Function;
6
+ throttle?: number;
6
7
  delay?: number | {
7
8
  duration: number;
8
9
  otherControls?: (string)[];
@@ -1 +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,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"}
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"}