@tmagic/editor 1.4.3 → 1.4.4

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 (33) hide show
  1. package/dist/style.css +15 -1
  2. package/dist/tmagic-editor.js +1236 -1162
  3. package/dist/tmagic-editor.umd.cjs +1254 -1179
  4. package/package.json +11 -11
  5. package/src/Editor.vue +6 -1
  6. package/src/editorProps.ts +3 -0
  7. package/src/fields/CodeSelectCol.vue +26 -18
  8. package/src/fields/DataSourceFieldSelect.vue +20 -20
  9. package/src/fields/DataSourceMethodSelect.vue +25 -31
  10. package/src/fields/DataSourceSelect.vue +49 -13
  11. package/src/fields/EventSelect.vue +8 -6
  12. package/src/hooks/use-editor-content-height.ts +11 -5
  13. package/src/layouts/PropsPanel.vue +3 -1
  14. package/src/layouts/sidebar/Sidebar.vue +24 -8
  15. package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +6 -1
  16. package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +6 -1
  17. package/src/services/ui.ts +1 -0
  18. package/src/theme/data-source-field.scss +12 -0
  19. package/src/theme/props-panel.scss +1 -1
  20. package/src/theme/theme.scss +1 -0
  21. package/src/type.ts +31 -2
  22. package/types/components/ContentMenu.vue.d.ts +3 -3
  23. package/types/components/ToolButton.vue.d.ts +2 -2
  24. package/types/editorProps.d.ts +3 -0
  25. package/types/layouts/PropsPanel.vue.d.ts +2 -0
  26. package/types/layouts/sidebar/Sidebar.vue.d.ts +7 -7
  27. package/types/layouts/sidebar/layer/LayerMenu.vue.d.ts +2 -2
  28. package/types/layouts/sidebar/layer/LayerPanel.vue.d.ts +4 -4
  29. package/types/layouts/sidebar/layer/use-click.d.ts +13 -13
  30. package/types/layouts/workspace/Workspace.vue.d.ts +4 -4
  31. package/types/layouts/workspace/viewer/ViewerMenu.vue.d.ts +2 -2
  32. package/types/services/ui.d.ts +18 -0
  33. package/types/type.d.ts +26 -2
@@ -36,7 +36,7 @@ import type { Id } from '@tmagic/schema';
36
36
  import CodeBlockEditor from '@editor/components/CodeBlockEditor.vue';
37
37
  import SearchInput from '@editor/components/SearchInput.vue';
38
38
  import { useCodeBlockEdit } from '@editor/hooks/use-code-block-edit';
39
- import type { CodeBlockListPanelSlots, CodeDeleteErrorType, Services } from '@editor/type';
39
+ import type { CodeBlockListPanelSlots, CodeDeleteErrorType, EventBus, Services } from '@editor/type';
40
40
 
41
41
  import CodeBlockList from './CodeBlockList.vue';
42
42
 
@@ -50,6 +50,7 @@ defineProps<{
50
50
  customError?: (id: Id, errorType: CodeDeleteErrorType) => any;
51
51
  }>();
52
52
 
53
+ const eventBus = inject<EventBus>('eventBus');
53
54
  const { codeBlockService } = inject<Services>('services') || {};
54
55
 
55
56
  const editable = computed(() => codeBlockService?.getEditStatus());
@@ -62,4 +63,8 @@ const codeBlockList = ref<InstanceType<typeof CodeBlockList>>();
62
63
  const filterTextChangeHandler = (val: string) => {
63
64
  codeBlockList.value?.filter(val);
64
65
  };
66
+
67
+ eventBus?.on('edit-code', (id: string) => {
68
+ editCode(id);
69
+ });
65
70
  </script>
@@ -46,7 +46,7 @@ import { TMagicButton, TMagicPopover, TMagicScrollbar } from '@tmagic/design';
46
46
  import SearchInput from '@editor/components/SearchInput.vue';
47
47
  import ToolButton from '@editor/components/ToolButton.vue';
48
48
  import { useDataSourceEdit } from '@editor/hooks/use-data-source-edit';
49
- import type { DataSourceListSlots, Services } from '@editor/type';
49
+ import type { DataSourceListSlots, EventBus, Services } from '@editor/type';
50
50
 
51
51
  import DataSourceConfigPanel from './DataSourceConfigPanel.vue';
52
52
  import DataSourceList from './DataSourceList.vue';
@@ -57,6 +57,7 @@ defineOptions({
57
57
  name: 'MEditorDataSourceListPanel',
58
58
  });
59
59
 
60
+ const eventBus = inject<EventBus>('eventBus');
60
61
  const { dataSourceService } = inject<Services>('services') || {};
61
62
 
62
63
  const { editDialog, dataSourceValues, dialogTitle, editable, editHandler, submitDataSourceHandler } =
@@ -98,4 +99,8 @@ const dataSourceList = ref<InstanceType<typeof DataSourceList>>();
98
99
  const filterTextChangeHandler = (val: string) => {
99
100
  dataSourceList.value?.filter(val);
100
101
  };
102
+
103
+ eventBus?.on('edit-data-source', (id: string) => {
104
+ editHandler(id);
105
+ });
101
106
  </script>
@@ -48,6 +48,7 @@ const state = reactive<UiState>({
48
48
  propsPanelSize: 'small',
49
49
  showAddPageButton: true,
50
50
  hideSlideBar: false,
51
+ sideBarItems: [],
51
52
  navMenuRect: {
52
53
  left: 0,
53
54
  top: 0,
@@ -0,0 +1,12 @@
1
+ .m-fields-data-source-select,
2
+ .m-fields-data-source-field-select,
3
+ .m-fields-data-source-method-select .data-source-method-select-container,
4
+ .m-fields-code-select-col .code-select-container {
5
+ width: 100%;
6
+ display: flex;
7
+ align-items: center;
8
+
9
+ .m-fields-select-action-button {
10
+ margin-left: 5px;
11
+ }
12
+ }
@@ -1,5 +1,5 @@
1
1
  .m-editor-props-panel {
2
- padding: 0 10px;
2
+ padding: 0 10px 50px 10px;
3
3
 
4
4
  .m-editor-props-panel-src-icon {
5
5
  position: absolute;
@@ -24,3 +24,4 @@
24
24
  @import "./tree.scss";
25
25
  @import "./floating-box.scss";
26
26
  @import "./page-fragment-select.scss";
27
+ @import "./data-source-field.scss";
package/src/type.ts CHANGED
@@ -17,6 +17,7 @@
17
17
  */
18
18
 
19
19
  import type { Component } from 'vue';
20
+ import type EventEmitter from 'events';
20
21
  import type { PascalCasedProperties } from 'type-fest';
21
22
 
22
23
  import type { ChildConfig, ColumnConfig, FilterFunction, FormConfig, FormItem, Input } from '@tmagic/form';
@@ -238,6 +239,8 @@ export interface UiState {
238
239
  showAddPageButton: boolean;
239
240
  /** 是否隐藏侧边栏 */
240
241
  hideSlideBar: boolean;
242
+ /** 侧边栏面板配置 */
243
+ sideBarItems: SideComponent[];
241
244
 
242
245
  // navMenu 的宽高
243
246
  navMenuRect: {
@@ -370,8 +373,10 @@ export interface MenuBarData {
370
373
  export interface SideComponent extends MenuComponent {
371
374
  /** 显示文案 */
372
375
  text: string;
376
+ /** tab样式 */
377
+ tabStyle?: string | Record<string, any>;
373
378
  /** vue组件或url */
374
- icon: Component<{}, {}, any>;
379
+ icon?: any;
375
380
  /** slide 唯一标识 key */
376
381
  $key: string;
377
382
 
@@ -384,12 +389,19 @@ export interface SideComponent extends MenuComponent {
384
389
  };
385
390
  }
386
391
 
392
+ export enum SideItemKey {
393
+ COMPONENT_LIST = 'component-list',
394
+ LAYER = 'layer',
395
+ CODE_BLOCK = 'code-block',
396
+ DATA_SOURCE = 'data-source',
397
+ }
398
+
387
399
  /**
388
400
  * component-list: 组件列表
389
401
  * layer: 已选组件树
390
402
  * code-block: 代码块
391
403
  */
392
- export type SideItem = 'component-list' | 'layer' | 'code-block' | 'data-source' | SideComponent;
404
+ export type SideItem = `${SideItemKey}` | SideComponent;
393
405
 
394
406
  /** 工具栏 */
395
407
  export interface SideBarData {
@@ -621,6 +633,8 @@ export interface DataSourceSelect extends FormItem, Input {
621
633
  * value: 要编译(数据源data)
622
634
  * */
623
635
  value?: 'id' | 'value';
636
+ /** 是否可以编辑数据源,disable表示的是是否可以选择数据源 */
637
+ notEditable?: boolean | FilterFunction;
624
638
  }
625
639
 
626
640
  export interface DataSourceMethodSelectConfig extends FormItem {
@@ -640,6 +654,8 @@ export interface DataSourceFieldSelectConfig extends FormItem {
640
654
  checkStrictly?: boolean;
641
655
  dataSourceFieldType?: DataSourceFieldType[];
642
656
  fieldConfig?: ChildConfig;
657
+ /** 是否可以编辑数据源,disable表示的是是否可以选择数据源 */
658
+ notEditable?: boolean | FilterFunction;
643
659
  }
644
660
 
645
661
  /** 可新增的数据源类型选项 */
@@ -714,3 +730,16 @@ export type SyncHookPlugin<
714
730
  C extends Record<T[number], (...args: any) => any>,
715
731
  > = AddPrefixToObject<PascalCasedProperties<SyncBeforeHook<T, C>>, 'before'> &
716
732
  AddPrefixToObject<PascalCasedProperties<SyncAfterHook<T, C>>, 'after'>;
733
+
734
+ export interface EventBusEvent {
735
+ 'edit-data-source': [id: string];
736
+ 'edit-code': [id: string];
737
+ }
738
+
739
+ export interface EventBus extends EventEmitter {
740
+ on<Name extends keyof EventBusEvent, Param extends EventBusEvent[Name]>(
741
+ eventName: Name,
742
+ listener: (...args: Param) => void,
743
+ ): this;
744
+ emit<Name extends keyof EventBusEvent, Param extends EventBusEvent[Name]>(eventName: Name, ...args: Param): boolean;
745
+ }
@@ -1,6 +1,6 @@
1
1
  import { MenuButton, MenuComponent } from '../type';
2
2
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToOption<{
3
- menuData?: (MenuButton | MenuComponent)[] | undefined;
3
+ menuData?: (MenuComponent | MenuButton)[] | undefined;
4
4
  isSubMenu?: boolean | undefined;
5
5
  active?: string | number | undefined;
6
6
  autoHide?: boolean | undefined;
@@ -29,7 +29,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
29
29
  hide: () => void;
30
30
  mouseenter: () => void;
31
31
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<{
32
- menuData?: (MenuButton | MenuComponent)[] | undefined;
32
+ menuData?: (MenuComponent | MenuButton)[] | undefined;
33
33
  isSubMenu?: boolean | undefined;
34
34
  active?: string | number | undefined;
35
35
  autoHide?: boolean | undefined;
@@ -42,7 +42,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
42
42
  onShow?: (() => any) | undefined;
43
43
  onHide?: (() => any) | undefined;
44
44
  }, {
45
- menuData: (MenuButton | MenuComponent)[];
45
+ menuData: (MenuComponent | MenuButton)[];
46
46
  isSubMenu: boolean;
47
47
  autoHide: boolean;
48
48
  }, {}>, {
@@ -1,6 +1,6 @@
1
1
  import type { MenuButton, MenuComponent } from '../type';
2
2
  declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToOption<{
3
- data?: MenuButton | MenuComponent | undefined;
3
+ data?: MenuComponent | MenuButton | undefined;
4
4
  eventType?: "mousedown" | "click" | "mouseup" | undefined;
5
5
  }>, {
6
6
  data: () => {
@@ -9,7 +9,7 @@ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_T
9
9
  };
10
10
  eventType: string;
11
11
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<{
12
- data?: MenuButton | MenuComponent | undefined;
12
+ data?: MenuComponent | MenuButton | undefined;
13
13
  eventType?: "mousedown" | "click" | "mouseup" | undefined;
14
14
  }>, {
15
15
  data: () => {
@@ -70,6 +70,8 @@ export interface EditorProps {
70
70
  disabledPageFragment?: boolean;
71
71
  /** 禁用双击在浮层中单独编辑选中组件 */
72
72
  disabledStageOverlay?: boolean;
73
+ /** 禁用属性配置面板右下角显示源码的按钮 */
74
+ disabledShowSrc?: boolean;
73
75
  /** 中间工作区域中画布渲染的内容 */
74
76
  render?: (stage: StageCore) => HTMLDivElement | Promise<HTMLDivElement>;
75
77
  /** 选中时会在画布上复制出一个大小相同的dom,实际拖拽的是这个dom,此方法用于干预这个dom的生成方式 */
@@ -90,6 +92,7 @@ export declare const defaultEditorProps: {
90
92
  containerHighlightClassName: string;
91
93
  containerHighlightDuration: number;
92
94
  containerHighlightType: ContainerHighlightType;
95
+ disabledShowSrc: boolean;
93
96
  componentGroupList: () => never[];
94
97
  datasourceList: () => never[];
95
98
  menu: () => {
@@ -1,6 +1,7 @@
1
1
  import type { FormState, FormValue } from '@tmagic/form';
2
2
  import type { PropsPanelSlots } from '../type';
3
3
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_TypePropsToOption<{
4
+ disabledShowSrc?: boolean | undefined;
4
5
  extendState?: ((state: FormState) => Record<string, any> | Promise<Record<string, any>>) | undefined;
5
6
  }>, {
6
7
  configForm: import("vue").Ref<import("vue").CreateComponentPublicInstance<Readonly<import("vue").ExtractPropTypes<{
@@ -259,6 +260,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
259
260
  "submit-error": (...args: any[]) => void;
260
261
  "form-error": (...args: any[]) => void;
261
262
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<{
263
+ disabledShowSrc?: boolean | undefined;
262
264
  extendState?: ((state: FormState) => Record<string, any> | Promise<Record<string, any>>) | undefined;
263
265
  }>>> & {
264
266
  onMounted?: ((...args: any[]) => any) | undefined;
@@ -1,25 +1,25 @@
1
- import { type MenuButton, type MenuComponent, type SideBarData } from '../../type';
1
+ import { type MenuButton, type MenuComponent, type SideBarData, SideItemKey } from '../../type';
2
2
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToOption<{
3
3
  data: SideBarData;
4
- layerContentMenu: (MenuButton | MenuComponent)[];
5
- customContentMenu?: ((menus: (MenuButton | MenuComponent)[], type: string) => (MenuButton | MenuComponent)[]) | undefined;
4
+ layerContentMenu: (MenuComponent | MenuButton)[];
5
+ customContentMenu?: ((menus: (MenuComponent | MenuButton)[], type: string) => (MenuComponent | MenuButton)[]) | undefined;
6
6
  }>, {
7
7
  data: () => {
8
8
  type: string;
9
9
  status: string;
10
- items: string[];
10
+ items: SideItemKey[];
11
11
  };
12
12
  }>, {
13
13
  activeTabName: import("vue").Ref<string>;
14
14
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<{
15
15
  data: SideBarData;
16
- layerContentMenu: (MenuButton | MenuComponent)[];
17
- customContentMenu?: ((menus: (MenuButton | MenuComponent)[], type: string) => (MenuButton | MenuComponent)[]) | undefined;
16
+ layerContentMenu: (MenuComponent | MenuButton)[];
17
+ customContentMenu?: ((menus: (MenuComponent | MenuButton)[], type: string) => (MenuComponent | MenuButton)[]) | undefined;
18
18
  }>, {
19
19
  data: () => {
20
20
  type: string;
21
21
  status: string;
22
- items: string[];
22
+ items: SideItemKey[];
23
23
  };
24
24
  }>>>, {
25
25
  data: SideBarData;
@@ -4,7 +4,7 @@ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_T
4
4
  customContentMenu?: ((menus: (MenuButton | MenuComponent)[], type: string) => (MenuButton | MenuComponent)[]) | undefined;
5
5
  }>, {
6
6
  layerContentMenu: () => never[];
7
- customContentMenu: (menus: (MenuButton | MenuComponent)[]) => (MenuButton | MenuComponent)[];
7
+ customContentMenu: (menus: (MenuComponent | MenuButton)[]) => (MenuComponent | MenuButton)[];
8
8
  }>, {
9
9
  show: (e: MouseEvent) => void;
10
10
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
@@ -14,7 +14,7 @@ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_T
14
14
  customContentMenu?: ((menus: (MenuButton | MenuComponent)[], type: string) => (MenuButton | MenuComponent)[]) | undefined;
15
15
  }>, {
16
16
  layerContentMenu: () => never[];
17
- customContentMenu: (menus: (MenuButton | MenuComponent)[]) => (MenuButton | MenuComponent)[];
17
+ customContentMenu: (menus: (MenuComponent | MenuButton)[]) => (MenuComponent | MenuButton)[];
18
18
  }>>> & {
19
19
  "onCollapse-all"?: (() => any) | undefined;
20
20
  }, {
@@ -1,10 +1,10 @@
1
1
  import { LayerPanelSlots, MenuButton, MenuComponent } from '../../../type';
2
2
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_TypePropsToOption<{
3
- layerContentMenu: (MenuButton | MenuComponent)[];
4
- customContentMenu?: ((menus: (MenuButton | MenuComponent)[], type: string) => (MenuButton | MenuComponent)[]) | undefined;
3
+ layerContentMenu: (MenuComponent | MenuButton)[];
4
+ customContentMenu?: ((menus: (MenuComponent | MenuButton)[], type: string) => (MenuComponent | MenuButton)[]) | undefined;
5
5
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<{
6
- layerContentMenu: (MenuButton | MenuComponent)[];
7
- customContentMenu?: ((menus: (MenuButton | MenuComponent)[], type: string) => (MenuButton | MenuComponent)[]) | undefined;
6
+ layerContentMenu: (MenuComponent | MenuButton)[];
7
+ customContentMenu?: ((menus: (MenuComponent | MenuButton)[], type: string) => (MenuComponent | MenuButton)[]) | undefined;
8
8
  }>>>, {}, {}>, Readonly<LayerPanelSlots> & LayerPanelSlots>;
9
9
  export default _default;
10
10
  type __VLS_WithTemplateSlots<T, S> = T & {
@@ -4,13 +4,13 @@ import { LayerNodeStatus, Services, TreeNodeData } from '../../../type';
4
4
  export declare const useClick: (services: Services | undefined, isCtrlKeyDown: Ref<boolean>, nodeStatusMap: ComputedRef<Map<Id, LayerNodeStatus> | undefined>) => {
5
5
  menu: Ref<import("vue").CreateComponentPublicInstance<Readonly<import("vue").ExtractPropTypes<{
6
6
  layerContentMenu: {
7
- type: import("vue").PropType<(import("../../../type").MenuButton | import("../../../type").MenuComponent)[]>;
7
+ type: import("vue").PropType<(import("../../../type").MenuComponent | import("../../../type").MenuButton)[]>;
8
8
  required: true;
9
9
  default: () => never[];
10
10
  };
11
11
  customContentMenu: {
12
- type: import("vue").PropType<(menus: (import("../../../type").MenuButton | import("../../../type").MenuComponent)[], type: string) => (import("../../../type").MenuButton | import("../../../type").MenuComponent)[]>;
13
- default: (menus: (import("../../../type").MenuButton | import("../../../type").MenuComponent)[]) => (import("../../../type").MenuButton | import("../../../type").MenuComponent)[];
12
+ type: import("vue").PropType<(menus: (import("../../../type").MenuComponent | import("../../../type").MenuButton)[], type: string) => (import("../../../type").MenuComponent | import("../../../type").MenuButton)[]>;
13
+ default: (menus: (import("../../../type").MenuComponent | import("../../../type").MenuButton)[]) => (import("../../../type").MenuComponent | import("../../../type").MenuButton)[];
14
14
  };
15
15
  }>> & {
16
16
  "onCollapse-all"?: (() => any) | undefined;
@@ -20,19 +20,19 @@ export declare const useClick: (services: Services | undefined, isCtrlKeyDown: R
20
20
  "collapse-all": () => void;
21
21
  }, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & Readonly<import("vue").ExtractPropTypes<{
22
22
  layerContentMenu: {
23
- type: import("vue").PropType<(import("../../../type").MenuButton | import("../../../type").MenuComponent)[]>;
23
+ type: import("vue").PropType<(import("../../../type").MenuComponent | import("../../../type").MenuButton)[]>;
24
24
  required: true;
25
25
  default: () => never[];
26
26
  };
27
27
  customContentMenu: {
28
- type: import("vue").PropType<(menus: (import("../../../type").MenuButton | import("../../../type").MenuComponent)[], type: string) => (import("../../../type").MenuButton | import("../../../type").MenuComponent)[]>;
29
- default: (menus: (import("../../../type").MenuButton | import("../../../type").MenuComponent)[]) => (import("../../../type").MenuButton | import("../../../type").MenuComponent)[];
28
+ type: import("vue").PropType<(menus: (import("../../../type").MenuComponent | import("../../../type").MenuButton)[], type: string) => (import("../../../type").MenuComponent | import("../../../type").MenuButton)[]>;
29
+ default: (menus: (import("../../../type").MenuComponent | import("../../../type").MenuButton)[]) => (import("../../../type").MenuComponent | import("../../../type").MenuButton)[];
30
30
  };
31
31
  }>> & {
32
32
  "onCollapse-all"?: (() => any) | undefined;
33
33
  }, {
34
- layerContentMenu: (import("../../../type").MenuButton | import("../../../type").MenuComponent)[];
35
- customContentMenu: (menus: (import("../../../type").MenuButton | import("../../../type").MenuComponent)[], type: string) => (import("../../../type").MenuButton | import("../../../type").MenuComponent)[];
34
+ layerContentMenu: (import("../../../type").MenuComponent | import("../../../type").MenuButton)[];
35
+ customContentMenu: (menus: (import("../../../type").MenuComponent | import("../../../type").MenuButton)[], type: string) => (import("../../../type").MenuComponent | import("../../../type").MenuButton)[];
36
36
  }, true, {}, {}, {
37
37
  P: {};
38
38
  B: {};
@@ -42,21 +42,21 @@ export declare const useClick: (services: Services | undefined, isCtrlKeyDown: R
42
42
  Defaults: {};
43
43
  }, Readonly<import("vue").ExtractPropTypes<{
44
44
  layerContentMenu: {
45
- type: import("vue").PropType<(import("../../../type").MenuButton | import("../../../type").MenuComponent)[]>;
45
+ type: import("vue").PropType<(import("../../../type").MenuComponent | import("../../../type").MenuButton)[]>;
46
46
  required: true;
47
47
  default: () => never[];
48
48
  };
49
49
  customContentMenu: {
50
- type: import("vue").PropType<(menus: (import("../../../type").MenuButton | import("../../../type").MenuComponent)[], type: string) => (import("../../../type").MenuButton | import("../../../type").MenuComponent)[]>;
51
- default: (menus: (import("../../../type").MenuButton | import("../../../type").MenuComponent)[]) => (import("../../../type").MenuButton | import("../../../type").MenuComponent)[];
50
+ type: import("vue").PropType<(menus: (import("../../../type").MenuComponent | import("../../../type").MenuButton)[], type: string) => (import("../../../type").MenuComponent | import("../../../type").MenuButton)[]>;
51
+ default: (menus: (import("../../../type").MenuComponent | import("../../../type").MenuButton)[]) => (import("../../../type").MenuComponent | import("../../../type").MenuButton)[];
52
52
  };
53
53
  }>> & {
54
54
  "onCollapse-all"?: (() => any) | undefined;
55
55
  }, {
56
56
  show: (e: MouseEvent) => void;
57
57
  }, {}, {}, {}, {
58
- layerContentMenu: (import("../../../type").MenuButton | import("../../../type").MenuComponent)[];
59
- customContentMenu: (menus: (import("../../../type").MenuButton | import("../../../type").MenuComponent)[], type: string) => (import("../../../type").MenuButton | import("../../../type").MenuComponent)[];
58
+ layerContentMenu: (import("../../../type").MenuComponent | import("../../../type").MenuButton)[];
59
+ customContentMenu: (menus: (import("../../../type").MenuComponent | import("../../../type").MenuButton)[], type: string) => (import("../../../type").MenuComponent | import("../../../type").MenuButton)[];
60
60
  }> | undefined>;
61
61
  nodeClickHandler: (event: MouseEvent, data: TreeNodeData) => void;
62
62
  nodeContentMenuHandler(event: MouseEvent, data: TreeNodeData): void;
@@ -1,14 +1,14 @@
1
1
  import type { MenuButton, MenuComponent, WorkspaceSlots } from '../../type';
2
2
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToOption<{
3
- stageContentMenu: (MenuButton | MenuComponent)[];
3
+ stageContentMenu: (MenuComponent | MenuButton)[];
4
4
  disabledStageOverlay?: boolean | undefined;
5
- customContentMenu?: ((menus: (MenuButton | MenuComponent)[], type: string) => (MenuButton | MenuComponent)[]) | undefined;
5
+ customContentMenu?: ((menus: (MenuComponent | MenuButton)[], type: string) => (MenuComponent | MenuButton)[]) | undefined;
6
6
  }>, {
7
7
  disabledStageOverlay: boolean;
8
8
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<{
9
- stageContentMenu: (MenuButton | MenuComponent)[];
9
+ stageContentMenu: (MenuComponent | MenuButton)[];
10
10
  disabledStageOverlay?: boolean | undefined;
11
- customContentMenu?: ((menus: (MenuButton | MenuComponent)[], type: string) => (MenuButton | MenuComponent)[]) | undefined;
11
+ customContentMenu?: ((menus: (MenuComponent | MenuButton)[], type: string) => (MenuComponent | MenuButton)[]) | undefined;
12
12
  }>, {
13
13
  disabledStageOverlay: boolean;
14
14
  }>>>, {
@@ -6,7 +6,7 @@ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_T
6
6
  }>, {
7
7
  isMultiSelect: boolean;
8
8
  stageContentMenu: () => never[];
9
- customContentMenu: (menus: (MenuButton | MenuComponent)[]) => (MenuButton | MenuComponent)[];
9
+ customContentMenu: (menus: (MenuComponent | MenuButton)[]) => (MenuComponent | MenuButton)[];
10
10
  }>, {
11
11
  show: (e: MouseEvent) => void;
12
12
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<{
@@ -16,7 +16,7 @@ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_T
16
16
  }>, {
17
17
  isMultiSelect: boolean;
18
18
  stageContentMenu: () => never[];
19
- customContentMenu: (menus: (MenuButton | MenuComponent)[]) => (MenuButton | MenuComponent)[];
19
+ customContentMenu: (menus: (MenuComponent | MenuButton)[]) => (MenuComponent | MenuButton)[];
20
20
  }>>>, {
21
21
  stageContentMenu: (MenuButton | MenuComponent)[];
22
22
  customContentMenu: (menus: (MenuButton | MenuComponent)[], type: string) => (MenuButton | MenuComponent)[];
@@ -31,6 +31,24 @@ declare class Ui extends BaseService {
31
31
  propsPanelSize: "small" | "large" | "default";
32
32
  showAddPageButton: boolean;
33
33
  hideSlideBar: boolean;
34
+ sideBarItems: {
35
+ [x: string]: any;
36
+ text: string;
37
+ tabStyle?: string | Record<string, any> | undefined;
38
+ icon?: any;
39
+ $key: string;
40
+ boxComponentConfig?: {
41
+ component?: any;
42
+ props?: Record<string, any> | undefined;
43
+ } | undefined;
44
+ type: "component";
45
+ component: any;
46
+ props?: Record<string, any> | undefined;
47
+ listeners?: Record<string, Function> | undefined;
48
+ slots?: Record<string, any> | undefined;
49
+ className?: string | undefined;
50
+ display?: boolean | ((data?: import("../type").Services | undefined) => boolean | Promise<boolean>) | undefined;
51
+ }[];
34
52
  navMenuRect: {
35
53
  left: number;
36
54
  top: number;
package/types/type.d.ts CHANGED
@@ -1,4 +1,6 @@
1
+ /// <reference types="node" />
1
2
  import type { Component } from 'vue';
3
+ import type EventEmitter from 'events';
2
4
  import type { PascalCasedProperties } from 'type-fest';
3
5
  import type { ChildConfig, ColumnConfig, FilterFunction, FormConfig, FormItem, Input } from '@tmagic/form';
4
6
  import type { CodeBlockContent, CodeBlockDSL, DataSourceFieldType, Id, MApp, MContainer, MNode, MPage, MPageFragment } from '@tmagic/schema';
@@ -194,6 +196,8 @@ export interface UiState {
194
196
  showAddPageButton: boolean;
195
197
  /** 是否隐藏侧边栏 */
196
198
  hideSlideBar: boolean;
199
+ /** 侧边栏面板配置 */
200
+ sideBarItems: SideComponent[];
197
201
  navMenuRect: {
198
202
  left: number;
199
203
  top: number;
@@ -302,8 +306,10 @@ export interface MenuBarData {
302
306
  export interface SideComponent extends MenuComponent {
303
307
  /** 显示文案 */
304
308
  text: string;
309
+ /** tab样式 */
310
+ tabStyle?: string | Record<string, any>;
305
311
  /** vue组件或url */
306
- icon: Component<{}, {}, any>;
312
+ icon?: any;
307
313
  /** slide 唯一标识 key */
308
314
  $key: string;
309
315
  /** 组件扩展参数 */
@@ -314,12 +320,18 @@ export interface SideComponent extends MenuComponent {
314
320
  props?: Record<string, any>;
315
321
  };
316
322
  }
323
+ export declare enum SideItemKey {
324
+ COMPONENT_LIST = "component-list",
325
+ LAYER = "layer",
326
+ CODE_BLOCK = "code-block",
327
+ DATA_SOURCE = "data-source"
328
+ }
317
329
  /**
318
330
  * component-list: 组件列表
319
331
  * layer: 已选组件树
320
332
  * code-block: 代码块
321
333
  */
322
- export type SideItem = 'component-list' | 'layer' | 'code-block' | 'data-source' | SideComponent;
334
+ export type SideItem = `${SideItemKey}` | SideComponent;
323
335
  /** 工具栏 */
324
336
  export interface SideBarData {
325
337
  /** 容器类型 */
@@ -524,6 +536,8 @@ export interface DataSourceSelect extends FormItem, Input {
524
536
  * value: 要编译(数据源data)
525
537
  * */
526
538
  value?: 'id' | 'value';
539
+ /** 是否可以编辑数据源,disable表示的是是否可以选择数据源 */
540
+ notEditable?: boolean | FilterFunction;
527
541
  }
528
542
  export interface DataSourceMethodSelectConfig extends FormItem {
529
543
  type: 'data-source-method-select';
@@ -541,6 +555,8 @@ export interface DataSourceFieldSelectConfig extends FormItem {
541
555
  checkStrictly?: boolean;
542
556
  dataSourceFieldType?: DataSourceFieldType[];
543
557
  fieldConfig?: ChildConfig;
558
+ /** 是否可以编辑数据源,disable表示的是是否可以选择数据源 */
559
+ notEditable?: boolean | FilterFunction;
544
560
  }
545
561
  /** 可新增的数据源类型选项 */
546
562
  export interface DatasourceTypeOption {
@@ -592,3 +608,11 @@ export type AddPrefixToObject<T, P extends string> = {
592
608
  };
593
609
  export type AsyncHookPlugin<T extends Array<string>, C extends Record<T[number], (...args: any) => any>> = AddPrefixToObject<PascalCasedProperties<AsyncBeforeHook<T, C>>, 'before'> & AddPrefixToObject<PascalCasedProperties<AsyncAfterHook<T, C>>, 'after'>;
594
610
  export type SyncHookPlugin<T extends Array<string>, C extends Record<T[number], (...args: any) => any>> = AddPrefixToObject<PascalCasedProperties<SyncBeforeHook<T, C>>, 'before'> & AddPrefixToObject<PascalCasedProperties<SyncAfterHook<T, C>>, 'after'>;
611
+ export interface EventBusEvent {
612
+ 'edit-data-source': [id: string];
613
+ 'edit-code': [id: string];
614
+ }
615
+ export interface EventBus extends EventEmitter {
616
+ on<Name extends keyof EventBusEvent, Param extends EventBusEvent[Name]>(eventName: Name, listener: (...args: Param) => void): this;
617
+ emit<Name extends keyof EventBusEvent, Param extends EventBusEvent[Name]>(eventName: Name, ...args: Param): boolean;
618
+ }