@tmagic/editor 1.2.0-beta.13 → 1.2.0-beta.15
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 +17 -7
- package/dist/tmagic-editor.mjs +96 -33
- package/dist/tmagic-editor.mjs.map +1 -1
- package/dist/tmagic-editor.umd.js +95 -32
- package/dist/tmagic-editor.umd.js.map +1 -1
- package/package.json +9 -9
- package/src/components/CodeDraftEditor.vue +17 -2
- package/src/components/FunctionEditor.vue +4 -3
- package/src/components/Layout.vue +52 -13
- package/src/layouts/sidebar/LayerMenu.vue +2 -2
- package/src/layouts/sidebar/LayerPanel.vue +1 -0
- package/src/layouts/sidebar/code-block/CodeBlockList.vue +1 -1
- package/src/layouts/workspace/ViewerMenu.vue +3 -2
- package/src/services/BaseService.ts +1 -1
- package/src/services/codeBlock.ts +15 -13
- package/src/theme/code-block.scss +19 -7
- package/types/components/Layout.vue.d.ts +12 -1
- package/types/services/BaseService.d.ts +1 -1
- package/types/services/codeBlock.d.ts +1 -1
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.2.0-beta.
|
|
2
|
+
"version": "1.2.0-beta.15",
|
|
3
3
|
"name": "@tmagic/editor",
|
|
4
4
|
"sideEffects": [
|
|
5
5
|
"dist/*",
|
|
@@ -45,12 +45,12 @@
|
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@babel/core": "^7.18.0",
|
|
47
47
|
"@element-plus/icons-vue": "^2.0.9",
|
|
48
|
-
"@tmagic/core": "1.2.0-beta.
|
|
49
|
-
"@tmagic/design": "1.2.0-beta.
|
|
50
|
-
"@tmagic/form": "1.2.0-beta.
|
|
51
|
-
"@tmagic/schema": "1.2.0-beta.
|
|
52
|
-
"@tmagic/stage": "1.2.0-beta.
|
|
53
|
-
"@tmagic/utils": "1.2.0-beta.
|
|
48
|
+
"@tmagic/core": "1.2.0-beta.15",
|
|
49
|
+
"@tmagic/design": "1.2.0-beta.15",
|
|
50
|
+
"@tmagic/form": "1.2.0-beta.15",
|
|
51
|
+
"@tmagic/schema": "1.2.0-beta.15",
|
|
52
|
+
"@tmagic/stage": "1.2.0-beta.15",
|
|
53
|
+
"@tmagic/utils": "1.2.0-beta.15",
|
|
54
54
|
"buffer": "^6.0.3",
|
|
55
55
|
"color": "^3.1.3",
|
|
56
56
|
"events": "^3.3.0",
|
|
@@ -62,8 +62,8 @@
|
|
|
62
62
|
"vue": "^3.2.37"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
|
-
"@tmagic/design": "1.2.0-beta.
|
|
66
|
-
"@tmagic/form": "1.2.0-beta.
|
|
65
|
+
"@tmagic/design": "1.2.0-beta.15",
|
|
66
|
+
"@tmagic/form": "1.2.0-beta.15",
|
|
67
67
|
"monaco-editor": "^0.34.0",
|
|
68
68
|
"vue": "^3.2.37"
|
|
69
69
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="m-editor-wrapper">
|
|
2
|
+
<div class="m-editor-wrapper" :class="isFullScreen ? 'fullScreen' : 'normal'">
|
|
3
3
|
<magic-code-editor
|
|
4
4
|
ref="codeEditor"
|
|
5
5
|
class="m-editor-container"
|
|
@@ -9,10 +9,16 @@
|
|
|
9
9
|
:options="codeOptions"
|
|
10
10
|
></magic-code-editor>
|
|
11
11
|
<div class="m-editor-content-bottom" v-if="editable">
|
|
12
|
+
<TMagicButton type="primary" class="button" @click="toggleFullScreen">
|
|
13
|
+
{{ isFullScreen ? '退出全屏' : '全屏' }}</TMagicButton
|
|
14
|
+
>
|
|
12
15
|
<TMagicButton type="primary" class="button" @click="saveCode">保存</TMagicButton>
|
|
13
16
|
<TMagicButton type="primary" class="button" @click="close">关闭</TMagicButton>
|
|
14
17
|
</div>
|
|
15
18
|
<div class="m-editor-content-bottom" v-else>
|
|
19
|
+
<TMagicButton type="primary" class="button" @click="toggleFullScreen">
|
|
20
|
+
{{ isFullScreen ? '退出全屏' : '全屏' }}</TMagicButton
|
|
21
|
+
>
|
|
16
22
|
<TMagicButton type="primary" class="button" @click="close">关闭</TMagicButton>
|
|
17
23
|
</div>
|
|
18
24
|
</div>
|
|
@@ -57,6 +63,7 @@ const editorContent = ref<string>('');
|
|
|
57
63
|
const codeEditor = ref<InstanceType<typeof MagicCodeEditor>>();
|
|
58
64
|
// 原始代码内容
|
|
59
65
|
const originCodeContent = ref<string>('');
|
|
66
|
+
const isFullScreen = ref<boolean>(false);
|
|
60
67
|
|
|
61
68
|
const codeOptions = computed(() => ({
|
|
62
69
|
...props.codeOptions,
|
|
@@ -105,7 +112,7 @@ const saveAndClose = (): void => {
|
|
|
105
112
|
};
|
|
106
113
|
|
|
107
114
|
// 关闭弹窗
|
|
108
|
-
const close = async () => {
|
|
115
|
+
const close = async (): Promise<void> => {
|
|
109
116
|
const codeDraft = services?.codeBlockService.getCodeDraft(props.id);
|
|
110
117
|
if (codeDraft) {
|
|
111
118
|
tMagicMessageBox
|
|
@@ -127,4 +134,12 @@ const close = async () => {
|
|
|
127
134
|
emit('close');
|
|
128
135
|
}
|
|
129
136
|
};
|
|
137
|
+
|
|
138
|
+
// 切换全屏
|
|
139
|
+
const toggleFullScreen = (): void => {
|
|
140
|
+
isFullScreen.value = !isFullScreen.value;
|
|
141
|
+
if (codeEditor.value) {
|
|
142
|
+
codeEditor.value.focus();
|
|
143
|
+
}
|
|
144
|
+
};
|
|
130
145
|
</script>
|
|
@@ -46,6 +46,7 @@ const tableConfig = {
|
|
|
46
46
|
border: true,
|
|
47
47
|
enableFullscreen: false,
|
|
48
48
|
name: 'params',
|
|
49
|
+
maxHeight: '150px',
|
|
49
50
|
items: [
|
|
50
51
|
{
|
|
51
52
|
type: 'text',
|
|
@@ -89,7 +90,7 @@ watchEffect(() => {
|
|
|
89
90
|
codeContent.value = props.content;
|
|
90
91
|
});
|
|
91
92
|
|
|
92
|
-
const initTableModel = () => {
|
|
93
|
+
const initTableModel = (): void => {
|
|
93
94
|
const codeDsl = services?.codeBlockService.getCodeDslSync();
|
|
94
95
|
if (!codeDsl) return;
|
|
95
96
|
tableModel.value = {
|
|
@@ -130,7 +131,7 @@ const saveCode = async (codeValue: string): Promise<void> => {
|
|
|
130
131
|
};
|
|
131
132
|
|
|
132
133
|
// 保存并关闭
|
|
133
|
-
const saveAndClose = async (codeValue: string) => {
|
|
134
|
+
const saveAndClose = async (codeValue: string): Promise<void> => {
|
|
134
135
|
await saveCode(codeValue);
|
|
135
136
|
if (evalRes.value) {
|
|
136
137
|
close();
|
|
@@ -138,7 +139,7 @@ const saveAndClose = async (codeValue: string) => {
|
|
|
138
139
|
};
|
|
139
140
|
|
|
140
141
|
// 关闭弹窗
|
|
141
|
-
const close = () => {
|
|
142
|
+
const close = (): void => {
|
|
142
143
|
services?.codeBlockService.setCodeEditorShowStatus(false);
|
|
143
144
|
};
|
|
144
145
|
</script>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div ref="el" class="m-editor-layout">
|
|
3
|
-
<template v-if="
|
|
3
|
+
<template v-if="hasLeft">
|
|
4
4
|
<div class="m-editor-layout-left" :class="leftClass" :style="`width: ${left}px`">
|
|
5
5
|
<slot name="left"></slot>
|
|
6
6
|
</div>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<slot name="center"></slot>
|
|
12
12
|
</div>
|
|
13
13
|
|
|
14
|
-
<template v-if="
|
|
14
|
+
<template v-if="hasRight">
|
|
15
15
|
<Resizer @change="changeRight"></Resizer>
|
|
16
16
|
<div class="m-editor-layout-right" :class="rightClass" :style="`width: ${right}px`">
|
|
17
17
|
<slot name="right"></slot>
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
</template>
|
|
22
22
|
|
|
23
23
|
<script lang="ts" setup name="MEditorLayout">
|
|
24
|
-
import { onMounted, onUnmounted, ref } from 'vue';
|
|
24
|
+
import { computed, onMounted, onUnmounted, ref } from 'vue';
|
|
25
25
|
|
|
26
26
|
import Resizer from '../layouts/Resizer.vue';
|
|
27
27
|
|
|
@@ -33,29 +33,64 @@ const props = withDefaults(
|
|
|
33
33
|
right?: number;
|
|
34
34
|
minLeft?: number;
|
|
35
35
|
minRight?: number;
|
|
36
|
+
minCenter?: number;
|
|
36
37
|
leftClass?: string;
|
|
37
38
|
rightClass?: string;
|
|
38
39
|
centerClass?: string;
|
|
39
40
|
}>(),
|
|
40
41
|
{
|
|
41
|
-
minLeft:
|
|
42
|
+
minLeft: 46,
|
|
42
43
|
minRight: 1,
|
|
44
|
+
minCenter: 1,
|
|
43
45
|
},
|
|
44
46
|
);
|
|
45
47
|
|
|
46
48
|
const el = ref<HTMLElement>();
|
|
47
49
|
|
|
50
|
+
const hasLeft = computed(() => typeof props.left !== 'undefined');
|
|
51
|
+
const hasRight = computed(() => typeof props.left !== 'undefined');
|
|
52
|
+
|
|
53
|
+
const getCenterWidth = (clientWidth: number, left: number, right: number) => {
|
|
54
|
+
let center = clientWidth - left - right;
|
|
55
|
+
if (center < props.minCenter) {
|
|
56
|
+
center = props.minCenter;
|
|
57
|
+
if (left < right) {
|
|
58
|
+
right = clientWidth - left - props.minCenter;
|
|
59
|
+
} else {
|
|
60
|
+
left = clientWidth - right - props.minCenter;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
center,
|
|
65
|
+
left,
|
|
66
|
+
right,
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
|
|
48
70
|
let clientWidth = 0;
|
|
49
71
|
const resizerObserver = new ResizeObserver((entries) => {
|
|
50
72
|
for (const { contentRect } of entries) {
|
|
51
73
|
clientWidth = contentRect.width;
|
|
52
74
|
|
|
53
|
-
|
|
75
|
+
let left = props.left || 0;
|
|
76
|
+
let right = props.right || 0;
|
|
77
|
+
|
|
78
|
+
if (left > clientWidth) {
|
|
79
|
+
left = clientWidth / 3;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (right > clientWidth) {
|
|
83
|
+
right = clientWidth / 3;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const columnWidth = getCenterWidth(clientWidth, left, right);
|
|
87
|
+
|
|
88
|
+
center.value = columnWidth.center;
|
|
54
89
|
|
|
55
90
|
emit('change', {
|
|
56
|
-
left:
|
|
91
|
+
left: columnWidth.left,
|
|
57
92
|
center: center.value,
|
|
58
|
-
right:
|
|
93
|
+
right: columnWidth.right,
|
|
59
94
|
});
|
|
60
95
|
}
|
|
61
96
|
});
|
|
@@ -81,12 +116,14 @@ const changeLeft = (deltaX: number) => {
|
|
|
81
116
|
left = props.left;
|
|
82
117
|
}
|
|
83
118
|
|
|
84
|
-
|
|
119
|
+
const columnWidth = getCenterWidth(clientWidth, left, props.right || 0);
|
|
120
|
+
|
|
121
|
+
center.value = columnWidth.center;
|
|
85
122
|
|
|
86
123
|
emit('change', {
|
|
87
|
-
left,
|
|
124
|
+
left: columnWidth.left,
|
|
88
125
|
center: center.value,
|
|
89
|
-
right:
|
|
126
|
+
right: columnWidth.right,
|
|
90
127
|
});
|
|
91
128
|
};
|
|
92
129
|
|
|
@@ -99,12 +136,14 @@ const changeRight = (deltaX: number) => {
|
|
|
99
136
|
right = props.right;
|
|
100
137
|
}
|
|
101
138
|
|
|
102
|
-
|
|
139
|
+
const columnWidth = getCenterWidth(clientWidth, props.left || 0, right);
|
|
140
|
+
|
|
141
|
+
center.value = columnWidth.center;
|
|
103
142
|
|
|
104
143
|
emit('change', {
|
|
105
|
-
left:
|
|
144
|
+
left: columnWidth.left,
|
|
106
145
|
center: center.value,
|
|
107
|
-
right,
|
|
146
|
+
right: columnWidth.right,
|
|
108
147
|
});
|
|
109
148
|
};
|
|
110
149
|
</script>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
<script lang="ts" setup name="MEditorLayerMenu">
|
|
6
6
|
import { computed, inject, markRaw, ref } from 'vue';
|
|
7
|
-
import {
|
|
7
|
+
import { CopyDocument, Delete, Files, Plus } from '@element-plus/icons-vue';
|
|
8
8
|
|
|
9
9
|
import { NodeType } from '@tmagic/schema';
|
|
10
10
|
|
|
@@ -84,7 +84,7 @@ const menuData = computed<(MenuButton | MenuComponent)[]>(() => [
|
|
|
84
84
|
{
|
|
85
85
|
type: 'button',
|
|
86
86
|
text: '复制',
|
|
87
|
-
icon: markRaw(
|
|
87
|
+
icon: markRaw(CopyDocument),
|
|
88
88
|
display: () => !isRoot.value,
|
|
89
89
|
handler: () => {
|
|
90
90
|
node.value && services?.editorService.copy(node.value);
|
|
@@ -164,7 +164,7 @@ const createCodeBlock = async () => {
|
|
|
164
164
|
}
|
|
165
165
|
const codeConfig: CodeBlockContent = {
|
|
166
166
|
name: '代码块',
|
|
167
|
-
content: `() => {\n // place your code here\n}`,
|
|
167
|
+
content: `({app, params}) => {\n // place your code here\n}`,
|
|
168
168
|
params: [],
|
|
169
169
|
};
|
|
170
170
|
await codeBlockService.setMode(CodeEditorMode.EDITOR);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
<script lang="ts" setup name="MEditorViewerMenu">
|
|
6
6
|
import { computed, inject, markRaw, ref, watch } from 'vue';
|
|
7
|
-
import { Bottom, Delete, DocumentCopy, Top } from '@element-plus/icons-vue';
|
|
7
|
+
import { Bottom, CopyDocument, Delete, DocumentCopy, Top } from '@element-plus/icons-vue';
|
|
8
8
|
|
|
9
9
|
import { MNode, NodeType } from '@tmagic/schema';
|
|
10
10
|
import StageCore from '@tmagic/stage';
|
|
@@ -44,7 +44,7 @@ const menuData = computed<(MenuButton | MenuComponent)[]>(() => [
|
|
|
44
44
|
{
|
|
45
45
|
type: 'button',
|
|
46
46
|
text: '复制',
|
|
47
|
-
icon: markRaw(
|
|
47
|
+
icon: markRaw(CopyDocument),
|
|
48
48
|
handler: () => {
|
|
49
49
|
nodes.value && editorService?.copy(nodes.value);
|
|
50
50
|
canPaste.value = true;
|
|
@@ -53,6 +53,7 @@ const menuData = computed<(MenuButton | MenuComponent)[]>(() => [
|
|
|
53
53
|
{
|
|
54
54
|
type: 'button',
|
|
55
55
|
text: '粘贴',
|
|
56
|
+
icon: markRaw(DocumentCopy),
|
|
56
57
|
display: () => canPaste.value,
|
|
57
58
|
handler: () => {
|
|
58
59
|
const rect = menu.value?.$el.getBoundingClientRect();
|
|
@@ -106,13 +106,17 @@ class CodeBlock extends BaseService {
|
|
|
106
106
|
*/
|
|
107
107
|
public async setCodeDslById(id: Id, codeConfig: CodeBlockContent): Promise<void> {
|
|
108
108
|
let codeDsl = await this.getCodeDsl();
|
|
109
|
+
const codeConfigProcessed = codeConfig;
|
|
110
|
+
if (codeConfig.content) {
|
|
111
|
+
// 在保存的时候转换代码内容
|
|
112
|
+
// eslint-disable-next-line no-eval
|
|
113
|
+
codeConfigProcessed.content = eval(codeConfig.content);
|
|
114
|
+
}
|
|
109
115
|
if (!codeDsl) {
|
|
110
116
|
// dsl中无代码块字段
|
|
111
117
|
codeDsl = {
|
|
112
118
|
[id]: {
|
|
113
|
-
...
|
|
114
|
-
// eslint-disable-next-line no-eval
|
|
115
|
-
content: eval(codeConfig.content),
|
|
119
|
+
...codeConfigProcessed,
|
|
116
120
|
},
|
|
117
121
|
};
|
|
118
122
|
} else {
|
|
@@ -121,9 +125,7 @@ class CodeBlock extends BaseService {
|
|
|
121
125
|
...codeDsl,
|
|
122
126
|
[id]: {
|
|
123
127
|
...existContent,
|
|
124
|
-
...
|
|
125
|
-
// eslint-disable-next-line no-eval
|
|
126
|
-
content: eval(codeConfig.content),
|
|
128
|
+
...codeConfigProcessed,
|
|
127
129
|
},
|
|
128
130
|
};
|
|
129
131
|
}
|
|
@@ -173,7 +175,7 @@ class CodeBlock extends BaseService {
|
|
|
173
175
|
* 获取当前选中的代码块内容
|
|
174
176
|
* @returns {CodeBlockContent | null}
|
|
175
177
|
*/
|
|
176
|
-
public async getCurrentDsl() {
|
|
178
|
+
public async getCurrentDsl(): Promise<CodeBlockContent | null> {
|
|
177
179
|
return await this.getCodeContentById(this.state.id);
|
|
178
180
|
}
|
|
179
181
|
|
|
@@ -199,7 +201,7 @@ class CodeBlock extends BaseService {
|
|
|
199
201
|
* @param {Id} id 代码块id
|
|
200
202
|
* @returns {void}
|
|
201
203
|
*/
|
|
202
|
-
public setId(id: Id) {
|
|
204
|
+
public setId(id: Id): void {
|
|
203
205
|
if (!id) return;
|
|
204
206
|
this.state.id = id;
|
|
205
207
|
}
|
|
@@ -248,7 +250,7 @@ class CodeBlock extends BaseService {
|
|
|
248
250
|
|
|
249
251
|
/**
|
|
250
252
|
* 刷新绑定关系
|
|
251
|
-
* @returns {
|
|
253
|
+
* @returns {CodeRelation | null}
|
|
252
254
|
*/
|
|
253
255
|
public refreshCombineInfo(): CodeRelation | null {
|
|
254
256
|
const root = editorService.get<MApp | null>('root');
|
|
@@ -335,14 +337,14 @@ class CodeBlock extends BaseService {
|
|
|
335
337
|
* @param {MNode} compId 组件节点
|
|
336
338
|
* @returns void
|
|
337
339
|
*/
|
|
338
|
-
public async deleteCompsInRelation(node: MNode) {
|
|
340
|
+
public async deleteCompsInRelation(node: MNode): Promise<void> {
|
|
339
341
|
const codeDsl = cloneDeep(await this.getCodeDsl());
|
|
340
342
|
if (!codeDsl) return;
|
|
341
343
|
this.refreshRelationDeep(node, codeDsl);
|
|
342
344
|
this.setCodeDsl(codeDsl);
|
|
343
345
|
}
|
|
344
346
|
|
|
345
|
-
public destroy() {
|
|
347
|
+
public destroy(): void {
|
|
346
348
|
this.state.isShowCodeEditor = false;
|
|
347
349
|
this.state.codeDsl = null;
|
|
348
350
|
this.state.id = '';
|
|
@@ -358,7 +360,7 @@ class CodeBlock extends BaseService {
|
|
|
358
360
|
* @param {CodeBlockDSL} codeDsl 代码块
|
|
359
361
|
* @returns void
|
|
360
362
|
*/
|
|
361
|
-
private refreshRelationDeep(node: MNode, codeDsl: CodeBlockDSL) {
|
|
363
|
+
private refreshRelationDeep(node: MNode, codeDsl: CodeBlockDSL): void {
|
|
362
364
|
if (!node.id) return;
|
|
363
365
|
forIn(codeDsl, (codeBlockContent) => {
|
|
364
366
|
const compsContent = codeBlockContent.comps || {};
|
|
@@ -376,7 +378,7 @@ class CodeBlock extends BaseService {
|
|
|
376
378
|
* @param {MContainer} node 节点信息
|
|
377
379
|
* @returns void
|
|
378
380
|
*/
|
|
379
|
-
private recurseMNode(node: MNode, relations: CodeRelation) {
|
|
381
|
+
private recurseMNode(node: MNode, relations: CodeRelation): void {
|
|
380
382
|
forIn(node, (value, key) => {
|
|
381
383
|
if (value?.hookType === HookType.CODE && !isEmpty(value.hookData)) {
|
|
382
384
|
value.hookData.forEach((relationItem: HookData) => {
|
|
@@ -35,9 +35,7 @@
|
|
|
35
35
|
display: flex;
|
|
36
36
|
align-items: center;
|
|
37
37
|
.right-tool {
|
|
38
|
-
|
|
39
|
-
right: 15px;
|
|
40
|
-
padding-left: 5px;
|
|
38
|
+
width: fit-content !important;
|
|
41
39
|
display: flex;
|
|
42
40
|
align-items: center;
|
|
43
41
|
.edit-icon {
|
|
@@ -50,7 +48,8 @@
|
|
|
50
48
|
white-space: nowrap;
|
|
51
49
|
text-overflow: ellipsis;
|
|
52
50
|
padding: 10px 15px;
|
|
53
|
-
|
|
51
|
+
width: 0 !important;
|
|
52
|
+
flex: 1;
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
55
|
.code-comp-map-wrapper {
|
|
@@ -78,6 +77,11 @@
|
|
|
78
77
|
.m-fields-code-select {
|
|
79
78
|
width: 100%;
|
|
80
79
|
}
|
|
80
|
+
|
|
81
|
+
.el-dialog.is-fullscreen.code-editor-dialog {
|
|
82
|
+
overflow: hidden;
|
|
83
|
+
}
|
|
84
|
+
|
|
81
85
|
.code-editor-dialog {
|
|
82
86
|
.el-dialog__body {
|
|
83
87
|
height: 90%;
|
|
@@ -149,7 +153,7 @@
|
|
|
149
153
|
position: absolute;
|
|
150
154
|
top: 0;
|
|
151
155
|
left: 4px;
|
|
152
|
-
width: 100
|
|
156
|
+
width: calc(100% - 9px);
|
|
153
157
|
height: 100%;
|
|
154
158
|
z-index: 10;
|
|
155
159
|
background: #fff;
|
|
@@ -160,8 +164,16 @@
|
|
|
160
164
|
|
|
161
165
|
.m-editor-wrapper {
|
|
162
166
|
height: 100%;
|
|
167
|
+
&.fullScreen {
|
|
168
|
+
height: 100%;
|
|
169
|
+
width: 100%;
|
|
170
|
+
position: fixed;
|
|
171
|
+
top: 0;
|
|
172
|
+
left: 0;
|
|
173
|
+
z-index: 100;
|
|
174
|
+
}
|
|
163
175
|
.m-editor-container {
|
|
164
|
-
height: calc(100% -
|
|
176
|
+
height: calc(100% - 45px);
|
|
165
177
|
}
|
|
166
178
|
.m-editor-content-bottom {
|
|
167
179
|
height: 45px;
|
|
@@ -174,7 +186,7 @@
|
|
|
174
186
|
bottom: 0;
|
|
175
187
|
> button {
|
|
176
188
|
height: 30px;
|
|
177
|
-
margin-top:
|
|
189
|
+
margin-top: 5px;
|
|
178
190
|
}
|
|
179
191
|
}
|
|
180
192
|
}
|
|
@@ -5,22 +5,25 @@ declare const _default: {
|
|
|
5
5
|
$props: Partial<{
|
|
6
6
|
minLeft: number;
|
|
7
7
|
minRight: number;
|
|
8
|
+
minCenter: number;
|
|
8
9
|
}> & Omit<Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
9
10
|
left?: number | undefined;
|
|
10
11
|
right?: number | undefined;
|
|
11
12
|
minLeft?: number | undefined;
|
|
12
13
|
minRight?: number | undefined;
|
|
14
|
+
minCenter?: number | undefined;
|
|
13
15
|
leftClass?: string | undefined;
|
|
14
16
|
rightClass?: string | undefined;
|
|
15
17
|
centerClass?: string | undefined;
|
|
16
18
|
}>, {
|
|
17
19
|
minLeft: number;
|
|
18
20
|
minRight: number;
|
|
21
|
+
minCenter: number;
|
|
19
22
|
}>>> & {
|
|
20
23
|
onChange?: ((...args: any[]) => any) | undefined;
|
|
21
24
|
"onUpdate:left"?: ((...args: any[]) => any) | undefined;
|
|
22
25
|
"onUpdate:right"?: ((...args: any[]) => any) | undefined;
|
|
23
|
-
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "minLeft" | "minRight">;
|
|
26
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "minLeft" | "minRight" | "minCenter">;
|
|
24
27
|
$attrs: {
|
|
25
28
|
[x: string]: unknown;
|
|
26
29
|
};
|
|
@@ -39,12 +42,14 @@ declare const _default: {
|
|
|
39
42
|
right?: number | undefined;
|
|
40
43
|
minLeft?: number | undefined;
|
|
41
44
|
minRight?: number | undefined;
|
|
45
|
+
minCenter?: number | undefined;
|
|
42
46
|
leftClass?: string | undefined;
|
|
43
47
|
rightClass?: string | undefined;
|
|
44
48
|
centerClass?: string | undefined;
|
|
45
49
|
}>, {
|
|
46
50
|
minLeft: number;
|
|
47
51
|
minRight: number;
|
|
52
|
+
minCenter: number;
|
|
48
53
|
}>>> & {
|
|
49
54
|
onChange?: ((...args: any[]) => any) | undefined;
|
|
50
55
|
"onUpdate:left"?: ((...args: any[]) => any) | undefined;
|
|
@@ -52,6 +57,7 @@ declare const _default: {
|
|
|
52
57
|
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("change" | "update:left" | "update:right")[], string, {
|
|
53
58
|
minLeft: number;
|
|
54
59
|
minRight: number;
|
|
60
|
+
minCenter: number;
|
|
55
61
|
}> & {
|
|
56
62
|
beforeCreate?: ((() => void) | (() => void)[]) | undefined;
|
|
57
63
|
created?: ((() => void) | (() => void)[]) | undefined;
|
|
@@ -77,12 +83,14 @@ declare const _default: {
|
|
|
77
83
|
right?: number | undefined;
|
|
78
84
|
minLeft?: number | undefined;
|
|
79
85
|
minRight?: number | undefined;
|
|
86
|
+
minCenter?: number | undefined;
|
|
80
87
|
leftClass?: string | undefined;
|
|
81
88
|
rightClass?: string | undefined;
|
|
82
89
|
centerClass?: string | undefined;
|
|
83
90
|
}>, {
|
|
84
91
|
minLeft: number;
|
|
85
92
|
minRight: number;
|
|
93
|
+
minCenter: number;
|
|
86
94
|
}>>> & {
|
|
87
95
|
onChange?: ((...args: any[]) => any) | undefined;
|
|
88
96
|
"onUpdate:left"?: ((...args: any[]) => any) | undefined;
|
|
@@ -96,12 +104,14 @@ declare const _default: {
|
|
|
96
104
|
right?: number | undefined;
|
|
97
105
|
minLeft?: number | undefined;
|
|
98
106
|
minRight?: number | undefined;
|
|
107
|
+
minCenter?: number | undefined;
|
|
99
108
|
leftClass?: string | undefined;
|
|
100
109
|
rightClass?: string | undefined;
|
|
101
110
|
centerClass?: string | undefined;
|
|
102
111
|
}>, {
|
|
103
112
|
minLeft: number;
|
|
104
113
|
minRight: number;
|
|
114
|
+
minCenter: number;
|
|
105
115
|
}>>> & {
|
|
106
116
|
onChange?: ((...args: any[]) => any) | undefined;
|
|
107
117
|
"onUpdate:left"?: ((...args: any[]) => any) | undefined;
|
|
@@ -109,6 +119,7 @@ declare const _default: {
|
|
|
109
119
|
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("change" | "update:left" | "update:right")[], "change" | "update:left" | "update:right", {
|
|
110
120
|
minLeft: number;
|
|
111
121
|
minRight: number;
|
|
122
|
+
minCenter: number;
|
|
112
123
|
}> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
|
|
113
124
|
$slots: {
|
|
114
125
|
left: (_: {}) => any;
|