stage-js 1.0.0-alpha.9 → 1.0.1

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 (221) hide show
  1. package/LICENSE.md +3 -3
  2. package/dist/stage.d.ts +228 -122
  3. package/dist/stage.js +573 -455
  4. package/dist/stage.js.map +1 -0
  5. package/dist/stage.umd.cjs +573 -455
  6. package/dist/stage.umd.cjs.map +1 -0
  7. package/package.json +13 -4
  8. package/src/common/browser.ts +1 -1
  9. package/src/common/matrix.ts +4 -0
  10. package/src/common/stats.ts +1 -1
  11. package/src/core/anim.ts +54 -46
  12. package/src/core/{core.ts → component.ts} +174 -125
  13. package/src/core/easing.ts +230 -215
  14. package/src/core/monotype.ts +18 -9
  15. package/src/core/pin.ts +100 -32
  16. package/src/core/pointer.ts +18 -18
  17. package/src/core/root.ts +103 -74
  18. package/src/core/sprite.ts +33 -43
  19. package/src/core/transition.ts +36 -36
  20. package/src/main.ts +1 -1
  21. package/src/texture/atlas.ts +20 -11
  22. package/src/texture/canvas.ts +12 -6
  23. package/src/texture/image.ts +22 -9
  24. package/src/texture/selection.ts +25 -1
  25. package/src/texture/texture.ts +68 -68
  26. package/.eslintrc.json +0 -36
  27. package/.gitattributes +0 -1
  28. package/.prettierignore +0 -2
  29. package/.prettierrc.json +0 -3
  30. package/CHANGELOG.md +0 -173
  31. package/docs/package-lock.json +0 -12922
  32. package/docs/package.json +0 -18
  33. package/docs/pages/anim.md +0 -34
  34. package/docs/pages/api/classes/Anim.md +0 -1433
  35. package/docs/pages/api/classes/Atlas.md +0 -260
  36. package/docs/pages/api/classes/CanvasTexture.md +0 -310
  37. package/docs/pages/api/classes/ImageTexture.md +0 -239
  38. package/docs/pages/api/classes/Matrix.md +0 -283
  39. package/docs/pages/api/classes/Monotype.md +0 -1367
  40. package/docs/pages/api/classes/Node.md +0 -1090
  41. package/docs/pages/api/classes/Pin.md +0 -41
  42. package/docs/pages/api/classes/PipeTexture.md +0 -230
  43. package/docs/pages/api/classes/ResizableTexture.md +0 -218
  44. package/docs/pages/api/classes/Root.md +0 -1476
  45. package/docs/pages/api/classes/Sprite.md +0 -1361
  46. package/docs/pages/api/classes/Texture.md +0 -174
  47. package/docs/pages/api/classes/TextureSelection.md +0 -61
  48. package/docs/pages/api/classes/Transition.md +0 -453
  49. package/docs/pages/api/functions/anim.md +0 -13
  50. package/docs/pages/api/functions/atlas.md +0 -11
  51. package/docs/pages/api/functions/box.md +0 -11
  52. package/docs/pages/api/functions/canvas.md +0 -9
  53. package/docs/pages/api/functions/column.md +0 -11
  54. package/docs/pages/api/functions/create.md +0 -11
  55. package/docs/pages/api/functions/layer.md +0 -11
  56. package/docs/pages/api/functions/layout.md +0 -7
  57. package/docs/pages/api/functions/maximize.md +0 -7
  58. package/docs/pages/api/functions/minimize.md +0 -7
  59. package/docs/pages/api/functions/monotype.md +0 -11
  60. package/docs/pages/api/functions/mount.md +0 -11
  61. package/docs/pages/api/functions/pause.md +0 -7
  62. package/docs/pages/api/functions/resume.md +0 -7
  63. package/docs/pages/api/functions/row.md +0 -11
  64. package/docs/pages/api/functions/sprite.md +0 -11
  65. package/docs/pages/api/functions/texture.md +0 -15
  66. package/docs/pages/api/index.md +0 -72
  67. package/docs/pages/api/interfaces/AtlasDefinition.md +0 -109
  68. package/docs/pages/api/interfaces/AtlasTextureDefinition.md +0 -49
  69. package/docs/pages/api/interfaces/MatrixValue.md +0 -37
  70. package/docs/pages/api/interfaces/Vec2Value.md +0 -13
  71. package/docs/pages/api/type-aliases/FitMode.md +0 -7
  72. package/docs/pages/api/type-aliases/LegacyFitMode.md +0 -10
  73. package/docs/pages/api/type-aliases/NodeEventListener.md +0 -17
  74. package/docs/pages/api/type-aliases/NodeTickListener.md +0 -21
  75. package/docs/pages/api/type-aliases/ResizableTextureMode.md +0 -3
  76. package/docs/pages/api/type-aliases/TextureSelectionInput.md +0 -11
  77. package/docs/pages/api/type-aliases/TextureSelectionInputArray.md +0 -3
  78. package/docs/pages/api/type-aliases/TextureSelectionInputFactory.md +0 -11
  79. package/docs/pages/api/type-aliases/TextureSelectionInputMap.md +0 -3
  80. package/docs/pages/api/type-aliases/TextureSelectionInputOne.md +0 -3
  81. package/docs/pages/api/type-aliases/TransitionEndListener.md +0 -11
  82. package/docs/pages/api/type-aliases/TransitionOptions.md +0 -17
  83. package/docs/pages/api/type-aliases/Viewbox.md +0 -27
  84. package/docs/pages/api/type-aliases/Viewport.md +0 -19
  85. package/docs/pages/api/variables/POINTER_CANCEL.md +0 -3
  86. package/docs/pages/api/variables/POINTER_CLICK.md +0 -3
  87. package/docs/pages/api/variables/POINTER_END.md +0 -3
  88. package/docs/pages/api/variables/POINTER_MOVE.md +0 -3
  89. package/docs/pages/api/variables/POINTER_START.md +0 -3
  90. package/docs/pages/api/variables/math.md +0 -3
  91. package/docs/pages/atlas.md +0 -42
  92. package/docs/pages/events.md +0 -47
  93. package/docs/pages/hello-world.md +0 -60
  94. package/docs/pages/index.md +0 -15
  95. package/docs/pages/install.md +0 -24
  96. package/docs/pages/layout.md +0 -40
  97. package/docs/pages/loop.md +0 -25
  98. package/docs/pages/monotype.md +0 -32
  99. package/docs/pages/news/v1-0.md +0 -37
  100. package/docs/pages/pin.md +0 -128
  101. package/docs/pages/setup.md +0 -46
  102. package/docs/pages/sprite.md +0 -17
  103. package/docs/pages/texture.md +0 -4
  104. package/docs/pages/transition.md +0 -46
  105. package/docs/pages/tree.md +0 -77
  106. package/docs/styles.css +0 -0
  107. package/docs/tsconfig.json +0 -24
  108. package/docs/vercel.json +0 -8
  109. package/docs/vocs.config.ts +0 -113
  110. package/example/basic-anim/app.js +0 -22
  111. package/example/basic-anim/index.html +0 -14
  112. package/example/basic-drawing/app.js +0 -53
  113. package/example/basic-drawing/index.html +0 -19
  114. package/example/basic-example/app.js +0 -33
  115. package/example/basic-example/index.html +0 -19
  116. package/example/basic-example/sample.png +0 -0
  117. package/example/basic-grid/app.js +0 -38
  118. package/example/basic-grid/index.html +0 -19
  119. package/example/basic-layout/app.js +0 -72
  120. package/example/basic-layout/index.html +0 -19
  121. package/example/basic-matrix/app.js +0 -35
  122. package/example/basic-matrix/box.png +0 -0
  123. package/example/basic-matrix/index.html +0 -19
  124. package/example/basic-mouse/app.js +0 -76
  125. package/example/basic-mouse/index.html +0 -19
  126. package/example/basic-package/app.js +0 -22
  127. package/example/basic-package/index.html +0 -19
  128. package/example/basic-package/main.png +0 -0
  129. package/example/basic-package/main.svg +0 -6
  130. package/example/basic-pinwheel/app.js +0 -24
  131. package/example/basic-pinwheel/index.html +0 -19
  132. package/example/basic-pinwheel/pinwheel.png +0 -0
  133. package/example/basic-row/app.js +0 -27
  134. package/example/basic-row/index.html +0 -19
  135. package/example/basic-row-fix/app.js +0 -33
  136. package/example/basic-row-fix/index.html +0 -19
  137. package/example/basic-stretch/app.js +0 -24
  138. package/example/basic-stretch/index.html +0 -19
  139. package/example/basic-string/app.js +0 -22
  140. package/example/basic-string/index.html +0 -19
  141. package/example/basic-tile/app.js +0 -24
  142. package/example/basic-tile/index.html +0 -19
  143. package/example/basic-tween/app.js +0 -49
  144. package/example/basic-tween/index.html +0 -19
  145. package/example/basic-window/app.js +0 -42
  146. package/example/basic-window/index.html +0 -19
  147. package/example/common/bezier.js +0 -62
  148. package/example/common/example.css +0 -58
  149. package/example/common/example.png +0 -0
  150. package/example/common/example.svg +0 -23
  151. package/example/common/p2.js +0 -10343
  152. package/example/common/pool.js +0 -92
  153. package/example/common/randomize.js +0 -100
  154. package/example/common/stage-p2.js +0 -451
  155. package/example/common/texture.js +0 -45
  156. package/example/common/timeout.js +0 -47
  157. package/example/example.svg +0 -23
  158. package/example/game-aero/app.js +0 -284
  159. package/example/game-aero/index.html +0 -21
  160. package/example/game-aero/main.png +0 -0
  161. package/example/game-aero/main.svg +0 -29
  162. package/example/game-asteroids/app.js +0 -444
  163. package/example/game-asteroids/index.html +0 -28
  164. package/example/game-asteroids/main.svg +0 -9
  165. package/example/game-breakout/app.js +0 -627
  166. package/example/game-breakout/bg.png +0 -0
  167. package/example/game-breakout/bg.svg +0 -11
  168. package/example/game-breakout/index.html +0 -19
  169. package/example/game-breakout/logo.svg +0 -31
  170. package/example/game-breakout/main.png +0 -0
  171. package/example/game-breakout/main.svg +0 -45
  172. package/example/game-breakout/texture.js +0 -51
  173. package/example/game-o/app.js +0 -1496
  174. package/example/game-o/index.html +0 -14
  175. package/example/game-o/main.png +0 -0
  176. package/example/game-o/textures.js +0 -203
  177. package/example/game-orbit/app.js +0 -497
  178. package/example/game-orbit/art/android.json +0 -13
  179. package/example/game-orbit/art/bg.svg +0 -62
  180. package/example/game-orbit/art/digit.svg +0 -140
  181. package/example/game-orbit/art/game.json +0 -14
  182. package/example/game-orbit/art/icon.svg +0 -128
  183. package/example/game-orbit/art/ios.json +0 -34
  184. package/example/game-orbit/art/main.svg +0 -56
  185. package/example/game-orbit/art/misc.json +0 -10
  186. package/example/game-orbit/art/splash.svg +0 -77
  187. package/example/game-orbit/index.html +0 -19
  188. package/example/game-orbit/media/bg.png +0 -0
  189. package/example/game-orbit/media/digit.png +0 -0
  190. package/example/game-orbit/media/main.png +0 -0
  191. package/example/game-orbit/textures.js +0 -40
  192. package/example/game-samegame/app.js +0 -244
  193. package/example/game-samegame/index.html +0 -19
  194. package/example/game-samegame/main.png +0 -0
  195. package/example/game-samegame/main.svg +0 -29
  196. package/example/game-samegame/textures.js +0 -15
  197. package/example/game-tictactoe/app.js +0 -183
  198. package/example/game-tictactoe/index.html +0 -19
  199. package/example/game-traffic/app.js +0 -383
  200. package/example/game-traffic/base.svg +0 -4
  201. package/example/game-traffic/bg.png +0 -0
  202. package/example/game-traffic/bg.svg +0 -10
  203. package/example/game-traffic/index.html +0 -19
  204. package/example/game-traffic/main.png +0 -0
  205. package/example/game-traffic/map-1.png +0 -0
  206. package/example/game-traffic/map-1.svg +0 -5
  207. package/example/game-traffic/textures.js +0 -24
  208. package/example/index.html +0 -30
  209. package/index.html +0 -6
  210. package/test/atlas-test.js +0 -189
  211. package/test/event-test.js +0 -82
  212. package/test/main-test.js +0 -19
  213. package/test/mouse-test.js +0 -110
  214. package/test/node-test.js +0 -177
  215. package/test/pin-test.js +0 -76
  216. package/test/transition-test.js +0 -40
  217. package/test/util/expect.js +0 -44
  218. package/test/util/memo.js +0 -24
  219. package/tsconfig.json +0 -18
  220. package/typedoc.json +0 -24
  221. package/vite.config.ts +0 -51
package/LICENSE.md CHANGED
@@ -1,7 +1,7 @@
1
- Stage.js <%= pkg.version %>
1
+ Stage.js
2
2
 
3
- @copyright Copyright (c) Ali Shakiba
4
- @license The MIT License (MIT)
3
+ Copyright (c) Ali Shakiba
4
+ The MIT License (MIT)
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  of this software and associated documentation files (the "Software"), to deal
package/dist/stage.d.ts CHANGED
@@ -14,11 +14,15 @@ export interface Vec2Value {
14
14
  y: number;
15
15
  }
16
16
  export declare class Matrix {
17
+ /** x-scale */
17
18
  a: number;
18
19
  b: number;
19
20
  c: number;
21
+ /** y-scale */
20
22
  d: number;
23
+ /** x-translate */
21
24
  e: number;
25
+ /** y-translate */
22
26
  f: number;
23
27
  constructor(a: number, b: number, c: number, d: number, e: number, f: number);
24
28
  constructor(m: MatrixValue);
@@ -42,6 +46,14 @@ export declare class Matrix {
42
46
  * Textures are used to clip and resize image objects.
43
47
  */
44
48
  export declare abstract class Texture {
49
+ /** @hidden */ sx: number;
50
+ /** @hidden */ sy: number;
51
+ /** @hidden */ sw: number;
52
+ /** @hidden */ sh: number;
53
+ /** @hidden */ dx: number;
54
+ /** @hidden */ dy: number;
55
+ /** @hidden */ dw: number;
56
+ /** @hidden */ dh: number;
45
57
  setSourceCoordinate(x: number, y: number): void;
46
58
  setSourceDimension(w: number, h: number): void;
47
59
  setDestinationCoordinate(x: number, y: number): void;
@@ -49,21 +61,28 @@ export declare abstract class Texture {
49
61
  abstract getWidth(): number;
50
62
  abstract getHeight(): number;
51
63
  /**
52
- * Signatures:
53
- * - (): This is used when a sprite draws its textures
54
- * - (sx, sy, sw, sh, dx, dy, dw, dh): This is used when a piped texture passes drawing to it backend.
55
- * - (dx, dy, dw, dh): I guess unused.
56
- *
57
- * Note: sx and sy are added to this._sx and this._sy.
64
+ * Defer draw spec to texture config. This is used when a sprite draws its textures.
58
65
  */
59
66
  draw(context: CanvasRenderingContext2D): void;
60
- draw(context: CanvasRenderingContext2D, x1: number, y1: number, w1: number, h1: number): void;
61
- draw(context: CanvasRenderingContext2D, x1: number, y1: number, w1: number, h1: number, x2: number, y2: number, w2: number, h2: number): void;
67
+ /**
68
+ * This is probably unused.
69
+ * Note: dx, dy are added to this.dx, this.dy.
70
+ */
71
+ draw(context: CanvasRenderingContext2D, dx: number, dy: number, dw: number, dh: number): void;
72
+ /**
73
+ * This is used when a piped texture passes drawing to it backend.
74
+ * Note: sx, sy, dx, dy are added to this.sx, this.sy, this.dx, this.dy.
75
+ */
76
+ draw(context: CanvasRenderingContext2D, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;
62
77
  }
63
78
  export type TextureImageSource = HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | ImageBitmap | OffscreenCanvas;
64
79
  export declare class ImageTexture extends Texture {
65
80
  constructor(source?: TextureImageSource, pixelRatio?: number);
66
81
  setSourceImage(image: TextureImageSource, pixelRatio?: number): void;
82
+ /**
83
+ * Add padding to the image texture. Padding can be negative.
84
+ */
85
+ setPadding(padding: number): void;
67
86
  getWidth(): number;
68
87
  getHeight(): number;
69
88
  }
@@ -77,19 +96,22 @@ export interface AtlasTextureDefinition {
77
96
  right?: number;
78
97
  bottom?: number;
79
98
  }
80
- export type AtlasTextureReferenceOne = AtlasTextureDefinition | string;
81
- export type AtlasTextureReferenceMap = Record<string, AtlasTextureReferenceOne>;
82
- export type AtlasTextureReferenceArray = AtlasTextureReferenceOne[];
99
+ export type MonotypeAtlasTextureDefinition = Record<string, AtlasTextureDefinition | Texture | string>;
100
+ export type AnimAtlasTextureDefinition = (AtlasTextureDefinition | Texture | string)[];
83
101
  export interface AtlasDefinition {
84
102
  name?: string;
85
103
  image?: {
86
- /** @deprecated */
87
- url: string;
88
104
  src: string;
105
+ /** If image is stored with higher resolution */
106
+ ratio?: number;
107
+ } | {
108
+ /** @deprecated Use src instead of url */
109
+ url: string;
89
110
  ratio?: number;
90
111
  };
112
+ /** Point per unit of texture definition, that is grid size */
91
113
  ppu?: number;
92
- textures?: Record<string, AtlasTextureDefinition | AtlasTextureReferenceMap | AtlasTextureReferenceArray>;
114
+ textures?: Record<string, AtlasTextureDefinition | Texture | MonotypeAtlasTextureDefinition | AnimAtlasTextureDefinition>;
93
115
  map?: (texture: AtlasTextureDefinition) => AtlasTextureDefinition;
94
116
  /** @deprecated Use map */
95
117
  filter?: (texture: AtlasTextureDefinition) => AtlasTextureDefinition;
@@ -133,7 +155,18 @@ export declare class TextureSelection {
133
155
  one(subquery?: string): Texture;
134
156
  array(arr?: Texture[]): Texture[];
135
157
  }
158
+ /**
159
+ * Register and load an atlas.
160
+ * If the atlas is already loaded, it is returned immediately.
161
+ * Otherwise, it returns a promise that resolves when the atlas is loaded.
162
+ *
163
+ * You can call this without awaiting the promise, and call `preload()` at the beginning of the app to ensure all atlases are loaded before they are used.
164
+ */
136
165
  export declare function atlas(def: AtlasDefinition | Atlas): Promise<Atlas>;
166
+ /**
167
+ * Preloads all atlases. This is useful to call at the beginning of the app, so that all textures are loaded before they are used.
168
+ */
169
+ export declare const preload: (def: AtlasDefinition | Atlas) => Promise<void>;
137
170
  /**
138
171
  * When query argument is string, this function parses the query; looks up registered atlases; and returns a texture selection object.
139
172
  *
@@ -141,7 +174,7 @@ export declare function atlas(def: AtlasDefinition | Atlas): Promise<Atlas>;
141
174
  */
142
175
  export declare function texture(query: string | TextureSelectionInput): TextureSelection;
143
176
  /**
144
- * @deprecated
177
+ * @hidden @deprecated
145
178
  * - 'in-pad': same as 'contain'
146
179
  * - 'in': similar to 'contain' without centering
147
180
  * - 'out-crop': same as 'cover'
@@ -154,78 +187,119 @@ export type LegacyFitMode = "in" | "out" | "out-crop" | "in-pad";
154
187
  * - 'fill': fill provided space without maintaining aspect ratio
155
188
  */
156
189
  export type FitMode = "contain" | "cover" | "fill" | LegacyFitMode;
157
- /** @hidden */
158
- export interface Pinned {
159
- pin(pin: object): this;
160
- pin(key: string, value: any): this;
161
- pin(key: string): any;
162
- size(w: number, h: number): this;
163
- width(): number;
164
- width(w: number): this;
165
- height(): number;
166
- height(h: number): this;
167
- offset(a: Vec2Value): this;
168
- offset(a: number, b: number): this;
169
- rotate(a: number): this;
170
- skew(a: Vec2Value): this;
171
- skew(a: number, b: number): this;
172
- scale(a: Vec2Value): this;
173
- scale(a: number, b: number): this;
174
- alpha(a: number, ta?: number): this;
175
- }
176
190
  export declare class Pin {
177
191
  reset(): void;
178
192
  toString(): string;
179
193
  absoluteMatrix(): Matrix;
180
194
  relativeMatrix(): Matrix;
181
195
  }
182
- /**
183
- * Easing function formats are:
184
- * - [name]
185
- * - [name\]([params])
186
- * - [name]-[mode]
187
- * - [name]-[mode\]([params])
188
- *
189
- * Easing function names are 'linear', 'quad', 'cubic', 'quart', 'quint', 'sin' (or 'sine'), 'exp' (or 'expo'), 'circle' (or 'circ'), 'bounce', 'poly', 'elastic', 'back'.
190
- *
191
- * Easing modes are 'in', 'out', 'in-out', 'out-in'.
192
- *
193
- * For example, 'linear', 'cubic-in', and 'poly(2)'.
194
- */
195
- export type EasingFunctionName = string;
196
- export type EasingFunction = (p: number) => number;
196
+ export interface SetPinType {
197
+ alpha?: number;
198
+ textureAlpha?: number;
199
+ width?: number;
200
+ height?: number;
201
+ scale?: number;
202
+ scaleX?: number;
203
+ scaleY?: number;
204
+ skew?: number;
205
+ skewX?: number;
206
+ skewY?: number;
207
+ rotation?: number;
208
+ /** Center of scale/skew/rotate */
209
+ pivot?: number;
210
+ /** Center of scale/skew/rotate */
211
+ pivotX?: number;
212
+ /** Center of scale/skew/rotate */
213
+ pivotY?: number;
214
+ /** Offset in parent coordination */
215
+ offset?: number;
216
+ /** Offset in parent coordination */
217
+ offsetX?: number;
218
+ /** Offset in parent coordination */
219
+ offsetY?: number;
220
+ /** A point on parent where this component is offset from, 0 is top/left, 1 is bottom/right */
221
+ align?: number;
222
+ /** A point on parent where this component is offset from, 0 is top/left, 1 is bottom/right */
223
+ alignX?: number;
224
+ /** A point on parent where this component is offset from, 0 is top/left, 1 is bottom/right */
225
+ alignY?: number;
226
+ /** A point on this component which is offset from parent, 0 is top/left, 1 is bottom/right */
227
+ handle?: number;
228
+ /** A point on this component which is offset from parent, 0 is top/left, 1 is bottom/right */
229
+ handleX?: number;
230
+ /** A point on this component which is offset from parent, 0 is top/left, 1 is bottom/right */
231
+ handleY?: number;
232
+ /** @hidden @deprecated Use component.fit() */
233
+ resizeMode?: FitMode;
234
+ /** @hidden @deprecated Use component.fit() */
235
+ resizeWidth?: number;
236
+ /** @hidden @deprecated Use component.fit() */
237
+ resizeHeight?: number;
238
+ /** @hidden @deprecated Use component.fit() */
239
+ scaleMode?: FitMode;
240
+ /** @hidden @deprecated Use component.fit() */
241
+ scaleWidth?: number;
242
+ /** @hidden @deprecated Use component.fit() */
243
+ scaleHeight?: number;
244
+ matrix?: Matrix;
245
+ }
246
+ export interface GetPinType {
247
+ alpha: number;
248
+ textureAlpha: number;
249
+ width: number;
250
+ height: number;
251
+ boxWidth: number;
252
+ boxHeight: number;
253
+ scaleX: number;
254
+ scaleY: number;
255
+ skewX: number;
256
+ skewY: number;
257
+ rotation: number;
258
+ pivotX: number;
259
+ pivotY: number;
260
+ offsetX: number;
261
+ offsetY: number;
262
+ alignX: number;
263
+ alignY: number;
264
+ handleX: number;
265
+ handleY: number;
266
+ }
267
+ export type SetPinKeys = keyof SetPinType;
268
+ export type GetPinKeys = keyof GetPinType;
269
+ export type EasingFunctionQuery = string;
270
+ export type EasingName = "linear" | "linear-in" | "linear-out" | "linear-in-out" | "linear-out-in" | "quad" | "quad-in" | "quad-out" | "quad-in-out" | "quad-out-in" | "cubic" | "cubic-in" | "cubic-out" | "cubic-in-out" | "cubic-out-in" | "quart" | "quart-in" | "quart-out" | "quart-in-out" | "quart-out-in" | "quint" | "quint-in" | "quint-out" | "quint-in-out" | "quint-out-in" | "sin" | "sin-in" | "sin-out" | "sin-in-out" | "sin-out-in" | "sine" | "sine-in" | "sine-out" | "sine-in-out" | "sine-out-in" | "exp" | "exp-in" | "exp-out" | "exp-in-out" | "exp-out-in" | "expo" | "expo-in" | "expo-out" | "expo-in-out" | "expo-out-in" | "circle" | "circle-in" | "circle-out" | "circle-in-out" | "circle-out-in" | "circ" | "circ-in" | "circ-out" | "circ-in-out" | "circ-out-in" | "bounce" | "bounce-in" | "bounce-out" | "bounce-in-out" | "bounce-out-in" | "poly" | "poly-in" | "poly-out" | "poly-in-out" | "poly-out-in" | "elastic" | "elastic-in" | "elastic-out" | "elastic-in-out" | "elastic-out-in" | "back" | "back-in" | "back-out" | "back-in-out" | "back-out-in";
197
271
  export type TransitionOptions = {
198
272
  duration?: number;
199
273
  delay?: number;
200
274
  append?: boolean;
201
275
  };
202
- export type TransitionEndListener = (this: Node$1) => void;
203
- export declare class Transition implements Pinned {
204
- constructor(owner: Node$1, options?: TransitionOptions);
276
+ export type TransitionEndListener = (this: Component) => void;
277
+ export declare class Transition {
278
+ constructor(owner: Component, options?: TransitionOptions);
205
279
  tween(opts?: TransitionOptions): Transition;
206
280
  tween(duration?: number, delay?: number): Transition;
207
281
  duration(duration: number): this;
208
282
  delay(delay: number): this;
209
- ease(easing: EasingFunctionName | EasingFunction): this;
283
+ ease(easing: EasingName, ...params: number[]): this;
284
+ ease(easing: (p: number) => number): this;
285
+ /** @hidden */
286
+ ease(easing: EasingFunctionQuery): this;
210
287
  done(fn: TransitionEndListener): this;
211
288
  hide(): this;
212
289
  remove(): this;
213
- pin(key: string, value: any): this;
214
- pin(obj: object): this;
215
- pin(key: string): any;
290
+ pin(key: SetPinKeys, value: any): this;
291
+ pin(obj: SetPinType): this;
216
292
  /**
217
- * @deprecated Use .done(fn) instead.
293
+ * @hidden @deprecated Use .done(fn) instead.
218
294
  */
219
295
  then(fn: TransitionEndListener): this;
220
296
  /**
221
- * @deprecated this doesn't do anything anymore, call transition on the node instead.
297
+ * @hidden @deprecated this doesn't do anything anymore, call transition on the component instead.
222
298
  */
223
299
  clear(forward: boolean): this;
224
300
  size(w: number, h: number): this;
225
301
  width(w: number): this;
226
- width(): number;
227
302
  height(h: number): this;
228
- height(): number;
229
303
  offset(value: Vec2Value): this;
230
304
  offset(x: number, y: number): this;
231
305
  rotate(a: number): this;
@@ -233,45 +307,53 @@ export declare class Transition implements Pinned {
233
307
  skew(x: number, y: number): this;
234
308
  scale(value: Vec2Value): this;
235
309
  scale(x: number, y: number): this;
310
+ scale(s: number): this;
236
311
  alpha(a: number, ta?: number): this;
237
312
  }
238
- export interface NodeVisitor<D> {
313
+ export interface ComponentVisitor<D> {
239
314
  reverse?: boolean;
240
315
  visible?: boolean;
241
- start?: (node: Node$1, data?: D) => boolean | void;
242
- end?: (node: Node$1, data?: D) => boolean | void;
316
+ start?: (component: Component, data?: D) => boolean | void;
317
+ end?: (component: Component, data?: D) => boolean | void;
243
318
  }
244
- export type NodeTickListener<T> = (this: T, elapsed: number, now: number, last: number) => boolean | void;
245
- export type NodeEventListener<T> = (this: T, ...args: any[]) => void;
246
- /** @deprecated Use layout() */
247
- export declare function create(): Node$1;
248
- /** @deprecated Use maximize() */
249
- export declare function layer(): Node$1;
250
- /** @deprecated Use minimize() */
251
- export declare function box(): Node$1;
252
- export declare function layout(): Node$1;
253
- export declare function row(align: number): Node$1;
254
- export declare function column(align: number): Node$1;
255
- export declare function minimize(): Node$1;
256
- export declare function maximize(): Node$1;
257
- declare class Node$1 implements Pinned {
319
+ export type ComponentTickListener<T> = (this: T, elapsed: number, now: number, last: number) => boolean | void;
320
+ export type ComponentEventListener<T> = (this: T, ...args: any[]) => void;
321
+ /** @hidden @deprecated Use component() */
322
+ export declare function create(): Component;
323
+ /** @hidden @deprecated Use maximize() */
324
+ export declare function layer(): Component;
325
+ /** @hidden @deprecated Use minimize() */
326
+ export declare function box(): Component;
327
+ /** @hidden @deprecated */
328
+ export declare function layout(): Component;
329
+ export declare function component(): Component;
330
+ export declare function row(align: number): Component;
331
+ export declare function column(align: number): Component;
332
+ export declare function minimize(): Component;
333
+ export declare function maximize(): Component;
334
+ export declare class Component {
258
335
  MAX_ELAPSE: number;
259
336
  constructor();
260
337
  matrix(relative?: boolean): Matrix;
261
- /** @hidden */
338
+ /** @hidden @deprecated */
262
339
  getPixelRatio(): number;
263
- pin(key: string): any;
264
- pin(key: string, value: any): this;
265
- pin(obj: object): this;
340
+ /** @hidden This is not accurate before first tick */
341
+ getDevicePixelRatio(): number;
342
+ /** @hidden This is not accurate before first tick */
343
+ getLogicalPixelRatio(): number;
344
+ pin(key: GetPinKeys): any;
345
+ pin(key: SetPinKeys, value: any): this;
346
+ pin(obj: SetPinType): this;
266
347
  pin(): Pin;
267
348
  fit(width: number, height: number, mode?: FitMode): this;
349
+ /** @hidden @deprecated */
268
350
  fit(fit: object): this;
269
351
  /** @hidden @deprecated Use fit */
270
352
  scaleTo(a: any, b?: any, c?: any): this;
271
353
  toString(): string;
272
- /** @deprecated Use label() */
354
+ /** @hidden @deprecated Use label() */
273
355
  id(): string;
274
- /** @deprecated Use label() */
356
+ /** @hidden @deprecated Use label() */
275
357
  id(label: string): this;
276
358
  label(): string;
277
359
  label(label: string): this;
@@ -281,36 +363,44 @@ declare class Node$1 implements Pinned {
281
363
  visible(): boolean;
282
364
  hide(): this;
283
365
  show(): this;
284
- parent(): Node$1;
285
- next(visible?: boolean): Node$1;
286
- prev(visible?: boolean): Node$1;
287
- first(visible?: boolean): Node$1;
288
- last(visible?: boolean): Node$1;
289
- visit<P>(visitor: NodeVisitor<P>, payload?: P): boolean | void;
290
- append(...child: Node$1[]): this;
291
- append(child: Node$1[]): this;
292
- prepend(...child: Node$1[]): this;
293
- prepend(child: Node$1[]): this;
294
- appendTo(parent: Node$1): this;
295
- prependTo(parent: Node$1): this;
296
- insertNext(sibling: Node$1, more?: Node$1): this;
297
- insertPrev(sibling: Node$1, more?: Node$1): this;
298
- insertAfter(prev: Node$1): this;
299
- insertBefore(next: Node$1): this;
300
- remove(child?: Node$1, more?: any): this;
366
+ parent(): Component;
367
+ next(visible?: boolean): Component;
368
+ prev(visible?: boolean): Component;
369
+ first(visible?: boolean): Component;
370
+ last(visible?: boolean): Component;
371
+ visit<P>(visitor: ComponentVisitor<P>, payload?: P): boolean | void;
372
+ append(...child: Component[]): this;
373
+ append(child: Component[]): this;
374
+ prepend(...child: Component[]): this;
375
+ prepend(child: Component[]): this;
376
+ appendTo(parent: Component): this;
377
+ prependTo(parent: Component): this;
378
+ insertNext(sibling: Component, more?: Component): this;
379
+ insertPrev(sibling: Component, more?: Component): this;
380
+ insertAfter(prev: Component): this;
381
+ insertBefore(next: Component): this;
382
+ remove(child?: Component, more?: any): this;
301
383
  empty(): this;
302
384
  touch(): this;
385
+ /** @hidden */
303
386
  prerender(): void;
387
+ /** @hidden */
388
+ prerenderTexture(): void;
389
+ /** @hidden */
390
+ private renderedBefore;
391
+ /** @hidden */
304
392
  render(context: CanvasRenderingContext2D): void;
305
- tick(callback: NodeTickListener<this>, before?: boolean): void;
306
- untick(callback: NodeTickListener<this>): void;
393
+ /** @hidden */
394
+ renderTexture(context: CanvasRenderingContext2D): void;
395
+ tick(callback: ComponentTickListener<this>, before?: boolean): void;
396
+ untick(callback: ComponentTickListener<this>): void;
307
397
  timeout(callback: () => any, time: number): void;
308
398
  setTimeout(callback: () => any, time: number): (t: number) => boolean;
309
- clearTimeout(timer: NodeTickListener<this>): void;
310
- on(types: string, listener: NodeEventListener<this>): this;
311
- off(types: string, listener: NodeEventListener<this>): this;
312
- listeners(type: string): NodeEventListener<Node$1>[];
313
- publish(name: string, args?: any): number;
399
+ clearTimeout(timer: ComponentTickListener<this>): void;
400
+ on(types: string, listener: ComponentEventListener<this>): this;
401
+ off(types: string, listener: ComponentEventListener<this>): this;
402
+ listeners(type: string): ComponentEventListener<Component>[];
403
+ publish(name: string, args?: any[]): number;
314
404
  size(w: number, h: number): this;
315
405
  width(w: number): this;
316
406
  width(): number;
@@ -323,15 +413,18 @@ declare class Node$1 implements Pinned {
323
413
  skew(x: number, y: number): this;
324
414
  scale(value: Vec2Value): this;
325
415
  scale(x: number, y: number): this;
416
+ scale(s: number): this;
326
417
  alpha(a: number, ta?: number): this;
327
418
  tween(opts?: TransitionOptions): Transition;
328
419
  tween(duration?: number, delay?: number, append?: boolean): Transition;
329
420
  row(align: number): this;
330
421
  column(align: number): this;
331
- align(type: "row" | "column", align: number): this;
332
- /** @deprecated Use minimize() */
422
+ /** @hidden @deprecated This is replaced with direction to avoid name collision with pin.align */
423
+ align(direction: "row" | "column", align: number): this;
424
+ direction(direction: "row" | "column", align: number): this;
425
+ /** @hidden @deprecated Use minimize() */
333
426
  box(): this;
334
- /** @deprecated Use minimize() */
427
+ /** @hidden @deprecated Use minimize() */
335
428
  layer(): this;
336
429
  /**
337
430
  * Set size to match largest child size.
@@ -351,15 +444,17 @@ declare class Node$1 implements Pinned {
351
444
  spacing(space: number): this;
352
445
  }
353
446
  export declare function sprite(frame?: TextureSelectionInput): Sprite;
354
- export declare class Sprite extends Node$1 {
447
+ export declare class Sprite extends Component {
355
448
  constructor();
356
449
  texture(frame: TextureSelectionInput): this;
357
450
  /** @deprecated */
358
451
  image(frame: TextureSelectionInput): this;
359
452
  tile(inner?: boolean): this;
360
453
  stretch(inner?: boolean): this;
361
- prerender(): void;
362
- render(context: CanvasRenderingContext2D): void;
454
+ /** @hidden */
455
+ prerenderTexture(): void;
456
+ /** @hidden */
457
+ renderTexture(context: CanvasRenderingContext2D): void;
363
458
  }
364
459
  export type CanvasTextureDrawer = (this: CanvasTexture) => void;
365
460
  export type CanvasTextureMemoizer = (this: CanvasTexture) => any;
@@ -375,15 +470,17 @@ export type LegacyCanvasSpriteDrawer = (ratio: number, texture: CanvasTexture, s
375
470
  export declare class CanvasTexture extends ImageTexture {
376
471
  constructor();
377
472
  /**
378
- * Note: provided width and height will be texture size, and canvas size is texture size multiply by pixelRatio.
473
+ * Set texture size to given width and height, and set canvas size to texture size multiply by pixelRatio.
379
474
  */
380
- setSize(textureWidth: number, textureHeight: number, pixelRatio?: number): void;
475
+ setSize(destWidth: number, destHeight: number, pixelRatio?: number): void;
381
476
  getContext(type?: string, attributes?: any): CanvasRenderingContext2D;
382
477
  /**
383
- * @experimental
478
+ * @hidden @experimental
384
479
  *
385
480
  * This is the ratio of screen pixel to this canvas pixel.
386
481
  */
482
+ getDevicePixelRatio(): number;
483
+ /** @hidden @deprecated */
387
484
  getOptimalPixelRatio(): number;
388
485
  setMemoizer(memoizer: CanvasTextureMemoizer): void;
389
486
  setDrawer(drawer: CanvasTextureDrawer): void;
@@ -446,7 +543,7 @@ export type Viewbox = {
446
543
  height: number;
447
544
  mode?: FitMode;
448
545
  };
449
- export declare class Root extends Node$1 {
546
+ export declare class Root extends Component {
450
547
  canvas: HTMLCanvasElement | null;
451
548
  dom: HTMLCanvasElement | null;
452
549
  context: CanvasRenderingContext2D | null;
@@ -455,6 +552,7 @@ export declare class Root extends Node$1 {
455
552
  sleep: boolean;
456
553
  constructor();
457
554
  mount: (configs?: RootConfig) => void;
555
+ resizeCanvas(): void;
458
556
  /** @hidden */
459
557
  debugDrawAxis: number;
460
558
  private renderDebug;
@@ -483,22 +581,26 @@ export declare class Root extends Node$1 {
483
581
  flipY(y: boolean): this;
484
582
  }
485
583
  export declare function anim(frames: string | TextureSelectionInputArray, fps?: number): Anim;
486
- export declare class Anim extends Node$1 {
584
+ export declare class Anim extends Component {
487
585
  constructor();
586
+ /** @hidden */
587
+ renderTexture(context: CanvasRenderingContext2D): void;
488
588
  fps(fps?: number): number | this;
489
589
  /** @deprecated Use frames */
490
590
  setFrames(frames: string | TextureSelectionInputArray): this;
491
591
  frames(frames: string | TextureSelectionInputArray): this;
492
592
  length(): number;
493
593
  gotoFrame(frame: number, resize?: boolean): this;
494
- moveFrame(move: any): this;
495
- repeat(repeat: any, callback: any): this;
594
+ moveFrame(move: number): this;
595
+ repeat(repeat: number, callback?: () => void): this;
496
596
  play(frame?: number): this;
497
597
  stop(frame?: number): this;
498
598
  }
499
599
  export declare function monotype(chars: string | Record<string, Texture> | ((char: string) => Texture)): Monotype;
500
- export declare class Monotype extends Node$1 {
600
+ export declare class Monotype extends Component {
501
601
  constructor();
602
+ /** @hidden */
603
+ renderTexture(context: CanvasRenderingContext2D): void;
502
604
  /** @deprecated Use frames */
503
605
  setFont(frames: string | Record<string, Texture> | ((char: string) => Texture)): this;
504
606
  frames(frames: string | Record<string, Texture> | ((char: string) => Texture)): this;
@@ -508,7 +610,11 @@ export declare class Monotype extends Node$1 {
508
610
  }
509
611
 
510
612
  export {
511
- Node$1 as Node,
613
+ Component as Node,
614
+ Monotype as Str,
615
+ Sprite as Image,
616
+ monotype as string,
617
+ sprite as image,
512
618
  };
513
619
 
514
620
  export {};