customforge 0.1.0-alpha.2 → 0.1.1

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 (47) hide show
  1. package/CHANGELOG.md +91 -56
  2. package/LICENSES/NunitoSans-OFL.txt +93 -93
  3. package/LICENSES/plain-mug-CC-BY-4.0.txt +11 -0
  4. package/README.md +592 -461
  5. package/README.zh-CN.md +587 -459
  6. package/dist/{ProductCustomizer-rMRyWe7L.js → ProductCustomizer-BnjY3v7d.js} +898 -156
  7. package/dist/ProductCustomizer-BnjY3v7d.js.map +1 -0
  8. package/dist/bridge/TextureBridge.d.ts +1 -1
  9. package/dist/core/api.d.ts +94 -0
  10. package/dist/core/api.d.ts.map +1 -0
  11. package/dist/core/config.d.ts +3 -12
  12. package/dist/core/config.d.ts.map +1 -1
  13. package/dist/core/design.d.ts.map +1 -1
  14. package/dist/core/types.d.ts +183 -5
  15. package/dist/core/types.d.ts.map +1 -1
  16. package/dist/core/uv.d.ts +8 -0
  17. package/dist/core/uv.d.ts.map +1 -0
  18. package/dist/cup_decal_small_margins.glb +0 -0
  19. package/dist/customizer/ProductCustomizer.d.ts +98 -9
  20. package/dist/customizer/ProductCustomizer.d.ts.map +1 -1
  21. package/dist/editor/DesignEditor.d.ts +118 -10
  22. package/dist/editor/DesignEditor.d.ts.map +1 -1
  23. package/dist/editor/uvBounds.d.ts +15 -0
  24. package/dist/editor/uvBounds.d.ts.map +1 -0
  25. package/dist/index.d.ts +4 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/style.css +2120 -1327
  30. package/dist/viewer/ProductViewer.d.ts +37 -6
  31. package/dist/viewer/ProductViewer.d.ts.map +1 -1
  32. package/dist/viewer/uvLayout.d.ts +11 -0
  33. package/dist/viewer/uvLayout.d.ts.map +1 -0
  34. package/dist/workbench/CustomForgeWorkbench.d.ts +85 -8
  35. package/dist/workbench/CustomForgeWorkbench.d.ts.map +1 -1
  36. package/dist/workbench/config.d.ts +42 -1
  37. package/dist/workbench/config.d.ts.map +1 -1
  38. package/dist/workbench/icons.d.ts.map +1 -1
  39. package/dist/workbench/index.d.ts +3 -3
  40. package/dist/workbench/index.d.ts.map +1 -1
  41. package/dist/workbench/template.d.ts.map +1 -1
  42. package/dist/workbench/types.d.ts +261 -13
  43. package/dist/workbench/types.d.ts.map +1 -1
  44. package/dist/workbench.js +1248 -116
  45. package/dist/workbench.js.map +1 -1
  46. package/package.json +27 -20
  47. package/dist/ProductCustomizer-rMRyWe7L.js.map +0 -1
@@ -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
  */
@@ -31,7 +73,27 @@ export interface CustomizerOptions {
31
73
  product?: ProductConfiguration;
32
74
  /** 可保留的撤销步骤数量,默认为 50 */
33
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;
34
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';
35
97
  /**
36
98
  * 添加文字时使用的配置
37
99
  *
@@ -50,10 +112,49 @@ export interface AddTextOptions {
50
112
  width?: number;
51
113
  /** 字体名称 */
52
114
  fontFamily?: string;
53
- /** 字体大小,单位为像素 */
115
+ /** 字体大小,单位为像素,默认为 22 */
54
116
  fontSize?: number;
55
117
  /** 文字颜色,支持 CSS 颜色值 */
56
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;
57
158
  }
58
159
  /**
59
160
  * 添加图片时使用的配置
@@ -65,7 +166,7 @@ export interface AddImageOptions {
65
166
  src: string;
66
167
  /** 图层面板中显示的可选名称 */
67
168
  name?: string;
68
- /** 图片在设计中的用途,背景会替换已有设计背景、忽略位置和宽度并默认锁定在最底层 */
169
+ /** 图片在设计中的用途,背景会忽略位置和宽度、替换已有背景、铺满当前 UV 可打印区域并锁定在最底层 */
69
170
  role?: DesignImageRole;
70
171
  /** 图片中心在画布中的横坐标,单位为像素,越界时自动修正 */
71
172
  x?: number;
@@ -98,6 +199,23 @@ export interface DesignObjectTransform {
98
199
  /** 是否沿对象自身纵轴翻转 */
99
200
  flipY: boolean;
100
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
+ }
101
219
  /** Design JSON 中可编辑对象共用的图层状态 */
102
220
  export interface DesignObjectState {
103
221
  /** 图层面板使用的可选名称,缺省时由对象内容生成 */
@@ -127,6 +245,20 @@ export interface TextDesignObject extends DesignObjectState {
127
245
  fontSize: number;
128
246
  /** 文字颜色,仅保存 CSS 字符串颜色 */
129
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;
130
262
  }
131
263
  /** Design JSON 中的图片对象 */
132
264
  export interface ImageDesignObject extends DesignObjectState {
@@ -163,6 +295,50 @@ export interface HistoryState {
163
295
  /** 当前是否存在可以重做的设计快照 */
164
296
  canRedo: boolean;
165
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
+ }
166
342
  /**
167
343
  * 产品定制器事件及其载荷
168
344
  */
@@ -179,7 +355,7 @@ export interface CustomizerEventMap {
179
355
  historychange: HistoryState;
180
356
  /** 产品模型和纹理完成加载 */
181
357
  ready: {
182
- product: ProductConfiguration;
358
+ product: ResolvedProductConfiguration;
183
359
  };
184
360
  /** 二维编辑器的选中状态发生变化,objectIds 按画布层级从后到前排列 */
185
361
  selectionchange: {
@@ -190,6 +366,8 @@ export interface CustomizerEventMap {
190
366
  status: {
191
367
  message: string;
192
368
  };
369
+ /** 用户操作或 API 调整了三维观察视角 */
370
+ viewchange: ProductViewState;
193
371
  }
194
372
  /**
195
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;
@@ -16,6 +16,7 @@ export declare class ProductCustomizer {
16
16
  private readonly stopSelectionListener;
17
17
  private readonly stopRenderListener;
18
18
  private readonly stopHistoryListener;
19
+ private readonly stopViewListener;
19
20
  private destroyed;
20
21
  private constructor();
21
22
  /**
@@ -33,31 +34,41 @@ export declare class ProductCustomizer {
33
34
  * @param listener 接收对应事件载荷的监听函数
34
35
  * @returns 用于取消本次订阅的函数
35
36
  */
36
- on<K extends CustomizerEventName>(event: K, listener: EventListener<K>): () => void;
37
+ on<K extends CustomizerEventName>(event: K, listener: CustomizerEventListener<K>): () => void;
37
38
  /**
38
39
  * 在二维画布中添加并选中一个文字对象
39
40
  *
40
41
  * 创建后和用户变换期间,对象会自动缩放或平移以保持完整可见
41
42
  *
42
43
  * @param options 文字内容、位置和样式配置
44
+ * @returns 创建后的可持久化文字对象快照
43
45
  */
44
- addText(options?: AddTextOptions): void;
46
+ addText(options?: AddTextOptions): TextDesignObject;
45
47
  /**
46
48
  * 加载图片并将其添加到二维画布
47
49
  *
48
- * role 为 background 时会替换已有设计背景并默认锁定在最底层
50
+ * role 为 background 时会替换已有设计背景、铺满当前 UV 可打印区域并默认锁定在最底层
49
51
  * 创建后和用户变换期间,对象会自动缩放或平移以保持完整可见
50
52
  *
51
53
  * @param options 图片地址、位置和显示宽度
54
+ * @returns 创建后的可持久化图片对象快照
52
55
  * @throws 图片无法访问、加载失败或被 CORS 策略阻止时抛出错误
53
56
  */
54
- 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;
55
66
  /**
56
67
  * 返回当前可编辑对象的独立快照
57
68
  *
58
69
  * @returns 按画布层级从后到前排列的 Design JSON 对象
59
70
  */
60
- getObjects(): DesignDocument['objects'];
71
+ getObjects(): DesignObject[];
61
72
  /** 当前选中对象的 ID,按画布层级从后到前排列 */
62
73
  getSelectedObjectIds(): string[];
63
74
  /**
@@ -67,6 +78,21 @@ export declare class ProductCustomizer {
67
78
  * @returns 是否找到并选中了对象
68
79
  */
69
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;
70
96
  /**
71
97
  * 按稳定 ID 删除一个对象
72
98
  *
@@ -82,6 +108,15 @@ export declare class ProductCustomizer {
82
108
  * @returns 对象层级是否发生变化
83
109
  */
84
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;
85
120
  /**
86
121
  * 修改对象在图层面板中的名称
87
122
  *
@@ -106,6 +141,33 @@ export declare class ProductCustomizer {
106
141
  * @returns 是否找到并更新了对象
107
142
  */
108
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;
109
171
  /**
110
172
  * 删除二维编辑器中的当前对象或选区
111
173
  *
@@ -152,6 +214,24 @@ export declare class ProductCustomizer {
152
214
  redo(): Promise<boolean>;
153
215
  /** 以当前设计为起点清空撤销与重做历史 */
154
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>;
155
235
  /**
156
236
  * 将当前二维设计合成为 PNG 并触发浏览器下载
157
237
  *
@@ -161,6 +241,16 @@ export declare class ProductCustomizer {
161
241
  exportTexture(filename?: string): void;
162
242
  /** 恢复三维产品的默认相机位置 */
163
243
  resetView(): void;
244
+ /** 返回当前三维相机位置和观察目标点 */
245
+ getViewState(): ProductViewState;
246
+ /**
247
+ * 恢复三维观察视角
248
+ *
249
+ * @param state 要恢复的相机位置和观察目标点
250
+ * @returns 应用后的独立视角快照
251
+ * @throws 坐标不是有限数值或相机与目标点重合时抛出错误
252
+ */
253
+ setViewState(state: ProductViewState): ProductViewState;
164
254
  /**
165
255
  * 更换模型、基础纹理和接收纹理的目标 Mesh
166
256
  *
@@ -180,5 +270,4 @@ export declare class ProductCustomizer {
180
270
  private emit;
181
271
  private reportError;
182
272
  }
183
- export {};
184
273
  //# sourceMappingURL=ProductCustomizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductCustomizer.d.ts","sourceRoot":"","sources":["../../src/customizer/ProductCustomizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProductCustomizer.d.ts","sourceRoot":"","sources":["../../src/customizer/ProductCustomizer.ts"],"names":[],"mappings":"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"}