@tmagic/stage 1.2.0-beta.7 → 1.2.0-beta.9
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/tmagic-stage.mjs +199 -86
- package/dist/tmagic-stage.mjs.map +1 -1
- package/dist/tmagic-stage.umd.js +199 -85
- package/dist/tmagic-stage.umd.js.map +1 -1
- package/package.json +4 -4
- package/src/MoveableSelectParentAble.ts +78 -0
- package/src/Rule.ts +9 -5
- package/src/StageCore.ts +45 -12
- package/src/StageDragResize.ts +8 -0
- package/src/StageMask.ts +112 -81
- package/src/StageRender.ts +9 -9
- package/src/types.ts +2 -1
- package/src/util.ts +6 -0
- package/types/MoveableSelectParentAble.d.ts +9 -0
- package/types/Rule.d.ts +4 -3
- package/types/StageCore.d.ts +9 -0
- package/types/StageMask.d.ts +31 -9
- package/types/StageRender.d.ts +2 -3
- package/types/types.d.ts +2 -1
- package/types/util.d.ts +1 -0
package/types/StageCore.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export default class StageCore extends EventEmitter {
|
|
|
25
25
|
containerHighlightType?: ContainerHighlightType;
|
|
26
26
|
isContainer: IsContainer;
|
|
27
27
|
private canSelect;
|
|
28
|
+
private pageResizeObserver;
|
|
28
29
|
constructor(config: StageCoreConfig);
|
|
29
30
|
getElementsFromPoint(event: MouseEvent): HTMLElement[];
|
|
30
31
|
getElementFromPoint(event: MouseEvent): Promise<HTMLElement | undefined>;
|
|
@@ -73,5 +74,13 @@ export default class StageCore extends EventEmitter {
|
|
|
73
74
|
* 销毁实例
|
|
74
75
|
*/
|
|
75
76
|
destroy(): void;
|
|
77
|
+
/**
|
|
78
|
+
* 监听页面大小变化
|
|
79
|
+
*/
|
|
80
|
+
private observePageResize;
|
|
81
|
+
/**
|
|
82
|
+
* 传入stageRender供其回调,获取业务方自定义渲染画布页面渲染结果
|
|
83
|
+
*/
|
|
84
|
+
private render;
|
|
76
85
|
private getTargetElement;
|
|
77
86
|
}
|
package/types/StageMask.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { Mode } from './const';
|
|
2
2
|
import Rule from './Rule';
|
|
3
|
-
import type StageCore from './StageCore';
|
|
4
|
-
import type { StageMaskConfig } from './types';
|
|
5
3
|
/**
|
|
6
4
|
* 蒙层
|
|
7
5
|
* @description 用于拦截页面的点击动作,避免点击时触发组件自身动作;在编辑器中点击组件应当是选中组件;
|
|
@@ -9,9 +7,7 @@ import type { StageMaskConfig } from './types';
|
|
|
9
7
|
export default class StageMask extends Rule {
|
|
10
8
|
content: HTMLDivElement;
|
|
11
9
|
wrapper: HTMLDivElement;
|
|
12
|
-
core: StageCore;
|
|
13
10
|
page: HTMLElement | null;
|
|
14
|
-
pageScrollParent: HTMLElement | null;
|
|
15
11
|
scrollTop: number;
|
|
16
12
|
scrollLeft: number;
|
|
17
13
|
width: number;
|
|
@@ -20,24 +16,34 @@ export default class StageMask extends Rule {
|
|
|
20
16
|
wrapperWidth: number;
|
|
21
17
|
maxScrollTop: number;
|
|
22
18
|
maxScrollLeft: number;
|
|
23
|
-
intersectionObserver: IntersectionObserver | null;
|
|
24
19
|
isMultiSelectStatus: Boolean;
|
|
25
20
|
private mode;
|
|
26
|
-
private
|
|
21
|
+
private pageScrollParent;
|
|
22
|
+
private intersectionObserver;
|
|
27
23
|
private wrapperResizeObserver;
|
|
28
24
|
/**
|
|
29
25
|
* 高亮事件处理函数
|
|
30
26
|
* @param event 事件对象
|
|
31
27
|
*/
|
|
32
28
|
private highlightHandler;
|
|
33
|
-
constructor(
|
|
29
|
+
constructor();
|
|
34
30
|
setMode(mode: Mode): void;
|
|
35
31
|
/**
|
|
36
|
-
*
|
|
37
|
-
* @description
|
|
32
|
+
* 初始化视窗和蒙层监听,监听元素是否在视窗区域、监听mask蒙层所在的wrapper大小变化
|
|
33
|
+
* @description 初始化视窗和蒙层监听
|
|
38
34
|
* @param page 页面Dom节点
|
|
39
35
|
*/
|
|
40
36
|
observe(page: HTMLElement): void;
|
|
37
|
+
/**
|
|
38
|
+
* 处理页面大小变更,同步页面和mask大小
|
|
39
|
+
* @param entries ResizeObserverEntry,获取页面最新大小
|
|
40
|
+
*/
|
|
41
|
+
pageResize(entries: ResizeObserverEntry[]): void;
|
|
42
|
+
/**
|
|
43
|
+
* 监听一个组件是否在画布可视区域内
|
|
44
|
+
* @param el 被选中的组件,可能是左侧目录树中选中的
|
|
45
|
+
*/
|
|
46
|
+
observerIntersection(el: HTMLElement): void;
|
|
41
47
|
/**
|
|
42
48
|
* 挂载Dom节点
|
|
43
49
|
* @param el 将蒙层挂载到该Dom节点上
|
|
@@ -49,6 +55,22 @@ export default class StageMask extends Rule {
|
|
|
49
55
|
* 销毁实例
|
|
50
56
|
*/
|
|
51
57
|
destroy(): void;
|
|
58
|
+
/**
|
|
59
|
+
* 初始化content的事件监听
|
|
60
|
+
*/
|
|
61
|
+
private initContentEventListener;
|
|
62
|
+
/**
|
|
63
|
+
* 初始化多选事件监听
|
|
64
|
+
*/
|
|
65
|
+
private initMultiSelectEvent;
|
|
66
|
+
/**
|
|
67
|
+
* 监听选中元素是否在画布可视区域内,如果目标元素不在可视区域内,通过滚动使该元素出现在可视区域
|
|
68
|
+
*/
|
|
69
|
+
private initObserverIntersection;
|
|
70
|
+
/**
|
|
71
|
+
* 监听mask的容器大小变化
|
|
72
|
+
*/
|
|
73
|
+
private initObserverWrapper;
|
|
52
74
|
private scroll;
|
|
53
75
|
private scrollTo;
|
|
54
76
|
/**
|
package/types/StageRender.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
|
-
import StageCore from './StageCore';
|
|
4
3
|
import type { Runtime, RuntimeWindow, StageRenderConfig } from './types';
|
|
5
4
|
export default class StageRender extends EventEmitter {
|
|
6
5
|
/** 组件的js、css执行的环境,直接渲染为当前window,iframe渲染则为iframe.contentWindow */
|
|
@@ -8,9 +7,8 @@ export default class StageRender extends EventEmitter {
|
|
|
8
7
|
runtime: Runtime | null;
|
|
9
8
|
iframe?: HTMLIFrameElement;
|
|
10
9
|
runtimeUrl?: string;
|
|
11
|
-
core: StageCore;
|
|
12
10
|
private render?;
|
|
13
|
-
constructor({
|
|
11
|
+
constructor({ runtimeUrl, render }: StageRenderConfig);
|
|
14
12
|
getMagicApi: () => {
|
|
15
13
|
onPageElUpdate: (el: HTMLElement) => boolean;
|
|
16
14
|
onRuntimeReady: (runtime: Runtime) => void;
|
|
@@ -21,6 +19,7 @@ export default class StageRender extends EventEmitter {
|
|
|
21
19
|
*/
|
|
22
20
|
mount(el: HTMLDivElement): Promise<void>;
|
|
23
21
|
getRuntime: () => Promise<Runtime>;
|
|
22
|
+
getDocument(): Document | undefined;
|
|
24
23
|
/**
|
|
25
24
|
* 销毁实例
|
|
26
25
|
*/
|
package/types/types.d.ts
CHANGED
|
@@ -30,7 +30,8 @@ export declare type StageCoreConfig = {
|
|
|
30
30
|
updateDragEl?: (el: HTMLDivElement, target: HTMLElement) => void;
|
|
31
31
|
};
|
|
32
32
|
export interface StageRenderConfig {
|
|
33
|
-
|
|
33
|
+
runtimeUrl?: string;
|
|
34
|
+
render?: () => Promise<HTMLElement | null>;
|
|
34
35
|
}
|
|
35
36
|
export interface StageMaskConfig {
|
|
36
37
|
core: StageCore;
|
package/types/util.d.ts
CHANGED
|
@@ -30,3 +30,4 @@ export declare const down: (deltaTop: number, target: HTMLElement | SVGElement)
|
|
|
30
30
|
* @param {Object} detail 当前选中的组件配置
|
|
31
31
|
*/
|
|
32
32
|
export declare const up: (deltaTop: number, target: HTMLElement | SVGElement) => SortEventData | void;
|
|
33
|
+
export declare const isMoveableButton: (target: Element) => boolean | undefined;
|