@printine/designer 0.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 (199) hide show
  1. package/README.md +146 -0
  2. package/dist/DesignerRuntimeContext.d.ts +3 -0
  3. package/dist/PrintineDesigner.d.ts +9 -0
  4. package/dist/api/client.d.ts +8 -0
  5. package/dist/api/client.js +82 -0
  6. package/dist/api/common-endpoints.d.ts +12 -0
  7. package/dist/api/design-endpoints.d.ts +18 -0
  8. package/dist/api/endpoints.d.ts +33 -0
  9. package/dist/api/endpoints.js +46 -0
  10. package/dist/api/files-endpoints.d.ts +1 -0
  11. package/dist/assets/icons/aspect_ratio.d.ts +3 -0
  12. package/dist/assets/icons/delete.d.ts +3 -0
  13. package/dist/assets/icons/fit_screen.d.ts +3 -0
  14. package/dist/assets/icons/index.d.ts +11 -0
  15. package/dist/assets/icons/loading_1.d.ts +3 -0
  16. package/dist/assets/icons/loading_2.d.ts +3 -0
  17. package/dist/assets/icons/loading_3.d.ts +3 -0
  18. package/dist/assets/icons/pan.d.ts +3 -0
  19. package/dist/assets/icons/setting.d.ts +3 -0
  20. package/dist/assets/icons/text_color.d.ts +3 -0
  21. package/dist/assets/icons/text_h.d.ts +3 -0
  22. package/dist/assets/icons/text_v.d.ts +3 -0
  23. package/dist/bundled-assets.d.ts +4 -0
  24. package/dist/components/add-design.d.ts +8 -0
  25. package/dist/components/assets-dialog.d.ts +21 -0
  26. package/dist/components/canvas-context-menu.d.ts +6 -0
  27. package/dist/components/color-picker/index.d.ts +10 -0
  28. package/dist/components/context.d.ts +24 -0
  29. package/dist/components/design.d.ts +9 -0
  30. package/dist/components/fonts.d.ts +26 -0
  31. package/dist/components/image-crop.d.ts +4 -0
  32. package/dist/components/image-edit.d.ts +1 -0
  33. package/dist/components/layout/aside.d.ts +3 -0
  34. package/dist/components/layout/bottom-nav/element-menu-sheet.d.ts +11 -0
  35. package/dist/components/layout/bottom-nav/element-sheet.d.ts +11 -0
  36. package/dist/components/layout/bottom-nav/index.d.ts +1 -0
  37. package/dist/components/layout/header.d.ts +5 -0
  38. package/dist/components/loading.d.ts +3 -0
  39. package/dist/components/menus/ai.d.ts +5 -0
  40. package/dist/components/menus/background.d.ts +6 -0
  41. package/dist/components/menus/clipart.d.ts +6 -0
  42. package/dist/components/menus/files.d.ts +7 -0
  43. package/dist/components/menus/image.d.ts +8 -0
  44. package/dist/components/menus/index.d.ts +13 -0
  45. package/dist/components/menus/layer.d.ts +5 -0
  46. package/dist/components/menus/product.d.ts +3 -0
  47. package/dist/components/menus/sca.d.ts +5 -0
  48. package/dist/components/menus/shapes.d.ts +6 -0
  49. package/dist/components/menus/templates.d.ts +6 -0
  50. package/dist/components/menus/text-effects.d.ts +5 -0
  51. package/dist/components/menus/text.d.ts +6 -0
  52. package/dist/components/placement-tab.d.ts +7 -0
  53. package/dist/components/preview/3d.d.ts +7 -0
  54. package/dist/components/preview/graphic.d.ts +7 -0
  55. package/dist/components/preview/index.d.ts +18 -0
  56. package/dist/components/preview/open.d.ts +7 -0
  57. package/dist/components/preview/real-time/3d.d.ts +12 -0
  58. package/dist/components/preview/real-time/graphic.d.ts +18 -0
  59. package/dist/components/preview/real-time/index.d.ts +11 -0
  60. package/dist/components/scale-tools.d.ts +7 -0
  61. package/dist/components/semi-deisgn-config.d.ts +13 -0
  62. package/dist/components/semi-design-link.d.ts +9 -0
  63. package/dist/components/store.d.ts +1 -0
  64. package/dist/components/toolbar.d.ts +2 -0
  65. package/dist/config-D2qm60gf.js +16 -0
  66. package/dist/contracts/api-design.d.ts +176 -0
  67. package/dist/contracts/design.d.ts +86 -0
  68. package/dist/design-7zRpRtv9.js +20331 -0
  69. package/dist/engine/canvas-designer.d.ts +101 -0
  70. package/dist/engine/canvas-designer.js +313 -0
  71. package/dist/engine/constants.d.ts +27 -0
  72. package/dist/engine/constants.js +148 -0
  73. package/dist/engine/editor.d.ts +186 -0
  74. package/dist/engine/editor.js +734 -0
  75. package/dist/engine/events.d.ts +34 -0
  76. package/dist/engine/events.js +7 -0
  77. package/dist/engine/extensions/curved-text.d.ts +59 -0
  78. package/dist/engine/fabric.d.ts +4 -0
  79. package/dist/engine/fabric.js +187 -0
  80. package/dist/engine/history.d.ts +27 -0
  81. package/dist/engine/history.js +56 -0
  82. package/dist/engine/managers/event.d.ts +101 -0
  83. package/dist/engine/managers/event.js +410 -0
  84. package/dist/engine/managers/resize.d.ts +24 -0
  85. package/dist/engine/managers/resize.js +63 -0
  86. package/dist/engine/managers/snapline.d.ts +70 -0
  87. package/dist/engine/managers/snapline.js +124 -0
  88. package/dist/engine/managers/workspace.d.ts +26 -0
  89. package/dist/engine/managers/workspace.js +53 -0
  90. package/dist/engine/processors/image.d.ts +88 -0
  91. package/dist/engine/processors/image.js +473 -0
  92. package/dist/engine/processors/template.d.ts +45 -0
  93. package/dist/engine/processors/template.js +314 -0
  94. package/dist/engine/processors/text.d.ts +74 -0
  95. package/dist/engine/processors/text.js +215 -0
  96. package/dist/engine/semi-export-editor.d.ts +199 -0
  97. package/dist/engine/types.d.ts +28 -0
  98. package/dist/engine/utils/common.d.ts +25 -0
  99. package/dist/engine/utils/common.js +68 -0
  100. package/dist/engine/utils/dialog.d.ts +25 -0
  101. package/dist/engine/utils/font.d.ts +5 -0
  102. package/dist/engine/utils/font.js +39 -0
  103. package/dist/engine/utils/image.d.ts +8 -0
  104. package/dist/engine/utils/image.js +50 -0
  105. package/dist/engine/utils/loading.d.ts +17 -0
  106. package/dist/engine/utils/loading.js +71 -0
  107. package/dist/engine/utils/measure.d.ts +6 -0
  108. package/dist/engine/utils/measure.js +6 -0
  109. package/dist/engine/utils/mockup.d.ts +59 -0
  110. package/dist/engine/utils/setting.d.ts +4 -0
  111. package/dist/engine/utils/setting.js +73 -0
  112. package/dist/fabric-types.d.ts +59 -0
  113. package/dist/full-designer.js +14 -0
  114. package/dist/hooks/pagination.d.ts +19 -0
  115. package/dist/hooks/use-adobe-express.d.ts +50 -0
  116. package/dist/hooks/use-before-unload.d.ts +1 -0
  117. package/dist/hooks/use-image-drop.d.ts +18 -0
  118. package/dist/hooks/use-oss-upload.d.ts +34 -0
  119. package/dist/hooks/use-screen.d.ts +1 -0
  120. package/dist/i18n/index.d.ts +12 -0
  121. package/dist/images/design/asset_empty.png +0 -0
  122. package/dist/images/design/design/background.svg +3 -0
  123. package/dist/images/design/design/color-picker.svg +15 -0
  124. package/dist/images/design/design/computer.svg +1 -0
  125. package/dist/images/design/design/copy.svg +1 -0
  126. package/dist/images/design/design/image.svg +10 -0
  127. package/dist/images/design/design/line.svg +1 -0
  128. package/dist/images/design/design/text.svg +1 -0
  129. package/dist/images/design/design/title.svg +1 -0
  130. package/dist/images/design/empty.png +0 -0
  131. package/dist/images/design/layer_empty.png +0 -0
  132. package/dist/images/design/menu/ai.svg +1 -0
  133. package/dist/images/design/menu/back.svg +4 -0
  134. package/dist/images/design/menu/background.svg +6 -0
  135. package/dist/images/design/menu/clipart.svg +6 -0
  136. package/dist/images/design/menu/file.svg +4 -0
  137. package/dist/images/design/menu/fill.svg +1 -0
  138. package/dist/images/design/menu/image.svg +7 -0
  139. package/dist/images/design/menu/layer.svg +6 -0
  140. package/dist/images/design/menu/product.svg +3 -0
  141. package/dist/images/design/menu/sca.svg +5 -0
  142. package/dist/images/design/menu/shapes.svg +5 -0
  143. package/dist/images/design/menu/templates.svg +6 -0
  144. package/dist/images/design/menu/text.svg +6 -0
  145. package/dist/images/design/menu/uploads.svg +7 -0
  146. package/dist/images/design/spinner.svg +3 -0
  147. package/dist/images/design/spinners.svg +17 -0
  148. package/dist/images/design/transparent_pattern.svg +5 -0
  149. package/dist/index.d.ts +39 -0
  150. package/dist/index.js +127 -0
  151. package/dist/lib/analytics.d.ts +17 -0
  152. package/dist/lib/cn.d.ts +3 -0
  153. package/dist/lib/common.d.ts +16 -0
  154. package/dist/lib/config.d.ts +14 -0
  155. package/dist/lib/navigation.d.ts +2 -0
  156. package/dist/renderer/ThreeDPreview.d.ts +14 -0
  157. package/dist/renderer/sticker.js +1731 -0
  158. package/dist/renderer/three-d-preview.js +32 -0
  159. package/dist/state/designer-store.d.ts +43 -0
  160. package/dist/state/designer-store.js +85 -0
  161. package/dist/style.css +1 -0
  162. package/dist/types.d.ts +184 -0
  163. package/dist/ui/accordion.d.ts +7 -0
  164. package/dist/ui/button-group.d.ts +11 -0
  165. package/dist/ui/button.d.ts +10 -0
  166. package/dist/ui/checkbox.d.ts +4 -0
  167. package/dist/ui/command.d.ts +18 -0
  168. package/dist/ui/confirm-dialog.d.ts +15 -0
  169. package/dist/ui/context-menu.d.ts +25 -0
  170. package/dist/ui/dialog.d.ts +15 -0
  171. package/dist/ui/drawer.d.ts +15 -0
  172. package/dist/ui/editable-combobox.d.ts +10 -0
  173. package/dist/ui/hint.d.ts +8 -0
  174. package/dist/ui/image.d.ts +24 -0
  175. package/dist/ui/input-group.d.ts +16 -0
  176. package/dist/ui/input-with-addon.d.ts +17 -0
  177. package/dist/ui/input.d.ts +3 -0
  178. package/dist/ui/label.d.ts +4 -0
  179. package/dist/ui/loading-button.d.ts +15 -0
  180. package/dist/ui/popover.d.ts +9 -0
  181. package/dist/ui/scroll-area.d.ts +5 -0
  182. package/dist/ui/select.d.ts +22 -0
  183. package/dist/ui/separator.d.ts +4 -0
  184. package/dist/ui/shared-loading-button.d.ts +20 -0
  185. package/dist/ui/simple-dialog.d.ts +19 -0
  186. package/dist/ui/simple-popover.d.ts +13 -0
  187. package/dist/ui/simple-select.d.ts +20 -0
  188. package/dist/ui/skeleton.d.ts +2 -0
  189. package/dist/ui/slider.d.ts +4 -0
  190. package/dist/ui/spinner-box.d.ts +12 -0
  191. package/dist/ui/spinner.d.ts +2 -0
  192. package/dist/ui/switch.d.ts +6 -0
  193. package/dist/ui/tab/index.d.ts +15 -0
  194. package/dist/ui/textarea.d.ts +3 -0
  195. package/dist/ui/tooltip.d.ts +7 -0
  196. package/dist/workers/image-resize.worker.d.ts +1 -0
  197. package/dist/workers/mockup.worker.d.ts +5 -0
  198. package/dist/workers/render.worker.d.ts +1 -0
  199. package/package.json +201 -0
@@ -0,0 +1,186 @@
1
+ import fabric from './fabric';
2
+ import '../fabric-types';
3
+ import { Loading, type LoadingOptions } from './utils/loading';
4
+ import { type DesignerEventBus } from './events';
5
+ import { ImageProcessor } from './processors/image';
6
+ import { TemplateProcessor } from './processors/template';
7
+ import { TextProcessor } from './processors/text';
8
+ import { ResizeManager } from './managers/resize';
9
+ import { WorkspaceManager, type WorkspaceManagerOptions } from './managers/workspace';
10
+ import type { Size, TransformBox } from './types';
11
+ import type { Mockup } from '../contracts/api-design';
12
+ export interface EditorOptions {
13
+ /** Ratio of the shortest canvas edge that the mockup overlay occupies. */
14
+ overlayScale?: number;
15
+ /** Packaged asset overrides so a host can serve the spinner from its own CDN. */
16
+ loading?: LoadingOptions;
17
+ /** Transparent-pattern asset and DPI overrides for the printable workspace. */
18
+ workspace?: WorkspaceManagerOptions;
19
+ /** Editor-scoped event bus. Defaults to the package bus, never a host singleton. */
20
+ events?: DesignerEventBus;
21
+ }
22
+ /**
23
+ * Portable Fabric editor for one product placement.
24
+ *
25
+ * This is the full editor previously bound to the Printine Next.js app. All
26
+ * host coupling (routing, aliases, global stores) is replaced by constructor
27
+ * options, while the Fabric JSON it reads and writes is unchanged.
28
+ */
29
+ export declare class Editor {
30
+ canvas: fabric.Canvas;
31
+ imageProcessor: ImageProcessor;
32
+ textProcessor: TextProcessor;
33
+ templateProcessor: TemplateProcessor;
34
+ resizeManager: ResizeManager;
35
+ workspaceManager: WorkspaceManager;
36
+ readonly events: DesignerEventBus;
37
+ private overlayBorderHandler?;
38
+ private imageCache;
39
+ private overlayCache;
40
+ private overlayScale;
41
+ private readonly loadingOptions;
42
+ constructor(container: HTMLCanvasElement, size: Size, target: HTMLDivElement, options?: EditorOptions | number);
43
+ /** Builds a loading indicator that already carries the package asset configuration. */
44
+ createLoading(dimension: TransformBox): Loading;
45
+ /**
46
+ * 统一拦截图片创建:优先从会话缓存复用已加载的 HTMLImageElement,避免视图切换或导出时重复请求远程图片
47
+ */
48
+ private setupImageCacheInterceptor;
49
+ /**
50
+ * 渲染 overlayImage(SVG)
51
+ * @param mockup 模板信息
52
+ * @param changeView 是否切换视图,如果为 true,则需要重新设置画布和背景图
53
+ */
54
+ renderOverlayImage(mockup: Mockup, changeView?: boolean): Promise<void>;
55
+ /**
56
+ * 获取 overlay 图:优先使用会话级缓存,避免重复网络请求
57
+ * 会返回深拷贝,确保不同视图间互不影响
58
+ */
59
+ private getOverlayImage;
60
+ /**
61
+ * 绘制可设计区域边框,优先使用 clipPath 的真实形状
62
+ */
63
+ private setupOverlayBorders;
64
+ /**
65
+ * 设置背景遮罩
66
+ */
67
+ setBackgroundMask(maskImageUrl: string): Promise<void>;
68
+ /**
69
+ * 设置背景颜色、透明图案
70
+ */
71
+ setBackground(color: string): Promise<void>;
72
+ /**
73
+ * 获取当前选中的对象
74
+ */
75
+ get activeObject(): fabric.Object | null;
76
+ /**
77
+ * 获取对象经过画布转换后的实际尺寸
78
+ */
79
+ getObjectActualSize(obj: fabric.Object): {
80
+ left: number;
81
+ top: number;
82
+ width: number;
83
+ height: number;
84
+ centerX: number;
85
+ centerY: number;
86
+ };
87
+ /**
88
+ * 添加对象
89
+ */
90
+ addObject(obj: fabric.Object, active?: boolean): void;
91
+ /**
92
+ * 恢复对象
93
+ */
94
+ restoreObject(obj: any): Promise<fabric.Object[]>;
95
+ /**
96
+ * 清理图片 blob URL(只清理不在缓存中的临时 blob)
97
+ */
98
+ revokeImgBlobLink(obj: fabric.Object): void;
99
+ /**
100
+ * 删除对象,默认是当前选中的对象
101
+ */
102
+ deleteObject: (id?: string) => void;
103
+ /**
104
+ * 修改对象的属性
105
+ */
106
+ updateObject(id: string, obj: Record<string, any>): void;
107
+ /**
108
+ * 对象缩放
109
+ */
110
+ updateObjectScale(obj: fabric.Object, scale: number): void;
111
+ /**
112
+ * 修改画布上的对象的选中状态和事件状态
113
+ */
114
+ updateObjectsEvents(status: boolean): void;
115
+ /**
116
+ * 获取当前可选择的对象,不包括背景图、裁剪区域
117
+ */
118
+ getLayerList(): fabric.Object[];
119
+ /**
120
+ * 设置当前选中的对象
121
+ */
122
+ setActiveObject(id: string): void;
123
+ /**
124
+ * 同时选中多个对象
125
+ */
126
+ setActiveObjects(objects: fabric.Object[]): void;
127
+ /**
128
+ * 以画布中心点缩放画布
129
+ */
130
+ zoomToCenter(zoom: number): void;
131
+ /**
132
+ * 获取当前画布上渲染的对象
133
+ */
134
+ getRenderedObjects(): Record<string, any>;
135
+ /**
136
+ * 清空当前画布
137
+ */
138
+ clearCanvas(): void;
139
+ /**
140
+ * 将图片对象的 clipPath 重新关联到画布上的对象
141
+ */
142
+ relinkClipPaths(): void;
143
+ /**
144
+ * 切换视图,重新渲染画布
145
+ */
146
+ switchView(mockup: Mockup, color: string, state: Record<string, any> | undefined): Promise<void>;
147
+ /**
148
+ * 根据 workspace 尺寸变化,按比例缩放所有对象
149
+ */
150
+ private _scaleObjectsToWorkspace;
151
+ /**
152
+ * 计算对象相对于画布的全局变换矩阵(包括父组的影响)
153
+ */
154
+ private getGlobalTransformMatrix;
155
+ /**
156
+ * 判断对象是否位于 activeSelection 中
157
+ */
158
+ private isInActiveSelection;
159
+ /**
160
+ * 注册图片到缓存(会话级缓存,整个编辑期间保持)
161
+ */
162
+ registerImageCache(src: string, img: fabric.Image, blobUrl?: string): void;
163
+ /**
164
+ * 清除整个图片缓存(在关闭编辑器时调用)
165
+ */
166
+ clearImageCache(): void;
167
+ /**
168
+ * 销毁编辑器,释放所有资源
169
+ */
170
+ destroy(): void;
171
+ /**
172
+ * 按需生成图片 dataURL(不缓存,减少内存占用)
173
+ */
174
+ private getCachedDataURL;
175
+ /**
176
+ * 从缓存克隆图片,避免重复下载
177
+ */
178
+ private cloneImageFromCache;
179
+ /**
180
+ * 导出 clipPath 区域内容(按打印区域原始尺寸)
181
+ * @param embedImages 是否将图片转为 dataURL 内嵌
182
+ * @param color 背景颜色
183
+ */
184
+ export(embedImages?: boolean, color?: string): Promise<string | ImageBitmap>;
185
+ }
186
+ export default Editor;