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
@@ -0,0 +1,542 @@
1
+ import type { ProductCustomizerApi } from '../core/api';
2
+ import type { CustomizerAppearance, CustomizerState, DesignObject, ElementTarget, ProductConfiguration } from '../core/types';
3
+ /** Workbench 可显示的功能控件 */
4
+ export interface WorkbenchFeatures {
5
+ /** 是否显示添加文字控件,默认为 true */
6
+ addText: boolean;
7
+ /** 是否在选中文字时显示文字格式栏,默认为 true */
8
+ textFormatting: boolean;
9
+ /** 是否显示添加图片控件,默认为 true */
10
+ addImage: boolean;
11
+ /** 是否显示撤销和重做控件,默认为 true */
12
+ undoRedo: boolean;
13
+ /** 是否显示删除选中对象控件,默认为 true */
14
+ deleteSelection: boolean;
15
+ /** 是否显示保存 Design JSON 控件,默认为 true */
16
+ saveDesign: boolean;
17
+ /** 是否显示加载 Design JSON 控件,默认为 true */
18
+ loadDesign: boolean;
19
+ /** 是否显示本地或远程产品加载控件,默认为 true */
20
+ loadRemoteProduct: boolean;
21
+ /** 是否显示三维视角重置控件,默认为 true */
22
+ resetView: boolean;
23
+ /** 是否允许通过图层面板调整对象顺序,默认为 true */
24
+ reorderObjects: boolean;
25
+ /** 是否允许通过图层面板切换对象可见性,默认为 true */
26
+ toggleObjectVisibility: boolean;
27
+ /** 是否允许通过图层面板锁定对象,默认为 true */
28
+ lockObjects: boolean;
29
+ /** 是否允许通过图层面板重命名对象,默认为 true */
30
+ renameObjects: boolean;
31
+ /** 是否在图片 Dialog 中显示预设背景,默认为 true */
32
+ presetBackgrounds: boolean;
33
+ /** 是否在图片 Dialog 中显示预设装饰元素,默认为 true */
34
+ presetElements: boolean;
35
+ }
36
+ /** Workbench 可显示的布局区域 */
37
+ export interface WorkbenchLayout {
38
+ /** 是否显示包含品牌和全局操作的顶部栏,默认为 true */
39
+ header: boolean;
40
+ /** 是否显示二维编辑器标题栏,默认为 true */
41
+ editorHeader: boolean;
42
+ /** 是否显示三维查看器标题栏,默认为 true */
43
+ viewerHeader: boolean;
44
+ /** 是否显示二维编辑工具栏,默认为 true */
45
+ toolbar: boolean;
46
+ /** 是否提供编辑区内可折叠的对象图层面板,默认为 true */
47
+ layers: boolean;
48
+ /** 是否在三维预览区显示运行状态,默认为 true */
49
+ status: boolean;
50
+ }
51
+ /** Workbench 顶部栏品牌信息 */
52
+ export interface WorkbenchBranding {
53
+ /** 品牌 Logo 地址,默认为包内 CustomForge Logo */
54
+ logoUrl?: string;
55
+ /** 品牌 Logo 替代文字,默认为 CustomForge */
56
+ logoAlt?: string;
57
+ /** 是否显示品牌 Logo,默认为 true */
58
+ showLogo?: boolean;
59
+ /** 品牌标题,默认为 CustomForge */
60
+ title?: string;
61
+ /** 是否显示品牌标题,默认为 true */
62
+ showTitle?: boolean;
63
+ /** 品牌副标题,默认为 Product customization studio */
64
+ subtitle?: string;
65
+ /** 是否显示品牌副标题,默认为 true */
66
+ showSubtitle?: boolean;
67
+ }
68
+ /** Workbench 可覆盖的界面文案 */
69
+ export interface WorkbenchLabels {
70
+ /** Workbench 无障碍名称 */
71
+ workbench: string;
72
+ /** 二维编辑区域标题 */
73
+ editorTitle: string;
74
+ /** 三维查看区域标题 */
75
+ viewerTitle: string;
76
+ /** 二维编辑区域模式标识 */
77
+ editorMode: string;
78
+ /** 三维查看区域模式标识 */
79
+ viewerMode: string;
80
+ /** 二维编辑画布的无障碍名称 */
81
+ editorCanvas: string;
82
+ /** 三维产品画布的无障碍名称 */
83
+ viewerCanvas: string;
84
+ /** 图层面板标题 */
85
+ layers: string;
86
+ /** 空图层列表提示 */
87
+ noObjects: string;
88
+ /** 添加文字命令 */
89
+ addText: string;
90
+ /** 文字格式栏的无障碍名称 */
91
+ textFormatting: string;
92
+ /** 展开更多文字格式控件的命令 */
93
+ moreTextOptions: string;
94
+ /** 进入画布文字编辑状态的命令 */
95
+ editText: string;
96
+ /** 字体选择控件名称 */
97
+ fontFamily: string;
98
+ /** 字号控件名称 */
99
+ fontSize: string;
100
+ /** 粗体命令 */
101
+ bold: string;
102
+ /** 斜体命令 */
103
+ italic: string;
104
+ /** 下划线命令 */
105
+ underline: string;
106
+ /** 左对齐命令 */
107
+ alignLeft: string;
108
+ /** 居中对齐命令 */
109
+ alignCenter: string;
110
+ /** 右对齐命令 */
111
+ alignRight: string;
112
+ /** 文字背景颜色控件名称 */
113
+ textBackground: string;
114
+ /** 行高控件名称 */
115
+ lineHeight: string;
116
+ /** 字距控件名称 */
117
+ letterSpacing: string;
118
+ /** 添加图片命令 */
119
+ addImage: string;
120
+ /** 将选中图片设为设计背景的命令 */
121
+ setImageAsBackground: string;
122
+ /** 撤销命令 */
123
+ undo: string;
124
+ /** 重做命令 */
125
+ redo: string;
126
+ /** 保存设计命令 */
127
+ saveDesign: string;
128
+ /** 加载设计命令 */
129
+ loadDesign: string;
130
+ /** 删除选中对象命令 */
131
+ deleteSelection: string;
132
+ /** 加载产品命令 */
133
+ loadProduct: string;
134
+ /** 重置三维视角命令 */
135
+ resetView: string;
136
+ /** 文字图层类型名称 */
137
+ textObject: string;
138
+ /** 图片图层类型名称 */
139
+ imageObject: string;
140
+ /** 设计背景图层类型名称 */
141
+ backgroundObject: string;
142
+ /** 显示图层命令 */
143
+ showLayer: string;
144
+ /** 隐藏图层命令 */
145
+ hideLayer: string;
146
+ /** 锁定图层命令 */
147
+ lockLayer: string;
148
+ /** 解锁图层命令 */
149
+ unlockLayer: string;
150
+ /** 图层前移命令 */
151
+ moveLayerForward: string;
152
+ /** 图层后移命令 */
153
+ moveLayerBackward: string;
154
+ /** 删除图层命令 */
155
+ deleteLayer: string;
156
+ /** 文字 Dialog 辅助标题 */
157
+ textDialogEyebrow: string;
158
+ /** 文字 Dialog 标题 */
159
+ textDialogTitle: string;
160
+ /** 文字输入字段标签 */
161
+ textInputLabel: string;
162
+ /** 文字输入占位文案 */
163
+ textInputPlaceholder: string;
164
+ /** 未提供文字内容时添加到画布的默认文字 */
165
+ defaultText: string;
166
+ /** 文字内容为空时的校验提示 */
167
+ textRequired: string;
168
+ /** 文字排版预设区域标题 */
169
+ textPresets: string;
170
+ /** 文字颜色字段标签 */
171
+ textColor: string;
172
+ /** 黑色预设名称 */
173
+ colorBlack: string;
174
+ /** 深灰色预设名称 */
175
+ colorSlate: string;
176
+ /** 灰色预设名称 */
177
+ colorGray: string;
178
+ /** 白色预设名称 */
179
+ colorWhite: string;
180
+ /** 红色预设名称 */
181
+ colorRed: string;
182
+ /** 橙色预设名称 */
183
+ colorOrange: string;
184
+ /** 黄色预设名称 */
185
+ colorYellow: string;
186
+ /** 绿色预设名称 */
187
+ colorGreen: string;
188
+ /** 青绿色预设名称 */
189
+ colorTeal: string;
190
+ /** 青色预设名称 */
191
+ colorCyan: string;
192
+ /** 蓝色预设名称 */
193
+ colorBlue: string;
194
+ /** 紫色预设名称 */
195
+ colorPurple: string;
196
+ /** 粉色预设名称 */
197
+ colorPink: string;
198
+ /** 棕色预设名称 */
199
+ colorBrown: string;
200
+ /** 多选对象属性值不一致时的占位文案 */
201
+ mixedValue: string;
202
+ /** 确认添加文字命令 */
203
+ addTextConfirm: string;
204
+ /** 图片 Dialog 辅助标题 */
205
+ imageDialogEyebrow: string;
206
+ /** 图片 Dialog 标题 */
207
+ imageDialogTitle: string;
208
+ /** 上传图片页签 */
209
+ uploadImageTab: string;
210
+ /** 预设背景页签 */
211
+ backgroundsTab: string;
212
+ /** 装饰元素页签 */
213
+ elementsTab: string;
214
+ /** 选择本地图片命令 */
215
+ chooseImage: string;
216
+ /** 尚未选择本地图片时的状态 */
217
+ noImageSelected: string;
218
+ /** 未提供预设素材时的状态 */
219
+ noPresetAssets: string;
220
+ /** 确认添加图片命令 */
221
+ addImageConfirm: string;
222
+ /** 关闭 Dialog 命令 */
223
+ close: string;
224
+ /** 取消命令 */
225
+ cancel: string;
226
+ /** 产品来源 Dialog 辅助标题 */
227
+ productDialogEyebrow: string;
228
+ /** 产品来源 Dialog 标题 */
229
+ productDialogTitle: string;
230
+ /** 产品来源选择控件名称 */
231
+ productSourceMethod: string;
232
+ /** 本地 GLB 来源选项 */
233
+ productFileSource: string;
234
+ /** 远程模型地址来源选项 */
235
+ productUrlSource: string;
236
+ /** 本地 GLB 文件字段标签 */
237
+ modelFile: string;
238
+ /** 选择本地 GLB 文件命令 */
239
+ chooseModelFile: string;
240
+ /** 尚未选择本地 GLB 文件时的状态 */
241
+ noModelFileSelected: string;
242
+ /** 本地模型文件格式错误提示 */
243
+ invalidModelFile: string;
244
+ /** 尚未选择本地模型文件时的校验提示 */
245
+ modelFileRequired: string;
246
+ /** 模型地址字段标签 */
247
+ modelUrl: string;
248
+ /** 模型地址输入框占位文案 */
249
+ modelUrlPlaceholder: string;
250
+ /** 模型地址为空时的校验提示 */
251
+ modelUrlRequired: string;
252
+ /** 模型地址格式错误时的校验提示 */
253
+ invalidModelUrl: string;
254
+ /** 产品高级设置标题 */
255
+ advancedProductOptions: string;
256
+ /** 基础纹理地址字段标签 */
257
+ textureUrl: string;
258
+ /** 基础纹理地址输入框占位文案 */
259
+ textureUrlPlaceholder: string;
260
+ /** 基础纹理地址格式错误时的校验提示 */
261
+ invalidTextureUrl: string;
262
+ /** 基础纹理用途说明 */
263
+ textureUrlHint: string;
264
+ /** 可定制 Mesh 字段标签 */
265
+ surfaceMesh: string;
266
+ /** 可定制 Mesh 名称为空时的校验提示 */
267
+ surfaceMeshRequired: string;
268
+ /** 可定制 Mesh 用途说明 */
269
+ surfaceMeshHint: string;
270
+ /** 垂直翻转纹理字段标签 */
271
+ flipTexture: string;
272
+ /** 垂直翻转纹理用途说明 */
273
+ flipTextureHint: string;
274
+ /** 使用内置演示产品命令 */
275
+ useDemo: string;
276
+ /** 图片加载中的状态文案 */
277
+ addingImage: string;
278
+ /** Design JSON 加载中的状态文案 */
279
+ loadingDesign: string;
280
+ /** 产品加载中的状态文案 */
281
+ loadingProduct: string;
282
+ /** 撤销执行中的状态文案 */
283
+ undoing: string;
284
+ /** 重做执行中的状态文案 */
285
+ redoing: string;
286
+ /** 初始状态文案 */
287
+ starting: string;
288
+ /** 产品就绪状态文案 */
289
+ productReady: string;
290
+ /** 设计保存成功状态文案 */
291
+ designSaved: string;
292
+ /** 文字添加成功状态文案 */
293
+ textAdded: string;
294
+ /** 图片添加成功状态文案 */
295
+ imageAdded: string;
296
+ /** 设计加载成功状态文案 */
297
+ designLoaded: string;
298
+ /** 撤销完成状态文案 */
299
+ undoComplete: string;
300
+ /** 重做完成状态文案 */
301
+ redoComplete: string;
302
+ /** 单个对象数量格式,其中 {count} 会被替换 */
303
+ objectCountOne: string;
304
+ /** 多个对象数量格式,其中 {count} 会被替换 */
305
+ objectCountMany: string;
306
+ /** 保存 Design JSON 时使用的文件名 */
307
+ designFilename: string;
308
+ }
309
+ /** Workbench 可覆盖的主题变量 */
310
+ export interface WorkbenchTheme {
311
+ /** 主要文字颜色 */
312
+ ink: string;
313
+ /** 次要文字颜色 */
314
+ muted: string;
315
+ /** 边框颜色 */
316
+ border: string;
317
+ /** 主表面颜色 */
318
+ surface: string;
319
+ /** 次级表面颜色 */
320
+ surfaceMuted: string;
321
+ /** 编辑与三维舞台背景颜色 */
322
+ stage: string;
323
+ /** 品牌强调色 */
324
+ accent: string;
325
+ /** 品牌强调色悬停状态 */
326
+ accentHover: string;
327
+ /** 强调色上的文字颜色 */
328
+ accentContrast: string;
329
+ /** 危险操作颜色 */
330
+ danger: string;
331
+ /** Workbench 字体族 CSS 值,默认加载包内 Nunito Sans 并回退到系统无衬线字体 */
332
+ fontFamily: string;
333
+ /** 控件圆角 CSS 值,默认为 4px */
334
+ controlRadius: string;
335
+ }
336
+ /** Workbench 可覆盖的图标语义名称 */
337
+ export type WorkbenchIconName = 'addImage' | 'addText' | 'alignCenter' | 'alignLeft' | 'alignRight' | 'backgroundObject' | 'bold' | 'close' | 'deleteSelection' | 'editText' | 'hideLayer' | 'imageObject' | 'italic' | 'layers' | 'letterSpacing' | 'lineHeight' | 'loadDesign' | 'loadProduct' | 'lock' | 'moreTextOptions' | 'moveBackward' | 'moveForward' | 'redo' | 'resetView' | 'saveDesign' | 'setImageAsBackground' | 'showLayer' | 'textBackground' | 'textColor' | 'textObject' | 'undo' | 'underline' | 'unlock' | 'upload';
338
+ /** Workbench 图标配置 */
339
+ export interface WorkbenchIconConfiguration {
340
+ /** 是否显示内置和自定义图标,默认为 true */
341
+ enabled?: boolean;
342
+ /** 按语义名称提供自定义图片地址,null 表示只隐藏对应图标 */
343
+ sources?: Partial<Record<WorkbenchIconName, string | null>>;
344
+ }
345
+ /** Workbench 文字排版预设 */
346
+ export interface WorkbenchTextPreset {
347
+ /** 在当前预设集合内唯一的标识 */
348
+ id: string;
349
+ /** 预设选择器中显示的名称 */
350
+ name: string;
351
+ /** 预览区域使用的可选示例文字 */
352
+ previewText?: string;
353
+ /** 添加到画布时使用的字体族 */
354
+ fontFamily: string;
355
+ /** 添加到画布时使用的字体大小,单位为像素 */
356
+ fontSize: number;
357
+ /** 添加到画布时使用的文字框宽度,单位为像素 */
358
+ width: number;
359
+ /** 添加到画布时使用的 CSS 颜色值 */
360
+ color: string;
361
+ }
362
+ /** Workbench 字体选择器条目 */
363
+ export interface WorkbenchFontFamily {
364
+ /** 写入文字对象的 CSS 字体族名称 */
365
+ value: string;
366
+ /** 字体选择器中显示的名称 */
367
+ label: string;
368
+ }
369
+ /**
370
+ * 将底层异常转换为用户可见文案
371
+ *
372
+ * @param error 模型、图片、UV 或 Design JSON 操作抛出的原始值
373
+ * @returns 应显示在 Workbench 状态区域的文案
374
+ */
375
+ export type WorkbenchErrorFormatter = (error: unknown) => string;
376
+ /** Workbench 图片素材条目 */
377
+ export interface WorkbenchAsset {
378
+ /** 在对应素材集合内唯一的标识 */
379
+ id: string;
380
+ /** 素材选择器中显示的名称 */
381
+ name: string;
382
+ /** 添加到设计时加载的图片地址 */
383
+ url: string;
384
+ /** 选择器中使用的可选缩略图地址,缺省时使用 url */
385
+ thumbnailUrl?: string;
386
+ /** 素材图片的替代文字,缺省时使用 name */
387
+ alt?: string;
388
+ }
389
+ /** Workbench 可用的预设图片素材 */
390
+ export interface WorkbenchAssetLibrary {
391
+ /** 铺满当前 UV 可打印区域并锁定在底层的背景素材 */
392
+ backgrounds?: WorkbenchAsset[];
393
+ /** 作为普通可编辑图片加入画布的装饰元素 */
394
+ elements?: WorkbenchAsset[];
395
+ }
396
+ /** Workbench 扩展按钮可挂载的稳定位置 */
397
+ export type WorkbenchExtensionPlacement = 'globalActions' | 'editorToolbar' | 'selectionToolbar' | 'layerActions';
398
+ /** Workbench 扩展按钮的视觉语义 */
399
+ export type WorkbenchExtensionVariant = 'primary' | 'secondary' | 'plain' | 'danger';
400
+ /** 扩展按钮判断显示和禁用状态时接收的独立业务快照 */
401
+ export interface WorkbenchExtensionStateContext {
402
+ /** 当前 Workbench 公共接口 */
403
+ workbench: CustomForgeWorkbenchApi;
404
+ /** 当前无界面核心公共接口 */
405
+ customizer: ProductCustomizerApi;
406
+ /** 计算本轮扩展状态时取得的核心状态快照 */
407
+ state: CustomizerState;
408
+ /** 按画布层级排列的当前选中对象快照 */
409
+ selection: DesignObject[];
410
+ /** 当前图层对象,仅 layerActions 位置提供 */
411
+ layer?: DesignObject;
412
+ }
413
+ /** 扩展按钮执行点击处理时接收的上下文 */
414
+ export interface WorkbenchExtensionActionContext extends WorkbenchExtensionStateContext {
415
+ /** 触发扩展命令的原始鼠标事件 */
416
+ event: MouseEvent;
417
+ /** 可用于定位菜单、浮层或读取按钮尺寸的实际按钮元素 */
418
+ anchor: HTMLButtonElement;
419
+ /** Workbench 销毁时会中止的信号,异步扩展应主动响应 */
420
+ signal: AbortSignal;
421
+ }
422
+ /** 根据最新 Workbench 状态计算扩展按钮布尔状态的函数 */
423
+ export type WorkbenchExtensionPredicate = (context: WorkbenchExtensionStateContext) => boolean;
424
+ /** 扩展按钮执行的同步或异步命令 */
425
+ export type WorkbenchExtensionAction = (context: WorkbenchExtensionActionContext) => void | Promise<void>;
426
+ /** 可注册到默认 Workbench 稳定位置的扩展按钮 */
427
+ export interface WorkbenchExtensionButton {
428
+ /** 当前 Workbench 内唯一的稳定标识,必须以字母或数字开头,且只允许字母、数字、点、下划线和连字符 */
429
+ id: string;
430
+ /** 按钮挂载位置 */
431
+ placement: WorkbenchExtensionPlacement;
432
+ /** 可见文案、Tooltip 和无障碍名称 */
433
+ label: string;
434
+ /** 自定义装饰图标地址,支持普通 URL、Data URL 和 Blob URL;Blob URL 的释放由调用方负责 */
435
+ iconUrl?: string;
436
+ /** 是否显示文字,默认除紧凑图层操作外均为 true;隐藏文字时必须提供 iconUrl */
437
+ showLabel?: boolean;
438
+ /** 按钮视觉语义,全局操作默认为 secondary,其他位置默认为 plain */
439
+ variant?: WorkbenchExtensionVariant;
440
+ /** 同一挂载位置内的升序排列值,默认为 0 */
441
+ order?: number;
442
+ /** 添加到按钮元素的一个或多个宿主 CSS 类名 */
443
+ className?: string;
444
+ /** 固定值或根据最新状态同步计算的可见条件,默认为 true;判断函数应保持无副作用 */
445
+ visible?: boolean | WorkbenchExtensionPredicate;
446
+ /** 固定值或根据最新状态同步计算的禁用条件,默认为 false;判断函数应保持无副作用 */
447
+ disabled?: boolean | WorkbenchExtensionPredicate;
448
+ /** 点击按钮时执行的命令;Promise 未结束时自动进入 loading,异常通过 formatError 显示 */
449
+ onClick: WorkbenchExtensionAction;
450
+ }
451
+ /** Workbench 初始化配置 */
452
+ export interface WorkbenchOptions {
453
+ /** Workbench 独占使用的挂载元素或 CSS 选择器 */
454
+ container: ElementTarget;
455
+ /** 添加到 Workbench 根元素的一个或多个 CSS 类名 */
456
+ className?: string;
457
+ /** 二维编辑画布的逻辑宽度,单位为像素,默认为 1024 */
458
+ editorWidth?: number;
459
+ /** 二维编辑画布的逻辑高度,单位为像素,默认为 512 */
460
+ editorHeight?: number;
461
+ /** 最多保留的撤销步骤数量,默认为 50 */
462
+ historyLimit?: number;
463
+ /** 初始化时加载的产品配置 */
464
+ product?: ProductConfiguration;
465
+ /** 二维选择控件、UV 辅助层和三维画布的外观配置 */
466
+ appearance?: CustomizerAppearance;
467
+ /** 功能控件开关,未传字段使用默认值 */
468
+ features?: Partial<WorkbenchFeatures>;
469
+ /** 布局区域开关,未传字段使用默认值 */
470
+ layout?: Partial<WorkbenchLayout>;
471
+ /** 顶部栏使用的可选品牌信息 */
472
+ branding?: WorkbenchBranding;
473
+ /** 可覆盖的界面文案 */
474
+ labels?: Partial<WorkbenchLabels>;
475
+ /** 可覆盖的主题变量 */
476
+ theme?: Partial<WorkbenchTheme>;
477
+ /** 图标显示与替换配置 */
478
+ icons?: WorkbenchIconConfiguration;
479
+ /** 替换内置文字排版预设,空数组表示不显示预设 */
480
+ textPresets?: WorkbenchTextPreset[];
481
+ /** 替换字体选择器条目,预设使用但未列出的字体会以 CSS 字体族名称补充 */
482
+ fontFamilies?: WorkbenchFontFamily[];
483
+ /** 图片 Dialog 使用的背景与装饰素材 */
484
+ assets?: WorkbenchAssetLibrary;
485
+ /** 初始化时注册到默认界面稳定位置的扩展按钮 */
486
+ extensions?: readonly WorkbenchExtensionButton[];
487
+ /** 将模型、图片和 Design JSON 异常转换为界面提示 */
488
+ formatError?: WorkbenchErrorFormatter;
489
+ }
490
+ /** Workbench 功能控件名称 */
491
+ export type WorkbenchFeatureName = keyof WorkbenchFeatures;
492
+ /** Workbench 布局区域名称 */
493
+ export type WorkbenchLayoutName = keyof WorkbenchLayout;
494
+ /** Workbench 状态提示样式 */
495
+ export type WorkbenchStatusMode = 'ready' | 'busy' | 'error';
496
+ /**
497
+ * 带默认界面的产品定制工作台能力契约
498
+ *
499
+ * 可通过根元素、实例级 className 和主题变量调整默认样式;完全自建 UI 时应直接使用 ProductCustomizerApi
500
+ */
501
+ export interface CustomForgeWorkbenchApi {
502
+ /** Workbench 使用的无界面核心接口 */
503
+ readonly customizer: ProductCustomizerApi;
504
+ /** 可用于实例级 DOM 集成和附加样式的 Workbench 根元素 */
505
+ readonly element: HTMLElement;
506
+ /** 返回当前功能控件开关的独立快照 */
507
+ getFeatures(): WorkbenchFeatures;
508
+ /** 在运行时显示或隐藏一项默认功能控件 */
509
+ setFeature(feature: WorkbenchFeatureName, enabled: boolean): void;
510
+ /** 返回当前布局区域开关的独立快照 */
511
+ getLayout(): WorkbenchLayout;
512
+ /** 在运行时显示或隐藏一个默认布局区域 */
513
+ setLayout(section: WorkbenchLayoutName, visible: boolean): void;
514
+ /** 返回当前完整主题的独立快照 */
515
+ getTheme(): WorkbenchTheme;
516
+ /** 合并主题变量、立即更新当前实例并返回完整主题 */
517
+ setTheme(theme: Partial<WorkbenchTheme>): WorkbenchTheme;
518
+ /** 返回当前已注册扩展按钮的独立配置快照,不包含运行中的 loading 状态 */
519
+ getExtensions(): WorkbenchExtensionButton[];
520
+ /**
521
+ * 注册并立即渲染一个扩展按钮
522
+ *
523
+ * @param extension 扩展按钮配置
524
+ * @returns 仅在本次注册仍有效时移除该扩展的幂等清理函数
525
+ * @throws 配置无效、ID 重复或 Workbench 无法渲染时抛出错误
526
+ */
527
+ registerExtension(extension: WorkbenchExtensionButton): () => void;
528
+ /**
529
+ * 按稳定 ID 移除扩展按钮
530
+ *
531
+ * @param id 注册时使用的扩展 ID
532
+ * @returns 移除前是否存在该扩展
533
+ */
534
+ removeExtension(id: string): boolean;
535
+ /** 使用最新核心状态重新计算所有扩展按钮的显示和禁用条件,供宿主状态变化后调用 */
536
+ refreshExtensions(): void;
537
+ /** 更新默认界面的状态文案和状态样式 */
538
+ setStatus(message: string, mode?: WorkbenchStatusMode): void;
539
+ /** 释放默认界面、核心实例和关联浏览器资源 */
540
+ destroy(): void;
541
+ }
542
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workbench/types.ts"],"names":[],"mappings":"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"}