@tmagic/editor 1.5.0 → 1.5.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.
Files changed (72) hide show
  1. package/dist/{style.css → tmagic-editor.css} +153 -6
  2. package/dist/tmagic-editor.js +906 -527
  3. package/dist/tmagic-editor.umd.cjs +931 -551
  4. package/package.json +10 -10
  5. package/src/Editor.vue +18 -5
  6. package/src/components/CodeBlockEditor.vue +3 -3
  7. package/src/components/CodeParams.vue +2 -2
  8. package/src/components/ContentMenu.vue +18 -18
  9. package/src/components/FloatingBox.vue +3 -3
  10. package/src/components/Resizer.vue +4 -4
  11. package/src/components/ScrollBar.vue +3 -3
  12. package/src/components/ScrollViewer.vue +3 -3
  13. package/src/components/SplitView.vue +2 -2
  14. package/src/components/ToolButton.vue +2 -1
  15. package/src/editorProps.ts +3 -1
  16. package/src/fields/DataSourceInput.vue +2 -2
  17. package/src/fields/DataSourceMethods.vue +2 -2
  18. package/src/fields/DataSourceMocks.vue +0 -1
  19. package/src/fields/EventSelect.vue +0 -1
  20. package/src/fields/KeyValue.vue +2 -2
  21. package/src/hooks/use-code-block-edit.ts +2 -2
  22. package/src/hooks/use-getso.ts +7 -7
  23. package/src/index.ts +2 -1
  24. package/src/layouts/CodeEditor.vue +2 -2
  25. package/src/layouts/Framework.vue +5 -8
  26. package/src/layouts/NavMenu.vue +2 -2
  27. package/src/layouts/page-bar/PageBar.vue +3 -3
  28. package/src/layouts/page-bar/PageBarScrollContainer.vue +3 -3
  29. package/src/layouts/props-panel/FormPanel.vue +123 -0
  30. package/src/layouts/props-panel/PropsPanel.vue +146 -0
  31. package/src/layouts/props-panel/use-style-panel.ts +29 -0
  32. package/src/layouts/sidebar/Sidebar.vue +4 -1
  33. package/src/layouts/sidebar/code-block/CodeBlockList.vue +12 -1
  34. package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +35 -4
  35. package/src/layouts/sidebar/code-block/useContentMenu.ts +83 -0
  36. package/src/layouts/sidebar/data-source/DataSourceList.vue +8 -8
  37. package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +40 -4
  38. package/src/layouts/sidebar/data-source/useContentMenu.ts +81 -0
  39. package/src/layouts/sidebar/layer/LayerMenu.vue +7 -13
  40. package/src/layouts/sidebar/layer/LayerPanel.vue +11 -4
  41. package/src/layouts/sidebar/layer/use-click.ts +2 -2
  42. package/src/layouts/sidebar/layer/use-keybinding.ts +2 -2
  43. package/src/layouts/workspace/Workspace.vue +9 -2
  44. package/src/layouts/workspace/viewer/NodeListMenu.vue +3 -3
  45. package/src/layouts/workspace/viewer/Stage.vue +18 -6
  46. package/src/layouts/workspace/viewer/StageOverlay.vue +2 -2
  47. package/src/layouts/workspace/viewer/ViewerMenu.vue +4 -6
  48. package/src/services/storage.ts +2 -1
  49. package/src/services/ui.ts +1 -0
  50. package/src/theme/common/var.scss +12 -10
  51. package/src/theme/component-list-panel.scss +9 -7
  52. package/src/theme/content-menu.scss +7 -5
  53. package/src/theme/data-source.scss +3 -1
  54. package/src/theme/floating-box.scss +4 -2
  55. package/src/theme/framework.scss +7 -5
  56. package/src/theme/index.scss +4 -5
  57. package/src/theme/key-value.scss +2 -2
  58. package/src/theme/layer-panel.scss +3 -1
  59. package/src/theme/layout.scss +1 -1
  60. package/src/theme/nav-menu.scss +7 -5
  61. package/src/theme/page-bar.scss +17 -15
  62. package/src/theme/props-panel.scss +81 -1
  63. package/src/theme/resizer.scss +1 -1
  64. package/src/theme/sidebar.scss +4 -2
  65. package/src/theme/stage.scss +3 -1
  66. package/src/theme/theme.scss +28 -28
  67. package/src/theme/tree.scss +14 -12
  68. package/src/type.ts +8 -0
  69. package/src/utils/content-menu.ts +2 -2
  70. package/src/utils/props.ts +45 -3
  71. package/types/index.d.ts +1796 -1230
  72. package/src/layouts/PropsPanel.vue +0 -131
@@ -1,131 +0,0 @@
1
- <template>
2
- <div class="m-editor-props-panel" v-show="nodes.length === 1">
3
- <slot name="props-panel-header"></slot>
4
- <MForm
5
- ref="configForm"
6
- :class="propsPanelSize"
7
- :popper-class="`m-editor-props-panel-popper ${propsPanelSize}`"
8
- :size="propsPanelSize"
9
- :init-values="values"
10
- :config="curFormConfig"
11
- :extend-state="extendState"
12
- @change="submit"
13
- @error="errorHandler"
14
- ></MForm>
15
-
16
- <TMagicButton
17
- v-if="!disabledShowSrc"
18
- class="m-editor-props-panel-src-icon"
19
- circle
20
- size="large"
21
- title="源码"
22
- :type="showSrc ? 'primary' : ''"
23
- @click="showSrc = !showSrc"
24
- >
25
- <MIcon :icon="DocumentIcon"></MIcon>
26
- </TMagicButton>
27
-
28
- <CodeEditor
29
- v-if="showSrc"
30
- class="m-editor-props-panel-src-code"
31
- :height="`${editorContentHeight}px`"
32
- :init-values="values"
33
- :options="codeOptions"
34
- :parse="true"
35
- @save="saveCode"
36
- ></CodeEditor>
37
- </div>
38
- </template>
39
-
40
- <script lang="ts" setup>
41
- import { computed, getCurrentInstance, inject, onBeforeUnmount, onMounted, ref, watchEffect } from 'vue';
42
- import { Document as DocumentIcon } from '@element-plus/icons-vue';
43
-
44
- import type { MNode } from '@tmagic/core';
45
- import { TMagicButton } from '@tmagic/design';
46
- import type { ContainerChangeEventData, FormState, FormValue } from '@tmagic/form';
47
- import { MForm } from '@tmagic/form';
48
-
49
- import MIcon from '@editor/components/Icon.vue';
50
- import { useEditorContentHeight } from '@editor/hooks/use-editor-content-height';
51
- import type { PropsPanelSlots, Services } from '@editor/type';
52
-
53
- import CodeEditor from './CodeEditor.vue';
54
-
55
- defineSlots<PropsPanelSlots>();
56
-
57
- defineOptions({
58
- name: 'MEditorPropsPanel',
59
- });
60
-
61
- defineProps<{
62
- disabledShowSrc?: boolean;
63
- extendState?: (state: FormState) => Record<string, any> | Promise<Record<string, any>>;
64
- }>();
65
-
66
- const codeOptions = inject('codeOptions', {});
67
-
68
- const emit = defineEmits(['mounted', 'submit-error', 'form-error']);
69
-
70
- const showSrc = ref(false);
71
-
72
- const internalInstance = getCurrentInstance();
73
- const values = ref<FormValue>({});
74
- const configForm = ref<InstanceType<typeof MForm>>();
75
- // ts类型应该是FormConfig, 但是打包时会出错,所以暂时用any
76
- const curFormConfig = ref<any>([]);
77
- const services = inject<Services>('services');
78
- const node = computed(() => services?.editorService.get('node'));
79
- const nodes = computed(() => services?.editorService.get('nodes') || []);
80
- const propsPanelSize = computed(() => services?.uiService.get('propsPanelSize') || 'small');
81
- const stage = computed(() => services?.editorService.get('stage'));
82
-
83
- const { height: editorContentHeight } = useEditorContentHeight();
84
-
85
- const init = async () => {
86
- if (!node.value) {
87
- curFormConfig.value = [];
88
- return;
89
- }
90
-
91
- const type = node.value.type || (node.value.items ? 'container' : 'text');
92
- curFormConfig.value = (await services?.propsService.getPropsConfig(type)) || [];
93
- values.value = node.value;
94
- };
95
-
96
- watchEffect(init);
97
- services?.propsService.on('props-configs-change', init);
98
-
99
- onMounted(() => {
100
- emit('mounted', internalInstance);
101
- });
102
-
103
- onBeforeUnmount(() => {
104
- services?.propsService.off('props-configs-change', init);
105
- });
106
-
107
- watchEffect(() => {
108
- if (configForm.value && stage.value) {
109
- configForm.value.formState.stage = stage.value;
110
- }
111
- });
112
-
113
- const submit = async (v: FormValue, eventData: ContainerChangeEventData) => {
114
- try {
115
- const values = await configForm.value?.submitForm();
116
- services?.editorService.update(values, { changeRecords: eventData.changeRecords });
117
- } catch (e: any) {
118
- emit('submit-error', e);
119
- }
120
- };
121
-
122
- const errorHandler = (e: any) => {
123
- emit('form-error', e);
124
- };
125
-
126
- const saveCode = (values: MNode) => {
127
- services?.editorService.update(values);
128
- };
129
-
130
- defineExpose({ configForm, submit });
131
- </script>