@tmagic/editor 1.3.0-beta.6 → 1.3.0-beta.7

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.
Files changed (34) hide show
  1. package/dist/style.css +57 -56
  2. package/dist/tmagic-editor.js +487 -390
  3. package/dist/tmagic-editor.js.map +1 -1
  4. package/dist/tmagic-editor.umd.cjs +505 -408
  5. package/dist/tmagic-editor.umd.cjs.map +1 -1
  6. package/package.json +10 -10
  7. package/src/Editor.vue +8 -0
  8. package/src/components/Tree.vue +66 -0
  9. package/src/components/TreeNode.vue +142 -0
  10. package/src/layouts/sidebar/Sidebar.vue +13 -0
  11. package/src/layouts/sidebar/data-source/DataSourceList.vue +4 -2
  12. package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +8 -2
  13. package/src/layouts/sidebar/layer/LayerPanel.vue +40 -31
  14. package/src/layouts/sidebar/layer/use-click.ts +105 -0
  15. package/src/layouts/sidebar/layer/use-drag.ts +1 -1
  16. package/src/layouts/sidebar/layer/use-filter.ts +1 -12
  17. package/src/layouts/sidebar/layer/use-keybinding.ts +6 -2
  18. package/src/layouts/sidebar/layer/use-node-status.ts +4 -2
  19. package/src/theme/layer-panel.scss +2 -74
  20. package/src/theme/theme.scss +1 -0
  21. package/src/theme/tree.scss +72 -0
  22. package/src/type.ts +16 -1
  23. package/src/utils/tree.ts +15 -0
  24. package/types/{layouts/sidebar/layer/LayerNode.vue.d.ts → components/Tree.vue.d.ts} +19 -17
  25. package/types/components/TreeNode.vue.d.ts +47 -0
  26. package/types/layouts/sidebar/data-source/DataSourceList.vue.d.ts +2 -6
  27. package/types/layouts/sidebar/data-source/DataSourceListPanel.vue.d.ts +7 -1
  28. package/types/layouts/sidebar/layer/LayerPanel.vue.d.ts +1 -1
  29. package/types/layouts/sidebar/layer/use-click.d.ts +106 -0
  30. package/types/layouts/sidebar/layer/use-filter.d.ts +0 -1
  31. package/types/layouts/sidebar/layer/use-keybinding.d.ts +2 -1
  32. package/types/type.d.ts +20 -1
  33. package/types/utils/tree.d.ts +3 -0
  34. package/src/layouts/sidebar/layer/LayerNode.vue +0 -208
@@ -1,79 +1,7 @@
1
- .magic-editor-layer-panel {
2
- $--node-height: 22px;
3
-
1
+ .m-editor-layer-panel {
4
2
  background: $--sidebar-content-background-color;
5
3
 
6
- .magic-editor-layer-tree {
4
+ .m-editor-tree {
7
5
  padding-top: 48px;
8
- background-color: $--sidebar-content-background-color;
9
- color: $--font-color;
10
- font-size: 13px;
11
-
12
- .magic-editor-layer-node {
13
- cursor: pointer;
14
- white-space: nowrap;
15
-
16
- .layer-node {
17
- display: flex;
18
- align-items: center;
19
-
20
- &:hover {
21
- background-color: $--hover-color;
22
- color: $--font-color;
23
- }
24
-
25
- &.selected {
26
- background-color: $--theme-color;
27
- color: $--hover-color;
28
- }
29
-
30
- &.drag-inner {
31
- .layer-node-content {
32
- background-color: rgba($color: $--theme-color, $alpha: 0.5);
33
- color: $--hover-color;
34
- }
35
- }
36
-
37
- &.drag-before {
38
- .layer-node-content {
39
- border-top-color: rgba($color: $--theme-color, $alpha: 0.5);
40
- }
41
- }
42
-
43
- &.drag-after {
44
- .layer-node-content {
45
- border-bottom-color: rgba($color: $--theme-color, $alpha: 0.5);
46
- }
47
- }
48
-
49
- .expand-icon {
50
- padding: 4px;
51
- box-sizing: content-box;
52
- font-size: 14px;
53
- }
54
-
55
- .layer-node-content {
56
- display: flex;
57
- flex: 1;
58
- justify-content: space-between;
59
- height: $--node-height;
60
- border-top: 2px solid transparent;
61
- border-bottom: 2px solid transparent;
62
- .layer-node-label {
63
- line-height: $--node-height;
64
- flex: 1;
65
- width: 100px;
66
- overflow: hidden;
67
- text-overflow: ellipsis;
68
- }
69
- }
70
-
71
- .layer-node-tool {
72
- margin-right: 15px;
73
- display: flex;
74
- align-items: center;
75
- }
76
- }
77
- }
78
6
  }
79
7
  }
@@ -22,3 +22,4 @@
22
22
  @import "./data-source-methods.scss";
23
23
  @import "./data-source-input.scss";
24
24
  @import "./key-value.scss";
25
+ @import "./tree.scss";
@@ -0,0 +1,72 @@
1
+ .m-editor-tree {
2
+ $--node-height: 22px;
3
+ color: $--font-color;
4
+ font-size: 13px;
5
+
6
+ .m-editor-tree-node {
7
+ cursor: pointer;
8
+ white-space: nowrap;
9
+
10
+ .tree-node {
11
+ display: flex;
12
+ align-items: center;
13
+
14
+ &:hover {
15
+ background-color: $--hover-color;
16
+ color: $--font-color;
17
+ }
18
+
19
+ &.selected {
20
+ background-color: $--theme-color;
21
+ color: $--hover-color;
22
+ }
23
+
24
+ &.drag-inner {
25
+ .tree-node-content {
26
+ background-color: rgba($color: $--theme-color, $alpha: 0.5);
27
+ color: $--hover-color;
28
+ }
29
+ }
30
+
31
+ &.drag-before {
32
+ .tree-node-content {
33
+ border-top-color: rgba($color: $--theme-color, $alpha: 0.5);
34
+ }
35
+ }
36
+
37
+ &.drag-after {
38
+ .tree-node-content {
39
+ border-bottom-color: rgba($color: $--theme-color, $alpha: 0.5);
40
+ }
41
+ }
42
+
43
+ .expand-icon {
44
+ padding: 4px;
45
+ box-sizing: content-box;
46
+ font-size: 14px;
47
+ }
48
+
49
+ .tree-node-content {
50
+ display: flex;
51
+ flex: 1;
52
+ justify-content: space-between;
53
+ height: $--node-height;
54
+ border-top: 2px solid transparent;
55
+ border-bottom: 2px solid transparent;
56
+ .tree-node-label {
57
+ line-height: $--node-height;
58
+ flex: 1;
59
+ width: 100px;
60
+ overflow: hidden;
61
+ text-overflow: ellipsis;
62
+ }
63
+ }
64
+
65
+ .tree-node-tool {
66
+ margin-right: 15px;
67
+ display: flex;
68
+ align-items: center;
69
+ }
70
+ }
71
+ }
72
+ }
package/src/type.ts CHANGED
@@ -75,19 +75,25 @@ export interface CodeBlockListSlots {
75
75
  'code-block-panel-tool'(props: { id: Id; data: CodeBlockContent }): any;
76
76
  }
77
77
 
78
+ export interface DataSourceListSlots {
79
+ 'data-source-panel-tool'(props: { data: any }): any;
80
+ }
81
+
78
82
  export interface LayerNodeSlots {
79
83
  'layer-node-content'(props: { data: MNode }): any;
80
84
  }
81
85
 
82
86
  export interface LayerPanelSlots extends LayerNodeSlots {
83
87
  'layer-panel-header'(props: {}): any;
88
+ 'layer-node-tool'(props: { data: MNode }): any;
89
+ 'layer-node-content'(props: { data: MNode }): any;
84
90
  }
85
91
 
86
92
  export interface PropsPanelSlots {
87
93
  'props-panel-header'(props: {}): any;
88
94
  }
89
95
 
90
- export type SidebarSlots = LayerPanelSlots & CodeBlockListPanelSlots & ComponentListPanelSlots;
96
+ export type SidebarSlots = LayerPanelSlots & CodeBlockListPanelSlots & ComponentListPanelSlots & DataSourceListSlots;
91
97
 
92
98
  export type BeforeAdd = (config: MNode, parent: MContainer) => Promise<MNode> | MNode;
93
99
  export type GetConfig = (config: FormConfig) => Promise<FormConfig> | FormConfig;
@@ -595,6 +601,8 @@ export interface LayerNodeStatus {
595
601
  expand: boolean;
596
602
  /** 选中 */
597
603
  selected: boolean;
604
+ /** 是否可拖拽 */
605
+ draggable: boolean;
598
606
  }
599
607
 
600
608
  /** 拖拽类型 */
@@ -607,3 +615,10 @@ export enum DragType {
607
615
 
608
616
  /** 当uiService.get('uiSelectMode')为true,点击组件(包括任何形式,组件树/画布)时触发的事件名 */
609
617
  export const UI_SELECT_MODE_EVENT_NAME = 'ui-select';
618
+
619
+ export interface TreeNodeData {
620
+ id: Id;
621
+ name?: string;
622
+ items?: TreeNodeData[];
623
+ [key: string]: any;
624
+ }
@@ -0,0 +1,15 @@
1
+ import type { Id } from '@tmagic/schema';
2
+ import { getKeys } from '@tmagic/utils';
3
+
4
+ import type { LayerNodeStatus } from '@editor/type';
5
+
6
+ export const updateStatus = (nodeStatusMap: Map<Id, LayerNodeStatus>, id: Id, status: Partial<LayerNodeStatus>) => {
7
+ const nodeStatus = nodeStatusMap.get(id);
8
+
9
+ if (!nodeStatus) return;
10
+ getKeys(status).forEach((key) => {
11
+ if (nodeStatus[key] !== undefined && status[key] !== undefined) {
12
+ nodeStatus[key] = Boolean(status[key]);
13
+ }
14
+ });
15
+ };
@@ -1,30 +1,32 @@
1
- import type { MContainer, MNode } from '@tmagic/schema';
2
- import { LayerNodeSlots } from '../../../type';
1
+ import type { Id } from '@tmagic/schema';
2
+ import type { LayerNodeStatus, TreeNodeData } from '../type';
3
3
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
4
- data: MNode;
5
- parent?: MContainer | undefined;
4
+ data: TreeNodeData[];
5
+ nodeStatusMap: Map<Id, LayerNodeStatus>;
6
6
  indent?: number | undefined;
7
- filterText?: string | undefined;
8
- isCtrlKeyDown?: boolean | undefined;
7
+ emptyText?: string | undefined;
9
8
  }>, {
10
9
  indent: number;
11
- filterText: string;
12
- isCtrlKeyDown: boolean;
10
+ emptyText: string;
13
11
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
14
- data: MNode;
15
- parent?: MContainer | undefined;
12
+ data: TreeNodeData[];
13
+ nodeStatusMap: Map<Id, LayerNodeStatus>;
16
14
  indent?: number | undefined;
17
- filterText?: string | undefined;
18
- isCtrlKeyDown?: boolean | undefined;
15
+ emptyText?: string | undefined;
19
16
  }>, {
20
17
  indent: number;
21
- filterText: string;
22
- isCtrlKeyDown: boolean;
18
+ emptyText: string;
23
19
  }>>>, {
24
- filterText: string;
20
+ emptyText: string;
25
21
  indent: number;
26
- isCtrlKeyDown: boolean;
27
- }, {}>, LayerNodeSlots>;
22
+ }, {}>, {
23
+ 'tree-node-content'(props: {
24
+ data: TreeNodeData;
25
+ }): any;
26
+ 'tree-node-tool'(props: {
27
+ data: TreeNodeData;
28
+ }): any;
29
+ }>;
28
30
  export default _default;
29
31
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
30
32
  type __VLS_TypePropsToRuntimeProps<T> = {
@@ -0,0 +1,47 @@
1
+ import type { Id } from '@tmagic/schema';
2
+ import type { LayerNodeStatus, TreeNodeData } from '../type';
3
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
4
+ data: TreeNodeData;
5
+ nodeStatusMap: Map<Id, LayerNodeStatus>;
6
+ indent?: number | undefined;
7
+ }>, {
8
+ indent: number;
9
+ }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
10
+ data: TreeNodeData;
11
+ nodeStatusMap: Map<Id, LayerNodeStatus>;
12
+ indent?: number | undefined;
13
+ }>, {
14
+ indent: number;
15
+ }>>>, {
16
+ indent: number;
17
+ }, {}>, {
18
+ 'tree-node-tool'(props: {
19
+ data: TreeNodeData;
20
+ }): any;
21
+ 'tree-node-content'(props: {
22
+ data: TreeNodeData;
23
+ }): any;
24
+ }>;
25
+ export default _default;
26
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
27
+ type __VLS_TypePropsToRuntimeProps<T> = {
28
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
29
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
30
+ } : {
31
+ type: import('vue').PropType<T[K]>;
32
+ required: true;
33
+ };
34
+ };
35
+ type __VLS_WithDefaults<P, D> = {
36
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
37
+ default: D[K];
38
+ }> : P[K];
39
+ };
40
+ type __VLS_WithTemplateSlots<T, S> = T & {
41
+ new (): {
42
+ $slots: S;
43
+ };
44
+ };
45
+ type __VLS_Prettify<T> = {
46
+ [K in keyof T]: T[K];
47
+ } & {};
@@ -1,11 +1,7 @@
1
+ import { type DataSourceListSlots } from '../../../type';
1
2
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{}, {
2
3
  filter(val: string): void;
3
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>, {
4
- "data-source-panel-tool"?(_: {
5
- id: any;
6
- data: any;
7
- }): any;
8
- }>;
4
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>, DataSourceListSlots>;
9
5
  export default _default;
10
6
  type __VLS_WithTemplateSlots<T, S> = T & {
11
7
  new (): {
@@ -1,2 +1,8 @@
1
- declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
1
+ import type { DataSourceListSlots } from '../../../type';
2
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>, DataSourceListSlots>;
2
3
  export default _default;
4
+ type __VLS_WithTemplateSlots<T, S> = T & {
5
+ new (): {
6
+ $slots: S;
7
+ };
8
+ };
@@ -1,4 +1,4 @@
1
- import type { LayerPanelSlots, MenuButton, MenuComponent } from '../../../type';
1
+ import { LayerPanelSlots, MenuButton, MenuComponent } from '../../../type';
2
2
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<{
3
3
  layerContentMenu: (MenuButton | MenuComponent)[];
4
4
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
@@ -0,0 +1,106 @@
1
+ import { type ComputedRef, nextTick, type Ref } from 'vue';
2
+ import { Id } from '@tmagic/schema';
3
+ import { LayerNodeStatus, Services, TreeNodeData } from '../../../type';
4
+ export declare const useClick: (services: Services | undefined, isCtrlKeyDown: Ref<boolean>, nodeStatusMap: ComputedRef<Map<Id, LayerNodeStatus> | undefined>) => {
5
+ menu: Ref<({
6
+ $: import("vue").ComponentInternalInstance;
7
+ $data: {};
8
+ $props: {
9
+ key?: string | number | symbol | undefined;
10
+ ref?: import("vue").VNodeRef | undefined;
11
+ ref_for?: boolean | undefined;
12
+ ref_key?: string | undefined;
13
+ onVnodeBeforeMount?: ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
14
+ [key: string]: any;
15
+ }>) => void) | ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
16
+ [key: string]: any;
17
+ }>) => void)[] | undefined;
18
+ onVnodeMounted?: ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
19
+ [key: string]: any;
20
+ }>) => void) | ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
21
+ [key: string]: any;
22
+ }>) => void)[] | undefined;
23
+ onVnodeBeforeUpdate?: ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
24
+ [key: string]: any;
25
+ }>, oldVNode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
26
+ [key: string]: any;
27
+ }>) => void) | ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
28
+ [key: string]: any;
29
+ }>, oldVNode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
30
+ [key: string]: any;
31
+ }>) => void)[] | undefined;
32
+ onVnodeUpdated?: ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
33
+ [key: string]: any;
34
+ }>, oldVNode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
35
+ [key: string]: any;
36
+ }>) => void) | ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
37
+ [key: string]: any;
38
+ }>, oldVNode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
39
+ [key: string]: any;
40
+ }>) => void)[] | undefined;
41
+ onVnodeBeforeUnmount?: ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
42
+ [key: string]: any;
43
+ }>) => void) | ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
44
+ [key: string]: any;
45
+ }>) => void)[] | undefined;
46
+ onVnodeUnmounted?: ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
47
+ [key: string]: any;
48
+ }>) => void) | ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
49
+ [key: string]: any;
50
+ }>) => void)[] | undefined;
51
+ class?: unknown;
52
+ style?: unknown;
53
+ readonly layerContentMenu: (import("../../../type").MenuButton | import("../../../type").MenuComponent)[];
54
+ };
55
+ $attrs: {
56
+ [x: string]: unknown;
57
+ };
58
+ $refs: {
59
+ [x: string]: unknown;
60
+ };
61
+ $slots: Readonly<{
62
+ [name: string]: import("vue").Slot<any> | undefined;
63
+ }>;
64
+ $root: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null;
65
+ $parent: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null;
66
+ $emit: (event: string, ...args: any[]) => void;
67
+ $el: any;
68
+ $options: import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
69
+ layerContentMenu: {
70
+ type: import("vue").PropType<(import("../../../type").MenuButton | import("../../../type").MenuComponent)[]>;
71
+ required: true;
72
+ };
73
+ }>>, {
74
+ show: (e: MouseEvent) => void;
75
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {}, {}, string, {}> & {
76
+ beforeCreate?: ((() => void) | (() => void)[]) | undefined;
77
+ created?: ((() => void) | (() => void)[]) | undefined;
78
+ beforeMount?: ((() => void) | (() => void)[]) | undefined;
79
+ mounted?: ((() => void) | (() => void)[]) | undefined;
80
+ beforeUpdate?: ((() => void) | (() => void)[]) | undefined;
81
+ updated?: ((() => void) | (() => void)[]) | undefined;
82
+ activated?: ((() => void) | (() => void)[]) | undefined;
83
+ deactivated?: ((() => void) | (() => void)[]) | undefined;
84
+ beforeDestroy?: ((() => void) | (() => void)[]) | undefined;
85
+ beforeUnmount?: ((() => void) | (() => void)[]) | undefined;
86
+ destroyed?: ((() => void) | (() => void)[]) | undefined;
87
+ unmounted?: ((() => void) | (() => void)[]) | undefined;
88
+ renderTracked?: (((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[]) | undefined;
89
+ renderTriggered?: (((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[]) | undefined;
90
+ errorCaptured?: (((err: unknown, instance: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void)[]) | undefined;
91
+ };
92
+ $forceUpdate: () => void;
93
+ $nextTick: typeof nextTick;
94
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: import("vue").WatchOptions<boolean> | undefined): import("vue").WatchStopHandle;
95
+ } & Readonly<import("vue").ExtractPropTypes<{
96
+ layerContentMenu: {
97
+ type: import("vue").PropType<(import("../../../type").MenuButton | import("../../../type").MenuComponent)[]>;
98
+ required: true;
99
+ };
100
+ }>> & import("vue").ShallowUnwrapRef<{
101
+ show: (e: MouseEvent) => void;
102
+ }> & {} & import("vue").ComponentCustomProperties & {}) | undefined>;
103
+ nodeClickHandler: (event: MouseEvent, data: TreeNodeData) => void;
104
+ nodeContentmenuHandler(event: MouseEvent, data: TreeNodeData): void;
105
+ highlightHandler: import("lodash-es").DebouncedFunc<(event: MouseEvent, data: TreeNodeData) => void>;
106
+ };
@@ -1,7 +1,6 @@
1
1
  import { type ComputedRef } from 'vue';
2
2
  import { Id, MPage } from '@tmagic/schema';
3
3
  import { LayerNodeStatus } from '../../../type';
4
- export declare const updateStatus: (nodeStatusMap: Map<Id, LayerNodeStatus>, id: Id, status: Partial<LayerNodeStatus>) => void;
5
4
  export declare const useFilter: (nodeStatusMap: ComputedRef<Map<Id, LayerNodeStatus> | undefined>, page: ComputedRef<MPage | null | undefined>) => {
6
5
  filterText: import("vue").Ref<string>;
7
6
  filterTextChangeHandler(text: string): void;
@@ -1,5 +1,6 @@
1
1
  import { type Ref } from 'vue';
2
+ import Tree from '../../../components/Tree.vue';
2
3
  import type { Services } from '../../../type';
3
- export declare const useKeybinding: (services: Services | undefined, contianer: Ref<HTMLDivElement | undefined>) => {
4
+ export declare const useKeybinding: (services: Services | undefined, contianer: Ref<InstanceType<typeof Tree> | undefined>) => {
4
5
  isCtrlKeyDown: Ref<boolean>;
5
6
  };
package/types/type.d.ts CHANGED
@@ -53,6 +53,11 @@ export interface CodeBlockListSlots {
53
53
  data: CodeBlockContent;
54
54
  }): any;
55
55
  }
56
+ export interface DataSourceListSlots {
57
+ 'data-source-panel-tool'(props: {
58
+ data: any;
59
+ }): any;
60
+ }
56
61
  export interface LayerNodeSlots {
57
62
  'layer-node-content'(props: {
58
63
  data: MNode;
@@ -60,11 +65,17 @@ export interface LayerNodeSlots {
60
65
  }
61
66
  export interface LayerPanelSlots extends LayerNodeSlots {
62
67
  'layer-panel-header'(props: {}): any;
68
+ 'layer-node-tool'(props: {
69
+ data: MNode;
70
+ }): any;
71
+ 'layer-node-content'(props: {
72
+ data: MNode;
73
+ }): any;
63
74
  }
64
75
  export interface PropsPanelSlots {
65
76
  'props-panel-header'(props: {}): any;
66
77
  }
67
- export type SidebarSlots = LayerPanelSlots & CodeBlockListPanelSlots & ComponentListPanelSlots;
78
+ export type SidebarSlots = LayerPanelSlots & CodeBlockListPanelSlots & ComponentListPanelSlots & DataSourceListSlots;
68
79
  export type BeforeAdd = (config: MNode, parent: MContainer) => Promise<MNode> | MNode;
69
80
  export type GetConfig = (config: FormConfig) => Promise<FormConfig> | FormConfig;
70
81
  export interface InstallOptions {
@@ -505,6 +516,8 @@ export interface LayerNodeStatus {
505
516
  expand: boolean;
506
517
  /** 选中 */
507
518
  selected: boolean;
519
+ /** 是否可拖拽 */
520
+ draggable: boolean;
508
521
  }
509
522
  /** 拖拽类型 */
510
523
  export declare enum DragType {
@@ -515,3 +528,9 @@ export declare enum DragType {
515
528
  }
516
529
  /** 当uiService.get('uiSelectMode')为true,点击组件(包括任何形式,组件树/画布)时触发的事件名 */
517
530
  export declare const UI_SELECT_MODE_EVENT_NAME = "ui-select";
531
+ export interface TreeNodeData {
532
+ id: Id;
533
+ name?: string;
534
+ items?: TreeNodeData[];
535
+ [key: string]: any;
536
+ }
@@ -0,0 +1,3 @@
1
+ import type { Id } from '@tmagic/schema';
2
+ import type { LayerNodeStatus } from '../type';
3
+ export declare const updateStatus: (nodeStatusMap: Map<Id, LayerNodeStatus>, id: Id, status: Partial<LayerNodeStatus>) => void;