pixi-watchface-engine 0.1.1 → 0.1.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.
@@ -5,6 +5,7 @@ import { ZOrderManager } from './managers/ZOrderManager.ts';
5
5
  import { SerializationManager } from './managers/SerializationManager.ts';
6
6
  import { SelectionManager } from './selection/SelectionManager.ts';
7
7
  import { PluginManager } from './plugins/PluginManager.ts';
8
+ import type { CoordinateOrigin } from './types.ts';
8
9
  export interface WatchfaceEngineOptions {
9
10
  width: number;
10
11
  height: number;
@@ -12,6 +13,13 @@ export interface WatchfaceEngineOptions {
12
13
  selectionHandleColor?: number;
13
14
  selectionHandleFillColor?: number;
14
15
  selectionHandleSize?: number;
16
+ /**
17
+ * Where (0, 0) is placed on the canvas.
18
+ * - `'top-left'` (default) — standard screen coordinates.
19
+ * - `'center'` — origin is the center of the canvas; useful for watchface
20
+ * layouts where elements are positioned relative to the watch center.
21
+ */
22
+ coordinateOrigin?: CoordinateOrigin;
15
23
  }
16
24
  export declare class WatchfaceEngine {
17
25
  readonly app: Application;
@@ -25,6 +33,12 @@ export declare class WatchfaceEngine {
25
33
  private elementsLayer;
26
34
  private selectionLayer;
27
35
  private overlayLayer;
36
+ /**
37
+ * Single container that holds all four layers. Plugins (e.g. ViewportPlugin)
38
+ * should move this container rather than individual layers.
39
+ * @internal
40
+ */
41
+ private _contentRoot;
28
42
  private interaction;
29
43
  private _options;
30
44
  private _initialized;
@@ -34,6 +48,16 @@ export declare class WatchfaceEngine {
34
48
  init(container: HTMLDivElement, options: WatchfaceEngineOptions): Promise<void>;
35
49
  get options(): Readonly<WatchfaceEngineOptions>;
36
50
  get initialized(): boolean;
51
+ /**
52
+ * The offset applied to the content root based on `coordinateOrigin`.
53
+ * `{ x: 0, y: 0 }` for `'top-left'`, `{ x: width/2, y: height/2 }` for `'center'`.
54
+ */
55
+ get originOffset(): {
56
+ x: number;
57
+ y: number;
58
+ };
59
+ /** The container that holds all layers. Plugins should add this to viewports. */
60
+ getContentRoot(): Container;
37
61
  getBackgroundLayer(): Container;
38
62
  getElementsLayer(): Container;
39
63
  getSelectionLayer(): Container;
@@ -1 +1 @@
1
- {"version":3,"file":"WatchfaceEngine.d.ts","sourceRoot":"","sources":["../src/WatchfaceEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,eAAe;IAC1B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAE/B,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,WAAW,CAAqB;IAExC,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,YAAY,CAAS;IAE7B,qFAAqF;IACrF,gBAAgB,UAAS;;IAqBnB,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CrF,IAAI,OAAO,IAAI,QAAQ,CAAC,sBAAsB,CAAC,CAE9C;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,kBAAkB,IAAI,SAAS;IAI/B,gBAAgB,IAAI,SAAS;IAI7B,iBAAiB,IAAI,SAAS;IAI9B,eAAe,IAAI,SAAS;IAI5B,OAAO,IAAI,IAAI;CAUhB"}
1
+ {"version":3,"file":"WatchfaceEngine.d.ts","sourceRoot":"","sources":["../src/WatchfaceEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAgB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,qBAAa,eAAe;IAC1B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAE/B,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,YAAY,CAAa;IAEjC;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAa;IAEjC,OAAO,CAAC,WAAW,CAAqB;IAExC,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,YAAY,CAAS;IAE7B,qFAAqF;IACrF,gBAAgB,UAAS;;IAqBnB,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuDrF,IAAI,OAAO,IAAI,QAAQ,CAAC,sBAAsB,CAAC,CAE9C;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;OAGG;IACH,IAAI,YAAY,IAAI;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAK3C;IAED,iFAAiF;IACjF,cAAc,IAAI,SAAS;IAI3B,kBAAkB,IAAI,SAAS;IAI/B,gBAAgB,IAAI,SAAS;IAI7B,iBAAiB,IAAI,SAAS;IAI9B,eAAe,IAAI,SAAS;IAI5B,OAAO,IAAI,IAAI;CAUhB"}
package/dist/index.d.ts CHANGED
@@ -22,7 +22,7 @@ export { ElementManager } from './managers/ElementManager.ts';
22
22
  export { ZOrderManager } from './managers/ZOrderManager.ts';
23
23
  export { SelectionManager } from './selection/SelectionManager.ts';
24
24
  export { SerializationManager } from './managers/SerializationManager.ts';
25
- export type { FillDirection, ShapeType, ElementType, SerializedElement, WatchfaceState, UndoableAction, HandleConfig, Bounds, } from './types.ts';
25
+ export type { FillDirection, ShapeType, ElementType, CoordinateOrigin, SerializedElement, WatchfaceState, UndoableAction, HandleConfig, Bounds, } from './types.ts';
26
26
  export { EventBus } from './EventBus.ts';
27
27
  export type { EngineEventMap } from './EventBus.ts';
28
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAG1E,YAAY,EACV,aAAa,EACb,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,MAAM,GACP,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAG1E,YAAY,EACV,aAAa,EACb,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,MAAM,GACP,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -34676,6 +34676,7 @@ class WatchfaceEngine {
34676
34676
  elementsLayer;
34677
34677
  selectionLayer;
34678
34678
  overlayLayer;
34679
+ _contentRoot;
34679
34680
  interaction;
34680
34681
  _options;
34681
34682
  _initialized = false;
@@ -34703,12 +34704,18 @@ class WatchfaceEngine {
34703
34704
  autoDensity: true
34704
34705
  });
34705
34706
  container.appendChild(this.app.canvas);
34707
+ this._contentRoot = new Container;
34708
+ if (options.coordinateOrigin === "center") {
34709
+ this._contentRoot.x = options.width / 2;
34710
+ this._contentRoot.y = options.height / 2;
34711
+ }
34706
34712
  this.backgroundLayer = new Container;
34707
34713
  this.elementsLayer = new Container;
34708
34714
  this.elementsLayer.sortableChildren = true;
34709
34715
  this.selectionLayer = new Container;
34710
34716
  this.overlayLayer = new Container;
34711
- this.app.stage.addChild(this.backgroundLayer, this.elementsLayer, this.selectionLayer, this.overlayLayer);
34717
+ this._contentRoot.addChild(this.backgroundLayer, this.elementsLayer, this.selectionLayer, this.overlayLayer);
34718
+ this.app.stage.addChild(this._contentRoot);
34712
34719
  this.app.stage.eventMode = "static";
34713
34720
  this.app.stage.hitArea = this.app.screen;
34714
34721
  this.elements._setLayer(this.elementsLayer);
@@ -34729,6 +34736,15 @@ class WatchfaceEngine {
34729
34736
  get initialized() {
34730
34737
  return this._initialized;
34731
34738
  }
34739
+ get originOffset() {
34740
+ if (this._options?.coordinateOrigin === "center") {
34741
+ return { x: this._options.width / 2, y: this._options.height / 2 };
34742
+ }
34743
+ return { x: 0, y: 0 };
34744
+ }
34745
+ getContentRoot() {
34746
+ return this._contentRoot;
34747
+ }
34732
34748
  getBackgroundLayer() {
34733
34749
  return this.backgroundLayer;
34734
34750
  }
@@ -36514,16 +36530,9 @@ class ViewportPlugin {
36514
36530
  this._viewport.wheel({ smooth: 3 });
36515
36531
  if (this.options.decelerate)
36516
36532
  this._viewport.decelerate();
36517
- const layers = [
36518
- engine.getBackgroundLayer(),
36519
- engine.getElementsLayer(),
36520
- engine.getSelectionLayer(),
36521
- engine.getOverlayLayer()
36522
- ];
36523
- for (const layer of layers) {
36524
- layer.parent?.removeChild(layer);
36525
- this._viewport.addChild(layer);
36526
- }
36533
+ const contentRoot = engine.getContentRoot();
36534
+ contentRoot.parent?.removeChild(contentRoot);
36535
+ this._viewport.addChild(contentRoot);
36527
36536
  app.stage.addChildAt(this._viewport, 0);
36528
36537
  this._viewport.on("zoomed", () => {
36529
36538
  this.engine.eventBus.emit("viewport:zoomed", { zoom: this._viewport.scale.x });
@@ -36539,16 +36548,9 @@ class ViewportPlugin {
36539
36548
  if (!this._viewport)
36540
36549
  return;
36541
36550
  const { app } = this.engine;
36542
- const layers = [
36543
- this.engine.getBackgroundLayer(),
36544
- this.engine.getElementsLayer(),
36545
- this.engine.getSelectionLayer(),
36546
- this.engine.getOverlayLayer()
36547
- ];
36548
- for (const layer of layers) {
36549
- this._viewport.removeChild(layer);
36550
- app.stage.addChild(layer);
36551
- }
36551
+ const contentRoot = this.engine.getContentRoot();
36552
+ this._viewport.removeChild(contentRoot);
36553
+ app.stage.addChild(contentRoot);
36552
36554
  this._viewport.destroy();
36553
36555
  }
36554
36556
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ViewportPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/ViewportPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAaD,qBAAa,cAAe,YAAW,MAAM;IAC3C,QAAQ,CAAC,IAAI,cAAc;IAE3B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAY;gBAEjB,OAAO,CAAC,EAAE,qBAAqB;IAI3C,2DAA2D;IAC3D,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAKrB;IAED,IAAI,IAAI,IAAI,OAAO,CAA8B;IACjD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAQtB;IAED,IAAI,KAAK,IAAI,OAAO,CAA+B;IACnD,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,EAQvB;IAED,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IA4DnC,OAAO,IAAI,IAAI;CAoBhB"}
1
+ {"version":3,"file":"ViewportPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/ViewportPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAaD,qBAAa,cAAe,YAAW,MAAM;IAC3C,QAAQ,CAAC,IAAI,cAAc;IAE3B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAY;gBAEjB,OAAO,CAAC,EAAE,qBAAqB;IAI3C,2DAA2D;IAC3D,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAKrB;IAED,IAAI,IAAI,IAAI,OAAO,CAA8B;IACjD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAQtB;IAED,IAAI,KAAK,IAAI,OAAO,CAA+B;IACnD,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,EAQvB;IAED,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAmDnC,OAAO,IAAI,IAAI;CAWhB"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,9 @@
1
1
  export type FillDirection = 'left-to-right' | 'right-to-left' | 'top-to-bottom' | 'bottom-to-top';
2
+ /** Where (0, 0) is placed on the canvas.
3
+ * - `'top-left'` — default; origin is the top-left corner.
4
+ * - `'center'` — origin is the center of the canvas.
5
+ */
6
+ export type CoordinateOrigin = 'top-left' | 'center';
2
7
  export type ShapeType = 'line' | 'circle' | 'rectangle' | 'arc';
3
8
  export type ElementType = 'text' | 'image' | 'shape';
4
9
  export interface SerializedElement {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,CAAC;AAElG,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;AAEhE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,IAAI,IAAI,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,CAAC;AAElG;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAErD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;AAEhE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,IAAI,IAAI,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixi-watchface-engine",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "A PixiJS v8 watchface editor engine with visual editor, plugin system, and intuitive API",
5
5
  "author": "Eric Schmar (ericschmar@gmail.com)",
6
6
  "type": "module",