@halo-dev/richtext-editor 2.21.0 → 2.22.0

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 (149) hide show
  1. package/README.md +61 -0
  2. package/dist/components/Editor.vue.d.ts +5 -4
  3. package/dist/components/EditorHeader.vue.d.ts +4 -4
  4. package/dist/components/base/DropdownItem.vue.d.ts +29 -0
  5. package/dist/components/base/Input.vue.d.ts +29 -0
  6. package/dist/components/base/index.d.ts +2 -0
  7. package/dist/components/block/BlockActionButton.vue.d.ts +13 -8
  8. package/dist/{dev/App.vue.d.ts → components/block/BlockActionHorizontalSeparator.vue.d.ts} +1 -1
  9. package/dist/components/block/BlockActionSeparator.vue.d.ts +2 -1
  10. package/dist/components/block/index.d.ts +1 -2
  11. package/dist/components/bubble/BubbleButton.vue.d.ts +28 -0
  12. package/dist/components/bubble/BubbleItem.vue.d.ts +3 -37
  13. package/dist/components/{EditorBubbleMenu.vue.d.ts → bubble/EditorBubbleMenu.vue.d.ts} +3 -3
  14. package/dist/components/bubble/index.d.ts +2 -1
  15. package/dist/components/common/ColorPickerDropdown.vue.d.ts +7 -7
  16. package/dist/components/drag/EditorDragButtonItem.vue.d.ts +8 -0
  17. package/dist/components/drag/EditorDragHandle.vue.d.ts +14 -0
  18. package/dist/components/drag/EditorDragMenu.vue.d.ts +43 -0
  19. package/dist/components/drag/default-drag.d.ts +8 -0
  20. package/dist/components/drag/index.d.ts +4 -0
  21. package/dist/components/index.d.ts +4 -2
  22. package/dist/components/toolbar/ToolbarItem.vue.d.ts +2 -24
  23. package/dist/components/toolbar/ToolbarSubItem.vue.d.ts +2 -20
  24. package/dist/components/toolbox/ToolboxItem.vue.d.ts +2 -21
  25. package/dist/components/upload/EditorLinkObtain.vue.d.ts +52 -0
  26. package/dist/components/upload/ResourceReplaceButton.vue.d.ts +14 -0
  27. package/dist/components/upload/index.d.ts +2 -0
  28. package/dist/composables/use-attachment.d.ts +7 -0
  29. package/dist/extensions/audio/AudioView.vue.d.ts +107 -2
  30. package/dist/extensions/audio/BubbleItemAudioLink.vue.d.ts +2 -29
  31. package/dist/extensions/audio/BubbleItemAudioPosition.vue.d.ts +7 -0
  32. package/dist/extensions/audio/index.d.ts +9 -4
  33. package/dist/extensions/blockquote/index.d.ts +2 -2
  34. package/dist/extensions/bold/index.d.ts +2 -2
  35. package/dist/extensions/bullet-list/index.d.ts +3 -3
  36. package/dist/extensions/character-count/index.d.ts +1 -0
  37. package/dist/extensions/clear-format/index.d.ts +2 -2
  38. package/dist/extensions/code/index.d.ts +2 -2
  39. package/dist/extensions/code-block/CodeBlockSelect.vue.d.ts +7 -5
  40. package/dist/extensions/code-block/code-block.d.ts +7 -5
  41. package/dist/extensions/code-block/index.d.ts +0 -1
  42. package/dist/extensions/color/ColorBubbleItem.vue.d.ts +2 -29
  43. package/dist/extensions/color/ColorToolbarItem.vue.d.ts +2 -24
  44. package/dist/extensions/color/index.d.ts +2 -2
  45. package/dist/extensions/columns/column.d.ts +6 -2
  46. package/dist/extensions/columns/columns.d.ts +11 -4
  47. package/dist/extensions/columns/index.d.ts +2 -2
  48. package/dist/extensions/commands-menu/CommandsView.vue.d.ts +1 -1
  49. package/dist/extensions/commands-menu/commands.d.ts +2 -3
  50. package/dist/extensions/commands-menu/index.d.ts +1 -1
  51. package/dist/extensions/details/index.d.ts +6 -0
  52. package/dist/extensions/document/index.d.ts +2 -0
  53. package/dist/extensions/drop-cursor/index.d.ts +1 -0
  54. package/dist/extensions/extensions-kit.d.ts +91 -0
  55. package/dist/extensions/figure/FigureCaptionView.vue.d.ts +3 -0
  56. package/dist/extensions/figure/figure-caption.d.ts +2 -0
  57. package/dist/extensions/figure/index.d.ts +15 -0
  58. package/dist/extensions/font-size/index.d.ts +4 -14
  59. package/dist/extensions/format-brush/index.d.ts +4 -4
  60. package/dist/extensions/gallery/BubbleItemAddImage.vue.d.ts +7 -0
  61. package/dist/extensions/gallery/BubbleItemGap.vue.d.ts +493 -0
  62. package/dist/extensions/gallery/BubbleItemGroupSize.vue.d.ts +493 -0
  63. package/dist/extensions/gallery/BubbleItemLayout.vue.d.ts +493 -0
  64. package/dist/extensions/gallery/GalleryView.vue.d.ts +3 -0
  65. package/dist/extensions/gallery/gallery-bubble.d.ts +8 -0
  66. package/dist/extensions/gallery/index.d.ts +28 -0
  67. package/dist/extensions/gallery/useGalleryImages.d.ts +7 -0
  68. package/dist/extensions/gap-cursor/index.d.ts +1 -17
  69. package/dist/extensions/hard-break/index.d.ts +1 -0
  70. package/dist/extensions/heading/index.d.ts +2 -2
  71. package/dist/extensions/highlight/HighlightBubbleItem.vue.d.ts +2 -29
  72. package/dist/extensions/highlight/HighlightToolbarItem.vue.d.ts +2 -24
  73. package/dist/extensions/highlight/index.d.ts +2 -2
  74. package/dist/extensions/history/index.d.ts +1 -3
  75. package/dist/extensions/horizontal-rule/index.d.ts +1 -0
  76. package/dist/extensions/iframe/BubbleItemIframeAlign.vue.d.ts +7 -0
  77. package/dist/extensions/iframe/BubbleItemIframeLink.vue.d.ts +2 -29
  78. package/dist/extensions/iframe/BubbleItemIframeSize.vue.d.ts +2 -6
  79. package/dist/extensions/iframe/IframeView.vue.d.ts +54 -1
  80. package/dist/extensions/iframe/index.d.ts +4 -4
  81. package/dist/extensions/image/BubbleItemImageAlt.vue.d.ts +2 -29
  82. package/dist/extensions/image/BubbleItemImageHref.vue.d.ts +2 -29
  83. package/dist/extensions/image/BubbleItemImageLink.vue.d.ts +2 -29
  84. package/dist/extensions/image/BubbleItemImagePosition.vue.d.ts +7 -0
  85. package/dist/extensions/image/BubbleItemImageSize.vue.d.ts +2 -29
  86. package/dist/extensions/image/ImageView.vue.d.ts +109 -2
  87. package/dist/extensions/image/index.d.ts +8 -2
  88. package/dist/extensions/indent/index.d.ts +5 -5
  89. package/dist/extensions/index.d.ts +49 -47
  90. package/dist/extensions/italic/index.d.ts +2 -2
  91. package/dist/extensions/link/LinkBubbleButton.vue.d.ts +2 -29
  92. package/dist/extensions/link/index.d.ts +2 -2
  93. package/dist/extensions/list-extra/index.d.ts +6 -0
  94. package/dist/extensions/list-keymap/index.d.ts +4 -4
  95. package/dist/extensions/node-selected/index.d.ts +3 -4
  96. package/dist/extensions/ordered-list/index.d.ts +3 -3
  97. package/dist/extensions/paragraph/index.d.ts +2 -2
  98. package/dist/extensions/placeholder/index.d.ts +1 -0
  99. package/dist/extensions/range-selection/index.d.ts +2 -2
  100. package/dist/extensions/search-and-replace/IconButton.vue.d.ts +20 -0
  101. package/dist/extensions/search-and-replace/MatchToggleButton.vue.d.ts +20 -0
  102. package/dist/extensions/search-and-replace/SearchAndReplace.vue.d.ts +5 -2
  103. package/dist/extensions/search-and-replace/SearchAndReplacePlugin.d.ts +3 -2
  104. package/dist/extensions/search-and-replace/index.d.ts +2 -3
  105. package/dist/extensions/strike/index.d.ts +2 -2
  106. package/dist/extensions/subscript/index.d.ts +2 -2
  107. package/dist/extensions/superscript/index.d.ts +2 -2
  108. package/dist/extensions/table/index.d.ts +4 -2
  109. package/dist/extensions/table/table-row.d.ts +1 -1
  110. package/dist/extensions/task-list/index.d.ts +3 -3
  111. package/dist/extensions/text/BubbleItemTextType.vue.d.ts +3 -0
  112. package/dist/extensions/text/index.d.ts +4 -2
  113. package/dist/extensions/text-align/index.d.ts +2 -2
  114. package/dist/extensions/text-style/index.d.ts +3 -3
  115. package/dist/extensions/trailing-node/index.d.ts +1 -2
  116. package/dist/extensions/underline/index.d.ts +2 -2
  117. package/dist/extensions/upload/index.d.ts +8 -0
  118. package/dist/extensions/video/BubbleItemVideoLink.vue.d.ts +2 -29
  119. package/dist/extensions/video/BubbleItemVideoPosition.vue.d.ts +7 -0
  120. package/dist/extensions/video/BubbleItemVideoSize.vue.d.ts +2 -29
  121. package/dist/extensions/video/VideoView.vue.d.ts +107 -2
  122. package/dist/extensions/video/index.d.ts +18 -4
  123. package/dist/index.d.ts +1 -4
  124. package/dist/index.es.js +39156 -0
  125. package/dist/index.iife.js +176 -0
  126. package/dist/style.css +2 -1
  127. package/dist/tiptap/index.d.ts +3 -3
  128. package/dist/tiptap/pm/index.d.ts +0 -1
  129. package/dist/types/index.d.ts +115 -59
  130. package/dist/utils/attachment.d.ts +3 -0
  131. package/dist/utils/clipboard.d.ts +9 -0
  132. package/dist/utils/delete-node.d.ts +1 -1
  133. package/dist/utils/filter-duplicate-extensions.d.ts +2 -0
  134. package/dist/utils/index.d.ts +8 -0
  135. package/dist/utils/{isListActive.d.ts → is-list-active.d.ts} +2 -2
  136. package/dist/utils/is-node-empty.d.ts +6 -0
  137. package/dist/utils/keyboard.d.ts +37 -0
  138. package/dist/utils/upload.d.ts +67 -0
  139. package/package.json +46 -58
  140. package/dist/components/block/BlockActionInput.vue.d.ts +0 -15
  141. package/dist/components/block/BlockCard.vue.d.ts +0 -30
  142. package/dist/components/bubble/BubbleMenu.vue.d.ts +0 -84
  143. package/dist/components/bubble/BubbleMenuPlugin.d.ts +0 -52
  144. package/dist/dev/main.d.ts +0 -1
  145. package/dist/extensions/draggable/index.d.ts +0 -13
  146. package/dist/rich-text-editor.es.js +0 -41650
  147. package/dist/rich-text-editor.iife.js +0 -136
  148. package/dist/utils/isNodeEmpty.d.ts +0 -4
  149. /package/dist/components/icon/{MdiDeleteForeverOutline.vue.d.ts → MingcuteDelete2Line.vue.d.ts} +0 -0
@@ -0,0 +1,67 @@
1
+ import { Editor, PMNode } from '../tiptap';
2
+ import { Attachment } from '@halo-dev/api-client';
3
+ import { AxiosRequestConfig } from 'axios';
4
+ export interface FileProps {
5
+ file: File;
6
+ editor: Editor;
7
+ }
8
+ /**
9
+ * Handles file events, determining if the file is an image and triggering the appropriate upload process.
10
+ *
11
+ * @param {FileProps} { file, editor } - File and editor instances
12
+ * @returns {boolean} - True if a file is handled, otherwise false
13
+ */
14
+ export declare const handleFileEvent: ({ file, editor }: FileProps) => boolean;
15
+ /**
16
+ * Uploads an image file and inserts it into the editor.
17
+ *
18
+ * @param {FileProps} { file, editor } - File to be uploaded and the editor instance
19
+ */
20
+ export declare const uploadImage: ({ file, editor }: FileProps) => void;
21
+ /**
22
+ * Uploads a video file and inserts it into the editor.
23
+ *
24
+ * @param {FileProps} { file, editor } - File to be uploaded and the editor instance
25
+ */
26
+ export declare const uploadVideo: ({ file, editor }: FileProps) => void;
27
+ /**
28
+ * Uploads an audio file and inserts it into the editor.
29
+ *
30
+ * @param {FileProps} { file, editor } - File to be uploaded and the editor instance
31
+ */
32
+ export declare const uploadAudio: ({ file, editor }: FileProps) => void;
33
+ export interface UploadFetchResponse {
34
+ controller: AbortController;
35
+ onUploadProgress: (progress: number) => void;
36
+ onFinish: (attachment?: Attachment) => void;
37
+ onError: (error: Error) => void;
38
+ }
39
+ /**
40
+ * Uploads a file with progress monitoring, cancellation support, and callbacks for completion and errors.
41
+ *
42
+ * @param {File} file - File to be uploaded
43
+ * @param {Function} upload - Function to handle the file upload, should return a Promise
44
+ * @returns {Promise<UploadFetchResponse>} - Returns an object with control and callback methods
45
+ */
46
+ export declare const uploadFile: (file: File, upload: (file: File, options?: AxiosRequestConfig) => Promise<Attachment>, uploadResponse: UploadFetchResponse) => Promise<void>;
47
+ /**
48
+ * Converts a file to a Base64 string.
49
+ *
50
+ * @param {File} file - File to be converted
51
+ * @returns {Promise<string>} - A promise that resolves with the Base64 string
52
+ */
53
+ export declare function fileToBase64(file: File): Promise<string>;
54
+ export declare function containsFileClipboardIdentifier(types: readonly string[]): boolean;
55
+ export declare function batchUploadExternalLink(editor: Editor, nodes: {
56
+ node: PMNode;
57
+ pos: number;
58
+ index: number;
59
+ parent: PMNode | null;
60
+ }[]): Promise<void>;
61
+ export declare function uploadExternalLink(editor: Editor, nodeWithPos: {
62
+ node: PMNode;
63
+ pos: number;
64
+ index: number;
65
+ parent: PMNode | null;
66
+ }): Promise<void>;
67
+ export declare function isExternalAsset(src: string): boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@halo-dev/richtext-editor",
3
- "version": "2.21.0",
3
+ "version": "2.22.0",
4
4
  "description": "Default editor for Halo",
5
5
  "homepage": "https://github.com/halo-dev/halo/tree/main/ui/packages/editor#readme",
6
6
  "bugs": {
@@ -13,83 +13,71 @@
13
13
  },
14
14
  "license": "GPL-3.0",
15
15
  "author": "@halo-dev",
16
+ "type": "module",
16
17
  "exports": {
17
18
  ".": {
18
19
  "types": "./dist/index.d.ts",
19
- "import": "./dist/rich-text-editor.es.js"
20
+ "import": "./dist/index.es.js"
20
21
  },
21
22
  "./dist/style.css": "./dist/style.css"
22
23
  },
23
- "main": "./dist/rich-text-editor.iife.js",
24
- "jsdelivr": "./dist/rich-text-editor.iife.js",
25
- "unpkg": "./dist/rich-text-editor.iife.js",
26
- "module": "./dist/rich-text-editor.es.js",
24
+ "main": "./dist/index.iife.js",
25
+ "jsdelivr": "./dist/index.iife.js",
26
+ "unpkg": "./dist/index.iife.js",
27
+ "module": "./dist/index.es.js",
27
28
  "types": "./dist/index.d.ts",
28
29
  "files": [
29
30
  "dist"
30
31
  ],
31
32
  "dependencies": {
32
- "@ckpack/vue-color": "^1.5.0",
33
- "@tiptap/core": "^2.11.2",
34
- "@tiptap/extension-blockquote": "^2.11.2",
35
- "@tiptap/extension-bold": "^2.11.2",
36
- "@tiptap/extension-bullet-list": "^2.11.2",
37
- "@tiptap/extension-code": "^2.11.2",
38
- "@tiptap/extension-code-block": "^2.11.2",
39
- "@tiptap/extension-color": "^2.11.2",
40
- "@tiptap/extension-document": "^2.11.2",
41
- "@tiptap/extension-dropcursor": "^2.11.2",
42
- "@tiptap/extension-hard-break": "^2.11.2",
43
- "@tiptap/extension-heading": "^2.11.2",
44
- "@tiptap/extension-highlight": "^2.11.2",
45
- "@tiptap/extension-history": "^2.11.2",
46
- "@tiptap/extension-horizontal-rule": "^2.11.2",
47
- "@tiptap/extension-image": "^2.11.2",
48
- "@tiptap/extension-italic": "^2.11.2",
49
- "@tiptap/extension-link": "^2.11.2",
50
- "@tiptap/extension-list-item": "^2.11.2",
51
- "@tiptap/extension-list-keymap": "^2.11.2",
52
- "@tiptap/extension-ordered-list": "^2.11.2",
53
- "@tiptap/extension-paragraph": "^2.11.2",
54
- "@tiptap/extension-placeholder": "^2.11.2",
55
- "@tiptap/extension-strike": "^2.11.2",
56
- "@tiptap/extension-subscript": "^2.11.2",
57
- "@tiptap/extension-superscript": "^2.11.2",
58
- "@tiptap/extension-table": "^2.11.2",
59
- "@tiptap/extension-table-row": "^2.11.2",
60
- "@tiptap/extension-task-item": "^2.11.2",
61
- "@tiptap/extension-task-list": "^2.11.2",
62
- "@tiptap/extension-text": "^2.11.2",
63
- "@tiptap/extension-text-align": "^2.11.2",
64
- "@tiptap/extension-text-style": "^2.11.2",
65
- "@tiptap/extension-underline": "^2.11.2",
66
- "@tiptap/pm": "^2.11.2",
67
- "@tiptap/suggestion": "^2.11.2",
68
- "@tiptap/vue-3": "^2.11.2",
69
- "floating-vue": "^5.2.2",
33
+ "@floating-ui/dom": "^1.7.4",
34
+ "@tiptap/core": "^3.11.0",
35
+ "@tiptap/extension-blockquote": "^3.11.0",
36
+ "@tiptap/extension-bold": "^3.11.0",
37
+ "@tiptap/extension-code": "^3.11.0",
38
+ "@tiptap/extension-code-block": "^3.11.0",
39
+ "@tiptap/extension-color": "^3.11.0",
40
+ "@tiptap/extension-details": "^3.11.0",
41
+ "@tiptap/extension-document": "^3.11.0",
42
+ "@tiptap/extension-drag-handle": "^3.11.0",
43
+ "@tiptap/extension-drag-handle-vue-3": "^3.11.0",
44
+ "@tiptap/extension-hard-break": "^3.11.0",
45
+ "@tiptap/extension-heading": "^3.11.0",
46
+ "@tiptap/extension-highlight": "^3.11.0",
47
+ "@tiptap/extension-horizontal-rule": "^3.11.0",
48
+ "@tiptap/extension-image": "^3.11.0",
49
+ "@tiptap/extension-italic": "^3.11.0",
50
+ "@tiptap/extension-link": "^3.11.0",
51
+ "@tiptap/extension-list": "^3.11.0",
52
+ "@tiptap/extension-paragraph": "^3.11.0",
53
+ "@tiptap/extension-strike": "^3.11.0",
54
+ "@tiptap/extension-subscript": "^3.11.0",
55
+ "@tiptap/extension-superscript": "^3.11.0",
56
+ "@tiptap/extension-table": "^3.11.0",
57
+ "@tiptap/extension-text": "^3.11.0",
58
+ "@tiptap/extension-text-align": "^3.11.0",
59
+ "@tiptap/extension-text-style": "^3.11.0",
60
+ "@tiptap/extension-underline": "^3.11.0",
61
+ "@tiptap/extensions": "^3.11.0",
62
+ "@tiptap/pm": "^3.11.0",
63
+ "@tiptap/suggestion": "^3.11.0",
64
+ "@tiptap/vue-3": "^3.11.0",
70
65
  "github-markdown-css": "^5.2.0",
71
66
  "linkifyjs": "^4.1.3",
72
67
  "scroll-into-view-if-needed": "^3.1.0",
73
- "tippy.js": "^6.3.7"
68
+ "@halo-dev/components": "2.22.0",
69
+ "@halo-dev/ui-shared": "2.22.0",
70
+ "@halo-dev/api-client": "2.22.0"
74
71
  },
75
72
  "devDependencies": {
76
- "@iconify/json": "^2.2.117",
77
- "@types/linkifyjs": "^2.1.7",
78
- "release-it": "^16.1.5",
79
- "vite-plugin-dts": "^4.2.2"
73
+ "@types/linkifyjs": "^2.1.7"
80
74
  },
81
75
  "peerDependencies": {
82
- "vue": "^3.5.16"
76
+ "vue": "^3.5.x"
83
77
  },
84
78
  "scripts": {
85
- "build": "vite build --config ./vite.lib.config.ts",
86
- "dev": "vite",
87
- "lint": "eslint ./src --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts",
88
- "prettier": "prettier --write './src/**/*.{vue,js,jsx,ts,tsx,css,scss,json,yml,yaml,html}'",
89
- "release": "release-it",
90
- "test:unit:coverage": "vitest run --environment jsdom --coverage",
91
- "test:unit:ui": "vitest --environment jsdom --watch --ui",
92
- "test:unit:watch": "vitest --environment jsdom --watch",
79
+ "build": "vite build",
80
+ "dev": "vite build --watch --mode development",
93
81
  "typecheck": "vue-tsc --noEmit -p tsconfig.app.json --composite false"
94
82
  }
95
83
  }
@@ -1,15 +0,0 @@
1
- declare const _default: import('vue').DefineComponent<{
2
- tooltip?: string;
3
- modelValue?: string;
4
- }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
5
- "update:modelValue": (value: string) => any;
6
- }, string, import('vue').PublicProps, Readonly<{
7
- tooltip?: string;
8
- modelValue?: string;
9
- }> & Readonly<{
10
- "onUpdate:modelValue"?: ((value: string) => any) | undefined;
11
- }>, {
12
- tooltip: string;
13
- modelValue: string;
14
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
15
- export default _default;
@@ -1,30 +0,0 @@
1
- import { Editor } from '../../tiptap/vue-3';
2
- declare function __VLS_template(): {
3
- slots: {
4
- content?(_: {}): any;
5
- actions?(_: {}): any;
6
- };
7
- refs: {};
8
- attrs: Partial<{}>;
9
- };
10
- type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
11
- declare const __VLS_component: import('vue').DefineComponent<{
12
- selected: boolean;
13
- editor: Editor;
14
- getPos: () => number;
15
- deleteNode: () => void;
16
- }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
17
- selected: boolean;
18
- editor: Editor;
19
- getPos: () => number;
20
- deleteNode: () => void;
21
- }> & Readonly<{}>, {
22
- selected: boolean;
23
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
24
- declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
25
- export default _default;
26
- type __VLS_WithTemplateSlots<T, S> = T & {
27
- new (): {
28
- $slots: S;
29
- };
30
- };
@@ -1,84 +0,0 @@
1
- import { PropType } from 'vue';
2
- import { BubbleMenuPluginProps } from './BubbleMenuPlugin';
3
- declare function __VLS_template(): {
4
- slots: {
5
- default?(_: {}): any;
6
- };
7
- refs: {
8
- root: HTMLDivElement;
9
- };
10
- attrs: Partial<{}>;
11
- };
12
- type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
13
- declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
14
- pluginKey: {
15
- type: PropType<BubbleMenuPluginProps["pluginKey"]>;
16
- default: string;
17
- };
18
- editor: {
19
- type: PropType<BubbleMenuPluginProps["editor"]>;
20
- required: true;
21
- };
22
- tippyOptions: {
23
- type: PropType<BubbleMenuPluginProps["tippyOptions"]>;
24
- default: () => {};
25
- };
26
- shouldShow: {
27
- type: PropType<Exclude<Required<BubbleMenuPluginProps>["shouldShow"], null>>;
28
- default: null;
29
- };
30
- getRenderContainer: {
31
- type: PropType<Exclude<Required<BubbleMenuPluginProps>["getRenderContainer"], null>>;
32
- default: null;
33
- };
34
- defaultAnimation: {
35
- type: PropType<BubbleMenuPluginProps["defaultAnimation"]>;
36
- default: boolean;
37
- };
38
- }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
39
- pluginKey: {
40
- type: PropType<BubbleMenuPluginProps["pluginKey"]>;
41
- default: string;
42
- };
43
- editor: {
44
- type: PropType<BubbleMenuPluginProps["editor"]>;
45
- required: true;
46
- };
47
- tippyOptions: {
48
- type: PropType<BubbleMenuPluginProps["tippyOptions"]>;
49
- default: () => {};
50
- };
51
- shouldShow: {
52
- type: PropType<Exclude<Required<BubbleMenuPluginProps>["shouldShow"], null>>;
53
- default: null;
54
- };
55
- getRenderContainer: {
56
- type: PropType<Exclude<Required<BubbleMenuPluginProps>["getRenderContainer"], null>>;
57
- default: null;
58
- };
59
- defaultAnimation: {
60
- type: PropType<BubbleMenuPluginProps["defaultAnimation"]>;
61
- default: boolean;
62
- };
63
- }>> & Readonly<{}>, {
64
- getRenderContainer: (node: HTMLElement) => HTMLElement;
65
- defaultAnimation: boolean | undefined;
66
- shouldShow: (props: {
67
- editor: import('@tiptap/vue-3').Editor;
68
- state: import('../../tiptap').EditorState;
69
- node?: HTMLElement;
70
- view?: import('../../tiptap').EditorView;
71
- oldState?: import('../../tiptap').EditorState;
72
- from?: number;
73
- to?: number;
74
- }) => boolean;
75
- tippyOptions: Partial<import('./BubbleMenuPlugin').TippyOptionProps> | undefined;
76
- pluginKey: string | import('../../tiptap').PluginKey<any>;
77
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
78
- declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
79
- export default _default;
80
- type __VLS_WithTemplateSlots<T, S> = T & {
81
- new (): {
82
- $slots: S;
83
- };
84
- };
@@ -1,52 +0,0 @@
1
- import { EditorView, EditorState, Plugin, PluginKey } from '../../tiptap/pm';
2
- import { Editor } from '../../tiptap/vue-3';
3
- import { Instance, Props } from 'tippy.js';
4
- export interface TippyOptionProps extends Props {
5
- fixed?: boolean;
6
- }
7
- export interface BubbleMenuPluginProps {
8
- pluginKey: PluginKey | string;
9
- editor: Editor;
10
- element: HTMLElement;
11
- tippyOptions?: Partial<TippyOptionProps>;
12
- updateDelay?: number;
13
- shouldShow?: ((props: {
14
- editor: Editor;
15
- state: EditorState;
16
- node?: HTMLElement;
17
- view?: EditorView;
18
- oldState?: EditorState;
19
- from?: number;
20
- to?: number;
21
- }) => boolean) | null;
22
- getRenderContainer?: (node: HTMLElement) => HTMLElement;
23
- defaultAnimation?: boolean;
24
- }
25
- export type BubbleMenuViewProps = BubbleMenuPluginProps & {
26
- view: EditorView;
27
- };
28
- export declare class BubbleMenuView {
29
- editor: Editor;
30
- element: HTMLElement;
31
- view: EditorView;
32
- preventHide: boolean;
33
- tippy: Instance<TippyOptionProps> | undefined;
34
- tippyOptions?: Partial<TippyOptionProps>;
35
- getRenderContainer?: BubbleMenuPluginProps["getRenderContainer"];
36
- defaultAnimation?: BubbleMenuPluginProps["defaultAnimation"];
37
- shouldShow: Exclude<BubbleMenuPluginProps["shouldShow"], null>;
38
- constructor({ editor, element, view, tippyOptions, shouldShow, getRenderContainer, defaultAnimation, }: BubbleMenuViewProps);
39
- mousedownHandler: () => void;
40
- dragstartHandler: () => void;
41
- blurHandler: ({ event }: {
42
- event: FocusEvent;
43
- }) => void;
44
- createTooltip(): void;
45
- update(view: EditorView, oldState?: EditorState): void;
46
- addActiveBubbleMenu: () => void;
47
- removeActiveBubbleMenu: () => void;
48
- show(): void;
49
- hide(): void;
50
- destroy(): void;
51
- }
52
- export declare const BubbleMenuPlugin: (options: BubbleMenuPluginProps) => Plugin<any>;
@@ -1 +0,0 @@
1
- export {};
@@ -1,13 +0,0 @@
1
- import { EditorView, Node, ResolvedPos } from '../../tiptap/pm';
2
- import { Extension } from '../../tiptap/vue-3';
3
- export interface ActiveNode {
4
- $pos: ResolvedPos;
5
- node: Node;
6
- el: HTMLElement;
7
- offset: number;
8
- domOffsetLeft: number;
9
- domOffsetTop: number;
10
- }
11
- export declare const selectAncestorNodeByDom: (dom: HTMLElement, view: EditorView) => ActiveNode | null;
12
- declare const Draggable: Extension<any, any>;
13
- export default Draggable;