vue-editify 0.2.20 → 0.2.22

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 (49) hide show
  1. package/examples/App.vue +12 -3
  2. package/examples/test.html +26 -29
  3. package/lib/components/button/button.vue.d.ts +1 -0
  4. package/lib/core/tool.d.ts +1 -1
  5. package/lib/editify/menu/menu.vue.d.ts +8 -1
  6. package/lib/editify.es.js +272 -250
  7. package/lib/editify.umd.js +2 -2
  8. package/lib/index.d.ts +1 -1
  9. package/package.json +2 -2
  10. package/src/components/button/button.vue +2 -1
  11. package/src/core/shortcut.ts +48 -201
  12. package/src/core/tool.ts +1 -1
  13. package/src/editify/editify.vue +20 -4
  14. package/src/editify/menu/menu.vue +15 -6
  15. package/src/editify/toolbar/toolbar.vue +1 -1
  16. package/src/feature/align.ts +9 -2
  17. package/src/feature/attachment.ts +5 -1
  18. package/src/feature/backColor.ts +7 -1
  19. package/src/feature/bold.ts +8 -1
  20. package/src/feature/code.ts +8 -1
  21. package/src/feature/codeBlock.ts +8 -1
  22. package/src/feature/fontFamily.ts +10 -1
  23. package/src/feature/fontSize.ts +8 -1
  24. package/src/feature/foreColor.ts +5 -1
  25. package/src/feature/formatClear.ts +8 -1
  26. package/src/feature/fullScreen.ts +9 -2
  27. package/src/feature/heading.ts +9 -2
  28. package/src/feature/image.ts +5 -1
  29. package/src/feature/indent.ts +9 -2
  30. package/src/feature/infoBlock.ts +9 -2
  31. package/src/feature/italic.ts +8 -1
  32. package/src/feature/lineHeight.ts +9 -2
  33. package/src/feature/link.ts +5 -1
  34. package/src/feature/mathformula.ts +5 -1
  35. package/src/feature/orderList.ts +9 -2
  36. package/src/feature/quote.ts +9 -2
  37. package/src/feature/redo.ts +9 -2
  38. package/src/feature/separator.ts +9 -2
  39. package/src/feature/sourceView.ts +9 -2
  40. package/src/feature/strikethrough.ts +8 -1
  41. package/src/feature/sub.ts +8 -1
  42. package/src/feature/super.ts +8 -1
  43. package/src/feature/table.ts +5 -1
  44. package/src/feature/task.ts +9 -2
  45. package/src/feature/underline.ts +8 -1
  46. package/src/feature/undo.ts +9 -2
  47. package/src/feature/unorderList.ts +9 -2
  48. package/src/feature/video.ts +5 -1
  49. package/src/index.ts +1 -1
@@ -920,7 +920,7 @@ export const TableToolbar = defineComponent(
920
920
  * 菜单栏 - 插入表格
921
921
  */
922
922
  export const TableMenuButton = defineComponent(
923
- props => {
923
+ (props, { expose }) => {
924
924
  const editor = inject<Ref<AlexEditor>>('editor')!
925
925
  const dataRangeCaches = inject<Ref<AlexElementsRangeType>>('dataRangeCaches')!
926
926
  const $editTrans = inject<(key: string) => any>('$editTrans')!
@@ -928,6 +928,10 @@ export const TableMenuButton = defineComponent(
928
928
 
929
929
  const btnRef = ref<InstanceType<typeof Button> | null>(null)
930
930
 
931
+ expose({
932
+ btnRef
933
+ })
934
+
931
935
  return () => {
932
936
  return props.config.show
933
937
  ? h(
@@ -1,4 +1,4 @@
1
- import { defineComponent, h, inject, PropType, Ref } from 'vue'
1
+ import { defineComponent, h, inject, PropType, ref, Ref } from 'vue'
2
2
  import { AlexElementsRangeType, AlexEditor } from 'alex-editor'
3
3
  import { MenuButtonType } from '@/core/tool'
4
4
  import { hasPreInRange, hasTableInRange, rangeIsInTask, setTask } from '@/core/function'
@@ -14,17 +14,24 @@ const FEATURE_NAME = 'task'
14
14
  * 菜单栏 - 任务列表
15
15
  */
16
16
  export const TaskMenuButton = defineComponent(
17
- props => {
17
+ (props, { expose }) => {
18
18
  const editor = inject<Ref<AlexEditor>>('editor')!
19
19
  const dataRangeCaches = inject<Ref<AlexElementsRangeType>>('dataRangeCaches')!
20
20
  const $editTrans = inject<(key: string) => any>('$editTrans')!
21
21
  const isSourceView = inject<Ref<boolean>>('isSourceView')!
22
22
 
23
+ const btnRef = ref<InstanceType<typeof Button> | null>(null)
24
+
25
+ expose({
26
+ btnRef
27
+ })
28
+
23
29
  return () => {
24
30
  return props.config.show
25
31
  ? h(
26
32
  Button,
27
33
  {
34
+ ref: btnRef,
28
35
  name: FEATURE_NAME,
29
36
  tooltip: props.tooltip,
30
37
  color: props.color,
@@ -78,21 +78,28 @@ export const UnderlineToolbarButton = defineComponent(
78
78
  * 菜单栏 - 下划线
79
79
  */
80
80
  export const UnderlineMenuButton = defineComponent(
81
- props => {
81
+ (props, { expose }) => {
82
82
  const editor = inject<Ref<AlexEditor>>('editor')!
83
83
  const dataRangeCaches = inject<Ref<AlexElementsRangeType>>('dataRangeCaches')!
84
84
  const $editTrans = inject<(key: string) => any>('$editTrans')!
85
85
  const isSourceView = inject<Ref<boolean>>('isSourceView')!
86
86
 
87
+ const btnRef = ref<InstanceType<typeof Button> | null>(null)
88
+
87
89
  const active = computed<boolean>(() => {
88
90
  return queryTextStyle(editor.value, dataRangeCaches.value, 'text-decoration', 'underline') || queryTextStyle(editor.value, dataRangeCaches.value, 'text-decoration-line', 'underline')
89
91
  })
90
92
 
93
+ expose({
94
+ btnRef
95
+ })
96
+
91
97
  return () => {
92
98
  return props.config.show
93
99
  ? h(
94
100
  Button,
95
101
  {
102
+ ref: btnRef,
96
103
  name: FEATURE_NAME,
97
104
  tooltip: props.tooltip,
98
105
  color: props.color,
@@ -1,4 +1,4 @@
1
- import { defineComponent, h, inject, PropType, Ref } from 'vue'
1
+ import { defineComponent, h, inject, PropType, ref, Ref } from 'vue'
2
2
  import { AlexEditor } from 'alex-editor'
3
3
  import { Button } from '@/components/button'
4
4
  import { MenuButtonType } from '@/core/tool'
@@ -13,18 +13,25 @@ const FEATURE_NAME = 'undo'
13
13
  * 菜单栏 - 撤销
14
14
  */
15
15
  export const UndoMenuButton = defineComponent(
16
- props => {
16
+ (props, { expose }) => {
17
17
  const editor = inject<Ref<AlexEditor>>('editor')!
18
18
  const $editTrans = inject<(key: string) => any>('$editTrans')!
19
19
  const isSourceView = inject<Ref<boolean>>('isSourceView')!
20
20
  const rangeKey = inject<Ref<number | null>>('rangeKey')!
21
21
  const undo = inject<() => void>('undo')!
22
22
 
23
+ const btnRef = ref<InstanceType<typeof Button> | null>(null)
24
+
25
+ expose({
26
+ btnRef
27
+ })
28
+
23
29
  return () => {
24
30
  return props.config.show
25
31
  ? h(
26
32
  Button,
27
33
  {
34
+ ref: btnRef,
28
35
  name: FEATURE_NAME,
29
36
  tooltip: props.tooltip,
30
37
  color: props.color,
@@ -1,4 +1,4 @@
1
- import { computed, defineComponent, h, inject, PropType, Ref } from 'vue'
1
+ import { computed, defineComponent, h, inject, PropType, ref, Ref } from 'vue'
2
2
  import { AlexElementsRangeType, AlexEditor, AlexElement } from 'alex-editor'
3
3
  import { MenuButtonType } from '@/core/tool'
4
4
  import { elementIsList, getMatchElementByRange, hasPreInRange, hasTableInRange, rangeIsInList, setList } from '@/core/function'
@@ -139,17 +139,24 @@ export const UnorderListToolbar = defineComponent(
139
139
  * 菜单栏 - 无序列表
140
140
  */
141
141
  export const UnorderListMenuButton = defineComponent(
142
- props => {
142
+ (props, { expose }) => {
143
143
  const editor = inject<Ref<AlexEditor>>('editor')!
144
144
  const dataRangeCaches = inject<Ref<AlexElementsRangeType>>('dataRangeCaches')!
145
145
  const $editTrans = inject<(key: string) => any>('$editTrans')!
146
146
  const isSourceView = inject<Ref<boolean>>('isSourceView')!
147
147
 
148
+ const btnRef = ref<InstanceType<typeof Button> | null>(null)
149
+
150
+ expose({
151
+ btnRef
152
+ })
153
+
148
154
  return () => {
149
155
  return props.config.show
150
156
  ? h(
151
157
  Button,
152
158
  {
159
+ ref: btnRef,
153
160
  name: FEATURE_NAME,
154
161
  tooltip: props.tooltip,
155
162
  color: props.color,
@@ -258,7 +258,7 @@ export const VideoToolbar = defineComponent(
258
258
  * 菜单栏 - 插入视频
259
259
  */
260
260
  export const VideoMenuButton = defineComponent(
261
- props => {
261
+ (props, { expose }) => {
262
262
  const editor = inject<Ref<AlexEditor>>('editor')!
263
263
  const dataRangeCaches = inject<Ref<AlexElementsRangeType>>('dataRangeCaches')!
264
264
  const $editTrans = inject<(key: string) => any>('$editTrans')!
@@ -266,6 +266,10 @@ export const VideoMenuButton = defineComponent(
266
266
 
267
267
  const btnRef = ref<InstanceType<typeof Button> | null>(null)
268
268
 
269
+ expose({
270
+ btnRef
271
+ })
272
+
269
273
  return () => {
270
274
  return props.config.show
271
275
  ? h(
package/src/index.ts CHANGED
@@ -100,7 +100,7 @@ const install = (app: App) => {
100
100
  app.component(Editify.name!, Editify)
101
101
  }
102
102
  //版本号
103
- const version = '0.2.20'
103
+ const version = '0.2.22'
104
104
 
105
105
  //导出组件和安装函数
106
106
  export { Editify as default, Editify, install, AlexElement, version }