customforge 0.1.0-alpha.1 → 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 (53) hide show
  1. package/CHANGELOG.md +79 -24
  2. package/LICENSES/NunitoSans-OFL.txt +93 -0
  3. package/LICENSES/plain-mug-CC-BY-4.0.txt +11 -0
  4. package/README.md +592 -290
  5. package/README.zh-CN.md +589 -290
  6. package/dist/NunitoSans-Variable.ttf +0 -0
  7. package/dist/ProductCustomizer-4ytA68eg.js +2350 -0
  8. package/dist/ProductCustomizer-4ytA68eg.js.map +1 -0
  9. package/dist/bridge/TextureBridge.d.ts +1 -1
  10. package/dist/core/api.d.ts +94 -0
  11. package/dist/core/api.d.ts.map +1 -0
  12. package/dist/core/config.d.ts +3 -12
  13. package/dist/core/config.d.ts.map +1 -1
  14. package/dist/core/design.d.ts.map +1 -1
  15. package/dist/core/types.d.ts +217 -8
  16. package/dist/core/types.d.ts.map +1 -1
  17. package/dist/core/uv.d.ts +8 -0
  18. package/dist/core/uv.d.ts.map +1 -0
  19. package/dist/cup_decal_small_margins.glb +0 -0
  20. package/dist/customizer/ProductCustomizer.d.ts +174 -7
  21. package/dist/customizer/ProductCustomizer.d.ts.map +1 -1
  22. package/dist/editor/DesignEditor.d.ts +224 -14
  23. package/dist/editor/DesignEditor.d.ts.map +1 -1
  24. package/dist/editor/DesignHistory.d.ts +27 -0
  25. package/dist/editor/DesignHistory.d.ts.map +1 -0
  26. package/dist/editor/uvBounds.d.ts +15 -0
  27. package/dist/editor/uvBounds.d.ts.map +1 -0
  28. package/dist/index.d.ts +4 -2
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -1108
  31. package/dist/index.js.map +1 -1
  32. package/dist/style.css +2123 -11
  33. package/dist/viewer/ProductViewer.d.ts +37 -6
  34. package/dist/viewer/ProductViewer.d.ts.map +1 -1
  35. package/dist/viewer/uvLayout.d.ts +11 -0
  36. package/dist/viewer/uvLayout.d.ts.map +1 -0
  37. package/dist/workbench/CustomForgeWorkbench.d.ts +205 -0
  38. package/dist/workbench/CustomForgeWorkbench.d.ts.map +1 -0
  39. package/dist/workbench/assets/catalog.d.ts +8 -0
  40. package/dist/workbench/assets/catalog.d.ts.map +1 -0
  41. package/dist/workbench/config.d.ts +96 -0
  42. package/dist/workbench/config.d.ts.map +1 -0
  43. package/dist/workbench/icons.d.ts +4 -0
  44. package/dist/workbench/icons.d.ts.map +1 -0
  45. package/dist/workbench/index.d.ts +25 -0
  46. package/dist/workbench/index.d.ts.map +1 -0
  47. package/dist/workbench/template.d.ts +3 -0
  48. package/dist/workbench/template.d.ts.map +1 -0
  49. package/dist/workbench/types.d.ts +542 -0
  50. package/dist/workbench/types.d.ts.map +1 -0
  51. package/dist/workbench.js +3052 -0
  52. package/dist/workbench.js.map +1 -0
  53. package/package.json +77 -71
@@ -6,15 +6,57 @@ export type ElementTarget = HTMLElement | string;
6
6
  * 产品配置
7
7
  */
8
8
  export interface ProductConfiguration {
9
- /** GLB 或 GLTF 模型的远程地址,不传时使用内置演示模型 */
9
+ /** GLB 或 GLTF 模型的远程地址,不传时使用随包提供的 cup_decal_small_margins.glb */
10
10
  modelUrl?: string;
11
11
  /** 二维编辑器使用的可选基础纹理地址 */
12
12
  textureUrl?: string;
13
13
  /** 接收实时纹理的模型 Mesh 名称,默认为 PrintArea */
14
14
  surfaceMesh?: string;
15
- /** 是否在映射到三维模型前垂直翻转纹理 */
15
+ /** 是否在映射到三维模型前垂直翻转纹理,默认为 false */
16
16
  textureFlipY?: boolean;
17
17
  }
18
+ /** 补全默认值后的产品配置快照 */
19
+ export interface ResolvedProductConfiguration {
20
+ /** 清理空白后的模型地址,缺省时使用随包模型 */
21
+ modelUrl?: string;
22
+ /** 清理空白后的基础纹理地址 */
23
+ textureUrl?: string;
24
+ /** 接收实时纹理的模型 Mesh 名称 */
25
+ surfaceMesh: string;
26
+ /** 是否在映射到三维模型前垂直翻转纹理 */
27
+ textureFlipY: boolean;
28
+ }
29
+ /** 二维编辑器交互元素的外观配置 */
30
+ export interface EditorAppearance {
31
+ /** 框选区域填充色,默认为 rgba(19, 113, 125, 0.12) */
32
+ selectionFill?: string;
33
+ /** 框选区域边框色,默认为 #13717d */
34
+ selectionBorder?: string;
35
+ /** 对象控制点填充色,默认为 #ffffff */
36
+ controlFill?: string;
37
+ /** 对象控制点描边色,默认为 #13717d */
38
+ controlBorder?: string;
39
+ /** 选中对象的边框色,默认为 #13717d */
40
+ objectBorder?: string;
41
+ /** 对象控制点显示尺寸,单位为 CSS 像素,默认为 8 */
42
+ controlSize?: number;
43
+ /** UV 区域辅助填充色,缺省时读取 --cfw-accent */
44
+ uvFill?: string;
45
+ /** UV 外边界虚线颜色,默认为 #dc2626 */
46
+ uvBoundary?: string;
47
+ }
48
+ /** 三维查看器画布的外观配置 */
49
+ export interface ViewerAppearance {
50
+ /** WebGL 画布清屏颜色,缺省时保持透明并显示容器背景 */
51
+ backgroundColor?: string;
52
+ }
53
+ /** 无界面核心所管理画布的外观配置 */
54
+ export interface CustomizerAppearance {
55
+ /** 二维编辑器交互元素外观 */
56
+ editor?: EditorAppearance;
57
+ /** 三维查看器画布外观 */
58
+ viewer?: ViewerAppearance;
59
+ }
18
60
  /**
19
61
  * 产品定制器初始化配置
20
62
  */
@@ -29,7 +71,29 @@ export interface CustomizerOptions {
29
71
  editorHeight?: number;
30
72
  /** 初始化时加载的产品配置 */
31
73
  product?: ProductConfiguration;
74
+ /** 可保留的撤销步骤数量,默认为 50 */
75
+ historyLimit?: number;
76
+ /** 二维编辑画布的无障碍名称,默认为 UV texture editor */
77
+ editorAriaLabel?: string;
78
+ /** 三维产品画布的无障碍名称,默认为 Interactive 3D product preview */
79
+ viewerAriaLabel?: string;
80
+ /** addText 未提供内容时使用的默认文字,默认为 Edit this text */
81
+ defaultText?: string;
82
+ /** 空文字对象在图层工具中的默认名称,默认为 Text */
83
+ textObjectName?: string;
84
+ /** 普通图片对象在图层工具中的默认名称,默认为 Image */
85
+ imageObjectName?: string;
86
+ /** 背景图片对象在图层工具中的默认名称,默认为 Background */
87
+ backgroundObjectName?: string;
88
+ /** 二维编辑器和三维查看器的可选外观配置 */
89
+ appearance?: CustomizerAppearance;
32
90
  }
91
+ /** 文字支持的水平对齐方式 */
92
+ export type TextAlignment = 'left' | 'center' | 'right';
93
+ /** 文字支持的字体样式 */
94
+ export type TextFontStyle = 'normal' | 'italic';
95
+ /** 文字字重,数字值通常使用 100 到 900 */
96
+ export type TextFontWeight = number | 'normal' | 'bold';
33
97
  /**
34
98
  * 添加文字时使用的配置
35
99
  *
@@ -38,6 +102,8 @@ export interface CustomizerOptions {
38
102
  export interface AddTextOptions {
39
103
  /** 文字内容 */
40
104
  text?: string;
105
+ /** 图层面板中显示的可选名称 */
106
+ name?: string;
41
107
  /** 文字左上角在画布中的横坐标,单位为像素,越界时自动修正 */
42
108
  x?: number;
43
109
  /** 文字左上角在画布中的纵坐标,单位为像素,越界时自动修正 */
@@ -46,10 +112,49 @@ export interface AddTextOptions {
46
112
  width?: number;
47
113
  /** 字体名称 */
48
114
  fontFamily?: string;
49
- /** 字体大小,单位为像素 */
115
+ /** 字体大小,单位为像素,默认为 22 */
50
116
  fontSize?: number;
51
117
  /** 文字颜色,支持 CSS 颜色值 */
52
118
  color?: string;
119
+ /** 字重,默认为 700 */
120
+ fontWeight?: TextFontWeight;
121
+ /** 是否使用斜体,默认为 normal */
122
+ fontStyle?: TextFontStyle;
123
+ /** 是否显示下划线,默认为 false */
124
+ underline?: boolean;
125
+ /** 文字水平对齐方式,默认为 center */
126
+ textAlign?: TextAlignment;
127
+ /** 行高倍数,默认为 1.16 */
128
+ lineHeight?: number;
129
+ /** 字距,单位为千分之一 em,默认为 0 */
130
+ charSpacing?: number;
131
+ /** 文字背景 CSS 颜色,缺省时保持透明 */
132
+ backgroundColor?: string;
133
+ }
134
+ /** 更新已有文字对象时使用的内容和样式配置 */
135
+ export interface UpdateTextOptions {
136
+ /** 新的文字内容,可以为空字符串 */
137
+ text?: string;
138
+ /** 新的字体名称,消费页面必须已经加载该字体 */
139
+ fontFamily?: string;
140
+ /** 新的字体大小,单位为像素 */
141
+ fontSize?: number;
142
+ /** 新的文字 CSS 颜色 */
143
+ color?: string;
144
+ /** 新的字重 */
145
+ fontWeight?: TextFontWeight;
146
+ /** 新的字体样式 */
147
+ fontStyle?: TextFontStyle;
148
+ /** 是否显示下划线 */
149
+ underline?: boolean;
150
+ /** 新的文字水平对齐方式 */
151
+ textAlign?: TextAlignment;
152
+ /** 新的行高倍数 */
153
+ lineHeight?: number;
154
+ /** 新的字距,单位为千分之一 em */
155
+ charSpacing?: number;
156
+ /** 新的文字背景 CSS 颜色,传 null 时恢复透明 */
157
+ backgroundColor?: string | null;
53
158
  }
54
159
  /**
55
160
  * 添加图片时使用的配置
@@ -59,6 +164,10 @@ export interface AddTextOptions {
59
164
  export interface AddImageOptions {
60
165
  /** 图片地址,支持远程地址、Data URL 和 Blob URL */
61
166
  src: string;
167
+ /** 图层面板中显示的可选名称 */
168
+ name?: string;
169
+ /** 图片在设计中的用途,背景会忽略位置和宽度、替换已有背景、铺满当前 UV 可打印区域并锁定在最底层 */
170
+ role?: DesignImageRole;
62
171
  /** 图片中心在画布中的横坐标,单位为像素,越界时自动修正 */
63
172
  x?: number;
64
173
  /** 图片中心在画布中的纵坐标,单位为像素,越界时自动修正 */
@@ -90,8 +199,36 @@ export interface DesignObjectTransform {
90
199
  /** 是否沿对象自身纵轴翻转 */
91
200
  flipY: boolean;
92
201
  }
202
+ /** 以对象中心点为原点更新现有对象时使用的变换 */
203
+ export interface UpdateObjectTransformOptions {
204
+ /** 新的对象中心横坐标,单位为逻辑像素 */
205
+ x?: number;
206
+ /** 新的对象中心纵坐标,单位为逻辑像素 */
207
+ y?: number;
208
+ /** 新的横向缩放倍数,必须大于 0 */
209
+ scaleX?: number;
210
+ /** 新的纵向缩放倍数,必须大于 0 */
211
+ scaleY?: number;
212
+ /** 新的顺时针旋转角度,单位为度 */
213
+ rotation?: number;
214
+ /** 是否沿对象自身横轴翻转 */
215
+ flipX?: boolean;
216
+ /** 是否沿对象自身纵轴翻转 */
217
+ flipY?: boolean;
218
+ }
219
+ /** Design JSON 中可编辑对象共用的图层状态 */
220
+ export interface DesignObjectState {
221
+ /** 图层面板使用的可选名称,缺省时由对象内容生成 */
222
+ name?: string;
223
+ /** 对象是否参与二维画布、三维纹理和 PNG 渲染,默认为 true */
224
+ visible?: boolean;
225
+ /** 对象是否禁止通过画布控件变换,默认为 false */
226
+ locked?: boolean;
227
+ }
228
+ /** Design JSON 图片对象在设计中的用途 */
229
+ export type DesignImageRole = 'element' | 'background';
93
230
  /** Design JSON 中的文字对象 */
94
- export interface TextDesignObject {
231
+ export interface TextDesignObject extends DesignObjectState {
95
232
  /** 文档内稳定且唯一的对象标识 */
96
233
  id: string;
97
234
  /** 用于区分联合类型的对象种类 */
@@ -108,9 +245,23 @@ export interface TextDesignObject {
108
245
  fontSize: number;
109
246
  /** 文字颜色,仅保存 CSS 字符串颜色 */
110
247
  color: string;
248
+ /** 字重,旧版文档缺省时使用 700 */
249
+ fontWeight?: TextFontWeight;
250
+ /** 字体样式,旧版文档缺省时使用 normal */
251
+ fontStyle?: TextFontStyle;
252
+ /** 是否显示下划线,旧版文档缺省时使用 false */
253
+ underline?: boolean;
254
+ /** 文字水平对齐方式,旧版文档缺省时使用 center */
255
+ textAlign?: TextAlignment;
256
+ /** 行高倍数,旧版文档缺省时使用 1.16 */
257
+ lineHeight?: number;
258
+ /** 字距,单位为千分之一 em,旧版文档缺省时使用 0 */
259
+ charSpacing?: number;
260
+ /** 文字背景 CSS 颜色,缺省时保持透明 */
261
+ backgroundColor?: string;
111
262
  }
112
263
  /** Design JSON 中的图片对象 */
113
- export interface ImageDesignObject {
264
+ export interface ImageDesignObject extends DesignObjectState {
114
265
  /** 文档内稳定且唯一的对象标识 */
115
266
  id: string;
116
267
  /** 用于区分联合类型的对象种类 */
@@ -119,6 +270,8 @@ export interface ImageDesignObject {
119
270
  transform: DesignObjectTransform;
120
271
  /** 可重新加载的远程 URL 或 Data URL,不允许短生命周期 Blob URL */
121
272
  src: string;
273
+ /** 图片用途,缺省时按普通装饰元素处理 */
274
+ role?: DesignImageRole;
122
275
  }
123
276
  /** Design JSON 当前支持的可编辑对象 */
124
277
  export type DesignObject = TextDesignObject | ImageDesignObject;
@@ -135,11 +288,62 @@ export interface DesignDocument {
135
288
  /** 按渲染层级从后到前排列的可编辑对象 */
136
289
  objects: DesignObject[];
137
290
  }
291
+ /** 撤销与重做历史的可用状态 */
292
+ export interface HistoryState {
293
+ /** 当前是否存在可以撤销的设计快照 */
294
+ canUndo: boolean;
295
+ /** 当前是否存在可以重做的设计快照 */
296
+ canRedo: boolean;
297
+ }
298
+ /** 逻辑画布中的轴对齐区域 */
299
+ export interface CanvasBounds {
300
+ /** 左边缘横坐标,单位为逻辑像素 */
301
+ left: number;
302
+ /** 上边缘纵坐标,单位为逻辑像素 */
303
+ top: number;
304
+ /** 区域宽度,单位为逻辑像素 */
305
+ width: number;
306
+ /** 区域高度,单位为逻辑像素 */
307
+ height: number;
308
+ }
309
+ /** 三维空间中的坐标值 */
310
+ export interface Vector3Value {
311
+ /** 横轴坐标 */
312
+ x: number;
313
+ /** 纵轴坐标 */
314
+ y: number;
315
+ /** 深度轴坐标 */
316
+ z: number;
317
+ }
318
+ /** 可保存并恢复的三维观察视角 */
319
+ export interface ProductViewState {
320
+ /** 透视相机在三维场景中的位置 */
321
+ position: Vector3Value;
322
+ /** 轨道控制器围绕观察的目标点 */
323
+ target: Vector3Value;
324
+ }
325
+ /** 自定义 UI 可以一次读取的核心状态快照 */
326
+ export interface CustomizerState {
327
+ /** 当前补全默认值后的产品配置 */
328
+ product: ResolvedProductConfiguration;
329
+ /** 当前逻辑画布尺寸 */
330
+ canvas: DesignCanvas;
331
+ /** 当前产品 UV 在逻辑画布中的可打印包围框 */
332
+ printableBounds: CanvasBounds;
333
+ /** 按从后到前顺序排列的设计对象 */
334
+ objects: DesignObject[];
335
+ /** 按画布层级排列的当前选中对象 ID */
336
+ selectedObjectIds: string[];
337
+ /** 当前撤销与重做可用状态 */
338
+ history: HistoryState;
339
+ /** 当前三维观察视角 */
340
+ view: ProductViewState;
341
+ }
138
342
  /**
139
343
  * 产品定制器事件及其载荷
140
344
  */
141
345
  export interface CustomizerEventMap {
142
- /** 二维设计发生变化 */
346
+ /** 二维设计内容或图层状态发生变化 */
143
347
  change: {
144
348
  objectCount: number;
145
349
  };
@@ -147,18 +351,23 @@ export interface CustomizerEventMap {
147
351
  error: {
148
352
  error: Error;
149
353
  };
354
+ /** 撤销或重做可用状态发生变化 */
355
+ historychange: HistoryState;
150
356
  /** 产品模型和纹理完成加载 */
151
357
  ready: {
152
- product: ProductConfiguration;
358
+ product: ResolvedProductConfiguration;
153
359
  };
154
- /** 二维编辑器的选中状态发生变化 */
360
+ /** 二维编辑器的选中状态发生变化,objectIds 按画布层级从后到前排列 */
155
361
  selectionchange: {
156
362
  hasSelection: boolean;
363
+ objectIds: string[];
157
364
  };
158
365
  /** 加载或运行状态发生变化 */
159
366
  status: {
160
367
  message: string;
161
368
  };
369
+ /** 用户操作或 API 调整了三维观察视角 */
370
+ viewchange: ProductViewState;
162
371
  }
163
372
  /**
164
373
  * 产品定制器支持的事件名称
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** 目标 Mesh 的二维 UV 布局 */
2
+ export interface UvLayout {
3
+ /** 每六个连续值依次表示一个三角形的 u1、v1、u2、v2、u3、v3 */
4
+ triangleCoordinates: Float32Array;
5
+ /** 每四个连续值依次表示一条 UV 外边界的 u1、v1、u2、v2 */
6
+ boundaryCoordinates: Float32Array;
7
+ }
8
+ //# sourceMappingURL=uv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uv.d.ts","sourceRoot":"","sources":["../../src/core/uv.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,MAAM,WAAW,QAAQ;IACvB,yCAAyC;IACzC,mBAAmB,EAAE,YAAY,CAAA;IAEjC,uCAAuC;IACvC,mBAAmB,EAAE,YAAY,CAAA;CAClC"}
Binary file
@@ -1,5 +1,5 @@
1
- import type { AddImageOptions, AddTextOptions, CustomizerEventMap, CustomizerEventName, CustomizerOptions, DesignDocument, ProductConfiguration } from '../core/types';
2
- type EventListener<K extends CustomizerEventName> = (detail: CustomizerEventMap[K]) => void;
1
+ import type { CustomizerEventListener, ProductCustomizerApi } from '../core/api';
2
+ import type { AddImageOptions, AddTextOptions, CanvasBounds, CustomizerEventName, CustomizerOptions, CustomizerState, DesignCanvas, DesignDocument, DesignObject, ImageDesignObject, ProductConfiguration, ProductViewState, ResolvedProductConfiguration, TextDesignObject, UpdateObjectTransformOptions, UpdateTextOptions } from '../core/types';
3
3
  /**
4
4
  * 统一管理二维编辑器、三维查看器和实时纹理同步
5
5
  *
@@ -7,7 +7,7 @@ type EventListener<K extends CustomizerEventName> = (detail: CustomizerEventMap[
7
7
  * 每个实例独立持有 DOM 事件、Fabric 状态和 WebGL 资源
8
8
  * 不再使用实例时必须调用 `destroy()`
9
9
  */
10
- export declare class ProductCustomizer {
10
+ export declare class ProductCustomizer implements ProductCustomizerApi {
11
11
  private readonly events;
12
12
  private readonly textureBridge;
13
13
  private readonly editor;
@@ -15,6 +15,8 @@ export declare class ProductCustomizer {
15
15
  private product;
16
16
  private readonly stopSelectionListener;
17
17
  private readonly stopRenderListener;
18
+ private readonly stopHistoryListener;
19
+ private readonly stopViewListener;
18
20
  private destroyed;
19
21
  private constructor();
20
22
  /**
@@ -32,24 +34,140 @@ export declare class ProductCustomizer {
32
34
  * @param listener 接收对应事件载荷的监听函数
33
35
  * @returns 用于取消本次订阅的函数
34
36
  */
35
- on<K extends CustomizerEventName>(event: K, listener: EventListener<K>): () => void;
37
+ on<K extends CustomizerEventName>(event: K, listener: CustomizerEventListener<K>): () => void;
36
38
  /**
37
39
  * 在二维画布中添加并选中一个文字对象
38
40
  *
39
41
  * 创建后和用户变换期间,对象会自动缩放或平移以保持完整可见
40
42
  *
41
43
  * @param options 文字内容、位置和样式配置
44
+ * @returns 创建后的可持久化文字对象快照
42
45
  */
43
- addText(options?: AddTextOptions): void;
46
+ addText(options?: AddTextOptions): TextDesignObject;
44
47
  /**
45
48
  * 加载图片并将其添加到二维画布
46
49
  *
50
+ * role 为 background 时会替换已有设计背景、铺满当前 UV 可打印区域并默认锁定在最底层
47
51
  * 创建后和用户变换期间,对象会自动缩放或平移以保持完整可见
48
52
  *
49
53
  * @param options 图片地址、位置和显示宽度
54
+ * @returns 创建后的可持久化图片对象快照
50
55
  * @throws 图片无法访问、加载失败或被 CORS 策略阻止时抛出错误
51
56
  */
52
- addImage(options: AddImageOptions): Promise<void>;
57
+ addImage(options: AddImageOptions): Promise<ImageDesignObject>;
58
+ /** 返回产品、画布、对象、选区、历史和视角的独立状态快照 */
59
+ getState(): CustomizerState;
60
+ /** 返回当前补全默认值后的产品配置独立快照 */
61
+ getProduct(): ResolvedProductConfiguration;
62
+ /** 返回当前二维逻辑画布尺寸 */
63
+ getCanvasSize(): DesignCanvas;
64
+ /** 返回当前产品 UV 在逻辑画布中的可打印包围框 */
65
+ getPrintableBounds(): CanvasBounds;
66
+ /**
67
+ * 返回当前可编辑对象的独立快照
68
+ *
69
+ * @returns 按画布层级从后到前排列的 Design JSON 对象
70
+ */
71
+ getObjects(): DesignObject[];
72
+ /** 当前选中对象的 ID,按画布层级从后到前排列 */
73
+ getSelectedObjectIds(): string[];
74
+ /**
75
+ * 按稳定 ID 选中一个可见对象
76
+ *
77
+ * @param id Design JSON 中的对象 ID
78
+ * @returns 是否找到并选中了对象
79
+ */
80
+ selectObject(id: string): boolean;
81
+ /**
82
+ * 按稳定 ID 同时选中多个可见对象
83
+ *
84
+ * 所有 ID 都必须有效且可见,否则保持原选区不变;空数组清除选区
85
+ *
86
+ * @param ids Design JSON 中的对象 ID
87
+ * @returns 是否应用了请求的选区
88
+ */
89
+ selectObjects(ids: readonly string[]): boolean;
90
+ /**
91
+ * 清除当前画布选区,不修改设计内容或历史记录
92
+ *
93
+ * @returns 清除前是否存在选中对象
94
+ */
95
+ clearSelection(): boolean;
96
+ /**
97
+ * 按稳定 ID 删除一个对象
98
+ *
99
+ * @param id Design JSON 中的对象 ID
100
+ * @returns 是否找到并删除了对象
101
+ */
102
+ removeObject(id: string): boolean;
103
+ /**
104
+ * 将对象移动到指定图层索引
105
+ *
106
+ * @param id Design JSON 中的对象 ID
107
+ * @param index 从 0 开始的索引,0 表示最底层
108
+ * @returns 对象层级是否发生变化
109
+ */
110
+ moveObject(id: string, index: number): boolean;
111
+ /**
112
+ * 将现有图片转换为铺满当前 UV 可打印区域的设计背景
113
+ *
114
+ * 转换会替换已有设计背景、重置旋转、锁定对象并移动到最底层
115
+ *
116
+ * @param id Design JSON 中的图片对象 ID
117
+ * @returns 是否找到普通图片并完成转换
118
+ */
119
+ setImageAsBackground(id: string): boolean;
120
+ /**
121
+ * 修改对象在图层面板中的名称
122
+ *
123
+ * @param id Design JSON 中的对象 ID
124
+ * @param name 非空图层名称
125
+ * @returns 是否找到并更新了对象
126
+ */
127
+ renameObject(id: string, name: string): boolean;
128
+ /**
129
+ * 修改对象是否参与渲染
130
+ *
131
+ * @param id Design JSON 中的对象 ID
132
+ * @param visible 是否参与二维画布、三维纹理和 PNG 渲染
133
+ * @returns 是否找到并更新了对象
134
+ */
135
+ setObjectVisibility(id: string, visible: boolean): boolean;
136
+ /**
137
+ * 修改对象是否允许通过画布控件变换
138
+ *
139
+ * @param id Design JSON 中的对象 ID
140
+ * @param locked 是否锁定移动、缩放、旋转、倾斜和文字编辑
141
+ * @returns 是否找到并更新了对象
142
+ */
143
+ setObjectLocked(id: string, locked: boolean): boolean;
144
+ /**
145
+ * 更新对象中心位置、缩放、旋转和翻转
146
+ *
147
+ * @param id Design JSON 中的对象 ID
148
+ * @param options 要更新的变换字段
149
+ * @returns 约束后的对象快照,找不到对象时返回 undefined
150
+ * @throws 数值无效或缩放倍数不大于零时抛出错误
151
+ */
152
+ updateObjectTransform(id: string, options: UpdateObjectTransformOptions): DesignObject | undefined;
153
+ /**
154
+ * 修改已有文字对象的内容和排版样式
155
+ *
156
+ * 连续调用会在短暂空闲后合并为一个撤销步骤
157
+ *
158
+ * @param id Design JSON 中的对象 ID
159
+ * @param options 要修改的文字属性,未传字段保持不变
160
+ * @returns 是否找到并更新了文字对象
161
+ * @throws 字号、行高、字距、字重或 CSS 颜色不符合约束时抛出错误
162
+ */
163
+ updateText(id: string, options: UpdateTextOptions): boolean;
164
+ /**
165
+ * 让一个未锁定文字对象进入画布内联编辑状态
166
+ *
167
+ * @param id Design JSON 中的对象 ID
168
+ * @returns 是否找到文字对象并进入编辑状态
169
+ */
170
+ editText(id: string): boolean;
53
171
  /**
54
172
  * 删除二维编辑器中的当前对象或选区
55
173
  *
@@ -76,6 +194,44 @@ export declare class ProductCustomizer {
76
194
  * @throws Schema 无效、画布尺寸不匹配或图片加载失败时抛出错误
77
195
  */
78
196
  loadDesign(value: unknown): Promise<void>;
197
+ /** 当前是否存在可以撤销的设计快照 */
198
+ canUndo(): boolean;
199
+ /** 当前是否存在可以重做的设计快照 */
200
+ canRedo(): boolean;
201
+ /**
202
+ * 恢复上一个设计快照
203
+ *
204
+ * @returns 是否成功恢复了一个历史步骤
205
+ * @throws 历史中的图片无法恢复时抛出错误
206
+ */
207
+ undo(): Promise<boolean>;
208
+ /**
209
+ * 恢复下一个设计快照
210
+ *
211
+ * @returns 是否成功恢复了一个历史步骤
212
+ * @throws 历史中的图片无法恢复时抛出错误
213
+ */
214
+ redo(): Promise<boolean>;
215
+ /** 以当前设计为起点清空撤销与重做历史 */
216
+ clearHistory(): void;
217
+ /**
218
+ * 返回当前合成纹理的 PNG Data URL
219
+ *
220
+ * 结果与逻辑画布同尺寸,不包含选择框和 UV 辅助层
221
+ *
222
+ * @returns PNG Data URL
223
+ * @throws 远程图片污染 Canvas 时抛出安全错误
224
+ */
225
+ getTextureDataUrl(): string;
226
+ /**
227
+ * 异步返回当前合成纹理的 PNG Blob
228
+ *
229
+ * 结果与逻辑画布同尺寸,不包含选择框和 UV 辅助层
230
+ *
231
+ * @returns PNG Blob
232
+ * @throws 远程图片污染 Canvas 或浏览器无法编码时抛出错误
233
+ */
234
+ getTextureBlob(): Promise<Blob>;
79
235
  /**
80
236
  * 将当前二维设计合成为 PNG 并触发浏览器下载
81
237
  *
@@ -85,9 +241,21 @@ export declare class ProductCustomizer {
85
241
  exportTexture(filename?: string): void;
86
242
  /** 恢复三维产品的默认相机位置 */
87
243
  resetView(): void;
244
+ /** 返回当前三维相机位置和观察目标点 */
245
+ getViewState(): ProductViewState;
246
+ /**
247
+ * 恢复三维观察视角
248
+ *
249
+ * @param state 要恢复的相机位置和观察目标点
250
+ * @returns 应用后的独立视角快照
251
+ * @throws 坐标不是有限数值或相机与目标点重合时抛出错误
252
+ */
253
+ setViewState(state: ProductViewState): ProductViewState;
88
254
  /**
89
255
  * 更换模型、基础纹理和接收纹理的目标 Mesh
90
256
  *
257
+ * 成功后保留当前设计对象,并将当前设计设为新的历史起点
258
+ *
91
259
  * @param product 新的产品配置
92
260
  * @throws 模型或纹理加载失败、目标 Mesh 不存在时抛出错误
93
261
  */
@@ -102,5 +270,4 @@ export declare class ProductCustomizer {
102
270
  private emit;
103
271
  private reportError;
104
272
  }
105
- export {};
106
273
  //# sourceMappingURL=ProductCustomizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductCustomizer.d.ts","sourceRoot":"","sources":["../../src/customizer/ProductCustomizer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACrB,MAAM,eAAe,CAAA;AAKtB,KAAK,aAAa,CAAC,CAAC,SAAS,mBAAmB,IAAI,CAClD,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAC1B,IAAI,CAAA;AAET;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,OAAO,CAAkD;IACjE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAY;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAY;IAC/C,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,eA0BN;IAED;;;;;;OAMG;IACH,OAAa,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAS1E;IAED;;;;;;OAMG;IACH,EAAE,CAAC,CAAC,SAAS,mBAAmB,EAC9B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GACzB,MAAM,IAAI,CAMZ;IAED;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAEtC;IAED;;;;;;;OAOG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtD;IAED;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAExB;IAED;;;;;;;;OAQG;IACH,UAAU,IAAI,cAAc,CAE3B;IAED;;;;;;;;OAQG;IACG,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAS9C;IAED;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAErC;IAED,oBAAoB;IACpB,SAAS,IAAI,IAAI,CAEhB;IAED;;;;;OAKG;IACG,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAe9D;IAED;;;;OAIG;IACH,OAAO,IAAI,IAAI,CAWd;YAEa,UAAU;IAOxB,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,WAAW;CAKpB"}
1
+ {"version":3,"file":"ProductCustomizer.d.ts","sourceRoot":"","sources":["../../src/customizer/ProductCustomizer.ts"],"names":[],"mappings":"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"}