@tmagic/editor 1.0.0-beta.1
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/style.css +505 -0
- package/dist/tmagic-editor.es.js +4233 -0
- package/dist/tmagic-editor.es.js.map +1 -0
- package/dist/tmagic-editor.umd.js +4276 -0
- package/dist/tmagic-editor.umd.js.map +1 -0
- package/dist/types/src/Editor.vue.d.ts +136 -0
- package/dist/types/src/components/Icon.vue.d.ts +13 -0
- package/dist/types/src/components/ToolButton.vue.d.ts +35 -0
- package/dist/types/src/fields/Code.vue.d.ts +24 -0
- package/dist/types/src/fields/CodeLink.vue.d.ts +54 -0
- package/dist/types/src/fields/UISelect.vue.d.ts +32 -0
- package/dist/types/src/index.d.ts +19 -0
- package/dist/types/src/layouts/AddPageBox.vue.d.ts +5 -0
- package/dist/types/src/layouts/CodeEditor.vue.d.ts +46 -0
- package/dist/types/src/layouts/Framework.vue.d.ts +11 -0
- package/dist/types/src/layouts/NavMenu.vue.d.ts +24 -0
- package/dist/types/src/layouts/PropsPanel.vue.d.ts +13 -0
- package/dist/types/src/layouts/Resizer.vue.d.ts +13 -0
- package/dist/types/src/layouts/sidebar/ComponentListPanel.vue.d.ts +12 -0
- package/dist/types/src/layouts/sidebar/LayerMenu.vue.d.ts +31 -0
- package/dist/types/src/layouts/sidebar/LayerPanel.vue.d.ts +973 -0
- package/dist/types/src/layouts/sidebar/Sidebar.vue.d.ts +27 -0
- package/dist/types/src/layouts/workspace/PageBar.vue.d.ts +11 -0
- package/dist/types/src/layouts/workspace/Stage.vue.d.ts +153 -0
- package/dist/types/src/layouts/workspace/ViewerMenu.vue.d.ts +18 -0
- package/dist/types/src/layouts/workspace/Workspace.vue.d.ts +37 -0
- package/dist/types/src/services/BaseService.d.ts +56 -0
- package/dist/types/src/services/editor.d.ts +122 -0
- package/dist/types/src/services/events.d.ts +16 -0
- package/dist/types/src/services/history.d.ts +51 -0
- package/dist/types/src/services/props.d.ts +36 -0
- package/dist/types/src/services/ui.d.ts +26 -0
- package/dist/types/src/shims-vue.d.ts +6 -0
- package/dist/types/src/type.d.ts +183 -0
- package/dist/types/src/utils/compose.d.ts +5 -0
- package/dist/types/src/utils/config.d.ts +4 -0
- package/dist/types/src/utils/editor.d.ts +45 -0
- package/dist/types/src/utils/index.d.ts +4 -0
- package/dist/types/src/utils/logger.d.ts +5 -0
- package/dist/types/src/utils/props.d.ts +49 -0
- package/dist/types/src/utils/undo-redo.d.ts +12 -0
- package/dist/types/src/vite-env.d.ts +1 -0
- package/package.json +57 -0
- package/src/Editor.vue +234 -0
- package/src/components/Icon.vue +29 -0
- package/src/components/ToolButton.vue +188 -0
- package/src/fields/Code.vue +35 -0
- package/src/fields/CodeLink.vue +81 -0
- package/src/fields/UISelect.vue +100 -0
- package/src/index.ts +63 -0
- package/src/layouts/AddPageBox.vue +41 -0
- package/src/layouts/CodeEditor.vue +188 -0
- package/src/layouts/Framework.vue +73 -0
- package/src/layouts/NavMenu.vue +37 -0
- package/src/layouts/PropsPanel.vue +81 -0
- package/src/layouts/Resizer.vue +61 -0
- package/src/layouts/sidebar/ComponentListPanel.vue +69 -0
- package/src/layouts/sidebar/LayerMenu.vue +117 -0
- package/src/layouts/sidebar/LayerPanel.vue +209 -0
- package/src/layouts/sidebar/Sidebar.vue +86 -0
- package/src/layouts/workspace/PageBar.vue +83 -0
- package/src/layouts/workspace/Stage.vue +221 -0
- package/src/layouts/workspace/ViewerMenu.vue +110 -0
- package/src/layouts/workspace/Workspace.vue +98 -0
- package/src/services/BaseService.ts +138 -0
- package/src/services/componentList.ts +48 -0
- package/src/services/editor.ts +521 -0
- package/src/services/events.ts +82 -0
- package/src/services/history.ts +124 -0
- package/src/services/props.ts +110 -0
- package/src/services/ui.ts +101 -0
- package/src/shims-vue.d.ts +6 -0
- package/src/theme/code-editor.scss +7 -0
- package/src/theme/common/var.scss +13 -0
- package/src/theme/component-list-panel.scss +102 -0
- package/src/theme/content-menu.scss +39 -0
- package/src/theme/framework.scss +72 -0
- package/src/theme/index.scss +13 -0
- package/src/theme/layer-panel.scss +68 -0
- package/src/theme/nav-menu.scss +69 -0
- package/src/theme/page-bar.scss +31 -0
- package/src/theme/props-panel.scss +17 -0
- package/src/theme/resizer.scss +51 -0
- package/src/theme/ruler.scss +38 -0
- package/src/theme/sidebar.scss +97 -0
- package/src/theme/stage.scss +22 -0
- package/src/theme/workspace.scss +5 -0
- package/src/type.ts +236 -0
- package/src/utils/compose.ts +33 -0
- package/src/utils/config.ts +29 -0
- package/src/utils/editor.ts +244 -0
- package/src/utils/index.ts +22 -0
- package/src/utils/logger.ts +47 -0
- package/src/utils/props.ts +218 -0
- package/src/utils/undo-redo.ts +76 -0
- package/src/vite-env.d.ts +1 -0
- package/tsconfig.json +9 -0
- package/vite.config.ts +30 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { DefineComponent, Ref, ComputedRef, ComponentOptionsMixin, VNodeProps, AllowedComponentProps, ComponentCustomProps, ExtractPropTypes, PropType } from 'vue';
|
|
2
|
+
import { SideBarData, SideComponent } from '../../type';
|
|
3
|
+
declare const _default: DefineComponent<{
|
|
4
|
+
data: {
|
|
5
|
+
type: PropType<SideBarData>;
|
|
6
|
+
default: () => {
|
|
7
|
+
type: string;
|
|
8
|
+
status: string;
|
|
9
|
+
items: string[];
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
}, {
|
|
13
|
+
activeTabName: Ref<string>;
|
|
14
|
+
items: ComputedRef<SideComponent[] | Record<string, any>[]>;
|
|
15
|
+
}, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, Record<string, any>, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes<{
|
|
16
|
+
data: {
|
|
17
|
+
type: PropType<SideBarData>;
|
|
18
|
+
default: () => {
|
|
19
|
+
type: string;
|
|
20
|
+
status: string;
|
|
21
|
+
items: string[];
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
}>>, {
|
|
25
|
+
data: SideBarData;
|
|
26
|
+
}>;
|
|
27
|
+
export default _default;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DefineComponent, ComputedRef, ComponentOptionsMixin, EmitsOptions, VNodeProps, AllowedComponentProps, ComponentCustomProps, ExtractPropTypes } from 'vue';
|
|
2
|
+
import type { MNode, MPage } from '@tmagic/schema';
|
|
3
|
+
declare const _default: DefineComponent<{}, {
|
|
4
|
+
root: ComputedRef<MNode | undefined>;
|
|
5
|
+
page: ComputedRef<MNode | undefined>;
|
|
6
|
+
switchPage(page: MPage): void;
|
|
7
|
+
addPage(): void;
|
|
8
|
+
copy(node: MPage): void;
|
|
9
|
+
remove(node: MPage): void;
|
|
10
|
+
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, EmitsOptions, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes<{}>>, {}>;
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import type { DefineComponent, Ref, ComponentInternalInstance, ExtractPropTypes, VNodeProps, AllowedComponentProps, ComponentCustomProps, Slot, ComponentPublicInstance, ComponentOptionsBase, ComputedRef, ComponentOptionsMixin, EmitsOptions, DebuggerEvent, nextTick, WatchOptions, WatchStopHandle, ShallowUnwrapRef, ComponentCustomProperties, PropType } from 'vue';
|
|
2
|
+
import type { MApp, MNode, MPage } from '@tmagic/schema';
|
|
3
|
+
import type { MoveableOptions } from '@tmagic/stage';
|
|
4
|
+
import StageCore from '@tmagic/stage';
|
|
5
|
+
declare const _default: DefineComponent<{
|
|
6
|
+
render: {
|
|
7
|
+
type: PropType<() => HTMLDivElement>;
|
|
8
|
+
};
|
|
9
|
+
runtimeUrl: StringConstructor;
|
|
10
|
+
root: {
|
|
11
|
+
type: PropType<MApp>;
|
|
12
|
+
};
|
|
13
|
+
page: {
|
|
14
|
+
type: PropType<MPage>;
|
|
15
|
+
};
|
|
16
|
+
node: {
|
|
17
|
+
type: PropType<MNode>;
|
|
18
|
+
};
|
|
19
|
+
uiSelectMode: {
|
|
20
|
+
type: BooleanConstructor;
|
|
21
|
+
};
|
|
22
|
+
zoom: {
|
|
23
|
+
type: NumberConstructor;
|
|
24
|
+
};
|
|
25
|
+
canSelect: {
|
|
26
|
+
type: PropType<(el: HTMLElement) => boolean | Promise<boolean>>;
|
|
27
|
+
default: (el: HTMLElement) => boolean;
|
|
28
|
+
};
|
|
29
|
+
moveableOptions: {
|
|
30
|
+
type: PropType<MoveableOptions | ((core?: StageCore | undefined) => MoveableOptions)>;
|
|
31
|
+
default: () => (core?: StageCore | undefined) => {
|
|
32
|
+
container: HTMLElement | null | undefined;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
}, {
|
|
36
|
+
stageContainer: Ref<HTMLDivElement | undefined>;
|
|
37
|
+
menu: Ref<({
|
|
38
|
+
$: ComponentInternalInstance;
|
|
39
|
+
$data: {};
|
|
40
|
+
$props: Partial<{}> & Omit<Readonly<ExtractPropTypes<{}>> & VNodeProps & AllowedComponentProps & ComponentCustomProps, never>;
|
|
41
|
+
$attrs: {
|
|
42
|
+
[x: string]: unknown;
|
|
43
|
+
};
|
|
44
|
+
$refs: {
|
|
45
|
+
[x: string]: unknown;
|
|
46
|
+
};
|
|
47
|
+
$slots: Readonly<{
|
|
48
|
+
[name: string]: Slot | undefined;
|
|
49
|
+
}>;
|
|
50
|
+
$root: ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null;
|
|
51
|
+
$parent: ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null;
|
|
52
|
+
$emit: ((event: string, ...args: any[]) => void) | ((event: string, ...args: any[]) => void);
|
|
53
|
+
$el: any;
|
|
54
|
+
$options: ComponentOptionsBase<Readonly<ExtractPropTypes<{}>>, {
|
|
55
|
+
menu: Ref<HTMLDivElement | undefined>;
|
|
56
|
+
canPaste: Ref<boolean>;
|
|
57
|
+
canDelete: ComputedRef<boolean>;
|
|
58
|
+
canMoveZPos: ComputedRef<boolean>;
|
|
59
|
+
canCenter: Ref<boolean>;
|
|
60
|
+
center(): void;
|
|
61
|
+
copy(): void;
|
|
62
|
+
paste(): void;
|
|
63
|
+
remove(): void;
|
|
64
|
+
top(): void;
|
|
65
|
+
bottom(): void;
|
|
66
|
+
topItem(): void;
|
|
67
|
+
bottomItem(): void;
|
|
68
|
+
clearGuides(): void;
|
|
69
|
+
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, EmitsOptions, string, {}> & {
|
|
70
|
+
beforeCreate?: ((() => void) | (() => void)[]) | undefined;
|
|
71
|
+
created?: ((() => void) | (() => void)[]) | undefined;
|
|
72
|
+
beforeMount?: ((() => void) | (() => void)[]) | undefined;
|
|
73
|
+
mounted?: ((() => void) | (() => void)[]) | undefined;
|
|
74
|
+
beforeUpdate?: ((() => void) | (() => void)[]) | undefined;
|
|
75
|
+
updated?: ((() => void) | (() => void)[]) | undefined;
|
|
76
|
+
activated?: ((() => void) | (() => void)[]) | undefined;
|
|
77
|
+
deactivated?: ((() => void) | (() => void)[]) | undefined;
|
|
78
|
+
beforeDestroy?: ((() => void) | (() => void)[]) | undefined;
|
|
79
|
+
beforeUnmount?: ((() => void) | (() => void)[]) | undefined;
|
|
80
|
+
destroyed?: ((() => void) | (() => void)[]) | undefined;
|
|
81
|
+
unmounted?: ((() => void) | (() => void)[]) | undefined;
|
|
82
|
+
renderTracked?: (((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[]) | undefined;
|
|
83
|
+
renderTriggered?: (((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[]) | undefined;
|
|
84
|
+
errorCaptured?: (((err: unknown, instance: ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null, info: string) => boolean | void) | ((err: unknown, instance: ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null, info: string) => boolean | void)[]) | undefined;
|
|
85
|
+
};
|
|
86
|
+
$forceUpdate: () => void;
|
|
87
|
+
$nextTick: typeof nextTick;
|
|
88
|
+
$watch(source: string | Function, cb: Function, options?: WatchOptions<boolean> | undefined): WatchStopHandle;
|
|
89
|
+
} & Readonly<ExtractPropTypes<{}>> & ShallowUnwrapRef<{
|
|
90
|
+
menu: Ref<HTMLDivElement | undefined>;
|
|
91
|
+
canPaste: Ref<boolean>;
|
|
92
|
+
canDelete: ComputedRef<boolean>;
|
|
93
|
+
canMoveZPos: ComputedRef<boolean>;
|
|
94
|
+
canCenter: Ref<boolean>;
|
|
95
|
+
center(): void;
|
|
96
|
+
copy(): void;
|
|
97
|
+
paste(): void;
|
|
98
|
+
remove(): void;
|
|
99
|
+
top(): void;
|
|
100
|
+
bottom(): void;
|
|
101
|
+
topItem(): void;
|
|
102
|
+
bottomItem(): void;
|
|
103
|
+
clearGuides(): void;
|
|
104
|
+
}> & {} & {} & ComponentCustomProperties) | undefined>;
|
|
105
|
+
menuStyle: Ref<{
|
|
106
|
+
display: string;
|
|
107
|
+
left: string;
|
|
108
|
+
top: string;
|
|
109
|
+
}>;
|
|
110
|
+
contextmenuHandler(e: MouseEvent): void;
|
|
111
|
+
stageStyle: ComputedRef<{
|
|
112
|
+
transform: string;
|
|
113
|
+
}>;
|
|
114
|
+
}, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("select" | "update" | "sort")[], "sort" | "select" | "update", VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes<{
|
|
115
|
+
render: {
|
|
116
|
+
type: PropType<() => HTMLDivElement>;
|
|
117
|
+
};
|
|
118
|
+
runtimeUrl: StringConstructor;
|
|
119
|
+
root: {
|
|
120
|
+
type: PropType<MApp>;
|
|
121
|
+
};
|
|
122
|
+
page: {
|
|
123
|
+
type: PropType<MPage>;
|
|
124
|
+
};
|
|
125
|
+
node: {
|
|
126
|
+
type: PropType<MNode>;
|
|
127
|
+
};
|
|
128
|
+
uiSelectMode: {
|
|
129
|
+
type: BooleanConstructor;
|
|
130
|
+
};
|
|
131
|
+
zoom: {
|
|
132
|
+
type: NumberConstructor;
|
|
133
|
+
};
|
|
134
|
+
canSelect: {
|
|
135
|
+
type: PropType<(el: HTMLElement) => boolean | Promise<boolean>>;
|
|
136
|
+
default: (el: HTMLElement) => boolean;
|
|
137
|
+
};
|
|
138
|
+
moveableOptions: {
|
|
139
|
+
type: PropType<MoveableOptions | ((core?: StageCore | undefined) => MoveableOptions)>;
|
|
140
|
+
default: () => (core?: StageCore | undefined) => {
|
|
141
|
+
container: HTMLElement | null | undefined;
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
}>> & {
|
|
145
|
+
onSelect?: ((...args: any[]) => any) | undefined;
|
|
146
|
+
onUpdate?: ((...args: any[]) => any) | undefined;
|
|
147
|
+
onSort?: ((...args: any[]) => any) | undefined;
|
|
148
|
+
}, {
|
|
149
|
+
uiSelectMode: boolean;
|
|
150
|
+
canSelect: (el: HTMLElement) => boolean | Promise<boolean>;
|
|
151
|
+
moveableOptions: MoveableOptions | ((core?: StageCore | undefined) => MoveableOptions);
|
|
152
|
+
}>;
|
|
153
|
+
export default _default;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { DefineComponent, Ref, ComputedRef, ComponentOptionsMixin, EmitsOptions, VNodeProps, AllowedComponentProps, ComponentCustomProps, ExtractPropTypes } from 'vue';
|
|
2
|
+
declare const _default: DefineComponent<{}, {
|
|
3
|
+
menu: Ref<HTMLDivElement | undefined>;
|
|
4
|
+
canPaste: Ref<boolean>;
|
|
5
|
+
canDelete: ComputedRef<boolean>;
|
|
6
|
+
canMoveZPos: ComputedRef<boolean>;
|
|
7
|
+
canCenter: Ref<boolean>;
|
|
8
|
+
center(): void;
|
|
9
|
+
copy(): void;
|
|
10
|
+
paste(): void;
|
|
11
|
+
remove(): void;
|
|
12
|
+
top(): void;
|
|
13
|
+
bottom(): void;
|
|
14
|
+
topItem(): void;
|
|
15
|
+
bottomItem(): void;
|
|
16
|
+
clearGuides(): void;
|
|
17
|
+
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, EmitsOptions, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes<{}>>, {}>;
|
|
18
|
+
export default _default;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { DefineComponent, ComputedRef, ComponentOptionsMixin, VNodeProps, AllowedComponentProps, ComponentCustomProps, ExtractPropTypes, PropType } from 'vue';
|
|
2
|
+
import type { MApp, MComponent, MContainer, MNode, MPage } from '@tmagic/schema';
|
|
3
|
+
import type { MoveableOptions, SortEventData } from '@tmagic/stage';
|
|
4
|
+
import StageCore from '@tmagic/stage';
|
|
5
|
+
declare const _default: DefineComponent<{
|
|
6
|
+
runtimeUrl: StringConstructor;
|
|
7
|
+
render: {
|
|
8
|
+
type: PropType<() => HTMLDivElement>;
|
|
9
|
+
};
|
|
10
|
+
moveableOptions: {
|
|
11
|
+
type: PropType<MoveableOptions | ((core?: StageCore | undefined) => MoveableOptions)>;
|
|
12
|
+
};
|
|
13
|
+
canSelect: {
|
|
14
|
+
type: PropType<(el: HTMLElement) => boolean | Promise<boolean>>;
|
|
15
|
+
};
|
|
16
|
+
}, {
|
|
17
|
+
uiSelectMode: ComputedRef<boolean | undefined>;
|
|
18
|
+
root: ComputedRef<MApp | undefined>;
|
|
19
|
+
page: ComputedRef<MPage | undefined>;
|
|
20
|
+
zoom: ComputedRef<number | undefined>;
|
|
21
|
+
node: ComputedRef<MNode | undefined>;
|
|
22
|
+
selectHandler(el: HTMLElement): void;
|
|
23
|
+
updateNodeHandler(node: MComponent | MContainer | MPage): void;
|
|
24
|
+
sortNodeHandler(ev: SortEventData): void;
|
|
25
|
+
}, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, Record<string, any>, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes<{
|
|
26
|
+
runtimeUrl: StringConstructor;
|
|
27
|
+
render: {
|
|
28
|
+
type: PropType<() => HTMLDivElement>;
|
|
29
|
+
};
|
|
30
|
+
moveableOptions: {
|
|
31
|
+
type: PropType<MoveableOptions | ((core?: StageCore | undefined) => MoveableOptions)>;
|
|
32
|
+
};
|
|
33
|
+
canSelect: {
|
|
34
|
+
type: PropType<(el: HTMLElement) => boolean | Promise<boolean>>;
|
|
35
|
+
};
|
|
36
|
+
}>>, {}>;
|
|
37
|
+
export default _default;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
3
|
+
/**
|
|
4
|
+
* 提供两种方式对Class进行扩展
|
|
5
|
+
* 方法1:
|
|
6
|
+
* 给Class中的每个方法都添加before after两个钩子
|
|
7
|
+
* 给Class添加一个usePlugin方法,use方法可以传入一个包含before或者after方法的对象
|
|
8
|
+
*
|
|
9
|
+
* 例如:
|
|
10
|
+
* Class EditorService extends BaseService {
|
|
11
|
+
* constructor() {
|
|
12
|
+
* super(['add']);
|
|
13
|
+
* }
|
|
14
|
+
* add(value) { return result; }
|
|
15
|
+
* };
|
|
16
|
+
*
|
|
17
|
+
* const editorService = new EditorService();
|
|
18
|
+
*
|
|
19
|
+
* editorService.usePlugin({
|
|
20
|
+
* beforeAdd(value) { return [value] },
|
|
21
|
+
* afterAdd(value, result) {},
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* editorService.add(); 最终会变成 () => {
|
|
25
|
+
* editorService.beforeAdd();
|
|
26
|
+
* editorService.add();
|
|
27
|
+
* editorService.afterAdd();
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* 调用时的参数会透传到before方法的参数中, 然后before的return 会作为原方法的参数和after的参数,after最后一个参数则是原方法的return值;
|
|
31
|
+
* 如需终止后续方法调用可以return new Error();
|
|
32
|
+
*
|
|
33
|
+
* 方法2:
|
|
34
|
+
* 给Class中的每个方法都添加中间件
|
|
35
|
+
* 给Class添加一个use方法,use方法可以传入一个包含源对象方法名作为key值的对象
|
|
36
|
+
*
|
|
37
|
+
* 例如:
|
|
38
|
+
* Class EditorService extends BaseService {
|
|
39
|
+
* constructor() {
|
|
40
|
+
* super(['add']);
|
|
41
|
+
* }
|
|
42
|
+
* add(value) { return result; }
|
|
43
|
+
* };
|
|
44
|
+
*
|
|
45
|
+
* const editorService = new EditorService();
|
|
46
|
+
* editorService.use({
|
|
47
|
+
* add(value, next) { console.log(value); next() },
|
|
48
|
+
* });
|
|
49
|
+
*/
|
|
50
|
+
export default class extends EventEmitter {
|
|
51
|
+
private pluginOptionsList;
|
|
52
|
+
private middleware;
|
|
53
|
+
constructor(methods: string[]);
|
|
54
|
+
use(options: Record<string, Function>): void;
|
|
55
|
+
usePlugin(options: Record<string, Function>): void;
|
|
56
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { Id, MContainer, MNode } from '@tmagic/schema';
|
|
2
|
+
import { StepValue } from '../services/history';
|
|
3
|
+
import type { AddMNode, EditorNodeInfo, StoreState } from '../type';
|
|
4
|
+
import { LayerOffset, Layout } from '../type';
|
|
5
|
+
import BaseService from './BaseService';
|
|
6
|
+
declare class Editor extends BaseService {
|
|
7
|
+
private isHistoryStateChange;
|
|
8
|
+
private state;
|
|
9
|
+
constructor();
|
|
10
|
+
/**
|
|
11
|
+
* 设置当前指点节点配置
|
|
12
|
+
* @param name 'root' | 'page' | 'parent' | 'node'
|
|
13
|
+
* @param value MNode
|
|
14
|
+
* @returns MNode
|
|
15
|
+
*/
|
|
16
|
+
set<T = MNode>(name: keyof StoreState, value: T): void;
|
|
17
|
+
/**
|
|
18
|
+
* 获取当前指点节点配置
|
|
19
|
+
* @param name 'root' | 'page' | 'parent' | 'node'
|
|
20
|
+
* @returns MNode
|
|
21
|
+
*/
|
|
22
|
+
get<T = MNode>(name: keyof StoreState): T;
|
|
23
|
+
/**
|
|
24
|
+
* 根据id获取组件、组件的父组件以及组件所属的页面节点
|
|
25
|
+
* @param {number | string} id 组件id
|
|
26
|
+
* @returns {EditorNodeInfo}
|
|
27
|
+
*/
|
|
28
|
+
getNodeInfo(id: Id): EditorNodeInfo;
|
|
29
|
+
/**
|
|
30
|
+
* 根据ID获取指点节点配置
|
|
31
|
+
* @param id 组件ID
|
|
32
|
+
* @returns 组件节点配置
|
|
33
|
+
*/
|
|
34
|
+
getNodeById(id: Id): MNode | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* 根据ID获取指点节点的父节点配置
|
|
37
|
+
* @param id 组件ID
|
|
38
|
+
* @returns 指点组件的父节点配置
|
|
39
|
+
*/
|
|
40
|
+
getParentById(id: Id): MContainer | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* 只有容器拥有布局
|
|
43
|
+
*/
|
|
44
|
+
getLayout(node: MNode): Promise<Layout>;
|
|
45
|
+
/**
|
|
46
|
+
* 选中指点节点(将指点节点设置成当前选中状态)
|
|
47
|
+
* @param config 指点节点配置或者ID
|
|
48
|
+
* @returns 当前选中的节点配置
|
|
49
|
+
*/
|
|
50
|
+
select(config: MNode | Id): Promise<MNode>;
|
|
51
|
+
/**
|
|
52
|
+
* 向指点容器添加组件节点
|
|
53
|
+
* @param addConfig 将要添加的组件节点配置
|
|
54
|
+
* @param parent 要添加到的容器组件节点配置,如果不设置,默认为当前选中的组件的父节点
|
|
55
|
+
* @returns 添加后的节点
|
|
56
|
+
*/
|
|
57
|
+
add({ type, ...config }: AddMNode, parent?: MContainer | null): Promise<MNode>;
|
|
58
|
+
/**
|
|
59
|
+
* 删除组件
|
|
60
|
+
* @param {Object} node
|
|
61
|
+
* @return {Object} 删除的组件配置
|
|
62
|
+
*/
|
|
63
|
+
remove(node: MNode): Promise<MNode | void>;
|
|
64
|
+
/**
|
|
65
|
+
* 更新节点
|
|
66
|
+
* @param config 新的节点配置,配置中需要有id信息
|
|
67
|
+
* @returns 更新后的节点配置
|
|
68
|
+
*/
|
|
69
|
+
update(config: MNode): Promise<MNode>;
|
|
70
|
+
/**
|
|
71
|
+
* 将id为id1的组件移动到id为id2的组件位置上,例如:[1,2,3,4] -> sort(1,3) -> [2,1,3,4]
|
|
72
|
+
* @param id1 组件ID
|
|
73
|
+
* @param id2 组件ID
|
|
74
|
+
* @returns void
|
|
75
|
+
*/
|
|
76
|
+
sort(id1: Id, id2: Id): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* 将组将节点配置转化成string,然后存储到localStorage中
|
|
79
|
+
* @param config 组件节点配置
|
|
80
|
+
* @returns 组件节点配置
|
|
81
|
+
*/
|
|
82
|
+
copy(config: MNode): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* 从localStorage中获取节点,然后添加到当前容器中
|
|
85
|
+
* @param position 如果设置,指定组件位置
|
|
86
|
+
* @returns 添加后的组件节点配置
|
|
87
|
+
*/
|
|
88
|
+
paste(position?: {
|
|
89
|
+
left?: number;
|
|
90
|
+
top?: number;
|
|
91
|
+
}): Promise<MNode | void>;
|
|
92
|
+
/**
|
|
93
|
+
* 将指点节点设置居中
|
|
94
|
+
* @param config 组件节点配置
|
|
95
|
+
* @returns 当前组件节点配置
|
|
96
|
+
*/
|
|
97
|
+
alignCenter(config: MNode): Promise<MNode | void>;
|
|
98
|
+
/**
|
|
99
|
+
* 移动当前选中节点位置
|
|
100
|
+
* @param offset 偏移量
|
|
101
|
+
*/
|
|
102
|
+
moveLayer(offset: number | LayerOffset): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* 撤销当前操作
|
|
105
|
+
* @returns 上一次数据
|
|
106
|
+
*/
|
|
107
|
+
undo(): Promise<StepValue | null>;
|
|
108
|
+
/**
|
|
109
|
+
* 恢复到下一步
|
|
110
|
+
* @returns 下一步数据
|
|
111
|
+
*/
|
|
112
|
+
redo(): Promise<StepValue | null>;
|
|
113
|
+
destroy(): void;
|
|
114
|
+
resetModifiedNodeId(): void;
|
|
115
|
+
private addModifiedNodeId;
|
|
116
|
+
private pushHistoryState;
|
|
117
|
+
private changeHistoryState;
|
|
118
|
+
private toggleFixedPosition;
|
|
119
|
+
}
|
|
120
|
+
export declare type EditorService = Editor;
|
|
121
|
+
declare const _default: Editor;
|
|
122
|
+
export default _default;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EventOption } from '@tmagic/core';
|
|
2
|
+
import type { ComponentGroup } from '../type';
|
|
3
|
+
import BaseService from './BaseService';
|
|
4
|
+
declare class Events extends BaseService {
|
|
5
|
+
constructor();
|
|
6
|
+
init(componentGroupList: ComponentGroup[]): void;
|
|
7
|
+
setEvents(events: Record<string, EventOption[]>): void;
|
|
8
|
+
setEvent(type: string, events: EventOption[]): void;
|
|
9
|
+
getEvent(type: string): EventOption[];
|
|
10
|
+
setMethods(methods: Record<string, EventOption[]>): void;
|
|
11
|
+
setMethod(type: string, method: EventOption[]): void;
|
|
12
|
+
getMethod(type: string): EventOption[];
|
|
13
|
+
}
|
|
14
|
+
export declare type EventsService = Events;
|
|
15
|
+
declare const _default: Events;
|
|
16
|
+
export default _default;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Id, MPage } from '@tmagic/schema';
|
|
2
|
+
import { UndoRedo } from '../utils/undo-redo';
|
|
3
|
+
import BaseService from './BaseService';
|
|
4
|
+
export interface StepValue {
|
|
5
|
+
data: MPage;
|
|
6
|
+
modifiedNodeIds: Map<Id, Id>;
|
|
7
|
+
nodeId: Id;
|
|
8
|
+
}
|
|
9
|
+
export interface HistoryState {
|
|
10
|
+
pageId?: Id;
|
|
11
|
+
pageSteps: Record<Id, UndoRedo<StepValue>>;
|
|
12
|
+
canRedo: boolean;
|
|
13
|
+
canUndo: boolean;
|
|
14
|
+
}
|
|
15
|
+
declare class History extends BaseService {
|
|
16
|
+
state: {
|
|
17
|
+
pageId?: Id | undefined;
|
|
18
|
+
pageSteps: {
|
|
19
|
+
[x: string]: {
|
|
20
|
+
pushElement: (element: StepValue) => void;
|
|
21
|
+
canUndo: () => boolean;
|
|
22
|
+
undo: () => StepValue | null;
|
|
23
|
+
canRedo: () => boolean;
|
|
24
|
+
redo: () => StepValue | null;
|
|
25
|
+
getCurrentElement: () => StepValue | null;
|
|
26
|
+
};
|
|
27
|
+
[x: number]: {
|
|
28
|
+
pushElement: (element: StepValue) => void;
|
|
29
|
+
canUndo: () => boolean;
|
|
30
|
+
undo: () => StepValue | null;
|
|
31
|
+
canRedo: () => boolean;
|
|
32
|
+
redo: () => StepValue | null;
|
|
33
|
+
getCurrentElement: () => StepValue | null;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
canRedo: boolean;
|
|
37
|
+
canUndo: boolean;
|
|
38
|
+
};
|
|
39
|
+
constructor();
|
|
40
|
+
changePage(page: MPage): void;
|
|
41
|
+
empty(): void;
|
|
42
|
+
push(state: StepValue): StepValue | null;
|
|
43
|
+
undo(): StepValue | null;
|
|
44
|
+
redo(): StepValue | null;
|
|
45
|
+
destroy(): void;
|
|
46
|
+
private getUndoRedo;
|
|
47
|
+
private setCanUndoRedo;
|
|
48
|
+
}
|
|
49
|
+
export declare type HistoryService = History;
|
|
50
|
+
declare const _default: History;
|
|
51
|
+
export default _default;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { FormConfig } from '@tmagic/form';
|
|
2
|
+
import type { MComponent, MNode } from '@tmagic/schema';
|
|
3
|
+
import BaseService from './BaseService';
|
|
4
|
+
declare class Props extends BaseService {
|
|
5
|
+
private state;
|
|
6
|
+
constructor();
|
|
7
|
+
setPropsConfigs(configs: Record<string, FormConfig>): void;
|
|
8
|
+
/**
|
|
9
|
+
* 为指定类型组件设置组件属性表单配置
|
|
10
|
+
* @param type 组件类型
|
|
11
|
+
* @param config 组件属性表单配置
|
|
12
|
+
*/
|
|
13
|
+
setPropsConfig(type: string, config: FormConfig): void;
|
|
14
|
+
/**
|
|
15
|
+
* 获取指点类型的组件属性表单配置
|
|
16
|
+
* @param type 组件类型
|
|
17
|
+
* @returns 组件属性表单配置
|
|
18
|
+
*/
|
|
19
|
+
getPropsConfig(type: string): Promise<FormConfig>;
|
|
20
|
+
setPropsValues(values: Record<string, MNode>): void;
|
|
21
|
+
/**
|
|
22
|
+
* 为指点类型组件设置组件初始值
|
|
23
|
+
* @param type 组件类型
|
|
24
|
+
* @param value 组件初始值
|
|
25
|
+
*/
|
|
26
|
+
setPropsValue(type: string, value: MNode): void;
|
|
27
|
+
/**
|
|
28
|
+
* 获取指定类型的组件初始值
|
|
29
|
+
* @param type 组件类型
|
|
30
|
+
* @returns 组件初始值
|
|
31
|
+
*/
|
|
32
|
+
getPropsValue(type: string): Promise<MComponent>;
|
|
33
|
+
}
|
|
34
|
+
export declare type PropsService = Props;
|
|
35
|
+
declare const _default: Props;
|
|
36
|
+
export default _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { UiState } from '../type';
|
|
2
|
+
import BaseService from './BaseService';
|
|
3
|
+
declare const state: {
|
|
4
|
+
uiSelectMode: boolean;
|
|
5
|
+
showSrc: boolean;
|
|
6
|
+
zoom: number;
|
|
7
|
+
stageStyle: {
|
|
8
|
+
[x: string]: string | number;
|
|
9
|
+
};
|
|
10
|
+
columnWidth: {
|
|
11
|
+
left: number;
|
|
12
|
+
center: number;
|
|
13
|
+
right: number;
|
|
14
|
+
};
|
|
15
|
+
showGuides: boolean;
|
|
16
|
+
showRule: boolean;
|
|
17
|
+
};
|
|
18
|
+
declare class Ui extends BaseService {
|
|
19
|
+
constructor();
|
|
20
|
+
set<T = any>(name: keyof UiState, value: T): void;
|
|
21
|
+
get<T>(name: keyof typeof state): T;
|
|
22
|
+
private setColumnWidth;
|
|
23
|
+
}
|
|
24
|
+
export declare type UiService = Ui;
|
|
25
|
+
declare const _default: Ui;
|
|
26
|
+
export default _default;
|