diff --git a/frontend/src/scenes/notebooks/Nodes/NotebookNodeReplayTimestamp.tsx b/frontend/src/scenes/notebooks/Nodes/NotebookNodeReplayTimestamp.tsx index 7c5c37d13c6f9..cb1c3b0522eff 100644 --- a/frontend/src/scenes/notebooks/Nodes/NotebookNodeReplayTimestamp.tsx +++ b/frontend/src/scenes/notebooks/Nodes/NotebookNodeReplayTimestamp.tsx @@ -97,16 +97,14 @@ export function buildTimestampCommentContent( currentPlayerTime: number | null, sessionRecordingId: string ): JSONContent { - return [ - { - type: 'paragraph', - content: [ - { - type: NotebookNodeType.ReplayTimestamp, - attrs: { playbackTime: currentPlayerTime, sessionRecordingId: sessionRecordingId }, - }, - { type: 'text', text: ' ' }, - ], - }, - ] + return { + type: 'paragraph', + content: [ + { + type: NotebookNodeType.ReplayTimestamp, + attrs: { playbackTime: currentPlayerTime, sessionRecordingId: sessionRecordingId }, + }, + { type: 'text', text: ' ' }, + ], + } } diff --git a/frontend/src/scenes/notebooks/Notebook/Editor.tsx b/frontend/src/scenes/notebooks/Notebook/Editor.tsx index 1664e0f8eab75..c982e0ab36123 100644 --- a/frontend/src/scenes/notebooks/Notebook/Editor.tsx +++ b/frontend/src/scenes/notebooks/Notebook/Editor.tsx @@ -5,7 +5,7 @@ import { useCallback, useRef } from 'react' import StarterKit from '@tiptap/starter-kit' import ExtensionPlaceholder from '@tiptap/extension-placeholder' import ExtensionDocument from '@tiptap/extension-document' -import { EditorRange, Node } from './utils' +import { EditorRange, EditorFocusPosition, Node } from './utils' import { NotebookNodeFlag } from '../Nodes/NotebookNodeFlag' import { NotebookNodeQuery } from 'scenes/notebooks/Nodes/NotebookNodeQuery' @@ -140,13 +140,14 @@ export function Editor({ return false }, }, - autofocus: 'end', onCreate: ({ editor }) => { editorRef.current = editor onCreate({ getJSON: () => editor.getJSON(), - setEditable: (editable: boolean) => editor.setEditable(editable, false), - setContent: (content: JSONContent) => editor.commands.setContent(content, false), + setEditable: (editable: boolean) => queueMicrotask(() => editor.setEditable(editable, false)), + setContent: (content: JSONContent) => queueMicrotask(() => editor.commands.setContent(content, false)), + focus: (position: EditorFocusPosition) => queueMicrotask(() => editor.commands.focus(position)), + destroy: () => editor.destroy(), isEmpty: () => editor.isEmpty, deleteRange: (range: EditorRange) => editor.chain().focus().deleteRange(range), insertContent: (content: JSONContent) => editor.chain().insertContent(content).focus().run(), @@ -237,7 +238,7 @@ function getChildren(node: Node, direct: boolean = true): Node[] { function getPreviousNode(editor: TTEditor): Node | null { const { $anchor } = editor.state.selection const node = $anchor.node(1) - return !!node ? editor.state.doc.childBefore($anchor.pos - node.nodeSize).node : null + return !!node ? editor.state.doc.childBefore($anchor.pos - 1).node : null } export function hasMatchingNode( diff --git a/frontend/src/scenes/notebooks/Notebook/Notebook.scss b/frontend/src/scenes/notebooks/Notebook/Notebook.scss index b785b41f27eac..9ab8fc6d74f34 100644 --- a/frontend/src/scenes/notebooks/Notebook/Notebook.scss +++ b/frontend/src/scenes/notebooks/Notebook/Notebook.scss @@ -117,7 +117,6 @@ } &.NotebookRecordingTimestamp--preview { - height: 1.375rem; border: 1px solid var(--border-light); color: var(--mid); padding: 0rem 0.25rem; diff --git a/frontend/src/scenes/notebooks/Notebook/Notebook.tsx b/frontend/src/scenes/notebooks/Notebook/Notebook.tsx index f2d142d3e783f..2730196bb485b 100644 --- a/frontend/src/scenes/notebooks/Notebook/Notebook.tsx +++ b/frontend/src/scenes/notebooks/Notebook/Notebook.tsx @@ -12,15 +12,17 @@ import { SCRATCHPAD_NOTEBOOK } from './notebooksListLogic' import { NotebookConflictWarning } from './NotebookConflictWarning' import { NotebookLoadingState } from './NotebookLoadingState' import { Editor } from './Editor' +import { EditorFocusPosition } from './utils' export type NotebookProps = { shortId: string editable?: boolean + initialAutofocus?: EditorFocusPosition } const PLACEHOLDER_TITLES = ['Release notes', 'Product roadmap', 'Meeting notes', 'Bug analysis'] -export function Notebook({ shortId, editable = false }: NotebookProps): JSX.Element { +export function Notebook({ shortId, editable = false, initialAutofocus = null }: NotebookProps): JSX.Element { const logic = notebookLogic({ shortId }) const { notebook, content, notebookLoading, isEmpty, editor, conflictWarningVisible } = useValues(logic) const { setEditor, onEditorUpdate, duplicateNotebook, loadNotebook } = useActions(logic) @@ -37,9 +39,16 @@ export function Notebook({ shortId, editable = false }: NotebookProps): JSX.Elem useEffect(() => { if (editor) { editor.setEditable(editable) + editor.focus(initialAutofocus) } }, [editor, editable]) + useEffect(() => { + if (editor) { + editor.focus(initialAutofocus) + } + }, [editor]) + // TODO - Render a special state if the notebook is empty if (conflictWarningVisible) { diff --git a/frontend/src/scenes/notebooks/Notebook/NotebookSideBar.tsx b/frontend/src/scenes/notebooks/Notebook/NotebookSideBar.tsx index 813af64dbef8a..e8e5eb67f5e68 100644 --- a/frontend/src/scenes/notebooks/Notebook/NotebookSideBar.tsx +++ b/frontend/src/scenes/notebooks/Notebook/NotebookSideBar.tsx @@ -18,7 +18,8 @@ import { notebookLogic } from './notebookLogic' import { urls } from 'scenes/urls' export function NotebookSideBar({ children }: { children: React.ReactElement }): JSX.Element { - const { notebookSideBarShown, fullScreen, selectedNotebook, desiredWidth } = useValues(notebookSidebarLogic) + const { notebookSideBarShown, fullScreen, selectedNotebook, desiredWidth, initialAutofocus } = + useValues(notebookSidebarLogic) const { setNotebookSideBarShown, setFullScreen, selectNotebook, onResize, setElementRef } = useActions(notebookSidebarLogic) const { createNotebook } = useActions(notebooksListLogic) @@ -121,6 +122,7 @@ export function NotebookSideBar({ children }: { children: React.ReactElement diff --git a/frontend/src/scenes/notebooks/Notebook/notebookSidebarLogic.ts b/frontend/src/scenes/notebooks/Notebook/notebookSidebarLogic.ts index cdf49f47ef5bd..98a39e2bd496e 100644 --- a/frontend/src/scenes/notebooks/Notebook/notebookSidebarLogic.ts +++ b/frontend/src/scenes/notebooks/Notebook/notebookSidebarLogic.ts @@ -5,6 +5,7 @@ import { urlToAction } from 'kea-router' import { RefObject } from 'react' import posthog from 'posthog-js' import { subscriptions } from 'kea-subscriptions' +import { EditorFocusPosition } from './utils' export const MIN_NOTEBOOK_SIDEBAR_WIDTH = 600 @@ -14,6 +15,7 @@ export const notebookSidebarLogic = kea([ setNotebookSideBarShown: (shown: boolean) => ({ shown }), setFullScreen: (full: boolean) => ({ full }), selectNotebook: (id: string) => ({ id }), + setInitialAutofocus: (position: EditorFocusPosition) => ({ position }), onResize: (event: { originX: number; desiredX: number; finished: boolean }) => event, setDesiredWidth: (width: number) => ({ width }), setElementRef: (element: RefObject) => ({ element }), @@ -48,7 +50,13 @@ export const notebookSidebarLogic = kea([ setDesiredWidth: (_, { width }) => width, }, ], - + initialAutofocus: [ + null as EditorFocusPosition, + { + selectNotebook: () => null, + setInitialAutofocus: (_, { position }) => position, + }, + ], elementRef: [ null as RefObject | null, { diff --git a/frontend/src/scenes/notebooks/Notebook/notebooksListLogic.ts b/frontend/src/scenes/notebooks/Notebook/notebooksListLogic.ts index 6e171b368370e..c3d3f3e33b12a 100644 --- a/frontend/src/scenes/notebooks/Notebook/notebooksListLogic.ts +++ b/frontend/src/scenes/notebooks/Notebook/notebooksListLogic.ts @@ -13,7 +13,7 @@ import { deleteWithUndo } from 'lib/utils' import { teamLogic } from 'scenes/teamLogic' import FuseClass from 'fuse.js' import { notebookSidebarLogic } from './notebookSidebarLogic' -import { JSONContent, defaultNotebookContent } from './utils' +import { EditorFocusPosition, JSONContent, defaultNotebookContent } from './utils' // Helping kea-typegen navigate the exported default class for Fuse // eslint-disable-next-line @typescript-eslint/no-empty-interface @@ -26,7 +26,11 @@ export const SCRATCHPAD_NOTEBOOK: NotebookListItemType = { created_by: null, } -export const openNotebook = (notebookId: string, target: NotebookTarget = NotebookTarget.Auto): void => { +export const openNotebook = ( + notebookId: string, + target: NotebookTarget = NotebookTarget.Auto, + focus: EditorFocusPosition = null +): void => { const sidebarLogic = notebookSidebarLogic.findMounted() if (NotebookTarget.Sidebar === target) { @@ -38,6 +42,8 @@ export const openNotebook = (notebookId: string, target: NotebookTarget = Notebo } else { router.actions.push(urls.notebookEdit(notebookId)) } + + sidebarLogic?.actions.setInitialAutofocus(focus) } export const notebooksListLogic = kea([ @@ -84,7 +90,7 @@ export const notebooksListLogic = kea([ content: defaultNotebookContent(title, content), }) - openNotebook(notebook.short_id, location) + openNotebook(notebook.short_id, location, 'end') posthog.capture(`notebook created`, { short_id: notebook.short_id, diff --git a/frontend/src/scenes/notebooks/Notebook/utils.ts b/frontend/src/scenes/notebooks/Notebook/utils.ts index 25904829ca126..39b5a835e3260 100644 --- a/frontend/src/scenes/notebooks/Notebook/utils.ts +++ b/frontend/src/scenes/notebooks/Notebook/utils.ts @@ -3,6 +3,7 @@ import { JSONContent as TTJSONContent, Editor as TTEditor, ChainedCommands as EditorCommands, + FocusPosition as EditorFocusPosition, Range as EditorRange, getText, } from '@tiptap/core' @@ -13,13 +14,20 @@ import { NotebookNodeType } from '~/types' export interface Node extends PMNode {} export interface JSONContent extends TTJSONContent {} /* eslint-enable @typescript-eslint/no-empty-interface */ +// export type FocusPosition = number | boolean | 'start' | 'end' | 'all' | null -export { ChainedCommands as EditorCommands, Range as EditorRange } from '@tiptap/core' +export { + ChainedCommands as EditorCommands, + Range as EditorRange, + FocusPosition as EditorFocusPosition, +} from '@tiptap/core' export interface NotebookEditor { getJSON: () => JSONContent setEditable: (editable: boolean) => void setContent: (content: JSONContent) => void + focus: (position: EditorFocusPosition) => void + destroy: () => void isEmpty: () => boolean deleteRange: (range: EditorRange) => EditorCommands insertContent: (content: JSONContent) => void diff --git a/frontend/src/scenes/notebooks/Suggestions/FloatingSuggestions.scss b/frontend/src/scenes/notebooks/Suggestions/FloatingSuggestions.scss new file mode 100644 index 0000000000000..4aa63455e425f --- /dev/null +++ b/frontend/src/scenes/notebooks/Suggestions/FloatingSuggestions.scss @@ -0,0 +1,3 @@ +.FloatingSuggestion { + height: 1.375rem; +} diff --git a/frontend/src/scenes/notebooks/Suggestions/FloatingSuggestions.tsx b/frontend/src/scenes/notebooks/Suggestions/FloatingSuggestions.tsx index bd6a2c9bcbcc1..1120f172ec1d9 100644 --- a/frontend/src/scenes/notebooks/Suggestions/FloatingSuggestions.tsx +++ b/frontend/src/scenes/notebooks/Suggestions/FloatingSuggestions.tsx @@ -1,3 +1,4 @@ +import './FloatingSuggestions.scss' import { Editor as TTEditor } from '@tiptap/core' import { FloatingMenu } from '@tiptap/react' import { useActions, useValues } from 'kea' @@ -21,7 +22,11 @@ export function FloatingSuggestions({ editor }: { editor: TTEditor }): JSX.Eleme return ( { if (!editor) { @@ -39,7 +44,9 @@ export function FloatingSuggestions({ editor }: { editor: TTEditor }): JSX.Eleme return false }} > - {Component && } +
+ {Component && } +
) } diff --git a/frontend/src/scenes/notebooks/Suggestions/ReplayTimestamp.tsx b/frontend/src/scenes/notebooks/Suggestions/ReplayTimestamp.tsx index ab19644f44ed4..9a7a1e7801f79 100644 --- a/frontend/src/scenes/notebooks/Suggestions/ReplayTimestamp.tsx +++ b/frontend/src/scenes/notebooks/Suggestions/ReplayTimestamp.tsx @@ -8,9 +8,8 @@ import { InsertionSuggestion, InsertionSuggestionViewProps } from './InsertionSu import { Node, NotebookEditor } from '../Notebook/utils' const Component = ({ previousNode }: InsertionSuggestionViewProps): JSX.Element => { - const timestampNode = getTimestampChildNode(previousNode) const { currentPlayerTime } = useValues( - sessionRecordingPlayerLogic(sessionRecordingPlayerProps(timestampNode.attrs.sessionRecordingId)) + sessionRecordingPlayerLogic(sessionRecordingPlayerProps(getSessionRecordingId(previousNode))) ) return ( @@ -21,25 +20,34 @@ const Component = ({ previousNode }: InsertionSuggestionViewProps): JSX.Element } export default InsertionSuggestion.create({ - shouldShow: ({ previousNode }) => - !!previousNode ? hasChildOfType(previousNode, NotebookNodeType.ReplayTimestamp) : false, + shouldShow: ({ previousNode }) => { + return !!previousNode + ? previousNode.type.name === NotebookNodeType.Recording || + hasChildOfType(previousNode, NotebookNodeType.ReplayTimestamp) + : false + }, onTab: ({ editor, previousNode }: { editor: NotebookEditor | null; previousNode: Node | null }) => { if (!!previousNode && !!editor) { - const timestampNode = getTimestampChildNode(previousNode) - const sessionRecordingId = timestampNode.attrs.sessionRecordingId + const sessionRecordingId = getSessionRecordingId(previousNode) const currentPlayerTime = sessionRecordingPlayerLogic.findMounted(sessionRecordingPlayerProps(sessionRecordingId))?.values .currentPlayerTime || 0 - editor.insertContent(buildTimestampCommentContent(currentPlayerTime, sessionRecordingId)) + editor.insertContent([buildTimestampCommentContent(currentPlayerTime, sessionRecordingId)]) } }, Component, }) +function getSessionRecordingId(node: Node | null): string { + return node?.type.name === NotebookNodeType.Recording + ? node.attrs.id + : getTimestampChildNode(node).attrs.sessionRecordingId +} + function getTimestampChildNode(node: Node | null): Node { return firstChildOfType(node as Node, NotebookNodeType.ReplayTimestamp) as Node } diff --git a/frontend/src/scenes/session-recordings/player/PlayerMetaLinks.tsx b/frontend/src/scenes/session-recordings/player/PlayerMetaLinks.tsx index 2d6c59e0cb49b..f737197a4b922 100644 --- a/frontend/src/scenes/session-recordings/player/PlayerMetaLinks.tsx +++ b/frontend/src/scenes/session-recordings/player/PlayerMetaLinks.tsx @@ -55,10 +55,9 @@ export function PlayerMetaLinks(): JSX.Element { const onComment = (): void => { const currentPlayerTime = getCurrentPlayerTime() * 1000 if (nodeLogic) { - nodeLogic.actions.insertAfterLastNodeOfType( - NotebookNodeType.ReplayTimestamp, - buildTimestampCommentContent(currentPlayerTime, sessionRecordingId) - ) + nodeLogic.actions.insertAfterLastNodeOfType(NotebookNodeType.ReplayTimestamp, [ + buildTimestampCommentContent(currentPlayerTime, sessionRecordingId), + ]) } else { const title = `Session Replay Notes ${dayjs().format('DD/MM')}` createNotebook(title, NotebookTarget.Sidebar, [ diff --git a/package.json b/package.json index 85fba4516f0a6..139210ac84be0 100644 --- a/package.json +++ b/package.json @@ -72,14 +72,14 @@ "@rrweb/types": "^2.0.0-alpha.9", "@sentry/react": "7.22.0", "@testing-library/dom": ">=7.21.4", - "@tiptap/core": "2.0.3", - "@tiptap/extension-document": "2.0.3", - "@tiptap/extension-floating-menu": "2.0.3", - "@tiptap/extension-placeholder": "2.0.3", - "@tiptap/pm": "2.0.3", - "@tiptap/react": "2.0.3", - "@tiptap/starter-kit": "2.0.3", - "@tiptap/suggestion": "2.0.3", + "@tiptap/core": "^2.1.0-rc.12", + "@tiptap/extension-document": "^2.1.0-rc.12", + "@tiptap/extension-floating-menu": "^2.1.0-rc.12", + "@tiptap/extension-placeholder": "^2.1.0-rc.12", + "@tiptap/pm": "^2.1.0-rc.12", + "@tiptap/react": "^2.1.0-rc.12", + "@tiptap/starter-kit": "^2.1.0-rc.12", + "@tiptap/suggestion": "^2.1.0-rc.12", "@types/md5": "^2.3.0", "@types/react-input-autosize": "^2.2.1", "@types/react-textfit": "^1.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3ac7b99e91098..374b398f5d0b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,10 +1,9 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false - dependencies: '@ant-design/icons': specifier: ^4.7.0 @@ -37,29 +36,29 @@ dependencies: specifier: '>=7.21.4' version: 8.19.0 '@tiptap/core': - specifier: 2.0.3 - version: 2.0.3(@tiptap/pm@2.0.3) + specifier: ^2.1.0-rc.12 + version: 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) '@tiptap/extension-document': - specifier: 2.0.3 - version: 2.0.3(@tiptap/core@2.0.3) + specifier: ^2.1.0-rc.12 + version: 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) '@tiptap/extension-floating-menu': - specifier: 2.0.3 - version: 2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3) + specifier: ^2.1.0-rc.12 + version: 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12) '@tiptap/extension-placeholder': - specifier: 2.0.3 - version: 2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3) + specifier: ^2.1.0-rc.12 + version: 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12) '@tiptap/pm': - specifier: 2.0.3 - version: 2.0.3(@tiptap/core@2.0.3) + specifier: ^2.1.0-rc.12 + version: 2.1.0-rc.12 '@tiptap/react': - specifier: 2.0.3 - version: 2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3)(react-dom@16.14.0)(react@16.14.0) + specifier: ^2.1.0-rc.12 + version: 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12)(react-dom@16.14.0)(react@16.14.0) '@tiptap/starter-kit': - specifier: 2.0.3 - version: 2.0.3(@tiptap/pm@2.0.3) + specifier: ^2.1.0-rc.12 + version: 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) '@tiptap/suggestion': - specifier: 2.0.3 - version: 2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3) + specifier: ^2.1.0-rc.12 + version: 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12) '@types/md5': specifier: ^2.3.0 version: 2.3.2 @@ -4856,206 +4855,203 @@ packages: '@testing-library/dom': 8.19.0 dev: true - /@tiptap/core@2.0.3(@tiptap/pm@2.0.3): - resolution: {integrity: sha512-jLyVIWAdjjlNzrsRhSE2lVL/7N8228/1R1QtaVU85UlMIwHFAcdzhD8FeiKkqxpTnGpaDVaTy7VNEtEgaYdCyA==} + /@tiptap/core@2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12): + resolution: {integrity: sha512-Qq7K5ZQKi5GmERG3QIvUZXcYLC3NhSq+iNJoLRrAZ8jVqU3+toKvCavGCaNUWFaNry3JEn0AnM6p1I3VKmhq3w==} peerDependencies: '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/pm': 2.0.3(@tiptap/core@2.0.3) + '@tiptap/pm': 2.1.0-rc.12 dev: false - /@tiptap/extension-blockquote@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-rkUcFv2iL6f86DBBHoa4XdKNG2StvkJ7tfY9GoMpT46k3nxOaMTqak9/qZOo79TWxMLYtXzoxtKIkmWsbbcj4A==} + /@tiptap/extension-blockquote@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12): + resolution: {integrity: sha512-IqIoaSGRBBSwAWYRSn2H+OMBqoCkeKJ+2Qjbia3v0hrSBKmhJElKp45fcHG1hUFhMPWrNd54x+doL7lfClh3hw==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) dev: false - /@tiptap/extension-bold@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-OGT62fMRovSSayjehumygFWTg2Qn0IDbqyMpigg/RUAsnoOI2yBZFVrdM2gk1StyoSay7gTn2MLw97IUfr7FXg==} + /@tiptap/extension-bold@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12): + resolution: {integrity: sha512-Hvn8NDJwaa24qK/zsPcXqKvLkpEJsI3w4D45U3aNQ2P1CktzYIPUMURvXTmvfrv2jzCyUfLSItLLj3QFW8G96w==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) dev: false - /@tiptap/extension-bubble-menu@2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3): - resolution: {integrity: sha512-lPt1ELrYCuoQrQEUukqjp9xt38EwgPUwaKHI3wwt2Rbv+C6q1gmRsK1yeO/KqCNmFxNqF2p9ZF9srOnug/RZDQ==} + /@tiptap/extension-bubble-menu@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12): + resolution: {integrity: sha512-Q8DzlM61KAhrq742b0x4+Ey3WChp6X8mIvHRhNhdbChmgtNyKX1d8k72euUC6hKBCUwH4b+AQ5JVmmhoJTfsjQ==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) - '@tiptap/pm': 2.0.3(@tiptap/core@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) + '@tiptap/pm': 2.1.0-rc.12 tippy.js: 6.3.7 dev: false - /@tiptap/extension-bullet-list@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-RtaLiRvZbMTOje+FW5bn+mYogiIgNxOm065wmyLPypnTbLSeHeYkoqVSqzZeqUn+7GLnwgn1shirUe6csVE/BA==} + /@tiptap/extension-bullet-list@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12): + resolution: {integrity: sha512-jMHWIt5yjuTBblWV/LPI4oEa1Ca92ppOXjKZT8kNIUahvkdiisNsFskAhwKsBLrrwMTiCFND83KW60YWHayRhA==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) dev: false - /@tiptap/extension-code-block@2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3): - resolution: {integrity: sha512-F4xMy18EwgpyY9f5Te7UuF7UwxRLptOtCq1p2c2DfxBvHDWhAjQqVqcW/sq/I/WuED7FwCnPLyyAasPiVPkLPw==} + /@tiptap/extension-code-block@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12): + resolution: {integrity: sha512-JYHFLVyk0BikDhyjTArw+CPe1gGDYTMxfG0KTehVNyTrEe+UuP7gUa18hfEC6T5RJTR2UF6wPY3O4R1CRd33cw==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) - '@tiptap/pm': 2.0.3(@tiptap/core@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) + '@tiptap/pm': 2.1.0-rc.12 dev: false - /@tiptap/extension-code@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-LsVCKVxgBtkstAr1FjxN8T3OjlC76a2X8ouoZpELMp+aXbjqyanCKzt+sjjUhE4H0yLFd4v+5v6UFoCv4EILiw==} + /@tiptap/extension-code@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12): + resolution: {integrity: sha512-bbj3g3DnJaScZJqAgNDfkVvCdfXrLtC2RTzLKNfs+iqFmaJXOBIXYBYavl4Srm9+H5GASwKheloM5s3ueYz1Dg==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) dev: false - /@tiptap/extension-document@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-PsYeNQQBYIU9ayz1R11Kv/kKNPFNIV8tApJ9pxelXjzcAhkjncNUazPN/dyho60mzo+WpsmS3ceTj/gK3bCtWA==} + /@tiptap/extension-document@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12): + resolution: {integrity: sha512-jcSbx/CIKxw2gD5f+9ZyKbt9AGZ10qyqwBunTZjsCHPuqs/EAJs9be9Mflmiv3N23AAexZ9nCBPdLjcLAby3GA==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) dev: false - /@tiptap/extension-dropcursor@2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3): - resolution: {integrity: sha512-McthMrfusn6PjcaynJLheZJcXto8TaIW5iVitYh8qQrDXr31MALC/5GvWuiswmQ8bAXiWPwlLDYE/OJfwtggaw==} + /@tiptap/extension-dropcursor@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12): + resolution: {integrity: sha512-i/VJnenh34UVjxtjtrqR3Cc9OLzbRYw+T9pFAksr08r2Sj9yOQPWlGjs37+VYQbYpMf/ywWIaYhfMza3LeLTRw==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) - '@tiptap/pm': 2.0.3(@tiptap/core@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) + '@tiptap/pm': 2.1.0-rc.12 dev: false - /@tiptap/extension-floating-menu@2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3): - resolution: {integrity: sha512-zN1vRGRvyK3pO2aHRmQSOTpl4UJraXYwKYM009n6WviYKUNm0LPGo+VD4OAtdzUhPXyccnlsTv2p6LIqFty6Bg==} + /@tiptap/extension-floating-menu@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12): + resolution: {integrity: sha512-zbsDPmBKXPZYHc74ENgr8HeGtSzQTgvR6jQYSDJ/06fUk54boJQX5l4kCPc9uQ784F2zBLg+OfOKlrP54xPW2A==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) - '@tiptap/pm': 2.0.3(@tiptap/core@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) + '@tiptap/pm': 2.1.0-rc.12 tippy.js: 6.3.7 dev: false - /@tiptap/extension-gapcursor@2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3): - resolution: {integrity: sha512-6I9EzzsYOyyqDvDvxIK6Rv3EXB+fHKFj8ntHO8IXmeNJ6pkhOinuXVsW6Yo7TcDYoTj4D5I2MNFAW2rIkgassw==} + /@tiptap/extension-gapcursor@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12): + resolution: {integrity: sha512-6TGRsbSfQmdl6lRBEU9GljQ563pJ6FiOpwS40sa3azmxFn9xcxMvKEPI1URDONqoUA+LeSt2+lO7nx1p1NxiPQ==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) - '@tiptap/pm': 2.0.3(@tiptap/core@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) + '@tiptap/pm': 2.1.0-rc.12 dev: false - /@tiptap/extension-hard-break@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-RCln6ARn16jvKTjhkcAD5KzYXYS0xRMc0/LrHeV8TKdCd4Yd0YYHe0PU4F9gAgAfPQn7Dgt4uTVJLN11ICl8sQ==} + /@tiptap/extension-hard-break@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12): + resolution: {integrity: sha512-poEpPmrwkJmbBz6bfoYdtajaCvs4oYfLSaNo1mct5EBx2zXT1WMwDwFlgmR5KaGAL8sa7Ei2sZRSVCLT84T9OQ==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) dev: false - /@tiptap/extension-heading@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-f0IEv5ms6aCzL80WeZ1qLCXTkRVwbpRr1qAETjg3gG4eoJN18+lZNOJYpyZy3P92C5KwF2T3Av00eFyVLIbb8Q==} + /@tiptap/extension-heading@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12): + resolution: {integrity: sha512-RlnoSS3+l3taTpj0jO9J9pZ3/kIF8iJ7julpHmLpF5Bx402iZFoxBpRX5aatUH7VqFnzn5hgslZuUY4jwOiylA==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) dev: false - /@tiptap/extension-history@2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3): - resolution: {integrity: sha512-00KHIcJ8kivn2ARI6NQYphv2LfllVCXViHGm0EhzDW6NQxCrriJKE3tKDcTFCu7LlC5doMpq9Z6KXdljc4oVeQ==} + /@tiptap/extension-history@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12): + resolution: {integrity: sha512-77bWFd44Gr+39iqdf7D5BSiO5aO/eTifh1OaMeu/0H+GK/5R6yU+C+h+ePMg4yeH7W4FKf2AdeUHWj70Wc5FaQ==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) - '@tiptap/pm': 2.0.3(@tiptap/core@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) + '@tiptap/pm': 2.1.0-rc.12 dev: false - /@tiptap/extension-horizontal-rule@2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3): - resolution: {integrity: sha512-SZRUSh07b/M0kJHNKnfBwBMWrZBEm/E2LrK1NbluwT3DBhE+gvwiEdBxgB32zKHNxaDEXUJwUIPNC3JSbKvPUA==} + /@tiptap/extension-horizontal-rule@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12): + resolution: {integrity: sha512-gny44l5akzg7WmUBnkDx6o0+fs1qxAx2eZPdKmGdKSGV3wGsosvNqJX6XdYDbUmHS4+UiJ3QL0z2WFrcYk3GeA==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) - '@tiptap/pm': 2.0.3(@tiptap/core@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) + '@tiptap/pm': 2.1.0-rc.12 dev: false - /@tiptap/extension-italic@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-cfS5sW0gu7qf4ihwnLtW/QMTBrBEXaT0sJl3RwkhjIBg/65ywJKE5Nz9ewnQHmDeT18hvMJJ1VIb4j4ze9jj9A==} + /@tiptap/extension-italic@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12): + resolution: {integrity: sha512-/+kzCpMM+Ir/+PK1yTTRfx+Bnz4ky9aWosMbrWlSjEXR2kC29oJ5s4qoFpb/m9yAasYLccdo2VO9D8yKemrO+A==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) dev: false - /@tiptap/extension-list-item@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-p7cUsk0LpM1PfdAuFE8wYBNJ3gvA0UhNGR08Lo++rt9UaCeFLSN1SXRxg97c0oa5+Ski7SrCjIJ5Ynhz0viTjQ==} + /@tiptap/extension-list-item@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12): + resolution: {integrity: sha512-g+x6VQUiHTmT0JCNXjebAchAtcs0HIDbq1nXF0/YtdWBgz5Q3S2nwnbi0OuaQJUSjG9Gg59+ucUPitb23t96KQ==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) dev: false - /@tiptap/extension-ordered-list@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-ZB3MpZh/GEy1zKgw7XDQF4FIwycZWNof1k9WbDZOI063Ch4qHZowhVttH2mTCELuyvTMM/o9a8CS7qMqQB48bw==} + /@tiptap/extension-ordered-list@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12): + resolution: {integrity: sha512-nR+o8YCUiUqu7IdcqeQGfFBwuCho9Iu3hVdBXhCqIh4x7bPS0T4JKL6XAhhF93BHYiLw2n9XfOHEzbqMeSTiSw==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) dev: false - /@tiptap/extension-paragraph@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-a+tKtmj4bU3GVCH1NE8VHWnhVexxX5boTVxsHIr4yGG3UoKo1c5AO7YMaeX2W5xB5iIA+BQqOPCDPEAx34dd2A==} + /@tiptap/extension-paragraph@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12): + resolution: {integrity: sha512-1AXUjJ2fM+4PnxTzn/Rka1ZZLXCUSKmeUK+x9WoSsI6NQs3pojcXznBhh30VcBenW0xbL1aPUS05dx8djD7kEA==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) dev: false - /@tiptap/extension-placeholder@2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3): - resolution: {integrity: sha512-Z42jo0termRAf0S0L8oxrts94IWX5waU4isS2CUw8xCUigYyCFslkhQXkWATO1qRbjNFLKN2C9qvCgGf4UeBrw==} + /@tiptap/extension-placeholder@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12): + resolution: {integrity: sha512-fHqZPlE2sg11a9p7K7QwaSUsylPSun0r8szgj5lfpA4whe0WYWj7MfMAEouha9evuU4LzIfeDhMvW8vKg+eDNg==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) - '@tiptap/pm': 2.0.3(@tiptap/core@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) + '@tiptap/pm': 2.1.0-rc.12 dev: false - /@tiptap/extension-strike@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-RO4/EYe2iPD6ifDHORT8fF6O9tfdtnzxLGwZIKZXnEgtweH+MgoqevEzXYdS+54Wraq4TUQGNcsYhe49pv7Rlw==} + /@tiptap/extension-strike@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12): + resolution: {integrity: sha512-Iwl1OvjUEMdNrPfJYsBo7XKcowHTR1DTEZQBBhNVweAQcoOzl/PYLKqVeh9Y4Mk/c/tMRTr8Lcp1q2r14q60RQ==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) dev: false - /@tiptap/extension-text@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-LvzChcTCcPSMNLUjZe/A9SHXWGDHtvk73fR7CBqAeNU0MxhBPEBI03GFQ6RzW3xX0CmDmjpZoDxFMB+hDEtW1A==} + /@tiptap/extension-text@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12): + resolution: {integrity: sha512-6rJvPkpypaEW+jM6oB9kMXg+wy7xbDnGBFLRvCuA4Tr5Y+S+i34CzcihyARr90p+scYkOl+6QYVww4oisRFskA==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) dev: false - /@tiptap/pm@2.0.3(@tiptap/core@2.0.3): - resolution: {integrity: sha512-I9dsInD89Agdm1QjFRO9dmJtU1ldVSILNPW0pEhv9wYqYVvl4HUj/JMtYNqu2jWrCHNXQcaX/WkdSdvGJtmg5g==} - peerDependencies: - '@tiptap/core': ^2.0.0 + /@tiptap/pm@2.1.0-rc.12: + resolution: {integrity: sha512-GzBSlwfUZHrxLzQyigFkPNTFapviR+xOMnZ6GZZnQmgqgVZS3PG5LY9QrWpZQYrK7qbWFJ2fMWv+6pUZqDenKQ==} dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) prosemirror-changeset: 2.2.0 prosemirror-collab: 1.3.0 prosemirror-commands: 1.5.1 @@ -5076,56 +5072,56 @@ packages: prosemirror-view: 1.30.1 dev: false - /@tiptap/react@2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3)(react-dom@16.14.0)(react@16.14.0): - resolution: {integrity: sha512-fiAh8Lk+/NBPAR/PE4Kc/aLiBUbUYI/CpAopz8DI9eInNyV8h8LAGa9uFILJQF/TNu0tclJ4rV0sWc7Se0FZMw==} + /@tiptap/react@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12)(react-dom@16.14.0)(react@16.14.0): + resolution: {integrity: sha512-ZK9GFRJLoilWTHDYjC3LlQ5jPQDme5uF5yucolD8pLNE8gqg9WEzU/DwZDyckgFoTM7IXmf/rY/cKy4wszh4LQ==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) - '@tiptap/extension-bubble-menu': 2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3) - '@tiptap/extension-floating-menu': 2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3) - '@tiptap/pm': 2.0.3(@tiptap/core@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) + '@tiptap/extension-bubble-menu': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12) + '@tiptap/extension-floating-menu': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12) + '@tiptap/pm': 2.1.0-rc.12 react: 16.14.0 react-dom: 16.14.0(react@16.14.0) dev: false - /@tiptap/starter-kit@2.0.3(@tiptap/pm@2.0.3): - resolution: {integrity: sha512-t4WG4w93zTpL2VxhVyJJvl3kdLF001ZrhpOuEiZqEMBMUMbM56Uiigv1CnUQpTFrjDAh3IM8hkqzAh20TYw2iQ==} - dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) - '@tiptap/extension-blockquote': 2.0.3(@tiptap/core@2.0.3) - '@tiptap/extension-bold': 2.0.3(@tiptap/core@2.0.3) - '@tiptap/extension-bullet-list': 2.0.3(@tiptap/core@2.0.3) - '@tiptap/extension-code': 2.0.3(@tiptap/core@2.0.3) - '@tiptap/extension-code-block': 2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3) - '@tiptap/extension-document': 2.0.3(@tiptap/core@2.0.3) - '@tiptap/extension-dropcursor': 2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3) - '@tiptap/extension-gapcursor': 2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3) - '@tiptap/extension-hard-break': 2.0.3(@tiptap/core@2.0.3) - '@tiptap/extension-heading': 2.0.3(@tiptap/core@2.0.3) - '@tiptap/extension-history': 2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3) - '@tiptap/extension-horizontal-rule': 2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3) - '@tiptap/extension-italic': 2.0.3(@tiptap/core@2.0.3) - '@tiptap/extension-list-item': 2.0.3(@tiptap/core@2.0.3) - '@tiptap/extension-ordered-list': 2.0.3(@tiptap/core@2.0.3) - '@tiptap/extension-paragraph': 2.0.3(@tiptap/core@2.0.3) - '@tiptap/extension-strike': 2.0.3(@tiptap/core@2.0.3) - '@tiptap/extension-text': 2.0.3(@tiptap/core@2.0.3) + /@tiptap/starter-kit@2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12): + resolution: {integrity: sha512-+uE5QSlJn99l1Wu2B99PhX/L0VaReXbVp7K9tEc+RM5Mua3TUU69EwJfa5e9UlWDYEIXkyol/XssJ0proFWNVQ==} + dependencies: + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) + '@tiptap/extension-blockquote': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) + '@tiptap/extension-bold': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) + '@tiptap/extension-bullet-list': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) + '@tiptap/extension-code': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) + '@tiptap/extension-code-block': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12) + '@tiptap/extension-document': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) + '@tiptap/extension-dropcursor': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12) + '@tiptap/extension-gapcursor': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12) + '@tiptap/extension-hard-break': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) + '@tiptap/extension-heading': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) + '@tiptap/extension-history': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12) + '@tiptap/extension-horizontal-rule': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12) + '@tiptap/extension-italic': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) + '@tiptap/extension-list-item': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) + '@tiptap/extension-ordered-list': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) + '@tiptap/extension-paragraph': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) + '@tiptap/extension-strike': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) + '@tiptap/extension-text': 2.1.0-rc.12(@tiptap/core@2.1.0-rc.12) transitivePeerDependencies: - '@tiptap/pm' dev: false - /@tiptap/suggestion@2.0.3(@tiptap/core@2.0.3)(@tiptap/pm@2.0.3): - resolution: {integrity: sha512-1y3palQStGZq13UtHjouZ50k4sotM+N56cIlFeygIv3gqdai2zGPaPQtqV9FOVVQizXpUbQMTlPSDC5Ej4SPnQ==} + /@tiptap/suggestion@2.1.0-rc.12(@tiptap/core@2.1.0-rc.12)(@tiptap/pm@2.1.0-rc.12): + resolution: {integrity: sha512-qra7owsteQNh09P9SQcuq6eoAcrcAAnRJtTUxXXgB2c32YQeTTrRgLjOqgJld8dz92y5wih48c4Mv1QA62NjGw==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.0.3(@tiptap/pm@2.0.3) - '@tiptap/pm': 2.0.3(@tiptap/core@2.0.3) + '@tiptap/core': 2.1.0-rc.12(@tiptap/pm@2.1.0-rc.12) + '@tiptap/pm': 2.1.0-rc.12 dev: false /@tootallnate/once@2.0.0: