@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,48 @@
1
+ import type { BasicInfo, DeformationResponse, DeformationGroup, DeformationColorGroup } from '../../../types';
2
+ export declare function useTemplateManager(effectiveBasicInfo: () => BasicInfo | null, effectiveDeformationData: () => DeformationResponse | null): {
3
+ selectedTemplateIndex: import("vue").Ref<number, number>;
4
+ previewTemplateIndex: import("vue").Ref<number, number>;
5
+ selectedSize: import("vue").Ref<string, string>;
6
+ selectedColor: import("vue").Ref<string, string>;
7
+ selectedMode: import("vue").Ref<string, string>;
8
+ showTemplateModal: import("vue").Ref<boolean, boolean>;
9
+ loadingTemplate: import("vue").Ref<boolean, boolean>;
10
+ templateError: import("vue").Ref<string, string>;
11
+ isNewDeformationFormat: import("vue").ComputedRef<boolean>;
12
+ colorOptions: import("vue").ComputedRef<string[]>;
13
+ colorLabelByValue: import("vue").ComputedRef<Record<string, string>>;
14
+ sizeOptions: import("vue").ComputedRef<string[]>;
15
+ sizeOptionsFromDeformation: import("vue").ComputedRef<string[]>;
16
+ templateItems: import("vue").ComputedRef<{
17
+ id: string;
18
+ name: string | undefined;
19
+ resources: {
20
+ name?: string;
21
+ url?: string;
22
+ }[];
23
+ jsonURL: string | undefined;
24
+ thumb: any;
25
+ }[]>;
26
+ templateTotal: import("vue").ComputedRef<number>;
27
+ canPrevTemplate: import("vue").ComputedRef<boolean>;
28
+ canNextTemplate: import("vue").ComputedRef<boolean>;
29
+ selectedTemplate: import("vue").ComputedRef<{
30
+ id: string;
31
+ name: string | undefined;
32
+ resources: {
33
+ name?: string;
34
+ url?: string;
35
+ }[];
36
+ jsonURL: string | undefined;
37
+ thumb: any;
38
+ }>;
39
+ pickThumb: (resources?: any[]) => any;
40
+ getDeformationDataArray: () => DeformationGroup[] | DeformationColorGroup[];
41
+ goPrevTemplate: () => void;
42
+ goNextTemplate: () => void;
43
+ setPreviewTemplateIndex: (index: number) => void;
44
+ openTemplateModal: () => void;
45
+ closeTemplateModal: () => void;
46
+ selectTemplate: (index: number) => void;
47
+ setLoadingTemplate: (loading: boolean, error?: string) => void;
48
+ };
@@ -0,0 +1,19 @@
1
+ import type { Canvas } from 'fabric';
2
+ export declare function useTextHandler(getCanvas: () => Canvas | null, syncLayers: () => void, syncToolState: (obj?: any) => void): {
3
+ addText: () => Promise<void>;
4
+ addLabel: () => Promise<void>;
5
+ updateTextProp: (propName: string, value: any) => void;
6
+ applyTextStyle: (style: {
7
+ fontFamily?: string;
8
+ fontSize?: number;
9
+ fill?: string;
10
+ strokeWidth?: number;
11
+ stroke?: string;
12
+ charSpacing?: number;
13
+ lineHeight?: number;
14
+ fontWeight?: string | number;
15
+ fontStyle?: string;
16
+ textAlign?: string;
17
+ }) => void;
18
+ isTextObject: (obj: any) => boolean;
19
+ };
@@ -0,0 +1,101 @@
1
+ export declare function useToolState(): {
2
+ imageToolState: import("vue").Ref<{
3
+ visible: boolean;
4
+ mode: string;
5
+ scale: number;
6
+ isPattern: boolean;
7
+ }, {
8
+ visible: boolean;
9
+ mode: string;
10
+ scale: number;
11
+ isPattern: boolean;
12
+ } | {
13
+ visible: boolean;
14
+ mode: string;
15
+ scale: number;
16
+ isPattern: boolean;
17
+ }>;
18
+ layerToolState: import("vue").Ref<{
19
+ visible: boolean;
20
+ opacity: number;
21
+ }, {
22
+ visible: boolean;
23
+ opacity: number;
24
+ } | {
25
+ visible: boolean;
26
+ opacity: number;
27
+ }>;
28
+ textToolState: import("vue").Ref<{
29
+ visible: boolean;
30
+ fontFamily: string;
31
+ fontSize: number;
32
+ charSpacing: number;
33
+ lineHeight: number;
34
+ fill: string;
35
+ strokeWidth: number;
36
+ stroke: string;
37
+ textAlign: string;
38
+ fontWeight: string | number;
39
+ fontStyle: string;
40
+ underline: boolean;
41
+ padding: number;
42
+ }, {
43
+ visible: boolean;
44
+ fontFamily: string;
45
+ fontSize: number;
46
+ charSpacing: number;
47
+ lineHeight: number;
48
+ fill: string;
49
+ strokeWidth: number;
50
+ stroke: string;
51
+ textAlign: string;
52
+ fontWeight: string | number;
53
+ fontStyle: string;
54
+ underline: boolean;
55
+ padding: number;
56
+ } | {
57
+ visible: boolean;
58
+ fontFamily: string;
59
+ fontSize: number;
60
+ charSpacing: number;
61
+ lineHeight: number;
62
+ fill: string;
63
+ strokeWidth: number;
64
+ stroke: string;
65
+ textAlign: string;
66
+ fontWeight: string | number;
67
+ fontStyle: string;
68
+ underline: boolean;
69
+ padding: number;
70
+ }>;
71
+ showToolPanel: import("vue").ComputedRef<boolean>;
72
+ showImageTools: (mode?: string, scale?: number, isPattern?: boolean) => void;
73
+ showTextTools: (textObj?: any) => void;
74
+ showLayerTools: (opacity?: number) => void;
75
+ hideAllTools: () => void;
76
+ updateImageToolState: (updates: Partial<{
77
+ visible: boolean;
78
+ mode: string;
79
+ scale: number;
80
+ isPattern: boolean;
81
+ }>) => void;
82
+ updateTextToolState: (updates: Partial<{
83
+ visible: boolean;
84
+ fontFamily: string;
85
+ fontSize: number;
86
+ charSpacing: number;
87
+ lineHeight: number;
88
+ fill: string;
89
+ strokeWidth: number;
90
+ stroke: string;
91
+ textAlign: string;
92
+ fontWeight: string | number;
93
+ fontStyle: string;
94
+ underline: boolean;
95
+ padding: number;
96
+ }>) => void;
97
+ updateLayerToolState: (updates: Partial<{
98
+ visible: boolean;
99
+ opacity: number;
100
+ }>) => void;
101
+ };
@@ -0,0 +1,49 @@
1
+ /**
2
+ * 工具栏状态同步 Composable
3
+ * 根据当前选中的画布对象同步图片/图层/文本工具面板状态
4
+ */
5
+ import type { Ref } from 'vue';
6
+ export interface ImageToolState {
7
+ visible: boolean;
8
+ mode: string;
9
+ scale: number;
10
+ isPattern: boolean;
11
+ }
12
+ export interface LayerToolState {
13
+ visible: boolean;
14
+ opacity: number;
15
+ }
16
+ export interface TextToolState {
17
+ visible: boolean;
18
+ fontFamily: string;
19
+ fontSize: number;
20
+ charSpacing: number;
21
+ lineHeight: number;
22
+ fill: string;
23
+ strokeWidth: number;
24
+ stroke: string;
25
+ textAlign: string;
26
+ fontWeight: string | number;
27
+ fontStyle: string;
28
+ underline: boolean;
29
+ padding: number;
30
+ }
31
+ export interface UseToolStateSyncOptions {
32
+ getCanvas: () => any;
33
+ imageToolState: Ref<ImageToolState>;
34
+ layerToolState: Ref<LayerToolState>;
35
+ textToolState: Ref<TextToolState>;
36
+ activeTab: Ref<string>;
37
+ activeLayerId: Ref<string | number | undefined>;
38
+ guideResourceRole?: string;
39
+ /** 非 theme1:选中对象时切到该 Tab(一般为 layer) */
40
+ selectionAutoTab?: Ref<'layer' | 'add'>;
41
+ /** theme1:文本 / 图片 / 其它 对应 addText、upload、productDetail */
42
+ isTheme1Layout?: Ref<boolean>;
43
+ }
44
+ export declare function useToolStateSync(options: UseToolStateSyncOptions): {
45
+ syncImageToolState: (active?: any, autoSwitchTab?: boolean) => void;
46
+ syncLayerToolState: (active?: any) => void;
47
+ syncTextToolState: (active?: any, autoSwitchTab?: boolean) => void;
48
+ updateActive: (autoSwitchTab?: boolean) => void;
49
+ };
@@ -0,0 +1,11 @@
1
+ export interface UseWorkerManagerOptions {
2
+ maskWorkerPath?: string;
3
+ copyWorkerPath?: string;
4
+ }
5
+ export declare function useWorkerManager(options?: UseWorkerManagerOptions): {
6
+ ensureMaskWorker: () => void;
7
+ ensureCopyWorker: () => void;
8
+ renderMaskInWorker: (payload: any) => Promise<Blob | null>;
9
+ copyToDiecutsInWorker: (payload: any) => Promise<any>;
10
+ dispose: () => void;
11
+ };
@@ -0,0 +1,8 @@
1
+ export interface FontEntry {
2
+ family: string;
3
+ googleSlug: string;
4
+ category: 'sans-serif' | 'serif' | 'display' | 'handwriting' | 'monospace';
5
+ }
6
+ export declare const GOOGLE_FONTS: FontEntry[];
7
+ export declare const ALL_FONTS: string[];
8
+ export declare const DEFAULT_FONT_FAMILY: string;
@@ -0,0 +1,22 @@
1
+ import { type InjectionKey, type Ref } from 'vue';
2
+ export type FabricGuideItem = {
3
+ id: string;
4
+ kind: 'h' | 'v';
5
+ pos: number;
6
+ };
7
+ /** 画布上是否至少有一条用户标尺参考线(供顶栏等跨 provide 树使用,与 clear handler 同为单实例约定) */
8
+ export declare const userCanvasGuidesNonEmpty: Ref<boolean, boolean>;
9
+ export type EditorCanvasGuidesContext = {
10
+ guides: Ref<FabricGuideItem[]>;
11
+ dragPreview: Ref<{
12
+ kind: 'h' | 'v';
13
+ pos: number;
14
+ } | null>;
15
+ selectedGuideId: Ref<string | null>;
16
+ selectGuide: (id: string | null) => void;
17
+ removeGuide: (id: string) => void;
18
+ clearAllGuides: () => void;
19
+ };
20
+ export declare const EDITOR_CANVAS_GUIDES_KEY: InjectionKey<EditorCanvasGuidesContext>;
21
+ export declare function registerUserCanvasGuidesClearHandler(fn: (() => void) | null): void;
22
+ export declare function invokeUserCanvasGuidesClear(): void;
@@ -0,0 +1,104 @@
1
+ import { Rect } from 'fabric';
2
+ type PatternLayerOptions = ConstructorParameters<typeof Rect>[0] & {
3
+ patternElement?: CanvasImageSource | null;
4
+ patternTileWidth?: number;
5
+ patternTileHeight?: number;
6
+ patternScale?: number;
7
+ patternPhaseX?: number;
8
+ patternPhaseY?: number;
9
+ patternGapX?: number;
10
+ patternGapY?: number;
11
+ patternMode?: string;
12
+ patternSeed?: number;
13
+ patternTileFlipX?: boolean;
14
+ patternTileFlipY?: boolean;
15
+ patternTileAngle?: number;
16
+ };
17
+ export declare const DEFAULT_PATTERN_TILE_GAP = 0;
18
+ export declare const PATTERN_RENDER_MODE_SINGLE = "single";
19
+ export declare const PATTERN_RENDER_MODE_FULL = "full";
20
+ export declare function getPatternRenderMode(obj: any): string;
21
+ export declare function isPatternSingleRenderMode(obj: any): boolean;
22
+ export declare function setPatternRenderMode(obj: any, mode: string): void;
23
+ export declare function positiveModulo(value: number, size: number): number;
24
+ export type PatternTileMetrics = {
25
+ tileW: number;
26
+ tileH: number;
27
+ strideW: number;
28
+ strideH: number;
29
+ scale: number;
30
+ };
31
+ /** 与 PatternLayer._render 一致的平铺块尺寸与步长 */
32
+ export declare function resolvePatternTileMetrics(obj: any): PatternTileMetrics;
33
+ export type PatternTileGridLayout = PatternTileMetrics & {
34
+ centerX: number;
35
+ centerY: number;
36
+ sceneLeft: number;
37
+ sceneTop: number;
38
+ startSceneX: number;
39
+ startSceneY: number;
40
+ startX: number;
41
+ startY: number;
42
+ phaseX: number;
43
+ phaseY: number;
44
+ mode: string;
45
+ };
46
+ /** 与 PatternLayer._render 一致的网格锚点(startSceneX/Y,非裸 patternPhase) */
47
+ export declare function getPatternTileGridLayout(obj: any): PatternTileGridLayout;
48
+ /** 场景坐标 → 所在平铺格左上角(场景坐标),与绘制网格对齐 */
49
+ export declare function scenePointToPatternTileSceneOrigin(obj: any, sceneX: number, sceneY: number): {
50
+ left: number;
51
+ top: number;
52
+ tileW: number;
53
+ tileH: number;
54
+ };
55
+ export declare function getPatternLayerGap(obj: any): {
56
+ x: number;
57
+ y: number;
58
+ };
59
+ /** 平铺单元格基础变换(来自转平铺前图片的 flipX/flipY/angle) */
60
+ export declare function resolvePatternTileTransform(obj: any): {
61
+ flipX: boolean;
62
+ flipY: boolean;
63
+ angle: number;
64
+ };
65
+ export declare function resolvePatternTileFlip(obj: any): {
66
+ flipX: boolean;
67
+ flipY: boolean;
68
+ };
69
+ export declare function drawPatternTile(ctx: CanvasRenderingContext2D, source: CanvasImageSource, x: number, y: number, w: number, h: number, flipX?: boolean, flipY?: boolean, angle?: number): void;
70
+ /**
71
+ * 自定义平铺图层:只绘制当前对象本地可见区域内的 tile。
72
+ * 拖动时更新 patternPhaseX/Y,不移动对象几何,避免 fabric.Pattern offset 与 cover rect 混用。
73
+ */
74
+ export declare class PatternLayer extends Rect {
75
+ customData?: Record<string, any>;
76
+ patternElement: CanvasImageSource | null;
77
+ patternTileWidth: number;
78
+ patternTileHeight: number;
79
+ patternScale: number;
80
+ patternPhaseX: number;
81
+ patternPhaseY: number;
82
+ patternGapX: number;
83
+ patternGapY: number;
84
+ patternMode: string;
85
+ patternSeed: number;
86
+ patternTileFlipX: boolean;
87
+ patternTileFlipY: boolean;
88
+ patternTileAngle: number;
89
+ /** mouse:down 锁定的可拖动平铺格左上角(场景坐标),与拖动幽灵块一致 */
90
+ patternActiveTileLeft: number | null;
91
+ patternActiveTileTop: number | null;
92
+ static type: string;
93
+ constructor(options?: PatternLayerOptions);
94
+ setActiveDragTile(sceneLeft: number, sceneTop: number): void;
95
+ clearActiveDragTile(): void;
96
+ setPatternElement(source: CanvasImageSource | null): void;
97
+ setPatternPhase(x: number, y: number): void;
98
+ setPatternGap(x: number, y: number): void;
99
+ _render(ctx: CanvasRenderingContext2D): void;
100
+ }
101
+ export declare function isPatternLayer(obj: any): obj is PatternLayer;
102
+ /** Fabric clone() 不会复制 patternElement 等运行时字段,需在 clone 后手动同步 */
103
+ export declare function copyPatternLayerRuntimeState(src: any, dst: any): boolean;
104
+ export {};
@@ -0,0 +1,167 @@
1
+ import type { ProductItem, BasicInfo, DiecutResponse, DeformationResponse, EditorOptions, ProductListApi, ProductDetailApi, LicenseConfig, DiecutStateMapResult, GalleryApi, CustomSidebarTabDef, EditorUiTheme, RenderAllTemplatesByColorGroup } from '../../types';
2
+ import './editor.css';
3
+ type EditorProps = {
4
+ product?: ProductItem | null;
5
+ basicInfo?: BasicInfo | null;
6
+ diecutData?: DiecutResponse | null;
7
+ deformationData?: DeformationResponse | null;
8
+ options?: EditorOptions;
9
+ productListApi?: ProductListApi;
10
+ productDetailApi?: ProductDetailApi;
11
+ productListPageSize?: number;
12
+ productListInitialPage?: number;
13
+ /** 进入页面时默认选中的产品 ID(来自 URL),仅当在第一页列表中时才选中 */
14
+ initialProductId?: string | number;
15
+ fileBaseUrl?: string;
16
+ licenseConfig?: LicenseConfig;
17
+ fileToken?: string | null;
18
+ /** 画布变更时调用,传入 getter:调用可获取 { stateMap, selectedColor, selectedSize } */
19
+ onObjectModified?: (getDiecutStateMap: () => DiecutStateMapResult) => void;
20
+ onRenderAllTemplates?: (renderMethod: () => Promise<Array<{
21
+ index: number;
22
+ bitmap: ImageBitmap | null;
23
+ }>>) => Promise<Array<{
24
+ index: number;
25
+ bitmap: ImageBitmap | null;
26
+ }> | void>;
27
+ onSaveDesign?: () => void | Promise<void>;
28
+ onAddToCart?: () => void | Promise<void>;
29
+ onAddToCartSuccess?: (payload?: {
30
+ addedCount?: number;
31
+ psTaskCode?: string;
32
+ }) => void;
33
+ onAddToCartError?: (msg?: string) => void;
34
+ onGoHome?: () => void;
35
+ onTemplateReady?: () => void | Promise<void>;
36
+ /** 语言:与主应用一致,如 zh-CN、en-US、ja-JP、ko-KR、vi-VN;兼容旧值 zh / en */
37
+ locale?: string;
38
+ /** 自定义文案覆盖,key 与 locales 中一致 */
39
+ messages?: Record<string, string>;
40
+ /** 图库 API(我的图库/官方图库),传入则左侧栏显示图库 Tab */
41
+ galleryApi?: GalleryApi | null;
42
+ /** 左侧栏额外 Tab(竖条 + 内容区由宿主传入 Vue 组件) */
43
+ customSidebarTabs?: CustomSidebarTabDef[];
44
+ };
45
+ declare var __VLS_21: {}, __VLS_27: {}, __VLS_134: {}, __VLS_140: {};
46
+ type __VLS_Slots = {} & {
47
+ 'topbar-left'?: (props: typeof __VLS_21) => any;
48
+ } & {
49
+ 'topbar-right'?: (props: typeof __VLS_27) => any;
50
+ } & {
51
+ 'topbar-left'?: (props: typeof __VLS_134) => any;
52
+ } & {
53
+ 'topbar-right'?: (props: typeof __VLS_140) => any;
54
+ };
55
+ declare const __VLS_component: import("vue").DefineComponent<EditorProps, {
56
+ renderAllTemplates: () => Promise<Array<{
57
+ index: number;
58
+ bitmap: ImageBitmap | null;
59
+ blob?: Blob;
60
+ }>>;
61
+ renderAllTemplatesByColor: () => Promise<RenderAllTemplatesByColorGroup[]>;
62
+ collectRenderBundle: () => Promise<import("../../utils/renderedImagesDB").RenderBundle>;
63
+ collectRenderBundleForSize: (size: string) => Promise<import("../../utils/renderedImagesDB").RenderBundle>;
64
+ collectRenderBundlesForSizesColors: (sizes?: string[], colors?: string[]) => Promise<Array<{
65
+ size: string;
66
+ color: string;
67
+ bundle: any;
68
+ }>>;
69
+ renderEffectImagesForSizesColors: (sizes?: string[], colors?: string[]) => Promise<Array<{
70
+ size: string;
71
+ color: string;
72
+ index: number;
73
+ name?: string;
74
+ blob: Blob;
75
+ }>>;
76
+ triggerRenderAllTemplates: () => Promise<Array<{
77
+ index: number;
78
+ bitmap: ImageBitmap | null;
79
+ }>>;
80
+ getDiecutStateMap: () => DiecutStateMapResult;
81
+ getCurrentProductName: () => any;
82
+ getCurrentProductId: () => any;
83
+ getSku: () => any;
84
+ /** 当前尺码下是否同时存在单片与多片两种模板(与画布顶栏可切换模式一致);仅单片时宿主可跳过保存前模式确认 */
85
+ getHasDualTemplateModes: () => boolean;
86
+ getColorOptions: () => string[];
87
+ getSelectedColors: () => string[];
88
+ getSelectedSizes: () => string[];
89
+ setSelectedColor: (color: string) => void;
90
+ setSelectedSize: (size: string) => void;
91
+ setSelectedMode: (mode: unknown) => void;
92
+ loadCanvasJson: (json: any, onDone?: () => void | Promise<void>, loadOptions?: {
93
+ skipRender?: boolean;
94
+ }) => Promise<void>;
95
+ loadDesignStateMap: (payload: Record<string, unknown> | {
96
+ stateMap: Record<string, unknown>;
97
+ selectedColor?: string;
98
+ selectedSize?: string;
99
+ selectedColors?: string[];
100
+ selectedSizes?: string[];
101
+ selectedMode?: string;
102
+ designCanvasSize?: number;
103
+ designCanvasHeight?: number;
104
+ }) => Promise<void>;
105
+ getCurrentPreviewImageBlob: (opts?: {
106
+ renderSize?: number;
107
+ }) => Promise<Blob | null>;
108
+ getPreviewImageBlobByIndex: (index: number, opts?: {
109
+ renderSize?: number;
110
+ }) => Promise<Blob | null>;
111
+ /** 按图片 URL 加入画布(与图库选图一致);theme1 上传 Tab 宿主上传完成后调用 */
112
+ addImageFromUrl: (url: any) => Promise<void>;
113
+ /** 切换实时渲染模式 */
114
+ toggleLiveRender: () => void;
115
+ /** 获取当前是否处于实时渲染模式 */
116
+ getIsLiveRender: () => boolean;
117
+ /** 设置实时渲染模式 */
118
+ setIsLiveRender: (v: boolean) => void;
119
+ /** 获取预览渲染模式 */
120
+ getPreviewRenderMode: () => "fast" | "live";
121
+ /** 设置预览渲染模式 */
122
+ setPreviewRenderMode: (v: "fast" | "live") => void;
123
+ /** 获取实时渲染组件 ref */
124
+ getLiveRenderViewer: () => any;
125
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
126
+ "update:locale": (value: "zh-CN" | "en-US" | "ja-JP" | "ko-KR" | "vi-VN") => any;
127
+ "update:uiTheme": (value: EditorUiTheme) => any;
128
+ }, string, import("vue").PublicProps, Readonly<EditorProps> & Readonly<{
129
+ "onUpdate:locale"?: ((value: "zh-CN" | "en-US" | "ja-JP" | "ko-KR" | "vi-VN") => any) | undefined;
130
+ "onUpdate:uiTheme"?: ((value: EditorUiTheme) => any) | undefined;
131
+ }>, {
132
+ product: ProductItem | null;
133
+ fileToken: string | null;
134
+ onObjectModified: (getDiecutStateMap: () => DiecutStateMapResult) => void;
135
+ onTemplateReady: () => void | Promise<void>;
136
+ onSaveDesign: () => void | Promise<void>;
137
+ onAddToCart: () => void | Promise<void>;
138
+ onGoHome: () => void;
139
+ locale: string;
140
+ galleryApi: GalleryApi | null;
141
+ customSidebarTabs: CustomSidebarTabDef[];
142
+ basicInfo: BasicInfo | null;
143
+ diecutData: DiecutResponse | null;
144
+ deformationData: DeformationResponse | null;
145
+ options: EditorOptions;
146
+ licenseConfig: LicenseConfig;
147
+ onRenderAllTemplates: (renderMethod: () => Promise<Array<{
148
+ index: number;
149
+ bitmap: ImageBitmap | null;
150
+ }>>) => Promise<Array<{
151
+ index: number;
152
+ bitmap: ImageBitmap | null;
153
+ }> | void>;
154
+ onAddToCartSuccess: (payload?: {
155
+ addedCount?: number;
156
+ psTaskCode?: string;
157
+ }) => void;
158
+ onAddToCartError: (msg?: string) => void;
159
+ messages: Record<string, string>;
160
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
161
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
162
+ export default _default;
163
+ type __VLS_WithSlots<T, S> = T & {
164
+ new (): {
165
+ $slots: S;
166
+ };
167
+ };
@@ -0,0 +1,31 @@
1
+ import { type INewData } from "./types";
2
+ type __VLS_Props = {
3
+ fileToken: string;
4
+ newDataList: INewData[];
5
+ designPic?: HTMLCanvasElement | null;
6
+ displayWidth?: number;
7
+ canvasWidth?: number;
8
+ };
9
+ declare function loadModelData(): Promise<void>;
10
+ declare function startBackgroundRenderWithCurrentDesign(): void;
11
+ declare function switchData(idx: number): Promise<void>;
12
+ declare function renderAsync(): Promise<void>;
13
+ declare function rerender(options?: {
14
+ incremental?: boolean;
15
+ }): Promise<void>;
16
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {
17
+ rerender: typeof rerender;
18
+ currentDataIndex: import("vue").Ref<number, number>;
19
+ loadModelData: typeof loadModelData;
20
+ renderAsync: typeof renderAsync;
21
+ switchData: typeof switchData;
22
+ startBackgroundRenderWithCurrentDesign: typeof startBackgroundRenderWithCurrentDesign;
23
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
24
+ "update:currentIndex": (value: number) => any;
25
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
26
+ "onUpdate:currentIndex"?: ((value: number) => any) | undefined;
27
+ }>, {
28
+ canvasWidth: number;
29
+ displayWidth: number;
30
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
31
+ export default _default;
@@ -0,0 +1,2 @@
1
+ import { type IModelData, type INewData, type IDeformationData } from './types';
2
+ export declare function convertToModelData(newData: INewData, deformationData: IDeformationData): IModelData;
@@ -0,0 +1,15 @@
1
+ interface PrefetchMessage {
2
+ type: 'prefetch';
3
+ dataList: {
4
+ jsonURL: string;
5
+ name: string;
6
+ }[];
7
+ currentIndex: number;
8
+ fileToken: string;
9
+ }
10
+ interface ResultMessage {
11
+ type: 'jsonReady' | 'complete' | 'error';
12
+ index?: number;
13
+ json?: any;
14
+ error?: string;
15
+ }