@srcker/editor-vue-next 1.0.4 → 1.0.6

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 (104) hide show
  1. package/dist/rich-editor.es.js +21257 -0
  2. package/dist/style/index.css +1 -0
  3. package/dist/style/style.css +1 -0
  4. package/dist/style/variables.css +1 -0
  5. package/dist/style.es.js +1 -0
  6. package/dist/variables.es.js +1 -0
  7. package/package.json +19 -1
  8. package/.vscode/extensions.json +0 -3
  9. package/index.html +0 -13
  10. package/index.ts +0 -6
  11. package/jsconfig.json +0 -8
  12. package/src/App.vue +0 -9
  13. package/src/App.vue.js +0 -17
  14. package/src/Button/BackgroundButton.vue +0 -331
  15. package/src/Button/BackgroundButton.vue.js +0 -243
  16. package/src/Button/BlockQuoteButton.vue +0 -26
  17. package/src/Button/BlockQuoteButton.vue.js +0 -56
  18. package/src/Button/BoldButton.vue +0 -29
  19. package/src/Button/BoldButton.vue.js +0 -56
  20. package/src/Button/BulletListButton.vue +0 -114
  21. package/src/Button/BulletListButton.vue.js +0 -147
  22. package/src/Button/CodeBlockButton.vue +0 -28
  23. package/src/Button/CodeBlockButton.vue.js +0 -56
  24. package/src/Button/CodeButton.vue +0 -30
  25. package/src/Button/CodeButton.vue.js +0 -56
  26. package/src/Button/FontSizeButton.vue +0 -85
  27. package/src/Button/FontSizeButton.vue.js +0 -131
  28. package/src/Button/FormatButton.vue +0 -25
  29. package/src/Button/FormatButton.vue.js +0 -54
  30. package/src/Button/HeadingButton.vue +0 -103
  31. package/src/Button/HeadingButton.vue.js +0 -164
  32. package/src/Button/ImageUploadButton.vue +0 -93
  33. package/src/Button/ImageUploadButton.vue.js +0 -123
  34. package/src/Button/IndentLeftButton.vue +0 -25
  35. package/src/Button/IndentLeftButton.vue.js +0 -54
  36. package/src/Button/IndentRightButton.vue +0 -29
  37. package/src/Button/IndentRightButton.vue.js +0 -54
  38. package/src/Button/ItalicButton.vue +0 -29
  39. package/src/Button/ItalicButton.vue.js +0 -56
  40. package/src/Button/LineHeightButton.vue +0 -88
  41. package/src/Button/LineHeightButton.vue.js +0 -131
  42. package/src/Button/LinkButton.vue +0 -44
  43. package/src/Button/LinkButton.vue.js +0 -69
  44. package/src/Button/OrderedListButton.vue +0 -121
  45. package/src/Button/OrderedListButton.vue.js +0 -146
  46. package/src/Button/RedoButton.vue +0 -29
  47. package/src/Button/RedoButton.vue.js +0 -55
  48. package/src/Button/StrikeButton.vue +0 -30
  49. package/src/Button/StrikeButton.vue.js +0 -56
  50. package/src/Button/SubscriptButton.vue +0 -29
  51. package/src/Button/SubscriptButton.vue.js +0 -56
  52. package/src/Button/SuperscriptButton.vue +0 -29
  53. package/src/Button/SuperscriptButton.vue.js +0 -56
  54. package/src/Button/TextAlignCenterButton.vue +0 -26
  55. package/src/Button/TextAlignCenterButton.vue.js +0 -56
  56. package/src/Button/TextAlignLeftButton.vue +0 -26
  57. package/src/Button/TextAlignLeftButton.vue.js +0 -56
  58. package/src/Button/TextAlignRightButton.vue +0 -26
  59. package/src/Button/TextAlignRightButton.vue.js +0 -56
  60. package/src/Button/TextColorButton.vue +0 -329
  61. package/src/Button/TextColorButton.vue.js +0 -243
  62. package/src/Button/ThemeButton.vue +0 -34
  63. package/src/Button/ThemeButton.vue.js +0 -63
  64. package/src/Button/UnderLineButton.vue +0 -29
  65. package/src/Button/UnderLineButton.vue.js +0 -56
  66. package/src/Button/UndoButton.vue +0 -29
  67. package/src/Button/UndoButton.vue.js +0 -55
  68. package/src/Components/IconArrow.vue +0 -16
  69. package/src/Components/IconArrow.vue.js +0 -30
  70. package/src/Components/IconCheck.vue +0 -40
  71. package/src/Components/IconCheck.vue.js +0 -59
  72. package/src/EditorToolbar.vue +0 -150
  73. package/src/EditorToolbar.vue.js +0 -306
  74. package/src/Extensions/BulletListStyle.js +0 -19
  75. package/src/Extensions/BulletListStyle.ts +0 -24
  76. package/src/Extensions/FontSize.js +0 -27
  77. package/src/Extensions/FontSize.ts +0 -37
  78. package/src/Extensions/Indent.js +0 -58
  79. package/src/Extensions/Indent.ts +0 -73
  80. package/src/Extensions/OrderedListStyle.js +0 -19
  81. package/src/Extensions/OrderedListStyle.ts +0 -24
  82. package/src/Extensions/UploadImage.js +0 -18
  83. package/src/Extensions/UploadImage.ts +0 -22
  84. package/src/Extensions/index.js +0 -6
  85. package/src/Extensions/index.ts +0 -6
  86. package/src/Extensions/shims.d.ts +0 -26
  87. package/src/RichEditor.vue +0 -198
  88. package/src/RichEditor.vue.js +0 -204
  89. package/src/env.d.ts +0 -7
  90. package/src/index.js +0 -5
  91. package/src/index.ts +0 -10
  92. package/src/main.js +0 -4
  93. package/src/main.ts +0 -7
  94. package/src/styles/index.js +0 -3
  95. package/src/styles/index.ts +0 -3
  96. package/src/styles/style.scss +0 -196
  97. package/src/styles/theme.css +0 -27
  98. package/src/styles/variables.js +0 -1
  99. package/src/styles/variables.scss +0 -175
  100. package/src/styles/variables.ts +0 -1
  101. package/src/types.js +0 -1
  102. package/src/types.ts +0 -7
  103. package/tsconfig.json +0 -17
  104. package/vite.config.ts +0 -35
@@ -1,164 +0,0 @@
1
- import { ref, computed, onMounted, onBeforeUnmount } from 'vue';
2
- const isOpen = ref(false);
3
- const wrapperRef = ref(null);
4
- const sizes = { 1: '24px', 2: '20px', 3: '18px', 4: '16px', 5: '14px' };
5
- const setHeading = (level) => {
6
- props.editor.chain().focus().toggleHeading({ level: level }).run();
7
- isOpen.value = false;
8
- };
9
- const setParagraph = () => {
10
- props.editor.chain().focus().setParagraph().run();
11
- isOpen.value = false;
12
- };
13
- const headingLabel = computed(() => {
14
- if (!props.editor)
15
- return '正文';
16
- for (let i = 1; i <= 5; i++) {
17
- if (props.editor.isActive('heading', { level: i })) {
18
- return `标题${i}`;
19
- }
20
- }
21
- return '正文';
22
- });
23
- const props = defineProps({
24
- editor: {
25
- type: Object,
26
- required: true
27
- }
28
- });
29
- const handleClickOutside = (e) => {
30
- if (!wrapperRef.value)
31
- return;
32
- if (!wrapperRef.value.contains(e.target)) {
33
- isOpen.value = false;
34
- }
35
- };
36
- onMounted(() => {
37
- document.addEventListener('mousedown', handleClickOutside);
38
- });
39
- onBeforeUnmount(() => {
40
- document.removeEventListener('mousedown', handleClickOutside);
41
- });
42
- const __VLS_ctx = {
43
- ...{},
44
- ...{},
45
- ...{},
46
- ...{},
47
- };
48
- let __VLS_components;
49
- let __VLS_intrinsics;
50
- let __VLS_directives;
51
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
52
- ...{ class: "dropdown-button heading-button" },
53
- ref: "wrapperRef",
54
- ...{ class: ({ 'is-open': __VLS_ctx.isOpen }) },
55
- });
56
- /** @type {__VLS_StyleScopedClasses['dropdown-button']} */ ;
57
- /** @type {__VLS_StyleScopedClasses['heading-button']} */ ;
58
- /** @type {__VLS_StyleScopedClasses['is-open']} */ ;
59
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
60
- ...{ onClick: (...[$event]) => {
61
- __VLS_ctx.isOpen = !__VLS_ctx.isOpen;
62
- // @ts-ignore
63
- [isOpen, isOpen, isOpen,];
64
- } },
65
- ...{ class: "trigger" },
66
- });
67
- /** @type {__VLS_StyleScopedClasses['trigger']} */ ;
68
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
69
- ...{ class: "icon" },
70
- });
71
- /** @type {__VLS_StyleScopedClasses['icon']} */ ;
72
- __VLS_asFunctionalElement1(__VLS_intrinsics.svg, __VLS_intrinsics.svg)({
73
- xmlns: "http://www.w3.org/2000/svg",
74
- viewBox: "0 0 448 512",
75
- });
76
- __VLS_asFunctionalElement1(__VLS_intrinsics.path)({
77
- fill: "currentColor",
78
- stroke: "currentColor",
79
- 'stroke-width': "4",
80
- 'stroke-linecap': "round",
81
- 'stroke-linejoin': "round",
82
- d: "M0 64C0 46.3 14.3 32 32 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 112 224 0 0-112-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 320 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-144-224 0 0 144 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-320-16 0C14.3 96 0 81.7 0 64z",
83
- });
84
- __VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({
85
- ...{ class: "label" },
86
- });
87
- /** @type {__VLS_StyleScopedClasses['label']} */ ;
88
- (__VLS_ctx.headingLabel);
89
- let __VLS_0;
90
- /** @ts-ignore @type {typeof __VLS_components.transition | typeof __VLS_components.Transition | typeof __VLS_components.transition | typeof __VLS_components.Transition} */
91
- transition;
92
- // @ts-ignore
93
- const __VLS_1 = __VLS_asFunctionalComponent1(__VLS_0, new __VLS_0({
94
- name: "dropdown",
95
- }));
96
- const __VLS_2 = __VLS_1({
97
- name: "dropdown",
98
- }, ...__VLS_functionalComponentArgsRest(__VLS_1));
99
- const { default: __VLS_5 } = __VLS_3.slots;
100
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
101
- ...{ class: "dropdown" },
102
- });
103
- __VLS_asFunctionalDirective(__VLS_directives.vShow, {})(null, { ...__VLS_directiveBindingRestFields, value: (__VLS_ctx.isOpen) }, null, null);
104
- /** @type {__VLS_StyleScopedClasses['dropdown']} */ ;
105
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
106
- ...{ onClick: (...[$event]) => {
107
- __VLS_ctx.setParagraph();
108
- // @ts-ignore
109
- [isOpen, headingLabel, setParagraph,];
110
- } },
111
- ...{ class: "item" },
112
- ...{ class: ({ 'is-selected': __VLS_ctx.editor.isActive('paragraph') }) },
113
- });
114
- /** @type {__VLS_StyleScopedClasses['item']} */ ;
115
- /** @type {__VLS_StyleScopedClasses['is-selected']} */ ;
116
- __VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({
117
- ...{ class: "icon" },
118
- });
119
- /** @type {__VLS_StyleScopedClasses['icon']} */ ;
120
- __VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({
121
- ...{ class: "text" },
122
- });
123
- /** @type {__VLS_StyleScopedClasses['text']} */ ;
124
- for (const [level] of __VLS_vFor(([1, 2, 3, 4, 5]))) {
125
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
126
- ...{ onClick: (...[$event]) => {
127
- __VLS_ctx.setHeading(level);
128
- // @ts-ignore
129
- [editor, setHeading,];
130
- } },
131
- ...{ class: "item" },
132
- key: (level),
133
- ...{ class: ({ 'is-selected': __VLS_ctx.editor.isActive('heading', { level }) }) },
134
- });
135
- /** @type {__VLS_StyleScopedClasses['item']} */ ;
136
- /** @type {__VLS_StyleScopedClasses['is-selected']} */ ;
137
- __VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({
138
- ...{ class: "icon" },
139
- });
140
- /** @type {__VLS_StyleScopedClasses['icon']} */ ;
141
- (level);
142
- __VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({
143
- ...{ class: "text" },
144
- ...{ style: ({ fontSize: __VLS_ctx.sizes[level], fontWeight: 'bold' }) },
145
- });
146
- /** @type {__VLS_StyleScopedClasses['text']} */ ;
147
- (level);
148
- // @ts-ignore
149
- [editor, sizes,];
150
- }
151
- // @ts-ignore
152
- [];
153
- var __VLS_3;
154
- // @ts-ignore
155
- [];
156
- const __VLS_export = (await import('vue')).defineComponent({
157
- props: {
158
- editor: {
159
- type: Object,
160
- required: true
161
- }
162
- },
163
- });
164
- export default {};
@@ -1,93 +0,0 @@
1
- <template>
2
-
3
- <button class="icon-button image-button" @click="triggerFileSelect" :disabled="isUploading" title="插入图片">
4
- <input ref="fileInputRef" type="file" accept="image/*" @change="handleFileChange" style="display: none" />
5
- <div class="icon" v-if="!isUploading">
6
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
7
- <path fill="currentColor" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" d="M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm128 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm136 72c8.5 0 16.4 4.5 20.7 11.8l80 136c4.4 7.4 4.4 16.6 .1 24.1S352.6 384 344 384l-240 0c-8.9 0-17.2-5-21.3-12.9s-3.5-17.5 1.6-24.8l56-80c4.5-6.4 11.8-10.2 19.7-10.2s15.2 3.8 19.7 10.2l17.2 24.6 46.5-79c4.3-7.3 12.2-11.8 20.7-11.8z"/>
8
- </svg>
9
- </div>
10
- <div class="icon" v-else>
11
- <svg viewBox="0 0 38 38">
12
- <circle stroke="currentColor" stroke-width="3" stroke-linecap="round" fill="none" cx="19" cy="19" r="16" stroke-dasharray="45.5 12.5" transform="rotate(10 19 19)">
13
- <animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="0.6s" values="0 19 19;360 19 19" />
14
- </circle>
15
- </svg>
16
- </div>
17
- </button>
18
- </template>
19
-
20
-
21
- <script setup lang="ts">
22
- import { ref } from 'vue'
23
- import type { Editor } from '@tiptap/core'
24
- import { UploadImageResult } from 'src/types';
25
-
26
-
27
- const props = defineProps<{
28
- editor?: Editor
29
- uploadImage: (file: File) => Promise<UploadImageResult>
30
- }>()
31
-
32
- const emit = defineEmits<{
33
- (e: 'upload-start'): void
34
- (e: 'upload-end'): void
35
- (e: 'error', err: Error): void
36
- }>()
37
-
38
- const fileInputRef = ref<HTMLInputElement | null>(null)
39
- const isUploading = ref(false)
40
-
41
- /**
42
- * 触发文件选择
43
- */
44
- const triggerFileSelect = () => {
45
- if (!isUploading.value) {
46
- fileInputRef.value?.click()
47
- }
48
- }
49
-
50
- /**
51
- * 文件变更处理
52
- */
53
- const handleFileChange = async (event: Event) => {
54
- const input = event.target as HTMLInputElement
55
- const file = input.files?.[0]
56
- if (!file) return
57
-
58
- try {
59
-
60
- isUploading.value = true
61
- emit('upload-start')
62
-
63
- const { url, name } = await props.uploadImage(file)
64
-
65
- props.editor!
66
- .chain()
67
- .focus()
68
- .setImage({
69
- src: url,
70
- title: name ?? '',
71
- alt: name ?? '',
72
- width: 200,
73
- })
74
- .run()
75
- } catch (err: any) {
76
- emit('error', err)
77
- console.error(err)
78
- } finally {
79
- isUploading.value = false
80
- emit('upload-end')
81
- input.value = ''
82
- }
83
- }
84
- </script>
85
-
86
-
87
- <style lang="scss" scoped>
88
-
89
- .image-button {
90
-
91
- }
92
-
93
- </style>
@@ -1,123 +0,0 @@
1
- import { ref } from 'vue';
2
- const props = defineProps();
3
- const emit = defineEmits();
4
- const fileInputRef = ref(null);
5
- const isUploading = ref(false);
6
- /**
7
- * 触发文件选择
8
- */
9
- const triggerFileSelect = () => {
10
- if (!isUploading.value) {
11
- fileInputRef.value?.click();
12
- }
13
- };
14
- /**
15
- * 文件变更处理
16
- */
17
- const handleFileChange = async (event) => {
18
- const input = event.target;
19
- const file = input.files?.[0];
20
- if (!file)
21
- return;
22
- try {
23
- isUploading.value = true;
24
- emit('upload-start');
25
- const { url, name } = await props.uploadImage(file);
26
- props.editor
27
- .chain()
28
- .focus()
29
- .setImage({
30
- src: url,
31
- title: name ?? '',
32
- alt: name ?? '',
33
- width: 200,
34
- })
35
- .run();
36
- }
37
- catch (err) {
38
- emit('error', err);
39
- console.error(err);
40
- }
41
- finally {
42
- isUploading.value = false;
43
- emit('upload-end');
44
- input.value = '';
45
- }
46
- };
47
- const __VLS_ctx = {
48
- ...{},
49
- ...{},
50
- ...{},
51
- ...{},
52
- ...{},
53
- };
54
- let __VLS_components;
55
- let __VLS_intrinsics;
56
- let __VLS_directives;
57
- __VLS_asFunctionalElement1(__VLS_intrinsics.button, __VLS_intrinsics.button)({
58
- ...{ onClick: (__VLS_ctx.triggerFileSelect) },
59
- ...{ class: "icon-button image-button" },
60
- disabled: (__VLS_ctx.isUploading),
61
- title: "插入图片",
62
- });
63
- /** @type {__VLS_StyleScopedClasses['icon-button']} */ ;
64
- /** @type {__VLS_StyleScopedClasses['image-button']} */ ;
65
- __VLS_asFunctionalElement1(__VLS_intrinsics.input)({
66
- ...{ onChange: (__VLS_ctx.handleFileChange) },
67
- ref: "fileInputRef",
68
- type: "file",
69
- accept: "image/*",
70
- ...{ style: {} },
71
- });
72
- if (!__VLS_ctx.isUploading) {
73
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
74
- ...{ class: "icon" },
75
- });
76
- /** @type {__VLS_StyleScopedClasses['icon']} */ ;
77
- __VLS_asFunctionalElement1(__VLS_intrinsics.svg, __VLS_intrinsics.svg)({
78
- xmlns: "http://www.w3.org/2000/svg",
79
- viewBox: "0 0 448 512",
80
- });
81
- __VLS_asFunctionalElement1(__VLS_intrinsics.path)({
82
- fill: "currentColor",
83
- stroke: "currentColor",
84
- 'stroke-width': "4",
85
- 'stroke-linecap': "round",
86
- 'stroke-linejoin': "round",
87
- d: "M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm128 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm136 72c8.5 0 16.4 4.5 20.7 11.8l80 136c4.4 7.4 4.4 16.6 .1 24.1S352.6 384 344 384l-240 0c-8.9 0-17.2-5-21.3-12.9s-3.5-17.5 1.6-24.8l56-80c4.5-6.4 11.8-10.2 19.7-10.2s15.2 3.8 19.7 10.2l17.2 24.6 46.5-79c4.3-7.3 12.2-11.8 20.7-11.8z",
88
- });
89
- }
90
- else {
91
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
92
- ...{ class: "icon" },
93
- });
94
- /** @type {__VLS_StyleScopedClasses['icon']} */ ;
95
- __VLS_asFunctionalElement1(__VLS_intrinsics.svg, __VLS_intrinsics.svg)({
96
- viewBox: "0 0 38 38",
97
- });
98
- __VLS_asFunctionalElement1(__VLS_intrinsics.circle, __VLS_intrinsics.circle)({
99
- stroke: "currentColor",
100
- 'stroke-width': "3",
101
- 'stroke-linecap': "round",
102
- fill: "none",
103
- cx: "19",
104
- cy: "19",
105
- r: "16",
106
- 'stroke-dasharray': "45.5 12.5",
107
- transform: "rotate(10 19 19)",
108
- });
109
- __VLS_asFunctionalElement1(__VLS_intrinsics.animateTransform)({
110
- attributeName: "transform",
111
- type: "rotate",
112
- repeatCount: "indefinite",
113
- dur: "0.6s",
114
- values: "0 19 19;360 19 19",
115
- });
116
- }
117
- // @ts-ignore
118
- [triggerFileSelect, isUploading, isUploading, handleFileChange,];
119
- const __VLS_export = (await import('vue')).defineComponent({
120
- __typeEmits: {},
121
- __typeProps: {},
122
- });
123
- export default {};
@@ -1,25 +0,0 @@
1
- <template>
2
- <button
3
- class="icon-button"
4
- @click="editor.chain().focus().decreaseIndent().run()" >
5
-
6
- <div class="icon">
7
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
8
- <path fill="currentColor" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" d="M0 64C0 46.3 14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3L0 176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z"/>
9
- </svg>
10
- </div>
11
-
12
- <div class="tips">减少缩进</div>
13
- </button>
14
- </template>
15
-
16
-
17
- <script setup>
18
- const props = defineProps({
19
- editor: {
20
- type: Object,
21
- required: true
22
- }
23
- })
24
-
25
- </script>
@@ -1,54 +0,0 @@
1
- const props = defineProps({
2
- editor: {
3
- type: Object,
4
- required: true
5
- }
6
- });
7
- const __VLS_ctx = {
8
- ...{},
9
- ...{},
10
- ...{},
11
- };
12
- let __VLS_components;
13
- let __VLS_intrinsics;
14
- let __VLS_directives;
15
- __VLS_asFunctionalElement1(__VLS_intrinsics.button, __VLS_intrinsics.button)({
16
- ...{ onClick: (...[$event]) => {
17
- __VLS_ctx.editor.chain().focus().decreaseIndent().run();
18
- // @ts-ignore
19
- [editor,];
20
- } },
21
- ...{ class: "icon-button" },
22
- });
23
- /** @type {__VLS_StyleScopedClasses['icon-button']} */ ;
24
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
25
- ...{ class: "icon" },
26
- });
27
- /** @type {__VLS_StyleScopedClasses['icon']} */ ;
28
- __VLS_asFunctionalElement1(__VLS_intrinsics.svg, __VLS_intrinsics.svg)({
29
- xmlns: "http://www.w3.org/2000/svg",
30
- viewBox: "0 0 448 512",
31
- });
32
- __VLS_asFunctionalElement1(__VLS_intrinsics.path)({
33
- fill: "currentColor",
34
- stroke: "currentColor",
35
- 'stroke-width': "4",
36
- 'stroke-linecap': "round",
37
- 'stroke-linejoin': "round",
38
- d: "M0 64C0 46.3 14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3L0 176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z",
39
- });
40
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
41
- ...{ class: "tips" },
42
- });
43
- /** @type {__VLS_StyleScopedClasses['tips']} */ ;
44
- // @ts-ignore
45
- [];
46
- const __VLS_export = (await import('vue')).defineComponent({
47
- props: {
48
- editor: {
49
- type: Object,
50
- required: true
51
- }
52
- },
53
- });
54
- export default {};
@@ -1,29 +0,0 @@
1
- <template>
2
- <button
3
- class="icon-button"
4
- @click="editor.chain().focus().increaseIndent().run()" >
5
-
6
- <div class="icon">
7
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
8
- <path fill="currentColor" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" d="M0,64c0-17.7,14.3-32,32-32h384c17.7,0,32,14.3,32,32s-14.3,32-32,32H32C14.3,96,0,81.7,0,64z M192,192
9
- c0-17.7,14.3-32,32-32h192c17.7,0,32,14.3,32,32s-14.3,32-32,32H224C206.3,224,192,209.7,192,192z M224,288h192
10
- c17.7,0,32,14.3,32,32s-14.3,32-32,32H224c-17.7,0-32-14.3-32-32S206.3,288,224,288z M0,448c0-17.7,14.3-32,32-32h384
11
- c17.7,0,32,14.3,32,32s-14.3,32-32,32H32C14.3,480,0,465.7,0,448z M6,243.4l102-79.3c10.5-8.2,25.8-0.7,25.8,12.6v158.6
12
- c0,13.3-15.3,20.8-25.8,12.6L6.1,268.6c-8.2-6.4-8.2-18.9,0-25.3L6,243.4z"/>
13
- </svg>
14
- </div>
15
-
16
- <div class="tips">增加缩进</div>
17
- </button>
18
- </template>
19
-
20
-
21
- <script setup>
22
- const props = defineProps({
23
- editor: {
24
- type: Object,
25
- required: true
26
- }
27
- })
28
-
29
- </script>
@@ -1,54 +0,0 @@
1
- const props = defineProps({
2
- editor: {
3
- type: Object,
4
- required: true
5
- }
6
- });
7
- const __VLS_ctx = {
8
- ...{},
9
- ...{},
10
- ...{},
11
- };
12
- let __VLS_components;
13
- let __VLS_intrinsics;
14
- let __VLS_directives;
15
- __VLS_asFunctionalElement1(__VLS_intrinsics.button, __VLS_intrinsics.button)({
16
- ...{ onClick: (...[$event]) => {
17
- __VLS_ctx.editor.chain().focus().increaseIndent().run();
18
- // @ts-ignore
19
- [editor,];
20
- } },
21
- ...{ class: "icon-button" },
22
- });
23
- /** @type {__VLS_StyleScopedClasses['icon-button']} */ ;
24
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
25
- ...{ class: "icon" },
26
- });
27
- /** @type {__VLS_StyleScopedClasses['icon']} */ ;
28
- __VLS_asFunctionalElement1(__VLS_intrinsics.svg, __VLS_intrinsics.svg)({
29
- xmlns: "http://www.w3.org/2000/svg",
30
- viewBox: "0 0 448 512",
31
- });
32
- __VLS_asFunctionalElement1(__VLS_intrinsics.path)({
33
- fill: "currentColor",
34
- stroke: "currentColor",
35
- 'stroke-width': "4",
36
- 'stroke-linecap': "round",
37
- 'stroke-linejoin': "round",
38
- d: "\u004d\u0030\u002c\u0036\u0034\u0063\u0030\u002d\u0031\u0037\u002e\u0037\u002c\u0031\u0034\u002e\u0033\u002d\u0033\u0032\u002c\u0033\u0032\u002d\u0033\u0032\u0068\u0033\u0038\u0034\u0063\u0031\u0037\u002e\u0037\u002c\u0030\u002c\u0033\u0032\u002c\u0031\u0034\u002e\u0033\u002c\u0033\u0032\u002c\u0033\u0032\u0073\u002d\u0031\u0034\u002e\u0033\u002c\u0033\u0032\u002d\u0033\u0032\u002c\u0033\u0032\u0048\u0033\u0032\u0043\u0031\u0034\u002e\u0033\u002c\u0039\u0036\u002c\u0030\u002c\u0038\u0031\u002e\u0037\u002c\u0030\u002c\u0036\u0034\u007a\u0020\u004d\u0031\u0039\u0032\u002c\u0031\u0039\u0032\u000a\u0009\u0063\u0030\u002d\u0031\u0037\u002e\u0037\u002c\u0031\u0034\u002e\u0033\u002d\u0033\u0032\u002c\u0033\u0032\u002d\u0033\u0032\u0068\u0031\u0039\u0032\u0063\u0031\u0037\u002e\u0037\u002c\u0030\u002c\u0033\u0032\u002c\u0031\u0034\u002e\u0033\u002c\u0033\u0032\u002c\u0033\u0032\u0073\u002d\u0031\u0034\u002e\u0033\u002c\u0033\u0032\u002d\u0033\u0032\u002c\u0033\u0032\u0048\u0032\u0032\u0034\u0043\u0032\u0030\u0036\u002e\u0033\u002c\u0032\u0032\u0034\u002c\u0031\u0039\u0032\u002c\u0032\u0030\u0039\u002e\u0037\u002c\u0031\u0039\u0032\u002c\u0031\u0039\u0032\u007a\u0020\u004d\u0032\u0032\u0034\u002c\u0032\u0038\u0038\u0068\u0031\u0039\u0032\u000a\u0009\u0063\u0031\u0037\u002e\u0037\u002c\u0030\u002c\u0033\u0032\u002c\u0031\u0034\u002e\u0033\u002c\u0033\u0032\u002c\u0033\u0032\u0073\u002d\u0031\u0034\u002e\u0033\u002c\u0033\u0032\u002d\u0033\u0032\u002c\u0033\u0032\u0048\u0032\u0032\u0034\u0063\u002d\u0031\u0037\u002e\u0037\u002c\u0030\u002d\u0033\u0032\u002d\u0031\u0034\u002e\u0033\u002d\u0033\u0032\u002d\u0033\u0032\u0053\u0032\u0030\u0036\u002e\u0033\u002c\u0032\u0038\u0038\u002c\u0032\u0032\u0034\u002c\u0032\u0038\u0038\u007a\u0020\u004d\u0030\u002c\u0034\u0034\u0038\u0063\u0030\u002d\u0031\u0037\u002e\u0037\u002c\u0031\u0034\u002e\u0033\u002d\u0033\u0032\u002c\u0033\u0032\u002d\u0033\u0032\u0068\u0033\u0038\u0034\u000a\u0009\u0063\u0031\u0037\u002e\u0037\u002c\u0030\u002c\u0033\u0032\u002c\u0031\u0034\u002e\u0033\u002c\u0033\u0032\u002c\u0033\u0032\u0073\u002d\u0031\u0034\u002e\u0033\u002c\u0033\u0032\u002d\u0033\u0032\u002c\u0033\u0032\u0048\u0033\u0032\u0043\u0031\u0034\u002e\u0033\u002c\u0034\u0038\u0030\u002c\u0030\u002c\u0034\u0036\u0035\u002e\u0037\u002c\u0030\u002c\u0034\u0034\u0038\u007a\u0020\u004d\u0036\u002c\u0032\u0034\u0033\u002e\u0034\u006c\u0031\u0030\u0032\u002d\u0037\u0039\u002e\u0033\u0063\u0031\u0030\u002e\u0035\u002d\u0038\u002e\u0032\u002c\u0032\u0035\u002e\u0038\u002d\u0030\u002e\u0037\u002c\u0032\u0035\u002e\u0038\u002c\u0031\u0032\u002e\u0036\u0076\u0031\u0035\u0038\u002e\u0036\u000a\u0009\u0063\u0030\u002c\u0031\u0033\u002e\u0033\u002d\u0031\u0035\u002e\u0033\u002c\u0032\u0030\u002e\u0038\u002d\u0032\u0035\u002e\u0038\u002c\u0031\u0032\u002e\u0036\u004c\u0036\u002e\u0031\u002c\u0032\u0036\u0038\u002e\u0036\u0063\u002d\u0038\u002e\u0032\u002d\u0036\u002e\u0034\u002d\u0038\u002e\u0032\u002d\u0031\u0038\u002e\u0039\u002c\u0030\u002d\u0032\u0035\u002e\u0033\u004c\u0036\u002c\u0032\u0034\u0033\u002e\u0034\u007a",
39
- });
40
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
41
- ...{ class: "tips" },
42
- });
43
- /** @type {__VLS_StyleScopedClasses['tips']} */ ;
44
- // @ts-ignore
45
- [];
46
- const __VLS_export = (await import('vue')).defineComponent({
47
- props: {
48
- editor: {
49
- type: Object,
50
- required: true
51
- }
52
- },
53
- });
54
- export default {};
@@ -1,29 +0,0 @@
1
- <template>
2
- <button
3
- class="icon-button"
4
- :class="{ 'active': editor.isActive('italic') }"
5
- @click="editor.chain().focus().toggleItalic().run()" >
6
-
7
- <div class="icon">
8
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
9
- <path fill="currentColor" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" d="M128 64c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-58.7 0-133.3 320 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l58.7 0 133.3-320-64 0c-17.7 0-32-14.3-32-32z"/>
10
- </svg>
11
- </div>
12
-
13
- <div class="tips">斜体</div>
14
- </button>
15
- </template>
16
-
17
-
18
- <script setup>
19
- const props = defineProps({
20
- editor: {
21
- type: Object,
22
- required: true
23
- }
24
- })
25
-
26
-
27
-
28
- </script>
29
-
@@ -1,56 +0,0 @@
1
- const props = defineProps({
2
- editor: {
3
- type: Object,
4
- required: true
5
- }
6
- });
7
- const __VLS_ctx = {
8
- ...{},
9
- ...{},
10
- ...{},
11
- };
12
- let __VLS_components;
13
- let __VLS_intrinsics;
14
- let __VLS_directives;
15
- __VLS_asFunctionalElement1(__VLS_intrinsics.button, __VLS_intrinsics.button)({
16
- ...{ onClick: (...[$event]) => {
17
- __VLS_ctx.editor.chain().focus().toggleItalic().run();
18
- // @ts-ignore
19
- [editor,];
20
- } },
21
- ...{ class: "icon-button" },
22
- ...{ class: ({ 'active': __VLS_ctx.editor.isActive('italic') }) },
23
- });
24
- /** @type {__VLS_StyleScopedClasses['icon-button']} */ ;
25
- /** @type {__VLS_StyleScopedClasses['active']} */ ;
26
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
27
- ...{ class: "icon" },
28
- });
29
- /** @type {__VLS_StyleScopedClasses['icon']} */ ;
30
- __VLS_asFunctionalElement1(__VLS_intrinsics.svg, __VLS_intrinsics.svg)({
31
- xmlns: "http://www.w3.org/2000/svg",
32
- viewBox: "0 0 512 512",
33
- });
34
- __VLS_asFunctionalElement1(__VLS_intrinsics.path)({
35
- fill: "currentColor",
36
- stroke: "currentColor",
37
- 'stroke-width': "4",
38
- 'stroke-linecap': "round",
39
- 'stroke-linejoin': "round",
40
- d: "M128 64c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-58.7 0-133.3 320 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l58.7 0 133.3-320-64 0c-17.7 0-32-14.3-32-32z",
41
- });
42
- __VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
43
- ...{ class: "tips" },
44
- });
45
- /** @type {__VLS_StyleScopedClasses['tips']} */ ;
46
- // @ts-ignore
47
- [editor,];
48
- const __VLS_export = (await import('vue')).defineComponent({
49
- props: {
50
- editor: {
51
- type: Object,
52
- required: true
53
- }
54
- },
55
- });
56
- export default {};