@jetprint/editor-sdk 1.0.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 (149) hide show
  1. package/dist/assets/perspective.wasm +0 -0
  2. package/dist/assets/wasm_exec.js +553 -0
  3. package/dist/components/Editor/assets/editorIcons.d.ts +32 -0
  4. package/dist/components/Editor/components/CanvasSection.vue.d.ts +253 -0
  5. package/dist/components/Editor/components/CanvasZoomToolbar.vue.d.ts +23 -0
  6. package/dist/components/Editor/components/EditorAddToCartDialog.vue.d.ts +28 -0
  7. package/dist/components/Editor/components/EditorDefaultCanvasAxisLines.vue.d.ts +34 -0
  8. package/dist/components/Editor/components/EditorDefaultCanvasRulers.vue.d.ts +44 -0
  9. package/dist/components/Editor/components/EditorIcon.vue.d.ts +7 -0
  10. package/dist/components/Editor/components/EditorSelectionShortcutFab.vue.d.ts +56 -0
  11. package/dist/components/Editor/components/EditorSidebar.vue.d.ts +548 -0
  12. package/dist/components/Editor/components/EditorTopbar.vue.d.ts +363 -0
  13. package/dist/components/Editor/components/EditorTopbarMockupScope.vue.d.ts +12 -0
  14. package/dist/components/Editor/components/GalleryPanel.vue.d.ts +9 -0
  15. package/dist/components/Editor/components/LiveThreePreviewPane.vue.d.ts +30 -0
  16. package/dist/components/Editor/components/PreviewPanel.vue.d.ts +312 -0
  17. package/dist/components/Editor/components/ShortcutSettingsModal.vue.d.ts +11 -0
  18. package/dist/components/Editor/components/SplitPieceHandAlignPanel.vue.d.ts +14 -0
  19. package/dist/components/Editor/components/TemplateModal.vue.d.ts +35 -0
  20. package/dist/components/Editor/components/Theme1AddTextPanel.vue.d.ts +190 -0
  21. package/dist/components/Editor/components/Theme1UploadPanel.vue.d.ts +120 -0
  22. package/dist/components/Editor/composables/index.d.ts +56 -0
  23. package/dist/components/Editor/composables/useCanvasEventWiring.d.ts +40 -0
  24. package/dist/components/Editor/composables/useCanvasHistory.d.ts +18 -0
  25. package/dist/components/Editor/composables/useCanvasManager.d.ts +29 -0
  26. package/dist/components/Editor/composables/useCanvasObjectHelpers.d.ts +34 -0
  27. package/dist/components/Editor/composables/useCanvasStateByDiecut.d.ts +50 -0
  28. package/dist/components/Editor/composables/useCanvasViewport.d.ts +89 -0
  29. package/dist/components/Editor/composables/useClearCanvas.d.ts +32 -0
  30. package/dist/components/Editor/composables/useCompleteScreenshot.d.ts +68 -0
  31. package/dist/components/Editor/composables/useCopyToDiecuts.d.ts +56 -0
  32. package/dist/components/Editor/composables/useDiecutManager.d.ts +46 -0
  33. package/dist/components/Editor/composables/useDiecutScreenshot.d.ts +50 -0
  34. package/dist/components/Editor/composables/useDownloadPng.d.ts +11 -0
  35. package/dist/components/Editor/composables/useEditorReset.d.ts +21 -0
  36. package/dist/components/Editor/composables/useEditorShortcuts.d.ts +80 -0
  37. package/dist/components/Editor/composables/useEditorTopbarContext.d.ts +3 -0
  38. package/dist/components/Editor/composables/useEditorWatchers.d.ts +99 -0
  39. package/dist/components/Editor/composables/useEventHandlers.d.ts +13 -0
  40. package/dist/components/Editor/composables/useFontLoader.d.ts +8 -0
  41. package/dist/components/Editor/composables/useGuideResources.d.ts +38 -0
  42. package/dist/components/Editor/composables/useImageHandler.d.ts +10 -0
  43. package/dist/components/Editor/composables/useLayerOperations.d.ts +52 -0
  44. package/dist/components/Editor/composables/useLayerSync.d.ts +32 -0
  45. package/dist/components/Editor/composables/useLicense.d.ts +11 -0
  46. package/dist/components/Editor/composables/useObjectAdder.d.ts +76 -0
  47. package/dist/components/Editor/composables/usePatternHandler.d.ts +31 -0
  48. package/dist/components/Editor/composables/usePreviewManager.d.ts +240 -0
  49. package/dist/components/Editor/composables/usePreviewRenderer.d.ts +111 -0
  50. package/dist/components/Editor/composables/usePreviewUpdateQueue.d.ts +62 -0
  51. package/dist/components/Editor/composables/useProductData.d.ts +166 -0
  52. package/dist/components/Editor/composables/useSplitPieceHandTool.d.ts +34 -0
  53. package/dist/components/Editor/composables/useTemplateLoader.d.ts +36 -0
  54. package/dist/components/Editor/composables/useTemplateManager.d.ts +48 -0
  55. package/dist/components/Editor/composables/useTextHandler.d.ts +19 -0
  56. package/dist/components/Editor/composables/useToolState.d.ts +101 -0
  57. package/dist/components/Editor/composables/useToolStateSync.d.ts +49 -0
  58. package/dist/components/Editor/composables/useWorkerManager.d.ts +11 -0
  59. package/dist/components/Editor/config/fontConfig.d.ts +8 -0
  60. package/dist/components/Editor/editorCanvasGuides.d.ts +22 -0
  61. package/dist/components/Editor/fabric/PatternLayer.d.ts +104 -0
  62. package/dist/components/Editor/index.vue.d.ts +167 -0
  63. package/dist/components/Editor/liveRender/ThreeRenderViewer.vue.d.ts +31 -0
  64. package/dist/components/Editor/liveRender/dataAdapter.d.ts +2 -0
  65. package/dist/components/Editor/liveRender/prefetch.worker.d.ts +15 -0
  66. package/dist/components/Editor/liveRender/render.worker.d.ts +1 -0
  67. package/dist/components/Editor/liveRender/types.d.ts +130 -0
  68. package/dist/components/Editor/utils/blob.d.ts +5 -0
  69. package/dist/components/Editor/utils/buildSplitPieceDesignClipBlobs.d.ts +75 -0
  70. package/dist/components/Editor/utils/colorLabels.d.ts +6 -0
  71. package/dist/components/Editor/utils/dataBuilders.d.ts +108 -0
  72. package/dist/components/Editor/utils/designRestoreScale.d.ts +42 -0
  73. package/dist/components/Editor/utils/editorShortcutChord.d.ts +9 -0
  74. package/dist/components/Editor/utils/editorShortcutIds.d.ts +2 -0
  75. package/dist/components/Editor/utils/editorShortcutRegistry.d.ts +15 -0
  76. package/dist/components/Editor/utils/editorSizeOptions.d.ts +27 -0
  77. package/dist/components/Editor/utils/fabricMainCanvasSnapshot.d.ts +48 -0
  78. package/dist/components/Editor/utils/fabricRulerMath.d.ts +35 -0
  79. package/dist/components/Editor/utils/fabricScreenshotToBlob.d.ts +7 -0
  80. package/dist/components/Editor/utils/imageLoader.d.ts +10 -0
  81. package/dist/components/Editor/utils/objectUtils.d.ts +11 -0
  82. package/dist/components/Editor/utils/pattern.d.ts +56 -0
  83. package/dist/components/Editor/utils/scaleSplitClassicGridVisual.d.ts +9 -0
  84. package/dist/components/Editor/utils/screenshot.d.ts +8 -0
  85. package/dist/components/Editor/utils/selectionVisual.d.ts +7 -0
  86. package/dist/components/Editor/utils/tintMaskWithColor.d.ts +4 -0
  87. package/dist/components/Editor/utils/uploadLimit.d.ts +4 -0
  88. package/dist/components/Editor/workers/copyDiecuts.worker.d.ts +38 -0
  89. package/dist/components/Editor/workers/maskWorker.d.ts +13 -0
  90. package/dist/components/Editor/workers/renderWorker.d.ts +1 -0
  91. package/dist/components/Editor/workers/zoneScreenshotWorker.d.ts +49 -0
  92. package/dist/composables/useEditorI18n.d.ts +18 -0
  93. package/dist/copyDiecuts.worker.js +67 -0
  94. package/dist/deform.worker.js +760 -0
  95. package/dist/editor-sdk.es.js +73923 -0
  96. package/dist/index.d.ts +446 -0
  97. package/dist/locales/builtin-messages.d.ts +2 -0
  98. package/dist/locales/editor-locales.d.ts +7 -0
  99. package/dist/locales/en.d.ts +5 -0
  100. package/dist/locales/ja-JP.d.ts +5 -0
  101. package/dist/locales/ko-KR.d.ts +5 -0
  102. package/dist/locales/vi-VN.d.ts +5 -0
  103. package/dist/locales/zh.d.ts +5 -0
  104. package/dist/maskWorker.js +51 -0
  105. package/dist/prefetch.worker.js +16 -0
  106. package/dist/render.worker.js +27266 -0
  107. package/dist/renderWorker.js +40368 -0
  108. package/dist/style.css +1 -0
  109. package/dist/types.d.ts +483 -0
  110. package/dist/utils/backgroundRenderer.d.ts +64 -0
  111. package/dist/utils/encryptJson.d.ts +31 -0
  112. package/dist/utils/environment.d.ts +29 -0
  113. package/dist/utils/errorHandler.d.ts +27 -0
  114. package/dist/utils/fileToken.d.ts +18 -0
  115. package/dist/utils/http.d.ts +31 -0
  116. package/dist/utils/jsonFileCache.d.ts +6 -0
  117. package/dist/utils/license/api.d.ts +74 -0
  118. package/dist/utils/license/deviceId.d.ts +25 -0
  119. package/dist/utils/license/index.d.ts +9 -0
  120. package/dist/utils/license/licenseManager.d.ts +63 -0
  121. package/dist/utils/license/licenseStore.d.ts +17 -0
  122. package/dist/utils/license/retry.d.ts +11 -0
  123. package/dist/utils/license/tokenRefresh.d.ts +34 -0
  124. package/dist/utils/mediaBlobCache.d.ts +6 -0
  125. package/dist/utils/protection/encryptedModules.generated.d.ts +27 -0
  126. package/dist/utils/protection/moduleLoader.d.ts +17 -0
  127. package/dist/utils/renderService/blend.d.ts +4 -0
  128. package/dist/utils/renderService/deform.d.ts +21 -0
  129. package/dist/utils/renderService/deform.worker.d.ts +7 -0
  130. package/dist/utils/renderService/image.d.ts +8 -0
  131. package/dist/utils/renderService/index.d.ts +12 -0
  132. package/dist/utils/renderService/mask.d.ts +13 -0
  133. package/dist/utils/renderService/prepareRenderData.d.ts +2 -0
  134. package/dist/utils/renderService/psdConverter.d.ts +6 -0
  135. package/dist/utils/renderService/render.d.ts +14 -0
  136. package/dist/utils/renderService/render.worker.d.ts +17 -0
  137. package/dist/utils/renderService/types.d.ts +236 -0
  138. package/dist/utils/renderService/workerManager.d.ts +33 -0
  139. package/dist/utils/renderedImagesDB.d.ts +61 -0
  140. package/dist/utils/storage.d.ts +27 -0
  141. package/dist/utils/threeRenderService/index.d.ts +6 -0
  142. package/dist/utils/url.d.ts +39 -0
  143. package/dist/utils/workerBase.d.ts +38 -0
  144. package/dist/utils/workerLoader.d.ts +24 -0
  145. package/dist/wasm/index.d.ts +5 -0
  146. package/dist/wasm/perspectiveLoader.d.ts +70 -0
  147. package/dist/wasm/perspectiveLoader.worker.d.ts +116 -0
  148. package/dist/zoneScreenshotWorker.js +82 -0
  149. package/package.json +54 -0
@@ -0,0 +1,80 @@
1
+ import { type Ref } from 'vue';
2
+ import type { Canvas } from 'fabric';
3
+ import type { EditorShortcutActionId } from '../utils/editorShortcutIds';
4
+ /** 供快捷键设置 Modal 绑定 */
5
+ export interface EditorShortcutsController {
6
+ recordingActionId: Ref<EditorShortcutActionId | null>;
7
+ conflictMessage: Ref<string>;
8
+ getEffectiveChord: (id: EditorShortcutActionId) => string | null;
9
+ clearBinding: (id: EditorShortcutActionId) => void;
10
+ restoreDefaults: () => void;
11
+ startRecording: (id: EditorShortcutActionId) => void;
12
+ cancelRecording: () => void;
13
+ }
14
+ export declare function useEditorShortcuts(options: {
15
+ storageKey: string;
16
+ getBlocked: () => boolean;
17
+ getReadOnly: () => boolean;
18
+ getCanvas: () => Canvas | null;
19
+ /** 快捷键面板是否打开(打开时不触发画布动作,录制中除外) */
20
+ getPanelOpen: () => boolean;
21
+ onAction: (id: EditorShortcutActionId) => boolean | void;
22
+ }): {
23
+ custom: Ref<{
24
+ layer_crop?: string | undefined;
25
+ duplicate_layer?: string | undefined;
26
+ delete_selected_layer?: string | undefined;
27
+ layer_top?: string | undefined;
28
+ layer_bottom?: string | undefined;
29
+ layer_up?: string | undefined;
30
+ layer_down?: string | undefined;
31
+ undo?: string | undefined;
32
+ redo?: string | undefined;
33
+ nudge_up?: string | undefined;
34
+ nudge_down?: string | undefined;
35
+ nudge_left?: string | undefined;
36
+ nudge_right?: string | undefined;
37
+ add_text?: string | undefined;
38
+ clear_canvas?: string | undefined;
39
+ clear_guides?: string | undefined;
40
+ zoom_in?: string | undefined;
41
+ zoom_out?: string | undefined;
42
+ fit_canvas?: string | undefined;
43
+ export_png?: string | undefined;
44
+ }, Partial<Record<"layer_crop" | "duplicate_layer" | "delete_selected_layer" | "layer_top" | "layer_bottom" | "layer_up" | "layer_down" | "undo" | "redo" | "nudge_up" | "nudge_down" | "nudge_left" | "nudge_right" | "add_text" | "clear_canvas" | "clear_guides" | "zoom_in" | "zoom_out" | "fit_canvas" | "export_png", string>> | {
45
+ layer_crop?: string | undefined;
46
+ duplicate_layer?: string | undefined;
47
+ delete_selected_layer?: string | undefined;
48
+ layer_top?: string | undefined;
49
+ layer_bottom?: string | undefined;
50
+ layer_up?: string | undefined;
51
+ layer_down?: string | undefined;
52
+ undo?: string | undefined;
53
+ redo?: string | undefined;
54
+ nudge_up?: string | undefined;
55
+ nudge_down?: string | undefined;
56
+ nudge_left?: string | undefined;
57
+ nudge_right?: string | undefined;
58
+ add_text?: string | undefined;
59
+ clear_canvas?: string | undefined;
60
+ clear_guides?: string | undefined;
61
+ zoom_in?: string | undefined;
62
+ zoom_out?: string | undefined;
63
+ fit_canvas?: string | undefined;
64
+ export_png?: string | undefined;
65
+ }>;
66
+ disabled: Ref<("layer_crop" | "duplicate_layer" | "delete_selected_layer" | "layer_top" | "layer_bottom" | "layer_up" | "layer_down" | "undo" | "redo" | "nudge_up" | "nudge_down" | "nudge_left" | "nudge_right" | "add_text" | "clear_canvas" | "clear_guides" | "zoom_in" | "zoom_out" | "fit_canvas" | "export_png")[], ("layer_crop" | "duplicate_layer" | "delete_selected_layer" | "layer_top" | "layer_bottom" | "layer_up" | "layer_down" | "undo" | "redo" | "nudge_up" | "nudge_down" | "nudge_left" | "nudge_right" | "add_text" | "clear_canvas" | "clear_guides" | "zoom_in" | "zoom_out" | "fit_canvas" | "export_png")[]>;
67
+ recordingActionId: Ref<"layer_crop" | "duplicate_layer" | "delete_selected_layer" | "layer_top" | "layer_bottom" | "layer_up" | "layer_down" | "undo" | "redo" | "nudge_up" | "nudge_down" | "nudge_left" | "nudge_right" | "add_text" | "clear_canvas" | "clear_guides" | "zoom_in" | "zoom_out" | "fit_canvas" | "export_png" | null, "layer_crop" | "duplicate_layer" | "delete_selected_layer" | "layer_top" | "layer_bottom" | "layer_up" | "layer_down" | "undo" | "redo" | "nudge_up" | "nudge_down" | "nudge_left" | "nudge_right" | "add_text" | "clear_canvas" | "clear_guides" | "zoom_in" | "zoom_out" | "fit_canvas" | "export_png" | null>;
68
+ conflictMessage: Ref<string, string>;
69
+ hydrate: () => void;
70
+ getEffectiveChord: (id: EditorShortcutActionId) => string | null;
71
+ setCustomChord: (id: EditorShortcutActionId, chord: string) => boolean;
72
+ clearBinding: (id: EditorShortcutActionId) => void;
73
+ restoreDefaults: () => void;
74
+ startRecording: (id: EditorShortcutActionId) => void;
75
+ cancelRecording: () => void;
76
+ tryCommitRecording: (e: KeyboardEvent) => boolean;
77
+ install: () => void;
78
+ uninstall: () => void;
79
+ };
80
+ export type UseEditorShortcutsReturn = ReturnType<typeof useEditorShortcuts>;
@@ -0,0 +1,3 @@
1
+ import type { EditorTopbarContext } from '../../../types';
2
+ export declare function useEditorTopbarContext(): EditorTopbarContext;
3
+ export declare function useEditorTopbarContextOptional(): EditorTopbarContext | undefined;
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Editor 统一 Watchers Composable
3
+ * 集中管理产品/模板/刀板/尺寸/颜色等响应式联动
4
+ */
5
+ import { type Ref } from 'vue';
6
+ export interface UseEditorWatchersOptions {
7
+ props: {
8
+ options?: {
9
+ enableGrid?: boolean;
10
+ };
11
+ basicInfo?: any;
12
+ diecutData?: any;
13
+ deformationData?: any;
14
+ fileToken?: string | null;
15
+ };
16
+ showGrid: Ref<boolean>;
17
+ activeTab: Ref<string>;
18
+ getCanvas: () => any;
19
+ syncImageToolState: (active?: any, autoSwitchTab?: boolean) => void;
20
+ syncLayerToolState: (active?: any) => void;
21
+ syncTextToolState: (active?: any, autoSwitchTab?: boolean) => void;
22
+ selectedProductIndex: Ref<number>;
23
+ productItems: Ref<any[]>;
24
+ selectedProduct: Ref<any>;
25
+ isListMode: Ref<boolean>;
26
+ doResetForProduct: () => void;
27
+ loadProductDetails: (id: number | string) => Promise<void>;
28
+ sizeOptions: Ref<any[]>;
29
+ selectedSize: Ref<string>;
30
+ sizeOptionsFromDeformation: Ref<string[]>;
31
+ selectedColor: Ref<string>;
32
+ effectiveDeformationData: Ref<any>;
33
+ isNewDeformationFormat: Ref<boolean>;
34
+ colorOptions: Ref<string[]>;
35
+ templateItems: Ref<any[]>;
36
+ selectedTemplateIndex: Ref<number>;
37
+ previewTemplateIndex: Ref<number>;
38
+ templateModeOptions: Ref<any[]>;
39
+ selectedMode: Ref<string>;
40
+ diecutOptions: Ref<Array<{
41
+ id: string;
42
+ }>>;
43
+ selectedDiecutId: Ref<string>;
44
+ applyTemplateToCanvas: (template: any) => void;
45
+ buildInitialPreviewRenderData: (opts?: {
46
+ commitHd?: boolean;
47
+ useCachedSplitScreenshotsOnly?: boolean;
48
+ }) => Promise<void>;
49
+ saveCanvasState: (id: string, sizeOverride?: string) => Promise<void>;
50
+ restoreCanvasState: (id: string) => any;
51
+ restoreCanvasStateAsync?: (id: string) => Promise<boolean>;
52
+ /** 是否「多尺码不同设计版」(SIZE_SPECIFIC):决定切尺码是否需要按尺码 落盘/还原 画布 */
53
+ getIsPerSizeDesign?: () => boolean;
54
+ /** 切尺码后:为当前尺码所有已设计的非激活分片用保存状态离屏生成截图(补齐效果图) */
55
+ warmDesignedPieces?: () => Promise<void>;
56
+ onAfterCanvasRestored?: (diecutId: string) => void;
57
+ resetCanvasForTemplate: () => void;
58
+ setZoom: (v: number) => void;
59
+ zoom: Ref<number>;
60
+ /** Classic ↔ Zone 切换时恢复对应模式的视口缩放/平移 */
61
+ switchTemplateViewportMode?: (mode: string) => void;
62
+ /** 首次绑定当前模板模式(fitCanvas 后写入该模式默认视口) */
63
+ initTemplateViewportMode?: (mode: string) => void;
64
+ /** 换产品时重置两种模式的视口记忆 */
65
+ resetTemplateViewportByMode?: () => void;
66
+ /** 统一应用引导层(单片优先分片可拖动蒙版);COMPLETE 时 fallback 为整模板引导资源;SPLIT 仅刀版 Guideline+SPLIT */
67
+ applyEditorGuideLayers: (fallbackTemplateGuideResources?: any[]) => Promise<void>;
68
+ generateDiecutScreenshot: (id: string, snapshotOpts?: any, precapturedBaseBlob?: Blob | null) => Promise<void>;
69
+ /**
70
+ * 在切换分片前同步截取主画布当前像素,用于喂给 fire-and-forget generateDiecutScreenshot,
71
+ * 避免内部 getCanvasBaseScreenshot 的 idleCallback 让 capture 推迟到 restore 完成后,
72
+ * 截到下一分片的像素污染 prev 分片 cache。
73
+ */
74
+ captureMainBaseBlob?: () => Promise<Blob | null>;
75
+ loadTemplateJson: (url: string, resources?: any[]) => Promise<void>;
76
+ getModeConfig: () => {
77
+ jsonURL?: string;
78
+ resources?: any[];
79
+ } | null;
80
+ setExternalFileToken: (token: string | null) => void;
81
+ onTemplateReady?: () => void | Promise<void>;
82
+ /** 刀板切换流程中置 true,用于暂停 queuePreviewUpdate,避免 restore 时 object:added 触发预览 loading */
83
+ diecutSwitchInProgress: Ref<boolean>;
84
+ /**
85
+ * 切换刀板前取消预览 debounce(与 saveCanvasState(prev) 配合)。
86
+ * 否则 timer 可能在 selectedDiecutId 已指向新分片后才执行,把画布误存到新分片的 stateMap。
87
+ */
88
+ clearPendingPreviewUpdate?: () => void;
89
+ /**
90
+ * Dirty 标记查询 / 消费。
91
+ * 切换分片时,如果 prev 分片自上次截图后用户没改过(not dirty),跳过 generateDiecutScreenshot —
92
+ * inverseMaskBlob 仍然有效,不需要重新生成。这是 Classic 模式切换分片慢的最大优化点
93
+ * (实测 shotPrev 占总切换时间 95%+,单次 360-2500ms)。
94
+ * 缺省(未传)时退化为旧行为:每次切换都截图,等价于"总是 dirty"。
95
+ */
96
+ isDiecutDirty?: (id: string) => boolean;
97
+ consumeDiecutDirty?: (id: string) => void;
98
+ }
99
+ export declare function useEditorWatchers(options: UseEditorWatchersOptions): void;
@@ -0,0 +1,13 @@
1
+ import type { Canvas } from 'fabric';
2
+ export interface EventHandlersOptions {
3
+ onObjectModified?: (fabricData: Record<string, unknown>) => void;
4
+ syncLayers?: () => void;
5
+ updateActive?: () => void;
6
+ syncToolStates?: (obj: any) => void;
7
+ queuePreviewUpdate?: (reason: string) => void;
8
+ }
9
+ export declare function useEventHandlers(getCanvas: () => Canvas | null, options?: EventHandlersOptions): {
10
+ setupCanvasEvents: () => void;
11
+ removeCanvasEvents: () => void;
12
+ setupKeyboardEvents: () => () => void;
13
+ };
@@ -0,0 +1,8 @@
1
+ export declare function loadFont(fontFamily: string): Promise<void>;
2
+ export declare function preloadAllFonts(): Promise<void>;
3
+ export declare function useFontLoader(): {
4
+ loadingFont: import("vue").Ref<string | null, string | null>;
5
+ loadFont: typeof loadFont;
6
+ loadedFonts: Set<string>;
7
+ preloadAllFonts: typeof preloadAllFonts;
8
+ };
@@ -0,0 +1,38 @@
1
+ /**
2
+ * 引导资源渲染(MASK / DOTTED_LINE 等)
3
+ * 抽离 clearGuideResources / renderGuideResources,并维护 maskOverlay/maskClipPath 引用
4
+ */
5
+ import { Image as FabricImage } from 'fabric';
6
+ import type { Canvas } from 'fabric';
7
+ type FabricImageInstance = InstanceType<typeof FabricImage> & {
8
+ customData?: Record<string, unknown>;
9
+ };
10
+ export declare function useGuideResources(options: {
11
+ getCanvas: () => Canvas | null;
12
+ guideResourceRole: string;
13
+ isGuideResource: (res: any) => boolean;
14
+ bringObjectToFront: (obj: any) => void;
15
+ scaleResourceToCanvas: (img: any, resource: any) => void;
16
+ loadFabricImage: (src: string, callback: (img: FabricImageInstance) => void, opts?: {
17
+ crossOrigin?: string;
18
+ }) => void;
19
+ getGuideRect?: () => any;
20
+ /** 拉取 Guideline JSON(与 fileToken 代理一致) */
21
+ toProxyUrl: (url: string) => string;
22
+ /**
23
+ * 若已存在内存中的 Guideline(如拖动分片后写回 templateJsonByUrlKey),
24
+ * tryRender 优先使用其而非重新 fetch,使岛外压暗 / 蒙版位置与 bounds 一致。
25
+ */
26
+ getCachedSplitGuidelineJson?: (templateJsonUrl: string) => Record<string, unknown> | null | undefined;
27
+ /** tryRender 解析出 psdJson 后写回缓存,供后续拖动与导出共用 */
28
+ setCachedSplitGuidelineJson?: (templateJsonUrl: string, json: Record<string, unknown>) => void;
29
+ }): {
30
+ clearGuideResources: () => void;
31
+ renderGuideResources: (resources?: any[]) => void;
32
+ tryRenderCompleteSplitPieceMaskGuides: (diecutData: any, selectedSize?: string | string[], restrictToGroupId?: string | null, overridePsdJson?: Record<string, unknown> | null) => Promise<boolean>;
33
+ syncCompleteSplitZoneDimToViewport: () => boolean;
34
+ restoreGuideStackOrder: () => void;
35
+ getMaskClipPath: () => any;
36
+ getMaskOverlay: () => any;
37
+ };
38
+ export {};
@@ -0,0 +1,10 @@
1
+ import type { Canvas } from 'fabric';
2
+ export declare function useImageHandler(getCanvas: () => Canvas | null, syncLayers: () => void, syncToolState: (obj?: any) => void): {
3
+ handleUpload: (event: any) => Promise<void>;
4
+ addImageFromUrl: (url: string) => Promise<void>;
5
+ addRect: () => void;
6
+ addCircle: () => void;
7
+ loadFabricImage: (src: string, callback: (img: any) => void, options?: {
8
+ crossOrigin?: string;
9
+ }) => Promise<void>;
10
+ };
@@ -0,0 +1,52 @@
1
+ /**
2
+ * 图层操作管理 Composable
3
+ * 负责图层的选择、移动、复制、删除、变换等操作
4
+ */
5
+ import type { Canvas } from 'fabric';
6
+ import type { Ref } from 'vue';
7
+ export interface UseLayerOperationsOptions {
8
+ getCanvas: () => Canvas | null;
9
+ layers: Ref<any[]>;
10
+ activeLayerId: Ref<string | number | undefined>;
11
+ activeTab: Ref<string>;
12
+ objectIndex: Ref<number>;
13
+ incrementObjectIndex: () => void;
14
+ isLayerToolTarget: (obj: any) => boolean;
15
+ syncLayers: () => void;
16
+ syncImageToolState: (active?: any, autoSwitchTab?: boolean) => void;
17
+ syncLayerToolState: (active?: any) => void;
18
+ syncTextToolState: (active?: any, autoSwitchTab?: boolean) => void;
19
+ queuePreviewUpdate: (reason: string, meta?: {
20
+ immediate?: boolean;
21
+ }) => void;
22
+ /** 与 handleObjectModified 中 notify 一致,用于不经过 Fabric 事件时仍通知父组件设计已变更 */
23
+ notifyDesignChanged?: () => void;
24
+ /** 复制等:置于用户层最顶、仍低于引导/遮罩 */
25
+ insertBelowGuideLayersTopMost: (obj: any) => void;
26
+ bringGuideLayersToFront: () => void;
27
+ /** 排序后恢复蒙版在底、压暗/虚线在上(避免 bringGuideLayersToFront 把半透明蒙版盖在设计上) */
28
+ restoreGuideStackOrder: () => void;
29
+ /** 平铺层缩放(与「平铺缩放」滑块同源) */
30
+ updateImagePatternScale?: (value: number) => void | Promise<void>;
31
+ }
32
+ export declare function useLayerOperations(options: UseLayerOperationsOptions): {
33
+ moveLayerInStack: (obj: any, direction: any) => boolean;
34
+ selectLayer: (layer: any) => void;
35
+ removeSelected: () => void;
36
+ deleteLayerById: (layer: any) => void;
37
+ deleteSelectedLayer: () => void;
38
+ moveLayerById: (layerId: any, direction: any) => Promise<void>;
39
+ duplicateLayerById: (layerId: any) => Promise<void>;
40
+ duplicateLayer: () => Promise<void>;
41
+ moveLayer: (direction: any) => Promise<void>;
42
+ flipLayer: (axis: any) => void;
43
+ rotateLayer: (direction?: string) => void;
44
+ scaleLayer: (direction: any) => void;
45
+ alignLayer: (position: any) => void;
46
+ centerLayer: () => void;
47
+ updateLayerOpacity: (value: any) => void;
48
+ nudgeSelectedLayer: (dx: number, dy: number, step?: number) => boolean;
49
+ toggleLayerVisibility: (layer: any) => void;
50
+ toggleLayerLock: (layer: any) => void;
51
+ reorderLayersByVisualMove: (fromIdx: number, toIdx: number) => void;
52
+ };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * 图层同步 Composable
3
+ * 维护 layers / activeLayerId,提供 syncLayers 供 useCanvasStateByDiecut 等使用
4
+ */
5
+ import { type Ref } from 'vue';
6
+ export interface LayerItem {
7
+ id: string | number;
8
+ name: string;
9
+ object: any;
10
+ visible: boolean;
11
+ locked: boolean;
12
+ }
13
+ export interface UseLayerSyncOptions {
14
+ getCanvas: () => any;
15
+ }
16
+ export declare function useLayerSync(options: UseLayerSyncOptions): {
17
+ layers: Ref<{
18
+ id: string | number;
19
+ name: string;
20
+ object: any;
21
+ visible: boolean;
22
+ locked: boolean;
23
+ }[], LayerItem[] | {
24
+ id: string | number;
25
+ name: string;
26
+ object: any;
27
+ visible: boolean;
28
+ locked: boolean;
29
+ }[]>;
30
+ activeLayerId: Ref<string | number | undefined, string | number | undefined>;
31
+ syncLayers: () => void;
32
+ };
@@ -0,0 +1,11 @@
1
+ import type { LicenseConfig } from '../../../types';
2
+ export interface UseLicenseOptions {
3
+ /** 是否在成功/刷新时设置 globalThis 与 window 上的 LICENSE_TOKEN、LICENSE_API_URL */
4
+ setGlobalToken?: boolean;
5
+ }
6
+ export declare function useLicense(licenseConfig?: LicenseConfig, options?: UseLicenseOptions): {
7
+ licenseReady: import("vue").Ref<boolean, boolean>;
8
+ licenseError: import("vue").Ref<string | null, string | null>;
9
+ initializeLicense: () => Promise<void>;
10
+ cleanup: () => void;
11
+ };
@@ -0,0 +1,76 @@
1
+ /**
2
+ * 对象添加管理 Composable
3
+ * 负责图片、文本、图形(矩形、圆形)的添加操作
4
+ */
5
+ import type { Canvas } from 'fabric';
6
+ import { Image as FabricImage } from 'fabric';
7
+ import type { Ref } from 'vue';
8
+ import { type PsdLayer } from '../utils/dataBuilders';
9
+ export type FabricImageInstance = InstanceType<typeof FabricImage> & {
10
+ customData?: Record<string, unknown>;
11
+ };
12
+ export interface UseObjectAdderOptions {
13
+ getCanvas: () => Canvas | null;
14
+ objectIndex: Ref<number>;
15
+ incrementObjectIndex: () => void;
16
+ assignMeta: (obj: any, label: string) => void;
17
+ loadFabricImage: (src: string, callback: (img: FabricImageInstance) => void, options?: {
18
+ crossOrigin?: string;
19
+ }) => Promise<void>;
20
+ /** 平铺图案从 URL 加载 HTMLImageElement(还原设计时用 savedSrc / patternSource) */
21
+ loadImage: (url: string) => Promise<HTMLImageElement>;
22
+ moveLayerInStack: (obj: any, direction: string) => boolean;
23
+ bringGuideLayersToFront: () => void;
24
+ syncLayers: () => void;
25
+ syncImageToolState: (active?: any, autoSwitchTab?: boolean) => void;
26
+ syncLayerToolState: (active?: any) => void;
27
+ syncTextToolState: (active?: any, autoSwitchTab?: boolean) => void;
28
+ updateActive: () => void;
29
+ insertBelowGuideLayers: (obj: any) => void;
30
+ textToolState: Ref<{
31
+ strokeWidth?: number;
32
+ }>;
33
+ urlInput?: Ref<string>;
34
+ /**
35
+ * 当前模板 PSD(canvasWidth/canvasHeight 等);返回 null 时新增图片仍按 Fabric 全宽缩放(旧行为)。
36
+ */
37
+ getGuidelinePsdCanvasSpec?: () => {
38
+ layerList?: PsdLayer[] | undefined;
39
+ psdJson: {
40
+ canvasWidth?: number;
41
+ canvasHeight?: number;
42
+ };
43
+ targetBounds?: {
44
+ left: number;
45
+ top: number;
46
+ width: number;
47
+ height: number;
48
+ };
49
+ fitMode?: 'maxSideToFragmentWidth';
50
+ } | null;
51
+ /** Zone 聚焦后新增对象应落在当前可见视口内;返回 null 时沿用 PSD/画布布局。 */
52
+ getNewObjectViewportRect?: () => NewObjectLayoutRect | null;
53
+ onUploadSizeExceeded?: (file: File) => void;
54
+ }
55
+ type FabricJsonObject = Record<string, any>;
56
+ type NewObjectLayoutRect = {
57
+ left: number;
58
+ top: number;
59
+ width: number;
60
+ height: number;
61
+ fitMode?: 'maxSideToFragmentWidth';
62
+ };
63
+ export declare function useObjectAdder(options: UseObjectAdderOptions): {
64
+ handleUpload: (event: any) => Promise<void>;
65
+ addImageFromUrl: (url: any) => Promise<void>;
66
+ handleUrlPaste: (event: any) => void;
67
+ addText: () => Promise<void>;
68
+ addLabel: () => Promise<void>;
69
+ addRect: () => void;
70
+ addCircle: () => void;
71
+ addImageFromJson: (jsonObj: FabricJsonObject) => Promise<FabricImageInstance | null>;
72
+ addTextFromJson: (jsonObj: FabricJsonObject) => any;
73
+ addPatternRectFromJson: (jsonObj: FabricJsonObject) => Promise<any>;
74
+ applyFabricJsonPropsToObject: (target: any, json: FabricJsonObject) => void;
75
+ };
76
+ export {};
@@ -0,0 +1,31 @@
1
+ /**
2
+ * 图案铺设 Composable
3
+ * 负责图片平铺/取消平铺、图案缩放等
4
+ */
5
+ import { getPatternSourceUrl } from '../utils/pattern';
6
+ export type FabricImageInstance = any;
7
+ export interface UsePatternHandlerOptions {
8
+ getCanvas: () => any;
9
+ loadImage: (url: string) => Promise<HTMLImageElement>;
10
+ loadFabricImage: (src: string, callback: (img: FabricImageInstance) => void, options?: {
11
+ crossOrigin?: string;
12
+ }) => Promise<void>;
13
+ syncLayers: () => void;
14
+ syncImageToolState: (obj?: any, autoSwitchTab?: boolean) => void;
15
+ updateActive: () => void;
16
+ insertBelowGuideLayers: (obj: any) => void;
17
+ bringGuideLayersToFront: () => void;
18
+ queuePreviewUpdate: (reason: string) => void;
19
+ /** 平铺 replace 期间跳过 object:added 的 insertBelowGuideLayers,避免栈序被二次打乱 */
20
+ runWithSuppressedObjectAddedGuideReorder?: (fn: () => void) => void;
21
+ }
22
+ /** 按当前 patternPhase 锚点重算 cover 几何(full 模式:以锚点格中心展开 4×4)并标记重绘 */
23
+ export declare function recenterPatternCoverFromPhase(obj: any): void;
24
+ /** 拖动结束后将 single 模式展开为完整平铺网格 */
25
+ export declare function expandPatternLayerToFullGrid(obj: any): void;
26
+ export declare function usePatternHandler(options: UsePatternHandlerOptions): {
27
+ applyImagePattern: (mode: any) => Promise<void>;
28
+ updateImagePatternScale: (value: any) => Promise<void>;
29
+ refreshPatternRectsForViewport: () => void;
30
+ getPatternSourceUrl: typeof getPatternSourceUrl;
31
+ };