@pooder/kit 5.3.0 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/index.d.mts +249 -36
  3. package/dist/index.d.ts +249 -36
  4. package/dist/index.js +2374 -1049
  5. package/dist/index.mjs +2375 -1050
  6. package/package.json +1 -1
  7. package/src/extensions/background.ts +178 -85
  8. package/src/extensions/dieline.ts +1149 -1030
  9. package/src/extensions/dielineShape.ts +109 -0
  10. package/src/extensions/feature.ts +482 -366
  11. package/src/extensions/film.ts +148 -76
  12. package/src/extensions/geometry.ts +210 -44
  13. package/src/extensions/image.ts +244 -114
  14. package/src/extensions/ruler.ts +471 -268
  15. package/src/extensions/sceneLayoutModel.ts +28 -6
  16. package/src/extensions/sceneVisibility.ts +3 -10
  17. package/src/extensions/tracer.ts +1019 -980
  18. package/src/extensions/white-ink.ts +284 -231
  19. package/src/services/CanvasService.ts +543 -11
  20. package/src/services/renderSpec.ts +37 -2
  21. package/.test-dist/src/CanvasService.js +0 -249
  22. package/.test-dist/src/ViewportSystem.js +0 -75
  23. package/.test-dist/src/background.js +0 -203
  24. package/.test-dist/src/bridgeSelection.js +0 -20
  25. package/.test-dist/src/constraints.js +0 -237
  26. package/.test-dist/src/coordinate.js +0 -74
  27. package/.test-dist/src/dieline.js +0 -818
  28. package/.test-dist/src/edgeScale.js +0 -12
  29. package/.test-dist/src/extensions/background.js +0 -203
  30. package/.test-dist/src/extensions/bridgeSelection.js +0 -20
  31. package/.test-dist/src/extensions/constraints.js +0 -237
  32. package/.test-dist/src/extensions/dieline.js +0 -828
  33. package/.test-dist/src/extensions/edgeScale.js +0 -12
  34. package/.test-dist/src/extensions/feature.js +0 -825
  35. package/.test-dist/src/extensions/featureComplete.js +0 -32
  36. package/.test-dist/src/extensions/film.js +0 -167
  37. package/.test-dist/src/extensions/geometry.js +0 -545
  38. package/.test-dist/src/extensions/image.js +0 -1529
  39. package/.test-dist/src/extensions/index.js +0 -30
  40. package/.test-dist/src/extensions/maskOps.js +0 -279
  41. package/.test-dist/src/extensions/mirror.js +0 -104
  42. package/.test-dist/src/extensions/ruler.js +0 -345
  43. package/.test-dist/src/extensions/sceneLayout.js +0 -96
  44. package/.test-dist/src/extensions/sceneLayoutModel.js +0 -196
  45. package/.test-dist/src/extensions/sceneVisibility.js +0 -62
  46. package/.test-dist/src/extensions/size.js +0 -331
  47. package/.test-dist/src/extensions/tracer.js +0 -538
  48. package/.test-dist/src/extensions/white-ink.js +0 -1190
  49. package/.test-dist/src/extensions/wrappedOffsets.js +0 -33
  50. package/.test-dist/src/feature.js +0 -826
  51. package/.test-dist/src/featureComplete.js +0 -32
  52. package/.test-dist/src/film.js +0 -167
  53. package/.test-dist/src/geometry.js +0 -506
  54. package/.test-dist/src/image.js +0 -1250
  55. package/.test-dist/src/index.js +0 -18
  56. package/.test-dist/src/maskOps.js +0 -270
  57. package/.test-dist/src/mirror.js +0 -104
  58. package/.test-dist/src/renderSpec.js +0 -2
  59. package/.test-dist/src/ruler.js +0 -343
  60. package/.test-dist/src/sceneLayout.js +0 -99
  61. package/.test-dist/src/sceneLayoutModel.js +0 -196
  62. package/.test-dist/src/sceneView.js +0 -40
  63. package/.test-dist/src/sceneVisibility.js +0 -42
  64. package/.test-dist/src/services/CanvasService.js +0 -249
  65. package/.test-dist/src/services/ViewportSystem.js +0 -76
  66. package/.test-dist/src/services/index.js +0 -24
  67. package/.test-dist/src/services/renderSpec.js +0 -2
  68. package/.test-dist/src/size.js +0 -332
  69. package/.test-dist/src/tracer.js +0 -544
  70. package/.test-dist/src/units.js +0 -30
  71. package/.test-dist/src/white-ink.js +0 -829
  72. package/.test-dist/src/wrappedOffsets.js +0 -33
  73. package/.test-dist/tests/run.js +0 -94
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @pooder/kit
2
2
 
3
+ ## 5.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - spec framework
8
+
9
+ ## 5.3.1
10
+
11
+ ### Patch Changes
12
+
13
+ - fix edge detection and expand
14
+
3
15
  ## 5.3.0
4
16
 
5
17
  ### Minor Changes
package/dist/index.d.mts CHANGED
@@ -9,6 +9,13 @@ declare class BackgroundTool implements Extension {
9
9
  private color;
10
10
  private url;
11
11
  private canvasService?;
12
+ private specs;
13
+ private renderProducerDisposable?;
14
+ private renderSeq;
15
+ private renderImageUrl;
16
+ private sourceSizeBySrc;
17
+ private pendingSizeBySrc;
18
+ private onCanvasResized;
12
19
  constructor(options?: Partial<{
13
20
  color: string;
14
21
  url: string;
@@ -19,8 +26,12 @@ declare class BackgroundTool implements Extension {
19
26
  [ContributionPointIds.CONFIGURATIONS]: ConfigurationContribution[];
20
27
  [ContributionPointIds.COMMANDS]: CommandContribution[];
21
28
  };
22
- private initLayer;
29
+ private getViewportSize;
30
+ private buildBackgroundSpecs;
31
+ private ensureImageSize;
32
+ private loadImageSize;
23
33
  private updateBackground;
34
+ private updateBackgroundAsync;
24
35
  }
25
36
 
26
37
  interface ImageItem {
@@ -54,6 +65,9 @@ declare class ImageTool implements Extension {
54
65
  private dirtyTrackerDisposable?;
55
66
  private cropShapeHatchPattern?;
56
67
  private cropShapeHatchPatternColor?;
68
+ private cropShapeHatchPatternKey?;
69
+ private overlaySpecs;
70
+ private renderProducerDisposable?;
57
71
  activate(context: ExtensionContext): void;
58
72
  deactivate(context: ExtensionContext): void;
59
73
  private onToolActivated;
@@ -97,6 +111,8 @@ declare class ImageTool implements Extension {
97
111
  private getConfig;
98
112
  private updateConfig;
99
113
  private getFrameRect;
114
+ private getFrameRectScreen;
115
+ private toLayoutSceneRect;
100
116
  private resolveDefaultFitArea;
101
117
  private fitImageToDefaultArea;
102
118
  private getImageObjects;
@@ -115,6 +131,8 @@ declare class ImageTool implements Extension {
115
131
  private buildCropShapeOverlaySpecs;
116
132
  private resolveRenderImageState;
117
133
  private computeCanvasProps;
134
+ private toScreenObjectProps;
135
+ private toSceneObjectScale;
118
136
  private getCurrentSrc;
119
137
  private applyImageControlVisibility;
120
138
  private upsertImageObject;
@@ -163,21 +181,12 @@ declare class SizeTool implements Extension {
163
181
  private getSelectedImageSize;
164
182
  }
165
183
 
166
- interface Point {
167
- x: number;
168
- y: number;
169
- }
170
- interface Size {
171
- width: number;
172
- height: number;
173
- }
174
- type Unit = "px" | "mm" | "cm" | "in";
175
- interface Layout {
176
- scale: number;
177
- offsetX: number;
178
- offsetY: number;
179
- width: number;
180
- height: number;
184
+ declare const DIELINE_SHAPES: readonly ["rect", "circle", "ellipse", "heart", "custom"];
185
+ type DielineShape = (typeof DIELINE_SHAPES)[number];
186
+ type ShapeFitMode = "contain" | "stretch";
187
+ interface DielineShapeStyle {
188
+ fitMode: ShapeFitMode;
189
+ [key: string]: unknown;
181
190
  }
182
191
 
183
192
  type FeatureOperation = "add" | "subtract";
@@ -203,9 +212,9 @@ interface DielineFeature {
203
212
  }
204
213
 
205
214
  interface DielineGeometry {
206
- shape: "rect" | "circle" | "ellipse" | "custom";
207
- unit: "mm";
208
- displayUnit: Unit;
215
+ shape: DielineShape;
216
+ shapeStyle: DielineShapeStyle;
217
+ unit: "px";
209
218
  x: number;
210
219
  y: number;
211
220
  width: number;
@@ -216,6 +225,8 @@ interface DielineGeometry {
216
225
  scale?: number;
217
226
  strokeWidth?: number;
218
227
  pathData?: string;
228
+ customSourceWidthPx?: number;
229
+ customSourceHeightPx?: number;
219
230
  }
220
231
  interface LineStyle {
221
232
  width: number;
@@ -224,8 +235,8 @@ interface LineStyle {
224
235
  style: "solid" | "dashed" | "hidden";
225
236
  }
226
237
  interface DielineState {
227
- displayUnit: Unit;
228
- shape: "rect" | "circle" | "ellipse" | "custom";
238
+ shape: DielineShape;
239
+ shapeStyle: DielineShapeStyle;
229
240
  width: number;
230
241
  height: number;
231
242
  radius: number;
@@ -238,6 +249,8 @@ interface DielineState {
238
249
  showBleedLines: boolean;
239
250
  features: DielineFeature[];
240
251
  pathData?: string;
252
+ customSourceWidthPx?: number;
253
+ customSourceHeightPx?: number;
241
254
  }
242
255
  declare class DielineTool implements Extension {
243
256
  id: string;
@@ -247,6 +260,9 @@ declare class DielineTool implements Extension {
247
260
  private state;
248
261
  private canvasService?;
249
262
  private context?;
263
+ private specs;
264
+ private renderSeq;
265
+ private renderProducerDisposable?;
250
266
  private onCanvasResized;
251
267
  constructor(options?: Partial<DielineState>);
252
268
  activate(context: ExtensionContext): void;
@@ -264,14 +280,14 @@ declare class DielineTool implements Extension {
264
280
  [ContributionPointIds.CONFIGURATIONS]: ConfigurationContribution[];
265
281
  [ContributionPointIds.COMMANDS]: CommandContribution[];
266
282
  };
267
- private getLayer;
268
- private createLayer;
269
- private destroyLayer;
270
283
  private createHatchPattern;
271
284
  private getConfigService;
272
285
  private syncSizeState;
273
286
  private bringFeatureMarkersToFront;
287
+ private ensureLayerStacking;
288
+ private buildDielineSpecs;
274
289
  updateDieline(_emitEvent?: boolean): void;
290
+ private updateDielineAsync;
275
291
  getGeometry(): DielineGeometry | null;
276
292
  exportCutImage(options?: {
277
293
  debug?: boolean;
@@ -300,6 +316,9 @@ declare class FeatureTool implements Extension {
300
316
  private sessionOriginalFeatures;
301
317
  private hasWorkingChanges;
302
318
  private dirtyTrackerDisposable?;
319
+ private renderProducerDisposable?;
320
+ private specs;
321
+ private renderSeq;
303
322
  private handleMoving;
304
323
  private handleModified;
305
324
  private handleSceneGeometryChange;
@@ -345,9 +364,25 @@ declare class FeatureTool implements Extension {
345
364
  private getGeometryForFeature;
346
365
  private setup;
347
366
  private teardown;
367
+ private getDraggableMarkerTarget;
368
+ private getFeatureForMarker;
348
369
  private constrainPosition;
370
+ private toNormalizedPoint;
349
371
  private syncFeatureFromCanvas;
372
+ private syncGroupFromCanvas;
350
373
  private redraw;
374
+ private redrawAsync;
375
+ private syncOverlayOrder;
376
+ private buildFeatureSpecs;
377
+ private appendMarkerSpecs;
378
+ private buildMarkerData;
379
+ private markerId;
380
+ private bridgeIndicatorId;
381
+ private toFeatureIndex;
382
+ private readGroupIndices;
383
+ private readGroupMemberOffsets;
384
+ private syncMarkerVisualsByTarget;
385
+ private syncMarkerVisualObjectsToCenter;
351
386
  private enforceConstraints;
352
387
  }
353
388
 
@@ -359,6 +394,13 @@ declare class FilmTool implements Extension {
359
394
  private url;
360
395
  private opacity;
361
396
  private canvasService?;
397
+ private specs;
398
+ private renderProducerDisposable?;
399
+ private renderSeq;
400
+ private renderImageUrl;
401
+ private sourceSizeBySrc;
402
+ private pendingSizeBySrc;
403
+ private onCanvasResized;
362
404
  constructor(options?: Partial<{
363
405
  url: string;
364
406
  opacity: number;
@@ -369,8 +411,13 @@ declare class FilmTool implements Extension {
369
411
  [ContributionPointIds.CONFIGURATIONS]: ConfigurationContribution[];
370
412
  [ContributionPointIds.COMMANDS]: CommandContribution[];
371
413
  };
372
- private initLayer;
414
+ private getViewportSize;
415
+ private clampOpacity;
416
+ private buildFilmSpecs;
417
+ private ensureImageSize;
418
+ private loadImageSize;
373
419
  private updateFilm;
420
+ private updateFilmAsync;
374
421
  }
375
422
 
376
423
  declare class MirrorTool implements Extension {
@@ -407,6 +454,10 @@ declare class RulerTool implements Extension {
407
454
  private textColor;
408
455
  private lineColor;
409
456
  private fontSize;
457
+ private renderSeq;
458
+ private readonly numericProps;
459
+ private specs;
460
+ private renderProducerDisposable?;
410
461
  private canvasService?;
411
462
  private context?;
412
463
  private onCanvasResized;
@@ -416,6 +467,7 @@ declare class RulerTool implements Extension {
416
467
  textColor: string;
417
468
  lineColor: string;
418
469
  fontSize: number;
470
+ gap: number;
419
471
  }>);
420
472
  activate(context: ExtensionContext): void;
421
473
  deactivate(context: ExtensionContext): void;
@@ -423,11 +475,19 @@ declare class RulerTool implements Extension {
423
475
  [ContributionPointIds.CONFIGURATIONS]: ConfigurationContribution[];
424
476
  [ContributionPointIds.COMMANDS]: CommandContribution[];
425
477
  };
426
- private getLayer;
427
- private createLayer;
428
- private destroyLayer;
429
- private createArrowLine;
478
+ private log;
479
+ private syncConfig;
480
+ private toFiniteNumber;
481
+ private toSceneDisplayLength;
482
+ private formatLengthMm;
483
+ private buildLinePath;
484
+ private buildStartArrowPath;
485
+ private buildEndArrowPath;
486
+ private createPathSpec;
487
+ private createTextSpec;
488
+ private buildRulerSpecs;
430
489
  private updateRuler;
490
+ private updateRulerAsync;
431
491
  }
432
492
 
433
493
  interface WhiteInkItem {
@@ -455,6 +515,10 @@ declare class WhiteInkTool implements Extension {
455
515
  private previewImageVisible;
456
516
  private renderSeq;
457
517
  private dirtyTrackerDisposable?;
518
+ private whiteSpecs;
519
+ private coverSpecs;
520
+ private overlaySpecs;
521
+ private renderProducerDisposable?;
458
522
  activate(context: ExtensionContext): void;
459
523
  deactivate(context: ExtensionContext): void;
460
524
  contribute(): {
@@ -505,6 +569,7 @@ declare class WhiteInkTool implements Extension {
505
569
  private clearWhiteInks;
506
570
  private completeWhiteInks;
507
571
  private getFrameRect;
572
+ private toLayoutSceneRect;
508
573
  private getImageObjects;
509
574
  private getPrimaryImageObject;
510
575
  private getPrimaryImageSource;
@@ -538,6 +603,22 @@ declare class WhiteInkTool implements Extension {
538
603
  private loadImageElement;
539
604
  }
540
605
 
606
+ interface Point {
607
+ x: number;
608
+ y: number;
609
+ }
610
+ interface Size {
611
+ width: number;
612
+ height: number;
613
+ }
614
+ interface Layout {
615
+ scale: number;
616
+ offsetX: number;
617
+ offsetY: number;
618
+ width: number;
619
+ height: number;
620
+ }
621
+
541
622
  declare class ViewportSystem {
542
623
  private _containerSize;
543
624
  private _physicalSize;
@@ -557,14 +638,44 @@ declare class ViewportSystem {
557
638
  toPhysicalPoint(point: Point): Point;
558
639
  }
559
640
 
560
- type RenderObjectType = "rect" | "image" | "path";
641
+ type RenderObjectType = "rect" | "image" | "path" | "text";
561
642
  type RenderProps = Record<string, any>;
643
+ type RenderCoordinateSpace = "scene" | "screen";
644
+ type RenderLayoutLength = number | string;
645
+ type RenderLayoutAlign = "start" | "center" | "end";
646
+ type RenderLayoutReference = "sceneViewport" | "screenViewport" | "custom";
647
+ interface RenderLayoutInsets {
648
+ top?: RenderLayoutLength;
649
+ right?: RenderLayoutLength;
650
+ bottom?: RenderLayoutLength;
651
+ left?: RenderLayoutLength;
652
+ }
653
+ interface RenderLayoutRect {
654
+ left: number;
655
+ top: number;
656
+ width: number;
657
+ height: number;
658
+ space?: RenderCoordinateSpace;
659
+ }
660
+ interface RenderObjectLayoutSpec {
661
+ reference?: RenderLayoutReference;
662
+ referenceRect?: RenderLayoutRect;
663
+ inset?: RenderLayoutLength | RenderLayoutInsets;
664
+ alignX?: RenderLayoutAlign;
665
+ alignY?: RenderLayoutAlign;
666
+ offsetX?: RenderLayoutLength;
667
+ offsetY?: RenderLayoutLength;
668
+ width?: RenderLayoutLength;
669
+ height?: RenderLayoutLength;
670
+ }
562
671
  interface RenderObjectSpec {
563
672
  id: string;
564
673
  type: RenderObjectType;
565
674
  props: RenderProps;
566
675
  data?: Record<string, any>;
567
676
  src?: string;
677
+ space?: RenderCoordinateSpace;
678
+ layout?: RenderObjectLayoutSpec;
568
679
  }
569
680
  interface RenderLayerSpec {
570
681
  id: string;
@@ -572,14 +683,48 @@ interface RenderLayerSpec {
572
683
  props?: RenderProps;
573
684
  }
574
685
 
686
+ interface RenderProducerResult {
687
+ layerSpecs?: Record<string, RenderObjectSpec[]>;
688
+ rootLayerSpecs?: Record<string, RenderObjectSpec[]>;
689
+ replaceLayerIds?: string[];
690
+ replaceRootLayerIds?: string[];
691
+ }
692
+ type RenderProducer = () => RenderProducerResult | undefined | Promise<RenderProducerResult | undefined>;
693
+ interface RegisterRenderProducerOptions {
694
+ priority?: number;
695
+ }
696
+ interface RectLike {
697
+ left: number;
698
+ top: number;
699
+ width: number;
700
+ height: number;
701
+ }
575
702
  declare class CanvasService implements Service {
576
703
  canvas: Canvas;
577
704
  viewport: ViewportSystem;
578
705
  private eventBus?;
706
+ private renderProducers;
707
+ private producerOrder;
708
+ private producerFlushRequested;
709
+ private producerLoopPending;
710
+ private producerLoopPromise;
711
+ private managedProducerLayerIds;
712
+ private managedProducerRootLayerIds;
579
713
  constructor(el: HTMLCanvasElement | string | Canvas, options?: any);
580
714
  setEventBus(eventBus: EventBus): void;
581
715
  private setupEvents;
582
716
  dispose(): void;
717
+ registerRenderProducer(toolId: string, producer: RenderProducer, options?: RegisterRenderProducerOptions): {
718
+ dispose: () => void;
719
+ };
720
+ unregisterRenderProducer(toolId: string): boolean;
721
+ requestRenderFromProducers(): void;
722
+ flushRenderFromProducers(): Promise<void>;
723
+ private scheduleProducerLoop;
724
+ private runProducerLoop;
725
+ private sortedRenderProducerEntries;
726
+ private appendLayerSpecMap;
727
+ private collectAndApplyProducerSpecs;
583
728
  /**
584
729
  * Get a layer (Group) by its ID.
585
730
  * We assume layers are Groups directly on the canvas with a data.id property.
@@ -595,12 +740,78 @@ declare class CanvasService implements Service {
595
740
  getObject(id: string, layerId?: string): FabricObject | undefined;
596
741
  requestRenderAll(): void;
597
742
  resize(width: number, height: number): void;
743
+ getSceneScale(): number;
744
+ getSceneOffset(): {
745
+ x: number;
746
+ y: number;
747
+ };
748
+ toScreenPoint(point: {
749
+ x: number;
750
+ y: number;
751
+ }): {
752
+ x: number;
753
+ y: number;
754
+ };
755
+ toScenePoint(point: {
756
+ x: number;
757
+ y: number;
758
+ }): {
759
+ x: number;
760
+ y: number;
761
+ };
762
+ toScreenLength(value: number): number;
763
+ toSceneLength(value: number): number;
764
+ toScreenRect(rect: {
765
+ left: number;
766
+ top: number;
767
+ width: number;
768
+ height: number;
769
+ }): {
770
+ left: number;
771
+ top: number;
772
+ width: number;
773
+ height: number;
774
+ };
775
+ toSceneRect(rect: {
776
+ left: number;
777
+ top: number;
778
+ width: number;
779
+ height: number;
780
+ }): {
781
+ left: number;
782
+ top: number;
783
+ width: number;
784
+ height: number;
785
+ };
786
+ getSceneViewportRect(): {
787
+ left: number;
788
+ top: number;
789
+ width: number;
790
+ height: number;
791
+ };
792
+ getScreenViewportRect(): RectLike;
793
+ private toSpaceRect;
794
+ private resolveLayoutLength;
795
+ private resolveLayoutInsets;
796
+ private resolveLayoutReferenceRect;
797
+ private alignFactor;
798
+ private normalizeOriginX;
799
+ private normalizeOriginY;
800
+ private originFactor;
801
+ private resolveLayoutProps;
802
+ setLayerVisibility(layerId: string, visible: boolean): void;
803
+ bringLayerToFront(layerId: string): void;
598
804
  applyLayerSpec(spec: RenderLayerSpec): Promise<void>;
599
- applyObjectSpecsToLayer(layerId: string, objects: RenderObjectSpec[]): Promise<void>;
805
+ applyObjectSpecsToLayer(layerId: string, objects: RenderObjectSpec[], options?: {
806
+ render?: boolean;
807
+ }): Promise<void>;
600
808
  getRootLayerObjects(layerId: string): FabricObject[];
601
- applyObjectSpecsToRootLayer(layerId: string, specs: RenderObjectSpec[]): Promise<void>;
809
+ applyObjectSpecsToRootLayer(layerId: string, specs: RenderObjectSpec[], options?: {
810
+ render?: boolean;
811
+ }): Promise<void>;
602
812
  private applyObjectSpecsToContainer;
603
813
  private patchFabricObject;
814
+ private resolveFabricProps;
604
815
  private moveObjectInContainer;
605
816
  private createFabricObject;
606
817
  }
@@ -629,9 +840,9 @@ interface SceneLayoutSnapshot {
629
840
  cutMarginMm: number;
630
841
  }
631
842
  interface SceneGeometrySnapshot {
632
- shape: "rect" | "circle" | "ellipse" | "custom";
633
- unit: "mm";
634
- displayUnit: Unit;
843
+ shape: DielineShape;
844
+ shapeStyle: DielineShapeStyle;
845
+ unit: "px";
635
846
  x: number;
636
847
  y: number;
637
848
  width: number;
@@ -640,6 +851,8 @@ interface SceneGeometrySnapshot {
640
851
  offset: number;
641
852
  scale: number;
642
853
  pathData?: string;
854
+ customSourceWidthPx?: number;
855
+ customSourceHeightPx?: number;
643
856
  }
644
857
 
645
858
  declare class SceneLayoutService implements Service {
@@ -670,4 +883,4 @@ declare class SceneVisibilityService implements Service {
670
883
  private apply;
671
884
  }
672
885
 
673
- export { BackgroundTool, CanvasService, type DielineGeometry, type DielineState, DielineTool, FeatureTool, FilmTool, type ImageItem, ImageTool, type LineStyle, MirrorTool, type RenderLayerSpec, type RenderObjectSpec, type RenderObjectType, type RenderProps, RulerTool, SceneLayoutService, SceneVisibilityService, SizeTool, ViewportSystem, type WhiteInkItem, WhiteInkTool };
886
+ export { BackgroundTool, CanvasService, type DielineGeometry, type DielineState, DielineTool, FeatureTool, FilmTool, type ImageItem, ImageTool, type LineStyle, MirrorTool, type RenderCoordinateSpace, type RenderLayerSpec, type RenderLayoutAlign, type RenderLayoutInsets, type RenderLayoutLength, type RenderLayoutRect, type RenderLayoutReference, type RenderObjectLayoutSpec, type RenderObjectSpec, type RenderObjectType, type RenderProps, RulerTool, SceneLayoutService, SceneVisibilityService, SizeTool, ViewportSystem, type WhiteInkItem, WhiteInkTool };