tiptapify 0.2.6 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +1 -1
  2. package/dist/tiptapify.css +1 -1
  3. package/dist/tiptapify.mjs +23430 -25369
  4. package/dist/tiptapify.umd.js +70 -73
  5. package/index.d.ts +5 -0
  6. package/package.json +1 -1
  7. package/src/components/Footer.vue +1 -1
  8. package/src/components/Tiptapify.vue +6 -2
  9. package/src/components/Toolbar/Index.vue +3 -4
  10. package/src/components/Toolbar/Items.test.ts +53 -0
  11. package/src/components/Toolbar/Items.vue +5 -5
  12. package/src/components/UI/HotkeyTooltip.test.ts +65 -0
  13. package/src/components/UI/HotkeyTooltip.vue +54 -0
  14. package/src/components/UI/Tooltip.vue +20 -0
  15. package/src/composables/useTiptapifyConfig.test.ts +66 -0
  16. package/src/composables/useTiptapifyConfig.ts +17 -0
  17. package/src/constants/defaults.ts +4 -2
  18. package/src/extensions/components/actions/redo/Button.vue +5 -9
  19. package/src/extensions/components/actions/undo/Button.vue +5 -9
  20. package/src/extensions/components/ai/Button.vue +7 -10
  21. package/src/extensions/components/ai/Dialog.vue +4 -9
  22. package/src/extensions/components/alignment/center/Button.vue +5 -9
  23. package/src/extensions/components/alignment/justify/Button.vue +5 -9
  24. package/src/extensions/components/alignment/left/Button.vue +5 -9
  25. package/src/extensions/components/alignment/right/Button.vue +5 -9
  26. package/src/extensions/components/format/bold/Button.vue +5 -9
  27. package/src/extensions/components/format/italic/Button.vue +5 -9
  28. package/src/extensions/components/format/strike/Button.vue +5 -9
  29. package/src/extensions/components/format/underline/Button.vue +5 -9
  30. package/src/extensions/components/formatExtra/code/Button.vue +5 -9
  31. package/src/extensions/components/formatExtra/codeBlock/Button.vue +5 -9
  32. package/src/extensions/components/formatExtra/quote/Button.vue +5 -9
  33. package/src/extensions/components/formatExtra/sub/Button.vue +5 -9
  34. package/src/extensions/components/formatExtra/sup/Button.vue +5 -9
  35. package/src/extensions/components/list/bullet/Button.vue +8 -13
  36. package/src/extensions/components/list/indent/Button.vue +5 -9
  37. package/src/extensions/components/list/numbered/Button.vue +5 -9
  38. package/src/extensions/components/list/outdent/Button.vue +5 -9
  39. package/src/extensions/components/list/task/Button.vue +5 -9
  40. package/src/extensions/components/media/charmap/Button.vue +5 -8
  41. package/src/extensions/components/media/charmap/Picker.vue +2 -3
  42. package/src/extensions/components/media/emoji/Button.vue +6 -9
  43. package/src/extensions/components/media/emoji/Picker.vue +2 -3
  44. package/src/extensions/components/media/iframe/Button.vue +6 -10
  45. package/src/extensions/components/media/iframe/IframeDialog.vue +3 -7
  46. package/src/extensions/components/media/image/Button.vue +6 -10
  47. package/src/extensions/components/media/image/ImageDialog.vue +5 -10
  48. package/src/extensions/components/media/link/Button.vue +7 -10
  49. package/src/extensions/components/media/link/LinkDialog.vue +3 -7
  50. package/src/extensions/components/media/table/Button.vue +10 -24
  51. package/src/extensions/components/media/table/ColumnActions.vue +4 -9
  52. package/src/extensions/components/media/table/RowActions.vue +4 -9
  53. package/src/extensions/components/media/video/Button.vue +6 -10
  54. package/src/extensions/components/media/video/VideoDialog.vue +3 -7
  55. package/src/extensions/components/misc/break/Button.vue +5 -9
  56. package/src/extensions/components/misc/formatClear/Button.vue +5 -9
  57. package/src/extensions/components/misc/fullscreen/Button.vue +5 -9
  58. package/src/extensions/components/misc/invisibleChar/Button.vue +5 -9
  59. package/src/extensions/components/misc/line/Button.vue +5 -9
  60. package/src/extensions/components/misc/preview/Button.vue +5 -9
  61. package/src/extensions/components/misc/source/Button.vue +6 -10
  62. package/src/extensions/components/misc/source/ShowSourceDialog.vue +4 -5
  63. package/src/extensions/components/style/color/Button.vue +5 -9
  64. package/src/extensions/components/style/fontFamily/Button.vue +5 -9
  65. package/src/extensions/components/style/fontSize/Button.vue +6 -7
  66. package/src/extensions/components/style/heading/Button.vue +6 -8
  67. package/src/extensions/components/style/highlight/Button.vue +5 -9
  68. package/src/extensions/components/style/lineHeight/Button.vue +5 -9
  69. package/src/index.ts +3 -0
  70. package/src/utils/hotkeys.test.ts +146 -0
  71. package/src/utils/hotkeys.ts +65 -0
@@ -2,16 +2,14 @@
2
2
 
3
3
  import { Editor } from '@tiptap/vue-3'
4
4
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
5
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
5
6
  import IframeDialog from '@tiptapify/extensions/components/media/iframe/IframeDialog.vue'
6
- import { variantBtnTypes } from '@tiptapify/types/editor'
7
- import { inject, PropType, ref, Ref, useTemplateRef } from 'vue'
7
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
8
+ import { inject, ref, Ref, useTemplateRef } from 'vue'
8
9
 
9
- import defaults from '@tiptapify/constants/defaults'
10
10
  import { ComposerTranslation } from 'vue-i18n'
11
11
 
12
- defineProps({
13
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
14
- })
12
+ const { variantBtn } = useTiptapifyConfig()
15
13
 
16
14
  const editor = inject('tiptapifyEditor') as Ref<Editor>
17
15
 
@@ -29,13 +27,11 @@ const icon = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" vie
29
27
  size="32"
30
28
  @click="dialog?.open()"
31
29
  >
32
- <VTooltip activator="parent">
33
- {{ t('media.iframe') }}
34
- </VTooltip>
30
+ <Tooltip :label="t('media.iframe')" />
35
31
  <BtnIcon :icon="icon" />
36
32
  </VBtn>
37
33
 
38
- <IframeDialog ref="dialog" :variant-btn="variantBtn" />
34
+ <IframeDialog ref="dialog" />
39
35
  </template>
40
36
 
41
37
  <style lang="scss" scoped>
@@ -2,18 +2,14 @@
2
2
 
3
3
  import { Editor } from '@tiptap/vue-3'
4
4
  import TiptapifyDialog from '@tiptapify/components/UI/TiptapifyDialog.vue'
5
- import defaults from '@tiptapify/constants/defaults'
6
- import { variantBtnTypes, variantFieldTypes } from '@tiptapify/types/editor'
5
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
7
6
 
8
7
  import type { iframeOptions } from '@tiptapify/types/iframe'
9
8
 
10
- import { computed, inject, PropType, Ref, ref, useTemplateRef, watch } from 'vue'
9
+ import { computed, inject, Ref, ref, useTemplateRef, watch } from 'vue'
11
10
  import { ComposerTranslation } from 'vue-i18n'
12
11
 
13
- defineProps({
14
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
15
- variantField: { type: String as PropType<variantFieldTypes>, default() { return defaults.variantField } },
16
- })
12
+ const { variantBtn, variantField } = useTiptapifyConfig()
17
13
 
18
14
  const editor = inject('tiptapifyEditor') as Ref<Editor>
19
15
  const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
@@ -3,16 +3,14 @@
3
3
  import * as mdi from '@mdi/js'
4
4
  import { Editor } from '@tiptap/vue-3'
5
5
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
6
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
6
7
  import ImageDialog from '@tiptapify/extensions/components/media/image/ImageDialog.vue'
7
- import { variantBtnTypes } from '@tiptapify/types/editor'
8
- import { inject, PropType, Ref } from 'vue'
8
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
9
+ import { inject, Ref } from 'vue'
9
10
 
10
- import defaults from '@tiptapify/constants/defaults'
11
11
  import { ComposerTranslation } from 'vue-i18n'
12
12
 
13
- defineProps({
14
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
15
- })
13
+ const { variantBtn } = useTiptapifyConfig()
16
14
 
17
15
  const editor = inject('tiptapifyEditor') as Ref<Editor>
18
16
 
@@ -27,13 +25,11 @@ const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
27
25
  size="32"
28
26
  @click="editor.commands.showTiptapifyImage()"
29
27
  >
30
- <VTooltip activator="parent">
31
- {{ t('media.image') }}
32
- </VTooltip>
28
+ <Tooltip :label="t('media.image')" />
33
29
  <BtnIcon :icon="`mdiSvg:${mdi.mdiImage}`" />
34
30
  </VBtn>
35
31
 
36
- <ImageDialog :variant-btn="variantBtn" />
32
+ <ImageDialog />
37
33
  </template>
38
34
 
39
35
  <style lang="scss" scoped>
@@ -3,16 +3,13 @@
3
3
  import * as mdi from '@mdi/js'
4
4
  import { Editor } from '@tiptap/vue-3'
5
5
  import TiptapifyDialog from '@tiptapify/components/UI/TiptapifyDialog.vue'
6
- import defaults from '@tiptapify/constants/defaults'
7
- import { variantBtnTypes, variantFieldTypes } from '@tiptapify/types/editor'
6
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
7
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
8
8
 
9
- import { computed, inject, onMounted, onUnmounted, PropType, Ref, ref, useTemplateRef } from 'vue'
9
+ import { computed, inject, onMounted, onUnmounted, Ref, ref, useTemplateRef } from 'vue'
10
10
  import { ComposerTranslation } from 'vue-i18n'
11
11
 
12
- defineProps({
13
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
14
- variantField: { type: String as PropType<variantFieldTypes>, default() { return defaults.variantField } },
15
- })
12
+ const { variantBtn, variantField } = useTiptapifyConfig()
16
13
 
17
14
  const editor = inject('tiptapifyEditor') as Ref<Editor>
18
15
  const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
@@ -190,9 +187,7 @@ onUnmounted(() => {
190
187
  @click="keepRatio = !keepRatio"
191
188
  >
192
189
  <VIcon :icon="keepRatio ? `mdiSvg:${mdi.mdiLock}` : `mdiSvg:${mdi.mdiLockOpenVariant}`" />
193
- <VTooltip activator="parent">
194
- {{ t('dialog.image.keep_ratio') }}
195
- </VTooltip>
190
+ <Tooltip :label="t('dialog.image.keep_ratio')" />
196
191
  </VBtn>
197
192
  </div>
198
193
  </div>
@@ -2,16 +2,15 @@
2
2
 
3
3
  import * as mdi from '@mdi/js'
4
4
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
5
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
5
6
  import LinkDialog from '@tiptapify/extensions/components/media/link/LinkDialog.vue'
6
- import { TiptapifyEditor, variantBtnTypes } from '@tiptapify/types/editor'
7
- import { computed, inject, PropType, Ref } from 'vue'
7
+ import { TiptapifyEditor } from '@tiptapify/types/editor'
8
+ import { computed, inject, Ref } from 'vue'
8
9
 
9
- import defaults from '@tiptapify/constants/defaults'
10
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
10
11
  import { ComposerTranslation } from 'vue-i18n'
11
12
 
12
- defineProps({
13
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
14
- })
13
+ const { variantBtn } = useTiptapifyConfig()
15
14
 
16
15
  const editor = inject('tiptapifyEditor') as Ref<TiptapifyEditor>
17
16
 
@@ -28,13 +27,11 @@ const icon = computed(() => editor.value.isActive('tiptapifyLink') ? `mdiSvg:${m
28
27
  size="32"
29
28
  @click="editor.commands.showLink()"
30
29
  >
31
- <VTooltip activator="parent">
32
- {{ t('media.link') }}
33
- </VTooltip>
30
+ <Tooltip :label="t('media.link')" />
34
31
  <BtnIcon :icon="icon" />
35
32
  </VBtn>
36
33
 
37
- <LinkDialog :variant-btn="variantBtn" />
34
+ <LinkDialog />
38
35
  </template>
39
36
 
40
37
  <style lang="scss" scoped>
@@ -1,19 +1,15 @@
1
1
  <script setup lang="ts">
2
2
 
3
3
  import { Editor } from '@tiptap/vue-3'
4
- import defaults from '@tiptapify/constants/defaults'
5
- import { variantBtnTypes, variantFieldTypes } from '@tiptapify/types/editor'
4
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
6
5
  import { isValidHref } from '@tiptapify/utils/validateHref'
7
6
 
8
- import { computed, inject, onMounted, onUnmounted, PropType, Ref, ref, useTemplateRef, watch } from 'vue'
7
+ import { computed, inject, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch } from 'vue'
9
8
 
10
9
  import TiptapifyDialog from '@tiptapify/components/UI/TiptapifyDialog.vue'
11
10
  import { ComposerTranslation } from 'vue-i18n'
12
11
 
13
- defineProps({
14
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
15
- variantField: { type: String as PropType<variantFieldTypes>, default() { return 'outlined' } },
16
- })
12
+ const { variantBtn, variantField } = useTiptapifyConfig()
17
13
 
18
14
  const editor = inject('tiptapifyEditor') as Ref<Editor>
19
15
  const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
@@ -3,18 +3,16 @@
3
3
  import * as mdi from '@mdi/js'
4
4
  import { Editor } from '@tiptap/vue-3'
5
5
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
6
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
6
7
  import ColumnActions from '@tiptapify/extensions/components/media/table/ColumnActions.vue'
7
8
  import RowActions from '@tiptapify/extensions/components/media/table/RowActions.vue'
8
9
  import TableBuilder from '@tiptapify/extensions/components/media/table/TableBuilder.vue'
9
- import { variantBtnTypes } from '@tiptapify/types/editor'
10
- import { inject, PropType, Ref } from 'vue'
10
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
11
+ import { inject, Ref } from 'vue'
11
12
 
12
- import defaults from '@tiptapify/constants/defaults'
13
13
  import { ComposerTranslation } from 'vue-i18n'
14
14
 
15
- defineProps({
16
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
17
- })
15
+ const { variantBtn } = useTiptapifyConfig()
18
16
 
19
17
  const editor = inject('tiptapifyEditor') as Ref<Editor>
20
18
 
@@ -48,9 +46,7 @@ const columnActionsDisabled = () => {
48
46
  <VMenu :activator="`#tiptapify-table-button-${editor.instanceId}`" :close-on-content-click="false">
49
47
  <VList density="compact">
50
48
  <VListItem link>
51
- <VTooltip activator="parent">
52
- {{ t('media.tables.insertTable') }}
53
- </VTooltip>
49
+ <Tooltip :label="t('media.tables.insertTable')" />
54
50
  <VListItemTitle class="d-flex justify-center align-center">
55
51
  <BtnIcon :icon="`mdiSvg:${mdi.mdiTablePlus}`" />
56
52
  </VListItemTitle>
@@ -68,18 +64,14 @@ const columnActionsDisabled = () => {
68
64
  </VListItem>
69
65
 
70
66
  <VListItem link :disabled="!editor.can().chain().focus().deleteTable().run()" @click="editor.chain().focus().deleteTable().run()">
71
- <VTooltip activator="parent">
72
- {{ t('media.tables.deleteTable') }}
73
- </VTooltip>
67
+ <Tooltip :label="t('media.tables.deleteTable')" />
74
68
  <VListItemTitle class="d-flex justify-center align-center">
75
69
  <BtnIcon :icon="`mdiSvg:${mdi.mdiTableMinus}`" />
76
70
  </VListItemTitle>
77
71
  </VListItem>
78
72
 
79
73
  <VListItem link :disabled="rowActionsDisabled()">
80
- <VTooltip activator="parent">
81
- {{ t('media.tables.row') }}
82
- </VTooltip>
74
+ <Tooltip :label="t('media.tables.row')" />
83
75
 
84
76
  <VListItemTitle class="d-flex justify-center align-center">
85
77
  <BtnIcon :icon="`mdiSvg:${mdi.mdiTableRow}`" />
@@ -89,9 +81,7 @@ const columnActionsDisabled = () => {
89
81
  </VListItem>
90
82
 
91
83
  <VListItem link :disabled="columnActionsDisabled()">
92
- <VTooltip activator="parent">
93
- {{ t('media.tables.col') }}
94
- </VTooltip>
84
+ <Tooltip :label="t('media.tables.col')" />
95
85
 
96
86
  <VListItemTitle class="d-flex justify-center align-center">
97
87
  <BtnIcon :icon="`mdiSvg:${mdi.mdiTableColumn}`" />
@@ -101,9 +91,7 @@ const columnActionsDisabled = () => {
101
91
  </VListItem>
102
92
 
103
93
  <VListItem link :disabled="!editor.can().chain().focus().mergeCells().run()" @click="editor.chain().focus().mergeCells().run()">
104
- <VTooltip activator="parent">
105
- {{ t('media.tables.mergeCells') }}
106
- </VTooltip>
94
+ <Tooltip :label="t('media.tables.mergeCells')" />
107
95
 
108
96
  <VListItemTitle class="d-flex justify-center align-center">
109
97
  <BtnIcon :icon="`mdiSvg:${mdi.mdiTableMergeCells}`" />
@@ -111,9 +99,7 @@ const columnActionsDisabled = () => {
111
99
  </VListItem>
112
100
 
113
101
  <VListItem link :disabled="!editor.can().chain().focus().splitCell().run()" @click="editor.chain().focus().splitCell().run()">
114
- <VTooltip activator="parent">
115
- {{ t('media.tables.splitCell') }}
116
- </VTooltip>
102
+ <Tooltip :label="t('media.tables.splitCell')" />
117
103
 
118
104
  <VListItemTitle class="d-flex justify-center align-center">
119
105
  <BtnIcon :icon="`mdiSvg:${mdi.mdiTableSplitCell}`" />
@@ -3,6 +3,7 @@
3
3
  import * as mdi from '@mdi/js'
4
4
  import { Editor } from '@tiptap/vue-3'
5
5
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
6
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
6
7
  import { inject, Ref } from 'vue'
7
8
  import { ComposerTranslation } from 'vue-i18n'
8
9
 
@@ -27,21 +28,15 @@ const columnCanDelete = () => {
27
28
  <VMenu submenu activator="parent" open-on-hover open-on-click>
28
29
  <VList>
29
30
  <VListItem link :disabled="!columnCanAddBefore()" @click="editor.chain().focus().addColumnBefore().run()">
30
- <VTooltip activator="parent">
31
- {{ t('media.tables.insertColBefore') }}
32
- </VTooltip>
31
+ <Tooltip :label="t('media.tables.insertColBefore')" />
33
32
  <BtnIcon :icon="`mdiSvg:${mdi.mdiTableColumnPlusBefore}`" />
34
33
  </VListItem>
35
34
  <VListItem link :disabled="!columnCanAddAfter()" @click="editor.chain().focus().addColumnAfter().run()">
36
- <VTooltip activator="parent">
37
- {{ t('media.tables.insertColAfter') }}
38
- </VTooltip>
35
+ <Tooltip :label="t('media.tables.insertColAfter')" />
39
36
  <BtnIcon :icon="`mdiSvg:${mdi.mdiTableColumnPlusAfter}`" />
40
37
  </VListItem>
41
38
  <VListItem link :disabled="!columnCanDelete()" @click="editor.chain().focus().deleteColumn().run()">
42
- <VTooltip activator="parent">
43
- {{ t('media.tables.deleteCol') }}
44
- </VTooltip>
39
+ <Tooltip :label="t('media.tables.deleteCol')" />
45
40
  <BtnIcon :icon="`mdiSvg:${mdi.mdiTableColumnRemove}`" />
46
41
  </VListItem>
47
42
  </VList>
@@ -3,6 +3,7 @@
3
3
  import * as mdi from '@mdi/js'
4
4
  import { Editor } from '@tiptap/vue-3'
5
5
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
6
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
6
7
  import { inject, Ref } from 'vue'
7
8
  import { ComposerTranslation } from 'vue-i18n'
8
9
 
@@ -27,21 +28,15 @@ const rowCanDelete = () => {
27
28
  <VMenu submenu activator="parent" open-on-hover open-on-click>
28
29
  <VList>
29
30
  <VListItem link :disabled="!rowCanAddBefore()" @click="editor.chain().focus().addRowBefore().run()">
30
- <VTooltip activator="parent">
31
- {{ t('media.tables.insertRowBefore') }}
32
- </VTooltip>
31
+ <Tooltip :label="t('media.tables.insertRowBefore')" />
33
32
  <BtnIcon :icon="`mdiSvg:${mdi.mdiTableRowPlusBefore}`" />
34
33
  </VListItem>
35
34
  <VListItem link :disabled="!rowCanAddAfter()" @click="editor.chain().focus().addRowAfter().run()">
36
- <VTooltip activator="parent">
37
- {{ t('media.tables.insertRowAfter') }}
38
- </VTooltip>
35
+ <Tooltip :label="t('media.tables.insertRowAfter')" />
39
36
  <BtnIcon :icon="`mdiSvg:${mdi.mdiTableRowPlusAfter}`" />
40
37
  </VListItem>
41
38
  <VListItem link :disabled="!rowCanDelete()" @click="editor.chain().focus().deleteRow().run()">
42
- <VTooltip activator="parent">
43
- {{ t('media.tables.deleteRow') }}
44
- </VTooltip>
39
+ <Tooltip :label="t('media.tables.deleteRow')" />
45
40
  <BtnIcon :icon="`mdiSvg:${mdi.mdiTableRowRemove}`" />
46
41
  </VListItem>
47
42
  </VList>
@@ -2,16 +2,14 @@
2
2
 
3
3
  import { Editor } from '@tiptap/vue-3'
4
4
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
5
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
5
6
  import VideoDialog from '@tiptapify/extensions/components/media/video/VideoDialog.vue'
6
- import { variantBtnTypes } from '@tiptapify/types/editor'
7
- import { inject, PropType, Ref } from 'vue'
7
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
8
+ import { inject, Ref } from 'vue'
8
9
 
9
- import defaults from '@tiptapify/constants/defaults'
10
10
  import { ComposerTranslation } from 'vue-i18n'
11
11
 
12
- defineProps({
13
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
14
- })
12
+ const { variantBtn } = useTiptapifyConfig()
15
13
 
16
14
  const editor = inject('tiptapifyEditor') as Ref<Editor>
17
15
 
@@ -27,13 +25,11 @@ const icon = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" vie
27
25
  size="32"
28
26
  @click="editor.commands.showTiptapifyVideo()"
29
27
  >
30
- <VTooltip activator="parent">
31
- {{ t('media.video') }}
32
- </VTooltip>
28
+ <Tooltip :label="t('media.video')" />
33
29
  <BtnIcon :icon="icon" />
34
30
  </VBtn>
35
31
 
36
- <VideoDialog :variant-btn="variantBtn" />
32
+ <VideoDialog />
37
33
  </template>
38
34
 
39
35
  <style lang="scss" scoped>
@@ -2,16 +2,12 @@
2
2
 
3
3
  import { Editor } from '@tiptap/vue-3'
4
4
  import TiptapifyDialog from '@tiptapify/components/UI/TiptapifyDialog.vue'
5
- import defaults from '@tiptapify/constants/defaults'
6
- import { variantBtnTypes, variantFieldTypes } from '@tiptapify/types/editor'
5
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
7
6
 
8
- import { computed, inject, onMounted, onUnmounted, PropType, Ref, ref, useTemplateRef } from 'vue'
7
+ import { computed, inject, onMounted, onUnmounted, Ref, ref, useTemplateRef } from 'vue'
9
8
  import { ComposerTranslation } from 'vue-i18n'
10
9
 
11
- defineProps({
12
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
13
- variantField: { type: String as PropType<variantFieldTypes>, default() { return defaults.variantField } },
14
- })
10
+ const { variantBtn, variantField } = useTiptapifyConfig()
15
11
 
16
12
  const editor = inject('tiptapifyEditor') as Ref<Editor>
17
13
  const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
@@ -3,15 +3,13 @@
3
3
  import * as mdi from '@mdi/js'
4
4
  import { Editor } from '@tiptap/vue-3'
5
5
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
6
- import { variantBtnTypes } from '@tiptapify/types/editor'
7
- import { inject, PropType, Ref } from 'vue'
6
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
7
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
8
+ import { inject, Ref } from 'vue'
8
9
 
9
- import defaults from '@tiptapify/constants/defaults'
10
10
  import { ComposerTranslation } from 'vue-i18n'
11
11
 
12
- defineProps({
13
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
14
- })
12
+ const { variantBtn } = useTiptapifyConfig()
15
13
 
16
14
  const editor = inject('tiptapifyEditor') as Ref<Editor>
17
15
 
@@ -21,9 +19,7 @@ const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
21
19
 
22
20
  <template>
23
21
  <VBtn size="32" :variant="variantBtn" @click="editor.chain().focus().setHardBreak().run()">
24
- <VTooltip activator="parent">
25
- {{ t('format.break') }}
26
- </VTooltip>
22
+ <Tooltip :label="t('format.break')" hotkey="Mod-Enter" />
27
23
  <BtnIcon :icon="`mdiSvg:${mdi.mdiFormatPageBreak}`" />
28
24
  </VBtn>
29
25
  </template>
@@ -3,15 +3,13 @@
3
3
  import * as mdi from '@mdi/js'
4
4
  import { Editor } from '@tiptap/vue-3'
5
5
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
6
- import { variantBtnTypes } from '@tiptapify/types/editor'
7
- import { inject, PropType, Ref } from 'vue'
6
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
7
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
8
+ import { inject, Ref } from 'vue'
8
9
 
9
- import defaults from '@tiptapify/constants/defaults'
10
10
  import { ComposerTranslation } from 'vue-i18n'
11
11
 
12
- defineProps({
13
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
14
- })
12
+ const { variantBtn } = useTiptapifyConfig()
15
13
 
16
14
  const editor = inject('tiptapifyEditor') as Ref<Editor>
17
15
 
@@ -27,9 +25,7 @@ const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
27
25
  color=""
28
26
  @click="editor.chain().focus().unsetAllMarks().clearNodes().run()"
29
27
  >
30
- <VTooltip activator="parent">
31
- {{ t('format.formatClear') }}
32
- </VTooltip>
28
+ <Tooltip :label="t('format.formatClear')" />
33
29
  <BtnIcon :icon="`mdiSvg:${mdi.mdiFormatClear}`" />
34
30
  </VBtn>
35
31
  </template>
@@ -3,15 +3,13 @@
3
3
  import * as mdi from '@mdi/js'
4
4
  import { Editor } from '@tiptap/vue-3'
5
5
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
6
- import { variantBtnTypes } from '@tiptapify/types/editor'
7
- import { inject, nextTick, PropType, ref, Ref } from 'vue'
6
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
7
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
8
+ import { inject, nextTick, ref, Ref } from 'vue'
8
9
 
9
- import defaults from '@tiptapify/constants/defaults'
10
10
  import { ComposerTranslation } from 'vue-i18n'
11
11
 
12
- defineProps({
13
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
14
- })
12
+ const { variantBtn } = useTiptapifyConfig()
15
13
 
16
14
  const editor = inject('tiptapifyEditor') as Ref<Editor>
17
15
 
@@ -50,9 +48,7 @@ async function changeEditorContainer(source: string, target: string) {
50
48
  :variant="variantBtn"
51
49
  @click="showDialog ? dialogClose() : dialogOpen()"
52
50
  >
53
- <VTooltip activator="parent">
54
- {{ t('misc.fullscreen') }}
55
- </VTooltip>
51
+ <Tooltip :label="t('misc.fullscreen')" />
56
52
  <BtnIcon :icon="showDialog ? `mdiSvg:${mdi.mdiFullscreenExit}` : `mdiSvg:${mdi.mdiFullscreen}`" />
57
53
  </VBtn>
58
54
 
@@ -2,15 +2,13 @@
2
2
 
3
3
  import { Editor } from '@tiptap/vue-3'
4
4
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
5
- import { variantBtnTypes } from '@tiptapify/types/editor'
6
- import { inject, PropType, Ref } from 'vue'
5
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
6
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
7
+ import { inject, Ref } from 'vue'
7
8
 
8
- import defaults from '@tiptapify/constants/defaults'
9
9
  import { ComposerTranslation } from 'vue-i18n'
10
10
 
11
- defineProps({
12
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
13
- })
11
+ const { variantBtn } = useTiptapifyConfig()
14
12
 
15
13
  const editor = inject('tiptapifyEditor') as Ref<Editor>
16
14
 
@@ -27,9 +25,7 @@ const icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><pat
27
25
  size="32"
28
26
  @click="editor.commands.toggleInvisibleCharacters()"
29
27
  >
30
- <VTooltip activator="parent">
31
- {{ t('misc.toggleInvisibleCharacters') }}
32
- </VTooltip>
28
+ <Tooltip :label="t('misc.toggleInvisibleCharacters')" />
33
29
  <BtnIcon :icon="icon" />
34
30
  </VBtn>
35
31
  </template>
@@ -3,15 +3,13 @@
3
3
  import * as mdi from '@mdi/js'
4
4
  import { Editor } from '@tiptap/vue-3'
5
5
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
6
- import { variantBtnTypes } from '@tiptapify/types/editor'
7
- import { inject, PropType, Ref } from 'vue'
6
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
7
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
8
+ import { inject, Ref } from 'vue'
8
9
 
9
- import defaults from '@tiptapify/constants/defaults'
10
10
  import { ComposerTranslation } from 'vue-i18n'
11
11
 
12
- defineProps({
13
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
14
- })
12
+ const { variantBtn } = useTiptapifyConfig()
15
13
 
16
14
  const editor = inject('tiptapifyEditor') as Ref<Editor>
17
15
 
@@ -26,9 +24,7 @@ const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
26
24
  :variant="variantBtn"
27
25
  @click="editor.chain().focus().setHorizontalRule().run()"
28
26
  >
29
- <VTooltip activator="parent">
30
- {{ t('format.line') }}
31
- </VTooltip>
27
+ <Tooltip :label="t('format.line')" />
32
28
  <BtnIcon :icon="`mdiSvg:${mdi.mdiMinus}`" />
33
29
  </VBtn>
34
30
  </template>
@@ -3,16 +3,14 @@
3
3
  import * as mdi from '@mdi/js'
4
4
  import { Editor } from '@tiptap/vue-3'
5
5
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
6
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
6
7
  import TiptapifyDialog from '@tiptapify/components/UI/TiptapifyDialog.vue'
7
- import { variantBtnTypes } from '@tiptapify/types/editor'
8
- import { inject, PropType, ref, Ref, useTemplateRef } from 'vue'
8
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
9
+ import { inject, ref, Ref, useTemplateRef } from 'vue'
9
10
 
10
- import defaults from '@tiptapify/constants/defaults'
11
11
  import { ComposerTranslation } from 'vue-i18n'
12
12
 
13
- defineProps({
14
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
15
- })
13
+ const { variantBtn } = useTiptapifyConfig()
16
14
 
17
15
  const editor = inject('tiptapifyEditor') as Ref<Editor>
18
16
 
@@ -24,9 +22,7 @@ const dialog = useTemplateRef('dialog')
24
22
 
25
23
  <template>
26
24
  <VBtn size="32" color="" :variant="variantBtn" @click="dialog.open()">
27
- <VTooltip activator="parent">
28
- {{ t('misc.preview') }}
29
- </VTooltip>
25
+ <Tooltip :label="t('misc.preview')" />
30
26
  <BtnIcon :icon="`mdiSvg:${mdi.mdiFileEyeOutline}`" />
31
27
  </VBtn>
32
28
 
@@ -2,16 +2,14 @@
2
2
 
3
3
  import * as mdi from '@mdi/js'
4
4
  import BtnIcon from '@tiptapify/components/UI/BtnIcon.vue'
5
+ import Tooltip from '@tiptapify/components/UI/Tooltip.vue'
5
6
  import ShowSourceDialog from '@tiptapify/extensions/components/misc/source/ShowSourceDialog.vue'
6
- import { variantBtnTypes } from '@tiptapify/types/editor'
7
- import { inject, PropType, ref, useTemplateRef } from 'vue'
7
+ import { useTiptapifyConfig } from '@tiptapify/composables/useTiptapifyConfig'
8
+ import { inject, ref, useTemplateRef } from 'vue'
8
9
 
9
- import defaults from '@tiptapify/constants/defaults'
10
10
  import { ComposerTranslation } from 'vue-i18n'
11
11
 
12
- defineProps({
13
- variantBtn: { type: String as PropType<variantBtnTypes>, default() { return defaults.variantBtn } },
14
- })
12
+ const { variantBtn } = useTiptapifyConfig()
15
13
 
16
14
  const { t } = inject('tiptapifyI18n') as { t: ComposerTranslation }
17
15
 
@@ -25,13 +23,11 @@ function showDialog() {
25
23
 
26
24
  <template>
27
25
  <VBtn size="32" color="" :variant="variantBtn" @click="showDialog()">
28
- <VTooltip activator="parent">
29
- {{ t('misc.source') }}
30
- </VTooltip>
26
+ <Tooltip :label="t('misc.source')" />
31
27
  <BtnIcon :icon="`mdiSvg:${mdi.mdiCodeTags}`" />
32
28
  </VBtn>
33
29
 
34
- <ShowSourceDialog ref="dialog" :variant-btn="variantBtn" />
30
+ <ShowSourceDialog ref="dialog" />
35
31
  </template>
36
32
 
37
33
  <style lang="scss" scoped>