@pooder/kit 6.0.0 → 6.1.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 (99) hide show
  1. package/.test-dist/src/extensions/background/BackgroundTool.js +524 -0
  2. package/.test-dist/src/extensions/background/index.js +17 -0
  3. package/.test-dist/src/extensions/background.js +1 -1
  4. package/.test-dist/src/extensions/dieline/DielineTool.js +748 -0
  5. package/.test-dist/src/extensions/dieline/commands.js +127 -0
  6. package/.test-dist/src/extensions/dieline/config.js +107 -0
  7. package/.test-dist/src/extensions/dieline/index.js +21 -0
  8. package/.test-dist/src/extensions/dieline/model.js +2 -0
  9. package/.test-dist/src/extensions/dieline/renderer.js +2 -0
  10. package/.test-dist/src/extensions/dieline.js +4 -0
  11. package/.test-dist/src/extensions/feature/FeatureTool.js +914 -0
  12. package/.test-dist/src/extensions/feature/index.js +17 -0
  13. package/.test-dist/src/extensions/film/FilmTool.js +207 -0
  14. package/.test-dist/src/extensions/film/index.js +17 -0
  15. package/.test-dist/src/extensions/image/ImageTool.js +1499 -0
  16. package/.test-dist/src/extensions/image/commands.js +162 -0
  17. package/.test-dist/src/extensions/image/config.js +129 -0
  18. package/.test-dist/src/extensions/image/index.js +21 -0
  19. package/.test-dist/src/extensions/image/model.js +2 -0
  20. package/.test-dist/src/extensions/image/renderer.js +5 -0
  21. package/.test-dist/src/extensions/image.js +182 -7
  22. package/.test-dist/src/extensions/mirror/MirrorTool.js +104 -0
  23. package/.test-dist/src/extensions/mirror/index.js +17 -0
  24. package/.test-dist/src/extensions/ruler/RulerTool.js +442 -0
  25. package/.test-dist/src/extensions/ruler/index.js +17 -0
  26. package/.test-dist/src/extensions/sceneLayout.js +2 -93
  27. package/.test-dist/src/extensions/sceneLayoutModel.js +15 -200
  28. package/.test-dist/src/extensions/size/SizeTool.js +332 -0
  29. package/.test-dist/src/extensions/size/index.js +17 -0
  30. package/.test-dist/src/extensions/white-ink/WhiteInkTool.js +1003 -0
  31. package/.test-dist/src/extensions/white-ink/commands.js +148 -0
  32. package/.test-dist/src/extensions/white-ink/config.js +31 -0
  33. package/.test-dist/src/extensions/white-ink/index.js +21 -0
  34. package/.test-dist/src/extensions/white-ink/model.js +2 -0
  35. package/.test-dist/src/extensions/white-ink/renderer.js +5 -0
  36. package/.test-dist/src/services/CanvasService.js +34 -13
  37. package/.test-dist/src/services/SceneLayoutService.js +96 -0
  38. package/.test-dist/src/services/index.js +1 -0
  39. package/.test-dist/src/services/visibility.js +3 -0
  40. package/.test-dist/src/shared/constants/layers.js +25 -0
  41. package/.test-dist/src/shared/imaging/sourceSizeCache.js +82 -0
  42. package/.test-dist/src/shared/index.js +22 -0
  43. package/.test-dist/src/shared/runtime/sessionState.js +74 -0
  44. package/.test-dist/src/shared/runtime/subscriptions.js +30 -0
  45. package/.test-dist/src/shared/scene/frame.js +34 -0
  46. package/.test-dist/src/shared/scene/sceneLayoutModel.js +202 -0
  47. package/.test-dist/tests/run.js +118 -0
  48. package/CHANGELOG.md +12 -0
  49. package/dist/index.d.mts +403 -366
  50. package/dist/index.d.ts +403 -366
  51. package/dist/index.js +5172 -4752
  52. package/dist/index.mjs +1410 -2027
  53. package/dist/tracer-PO7CRBYY.mjs +1016 -0
  54. package/package.json +1 -1
  55. package/src/extensions/{background.ts → background/BackgroundTool.ts} +33 -50
  56. package/src/extensions/background/index.ts +1 -0
  57. package/src/extensions/{dieline.ts → dieline/DielineTool.ts} +18 -218
  58. package/src/extensions/dieline/commands.ts +109 -0
  59. package/src/extensions/dieline/config.ts +106 -0
  60. package/src/extensions/dieline/index.ts +5 -0
  61. package/src/extensions/dieline/model.ts +1 -0
  62. package/src/extensions/dieline/renderer.ts +1 -0
  63. package/src/extensions/{feature.ts → feature/FeatureTool.ts} +27 -21
  64. package/src/extensions/feature/index.ts +1 -0
  65. package/src/extensions/{film.ts → film/FilmTool.ts} +36 -48
  66. package/src/extensions/film/index.ts +1 -0
  67. package/src/extensions/{image.ts → image/ImageTool.ts} +289 -335
  68. package/src/extensions/image/commands.ts +176 -0
  69. package/src/extensions/image/config.ts +128 -0
  70. package/src/extensions/image/index.ts +5 -0
  71. package/src/extensions/image/model.ts +1 -0
  72. package/src/extensions/image/renderer.ts +1 -0
  73. package/src/extensions/{mirror.ts → mirror/MirrorTool.ts} +1 -1
  74. package/src/extensions/mirror/index.ts +1 -0
  75. package/src/extensions/{ruler.ts → ruler/RulerTool.ts} +4 -5
  76. package/src/extensions/ruler/index.ts +1 -0
  77. package/src/extensions/sceneLayout.ts +1 -140
  78. package/src/extensions/sceneLayoutModel.ts +1 -364
  79. package/src/extensions/{size.ts → size/SizeTool.ts} +7 -6
  80. package/src/extensions/size/index.ts +1 -0
  81. package/src/extensions/{white-ink.ts → white-ink/WhiteInkTool.ts} +130 -317
  82. package/src/extensions/white-ink/commands.ts +157 -0
  83. package/src/extensions/white-ink/config.ts +30 -0
  84. package/src/extensions/white-ink/index.ts +5 -0
  85. package/src/extensions/white-ink/model.ts +1 -0
  86. package/src/extensions/white-ink/renderer.ts +1 -0
  87. package/src/services/CanvasService.ts +43 -12
  88. package/src/services/SceneLayoutService.ts +139 -0
  89. package/src/services/index.ts +1 -0
  90. package/src/services/renderSpec.ts +2 -0
  91. package/src/services/visibility.ts +5 -0
  92. package/src/shared/constants/layers.ts +23 -0
  93. package/src/shared/imaging/sourceSizeCache.ts +103 -0
  94. package/src/shared/index.ts +6 -0
  95. package/src/shared/runtime/sessionState.ts +105 -0
  96. package/src/shared/runtime/subscriptions.ts +45 -0
  97. package/src/shared/scene/frame.ts +46 -0
  98. package/src/shared/scene/sceneLayoutModel.ts +367 -0
  99. package/tests/run.ts +151 -0
package/dist/index.d.mts CHANGED
@@ -1,3 +1,4 @@
1
+ import * as _pooder_core from '@pooder/core';
1
2
  import { Extension, ExtensionContext, ContributionPointIds, ConfigurationContribution, CommandContribution, Service, ServiceContext, EventBus } from '@pooder/core';
2
3
  import { Canvas, FabricObject } from 'fabric';
3
4
 
@@ -29,11 +30,10 @@ declare class BackgroundTool implements Extension {
29
30
  private configService?;
30
31
  private specs;
31
32
  private renderProducerDisposable?;
32
- private configChangeDisposable?;
33
+ private readonly subscriptions;
33
34
  private renderSeq;
34
35
  private latestSceneLayout;
35
- private sourceSizeBySrc;
36
- private pendingSizeBySrc;
36
+ private sourceSizeCache;
37
37
  private onCanvasResized;
38
38
  private onSceneLayoutChanged;
39
39
  constructor(options?: Partial<BackgroundConfig>);
@@ -53,7 +53,6 @@ declare class BackgroundTool implements Extension {
53
53
  private buildImageLayerSpec;
54
54
  private buildBackgroundSpecs;
55
55
  private collectActiveImageUrls;
56
- private ensureImageSize;
57
56
  private loadImageSize;
58
57
  private updateBackground;
59
58
  private updateBackgroundAsync;
@@ -79,7 +78,7 @@ declare class ImageTool implements Extension {
79
78
  private workingItems;
80
79
  private hasWorkingChanges;
81
80
  private loadResolvers;
82
- private sourceSizeBySrc;
81
+ private sourceSizeCache;
83
82
  private canvasService?;
84
83
  private context?;
85
84
  private isUpdatingConfig;
@@ -94,6 +93,8 @@ declare class ImageTool implements Extension {
94
93
  private imageSpecs;
95
94
  private overlaySpecs;
96
95
  private renderProducerDisposable?;
96
+ private readonly subscriptions;
97
+ private imageControlsByCapabilityKey;
97
98
  activate(context: ExtensionContext): void;
98
99
  deactivate(context: ExtensionContext): void;
99
100
  private onToolActivated;
@@ -103,6 +104,11 @@ declare class ImageTool implements Extension {
103
104
  private onSceneGeometryChanged;
104
105
  private syncToolActiveFromWorkbench;
105
106
  private isImageEditingVisible;
107
+ private getEnabledImageControlCapabilities;
108
+ private getImageControls;
109
+ private getImageControlVisualConfig;
110
+ private applyImageObjectInteractionState;
111
+ private refreshImageObjectInteractionState;
106
112
  private isDebugEnabled;
107
113
  private debug;
108
114
  contribute(): {
@@ -120,8 +126,8 @@ declare class ImageTool implements Extension {
120
126
  leavePolicy: string;
121
127
  };
122
128
  }[];
123
- [ContributionPointIds.CONFIGURATIONS]: ConfigurationContribution[];
124
- [ContributionPointIds.COMMANDS]: CommandContribution[];
129
+ [ContributionPointIds.CONFIGURATIONS]: _pooder_core.ConfigurationContribution[];
130
+ [ContributionPointIds.COMMANDS]: _pooder_core.CommandContribution[];
125
131
  };
126
132
  private normalizeItem;
127
133
  private normalizeItems;
@@ -135,6 +141,7 @@ declare class ImageTool implements Extension {
135
141
  private addItemToWorkingSessionIfNeeded;
136
142
  private updateImage;
137
143
  private getConfig;
144
+ private applyCommittedItems;
138
145
  private updateConfig;
139
146
  private getFrameRect;
140
147
  private getFrameRectScreen;
@@ -149,6 +156,7 @@ declare class ImageTool implements Extension {
149
156
  private rememberSourceSize;
150
157
  private getSourceSize;
151
158
  private ensureSourceSize;
159
+ private loadImageSize;
152
160
  private getCoverScale;
153
161
  private getFrameVisualConfig;
154
162
  private toSceneGeometryLike;
@@ -176,6 +184,16 @@ declare class ImageTool implements Extension {
176
184
  private exportUserCroppedImage;
177
185
  }
178
186
 
187
+ declare function createImageCommands(tool: any): CommandContribution[];
188
+
189
+ declare function createImageConfigurations(): ConfigurationContribution[];
190
+
191
+ interface RectLike$1 {
192
+ width: number;
193
+ height: number;
194
+ }
195
+ declare function getCoverScale(frame: RectLike$1, source: RectLike$1): number;
196
+
179
197
  declare class SizeTool implements Extension {
180
198
  id: string;
181
199
  metadata: {
@@ -301,8 +319,8 @@ declare class DielineTool implements Extension {
301
319
  leavePolicy: string;
302
320
  };
303
321
  }[];
304
- [ContributionPointIds.CONFIGURATIONS]: ConfigurationContribution[];
305
- [ContributionPointIds.COMMANDS]: CommandContribution[];
322
+ [ContributionPointIds.CONFIGURATIONS]: _pooder_core.ConfigurationContribution[];
323
+ [ContributionPointIds.COMMANDS]: _pooder_core.CommandContribution[];
306
324
  };
307
325
  private createHatchPattern;
308
326
  private getConfigService;
@@ -318,357 +336,56 @@ declare class DielineTool implements Extension {
318
336
  }): Promise<string | null>;
319
337
  }
320
338
 
321
- interface ConstraintFeature extends DielineFeature {
322
- constraints?: Array<{
323
- type: string;
324
- params?: any;
325
- validateOnly?: boolean;
326
- }>;
327
- }
339
+ declare function createDielineCommands(tool: any, state: any): CommandContribution[];
328
340
 
329
- declare class FeatureTool implements Extension {
330
- id: string;
331
- metadata: {
332
- name: string;
333
- };
334
- private workingFeatures;
335
- private canvasService?;
336
- private context?;
337
- private isUpdatingConfig;
338
- private isToolActive;
339
- private isFeatureSessionActive;
340
- private sessionOriginalFeatures;
341
- private hasWorkingChanges;
342
- private dirtyTrackerDisposable?;
343
- private renderProducerDisposable?;
344
- private specs;
345
- private renderSeq;
346
- private handleMoving;
347
- private handleModified;
348
- private handleSceneGeometryChange;
349
- private currentGeometry;
350
- constructor(options?: Partial<{
351
- features: ConstraintFeature[];
352
- }>);
353
- activate(context: ExtensionContext): void;
354
- deactivate(context: ExtensionContext): void;
355
- private onToolActivated;
356
- private updateVisibility;
357
- contribute(): {
358
- [ContributionPointIds.TOOLS]: {
359
- id: string;
360
- name: string;
361
- interaction: string;
362
- commands: {
363
- begin: string;
364
- commit: string;
365
- rollback: string;
366
- };
367
- session: {
368
- autoBegin: boolean;
369
- leavePolicy: string;
370
- };
371
- }[];
372
- [ContributionPointIds.COMMANDS]: CommandContribution[];
373
- };
374
- private cloneFeatures;
375
- private getConfigService;
376
- private getCommittedFeatures;
377
- private updateCommittedFeatures;
378
- private clearFeatureSessionState;
379
- private restoreSessionFeaturesToConfig;
380
- private emitWorkingChange;
381
- private refreshGeometry;
382
- private resetWorkingFeaturesFromSource;
383
- private setWorkingFeatures;
384
- private updateWorkingGroupPosition;
385
- private completeFeatures;
386
- private addFeature;
387
- private addDoubleLayerHole;
388
- private getGeometryForFeature;
389
- private setup;
390
- private teardown;
391
- private getDraggableMarkerTarget;
392
- private getFeatureForMarker;
393
- private constrainPosition;
394
- private toNormalizedPoint;
395
- private syncFeatureFromCanvas;
396
- private syncGroupFromCanvas;
397
- private redraw;
398
- private redrawAsync;
399
- private buildFeatureSpecs;
400
- private appendMarkerSpecs;
401
- private buildMarkerData;
402
- private markerId;
403
- private bridgeIndicatorId;
404
- private toFeatureIndex;
405
- private readGroupIndices;
406
- private readGroupMemberOffsets;
407
- private syncMarkerVisualsByTarget;
408
- private syncMarkerVisualObjectsToCenter;
409
- private enforceConstraints;
410
- }
341
+ declare function createDielineConfigurations(state: any): ConfigurationContribution[];
411
342
 
412
- declare class FilmTool implements Extension {
413
- id: string;
414
- metadata: {
415
- name: string;
416
- };
417
- private url;
418
- private opacity;
419
- private canvasService?;
420
- private specs;
421
- private renderProducerDisposable?;
422
- private renderSeq;
423
- private renderImageUrl;
424
- private sourceSizeBySrc;
425
- private pendingSizeBySrc;
426
- private onCanvasResized;
427
- constructor(options?: Partial<{
428
- url: string;
429
- opacity: number;
430
- }>);
431
- activate(context: ExtensionContext): void;
432
- deactivate(context: ExtensionContext): void;
433
- contribute(): {
434
- [ContributionPointIds.CONFIGURATIONS]: ConfigurationContribution[];
435
- [ContributionPointIds.COMMANDS]: CommandContribution[];
436
- };
437
- private getViewportSize;
438
- private clampOpacity;
439
- private buildFilmSpecs;
440
- private ensureImageSize;
441
- private loadImageSize;
442
- private updateFilm;
443
- private updateFilmAsync;
343
+ interface Point {
344
+ x: number;
345
+ y: number;
444
346
  }
445
-
446
- declare class MirrorTool implements Extension {
447
- id: string;
448
- metadata: {
449
- name: string;
450
- };
451
- private enabled;
452
- private canvasService?;
453
- constructor(options?: Partial<{
454
- enabled: boolean;
455
- }>);
456
- toJSON(): {
457
- enabled: boolean;
458
- };
459
- loadFromJSON(json: any): void;
460
- activate(context: ExtensionContext): void;
461
- deactivate(context: ExtensionContext): void;
462
- contribute(): {
463
- [ContributionPointIds.CONFIGURATIONS]: ConfigurationContribution[];
464
- [ContributionPointIds.COMMANDS]: CommandContribution[];
465
- };
466
- private applyMirror;
347
+ interface Size {
348
+ width: number;
349
+ height: number;
350
+ }
351
+ interface Layout {
352
+ scale: number;
353
+ offsetX: number;
354
+ offsetY: number;
355
+ width: number;
356
+ height: number;
467
357
  }
468
358
 
469
- declare class RulerTool implements Extension {
470
- id: string;
471
- metadata: {
472
- name: string;
473
- };
474
- private thickness;
475
- private gap;
476
- private backgroundColor;
477
- private textColor;
478
- private lineColor;
479
- private fontSize;
480
- private renderSeq;
481
- private readonly numericProps;
482
- private specs;
483
- private renderProducerDisposable?;
484
- private canvasService?;
485
- private context?;
486
- private onCanvasResized;
487
- constructor(options?: Partial<{
488
- thickness: number;
489
- backgroundColor: string;
490
- textColor: string;
491
- lineColor: string;
492
- fontSize: number;
493
- gap: number;
494
- }>);
495
- activate(context: ExtensionContext): void;
496
- deactivate(context: ExtensionContext): void;
497
- contribute(): {
498
- [ContributionPointIds.CONFIGURATIONS]: ConfigurationContribution[];
499
- [ContributionPointIds.COMMANDS]: CommandContribution[];
500
- };
501
- private log;
502
- private syncConfig;
503
- private toFiniteNumber;
504
- private toSceneDisplayLength;
505
- private formatLengthMm;
506
- private buildLinePath;
507
- private buildStartArrowPath;
508
- private buildEndArrowPath;
509
- private createPathSpec;
510
- private createTextSpec;
511
- private buildRulerSpecs;
512
- private updateRuler;
513
- private updateRulerAsync;
359
+ declare class ViewportSystem {
360
+ private _containerSize;
361
+ private _physicalSize;
362
+ private _padding;
363
+ private _layout;
364
+ constructor(containerSize?: Size, physicalSize?: Size, padding?: number);
365
+ get layout(): Layout;
366
+ get scale(): number;
367
+ get offset(): Point;
368
+ updateContainer(width: number, height: number): void;
369
+ updatePhysical(width: number, height: number): void;
370
+ setPadding(padding: number): void;
371
+ private updateLayout;
372
+ toPixel(value: number): number;
373
+ toPhysical(value: number): number;
374
+ toPixelPoint(point: Point): Point;
375
+ toPhysicalPoint(point: Point): Point;
514
376
  }
515
377
 
516
- interface WhiteInkItem {
517
- id: string;
518
- sourceUrl?: string;
519
- url?: string;
520
- opacity: number;
521
- }
522
- declare class WhiteInkTool implements Extension {
523
- id: string;
524
- metadata: {
525
- name: string;
526
- };
527
- private items;
528
- private workingItems;
529
- private hasWorkingChanges;
530
- private sourceSizeBySrc;
531
- private previewMaskBySource;
532
- private pendingPreviewMaskBySource;
533
- private canvasService?;
534
- private context?;
535
- private isUpdatingConfig;
536
- private isToolActive;
537
- private printWithWhiteInk;
538
- private previewImageVisible;
539
- private renderSeq;
540
- private dirtyTrackerDisposable?;
541
- private whiteSpecs;
542
- private coverSpecs;
543
- private overlaySpecs;
544
- private renderProducerDisposable?;
545
- activate(context: ExtensionContext): void;
546
- deactivate(context: ExtensionContext): void;
547
- contribute(): {
548
- [ContributionPointIds.TOOLS]: {
549
- id: string;
550
- name: string;
551
- interaction: string;
552
- commands: {
553
- begin: string;
554
- commit: string;
555
- rollback: string;
556
- };
557
- session: {
558
- autoBegin: boolean;
559
- leavePolicy: string;
560
- };
561
- }[];
562
- [ContributionPointIds.CONFIGURATIONS]: ConfigurationContribution[];
563
- [ContributionPointIds.COMMANDS]: CommandContribution[];
564
- };
565
- private onToolActivated;
566
- private onSceneLayoutChanged;
567
- private onObjectAdded;
568
- private onObjectModified;
569
- private onObjectRemoved;
570
- private onImageWorkingChanged;
571
- private migrateLegacyConfigIfNeeded;
572
- private syncToolActiveFromWorkbench;
573
- private isPreviewActive;
574
- private isDebugEnabled;
575
- private debug;
576
- private resolveSourceUrl;
577
- private normalizeItem;
578
- private normalizeItems;
579
- private cloneItems;
580
- private getEffectiveWhiteInkItem;
581
- private generateId;
582
- private getConfig;
583
- private resolveReplaceTargetId;
584
- private updateConfig;
585
- private addWhiteInkEntry;
586
- private upsertWhiteInkEntry;
587
- private addItemToWorkingSessionIfNeeded;
588
- private updateWhiteInkItem;
589
- private updateWhiteInkInWorking;
590
- private updateWhiteInkInConfig;
591
- private removeWhiteInk;
592
- private clearWhiteInks;
593
- private completeWhiteInks;
594
- private getFrameRect;
595
- private toLayoutSceneRect;
596
- private getImageObjects;
597
- private getPrimaryImageObject;
598
- private getPrimaryImageSource;
599
- private getCurrentSrc;
600
- private getImageSnapshot;
601
- private getImagePlacementState;
602
- private shouldRestoreSnapshotToSource;
603
- private getCoverScale;
604
- private ensureSourceSize;
605
- private resolveAlignedImageSnapshot;
606
- private getImageElementFromObject;
607
- private rememberSourceSize;
608
- private getSourceSize;
609
- private computeWhiteScaleAdjust;
610
- private computeCoverOpacity;
611
- private buildCloneImageSpec;
612
- private buildFrameSpecs;
613
- private resolveRenderItems;
614
- private resolveRenderSources;
615
- private clearRenderedWhiteInks;
616
- private purgeSourceCaches;
617
- private updateWhiteInks;
618
- private updateWhiteInksAsync;
619
- private getMaskCacheKey;
620
- private getPreviewMaskSource;
621
- private getElementSize;
622
- private createOpaqueMaskSource;
623
- private loadImageElement;
624
- }
625
-
626
- interface Point {
627
- x: number;
628
- y: number;
629
- }
630
- interface Size {
631
- width: number;
632
- height: number;
633
- }
634
- interface Layout {
635
- scale: number;
636
- offsetX: number;
637
- offsetY: number;
638
- width: number;
639
- height: number;
640
- }
641
-
642
- declare class ViewportSystem {
643
- private _containerSize;
644
- private _physicalSize;
645
- private _padding;
646
- private _layout;
647
- constructor(containerSize?: Size, physicalSize?: Size, padding?: number);
648
- get layout(): Layout;
649
- get scale(): number;
650
- get offset(): Point;
651
- updateContainer(width: number, height: number): void;
652
- updatePhysical(width: number, height: number): void;
653
- setPadding(padding: number): void;
654
- private updateLayout;
655
- toPixel(value: number): number;
656
- toPhysical(value: number): number;
657
- toPixelPoint(point: Point): Point;
658
- toPhysicalPoint(point: Point): Point;
659
- }
660
-
661
- type RenderObjectType = "rect" | "image" | "path" | "text";
662
- type RenderProps = Record<string, any>;
663
- type RenderCoordinateSpace = "scene" | "screen";
664
- type RenderLayoutLength = number | string;
665
- type RenderLayoutAlign = "start" | "center" | "end";
666
- type RenderLayoutReference = "sceneViewport" | "screenViewport" | "custom";
667
- interface RenderLayoutInsets {
668
- top?: RenderLayoutLength;
669
- right?: RenderLayoutLength;
670
- bottom?: RenderLayoutLength;
671
- left?: RenderLayoutLength;
378
+ type RenderObjectType = "rect" | "image" | "path" | "text";
379
+ type RenderProps = Record<string, any>;
380
+ type RenderCoordinateSpace = "scene" | "screen";
381
+ type RenderLayoutLength = number | string;
382
+ type RenderLayoutAlign = "start" | "center" | "end";
383
+ type RenderLayoutReference = "sceneViewport" | "screenViewport" | "custom";
384
+ interface RenderLayoutInsets {
385
+ top?: RenderLayoutLength;
386
+ right?: RenderLayoutLength;
387
+ bottom?: RenderLayoutLength;
388
+ left?: RenderLayoutLength;
672
389
  }
673
390
  interface RenderLayoutRect {
674
391
  left: number;
@@ -707,6 +424,8 @@ type VisibilityExpr = {
707
424
  } | {
708
425
  op: "sessionActive";
709
426
  toolId: string;
427
+ } | {
428
+ op: "anySessionActive";
710
429
  } | {
711
430
  op: "layerExists";
712
431
  layerId: string;
@@ -728,6 +447,7 @@ type VisibilityExpr = {
728
447
  interface RenderClipPathEffectSpec {
729
448
  type: "clipPath";
730
449
  id?: string;
450
+ visibility?: VisibilityExpr;
731
451
  source: RenderObjectSpec;
732
452
  targetPassIds: string[];
733
453
  }
@@ -771,6 +491,7 @@ declare class CanvasService implements Service {
771
491
  private visibilityRefreshScheduled;
772
492
  private managedProducerPassIds;
773
493
  private managedPassMetas;
494
+ private managedPassEffects;
774
495
  private canvasForwardersBound;
775
496
  private readonly forwardSelectionCreated;
776
497
  private readonly forwardSelectionUpdated;
@@ -808,6 +529,9 @@ declare class CanvasService implements Service {
808
529
  private isManagedPassObject;
809
530
  private syncManagedPassStacking;
810
531
  private getPassRuntimeState;
532
+ private isSessionActive;
533
+ private hasAnyActiveSession;
534
+ private buildVisibilityEvalContext;
811
535
  private applyManagedPassVisibility;
812
536
  private scheduleManagedPassVisibilityRefresh;
813
537
  private collectAndApplyProducerSpecs;
@@ -904,17 +628,6 @@ declare class CanvasService implements Service {
904
628
  private createFabricObject;
905
629
  }
906
630
 
907
- interface VisibilityLayerState {
908
- exists: boolean;
909
- objectCount: number;
910
- }
911
- interface VisibilityEvalContext {
912
- activeToolId?: string | null;
913
- isSessionActive?: (toolId: string) => boolean;
914
- layers: Map<string, VisibilityLayerState>;
915
- }
916
- declare function evaluateVisibilityExpr(expr: VisibilityExpr | undefined, context: VisibilityEvalContext): boolean;
917
-
918
631
  type CutMode = "trim" | "outset" | "inset";
919
632
  interface SceneRect {
920
633
  left: number;
@@ -960,7 +673,7 @@ declare class SceneLayoutService implements Service {
960
673
  private configService?;
961
674
  private lastLayout;
962
675
  private lastGeometry;
963
- private onConfigChange?;
676
+ private readonly subscriptions;
964
677
  private commandDisposables;
965
678
  init(context: ServiceContext): void;
966
679
  dispose(context: ServiceContext): void;
@@ -971,4 +684,328 @@ declare class SceneLayoutService implements Service {
971
684
  getGeometry(forceRefresh?: boolean): SceneGeometrySnapshot | null;
972
685
  }
973
686
 
974
- export { type BackgroundConfig, type BackgroundFitMode, type BackgroundLayer, type BackgroundLayerKind, BackgroundTool, CanvasService, type DielineGeometry, type DielineState, DielineTool, FeatureTool, FilmTool, type ImageItem, ImageTool, type LayerObjectCountComparator, type LineStyle, MirrorTool, type RenderClipPathEffectSpec, type RenderCoordinateSpace, type RenderEffectSpec, type RenderLayoutAlign, type RenderLayoutInsets, type RenderLayoutLength, type RenderLayoutRect, type RenderLayoutReference, type RenderObjectLayoutSpec, type RenderObjectSpec, type RenderObjectType, type RenderPassSpec, type RenderProps, RulerTool, SceneLayoutService, SizeTool, ViewportSystem, type VisibilityEvalContext, type VisibilityExpr, type VisibilityLayerState, type WhiteInkItem, WhiteInkTool, evaluateVisibilityExpr };
687
+ interface VisibilityLayerState {
688
+ exists: boolean;
689
+ objectCount: number;
690
+ }
691
+ interface VisibilityEvalContext {
692
+ activeToolId?: string | null;
693
+ isSessionActive?: (toolId: string) => boolean;
694
+ hasAnyActiveSession?: () => boolean;
695
+ layers: Map<string, VisibilityLayerState>;
696
+ }
697
+ declare function evaluateVisibilityExpr(expr: VisibilityExpr | undefined, context: VisibilityEvalContext): boolean;
698
+
699
+ interface ConstraintFeature extends DielineFeature {
700
+ constraints?: Array<{
701
+ type: string;
702
+ params?: any;
703
+ validateOnly?: boolean;
704
+ }>;
705
+ }
706
+
707
+ declare class FeatureTool implements Extension {
708
+ id: string;
709
+ metadata: {
710
+ name: string;
711
+ };
712
+ private workingFeatures;
713
+ private canvasService?;
714
+ private context?;
715
+ private isUpdatingConfig;
716
+ private isToolActive;
717
+ private isFeatureSessionActive;
718
+ private sessionOriginalFeatures;
719
+ private hasWorkingChanges;
720
+ private dirtyTrackerDisposable?;
721
+ private renderProducerDisposable?;
722
+ private specs;
723
+ private renderSeq;
724
+ private readonly subscriptions;
725
+ private handleMoving;
726
+ private handleModified;
727
+ private handleSceneGeometryChange;
728
+ private currentGeometry;
729
+ constructor(options?: Partial<{
730
+ features: ConstraintFeature[];
731
+ }>);
732
+ activate(context: ExtensionContext): void;
733
+ deactivate(context: ExtensionContext): void;
734
+ private onToolActivated;
735
+ private updateVisibility;
736
+ contribute(): {
737
+ [ContributionPointIds.TOOLS]: {
738
+ id: string;
739
+ name: string;
740
+ interaction: string;
741
+ commands: {
742
+ begin: string;
743
+ commit: string;
744
+ rollback: string;
745
+ };
746
+ session: {
747
+ autoBegin: boolean;
748
+ leavePolicy: string;
749
+ };
750
+ }[];
751
+ [ContributionPointIds.COMMANDS]: CommandContribution[];
752
+ };
753
+ private cloneFeatures;
754
+ private getConfigService;
755
+ private getCommittedFeatures;
756
+ private updateCommittedFeatures;
757
+ private clearFeatureSessionState;
758
+ private restoreSessionFeaturesToConfig;
759
+ private emitWorkingChange;
760
+ private refreshGeometry;
761
+ private resetWorkingFeaturesFromSource;
762
+ private setWorkingFeatures;
763
+ private updateWorkingGroupPosition;
764
+ private completeFeatures;
765
+ private addFeature;
766
+ private addDoubleLayerHole;
767
+ private getGeometryForFeature;
768
+ private setup;
769
+ private teardown;
770
+ private getDraggableMarkerTarget;
771
+ private getFeatureForMarker;
772
+ private constrainPosition;
773
+ private toNormalizedPoint;
774
+ private syncFeatureFromCanvas;
775
+ private syncGroupFromCanvas;
776
+ private redraw;
777
+ private redrawAsync;
778
+ private buildFeatureSpecs;
779
+ private appendMarkerSpecs;
780
+ private buildMarkerData;
781
+ private markerId;
782
+ private bridgeIndicatorId;
783
+ private toFeatureIndex;
784
+ private readGroupIndices;
785
+ private readGroupMemberOffsets;
786
+ private syncMarkerVisualsByTarget;
787
+ private syncMarkerVisualObjectsToCenter;
788
+ private enforceConstraints;
789
+ }
790
+
791
+ declare class FilmTool implements Extension {
792
+ id: string;
793
+ metadata: {
794
+ name: string;
795
+ };
796
+ private url;
797
+ private opacity;
798
+ private canvasService?;
799
+ private specs;
800
+ private renderProducerDisposable?;
801
+ private renderSeq;
802
+ private renderImageUrl;
803
+ private sourceSizeCache;
804
+ private readonly subscriptions;
805
+ private onCanvasResized;
806
+ constructor(options?: Partial<{
807
+ url: string;
808
+ opacity: number;
809
+ }>);
810
+ activate(context: ExtensionContext): void;
811
+ deactivate(context: ExtensionContext): void;
812
+ contribute(): {
813
+ [ContributionPointIds.CONFIGURATIONS]: ConfigurationContribution[];
814
+ [ContributionPointIds.COMMANDS]: CommandContribution[];
815
+ };
816
+ private getViewportSize;
817
+ private clampOpacity;
818
+ private buildFilmSpecs;
819
+ private loadImageSize;
820
+ private updateFilm;
821
+ private updateFilmAsync;
822
+ }
823
+
824
+ declare class MirrorTool implements Extension {
825
+ id: string;
826
+ metadata: {
827
+ name: string;
828
+ };
829
+ private enabled;
830
+ private canvasService?;
831
+ constructor(options?: Partial<{
832
+ enabled: boolean;
833
+ }>);
834
+ toJSON(): {
835
+ enabled: boolean;
836
+ };
837
+ loadFromJSON(json: any): void;
838
+ activate(context: ExtensionContext): void;
839
+ deactivate(context: ExtensionContext): void;
840
+ contribute(): {
841
+ [ContributionPointIds.CONFIGURATIONS]: ConfigurationContribution[];
842
+ [ContributionPointIds.COMMANDS]: CommandContribution[];
843
+ };
844
+ private applyMirror;
845
+ }
846
+
847
+ declare class RulerTool implements Extension {
848
+ id: string;
849
+ metadata: {
850
+ name: string;
851
+ };
852
+ private thickness;
853
+ private gap;
854
+ private backgroundColor;
855
+ private textColor;
856
+ private lineColor;
857
+ private fontSize;
858
+ private renderSeq;
859
+ private readonly numericProps;
860
+ private specs;
861
+ private renderProducerDisposable?;
862
+ private canvasService?;
863
+ private context?;
864
+ private onCanvasResized;
865
+ constructor(options?: Partial<{
866
+ thickness: number;
867
+ backgroundColor: string;
868
+ textColor: string;
869
+ lineColor: string;
870
+ fontSize: number;
871
+ gap: number;
872
+ }>);
873
+ activate(context: ExtensionContext): void;
874
+ deactivate(context: ExtensionContext): void;
875
+ contribute(): {
876
+ [ContributionPointIds.CONFIGURATIONS]: ConfigurationContribution[];
877
+ [ContributionPointIds.COMMANDS]: CommandContribution[];
878
+ };
879
+ private log;
880
+ private syncConfig;
881
+ private toFiniteNumber;
882
+ private toSceneDisplayLength;
883
+ private formatLengthMm;
884
+ private buildLinePath;
885
+ private buildStartArrowPath;
886
+ private buildEndArrowPath;
887
+ private createPathSpec;
888
+ private createTextSpec;
889
+ private buildRulerSpecs;
890
+ private updateRuler;
891
+ private updateRulerAsync;
892
+ }
893
+
894
+ interface WhiteInkItem {
895
+ id: string;
896
+ sourceUrl?: string;
897
+ url?: string;
898
+ opacity: number;
899
+ }
900
+ declare class WhiteInkTool implements Extension {
901
+ id: string;
902
+ metadata: {
903
+ name: string;
904
+ };
905
+ private items;
906
+ private workingItems;
907
+ private hasWorkingChanges;
908
+ private sourceSizeCache;
909
+ private previewMaskBySource;
910
+ private pendingPreviewMaskBySource;
911
+ private canvasService?;
912
+ private context?;
913
+ private isUpdatingConfig;
914
+ private isToolActive;
915
+ private printWithWhiteInk;
916
+ private previewImageVisible;
917
+ private renderSeq;
918
+ private dirtyTrackerDisposable?;
919
+ private whiteSpecs;
920
+ private coverSpecs;
921
+ private overlaySpecs;
922
+ private renderProducerDisposable?;
923
+ private readonly subscriptions;
924
+ activate(context: ExtensionContext): void;
925
+ deactivate(context: ExtensionContext): void;
926
+ contribute(): {
927
+ [ContributionPointIds.TOOLS]: {
928
+ id: string;
929
+ name: string;
930
+ interaction: string;
931
+ commands: {
932
+ begin: string;
933
+ commit: string;
934
+ rollback: string;
935
+ };
936
+ session: {
937
+ autoBegin: boolean;
938
+ leavePolicy: string;
939
+ };
940
+ }[];
941
+ [ContributionPointIds.CONFIGURATIONS]: _pooder_core.ConfigurationContribution[];
942
+ [ContributionPointIds.COMMANDS]: _pooder_core.CommandContribution[];
943
+ };
944
+ private onToolActivated;
945
+ private onSceneLayoutChanged;
946
+ private onObjectAdded;
947
+ private onObjectModified;
948
+ private onObjectRemoved;
949
+ private onImageWorkingChanged;
950
+ private migrateLegacyConfigIfNeeded;
951
+ private syncToolActiveFromWorkbench;
952
+ private isPreviewActive;
953
+ private isDebugEnabled;
954
+ private debug;
955
+ private resolveSourceUrl;
956
+ private normalizeItem;
957
+ private normalizeItems;
958
+ private cloneItems;
959
+ private getEffectiveWhiteInkItem;
960
+ private generateId;
961
+ private getConfig;
962
+ private resolveReplaceTargetId;
963
+ private applyCommittedItems;
964
+ private updateConfig;
965
+ private addWhiteInkEntry;
966
+ private upsertWhiteInkEntry;
967
+ private addItemToWorkingSessionIfNeeded;
968
+ private updateWhiteInkItem;
969
+ private updateWhiteInkInWorking;
970
+ private updateWhiteInkInConfig;
971
+ private removeWhiteInk;
972
+ private clearWhiteInks;
973
+ private completeWhiteInks;
974
+ private getFrameRect;
975
+ private toLayoutSceneRect;
976
+ private getImageObjects;
977
+ private getPrimaryImageObject;
978
+ private getPrimaryImageSource;
979
+ private getCurrentSrc;
980
+ private getImageSnapshot;
981
+ private getImagePlacementState;
982
+ private shouldRestoreSnapshotToSource;
983
+ private getCoverScale;
984
+ private ensureSourceSize;
985
+ private loadImageSize;
986
+ private resolveAlignedImageSnapshot;
987
+ private getImageElementFromObject;
988
+ private rememberSourceSize;
989
+ private getSourceSize;
990
+ private computeWhiteScaleAdjust;
991
+ private computeCoverOpacity;
992
+ private buildCloneImageSpec;
993
+ private buildFrameSpecs;
994
+ private resolveRenderItems;
995
+ private resolveRenderSources;
996
+ private clearRenderedWhiteInks;
997
+ private purgeSourceCaches;
998
+ private updateWhiteInks;
999
+ private updateWhiteInksAsync;
1000
+ private getMaskCacheKey;
1001
+ private getPreviewMaskSource;
1002
+ private getElementSize;
1003
+ private createOpaqueMaskSource;
1004
+ private loadImageElement;
1005
+ }
1006
+
1007
+ declare function createWhiteInkCommands(tool: any): CommandContribution[];
1008
+
1009
+ declare function createWhiteInkConfigurations(): ConfigurationContribution[];
1010
+
1011
+ export { type BackgroundConfig, type BackgroundFitMode, type BackgroundLayer, type BackgroundLayerKind, BackgroundTool, CanvasService, type DielineGeometry, type DielineState, DielineTool, FeatureTool, FilmTool, type ImageItem, ImageTool, type LayerObjectCountComparator, type LineStyle, MirrorTool, type RenderClipPathEffectSpec, type RenderCoordinateSpace, type RenderEffectSpec, type RenderLayoutAlign, type RenderLayoutInsets, type RenderLayoutLength, type RenderLayoutRect, type RenderLayoutReference, type RenderObjectLayoutSpec, type RenderObjectSpec, type RenderObjectType, type RenderPassSpec, type RenderProps, RulerTool, SceneLayoutService, SizeTool, ViewportSystem, type VisibilityEvalContext, type VisibilityExpr, type VisibilityLayerState, type WhiteInkItem, WhiteInkTool, getCoverScale as computeImageCoverScale, getCoverScale as computeWhiteInkCoverScale, createDielineCommands, createDielineConfigurations, createImageCommands, createImageConfigurations, createWhiteInkCommands, createWhiteInkConfigurations, evaluateVisibilityExpr };