@galacean/effects-plugin-editor-gizmo 2.10.4 → 2.11.0-alpha.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.
- package/README.md +37 -5
- package/dist/2d/configs/builtin-configs.d.ts +14 -0
- package/dist/2d/configs/config-definition.d.ts +40 -0
- package/dist/2d/configs/config-manager.d.ts +52 -0
- package/dist/2d/configs/index.d.ts +6 -0
- package/dist/2d/configs/loading-config.d.ts +3 -0
- package/dist/2d/configs/types.d.ts +321 -0
- package/dist/2d/cursor-icons.d.ts +8 -0
- package/dist/2d/cursor.d.ts +36 -0
- package/dist/2d/drag-threshold.d.ts +13 -0
- package/dist/2d/drawing.d.ts +148 -0
- package/dist/2d/frame/frame-assisted-layout.d.ts +115 -0
- package/dist/2d/frame/frame-auto-layout.d.ts +47 -0
- package/dist/2d/frame/frame-manager.d.ts +169 -0
- package/dist/2d/frame/frame-resize.d.ts +13 -0
- package/dist/2d/frame/index.d.ts +5 -0
- package/dist/2d/frame/layout-calculations.d.ts +109 -0
- package/dist/2d/frame/types.d.ts +41 -0
- package/dist/2d/gesture-handler.d.ts +253 -0
- package/dist/2d/gizmo-action.d.ts +159 -0
- package/dist/2d/gizmo-manager.d.ts +105 -0
- package/dist/2d/gizmo-owner.d.ts +65 -0
- package/dist/2d/gizmo-tool.d.ts +15 -0
- package/dist/2d/gizmo-tools/hand-gizmo-tool.d.ts +4 -0
- package/dist/2d/gizmo-tools/image-cut-gizmo-tool.d.ts +7 -0
- package/dist/2d/gizmo-tools/image-expand-gizmo-tool.d.ts +7 -0
- package/dist/2d/gizmo-tools/index.d.ts +7 -0
- package/dist/2d/gizmo-tools/item-create-gizmo-tool.d.ts +10 -0
- package/dist/2d/gizmo-tools/mask-gizmo-tool.d.ts +7 -0
- package/dist/2d/gizmo-tools/move-gizmo-tool.d.ts +6 -0
- package/dist/2d/gizmo-tools/sprite-text-edit-gizmo-tool.d.ts +7 -0
- package/dist/2d/gizmo-type.d.ts +37 -0
- package/dist/2d/gizmo.d.ts +60 -0
- package/dist/2d/gizmos/box-selection-gizmo.d.ts +67 -0
- package/dist/2d/gizmos/change-selection-gizmo.d.ts +45 -0
- package/dist/2d/gizmos/click-drag-multiplex-gizmo.d.ts +95 -0
- package/dist/2d/gizmos/corner-rotation-gizmo.d.ts +101 -0
- package/dist/2d/gizmos/enter-edit-mode-gizmo.d.ts +11 -0
- package/dist/2d/gizmos/hand-gizmo.d.ts +67 -0
- package/dist/2d/gizmos/icon-gizmo.d.ts +107 -0
- package/dist/2d/gizmos/image-cut-gizmo.d.ts +140 -0
- package/dist/2d/gizmos/image-expand-gizmo.d.ts +135 -0
- package/dist/2d/gizmos/image-interaction.d.ts +40 -0
- package/dist/2d/gizmos/item-create-gizmo.d.ts +146 -0
- package/dist/2d/gizmos/leave-effects-edit-gizmo.d.ts +11 -0
- package/dist/2d/gizmos/leave-text-edit-gizmo.d.ts +11 -0
- package/dist/2d/gizmos/loading-gizmo.d.ts +110 -0
- package/dist/2d/gizmos/loading-manager.d.ts +74 -0
- package/dist/2d/gizmos/mask-gizmo.d.ts +153 -0
- package/dist/2d/gizmos/move-selection-gizmo.d.ts +64 -0
- package/dist/2d/gizmos/resize-selection-gizmo/anchored-resize.d.ts +40 -0
- package/dist/2d/gizmos/resize-selection-gizmo/index.d.ts +2 -0
- package/dist/2d/gizmos/resize-selection-gizmo/resize-selection-gizmo.d.ts +364 -0
- package/dist/2d/gizmos/resize-selection-gizmo/transform-types.d.ts +27 -0
- package/dist/2d/gizmos/select-text-gizmo.d.ts +77 -0
- package/dist/2d/gizmos/sprite-text-edit-gizmo.d.ts +149 -0
- package/dist/2d/gizmos/text-gizmo.d.ts +65 -0
- package/dist/2d/gizmos/viewport-overlay-gizmo.d.ts +66 -0
- package/dist/2d/index.d.ts +44 -0
- package/dist/2d/items/default-vfx-items.d.ts +45 -0
- package/dist/2d/items/index.d.ts +6 -0
- package/dist/2d/items/item-geometry.d.ts +69 -0
- package/dist/2d/items/item-hierarchy.d.ts +39 -0
- package/dist/2d/items/item-predicates.d.ts +31 -0
- package/dist/2d/items/media-controls.d.ts +39 -0
- package/dist/2d/items/vfx-item-factory.d.ts +13 -0
- package/dist/2d/math/core.d.ts +26 -0
- package/dist/2d/math/geometry.d.ts +83 -0
- package/dist/2d/math/index.d.ts +4 -0
- package/dist/2d/math/ray-caster.d.ts +56 -0
- package/dist/2d/math/utils.d.ts +6 -0
- package/dist/2d/modes/default-selection-mode.d.ts +19 -0
- package/dist/2d/modes/edit-mode.d.ts +18 -0
- package/dist/2d/modes/effects-edit-mode.d.ts +34 -0
- package/dist/2d/modes/index.d.ts +4 -0
- package/dist/2d/modes/text-edit-mode.d.ts +34 -0
- package/dist/2d/selection/create-selection-interaction-gizmo.d.ts +14 -0
- package/dist/2d/selection/index.d.ts +3 -0
- package/dist/2d/selection/selection.d.ts +338 -0
- package/dist/2d/selection/snap-manager.d.ts +130 -0
- package/dist/2d/text/index.d.ts +2 -0
- package/dist/2d/text/text-caret-mapper.d.ts +61 -0
- package/dist/2d/text/text-edit-session.d.ts +169 -0
- package/dist/2d/viewport/coordinates.d.ts +89 -0
- package/dist/2d/viewport/gizmo-viewport.d.ts +108 -0
- package/dist/2d/viewport/index.d.ts +6 -0
- package/dist/2d/viewport/types.d.ts +11 -0
- package/dist/2d/viewport/viewport-navigation-controller.d.ts +110 -0
- package/dist/2d/viewport/viewport-operations.d.ts +15 -0
- package/dist/2d/viewport/viewport-range.d.ts +9 -0
- package/dist/2d/viewport/viewport-utils.d.ts +32 -0
- package/dist/{gizmo-component.d.ts → 3d/gizmo-component.d.ts} +3 -5
- package/dist/3d/index.d.ts +4 -0
- package/dist/index.d.ts +2 -5
- package/dist/index.js +15030 -171
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +14871 -173
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -3
- /package/dist/{constants.d.ts → 3d/constants.d.ts} +0 -0
- /package/dist/{define.d.ts → 3d/define.d.ts} +0 -0
- /package/dist/{geometry → 3d/geometry}/box.d.ts +0 -0
- /package/dist/{geometry → 3d/geometry}/cone.d.ts +0 -0
- /package/dist/{geometry → 3d/geometry}/cylinder.d.ts +0 -0
- /package/dist/{geometry → 3d/geometry}/direction-light.d.ts +0 -0
- /package/dist/{geometry → 3d/geometry}/floor-line-edge.d.ts +0 -0
- /package/dist/{geometry → 3d/geometry}/floor-line.d.ts +0 -0
- /package/dist/{geometry → 3d/geometry}/frustum.d.ts +0 -0
- /package/dist/{geometry → 3d/geometry}/geometry.d.ts +0 -0
- /package/dist/{geometry → 3d/geometry}/index.d.ts +0 -0
- /package/dist/{geometry → 3d/geometry}/plane.d.ts +0 -0
- /package/dist/{geometry → 3d/geometry}/point-light.d.ts +0 -0
- /package/dist/{geometry → 3d/geometry}/sphere.d.ts +0 -0
- /package/dist/{geometry → 3d/geometry}/spot-light.d.ts +0 -0
- /package/dist/{geometry → 3d/geometry}/torus.d.ts +0 -0
- /package/dist/{gizmo-loader.d.ts → 3d/gizmo-loader.d.ts} +0 -0
- /package/dist/{gizmo-vfx-item.d.ts → 3d/gizmo-vfx-item.d.ts} +0 -0
- /package/dist/{math-utils.d.ts → 3d/math-utils.d.ts} +0 -0
- /package/dist/{mesh.d.ts → 3d/mesh.d.ts} +0 -0
- /package/dist/{raycast.d.ts → 3d/raycast.d.ts} +0 -0
- /package/dist/{shape.d.ts → 3d/shape.d.ts} +0 -0
- /package/dist/{util.d.ts → 3d/util.d.ts} +0 -0
- /package/dist/{wireframe.d.ts → 3d/wireframe.d.ts} +0 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { type Engine } from '@galacean/effects';
|
|
2
|
+
import { Control, type ControlEvent } from '@galacean/effects-plugin-gui';
|
|
3
|
+
import type { GizmoOwner, SelectionTransformKind } from './gizmo-owner';
|
|
4
|
+
import { GizmoManager, type GizmoErrorPhase } from './gizmo-manager';
|
|
5
|
+
import { type GestureCursorResult } from './cursor';
|
|
6
|
+
import type { ConfigManager } from './configs/config-manager';
|
|
7
|
+
import { Vector2 } from './math';
|
|
8
|
+
import { FrameManager } from './frame/frame-manager';
|
|
9
|
+
import { Selection } from './selection/selection';
|
|
10
|
+
import { SnapManager } from './selection/snap-manager';
|
|
11
|
+
import { LoadingManager } from './gizmos/loading-manager';
|
|
12
|
+
import { ViewportNavigationController } from './viewport';
|
|
13
|
+
import { GizmoTool } from './gizmo-tool';
|
|
14
|
+
import { type EditMode } from './modes';
|
|
15
|
+
import type { GizmoOwnerEvents } from './gizmo-action';
|
|
16
|
+
/** Gizmo 错误上报接口。 */
|
|
17
|
+
export interface GizmoErrorMonitor {
|
|
18
|
+
/**
|
|
19
|
+
* 上报指定阶段的 Gizmo 错误。
|
|
20
|
+
* @param error 原始错误。
|
|
21
|
+
* @param phase 错误发生阶段。
|
|
22
|
+
* @param ctx 错误上下文。
|
|
23
|
+
*/
|
|
24
|
+
report(error: unknown, phase: GizmoErrorPhase, ctx: {
|
|
25
|
+
/** 发生错误的 Gizmo 类型。 */
|
|
26
|
+
gizmoType?: string;
|
|
27
|
+
}): void;
|
|
28
|
+
}
|
|
29
|
+
/** 接收运行时输入,并协调 Gizmo、选区和视口导航。 */
|
|
30
|
+
export declare class GestureHandler extends Control implements GizmoOwner {
|
|
31
|
+
/** 抓手与滚轮共享的视口导航控制器。 */
|
|
32
|
+
private viewportNavigation;
|
|
33
|
+
/** 当前对外可观察的 hover 命中结果。 */
|
|
34
|
+
private hoveringResults;
|
|
35
|
+
/** Runtime Control 输入入口;持有输入状态并完成 Move/Drag 分流。 */
|
|
36
|
+
private gizmoViewport;
|
|
37
|
+
/** 所有 Gizmo 共享的画板模型。 */
|
|
38
|
+
private frameManager;
|
|
39
|
+
/** 交互上下文共享的吸附器;跨图重建保持同一实例。 */
|
|
40
|
+
private snapManager;
|
|
41
|
+
/** 加载状态管理器。 */
|
|
42
|
+
private loadingManager;
|
|
43
|
+
/** Gizmo 生命周期管理器。 */
|
|
44
|
+
private gizmoManager;
|
|
45
|
+
/** 当前激活的工具。 */
|
|
46
|
+
private activeGizmoTool;
|
|
47
|
+
/** 当前编辑模式。 */
|
|
48
|
+
private editMode;
|
|
49
|
+
/** 选中状态与命中查询器。 */
|
|
50
|
+
private selection;
|
|
51
|
+
/** 当前 hover 的元素;用于在目标切换、离开或销毁时结束媒体预览。 */
|
|
52
|
+
private hoveredMediaItemId;
|
|
53
|
+
/** 错误上报器(按需注入,未注入时不生效)。 */
|
|
54
|
+
private errorMonitor;
|
|
55
|
+
/** 是否屏蔽所有交互。 */
|
|
56
|
+
private _ignoreInteraction;
|
|
57
|
+
/** 当前指针序列捕获的 Gizmo。 */
|
|
58
|
+
private capturedGizmo;
|
|
59
|
+
/** 独立于指针捕获者的选区变换状态。 */
|
|
60
|
+
private selectionTransformKind;
|
|
61
|
+
/** 等待指针序列结束后销毁的退场 Gizmo。 */
|
|
62
|
+
private gizmosToDispose;
|
|
63
|
+
/**
|
|
64
|
+
* 悬停目标变化时同步视频与动效预览。
|
|
65
|
+
* @param preSelectedId 新悬停元素 ID。
|
|
66
|
+
*/
|
|
67
|
+
private onPreselectChange;
|
|
68
|
+
/**
|
|
69
|
+
* 创建手势处理器并装配基础交互状态。
|
|
70
|
+
* @param engine Effects 引擎。
|
|
71
|
+
*/
|
|
72
|
+
constructor(engine: Engine);
|
|
73
|
+
/** 订阅原生控件或 Gizmo 业务事件。 */
|
|
74
|
+
on<E extends keyof (ControlEvent & GizmoOwnerEvents)>(eventName: E, listener: (...args: (ControlEvent & GizmoOwnerEvents)[E]) => void): () => void;
|
|
75
|
+
/** 取消原生控件或 Gizmo 业务事件订阅。 */
|
|
76
|
+
off<E extends keyof (ControlEvent & GizmoOwnerEvents)>(eventName: E, listener: (...args: (ControlEvent & GizmoOwnerEvents)[E]) => void): void;
|
|
77
|
+
/** 发出 Gizmo 业务事件。 */
|
|
78
|
+
emit<E extends keyof GizmoOwnerEvents>(eventName: E, ...args: GizmoOwnerEvents[E]): void;
|
|
79
|
+
/** 是否屏蔽交互。 */
|
|
80
|
+
get ignoreInteraction(): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* 设置是否屏蔽所有 Gizmo 与选区交互。
|
|
83
|
+
* @param state 是否屏蔽交互。
|
|
84
|
+
*/
|
|
85
|
+
set ignoreInteraction(state: boolean);
|
|
86
|
+
/** @returns 当前选区与命中查询对象。 */
|
|
87
|
+
getSelection(): Selection;
|
|
88
|
+
/** @returns 当前画板管理器。 */
|
|
89
|
+
getFrameManager(): FrameManager;
|
|
90
|
+
/** @returns 共享吸附管理器。 */
|
|
91
|
+
getSnapManager(): SnapManager;
|
|
92
|
+
/** @returns 加载状态管理器。 */
|
|
93
|
+
getLoadingManager(): LoadingManager;
|
|
94
|
+
/** @returns 共享视口导航控制器。 */
|
|
95
|
+
getViewportNavigation(): ViewportNavigationController;
|
|
96
|
+
/** @returns 当前选区变换状态。 */
|
|
97
|
+
getSelectionTransformKind(): SelectionTransformKind;
|
|
98
|
+
/**
|
|
99
|
+
* 设置选区变换状态。
|
|
100
|
+
* @param kind 选区变换状态。
|
|
101
|
+
*/
|
|
102
|
+
setSelectionTransformKind(kind: SelectionTransformKind): void;
|
|
103
|
+
/** @returns 当前激活的编辑模式。 */
|
|
104
|
+
getActiveEditMode(): EditMode;
|
|
105
|
+
/**
|
|
106
|
+
* 切换编辑模式并重建 Gizmo 图。
|
|
107
|
+
* @param mode 新编辑模式。
|
|
108
|
+
*/
|
|
109
|
+
setActiveEditMode(mode: EditMode): void;
|
|
110
|
+
/** 恢复新的默认编辑模式。 */
|
|
111
|
+
resetEditMode(): void;
|
|
112
|
+
/** 初始化当前工具与编辑模式对应的 Gizmo 图。 */
|
|
113
|
+
init(): void;
|
|
114
|
+
/** @returns 当前鼠标的 Control 本地坐标。 */
|
|
115
|
+
getMousePosition(): Vector2;
|
|
116
|
+
/**
|
|
117
|
+
* 更新交互层的 CSS 光标。
|
|
118
|
+
* @param result Gizmo 光标结果。
|
|
119
|
+
*/
|
|
120
|
+
setCursor(result: GestureCursorResult): void;
|
|
121
|
+
/** @returns 当前 Gizmo 生命周期管理器。 */
|
|
122
|
+
getGizmoManager(): GizmoManager;
|
|
123
|
+
/** @returns Effects 引擎。 */
|
|
124
|
+
getEngine(): Engine;
|
|
125
|
+
/** @returns Gizmo 配置管理器。 */
|
|
126
|
+
getConfigManager(): ConfigManager;
|
|
127
|
+
/** @returns 当前是否为抓手工具。 */
|
|
128
|
+
isHandToolMode(): boolean;
|
|
129
|
+
/** @returns 当前是否有鼠标按键按下。 */
|
|
130
|
+
isMouseButtonPressed(): boolean;
|
|
131
|
+
/** 重建公共 Gizmo 与当前工具或编辑模式的 Gizmo 图。 */
|
|
132
|
+
rebuildGizmos(): void;
|
|
133
|
+
/**
|
|
134
|
+
* 切换活动工具并协调编辑模式。
|
|
135
|
+
* @param gizmoTool 新活动工具。
|
|
136
|
+
*/
|
|
137
|
+
setActiveTool(gizmoTool: GizmoTool): void;
|
|
138
|
+
/**
|
|
139
|
+
* 注入错误上报器(由宿主调用,未注入时不影响现有行为)。
|
|
140
|
+
* @param reporter 错误上报器实例
|
|
141
|
+
*/
|
|
142
|
+
setErrorMonitor(reporter?: GizmoErrorMonitor): void;
|
|
143
|
+
/** 释放资源:解绑订阅、清交互状态,并销毁当前 Gizmo 图。 */
|
|
144
|
+
onDestroy(): void;
|
|
145
|
+
/** 每帧更新入口:先刷新 Frame 投影,再同步当前 Gizmo 图。 */
|
|
146
|
+
update(deltaTime: number): void;
|
|
147
|
+
/** 创建填满交互根控件的输入与绘制子控件。 */
|
|
148
|
+
private createViewport;
|
|
149
|
+
/**
|
|
150
|
+
* 按退出、重建、进入的顺序提交编辑模式。
|
|
151
|
+
* @param nextMode 新编辑模式。
|
|
152
|
+
*/
|
|
153
|
+
private commitEditMode;
|
|
154
|
+
/**
|
|
155
|
+
* 解析指定工具可继续使用的编辑模式。
|
|
156
|
+
* @param tool 目标工具。
|
|
157
|
+
* @returns 可用编辑模式。
|
|
158
|
+
*/
|
|
159
|
+
private resolveEditModeForTool;
|
|
160
|
+
/** @returns 新建的默认编辑模式。 */
|
|
161
|
+
private createDefaultEditMode;
|
|
162
|
+
/**
|
|
163
|
+
* 按输入阶段派发 Runtime Control 事件。
|
|
164
|
+
* @param phase 输入阶段。
|
|
165
|
+
* @param input 已归一化的输入事件。
|
|
166
|
+
*/
|
|
167
|
+
private dispatchInput;
|
|
168
|
+
/** @returns 所有工具共享的视口 Gizmo。 */
|
|
169
|
+
private createCommonBeforeToolSwitch;
|
|
170
|
+
/** @returns 抓手 Gizmo 当前是否正在平移或等待平移。 */
|
|
171
|
+
private isPanning;
|
|
172
|
+
/**
|
|
173
|
+
* 处理鼠标阶段并维护指针捕获。
|
|
174
|
+
* @param phase 输入阶段。
|
|
175
|
+
* @param event 鼠标事件。
|
|
176
|
+
*/
|
|
177
|
+
private handleMouseInput;
|
|
178
|
+
/**
|
|
179
|
+
* 向本轮捕获者或活动候选派发鼠标事件。
|
|
180
|
+
* @param localOwner 本轮捕获者。
|
|
181
|
+
* @param phase 输入阶段。
|
|
182
|
+
* @param event 鼠标事件。
|
|
183
|
+
* @returns 接受事件的 Gizmo。
|
|
184
|
+
*/
|
|
185
|
+
private dispatchMouseEvent;
|
|
186
|
+
/**
|
|
187
|
+
* 判断当前鼠标轮次是否可以进入行为派发。
|
|
188
|
+
* @param phase 输入阶段。
|
|
189
|
+
* @param savedOwner 本轮开始时的捕获者。
|
|
190
|
+
* @returns 是否允许派发。
|
|
191
|
+
*/
|
|
192
|
+
private canDispatchMouseEvent;
|
|
193
|
+
/** 释放持久指针捕获。 */
|
|
194
|
+
private clearCapturedGizmo;
|
|
195
|
+
/** 在最新鼠标位置重新派发移动或拖拽事件。 */
|
|
196
|
+
private redispatchMouseAtCurrentPosition;
|
|
197
|
+
/** 在捕获者不属于退场图时释放待销毁 Gizmo。 */
|
|
198
|
+
private disposeQueuedGizmos;
|
|
199
|
+
/**
|
|
200
|
+
* 准备单个派发候选并隔离错误。
|
|
201
|
+
* @param gizmo 候选 Gizmo。
|
|
202
|
+
* @param phase 输入阶段。
|
|
203
|
+
*/
|
|
204
|
+
private prepareForDispatch;
|
|
205
|
+
/**
|
|
206
|
+
* 调用 Gizmo 对应的鼠标阶段并隔离错误。
|
|
207
|
+
* @param gizmo 目标 Gizmo。
|
|
208
|
+
* @param phase 输入阶段。
|
|
209
|
+
* @param event 鼠标事件。
|
|
210
|
+
* @returns Gizmo 是否接受事件。
|
|
211
|
+
*/
|
|
212
|
+
private invoke;
|
|
213
|
+
/**
|
|
214
|
+
* 按活动 Gizmo 快照派发键盘事件。
|
|
215
|
+
* @param event 键盘事件。
|
|
216
|
+
* @param phase 键盘输入阶段。
|
|
217
|
+
*/
|
|
218
|
+
private handleKeyboardEvent;
|
|
219
|
+
/**
|
|
220
|
+
* 将输入阶段映射为错误上报阶段。
|
|
221
|
+
* @param phase 输入阶段。
|
|
222
|
+
* @returns 错误上报阶段。
|
|
223
|
+
*/
|
|
224
|
+
private errorPhaseFor;
|
|
225
|
+
/**
|
|
226
|
+
* 按悬停框、活动 Gizmo、吸附提示的顺序绘制交互层。
|
|
227
|
+
* @param gizmoControl 绘制控制器。
|
|
228
|
+
*/
|
|
229
|
+
private drawGizmos;
|
|
230
|
+
/**
|
|
231
|
+
* 绘制当前悬停元素的底层轮廓。
|
|
232
|
+
* @param gizmoControl 绘制控制器。
|
|
233
|
+
*/
|
|
234
|
+
private drawHoverOverlay;
|
|
235
|
+
/**
|
|
236
|
+
* 绘制单个 Gizmo 并隔离错误。
|
|
237
|
+
* @param gizmo 目标 Gizmo。
|
|
238
|
+
* @param gizmoControl 绘制控制器。
|
|
239
|
+
*/
|
|
240
|
+
private drawGizmo;
|
|
241
|
+
/**
|
|
242
|
+
* 绘制当前吸附提示。
|
|
243
|
+
* @param control 绘制控制器。
|
|
244
|
+
*/
|
|
245
|
+
private drawSnappingVisualizations;
|
|
246
|
+
/**
|
|
247
|
+
* 上报 Gizmo 错误并重置共享交互状态。
|
|
248
|
+
* @param error 原始错误。
|
|
249
|
+
* @param phase 错误发生阶段。
|
|
250
|
+
* @param gizmoType 发生错误的 Gizmo 类型。
|
|
251
|
+
*/
|
|
252
|
+
private handleGizmoError;
|
|
253
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import type { Gizmo } from './gizmo';
|
|
2
|
+
import type { FrameCreateData, ItemCreateType, TextCreateData } from './gizmos/item-create-gizmo';
|
|
3
|
+
import type { AutoLayoutChangeInfo } from './frame/frame-assisted-layout';
|
|
4
|
+
import type { TransformType } from './gizmos/resize-selection-gizmo/transform-types';
|
|
5
|
+
import type { InputEventKey } from '@galacean/effects';
|
|
6
|
+
/** Gizmo 操作的生命周期阶段。 */
|
|
7
|
+
export type GizmoActionPhase = 'actionstart' | 'actionupdate' | 'actioncommit';
|
|
8
|
+
/** 画板元素创建信息。 */
|
|
9
|
+
export type GizmoFrameItemCreateInfo = {
|
|
10
|
+
/** 创建类型。 */
|
|
11
|
+
type: ItemCreateType.FRAME;
|
|
12
|
+
/** 新元素 ID。 */
|
|
13
|
+
id: string;
|
|
14
|
+
/** 元素创建位置。 */
|
|
15
|
+
position: [number, number];
|
|
16
|
+
/** 画板创建参数。 */
|
|
17
|
+
info: FrameCreateData;
|
|
18
|
+
};
|
|
19
|
+
/** 文本元素创建信息。 */
|
|
20
|
+
export type GizmoTextItemCreateInfo = {
|
|
21
|
+
/** 创建类型。 */
|
|
22
|
+
type: ItemCreateType.TEXT;
|
|
23
|
+
/** 新元素 ID。 */
|
|
24
|
+
id: string;
|
|
25
|
+
/** 元素创建位置。 */
|
|
26
|
+
position: [number, number];
|
|
27
|
+
/** 文本创建参数。 */
|
|
28
|
+
info?: TextCreateData;
|
|
29
|
+
};
|
|
30
|
+
/** 无附加参数的元素创建信息。 */
|
|
31
|
+
export type GizmoSimpleItemCreateInfo = {
|
|
32
|
+
/** 创建类型。 */
|
|
33
|
+
type: ItemCreateType.IMAGE_GENERATOR | ItemCreateType.VIDEO_GENERATOR | ItemCreateType.NONE;
|
|
34
|
+
/** 新元素 ID。 */
|
|
35
|
+
id: string;
|
|
36
|
+
/** 元素创建位置。 */
|
|
37
|
+
position: [number, number];
|
|
38
|
+
/** 简单元素不携带附加参数。 */
|
|
39
|
+
info?: undefined;
|
|
40
|
+
};
|
|
41
|
+
/** 按创建类型区分的元素创建信息。 */
|
|
42
|
+
export type GizmoItemCreateInfo = GizmoFrameItemCreateInfo | GizmoTextItemCreateInfo | GizmoSimpleItemCreateInfo;
|
|
43
|
+
/** 所有 Gizmo 业务操作共享的基础事件。 */
|
|
44
|
+
export interface GizmoActionEvent {
|
|
45
|
+
/** 触发事件的 Gizmo。 */
|
|
46
|
+
source: Gizmo;
|
|
47
|
+
}
|
|
48
|
+
/** 选区变换事件。 */
|
|
49
|
+
export interface GizmoTransformActionEvent extends GizmoActionEvent {
|
|
50
|
+
/** 变换类型。 */
|
|
51
|
+
transformType: TransformType;
|
|
52
|
+
/** 本次直接变换的顶层元素 ID。 */
|
|
53
|
+
itemIds?: string[];
|
|
54
|
+
/** 自动布局产生的附加变更。 */
|
|
55
|
+
autoLayoutChange?: AutoLayoutChangeInfo;
|
|
56
|
+
}
|
|
57
|
+
/** 选区变更事件。 */
|
|
58
|
+
export interface GizmoSelectionActionEvent extends GizmoActionEvent {
|
|
59
|
+
/** 变更后的选中元素 ID。 */
|
|
60
|
+
selectedIds: string[];
|
|
61
|
+
/** 变更前的选中元素 ID。 */
|
|
62
|
+
oldSelectedIds?: string[];
|
|
63
|
+
}
|
|
64
|
+
/** 元素创建事件。 */
|
|
65
|
+
export interface GizmoItemCreateActionEvent extends GizmoActionEvent {
|
|
66
|
+
/** 元素创建信息。 */
|
|
67
|
+
createInfo: GizmoItemCreateInfo;
|
|
68
|
+
/** 是否取消本次创建。 */
|
|
69
|
+
canceled?: boolean;
|
|
70
|
+
}
|
|
71
|
+
/** 元素移入画板事件。 */
|
|
72
|
+
export interface GizmoMoveInEvent extends GizmoActionEvent {
|
|
73
|
+
/** 事件类型。 */
|
|
74
|
+
type: 'moveIn';
|
|
75
|
+
/** 待移入的元素 ID。 */
|
|
76
|
+
itemIds: string[];
|
|
77
|
+
/** 目标画板 ID。 */
|
|
78
|
+
targetFrameId: string;
|
|
79
|
+
}
|
|
80
|
+
/** 元素移出画板事件。 */
|
|
81
|
+
export interface GizmoMoveOutEvent extends GizmoActionEvent {
|
|
82
|
+
/** 事件类型。 */
|
|
83
|
+
type: 'moveOut';
|
|
84
|
+
/** 待移出的元素 ID。 */
|
|
85
|
+
itemIds: string[];
|
|
86
|
+
/** 原画板 ID。 */
|
|
87
|
+
originalFrameId: string;
|
|
88
|
+
}
|
|
89
|
+
/** 子元素脱离组合事件。 */
|
|
90
|
+
export interface GizmoDetachGroupChildrenEvent extends GizmoActionEvent {
|
|
91
|
+
/** 事件类型。 */
|
|
92
|
+
type: 'detachGroupChildren';
|
|
93
|
+
/** 原组合 ID。 */
|
|
94
|
+
groupId: string;
|
|
95
|
+
/** 待脱离的子元素 ID。 */
|
|
96
|
+
itemIds: string[];
|
|
97
|
+
/** 原画板 ID。 */
|
|
98
|
+
originalFrameId: string;
|
|
99
|
+
}
|
|
100
|
+
/** 元素层级位置变更事件。 */
|
|
101
|
+
export type GizmoPlacementChangeEvent = GizmoMoveInEvent | GizmoMoveOutEvent | GizmoDetachGroupChildrenEvent;
|
|
102
|
+
/** 请求刷新画板子元素的事件。 */
|
|
103
|
+
export interface GizmoFrameRefreshChildrenEvent extends GizmoActionEvent {
|
|
104
|
+
/** 目标画板 ID。 */
|
|
105
|
+
frameId: string;
|
|
106
|
+
}
|
|
107
|
+
/** 文本输入事件。 */
|
|
108
|
+
export interface GizmoTextInputEvent extends GizmoActionEvent {
|
|
109
|
+
/** 文本元素 ID。 */
|
|
110
|
+
itemId: string;
|
|
111
|
+
/** 输入后的文本。 */
|
|
112
|
+
text: string;
|
|
113
|
+
/** 文本字体。 */
|
|
114
|
+
fontFamily: string;
|
|
115
|
+
}
|
|
116
|
+
/** 视频播放位置变更事件。 */
|
|
117
|
+
export interface GizmoVideoPlayEvent extends GizmoActionEvent {
|
|
118
|
+
/** 视频元素 ID。 */
|
|
119
|
+
id: string;
|
|
120
|
+
/** 播放时间。 */
|
|
121
|
+
time: number;
|
|
122
|
+
}
|
|
123
|
+
/** 精准文字点击事件。 */
|
|
124
|
+
export interface GizmoSpriteTextClickEvent extends GizmoActionEvent {
|
|
125
|
+
/** 命中的文字信息。 */
|
|
126
|
+
info?: {
|
|
127
|
+
/** 文字元素 ID。 */
|
|
128
|
+
id: string;
|
|
129
|
+
/** 命中的字符索引。 */
|
|
130
|
+
index: number;
|
|
131
|
+
/** 命中的文本内容。 */
|
|
132
|
+
text: string;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/** 可进入操作生命周期的 Gizmo 事件。 */
|
|
136
|
+
export type GizmoActionLifecycleEvent = GizmoActionEvent | GizmoTransformActionEvent | GizmoSelectionActionEvent | GizmoItemCreateActionEvent;
|
|
137
|
+
/** GizmoOwner 发出的事件及其参数。 */
|
|
138
|
+
export type GizmoOwnerEvents = {
|
|
139
|
+
/** 键盘按下事件。 */
|
|
140
|
+
keyDown: [InputEventKey];
|
|
141
|
+
/** 键盘抬起事件。 */
|
|
142
|
+
keyUp: [InputEventKey];
|
|
143
|
+
/** 操作开始事件。 */
|
|
144
|
+
actionstart: [GizmoActionLifecycleEvent];
|
|
145
|
+
/** 操作更新事件。 */
|
|
146
|
+
actionupdate: [GizmoActionLifecycleEvent];
|
|
147
|
+
/** 操作提交事件。 */
|
|
148
|
+
actioncommit: [GizmoActionLifecycleEvent];
|
|
149
|
+
/** 元素层级位置变更事件。 */
|
|
150
|
+
placementchange: [GizmoPlacementChangeEvent];
|
|
151
|
+
/** 画板子元素刷新事件。 */
|
|
152
|
+
framerefreshchildren: [GizmoFrameRefreshChildrenEvent];
|
|
153
|
+
/** 文本输入事件。 */
|
|
154
|
+
textinput: [GizmoTextInputEvent];
|
|
155
|
+
/** 视频播放事件。 */
|
|
156
|
+
videoplay: [GizmoVideoPlayEvent];
|
|
157
|
+
/** 精准文字点击事件。 */
|
|
158
|
+
spritetextclick: [GizmoSpriteTextClickEvent];
|
|
159
|
+
};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { Gizmo } from './gizmo';
|
|
2
|
+
import type { HandGizmo } from './gizmos/hand-gizmo';
|
|
3
|
+
import type { IconGizmo } from './gizmos/icon-gizmo';
|
|
4
|
+
import type { ItemCreateGizmo } from './gizmos/item-create-gizmo';
|
|
5
|
+
import type { LoadingGizmo } from './gizmos/loading-gizmo';
|
|
6
|
+
import type { MaskGizmo } from './gizmos/mask-gizmo';
|
|
7
|
+
import type { ImageCutGizmo } from './gizmos/image-cut-gizmo';
|
|
8
|
+
import type { ImageExpandGizmo } from './gizmos/image-expand-gizmo';
|
|
9
|
+
import type { ViewportOverlayGizmo } from './gizmos/viewport-overlay-gizmo';
|
|
10
|
+
import type { SpriteTextEditGizmo } from './gizmos/sprite-text-edit-gizmo';
|
|
11
|
+
import type { TextGizmo } from './gizmos/text-gizmo';
|
|
12
|
+
import type { ResizeSelectionGizmo } from './gizmos/resize-selection-gizmo';
|
|
13
|
+
import type { ChangeSelectionGizmo } from './gizmos/change-selection-gizmo';
|
|
14
|
+
import type { MoveSelectionGizmo } from './gizmos/move-selection-gizmo';
|
|
15
|
+
import type { BoxSelectionGizmo } from './gizmos/box-selection-gizmo';
|
|
16
|
+
import type { ClickDragMultiplexGizmo } from './gizmos/click-drag-multiplex-gizmo';
|
|
17
|
+
import { ConfigManager } from './configs/config-manager';
|
|
18
|
+
import type { LeaveTextEditGizmo } from './gizmos/leave-text-edit-gizmo';
|
|
19
|
+
import type { EnterEditModeGizmo } from './gizmos/enter-edit-mode-gizmo';
|
|
20
|
+
import type { LeaveEffectsEditGizmo } from './gizmos/leave-effects-edit-gizmo';
|
|
21
|
+
import type { CornerRotationGizmo } from './gizmos/corner-rotation-gizmo';
|
|
22
|
+
/** 当前交互图中可按类型查询的内置 Gizmo 映射。 */
|
|
23
|
+
export type GizmoTypeMap = {
|
|
24
|
+
/** 选区切换 Gizmo。 */
|
|
25
|
+
'change-selection': ChangeSelectionGizmo;
|
|
26
|
+
/** 选区移动 Gizmo。 */
|
|
27
|
+
'move-selection': MoveSelectionGizmo;
|
|
28
|
+
/** 框选 Gizmo。 */
|
|
29
|
+
'box-selection': BoxSelectionGizmo;
|
|
30
|
+
/** 点击与拖拽仲裁 Gizmo。 */
|
|
31
|
+
'click-drag-multiplex': ClickDragMultiplexGizmo;
|
|
32
|
+
/** 角点旋转 Gizmo。 */
|
|
33
|
+
'corner-rotation': CornerRotationGizmo;
|
|
34
|
+
/** 视口平移 Gizmo。 */
|
|
35
|
+
hand: HandGizmo;
|
|
36
|
+
/** 媒体图标 Gizmo。 */
|
|
37
|
+
icon: IconGizmo;
|
|
38
|
+
/** 元素创建 Gizmo。 */
|
|
39
|
+
'item-create': ItemCreateGizmo;
|
|
40
|
+
/** 加载状态 Gizmo。 */
|
|
41
|
+
loading: LoadingGizmo;
|
|
42
|
+
/** 蒙版编辑 Gizmo。 */
|
|
43
|
+
mask: MaskGizmo;
|
|
44
|
+
/** 图片裁切 Gizmo。 */
|
|
45
|
+
'image-cut': ImageCutGizmo;
|
|
46
|
+
/** 图片扩边 Gizmo。 */
|
|
47
|
+
'image-expand': ImageExpandGizmo;
|
|
48
|
+
/** 视口覆盖层 Gizmo。 */
|
|
49
|
+
'viewport-overlay': ViewportOverlayGizmo;
|
|
50
|
+
/** 精准文字编辑 Gizmo。 */
|
|
51
|
+
'sprite-text-edit': SpriteTextEditGizmo;
|
|
52
|
+
/** 文本编辑 Gizmo。 */
|
|
53
|
+
text: TextGizmo;
|
|
54
|
+
/** 选区缩放 Gizmo。 */
|
|
55
|
+
'resize-selection': ResizeSelectionGizmo;
|
|
56
|
+
/** 文本编辑退出 Gizmo。 */
|
|
57
|
+
'leave-text-edit': LeaveTextEditGizmo;
|
|
58
|
+
/** 子编辑模式进入 Gizmo。 */
|
|
59
|
+
'enter-edit-mode': EnterEditModeGizmo;
|
|
60
|
+
/** 动效编辑退出 Gizmo。 */
|
|
61
|
+
'leave-effects-edit': LeaveEffectsEditGizmo;
|
|
62
|
+
};
|
|
63
|
+
/** Gizmo 错误上报阶段。 */
|
|
64
|
+
export type GizmoErrorPhase = 'gizmo-init' | 'gizmo-actionstart' | 'gizmo-actionupdate' | 'gizmo-actioncommit' | 'gizmo-key' | 'gizmo-draw';
|
|
65
|
+
/**
|
|
66
|
+
* Gizmo 错误处理函数。
|
|
67
|
+
* @param error 原始错误
|
|
68
|
+
* @param phase 错误阶段
|
|
69
|
+
* @param gizmoType 相关 Gizmo 类型
|
|
70
|
+
*/
|
|
71
|
+
export type GizmoDispatchErrorHandler = (error: unknown, phase: GizmoErrorPhase, gizmoType?: string) => void;
|
|
72
|
+
/** 管理当前交互图中的 Gizmo 实例和配置。 */
|
|
73
|
+
export declare class GizmoManager {
|
|
74
|
+
/** Gizmo 配置管理器。 */
|
|
75
|
+
readonly configs: ConfigManager;
|
|
76
|
+
private _activeGizmos;
|
|
77
|
+
/** 当前交互图的顶层 Gizmo。 */
|
|
78
|
+
get activeGizmos(): Gizmo[];
|
|
79
|
+
/**
|
|
80
|
+
* 替换当前交互图的顶层 Gizmo。
|
|
81
|
+
* @param gizmos 新的有序 Gizmo 列表
|
|
82
|
+
*/
|
|
83
|
+
set activeGizmos(gizmos: Gizmo[]);
|
|
84
|
+
/**
|
|
85
|
+
* 按类型获取首个活动 Gizmo。
|
|
86
|
+
* @param type Gizmo 类型
|
|
87
|
+
* @returns 匹配的 Gizmo;不存在时返回 undefined
|
|
88
|
+
*/
|
|
89
|
+
get<K extends keyof GizmoTypeMap>(type: K): GizmoTypeMap[K] | undefined;
|
|
90
|
+
get(type: string): Gizmo | undefined;
|
|
91
|
+
/** 按宿主声明顺序执行当前图所有实例的每帧更新。 */
|
|
92
|
+
onUpdate(): void;
|
|
93
|
+
/** 销毁当前交互图。 */
|
|
94
|
+
dispose(): void;
|
|
95
|
+
/**
|
|
96
|
+
* 查找指定类型的全部活动 Gizmo。
|
|
97
|
+
* @param type Gizmo 类型
|
|
98
|
+
* @returns 匹配的 Gizmo 列表
|
|
99
|
+
*/
|
|
100
|
+
private findGizmosByType;
|
|
101
|
+
/** 获取去重后的全部受管 Gizmo。 */
|
|
102
|
+
private getAllManagedGizmos;
|
|
103
|
+
/** 获取点击与拖拽仲裁器托管的全部候选。 */
|
|
104
|
+
private getMultiplexCandidates;
|
|
105
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { Vector2 } from './math';
|
|
2
|
+
import type { FrameManager } from './frame/frame-manager';
|
|
3
|
+
import type { Selection } from './selection/selection';
|
|
4
|
+
import type { GizmoManager } from './gizmo-manager';
|
|
5
|
+
import type { ConfigManager } from './configs/config-manager';
|
|
6
|
+
import type { SnapManager } from './selection/snap-manager';
|
|
7
|
+
import type { Engine } from '@galacean/effects';
|
|
8
|
+
import type { ViewportNavigationController } from './viewport';
|
|
9
|
+
import type { GizmoOwnerEvents } from './gizmo-action';
|
|
10
|
+
import type { LoadingManager } from './gizmos/loading-manager';
|
|
11
|
+
import type { GestureCursorResult } from './cursor';
|
|
12
|
+
import type { EditMode } from './modes';
|
|
13
|
+
/** 独立于指针捕获者的选区变换状态。 */
|
|
14
|
+
export type SelectionTransformKind = 'idle' | 'move' | 'resize';
|
|
15
|
+
/** Gizmo 访问宿主输入、选区、视口和共享服务的接口。 */
|
|
16
|
+
export interface GizmoOwner {
|
|
17
|
+
/**
|
|
18
|
+
* 发出 Gizmo 业务事件。
|
|
19
|
+
* @param eventName 事件名称
|
|
20
|
+
* @param args 事件参数
|
|
21
|
+
*/
|
|
22
|
+
emit<E extends keyof GizmoOwnerEvents & string>(eventName: E, ...args: GizmoOwnerEvents[E]): void;
|
|
23
|
+
/** 获取选区状态和命中查询器。 */
|
|
24
|
+
getSelection(): Selection;
|
|
25
|
+
/** 获取画板数据和投影视图。 */
|
|
26
|
+
getFrameManager(): FrameManager;
|
|
27
|
+
/** 获取选区吸附管理器。 */
|
|
28
|
+
getSnapManager(): SnapManager;
|
|
29
|
+
/** 获取加载状态管理器。 */
|
|
30
|
+
getLoadingManager(): LoadingManager;
|
|
31
|
+
/** 获取视口导航控制器。 */
|
|
32
|
+
getViewportNavigation(): ViewportNavigationController;
|
|
33
|
+
/** 获取当前选区变换类型。 */
|
|
34
|
+
getSelectionTransformKind(): SelectionTransformKind;
|
|
35
|
+
/**
|
|
36
|
+
* 设置当前选区变换类型。
|
|
37
|
+
* @param kind 变换类型
|
|
38
|
+
*/
|
|
39
|
+
setSelectionTransformKind(kind: SelectionTransformKind): void;
|
|
40
|
+
/** 获取缓存的鼠标视图坐标。 */
|
|
41
|
+
getMousePosition(): Vector2;
|
|
42
|
+
/**
|
|
43
|
+
* 设置当前 Gizmo 光标。
|
|
44
|
+
* @param result 光标样式
|
|
45
|
+
*/
|
|
46
|
+
setCursor(result: GestureCursorResult): void;
|
|
47
|
+
/** 判断当前工具是否为视口平移工具。 */
|
|
48
|
+
isHandToolMode(): boolean;
|
|
49
|
+
/** 判断当前是否有鼠标按钮按下。 */
|
|
50
|
+
isMouseButtonPressed(): boolean;
|
|
51
|
+
/** 获取当前激活的编辑模式。 */
|
|
52
|
+
getActiveEditMode(): EditMode;
|
|
53
|
+
/** 切换当前编辑模式。 */
|
|
54
|
+
setActiveEditMode(mode: EditMode): void;
|
|
55
|
+
/** 恢复默认编辑模式。 */
|
|
56
|
+
resetEditMode(): void;
|
|
57
|
+
/** 重建当前工具和编辑模式的 Gizmo 图。 */
|
|
58
|
+
rebuildGizmos(): void;
|
|
59
|
+
/** 获取 Gizmo 管理器。 */
|
|
60
|
+
getGizmoManager(): GizmoManager;
|
|
61
|
+
/** 获取 Effects 引擎。 */
|
|
62
|
+
getEngine(): Engine;
|
|
63
|
+
/** 获取 Gizmo 配置管理器。 */
|
|
64
|
+
getConfigManager(): ConfigManager;
|
|
65
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Gizmo } from './gizmo';
|
|
2
|
+
import type { GizmoOwner } from './gizmo-owner';
|
|
3
|
+
/** 创建有序 Gizmo 交互图的工具基类。 */
|
|
4
|
+
export declare class GizmoTool {
|
|
5
|
+
protected owner: GizmoOwner;
|
|
6
|
+
/**
|
|
7
|
+
* @param owner Gizmo 宿主
|
|
8
|
+
*/
|
|
9
|
+
constructor(owner: GizmoOwner);
|
|
10
|
+
/**
|
|
11
|
+
* 创建工具使用的 Gizmo 图。
|
|
12
|
+
* @returns 有序 Gizmo 列表
|
|
13
|
+
*/
|
|
14
|
+
createGizmos(): Gizmo[];
|
|
15
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './move-gizmo-tool';
|
|
2
|
+
export * from './hand-gizmo-tool';
|
|
3
|
+
export * from './image-cut-gizmo-tool';
|
|
4
|
+
export * from './image-expand-gizmo-tool';
|
|
5
|
+
export * from './sprite-text-edit-gizmo-tool';
|
|
6
|
+
export * from './mask-gizmo-tool';
|
|
7
|
+
export * from './item-create-gizmo-tool';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Gizmo } from '../gizmo';
|
|
2
|
+
import { GizmoTool } from '../gizmo-tool';
|
|
3
|
+
import { ItemCreateType } from '../gizmos/item-create-gizmo';
|
|
4
|
+
/** 元素创建工具。 */
|
|
5
|
+
export declare class ItemCreateGizmoTool extends GizmoTool {
|
|
6
|
+
/** 当前元素创建类型。 */
|
|
7
|
+
createType: ItemCreateType;
|
|
8
|
+
/** @returns 指定创建类型的 Gizmo 图。 */
|
|
9
|
+
createGizmos(): Gizmo[];
|
|
10
|
+
}
|