modern-canvas 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -471,6 +471,9 @@ class CoreObject extends EventEmitter {
471
471
  _changedProperties = /* @__PURE__ */ new Set();
472
472
  _updatingPromise = Promise.resolve();
473
473
  _updating = false;
474
+ is(target) {
475
+ return Boolean(target && this.instanceId === target.instanceId);
476
+ }
474
477
  async _enqueueUpdate() {
475
478
  this._updating = true;
476
479
  try {
@@ -2230,7 +2233,7 @@ class MainLoop extends CoreObject {
2230
2233
  start(process) {
2231
2234
  if (!this._starting) {
2232
2235
  this._starting = true;
2233
- this.removeAllListeners();
2236
+ this.off("process");
2234
2237
  this.on("process", process);
2235
2238
  Ticker.on(this._onNextTick, { sort: 0 });
2236
2239
  }
@@ -5929,7 +5932,7 @@ exports.Node = class Node extends CoreObject {
5929
5932
  }
5930
5933
  setTree(tree) {
5931
5934
  const oldTree = this._tree;
5932
- if (tree !== oldTree) {
5935
+ if (!tree?.is(oldTree)) {
5933
5936
  if (oldTree) {
5934
5937
  this.emit("treeExit", oldTree);
5935
5938
  }
@@ -6261,9 +6264,6 @@ exports.Node = class Node extends CoreObject {
6261
6264
  });
6262
6265
  return this;
6263
6266
  }
6264
- is(target) {
6265
- return Boolean(target && this.instanceId === target.instanceId);
6266
- }
6267
6267
  /** override */
6268
6268
  _ready() {
6269
6269
  }
package/dist/index.d.cts CHANGED
@@ -162,7 +162,7 @@ declare class EventEmitter {
162
162
  hasEventListener(event: string): boolean;
163
163
  on(type: string, listener: EventListenerValue, options?: EventListenerOptions): any;
164
164
  once(type: string, listener: EventListenerValue): this;
165
- off(type: string, listener: EventListenerValue, options?: EventListenerOptions): this;
165
+ off(type: string, listener?: EventListenerValue, options?: EventListenerOptions): this;
166
166
  emit(type: string, ...args: any[]): boolean;
167
167
  }
168
168
 
@@ -171,7 +171,8 @@ interface CoreObjectEventMap {
171
171
  }
172
172
  interface CoreObject {
173
173
  on: (<K extends keyof CoreObjectEventMap>(type: K, listener: CoreObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
174
- off: (<K extends keyof CoreObjectEventMap>(type: K, listener: CoreObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
174
+ once: (<K extends keyof CoreObjectEventMap>(type: K, listener: CoreObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
175
+ off: (<K extends keyof CoreObjectEventMap>(type: K, listener?: CoreObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
175
176
  emit: (<K extends keyof CoreObjectEventMap>(type: K, ...args: Parameters<CoreObjectEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
176
177
  }
177
178
  declare class CoreObject extends EventEmitter {
@@ -181,6 +182,7 @@ declare class CoreObject extends EventEmitter {
181
182
  protected _changedProperties: Set<PropertyKey>;
182
183
  protected _updatingPromise: Promise<void>;
183
184
  protected _updating: boolean;
185
+ is(target: CoreObject | undefined | null): boolean;
184
186
  protected _enqueueUpdate(): Promise<void>;
185
187
  protected _performUpdate(): void;
186
188
  protected _update(changed: Map<PropertyKey, any>): void;
@@ -203,7 +205,8 @@ interface RefCountedEventMap extends CoreObjectEventMap {
203
205
  }
204
206
  interface RefCounted {
205
207
  on: (<K extends keyof RefCountedEventMap>(type: K, listener: RefCountedEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
206
- off: (<K extends keyof RefCountedEventMap>(type: K, listener: RefCountedEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
208
+ once: (<K extends keyof RefCountedEventMap>(type: K, listener: RefCountedEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
209
+ off: (<K extends keyof RefCountedEventMap>(type: K, listener?: RefCountedEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
207
210
  emit: (<K extends keyof RefCountedEventMap>(type: K, ...args: Parameters<RefCountedEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
208
211
  }
209
212
  declare class RefCounted extends CoreObject {
@@ -250,7 +253,8 @@ interface InputEventMap {
250
253
  type InputEventKey = keyof InputEventMap;
251
254
  interface Input {
252
255
  on: (<K extends keyof InputEventMap>(type: K, listener: InputEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
253
- off: (<K extends keyof InputEventMap>(type: K, listener: InputEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
256
+ once: (<K extends keyof InputEventMap>(type: K, listener: InputEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
257
+ off: (<K extends keyof InputEventMap>(type: K, listener?: InputEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
254
258
  emit: (<K extends keyof InputEventMap>(type: K, ...args: Parameters<InputEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
255
259
  }
256
260
  declare class Input extends EventEmitter {
@@ -293,7 +297,8 @@ interface ResourceEventMap extends RefCountedEventMap {
293
297
  }
294
298
  interface Resource {
295
299
  on: (<K extends keyof ResourceEventMap>(type: K, listener: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
296
- off: (<K extends keyof ResourceEventMap>(type: K, listener: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
300
+ once: (<K extends keyof ResourceEventMap>(type: K, listener: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
301
+ off: (<K extends keyof ResourceEventMap>(type: K, listener?: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
297
302
  emit: (<K extends keyof ResourceEventMap>(type: K, ...args: Parameters<ResourceEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
298
303
  }
299
304
  declare class Resource extends RefCounted {
@@ -580,7 +585,8 @@ interface MainLoopEventMap extends CoreObjectEventMap {
580
585
  }
581
586
  interface MainLoop {
582
587
  on: (<K extends keyof MainLoopEventMap>(type: K, listener: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
583
- off: (<K extends keyof MainLoopEventMap>(type: K, listener: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
588
+ once: (<K extends keyof MainLoopEventMap>(type: K, listener: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
589
+ off: (<K extends keyof MainLoopEventMap>(type: K, listener?: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
584
590
  emit: (<K extends keyof EventListenerOptions>(type: K, ...args: Parameters<EventListenerOptions[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
585
591
  }
586
592
  declare class MainLoop extends CoreObject {
@@ -1525,7 +1531,8 @@ interface TimelineProperties extends NodeProperties {
1525
1531
  }
1526
1532
  interface Timeline {
1527
1533
  on: (<K extends keyof TimelineEventMap>(type: K, listener: TimelineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1528
- off: (<K extends keyof TimelineEventMap>(type: K, listener: TimelineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1534
+ once: (<K extends keyof TimelineEventMap>(type: K, listener: TimelineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1535
+ off: (<K extends keyof TimelineEventMap>(type: K, listener?: TimelineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1529
1536
  emit: (<K extends keyof TimelineEventMap>(type: K, ...args: Parameters<TimelineEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1530
1537
  }
1531
1538
  declare class Timeline extends Node {
@@ -1545,7 +1552,8 @@ interface RectangulableEventMap {
1545
1552
  }
1546
1553
  interface Rectangulable {
1547
1554
  on: (<K extends keyof RectangulableEventMap>(type: K, listener: RectangulableEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1548
- off: (<K extends keyof RectangulableEventMap>(type: K, listener: RectangulableEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1555
+ once: (<K extends keyof RectangulableEventMap>(type: K, listener: RectangulableEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1556
+ off: (<K extends keyof RectangulableEventMap>(type: K, listener?: RectangulableEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1549
1557
  emit: (<K extends keyof RectangulableEventMap>(type: K, ...args: Parameters<RectangulableEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1550
1558
  }
1551
1559
  interface Rectangulable {
@@ -1560,7 +1568,8 @@ interface ViewportFramebuffer {
1560
1568
  }
1561
1569
  interface Viewport {
1562
1570
  on: (<K extends keyof ViewportEventMap>(type: K, listener: ViewportEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1563
- off: (<K extends keyof ViewportEventMap>(type: K, listener: ViewportEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1571
+ once: (<K extends keyof ViewportEventMap>(type: K, listener: ViewportEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1572
+ off: (<K extends keyof ViewportEventMap>(type: K, listener?: ViewportEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1564
1573
  emit: (<K extends keyof ViewportEventMap>(type: K, ...args: Parameters<ViewportEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1565
1574
  }
1566
1575
  declare class Viewport extends Node implements Rectangulable {
@@ -1600,7 +1609,8 @@ interface SceneTreeEventMap extends MainLoopEventMap {
1600
1609
  }
1601
1610
  interface SceneTree {
1602
1611
  on: (<K extends keyof SceneTreeEventMap>(type: K, listener: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1603
- off: (<K extends keyof SceneTreeEventMap>(type: K, listener: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1612
+ once: (<K extends keyof SceneTreeEventMap>(type: K, listener: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1613
+ off: (<K extends keyof SceneTreeEventMap>(type: K, listener?: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1604
1614
  emit: (<K extends keyof SceneTreeEventMap>(type: K, ...args: Parameters<SceneTreeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1605
1615
  }
1606
1616
  declare class SceneTree extends MainLoop {
@@ -1650,6 +1660,7 @@ interface NodeProperties {
1650
1660
  }
1651
1661
  interface Node {
1652
1662
  on: (<K extends keyof NodeEventMap>(type: K, listener: NodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1663
+ once: (<K extends keyof NodeEventMap>(type: K, listener?: NodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1653
1664
  off: (<K extends keyof NodeEventMap>(type: K, listener: NodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1654
1665
  emit: (<K extends keyof NodeEventMap>(type: K, ...args: Parameters<NodeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1655
1666
  }
@@ -1722,7 +1733,6 @@ declare class Node extends CoreObject {
1722
1733
  remove(): void;
1723
1734
  forEach(fn: (child: Node) => void): this;
1724
1735
  deepForEach(fn: (descendant: Node) => void): this;
1725
- is(target: Node | undefined | null): boolean;
1726
1736
  /** override */
1727
1737
  protected _ready(): void;
1728
1738
  protected _treeEnter(tree: SceneTree): void;
@@ -1747,7 +1757,8 @@ interface TimelineNodeEventMap extends NodeEventMap {
1747
1757
  }
1748
1758
  interface TimelineNode {
1749
1759
  on: (<K extends keyof TimelineNodeEventMap>(type: K, listener: TimelineNodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1750
- off: (<K extends keyof TimelineNodeEventMap>(type: K, listener: TimelineNodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1760
+ once: (<K extends keyof TimelineNodeEventMap>(type: K, listener: TimelineNodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1761
+ off: (<K extends keyof TimelineNodeEventMap>(type: K, listener?: TimelineNodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1751
1762
  emit: (<K extends keyof TimelineNodeEventMap>(type: K, ...args: Parameters<TimelineNodeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1752
1763
  }
1753
1764
  declare class TimelineNode extends Node {
@@ -1783,7 +1794,8 @@ interface CanvasItemEventMap extends TimelineNodeEventMap {
1783
1794
  }
1784
1795
  interface CanvasItem {
1785
1796
  on: (<K extends keyof CanvasItemEventMap>(type: K, listener: CanvasItemEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1786
- off: (<K extends keyof CanvasItemEventMap>(type: K, listener: CanvasItemEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1797
+ once: (<K extends keyof CanvasItemEventMap>(type: K, listener: CanvasItemEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1798
+ off: (<K extends keyof CanvasItemEventMap>(type: K, listener?: CanvasItemEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1787
1799
  emit: (<K extends keyof CanvasItemEventMap>(type: K, ...args: Parameters<CanvasItemEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1788
1800
  }
1789
1801
  declare class CanvasItem extends TimelineNode {
@@ -2557,7 +2569,8 @@ interface ControlProperties extends CanvasItemProperties {
2557
2569
  }
2558
2570
  interface Control {
2559
2571
  on: (<K extends keyof ControlEventMap>(type: K, listener: ControlEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2560
- off: (<K extends keyof ControlEventMap>(type: K, listener: ControlEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2572
+ once: (<K extends keyof ControlEventMap>(type: K, listener: ControlEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2573
+ off: (<K extends keyof ControlEventMap>(type: K, listener?: ControlEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2561
2574
  emit: (<K extends keyof ControlEventMap>(type: K, ...args: Parameters<ControlEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
2562
2575
  }
2563
2576
  declare class Control extends CanvasItem implements Rectangulable {
@@ -2868,7 +2881,8 @@ interface ScalerProperties extends NodeProperties {
2868
2881
  }
2869
2882
  interface Scaler {
2870
2883
  on: (<K extends keyof ScalerEventMap>(type: K, listener: ScalerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2871
- off: (<K extends keyof ScalerEventMap>(type: K, listener: ScalerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2884
+ once: (<K extends keyof ScalerEventMap>(type: K, listener: ScalerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2885
+ off: (<K extends keyof ScalerEventMap>(type: K, listener?: ScalerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2872
2886
  emit: (<K extends keyof ScalerEventMap>(type: K, ...args: Parameters<ScalerEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
2873
2887
  }
2874
2888
  declare class Scaler extends Node {
@@ -3024,7 +3038,8 @@ declare const defaultOptions: {
3024
3038
  };
3025
3039
  interface Engine {
3026
3040
  on: (<K extends keyof EngineEventMap>(type: K, listener: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
3027
- off: (<K extends keyof EngineEventMap>(type: K, listener: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
3041
+ once: (<K extends keyof EngineEventMap>(type: K, listener: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
3042
+ off: (<K extends keyof EngineEventMap>(type: K, listener?: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
3028
3043
  emit: (<K extends keyof EngineEventMap>(type: K, ...args: Parameters<EngineEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
3029
3044
  }
3030
3045
  declare class Engine extends SceneTree {
package/dist/index.d.mts CHANGED
@@ -162,7 +162,7 @@ declare class EventEmitter {
162
162
  hasEventListener(event: string): boolean;
163
163
  on(type: string, listener: EventListenerValue, options?: EventListenerOptions): any;
164
164
  once(type: string, listener: EventListenerValue): this;
165
- off(type: string, listener: EventListenerValue, options?: EventListenerOptions): this;
165
+ off(type: string, listener?: EventListenerValue, options?: EventListenerOptions): this;
166
166
  emit(type: string, ...args: any[]): boolean;
167
167
  }
168
168
 
@@ -171,7 +171,8 @@ interface CoreObjectEventMap {
171
171
  }
172
172
  interface CoreObject {
173
173
  on: (<K extends keyof CoreObjectEventMap>(type: K, listener: CoreObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
174
- off: (<K extends keyof CoreObjectEventMap>(type: K, listener: CoreObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
174
+ once: (<K extends keyof CoreObjectEventMap>(type: K, listener: CoreObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
175
+ off: (<K extends keyof CoreObjectEventMap>(type: K, listener?: CoreObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
175
176
  emit: (<K extends keyof CoreObjectEventMap>(type: K, ...args: Parameters<CoreObjectEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
176
177
  }
177
178
  declare class CoreObject extends EventEmitter {
@@ -181,6 +182,7 @@ declare class CoreObject extends EventEmitter {
181
182
  protected _changedProperties: Set<PropertyKey>;
182
183
  protected _updatingPromise: Promise<void>;
183
184
  protected _updating: boolean;
185
+ is(target: CoreObject | undefined | null): boolean;
184
186
  protected _enqueueUpdate(): Promise<void>;
185
187
  protected _performUpdate(): void;
186
188
  protected _update(changed: Map<PropertyKey, any>): void;
@@ -203,7 +205,8 @@ interface RefCountedEventMap extends CoreObjectEventMap {
203
205
  }
204
206
  interface RefCounted {
205
207
  on: (<K extends keyof RefCountedEventMap>(type: K, listener: RefCountedEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
206
- off: (<K extends keyof RefCountedEventMap>(type: K, listener: RefCountedEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
208
+ once: (<K extends keyof RefCountedEventMap>(type: K, listener: RefCountedEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
209
+ off: (<K extends keyof RefCountedEventMap>(type: K, listener?: RefCountedEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
207
210
  emit: (<K extends keyof RefCountedEventMap>(type: K, ...args: Parameters<RefCountedEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
208
211
  }
209
212
  declare class RefCounted extends CoreObject {
@@ -250,7 +253,8 @@ interface InputEventMap {
250
253
  type InputEventKey = keyof InputEventMap;
251
254
  interface Input {
252
255
  on: (<K extends keyof InputEventMap>(type: K, listener: InputEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
253
- off: (<K extends keyof InputEventMap>(type: K, listener: InputEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
256
+ once: (<K extends keyof InputEventMap>(type: K, listener: InputEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
257
+ off: (<K extends keyof InputEventMap>(type: K, listener?: InputEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
254
258
  emit: (<K extends keyof InputEventMap>(type: K, ...args: Parameters<InputEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
255
259
  }
256
260
  declare class Input extends EventEmitter {
@@ -293,7 +297,8 @@ interface ResourceEventMap extends RefCountedEventMap {
293
297
  }
294
298
  interface Resource {
295
299
  on: (<K extends keyof ResourceEventMap>(type: K, listener: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
296
- off: (<K extends keyof ResourceEventMap>(type: K, listener: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
300
+ once: (<K extends keyof ResourceEventMap>(type: K, listener: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
301
+ off: (<K extends keyof ResourceEventMap>(type: K, listener?: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
297
302
  emit: (<K extends keyof ResourceEventMap>(type: K, ...args: Parameters<ResourceEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
298
303
  }
299
304
  declare class Resource extends RefCounted {
@@ -580,7 +585,8 @@ interface MainLoopEventMap extends CoreObjectEventMap {
580
585
  }
581
586
  interface MainLoop {
582
587
  on: (<K extends keyof MainLoopEventMap>(type: K, listener: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
583
- off: (<K extends keyof MainLoopEventMap>(type: K, listener: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
588
+ once: (<K extends keyof MainLoopEventMap>(type: K, listener: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
589
+ off: (<K extends keyof MainLoopEventMap>(type: K, listener?: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
584
590
  emit: (<K extends keyof EventListenerOptions>(type: K, ...args: Parameters<EventListenerOptions[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
585
591
  }
586
592
  declare class MainLoop extends CoreObject {
@@ -1525,7 +1531,8 @@ interface TimelineProperties extends NodeProperties {
1525
1531
  }
1526
1532
  interface Timeline {
1527
1533
  on: (<K extends keyof TimelineEventMap>(type: K, listener: TimelineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1528
- off: (<K extends keyof TimelineEventMap>(type: K, listener: TimelineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1534
+ once: (<K extends keyof TimelineEventMap>(type: K, listener: TimelineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1535
+ off: (<K extends keyof TimelineEventMap>(type: K, listener?: TimelineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1529
1536
  emit: (<K extends keyof TimelineEventMap>(type: K, ...args: Parameters<TimelineEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1530
1537
  }
1531
1538
  declare class Timeline extends Node {
@@ -1545,7 +1552,8 @@ interface RectangulableEventMap {
1545
1552
  }
1546
1553
  interface Rectangulable {
1547
1554
  on: (<K extends keyof RectangulableEventMap>(type: K, listener: RectangulableEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1548
- off: (<K extends keyof RectangulableEventMap>(type: K, listener: RectangulableEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1555
+ once: (<K extends keyof RectangulableEventMap>(type: K, listener: RectangulableEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1556
+ off: (<K extends keyof RectangulableEventMap>(type: K, listener?: RectangulableEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1549
1557
  emit: (<K extends keyof RectangulableEventMap>(type: K, ...args: Parameters<RectangulableEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1550
1558
  }
1551
1559
  interface Rectangulable {
@@ -1560,7 +1568,8 @@ interface ViewportFramebuffer {
1560
1568
  }
1561
1569
  interface Viewport {
1562
1570
  on: (<K extends keyof ViewportEventMap>(type: K, listener: ViewportEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1563
- off: (<K extends keyof ViewportEventMap>(type: K, listener: ViewportEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1571
+ once: (<K extends keyof ViewportEventMap>(type: K, listener: ViewportEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1572
+ off: (<K extends keyof ViewportEventMap>(type: K, listener?: ViewportEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1564
1573
  emit: (<K extends keyof ViewportEventMap>(type: K, ...args: Parameters<ViewportEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1565
1574
  }
1566
1575
  declare class Viewport extends Node implements Rectangulable {
@@ -1600,7 +1609,8 @@ interface SceneTreeEventMap extends MainLoopEventMap {
1600
1609
  }
1601
1610
  interface SceneTree {
1602
1611
  on: (<K extends keyof SceneTreeEventMap>(type: K, listener: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1603
- off: (<K extends keyof SceneTreeEventMap>(type: K, listener: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1612
+ once: (<K extends keyof SceneTreeEventMap>(type: K, listener: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1613
+ off: (<K extends keyof SceneTreeEventMap>(type: K, listener?: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1604
1614
  emit: (<K extends keyof SceneTreeEventMap>(type: K, ...args: Parameters<SceneTreeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1605
1615
  }
1606
1616
  declare class SceneTree extends MainLoop {
@@ -1650,6 +1660,7 @@ interface NodeProperties {
1650
1660
  }
1651
1661
  interface Node {
1652
1662
  on: (<K extends keyof NodeEventMap>(type: K, listener: NodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1663
+ once: (<K extends keyof NodeEventMap>(type: K, listener?: NodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1653
1664
  off: (<K extends keyof NodeEventMap>(type: K, listener: NodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1654
1665
  emit: (<K extends keyof NodeEventMap>(type: K, ...args: Parameters<NodeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1655
1666
  }
@@ -1722,7 +1733,6 @@ declare class Node extends CoreObject {
1722
1733
  remove(): void;
1723
1734
  forEach(fn: (child: Node) => void): this;
1724
1735
  deepForEach(fn: (descendant: Node) => void): this;
1725
- is(target: Node | undefined | null): boolean;
1726
1736
  /** override */
1727
1737
  protected _ready(): void;
1728
1738
  protected _treeEnter(tree: SceneTree): void;
@@ -1747,7 +1757,8 @@ interface TimelineNodeEventMap extends NodeEventMap {
1747
1757
  }
1748
1758
  interface TimelineNode {
1749
1759
  on: (<K extends keyof TimelineNodeEventMap>(type: K, listener: TimelineNodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1750
- off: (<K extends keyof TimelineNodeEventMap>(type: K, listener: TimelineNodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1760
+ once: (<K extends keyof TimelineNodeEventMap>(type: K, listener: TimelineNodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1761
+ off: (<K extends keyof TimelineNodeEventMap>(type: K, listener?: TimelineNodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1751
1762
  emit: (<K extends keyof TimelineNodeEventMap>(type: K, ...args: Parameters<TimelineNodeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1752
1763
  }
1753
1764
  declare class TimelineNode extends Node {
@@ -1783,7 +1794,8 @@ interface CanvasItemEventMap extends TimelineNodeEventMap {
1783
1794
  }
1784
1795
  interface CanvasItem {
1785
1796
  on: (<K extends keyof CanvasItemEventMap>(type: K, listener: CanvasItemEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1786
- off: (<K extends keyof CanvasItemEventMap>(type: K, listener: CanvasItemEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1797
+ once: (<K extends keyof CanvasItemEventMap>(type: K, listener: CanvasItemEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1798
+ off: (<K extends keyof CanvasItemEventMap>(type: K, listener?: CanvasItemEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1787
1799
  emit: (<K extends keyof CanvasItemEventMap>(type: K, ...args: Parameters<CanvasItemEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1788
1800
  }
1789
1801
  declare class CanvasItem extends TimelineNode {
@@ -2557,7 +2569,8 @@ interface ControlProperties extends CanvasItemProperties {
2557
2569
  }
2558
2570
  interface Control {
2559
2571
  on: (<K extends keyof ControlEventMap>(type: K, listener: ControlEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2560
- off: (<K extends keyof ControlEventMap>(type: K, listener: ControlEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2572
+ once: (<K extends keyof ControlEventMap>(type: K, listener: ControlEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2573
+ off: (<K extends keyof ControlEventMap>(type: K, listener?: ControlEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2561
2574
  emit: (<K extends keyof ControlEventMap>(type: K, ...args: Parameters<ControlEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
2562
2575
  }
2563
2576
  declare class Control extends CanvasItem implements Rectangulable {
@@ -2868,7 +2881,8 @@ interface ScalerProperties extends NodeProperties {
2868
2881
  }
2869
2882
  interface Scaler {
2870
2883
  on: (<K extends keyof ScalerEventMap>(type: K, listener: ScalerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2871
- off: (<K extends keyof ScalerEventMap>(type: K, listener: ScalerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2884
+ once: (<K extends keyof ScalerEventMap>(type: K, listener: ScalerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2885
+ off: (<K extends keyof ScalerEventMap>(type: K, listener?: ScalerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2872
2886
  emit: (<K extends keyof ScalerEventMap>(type: K, ...args: Parameters<ScalerEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
2873
2887
  }
2874
2888
  declare class Scaler extends Node {
@@ -3024,7 +3038,8 @@ declare const defaultOptions: {
3024
3038
  };
3025
3039
  interface Engine {
3026
3040
  on: (<K extends keyof EngineEventMap>(type: K, listener: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
3027
- off: (<K extends keyof EngineEventMap>(type: K, listener: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
3041
+ once: (<K extends keyof EngineEventMap>(type: K, listener: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
3042
+ off: (<K extends keyof EngineEventMap>(type: K, listener?: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
3028
3043
  emit: (<K extends keyof EngineEventMap>(type: K, ...args: Parameters<EngineEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
3029
3044
  }
3030
3045
  declare class Engine extends SceneTree {
package/dist/index.d.ts CHANGED
@@ -162,7 +162,7 @@ declare class EventEmitter {
162
162
  hasEventListener(event: string): boolean;
163
163
  on(type: string, listener: EventListenerValue, options?: EventListenerOptions): any;
164
164
  once(type: string, listener: EventListenerValue): this;
165
- off(type: string, listener: EventListenerValue, options?: EventListenerOptions): this;
165
+ off(type: string, listener?: EventListenerValue, options?: EventListenerOptions): this;
166
166
  emit(type: string, ...args: any[]): boolean;
167
167
  }
168
168
 
@@ -171,7 +171,8 @@ interface CoreObjectEventMap {
171
171
  }
172
172
  interface CoreObject {
173
173
  on: (<K extends keyof CoreObjectEventMap>(type: K, listener: CoreObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
174
- off: (<K extends keyof CoreObjectEventMap>(type: K, listener: CoreObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
174
+ once: (<K extends keyof CoreObjectEventMap>(type: K, listener: CoreObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
175
+ off: (<K extends keyof CoreObjectEventMap>(type: K, listener?: CoreObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
175
176
  emit: (<K extends keyof CoreObjectEventMap>(type: K, ...args: Parameters<CoreObjectEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
176
177
  }
177
178
  declare class CoreObject extends EventEmitter {
@@ -181,6 +182,7 @@ declare class CoreObject extends EventEmitter {
181
182
  protected _changedProperties: Set<PropertyKey>;
182
183
  protected _updatingPromise: Promise<void>;
183
184
  protected _updating: boolean;
185
+ is(target: CoreObject | undefined | null): boolean;
184
186
  protected _enqueueUpdate(): Promise<void>;
185
187
  protected _performUpdate(): void;
186
188
  protected _update(changed: Map<PropertyKey, any>): void;
@@ -203,7 +205,8 @@ interface RefCountedEventMap extends CoreObjectEventMap {
203
205
  }
204
206
  interface RefCounted {
205
207
  on: (<K extends keyof RefCountedEventMap>(type: K, listener: RefCountedEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
206
- off: (<K extends keyof RefCountedEventMap>(type: K, listener: RefCountedEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
208
+ once: (<K extends keyof RefCountedEventMap>(type: K, listener: RefCountedEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
209
+ off: (<K extends keyof RefCountedEventMap>(type: K, listener?: RefCountedEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
207
210
  emit: (<K extends keyof RefCountedEventMap>(type: K, ...args: Parameters<RefCountedEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
208
211
  }
209
212
  declare class RefCounted extends CoreObject {
@@ -250,7 +253,8 @@ interface InputEventMap {
250
253
  type InputEventKey = keyof InputEventMap;
251
254
  interface Input {
252
255
  on: (<K extends keyof InputEventMap>(type: K, listener: InputEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
253
- off: (<K extends keyof InputEventMap>(type: K, listener: InputEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
256
+ once: (<K extends keyof InputEventMap>(type: K, listener: InputEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
257
+ off: (<K extends keyof InputEventMap>(type: K, listener?: InputEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
254
258
  emit: (<K extends keyof InputEventMap>(type: K, ...args: Parameters<InputEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
255
259
  }
256
260
  declare class Input extends EventEmitter {
@@ -293,7 +297,8 @@ interface ResourceEventMap extends RefCountedEventMap {
293
297
  }
294
298
  interface Resource {
295
299
  on: (<K extends keyof ResourceEventMap>(type: K, listener: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
296
- off: (<K extends keyof ResourceEventMap>(type: K, listener: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
300
+ once: (<K extends keyof ResourceEventMap>(type: K, listener: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
301
+ off: (<K extends keyof ResourceEventMap>(type: K, listener?: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
297
302
  emit: (<K extends keyof ResourceEventMap>(type: K, ...args: Parameters<ResourceEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
298
303
  }
299
304
  declare class Resource extends RefCounted {
@@ -580,7 +585,8 @@ interface MainLoopEventMap extends CoreObjectEventMap {
580
585
  }
581
586
  interface MainLoop {
582
587
  on: (<K extends keyof MainLoopEventMap>(type: K, listener: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
583
- off: (<K extends keyof MainLoopEventMap>(type: K, listener: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
588
+ once: (<K extends keyof MainLoopEventMap>(type: K, listener: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
589
+ off: (<K extends keyof MainLoopEventMap>(type: K, listener?: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
584
590
  emit: (<K extends keyof EventListenerOptions>(type: K, ...args: Parameters<EventListenerOptions[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
585
591
  }
586
592
  declare class MainLoop extends CoreObject {
@@ -1525,7 +1531,8 @@ interface TimelineProperties extends NodeProperties {
1525
1531
  }
1526
1532
  interface Timeline {
1527
1533
  on: (<K extends keyof TimelineEventMap>(type: K, listener: TimelineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1528
- off: (<K extends keyof TimelineEventMap>(type: K, listener: TimelineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1534
+ once: (<K extends keyof TimelineEventMap>(type: K, listener: TimelineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1535
+ off: (<K extends keyof TimelineEventMap>(type: K, listener?: TimelineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1529
1536
  emit: (<K extends keyof TimelineEventMap>(type: K, ...args: Parameters<TimelineEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1530
1537
  }
1531
1538
  declare class Timeline extends Node {
@@ -1545,7 +1552,8 @@ interface RectangulableEventMap {
1545
1552
  }
1546
1553
  interface Rectangulable {
1547
1554
  on: (<K extends keyof RectangulableEventMap>(type: K, listener: RectangulableEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1548
- off: (<K extends keyof RectangulableEventMap>(type: K, listener: RectangulableEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1555
+ once: (<K extends keyof RectangulableEventMap>(type: K, listener: RectangulableEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1556
+ off: (<K extends keyof RectangulableEventMap>(type: K, listener?: RectangulableEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1549
1557
  emit: (<K extends keyof RectangulableEventMap>(type: K, ...args: Parameters<RectangulableEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1550
1558
  }
1551
1559
  interface Rectangulable {
@@ -1560,7 +1568,8 @@ interface ViewportFramebuffer {
1560
1568
  }
1561
1569
  interface Viewport {
1562
1570
  on: (<K extends keyof ViewportEventMap>(type: K, listener: ViewportEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1563
- off: (<K extends keyof ViewportEventMap>(type: K, listener: ViewportEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1571
+ once: (<K extends keyof ViewportEventMap>(type: K, listener: ViewportEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1572
+ off: (<K extends keyof ViewportEventMap>(type: K, listener?: ViewportEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1564
1573
  emit: (<K extends keyof ViewportEventMap>(type: K, ...args: Parameters<ViewportEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1565
1574
  }
1566
1575
  declare class Viewport extends Node implements Rectangulable {
@@ -1600,7 +1609,8 @@ interface SceneTreeEventMap extends MainLoopEventMap {
1600
1609
  }
1601
1610
  interface SceneTree {
1602
1611
  on: (<K extends keyof SceneTreeEventMap>(type: K, listener: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1603
- off: (<K extends keyof SceneTreeEventMap>(type: K, listener: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1612
+ once: (<K extends keyof SceneTreeEventMap>(type: K, listener: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1613
+ off: (<K extends keyof SceneTreeEventMap>(type: K, listener?: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1604
1614
  emit: (<K extends keyof SceneTreeEventMap>(type: K, ...args: Parameters<SceneTreeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1605
1615
  }
1606
1616
  declare class SceneTree extends MainLoop {
@@ -1650,6 +1660,7 @@ interface NodeProperties {
1650
1660
  }
1651
1661
  interface Node {
1652
1662
  on: (<K extends keyof NodeEventMap>(type: K, listener: NodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1663
+ once: (<K extends keyof NodeEventMap>(type: K, listener?: NodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1653
1664
  off: (<K extends keyof NodeEventMap>(type: K, listener: NodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1654
1665
  emit: (<K extends keyof NodeEventMap>(type: K, ...args: Parameters<NodeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1655
1666
  }
@@ -1722,7 +1733,6 @@ declare class Node extends CoreObject {
1722
1733
  remove(): void;
1723
1734
  forEach(fn: (child: Node) => void): this;
1724
1735
  deepForEach(fn: (descendant: Node) => void): this;
1725
- is(target: Node | undefined | null): boolean;
1726
1736
  /** override */
1727
1737
  protected _ready(): void;
1728
1738
  protected _treeEnter(tree: SceneTree): void;
@@ -1747,7 +1757,8 @@ interface TimelineNodeEventMap extends NodeEventMap {
1747
1757
  }
1748
1758
  interface TimelineNode {
1749
1759
  on: (<K extends keyof TimelineNodeEventMap>(type: K, listener: TimelineNodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1750
- off: (<K extends keyof TimelineNodeEventMap>(type: K, listener: TimelineNodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1760
+ once: (<K extends keyof TimelineNodeEventMap>(type: K, listener: TimelineNodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1761
+ off: (<K extends keyof TimelineNodeEventMap>(type: K, listener?: TimelineNodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1751
1762
  emit: (<K extends keyof TimelineNodeEventMap>(type: K, ...args: Parameters<TimelineNodeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1752
1763
  }
1753
1764
  declare class TimelineNode extends Node {
@@ -1783,7 +1794,8 @@ interface CanvasItemEventMap extends TimelineNodeEventMap {
1783
1794
  }
1784
1795
  interface CanvasItem {
1785
1796
  on: (<K extends keyof CanvasItemEventMap>(type: K, listener: CanvasItemEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1786
- off: (<K extends keyof CanvasItemEventMap>(type: K, listener: CanvasItemEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1797
+ once: (<K extends keyof CanvasItemEventMap>(type: K, listener: CanvasItemEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1798
+ off: (<K extends keyof CanvasItemEventMap>(type: K, listener?: CanvasItemEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
1787
1799
  emit: (<K extends keyof CanvasItemEventMap>(type: K, ...args: Parameters<CanvasItemEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
1788
1800
  }
1789
1801
  declare class CanvasItem extends TimelineNode {
@@ -2557,7 +2569,8 @@ interface ControlProperties extends CanvasItemProperties {
2557
2569
  }
2558
2570
  interface Control {
2559
2571
  on: (<K extends keyof ControlEventMap>(type: K, listener: ControlEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2560
- off: (<K extends keyof ControlEventMap>(type: K, listener: ControlEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2572
+ once: (<K extends keyof ControlEventMap>(type: K, listener: ControlEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2573
+ off: (<K extends keyof ControlEventMap>(type: K, listener?: ControlEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2561
2574
  emit: (<K extends keyof ControlEventMap>(type: K, ...args: Parameters<ControlEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
2562
2575
  }
2563
2576
  declare class Control extends CanvasItem implements Rectangulable {
@@ -2868,7 +2881,8 @@ interface ScalerProperties extends NodeProperties {
2868
2881
  }
2869
2882
  interface Scaler {
2870
2883
  on: (<K extends keyof ScalerEventMap>(type: K, listener: ScalerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2871
- off: (<K extends keyof ScalerEventMap>(type: K, listener: ScalerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2884
+ once: (<K extends keyof ScalerEventMap>(type: K, listener: ScalerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2885
+ off: (<K extends keyof ScalerEventMap>(type: K, listener?: ScalerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
2872
2886
  emit: (<K extends keyof ScalerEventMap>(type: K, ...args: Parameters<ScalerEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
2873
2887
  }
2874
2888
  declare class Scaler extends Node {
@@ -3024,7 +3038,8 @@ declare const defaultOptions: {
3024
3038
  };
3025
3039
  interface Engine {
3026
3040
  on: (<K extends keyof EngineEventMap>(type: K, listener: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
3027
- off: (<K extends keyof EngineEventMap>(type: K, listener: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
3041
+ once: (<K extends keyof EngineEventMap>(type: K, listener: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
3042
+ off: (<K extends keyof EngineEventMap>(type: K, listener?: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
3028
3043
  emit: (<K extends keyof EngineEventMap>(type: K, ...args: Parameters<EngineEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
3029
3044
  }
3030
3045
  declare class Engine extends SceneTree {
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- (function(f,st){typeof exports=="object"&&typeof module<"u"?st(exports):typeof define=="function"&&define.amd?define(["exports"],st):(f=typeof globalThis<"u"?globalThis:f||self,st(f.modernCanvas={}))})(this,function(f){"use strict";var ZI=Object.defineProperty;var $I=(f,st,Jt)=>st in f?ZI(f,st,{enumerable:!0,configurable:!0,writable:!0,value:Jt}):f[st]=Jt;var g=(f,st,Jt)=>$I(f,typeof st!="symbol"?st+"":st,Jt);var xA,uA;var st=typeof document<"u"?document.currentScript:null;const Jt=Math.PI,Ce=Jt*2;let ql=0;function Nn(r){var A;return((A=r==null?void 0:r.__SPECTOR_Object_TAG)==null?void 0:A.id)??++ql}function $r(r){return!(r&r-1)&&!!r}const zl=/([\w-]+)\((.+?)\)/g,jl=/[^,]+/g,Zl=/([-e.\d]+)(.*)/;function es(r){return Array.isArray(r)?r.map(A=>({name:A.name,args:A.args.map(e=>({...e,normalizedIntValue:e.normalizedDefaultIntValue}))})):{...r,normalizedIntValue:r.normalizedDefaultIntValue}}function ni(r,A,e={}){const t=IA(A,e);return t.length?t:Fn(r,A,e)}function IA(r,A={}){const e=[];let t;for(;(t=zl.exec(r))!==null;){const[,i,s]=t;i&&e.push({name:i,args:$l(i,s,A)})}return e}function $l(r,A,e={}){const t=[];let i,s=0;for(;(i=jl.exec(A))!==null;)t.push(Fn(r,i[0],{...e,index:s++}));return t}function Fn(r,A,e={}){const{width:t=1,height:i=1,index:s=0}=e,n=A.match(Zl),o={unit:(n==null?void 0:n[2])??null,value:A,intValue:Number(n==null?void 0:n[1]),normalizedIntValue:0,normalizedDefaultIntValue:0};switch(r){case"scale":case"scaleX":case"scaleY":case"scale3d":o.normalizedDefaultIntValue=1;break}switch(o.unit){case"%":o.normalizedIntValue=o.intValue/100;break;case"rad":o.normalizedIntValue=o.intValue/Ce;break;case"deg":o.normalizedIntValue=o.intValue/360;break;case"px":switch(s){case 0:o.normalizedIntValue=o.intValue/t;break;case 1:o.normalizedIntValue=o.intValue/i;break}break;case"turn":case"em":case"rem":default:o.normalizedIntValue=o.intValue;break}return o}const Tn="WebGL2RenderingContext"in globalThis,Ln="ImageBitmap"in globalThis,Gn="ResizeObserver"in globalThis,MA="PointerEvent"in globalThis,On="WheelEvent"in globalThis,eh="MouseEvent"in globalThis,Kt="ontouchstart"in globalThis,Hn="onclick"in globalThis,ts="createImageBitmap"in globalThis,As="AudioContext"in globalThis,is="webkitAudioContext"in globalThis,rs="OfflineAudioContext"in globalThis,Jn="webkitOfflineAudioContext"in globalThis,Kn=As||is,oi=typeof window<"u",ss=globalThis.devicePixelRatio||1,ns=r=>r!==null&&typeof r=="object"&&r.nodeType===1,Yn=r=>ns(r)&&r.tagName==="VIDEO",th=r=>ns(r)&&r.tagName==="IMG";function Wn(r){return typeof r=="object"&&r!==null&&r.nodeType===1&&r.tagName==="CANVAS"}function Vn(r){return Tn&&r instanceof globalThis.WebGL2RenderingContext}function Xn(){if(oi)return globalThis.document.createElement("canvas")}function qn(r,A=globalThis.location){if(r.startsWith("data:"))return"";A=A||globalThis.location;const e=new URL(r,document.baseURI);return e.hostname!==A.hostname||e.port!==A.port||e.protocol!==A.protocol?"anonymous":""}function zn(r,A,e){e===null&&!A.startsWith("data:")?r.crossOrigin=qn(A):e!==!1&&(r.crossOrigin=typeof e=="string"?e:"anonymous")}class RA{constructor(){g(this,"_map",new WeakMap)}_toRaw(A){if(A&&typeof A=="object"){const e=A.__v_raw;e&&(A=this._toRaw(e))}return A}delete(A){return this._map.delete(this._toRaw(A))}get(A){return this._map.get(this._toRaw(A))}has(A){return this._map.has(this._toRaw(A))}set(A,e){return this._map.set(this._toRaw(A),this._toRaw(e)),this}}const jn=new RA;function Ki(r){let A=jn.get(r);if(!A){const e=Object.getPrototypeOf(r);A=new Map(e?Ki(e):void 0),jn.set(r,A)}return A}function BA(r,A,e={}){Ki(r).set(A,e);const{default:t,alias:i}=e;let s=Object.getOwnPropertyDescriptor(r.prototype,A);if(!s){const n=i??Symbol.for(String(A));s={get(){return this[n]},set(o){this[n]=o}}}Object.defineProperty(r.prototype,A,{get(){var n;return((n=s.get)==null?void 0:n.call(this))??t},set(n){var a,l,h;const o=((a=s.get)==null?void 0:a.call(this))??t;(l=s.set)==null||l.call(this,n),(h=this.requestUpdate)==null||h.call(this,A,o,e)},configurable:!0,enumerable:!0})}function _(r){return function(A,e){BA(A.constructor,e,r)}}const Yi=new Map;function ae(r,A){return function(e){Object.defineProperty(e.prototype,"tag",{value:r,enumerable:!0,configurable:!0}),A&&Object.keys(A).forEach(t=>{BA(e,t,{default:A[t]})}),Yi.set(r,e)}}function Me(r){return _({...r,protected:!0})}function Ah(r="node",A={}){const e=Yi.get(r);if(!e)throw new Error(`Failed to createNode, tag: ${r}`);return new e().setProperties(A)}class Re{static get currentTime(){return this._currentTime}static get elapsed(){return this._elapsed}static on(A,e={}){const{sort:t=0,once:i=!1}=e;this._queue[t]||(this._queue[t]=[]),this._queue[t].push({cb:A,once:i})}static off(A,e={}){const{sort:t=0}=e,i=this._queue[t];if(!i)return;const s=[];for(let n=i.length,o=0;o<n;o++){const a=i[o];a.cb!==A&&s.push(a)}s.length?this._queue[t]=s:this._queue.splice(t,1)}static start(){"requestAnimationFrame"in globalThis&&(this._currentTime=performance.now(),this._requestId=requestAnimationFrame(A=>this._update(A)))}static stop(){this._requestId&&(cancelAnimationFrame(this._requestId),this._requestId=void 0)}static _update(A){this._elapsed=A-this._currentTime,this._currentTime=A,this._requestId=requestAnimationFrame(e=>this._update(e)),this._performUpdate()}static _performUpdate(){const A=this._queue,e=[];for(let t=A.length,i=t;i>=0;i--){const s=A[i];if(!s)continue;const n=[];for(let o=s.length,a=0;a<o;a++){const l=s[a];try{l.cb()}catch(h){console.warn(h)}l.once||n.push(l)}n.length&&(e[i]=n)}this._queue=e}}g(Re,"_queue",[]),g(Re,"_currentTime",0),g(Re,"_elapsed",0),g(Re,"_requestId"),Re.start();async function os(r){return new Promise(A=>{Re.on(()=>{r==null||r(),A()},{sort:1,once:!0})})}let Yt=class{constructor(){g(this,"eventListeners",new Map)}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(A){return this.eventListeners.has(A)}on(A,e,t){const i={value:e,options:t},s=this.eventListeners.get(A);return s?Array.isArray(s)?s.push(i):this.eventListeners.set(A,[s,i]):this.eventListeners.set(A,i),this}once(A,e){return this.on(A,e,{once:!0})}off(A,e,t){var s,n;if(!e)return this.eventListeners.delete(A),this;const i=this.eventListeners.get(A);if(!i)return this;if(Array.isArray(i)){const o=[];for(let a=0,l=i.length;a<l;a++){const h=i[a];(h.value!==e||typeof t=="object"&&(t!=null&&t.once)&&(typeof h.options=="boolean"||!((s=h.options)!=null&&s.once)))&&o.push(h)}o.length?this.eventListeners.set(A,o.length===1?o[0]:o):this.eventListeners.delete(A)}else i.value===e&&(typeof t=="boolean"||!(t!=null&&t.once)||typeof i.options=="boolean"||(n=i.options)!=null&&n.once)&&this.eventListeners.delete(A);return this}emit(A,...e){var i,s;const t=this.eventListeners.get(A);if(t){if(Array.isArray(t))for(let n=t.length,o=0;o<n;o++){const a=t[o];typeof a.options=="object"&&((i=a.options)!=null&&i.once)&&this.off(A,a.value,a.options),a.value.apply(this,e)}else typeof t.options=="object"&&((s=t.options)!=null&&s.once)&&this.off(A,t.value,t.options),t.value.apply(this,e);return!0}else return!1}},ih=0;class Wi extends Yt{constructor(){super(...arguments);g(this,"instanceId",++ih);g(this,"_defaultProperties");g(this,"_updatedProperties",new Map);g(this,"_changedProperties",new Set);g(this,"_updatingPromise",Promise.resolve());g(this,"_updating",!1)}async _enqueueUpdate(){this._updating=!0;try{await this._updatingPromise}catch(e){Promise.reject(e)}await os(),this._performUpdate()}_performUpdate(){this._updating&&(this._update(this._updatedProperties),this._updatedProperties=new Map,this._updating=!1)}_update(e){}_updateProperty(e,t,i,s){}isDirty(e){return this._updatedProperties.has(e)}getPropertyDeclarations(){return Ki(this.constructor)}getPropertyDeclaration(e){return this.getPropertyDeclarations().get(e)}getDefaultProperties(){if(!this._defaultProperties){this._defaultProperties={};for(const[e,t]of this.getPropertyDeclarations())!t.protected&&!t.alias&&(this._defaultProperties[e]=t.default)}return this._defaultProperties}getProperty(e){return this[e]}setProperty(e,t){return this[e]=t,this}getProperties(e){const t={};for(const[i,s]of this.getPropertyDeclarations())!s.protected&&!s.alias&&(!e||e.includes(i))&&(t[i]=this.getProperty(i));return t}setProperties(e){if(e)for(const[t]of this.getPropertyDeclarations())t in e&&this.setProperty(t,e[t]);return this}requestUpdate(e,t,i){if(e!==void 0){const s=this[e];if(!Object.is(s,t))this._updatedProperties.set(e,t),this._changedProperties.add(e),i??(i=this.getPropertyDeclaration(e)),this._updateProperty(e,s,t,i),this.emit("updateProperty",e,s,t,i);else return}this._updating||(this._updatingPromise=this._enqueueUpdate())}toJSON(){return this.getProperties(Array.from(this._changedProperties))}clone(){return new this.constructor(this.toJSON())}destroy(){this.removeAllListeners()}}class Zn extends Wi{}class Vi{constructor(){g(this,"bubbles",!0);g(this,"cancelable",!1);g(this,"which");g(this,"cancelBubble",!0);g(this,"returnValue");g(this,"srcElement");g(this,"composed",!1);g(this,"currentTarget");g(this,"defaultPrevented",!1);g(this,"eventPhase",Vi.prototype.NONE);g(this,"isTrusted");g(this,"target");g(this,"timeStamp");g(this,"type");g(this,"nativeEvent");g(this,"originalEvent");g(this,"propagationStopped",!1);g(this,"propagationImmediatelyStopped",!1);g(this,"path");g(this,"detail");g(this,"view");g(this,"layer",{x:0,y:0});g(this,"page",{x:0,y:0});g(this,"NONE",0);g(this,"CAPTURING_PHASE",1);g(this,"AT_TARGET",2);g(this,"BUBBLING_PHASE",3)}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}initEvent(...A){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(...A){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}composedPath(){return this.path}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}class as extends Vi{constructor(){super(...arguments);g(this,"altKey");g(this,"button");g(this,"buttons");g(this,"ctrlKey");g(this,"metaKey");g(this,"relatedTarget");g(this,"shiftKey");g(this,"client",{x:0,y:0});g(this,"movement",{x:0,y:0});g(this,"offset",{x:0,y:0});g(this,"global",{x:0,y:0});g(this,"screen",{x:0,y:0})}get clientX(){return this.client.x}get clientY(){return this.client.y}get x(){return this.clientX}get y(){return this.clientY}get movementX(){return this.movement.x}get movementY(){return this.movement.y}get offsetX(){return this.offset.x}get offsetY(){return this.offset.y}get globalX(){return this.global.x}get globalY(){return this.global.y}get screenX(){return this.screen.x}get screenY(){return this.screen.y}getModifierState(e){return"getModifierState"in this.nativeEvent&&this.nativeEvent.getModifierState(e)}initMouseEvent(...e){throw new Error("Method not implemented.")}}class $n extends as{constructor(){super(...arguments);g(this,"width",0);g(this,"height",0);g(this,"isPrimary",!1);g(this,"pointerType");g(this,"pressure");g(this,"tangentialPressure");g(this,"tiltX");g(this,"tiltY");g(this,"twist")}getCoalescedEvents(){return this.type==="pointermove"||this.type==="mousemove"||this.type==="touchmove"?[this]:[]}getPredictedEvents(){throw new Error("getPredictedEvents is not supported!")}}class ai extends as{constructor(){super(...arguments);g(this,"deltaMode");g(this,"deltaX");g(this,"deltaY");g(this,"deltaZ");g(this,"DOM_DELTA_PIXEL",0);g(this,"DOM_DELTA_LINE",1);g(this,"DOM_DELTA_PAGE",2)}}g(ai,"DOM_DELTA_PIXEL",0),g(ai,"DOM_DELTA_LINE",1),g(ai,"DOM_DELTA_PAGE",2);const rh={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"};class eo extends Yt{constructor(){super(...arguments);g(this,"target");g(this,"cursor","default");g(this,"cursorStyles",{default:"inherit",pointer:"pointer"});g(this,"setuped",!1);g(this,"event");g(this,"enableMoveEvent",!0);g(this,"enableWheelEvent",!0);g(this,"enableClickEvent",!0);g(this,"onPointerDown",e=>{if(Kt&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("pointerdown",this.event=this.clonePointerEvent(t[i]));this.setCursor(this.cursor)});g(this,"onPointerOver",e=>{if(!this.enableClickEvent||Kt&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("pointerover",this.event=this.clonePointerEvent(t[i]))});g(this,"onPointerMove",e=>{if(!this.enableMoveEvent||Kt&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("pointermove",this.event=this.clonePointerEvent(t[i]))});g(this,"onPointerUp",e=>{if(!this.enableClickEvent||Kt&&e.pointerType==="touch")return;let t=e.target;e.composedPath&&e.composedPath().length>0&&(t=e.composedPath()[0]);const i=t!==this.target?"outside":"",s=this.normalize(e);for(let n=0,o=s.length;n<o;n++){const a=this.clonePointerEvent(s[n]);a.type+=i,this.emit("pointerup",this.event=a)}});g(this,"onWheel",e=>{if(!this.enableWheelEvent)return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("wheel",this.event=this.cloneWheelEvent(t[i]))})}setTarget(e){this.removeEventListeners(),this.target=e,this.addEventListeners()}removeEventListeners(){if(!this.setuped||!this.target)return;const e=this.target.style;globalThis.navigator.msPointerEnabled?(e.msContentZooming="",e.msTouchAction=""):MA&&(e.touchAction=""),MA?(this.target.removeEventListener("pointerdown",this.onPointerDown),this.target.removeEventListener("pointerleave",this.onPointerOver),this.target.removeEventListener("pointerover",this.onPointerOver),this.target.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.target.ownerDocument.removeEventListener("pointerup",this.onPointerUp)):(this.target.removeEventListener("mousedown",this.onPointerDown),this.target.removeEventListener("mouseout",this.onPointerOver),this.target.removeEventListener("mouseover",this.onPointerOver),this.target.ownerDocument.removeEventListener("mousemove",this.onPointerMove),this.target.ownerDocument.removeEventListener("mouseup",this.onPointerUp)),Kt&&(this.target.removeEventListener("touchstart",this.onPointerDown),this.target.removeEventListener("touchmove",this.onPointerMove),this.target.removeEventListener("touchend",this.onPointerUp)),this.target.removeEventListener("wheel",this.onWheel),this.target=void 0,this.setuped=!1}addEventListeners(){if(this.setuped||!this.target)return;const e=this.target.style;e&&(globalThis.navigator.msPointerEnabled?(e.msContentZooming="none",e.msTouchAction="none"):MA&&(e.touchAction="none")),MA?(this.target.addEventListener("pointerdown",this.onPointerDown),this.target.addEventListener("pointerleave",this.onPointerOver),this.target.addEventListener("pointerover",this.onPointerOver),this.target.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.target.ownerDocument.addEventListener("pointerup",this.onPointerUp)):(this.target.addEventListener("mousedown",this.onPointerDown),this.target.addEventListener("mouseout",this.onPointerOver),this.target.addEventListener("mouseover",this.onPointerOver),this.target.ownerDocument.addEventListener("mousemove",this.onPointerMove),this.target.ownerDocument.addEventListener("mouseup",this.onPointerUp)),Kt&&(this.target.addEventListener("touchstart",this.onPointerDown),this.target.addEventListener("touchmove",this.onPointerMove),this.target.addEventListener("touchend",this.onPointerUp)),this.target.addEventListener("wheel",this.onWheel),this.setuped=!0}normalize(e){const t=[];if(Kt&&e instanceof globalThis.TouchEvent)for(let i=0,s=e.changedTouches.length;i<s;i++){const n=e.changedTouches[i];typeof n.button>"u"&&(n.button=0),typeof n.buttons>"u"&&(n.buttons=1),typeof n.isPrimary>"u"&&(n.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof n.width>"u"&&(n.width=n.radiusX||1),typeof n.height>"u"&&(n.height=n.radiusY||1),typeof n.tiltX>"u"&&(n.tiltX=0),typeof n.tiltY>"u"&&(n.tiltY=0),typeof n.pointerType>"u"&&(n.pointerType="touch"),typeof n.pointerId>"u"&&(n.pointerId=n.identifier||0),typeof n.pressure>"u"&&(n.pressure=n.force||.5),typeof n.twist>"u"&&(n.twist=0),typeof n.tangentialPressure>"u"&&(n.tangentialPressure=0),typeof n.layerX>"u"&&(n.layerX=n.offsetX=n.clientX),typeof n.layerY>"u"&&(n.layerY=n.offsetY=n.clientY),n.type=e.type,t.push(n)}else if(On&&e instanceof globalThis.WheelEvent)t.push(e);else if(MA&&e instanceof globalThis.PointerEvent)t.push(e);else{const i=e;typeof i.isPrimary>"u"&&(i.isPrimary=!0),typeof i.width>"u"&&(i.width=1),typeof i.height>"u"&&(i.height=1),typeof i.tiltX>"u"&&(i.tiltX=0),typeof i.tiltY>"u"&&(i.tiltY=0),typeof i.pointerType>"u"&&(i.pointerType="mouse"),typeof i.pointerId>"u"&&(i.pointerId=1),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),t.push(i)}return t}cloneWheelEvent(e){const t=new ai;return this.copyMouseEvent(t,e),t.wheelDeltaY=e.wheelDeltaY,t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.x=t.screen.x,t.global.y=t.screen.y,t.offset.x=t.screen.x,t.offset.y=t.screen.y,t.nativeEvent=e,t.type=e.type,t}clonePointerEvent(e){const t=new $n;return t.originalEvent=null,t.nativeEvent=e,t.pointerId=e.pointerId,t.width=e.width,t.height=e.height,t.isPrimary=e.isPrimary,t.pointerType=e.pointerType,t.pressure=e.pressure,t.tangentialPressure=e.tangentialPressure,t.tiltX=e.tiltX,t.tiltY=e.tiltY,t.twist=e.twist,t.isTrusted=e.isTrusted,this.copyMouseEvent(t,e),this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.x=t.screen.x,t.global.y=t.screen.y,t.offset.x=t.screen.x,t.offset.y=t.screen.y,t.type==="pointerleave"?t.type="pointerout":t.type.startsWith("mouse")?t.type=t.type.replace("mouse","pointer"):t.type.startsWith("touch")&&(t.type=rh[t.type]||t.type),t}copyMouseEvent(e,t){e.preventDefault=t.preventDefault.bind(t),e.stopPropagation=t.stopPropagation.bind(t),e.isTrusted=t.isTrusted,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}setCursor(e){if(!this.target||(e=e||"default",this.cursor===e))return;this.cursor=e;const t=!(globalThis.OffscreenCanvas&&this.target instanceof OffscreenCanvas),i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.target.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.target.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.target.style.cursor=e)}mapPositionToPoint(e,t,i){if(!this.target)return;const s=Number(this.target.getAttribute("width"))||0,n=Number(this.target.getAttribute("height"))||0,o=Number(this.target.getAttribute("data-pixel-ratio"))||1,a=this.target.isConnected?this.target.getBoundingClientRect():{x:0,y:0,width:s,height:n,left:0,top:0},l=1/o;e.x=(t-a.left)*(s/a.width)*l,e.y=(i-a.top)*(n/a.height)*l}}class St extends Zn{}var sh={grad:.9,turn:360,rad:360/(2*Math.PI)},Wt=function(r){return typeof r=="string"?r.length>0:typeof r=="number"},Te=function(r,A,e){return A===void 0&&(A=0),e===void 0&&(e=Math.pow(10,A)),Math.round(e*r)/e+0},pt=function(r,A,e){return A===void 0&&(A=0),e===void 0&&(e=1),r>e?e:r>A?r:A},to=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},Ao=function(r){return{r:pt(r.r,0,255),g:pt(r.g,0,255),b:pt(r.b,0,255),a:pt(r.a)}},ls=function(r){return{r:Te(r.r),g:Te(r.g),b:Te(r.b),a:Te(r.a,3)}},nh=/^#([0-9a-f]{3,8})$/i,Xi=function(r){var A=r.toString(16);return A.length<2?"0"+A:A},io=function(r){var A=r.r,e=r.g,t=r.b,i=r.a,s=Math.max(A,e,t),n=s-Math.min(A,e,t),o=n?s===A?(e-t)/n:s===e?2+(t-A)/n:4+(A-e)/n:0;return{h:60*(o<0?o+6:o),s:s?n/s*100:0,v:s/255*100,a:i}},ro=function(r){var A=r.h,e=r.s,t=r.v,i=r.a;A=A/360*6,e/=100,t/=100;var s=Math.floor(A),n=t*(1-e),o=t*(1-(A-s)*e),a=t*(1-(1-A+s)*e),l=s%6;return{r:255*[t,o,n,n,a,t][l],g:255*[a,t,t,o,n,n][l],b:255*[n,n,a,t,t,o][l],a:i}},so=function(r){return{h:to(r.h),s:pt(r.s,0,100),l:pt(r.l,0,100),a:pt(r.a)}},no=function(r){return{h:Te(r.h),s:Te(r.s),l:Te(r.l),a:Te(r.a,3)}},oo=function(r){return ro((e=(A=r).s,{h:A.h,s:(e*=((t=A.l)<50?t:100-t)/100)>0?2*e/(t+e)*100:0,v:t+e,a:A.a}));var A,e,t},li=function(r){return{h:(A=io(r)).h,s:(i=(200-(e=A.s))*(t=A.v)/100)>0&&i<200?e*t/100/(i<=100?i:200-i)*100:0,l:i/2,a:A.a};var A,e,t,i},oh=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ah=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,lh=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,hh=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,hs={string:[[function(r){var A=nh.exec(r);return A?(r=A[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:r.length===4?Te(parseInt(r[3]+r[3],16)/255,2):1}:r.length===6||r.length===8?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:r.length===8?Te(parseInt(r.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(r){var A=lh.exec(r)||hh.exec(r);return A?A[2]!==A[4]||A[4]!==A[6]?null:Ao({r:Number(A[1])/(A[2]?100/255:1),g:Number(A[3])/(A[4]?100/255:1),b:Number(A[5])/(A[6]?100/255:1),a:A[7]===void 0?1:Number(A[7])/(A[8]?100:1)}):null},"rgb"],[function(r){var A=oh.exec(r)||ah.exec(r);if(!A)return null;var e,t,i=so({h:(e=A[1],t=A[2],t===void 0&&(t="deg"),Number(e)*(sh[t]||1)),s:Number(A[3]),l:Number(A[4]),a:A[5]===void 0?1:Number(A[5])/(A[6]?100:1)});return oo(i)},"hsl"]],object:[[function(r){var A=r.r,e=r.g,t=r.b,i=r.a,s=i===void 0?1:i;return Wt(A)&&Wt(e)&&Wt(t)?Ao({r:Number(A),g:Number(e),b:Number(t),a:Number(s)}):null},"rgb"],[function(r){var A=r.h,e=r.s,t=r.l,i=r.a,s=i===void 0?1:i;if(!Wt(A)||!Wt(e)||!Wt(t))return null;var n=so({h:Number(A),s:Number(e),l:Number(t),a:Number(s)});return oo(n)},"hsl"],[function(r){var A=r.h,e=r.s,t=r.v,i=r.a,s=i===void 0?1:i;if(!Wt(A)||!Wt(e)||!Wt(t))return null;var n=function(o){return{h:to(o.h),s:pt(o.s,0,100),v:pt(o.v,0,100),a:pt(o.a)}}({h:Number(A),s:Number(e),v:Number(t),a:Number(s)});return ro(n)},"hsv"]]},ao=function(r,A){for(var e=0;e<A.length;e++){var t=A[e][0](r);if(t)return[t,A[e][1]]}return[null,void 0]},gh=function(r){return typeof r=="string"?ao(r.trim(),hs.string):typeof r=="object"&&r!==null?ao(r,hs.object):[null,void 0]},gs=function(r,A){var e=li(r);return{h:e.h,s:pt(e.s+100*A,0,100),l:e.l,a:e.a}},cs=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},lo=function(r,A){var e=li(r);return{h:e.h,s:e.s,l:pt(e.l+100*A,0,100),a:e.a}},us=function(){function r(A){this.parsed=gh(A)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return this.parsed!==null},r.prototype.brightness=function(){return Te(cs(this.rgba),2)},r.prototype.isDark=function(){return cs(this.rgba)<.5},r.prototype.isLight=function(){return cs(this.rgba)>=.5},r.prototype.toHex=function(){return A=ls(this.rgba),e=A.r,t=A.g,i=A.b,n=(s=A.a)<1?Xi(Te(255*s)):"","#"+Xi(e)+Xi(t)+Xi(i)+n;var A,e,t,i,s,n},r.prototype.toRgb=function(){return ls(this.rgba)},r.prototype.toRgbString=function(){return A=ls(this.rgba),e=A.r,t=A.g,i=A.b,(s=A.a)<1?"rgba("+e+", "+t+", "+i+", "+s+")":"rgb("+e+", "+t+", "+i+")";var A,e,t,i,s},r.prototype.toHsl=function(){return no(li(this.rgba))},r.prototype.toHslString=function(){return A=no(li(this.rgba)),e=A.h,t=A.s,i=A.l,(s=A.a)<1?"hsla("+e+", "+t+"%, "+i+"%, "+s+")":"hsl("+e+", "+t+"%, "+i+"%)";var A,e,t,i,s},r.prototype.toHsv=function(){return A=io(this.rgba),{h:Te(A.h),s:Te(A.s),v:Te(A.v),a:Te(A.a,3)};var A},r.prototype.invert=function(){return Mt({r:255-(A=this.rgba).r,g:255-A.g,b:255-A.b,a:A.a});var A},r.prototype.saturate=function(A){return A===void 0&&(A=.1),Mt(gs(this.rgba,A))},r.prototype.desaturate=function(A){return A===void 0&&(A=.1),Mt(gs(this.rgba,-A))},r.prototype.grayscale=function(){return Mt(gs(this.rgba,-1))},r.prototype.lighten=function(A){return A===void 0&&(A=.1),Mt(lo(this.rgba,A))},r.prototype.darken=function(A){return A===void 0&&(A=.1),Mt(lo(this.rgba,-A))},r.prototype.rotate=function(A){return A===void 0&&(A=15),this.hue(this.hue()+A)},r.prototype.alpha=function(A){return typeof A=="number"?Mt({r:(e=this.rgba).r,g:e.g,b:e.b,a:A}):Te(this.rgba.a,3);var e},r.prototype.hue=function(A){var e=li(this.rgba);return typeof A=="number"?Mt({h:A,s:e.s,l:e.l,a:e.a}):Te(e.h)},r.prototype.isEqual=function(A){return this.toHex()===Mt(A).toHex()},r}(),Mt=function(r){return r instanceof us?r:new us(r)},ho=[],ch=function(r){r.forEach(function(A){ho.indexOf(A)<0&&(A(us,hs),ho.push(A))})};function uh(r,A){var e={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},t={};for(var i in e)t[e[i]]=i;var s={};r.prototype.toName=function(n){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,a,l=t[this.toHex()];if(l)return l;if(n!=null&&n.closest){var h=this.toRgb(),c=1/0,u="black";if(!s.length)for(var d in e)s[d]=new r(e[d]).toRgb();for(var I in e){var C=(o=h,a=s[I],Math.pow(o.r-a.r,2)+Math.pow(o.g-a.g,2)+Math.pow(o.b-a.b,2));C<c&&(c=C,u=I)}return u}},A.string.push([function(n){var o=n.toLowerCase(),a=o==="transparent"?"#0000":e[o];return a?new r(a).toRgb():null},"name"])}ch([uh]);class Rt{get value(){return this._value}set value(A){if(A===void 0||this._value===A)return;this._value=A;let e;typeof A=="number"?e={r:A>>24&255,g:A>>16&255,b:A>>8&255,a:(A&255)/255}:e=A;const t=Mt(e);t.isValid()?this._colord=t:console.warn(`Unable to convert color ${A}`)}get r8(){return this._colord.rgba.r}get g8(){return this._colord.rgba.g}get b8(){return this._colord.rgba.b}get a8(){return this._colord.rgba.a*255&255}get r(){return this.r8/255}get g(){return this.g8/255}get b(){return this.b8/255}get a(){return this._colord.rgba.a}get rgb(){return(this.r8<<16)+(this.g8<<8)+this.b8}get bgr(){return(this.b8<<16)+(this.g8<<8)+this.r8}get abgr(){return(this.a8<<24)+this.bgr}constructor(A=0){this.value=A}toArgb(A=this.a,e=!0){if(A===1)return(255<<24)+this.rgb;if(A===0)return e?0:this.rgb;let t=this.r8,i=this.g8,s=this.b8;return e&&(t=t*A+.5|0,i=i*A+.5|0,s=s*A+.5|0),(A*255<<24)+(t<<16)+(i<<8)+s}toHex(){return this._colord.toHex()}toArray(){return[this.r,this.g,this.b,this.a]}}class wt extends Yt{constructor(e){super();g(this,"_array",[]);this.dim=e}get length(){return this.dim}_operate(e,t,i){const{dim:s,_array:n}=this;let o;typeof t=="number"?o=Array.from({length:s},()=>t):t instanceof Ut||t instanceof wt?o=t.toArray():o=t;let a,l=[];if(i?i instanceof wt?a=i:l=i:a=this,t instanceof Ut){const{cols:h}=t;switch(e){case"*":for(let c=0;c<s;c++){let u=0;for(let d=0;d<s;d++)u+=n[c]*o[d*h+c];l[c]=u}break;default:throw new Error(`Not support operator in '${this.toName()} ${e} ${t.toName()}'`)}}else switch(e){case"+":for(let h=0;h<s;h++)l[h]=n[h]+o[h];break;case"-":for(let h=0;h<s;h++)l[h]=n[h]-o[h];break;case"*":for(let h=0;h<s;h++)l[h]=n[h]*o[h];break;case"/":for(let h=0;h<s;h++)l[h]=n[h]/o[h];break;case"rot":{const h=Math.cos(o[0]),c=Math.sin(o[0]);l[0]=n[0]*h-n[1]*c,l[1]=n[1]*h+n[0]*c;break}case"==":{let h=!0;for(let c=0;c<s;c++)h=h&&n[c]===o[c];return h}case"=":for(let h=0;h<s;h++){const c=o[h];c!==void 0&&(n[h]=c)}return this._emitUpdate(n),this;default:throw new Error(`Not support operator in '${this.toName()} ${e} Vector'`)}return(a==null?void 0:a.set(l))??l}add(e,t){return this._operate("+",e,t)}sub(e,t){return this._operate("-",e,t)}multiply(e,t){return this._operate("*",e,t)}divide(e,t){return this._operate("/",e,t)}rotate(e){return this._operate("rot",e)}set(e,...t){return t.length&&typeof e=="number"&&(e=[e,...t]),this._operate("=",e)}equals(e){return this._operate("==",e)}clone(){const e=new this.constructor;return e.set(this.toArray()),e}_emitUpdate(e){this._onUpdate(e),this.emit("update",e)}_onUpdate(e){}toArray(){return this._array.slice()}toName(){return`Vector${this.dim}`}}class Ut extends Yt{constructor(e,t,i){super();g(this,"_array",[]);this.rows=e,this.cols=t,i?this.set(i):this.identity()}get length(){return this.cols*this.rows}_operate(e,t,i){const{cols:s,rows:n,length:o,_array:a}=this;let l;typeof t=="number"?l=Array.from({length:o},()=>t):t instanceof wt||t instanceof Ut?l=t.toArray():l=t;let h,c=[];if(i?i instanceof wt||i instanceof Ut?h=i:c=i:t instanceof wt?h=new t.constructor:h=this,t instanceof wt){const{dim:u}=t;switch(e){case"*":for(let d=0;d<u;d++){let I=0;for(let C=0;C<s;C++)C<u&&(I+=a[d*s+C]*(l[C]??0));c[d]=I}break;default:throw new Error(`Not support operator in '${this.toName()} ${e} ${t.toName()}'`)}}else switch(e){case"*":for(let u=0;u<s;u++)for(let d=0;d<n;d++){const I=d*s;let C=0;for(let B=0;B<n;B++){const U=I+B,M=B*s+u;C+=a[U]*(l[M]??0)}c[I+u]=C}break;case"=":for(let u=0;u<o;u++){const d=l[u];d!==void 0&&(a[u]=d)}return this._emitUpdate(a),this;default:throw new Error(`Not support operator in '${this.toName()} ${e} Matrix2'`)}return(h==null?void 0:h.set(c))??c}identity(){const{cols:e,rows:t}=this,i=[];for(let s=0;s<e;s++)for(let n=0;n<t;n++){const o=n*e,a=s+o;i[a]=n+o===a?1:0}return this.set(i)}clone(){const e=new this.constructor;return e.set(this.toArray()),e}set(e){return this._operate("=",e)}multiply(e){return this._operate("*",e)}onUpdate(e){return this.on("update",e),this}offUpdate(e){return this.off("update",e),this}_emitUpdate(e){this._onUpdate(e),this.emit("update",e)}_onUpdate(e){}toArray(e=!1){const{cols:t,rows:i,_array:s}=this;if(e){const n=[];for(let o=0;o<i;o++)for(let a=0;a<t;a++)n[o+a*t]=s[a+o*t];return n}return s.slice()}toName(){return`Matrix${this.rows}(${this.rows}x${this.cols})`}toJSON(){return this._array}}class go extends Ut{constructor(A){super(4,4,A)}}const fs=Jt/180,fh=180/Jt;function _t(r,A,e){return Math.max(r,Math.min(A,e))}function Ue(r,A,e){return(1-e)*r+e*A}const dh={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(r,A=20){if(!this.adaptive||!r||Number.isNaN(r))return A;let e=Math.ceil(r/this.maxLength);return e<this.minSegments?e=this.minSegments:e>this.maxSegments&&(e=this.maxSegments),e}};class co extends wt{constructor(A=0,e=0,t=0,i=0){super(4),this.set([A,e,t,i])}}class qi extends Ut{constructor(A){super(4,5,A)}hueRotate(A=0){const e=Math.sin(A),t=Math.cos(A),i=.213,s=.715,n=.072;return this.multiply([i+t*(1-i)+e*-.213,s+t*-.715+e*-.715,n+t*-.072+e*(1-n),0,0,i+t*-.213+e*.143,s+t*(1-s)+e*.14,n+t*-.072+e*-.283,0,0,i+t*-.213+e*-.787,s+t*-.715+e*s,n+t*(1-n)+e*n,0,0,0,0,0,1,0])}saturate(A=1){const e=(A-1)*2/3+1,t=(e-1)*-.5;return this.multiply([e,t,t,0,0,t,e,t,0,0,t,t,e,0,0,0,0,0,1,0])}brightness(A=1){const e=A;return this.multiply([e,0,0,0,0,0,e,0,0,0,0,0,e,0,0,0,0,0,1,0])}contrast(A=1){const e=A,t=-128*(e-1);return this.multiply([e,0,0,0,t,0,e,0,0,t,0,0,e,0,t,0,0,0,1,0])}invert(A=1){const e=Ue(1,-1,A),t=Ue(0,255,A);return this.multiply([e,0,0,0,t,0,e,0,0,t,0,0,e,0,t,0,0,0,1,0])}sepia(A=1){const e=_t(0,A,1);return this.multiply([Ue(1,.393,e),Ue(0,.7689999,e),Ue(0,.18899999,e),0,0,Ue(0,.349,e),Ue(1,.6859999,e),Ue(0,.16799999,e),0,0,Ue(0,.272,e),Ue(0,.5339999,e),Ue(1,.13099999,e),0,0,0,0,0,1,0])}opacity(A=1){return this.multiply([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,A,0])}grayscale(A=1){const e=_t(0,A,1),t=Ue(1,.3,e),i=Ue(0,.3,e),s=Ue(1,.59,e),n=Ue(0,.59,e),o=Ue(1,.11,e),a=Ue(0,.11,e);return this.multiply([t,n,a,0,0,i,s,a,0,0,i,n,o,0,0,0,0,0,1,0])}multiply(A){const e=A,t=this._array;return this.set([t[0]*e[0]+t[1]*e[5]+t[2]*e[10]+t[3]*e[15],t[0]*e[1]+t[1]*e[6]+t[2]*e[11]+t[3]*e[16],t[0]*e[2]+t[1]*e[7]+t[2]*e[12]+t[3]*e[17],t[0]*e[3]+t[1]*e[8]+t[2]*e[13]+t[3]*e[18],t[0]*e[4]+t[1]*e[9]+t[2]*e[14]+t[3]*e[19]+t[4],t[5]*e[0]+t[6]*e[5]+t[7]*e[10]+t[8]*e[15],t[5]*e[1]+t[6]*e[6]+t[7]*e[11]+t[8]*e[16],t[5]*e[2]+t[6]*e[7]+t[7]*e[12]+t[8]*e[17],t[5]*e[3]+t[6]*e[8]+t[7]*e[13]+t[8]*e[18],t[5]*e[4]+t[6]*e[9]+t[7]*e[14]+t[8]*e[19]+t[9],t[10]*e[0]+t[11]*e[5]+t[12]*e[10]+t[13]*e[15],t[10]*e[1]+t[11]*e[6]+t[12]*e[11]+t[13]*e[16],t[10]*e[2]+t[11]*e[7]+t[12]*e[12]+t[13]*e[17],t[10]*e[3]+t[11]*e[8]+t[12]*e[13]+t[13]*e[18],t[10]*e[4]+t[11]*e[9]+t[12]*e[14]+t[13]*e[19]+t[14],t[15]*e[0]+t[16]*e[5]+t[17]*e[10]+t[18]*e[15],t[15]*e[1]+t[16]*e[6]+t[17]*e[11]+t[18]*e[16],t[15]*e[2]+t[16]*e[7]+t[17]*e[12]+t[18]*e[17],t[15]*e[3]+t[16]*e[8]+t[17]*e[13]+t[18]*e[18],t[15]*e[4]+t[16]*e[9]+t[17]*e[14]+t[18]*e[19]+t[19]])}toMatrix4(){const A=this._array;return new go([A[0],A[1],A[2],A[3],A[5],A[6],A[7],A[8],A[10],A[11],A[12],A[13],A[15],A[16],A[17],A[18]])}toVector4(){const A=this._array;return new co(A[4]/255,A[9]/255,A[14]/255,A[19]/255)}}class Ih extends Ut{constructor(A){super(2,2,A)}}let ds=class extends Ut{constructor(A){super(3,3,A)}invert(){const[A,e,t,i,s,n,o,a,l]=this._array,h=l*s-n*a,c=n*o-l*i,u=a*i-s*o,d=A*h+e*c+t*u;if(d===0)return this.set([0,0,0,0,0,0,0,0,0]);const I=1/d;return this.set([h*I,(t*a-l*e)*I,(n*e-t*s)*I,c*I,(l*A-t*o)*I,(t*i-n*A)*I,u*I,(e*o-a*A)*I,(s*A-e*i)*I])}};class uo extends ds{constructor(A=0,e=0,t=0,i=0,s=!1){super(),this._x=A,this._y=e,this._width=t,this._height=i,this._flipY=s,this._performUpdateArray()}flipY(A){return this._flipY!==A&&(this._flipY=A,this._performUpdateArray()),this}translate(A,e){return(this._x!==A||this._y!==e)&&(this._x=A,this._y=e,this._performUpdateArray()),this}resize(A,e){return(this._width!==A||this._height!==e)&&(this._width=A,this._height=e,this._performUpdateArray()),this}_performUpdateArray(){const A=this._width,e=this._height;if(!A||!e)return;const t=this._x,i=this._y,s=this._flipY?-1:1,n=1/A*2,o=s*(1/e*2),a=-1-t*n,l=-s-i*o;this.set([n,0,a,0,o,l,0,0,1])}}let zi=class Zr extends wt{get x(){return this._array[0]}set x(A){const[e,t]=this._array;e!==A&&this.set(A,t)}get y(){return this._array[1]}set y(A){const[e,t]=this._array;t!==A&&this.set(e,A)}get width(){return this.x}set width(A){this.x=A}get height(){return this.y}set height(A){this.y=A}constructor(A=0,e){super(2),this.set(typeof A=="number"?[A,e??A]:A)}update(A,e){const[t,i]=this._array;return(t!==A||i!==e)&&this.set(A,e),this}getLength(){const[A,e]=this._array;return Math.sqrt(A*A+e*e)}getAngle(){const[A,e]=this._array;return Math.atan2(-A,-e)+Math.PI}distanceTo(A){return Math.hypot(A.x-this.x,A.y-this.y)}normalize(){const[A,e]=this._array,t=1/(this.getLength()||1);return this.set(A*t,e*t),this}static lerp(A,e,t){return new Zr(e).clone().sub(new Zr(A)).multiply(t).add(new Zr(A))}};class hi{constructor(...A){g(this,"end",new zi);g(this,"position");g(this,"size");const e=new zi,t=new zi;switch(A.length){case 0:break;case 1:e.set(A[0].position),t.set(A[0].size);break;case 2:e.set(A[0]),t.set(A[1]);break;default:e.set(A[0],A[1]),t.set(A[2],A[3]);break}this.update=this.update.bind(this),this.position=e.on("update",this.update),this.size=t.on("update",this.update),this.update()}get x(){return this.position.x}get y(){return this.position.y}get left(){return this.position.x}get top(){return this.position.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get width(){return this.size.x}get height(){return this.size.y}update(){return this.end.set(this.position.x+this.size.x,this.position.y+this.size.y),this}toArray(){return[this.x,this.y,this.width,this.height]}}class Ze extends ds{constructor(e=!0){super();g(this,"_cx",1);g(this,"_sx",0);g(this,"_cy",0);g(this,"_sy",1);g(this,"_translateX",0);g(this,"_translateY",0);g(this,"_translateZ",1);g(this,"_scaleX",1);g(this,"_scaleY",1);g(this,"_skewX",0);g(this,"_skewY",0);g(this,"_rotate",0);g(this,"dirtyId",0);g(this,"_needsUpdateArray",!1);g(this,"_needsUpdateFields",!1);this.autoUpdate=e}_onUpdate(e){super._onUpdate(e),this._requestUpdateFields()}_updateSkew(){this._cx=Math.cos(this._rotate+this._skewY),this._sx=Math.sin(this._rotate+this._skewY),this._cy=-Math.sin(this._rotate-this._skewX),this._sy=Math.cos(this._rotate-this._skewX)}_requestUpdateArray(){this.autoUpdate?this._performUpdateArray():this._needsUpdateArray=!0}_requestUpdateFields(){this.autoUpdate?this._performUpdateFields():this._needsUpdateFields=!0}_performUpdateArray(){const e=this._cx*this._scaleX,t=this._sx*this._scaleX,i=this._cy*this._scaleY,s=this._sy*this._scaleY,n=this._translateX,o=this._translateY,a=this._translateZ,l=this._array;this._array=[e,i,n,t,s,o,l[6],l[7],a],this.dirtyId++}_performUpdateFields(){const{a:e,c:t,tx:i,b:s,d:n,ty:o,tz:a}=this.toObject(),l=-Math.atan2(-t,n),h=Math.atan2(s,e),c=Math.abs(l+h);c<1e-5||Math.abs(Ce-c)<1e-5?(this._rotate=h,this._skewX=this._skewY=0):(this._rotate=0,this._skewX=l,this._skewY=h),this._scaleX=Math.sqrt(e*e+s*s),this._scaleY=Math.sqrt(t*t+n*n),this._translateX=i,this._translateY=o,this._translateZ=a,this.dirtyId++}skew(e,t){return this._skewX=e,this._skewY=t,this._updateSkew(),this._requestUpdateArray(),this}skewX(e){return this.skew(e,this._skewY)}skewY(e){return this.skew(this._skewX,e)}translate(e,t,i=1){return this._translateX=e,this._translateY=t,this._translateZ=i,this._requestUpdateArray(),this}translateX(e){return this.translate(e,this._translateY)}translateY(e){return this.translate(this._translateX,e)}translateZ(e){return this.translate(this._translateX,this._translateY,e)}translate3d(e,t,i){return this.translate(e,t,i)}scale(e,t,i=1){return this._scaleX=e,this._scaleY=t,this._requestUpdateArray(),this}scaleX(e){return this.scale(e,this._scaleY)}scaleY(e){return this.scale(this._scaleX,e)}scale3d(e,t,i){return this.scale(e,t,i)}rotate(e){return this._rotate=e,this._updateSkew(),this._requestUpdateArray(),this}rotateX(e){return this.scaleY(this._rotateToScale(e))}rotateY(e){return this.scaleX(this._rotateToScale(e))}rotateZ(e){return this.rotate(e)}rotate3d(e,t,i,s){const[n,o,a]=this._rotate3d(e,t,i,s);return n&&this.rotateX(n),o&&this.rotateY(o),a&&this.rotateZ(a),this}_rotateToScale(e){const t=e/Ce;return t<=.5?t*-4+1:(t-1)*4+1}_rotate3d(e,t,i,s){if(e===1&&t===0&&i===0)return[s,0,0];if(e===0&&t===1&&i===0)return[0,s,0];if(e===0&&t===0)return[0,0,s];{const n=Math.cos(s),o=Math.sin(s),a=n+e*e*(1-n),l=e*t*(1-n)-i*o,h=e*i*(1-n)+t*o,c=n+t*t*(1-n),u=t*i*(1-n)-e*o,d=n+i*i*(1-n),I=-Math.atan2(-u,c),C=-Math.atan2(h,Math.sqrt(u*u+d*d)),B=-Math.atan2(-l,a);return[I,C,B]}}applyToPoint(e,t){const{a:i,c:s,tx:n,b:o,d:a,ty:l}=this.toObject();return[i*e+s*t+n,o*e+a*t+l]}inverse(){return this.clone().invert()}update(){let e=!1;return this._needsUpdateArray&&(this._needsUpdateArray=!1,this._performUpdateArray(),e=!0),this._needsUpdateFields&&(this._needsUpdateFields=!1,this._performUpdateFields(),e=!0),e}isIdentity(){const{a:e,b:t,c:i,d:s,tx:n,ty:o}=this.toObject();return e===1&&t===0&&i===0&&s===1&&n===0&&o===0}toObject(){const[e,t,i,s,n,o,,,a]=this._array;return{a:e,c:t,tx:i,b:s,d:n,ty:o,tz:a}}}class Bh extends wt{constructor(){super(3)}}var Eh=Object.defineProperty,fo=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Eh(A,e,i),i};class ji extends Wi{constructor(){super();g(this,"_starting",!1);g(this,"_nextDeltaTime",0);this._onNextTick=this._onNextTick.bind(this)}get starting(){return this._starting}get spf(){return this.fps?Math.floor(1e3/this.fps):0}start(e){return this._starting||(this._starting=!0,this.removeAllListeners(),this.on("process",e),Re.on(this._onNextTick,{sort:0})),this}stop(){return this._starting&&(this._starting=!1,Re.off(this._onNextTick,{sort:0})),this}_onNextTick(){const e=Re.elapsed*this.speed;if((this._nextDeltaTime-=e)<=0){const i=(this._nextDeltaTime=this.spf)||e;this.emit("process",i)}}}fo([_({default:24})],ji.prototype,"fps"),fo([_({default:1})],ji.prototype,"speed");class Io{constructor(){g(this,"view");g(this,"pixelRatio",ss);g(this,"screen",{x:0,y:0,width:0,height:0});g(this,"related",new RA)}getRelated(A,e){let t=this.related.get(A);return t||(e?(this.related.set(A,t=e()),t):(console.warn("Failed to get related",A),null))}resize(A,e,t=!0){const i=Math.floor(A*this.pixelRatio),s=Math.floor(e*this.pixelRatio),n=i/this.pixelRatio,o=s/this.pixelRatio;this.view&&(this.view.width=i,this.view.height=s),this.screen.width=n,this.screen.height=o,t&&this.view&&(this.view.style.width=`${n}px`,this.view.style.height=`${o}px`)}}var UA=(r=>(r.NORMAL="normal",r.ADD="add",r.MULTIPLY="multiply",r.SCREEN="screen",r.NONE="none",r.NORMAL_NPM="normal_npm",r.ADD_NPM="add_npm",r.SCREEN_NPM="screen_npm",r.SRC_IN="src_in",r.SRC_OUT="src_out",r.SRC_ATOP="src_atop",r.DST_OVER="dst_over",r.DST_IN="dst_in",r.DST_OUT="dst_out",r.DST_ATOP="dst_atop",r.XOR="xor",r.SUBTRACT="subtract",r))(UA||{});function Bo(r){return{normal:[r.ONE,r.ONE_MINUS_SRC_ALPHA],add:[r.ONE,r.ONE],multiply:[r.DST_COLOR,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA],screen:[r.ONE,r.ONE_MINUS_SRC_COLOR,r.ONE,r.ONE_MINUS_SRC_ALPHA],none:[0,0],normal_npm:[r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA],add_npm:[r.SRC_ALPHA,r.ONE,r.ONE,r.ONE],screen_npm:[r.SRC_ALPHA,r.ONE_MINUS_SRC_COLOR,r.ONE,r.ONE_MINUS_SRC_ALPHA],src_in:[r.DST_ALPHA,r.ZERO],src_out:[r.ONE_MINUS_DST_ALPHA,r.ZERO],src_atop:[r.DST_ALPHA,r.ONE_MINUS_SRC_ALPHA],dst_over:[r.ONE_MINUS_DST_ALPHA,r.ONE],dst_in:[r.ZERO,r.SRC_ALPHA],dst_out:[r.ZERO,r.ONE_MINUS_SRC_ALPHA],dst_atop:[r.ONE_MINUS_DST_ALPHA,r.SRC_ALPHA],xor:[r.ONE_MINUS_DST_ALPHA,r.ONE_MINUS_SRC_ALPHA],subtract:[r.ONE,r.ONE,r.ONE,r.ONE,r.FUNC_REVERSE_SUBTRACT,r.FUNC_ADD]}}class Ct{get gl(){return this._renderer.gl}install(A){this._renderer=A}onUpdateContext(){}flush(){}reset(){}destroy(){}}const Fr=class Fr{constructor(A){g(this,"_blendMode",UA.NORMAL);g(this,"_polygonOffset",0);g(this,"bitmap",0);if(A)for(const e in A)this[e]=A[e]}static _init(){this._properties.forEach((A,e)=>{Object.defineProperty(this.prototype,A,{get(){return!!(this.bitmap&1<<e)},set(t){!!(this.bitmap&1<<e)!==t&&(this.bitmap^=1<<e)},enumerable:!0,configurable:!0})})}static for2D(){const A=new Fr;return A.depthTest=!1,A.blend=!0,A}get blendMode(){return this._blendMode}set blendMode(A){this.blend=A!==UA.NONE,this._blendMode=A}get polygonOffset(){return this._polygonOffset}set polygonOffset(A){this.offsets=!!A,this._polygonOffset=A}};g(Fr,"_properties",["blend","offsets","culling","depthTest","clockwiseFrontFace","depthMask"]);let EA=Fr;EA._init();class Eo extends Ct{constructor(){super(...arguments);g(this,"_blendEq",!1);g(this,"_setters",EA._properties.map(e=>this[`set${e.replace(/^\S/,t=>t.toUpperCase())}`]));g(this,"boundStateBitmap",0);g(this,"boundBlendMode");g(this,"blendModes");g(this,"defaultState",new EA({blend:!0}))}install(e){super.install(e),e.state=this}onUpdateContext(){super.onUpdateContext(),this.blendModes=Bo(this._renderer.gl)}toggle(e,t){this._renderer.gl[t?"enable":"disable"](e)}setBlend(e){this.toggle(this._renderer.gl.BLEND,e)}setOffsets(e){this.toggle(this._renderer.gl.POLYGON_OFFSET_FILL,e)}setCulling(e){this.toggle(this._renderer.gl.CULL_FACE,e)}setDepthTest(e){this.toggle(this._renderer.gl.DEPTH_TEST,e)}setDepthMask(e){this._renderer.gl.depthMask(e)}setClockwiseFrontFace(e){const t=this._renderer.gl;t.frontFace(t[e?"CW":"CCW"])}setBlendMode(e){if(e===this.boundBlendMode)return;this.boundBlendMode=e;const t=this.blendModes[e],i=this._renderer.gl;t.length===2?i.blendFunc(t[0],t[1]):i.blendFuncSeparate(t[0],t[1],t[2],t[3]),t.length===6?(this._blendEq=!0,i.blendEquationSeparate(t[4],t[5])):this._blendEq&&(this._blendEq=!1,i.blendEquationSeparate(i.FUNC_ADD,i.FUNC_ADD))}setPolygonOffset(e,t){this._renderer.gl.polygonOffset(e,t)}bind(e){var t;if(this.boundStateBitmap!==e.bitmap){let i=this.boundStateBitmap^e.bitmap,s=0;for(;i;)i&1&&((t=this._setters[s])==null||t.call(this,!!(e.bitmap&1<<s))),i=i>>1,s++;this.boundStateBitmap=e.bitmap}e.blend&&this.setBlendMode(e.blendMode),e.offsets&&this.setPolygonOffset(1,e.polygonOffset)}reset(){super.reset();const e=this._renderer.gl;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!1),this.bind(this.defaultState),this._blendEq=!0,this.setBlendMode(UA.NORMAL)}}class po extends Ct{constructor(){super(...arguments);g(this,"_state",EA.for2D());g(this,"_batchSize",4096*4);g(this,"_vertexSize",27);g(this,"_drawCallUid",0);g(this,"_defaultModulate",4294967295);g(this,"_defaultBackgroundColor",0);g(this,"_defaultColorMatrixOffset",[0,0,0,0]);g(this,"_defaultColorMatrix",[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);g(this,"_batchables",[]);g(this,"_vertexCount",0);g(this,"_indexCount",0);g(this,"_attributeBuffer",[]);g(this,"_indexBuffers",[]);g(this,"_shaders",new Map);g(this,"_attributes",{aTextureId:{size:1,normalized:!0,type:"float"},aPosition:{size:2,normalized:!1,type:"float"},aUv:{size:2,normalized:!1,type:"float"},aModulate:{size:4,normalized:!0,type:"unsigned_byte"},aBackgroundColor:{size:4,normalized:!0,type:"unsigned_byte"},aColorMatrixOffset:{size:4,normalized:!1,type:"float"},aColorMatrix:{size:4,normalized:!1,type:"float"}})}install(e){super.install(e),e.batch2D=this}_getShader(e){let t=this._shaders.get(e);return t||this._shaders.set(e,t=this._createShader(e)),t}_createShader(e){const t=this._renderer,i=t.program.create({vert:`precision highp float;
1
+ (function(f,st){typeof exports=="object"&&typeof module<"u"?st(exports):typeof define=="function"&&define.amd?define(["exports"],st):(f=typeof globalThis<"u"?globalThis:f||self,st(f.modernCanvas={}))})(this,function(f){"use strict";var ZI=Object.defineProperty;var $I=(f,st,Jt)=>st in f?ZI(f,st,{enumerable:!0,configurable:!0,writable:!0,value:Jt}):f[st]=Jt;var g=(f,st,Jt)=>$I(f,typeof st!="symbol"?st+"":st,Jt);var xA,uA;var st=typeof document<"u"?document.currentScript:null;const Jt=Math.PI,Ce=Jt*2;let ql=0;function Nn(r){var A;return((A=r==null?void 0:r.__SPECTOR_Object_TAG)==null?void 0:A.id)??++ql}function $r(r){return!(r&r-1)&&!!r}const zl=/([\w-]+)\((.+?)\)/g,jl=/[^,]+/g,Zl=/([-e.\d]+)(.*)/;function es(r){return Array.isArray(r)?r.map(A=>({name:A.name,args:A.args.map(e=>({...e,normalizedIntValue:e.normalizedDefaultIntValue}))})):{...r,normalizedIntValue:r.normalizedDefaultIntValue}}function ni(r,A,e={}){const t=IA(A,e);return t.length?t:Fn(r,A,e)}function IA(r,A={}){const e=[];let t;for(;(t=zl.exec(r))!==null;){const[,i,s]=t;i&&e.push({name:i,args:$l(i,s,A)})}return e}function $l(r,A,e={}){const t=[];let i,s=0;for(;(i=jl.exec(A))!==null;)t.push(Fn(r,i[0],{...e,index:s++}));return t}function Fn(r,A,e={}){const{width:t=1,height:i=1,index:s=0}=e,n=A.match(Zl),o={unit:(n==null?void 0:n[2])??null,value:A,intValue:Number(n==null?void 0:n[1]),normalizedIntValue:0,normalizedDefaultIntValue:0};switch(r){case"scale":case"scaleX":case"scaleY":case"scale3d":o.normalizedDefaultIntValue=1;break}switch(o.unit){case"%":o.normalizedIntValue=o.intValue/100;break;case"rad":o.normalizedIntValue=o.intValue/Ce;break;case"deg":o.normalizedIntValue=o.intValue/360;break;case"px":switch(s){case 0:o.normalizedIntValue=o.intValue/t;break;case 1:o.normalizedIntValue=o.intValue/i;break}break;case"turn":case"em":case"rem":default:o.normalizedIntValue=o.intValue;break}return o}const Tn="WebGL2RenderingContext"in globalThis,Ln="ImageBitmap"in globalThis,Gn="ResizeObserver"in globalThis,MA="PointerEvent"in globalThis,On="WheelEvent"in globalThis,eh="MouseEvent"in globalThis,Kt="ontouchstart"in globalThis,Hn="onclick"in globalThis,ts="createImageBitmap"in globalThis,As="AudioContext"in globalThis,is="webkitAudioContext"in globalThis,rs="OfflineAudioContext"in globalThis,Jn="webkitOfflineAudioContext"in globalThis,Kn=As||is,oi=typeof window<"u",ss=globalThis.devicePixelRatio||1,ns=r=>r!==null&&typeof r=="object"&&r.nodeType===1,Yn=r=>ns(r)&&r.tagName==="VIDEO",th=r=>ns(r)&&r.tagName==="IMG";function Wn(r){return typeof r=="object"&&r!==null&&r.nodeType===1&&r.tagName==="CANVAS"}function Vn(r){return Tn&&r instanceof globalThis.WebGL2RenderingContext}function Xn(){if(oi)return globalThis.document.createElement("canvas")}function qn(r,A=globalThis.location){if(r.startsWith("data:"))return"";A=A||globalThis.location;const e=new URL(r,document.baseURI);return e.hostname!==A.hostname||e.port!==A.port||e.protocol!==A.protocol?"anonymous":""}function zn(r,A,e){e===null&&!A.startsWith("data:")?r.crossOrigin=qn(A):e!==!1&&(r.crossOrigin=typeof e=="string"?e:"anonymous")}class RA{constructor(){g(this,"_map",new WeakMap)}_toRaw(A){if(A&&typeof A=="object"){const e=A.__v_raw;e&&(A=this._toRaw(e))}return A}delete(A){return this._map.delete(this._toRaw(A))}get(A){return this._map.get(this._toRaw(A))}has(A){return this._map.has(this._toRaw(A))}set(A,e){return this._map.set(this._toRaw(A),this._toRaw(e)),this}}const jn=new RA;function Ki(r){let A=jn.get(r);if(!A){const e=Object.getPrototypeOf(r);A=new Map(e?Ki(e):void 0),jn.set(r,A)}return A}function BA(r,A,e={}){Ki(r).set(A,e);const{default:t,alias:i}=e;let s=Object.getOwnPropertyDescriptor(r.prototype,A);if(!s){const n=i??Symbol.for(String(A));s={get(){return this[n]},set(o){this[n]=o}}}Object.defineProperty(r.prototype,A,{get(){var n;return((n=s.get)==null?void 0:n.call(this))??t},set(n){var a,l,h;const o=((a=s.get)==null?void 0:a.call(this))??t;(l=s.set)==null||l.call(this,n),(h=this.requestUpdate)==null||h.call(this,A,o,e)},configurable:!0,enumerable:!0})}function _(r){return function(A,e){BA(A.constructor,e,r)}}const Yi=new Map;function ae(r,A){return function(e){Object.defineProperty(e.prototype,"tag",{value:r,enumerable:!0,configurable:!0}),A&&Object.keys(A).forEach(t=>{BA(e,t,{default:A[t]})}),Yi.set(r,e)}}function Me(r){return _({...r,protected:!0})}function Ah(r="node",A={}){const e=Yi.get(r);if(!e)throw new Error(`Failed to createNode, tag: ${r}`);return new e().setProperties(A)}class Re{static get currentTime(){return this._currentTime}static get elapsed(){return this._elapsed}static on(A,e={}){const{sort:t=0,once:i=!1}=e;this._queue[t]||(this._queue[t]=[]),this._queue[t].push({cb:A,once:i})}static off(A,e={}){const{sort:t=0}=e,i=this._queue[t];if(!i)return;const s=[];for(let n=i.length,o=0;o<n;o++){const a=i[o];a.cb!==A&&s.push(a)}s.length?this._queue[t]=s:this._queue.splice(t,1)}static start(){"requestAnimationFrame"in globalThis&&(this._currentTime=performance.now(),this._requestId=requestAnimationFrame(A=>this._update(A)))}static stop(){this._requestId&&(cancelAnimationFrame(this._requestId),this._requestId=void 0)}static _update(A){this._elapsed=A-this._currentTime,this._currentTime=A,this._requestId=requestAnimationFrame(e=>this._update(e)),this._performUpdate()}static _performUpdate(){const A=this._queue,e=[];for(let t=A.length,i=t;i>=0;i--){const s=A[i];if(!s)continue;const n=[];for(let o=s.length,a=0;a<o;a++){const l=s[a];try{l.cb()}catch(h){console.warn(h)}l.once||n.push(l)}n.length&&(e[i]=n)}this._queue=e}}g(Re,"_queue",[]),g(Re,"_currentTime",0),g(Re,"_elapsed",0),g(Re,"_requestId"),Re.start();async function os(r){return new Promise(A=>{Re.on(()=>{r==null||r(),A()},{sort:1,once:!0})})}let Yt=class{constructor(){g(this,"eventListeners",new Map)}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(A){return this.eventListeners.has(A)}on(A,e,t){const i={value:e,options:t},s=this.eventListeners.get(A);return s?Array.isArray(s)?s.push(i):this.eventListeners.set(A,[s,i]):this.eventListeners.set(A,i),this}once(A,e){return this.on(A,e,{once:!0})}off(A,e,t){var s,n;if(!e)return this.eventListeners.delete(A),this;const i=this.eventListeners.get(A);if(!i)return this;if(Array.isArray(i)){const o=[];for(let a=0,l=i.length;a<l;a++){const h=i[a];(h.value!==e||typeof t=="object"&&(t!=null&&t.once)&&(typeof h.options=="boolean"||!((s=h.options)!=null&&s.once)))&&o.push(h)}o.length?this.eventListeners.set(A,o.length===1?o[0]:o):this.eventListeners.delete(A)}else i.value===e&&(typeof t=="boolean"||!(t!=null&&t.once)||typeof i.options=="boolean"||(n=i.options)!=null&&n.once)&&this.eventListeners.delete(A);return this}emit(A,...e){var i,s;const t=this.eventListeners.get(A);if(t){if(Array.isArray(t))for(let n=t.length,o=0;o<n;o++){const a=t[o];typeof a.options=="object"&&((i=a.options)!=null&&i.once)&&this.off(A,a.value,a.options),a.value.apply(this,e)}else typeof t.options=="object"&&((s=t.options)!=null&&s.once)&&this.off(A,t.value,t.options),t.value.apply(this,e);return!0}else return!1}},ih=0;class Wi extends Yt{constructor(){super(...arguments);g(this,"instanceId",++ih);g(this,"_defaultProperties");g(this,"_updatedProperties",new Map);g(this,"_changedProperties",new Set);g(this,"_updatingPromise",Promise.resolve());g(this,"_updating",!1)}is(e){return!!(e&&this.instanceId===e.instanceId)}async _enqueueUpdate(){this._updating=!0;try{await this._updatingPromise}catch(e){Promise.reject(e)}await os(),this._performUpdate()}_performUpdate(){this._updating&&(this._update(this._updatedProperties),this._updatedProperties=new Map,this._updating=!1)}_update(e){}_updateProperty(e,t,i,s){}isDirty(e){return this._updatedProperties.has(e)}getPropertyDeclarations(){return Ki(this.constructor)}getPropertyDeclaration(e){return this.getPropertyDeclarations().get(e)}getDefaultProperties(){if(!this._defaultProperties){this._defaultProperties={};for(const[e,t]of this.getPropertyDeclarations())!t.protected&&!t.alias&&(this._defaultProperties[e]=t.default)}return this._defaultProperties}getProperty(e){return this[e]}setProperty(e,t){return this[e]=t,this}getProperties(e){const t={};for(const[i,s]of this.getPropertyDeclarations())!s.protected&&!s.alias&&(!e||e.includes(i))&&(t[i]=this.getProperty(i));return t}setProperties(e){if(e)for(const[t]of this.getPropertyDeclarations())t in e&&this.setProperty(t,e[t]);return this}requestUpdate(e,t,i){if(e!==void 0){const s=this[e];if(!Object.is(s,t))this._updatedProperties.set(e,t),this._changedProperties.add(e),i??(i=this.getPropertyDeclaration(e)),this._updateProperty(e,s,t,i),this.emit("updateProperty",e,s,t,i);else return}this._updating||(this._updatingPromise=this._enqueueUpdate())}toJSON(){return this.getProperties(Array.from(this._changedProperties))}clone(){return new this.constructor(this.toJSON())}destroy(){this.removeAllListeners()}}class Zn extends Wi{}class Vi{constructor(){g(this,"bubbles",!0);g(this,"cancelable",!1);g(this,"which");g(this,"cancelBubble",!0);g(this,"returnValue");g(this,"srcElement");g(this,"composed",!1);g(this,"currentTarget");g(this,"defaultPrevented",!1);g(this,"eventPhase",Vi.prototype.NONE);g(this,"isTrusted");g(this,"target");g(this,"timeStamp");g(this,"type");g(this,"nativeEvent");g(this,"originalEvent");g(this,"propagationStopped",!1);g(this,"propagationImmediatelyStopped",!1);g(this,"path");g(this,"detail");g(this,"view");g(this,"layer",{x:0,y:0});g(this,"page",{x:0,y:0});g(this,"NONE",0);g(this,"CAPTURING_PHASE",1);g(this,"AT_TARGET",2);g(this,"BUBBLING_PHASE",3)}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}initEvent(...A){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(...A){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}composedPath(){return this.path}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}class as extends Vi{constructor(){super(...arguments);g(this,"altKey");g(this,"button");g(this,"buttons");g(this,"ctrlKey");g(this,"metaKey");g(this,"relatedTarget");g(this,"shiftKey");g(this,"client",{x:0,y:0});g(this,"movement",{x:0,y:0});g(this,"offset",{x:0,y:0});g(this,"global",{x:0,y:0});g(this,"screen",{x:0,y:0})}get clientX(){return this.client.x}get clientY(){return this.client.y}get x(){return this.clientX}get y(){return this.clientY}get movementX(){return this.movement.x}get movementY(){return this.movement.y}get offsetX(){return this.offset.x}get offsetY(){return this.offset.y}get globalX(){return this.global.x}get globalY(){return this.global.y}get screenX(){return this.screen.x}get screenY(){return this.screen.y}getModifierState(e){return"getModifierState"in this.nativeEvent&&this.nativeEvent.getModifierState(e)}initMouseEvent(...e){throw new Error("Method not implemented.")}}class $n extends as{constructor(){super(...arguments);g(this,"width",0);g(this,"height",0);g(this,"isPrimary",!1);g(this,"pointerType");g(this,"pressure");g(this,"tangentialPressure");g(this,"tiltX");g(this,"tiltY");g(this,"twist")}getCoalescedEvents(){return this.type==="pointermove"||this.type==="mousemove"||this.type==="touchmove"?[this]:[]}getPredictedEvents(){throw new Error("getPredictedEvents is not supported!")}}class ai extends as{constructor(){super(...arguments);g(this,"deltaMode");g(this,"deltaX");g(this,"deltaY");g(this,"deltaZ");g(this,"DOM_DELTA_PIXEL",0);g(this,"DOM_DELTA_LINE",1);g(this,"DOM_DELTA_PAGE",2)}}g(ai,"DOM_DELTA_PIXEL",0),g(ai,"DOM_DELTA_LINE",1),g(ai,"DOM_DELTA_PAGE",2);const rh={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"};class eo extends Yt{constructor(){super(...arguments);g(this,"target");g(this,"cursor","default");g(this,"cursorStyles",{default:"inherit",pointer:"pointer"});g(this,"setuped",!1);g(this,"event");g(this,"enableMoveEvent",!0);g(this,"enableWheelEvent",!0);g(this,"enableClickEvent",!0);g(this,"onPointerDown",e=>{if(Kt&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("pointerdown",this.event=this.clonePointerEvent(t[i]));this.setCursor(this.cursor)});g(this,"onPointerOver",e=>{if(!this.enableClickEvent||Kt&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("pointerover",this.event=this.clonePointerEvent(t[i]))});g(this,"onPointerMove",e=>{if(!this.enableMoveEvent||Kt&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("pointermove",this.event=this.clonePointerEvent(t[i]))});g(this,"onPointerUp",e=>{if(!this.enableClickEvent||Kt&&e.pointerType==="touch")return;let t=e.target;e.composedPath&&e.composedPath().length>0&&(t=e.composedPath()[0]);const i=t!==this.target?"outside":"",s=this.normalize(e);for(let n=0,o=s.length;n<o;n++){const a=this.clonePointerEvent(s[n]);a.type+=i,this.emit("pointerup",this.event=a)}});g(this,"onWheel",e=>{if(!this.enableWheelEvent)return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("wheel",this.event=this.cloneWheelEvent(t[i]))})}setTarget(e){this.removeEventListeners(),this.target=e,this.addEventListeners()}removeEventListeners(){if(!this.setuped||!this.target)return;const e=this.target.style;globalThis.navigator.msPointerEnabled?(e.msContentZooming="",e.msTouchAction=""):MA&&(e.touchAction=""),MA?(this.target.removeEventListener("pointerdown",this.onPointerDown),this.target.removeEventListener("pointerleave",this.onPointerOver),this.target.removeEventListener("pointerover",this.onPointerOver),this.target.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.target.ownerDocument.removeEventListener("pointerup",this.onPointerUp)):(this.target.removeEventListener("mousedown",this.onPointerDown),this.target.removeEventListener("mouseout",this.onPointerOver),this.target.removeEventListener("mouseover",this.onPointerOver),this.target.ownerDocument.removeEventListener("mousemove",this.onPointerMove),this.target.ownerDocument.removeEventListener("mouseup",this.onPointerUp)),Kt&&(this.target.removeEventListener("touchstart",this.onPointerDown),this.target.removeEventListener("touchmove",this.onPointerMove),this.target.removeEventListener("touchend",this.onPointerUp)),this.target.removeEventListener("wheel",this.onWheel),this.target=void 0,this.setuped=!1}addEventListeners(){if(this.setuped||!this.target)return;const e=this.target.style;e&&(globalThis.navigator.msPointerEnabled?(e.msContentZooming="none",e.msTouchAction="none"):MA&&(e.touchAction="none")),MA?(this.target.addEventListener("pointerdown",this.onPointerDown),this.target.addEventListener("pointerleave",this.onPointerOver),this.target.addEventListener("pointerover",this.onPointerOver),this.target.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.target.ownerDocument.addEventListener("pointerup",this.onPointerUp)):(this.target.addEventListener("mousedown",this.onPointerDown),this.target.addEventListener("mouseout",this.onPointerOver),this.target.addEventListener("mouseover",this.onPointerOver),this.target.ownerDocument.addEventListener("mousemove",this.onPointerMove),this.target.ownerDocument.addEventListener("mouseup",this.onPointerUp)),Kt&&(this.target.addEventListener("touchstart",this.onPointerDown),this.target.addEventListener("touchmove",this.onPointerMove),this.target.addEventListener("touchend",this.onPointerUp)),this.target.addEventListener("wheel",this.onWheel),this.setuped=!0}normalize(e){const t=[];if(Kt&&e instanceof globalThis.TouchEvent)for(let i=0,s=e.changedTouches.length;i<s;i++){const n=e.changedTouches[i];typeof n.button>"u"&&(n.button=0),typeof n.buttons>"u"&&(n.buttons=1),typeof n.isPrimary>"u"&&(n.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof n.width>"u"&&(n.width=n.radiusX||1),typeof n.height>"u"&&(n.height=n.radiusY||1),typeof n.tiltX>"u"&&(n.tiltX=0),typeof n.tiltY>"u"&&(n.tiltY=0),typeof n.pointerType>"u"&&(n.pointerType="touch"),typeof n.pointerId>"u"&&(n.pointerId=n.identifier||0),typeof n.pressure>"u"&&(n.pressure=n.force||.5),typeof n.twist>"u"&&(n.twist=0),typeof n.tangentialPressure>"u"&&(n.tangentialPressure=0),typeof n.layerX>"u"&&(n.layerX=n.offsetX=n.clientX),typeof n.layerY>"u"&&(n.layerY=n.offsetY=n.clientY),n.type=e.type,t.push(n)}else if(On&&e instanceof globalThis.WheelEvent)t.push(e);else if(MA&&e instanceof globalThis.PointerEvent)t.push(e);else{const i=e;typeof i.isPrimary>"u"&&(i.isPrimary=!0),typeof i.width>"u"&&(i.width=1),typeof i.height>"u"&&(i.height=1),typeof i.tiltX>"u"&&(i.tiltX=0),typeof i.tiltY>"u"&&(i.tiltY=0),typeof i.pointerType>"u"&&(i.pointerType="mouse"),typeof i.pointerId>"u"&&(i.pointerId=1),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),t.push(i)}return t}cloneWheelEvent(e){const t=new ai;return this.copyMouseEvent(t,e),t.wheelDeltaY=e.wheelDeltaY,t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.x=t.screen.x,t.global.y=t.screen.y,t.offset.x=t.screen.x,t.offset.y=t.screen.y,t.nativeEvent=e,t.type=e.type,t}clonePointerEvent(e){const t=new $n;return t.originalEvent=null,t.nativeEvent=e,t.pointerId=e.pointerId,t.width=e.width,t.height=e.height,t.isPrimary=e.isPrimary,t.pointerType=e.pointerType,t.pressure=e.pressure,t.tangentialPressure=e.tangentialPressure,t.tiltX=e.tiltX,t.tiltY=e.tiltY,t.twist=e.twist,t.isTrusted=e.isTrusted,this.copyMouseEvent(t,e),this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.x=t.screen.x,t.global.y=t.screen.y,t.offset.x=t.screen.x,t.offset.y=t.screen.y,t.type==="pointerleave"?t.type="pointerout":t.type.startsWith("mouse")?t.type=t.type.replace("mouse","pointer"):t.type.startsWith("touch")&&(t.type=rh[t.type]||t.type),t}copyMouseEvent(e,t){e.preventDefault=t.preventDefault.bind(t),e.stopPropagation=t.stopPropagation.bind(t),e.isTrusted=t.isTrusted,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}setCursor(e){if(!this.target||(e=e||"default",this.cursor===e))return;this.cursor=e;const t=!(globalThis.OffscreenCanvas&&this.target instanceof OffscreenCanvas),i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.target.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.target.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.target.style.cursor=e)}mapPositionToPoint(e,t,i){if(!this.target)return;const s=Number(this.target.getAttribute("width"))||0,n=Number(this.target.getAttribute("height"))||0,o=Number(this.target.getAttribute("data-pixel-ratio"))||1,a=this.target.isConnected?this.target.getBoundingClientRect():{x:0,y:0,width:s,height:n,left:0,top:0},l=1/o;e.x=(t-a.left)*(s/a.width)*l,e.y=(i-a.top)*(n/a.height)*l}}class St extends Zn{}var sh={grad:.9,turn:360,rad:360/(2*Math.PI)},Wt=function(r){return typeof r=="string"?r.length>0:typeof r=="number"},Te=function(r,A,e){return A===void 0&&(A=0),e===void 0&&(e=Math.pow(10,A)),Math.round(e*r)/e+0},pt=function(r,A,e){return A===void 0&&(A=0),e===void 0&&(e=1),r>e?e:r>A?r:A},to=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},Ao=function(r){return{r:pt(r.r,0,255),g:pt(r.g,0,255),b:pt(r.b,0,255),a:pt(r.a)}},ls=function(r){return{r:Te(r.r),g:Te(r.g),b:Te(r.b),a:Te(r.a,3)}},nh=/^#([0-9a-f]{3,8})$/i,Xi=function(r){var A=r.toString(16);return A.length<2?"0"+A:A},io=function(r){var A=r.r,e=r.g,t=r.b,i=r.a,s=Math.max(A,e,t),n=s-Math.min(A,e,t),o=n?s===A?(e-t)/n:s===e?2+(t-A)/n:4+(A-e)/n:0;return{h:60*(o<0?o+6:o),s:s?n/s*100:0,v:s/255*100,a:i}},ro=function(r){var A=r.h,e=r.s,t=r.v,i=r.a;A=A/360*6,e/=100,t/=100;var s=Math.floor(A),n=t*(1-e),o=t*(1-(A-s)*e),a=t*(1-(1-A+s)*e),l=s%6;return{r:255*[t,o,n,n,a,t][l],g:255*[a,t,t,o,n,n][l],b:255*[n,n,a,t,t,o][l],a:i}},so=function(r){return{h:to(r.h),s:pt(r.s,0,100),l:pt(r.l,0,100),a:pt(r.a)}},no=function(r){return{h:Te(r.h),s:Te(r.s),l:Te(r.l),a:Te(r.a,3)}},oo=function(r){return ro((e=(A=r).s,{h:A.h,s:(e*=((t=A.l)<50?t:100-t)/100)>0?2*e/(t+e)*100:0,v:t+e,a:A.a}));var A,e,t},li=function(r){return{h:(A=io(r)).h,s:(i=(200-(e=A.s))*(t=A.v)/100)>0&&i<200?e*t/100/(i<=100?i:200-i)*100:0,l:i/2,a:A.a};var A,e,t,i},oh=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ah=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,lh=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,hh=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,hs={string:[[function(r){var A=nh.exec(r);return A?(r=A[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:r.length===4?Te(parseInt(r[3]+r[3],16)/255,2):1}:r.length===6||r.length===8?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:r.length===8?Te(parseInt(r.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(r){var A=lh.exec(r)||hh.exec(r);return A?A[2]!==A[4]||A[4]!==A[6]?null:Ao({r:Number(A[1])/(A[2]?100/255:1),g:Number(A[3])/(A[4]?100/255:1),b:Number(A[5])/(A[6]?100/255:1),a:A[7]===void 0?1:Number(A[7])/(A[8]?100:1)}):null},"rgb"],[function(r){var A=oh.exec(r)||ah.exec(r);if(!A)return null;var e,t,i=so({h:(e=A[1],t=A[2],t===void 0&&(t="deg"),Number(e)*(sh[t]||1)),s:Number(A[3]),l:Number(A[4]),a:A[5]===void 0?1:Number(A[5])/(A[6]?100:1)});return oo(i)},"hsl"]],object:[[function(r){var A=r.r,e=r.g,t=r.b,i=r.a,s=i===void 0?1:i;return Wt(A)&&Wt(e)&&Wt(t)?Ao({r:Number(A),g:Number(e),b:Number(t),a:Number(s)}):null},"rgb"],[function(r){var A=r.h,e=r.s,t=r.l,i=r.a,s=i===void 0?1:i;if(!Wt(A)||!Wt(e)||!Wt(t))return null;var n=so({h:Number(A),s:Number(e),l:Number(t),a:Number(s)});return oo(n)},"hsl"],[function(r){var A=r.h,e=r.s,t=r.v,i=r.a,s=i===void 0?1:i;if(!Wt(A)||!Wt(e)||!Wt(t))return null;var n=function(o){return{h:to(o.h),s:pt(o.s,0,100),v:pt(o.v,0,100),a:pt(o.a)}}({h:Number(A),s:Number(e),v:Number(t),a:Number(s)});return ro(n)},"hsv"]]},ao=function(r,A){for(var e=0;e<A.length;e++){var t=A[e][0](r);if(t)return[t,A[e][1]]}return[null,void 0]},gh=function(r){return typeof r=="string"?ao(r.trim(),hs.string):typeof r=="object"&&r!==null?ao(r,hs.object):[null,void 0]},gs=function(r,A){var e=li(r);return{h:e.h,s:pt(e.s+100*A,0,100),l:e.l,a:e.a}},cs=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},lo=function(r,A){var e=li(r);return{h:e.h,s:e.s,l:pt(e.l+100*A,0,100),a:e.a}},us=function(){function r(A){this.parsed=gh(A)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return this.parsed!==null},r.prototype.brightness=function(){return Te(cs(this.rgba),2)},r.prototype.isDark=function(){return cs(this.rgba)<.5},r.prototype.isLight=function(){return cs(this.rgba)>=.5},r.prototype.toHex=function(){return A=ls(this.rgba),e=A.r,t=A.g,i=A.b,n=(s=A.a)<1?Xi(Te(255*s)):"","#"+Xi(e)+Xi(t)+Xi(i)+n;var A,e,t,i,s,n},r.prototype.toRgb=function(){return ls(this.rgba)},r.prototype.toRgbString=function(){return A=ls(this.rgba),e=A.r,t=A.g,i=A.b,(s=A.a)<1?"rgba("+e+", "+t+", "+i+", "+s+")":"rgb("+e+", "+t+", "+i+")";var A,e,t,i,s},r.prototype.toHsl=function(){return no(li(this.rgba))},r.prototype.toHslString=function(){return A=no(li(this.rgba)),e=A.h,t=A.s,i=A.l,(s=A.a)<1?"hsla("+e+", "+t+"%, "+i+"%, "+s+")":"hsl("+e+", "+t+"%, "+i+"%)";var A,e,t,i,s},r.prototype.toHsv=function(){return A=io(this.rgba),{h:Te(A.h),s:Te(A.s),v:Te(A.v),a:Te(A.a,3)};var A},r.prototype.invert=function(){return Mt({r:255-(A=this.rgba).r,g:255-A.g,b:255-A.b,a:A.a});var A},r.prototype.saturate=function(A){return A===void 0&&(A=.1),Mt(gs(this.rgba,A))},r.prototype.desaturate=function(A){return A===void 0&&(A=.1),Mt(gs(this.rgba,-A))},r.prototype.grayscale=function(){return Mt(gs(this.rgba,-1))},r.prototype.lighten=function(A){return A===void 0&&(A=.1),Mt(lo(this.rgba,A))},r.prototype.darken=function(A){return A===void 0&&(A=.1),Mt(lo(this.rgba,-A))},r.prototype.rotate=function(A){return A===void 0&&(A=15),this.hue(this.hue()+A)},r.prototype.alpha=function(A){return typeof A=="number"?Mt({r:(e=this.rgba).r,g:e.g,b:e.b,a:A}):Te(this.rgba.a,3);var e},r.prototype.hue=function(A){var e=li(this.rgba);return typeof A=="number"?Mt({h:A,s:e.s,l:e.l,a:e.a}):Te(e.h)},r.prototype.isEqual=function(A){return this.toHex()===Mt(A).toHex()},r}(),Mt=function(r){return r instanceof us?r:new us(r)},ho=[],ch=function(r){r.forEach(function(A){ho.indexOf(A)<0&&(A(us,hs),ho.push(A))})};function uh(r,A){var e={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},t={};for(var i in e)t[e[i]]=i;var s={};r.prototype.toName=function(n){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,a,l=t[this.toHex()];if(l)return l;if(n!=null&&n.closest){var h=this.toRgb(),c=1/0,u="black";if(!s.length)for(var d in e)s[d]=new r(e[d]).toRgb();for(var I in e){var C=(o=h,a=s[I],Math.pow(o.r-a.r,2)+Math.pow(o.g-a.g,2)+Math.pow(o.b-a.b,2));C<c&&(c=C,u=I)}return u}},A.string.push([function(n){var o=n.toLowerCase(),a=o==="transparent"?"#0000":e[o];return a?new r(a).toRgb():null},"name"])}ch([uh]);class Rt{get value(){return this._value}set value(A){if(A===void 0||this._value===A)return;this._value=A;let e;typeof A=="number"?e={r:A>>24&255,g:A>>16&255,b:A>>8&255,a:(A&255)/255}:e=A;const t=Mt(e);t.isValid()?this._colord=t:console.warn(`Unable to convert color ${A}`)}get r8(){return this._colord.rgba.r}get g8(){return this._colord.rgba.g}get b8(){return this._colord.rgba.b}get a8(){return this._colord.rgba.a*255&255}get r(){return this.r8/255}get g(){return this.g8/255}get b(){return this.b8/255}get a(){return this._colord.rgba.a}get rgb(){return(this.r8<<16)+(this.g8<<8)+this.b8}get bgr(){return(this.b8<<16)+(this.g8<<8)+this.r8}get abgr(){return(this.a8<<24)+this.bgr}constructor(A=0){this.value=A}toArgb(A=this.a,e=!0){if(A===1)return(255<<24)+this.rgb;if(A===0)return e?0:this.rgb;let t=this.r8,i=this.g8,s=this.b8;return e&&(t=t*A+.5|0,i=i*A+.5|0,s=s*A+.5|0),(A*255<<24)+(t<<16)+(i<<8)+s}toHex(){return this._colord.toHex()}toArray(){return[this.r,this.g,this.b,this.a]}}class wt extends Yt{constructor(e){super();g(this,"_array",[]);this.dim=e}get length(){return this.dim}_operate(e,t,i){const{dim:s,_array:n}=this;let o;typeof t=="number"?o=Array.from({length:s},()=>t):t instanceof Ut||t instanceof wt?o=t.toArray():o=t;let a,l=[];if(i?i instanceof wt?a=i:l=i:a=this,t instanceof Ut){const{cols:h}=t;switch(e){case"*":for(let c=0;c<s;c++){let u=0;for(let d=0;d<s;d++)u+=n[c]*o[d*h+c];l[c]=u}break;default:throw new Error(`Not support operator in '${this.toName()} ${e} ${t.toName()}'`)}}else switch(e){case"+":for(let h=0;h<s;h++)l[h]=n[h]+o[h];break;case"-":for(let h=0;h<s;h++)l[h]=n[h]-o[h];break;case"*":for(let h=0;h<s;h++)l[h]=n[h]*o[h];break;case"/":for(let h=0;h<s;h++)l[h]=n[h]/o[h];break;case"rot":{const h=Math.cos(o[0]),c=Math.sin(o[0]);l[0]=n[0]*h-n[1]*c,l[1]=n[1]*h+n[0]*c;break}case"==":{let h=!0;for(let c=0;c<s;c++)h=h&&n[c]===o[c];return h}case"=":for(let h=0;h<s;h++){const c=o[h];c!==void 0&&(n[h]=c)}return this._emitUpdate(n),this;default:throw new Error(`Not support operator in '${this.toName()} ${e} Vector'`)}return(a==null?void 0:a.set(l))??l}add(e,t){return this._operate("+",e,t)}sub(e,t){return this._operate("-",e,t)}multiply(e,t){return this._operate("*",e,t)}divide(e,t){return this._operate("/",e,t)}rotate(e){return this._operate("rot",e)}set(e,...t){return t.length&&typeof e=="number"&&(e=[e,...t]),this._operate("=",e)}equals(e){return this._operate("==",e)}clone(){const e=new this.constructor;return e.set(this.toArray()),e}_emitUpdate(e){this._onUpdate(e),this.emit("update",e)}_onUpdate(e){}toArray(){return this._array.slice()}toName(){return`Vector${this.dim}`}}class Ut extends Yt{constructor(e,t,i){super();g(this,"_array",[]);this.rows=e,this.cols=t,i?this.set(i):this.identity()}get length(){return this.cols*this.rows}_operate(e,t,i){const{cols:s,rows:n,length:o,_array:a}=this;let l;typeof t=="number"?l=Array.from({length:o},()=>t):t instanceof wt||t instanceof Ut?l=t.toArray():l=t;let h,c=[];if(i?i instanceof wt||i instanceof Ut?h=i:c=i:t instanceof wt?h=new t.constructor:h=this,t instanceof wt){const{dim:u}=t;switch(e){case"*":for(let d=0;d<u;d++){let I=0;for(let C=0;C<s;C++)C<u&&(I+=a[d*s+C]*(l[C]??0));c[d]=I}break;default:throw new Error(`Not support operator in '${this.toName()} ${e} ${t.toName()}'`)}}else switch(e){case"*":for(let u=0;u<s;u++)for(let d=0;d<n;d++){const I=d*s;let C=0;for(let B=0;B<n;B++){const U=I+B,M=B*s+u;C+=a[U]*(l[M]??0)}c[I+u]=C}break;case"=":for(let u=0;u<o;u++){const d=l[u];d!==void 0&&(a[u]=d)}return this._emitUpdate(a),this;default:throw new Error(`Not support operator in '${this.toName()} ${e} Matrix2'`)}return(h==null?void 0:h.set(c))??c}identity(){const{cols:e,rows:t}=this,i=[];for(let s=0;s<e;s++)for(let n=0;n<t;n++){const o=n*e,a=s+o;i[a]=n+o===a?1:0}return this.set(i)}clone(){const e=new this.constructor;return e.set(this.toArray()),e}set(e){return this._operate("=",e)}multiply(e){return this._operate("*",e)}onUpdate(e){return this.on("update",e),this}offUpdate(e){return this.off("update",e),this}_emitUpdate(e){this._onUpdate(e),this.emit("update",e)}_onUpdate(e){}toArray(e=!1){const{cols:t,rows:i,_array:s}=this;if(e){const n=[];for(let o=0;o<i;o++)for(let a=0;a<t;a++)n[o+a*t]=s[a+o*t];return n}return s.slice()}toName(){return`Matrix${this.rows}(${this.rows}x${this.cols})`}toJSON(){return this._array}}class go extends Ut{constructor(A){super(4,4,A)}}const fs=Jt/180,fh=180/Jt;function _t(r,A,e){return Math.max(r,Math.min(A,e))}function Ue(r,A,e){return(1-e)*r+e*A}const dh={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(r,A=20){if(!this.adaptive||!r||Number.isNaN(r))return A;let e=Math.ceil(r/this.maxLength);return e<this.minSegments?e=this.minSegments:e>this.maxSegments&&(e=this.maxSegments),e}};class co extends wt{constructor(A=0,e=0,t=0,i=0){super(4),this.set([A,e,t,i])}}class qi extends Ut{constructor(A){super(4,5,A)}hueRotate(A=0){const e=Math.sin(A),t=Math.cos(A),i=.213,s=.715,n=.072;return this.multiply([i+t*(1-i)+e*-.213,s+t*-.715+e*-.715,n+t*-.072+e*(1-n),0,0,i+t*-.213+e*.143,s+t*(1-s)+e*.14,n+t*-.072+e*-.283,0,0,i+t*-.213+e*-.787,s+t*-.715+e*s,n+t*(1-n)+e*n,0,0,0,0,0,1,0])}saturate(A=1){const e=(A-1)*2/3+1,t=(e-1)*-.5;return this.multiply([e,t,t,0,0,t,e,t,0,0,t,t,e,0,0,0,0,0,1,0])}brightness(A=1){const e=A;return this.multiply([e,0,0,0,0,0,e,0,0,0,0,0,e,0,0,0,0,0,1,0])}contrast(A=1){const e=A,t=-128*(e-1);return this.multiply([e,0,0,0,t,0,e,0,0,t,0,0,e,0,t,0,0,0,1,0])}invert(A=1){const e=Ue(1,-1,A),t=Ue(0,255,A);return this.multiply([e,0,0,0,t,0,e,0,0,t,0,0,e,0,t,0,0,0,1,0])}sepia(A=1){const e=_t(0,A,1);return this.multiply([Ue(1,.393,e),Ue(0,.7689999,e),Ue(0,.18899999,e),0,0,Ue(0,.349,e),Ue(1,.6859999,e),Ue(0,.16799999,e),0,0,Ue(0,.272,e),Ue(0,.5339999,e),Ue(1,.13099999,e),0,0,0,0,0,1,0])}opacity(A=1){return this.multiply([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,A,0])}grayscale(A=1){const e=_t(0,A,1),t=Ue(1,.3,e),i=Ue(0,.3,e),s=Ue(1,.59,e),n=Ue(0,.59,e),o=Ue(1,.11,e),a=Ue(0,.11,e);return this.multiply([t,n,a,0,0,i,s,a,0,0,i,n,o,0,0,0,0,0,1,0])}multiply(A){const e=A,t=this._array;return this.set([t[0]*e[0]+t[1]*e[5]+t[2]*e[10]+t[3]*e[15],t[0]*e[1]+t[1]*e[6]+t[2]*e[11]+t[3]*e[16],t[0]*e[2]+t[1]*e[7]+t[2]*e[12]+t[3]*e[17],t[0]*e[3]+t[1]*e[8]+t[2]*e[13]+t[3]*e[18],t[0]*e[4]+t[1]*e[9]+t[2]*e[14]+t[3]*e[19]+t[4],t[5]*e[0]+t[6]*e[5]+t[7]*e[10]+t[8]*e[15],t[5]*e[1]+t[6]*e[6]+t[7]*e[11]+t[8]*e[16],t[5]*e[2]+t[6]*e[7]+t[7]*e[12]+t[8]*e[17],t[5]*e[3]+t[6]*e[8]+t[7]*e[13]+t[8]*e[18],t[5]*e[4]+t[6]*e[9]+t[7]*e[14]+t[8]*e[19]+t[9],t[10]*e[0]+t[11]*e[5]+t[12]*e[10]+t[13]*e[15],t[10]*e[1]+t[11]*e[6]+t[12]*e[11]+t[13]*e[16],t[10]*e[2]+t[11]*e[7]+t[12]*e[12]+t[13]*e[17],t[10]*e[3]+t[11]*e[8]+t[12]*e[13]+t[13]*e[18],t[10]*e[4]+t[11]*e[9]+t[12]*e[14]+t[13]*e[19]+t[14],t[15]*e[0]+t[16]*e[5]+t[17]*e[10]+t[18]*e[15],t[15]*e[1]+t[16]*e[6]+t[17]*e[11]+t[18]*e[16],t[15]*e[2]+t[16]*e[7]+t[17]*e[12]+t[18]*e[17],t[15]*e[3]+t[16]*e[8]+t[17]*e[13]+t[18]*e[18],t[15]*e[4]+t[16]*e[9]+t[17]*e[14]+t[18]*e[19]+t[19]])}toMatrix4(){const A=this._array;return new go([A[0],A[1],A[2],A[3],A[5],A[6],A[7],A[8],A[10],A[11],A[12],A[13],A[15],A[16],A[17],A[18]])}toVector4(){const A=this._array;return new co(A[4]/255,A[9]/255,A[14]/255,A[19]/255)}}class Ih extends Ut{constructor(A){super(2,2,A)}}let ds=class extends Ut{constructor(A){super(3,3,A)}invert(){const[A,e,t,i,s,n,o,a,l]=this._array,h=l*s-n*a,c=n*o-l*i,u=a*i-s*o,d=A*h+e*c+t*u;if(d===0)return this.set([0,0,0,0,0,0,0,0,0]);const I=1/d;return this.set([h*I,(t*a-l*e)*I,(n*e-t*s)*I,c*I,(l*A-t*o)*I,(t*i-n*A)*I,u*I,(e*o-a*A)*I,(s*A-e*i)*I])}};class uo extends ds{constructor(A=0,e=0,t=0,i=0,s=!1){super(),this._x=A,this._y=e,this._width=t,this._height=i,this._flipY=s,this._performUpdateArray()}flipY(A){return this._flipY!==A&&(this._flipY=A,this._performUpdateArray()),this}translate(A,e){return(this._x!==A||this._y!==e)&&(this._x=A,this._y=e,this._performUpdateArray()),this}resize(A,e){return(this._width!==A||this._height!==e)&&(this._width=A,this._height=e,this._performUpdateArray()),this}_performUpdateArray(){const A=this._width,e=this._height;if(!A||!e)return;const t=this._x,i=this._y,s=this._flipY?-1:1,n=1/A*2,o=s*(1/e*2),a=-1-t*n,l=-s-i*o;this.set([n,0,a,0,o,l,0,0,1])}}let zi=class Zr extends wt{get x(){return this._array[0]}set x(A){const[e,t]=this._array;e!==A&&this.set(A,t)}get y(){return this._array[1]}set y(A){const[e,t]=this._array;t!==A&&this.set(e,A)}get width(){return this.x}set width(A){this.x=A}get height(){return this.y}set height(A){this.y=A}constructor(A=0,e){super(2),this.set(typeof A=="number"?[A,e??A]:A)}update(A,e){const[t,i]=this._array;return(t!==A||i!==e)&&this.set(A,e),this}getLength(){const[A,e]=this._array;return Math.sqrt(A*A+e*e)}getAngle(){const[A,e]=this._array;return Math.atan2(-A,-e)+Math.PI}distanceTo(A){return Math.hypot(A.x-this.x,A.y-this.y)}normalize(){const[A,e]=this._array,t=1/(this.getLength()||1);return this.set(A*t,e*t),this}static lerp(A,e,t){return new Zr(e).clone().sub(new Zr(A)).multiply(t).add(new Zr(A))}};class hi{constructor(...A){g(this,"end",new zi);g(this,"position");g(this,"size");const e=new zi,t=new zi;switch(A.length){case 0:break;case 1:e.set(A[0].position),t.set(A[0].size);break;case 2:e.set(A[0]),t.set(A[1]);break;default:e.set(A[0],A[1]),t.set(A[2],A[3]);break}this.update=this.update.bind(this),this.position=e.on("update",this.update),this.size=t.on("update",this.update),this.update()}get x(){return this.position.x}get y(){return this.position.y}get left(){return this.position.x}get top(){return this.position.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get width(){return this.size.x}get height(){return this.size.y}update(){return this.end.set(this.position.x+this.size.x,this.position.y+this.size.y),this}toArray(){return[this.x,this.y,this.width,this.height]}}class Ze extends ds{constructor(e=!0){super();g(this,"_cx",1);g(this,"_sx",0);g(this,"_cy",0);g(this,"_sy",1);g(this,"_translateX",0);g(this,"_translateY",0);g(this,"_translateZ",1);g(this,"_scaleX",1);g(this,"_scaleY",1);g(this,"_skewX",0);g(this,"_skewY",0);g(this,"_rotate",0);g(this,"dirtyId",0);g(this,"_needsUpdateArray",!1);g(this,"_needsUpdateFields",!1);this.autoUpdate=e}_onUpdate(e){super._onUpdate(e),this._requestUpdateFields()}_updateSkew(){this._cx=Math.cos(this._rotate+this._skewY),this._sx=Math.sin(this._rotate+this._skewY),this._cy=-Math.sin(this._rotate-this._skewX),this._sy=Math.cos(this._rotate-this._skewX)}_requestUpdateArray(){this.autoUpdate?this._performUpdateArray():this._needsUpdateArray=!0}_requestUpdateFields(){this.autoUpdate?this._performUpdateFields():this._needsUpdateFields=!0}_performUpdateArray(){const e=this._cx*this._scaleX,t=this._sx*this._scaleX,i=this._cy*this._scaleY,s=this._sy*this._scaleY,n=this._translateX,o=this._translateY,a=this._translateZ,l=this._array;this._array=[e,i,n,t,s,o,l[6],l[7],a],this.dirtyId++}_performUpdateFields(){const{a:e,c:t,tx:i,b:s,d:n,ty:o,tz:a}=this.toObject(),l=-Math.atan2(-t,n),h=Math.atan2(s,e),c=Math.abs(l+h);c<1e-5||Math.abs(Ce-c)<1e-5?(this._rotate=h,this._skewX=this._skewY=0):(this._rotate=0,this._skewX=l,this._skewY=h),this._scaleX=Math.sqrt(e*e+s*s),this._scaleY=Math.sqrt(t*t+n*n),this._translateX=i,this._translateY=o,this._translateZ=a,this.dirtyId++}skew(e,t){return this._skewX=e,this._skewY=t,this._updateSkew(),this._requestUpdateArray(),this}skewX(e){return this.skew(e,this._skewY)}skewY(e){return this.skew(this._skewX,e)}translate(e,t,i=1){return this._translateX=e,this._translateY=t,this._translateZ=i,this._requestUpdateArray(),this}translateX(e){return this.translate(e,this._translateY)}translateY(e){return this.translate(this._translateX,e)}translateZ(e){return this.translate(this._translateX,this._translateY,e)}translate3d(e,t,i){return this.translate(e,t,i)}scale(e,t,i=1){return this._scaleX=e,this._scaleY=t,this._requestUpdateArray(),this}scaleX(e){return this.scale(e,this._scaleY)}scaleY(e){return this.scale(this._scaleX,e)}scale3d(e,t,i){return this.scale(e,t,i)}rotate(e){return this._rotate=e,this._updateSkew(),this._requestUpdateArray(),this}rotateX(e){return this.scaleY(this._rotateToScale(e))}rotateY(e){return this.scaleX(this._rotateToScale(e))}rotateZ(e){return this.rotate(e)}rotate3d(e,t,i,s){const[n,o,a]=this._rotate3d(e,t,i,s);return n&&this.rotateX(n),o&&this.rotateY(o),a&&this.rotateZ(a),this}_rotateToScale(e){const t=e/Ce;return t<=.5?t*-4+1:(t-1)*4+1}_rotate3d(e,t,i,s){if(e===1&&t===0&&i===0)return[s,0,0];if(e===0&&t===1&&i===0)return[0,s,0];if(e===0&&t===0)return[0,0,s];{const n=Math.cos(s),o=Math.sin(s),a=n+e*e*(1-n),l=e*t*(1-n)-i*o,h=e*i*(1-n)+t*o,c=n+t*t*(1-n),u=t*i*(1-n)-e*o,d=n+i*i*(1-n),I=-Math.atan2(-u,c),C=-Math.atan2(h,Math.sqrt(u*u+d*d)),B=-Math.atan2(-l,a);return[I,C,B]}}applyToPoint(e,t){const{a:i,c:s,tx:n,b:o,d:a,ty:l}=this.toObject();return[i*e+s*t+n,o*e+a*t+l]}inverse(){return this.clone().invert()}update(){let e=!1;return this._needsUpdateArray&&(this._needsUpdateArray=!1,this._performUpdateArray(),e=!0),this._needsUpdateFields&&(this._needsUpdateFields=!1,this._performUpdateFields(),e=!0),e}isIdentity(){const{a:e,b:t,c:i,d:s,tx:n,ty:o}=this.toObject();return e===1&&t===0&&i===0&&s===1&&n===0&&o===0}toObject(){const[e,t,i,s,n,o,,,a]=this._array;return{a:e,c:t,tx:i,b:s,d:n,ty:o,tz:a}}}class Bh extends wt{constructor(){super(3)}}var Eh=Object.defineProperty,fo=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Eh(A,e,i),i};class ji extends Wi{constructor(){super();g(this,"_starting",!1);g(this,"_nextDeltaTime",0);this._onNextTick=this._onNextTick.bind(this)}get starting(){return this._starting}get spf(){return this.fps?Math.floor(1e3/this.fps):0}start(e){return this._starting||(this._starting=!0,this.off("process"),this.on("process",e),Re.on(this._onNextTick,{sort:0})),this}stop(){return this._starting&&(this._starting=!1,Re.off(this._onNextTick,{sort:0})),this}_onNextTick(){const e=Re.elapsed*this.speed;if((this._nextDeltaTime-=e)<=0){const i=(this._nextDeltaTime=this.spf)||e;this.emit("process",i)}}}fo([_({default:24})],ji.prototype,"fps"),fo([_({default:1})],ji.prototype,"speed");class Io{constructor(){g(this,"view");g(this,"pixelRatio",ss);g(this,"screen",{x:0,y:0,width:0,height:0});g(this,"related",new RA)}getRelated(A,e){let t=this.related.get(A);return t||(e?(this.related.set(A,t=e()),t):(console.warn("Failed to get related",A),null))}resize(A,e,t=!0){const i=Math.floor(A*this.pixelRatio),s=Math.floor(e*this.pixelRatio),n=i/this.pixelRatio,o=s/this.pixelRatio;this.view&&(this.view.width=i,this.view.height=s),this.screen.width=n,this.screen.height=o,t&&this.view&&(this.view.style.width=`${n}px`,this.view.style.height=`${o}px`)}}var UA=(r=>(r.NORMAL="normal",r.ADD="add",r.MULTIPLY="multiply",r.SCREEN="screen",r.NONE="none",r.NORMAL_NPM="normal_npm",r.ADD_NPM="add_npm",r.SCREEN_NPM="screen_npm",r.SRC_IN="src_in",r.SRC_OUT="src_out",r.SRC_ATOP="src_atop",r.DST_OVER="dst_over",r.DST_IN="dst_in",r.DST_OUT="dst_out",r.DST_ATOP="dst_atop",r.XOR="xor",r.SUBTRACT="subtract",r))(UA||{});function Bo(r){return{normal:[r.ONE,r.ONE_MINUS_SRC_ALPHA],add:[r.ONE,r.ONE],multiply:[r.DST_COLOR,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA],screen:[r.ONE,r.ONE_MINUS_SRC_COLOR,r.ONE,r.ONE_MINUS_SRC_ALPHA],none:[0,0],normal_npm:[r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA],add_npm:[r.SRC_ALPHA,r.ONE,r.ONE,r.ONE],screen_npm:[r.SRC_ALPHA,r.ONE_MINUS_SRC_COLOR,r.ONE,r.ONE_MINUS_SRC_ALPHA],src_in:[r.DST_ALPHA,r.ZERO],src_out:[r.ONE_MINUS_DST_ALPHA,r.ZERO],src_atop:[r.DST_ALPHA,r.ONE_MINUS_SRC_ALPHA],dst_over:[r.ONE_MINUS_DST_ALPHA,r.ONE],dst_in:[r.ZERO,r.SRC_ALPHA],dst_out:[r.ZERO,r.ONE_MINUS_SRC_ALPHA],dst_atop:[r.ONE_MINUS_DST_ALPHA,r.SRC_ALPHA],xor:[r.ONE_MINUS_DST_ALPHA,r.ONE_MINUS_SRC_ALPHA],subtract:[r.ONE,r.ONE,r.ONE,r.ONE,r.FUNC_REVERSE_SUBTRACT,r.FUNC_ADD]}}class Ct{get gl(){return this._renderer.gl}install(A){this._renderer=A}onUpdateContext(){}flush(){}reset(){}destroy(){}}const Fr=class Fr{constructor(A){g(this,"_blendMode",UA.NORMAL);g(this,"_polygonOffset",0);g(this,"bitmap",0);if(A)for(const e in A)this[e]=A[e]}static _init(){this._properties.forEach((A,e)=>{Object.defineProperty(this.prototype,A,{get(){return!!(this.bitmap&1<<e)},set(t){!!(this.bitmap&1<<e)!==t&&(this.bitmap^=1<<e)},enumerable:!0,configurable:!0})})}static for2D(){const A=new Fr;return A.depthTest=!1,A.blend=!0,A}get blendMode(){return this._blendMode}set blendMode(A){this.blend=A!==UA.NONE,this._blendMode=A}get polygonOffset(){return this._polygonOffset}set polygonOffset(A){this.offsets=!!A,this._polygonOffset=A}};g(Fr,"_properties",["blend","offsets","culling","depthTest","clockwiseFrontFace","depthMask"]);let EA=Fr;EA._init();class Eo extends Ct{constructor(){super(...arguments);g(this,"_blendEq",!1);g(this,"_setters",EA._properties.map(e=>this[`set${e.replace(/^\S/,t=>t.toUpperCase())}`]));g(this,"boundStateBitmap",0);g(this,"boundBlendMode");g(this,"blendModes");g(this,"defaultState",new EA({blend:!0}))}install(e){super.install(e),e.state=this}onUpdateContext(){super.onUpdateContext(),this.blendModes=Bo(this._renderer.gl)}toggle(e,t){this._renderer.gl[t?"enable":"disable"](e)}setBlend(e){this.toggle(this._renderer.gl.BLEND,e)}setOffsets(e){this.toggle(this._renderer.gl.POLYGON_OFFSET_FILL,e)}setCulling(e){this.toggle(this._renderer.gl.CULL_FACE,e)}setDepthTest(e){this.toggle(this._renderer.gl.DEPTH_TEST,e)}setDepthMask(e){this._renderer.gl.depthMask(e)}setClockwiseFrontFace(e){const t=this._renderer.gl;t.frontFace(t[e?"CW":"CCW"])}setBlendMode(e){if(e===this.boundBlendMode)return;this.boundBlendMode=e;const t=this.blendModes[e],i=this._renderer.gl;t.length===2?i.blendFunc(t[0],t[1]):i.blendFuncSeparate(t[0],t[1],t[2],t[3]),t.length===6?(this._blendEq=!0,i.blendEquationSeparate(t[4],t[5])):this._blendEq&&(this._blendEq=!1,i.blendEquationSeparate(i.FUNC_ADD,i.FUNC_ADD))}setPolygonOffset(e,t){this._renderer.gl.polygonOffset(e,t)}bind(e){var t;if(this.boundStateBitmap!==e.bitmap){let i=this.boundStateBitmap^e.bitmap,s=0;for(;i;)i&1&&((t=this._setters[s])==null||t.call(this,!!(e.bitmap&1<<s))),i=i>>1,s++;this.boundStateBitmap=e.bitmap}e.blend&&this.setBlendMode(e.blendMode),e.offsets&&this.setPolygonOffset(1,e.polygonOffset)}reset(){super.reset();const e=this._renderer.gl;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!1),this.bind(this.defaultState),this._blendEq=!0,this.setBlendMode(UA.NORMAL)}}class po extends Ct{constructor(){super(...arguments);g(this,"_state",EA.for2D());g(this,"_batchSize",4096*4);g(this,"_vertexSize",27);g(this,"_drawCallUid",0);g(this,"_defaultModulate",4294967295);g(this,"_defaultBackgroundColor",0);g(this,"_defaultColorMatrixOffset",[0,0,0,0]);g(this,"_defaultColorMatrix",[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);g(this,"_batchables",[]);g(this,"_vertexCount",0);g(this,"_indexCount",0);g(this,"_attributeBuffer",[]);g(this,"_indexBuffers",[]);g(this,"_shaders",new Map);g(this,"_attributes",{aTextureId:{size:1,normalized:!0,type:"float"},aPosition:{size:2,normalized:!1,type:"float"},aUv:{size:2,normalized:!1,type:"float"},aModulate:{size:4,normalized:!0,type:"unsigned_byte"},aBackgroundColor:{size:4,normalized:!0,type:"unsigned_byte"},aColorMatrixOffset:{size:4,normalized:!1,type:"float"},aColorMatrix:{size:4,normalized:!1,type:"float"}})}install(e){super.install(e),e.batch2D=this}_getShader(e){let t=this._shaders.get(e);return t||this._shaders.set(e,t=this._createShader(e)),t}_createShader(e){const t=this._renderer,i=t.program.create({vert:`precision highp float;
2
2
  attribute float aTextureId;
3
3
  attribute vec2 aPosition;
4
4
  attribute vec2 aUv;
@@ -102,7 +102,7 @@ uniform sampler2D sampler;
102
102
  uniform vec4 tint;
103
103
  void main(void) {
104
104
  gl_FragColor = texture2D(sampler, vUv) * tint;
105
- }`,uniforms:{sampler:0,projectionMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),modelViewMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),tint:new Float32Array([1,1,1,1])}})}}g(LA,"_instance");class Ie extends ir{static get instance(){return this._instance??(this._instance=new this)}static draw(A,e=LA.instance,t){this.instance.draw(A,e,t)}constructor(){super({vertexAttributes:{position:new ft({buffer:new Vt({data:new Float32Array([-1,-1,1,-1,1,1,-1,1]),dynamic:!1}),size:2,normalized:!1,type:"float"}),uv:new ft({buffer:new Vt({data:new Float32Array([0,0,1,0,1,1,0,1]),dynamic:!1}),size:2,normalized:!1,type:"float"})},indexBuffer:new TA({data:new Uint16Array([0,1,2,0,2,3]),dynamic:!1})})}}g(Ie,"_instance");class Hg extends ir{constructor(){const e=new Vt({data:new Float32Array,dynamic:!0}),t=new Vt({data:new Float32Array,dynamic:!0});super({vertexAttributes:{position:new ft({buffer:e,size:2,normalized:!1,type:"float"}),uv:new ft({buffer:t,size:2,normalized:!1,type:"float"})},indexBuffer:new TA({data:new Uint16Array,dynamic:!0})});g(this,"positionBuffer");g(this,"uvBuffer");this.positionBuffer=e,this.uvBuffer=t}update(e,t,i){return this.positionBuffer.data=e,this.uvBuffer.data=t,this.indexBuffer.data=i,this}}function Jg(){return{shadowColor:"transparent",shadowOffsetX:0,shadowOffsetY:0,shadowBlur:0}}function xs(){return{left:0,top:0,width:0,height:0,rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function Kg(){return{overflow:"visible",visibility:"visible",filter:"none",opacity:1,marginLeft:0,marginTop:0,marginRight:0,marginBottom:0,paddingLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,...xs(),backgroundImage:"none",backgroundColor:"transparent",...Jg(),borderRadius:0,borderColor:"transparent",borderWidth:1}}function Ss(){return{writingMode:"horizontal-tb",verticalAlign:"baseline",lineHeight:1.2,letterSpacing:0,wordSpacing:0,fontSize:14,fontWeight:"normal",fontFamily:"",fontStyle:"normal",fontKerning:"normal",textWrap:"wrap",textAlign:"start",textIndent:0,textTransform:"none",textOrientation:"mixed",textDecoration:"none",textStrokeWidth:0,textStrokeColor:"black",color:"black",listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside",highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function Yg(){return{...Kg(),...Ss()}}var Wg=Object.defineProperty,Le=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Wg(A,e,i),i};const na={brightness:1,contrast:1,grayscale:0,"hue-rotate":0,invert:0,opacity:1,saturate:1,sepia:0};class ve extends St{constructor(e){super();g(this,"_backgroundColor",new Rt);this.setProperties(e)}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"backgroundColor":this._backgroundColor.value=this.backgroundColor==="none"?void 0:this.backgroundColor;break}}canPointeEvents(){return this.pointerEvents!=="none"}getComputedOpacity(){return _t(0,this.opacity,1)}getComputedBackgroundColor(){return this._backgroundColor}async loadBackgroundImage(){if(this.backgroundImage!=="none")return await Ot.texture.load(this.backgroundImage)}getComputedTransform(){const{scaleX:e,scaleY:t,left:i,top:s,width:n,height:o,rotate:a}=this,l=new Ze,h=new Ze(!1),c=new Ze(!1).scale(e,t).translate(i,s).rotate(a*fs);let u=this.transform;(!u||u==="none")&&(u=""),IA(u,{width:n,height:o}).forEach(({name:R,args:b})=>{const Q=b.map(v=>v.normalizedIntValue);switch(l.identity(),R){case"translate":l.translate(Q[0]*n,(Q[1]??Q[0])*this.height);break;case"translateX":l.translateX(Q[0]*n);break;case"translateY":l.translateY(Q[0]*o);break;case"translateZ":l.translateZ(Q[0]);break;case"translate3d":l.translate3d(Q[0]*n,(Q[1]??Q[0])*o,Q[2]??Q[1]??Q[0]);break;case"scale":l.scale(Q[0],Q[1]??Q[0]);break;case"scaleX":l.scaleX(Q[0]);break;case"scaleY":l.scaleY(Q[0]);break;case"scale3d":l.scale3d(Q[0],Q[1]??Q[0],Q[2]??Q[1]??Q[0]);break;case"rotate":l.rotate(Q[0]*Ce);break;case"rotateX":l.rotateX(Q[0]*Ce);break;case"rotateY":l.rotateY(Q[0]*Ce);break;case"rotateZ":l.rotateZ(Q[0]*Ce);break;case"rotate3d":l.rotate3d(Q[0]*Ce,(Q[1]??Q[0])*Ce,(Q[2]??Q[1]??Q[0])*Ce,(Q[3]??Q[2]??Q[1]??Q[0])*Ce);break;case"skew":l.skew(Q[0],Q[0]??Q[1]);break;case"skewX":l.skewX(Q[0]);break;case"skewY":l.skewY(Q[0]);break;case"matrix":l.set(Q);break}h.multiply(l)}),c.update(),h.update();const d=c.toArray(),I=h.toArray(),C=[I[0]*d[0]+I[3]*d[1],I[1]*d[0]+I[4]*d[1],I[2]*d[0]+I[5]*d[1]+d[2],I[0]*d[3]+I[3]*d[4],I[1]*d[3]+I[4]*d[4],I[2]*d[3]+I[5]*d[4]+d[5],0,0,1],[B,U]=this.getComputedTransformOrigin(),M=B*n,D=U*o;return C[2]+=C[0]*-M+C[1]*-D+M,C[5]+=C[3]*-M+C[4]*-D+D,new Ze().set(C)}getComputedTransformOrigin(){const[e,t=e]=this.transformOrigin.split(" ");return[e,t].map(i=>{switch(i=i.trim(),i){case"left":case"top":return 0;case"center":return .5;case"right":case"bottom":return 1;default:return Number(i)}})}getComputedFilter(){let e={};return this.filter==="none"||(e=IA(this.filter).reduce((t,{name:i,args:s})=>(t[i]=s[0].normalizedIntValue,t),e),Object.keys(na).forEach(t=>{e[t]=e[t]??na[t]})),e}getComputedFilterColorMatrix(){const e=new qi,t=this.getComputedFilter();for(const i in t){const s=t[i];switch(i){case"hue-rotate":e.hueRotate(s*Ce);break;case"saturate":e.saturate(s);break;case"brightness":e.brightness(s);break;case"contrast":e.contrast(s);break;case"invert":e.invert(s);break;case"sepia":e.sepia(s);break;case"opacity":e.opacity(s);break;case"grayscale":e.grayscale(s);break}}return e}}Le([_({default:"none"})],ve.prototype,"backgroundColor"),Le([_({default:"none"})],ve.prototype,"backgroundImage"),Le([_({default:"none"})],ve.prototype,"filter"),Le([_({default:"inherit"})],ve.prototype,"direction"),Le([_({default:"none"})],ve.prototype,"boxShadow"),Le([_({default:"none"})],ve.prototype,"maskImage"),Le([_({default:1})],ve.prototype,"opacity"),Le([_({default:0})],ve.prototype,"borderWidth"),Le([_({default:0})],ve.prototype,"borderRadius"),Le([_({default:"#000000"})],ve.prototype,"borderColor"),Le([_({default:"none"})],ve.prototype,"borderStyle"),Le([_({default:0})],ve.prototype,"outlineWidth"),Le([_({default:0})],ve.prototype,"outlineOffset"),Le([_({default:"#000000"})],ve.prototype,"outlineColor"),Le([_({default:"none"})],ve.prototype,"outlineStyle"),Le([_({default:"visible"})],ve.prototype,"visibility"),Le([_({default:"visible"})],ve.prototype,"overflow"),Le([_({default:"auto"})],ve.prototype,"pointerEvents");const oa=xs();for(const r in oa)BA(ve,r,{default:oa[r]});const aa=Ss();for(const r in aa)BA(ve,r,{default:aa[r]});var Vg=Object.defineProperty,GA=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Vg(A,e,i),i};class Ne extends St{constructor(e){super();g(this,"_isPowerOfTwo",!1);g(this,"_needsUpload",!1);this.source=e,this._updateSize()}static get EMPTY(){return new this({width:1,height:1,pixels:null})}static get WHITE(){return new this({width:1,height:1,pixels:new Uint8Array([255,255,255,255])})}static get BLACK(){return new this({width:1,height:1,pixels:new Uint8Array([0,0,0,255])})}static get RED(){return new this({width:1,height:1,pixels:new Uint8Array([255,0,0,255])})}static get GREEN(){return new this({width:1,height:1,pixels:new Uint8Array([0,255,0,255])})}static get BLUE(){return new this({width:1,height:1,pixels:new Uint8Array([0,0,255,255])})}get valid(){return!!(this.width&&this.height)}get realWidth(){return Math.round(this.width*this.pixelRatio)}get realHeight(){return Math.round(this.height*this.pixelRatio)}_glTextureOptions(e,t){let i=this.wrapMode;return e.version===1&&!this._isPowerOfTwo&&(i="clamp_to_edge"),{value:this.source,target:"texture_2d",location:0,filterMode:this.filterMode,wrapMode:i,...t}}_glTexture(e,t){return e.getRelated(this,()=>e.texture.create(this._glTextureOptions(e,t)))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"width":case"height":this._updatePOT();break;case"source":this._updateSize();break;case"filterMode":case"wrapMode":case"pixelRatio":this.requestUpload();break}}_updatePOT(){this._isPowerOfTwo=$r(this.realWidth)&&$r(this.realHeight),this.requestUpload()}_updateSize(){const e=this.source;"pixels"in e?(this.width=e.width/this.pixelRatio,this.height=e.height/this.pixelRatio):(this.width=Number(e.naturalWidth||e.videoWidth||e.width||0)/this.pixelRatio,this.height=Number(e.naturalHeight||e.videoHeight||e.height||0)/this.pixelRatio),this.requestUpload()}requestUpload(){this._needsUpload=!0}upload(e,t){return this._needsUpload&&this.valid?(this._needsUpload=!1,e.texture.update(this._glTexture(e,t),this._glTextureOptions(e,t)),!0):!1}activate(e,t=0){return this.valid?(e.texture.bind({target:"texture_2d",value:this._glTexture(e,{location:t}),location:t}),this.upload(e,{location:t}),!0):!1}inactivate(e){e.texture.unbind(this._glTexture(e))}destroy(){Ln&&this.source instanceof ImageBitmap&&this.source.close()}}GA([Me()],Ne.prototype,"source"),GA([_({default:0})],Ne.prototype,"width"),GA([_({default:0})],Ne.prototype,"height"),GA([_({default:"linear"})],Ne.prototype,"filterMode"),GA([_({default:"clamp_to_edge"})],Ne.prototype,"wrapMode"),GA([_({default:1})],Ne.prototype,"pixelRatio");var Xg=Object.defineProperty,qg=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Xg(A,e,i),i};class Ii extends Ne{constructor(A=document.createElement("canvas")){super(A)}_updateProperty(A,e,t,i){switch(A){case"width":this.source.width=Math.max(1,Math.ceil(e*this.pixelRatio));break;case"height":this.source.height=Math.max(1,Math.ceil(e*this.pixelRatio));break}super._updateProperty(A,e,t,i)}}qg([_({default:2})],Ii.prototype,"pixelRatio");class Ms extends Ne{constructor(A){const e=new Rt(A);super({width:1,height:1,pixels:new Uint8Array([e.r8,e.g8,e.b8,e.a8])})}}function zg(r){return{autoLoad:!!((r==null?void 0:r.autoLoad)??!0),useBitmap:!!((r==null?void 0:r.useBitmap)??!0)&&ts,crossorigin:(r==null?void 0:r.crossorigin)??null}}class jg extends Ne{constructor(e,t){const i=zg(t);super(e);g(this,"bitmap");g(this,"useBitmap");g(this,"preserveBitmap",!1);g(this,"_loadSource");g(this,"_loadBitmap");const s=e.src,n=s.includes(".svg")||s.startsWith("data:image/svg+xml");this.useBitmap=i.useBitmap&&!n,i.autoLoad&&this.load()}async load(){return this._loadSource||(this._loadSource=new Promise(e=>{this._loadSource=void 0;const t=this.source,i=()=>{t.onload=null,t.onerror=null},s=()=>{i(),this.requestUpload(),this.useBitmap?this.genBitmap().finally(()=>e(this)):e(this)},n=o=>{i(),console.warn(`Failed to load ImageTexture, src: ${t.src}`,o),this.emit("error",o),e(this)};t.complete&&t.src?s():(t.onload=s,t.onerror=n)})),this._loadSource}genBitmap(){if(this._loadBitmap)return this._loadBitmap;if(this.bitmap||!ts)return Promise.resolve(this);const e=this.source,t=!e.crossOrigin||e.crossOrigin==="anonymous";return this._loadBitmap=fetch(e.src,{mode:t?"cors":"no-cors"}).then(i=>i.blob()).then(i=>createImageBitmap(i,0,0,e.width,e.height,{premultiplyAlpha:"premultiply"})).then(i=>(this.bitmap=i,this.requestUpload(),this._loadBitmap=void 0,this)).catch(i=>(console.warn("Failed to genBitmap",i),this)),this._loadBitmap}_glTextureOptions(e){return{...super._glTextureOptions(e),value:this.bitmap??this.source}}upload(e){if(this.useBitmap){if(!this.bitmap)return this.genBitmap(),!1}else{const i=this.source;if(oi&&i instanceof HTMLImageElement&&(!i.complete||i.naturalWidth===0))return!1}const t=super.upload(e);return this.preserveBitmap&&this.bitmap&&(this.bitmap.close(),this.bitmap=void 0),t}}class Rs extends Ne{constructor(A,e=1,t=1){const i={width:e,height:t,pixels:null};A&&(ArrayBuffer.isView(A)?i.pixels=new Uint8Array(A.buffer):i.pixels=new Uint8Array(A)),super(i)}_updateProperty(A,e,t,i){switch(A){case"width":this.source.width=Math.round(e*this.pixelRatio);break;case"height":this.source.height=Math.round(e*this.pixelRatio);break}super._updateProperty(A,e,t,i)}}var Zg=Object.defineProperty,la=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Zg(A,e,i),i};function $g(r){return{autoLoad:!!((r==null?void 0:r.autoLoad)??!0),autoPlay:!!((r==null?void 0:r.autoPlay)??!1),fps:Number((r==null?void 0:r.fps)??0),crossorigin:(r==null?void 0:r.crossorigin)??null,loop:!!((r==null?void 0:r.loop)??!1),muted:!!((r==null?void 0:r.muted)??!1),playsinline:!!((r==null?void 0:r.playsinline)??!0)}}const Us=(xA=class extends Ne{constructor(e,t){const i=$g(t);if(!Yn(e)){typeof e=="string"&&(e=[e]);const s=e[0].src||e[0],n=document.createElement("video");i.autoLoad&&n.setAttribute("preload","auto"),i.playsinline&&(n.setAttribute("webkit-playsinline",""),n.setAttribute("playsinline","")),i.muted&&(n.setAttribute("muted",""),n.muted=!0),i.loop&&n.setAttribute("loop",""),i.autoPlay&&n.setAttribute("autoplay",""),zn(n,s,i.crossorigin);for(let o=0;o<e.length;++o){let{src:a,mime:l}=e[o];if(a=a||e[o],a.startsWith("data:"))l=a.slice(5,a.indexOf(";"));else if(!a.startsWith("blob:")){const c=a.split("?").shift().toLowerCase(),u=c.slice(c.lastIndexOf(".")+1);l=l||xA.mimeTypes.get(u)||`video/${u}`}const h=document.createElement("source");h.src=a,l&&(h.type=l),n.appendChild(h)}e=n}super(e);g(this,"_spf",0);g(this,"_autoPlay",!1);g(this,"_sourceLoad");g(this,"_nextTime",0);g(this,"_connected",!1);g(this,"_requestId");g(this,"_resolve");g(this,"_reject");g(this,"_onPlayStart",()=>{this.valid||this._onCanPlay(),this._setupAutoUpdate()});g(this,"_onPlayStop",()=>{this._setupAutoUpdate()});g(this,"_onCanPlay",()=>{const e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this._nextTime=0,this._updateSize(),this.requestUpload(),this._nextTime=0,!t&&this._resolve&&(this._resolve(this),this._sourceLoad=void 0,this._resolve=void 0,this._reject=void 0),this.isPlaying?this._onPlayStart():this._autoPlay&&e.play()});g(this,"_onError",e=>{this.source.removeEventListener("error",this._onError,!0),this.emit("error",e),this._reject&&(this._reject(e),this._reject=void 0,this._resolve=void 0)});g(this,"_onSeeked",()=>{this.autoUpdate&&!this.isPlaying&&(this._nextTime=0,this.requestUpload(),this._nextTime=0)});g(this,"_videoFrameRequestCallback",()=>{this.requestUpload(),this._requestId=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback)});g(this,"requestUpload",()=>{const e=Math.floor(Re.elapsed*this.source.playbackRate);this._nextTime-=e,(!this._spf||this._nextTime<=0)&&(super.requestUpload(),this._nextTime=this._spf||0)});this.fps=i.fps,this._autoPlay=i.autoPlay,i.autoPlay&&this.load(),this._setupAutoUpdate()}get isReady(){return this.source.readyState>2}get isPlaying(){return!this.source.paused&&!this.source.ended&&this.isReady}get duration(){return this.source.duration}get seeking(){return this.source.seeking}get currentTime(){return this.source.currentTime}set currentTime(e){this.source.currentTime=e}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"fps":this._spf=t?Math.floor(1e3/t):0,this._setupAutoUpdate();break;case"autoUpdate":this._setupAutoUpdate();break}}_setupAutoUpdate(){this.autoUpdate&&this.isPlaying?!this.fps&&this.source.requestVideoFrameCallback?(this._connected&&(Re.off(this.requestUpload),this._connected=!1,this._nextTime=0),this._requestId===void 0&&(this._requestId=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._requestId!==void 0&&(this.source.cancelVideoFrameCallback(this._requestId),this._requestId=void 0),this._connected||(Re.on(this.requestUpload),this._connected=!0,this._nextTime=0)):(this._requestId!==void 0&&(this.source.cancelVideoFrameCallback(this._requestId),this._requestId=void 0),this._connected&&(Re.off(this.requestUpload),this._connected=!1,this._nextTime=0))}async load(){if(!this._sourceLoad){const e=this.source;(e.readyState===e.HAVE_ENOUGH_DATA||e.readyState===e.HAVE_FUTURE_DATA)&&e.width&&e.height&&(e.complete=!0),e.addEventListener("play",this._onPlayStart),e.addEventListener("pause",this._onPlayStop),e.addEventListener("seeked",this._onSeeked),this.isReady?this._onCanPlay():(e.addEventListener("canplay",this._onCanPlay),e.addEventListener("canplaythrough",this._onCanPlay),e.addEventListener("error",this._onError,!0)),this._sourceLoad=new Promise((t,i)=>{this.valid?(this._sourceLoad=void 0,t(this)):(this._resolve=t,this._reject=i,e.load())})}return this._sourceLoad}destroy(){this._setupAutoUpdate();const e=this.source;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load())}},g(xA,"mimeTypes",new Map(Object.entries({ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"}))),xA);la([Me({default:!0})],Us.prototype,"autoUpdate"),la([Me({default:0})],Us.prototype,"fps");let ha=Us;class ks extends Rs{}class Ps extends Ve{constructor(){super(...arguments);g(this,"textureTransform");g(this,"fillStyle");g(this,"strokeStyle");g(this,"lineCap");g(this,"lineJoin");g(this,"lineWidth");g(this,"miterLimit");g(this,"_defaultStyle",Ne.EMPTY);g(this,"_stroke",[]);g(this,"_fille",[])}stroke(){let e=this._defaultStyle;this.strokeStyle&&(this.strokeStyle instanceof Ne?e=this.strokeStyle:e=new Ms(this.strokeStyle)),this.curves.length&&(this._stroke.push({path:new Ve(this),texture:e,textureTransform:this.textureTransform,style:{alignment:.5,cap:this.lineCap??"butt",join:this.lineJoin??"miter",width:this.lineWidth??1,miterLimit:this.miterLimit??10}}),this.currentCurve=new FA,this.curves=[this.currentCurve])}fillRect(e,t,i,s){this.rect(e,t,i,s).fill()}strokeRect(e,t,i,s){this.rect(e,t,i,s).stroke()}fill(){let e=this._defaultStyle;this.fillStyle&&(this.fillStyle instanceof Ne?e=this.fillStyle:e=new Ms(this.fillStyle)),this._fille.push({path:new Ve(this),texture:e,textureTransform:this.textureTransform}),this.currentCurve=new FA,this.curves=[this.currentCurve]}copy(e){return super.copy(e),this.strokeStyle=e.strokeStyle,this.fillStyle=e.fillStyle,this.textureTransform=e.textureTransform,this.lineCap=e.lineCap,this.lineJoin=e.lineJoin,this.lineWidth=e.lineWidth,this.miterLimit=e.miterLimit,this._stroke=e._stroke.slice(),this._fille=e._fille.slice(),this}reset(){return super.reset(),this.strokeStyle=void 0,this.fillStyle=void 0,this.textureTransform=void 0,this.lineCap=void 0,this.lineJoin=void 0,this.lineWidth=void 0,this.miterLimit=void 0,this._stroke.length=0,this._fille.length=0,this}buildUvs(e,t,i,s,n){if(s){let o=s.width,a=s.height;n&&([o,a]=n.applyToPoint(o,a));for(let l=t.length,h=e;h<l;h+=2)i.push(t[h]/o,t[h+1]/a)}else for(let o=t.length,a=e;a<o;a+=2)i.push(0,0)}toBatchables(){const e=[];let t=[],i=[],s=[],n=0,o;const a=h=>{e.push({type:h,vertices:t,indices:i,uvs:s,texture:o}),t=[],i=[],s=[],o=void 0};let l=t.length;for(let h=this._fille.length,c=0;c<h;c++){const u=this._fille[c];o??(o=u.texture),o!==u.texture&&a("fill"),n=t.length,u.path.fillTriangulate({vertices:t,indices:i}),this.buildUvs(n,t,s,u.texture,u.textureTransform)}t.length-l>0&&a("fill"),l=t.length;for(let h=this._stroke.length,c=0;c<h;c++){n=t.length;const u=this._stroke[c];o??(o=u.texture),u.path.strokeTriangulate({vertices:t,indices:i,lineStyle:u.style,flipAlignment:!1,closed:!0}),this.buildUvs(n,t,s,u.texture,u.textureTransform),a("stroke")}return t.length-l>0&&a("stroke"),e}}var ec=Object.defineProperty,tc=Object.getOwnPropertyDescriptor,OA=(r,A,e,t)=>{for(var i=t>1?void 0:t?tc(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ec(A,e,i),i};const ga={};function Ac(r){let A=ga[r]??0;return A++,ga[r]=A,A}f.Node=class extends Wi{constructor(e,t=[]){super();g(this,"name",`${this.tag}:${Ac(this.tag)}`);g(this,"mask");g(this,"_readyed",!1);g(this,"_tree");g(this,"_parent");g(this,"_children",[]);g(this,"_meta",new Map);this._onTreeEnter=this._onTreeEnter.bind(this),this._onTreeExit=this._onTreeExit.bind(this),this._onParented=this._onParented.bind(this),this._onUnparented=this._onUnparented.bind(this),this._onReady=this._onReady.bind(this),this._onProcess=this._onProcess.bind(this),this.setProperties(e).append(t),this.on("treeEnter",this._onTreeEnter).on("treeExit",this._onTreeExit).on("parented",this._onParented).on("unparented",this._onUnparented).on("ready",this._onReady).on("process",this._onProcess)}getName(){return this.name}setName(e){return this.name=e,this}get tree(){return this.getTree()}set tree(e){this.setTree(e)}getTree(){return this._tree}getViewport(){var e;return(e=this._tree)==null?void 0:e.getCurrentViewport()}getWindow(){var e;return(e=this._tree)==null?void 0:e.root}isInsideTree(){return!!this._tree}setTree(e){const t=this._tree;if(e!==t){t&&this.emit("treeExit",t),this._tree=e,e&&this.emit("treeEnter",e);for(let i=this._children.length,s=0;s<i;s++){const n=this._children[s];!e&&this.emit("childExitingTree",n),n.setTree(e),e&&this.emit("childEnteredTree",n)}e&&(this.emit("treePostEnter",e),this._readyed||(this._readyed=!0,this.emit("ready")))}return this}get parent(){return this._parent}set parent(e){this.setParent(e)}hasParent(){return!!this._parent}getParent(){return this._parent}setParent(e){var t;if(!((t=this._parent)!=null&&t.is(e))){const i=this._parent;this._parent=e,this.setTree(e==null?void 0:e._tree),e?this.emit("parented",e):i&&this.emit("unparented",i)}return this}get siblingIndex(){return this.getIndex()}set siblingIndex(e){var t;(t=this._parent)==null||t.moveChild(this,e)}get previousSibling(){var e;return(e=this._parent)==null?void 0:e.getChildren()[this.getIndex()-1]}get nextSibling(){var e;return(e=this._parent)==null?void 0:e.getChildren()[this.getIndex()+1]}get firstSibling(){var e;return(e=this._parent)==null?void 0:e.getChildren()[0]}get lastSibling(){var t;const e=(t=this._parent)==null?void 0:t.getChildren();return e?e[e.length-1]:void 0}hasMeta(e){return this._meta.has(e)}getMeta(e,t){return this._meta.get(e)??t}setMeta(e,t){this._meta.set(e,t)}deleteMeta(e){this._meta.delete(e)}clearMeta(){this._meta.clear()}canProcess(){var e;if(!this._tree)return!1;switch(this.processMode){case"inherit":return((e=this._parent)==null?void 0:e.canProcess())??!0;case"pausable":return!this._tree.paused;case"when_paused":return this._tree.paused;case"always":return!0;case"disabled":default:return!1}}canRender(){var e;if(!this._tree)return!1;switch(this.renderMode){case"inherit":return((e=this._parent)==null?void 0:e.canRender())??!0;case"always":return!0;case"disabled":default:return!1}}_onTreeEnter(e){this._treeEnter(e),this.emit("treeEntered",e)}_onTreeExit(e){this.emit("treeExiting",e),this._treeExit(e),this.emit("treeExited",e)}_onParented(e){this._parented(e)}_onUnparented(e){this._unparented(e)}_onReady(){this._ready()}_onProcess(e=0){const t=this._tree,i=this.canRender(),s=this.canProcess();s&&(t==null||t.emit("nodeProcessing",this),this.emit("processing",e),this._process(e));let n;if(i){const o=t.renderStack.push(this);n=t.renderStack.currentCall,t.renderStack.currentCall=o}if(this.mask instanceof f.Node)this.getNode("__$mask")||(this.mask.processMode="disabled",this.appendChild(this.mask,"front"));else{const o=this.getNode("__$mask");o&&this.removeChild(o)}for(let o=this._children.length,a=0;a<o;a++)this._children[a].emit("process",e);i&&(t.renderStack.currentCall=n),s&&(this.emit("processed",e),t==null||t.emit("nodeProcessed",this))}render(e,t){const i=this.mask;i&&(e.flush(),e.mask.push(this,i)),this._render(e),t==null||t(),i&&(e.flush(),e.mask.pop(this))}input(e,t){for(let i=this._children.length-1;i>=0;i--)this._children[i].input(e,t);this._input(e,t)}getChildren(e=!1){switch(e){case!0:return this._children;case!1:return this._children.filter(t=>t.internalMode==="default");default:return this._children.filter(t=>t.internalMode===e)}}getIndex(e=!1){var t;return((t=this._parent)==null?void 0:t.getChildren(e).indexOf(this))??0}getNode(e){return this._children.find(t=>t.name===e)}removeNode(e){var t;(t=this.getNode(e))==null||t.remove()}addSibling(e){return this.is(e)||!this.hasParent()||e.hasParent()?this:(e.internalMode=this.internalMode,this._parent.moveChild(e,this.getIndex(!0)+1),this)}append(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{this.appendChild(i)})}appendChild(e,t=e.internalMode){if(this.is(e)||e.hasParent())return e;switch(t){case"default":case"front":{const i=t==="default"?"back":"front",s=this._children.findIndex(n=>n.internalMode===i);s>-1?this._children.splice(s,0,e):this._children.push(e);break}case"back":this._children.push(e);break}return e.internalMode=t,e.setParent(this),this.emit("appendChild",e),e}moveChild(e,t,i=e.internalMode){if(this.is(e)||e.hasParent()&&!this.is(e.parent))return this;e.internalMode=i;const s=this._children.indexOf(e);let n=this._children.findIndex(l=>{switch(i){case"default":return l.internalMode!=="front";case"back":return l.internalMode==="back";case"front":default:return!0}});n=n>-1?n:Math.max(0,this._children.length-1);let o=this._children.slice(n).findIndex(l=>{switch(i){case"front":return l.internalMode!=="front";case"default":return l.internalMode==="back";case"back":default:return!1}});o=o>-1?n+o:Math.max(0,this._children.length);const a=_t(n,t>-1?t:o,o);return a!==s&&(s>-1&&this._children.splice(s,1),e.setParent(this),a>-1&&a<this._children.length?this._children.splice(a,0,e):this._children.push(e),s>-1?this.emit("moveChild",e,a,s):this.emit("appendChild",e)),this}removeChild(e){const t=e.getIndex(!0);return this.is(e.parent)&&t>-1&&(this._children.splice(t,1),e.setParent(void 0),this.emit("removeChild",e,t)),e}removeChildren(){this.getChildren().forEach(e=>this.removeChild(e))}remove(){var e;(e=this._parent)==null||e.removeChild(this)}forEach(e){return this.getChildren().forEach(e),this}deepForEach(e){return this.getChildren().forEach(t=>{e(t),t.deepForEach(e)}),this}is(e){return!!(e&&this.instanceId===e.instanceId)}_ready(){}_treeEnter(e){}_treeExit(e){}_parented(e){}_unparented(e){}_process(e){}_input(e,t){}_render(e){}toJSON(){return{tag:this.tag,props:super.toJSON(),children:this.getChildren().map(e=>e.toJSON())}}static parse(e){if(Array.isArray(e))return e.map(a=>this.parse(a));const{tag:t,props:i,children:s}=e,n=Yi.get(t)??f.Node,o=new n(i);return s==null||s.forEach(a=>o.appendChild(this.parse(a))),o}},OA([_()],f.Node.prototype,"name",2),OA([_()],f.Node.prototype,"mask",2),OA([_({default:"inherit"})],f.Node.prototype,"processMode",2),OA([_({default:"inherit"})],f.Node.prototype,"renderMode",2),OA([_({default:"default"})],f.Node.prototype,"internalMode",2),f.Node=OA([ae("Node")],f.Node);var ic=Object.defineProperty,rc=Object.getOwnPropertyDescriptor,sr=(r,A,e,t)=>{for(var i=t>1?void 0:t?rc(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ic(A,e,i),i};f.TimelineNode=class extends f.Node{constructor(e,t=[]){super();g(this,"computedDuration",0);g(this,"_currentTime",0);g(this,"_startTime",0);this.setProperties(e).append(t)}get timeline(){var e;return(e=this._tree)==null?void 0:e.timeline}get timelineCurrentTime(){var e;return((e=this.timeline)==null?void 0:e.currentTime)??0}get parentStartTime(){var e;return((e=this._parent)==null?void 0:e.startTime)??0}get currentTime(){return _t(0,this._currentTime,this.computedDuration)}get startTime(){return this._startTime}set startTime(e){this.delay=e-this.parentStartTime,this._updateCurrentTime(!0)}get endTime(){return this._startTime+this.computedDuration}get currentTimeProgress(){return this.computedDuration?_t(0,this._currentTime/this.computedDuration,1):0}isInsideTimeRange(){const e=this._currentTime;return this.computedDuration?e>=0&&e<=this.computedDuration:e>=0}_updateCurrentTime(e=!1){if(e||!this.paused){const t=this._parent;this._startTime=this.delay+this.parentStartTime,this.computedDuration=t!=null&&t.computedDuration?Math.min(this._startTime+this.duration,t.endTime)-this._startTime:this.duration,this._currentTime=this.timelineCurrentTime-this._startTime,this.emit("updateCurrentTime",this._currentTime)}}_process(e){this._updateCurrentTime(),super._process(e)}},sr([_({default:0})],f.TimelineNode.prototype,"delay",2),sr([_({default:0})],f.TimelineNode.prototype,"duration",2),sr([_({default:!1})],f.TimelineNode.prototype,"paused",2),f.TimelineNode=sr([ae("TimelineNode")],f.TimelineNode);var sc=Object.defineProperty,nc=Object.getOwnPropertyDescriptor,Bi=(r,A,e,t)=>{for(var i=t>1?void 0:t?nc(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&sc(A,e,i),i};f.Viewport=class extends f.Node{constructor(e=!1){super();g(this,"_projection",new uo);g(this,"_framebufferIndex",0);g(this,"_framebuffers",[{texture:new ks,needsUpload:!1},{texture:new ks,needsUpload:!1}]);this.flipY=e,this._projection.flipY(e)}get valid(){return!!(this.width&&this.height)}get framebuffer(){return this._framebuffers[this._framebufferIndex]}get texture(){return this.framebuffer.texture}_glFramebufferOptions(e){const{width:t,height:i}=this,{pixelRatio:s}=e;return this._framebuffers.forEach(n=>{const o=n.texture;o.pixelRatio=s,o.width=t,o.height=i,o.upload(e)}),{width:t,height:i,colorTextures:[this.texture._glTexture(e)]}}_glFramebuffer(e){return e.getRelated(this.framebuffer,()=>e.framebuffer.create(this._glFramebufferOptions(e)))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"x":case"y":this.requestUpload(),this._projection.translate(this.x,this.y),this.emit("updateRect");break;case"width":case"height":this.requestUpload(),this._projection.resize(this.width,this.height),this.emit("updateRect");break}}requestUpload(){this._framebuffers.forEach(e=>e.needsUpload=!0)}resize(e,t){this.width=e,this.height=t}upload(e){const t=this.framebuffer;return t.needsUpload&&this.valid?(t.needsUpload=!1,e.framebuffer.update(this._glFramebuffer(e),this._glFramebufferOptions(e)),!0):!1}activate(e){var t;return this.valid?(e.flush(),(t=this._tree)==null||t.setCurrentViewport(this),e.framebuffer.bind(this._glFramebuffer(e)),this.upload(e),!0):!1}redraw(e,t){if(this.valid){e.flush();const i=this.framebuffer.texture;return this._framebufferIndex=(this._framebufferIndex+1)%this._framebuffers.length,this.activate(e),e.clear(),i.activate(e,0),t(),!0}return!1}activateWithCopy(e,t){this.resize(t.width,t.height),this.activate(e)&&(e.clear(),t.texture.activate(e,0),Ie.draw(e,LA.instance,{sampler:0}))}render(e,t){var s,n;const i=(s=this._tree)==null?void 0:s.getCurrentViewport();this.activate(e),e.clear(),super.render(e,t),e.flush(),i?i.activate(e):(e.framebuffer.bind(null),(n=this._tree)==null||n.setCurrentViewport(void 0))}getRect(){return new hi(this.x,this.y,this.width,this.height)}toProjectionArray(e=!1){return this._projection.toArray(e)}},Bi([_({default:0})],f.Viewport.prototype,"x",2),Bi([_({default:0})],f.Viewport.prototype,"y",2),Bi([_({default:0})],f.Viewport.prototype,"width",2),Bi([_({default:0})],f.Viewport.prototype,"height",2),f.Viewport=Bi([ae("Viewport")],f.Viewport);var oc=Object.defineProperty,ac=Object.getOwnPropertyDescriptor,Ei=(r,A,e,t)=>{for(var i=t>1?void 0:t?ac(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&oc(A,e,i),i};f.Effect=class extends f.TimelineNode{constructor(e,t=[]){super();g(this,"viewport1",new f.Viewport);g(this,"viewport2",new f.Viewport);g(this,"_renderId",0);g(this,"_renderViewport");g(this,"_previousSibling");g(this,"_nextSibling");this._onProcessing=this._onProcessing.bind(this),this._onNodeProcessed=this._onNodeProcessed.bind(this),this.setProperties(e).append(t)}get _effectMode(){return this.effectMode??"parent"}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"glsl":{const n=new rr(t);!this.effectMode&&n.has.transition&&(this.effectMode="transition"),this.material=n;break}case"glslSrc":{t?Ot.text.load(t).then(n=>this.glsl=n):this.glsl="";break}}}_treeEnter(e){e.on("processing",this._onProcessing),e.on("nodeProcessed",this._onNodeProcessed),this.viewport1.setTree(e),this.viewport2.setTree(e)}_treeExit(e){e.off("processing",this._onProcessing),e.off("nodeProcessed",this._onNodeProcessed),this.viewport1.setTree(void 0),this.viewport2.setTree(void 0)}_onProcessing(){switch(this._updateCurrentTime(),this._effectMode){case"transition":this._previousSibling=this.previousSibling,this._nextSibling=this.nextSibling;break;default:this._previousSibling=void 0,this._nextSibling=void 0;break}}_onNodeProcessed(e){var i;if(!this.isInsideTimeRange())return;const t=(i=this._tree)==null?void 0:i.renderStack;if(t)switch(this._effectMode){case"transition":e.is(this._previousSibling)?(this._previousSibling=void 0,t.push(this)):e.is(this._nextSibling)&&(this._nextSibling=void 0,t.push(this));break}}_processParent(){var o,a;const e=(o=this._tree)==null?void 0:o.renderStack;if(!e)return;const t=(a=e.currentCall)==null?void 0:a.parentCall;if(!t)return;const i=t.calls;let s,n;i.forEach((l,h)=>{var c;(l.renderable.is(this._parent)||(c=l.renderable.parent)!=null&&c.is(this._parent))&&(s=s??h,n=h)}),!(s===void 0||n===void 0)&&(i.splice(n+1,0,e.createCall(this)),i.splice(s,0,e.createCall(this)))}_processChildren(){var e;this._children.length&&(super.emit("process"),(e=this._tree)==null||e.renderStack.push(this))}_onProcess(e=0){if(this.canProcess())switch(this._renderId=0,this._effectMode){case"before":super._onProcess(e);break;case"parent":this._processParent();break;case"children":this._processChildren();break}}_renderBefore(e){var i;const t=(i=this._tree)==null?void 0:i.getCurrentViewport();t&&this.apply(e,t,{redraw:!0})}_renderTransition(e){var t;if(this._renderId%2===0)this._renderViewport=(t=this._tree)==null?void 0:t.getCurrentViewport(),this._renderViewport&&(this.viewport1.activateWithCopy(e,this._renderViewport),this.viewport2.resize(this._renderViewport.width,this._renderViewport.height)),this.viewport2.activate(e),e.clear();else{const i=this._renderViewport;this._renderViewport=void 0,i&&(i.activate(e),e.clear(),this.viewport1.texture.activate(e,0),this.viewport2.texture.activate(e,1),this.apply(e,i,{from:this.viewport1,to:this.viewport2}),e.texture.unbind(0),e.texture.unbind(1))}}_renderParentOrChildren(e){var t;if(this._renderId%2===0)this._renderViewport=(t=this._tree)==null?void 0:t.getCurrentViewport(),this._renderViewport&&this.viewport1.resize(this._renderViewport.width,this._renderViewport.height),this.viewport1.activate(e),e.clear();else{const i=this._renderViewport;this._renderViewport=void 0,i&&(this.viewport1.activate(e),this.apply(e,this.viewport1,{redraw:!0,target:this._effectMode==="parent"?this._parent??void 0:void 0,targetArea:this._parseTargetArea()}),i.activate(e),this.viewport1.texture.activate(e,0),Ie.draw(e))}}_parseTargetArea(){if(this._effectMode==="parent"&&this._parent&&"getRect"in this._parent){const e=this._parent.getRect();if(e)return[e.left/this.viewport1.width,e.top/this.viewport1.height,e.width/this.viewport1.width,e.height/this.viewport1.height]}}_render(e){switch(this._effectMode){case"before":this._renderBefore(e);break;case"transition":this._renderTransition(e);break;case"parent":case"children":default:this._renderParentOrChildren(e);break}this._renderId++}apply(e,t,i){this.material&&(i!=null&&i.redraw?t.redraw(e,()=>{Ie.draw(e,this.material,{from:0,to:1,progress:this.currentTimeProgress,ratio:t.width/t.height})}):Ie.draw(e,this.material,{from:0,to:1,progress:this.currentTimeProgress,ratio:i!=null&&i.from?i.from.width/i.from.height:0}))}},Ei([Me()],f.Effect.prototype,"material",2),Ei([_()],f.Effect.prototype,"effectMode",2),Ei([_({default:""})],f.Effect.prototype,"glsl",2),Ei([_({default:""})],f.Effect.prototype,"glslSrc",2),f.Effect=Ei([ae("Effect")],f.Effect);var ca=Object.defineProperty,lc=Object.getOwnPropertyDescriptor,hc=(r,A,e)=>A in r?ca(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,Ns=(r,A,e,t)=>{for(var i=t>1?void 0:t?lc(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ca(A,e,i),i},ua=(r,A,e)=>hc(r,typeof A!="symbol"?A+"":A,e);const gc=`attribute vec2 position;
105
+ }`,uniforms:{sampler:0,projectionMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),modelViewMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),tint:new Float32Array([1,1,1,1])}})}}g(LA,"_instance");class Ie extends ir{static get instance(){return this._instance??(this._instance=new this)}static draw(A,e=LA.instance,t){this.instance.draw(A,e,t)}constructor(){super({vertexAttributes:{position:new ft({buffer:new Vt({data:new Float32Array([-1,-1,1,-1,1,1,-1,1]),dynamic:!1}),size:2,normalized:!1,type:"float"}),uv:new ft({buffer:new Vt({data:new Float32Array([0,0,1,0,1,1,0,1]),dynamic:!1}),size:2,normalized:!1,type:"float"})},indexBuffer:new TA({data:new Uint16Array([0,1,2,0,2,3]),dynamic:!1})})}}g(Ie,"_instance");class Hg extends ir{constructor(){const e=new Vt({data:new Float32Array,dynamic:!0}),t=new Vt({data:new Float32Array,dynamic:!0});super({vertexAttributes:{position:new ft({buffer:e,size:2,normalized:!1,type:"float"}),uv:new ft({buffer:t,size:2,normalized:!1,type:"float"})},indexBuffer:new TA({data:new Uint16Array,dynamic:!0})});g(this,"positionBuffer");g(this,"uvBuffer");this.positionBuffer=e,this.uvBuffer=t}update(e,t,i){return this.positionBuffer.data=e,this.uvBuffer.data=t,this.indexBuffer.data=i,this}}function Jg(){return{shadowColor:"transparent",shadowOffsetX:0,shadowOffsetY:0,shadowBlur:0}}function xs(){return{left:0,top:0,width:0,height:0,rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function Kg(){return{overflow:"visible",visibility:"visible",filter:"none",opacity:1,marginLeft:0,marginTop:0,marginRight:0,marginBottom:0,paddingLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,...xs(),backgroundImage:"none",backgroundColor:"transparent",...Jg(),borderRadius:0,borderColor:"transparent",borderWidth:1}}function Ss(){return{writingMode:"horizontal-tb",verticalAlign:"baseline",lineHeight:1.2,letterSpacing:0,wordSpacing:0,fontSize:14,fontWeight:"normal",fontFamily:"",fontStyle:"normal",fontKerning:"normal",textWrap:"wrap",textAlign:"start",textIndent:0,textTransform:"none",textOrientation:"mixed",textDecoration:"none",textStrokeWidth:0,textStrokeColor:"black",color:"black",listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside",highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function Yg(){return{...Kg(),...Ss()}}var Wg=Object.defineProperty,Le=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Wg(A,e,i),i};const na={brightness:1,contrast:1,grayscale:0,"hue-rotate":0,invert:0,opacity:1,saturate:1,sepia:0};class ve extends St{constructor(e){super();g(this,"_backgroundColor",new Rt);this.setProperties(e)}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"backgroundColor":this._backgroundColor.value=this.backgroundColor==="none"?void 0:this.backgroundColor;break}}canPointeEvents(){return this.pointerEvents!=="none"}getComputedOpacity(){return _t(0,this.opacity,1)}getComputedBackgroundColor(){return this._backgroundColor}async loadBackgroundImage(){if(this.backgroundImage!=="none")return await Ot.texture.load(this.backgroundImage)}getComputedTransform(){const{scaleX:e,scaleY:t,left:i,top:s,width:n,height:o,rotate:a}=this,l=new Ze,h=new Ze(!1),c=new Ze(!1).scale(e,t).translate(i,s).rotate(a*fs);let u=this.transform;(!u||u==="none")&&(u=""),IA(u,{width:n,height:o}).forEach(({name:R,args:b})=>{const Q=b.map(v=>v.normalizedIntValue);switch(l.identity(),R){case"translate":l.translate(Q[0]*n,(Q[1]??Q[0])*this.height);break;case"translateX":l.translateX(Q[0]*n);break;case"translateY":l.translateY(Q[0]*o);break;case"translateZ":l.translateZ(Q[0]);break;case"translate3d":l.translate3d(Q[0]*n,(Q[1]??Q[0])*o,Q[2]??Q[1]??Q[0]);break;case"scale":l.scale(Q[0],Q[1]??Q[0]);break;case"scaleX":l.scaleX(Q[0]);break;case"scaleY":l.scaleY(Q[0]);break;case"scale3d":l.scale3d(Q[0],Q[1]??Q[0],Q[2]??Q[1]??Q[0]);break;case"rotate":l.rotate(Q[0]*Ce);break;case"rotateX":l.rotateX(Q[0]*Ce);break;case"rotateY":l.rotateY(Q[0]*Ce);break;case"rotateZ":l.rotateZ(Q[0]*Ce);break;case"rotate3d":l.rotate3d(Q[0]*Ce,(Q[1]??Q[0])*Ce,(Q[2]??Q[1]??Q[0])*Ce,(Q[3]??Q[2]??Q[1]??Q[0])*Ce);break;case"skew":l.skew(Q[0],Q[0]??Q[1]);break;case"skewX":l.skewX(Q[0]);break;case"skewY":l.skewY(Q[0]);break;case"matrix":l.set(Q);break}h.multiply(l)}),c.update(),h.update();const d=c.toArray(),I=h.toArray(),C=[I[0]*d[0]+I[3]*d[1],I[1]*d[0]+I[4]*d[1],I[2]*d[0]+I[5]*d[1]+d[2],I[0]*d[3]+I[3]*d[4],I[1]*d[3]+I[4]*d[4],I[2]*d[3]+I[5]*d[4]+d[5],0,0,1],[B,U]=this.getComputedTransformOrigin(),M=B*n,D=U*o;return C[2]+=C[0]*-M+C[1]*-D+M,C[5]+=C[3]*-M+C[4]*-D+D,new Ze().set(C)}getComputedTransformOrigin(){const[e,t=e]=this.transformOrigin.split(" ");return[e,t].map(i=>{switch(i=i.trim(),i){case"left":case"top":return 0;case"center":return .5;case"right":case"bottom":return 1;default:return Number(i)}})}getComputedFilter(){let e={};return this.filter==="none"||(e=IA(this.filter).reduce((t,{name:i,args:s})=>(t[i]=s[0].normalizedIntValue,t),e),Object.keys(na).forEach(t=>{e[t]=e[t]??na[t]})),e}getComputedFilterColorMatrix(){const e=new qi,t=this.getComputedFilter();for(const i in t){const s=t[i];switch(i){case"hue-rotate":e.hueRotate(s*Ce);break;case"saturate":e.saturate(s);break;case"brightness":e.brightness(s);break;case"contrast":e.contrast(s);break;case"invert":e.invert(s);break;case"sepia":e.sepia(s);break;case"opacity":e.opacity(s);break;case"grayscale":e.grayscale(s);break}}return e}}Le([_({default:"none"})],ve.prototype,"backgroundColor"),Le([_({default:"none"})],ve.prototype,"backgroundImage"),Le([_({default:"none"})],ve.prototype,"filter"),Le([_({default:"inherit"})],ve.prototype,"direction"),Le([_({default:"none"})],ve.prototype,"boxShadow"),Le([_({default:"none"})],ve.prototype,"maskImage"),Le([_({default:1})],ve.prototype,"opacity"),Le([_({default:0})],ve.prototype,"borderWidth"),Le([_({default:0})],ve.prototype,"borderRadius"),Le([_({default:"#000000"})],ve.prototype,"borderColor"),Le([_({default:"none"})],ve.prototype,"borderStyle"),Le([_({default:0})],ve.prototype,"outlineWidth"),Le([_({default:0})],ve.prototype,"outlineOffset"),Le([_({default:"#000000"})],ve.prototype,"outlineColor"),Le([_({default:"none"})],ve.prototype,"outlineStyle"),Le([_({default:"visible"})],ve.prototype,"visibility"),Le([_({default:"visible"})],ve.prototype,"overflow"),Le([_({default:"auto"})],ve.prototype,"pointerEvents");const oa=xs();for(const r in oa)BA(ve,r,{default:oa[r]});const aa=Ss();for(const r in aa)BA(ve,r,{default:aa[r]});var Vg=Object.defineProperty,GA=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Vg(A,e,i),i};class Ne extends St{constructor(e){super();g(this,"_isPowerOfTwo",!1);g(this,"_needsUpload",!1);this.source=e,this._updateSize()}static get EMPTY(){return new this({width:1,height:1,pixels:null})}static get WHITE(){return new this({width:1,height:1,pixels:new Uint8Array([255,255,255,255])})}static get BLACK(){return new this({width:1,height:1,pixels:new Uint8Array([0,0,0,255])})}static get RED(){return new this({width:1,height:1,pixels:new Uint8Array([255,0,0,255])})}static get GREEN(){return new this({width:1,height:1,pixels:new Uint8Array([0,255,0,255])})}static get BLUE(){return new this({width:1,height:1,pixels:new Uint8Array([0,0,255,255])})}get valid(){return!!(this.width&&this.height)}get realWidth(){return Math.round(this.width*this.pixelRatio)}get realHeight(){return Math.round(this.height*this.pixelRatio)}_glTextureOptions(e,t){let i=this.wrapMode;return e.version===1&&!this._isPowerOfTwo&&(i="clamp_to_edge"),{value:this.source,target:"texture_2d",location:0,filterMode:this.filterMode,wrapMode:i,...t}}_glTexture(e,t){return e.getRelated(this,()=>e.texture.create(this._glTextureOptions(e,t)))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"width":case"height":this._updatePOT();break;case"source":this._updateSize();break;case"filterMode":case"wrapMode":case"pixelRatio":this.requestUpload();break}}_updatePOT(){this._isPowerOfTwo=$r(this.realWidth)&&$r(this.realHeight),this.requestUpload()}_updateSize(){const e=this.source;"pixels"in e?(this.width=e.width/this.pixelRatio,this.height=e.height/this.pixelRatio):(this.width=Number(e.naturalWidth||e.videoWidth||e.width||0)/this.pixelRatio,this.height=Number(e.naturalHeight||e.videoHeight||e.height||0)/this.pixelRatio),this.requestUpload()}requestUpload(){this._needsUpload=!0}upload(e,t){return this._needsUpload&&this.valid?(this._needsUpload=!1,e.texture.update(this._glTexture(e,t),this._glTextureOptions(e,t)),!0):!1}activate(e,t=0){return this.valid?(e.texture.bind({target:"texture_2d",value:this._glTexture(e,{location:t}),location:t}),this.upload(e,{location:t}),!0):!1}inactivate(e){e.texture.unbind(this._glTexture(e))}destroy(){Ln&&this.source instanceof ImageBitmap&&this.source.close()}}GA([Me()],Ne.prototype,"source"),GA([_({default:0})],Ne.prototype,"width"),GA([_({default:0})],Ne.prototype,"height"),GA([_({default:"linear"})],Ne.prototype,"filterMode"),GA([_({default:"clamp_to_edge"})],Ne.prototype,"wrapMode"),GA([_({default:1})],Ne.prototype,"pixelRatio");var Xg=Object.defineProperty,qg=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Xg(A,e,i),i};class Ii extends Ne{constructor(A=document.createElement("canvas")){super(A)}_updateProperty(A,e,t,i){switch(A){case"width":this.source.width=Math.max(1,Math.ceil(e*this.pixelRatio));break;case"height":this.source.height=Math.max(1,Math.ceil(e*this.pixelRatio));break}super._updateProperty(A,e,t,i)}}qg([_({default:2})],Ii.prototype,"pixelRatio");class Ms extends Ne{constructor(A){const e=new Rt(A);super({width:1,height:1,pixels:new Uint8Array([e.r8,e.g8,e.b8,e.a8])})}}function zg(r){return{autoLoad:!!((r==null?void 0:r.autoLoad)??!0),useBitmap:!!((r==null?void 0:r.useBitmap)??!0)&&ts,crossorigin:(r==null?void 0:r.crossorigin)??null}}class jg extends Ne{constructor(e,t){const i=zg(t);super(e);g(this,"bitmap");g(this,"useBitmap");g(this,"preserveBitmap",!1);g(this,"_loadSource");g(this,"_loadBitmap");const s=e.src,n=s.includes(".svg")||s.startsWith("data:image/svg+xml");this.useBitmap=i.useBitmap&&!n,i.autoLoad&&this.load()}async load(){return this._loadSource||(this._loadSource=new Promise(e=>{this._loadSource=void 0;const t=this.source,i=()=>{t.onload=null,t.onerror=null},s=()=>{i(),this.requestUpload(),this.useBitmap?this.genBitmap().finally(()=>e(this)):e(this)},n=o=>{i(),console.warn(`Failed to load ImageTexture, src: ${t.src}`,o),this.emit("error",o),e(this)};t.complete&&t.src?s():(t.onload=s,t.onerror=n)})),this._loadSource}genBitmap(){if(this._loadBitmap)return this._loadBitmap;if(this.bitmap||!ts)return Promise.resolve(this);const e=this.source,t=!e.crossOrigin||e.crossOrigin==="anonymous";return this._loadBitmap=fetch(e.src,{mode:t?"cors":"no-cors"}).then(i=>i.blob()).then(i=>createImageBitmap(i,0,0,e.width,e.height,{premultiplyAlpha:"premultiply"})).then(i=>(this.bitmap=i,this.requestUpload(),this._loadBitmap=void 0,this)).catch(i=>(console.warn("Failed to genBitmap",i),this)),this._loadBitmap}_glTextureOptions(e){return{...super._glTextureOptions(e),value:this.bitmap??this.source}}upload(e){if(this.useBitmap){if(!this.bitmap)return this.genBitmap(),!1}else{const i=this.source;if(oi&&i instanceof HTMLImageElement&&(!i.complete||i.naturalWidth===0))return!1}const t=super.upload(e);return this.preserveBitmap&&this.bitmap&&(this.bitmap.close(),this.bitmap=void 0),t}}class Rs extends Ne{constructor(A,e=1,t=1){const i={width:e,height:t,pixels:null};A&&(ArrayBuffer.isView(A)?i.pixels=new Uint8Array(A.buffer):i.pixels=new Uint8Array(A)),super(i)}_updateProperty(A,e,t,i){switch(A){case"width":this.source.width=Math.round(e*this.pixelRatio);break;case"height":this.source.height=Math.round(e*this.pixelRatio);break}super._updateProperty(A,e,t,i)}}var Zg=Object.defineProperty,la=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Zg(A,e,i),i};function $g(r){return{autoLoad:!!((r==null?void 0:r.autoLoad)??!0),autoPlay:!!((r==null?void 0:r.autoPlay)??!1),fps:Number((r==null?void 0:r.fps)??0),crossorigin:(r==null?void 0:r.crossorigin)??null,loop:!!((r==null?void 0:r.loop)??!1),muted:!!((r==null?void 0:r.muted)??!1),playsinline:!!((r==null?void 0:r.playsinline)??!0)}}const Us=(xA=class extends Ne{constructor(e,t){const i=$g(t);if(!Yn(e)){typeof e=="string"&&(e=[e]);const s=e[0].src||e[0],n=document.createElement("video");i.autoLoad&&n.setAttribute("preload","auto"),i.playsinline&&(n.setAttribute("webkit-playsinline",""),n.setAttribute("playsinline","")),i.muted&&(n.setAttribute("muted",""),n.muted=!0),i.loop&&n.setAttribute("loop",""),i.autoPlay&&n.setAttribute("autoplay",""),zn(n,s,i.crossorigin);for(let o=0;o<e.length;++o){let{src:a,mime:l}=e[o];if(a=a||e[o],a.startsWith("data:"))l=a.slice(5,a.indexOf(";"));else if(!a.startsWith("blob:")){const c=a.split("?").shift().toLowerCase(),u=c.slice(c.lastIndexOf(".")+1);l=l||xA.mimeTypes.get(u)||`video/${u}`}const h=document.createElement("source");h.src=a,l&&(h.type=l),n.appendChild(h)}e=n}super(e);g(this,"_spf",0);g(this,"_autoPlay",!1);g(this,"_sourceLoad");g(this,"_nextTime",0);g(this,"_connected",!1);g(this,"_requestId");g(this,"_resolve");g(this,"_reject");g(this,"_onPlayStart",()=>{this.valid||this._onCanPlay(),this._setupAutoUpdate()});g(this,"_onPlayStop",()=>{this._setupAutoUpdate()});g(this,"_onCanPlay",()=>{const e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this._nextTime=0,this._updateSize(),this.requestUpload(),this._nextTime=0,!t&&this._resolve&&(this._resolve(this),this._sourceLoad=void 0,this._resolve=void 0,this._reject=void 0),this.isPlaying?this._onPlayStart():this._autoPlay&&e.play()});g(this,"_onError",e=>{this.source.removeEventListener("error",this._onError,!0),this.emit("error",e),this._reject&&(this._reject(e),this._reject=void 0,this._resolve=void 0)});g(this,"_onSeeked",()=>{this.autoUpdate&&!this.isPlaying&&(this._nextTime=0,this.requestUpload(),this._nextTime=0)});g(this,"_videoFrameRequestCallback",()=>{this.requestUpload(),this._requestId=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback)});g(this,"requestUpload",()=>{const e=Math.floor(Re.elapsed*this.source.playbackRate);this._nextTime-=e,(!this._spf||this._nextTime<=0)&&(super.requestUpload(),this._nextTime=this._spf||0)});this.fps=i.fps,this._autoPlay=i.autoPlay,i.autoPlay&&this.load(),this._setupAutoUpdate()}get isReady(){return this.source.readyState>2}get isPlaying(){return!this.source.paused&&!this.source.ended&&this.isReady}get duration(){return this.source.duration}get seeking(){return this.source.seeking}get currentTime(){return this.source.currentTime}set currentTime(e){this.source.currentTime=e}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"fps":this._spf=t?Math.floor(1e3/t):0,this._setupAutoUpdate();break;case"autoUpdate":this._setupAutoUpdate();break}}_setupAutoUpdate(){this.autoUpdate&&this.isPlaying?!this.fps&&this.source.requestVideoFrameCallback?(this._connected&&(Re.off(this.requestUpload),this._connected=!1,this._nextTime=0),this._requestId===void 0&&(this._requestId=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._requestId!==void 0&&(this.source.cancelVideoFrameCallback(this._requestId),this._requestId=void 0),this._connected||(Re.on(this.requestUpload),this._connected=!0,this._nextTime=0)):(this._requestId!==void 0&&(this.source.cancelVideoFrameCallback(this._requestId),this._requestId=void 0),this._connected&&(Re.off(this.requestUpload),this._connected=!1,this._nextTime=0))}async load(){if(!this._sourceLoad){const e=this.source;(e.readyState===e.HAVE_ENOUGH_DATA||e.readyState===e.HAVE_FUTURE_DATA)&&e.width&&e.height&&(e.complete=!0),e.addEventListener("play",this._onPlayStart),e.addEventListener("pause",this._onPlayStop),e.addEventListener("seeked",this._onSeeked),this.isReady?this._onCanPlay():(e.addEventListener("canplay",this._onCanPlay),e.addEventListener("canplaythrough",this._onCanPlay),e.addEventListener("error",this._onError,!0)),this._sourceLoad=new Promise((t,i)=>{this.valid?(this._sourceLoad=void 0,t(this)):(this._resolve=t,this._reject=i,e.load())})}return this._sourceLoad}destroy(){this._setupAutoUpdate();const e=this.source;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load())}},g(xA,"mimeTypes",new Map(Object.entries({ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"}))),xA);la([Me({default:!0})],Us.prototype,"autoUpdate"),la([Me({default:0})],Us.prototype,"fps");let ha=Us;class ks extends Rs{}class Ps extends Ve{constructor(){super(...arguments);g(this,"textureTransform");g(this,"fillStyle");g(this,"strokeStyle");g(this,"lineCap");g(this,"lineJoin");g(this,"lineWidth");g(this,"miterLimit");g(this,"_defaultStyle",Ne.EMPTY);g(this,"_stroke",[]);g(this,"_fille",[])}stroke(){let e=this._defaultStyle;this.strokeStyle&&(this.strokeStyle instanceof Ne?e=this.strokeStyle:e=new Ms(this.strokeStyle)),this.curves.length&&(this._stroke.push({path:new Ve(this),texture:e,textureTransform:this.textureTransform,style:{alignment:.5,cap:this.lineCap??"butt",join:this.lineJoin??"miter",width:this.lineWidth??1,miterLimit:this.miterLimit??10}}),this.currentCurve=new FA,this.curves=[this.currentCurve])}fillRect(e,t,i,s){this.rect(e,t,i,s).fill()}strokeRect(e,t,i,s){this.rect(e,t,i,s).stroke()}fill(){let e=this._defaultStyle;this.fillStyle&&(this.fillStyle instanceof Ne?e=this.fillStyle:e=new Ms(this.fillStyle)),this._fille.push({path:new Ve(this),texture:e,textureTransform:this.textureTransform}),this.currentCurve=new FA,this.curves=[this.currentCurve]}copy(e){return super.copy(e),this.strokeStyle=e.strokeStyle,this.fillStyle=e.fillStyle,this.textureTransform=e.textureTransform,this.lineCap=e.lineCap,this.lineJoin=e.lineJoin,this.lineWidth=e.lineWidth,this.miterLimit=e.miterLimit,this._stroke=e._stroke.slice(),this._fille=e._fille.slice(),this}reset(){return super.reset(),this.strokeStyle=void 0,this.fillStyle=void 0,this.textureTransform=void 0,this.lineCap=void 0,this.lineJoin=void 0,this.lineWidth=void 0,this.miterLimit=void 0,this._stroke.length=0,this._fille.length=0,this}buildUvs(e,t,i,s,n){if(s){let o=s.width,a=s.height;n&&([o,a]=n.applyToPoint(o,a));for(let l=t.length,h=e;h<l;h+=2)i.push(t[h]/o,t[h+1]/a)}else for(let o=t.length,a=e;a<o;a+=2)i.push(0,0)}toBatchables(){const e=[];let t=[],i=[],s=[],n=0,o;const a=h=>{e.push({type:h,vertices:t,indices:i,uvs:s,texture:o}),t=[],i=[],s=[],o=void 0};let l=t.length;for(let h=this._fille.length,c=0;c<h;c++){const u=this._fille[c];o??(o=u.texture),o!==u.texture&&a("fill"),n=t.length,u.path.fillTriangulate({vertices:t,indices:i}),this.buildUvs(n,t,s,u.texture,u.textureTransform)}t.length-l>0&&a("fill"),l=t.length;for(let h=this._stroke.length,c=0;c<h;c++){n=t.length;const u=this._stroke[c];o??(o=u.texture),u.path.strokeTriangulate({vertices:t,indices:i,lineStyle:u.style,flipAlignment:!1,closed:!0}),this.buildUvs(n,t,s,u.texture,u.textureTransform),a("stroke")}return t.length-l>0&&a("stroke"),e}}var ec=Object.defineProperty,tc=Object.getOwnPropertyDescriptor,OA=(r,A,e,t)=>{for(var i=t>1?void 0:t?tc(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ec(A,e,i),i};const ga={};function Ac(r){let A=ga[r]??0;return A++,ga[r]=A,A}f.Node=class extends Wi{constructor(e,t=[]){super();g(this,"name",`${this.tag}:${Ac(this.tag)}`);g(this,"mask");g(this,"_readyed",!1);g(this,"_tree");g(this,"_parent");g(this,"_children",[]);g(this,"_meta",new Map);this._onTreeEnter=this._onTreeEnter.bind(this),this._onTreeExit=this._onTreeExit.bind(this),this._onParented=this._onParented.bind(this),this._onUnparented=this._onUnparented.bind(this),this._onReady=this._onReady.bind(this),this._onProcess=this._onProcess.bind(this),this.setProperties(e).append(t),this.on("treeEnter",this._onTreeEnter).on("treeExit",this._onTreeExit).on("parented",this._onParented).on("unparented",this._onUnparented).on("ready",this._onReady).on("process",this._onProcess)}getName(){return this.name}setName(e){return this.name=e,this}get tree(){return this.getTree()}set tree(e){this.setTree(e)}getTree(){return this._tree}getViewport(){var e;return(e=this._tree)==null?void 0:e.getCurrentViewport()}getWindow(){var e;return(e=this._tree)==null?void 0:e.root}isInsideTree(){return!!this._tree}setTree(e){const t=this._tree;if(!(e!=null&&e.is(t))){t&&this.emit("treeExit",t),this._tree=e,e&&this.emit("treeEnter",e);for(let i=this._children.length,s=0;s<i;s++){const n=this._children[s];!e&&this.emit("childExitingTree",n),n.setTree(e),e&&this.emit("childEnteredTree",n)}e&&(this.emit("treePostEnter",e),this._readyed||(this._readyed=!0,this.emit("ready")))}return this}get parent(){return this._parent}set parent(e){this.setParent(e)}hasParent(){return!!this._parent}getParent(){return this._parent}setParent(e){var t;if(!((t=this._parent)!=null&&t.is(e))){const i=this._parent;this._parent=e,this.setTree(e==null?void 0:e._tree),e?this.emit("parented",e):i&&this.emit("unparented",i)}return this}get siblingIndex(){return this.getIndex()}set siblingIndex(e){var t;(t=this._parent)==null||t.moveChild(this,e)}get previousSibling(){var e;return(e=this._parent)==null?void 0:e.getChildren()[this.getIndex()-1]}get nextSibling(){var e;return(e=this._parent)==null?void 0:e.getChildren()[this.getIndex()+1]}get firstSibling(){var e;return(e=this._parent)==null?void 0:e.getChildren()[0]}get lastSibling(){var t;const e=(t=this._parent)==null?void 0:t.getChildren();return e?e[e.length-1]:void 0}hasMeta(e){return this._meta.has(e)}getMeta(e,t){return this._meta.get(e)??t}setMeta(e,t){this._meta.set(e,t)}deleteMeta(e){this._meta.delete(e)}clearMeta(){this._meta.clear()}canProcess(){var e;if(!this._tree)return!1;switch(this.processMode){case"inherit":return((e=this._parent)==null?void 0:e.canProcess())??!0;case"pausable":return!this._tree.paused;case"when_paused":return this._tree.paused;case"always":return!0;case"disabled":default:return!1}}canRender(){var e;if(!this._tree)return!1;switch(this.renderMode){case"inherit":return((e=this._parent)==null?void 0:e.canRender())??!0;case"always":return!0;case"disabled":default:return!1}}_onTreeEnter(e){this._treeEnter(e),this.emit("treeEntered",e)}_onTreeExit(e){this.emit("treeExiting",e),this._treeExit(e),this.emit("treeExited",e)}_onParented(e){this._parented(e)}_onUnparented(e){this._unparented(e)}_onReady(){this._ready()}_onProcess(e=0){const t=this._tree,i=this.canRender(),s=this.canProcess();s&&(t==null||t.emit("nodeProcessing",this),this.emit("processing",e),this._process(e));let n;if(i){const o=t.renderStack.push(this);n=t.renderStack.currentCall,t.renderStack.currentCall=o}if(this.mask instanceof f.Node)this.getNode("__$mask")||(this.mask.processMode="disabled",this.appendChild(this.mask,"front"));else{const o=this.getNode("__$mask");o&&this.removeChild(o)}for(let o=this._children.length,a=0;a<o;a++)this._children[a].emit("process",e);i&&(t.renderStack.currentCall=n),s&&(this.emit("processed",e),t==null||t.emit("nodeProcessed",this))}render(e,t){const i=this.mask;i&&(e.flush(),e.mask.push(this,i)),this._render(e),t==null||t(),i&&(e.flush(),e.mask.pop(this))}input(e,t){for(let i=this._children.length-1;i>=0;i--)this._children[i].input(e,t);this._input(e,t)}getChildren(e=!1){switch(e){case!0:return this._children;case!1:return this._children.filter(t=>t.internalMode==="default");default:return this._children.filter(t=>t.internalMode===e)}}getIndex(e=!1){var t;return((t=this._parent)==null?void 0:t.getChildren(e).indexOf(this))??0}getNode(e){return this._children.find(t=>t.name===e)}removeNode(e){var t;(t=this.getNode(e))==null||t.remove()}addSibling(e){return this.is(e)||!this.hasParent()||e.hasParent()?this:(e.internalMode=this.internalMode,this._parent.moveChild(e,this.getIndex(!0)+1),this)}append(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{this.appendChild(i)})}appendChild(e,t=e.internalMode){if(this.is(e)||e.hasParent())return e;switch(t){case"default":case"front":{const i=t==="default"?"back":"front",s=this._children.findIndex(n=>n.internalMode===i);s>-1?this._children.splice(s,0,e):this._children.push(e);break}case"back":this._children.push(e);break}return e.internalMode=t,e.setParent(this),this.emit("appendChild",e),e}moveChild(e,t,i=e.internalMode){if(this.is(e)||e.hasParent()&&!this.is(e.parent))return this;e.internalMode=i;const s=this._children.indexOf(e);let n=this._children.findIndex(l=>{switch(i){case"default":return l.internalMode!=="front";case"back":return l.internalMode==="back";case"front":default:return!0}});n=n>-1?n:Math.max(0,this._children.length-1);let o=this._children.slice(n).findIndex(l=>{switch(i){case"front":return l.internalMode!=="front";case"default":return l.internalMode==="back";case"back":default:return!1}});o=o>-1?n+o:Math.max(0,this._children.length);const a=_t(n,t>-1?t:o,o);return a!==s&&(s>-1&&this._children.splice(s,1),e.setParent(this),a>-1&&a<this._children.length?this._children.splice(a,0,e):this._children.push(e),s>-1?this.emit("moveChild",e,a,s):this.emit("appendChild",e)),this}removeChild(e){const t=e.getIndex(!0);return this.is(e.parent)&&t>-1&&(this._children.splice(t,1),e.setParent(void 0),this.emit("removeChild",e,t)),e}removeChildren(){this.getChildren().forEach(e=>this.removeChild(e))}remove(){var e;(e=this._parent)==null||e.removeChild(this)}forEach(e){return this.getChildren().forEach(e),this}deepForEach(e){return this.getChildren().forEach(t=>{e(t),t.deepForEach(e)}),this}_ready(){}_treeEnter(e){}_treeExit(e){}_parented(e){}_unparented(e){}_process(e){}_input(e,t){}_render(e){}toJSON(){return{tag:this.tag,props:super.toJSON(),children:this.getChildren().map(e=>e.toJSON())}}static parse(e){if(Array.isArray(e))return e.map(a=>this.parse(a));const{tag:t,props:i,children:s}=e,n=Yi.get(t)??f.Node,o=new n(i);return s==null||s.forEach(a=>o.appendChild(this.parse(a))),o}},OA([_()],f.Node.prototype,"name",2),OA([_()],f.Node.prototype,"mask",2),OA([_({default:"inherit"})],f.Node.prototype,"processMode",2),OA([_({default:"inherit"})],f.Node.prototype,"renderMode",2),OA([_({default:"default"})],f.Node.prototype,"internalMode",2),f.Node=OA([ae("Node")],f.Node);var ic=Object.defineProperty,rc=Object.getOwnPropertyDescriptor,sr=(r,A,e,t)=>{for(var i=t>1?void 0:t?rc(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ic(A,e,i),i};f.TimelineNode=class extends f.Node{constructor(e,t=[]){super();g(this,"computedDuration",0);g(this,"_currentTime",0);g(this,"_startTime",0);this.setProperties(e).append(t)}get timeline(){var e;return(e=this._tree)==null?void 0:e.timeline}get timelineCurrentTime(){var e;return((e=this.timeline)==null?void 0:e.currentTime)??0}get parentStartTime(){var e;return((e=this._parent)==null?void 0:e.startTime)??0}get currentTime(){return _t(0,this._currentTime,this.computedDuration)}get startTime(){return this._startTime}set startTime(e){this.delay=e-this.parentStartTime,this._updateCurrentTime(!0)}get endTime(){return this._startTime+this.computedDuration}get currentTimeProgress(){return this.computedDuration?_t(0,this._currentTime/this.computedDuration,1):0}isInsideTimeRange(){const e=this._currentTime;return this.computedDuration?e>=0&&e<=this.computedDuration:e>=0}_updateCurrentTime(e=!1){if(e||!this.paused){const t=this._parent;this._startTime=this.delay+this.parentStartTime,this.computedDuration=t!=null&&t.computedDuration?Math.min(this._startTime+this.duration,t.endTime)-this._startTime:this.duration,this._currentTime=this.timelineCurrentTime-this._startTime,this.emit("updateCurrentTime",this._currentTime)}}_process(e){this._updateCurrentTime(),super._process(e)}},sr([_({default:0})],f.TimelineNode.prototype,"delay",2),sr([_({default:0})],f.TimelineNode.prototype,"duration",2),sr([_({default:!1})],f.TimelineNode.prototype,"paused",2),f.TimelineNode=sr([ae("TimelineNode")],f.TimelineNode);var sc=Object.defineProperty,nc=Object.getOwnPropertyDescriptor,Bi=(r,A,e,t)=>{for(var i=t>1?void 0:t?nc(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&sc(A,e,i),i};f.Viewport=class extends f.Node{constructor(e=!1){super();g(this,"_projection",new uo);g(this,"_framebufferIndex",0);g(this,"_framebuffers",[{texture:new ks,needsUpload:!1},{texture:new ks,needsUpload:!1}]);this.flipY=e,this._projection.flipY(e)}get valid(){return!!(this.width&&this.height)}get framebuffer(){return this._framebuffers[this._framebufferIndex]}get texture(){return this.framebuffer.texture}_glFramebufferOptions(e){const{width:t,height:i}=this,{pixelRatio:s}=e;return this._framebuffers.forEach(n=>{const o=n.texture;o.pixelRatio=s,o.width=t,o.height=i,o.upload(e)}),{width:t,height:i,colorTextures:[this.texture._glTexture(e)]}}_glFramebuffer(e){return e.getRelated(this.framebuffer,()=>e.framebuffer.create(this._glFramebufferOptions(e)))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"x":case"y":this.requestUpload(),this._projection.translate(this.x,this.y),this.emit("updateRect");break;case"width":case"height":this.requestUpload(),this._projection.resize(this.width,this.height),this.emit("updateRect");break}}requestUpload(){this._framebuffers.forEach(e=>e.needsUpload=!0)}resize(e,t){this.width=e,this.height=t}upload(e){const t=this.framebuffer;return t.needsUpload&&this.valid?(t.needsUpload=!1,e.framebuffer.update(this._glFramebuffer(e),this._glFramebufferOptions(e)),!0):!1}activate(e){var t;return this.valid?(e.flush(),(t=this._tree)==null||t.setCurrentViewport(this),e.framebuffer.bind(this._glFramebuffer(e)),this.upload(e),!0):!1}redraw(e,t){if(this.valid){e.flush();const i=this.framebuffer.texture;return this._framebufferIndex=(this._framebufferIndex+1)%this._framebuffers.length,this.activate(e),e.clear(),i.activate(e,0),t(),!0}return!1}activateWithCopy(e,t){this.resize(t.width,t.height),this.activate(e)&&(e.clear(),t.texture.activate(e,0),Ie.draw(e,LA.instance,{sampler:0}))}render(e,t){var s,n;const i=(s=this._tree)==null?void 0:s.getCurrentViewport();this.activate(e),e.clear(),super.render(e,t),e.flush(),i?i.activate(e):(e.framebuffer.bind(null),(n=this._tree)==null||n.setCurrentViewport(void 0))}getRect(){return new hi(this.x,this.y,this.width,this.height)}toProjectionArray(e=!1){return this._projection.toArray(e)}},Bi([_({default:0})],f.Viewport.prototype,"x",2),Bi([_({default:0})],f.Viewport.prototype,"y",2),Bi([_({default:0})],f.Viewport.prototype,"width",2),Bi([_({default:0})],f.Viewport.prototype,"height",2),f.Viewport=Bi([ae("Viewport")],f.Viewport);var oc=Object.defineProperty,ac=Object.getOwnPropertyDescriptor,Ei=(r,A,e,t)=>{for(var i=t>1?void 0:t?ac(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&oc(A,e,i),i};f.Effect=class extends f.TimelineNode{constructor(e,t=[]){super();g(this,"viewport1",new f.Viewport);g(this,"viewport2",new f.Viewport);g(this,"_renderId",0);g(this,"_renderViewport");g(this,"_previousSibling");g(this,"_nextSibling");this._onProcessing=this._onProcessing.bind(this),this._onNodeProcessed=this._onNodeProcessed.bind(this),this.setProperties(e).append(t)}get _effectMode(){return this.effectMode??"parent"}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"glsl":{const n=new rr(t);!this.effectMode&&n.has.transition&&(this.effectMode="transition"),this.material=n;break}case"glslSrc":{t?Ot.text.load(t).then(n=>this.glsl=n):this.glsl="";break}}}_treeEnter(e){e.on("processing",this._onProcessing),e.on("nodeProcessed",this._onNodeProcessed),this.viewport1.setTree(e),this.viewport2.setTree(e)}_treeExit(e){e.off("processing",this._onProcessing),e.off("nodeProcessed",this._onNodeProcessed),this.viewport1.setTree(void 0),this.viewport2.setTree(void 0)}_onProcessing(){switch(this._updateCurrentTime(),this._effectMode){case"transition":this._previousSibling=this.previousSibling,this._nextSibling=this.nextSibling;break;default:this._previousSibling=void 0,this._nextSibling=void 0;break}}_onNodeProcessed(e){var i;if(!this.isInsideTimeRange())return;const t=(i=this._tree)==null?void 0:i.renderStack;if(t)switch(this._effectMode){case"transition":e.is(this._previousSibling)?(this._previousSibling=void 0,t.push(this)):e.is(this._nextSibling)&&(this._nextSibling=void 0,t.push(this));break}}_processParent(){var o,a;const e=(o=this._tree)==null?void 0:o.renderStack;if(!e)return;const t=(a=e.currentCall)==null?void 0:a.parentCall;if(!t)return;const i=t.calls;let s,n;i.forEach((l,h)=>{var c;(l.renderable.is(this._parent)||(c=l.renderable.parent)!=null&&c.is(this._parent))&&(s=s??h,n=h)}),!(s===void 0||n===void 0)&&(i.splice(n+1,0,e.createCall(this)),i.splice(s,0,e.createCall(this)))}_processChildren(){var e;this._children.length&&(super.emit("process"),(e=this._tree)==null||e.renderStack.push(this))}_onProcess(e=0){if(this.canProcess())switch(this._renderId=0,this._effectMode){case"before":super._onProcess(e);break;case"parent":this._processParent();break;case"children":this._processChildren();break}}_renderBefore(e){var i;const t=(i=this._tree)==null?void 0:i.getCurrentViewport();t&&this.apply(e,t,{redraw:!0})}_renderTransition(e){var t;if(this._renderId%2===0)this._renderViewport=(t=this._tree)==null?void 0:t.getCurrentViewport(),this._renderViewport&&(this.viewport1.activateWithCopy(e,this._renderViewport),this.viewport2.resize(this._renderViewport.width,this._renderViewport.height)),this.viewport2.activate(e),e.clear();else{const i=this._renderViewport;this._renderViewport=void 0,i&&(i.activate(e),e.clear(),this.viewport1.texture.activate(e,0),this.viewport2.texture.activate(e,1),this.apply(e,i,{from:this.viewport1,to:this.viewport2}),e.texture.unbind(0),e.texture.unbind(1))}}_renderParentOrChildren(e){var t;if(this._renderId%2===0)this._renderViewport=(t=this._tree)==null?void 0:t.getCurrentViewport(),this._renderViewport&&this.viewport1.resize(this._renderViewport.width,this._renderViewport.height),this.viewport1.activate(e),e.clear();else{const i=this._renderViewport;this._renderViewport=void 0,i&&(this.viewport1.activate(e),this.apply(e,this.viewport1,{redraw:!0,target:this._effectMode==="parent"?this._parent??void 0:void 0,targetArea:this._parseTargetArea()}),i.activate(e),this.viewport1.texture.activate(e,0),Ie.draw(e))}}_parseTargetArea(){if(this._effectMode==="parent"&&this._parent&&"getRect"in this._parent){const e=this._parent.getRect();if(e)return[e.left/this.viewport1.width,e.top/this.viewport1.height,e.width/this.viewport1.width,e.height/this.viewport1.height]}}_render(e){switch(this._effectMode){case"before":this._renderBefore(e);break;case"transition":this._renderTransition(e);break;case"parent":case"children":default:this._renderParentOrChildren(e);break}this._renderId++}apply(e,t,i){this.material&&(i!=null&&i.redraw?t.redraw(e,()=>{Ie.draw(e,this.material,{from:0,to:1,progress:this.currentTimeProgress,ratio:t.width/t.height})}):Ie.draw(e,this.material,{from:0,to:1,progress:this.currentTimeProgress,ratio:i!=null&&i.from?i.from.width/i.from.height:0}))}},Ei([Me()],f.Effect.prototype,"material",2),Ei([_()],f.Effect.prototype,"effectMode",2),Ei([_({default:""})],f.Effect.prototype,"glsl",2),Ei([_({default:""})],f.Effect.prototype,"glslSrc",2),f.Effect=Ei([ae("Effect")],f.Effect);var ca=Object.defineProperty,lc=Object.getOwnPropertyDescriptor,hc=(r,A,e)=>A in r?ca(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,Ns=(r,A,e,t)=>{for(var i=t>1?void 0:t?lc(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ca(A,e,i),i},ua=(r,A,e)=>hc(r,typeof A!="symbol"?A+"":A,e);const gc=`attribute vec2 position;
106
106
  attribute vec2 uv;
107
107
  varying vec2 vUv[9];
108
108
  uniform float strength;
package/dist/index.mjs CHANGED
@@ -465,6 +465,9 @@ class CoreObject extends EventEmitter {
465
465
  _changedProperties = /* @__PURE__ */ new Set();
466
466
  _updatingPromise = Promise.resolve();
467
467
  _updating = false;
468
+ is(target) {
469
+ return Boolean(target && this.instanceId === target.instanceId);
470
+ }
468
471
  async _enqueueUpdate() {
469
472
  this._updating = true;
470
473
  try {
@@ -2224,7 +2227,7 @@ class MainLoop extends CoreObject {
2224
2227
  start(process) {
2225
2228
  if (!this._starting) {
2226
2229
  this._starting = true;
2227
- this.removeAllListeners();
2230
+ this.off("process");
2228
2231
  this.on("process", process);
2229
2232
  Ticker.on(this._onNextTick, { sort: 0 });
2230
2233
  }
@@ -5923,7 +5926,7 @@ let Node = class extends CoreObject {
5923
5926
  }
5924
5927
  setTree(tree) {
5925
5928
  const oldTree = this._tree;
5926
- if (tree !== oldTree) {
5929
+ if (!tree?.is(oldTree)) {
5927
5930
  if (oldTree) {
5928
5931
  this.emit("treeExit", oldTree);
5929
5932
  }
@@ -6255,9 +6258,6 @@ let Node = class extends CoreObject {
6255
6258
  });
6256
6259
  return this;
6257
6260
  }
6258
- is(target) {
6259
- return Boolean(target && this.instanceId === target.instanceId);
6260
- }
6261
6261
  /** override */
6262
6262
  _ready() {
6263
6263
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "modern-canvas",
3
3
  "type": "module",
4
- "version": "0.3.1",
4
+ "version": "0.3.2",
5
5
  "packageManager": "pnpm@9.15.1",
6
6
  "description": "A JavaScript WebGL rendering engine.",
7
7
  "author": "wxm",