customforge 0.1.0-alpha.1 → 0.1.0-alpha.2
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.
- package/CHANGELOG.md +37 -11
- package/LICENSES/NunitoSans-OFL.txt +93 -0
- package/README.md +233 -62
- package/README.zh-CN.md +231 -60
- package/dist/NunitoSans-Variable.ttf +0 -0
- package/dist/ProductCustomizer-rMRyWe7L.js +1624 -0
- package/dist/ProductCustomizer-rMRyWe7L.js.map +1 -0
- package/dist/core/design.d.ts.map +1 -1
- package/dist/core/types.d.ts +35 -4
- package/dist/core/types.d.ts.map +1 -1
- package/dist/customizer/ProductCustomizer.d.ts +78 -0
- package/dist/customizer/ProductCustomizer.d.ts.map +1 -1
- package/dist/editor/DesignEditor.d.ts +108 -6
- package/dist/editor/DesignEditor.d.ts.map +1 -1
- package/dist/editor/DesignHistory.d.ts +27 -0
- package/dist/editor/DesignHistory.d.ts.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1108
- package/dist/index.js.map +1 -1
- package/dist/style.css +1319 -0
- package/dist/workbench/CustomForgeWorkbench.d.ts +128 -0
- package/dist/workbench/CustomForgeWorkbench.d.ts.map +1 -0
- package/dist/workbench/assets/catalog.d.ts +8 -0
- package/dist/workbench/assets/catalog.d.ts.map +1 -0
- package/dist/workbench/config.d.ts +55 -0
- package/dist/workbench/config.d.ts.map +1 -0
- package/dist/workbench/icons.d.ts +4 -0
- package/dist/workbench/icons.d.ts.map +1 -0
- package/dist/workbench/index.d.ts +25 -0
- package/dist/workbench/index.d.ts.map +1 -0
- package/dist/workbench/template.d.ts +3 -0
- package/dist/workbench/template.d.ts.map +1 -0
- package/dist/workbench/types.d.ts +294 -0
- package/dist/workbench/types.d.ts.map +1 -0
- package/dist/workbench.js +1920 -0
- package/dist/workbench.js.map +1 -0
- package/package.json +70 -71
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { ProductCustomizer } from '../customizer/ProductCustomizer';
|
|
2
|
+
import type { WorkbenchFeatureName, WorkbenchLayoutName, WorkbenchOptions, WorkbenchStatusMode } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* 提供可配置默认界面的产品定制工作台
|
|
5
|
+
*
|
|
6
|
+
* 功能和布局开关只控制 Workbench 自带界面
|
|
7
|
+
* 底层 ProductCustomizer 仍通过 customizer 属性提供完整公共 API
|
|
8
|
+
* 不再使用实例时必须调用 destroy
|
|
9
|
+
*/
|
|
10
|
+
export declare class CustomForgeWorkbench {
|
|
11
|
+
/** Workbench 使用的底层无界面定制器 */
|
|
12
|
+
readonly customizer: ProductCustomizer;
|
|
13
|
+
/** Workbench 根元素 */
|
|
14
|
+
readonly element: HTMLElement;
|
|
15
|
+
private readonly host;
|
|
16
|
+
private readonly abortController;
|
|
17
|
+
private readonly dialogCloseTimers;
|
|
18
|
+
private readonly unsubscribe;
|
|
19
|
+
private readonly features;
|
|
20
|
+
private readonly layout;
|
|
21
|
+
private readonly labels;
|
|
22
|
+
private readonly icons;
|
|
23
|
+
private readonly textPresets;
|
|
24
|
+
private readonly backgrounds;
|
|
25
|
+
private readonly elements;
|
|
26
|
+
private readonly layerList;
|
|
27
|
+
private readonly deleteButton;
|
|
28
|
+
private readonly undoButton;
|
|
29
|
+
private readonly redoButton;
|
|
30
|
+
private readonly statusLabel;
|
|
31
|
+
private readonly objectCountLabel;
|
|
32
|
+
private readonly imageInput;
|
|
33
|
+
private readonly designInput;
|
|
34
|
+
private readonly loadDesignButton;
|
|
35
|
+
private readonly textDialog;
|
|
36
|
+
private readonly textForm;
|
|
37
|
+
private readonly imageDialog;
|
|
38
|
+
private readonly imageForm;
|
|
39
|
+
private readonly imageSubmitButton;
|
|
40
|
+
private readonly productDialog;
|
|
41
|
+
private readonly remoteForm;
|
|
42
|
+
private readonly submitProductButton;
|
|
43
|
+
private selectedObjectIds;
|
|
44
|
+
private selectedTextPresetId?;
|
|
45
|
+
private selectedImage?;
|
|
46
|
+
private activeImageTab;
|
|
47
|
+
private layerSignature;
|
|
48
|
+
private draggedObjectId?;
|
|
49
|
+
private destroyed;
|
|
50
|
+
private constructor();
|
|
51
|
+
/**
|
|
52
|
+
* 创建 Workbench 并完成底层定制器初始化
|
|
53
|
+
*
|
|
54
|
+
* @param options 挂载容器、产品资源、功能、外观和素材配置
|
|
55
|
+
* @returns 初始化完成的 Workbench
|
|
56
|
+
* @throws 挂载容器无效或产品初始化失败时清理已创建界面并继续抛出错误
|
|
57
|
+
*/
|
|
58
|
+
static create(options: WorkbenchOptions): Promise<CustomForgeWorkbench>;
|
|
59
|
+
/**
|
|
60
|
+
* 在运行时显示或隐藏某项内置功能控件
|
|
61
|
+
*
|
|
62
|
+
* 该方法不限制通过 customizer 属性直接调用对应核心 API
|
|
63
|
+
*
|
|
64
|
+
* @param feature 功能名称
|
|
65
|
+
* @param enabled 是否显示并启用对应控件
|
|
66
|
+
*/
|
|
67
|
+
setFeature(feature: WorkbenchFeatureName, enabled: boolean): void;
|
|
68
|
+
/**
|
|
69
|
+
* 在运行时显示或隐藏 Workbench 布局区域
|
|
70
|
+
*
|
|
71
|
+
* @param section 布局区域名称
|
|
72
|
+
* @param visible 是否显示该区域
|
|
73
|
+
*/
|
|
74
|
+
setLayout(section: WorkbenchLayoutName, visible: boolean): void;
|
|
75
|
+
/**
|
|
76
|
+
* 更新底部状态栏内容
|
|
77
|
+
*
|
|
78
|
+
* @param message 状态文字
|
|
79
|
+
* @param mode 状态样式,默认为 ready
|
|
80
|
+
*/
|
|
81
|
+
setStatus(message: string, mode?: WorkbenchStatusMode): void;
|
|
82
|
+
/** 释放 DOM 事件、核心实例和 Workbench 挂载内容 */
|
|
83
|
+
destroy(): void;
|
|
84
|
+
private bindEvents;
|
|
85
|
+
private handleRootClick;
|
|
86
|
+
private handleHistoryShortcut;
|
|
87
|
+
private handleImageTabShortcut;
|
|
88
|
+
private action;
|
|
89
|
+
private showDialog;
|
|
90
|
+
private closeDialog;
|
|
91
|
+
private clearDialogClose;
|
|
92
|
+
private applyVisibility;
|
|
93
|
+
private toolGroup;
|
|
94
|
+
private updateObjectCount;
|
|
95
|
+
private updateHistoryButtons;
|
|
96
|
+
private localizeStatus;
|
|
97
|
+
private runHistory;
|
|
98
|
+
private saveDesign;
|
|
99
|
+
private exportTexture;
|
|
100
|
+
private renderLayers;
|
|
101
|
+
private createLayerItem;
|
|
102
|
+
private createLayerButton;
|
|
103
|
+
private handleLayerAction;
|
|
104
|
+
private handleLayerRename;
|
|
105
|
+
private moveLayerBy;
|
|
106
|
+
private handleLayerDragStart;
|
|
107
|
+
private handleLayerDragOver;
|
|
108
|
+
private handleLayerDrop;
|
|
109
|
+
private clearLayerDragState;
|
|
110
|
+
private renderTextPresets;
|
|
111
|
+
private openTextDialog;
|
|
112
|
+
private selectTextPreset;
|
|
113
|
+
private updateTextPreviews;
|
|
114
|
+
private addTextFromDialog;
|
|
115
|
+
private renderAssetPresets;
|
|
116
|
+
private renderAssetGroup;
|
|
117
|
+
private openImageDialog;
|
|
118
|
+
private setImageTab;
|
|
119
|
+
private selectUploadedImage;
|
|
120
|
+
private selectPresetAsset;
|
|
121
|
+
private addImageFromDialog;
|
|
122
|
+
private resetImageSelection;
|
|
123
|
+
private releaseImageSelection;
|
|
124
|
+
private loadSelectedDesign;
|
|
125
|
+
private loadDemoProduct;
|
|
126
|
+
private loadRemoteProduct;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=CustomForgeWorkbench.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomForgeWorkbench.d.ts","sourceRoot":"","sources":["../../src/workbench/CustomForgeWorkbench.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { WorkbenchAssetLibrary } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Workbench 随包提供的图片素材目录
|
|
4
|
+
*
|
|
5
|
+
* 新素材文件应分别放入 backgrounds 或 elements 目录,并在此处使用 import 后注册
|
|
6
|
+
*/
|
|
7
|
+
export declare const builtInAssetLibrary: Required<WorkbenchAssetLibrary>;
|
|
8
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/workbench/assets/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAGrD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,qBAAqB,CAU/D,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { WorkbenchAsset, WorkbenchFeatures, WorkbenchIconConfiguration, WorkbenchLabels, WorkbenchLayout, WorkbenchOptions, WorkbenchTextPreset, WorkbenchTheme } from './types';
|
|
2
|
+
/** Workbench 内部使用的完整品牌配置 */
|
|
3
|
+
export interface NormalizedWorkbenchBranding {
|
|
4
|
+
/** 品牌 Logo 地址 */
|
|
5
|
+
logoUrl: string;
|
|
6
|
+
/** 品牌 Logo 替代文字 */
|
|
7
|
+
logoAlt: string;
|
|
8
|
+
/** 是否显示品牌 Logo */
|
|
9
|
+
showLogo: boolean;
|
|
10
|
+
/** 品牌标题 */
|
|
11
|
+
title: string;
|
|
12
|
+
/** 是否显示品牌标题 */
|
|
13
|
+
showTitle: boolean;
|
|
14
|
+
/** 品牌副标题 */
|
|
15
|
+
subtitle: string;
|
|
16
|
+
/** 是否显示品牌副标题 */
|
|
17
|
+
showSubtitle: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** Workbench 内部使用的完整配置 */
|
|
20
|
+
export interface NormalizedWorkbenchOptions {
|
|
21
|
+
/** 二维编辑画布的逻辑宽度 */
|
|
22
|
+
editorWidth: number;
|
|
23
|
+
/** 二维编辑画布的逻辑高度 */
|
|
24
|
+
editorHeight: number;
|
|
25
|
+
/** 最多保留的撤销步骤数量 */
|
|
26
|
+
historyLimit: number;
|
|
27
|
+
/** 初始化产品配置 */
|
|
28
|
+
product: WorkbenchOptions['product'];
|
|
29
|
+
/** 完整功能开关 */
|
|
30
|
+
features: WorkbenchFeatures;
|
|
31
|
+
/** 完整布局开关 */
|
|
32
|
+
layout: WorkbenchLayout;
|
|
33
|
+
/** 完整品牌配置 */
|
|
34
|
+
branding: NormalizedWorkbenchBranding;
|
|
35
|
+
/** 完整界面文案 */
|
|
36
|
+
labels: WorkbenchLabels;
|
|
37
|
+
/** 完整主题配置 */
|
|
38
|
+
theme: WorkbenchTheme;
|
|
39
|
+
/** 完整图标配置 */
|
|
40
|
+
icons: Required<WorkbenchIconConfiguration>;
|
|
41
|
+
/** 可用文字排版预设 */
|
|
42
|
+
textPresets: WorkbenchTextPreset[];
|
|
43
|
+
/** 可用背景素材 */
|
|
44
|
+
backgrounds: WorkbenchAsset[];
|
|
45
|
+
/** 可用装饰元素 */
|
|
46
|
+
elements: WorkbenchAsset[];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 补全并校验 Workbench 默认配置
|
|
50
|
+
*
|
|
51
|
+
* @param options 外部 Workbench 配置
|
|
52
|
+
* @returns 不包含挂载容器的完整内部配置
|
|
53
|
+
*/
|
|
54
|
+
export declare function normalizeWorkbenchOptions(options: WorkbenchOptions): NormalizedWorkbenchOptions;
|
|
55
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/workbench/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACf,MAAM,SAAS,CAAA;AAEhB,4BAA4B;AAC5B,MAAM,WAAW,2BAA2B;IAC1C,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAA;IAEf,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAA;IAEf,kBAAkB;IAClB,QAAQ,EAAE,OAAO,CAAA;IAEjB,WAAW;IACX,KAAK,EAAE,MAAM,CAAA;IAEb,eAAe;IACf,SAAS,EAAE,OAAO,CAAA;IAElB,YAAY;IACZ,QAAQ,EAAE,MAAM,CAAA;IAEhB,gBAAgB;IAChB,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,0BAA0B;AAC1B,MAAM,WAAW,0BAA0B;IACzC,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAA;IAEnB,kBAAkB;IAClB,YAAY,EAAE,MAAM,CAAA;IAEpB,kBAAkB;IAClB,YAAY,EAAE,MAAM,CAAA;IAEpB,cAAc;IACd,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAEpC,aAAa;IACb,QAAQ,EAAE,iBAAiB,CAAA;IAE3B,aAAa;IACb,MAAM,EAAE,eAAe,CAAA;IAEvB,aAAa;IACb,QAAQ,EAAE,2BAA2B,CAAA;IAErC,aAAa;IACb,MAAM,EAAE,eAAe,CAAA;IAEvB,aAAa;IACb,KAAK,EAAE,cAAc,CAAA;IAErB,aAAa;IACb,KAAK,EAAE,QAAQ,CAAC,0BAA0B,CAAC,CAAA;IAE3C,eAAe;IACf,WAAW,EAAE,mBAAmB,EAAE,CAAA;IAElC,aAAa;IACb,WAAW,EAAE,cAAc,EAAE,CAAA;IAE7B,aAAa;IACb,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B;AAyMD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gBAAgB,GACxB,0BAA0B,CAyB5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/workbench/icons.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,SAAS,CAAA;AAEhB,gCAAgC;AAChC,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,WAAW,EACjB,aAAa,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAClD,IAAI,CAkEN"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { CustomForgeWorkbench } from './CustomForgeWorkbench';
|
|
2
|
+
import type { WorkbenchOptions } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* 创建带默认界面的产品定制工作台
|
|
5
|
+
*
|
|
6
|
+
* 使用 `features` 控制具体功能控件,使用 `layout` 控制顶部栏、工具栏、图层面板等区域
|
|
7
|
+
* 不再使用返回的实例时必须调用 `destroy()`
|
|
8
|
+
*
|
|
9
|
+
* @param options 挂载容器、产品资源、功能和布局开关
|
|
10
|
+
* @returns 初始化完成的 Workbench
|
|
11
|
+
* @throws 挂载容器无效、模型加载失败或目标 Mesh 不存在时抛出错误
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const workbench = await createWorkbench({
|
|
16
|
+
* container: '#app',
|
|
17
|
+
* features: { addText: false },
|
|
18
|
+
* layout: { header: false },
|
|
19
|
+
* })
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function createWorkbench(options: WorkbenchOptions): Promise<CustomForgeWorkbench>;
|
|
23
|
+
export { CustomForgeWorkbench };
|
|
24
|
+
export type { WorkbenchAsset, WorkbenchAssetLibrary, WorkbenchBranding, WorkbenchFeatureName, WorkbenchFeatures, WorkbenchIconConfiguration, WorkbenchIconName, WorkbenchLabels, WorkbenchLayout, WorkbenchLayoutName, WorkbenchOptions, WorkbenchStatusMode, WorkbenchTextPreset, WorkbenchTheme, } from './types';
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workbench/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,oBAAoB,CAAC,CAE/B;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAA;AAC/B,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,GACf,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/workbench/template.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,wBAAgB,sBAAsB,IAAI,WAAW,CAyOpD"}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import type { ElementTarget, ProductConfiguration } from '../core/types';
|
|
2
|
+
/** Workbench 可显示的功能控件 */
|
|
3
|
+
export interface WorkbenchFeatures {
|
|
4
|
+
/** 是否显示添加文字控件,默认为 true */
|
|
5
|
+
addText: boolean;
|
|
6
|
+
/** 是否显示添加图片控件,默认为 true */
|
|
7
|
+
addImage: boolean;
|
|
8
|
+
/** 是否显示撤销和重做控件,默认为 true */
|
|
9
|
+
undoRedo: boolean;
|
|
10
|
+
/** 是否显示删除选中对象控件,默认为 true */
|
|
11
|
+
deleteSelection: boolean;
|
|
12
|
+
/** 是否显示保存 Design JSON 控件,默认为 true */
|
|
13
|
+
saveDesign: boolean;
|
|
14
|
+
/** 是否显示加载 Design JSON 控件,默认为 true */
|
|
15
|
+
loadDesign: boolean;
|
|
16
|
+
/** 是否显示远程产品加载控件,默认为 true */
|
|
17
|
+
loadRemoteProduct: boolean;
|
|
18
|
+
/** 是否显示 PNG 导出控件,默认为 true */
|
|
19
|
+
exportTexture: boolean;
|
|
20
|
+
/** 是否显示三维视角重置控件,默认为 true */
|
|
21
|
+
resetView: boolean;
|
|
22
|
+
/** 是否允许通过图层面板调整对象顺序,默认为 true */
|
|
23
|
+
reorderObjects: boolean;
|
|
24
|
+
/** 是否允许通过图层面板切换对象可见性,默认为 true */
|
|
25
|
+
toggleObjectVisibility: boolean;
|
|
26
|
+
/** 是否允许通过图层面板锁定对象,默认为 true */
|
|
27
|
+
lockObjects: boolean;
|
|
28
|
+
/** 是否允许通过图层面板重命名对象,默认为 true */
|
|
29
|
+
renameObjects: boolean;
|
|
30
|
+
/** 是否在图片 Dialog 中显示预设背景,默认为 true */
|
|
31
|
+
presetBackgrounds: boolean;
|
|
32
|
+
/** 是否在图片 Dialog 中显示预设装饰元素,默认为 true */
|
|
33
|
+
presetElements: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Workbench 可显示的布局区域 */
|
|
36
|
+
export interface WorkbenchLayout {
|
|
37
|
+
/** 是否显示包含品牌和全局操作的顶部栏,默认为 true */
|
|
38
|
+
header: boolean;
|
|
39
|
+
/** 是否显示二维编辑器标题栏,默认为 true */
|
|
40
|
+
editorHeader: boolean;
|
|
41
|
+
/** 是否显示三维查看器标题栏,默认为 true */
|
|
42
|
+
viewerHeader: boolean;
|
|
43
|
+
/** 是否显示二维编辑工具栏,默认为 true */
|
|
44
|
+
toolbar: boolean;
|
|
45
|
+
/** 是否显示对象图层面板,默认为 true */
|
|
46
|
+
layers: boolean;
|
|
47
|
+
/** 是否显示底部运行状态栏,默认为 true */
|
|
48
|
+
status: boolean;
|
|
49
|
+
}
|
|
50
|
+
/** Workbench 顶部栏品牌信息 */
|
|
51
|
+
export interface WorkbenchBranding {
|
|
52
|
+
/** 品牌 Logo 地址,默认为包内 CustomForge Logo */
|
|
53
|
+
logoUrl?: string;
|
|
54
|
+
/** 品牌 Logo 替代文字,默认为 CustomForge */
|
|
55
|
+
logoAlt?: string;
|
|
56
|
+
/** 是否显示品牌 Logo,默认为 true */
|
|
57
|
+
showLogo?: boolean;
|
|
58
|
+
/** 品牌标题,默认为 CustomForge */
|
|
59
|
+
title?: string;
|
|
60
|
+
/** 是否显示品牌标题,默认为 true */
|
|
61
|
+
showTitle?: boolean;
|
|
62
|
+
/** 品牌副标题,默认为 Product customization studio */
|
|
63
|
+
subtitle?: string;
|
|
64
|
+
/** 是否显示品牌副标题,默认为 true */
|
|
65
|
+
showSubtitle?: boolean;
|
|
66
|
+
}
|
|
67
|
+
/** Workbench 可覆盖的界面文案 */
|
|
68
|
+
export interface WorkbenchLabels {
|
|
69
|
+
/** Workbench 无障碍名称 */
|
|
70
|
+
workbench: string;
|
|
71
|
+
/** 二维编辑区域标题 */
|
|
72
|
+
editorTitle: string;
|
|
73
|
+
/** 三维查看区域标题 */
|
|
74
|
+
viewerTitle: string;
|
|
75
|
+
/** 图层面板标题 */
|
|
76
|
+
layers: string;
|
|
77
|
+
/** 空图层列表提示 */
|
|
78
|
+
noObjects: string;
|
|
79
|
+
/** 添加文字命令 */
|
|
80
|
+
addText: string;
|
|
81
|
+
/** 添加图片命令 */
|
|
82
|
+
addImage: string;
|
|
83
|
+
/** 撤销命令 */
|
|
84
|
+
undo: string;
|
|
85
|
+
/** 重做命令 */
|
|
86
|
+
redo: string;
|
|
87
|
+
/** 保存设计命令 */
|
|
88
|
+
saveDesign: string;
|
|
89
|
+
/** 加载设计命令 */
|
|
90
|
+
loadDesign: string;
|
|
91
|
+
/** 删除选中对象命令 */
|
|
92
|
+
deleteSelection: string;
|
|
93
|
+
/** 加载产品命令 */
|
|
94
|
+
loadProduct: string;
|
|
95
|
+
/** 导出 PNG 命令 */
|
|
96
|
+
exportTexture: string;
|
|
97
|
+
/** 重置三维视角命令 */
|
|
98
|
+
resetView: string;
|
|
99
|
+
/** 文字图层类型名称 */
|
|
100
|
+
textObject: string;
|
|
101
|
+
/** 图片图层类型名称 */
|
|
102
|
+
imageObject: string;
|
|
103
|
+
/** 设计背景图层类型名称 */
|
|
104
|
+
backgroundObject: string;
|
|
105
|
+
/** 显示图层命令 */
|
|
106
|
+
showLayer: string;
|
|
107
|
+
/** 隐藏图层命令 */
|
|
108
|
+
hideLayer: string;
|
|
109
|
+
/** 锁定图层命令 */
|
|
110
|
+
lockLayer: string;
|
|
111
|
+
/** 解锁图层命令 */
|
|
112
|
+
unlockLayer: string;
|
|
113
|
+
/** 图层前移命令 */
|
|
114
|
+
moveLayerForward: string;
|
|
115
|
+
/** 图层后移命令 */
|
|
116
|
+
moveLayerBackward: string;
|
|
117
|
+
/** 删除图层命令 */
|
|
118
|
+
deleteLayer: string;
|
|
119
|
+
/** 文字 Dialog 辅助标题 */
|
|
120
|
+
textDialogEyebrow: string;
|
|
121
|
+
/** 文字 Dialog 标题 */
|
|
122
|
+
textDialogTitle: string;
|
|
123
|
+
/** 文字输入字段标签 */
|
|
124
|
+
textInputLabel: string;
|
|
125
|
+
/** 文字输入占位文案 */
|
|
126
|
+
textInputPlaceholder: string;
|
|
127
|
+
/** 文字排版预设区域标题 */
|
|
128
|
+
textPresets: string;
|
|
129
|
+
/** 文字颜色字段标签 */
|
|
130
|
+
textColor: string;
|
|
131
|
+
/** 确认添加文字命令 */
|
|
132
|
+
addTextConfirm: string;
|
|
133
|
+
/** 图片 Dialog 辅助标题 */
|
|
134
|
+
imageDialogEyebrow: string;
|
|
135
|
+
/** 图片 Dialog 标题 */
|
|
136
|
+
imageDialogTitle: string;
|
|
137
|
+
/** 上传图片页签 */
|
|
138
|
+
uploadImageTab: string;
|
|
139
|
+
/** 预设背景页签 */
|
|
140
|
+
backgroundsTab: string;
|
|
141
|
+
/** 装饰元素页签 */
|
|
142
|
+
elementsTab: string;
|
|
143
|
+
/** 选择本地图片命令 */
|
|
144
|
+
chooseImage: string;
|
|
145
|
+
/** 尚未选择本地图片时的状态 */
|
|
146
|
+
noImageSelected: string;
|
|
147
|
+
/** 未提供预设素材时的状态 */
|
|
148
|
+
noPresetAssets: string;
|
|
149
|
+
/** 确认添加图片命令 */
|
|
150
|
+
addImageConfirm: string;
|
|
151
|
+
/** 关闭 Dialog 命令 */
|
|
152
|
+
close: string;
|
|
153
|
+
/** 取消命令 */
|
|
154
|
+
cancel: string;
|
|
155
|
+
/** 远程产品 Dialog 辅助标题 */
|
|
156
|
+
productDialogEyebrow: string;
|
|
157
|
+
/** 远程产品 Dialog 标题 */
|
|
158
|
+
productDialogTitle: string;
|
|
159
|
+
/** 模型地址字段标签 */
|
|
160
|
+
modelUrl: string;
|
|
161
|
+
/** 基础纹理地址字段标签 */
|
|
162
|
+
textureUrl: string;
|
|
163
|
+
/** 可定制 Mesh 字段标签 */
|
|
164
|
+
surfaceMesh: string;
|
|
165
|
+
/** 垂直翻转纹理字段标签 */
|
|
166
|
+
flipTexture: string;
|
|
167
|
+
/** 使用内置演示产品命令 */
|
|
168
|
+
useDemo: string;
|
|
169
|
+
/** 初始状态文案 */
|
|
170
|
+
starting: string;
|
|
171
|
+
/** 产品就绪状态文案 */
|
|
172
|
+
productReady: string;
|
|
173
|
+
/** 设计保存成功状态文案 */
|
|
174
|
+
designSaved: string;
|
|
175
|
+
/** 设计加载成功状态文案 */
|
|
176
|
+
designLoaded: string;
|
|
177
|
+
/** 撤销完成状态文案 */
|
|
178
|
+
undoComplete: string;
|
|
179
|
+
/** 重做完成状态文案 */
|
|
180
|
+
redoComplete: string;
|
|
181
|
+
/** 单个对象数量格式,其中 {count} 会被替换 */
|
|
182
|
+
objectCountOne: string;
|
|
183
|
+
/** 多个对象数量格式,其中 {count} 会被替换 */
|
|
184
|
+
objectCountMany: string;
|
|
185
|
+
}
|
|
186
|
+
/** Workbench 可覆盖的主题变量 */
|
|
187
|
+
export interface WorkbenchTheme {
|
|
188
|
+
/** 主要文字颜色 */
|
|
189
|
+
ink: string;
|
|
190
|
+
/** 次要文字颜色 */
|
|
191
|
+
muted: string;
|
|
192
|
+
/** 边框颜色 */
|
|
193
|
+
border: string;
|
|
194
|
+
/** 主表面颜色 */
|
|
195
|
+
surface: string;
|
|
196
|
+
/** 次级表面颜色 */
|
|
197
|
+
surfaceMuted: string;
|
|
198
|
+
/** 编辑与三维舞台背景颜色 */
|
|
199
|
+
stage: string;
|
|
200
|
+
/** 品牌强调色 */
|
|
201
|
+
accent: string;
|
|
202
|
+
/** 品牌强调色悬停状态 */
|
|
203
|
+
accentHover: string;
|
|
204
|
+
/** 强调色上的文字颜色 */
|
|
205
|
+
accentContrast: string;
|
|
206
|
+
/** 危险操作颜色 */
|
|
207
|
+
danger: string;
|
|
208
|
+
/** Workbench 字体族 CSS 值,默认加载包内 Nunito Sans 并回退到系统无衬线字体 */
|
|
209
|
+
fontFamily: string;
|
|
210
|
+
/** 控件圆角 CSS 值,默认为 7px */
|
|
211
|
+
controlRadius: string;
|
|
212
|
+
}
|
|
213
|
+
/** Workbench 可覆盖的图标语义名称 */
|
|
214
|
+
export type WorkbenchIconName = 'addImage' | 'addText' | 'backgroundObject' | 'close' | 'deleteSelection' | 'exportTexture' | 'hideLayer' | 'imageObject' | 'layers' | 'loadDesign' | 'loadProduct' | 'lock' | 'moveBackward' | 'moveForward' | 'redo' | 'resetView' | 'saveDesign' | 'showLayer' | 'textObject' | 'undo' | 'unlock' | 'upload';
|
|
215
|
+
/** Workbench 图标配置 */
|
|
216
|
+
export interface WorkbenchIconConfiguration {
|
|
217
|
+
/** 是否显示内置和自定义图标,默认为 true */
|
|
218
|
+
enabled?: boolean;
|
|
219
|
+
/** 按语义名称提供自定义图片地址,null 表示只隐藏对应图标 */
|
|
220
|
+
sources?: Partial<Record<WorkbenchIconName, string | null>>;
|
|
221
|
+
}
|
|
222
|
+
/** Workbench 文字排版预设 */
|
|
223
|
+
export interface WorkbenchTextPreset {
|
|
224
|
+
/** 在当前预设集合内唯一的标识 */
|
|
225
|
+
id: string;
|
|
226
|
+
/** 预设选择器中显示的名称 */
|
|
227
|
+
name: string;
|
|
228
|
+
/** 预览区域使用的可选示例文字 */
|
|
229
|
+
previewText?: string;
|
|
230
|
+
/** 添加到画布时使用的字体族 */
|
|
231
|
+
fontFamily: string;
|
|
232
|
+
/** 添加到画布时使用的字体大小,单位为像素 */
|
|
233
|
+
fontSize: number;
|
|
234
|
+
/** 添加到画布时使用的文字框宽度,单位为像素 */
|
|
235
|
+
width: number;
|
|
236
|
+
/** 添加到画布时使用的 CSS 颜色值 */
|
|
237
|
+
color: string;
|
|
238
|
+
}
|
|
239
|
+
/** Workbench 图片素材条目 */
|
|
240
|
+
export interface WorkbenchAsset {
|
|
241
|
+
/** 在对应素材集合内唯一的标识 */
|
|
242
|
+
id: string;
|
|
243
|
+
/** 素材选择器中显示的名称 */
|
|
244
|
+
name: string;
|
|
245
|
+
/** 添加到设计时加载的图片地址 */
|
|
246
|
+
url: string;
|
|
247
|
+
/** 选择器中使用的可选缩略图地址,缺省时使用 url */
|
|
248
|
+
thumbnailUrl?: string;
|
|
249
|
+
/** 素材图片的替代文字,缺省时使用 name */
|
|
250
|
+
alt?: string;
|
|
251
|
+
}
|
|
252
|
+
/** Workbench 可用的预设图片素材 */
|
|
253
|
+
export interface WorkbenchAssetLibrary {
|
|
254
|
+
/** 铺满画布并锁定在底层的背景素材 */
|
|
255
|
+
backgrounds?: WorkbenchAsset[];
|
|
256
|
+
/** 作为普通可编辑图片加入画布的装饰元素 */
|
|
257
|
+
elements?: WorkbenchAsset[];
|
|
258
|
+
}
|
|
259
|
+
/** Workbench 初始化配置 */
|
|
260
|
+
export interface WorkbenchOptions {
|
|
261
|
+
/** Workbench 独占使用的挂载元素或 CSS 选择器 */
|
|
262
|
+
container: ElementTarget;
|
|
263
|
+
/** 二维编辑画布的逻辑宽度,单位为像素,默认为 1024 */
|
|
264
|
+
editorWidth?: number;
|
|
265
|
+
/** 二维编辑画布的逻辑高度,单位为像素,默认为 512 */
|
|
266
|
+
editorHeight?: number;
|
|
267
|
+
/** 最多保留的撤销步骤数量,默认为 50 */
|
|
268
|
+
historyLimit?: number;
|
|
269
|
+
/** 初始化时加载的产品配置 */
|
|
270
|
+
product?: ProductConfiguration;
|
|
271
|
+
/** 功能控件开关,未传字段使用默认值 */
|
|
272
|
+
features?: Partial<WorkbenchFeatures>;
|
|
273
|
+
/** 布局区域开关,未传字段使用默认值 */
|
|
274
|
+
layout?: Partial<WorkbenchLayout>;
|
|
275
|
+
/** 顶部栏使用的可选品牌信息 */
|
|
276
|
+
branding?: WorkbenchBranding;
|
|
277
|
+
/** 可覆盖的界面文案 */
|
|
278
|
+
labels?: Partial<WorkbenchLabels>;
|
|
279
|
+
/** 可覆盖的主题变量 */
|
|
280
|
+
theme?: Partial<WorkbenchTheme>;
|
|
281
|
+
/** 图标显示与替换配置 */
|
|
282
|
+
icons?: WorkbenchIconConfiguration;
|
|
283
|
+
/** 替换内置文字排版预设,空数组表示不显示预设 */
|
|
284
|
+
textPresets?: WorkbenchTextPreset[];
|
|
285
|
+
/** 图片 Dialog 使用的背景与装饰素材 */
|
|
286
|
+
assets?: WorkbenchAssetLibrary;
|
|
287
|
+
}
|
|
288
|
+
/** Workbench 功能控件名称 */
|
|
289
|
+
export type WorkbenchFeatureName = keyof WorkbenchFeatures;
|
|
290
|
+
/** Workbench 布局区域名称 */
|
|
291
|
+
export type WorkbenchLayoutName = keyof WorkbenchLayout;
|
|
292
|
+
/** Workbench 状态提示样式 */
|
|
293
|
+
export type WorkbenchStatusMode = 'ready' | 'busy' | 'error';
|
|
294
|
+
//# 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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"}
|