Commit a812685084b45ce3c6b6675bb1569e324f742416
1 parent
c04e8943
feat: add codeEditor component
Showing
19 changed files
with
1159 additions
and
41 deletions
CHANGELOG.zh_CN.md
package.json
... | ... | @@ -39,6 +39,7 @@ |
39 | 39 | "@zxcvbn-ts/core": "^0.3.0", |
40 | 40 | "ant-design-vue": "^2.1.2", |
41 | 41 | "axios": "^0.21.1", |
42 | + "codemirror": "^5.60.0", | |
42 | 43 | "cropperjs": "^1.5.11", |
43 | 44 | "crypto-js": "^4.0.0", |
44 | 45 | "echarts": "^5.1.0", |
... | ... | @@ -64,6 +65,7 @@ |
64 | 65 | "@commitlint/config-conventional": "^12.1.1", |
65 | 66 | "@iconify/json": "^1.1.330", |
66 | 67 | "@purge-icons/generated": "^0.7.0", |
68 | + "@types/codemirror": "^0.0.109", | |
67 | 69 | "@types/crypto-js": "^4.0.1", |
68 | 70 | "@types/fs-extra": "^9.0.11", |
69 | 71 | "@types/inquirer": "^7.3.1", | ... | ... |
src/components/CodeEditor/index.ts
0 → 100644
src/components/CodeEditor/src/CodeEditor.vue
0 → 100644
1 | +<template> | |
2 | + <div class="h-full"> | |
3 | + <CodeMirrorEditor :value="getValue" @change="handleValueChange" :mode="mode" /> | |
4 | + </div> | |
5 | +</template> | |
6 | +<script lang="ts"> | |
7 | + import { defineComponent, computed } from 'vue'; | |
8 | + import CodeMirrorEditor from './codemirror/CodeMirror.vue'; | |
9 | + import { isString } from '/@/utils/is'; | |
10 | + | |
11 | + const MODE = { | |
12 | + JSON: 'application/json', | |
13 | + html: 'htmlmixed', | |
14 | + js: 'javascript', | |
15 | + }; | |
16 | + export default defineComponent({ | |
17 | + name: 'CodeEditor', | |
18 | + components: { CodeMirrorEditor }, | |
19 | + props: { | |
20 | + value: { | |
21 | + type: [Object, String], | |
22 | + }, | |
23 | + mode: { | |
24 | + type: String, | |
25 | + default: MODE.JSON, | |
26 | + }, | |
27 | + }, | |
28 | + emits: ['change'], | |
29 | + setup(props, { emit }) { | |
30 | + const getValue = computed(() => { | |
31 | + const { value, mode } = props; | |
32 | + | |
33 | + if (mode === MODE.JSON) { | |
34 | + return isString(value) | |
35 | + ? JSON.stringify(JSON.parse(value), null, 2) | |
36 | + : JSON.stringify(value, null, 2); | |
37 | + } | |
38 | + return value; | |
39 | + }); | |
40 | + | |
41 | + function handleValueChange(v) { | |
42 | + emit('change', v); | |
43 | + } | |
44 | + | |
45 | + return { | |
46 | + handleValueChange, | |
47 | + getValue, | |
48 | + }; | |
49 | + }, | |
50 | + }); | |
51 | +</script> | ... | ... |
src/components/CodeEditor/src/codemirror/CodeMirror.vue
0 → 100644
1 | +<template> | |
2 | + <div class="relative h-100 !h-full w-full overflow-hidden" ref="el"> </div> | |
3 | +</template> | |
4 | + | |
5 | +<script lang="ts"> | |
6 | + import { | |
7 | + ref, | |
8 | + onMounted, | |
9 | + onUnmounted, | |
10 | + watchEffect, | |
11 | + watch, | |
12 | + defineComponent, | |
13 | + unref, | |
14 | + nextTick, | |
15 | + } from 'vue'; | |
16 | + import { useDebounceFn } from '@vueuse/core'; | |
17 | + import { useAppStore } from '/@/store/modules/app'; | |
18 | + | |
19 | + import CodeMirror from 'codemirror'; | |
20 | + import './codemirror.css'; | |
21 | + import 'codemirror/theme/idea.css'; | |
22 | + import 'codemirror/theme/material-palenight.css'; | |
23 | + | |
24 | + // modes | |
25 | + import 'codemirror/mode/javascript/javascript'; | |
26 | + import 'codemirror/mode/css/css'; | |
27 | + import 'codemirror/mode/htmlmixed/htmlmixed'; | |
28 | + export default defineComponent({ | |
29 | + props: { | |
30 | + mode: { | |
31 | + type: String, | |
32 | + default: 'application/json', | |
33 | + }, | |
34 | + value: { | |
35 | + type: String, | |
36 | + default: '', | |
37 | + }, | |
38 | + readonly: { | |
39 | + type: Boolean, | |
40 | + default: false, | |
41 | + }, | |
42 | + }, | |
43 | + emits: ['change'], | |
44 | + setup(props, { emit }) { | |
45 | + const el = ref(); | |
46 | + let editor: Nullable<CodeMirror.Editor>; | |
47 | + | |
48 | + const debounceRefresh = useDebounceFn(refresh, 100); | |
49 | + const appStore = useAppStore(); | |
50 | + | |
51 | + watch( | |
52 | + () => props.value, | |
53 | + async (v) => { | |
54 | + await nextTick(); | |
55 | + const oldValue = editor?.getValue(); | |
56 | + v && v !== oldValue && editor?.setValue(v); | |
57 | + }, | |
58 | + { flush: 'post' } | |
59 | + ); | |
60 | + | |
61 | + watchEffect(() => { | |
62 | + editor?.setOption('mode', props.mode); | |
63 | + }); | |
64 | + | |
65 | + watch( | |
66 | + () => appStore.getDarkMode, | |
67 | + async () => { | |
68 | + setTheme(); | |
69 | + }, | |
70 | + { | |
71 | + immediate: true, | |
72 | + } | |
73 | + ); | |
74 | + | |
75 | + function setTheme() { | |
76 | + unref(editor)?.setOption( | |
77 | + 'theme', | |
78 | + appStore.getDarkMode === 'light' ? 'idea' : 'material-palenight' | |
79 | + ); | |
80 | + } | |
81 | + | |
82 | + function refresh() { | |
83 | + editor?.refresh(); | |
84 | + } | |
85 | + | |
86 | + async function init() { | |
87 | + const addonOptions = { | |
88 | + autoCloseBrackets: true, | |
89 | + autoCloseTags: true, | |
90 | + foldGutter: true, | |
91 | + gutters: ['CodeMirror-linenumbers'], | |
92 | + }; | |
93 | + | |
94 | + editor = CodeMirror(el.value!, { | |
95 | + value: '', | |
96 | + mode: props.mode, | |
97 | + readOnly: props.readonly, | |
98 | + tabSize: 2, | |
99 | + theme: 'material-palenight', | |
100 | + lineWrapping: true, | |
101 | + lineNumbers: true, | |
102 | + ...addonOptions, | |
103 | + }); | |
104 | + editor?.setValue(props.value); | |
105 | + setTheme(); | |
106 | + editor?.on('change', () => { | |
107 | + emit('change', editor?.getValue()); | |
108 | + }); | |
109 | + } | |
110 | + | |
111 | + onMounted(async () => { | |
112 | + await nextTick(); | |
113 | + init(); | |
114 | + window.addEventListener('resize', debounceRefresh); | |
115 | + setTimeout(refresh, 50); | |
116 | + }); | |
117 | + | |
118 | + onUnmounted(() => { | |
119 | + window.removeEventListener('resize', debounceRefresh); | |
120 | + editor = null; | |
121 | + }); | |
122 | + return { el }; | |
123 | + }, | |
124 | + }); | |
125 | +</script> | ... | ... |
src/components/CodeEditor/src/codemirror/codeMirror.ts
0 → 100644
1 | +import CodeMirror from 'codemirror'; | |
2 | +import './codemirror.css'; | |
3 | +import 'codemirror/theme/idea.css'; | |
4 | +import 'codemirror/theme/material-palenight.css'; | |
5 | +// import 'codemirror/addon/lint/lint.css'; | |
6 | + | |
7 | +// modes | |
8 | +import 'codemirror/mode/javascript/javascript'; | |
9 | +import 'codemirror/mode/css/css'; | |
10 | +import 'codemirror/mode/htmlmixed/htmlmixed'; | |
11 | +// addons | |
12 | +// import 'codemirror/addon/edit/closebrackets'; | |
13 | +// import 'codemirror/addon/edit/closetag'; | |
14 | +// import 'codemirror/addon/comment/comment'; | |
15 | +// import 'codemirror/addon/fold/foldcode'; | |
16 | +// import 'codemirror/addon/fold/foldgutter'; | |
17 | +// import 'codemirror/addon/fold/brace-fold'; | |
18 | +// import 'codemirror/addon/fold/indent-fold'; | |
19 | +// import 'codemirror/addon/lint/json-lint'; | |
20 | +// import 'codemirror/addon/fold/comment-fold'; | |
21 | +export { CodeMirror }; | ... | ... |
src/components/CodeEditor/src/codemirror/codemirror.css
0 → 100644
1 | +/* BASICS */ | |
2 | + | |
3 | +.CodeMirror { | |
4 | + --base: #545281; | |
5 | + --comment: hsl(210, 25%, 60%); | |
6 | + --keyword: #af4ab1; | |
7 | + --variable: #0055d1; | |
8 | + --function: #c25205; | |
9 | + --string: #2ba46d; | |
10 | + --number: #c25205; | |
11 | + --tags: #d00; | |
12 | + --qualifier: #ff6032; | |
13 | + --important: var(--string); | |
14 | + | |
15 | + height: auto; | |
16 | + height: 100%; | |
17 | + font-family: var(--font-code); | |
18 | + direction: ltr; | |
19 | +} | |
20 | + | |
21 | +/* PADDING */ | |
22 | + | |
23 | +.CodeMirror-lines { | |
24 | + padding: 4px 0; /* Vertical padding around content */ | |
25 | +} | |
26 | + | |
27 | +.CodeMirror pre { | |
28 | + padding: 0 4px; /* Horizontal padding of content */ | |
29 | +} | |
30 | + | |
31 | +.CodeMirror-scrollbar-filler, | |
32 | +.CodeMirror-gutter-filler { | |
33 | + background-color: white; /* The little square between H and V scrollbars */ | |
34 | +} | |
35 | + | |
36 | +/* GUTTER */ | |
37 | + | |
38 | +.CodeMirror-gutters { | |
39 | + white-space: nowrap; | |
40 | + background-color: transparent; | |
41 | + border-right: 1px solid #ddd; | |
42 | +} | |
43 | + | |
44 | +.CodeMirror-linenumber { | |
45 | + min-width: 20px; | |
46 | + padding: 0 3px 0 5px; | |
47 | + color: var(--comment); | |
48 | + text-align: right; | |
49 | + white-space: nowrap; | |
50 | + opacity: 0.6; | |
51 | +} | |
52 | + | |
53 | +.CodeMirror-guttermarker { | |
54 | + color: black; | |
55 | +} | |
56 | + | |
57 | +.CodeMirror-guttermarker-subtle { | |
58 | + color: #999; | |
59 | +} | |
60 | + | |
61 | +/* FOLD GUTTER */ | |
62 | + | |
63 | +.CodeMirror-foldmarker { | |
64 | + font-family: arial; | |
65 | + line-height: 0.3; | |
66 | + color: #414141; | |
67 | + text-shadow: #f96 1px 1px 2px, #f96 -1px -1px 2px, #f96 1px -1px 2px, #f96 -1px 1px 2px; | |
68 | + cursor: pointer; | |
69 | +} | |
70 | + | |
71 | +.CodeMirror-foldgutter { | |
72 | + width: 0.7em; | |
73 | +} | |
74 | + | |
75 | +.CodeMirror-foldgutter-open, | |
76 | +.CodeMirror-foldgutter-folded { | |
77 | + cursor: pointer; | |
78 | +} | |
79 | + | |
80 | +.CodeMirror-foldgutter-open::after, | |
81 | +.CodeMirror-foldgutter-folded::after { | |
82 | + position: relative; | |
83 | + top: -0.1em; | |
84 | + display: inline-block; | |
85 | + font-size: 0.8em; | |
86 | + content: '>'; | |
87 | + opacity: 0.8; | |
88 | + transform: rotate(90deg); | |
89 | + transition: transform 0.2s; | |
90 | +} | |
91 | + | |
92 | +.CodeMirror-foldgutter-folded::after { | |
93 | + transform: none; | |
94 | +} | |
95 | + | |
96 | +/* CURSOR */ | |
97 | + | |
98 | +.CodeMirror-cursor { | |
99 | + width: 0; | |
100 | + border-right: none; | |
101 | + border-left: 1px solid black; | |
102 | +} | |
103 | + | |
104 | +/* Shown when moving in bi-directional text */ | |
105 | +.CodeMirror div.CodeMirror-secondarycursor { | |
106 | + border-left: 1px solid silver; | |
107 | +} | |
108 | + | |
109 | +.cm-fat-cursor .CodeMirror-cursor { | |
110 | + width: auto; | |
111 | + background: #7e7; | |
112 | + border: 0 !important; | |
113 | +} | |
114 | + | |
115 | +.cm-fat-cursor div.CodeMirror-cursors { | |
116 | + z-index: 1; | |
117 | +} | |
118 | + | |
119 | +.cm-fat-cursor-mark { | |
120 | + background-color: rgba(20, 255, 20, 0.5); | |
121 | + -webkit-animation: blink 1.06s steps(1) infinite; | |
122 | + -moz-animation: blink 1.06s steps(1) infinite; | |
123 | + animation: blink 1.06s steps(1) infinite; | |
124 | +} | |
125 | + | |
126 | +.cm-animate-fat-cursor { | |
127 | + width: auto; | |
128 | + background-color: #7e7; | |
129 | + border: 0; | |
130 | + -webkit-animation: blink 1.06s steps(1) infinite; | |
131 | + -moz-animation: blink 1.06s steps(1) infinite; | |
132 | + animation: blink 1.06s steps(1) infinite; | |
133 | +} | |
134 | +@-moz-keyframes blink { | |
135 | + 0% { | |
136 | + } | |
137 | + | |
138 | + 50% { | |
139 | + background-color: transparent; | |
140 | + } | |
141 | + | |
142 | + 100% { | |
143 | + } | |
144 | +} | |
145 | +@-webkit-keyframes blink { | |
146 | + 0% { | |
147 | + } | |
148 | + | |
149 | + 50% { | |
150 | + background-color: transparent; | |
151 | + } | |
152 | + | |
153 | + 100% { | |
154 | + } | |
155 | +} | |
156 | +@keyframes blink { | |
157 | + 0% { | |
158 | + } | |
159 | + | |
160 | + 50% { | |
161 | + background-color: transparent; | |
162 | + } | |
163 | + | |
164 | + 100% { | |
165 | + } | |
166 | +} | |
167 | + | |
168 | +.cm-tab { | |
169 | + display: inline-block; | |
170 | + text-decoration: inherit; | |
171 | +} | |
172 | + | |
173 | +.CodeMirror-rulers { | |
174 | + position: absolute; | |
175 | + top: -50px; | |
176 | + right: 0; | |
177 | + bottom: -20px; | |
178 | + left: 0; | |
179 | + overflow: hidden; | |
180 | +} | |
181 | + | |
182 | +.CodeMirror-ruler { | |
183 | + position: absolute; | |
184 | + top: 0; | |
185 | + bottom: 0; | |
186 | + border-left: 1px solid #ccc; | |
187 | +} | |
188 | + | |
189 | +/* DEFAULT THEME */ | |
190 | +.cm-s-default.CodeMirror { | |
191 | + background-color: transparent; | |
192 | +} | |
193 | + | |
194 | +.cm-s-default .cm-header { | |
195 | + color: blue; | |
196 | +} | |
197 | + | |
198 | +.cm-s-default .cm-quote { | |
199 | + color: #090; | |
200 | +} | |
201 | + | |
202 | +.cm-negative { | |
203 | + color: #d44; | |
204 | +} | |
205 | + | |
206 | +.cm-positive { | |
207 | + color: #292; | |
208 | +} | |
209 | + | |
210 | +.cm-header, | |
211 | +.cm-strong { | |
212 | + font-weight: bold; | |
213 | +} | |
214 | + | |
215 | +.cm-em { | |
216 | + font-style: italic; | |
217 | +} | |
218 | + | |
219 | +.cm-link { | |
220 | + text-decoration: underline; | |
221 | +} | |
222 | + | |
223 | +.cm-strikethrough { | |
224 | + text-decoration: line-through; | |
225 | +} | |
226 | + | |
227 | +.cm-s-default .cm-atom, | |
228 | +.cm-s-default .cm-def, | |
229 | +.cm-s-default .cm-property, | |
230 | +.cm-s-default .cm-variable-2, | |
231 | +.cm-s-default .cm-variable-3, | |
232 | +.cm-s-default .cm-punctuation { | |
233 | + color: var(--base); | |
234 | +} | |
235 | + | |
236 | +.cm-s-default .cm-hr, | |
237 | +.cm-s-default .cm-comment { | |
238 | + color: var(--comment); | |
239 | +} | |
240 | + | |
241 | +.cm-s-default .cm-attribute, | |
242 | +.cm-s-default .cm-keyword { | |
243 | + color: var(--keyword); | |
244 | +} | |
245 | + | |
246 | +.cm-s-default .cm-variable { | |
247 | + color: var(--variable); | |
248 | +} | |
249 | + | |
250 | +.cm-s-default .cm-bracket, | |
251 | +.cm-s-default .cm-tag { | |
252 | + color: var(--tags); | |
253 | +} | |
254 | + | |
255 | +.cm-s-default .cm-number { | |
256 | + color: var(--number); | |
257 | +} | |
258 | + | |
259 | +.cm-s-default .cm-string, | |
260 | +.cm-s-default .cm-string-2 { | |
261 | + color: var(--string); | |
262 | +} | |
263 | + | |
264 | +.cm-s-default .cm-type { | |
265 | + color: #085; | |
266 | +} | |
267 | + | |
268 | +.cm-s-default .cm-meta { | |
269 | + color: #555; | |
270 | +} | |
271 | + | |
272 | +.cm-s-default .cm-qualifier { | |
273 | + color: var(--qualifier); | |
274 | +} | |
275 | + | |
276 | +.cm-s-default .cm-builtin { | |
277 | + color: #7539ff; | |
278 | +} | |
279 | + | |
280 | +.cm-s-default .cm-link { | |
281 | + color: var(--flash); | |
282 | +} | |
283 | + | |
284 | +.cm-s-default .cm-error { | |
285 | + color: #ff008c; | |
286 | +} | |
287 | + | |
288 | +.cm-invalidchar { | |
289 | + color: #ff008c; | |
290 | +} | |
291 | + | |
292 | +.CodeMirror-composing { | |
293 | + border-bottom: 2px solid; | |
294 | +} | |
295 | + | |
296 | +/* Default styles for common addons */ | |
297 | + | |
298 | +div.CodeMirror span.CodeMirror-matchingbracket { | |
299 | + color: #0b0; | |
300 | +} | |
301 | + | |
302 | +div.CodeMirror span.CodeMirror-nonmatchingbracket { | |
303 | + color: #a22; | |
304 | +} | |
305 | + | |
306 | +.CodeMirror-matchingtag { | |
307 | + background: rgba(255, 150, 0, 0.3); | |
308 | +} | |
309 | + | |
310 | +.CodeMirror-activeline-background { | |
311 | + background: #e8f2ff; | |
312 | +} | |
313 | + | |
314 | +/* STOP */ | |
315 | + | |
316 | +/* The rest of this file contains styles related to the mechanics of | |
317 | + the editor. You probably shouldn't touch them. */ | |
318 | + | |
319 | +.CodeMirror { | |
320 | + position: relative; | |
321 | + overflow: hidden; | |
322 | + background: white; | |
323 | +} | |
324 | + | |
325 | +.CodeMirror-scroll { | |
326 | + position: relative; | |
327 | + height: 100%; | |
328 | + padding-bottom: 30px; | |
329 | + margin-right: -30px; | |
330 | + | |
331 | + /* 30px is the magic margin used to hide the element's real scrollbars */ | |
332 | + | |
333 | + /* See overflow: hidden in .CodeMirror */ | |
334 | + margin-bottom: -30px; | |
335 | + overflow: scroll !important; /* Things will break if this is overridden */ | |
336 | + outline: none; /* Prevent dragging from highlighting the element */ | |
337 | +} | |
338 | + | |
339 | +.CodeMirror-sizer { | |
340 | + position: relative; | |
341 | + border-right: 30px solid transparent; | |
342 | +} | |
343 | + | |
344 | +/* The fake, visible scrollbars. Used to force redraw during scrolling | |
345 | + before actual scrolling happens, thus preventing shaking and | |
346 | + flickering artifacts. */ | |
347 | +.CodeMirror-vscrollbar, | |
348 | +.CodeMirror-hscrollbar, | |
349 | +.CodeMirror-scrollbar-filler, | |
350 | +.CodeMirror-gutter-filler { | |
351 | + position: absolute; | |
352 | + z-index: 6; | |
353 | + display: none; | |
354 | +} | |
355 | + | |
356 | +.CodeMirror-vscrollbar { | |
357 | + top: 0; | |
358 | + right: 0; | |
359 | + overflow-x: hidden; | |
360 | + overflow-y: scroll; | |
361 | +} | |
362 | + | |
363 | +.CodeMirror-hscrollbar { | |
364 | + bottom: 0; | |
365 | + left: 0; | |
366 | + overflow-x: scroll; | |
367 | + overflow-y: hidden; | |
368 | +} | |
369 | + | |
370 | +.CodeMirror-scrollbar-filler { | |
371 | + right: 0; | |
372 | + bottom: 0; | |
373 | +} | |
374 | + | |
375 | +.CodeMirror-gutter-filler { | |
376 | + bottom: 0; | |
377 | + left: 0; | |
378 | +} | |
379 | + | |
380 | +.CodeMirror-gutters { | |
381 | + position: absolute; | |
382 | + top: 0; | |
383 | + left: 0; | |
384 | + z-index: 3; | |
385 | + min-height: 100%; | |
386 | +} | |
387 | + | |
388 | +.CodeMirror-gutter { | |
389 | + display: inline-block; | |
390 | + height: 100%; | |
391 | + margin-bottom: -30px; | |
392 | + white-space: normal; | |
393 | + vertical-align: top; | |
394 | +} | |
395 | + | |
396 | +.CodeMirror-gutter-wrapper { | |
397 | + position: absolute; | |
398 | + z-index: 4; | |
399 | + background: none !important; | |
400 | + border: none !important; | |
401 | +} | |
402 | + | |
403 | +.CodeMirror-gutter-background { | |
404 | + position: absolute; | |
405 | + top: 0; | |
406 | + bottom: 0; | |
407 | + z-index: 4; | |
408 | +} | |
409 | + | |
410 | +.CodeMirror-gutter-elt { | |
411 | + position: absolute; | |
412 | + z-index: 4; | |
413 | + cursor: default; | |
414 | +} | |
415 | + | |
416 | +.CodeMirror-gutter-wrapper ::selection { | |
417 | + background-color: transparent; | |
418 | +} | |
419 | + | |
420 | +.CodeMirror-gutter-wrapper ::-moz-selection { | |
421 | + background-color: transparent; | |
422 | +} | |
423 | + | |
424 | +.CodeMirror-lines { | |
425 | + min-height: 1px; /* prevents collapsing before first draw */ | |
426 | + cursor: text; | |
427 | +} | |
428 | + | |
429 | +.CodeMirror pre { | |
430 | + position: relative; | |
431 | + z-index: 2; | |
432 | + margin: 0; | |
433 | + overflow: visible; | |
434 | + font-family: inherit; | |
435 | + font-size: inherit; | |
436 | + line-height: inherit; | |
437 | + color: inherit; | |
438 | + word-wrap: normal; | |
439 | + white-space: pre; | |
440 | + background: transparent; | |
441 | + border-width: 0; | |
442 | + | |
443 | + /* Reset some styles that the rest of the page might have set */ | |
444 | + -moz-border-radius: 0; | |
445 | + -webkit-border-radius: 0; | |
446 | + border-radius: 0; | |
447 | + -webkit-tap-highlight-color: transparent; | |
448 | + -webkit-font-variant-ligatures: contextual; | |
449 | + font-variant-ligatures: contextual; | |
450 | +} | |
451 | + | |
452 | +.CodeMirror-wrap pre { | |
453 | + word-break: normal; | |
454 | + word-wrap: break-word; | |
455 | + white-space: pre-wrap; | |
456 | +} | |
457 | + | |
458 | +.CodeMirror-linebackground { | |
459 | + position: absolute; | |
460 | + top: 0; | |
461 | + right: 0; | |
462 | + bottom: 0; | |
463 | + left: 0; | |
464 | + z-index: 0; | |
465 | +} | |
466 | + | |
467 | +.CodeMirror-linewidget { | |
468 | + position: relative; | |
469 | + z-index: 2; | |
470 | + padding: 0.1px; /* Force widget margins to stay inside of the container */ | |
471 | +} | |
472 | + | |
473 | +.CodeMirror-rtl pre { | |
474 | + direction: rtl; | |
475 | +} | |
476 | + | |
477 | +.CodeMirror-code { | |
478 | + outline: none; | |
479 | +} | |
480 | + | |
481 | +/* Force content-box sizing for the elements where we expect it */ | |
482 | +.CodeMirror-scroll, | |
483 | +.CodeMirror-sizer, | |
484 | +.CodeMirror-gutter, | |
485 | +.CodeMirror-gutters, | |
486 | +.CodeMirror-linenumber { | |
487 | + -moz-box-sizing: content-box; | |
488 | + box-sizing: content-box; | |
489 | +} | |
490 | + | |
491 | +.CodeMirror-measure { | |
492 | + position: absolute; | |
493 | + width: 100%; | |
494 | + height: 0; | |
495 | + overflow: hidden; | |
496 | + visibility: hidden; | |
497 | +} | |
498 | + | |
499 | +.CodeMirror-cursor { | |
500 | + position: absolute; | |
501 | + pointer-events: none; | |
502 | +} | |
503 | + | |
504 | +.CodeMirror-measure pre { | |
505 | + position: static; | |
506 | +} | |
507 | + | |
508 | +div.CodeMirror-cursors { | |
509 | + position: relative; | |
510 | + z-index: 3; | |
511 | + visibility: hidden; | |
512 | +} | |
513 | + | |
514 | +div.CodeMirror-dragcursors { | |
515 | + visibility: visible; | |
516 | +} | |
517 | + | |
518 | +.CodeMirror-focused div.CodeMirror-cursors { | |
519 | + visibility: visible; | |
520 | +} | |
521 | + | |
522 | +.CodeMirror-selected { | |
523 | + background: #d9d9d9; | |
524 | +} | |
525 | + | |
526 | +.CodeMirror-focused .CodeMirror-selected { | |
527 | + background: #d7d4f0; | |
528 | +} | |
529 | + | |
530 | +.CodeMirror-crosshair { | |
531 | + cursor: crosshair; | |
532 | +} | |
533 | + | |
534 | +.CodeMirror-line::selection, | |
535 | +.CodeMirror-line > span::selection, | |
536 | +.CodeMirror-line > span > span::selection { | |
537 | + background: #d7d4f0; | |
538 | +} | |
539 | + | |
540 | +.CodeMirror-line::-moz-selection, | |
541 | +.CodeMirror-line > span::-moz-selection, | |
542 | +.CodeMirror-line > span > span::-moz-selection { | |
543 | + background: #d7d4f0; | |
544 | +} | |
545 | + | |
546 | +.cm-searching { | |
547 | + background-color: #ffa; | |
548 | + background-color: rgba(255, 255, 0, 0.4); | |
549 | +} | |
550 | + | |
551 | +/* Used to force a border model for a node */ | |
552 | +.cm-force-border { | |
553 | + padding-right: 0.1px; | |
554 | +} | |
555 | + | |
556 | +@media print { | |
557 | + /* Hide the cursor when printing */ | |
558 | + .CodeMirror div.CodeMirror-cursors { | |
559 | + visibility: hidden; | |
560 | + } | |
561 | +} | |
562 | + | |
563 | +/* See issue #2901 */ | |
564 | +.cm-tab-wrap-hack::after { | |
565 | + content: ''; | |
566 | +} | |
567 | + | |
568 | +/* Help users use markselection to safely style text background */ | |
569 | +span.CodeMirror-selectedtext { | |
570 | + background: none; | |
571 | +} | ... | ... |
src/components/FlowChart/index.ts
src/components/FlowChart/src/index.css
0 → 100644
1 | +.lf-control { | |
2 | + position: absolute; | |
3 | + top: 0; | |
4 | + right: 10px; | |
5 | + display: flex; | |
6 | + padding: 0 15px; | |
7 | + margin: 5px; | |
8 | + background: rgba(255, 255, 255, 0.8); | |
9 | + border-radius: 5px; | |
10 | + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); | |
11 | + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); | |
12 | +} | |
13 | + | |
14 | +.lf-control-item { | |
15 | + display: flex; | |
16 | + padding: 5px 10px; | |
17 | + cursor: pointer; | |
18 | + flex-direction: column; | |
19 | + align-items: center; | |
20 | + justify-content: center; | |
21 | +} | |
22 | + | |
23 | +.lf-control-item:hover { | |
24 | + background: #efefef; | |
25 | +} | |
26 | + | |
27 | +.lf-control-item.disabled { | |
28 | + cursor: not-allowed; | |
29 | + filter: opacity(0.6); | |
30 | +} | |
31 | + | |
32 | +.lf-control-item.disabled:hover { | |
33 | + background: #fff; | |
34 | +} | |
35 | + | |
36 | +.lf-control-item.disabled i { | |
37 | + pointer-events: none; | |
38 | +} | |
39 | + | |
40 | +.lf-control-item i { | |
41 | + display: inline-block; | |
42 | + width: 20px; | |
43 | + height: 20px; | |
44 | + vertical-align: middle; | |
45 | + background-size: cover; | |
46 | +} | |
47 | + | |
48 | +.lf-control-text { | |
49 | + margin-top: 5px; | |
50 | + font-size: 12px; | |
51 | +} | |
52 | + | |
53 | +.lf-control-zoomOut { | |
54 | + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAFMElEQVR4Xu3dsQ3CQBBFQei/KEoDXQG2xAv9h3yDnb0nh7xffgQIXAq82RAgcC0gEK+DwI2AQDwPAgLxBgg0AV+Q5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk3gBPJpo6YIPF/gBPJ9/po2JNAEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaETiB+AOdkWNb83+BE4gfAQIXAgLxNAjcCAjE8yAgEG+AQBPwBWlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCPwAiAUiJ9hUCCUAAAAASUVORK5CYII=); | |
55 | +} | |
56 | + | |
57 | +.lf-control-zoomIn { | |
58 | + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAGr0lEQVR4Xu3dsW3cABQEUaoIN+F6DDfpJlSFm1ARMi53JAywwse7nHP8s5iYb49faeDP8zy/SuAXWK93+P2F5zzyHwNvrKQGBJLq3MME0m4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55wmkHYCgbQ+5zSBtBMIpPU5pwmknUAgrc85TSDtBAJpfc5pAmknEEjrc04TSDuBQFqfc5pA2gkE0vqc0wTSTiCQ1uecJpB2AoG0Puc0gbQTCKT1OacJpJ1AIK3POU0g7QQCaX3OaQJpJxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55wmkHYCgbQ+5zSBtBMIpPU5pwmknUAgrc85TSDtBAJpfc5pAmknEEjrc04TSDuBQFqfc5pA2gkE0vqc0wTSTiCQ1uecJpB2AoG0Puc0gbQTCKT1OacJpJ1AIK3POU0g7QQCaX3OaQJpJxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55wmkHYCgbQ+5zSBtBMIpPU5pwmknUAgrc85TSDtBAJpfc5pAmknEEjrc04TSDuBQFqfc5pA2gkE0vqc0wTSTiCQ1uecJpB2AoG0Puc0gbQTCKT1OacJpJ1AIK3POU0g7QQCaX3OaQJpJxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55z2CuR9/hZ3XuDn8zw/xud8PM/zd/wOZ/7+FcjnmWscwkBsQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2XgFYgP6HSb+oBO5/JbkF6B+HUGfIKtc/ktSAJpZxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55wmkHYCgbQ+5zSBtBMIpPU5pwmknUAgrc85TSDtBAJpfc5pAmknEEjrc04TSDuBQFqfc5pA2gkE0vqc0wTSTiCQ1uecJpB2AoG0Puc0gbQTCKT1OacJpJ1AIK3POU0g7QQCaX3OaQJpJxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55wmkHYCgbQ+5zSBtBMIpPU5pwmknUAgrc85TSDtBAJpfc5pAmknEEjrc04TSDuBQFqfc5pA2gkE0vqc0wTSTiCQ1uecJpB2AoG0Puc0gbQTCKT1OacJpJ1AIK3POU0g7QQCaX3OaQJpJxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55wmkHYCgbQ+5zSBtBMIpPU5pwmknUAgrc85TSDtBAJpfc5pAmknEEjrc04TSDuBQFqfc5pA2gkE0vqc0wTSTiCQ1uecJpB2AoG0Puc0gbQTCKT1OacJpJ1AIK3POU0g7QQCaX3OaQJpJxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9z2j95TXI4rwKcnQAAAABJRU5ErkJggg==); | |
59 | +} | |
60 | + | |
61 | +.lf-control-fit { | |
62 | + background-image: url(data:image/png;base64,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); | |
63 | +} | |
64 | + | |
65 | +.lf-control-undo { | |
66 | + background-image: url(data:image/png;base64,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); | |
67 | +} | |
68 | + | |
69 | +.lf-control-redo { | |
70 | + background-image: url(data:image/png;base64,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); | |
71 | +} | |
72 | + | |
73 | +/* menu */ | |
74 | +.lf-menu { | |
75 | + position: absolute; | |
76 | + display: none; | |
77 | + width: 200px; | |
78 | + padding: 10px 0; | |
79 | + margin: 0 0 0 10px; | |
80 | + background: #fff; | |
81 | + border: 1px solid #efefee; | |
82 | + border-radius: 3px; | |
83 | +} | |
84 | + | |
85 | +.lf-menu > li { | |
86 | + position: relative; | |
87 | + padding: 3px 12px; | |
88 | + font-size: 12px; | |
89 | + line-height: 18px; | |
90 | + list-style: none; | |
91 | + cursor: pointer; | |
92 | + transition: all 120ms ease-in-out; | |
93 | +} | |
94 | + | |
95 | +.lf-menu-item__disabled { | |
96 | + color: #aaa; | |
97 | + pointer-events: none; | |
98 | + cursor: default; | |
99 | + opacity: 0.88; | |
100 | +} | |
101 | + | |
102 | +.lf-menu-item:hover { | |
103 | + background: #f3f3f3; | |
104 | +} | |
105 | + | |
106 | +/* dnd */ | |
107 | +.lf-dnd { | |
108 | + position: absolute; | |
109 | + padding: 15px 5px; | |
110 | + margin: 5px; | |
111 | + background: rgba(255, 255, 255, 0.8); | |
112 | + border-radius: 5px; | |
113 | + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); | |
114 | +} | |
115 | + | |
116 | +.lf-dnd-item { | |
117 | + margin-top: 5px; | |
118 | + font-size: 14px; | |
119 | + text-align: center; | |
120 | +} | |
121 | + | |
122 | +.lf-dnd-item:first-child { | |
123 | + margin-top: 0; | |
124 | +} | |
125 | + | |
126 | +.lf-dnd-item div { | |
127 | + width: 40px; | |
128 | + height: 40px; | |
129 | +} | |
130 | + | |
131 | +.lf-dnd-item div:hover { | |
132 | + cursor: grab; | |
133 | +} | |
134 | + | |
135 | +.lf-dnd-circle { | |
136 | + background: url('data:image/png;base64,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') | |
137 | + center center no-repeat; | |
138 | +} | |
139 | + | |
140 | +.lf-dnd-rect { | |
141 | + background: url('data:image/png;base64,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') | |
142 | + center center no-repeat; | |
143 | +} | |
144 | + | |
145 | +.lf-dnd-polygon { | |
146 | + background: url('data:image/png;base64,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') | |
147 | + center center no-repeat; | |
148 | +} | |
149 | + | |
150 | +.lf-dnd-triangle { | |
151 | + background: url('data:image/png;base64,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') | |
152 | + center center no-repeat; | |
153 | +} | |
154 | + | |
155 | +.lf-dnd-hexagon { | |
156 | + background: url('data:image/png;base64,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') | |
157 | + center center no-repeat; | |
158 | +} | |
159 | + | |
160 | +.lf-dnd-star { | |
161 | + background: url('data:image/png;base64,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') | |
162 | + center center no-repeat; | |
163 | +} | |
164 | + | |
165 | +.lf-selection-select { | |
166 | + position: absolute; | |
167 | + border: 2px dashed darkorange; | |
168 | +} | |
169 | + | |
170 | +.lf-mini-map { | |
171 | + position: absolute; | |
172 | + padding-top: 20px; | |
173 | + overflow: hidden; | |
174 | + background: rgba(255, 255, 255, 1); | |
175 | + border: 1px solid #93a3b4; | |
176 | +} | |
177 | + | |
178 | +.lf-mini-map-graph { | |
179 | + position: relative; | |
180 | + overflow: hidden; | |
181 | +} | |
182 | + | |
183 | +.lf-minimap-viewport { | |
184 | + position: absolute; | |
185 | + top: 0; | |
186 | + left: 0; | |
187 | + cursor: grab; | |
188 | + border: 2px solid rgb(24, 125, 255); | |
189 | +} | |
190 | + | |
191 | +.lf-mini-map-header { | |
192 | + position: absolute; | |
193 | + top: 0; | |
194 | + right: 0; | |
195 | + left: 0; | |
196 | + height: 18px; | |
197 | + padding: 0 10px; | |
198 | + line-height: 18px; | |
199 | + text-shadow: 0 1px 0 rgb(255 255 255 / 33%); | |
200 | + background-color: #a6a6a6; | |
201 | + background-image: linear-gradient(to top, #b2b2b2, #9b9b9b); | |
202 | + border: 1px solid #999; | |
203 | + border-top: #bfbfbf solid 1px; | |
204 | + border-bottom: #666 solid 1px; | |
205 | +} | |
206 | + | |
207 | +.lf-mini-map-close { | |
208 | + position: absolute; | |
209 | + top: 0; | |
210 | + right: 2px; | |
211 | + width: 18px; | |
212 | + height: 18px; | |
213 | + cursor: pointer; | |
214 | + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACL0lEQVRoQ+1YT2vUQBT/vS+Smc3u0ZtfwA+hUKEttIIVbMEWrGAL3UItqKCCCipooS3Ynu29ePfqLcnO5Nov0NsrWbc0myxtJpNmGZw9LZk37/3+vCTzQnD8R47jhycwbQe9A94BSwV8C1kKaL3dO2AtoWWC/8+BMJB9ItwHcM6MX0mqtm1EzOU7Y8bvJFV9k3zGDnSFPAVw76oIb8ZavzIpehnbE+Ilg/J7/8Za3THJVYfAHwB3x4owXsSpemNSuCs6zwEu7rl9AmEgt4hQspkIa5FS76uQCKV8RoxSLDP6pi1p7EAGsCvEBkA7ZbC0EuvBp+tI9IR4yqBSDIE3Iq13qwiQj6lFYEgikOsgvC4VJDyJlfo6CUg3kI9BmLBG67EevDUFn8XXJpBt7km5yox3xcIMfpRo/SN/PZRygRhj17J1JqwmSn2oA96awL926iwD/LEIgJjmo3RwMCQadGaZePh/3H5ejrT+XBd8IwSGJKRcAuPLhHZ6mIkMxlFpjbEUp+qbDfjGCGSJQiEWCfS9CiAmLCZK7VWJvSnG6h4oJu8FnTkm3r+uKDHNReng8CZgVdcbJTBqpxkwfk4EQJiJlTquCq5KnCeQV8npFnL6Jnb6Mer0i8zpo4TThzmnj9OjGXardDBrZqDZbmMmdnukdH6oL3xWOTG1vNh6oxn7AYB2PqtUOWC1GdP4Ya5N8I0ONG0Dv6znHZiW8t6BaSvvHfAONKSAf4w2JGTtNBey0xBAkjSEzwAAAABJRU5ErkJggg=='); | |
215 | + background-size: contain; | |
216 | +} | ... | ... |
src/components/FlowChart/src/index.vue
... | ... | @@ -19,7 +19,7 @@ |
19 | 19 | import { toLogicFlowData } from './adpterForTurbo'; |
20 | 20 | |
21 | 21 | import '@logicflow/core/dist/style/index.css'; |
22 | - import '@logicflow/extension/lib/style/index.css'; | |
22 | + import './index.css'; | |
23 | 23 | export default defineComponent({ |
24 | 24 | name: 'FlowChart', |
25 | 25 | components: { FlowChartToolbar }, | ... | ... |
src/components/Tinymce/src/Editor.vue
... | ... | @@ -12,6 +12,40 @@ |
12 | 12 | </template> |
13 | 13 | |
14 | 14 | <script lang="ts"> |
15 | + import tinymce from 'tinymce/tinymce'; | |
16 | + import 'tinymce/themes/silver'; | |
17 | + | |
18 | + import 'tinymce/icons/default/icons'; | |
19 | + import 'tinymce/plugins/advlist'; | |
20 | + import 'tinymce/plugins/anchor'; | |
21 | + import 'tinymce/plugins/autolink'; | |
22 | + import 'tinymce/plugins/autosave'; | |
23 | + import 'tinymce/plugins/code'; | |
24 | + import 'tinymce/plugins/codesample'; | |
25 | + import 'tinymce/plugins/directionality'; | |
26 | + import 'tinymce/plugins/fullscreen'; | |
27 | + import 'tinymce/plugins/hr'; | |
28 | + import 'tinymce/plugins/insertdatetime'; | |
29 | + import 'tinymce/plugins/link'; | |
30 | + import 'tinymce/plugins/lists'; | |
31 | + import 'tinymce/plugins/media'; | |
32 | + import 'tinymce/plugins/nonbreaking'; | |
33 | + import 'tinymce/plugins/noneditable'; | |
34 | + import 'tinymce/plugins/pagebreak'; | |
35 | + import 'tinymce/plugins/paste'; | |
36 | + import 'tinymce/plugins/preview'; | |
37 | + import 'tinymce/plugins/print'; | |
38 | + import 'tinymce/plugins/save'; | |
39 | + import 'tinymce/plugins/searchreplace'; | |
40 | + import 'tinymce/plugins/spellchecker'; | |
41 | + import 'tinymce/plugins/tabfocus'; | |
42 | + // import 'tinymce/plugins/table'; | |
43 | + import 'tinymce/plugins/template'; | |
44 | + import 'tinymce/plugins/textpattern'; | |
45 | + import 'tinymce/plugins/visualblocks'; | |
46 | + import 'tinymce/plugins/visualchars'; | |
47 | + import 'tinymce/plugins/wordcount'; | |
48 | + | |
15 | 49 | import { |
16 | 50 | defineComponent, |
17 | 51 | computed, |
... | ... | @@ -25,7 +59,7 @@ |
25 | 59 | |
26 | 60 | import ImgUpload from './ImgUpload.vue'; |
27 | 61 | |
28 | - import { tinymce, toolbar, plugins } from './tinymce'; | |
62 | + import { toolbar, plugins } from './tinymce'; | |
29 | 63 | |
30 | 64 | import { buildShortUUID } from '/@/utils/uuid'; |
31 | 65 | import { bindHandlers } from './helper'; | ... | ... |
src/components/Tinymce/src/tinymce.ts
1 | -import tinymce from 'tinymce/tinymce'; | |
2 | -import 'tinymce/themes/silver'; | |
3 | - | |
4 | -import 'tinymce/icons/default/icons'; | |
5 | -import 'tinymce/plugins/advlist'; | |
6 | -import 'tinymce/plugins/anchor'; | |
7 | -import 'tinymce/plugins/autolink'; | |
8 | -import 'tinymce/plugins/autosave'; | |
9 | -import 'tinymce/plugins/code'; | |
10 | -import 'tinymce/plugins/codesample'; | |
11 | -import 'tinymce/plugins/directionality'; | |
12 | -import 'tinymce/plugins/fullscreen'; | |
13 | -import 'tinymce/plugins/hr'; | |
14 | -import 'tinymce/plugins/insertdatetime'; | |
15 | -import 'tinymce/plugins/link'; | |
16 | -import 'tinymce/plugins/lists'; | |
17 | -import 'tinymce/plugins/media'; | |
18 | -import 'tinymce/plugins/nonbreaking'; | |
19 | -import 'tinymce/plugins/noneditable'; | |
20 | -import 'tinymce/plugins/pagebreak'; | |
21 | -import 'tinymce/plugins/paste'; | |
22 | -import 'tinymce/plugins/preview'; | |
23 | -import 'tinymce/plugins/print'; | |
24 | -import 'tinymce/plugins/save'; | |
25 | -import 'tinymce/plugins/searchreplace'; | |
26 | -import 'tinymce/plugins/spellchecker'; | |
27 | -import 'tinymce/plugins/tabfocus'; | |
28 | -// import 'tinymce/plugins/table'; | |
29 | -import 'tinymce/plugins/template'; | |
30 | -import 'tinymce/plugins/textpattern'; | |
31 | -import 'tinymce/plugins/visualblocks'; | |
32 | -import 'tinymce/plugins/visualchars'; | |
33 | -import 'tinymce/plugins/wordcount'; | |
34 | - | |
35 | 1 | // Any plugins you want to setting has to be imported |
36 | 2 | // Detail plugins list see https://www.tinymce.com/docs/plugins/ |
37 | 3 | // Custom builds see https://www.tinymce.com/download/custom-builds/ |
... | ... | @@ -45,5 +11,3 @@ export const toolbar = [ |
45 | 11 | 'fontsizeselect lineheight searchreplace bold italic underline strikethrough alignleft aligncenter alignright outdent indent blockquote undo redo removeformat subscript superscript code codesample', |
46 | 12 | 'hr bullist numlist link preview anchor pagebreak insertdatetime media forecolor backcolor fullscreen', |
47 | 13 | ]; |
48 | - | |
49 | -export { tinymce }; | ... | ... |
src/locales/lang/en/routes/demo/editor.ts
src/locales/lang/zh_CN/routes/demo/editor.ts
src/router/menus/modules/demo/comp.ts
... | ... | @@ -6,7 +6,9 @@ const menu: MenuModule = { |
6 | 6 | menu: { |
7 | 7 | name: t('routes.demo.comp.comp'), |
8 | 8 | path: '/comp', |
9 | - | |
9 | + tag: { | |
10 | + dot: true, | |
11 | + }, | |
10 | 12 | children: [ |
11 | 13 | { |
12 | 14 | path: 'basic', |
... | ... | @@ -181,8 +183,18 @@ const menu: MenuModule = { |
181 | 183 | { |
182 | 184 | name: t('routes.demo.editor.editor'), |
183 | 185 | path: 'editor', |
186 | + tag: { | |
187 | + dot: true, | |
188 | + }, | |
184 | 189 | children: [ |
185 | 190 | { |
191 | + path: 'json', | |
192 | + name: t('routes.demo.editor.jsonEditor'), | |
193 | + tag: { | |
194 | + content: 'new', | |
195 | + }, | |
196 | + }, | |
197 | + { | |
186 | 198 | path: 'markdown', |
187 | 199 | name: t('routes.demo.editor.markdown'), |
188 | 200 | children: [ | ... | ... |
src/router/routes/modules/demo/comp.ts
... | ... | @@ -304,6 +304,14 @@ const comp: AppRouteModule = { |
304 | 304 | }, |
305 | 305 | children: [ |
306 | 306 | { |
307 | + path: 'json', | |
308 | + component: () => import('/@/views/demo/editor/json/index.vue'), | |
309 | + name: 'JsonEditorDemo', | |
310 | + meta: { | |
311 | + title: t('routes.demo.editor.jsonEditor'), | |
312 | + }, | |
313 | + }, | |
314 | + { | |
307 | 315 | path: 'markdown', |
308 | 316 | component: getParentLayout('MarkdownDemo'), |
309 | 317 | name: 'MarkdownDemo', | ... | ... |
src/views/demo/editor/json/index.vue
0 → 100644
1 | +<template> | |
2 | + <PageWrapper title="代码编辑器组件示例" contentFullHeight fixedHeight contentBackground> | |
3 | + <template #extra> | |
4 | + <RadioGroup button-style="solid" v-model:value="modeValue" @change="handleModeChange"> | |
5 | + <RadioButton value="application/json"> json数据 </RadioButton> | |
6 | + <RadioButton value="htmlmixed"> html代码 </RadioButton> | |
7 | + <RadioButton value="javascript"> javascript代码 </RadioButton> | |
8 | + </RadioGroup> | |
9 | + </template> | |
10 | + <CodeEditor v-model:value="value" :mode="modeValue" /> | |
11 | + </PageWrapper> | |
12 | +</template> | |
13 | +<script lang="ts"> | |
14 | + import { defineComponent, ref } from 'vue'; | |
15 | + import { CodeEditor } from '/@/components/CodeEditor'; | |
16 | + import { PageWrapper } from '/@/components/Page'; | |
17 | + import { Radio } from 'ant-design-vue'; | |
18 | + | |
19 | + const jsonData = | |
20 | + '{"name":"BeJson","url":"http://www.xxx.com","page":88,"isNonProfit":true,"address":{"street":"科技园路.","city":"江苏苏州","country":"中国"},"links":[{"name":"Google","url":"http://www.xxx.com"},{"name":"Baidu","url":"http://www.xxx.com"},{"name":"SoSo","url":"http://www.xxx.com"}]}'; | |
21 | + | |
22 | + const jsData = ` | |
23 | + (() => { | |
24 | + var htmlRoot = document.getElementById('htmlRoot'); | |
25 | + var theme = window.localStorage.getItem('__APP__DARK__MODE__'); | |
26 | + if (htmlRoot && theme) { | |
27 | + htmlRoot.setAttribute('data-theme', theme); | |
28 | + theme = htmlRoot = null; | |
29 | + } | |
30 | + })(); | |
31 | + `; | |
32 | + | |
33 | + const htmlData = ` | |
34 | + <!DOCTYPE html> | |
35 | +<html lang="en" id="htmlRoot"> | |
36 | + <head> | |
37 | + <meta charset="UTF-8" /> | |
38 | + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> | |
39 | + <meta name="renderer" content="webkit" /> | |
40 | + <meta | |
41 | + name="viewport" | |
42 | + content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0" | |
43 | + /> | |
44 | + <title><%= title %></title> | |
45 | + <link rel="icon" href="/favicon.ico" /> | |
46 | + </head> | |
47 | + <body> | |
48 | + <div id="app"> | |
49 | + </div> | |
50 | + </body> | |
51 | +</html> | |
52 | + `; | |
53 | + export default defineComponent({ | |
54 | + components: { CodeEditor, PageWrapper, RadioButton: Radio.Button, RadioGroup: Radio.Group }, | |
55 | + setup() { | |
56 | + const modeValue = ref('application/json'); | |
57 | + const value = ref(jsonData); | |
58 | + | |
59 | + function handleModeChange(e: ChangeEvent) { | |
60 | + const mode = e.target.value; | |
61 | + if (mode === 'application/json') { | |
62 | + value.value = jsonData; | |
63 | + return; | |
64 | + } | |
65 | + if (mode === 'htmlmixed') { | |
66 | + value.value = htmlData; | |
67 | + return; | |
68 | + } | |
69 | + if (mode === 'javascript') { | |
70 | + value.value = jsData; | |
71 | + return; | |
72 | + } | |
73 | + } | |
74 | + | |
75 | + return { value, modeValue, handleModeChange }; | |
76 | + }, | |
77 | + }); | |
78 | +</script> | ... | ... |
vite.config.ts
yarn.lock
... | ... | @@ -1301,11 +1301,23 @@ |
1301 | 1301 | resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.1.1.tgz#3348564048e7a2d7398c935d466c0414ebb6a669" |
1302 | 1302 | integrity sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow== |
1303 | 1303 | |
1304 | +"@types/codemirror@^0.0.109": | |
1305 | + version "0.0.109" | |
1306 | + resolved "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.109.tgz#89d575ff1c7b462c4c3b8654f8bb38e5622e9036" | |
1307 | + integrity sha512-cSdiHeeLjvGn649lRTNeYrVCDOgDrtP+bDDSFDd1TF+i0jKGPDRozno2NOJ9lTniso+taiv4kiVS8dgM8Jm5lg== | |
1308 | + dependencies: | |
1309 | + "@types/tern" "*" | |
1310 | + | |
1304 | 1311 | "@types/crypto-js@^4.0.1": |
1305 | 1312 | version "4.0.1" |
1306 | 1313 | resolved "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.0.1.tgz#3a4bd24518b0e6c5940da4e2659eeb2ef0806963" |
1307 | 1314 | integrity sha512-6+OPzqhKX/cx5xh+yO8Cqg3u3alrkhoxhE5ZOdSEv0DOzJ13lwJ6laqGU0Kv6+XDMFmlnGId04LtY22PsFLQUw== |
1308 | 1315 | |
1316 | +"@types/estree@*": | |
1317 | + version "0.0.47" | |
1318 | + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" | |
1319 | + integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== | |
1320 | + | |
1309 | 1321 | "@types/estree@0.0.39": |
1310 | 1322 | version "0.0.39" |
1311 | 1323 | resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" |
... | ... | @@ -1477,6 +1489,13 @@ |
1477 | 1489 | resolved "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.5.tgz#18a0166fbcdfbfc7f17d0491da2ea07ee397d3f9" |
1478 | 1490 | integrity sha512-y9Pw8IK50OqFRDpdI9Is29KlWiENVW9FDvlTmGHelvTfR2brYFJbsClvulZfeq6YKacFrDsG9a39w0kJZdHLaw== |
1479 | 1491 | |
1492 | +"@types/tern@*": | |
1493 | + version "0.23.3" | |
1494 | + resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.3.tgz#4b54538f04a88c9ff79de1f6f94f575a7f339460" | |
1495 | + integrity sha512-imDtS4TAoTcXk0g7u4kkWqedB3E4qpjXzCpD2LU5M5NAXHzCDsypyvXSaG7mM8DKYkCRa7tFp4tS/lp/Wo7Q3w== | |
1496 | + dependencies: | |
1497 | + "@types/estree" "*" | |
1498 | + | |
1480 | 1499 | "@types/through@*": |
1481 | 1500 | version "0.0.30" |
1482 | 1501 | resolved "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" |
... | ... | @@ -2610,6 +2629,11 @@ coa@^2.0.2: |
2610 | 2629 | chalk "^2.4.1" |
2611 | 2630 | q "^1.1.2" |
2612 | 2631 | |
2632 | +codemirror@^5.60.0: | |
2633 | + version "5.60.0" | |
2634 | + resolved "https://registry.npmjs.org/codemirror/-/codemirror-5.60.0.tgz#00a8cfd287d5d8737ceb73987f04aee2fe5860da" | |
2635 | + integrity sha512-AEL7LhFOlxPlCL8IdTcJDblJm8yrAGib7I+DErJPdZd4l6imx8IMgKK3RblVgBQqz3TZJR4oknQ03bz+uNjBYA== | |
2636 | + | |
2613 | 2637 | codepage@~1.14.0: |
2614 | 2638 | version "1.14.0" |
2615 | 2639 | resolved "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz#8cbe25481323559d7d307571b0fff91e7a1d2f99" |
... | ... | @@ -7729,7 +7753,7 @@ rollup-plugin-visualizer@5.3.4: |
7729 | 7753 | source-map "^0.7.3" |
7730 | 7754 | yargs "^16.2.0" |
7731 | 7755 | |
7732 | -rollup@^2.25.0, rollup@^2.38.5, rollup@^2.44.0: | |
7756 | +rollup@^2.25.0, rollup@^2.38.5, rollup@^2.44.0, rollup@^2.45.2: | |
7733 | 7757 | version "2.45.2" |
7734 | 7758 | resolved "https://registry.npmjs.org/rollup/-/rollup-2.45.2.tgz#8fb85917c9f35605720e92328f3ccbfba6f78b48" |
7735 | 7759 | integrity sha512-kRRU7wXzFHUzBIv0GfoFFIN3m9oteY4uAsKllIpQDId5cfnkWF2J130l+27dzDju0E6MScKiV0ZM5Bw8m4blYQ== | ... | ... |