Files
upstream-mirror 083a46e93b
Some checks failed
Verify / Install node dependencies (push) Failing after 2s
Verify / Build packages (push) Has been skipped
Verify / Check linting & formatting (push) Has been skipped
Verify / Run unit tests (push) Has been skipped
Verify / Run e2e tests (shard 1/4) (push) Has been skipped
Verify / Run e2e tests (shard 2/4) (push) Has been skipped
Verify / Run e2e tests (shard 3/4) (push) Has been skipped
Verify / Run e2e tests (shard 4/4) (push) Has been skipped
Publish / Resolve publish config (push) Failing after 2s
Publish / Send notification to Slack (push) Has been skipped
Publish / Send failure notification to Slack (push) Failing after 8s
Verify / Merge e2e reports (push) Has been skipped
Publish / Build (push) Has been skipped
Publish / Bump Versions OR Release to Registry (push) Has been skipped
snapshot of https://github.com/ueberdosis/tiptap.git (main, 2026-09-15; blobs > 131072B omitted)
2026-09-15 21:11:02 +05:00

51 lines
1.2 KiB
TypeScript

import { Extension } from '@tiptap/core'
import type { BubbleMenuPluginProps } from './bubble-menu-plugin.js'
import { BubbleMenuPlugin } from './bubble-menu-plugin.js'
export type BubbleMenuOptions = Omit<BubbleMenuPluginProps, 'editor' | 'element'> & {
/**
* The DOM element that contains your menu.
* @type {HTMLElement}
* @default null
*/
element: HTMLElement | null
}
/**
* This extension allows you to create a bubble menu.
* @see https://tiptap.dev/api/extensions/bubble-menu
*/
export const BubbleMenu = Extension.create<BubbleMenuOptions>({
name: 'bubbleMenu',
addOptions() {
return {
element: null,
pluginKey: 'bubbleMenu',
updateDelay: undefined,
appendTo: undefined,
shouldShow: null,
}
},
addProseMirrorPlugins() {
if (!this.options.element) {
return []
}
return [
BubbleMenuPlugin({
pluginKey: this.options.pluginKey,
editor: this.editor,
element: this.options.element,
updateDelay: this.options.updateDelay,
options: this.options.options,
appendTo: this.options.appendTo,
getReferencedVirtualElement: this.options.getReferencedVirtualElement,
shouldShow: this.options.shouldShow,
}),
]
},
})