@tmagic/stage 1.8.0-manmanyu.9 → 1.8.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/dist/es/ActionManager.js +14 -6
- package/dist/es/MoveableOptionsManager.js +4 -2
- package/dist/es/StageCore.js +14 -2
- package/dist/es/StageDragResize.js +12 -9
- package/dist/es/StageFlashHighlight.js +1 -1
- package/dist/es/StageMask.js +39 -9
- package/dist/es/index.js +2 -2
- package/dist/es/util.js +28 -1
- package/dist/tmagic-stage.umd.cjs +264 -149
- package/package.json +5 -5
- package/src/ActionManager.ts +20 -8
- package/src/StageCore.ts +23 -2
- package/src/StageMask.ts +55 -10
- package/src/types.ts +14 -1
- package/src/util.ts +43 -1
- package/types/index.d.ts +124 -97
package/types/index.d.ts
CHANGED
|
@@ -5,29 +5,28 @@ import Core, { Id, MApp, MContainer, MNode } from "@tmagic/core";
|
|
|
5
5
|
import Guides, { GuidesOptions, GuidesOptions as GuidesOptions$1 } from "@scena/guides";
|
|
6
6
|
import MoveableHelper from "moveable-helper";
|
|
7
7
|
export * from "moveable";
|
|
8
|
-
|
|
9
8
|
//#region temp/packages/stage/src/const.d.ts
|
|
10
9
|
/** 流式布局下拖动时需要clone一个镜像节点,镜像节点的id前缀 */
|
|
11
|
-
declare const GHOST_EL_ID_PREFIX = "ghost_el_";
|
|
10
|
+
export declare const GHOST_EL_ID_PREFIX = "ghost_el_";
|
|
12
11
|
/** 拖动的时候需要在蒙层中创建一个占位节点,该节点的id前缀 */
|
|
13
|
-
declare const DRAG_EL_ID_PREFIX = "drag_el_";
|
|
12
|
+
export declare const DRAG_EL_ID_PREFIX = "drag_el_";
|
|
14
13
|
/** 高亮时需要在蒙层中创建一个占位节点,该节点的id前缀 */
|
|
15
|
-
declare const HIGHLIGHT_EL_ID_PREFIX = "highlight_el_";
|
|
14
|
+
export declare const HIGHLIGHT_EL_ID_PREFIX = "highlight_el_";
|
|
16
15
|
/** 闪烁提示时需要在蒙层中创建一个占位节点,该节点的id前缀 */
|
|
17
|
-
declare const FLASH_EL_ID_PREFIX = "flash_el_";
|
|
18
|
-
declare const CONTAINER_HIGHLIGHT_CLASS_NAME = "tmagic-stage-container-highlight";
|
|
19
|
-
declare const PAGE_CLASS = "magic-ui-page";
|
|
16
|
+
export declare const FLASH_EL_ID_PREFIX = "flash_el_";
|
|
17
|
+
export declare const CONTAINER_HIGHLIGHT_CLASS_NAME = "tmagic-stage-container-highlight";
|
|
18
|
+
export declare const PAGE_CLASS = "magic-ui-page";
|
|
20
19
|
/** 默认放到缩小倍数 */
|
|
21
|
-
declare const DEFAULT_ZOOM = 1;
|
|
20
|
+
export declare const DEFAULT_ZOOM = 1;
|
|
22
21
|
/** 参考线类型 */
|
|
23
|
-
declare enum GuidesType {
|
|
22
|
+
export declare enum GuidesType {
|
|
24
23
|
/** 水平 */
|
|
25
24
|
HORIZONTAL = "horizontal",
|
|
26
25
|
/** 垂直 */
|
|
27
26
|
VERTICAL = "vertical"
|
|
28
27
|
}
|
|
29
28
|
/** css z-index */
|
|
30
|
-
declare enum ZIndex {
|
|
29
|
+
export declare enum ZIndex {
|
|
31
30
|
/** 蒙层,用于监听用户操作,需要置于顶层 */
|
|
32
31
|
MASK = "99999",
|
|
33
32
|
/** 选中的节点 */
|
|
@@ -37,7 +36,7 @@ declare enum ZIndex {
|
|
|
37
36
|
HIGHLIGHT_EL = "8"
|
|
38
37
|
}
|
|
39
38
|
/** 鼠标按键 */
|
|
40
|
-
declare enum MouseButton {
|
|
39
|
+
export declare enum MouseButton {
|
|
41
40
|
/** 左键 */
|
|
42
41
|
LEFT = 0,
|
|
43
42
|
/** z中健 */
|
|
@@ -46,7 +45,7 @@ declare enum MouseButton {
|
|
|
46
45
|
RIGHT = 2
|
|
47
46
|
}
|
|
48
47
|
/** 布局方式 */
|
|
49
|
-
declare enum Mode {
|
|
48
|
+
export declare enum Mode {
|
|
50
49
|
/** 绝对定位布局 */
|
|
51
50
|
ABSOLUTE = "absolute",
|
|
52
51
|
/** 固定定位布局 */
|
|
@@ -55,32 +54,32 @@ declare enum Mode {
|
|
|
55
54
|
SORTABLE = "sortable"
|
|
56
55
|
}
|
|
57
56
|
/** 选中节点的class name */
|
|
58
|
-
declare const SELECTED_CLASS = "tmagic-stage-selected-area";
|
|
59
|
-
declare enum AbleActionEventType {
|
|
57
|
+
export declare const SELECTED_CLASS = "tmagic-stage-selected-area";
|
|
58
|
+
export declare enum AbleActionEventType {
|
|
60
59
|
SELECT_PARENT = "select-parent",
|
|
61
60
|
REMOVE = "remove",
|
|
62
61
|
RERENDER = "rerender"
|
|
63
62
|
}
|
|
64
63
|
/** 将组件添加到容器的方式 */
|
|
65
|
-
declare enum ContainerHighlightType {
|
|
64
|
+
export declare enum ContainerHighlightType {
|
|
66
65
|
/** 默认方式:组件在容器上方悬停一段时间后加入 */
|
|
67
66
|
DEFAULT = "default",
|
|
68
67
|
/** 按住alt键,并在容器上方悬停一段时间后加入 */
|
|
69
68
|
ALT = "alt"
|
|
70
69
|
}
|
|
71
|
-
declare enum RenderType {
|
|
70
|
+
export declare enum RenderType {
|
|
72
71
|
IFRAME = "iframe",
|
|
73
72
|
NATIVE = "native"
|
|
74
73
|
}
|
|
75
74
|
/** 选择状态 */
|
|
76
|
-
declare enum SelectStatus {
|
|
75
|
+
export declare enum SelectStatus {
|
|
77
76
|
/** 单选 */
|
|
78
77
|
SELECT = "select",
|
|
79
78
|
/** 多选 */
|
|
80
79
|
MULTI_SELECT = "multiSelect"
|
|
81
80
|
}
|
|
82
81
|
/** 拖动状态 */
|
|
83
|
-
declare enum StageDragStatus {
|
|
82
|
+
export declare enum StageDragStatus {
|
|
84
83
|
/** 开始拖动 */
|
|
85
84
|
START = "start",
|
|
86
85
|
/** 拖动中 */
|
|
@@ -158,9 +157,9 @@ declare class DragResizeHelper {
|
|
|
158
157
|
}
|
|
159
158
|
//#endregion
|
|
160
159
|
//#region temp/packages/stage/src/types.d.ts
|
|
161
|
-
type TargetElement = HTMLElement | SVGElement;
|
|
162
|
-
type CanSelect = (el: HTMLElement, event: MouseEvent, stop: () => boolean) => boolean | Promise<boolean>;
|
|
163
|
-
type IsContainer = (el: HTMLElement) => boolean | Promise<boolean>;
|
|
160
|
+
export type TargetElement = HTMLElement | SVGElement;
|
|
161
|
+
export type CanSelect = (el: HTMLElement, event: MouseEvent, stop: () => boolean) => boolean | Promise<boolean>;
|
|
162
|
+
export type IsContainer = (el: HTMLElement) => boolean | Promise<boolean>;
|
|
164
163
|
/**
|
|
165
164
|
* 判断当前正在拖动的源是否可以拖入目标容器(用于画布上拖入组件时的容器高亮命中)
|
|
166
165
|
* @param sourceIds 当前正在拖动的源节点 id 列表
|
|
@@ -172,21 +171,21 @@ type IsContainer = (el: HTMLElement) => boolean | Promise<boolean>;
|
|
|
172
171
|
* - `Id`(string | number):将拖入目标重定向到该 id 对应的节点
|
|
173
172
|
* - 其他(`true` / `void` / `undefined`):按命中的 targetId 正常拖入
|
|
174
173
|
*/
|
|
175
|
-
type CanDropIn = (sourceIds: Id[], targetId: Id) => Id | boolean | void;
|
|
176
|
-
type CustomizeRender = (renderer: StageCore) => Promise<HTMLElement | void> | HTMLElement | void;
|
|
177
|
-
type CustomizeMoveableOptionsFunction = (config: CustomizeMoveableOptionsCallbackConfig) => MoveableOptions;
|
|
174
|
+
export type CanDropIn = (sourceIds: Id[], targetId: Id) => Id | boolean | void;
|
|
175
|
+
export type CustomizeRender = (renderer: StageCore) => Promise<HTMLElement | void> | HTMLElement | void;
|
|
176
|
+
export type CustomizeMoveableOptionsFunction = (config: CustomizeMoveableOptionsCallbackConfig) => MoveableOptions;
|
|
178
177
|
/** 业务方自定义的moveableOptions,可以是配置,也可以是回调函数 */
|
|
179
|
-
type CustomizeMoveableOptions = CustomizeMoveableOptionsFunction | MoveableOptions;
|
|
178
|
+
export type CustomizeMoveableOptions = CustomizeMoveableOptionsFunction | MoveableOptions;
|
|
180
179
|
/** render提供给的接口,id转成el */
|
|
181
|
-
type GetTargetElement = (id: Id) => HTMLElement | null;
|
|
180
|
+
export type GetTargetElement = (id: Id) => HTMLElement | null;
|
|
182
181
|
/** render提供的接口,通过坐标获得坐标下所有HTML元素数组 */
|
|
183
|
-
type GetElementsFromPoint = (point: Point) => HTMLElement[];
|
|
184
|
-
type GetRenderDocument = () => Document | undefined;
|
|
185
|
-
type DelayedMarkContainer = (event: MouseEvent, exclude
|
|
186
|
-
type MarkContainerEnd = () => HTMLElement | null;
|
|
187
|
-
type GetRootContainer = () => HTMLDivElement | undefined;
|
|
188
|
-
type UpdateDragEl = (el: TargetElement, target: TargetElement, container: HTMLElement) => void;
|
|
189
|
-
interface StageCoreConfig {
|
|
182
|
+
export type GetElementsFromPoint = (point: Point) => HTMLElement[];
|
|
183
|
+
export type GetRenderDocument = () => Document | undefined;
|
|
184
|
+
export type DelayedMarkContainer = (event: MouseEvent, exclude?: Element[], isAdd?: boolean) => NodeJS.Timeout | undefined;
|
|
185
|
+
export type MarkContainerEnd = () => HTMLElement | null;
|
|
186
|
+
export type GetRootContainer = () => HTMLDivElement | undefined;
|
|
187
|
+
export type UpdateDragEl = (el: TargetElement, target: TargetElement, container: HTMLElement) => void;
|
|
188
|
+
export interface StageCoreConfig {
|
|
190
189
|
/** 需要对齐的dom节点的CSS选择器字符串 */
|
|
191
190
|
snapElementQuerySelector?: string;
|
|
192
191
|
/** 放大倍数,默认1倍 */
|
|
@@ -201,6 +200,11 @@ interface StageCoreConfig {
|
|
|
201
200
|
containerHighlightClassName?: string;
|
|
202
201
|
containerHighlightDuration?: number;
|
|
203
202
|
containerHighlightType?: ContainerHighlightType;
|
|
203
|
+
/**
|
|
204
|
+
* 是否仅在新增组件(从组件列表拖入新组件)时才启用将组件拖入容器,
|
|
205
|
+
* 开启后在画布中拖动已有组件不会识别容器,默认 false
|
|
206
|
+
*/
|
|
207
|
+
containerHighlightAddOnly?: boolean;
|
|
204
208
|
moveableOptions?: CustomizeMoveableOptions;
|
|
205
209
|
/** runtime 的HTML地址,可以是一个HTTP地址,如果和编辑器不同域,需要设置跨域,也可以是一个相对或绝对路径 */
|
|
206
210
|
runtimeUrl?: string;
|
|
@@ -223,11 +227,13 @@ interface StageCoreConfig {
|
|
|
223
227
|
*/
|
|
224
228
|
disabledFlashTip?: boolean;
|
|
225
229
|
}
|
|
226
|
-
interface ActionManagerConfig {
|
|
230
|
+
export interface ActionManagerConfig {
|
|
227
231
|
container: HTMLElement;
|
|
228
232
|
containerHighlightClassName?: string;
|
|
229
233
|
containerHighlightDuration?: number;
|
|
230
234
|
containerHighlightType?: ContainerHighlightType;
|
|
235
|
+
/** 见 StageCoreConfig.containerHighlightAddOnly */
|
|
236
|
+
containerHighlightAddOnly?: boolean;
|
|
231
237
|
moveableOptions?: CustomizeMoveableOptions;
|
|
232
238
|
disabledDragStart?: boolean;
|
|
233
239
|
disabledMultiSelect?: boolean;
|
|
@@ -246,12 +252,12 @@ interface ActionManagerConfig {
|
|
|
246
252
|
getTargetElement: GetTargetElement;
|
|
247
253
|
getElementsFromPoint: GetElementsFromPoint;
|
|
248
254
|
}
|
|
249
|
-
interface MoveableOptionsManagerConfig {
|
|
255
|
+
export interface MoveableOptionsManagerConfig {
|
|
250
256
|
container: HTMLElement;
|
|
251
257
|
moveableOptions?: MoveableOptions | (() => MoveableOptions);
|
|
252
258
|
getRootContainer: GetRootContainer;
|
|
253
259
|
}
|
|
254
|
-
interface CustomizeMoveableOptionsCallbackConfig {
|
|
260
|
+
export interface CustomizeMoveableOptionsCallbackConfig {
|
|
255
261
|
targetEl: HTMLElement | null;
|
|
256
262
|
targetElId?: string;
|
|
257
263
|
targetEls?: HTMLElement[];
|
|
@@ -259,49 +265,49 @@ interface CustomizeMoveableOptionsCallbackConfig {
|
|
|
259
265
|
isMulti: boolean;
|
|
260
266
|
document?: Document;
|
|
261
267
|
}
|
|
262
|
-
interface StageRenderConfig {
|
|
268
|
+
export interface StageRenderConfig {
|
|
263
269
|
runtimeUrl?: string;
|
|
264
270
|
zoom: number | undefined;
|
|
265
271
|
renderType?: RenderType;
|
|
266
272
|
customizedRender?: () => Promise<HTMLElement | null | void>;
|
|
267
273
|
}
|
|
268
|
-
interface StageMaskConfig {
|
|
274
|
+
export interface StageMaskConfig {
|
|
269
275
|
core: StageCore;
|
|
270
276
|
}
|
|
271
|
-
interface StageDragResizeConfig extends MoveableOptionsManagerConfig {
|
|
277
|
+
export interface StageDragResizeConfig extends MoveableOptionsManagerConfig {
|
|
272
278
|
dragResizeHelper: DragResizeHelper;
|
|
273
279
|
disabledDragStart?: boolean;
|
|
274
280
|
getRenderDocument: GetRenderDocument;
|
|
275
281
|
markContainerEnd: MarkContainerEnd;
|
|
276
282
|
delayedMarkContainer: DelayedMarkContainer;
|
|
277
283
|
}
|
|
278
|
-
interface StageMultiDragResizeConfig extends MoveableOptionsManagerConfig {
|
|
284
|
+
export interface StageMultiDragResizeConfig extends MoveableOptionsManagerConfig {
|
|
279
285
|
dragResizeHelper: DragResizeHelper;
|
|
280
286
|
getRenderDocument: GetRenderDocument;
|
|
281
287
|
markContainerEnd: MarkContainerEnd;
|
|
282
288
|
delayedMarkContainer: DelayedMarkContainer;
|
|
283
289
|
}
|
|
284
|
-
interface DragResizeHelperConfig {
|
|
290
|
+
export interface DragResizeHelperConfig {
|
|
285
291
|
container: HTMLElement;
|
|
286
292
|
updateDragEl?: UpdateDragEl;
|
|
287
293
|
}
|
|
288
|
-
type Rect = {
|
|
294
|
+
export type Rect = {
|
|
289
295
|
width: number;
|
|
290
296
|
height: number;
|
|
291
297
|
} & Offset;
|
|
292
|
-
interface Offset {
|
|
298
|
+
export interface Offset {
|
|
293
299
|
left: number;
|
|
294
300
|
top: number;
|
|
295
301
|
}
|
|
296
|
-
interface Point {
|
|
302
|
+
export interface Point {
|
|
297
303
|
clientX: number;
|
|
298
304
|
clientY: number;
|
|
299
305
|
}
|
|
300
|
-
interface GuidesEventData {
|
|
306
|
+
export interface GuidesEventData {
|
|
301
307
|
type: GuidesType;
|
|
302
308
|
guides: number[];
|
|
303
309
|
}
|
|
304
|
-
interface UpdateEventData {
|
|
310
|
+
export interface UpdateEventData {
|
|
305
311
|
data: {
|
|
306
312
|
el: HTMLElement;
|
|
307
313
|
style: {
|
|
@@ -318,28 +324,30 @@ interface UpdateEventData {
|
|
|
318
324
|
}[];
|
|
319
325
|
parentEl: HTMLElement | null;
|
|
320
326
|
}
|
|
321
|
-
interface RemoveEventData {
|
|
327
|
+
export interface RemoveEventData {
|
|
322
328
|
data: {
|
|
323
329
|
el: HTMLElement;
|
|
324
330
|
}[];
|
|
325
331
|
}
|
|
326
|
-
interface SortEventData {
|
|
332
|
+
export interface SortEventData {
|
|
327
333
|
src: Id;
|
|
328
334
|
dist: Id;
|
|
329
335
|
root?: MApp;
|
|
330
336
|
}
|
|
331
|
-
interface UpdateData {
|
|
337
|
+
export interface UpdateData {
|
|
332
338
|
config: MNode;
|
|
333
339
|
parent?: MContainer;
|
|
334
340
|
parentId?: Id;
|
|
335
341
|
root: MApp;
|
|
342
|
+
/** 插入到父节点 items 中的目标下标;runtime 优先按此同步,避免依赖选中态推算顺序 */
|
|
343
|
+
index?: number;
|
|
336
344
|
}
|
|
337
|
-
interface RemoveData {
|
|
345
|
+
export interface RemoveData {
|
|
338
346
|
id: Id;
|
|
339
347
|
parentId: Id;
|
|
340
348
|
root: MApp;
|
|
341
349
|
}
|
|
342
|
-
interface Runtime {
|
|
350
|
+
export interface Runtime {
|
|
343
351
|
getApp?: () => Core | undefined;
|
|
344
352
|
updateRootConfig?: (config: MApp) => void;
|
|
345
353
|
updatePageId?: (id: Id) => void;
|
|
@@ -350,35 +358,35 @@ interface Runtime {
|
|
|
350
358
|
remove?: (data: RemoveData) => void;
|
|
351
359
|
[key: string]: any;
|
|
352
360
|
}
|
|
353
|
-
interface Magic {
|
|
361
|
+
export interface Magic {
|
|
354
362
|
id: string;
|
|
355
363
|
/** 当前页面的根节点变化时调用该方法,编辑器会同步该el和stage的大小,该方法由stage注入到iframe.contentWindow中 */
|
|
356
364
|
onPageElUpdate: (el: HTMLElement) => void;
|
|
357
365
|
onRuntimeReady: (runtime: Runtime) => void;
|
|
358
366
|
}
|
|
359
|
-
interface RuntimeWindow extends Window {
|
|
367
|
+
export interface RuntimeWindow extends Window {
|
|
360
368
|
magic: Magic;
|
|
361
369
|
}
|
|
362
|
-
interface StageHighlightConfig {
|
|
370
|
+
export interface StageHighlightConfig {
|
|
363
371
|
container: HTMLElement;
|
|
364
372
|
updateDragEl?: UpdateDragEl;
|
|
365
373
|
getRootContainer: GetRootContainer;
|
|
366
374
|
}
|
|
367
|
-
interface TargetShadowConfig {
|
|
375
|
+
export interface TargetShadowConfig {
|
|
368
376
|
container: HTMLElement;
|
|
369
377
|
zIndex?: ZIndex;
|
|
370
378
|
updateDragEl?: UpdateDragEl;
|
|
371
379
|
idPrefix?: string;
|
|
372
380
|
}
|
|
373
|
-
interface StageFlashHighlightConfig {
|
|
381
|
+
export interface StageFlashHighlightConfig {
|
|
374
382
|
container: HTMLElement;
|
|
375
383
|
updateDragEl?: UpdateDragEl;
|
|
376
384
|
}
|
|
377
|
-
interface RuleOptions {
|
|
385
|
+
export interface RuleOptions {
|
|
378
386
|
guidesOptions?: Partial<GuidesOptions$1>;
|
|
379
387
|
disabledRule?: boolean;
|
|
380
388
|
}
|
|
381
|
-
interface CoreEvents {
|
|
389
|
+
export interface CoreEvents {
|
|
382
390
|
mounted: [];
|
|
383
391
|
'runtime-ready': [runtime: Runtime];
|
|
384
392
|
'page-el-update': [el: HTMLElement];
|
|
@@ -396,19 +404,19 @@ interface CoreEvents {
|
|
|
396
404
|
mouseleave: [event: MouseEvent];
|
|
397
405
|
'drag-start': [event: OnDragStart];
|
|
398
406
|
}
|
|
399
|
-
interface RenderEvents {
|
|
407
|
+
export interface RenderEvents {
|
|
400
408
|
onload: [];
|
|
401
409
|
'page-el-update': [el: HTMLElement];
|
|
402
410
|
'runtime-ready': [runtime: Runtime];
|
|
403
411
|
}
|
|
404
|
-
interface MaskEvents {
|
|
412
|
+
export interface MaskEvents {
|
|
405
413
|
scroll: [event: WheelEvent];
|
|
406
414
|
'change-guides': [data: {
|
|
407
415
|
type: GuidesType.HORIZONTAL;
|
|
408
416
|
guides: number[];
|
|
409
417
|
}];
|
|
410
418
|
}
|
|
411
|
-
interface ActionManagerEvents {
|
|
419
|
+
export interface ActionManagerEvents {
|
|
412
420
|
dblclick: [event: MouseEvent];
|
|
413
421
|
mousemove: [event: MouseEvent];
|
|
414
422
|
mouseleave: [event: MouseEvent];
|
|
@@ -427,7 +435,7 @@ interface ActionManagerEvents {
|
|
|
427
435
|
'multi-select': [selectedElList: HTMLElement[], event: MouseEvent];
|
|
428
436
|
'get-elements-from-point': [els: HTMLElement[]];
|
|
429
437
|
}
|
|
430
|
-
interface DrEvents {
|
|
438
|
+
export interface DrEvents {
|
|
431
439
|
'update-moveable': [];
|
|
432
440
|
[AbleActionEventType.REMOVE]: [];
|
|
433
441
|
[AbleActionEventType.SELECT_PARENT]: [];
|
|
@@ -436,7 +444,7 @@ interface DrEvents {
|
|
|
436
444
|
update: [data: UpdateEventData];
|
|
437
445
|
sort: [data: SortEventData];
|
|
438
446
|
}
|
|
439
|
-
interface MultiDrEvents {
|
|
447
|
+
export interface MultiDrEvents {
|
|
440
448
|
'update-moveable': [];
|
|
441
449
|
'change-to-select': [id: Id, event: MouseEvent];
|
|
442
450
|
update: [data: UpdateEventData];
|
|
@@ -467,6 +475,8 @@ declare class ActionManager extends EventEmitter$1 {
|
|
|
467
475
|
private containerHighlightDuration;
|
|
468
476
|
/** 将组件加入容器的操作方式 */
|
|
469
477
|
private containerHighlightType?;
|
|
478
|
+
/** 是否仅在新增组件时才启用将组件加入容器 */
|
|
479
|
+
private containerHighlightAddOnly;
|
|
470
480
|
private isAltKeydown;
|
|
471
481
|
private getTargetElement;
|
|
472
482
|
private getElementsFromPoint;
|
|
@@ -557,9 +567,10 @@ declare class ActionManager extends EventEmitter$1 {
|
|
|
557
567
|
* 标记的作用:1、高亮容器,给用户一个加入容器的交互感知;2、释放鼠标后,通过标记的标志找到要加入的容器
|
|
558
568
|
* @param event 鼠标事件
|
|
559
569
|
* @param excludeElList 计算鼠标所在容器时要排除的元素列表
|
|
570
|
+
* @param isAdd 当前操作是否为新增组件(从组件列表拖入),开启 containerHighlightAddOnly 时只有新增才会标记
|
|
560
571
|
* @returns timeoutId,调用方在鼠标移走时要取消该timeout,阻止标记
|
|
561
572
|
*/
|
|
562
|
-
delayedMarkContainer(event: MouseEvent, excludeElList?: Element[]): NodeJS.Timeout | undefined;
|
|
573
|
+
delayedMarkContainer(event: MouseEvent, excludeElList?: Element[], isAdd?: boolean): NodeJS.Timeout | undefined;
|
|
563
574
|
getDragStatus(): StageDragStatus | undefined;
|
|
564
575
|
updateMoveableOptions(): void;
|
|
565
576
|
destroy(): void;
|
|
@@ -575,7 +586,9 @@ declare class ActionManager extends EventEmitter$1 {
|
|
|
575
586
|
*/
|
|
576
587
|
private beforeMultiSelect;
|
|
577
588
|
/**
|
|
578
|
-
* 当前状态下能否将组件加入容器,默认是鼠标悬停一段时间加入,alt模式则是按住alt
|
|
589
|
+
* 当前状态下能否将组件加入容器,默认是鼠标悬停一段时间加入,alt模式则是按住alt+鼠标悬停一段时间加入;
|
|
590
|
+
* 开启containerHighlightAddOnly时,画布中拖动已有组件不能加入容器
|
|
591
|
+
* @param isAdd 当前操作是否为新增组件
|
|
579
592
|
*/
|
|
580
593
|
private canAddToContainer;
|
|
581
594
|
/**
|
|
@@ -693,12 +706,13 @@ declare class StageMask extends Rule {
|
|
|
693
706
|
setMode(mode: Mode): void;
|
|
694
707
|
/**
|
|
695
708
|
* 初始化视窗和蒙层监听,监听元素是否在视窗区域、监听mask蒙层所在的wrapper大小变化
|
|
696
|
-
* @description
|
|
709
|
+
* @description 初始化视窗和蒙层监听;切换到新页面 DOM 时重置滚动
|
|
697
710
|
* @param page 页面Dom节点
|
|
698
711
|
*/
|
|
699
712
|
observe(page: HTMLElement): void;
|
|
700
713
|
/**
|
|
701
|
-
* 处理页面大小变更,同步页面和mask大小
|
|
714
|
+
* 处理页面大小变更,同步页面和 mask 大小
|
|
715
|
+
* @description 仅处理当前 page 且仍挂载在文档中的 entry;非当前页、已卸载或宽高为 0 的回调会被忽略
|
|
702
716
|
* @param entries ResizeObserverEntry,获取页面最新大小
|
|
703
717
|
*/
|
|
704
718
|
pageResize(entries: ResizeObserverEntry[]): void;
|
|
@@ -730,6 +744,14 @@ declare class StageMask extends Rule {
|
|
|
730
744
|
private initObserverWrapper;
|
|
731
745
|
private scroll;
|
|
732
746
|
private scrollTo;
|
|
747
|
+
/**
|
|
748
|
+
* 从当前页面同步蒙层宽高,并修正滚动偏移
|
|
749
|
+
*/
|
|
750
|
+
private syncPageSize;
|
|
751
|
+
/**
|
|
752
|
+
* 应用页面尺寸到蒙层;宽高为 0 时忽略,避免切换/布局过程中把 editor-mask 置空
|
|
753
|
+
*/
|
|
754
|
+
private applyPageSize;
|
|
733
755
|
/**
|
|
734
756
|
* 设置蒙层高度
|
|
735
757
|
* @param height 高度
|
|
@@ -767,12 +789,7 @@ declare class StageRender extends EventEmitter {
|
|
|
767
789
|
private zoom;
|
|
768
790
|
private renderType;
|
|
769
791
|
private customizedRender?;
|
|
770
|
-
constructor({
|
|
771
|
-
runtimeUrl,
|
|
772
|
-
zoom,
|
|
773
|
-
customizedRender,
|
|
774
|
-
renderType
|
|
775
|
-
}: StageRenderConfig);
|
|
792
|
+
constructor({ runtimeUrl, zoom, customizedRender, renderType }: StageRenderConfig);
|
|
776
793
|
getMagicApi: () => {
|
|
777
794
|
id: string;
|
|
778
795
|
onPageElUpdate: (el: HTMLElement) => void;
|
|
@@ -827,7 +844,7 @@ declare class StageRender extends EventEmitter {
|
|
|
827
844
|
/**
|
|
828
845
|
* 负责管理画布,管理renderer、mask、actionManager三个核心类,并负责统一对外通信,包括提供接口和抛事件
|
|
829
846
|
*/
|
|
830
|
-
|
|
847
|
+
export default class StageCore extends EventEmitter {
|
|
831
848
|
container?: HTMLDivElement;
|
|
832
849
|
renderer: StageRender | null;
|
|
833
850
|
mask: StageMask | null;
|
|
@@ -891,9 +908,10 @@ declare class StageCore extends EventEmitter {
|
|
|
891
908
|
* 标记的作用:1、高亮容器,给用户一个加入容器的交互感知;2、释放鼠标后,通过标记的标志找到要加入的容器
|
|
892
909
|
* @param event 鼠标事件
|
|
893
910
|
* @param excludeElList 计算鼠标所在容器时要排除的元素列表
|
|
911
|
+
* @param isAdd 当前操作是否为新增组件(从组件列表拖入),开启 containerHighlightAddOnly 时只有新增才会标记
|
|
894
912
|
* @returns timeoutId,调用方在鼠标移走时要取消该timeout,阻止标记
|
|
895
913
|
*/
|
|
896
|
-
delayedMarkContainer(event: MouseEvent, excludeElList?: Element[]): NodeJS.Timeout | undefined;
|
|
914
|
+
delayedMarkContainer(event: MouseEvent, excludeElList?: Element[], isAdd?: boolean): NodeJS.Timeout | undefined;
|
|
897
915
|
getMoveableOption<K extends keyof MoveableOptions>(key: K): MoveableOptions[K] | undefined;
|
|
898
916
|
getDragStatus(): import("@tmagic/editor").StageDragStatus | undefined;
|
|
899
917
|
disableMultiSelect(): void;
|
|
@@ -918,6 +936,10 @@ declare class StageCore extends EventEmitter {
|
|
|
918
936
|
* 监听页面大小变化
|
|
919
937
|
*/
|
|
920
938
|
private observePageResize;
|
|
939
|
+
/**
|
|
940
|
+
* page-el-update 后,若当前选中节点仍在新页面文档中且需要自动滚动,则重新触发 scrollIntoView
|
|
941
|
+
*/
|
|
942
|
+
private scrollSelectedIntoViewAfterPageUpdate;
|
|
921
943
|
private getActionManagerConfig;
|
|
922
944
|
private initRenderEvent;
|
|
923
945
|
private initMaskEvent;
|
|
@@ -1080,38 +1102,43 @@ declare class StageDragResize extends MoveableOptionsManager {
|
|
|
1080
1102
|
}
|
|
1081
1103
|
//#endregion
|
|
1082
1104
|
//#region temp/packages/stage/src/util.d.ts
|
|
1083
|
-
declare const getOffset: (el: Element) => Offset;
|
|
1084
|
-
declare const getTargetElStyle: (el: TargetElement, zIndex?: ZIndex) => string;
|
|
1085
|
-
declare const getAbsolutePosition: (el: HTMLElement, {
|
|
1086
|
-
top,
|
|
1087
|
-
left
|
|
1088
|
-
}: Offset) => {
|
|
1105
|
+
export declare const getOffset: (el: Element) => Offset;
|
|
1106
|
+
export declare const getTargetElStyle: (el: TargetElement, zIndex?: ZIndex) => string;
|
|
1107
|
+
export declare const getAbsolutePosition: (el: HTMLElement, { top, left }: Offset) => {
|
|
1089
1108
|
left: number;
|
|
1090
1109
|
top: number;
|
|
1091
1110
|
};
|
|
1092
|
-
declare const isAbsolute: (style: {
|
|
1111
|
+
export declare const isAbsolute: (style: {
|
|
1093
1112
|
position?: string;
|
|
1094
1113
|
}) => boolean;
|
|
1095
|
-
declare const isRelative: (style: {
|
|
1114
|
+
export declare const isRelative: (style: {
|
|
1096
1115
|
position?: string;
|
|
1097
1116
|
}) => boolean;
|
|
1098
|
-
declare const isStatic: (style: {
|
|
1117
|
+
export declare const isStatic: (style: {
|
|
1099
1118
|
position?: string;
|
|
1100
1119
|
}) => boolean;
|
|
1101
|
-
declare const isFixed: (style: {
|
|
1120
|
+
export declare const isFixed: (style: {
|
|
1102
1121
|
position?: string;
|
|
1103
1122
|
}) => boolean;
|
|
1104
|
-
declare const isFixedParent: (el: Element) => boolean;
|
|
1105
|
-
declare const getMode: (el: Element) => Mode;
|
|
1106
|
-
declare const getScrollParent: (element: HTMLElement, includeHidden?: boolean) => HTMLElement | null;
|
|
1107
|
-
|
|
1108
|
-
|
|
1123
|
+
export declare const isFixedParent: (el: Element) => boolean;
|
|
1124
|
+
export declare const getMode: (el: Element) => Mode;
|
|
1125
|
+
export declare const getScrollParent: (element: HTMLElement, includeHidden?: boolean) => HTMLElement | null;
|
|
1126
|
+
/**
|
|
1127
|
+
* 将元素滚动到指定滚动容器的可视区域内(仅垂直方向,滚动最小距离)
|
|
1128
|
+
* @description 与原生 scrollIntoView 不同,只滚动指定的容器自身,不会连带滚动外层祖先滚动容器,
|
|
1129
|
+
* 避免编辑器画布外层容器(如 stage 外层使用 transform 模拟滚动的容器)被浏览器自动滚动导致整个画布位移
|
|
1130
|
+
* @param el 目标元素
|
|
1131
|
+
* @param container 滚动容器
|
|
1132
|
+
*/
|
|
1133
|
+
export declare const scrollElementIntoView: (el: Element, container: HTMLElement) => void;
|
|
1134
|
+
export declare const removeSelectedClassName: (doc: Document) => void;
|
|
1135
|
+
export declare const addSelectedClassName: (el: Element, doc: Document) => void;
|
|
1109
1136
|
/**
|
|
1110
1137
|
* 下移组件位置
|
|
1111
1138
|
* @param {number} deltaTop 偏移量
|
|
1112
1139
|
* @param {Object} detail 当前选中的组件配置
|
|
1113
1140
|
*/
|
|
1114
|
-
declare const down: (deltaTop: number, target: TargetElement) => SortEventData;
|
|
1141
|
+
export declare const down: (deltaTop: number, target: TargetElement) => SortEventData;
|
|
1115
1142
|
/**
|
|
1116
1143
|
* 上移组件位置
|
|
1117
1144
|
* @param {Array} brothers 处于同一容器下的所有子组件配置
|
|
@@ -1119,13 +1146,13 @@ declare const down: (deltaTop: number, target: TargetElement) => SortEventData;
|
|
|
1119
1146
|
* @param {number} deltaTop 偏移量
|
|
1120
1147
|
* @param {Object} detail 当前选中的组件配置
|
|
1121
1148
|
*/
|
|
1122
|
-
declare const up: (deltaTop: number, target: TargetElement) => SortEventData;
|
|
1123
|
-
declare const isMoveableButton: (target: Element) => boolean | undefined;
|
|
1124
|
-
declare const getMarginValue: (el: Element) => {
|
|
1149
|
+
export declare const up: (deltaTop: number, target: TargetElement) => SortEventData;
|
|
1150
|
+
export declare const isMoveableButton: (target: Element) => boolean | undefined;
|
|
1151
|
+
export declare const getMarginValue: (el: Element) => {
|
|
1125
1152
|
marginLeft: number;
|
|
1126
1153
|
marginTop: number;
|
|
1127
1154
|
};
|
|
1128
|
-
declare const getBorderWidth: (el: Element) => {
|
|
1155
|
+
export declare const getBorderWidth: (el: Element) => {
|
|
1129
1156
|
borderLeftWidth: number;
|
|
1130
1157
|
borderRightWidth: number;
|
|
1131
1158
|
borderTopWidth: number;
|
|
@@ -1133,7 +1160,7 @@ declare const getBorderWidth: (el: Element) => {
|
|
|
1133
1160
|
};
|
|
1134
1161
|
//#endregion
|
|
1135
1162
|
//#region temp/packages/stage/src/MoveableActionsAble.d.ts
|
|
1136
|
-
interface AbleCustomizedButton {
|
|
1163
|
+
export interface AbleCustomizedButton {
|
|
1137
1164
|
props: {
|
|
1138
1165
|
className?: string;
|
|
1139
1166
|
onClick?(e: MouseEvent): void;
|
|
@@ -1149,4 +1176,4 @@ declare const _default: (handler: (type: AbleActionEventType) => void, customize
|
|
|
1149
1176
|
render(moveable: MoveableManagerInterface<any, any>, React: Renderer): any;
|
|
1150
1177
|
};
|
|
1151
1178
|
//#endregion
|
|
1152
|
-
export {
|
|
1179
|
+
export { type GuidesOptions, _default as MoveableActionsAble, StageDragResize, StageMask, StageRender };
|