@tmagic/editor 1.2.0-beta.2 → 1.2.0-beta.21

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 (101) hide show
  1. package/dist/style.css +41 -28
  2. package/dist/{tmagic-editor.mjs → tmagic-editor.js} +1693 -1272
  3. package/dist/tmagic-editor.js.map +1 -0
  4. package/dist/{tmagic-editor.umd.js → tmagic-editor.umd.cjs} +1700 -1274
  5. package/dist/tmagic-editor.umd.cjs.map +1 -0
  6. package/package.json +16 -14
  7. package/src/Editor.vue +54 -37
  8. package/src/components/CodeDraftEditor.vue +145 -0
  9. package/src/components/ContentMenu.vue +4 -4
  10. package/src/components/FunctionEditor.vue +145 -0
  11. package/src/components/Icon.vue +7 -5
  12. package/src/components/Layout.vue +149 -0
  13. package/src/components/ScrollBar.vue +1 -1
  14. package/src/components/ScrollViewer.vue +10 -1
  15. package/src/components/ToolButton.vue +30 -15
  16. package/src/fields/Code.vue +1 -1
  17. package/src/fields/CodeLink.vue +1 -1
  18. package/src/fields/CodeSelect.vue +89 -110
  19. package/src/fields/UISelect.vue +9 -8
  20. package/src/index.ts +1 -0
  21. package/src/layouts/AddPageBox.vue +3 -2
  22. package/src/layouts/CodeEditor.vue +2 -3
  23. package/src/layouts/Framework.vue +62 -40
  24. package/src/layouts/NavMenu.vue +1 -1
  25. package/src/layouts/PropsPanel.vue +11 -13
  26. package/src/layouts/Resizer.vue +1 -1
  27. package/src/layouts/sidebar/ComponentListPanel.vue +15 -13
  28. package/src/layouts/sidebar/LayerMenu.vue +9 -7
  29. package/src/layouts/sidebar/LayerPanel.vue +277 -177
  30. package/src/layouts/sidebar/Sidebar.vue +113 -27
  31. package/src/layouts/sidebar/code-block/CodeBlockEditor.vue +34 -85
  32. package/src/layouts/sidebar/code-block/CodeBlockList.vue +55 -89
  33. package/src/layouts/workspace/Breadcrumb.vue +32 -0
  34. package/src/layouts/workspace/PageBar.vue +12 -11
  35. package/src/layouts/workspace/PageBarScrollContainer.vue +1 -1
  36. package/src/layouts/workspace/Stage.vue +26 -9
  37. package/src/layouts/workspace/ViewerMenu.vue +11 -9
  38. package/src/layouts/workspace/Workspace.vue +10 -3
  39. package/src/services/BaseService.ts +6 -1
  40. package/src/services/codeBlock.ts +124 -125
  41. package/src/services/componentList.ts +6 -1
  42. package/src/services/editor.ts +43 -19
  43. package/src/services/events.ts +6 -1
  44. package/src/services/history.ts +7 -16
  45. package/src/services/props.ts +7 -2
  46. package/src/services/storage.ts +1 -0
  47. package/src/services/ui.ts +12 -0
  48. package/src/theme/breadcrumb.scss +6 -0
  49. package/src/theme/code-block.scss +30 -21
  50. package/src/theme/component-list-panel.scss +3 -7
  51. package/src/theme/layer-panel.scss +7 -2
  52. package/src/theme/theme.scss +1 -0
  53. package/src/type.ts +76 -50
  54. package/src/utils/editor.ts +9 -1
  55. package/src/utils/index.ts +1 -0
  56. package/src/utils/props.ts +2 -2
  57. package/src/utils/scroll-viewer.ts +18 -2
  58. package/src/utils/stage.ts +9 -2
  59. package/types/Editor.vue.d.ts +42 -29
  60. package/types/components/CodeDraftEditor.vue.d.ts +148 -0
  61. package/types/components/ContentMenu.vue.d.ts +1 -3
  62. package/types/components/FunctionEditor.vue.d.ts +120 -0
  63. package/types/components/Icon.vue.d.ts +1 -3
  64. package/types/{layouts → components}/Layout.vue.d.ts +12 -1
  65. package/types/components/ScrollBar.vue.d.ts +1 -3
  66. package/types/components/ScrollViewer.vue.d.ts +45 -1
  67. package/types/components/ToolButton.vue.d.ts +1 -3
  68. package/types/fields/Code.vue.d.ts +1 -3
  69. package/types/fields/CodeLink.vue.d.ts +1 -3
  70. package/types/fields/CodeSelect.vue.d.ts +10 -12
  71. package/types/fields/UISelect.vue.d.ts +1 -3
  72. package/types/index.d.ts +1 -0
  73. package/types/layouts/AddPageBox.vue.d.ts +1 -3
  74. package/types/layouts/CodeEditor.vue.d.ts +6 -15
  75. package/types/layouts/NavMenu.vue.d.ts +1 -3
  76. package/types/layouts/sidebar/LayerMenu.vue.d.ts +25 -9
  77. package/types/layouts/sidebar/LayerPanel.vue.d.ts +38 -886
  78. package/types/layouts/sidebar/Sidebar.vue.d.ts +10 -5
  79. package/types/layouts/sidebar/code-block/CodeBlockEditor.vue.d.ts +1 -1
  80. package/types/layouts/sidebar/code-block/CodeBlockList.vue.d.ts +6 -5
  81. package/types/layouts/{sidebar/TabPane.vue.d.ts → workspace/Breadcrumb.vue.d.ts} +5 -43
  82. package/types/layouts/workspace/Stage.vue.d.ts +25 -8
  83. package/types/layouts/workspace/ViewerMenu.vue.d.ts +6 -3
  84. package/types/layouts/workspace/Workspace.vue.d.ts +23 -5
  85. package/types/services/BaseService.d.ts +2 -1
  86. package/types/services/codeBlock.d.ts +57 -36
  87. package/types/services/componentList.d.ts +1 -0
  88. package/types/services/editor.d.ts +5 -6
  89. package/types/services/events.d.ts +1 -0
  90. package/types/services/history.d.ts +5 -15
  91. package/types/services/props.d.ts +3 -2
  92. package/types/services/ui.d.ts +2 -1
  93. package/types/type.d.ts +64 -48
  94. package/types/utils/editor.d.ts +1 -0
  95. package/types/utils/index.d.ts +1 -0
  96. package/types/utils/props.d.ts +1 -1
  97. package/types/utils/scroll-viewer.d.ts +5 -0
  98. package/dist/tmagic-editor.mjs.map +0 -1
  99. package/dist/tmagic-editor.umd.js.map +0 -1
  100. package/src/layouts/Layout.vue +0 -100
  101. package/src/layouts/sidebar/TabPane.vue +0 -116
@@ -1,100 +0,0 @@
1
- <template>
2
- <div ref="el" class="m-editor-layout">
3
- <template v-if="typeof props.left !== 'undefined'">
4
- <div class="m-editor-layout-left" :class="leftClass" :style="`width: ${left}px`">
5
- <slot name="left"></slot>
6
- </div>
7
- <Resizer @change="changeLeft"></Resizer>
8
- </template>
9
-
10
- <div class="m-editor-layout-center" :class="centerClass" :style="`width: ${center}px`">
11
- <slot name="center"></slot>
12
- </div>
13
-
14
- <template v-if="typeof props.right !== 'undefined'">
15
- <Resizer @change="changeRight"></Resizer>
16
- <div class="m-editor-layout-right" :class="rightClass" :style="`width: ${right}px`">
17
- <slot name="right"></slot>
18
- </div>
19
- </template>
20
- </div>
21
- </template>
22
-
23
- <script lang="ts" setup>
24
- import { onMounted, onUnmounted, ref } from 'vue';
25
-
26
- import Resizer from './Resizer.vue';
27
-
28
- const emit = defineEmits(['update:left', 'change', 'update:right']);
29
-
30
- const props = withDefaults(
31
- defineProps<{
32
- left?: number;
33
- right?: number;
34
- minLeft?: number;
35
- minRight?: number;
36
- leftClass?: string;
37
- rightClass?: string;
38
- centerClass?: string;
39
- }>(),
40
- {
41
- minLeft: 1,
42
- minRight: 1,
43
- },
44
- );
45
-
46
- const el = ref<HTMLElement>();
47
-
48
- let clientWidth = 0;
49
- const resizerObserver = new ResizeObserver((entries) => {
50
- for (const { contentRect } of entries) {
51
- clientWidth = contentRect.width;
52
-
53
- center.value = clientWidth - (props.left || 0) - (props.right || 0);
54
-
55
- emit('change', {
56
- left: props.left,
57
- center: center.value,
58
- right: props.right,
59
- });
60
- }
61
- });
62
-
63
- onMounted(() => {
64
- if (el.value) {
65
- resizerObserver.observe(el.value);
66
- }
67
- });
68
-
69
- onUnmounted(() => {
70
- resizerObserver.disconnect();
71
- });
72
-
73
- const center = ref(0);
74
-
75
- const changeLeft = (deltaX: number) => {
76
- if (typeof props.left === 'undefined') return;
77
- const left = Math.max(props.left + deltaX, props.minLeft) || 0;
78
- emit('update:left', left);
79
- center.value = clientWidth - left - (props.right || 0);
80
-
81
- emit('change', {
82
- left,
83
- center: center.value,
84
- right: props.right,
85
- });
86
- };
87
-
88
- const changeRight = (deltaX: number) => {
89
- if (typeof props.right === 'undefined') return;
90
- const right = Math.max(props.right - deltaX, props.minRight) || 0;
91
- emit('update:right', right);
92
- center.value = clientWidth - (props.left || 0) - right;
93
-
94
- emit('change', {
95
- left: props.left,
96
- center: center.value,
97
- right,
98
- });
99
- };
100
- </script>
@@ -1,116 +0,0 @@
1
- <template>
2
- <el-tab-pane v-if="config" :name="config.text">
3
- <template #label>
4
- <div :key="config.text">
5
- <m-icon v-if="config.icon" :icon="config.icon"></m-icon>
6
- <div v-if="config.text" class="magic-editor-tab-panel-title">{{ config.text }}</div>
7
- </div>
8
- </template>
9
-
10
- <component :is="config.component" v-bind="config.props || {}" v-on="config?.listeners || {}">
11
- <template #component-list-panel-header v-if="data === 'component-list' || config.slots?.componentListPanelHeader">
12
- <slot v-if="data === 'component-list'" name="component-list-panel-header"></slot>
13
- <component v-else-if="config.slots?.componentListPanelHeader" :is="config.slots.componentListPanelHeader" />
14
- </template>
15
-
16
- <template
17
- #component-list-item="{ component }"
18
- v-if="data === 'component-list' || config.slots?.componentListItem"
19
- >
20
- <slot v-if="data === 'component-list'" name="component-list-item" :component="component"></slot>
21
- <component
22
- v-else-if="config.slots?.componentListItem"
23
- :is="config.slots.componentListItem"
24
- :component="component"
25
- />
26
- </template>
27
-
28
- <template #layer-panel-header v-if="data === 'layer' || config.slots?.layerPanelHeader">
29
- <slot v-if="data === 'layer'" name="layer-panel-header"></slot>
30
- <component v-else-if="config.slots?.layerPanelHeader" :is="config.slots.layerPanelHeader" />
31
- </template>
32
-
33
- <template #code-block-panel-header v-if="data === 'code-block' || config.slots?.codeBlockPanelHeader">
34
- <slot v-if="data === 'code-block'" name="code-block-panel-header"></slot>
35
- <component v-else-if="config.slots?.codeBlockPanelHeader" :is="config.slots.codeBlockPanelHeader" />
36
- </template>
37
-
38
- <template #code-block-panel-tool="{ id, data }" v-if="data === 'code-block' || config.slots?.codeBlockPanelTool">
39
- <slot v-if="data === 'code-block'" name="code-block-panel-tool" :id="id" :data="data"></slot>
40
- <component v-else-if="config.slots?.codeBlockPanelTool" :is="config.slots.codeBlockPanelTool" />
41
- </template>
42
-
43
- <template
44
- #code-block-edit-panel-header="{ id }"
45
- v-if="data === 'code-block' || config.slots?.codeBlockEditPanelHeader"
46
- >
47
- <slot v-if="data === 'code-block'" name="code-block-edit-panel-header" :id="id"></slot>
48
- <component v-else-if="config.slots?.codeBlockEditPanelHeader" :is="config.slots.codeBlockEditPanelHeader" />
49
- </template>
50
-
51
- <template
52
- #layer-node-content="{ data: nodeData, node }"
53
- v-if="data === 'layer' || config.slots?.layerNodeContent"
54
- >
55
- <slot v-if="data === 'layer'" name="layer-node-content" :data="nodeData" :node="node"></slot>
56
- <component
57
- v-else-if="config.slots?.layerNodeContent"
58
- :is="config.slots.layerNodeContent"
59
- :data="nodeData"
60
- :node="node"
61
- />
62
- </template>
63
- </component>
64
- </el-tab-pane>
65
- </template>
66
-
67
- <script lang="ts" setup>
68
- import { computed } from 'vue';
69
- import { Coin, EditPen, Files } from '@element-plus/icons-vue';
70
-
71
- import MIcon from '../../components/Icon.vue';
72
- import { SideComponent, SideItem } from '../../type';
73
-
74
- import CodeBlockList from './code-block/CodeBlockList.vue';
75
- import ComponentListPanel from './ComponentListPanel.vue';
76
- import LayerPanel from './LayerPanel.vue';
77
-
78
- const props = defineProps<{
79
- data?: SideItem;
80
- }>();
81
-
82
- const config = computed<SideComponent | undefined>(() => {
83
- if (typeof props.data !== 'string') {
84
- return props.data;
85
- }
86
-
87
- switch (props.data) {
88
- case 'component-list':
89
- return {
90
- type: 'component',
91
- icon: Coin,
92
- text: '组件',
93
- component: ComponentListPanel,
94
- slots: {},
95
- };
96
- case 'layer':
97
- return {
98
- type: 'component',
99
- icon: Files,
100
- text: '已选组件',
101
- component: LayerPanel,
102
- slots: {},
103
- };
104
- case 'code-block':
105
- return {
106
- type: 'component',
107
- icon: EditPen,
108
- text: '代码编辑',
109
- component: CodeBlockList,
110
- slots: {},
111
- };
112
- default:
113
- return undefined;
114
- }
115
- });
116
- </script>