diff --git a/apps/web/package.json b/apps/web/package.json
index b78668a..458202a 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -22,12 +22,23 @@
"@mosaic/shared": "workspace:*",
"@mosaic/ui": "workspace:*",
"@tanstack/react-query": "^5.90.20",
+ "@tiptap/extension-code-block-lowlight": "^3.20.0",
+ "@tiptap/extension-link": "^3.20.0",
+ "@tiptap/extension-placeholder": "^3.20.0",
+ "@tiptap/extension-table": "^3.20.0",
+ "@tiptap/extension-table-cell": "^3.20.0",
+ "@tiptap/extension-table-header": "^3.20.0",
+ "@tiptap/extension-table-row": "^3.20.0",
+ "@tiptap/pm": "^3.20.0",
+ "@tiptap/react": "^3.20.0",
+ "@tiptap/starter-kit": "^3.20.0",
"@types/dompurify": "^3.2.0",
"@xyflow/react": "^12.5.3",
"better-auth": "^1.4.17",
"date-fns": "^4.1.0",
"dompurify": "^3.3.1",
"elkjs": "^0.9.3",
+ "lowlight": "^3.3.0",
"lucide-react": "^0.563.0",
"mermaid": "^11.4.1",
"next": "^16.1.6",
diff --git a/apps/web/src/components/knowledge/KnowledgeEditor.css b/apps/web/src/components/knowledge/KnowledgeEditor.css
new file mode 100644
index 0000000..32e34f4
--- /dev/null
+++ b/apps/web/src/components/knowledge/KnowledgeEditor.css
@@ -0,0 +1,245 @@
+/* KnowledgeEditor — Tiptap/ProseMirror styles
+ Uses CSS variables for theme compatibility */
+
+.knowledge-editor-content .tiptap {
+ min-height: 300px;
+ padding: 16px 20px;
+ outline: none;
+ color: var(--text);
+ font-family: var(--font);
+ font-size: 0.92rem;
+ line-height: 1.7;
+}
+
+/* Placeholder */
+.knowledge-editor-content .tiptap p.is-editor-empty:first-child::before {
+ content: attr(data-placeholder);
+ float: left;
+ color: var(--muted);
+ opacity: 0.6;
+ pointer-events: none;
+ height: 0;
+}
+
+/* Headings */
+.knowledge-editor-content .tiptap h1 {
+ font-size: 1.75rem;
+ font-weight: 700;
+ margin: 1.5em 0 0.5em;
+ color: var(--text);
+ line-height: 1.3;
+}
+
+.knowledge-editor-content .tiptap h2 {
+ font-size: 1.35rem;
+ font-weight: 700;
+ margin: 1.3em 0 0.4em;
+ color: var(--text);
+ line-height: 1.35;
+}
+
+.knowledge-editor-content .tiptap h3 {
+ font-size: 1.1rem;
+ font-weight: 600;
+ margin: 1.2em 0 0.3em;
+ color: var(--text);
+ line-height: 1.4;
+}
+
+.knowledge-editor-content .tiptap h1:first-child,
+.knowledge-editor-content .tiptap h2:first-child,
+.knowledge-editor-content .tiptap h3:first-child {
+ margin-top: 0;
+}
+
+/* Paragraphs */
+.knowledge-editor-content .tiptap p {
+ margin: 0.5em 0;
+}
+
+/* Bold / Italic / Strikethrough */
+.knowledge-editor-content .tiptap strong {
+ font-weight: 700;
+}
+
+.knowledge-editor-content .tiptap em {
+ font-style: italic;
+}
+
+.knowledge-editor-content .tiptap s {
+ text-decoration: line-through;
+ opacity: 0.7;
+}
+
+/* Inline code */
+.knowledge-editor-content .tiptap code {
+ background: var(--surface-2);
+ border: 1px solid var(--border);
+ border-radius: var(--r-sm);
+ padding: 1px 5px;
+ font-family: var(--mono);
+ font-size: 0.85em;
+ color: var(--primary-l);
+}
+
+/* Code blocks */
+.knowledge-editor-content .tiptap pre {
+ background: var(--bg-deep);
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ padding: 12px 16px;
+ margin: 0.75em 0;
+ overflow-x: auto;
+}
+
+.knowledge-editor-content .tiptap pre code {
+ background: none;
+ border: none;
+ padding: 0;
+ font-family: var(--mono);
+ font-size: 0.83rem;
+ color: var(--text-2);
+ line-height: 1.6;
+}
+
+/* Lists */
+.knowledge-editor-content .tiptap ul {
+ list-style-type: disc;
+ padding-left: 1.5em;
+ margin: 0.5em 0;
+}
+
+.knowledge-editor-content .tiptap ol {
+ list-style-type: decimal;
+ padding-left: 1.5em;
+ margin: 0.5em 0;
+}
+
+.knowledge-editor-content .tiptap li {
+ margin: 0.2em 0;
+}
+
+.knowledge-editor-content .tiptap li > p {
+ margin: 0;
+}
+
+/* Blockquote */
+.knowledge-editor-content .tiptap blockquote {
+ border-left: 3px solid var(--primary);
+ padding: 4px 16px;
+ margin: 0.75em 0;
+ color: var(--text-2);
+ background: var(--surface-2);
+ border-radius: 0 var(--r-sm) var(--r-sm) 0;
+}
+
+.knowledge-editor-content .tiptap blockquote p {
+ margin: 0.25em 0;
+}
+
+/* Horizontal rule */
+.knowledge-editor-content .tiptap hr {
+ border: none;
+ border-top: 1px solid var(--border);
+ margin: 1.5em 0;
+}
+
+/* Links */
+.knowledge-editor-content .tiptap a,
+.knowledge-editor-content .tiptap .knowledge-editor-link {
+ color: var(--primary-l);
+ text-decoration: underline;
+ text-underline-offset: 2px;
+ cursor: pointer;
+}
+
+/* Tables */
+.knowledge-editor-content .tiptap table {
+ border-collapse: collapse;
+ width: 100%;
+ margin: 0.75em 0;
+ overflow: hidden;
+ border-radius: var(--r-sm);
+}
+
+.knowledge-editor-content .tiptap th,
+.knowledge-editor-content .tiptap td {
+ border: 1px solid var(--border);
+ padding: 6px 10px;
+ text-align: left;
+ vertical-align: top;
+ min-width: 80px;
+}
+
+.knowledge-editor-content .tiptap th {
+ background: var(--surface-2);
+ font-weight: 600;
+ font-size: 0.85rem;
+}
+
+.knowledge-editor-content .tiptap td {
+ font-size: 0.88rem;
+}
+
+/* Table selected cell highlight */
+.knowledge-editor-content .tiptap .selectedCell::after {
+ content: "";
+ position: absolute;
+ inset: 0;
+ background: var(--primary);
+ opacity: 0.08;
+ pointer-events: none;
+ z-index: 1;
+}
+
+.knowledge-editor-content .tiptap th.selectedCell::after,
+.knowledge-editor-content .tiptap td.selectedCell::after {
+ content: "";
+ position: absolute;
+ inset: 0;
+ background: var(--primary);
+ opacity: 0.08;
+ pointer-events: none;
+}
+
+/* Table cell relative positioning for selection overlay */
+.knowledge-editor-content .tiptap th,
+.knowledge-editor-content .tiptap td {
+ position: relative;
+}
+
+/* Column resize handle */
+.knowledge-editor-content .tiptap .column-resize-handle {
+ position: absolute;
+ right: -2px;
+ top: 0;
+ bottom: 0;
+ width: 4px;
+ background: var(--primary);
+ cursor: col-resize;
+ z-index: 2;
+}
+
+.knowledge-editor-content .tiptap .tableWrapper {
+ overflow-x: auto;
+}
+
+/* Syntax highlighting tokens (lowlight/highlight.js) */
+.knowledge-editor-content .tiptap pre .hljs-keyword { color: var(--ms-purple-400); }
+.knowledge-editor-content .tiptap pre .hljs-string { color: var(--ms-teal-400); }
+.knowledge-editor-content .tiptap pre .hljs-number { color: var(--ms-amber-400); }
+.knowledge-editor-content .tiptap pre .hljs-comment { color: var(--muted); font-style: italic; }
+.knowledge-editor-content .tiptap pre .hljs-function { color: var(--ms-blue-400); }
+.knowledge-editor-content .tiptap pre .hljs-title { color: var(--ms-blue-400); }
+.knowledge-editor-content .tiptap pre .hljs-params { color: var(--text-2); }
+.knowledge-editor-content .tiptap pre .hljs-built_in { color: var(--ms-cyan-500); }
+.knowledge-editor-content .tiptap pre .hljs-literal { color: var(--ms-amber-400); }
+.knowledge-editor-content .tiptap pre .hljs-type { color: var(--ms-teal-400); }
+.knowledge-editor-content .tiptap pre .hljs-attr { color: var(--ms-purple-400); }
+.knowledge-editor-content .tiptap pre .hljs-selector-class { color: var(--ms-blue-400); }
+.knowledge-editor-content .tiptap pre .hljs-selector-tag { color: var(--ms-red-400); }
+.knowledge-editor-content .tiptap pre .hljs-variable { color: var(--text); }
+.knowledge-editor-content .tiptap pre .hljs-meta { color: var(--muted); }
+.knowledge-editor-content .tiptap pre .hljs-tag { color: var(--ms-red-400); }
+.knowledge-editor-content .tiptap pre .hljs-name { color: var(--ms-red-400); }
+.knowledge-editor-content .tiptap pre .hljs-attribute { color: var(--ms-purple-400); }
diff --git a/apps/web/src/components/knowledge/KnowledgeEditor.tsx b/apps/web/src/components/knowledge/KnowledgeEditor.tsx
new file mode 100644
index 0000000..8164f83
--- /dev/null
+++ b/apps/web/src/components/knowledge/KnowledgeEditor.tsx
@@ -0,0 +1,437 @@
+"use client";
+
+import { useCallback } from "react";
+import type { ReactElement } from "react";
+import { useEditor, EditorContent } from "@tiptap/react";
+import StarterKit from "@tiptap/starter-kit";
+import Link from "@tiptap/extension-link";
+import { Table } from "@tiptap/extension-table";
+import { TableRow } from "@tiptap/extension-table-row";
+import { TableCell } from "@tiptap/extension-table-cell";
+import { TableHeader } from "@tiptap/extension-table-header";
+import CodeBlockLowlight from "@tiptap/extension-code-block-lowlight";
+import Placeholder from "@tiptap/extension-placeholder";
+import { common, createLowlight } from "lowlight";
+import type { Editor } from "@tiptap/react";
+
+import "./KnowledgeEditor.css";
+
+const lowlight = createLowlight(common);
+
+export interface KnowledgeEditorProps {
+ /** HTML content for the editor */
+ content: string;
+ /** Called when editor content changes (provides HTML) */
+ onChange: (html: string) => void;
+ /** Placeholder text when editor is empty */
+ placeholder?: string;
+ /** Whether the editor is editable */
+ editable?: boolean;
+}
+
+/** Toolbar button helper */
+function ToolbarButton({
+ onClick,
+ active,
+ disabled,
+ title,
+ children,
+}: {
+ onClick: () => void;
+ active?: boolean;
+ disabled?: boolean;
+ title: string;
+ children: React.ReactNode;
+}): ReactElement {
+ return (
+
+ );
+}
+
+/** Separator between toolbar groups */
+function ToolbarSep(): ReactElement {
+ return (
+
+ );
+}
+
+/** Link insertion handler — prompts for URL */
+function toggleLink(editor: Editor): void {
+ if (editor.isActive("link")) {
+ editor.chain().focus().unsetLink().run();
+ return;
+ }
+ const url = window.prompt("Enter URL:");
+ if (url) {
+ editor.chain().focus().extendMarkRange("link").setLink({ href: url }).run();
+ }
+}
+
+/* SVG icon components for toolbar */
+function BulletListIcon(): ReactElement {
+ return (
+
+ );
+}
+
+function OrderedListIcon(): ReactElement {
+ return (
+
+ );
+}
+
+function QuoteIcon(): ReactElement {
+ return (
+
+ );
+}
+
+function CodeBlockIcon(): ReactElement {
+ return (
+
+ );
+}
+
+function LinkIcon(): ReactElement {
+ return (
+
+ );
+}
+
+function TableIcon(): ReactElement {
+ return (
+
+ );
+}
+
+/** Editor toolbar component */
+function EditorToolbar({ editor }: { editor: Editor }): ReactElement {
+ return (
+
+ {/* Headings */}
+
{
+ editor.chain().focus().toggleHeading({ level: 1 }).run();
+ }}
+ active={editor.isActive("heading", { level: 1 })}
+ title="Heading 1"
+ >
+ H1
+
+
{
+ editor.chain().focus().toggleHeading({ level: 2 }).run();
+ }}
+ active={editor.isActive("heading", { level: 2 })}
+ title="Heading 2"
+ >
+ H2
+
+
{
+ editor.chain().focus().toggleHeading({ level: 3 }).run();
+ }}
+ active={editor.isActive("heading", { level: 3 })}
+ title="Heading 3"
+ >
+ H3
+
+
+
+
+ {/* Text formatting */}
+
{
+ editor.chain().focus().toggleBold().run();
+ }}
+ active={editor.isActive("bold")}
+ title="Bold (Ctrl+B)"
+ >
+ B
+
+
{
+ editor.chain().focus().toggleItalic().run();
+ }}
+ active={editor.isActive("italic")}
+ title="Italic (Ctrl+I)"
+ >
+ I
+
+
{
+ editor.chain().focus().toggleStrike().run();
+ }}
+ active={editor.isActive("strike")}
+ title="Strikethrough"
+ >
+ S
+
+
{
+ editor.chain().focus().toggleCode().run();
+ }}
+ active={editor.isActive("code")}
+ title="Inline Code"
+ >
+ {"<>"}
+
+
+
+
+ {/* Lists */}
+
{
+ editor.chain().focus().toggleBulletList().run();
+ }}
+ active={editor.isActive("bulletList")}
+ title="Bullet List"
+ >
+
+
+
{
+ editor.chain().focus().toggleOrderedList().run();
+ }}
+ active={editor.isActive("orderedList")}
+ title="Ordered List"
+ >
+
+
+
{
+ editor.chain().focus().toggleBlockquote().run();
+ }}
+ active={editor.isActive("blockquote")}
+ title="Blockquote"
+ >
+
+
+
+
+
+ {/* Code block */}
+
{
+ editor.chain().focus().toggleCodeBlock().run();
+ }}
+ active={editor.isActive("codeBlock")}
+ title="Code Block"
+ >
+
+
+
+ {/* Link */}
+
{
+ toggleLink(editor);
+ }}
+ active={editor.isActive("link")}
+ title="Insert Link"
+ >
+
+
+
+ {/* Table */}
+
{
+ editor.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run();
+ }}
+ disabled={editor.isActive("table")}
+ title="Insert Table"
+ >
+
+
+
+
+
+ {/* Horizontal rule */}
+
{
+ editor.chain().focus().setHorizontalRule().run();
+ }}
+ title="Horizontal Rule"
+ >
+ —
+
+
+ );
+}
+
+export function KnowledgeEditor({
+ content,
+ onChange,
+ placeholder = "Start writing...",
+ editable = true,
+}: KnowledgeEditorProps): ReactElement {
+ const handleUpdate = useCallback(
+ ({ editor: e }: { editor: Editor }) => {
+ onChange(e.getHTML());
+ },
+ [onChange]
+ );
+
+ const editor = useEditor({
+ extensions: [
+ StarterKit.configure({
+ codeBlock: false,
+ }),
+ Link.configure({
+ openOnClick: false,
+ HTMLAttributes: {
+ rel: "noopener noreferrer",
+ class: "knowledge-editor-link",
+ },
+ }),
+ Table.configure({
+ resizable: true,
+ }),
+ TableRow,
+ TableCell,
+ TableHeader,
+ CodeBlockLowlight.configure({
+ lowlight,
+ }),
+ Placeholder.configure({
+ placeholder,
+ }),
+ ],
+ content,
+ editable,
+ onUpdate: handleUpdate,
+ });
+
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- useEditor returns null during SSR/init
+ if (!editor) {
+ return (
+
+ Loading editor...
+
+ );
+ }
+
+ return (
+
+ {editable && }
+
+
+ );
+}
diff --git a/docs/TASKS.md b/docs/TASKS.md
index c75e1b9..bc4aea7 100644
--- a/docs/TASKS.md
+++ b/docs/TASKS.md
@@ -11,8 +11,8 @@
| TW-WDG-001 | done | Widget definition seeding — Seed 7 existing widgets into widget_definitions table with correct sizing constraints and configSchema | #488 | api | feat/ms18-widget-seed | TW-PLAN-001 | TW-WDG-002 | worker | 2026-02-23 | 2026-02-23 | 15K | ~8K | PR #496 merged |
| TW-WDG-002 | done | Dashboard → WidgetGrid migration — Replace hardcoded dashboard layout with WidgetGrid, load/save layout via UserLayout API, default layout on first visit | #488 | web | feat/ms18-widget-grid-migration | TW-WDG-001 | TW-WDG-003,TW-WDG-004,TW-WDG-005 | worker | 2026-02-23 | 2026-02-23 | 40K | ~20K | PR #497 merged |
| TW-WDG-003 | done | Widget picker UI — Drawer/dialog to browse available widgets from registry, preview size/description, add to dashboard | #488 | web | feat/ms18-widget-picker | TW-WDG-002 | TW-VER-001 | worker | 2026-02-23 | 2026-02-23 | 25K | ~12K | PR #498 merged |
-| TW-WDG-004 | in-progress | Widget configuration UI — Per-widget settings dialog using configSchema, configure data source/filters/colors/title | #488 | web | feat/ms18-layout-management | TW-WDG-002 | TW-VER-001 | worker | 2026-02-23 | — | 30K | — | Bundled with WDG-005 (single PR) |
-| TW-WDG-005 | in-progress | Layout management UI — Save/rename/switch/delete layouts, reset to default. UI controls in dashboard header area | #488 | web | feat/ms18-layout-management | TW-WDG-002 | TW-VER-001 | worker | 2026-02-23 | — | 20K | — | |
+| TW-WDG-004 | done | Widget configuration UI — Per-widget settings dialog using configSchema, configure data source/filters/colors/title | #488 | web | feat/ms18-layout-management | TW-WDG-002 | TW-VER-001 | worker | 2026-02-23 | 2026-02-23 | 30K | ~8K | PR #499 merged (bundled with WDG-005) |
+| TW-WDG-005 | done | Layout management UI — Save/rename/switch/delete layouts, reset to default. UI controls in dashboard header area | #488 | web | feat/ms18-layout-management | TW-WDG-002 | TW-VER-001 | worker | 2026-02-23 | 2026-02-23 | 20K | ~8K | PR #499 merged (bundled with WDG-004) |
| TW-EDT-001 | not-started | Tiptap integration — Install @tiptap/react + extensions, build KnowledgeEditor component with toolbar (headings, bold, italic, lists, code, links, tables) | #489 | web | TBD | TW-PLAN-001 | TW-EDT-002 | worker | — | — | 35K | — | |
| TW-EDT-002 | not-started | Markdown round-trip + File Manager integration — Import markdown to Tiptap, export to markdown + HTML. Replace textarea in knowledge create/edit | #489 | web | TBD | TW-EDT-001 | TW-VER-001 | worker | — | — | 30K | — | |
| TW-KBN-001 | not-started | Kanban filtering — Add filter bar (project, assignee, priority, search). Support project-level and user-level views. URL param persistence | #490 | web | TBD | TW-PLAN-001 | TW-VER-001 | worker | — | — | 30K | — | |
@@ -23,12 +23,12 @@
## Summary
-| Metric | Value |
-| ------------- | -------------------------------------- |
-| Total tasks | 16 |
-| Completed | 6 (PLAN-001, THM-001–003, WDG-001–002) |
-| In Progress | 0 |
-| Remaining | 10 |
-| PRs merged | #493, #494, #495, #496, #497 |
-| Issues closed | — |
-| Milestone | MS18-ThemeWidgets |
+| Metric | Value |
+| ------------- | ---------------------------------------- |
+| Total tasks | 16 |
+| Completed | 10 (PLAN-001, THM-001–003, WDG-001–005) |
+| In Progress | 0 |
+| Remaining | 6 |
+| PRs merged | #493, #494, #495, #496, #497, #498, #499 |
+| Issues closed | — |
+| Milestone | MS18-ThemeWidgets |
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d7af660..b1efe31 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -398,6 +398,36 @@ importers:
'@tanstack/react-query':
specifier: ^5.90.20
version: 5.90.20(react@19.2.4)
+ '@tiptap/extension-code-block-lowlight':
+ specifier: ^3.20.0
+ version: 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/extension-code-block@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)(highlight.js@11.11.1)(lowlight@3.3.0)
+ '@tiptap/extension-link':
+ specifier: ^3.20.0
+ version: 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+ '@tiptap/extension-placeholder':
+ specifier: ^3.20.0
+ version: 3.20.0(@tiptap/extensions@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))
+ '@tiptap/extension-table':
+ specifier: ^3.20.0
+ version: 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+ '@tiptap/extension-table-cell':
+ specifier: ^3.20.0
+ version: 3.20.0(@tiptap/extension-table@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))
+ '@tiptap/extension-table-header':
+ specifier: ^3.20.0
+ version: 3.20.0(@tiptap/extension-table@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))
+ '@tiptap/extension-table-row':
+ specifier: ^3.20.0
+ version: 3.20.0(@tiptap/extension-table@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))
+ '@tiptap/pm':
+ specifier: ^3.20.0
+ version: 3.20.0
+ '@tiptap/react':
+ specifier: ^3.20.0
+ version: 3.20.0(@floating-ui/dom@1.7.5)(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@tiptap/starter-kit':
+ specifier: ^3.20.0
+ version: 3.20.0
'@types/dompurify':
specifier: ^3.2.0
version: 3.2.0
@@ -416,6 +446,9 @@ importers:
elkjs:
specifier: ^0.9.3
version: 0.9.3
+ lowlight:
+ specifier: ^3.3.0
+ version: 3.3.0
lucide-react:
specifier: ^0.563.0
version: 0.563.0(react@19.2.4)
@@ -1161,6 +1194,15 @@ packages:
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@floating-ui/core@1.7.4':
+ resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==}
+
+ '@floating-ui/dom@1.7.5':
+ resolution: {integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==}
+
+ '@floating-ui/utils@0.2.10':
+ resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
+
'@grpc/grpc-js@1.14.3':
resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==}
engines: {node: '>=12.10.0'}
@@ -2487,6 +2529,9 @@ packages:
react-redux:
optional: true
+ '@remirror/core-constants@3.0.0':
+ resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==}
+
'@rolldown/pluginutils@1.0.0-beta.27':
resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==}
@@ -2763,6 +2808,190 @@ packages:
peerDependencies:
'@testing-library/dom': '>=7.21.4'
+ '@tiptap/core@3.20.0':
+ resolution: {integrity: sha512-aC9aROgia/SpJqhsXFiX9TsligL8d+oeoI8W3u00WI45s0VfsqjgeKQLDLF7Tu7hC+7F02teC84SAHuup003VQ==}
+ peerDependencies:
+ '@tiptap/pm': ^3.20.0
+
+ '@tiptap/extension-blockquote@3.20.0':
+ resolution: {integrity: sha512-LQzn6aGtL4WXz2+rYshl/7/VnP2qJTpD7fWL96GXAzhqviPEY1bJES7poqJb3MU/gzl8VJUVzVzU1VoVfUKlbA==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+
+ '@tiptap/extension-bold@3.20.0':
+ resolution: {integrity: sha512-sQklEWiyf58yDjiHtm5vmkVjfIc/cBuSusmCsQ0q9vGYnEF1iOHKhGpvnCeEXNeqF3fiJQRlquzt/6ymle3Iwg==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+
+ '@tiptap/extension-bubble-menu@3.20.0':
+ resolution: {integrity: sha512-MDosUfs8Tj+nwg8RC+wTMWGkLJORXmbR6YZgbiX4hrc7G90Gopdd6kj6ht5/T8t7dLLaX7N0+DEHdUEPGED7dw==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+ '@tiptap/pm': ^3.20.0
+
+ '@tiptap/extension-bullet-list@3.20.0':
+ resolution: {integrity: sha512-OcKMeopBbqWzhSi6o8nNz0aayogg1sfOAhto3NxJu3Ya32dwBFqmHXSYM6uW4jOphNvVPyjiq9aNRh3qTdd1dw==}
+ peerDependencies:
+ '@tiptap/extension-list': ^3.20.0
+
+ '@tiptap/extension-code-block-lowlight@3.20.0':
+ resolution: {integrity: sha512-9lN9rn07lOWkLnByT5C1axtq56MHpOI7MpLaCmX3p+x1bDl6Uvixm6AoBdTLfZUmUYeEFBsf7t5cR+QepMbkiA==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+ '@tiptap/extension-code-block': ^3.20.0
+ '@tiptap/pm': ^3.20.0
+ highlight.js: ^11
+ lowlight: ^2 || ^3
+
+ '@tiptap/extension-code-block@3.20.0':
+ resolution: {integrity: sha512-lBbmNek14aCjrHcBcq3PRqWfNLvC6bcRa2Osc6e/LtmXlcpype4f6n+Yx+WZ+f2uUh0UmDRCz7BEyUETEsDmlQ==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+ '@tiptap/pm': ^3.20.0
+
+ '@tiptap/extension-code@3.20.0':
+ resolution: {integrity: sha512-TYDWFeSQ9umiyrqsT6VecbuhL8XIHkUhO+gEk0sVvH67ZLwjFDhAIIgWIr1/dbIGPcvMZM19E7xUUhAdIaXaOQ==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+
+ '@tiptap/extension-document@3.20.0':
+ resolution: {integrity: sha512-oJfLIG3vAtZo/wg29WiBcyWt22KUgddpP8wqtCE+kY5Dw8znLR9ehNmVWlSWJA5OJUMO0ntAHx4bBT+I2MBd5w==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+
+ '@tiptap/extension-dropcursor@3.20.0':
+ resolution: {integrity: sha512-d+cxplRlktVgZPwatnc34IArlppM0IFKS1J5wLk+ba1jidizsbMVh45tP/BTK2flhyfRqcNoB5R0TArhUpbkNQ==}
+ peerDependencies:
+ '@tiptap/extensions': ^3.20.0
+
+ '@tiptap/extension-floating-menu@3.20.0':
+ resolution: {integrity: sha512-rYs4Bv5pVjqZ/2vvR6oe7ammZapkAwN51As/WDbemvYDjfOGRqK58qGauUjYZiDzPOEIzI2mxGwsZ4eJhPW4Ig==}
+ peerDependencies:
+ '@floating-ui/dom': ^1.0.0
+ '@tiptap/core': ^3.20.0
+ '@tiptap/pm': ^3.20.0
+
+ '@tiptap/extension-gapcursor@3.20.0':
+ resolution: {integrity: sha512-P/LasfvG9/qFq43ZAlNbAnPnXC+/RJf49buTrhtFvI9Zg0+Lbpjx1oh6oMHB19T88Y28KtrckfFZ8aTSUWDq6w==}
+ peerDependencies:
+ '@tiptap/extensions': ^3.20.0
+
+ '@tiptap/extension-hard-break@3.20.0':
+ resolution: {integrity: sha512-rqvhMOw4f+XQmEthncbvDjgLH6fz8L9splnKZC7OeS0eX8b0qd7+xI1u5kyxF3KA2Z0BnigES++jjWuecqV6mA==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+
+ '@tiptap/extension-heading@3.20.0':
+ resolution: {integrity: sha512-JgJhurnCe3eN6a0lEsNQM/46R1bcwzwWWZEFDSb1P9dR8+t1/5v7cMZWsSInpD7R4/74iJn0+M5hcXLwCmBmYA==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+
+ '@tiptap/extension-horizontal-rule@3.20.0':
+ resolution: {integrity: sha512-6uvcutFMv+9wPZgptDkbRDjAm3YVxlibmkhWD5GuaWwS9L/yUtobpI3GycujRSUZ8D3q6Q9J7LqpmQtQRTalWA==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+ '@tiptap/pm': ^3.20.0
+
+ '@tiptap/extension-italic@3.20.0':
+ resolution: {integrity: sha512-/DhnKQF8yN8RxtuL8abZ28wd5281EaGoE2Oha35zXSOF1vNYnbyt8Ymkv/7u1BcWEWTvRPgaju0YCGXisPRLYw==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+
+ '@tiptap/extension-link@3.20.0':
+ resolution: {integrity: sha512-qI/5A+R0ZWBxo/8HxSn1uOyr7odr3xHBZ/gzOR1GUJaZqjlJxkWFX0RtXMbLKEGEvT25o345cF7b0wFznEh8qA==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+ '@tiptap/pm': ^3.20.0
+
+ '@tiptap/extension-list-item@3.20.0':
+ resolution: {integrity: sha512-qEtjaaGPuqaFB4VpLrGDoIe9RHnckxPfu6d3rc22ap6TAHCDyRv05CEyJogqccnFceG/v5WN4znUBER8RWnWHA==}
+ peerDependencies:
+ '@tiptap/extension-list': ^3.20.0
+
+ '@tiptap/extension-list-keymap@3.20.0':
+ resolution: {integrity: sha512-Z4GvKy04Ms4cLFN+CY6wXswd36xYsT2p/YL0V89LYFMZTerOeTjFYlndzn6svqL8NV1PRT5Diw4WTTxJSmcJPA==}
+ peerDependencies:
+ '@tiptap/extension-list': ^3.20.0
+
+ '@tiptap/extension-list@3.20.0':
+ resolution: {integrity: sha512-+V0/gsVWAv+7vcY0MAe6D52LYTIicMSHw00wz3ISZgprSb2yQhJ4+4gurOnUrQ4Du3AnRQvxPROaofwxIQ66WQ==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+ '@tiptap/pm': ^3.20.0
+
+ '@tiptap/extension-ordered-list@3.20.0':
+ resolution: {integrity: sha512-jVKnJvrizLk7etwBMfyoj6H2GE4M+PD4k7Bwp6Bh1ohBWtfIA1TlngdS842Mx5i1VB2e3UWIwr8ZH46gl6cwMA==}
+ peerDependencies:
+ '@tiptap/extension-list': ^3.20.0
+
+ '@tiptap/extension-paragraph@3.20.0':
+ resolution: {integrity: sha512-mM99zK4+RnEXIMCv6akfNATAs0Iija6FgyFA9J9NZ6N4o8y9QiNLLa6HjLpAC+W+VoCgQIekyoF/Q9ftxmAYDQ==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+
+ '@tiptap/extension-placeholder@3.20.0':
+ resolution: {integrity: sha512-ZhYD3L5m16ydSe2z8vqz+RdtAG/iOQaFHHedFct70tKRoLqi2ajF5kgpemu8DwpaRTcyiCN4G99J/+MqehKNjQ==}
+ peerDependencies:
+ '@tiptap/extensions': ^3.20.0
+
+ '@tiptap/extension-strike@3.20.0':
+ resolution: {integrity: sha512-0vcTZRRAiDfon3VM1mHBr9EFmTkkUXMhm0Xtdtn0bGe+sIqufyi+hUYTEw93EQOD9XNsPkrud6jzQNYpX2H3AQ==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+
+ '@tiptap/extension-table-cell@3.20.0':
+ resolution: {integrity: sha512-9Dg4zda3UWwtpBwSG7b9BeQy5oT27a/yEIBeARuxe19bloMLZgqpPRtnSrOK0OAITtVnjA+NZdKPcVLRMS2E8A==}
+ peerDependencies:
+ '@tiptap/extension-table': ^3.20.0
+
+ '@tiptap/extension-table-header@3.20.0':
+ resolution: {integrity: sha512-2tVHHlihpeHO/gh2uU46gAX3NTGdKR+yDmfLlO2l0QAvx2TXNfNzX2pOM4MmyostW5Ko9TCWV4x0D9h3IQDhPw==}
+ peerDependencies:
+ '@tiptap/extension-table': ^3.20.0
+
+ '@tiptap/extension-table-row@3.20.0':
+ resolution: {integrity: sha512-clkfQahkYW/U48QBh1rPZv3AWWSC9AqGKp2DLTH/SGIorM/NwI0jpPtBETMlvowyQu0ivlH9B896smEph+Do2A==}
+ peerDependencies:
+ '@tiptap/extension-table': ^3.20.0
+
+ '@tiptap/extension-table@3.20.0':
+ resolution: {integrity: sha512-vaaMtQ2KnSSr8WVwgWf7NYNzPwrHx/6T0ekA5CxV8qNUEpXIaLXa5+tE7tJHWEdNR2KY3gUJ46D3lfOkxyFrBQ==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+ '@tiptap/pm': ^3.20.0
+
+ '@tiptap/extension-text@3.20.0':
+ resolution: {integrity: sha512-tf8bE8tSaOEWabCzPm71xwiUhyMFKqY9jkP5af3Kr1/F45jzZFIQAYZooHI/+zCHRrgJ99MQHKHe1ZNvODrKHQ==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+
+ '@tiptap/extension-underline@3.20.0':
+ resolution: {integrity: sha512-LzNXuy2jwR/y+ymoUqC72TiGzbOCjioIjsDu0MNYpHuHqTWPK5aV9Mh0nbZcYFy/7fPlV1q0W139EbJeYBZEAQ==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+
+ '@tiptap/extensions@3.20.0':
+ resolution: {integrity: sha512-HIsXX942w3nbxEQBlMAAR/aa6qiMBEP7CsSMxaxmTIVAmW35p6yUASw6GdV1u0o3lCZjXq2OSRMTskzIqi5uLg==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+ '@tiptap/pm': ^3.20.0
+
+ '@tiptap/pm@3.20.0':
+ resolution: {integrity: sha512-jn+2KnQZn+b+VXr8EFOJKsnjVNaA4diAEr6FOazupMt8W8ro1hfpYtZ25JL87Kao/WbMze55sd8M8BDXLUKu1A==}
+
+ '@tiptap/react@3.20.0':
+ resolution: {integrity: sha512-jFLNzkmn18zqefJwPje0PPd9VhZ7Oy28YHiSvSc7YpBnQIbuN/HIxZ2lrOsKyEHta0WjRZjfU5X1pGxlbcGwOA==}
+ peerDependencies:
+ '@tiptap/core': ^3.20.0
+ '@tiptap/pm': ^3.20.0
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ '@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ '@tiptap/starter-kit@3.20.0':
+ resolution: {integrity: sha512-W4+1re35pDNY/7rpXVg+OKo/Fa4Gfrn08Bq3E3fzlJw6gjE3tYU8dY9x9vC2rK9pd9NOp7Af11qCFDaWpohXkw==}
+
'@tokenizer/inflate@0.4.1':
resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==}
engines: {node: '>=18'}
@@ -2959,6 +3188,9 @@ packages:
'@types/geojson@7946.0.16':
resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==}
+ '@types/hast@3.0.4':
+ resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+
'@types/highlight.js@10.1.0':
resolution: {integrity: sha512-77hF2dGBsOgnvZll1vymYiNUtqJ8cJfXPD6GG/2M0aLRc29PkvB7Au6sIDjIEFcSICBhCh2+Pyq6WSRS7LUm6A==}
deprecated: This is a stub types definition. highlight.js provides its own type definitions, so you do not need this installed.
@@ -2969,10 +3201,19 @@ packages:
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ '@types/linkify-it@5.0.0':
+ resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
+
+ '@types/markdown-it@14.1.2':
+ resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
+
'@types/marked@6.0.0':
resolution: {integrity: sha512-jmjpa4BwUsmhxcfsgUit/7A9KbrC48Q0q8KvnY107ogcjGgTFDlIL3RpihNpx2Mu1hM4mdFQjoVc4O6JoGKHsA==}
deprecated: This is a stub types definition. marked provides its own type definitions, so you do not need this installed.
+ '@types/mdurl@2.0.0':
+ resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
+
'@types/memcached@2.2.10':
resolution: {integrity: sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg==}
@@ -3057,6 +3298,9 @@ packages:
'@types/trusted-types@2.0.7':
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+ '@types/unist@3.0.3':
+ resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+
'@types/use-sync-external-store@0.0.6':
resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==}
@@ -3944,6 +4188,9 @@ packages:
create-require@1.1.1:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
+ crelt@1.0.6:
+ resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
+
cron-parser@4.9.0:
resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==}
engines: {node: '>=12.0.0'}
@@ -4234,6 +4481,9 @@ packages:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
+ devlop@1.1.0:
+ resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
+
dezalgo@1.0.4:
resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==}
@@ -4648,6 +4898,10 @@ packages:
fast-equals@4.0.3:
resolution: {integrity: sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==}
+ fast-equals@5.4.0:
+ resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==}
+ engines: {node: '>=6.0.0'}
+
fast-fifo@1.3.2:
resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
@@ -5246,6 +5500,12 @@ packages:
lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ linkify-it@5.0.0:
+ resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
+
+ linkifyjs@4.3.2:
+ resolution: {integrity: sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==}
+
lint-staged@16.2.7:
resolution: {integrity: sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==}
engines: {node: '>=20.17'}
@@ -5314,6 +5574,9 @@ packages:
resolution: {integrity: sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==}
engines: {node: '>=4'}
+ lowlight@3.3.0:
+ resolution: {integrity: sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ==}
+
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
@@ -5359,6 +5622,10 @@ packages:
make-error@1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
+ markdown-it@14.1.1:
+ resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==}
+ hasBin: true
+
marked-gfm-heading-id@4.1.3:
resolution: {integrity: sha512-aR0i63LmFbuxU/gAgrgz1Ir+8HK6zAIFXMlckeKHpV+qKbYaOP95L4Ux5Gi+sKmCZU5qnN2rdKpvpb7PnUBIWg==}
peerDependencies:
@@ -5387,6 +5654,9 @@ packages:
resolution: {integrity: sha512-sCY5UvZfsZhJdCjSc8wZhGhIHOe5cSFSILxx9Zp5a/NEXtmQ6W/bIhefIk4zFAZXetFwXsgvKh1960k1hG5WDw==}
engines: {node: '>=22.0.0'}
+ mdurl@2.0.0:
+ resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
+
media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
@@ -5694,6 +5964,9 @@ packages:
resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
engines: {node: '>=10'}
+ orderedmap@2.1.1:
+ resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==}
+
p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
@@ -5979,6 +6252,64 @@ packages:
prop-types@15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+ prosemirror-changeset@2.4.0:
+ resolution: {integrity: sha512-LvqH2v7Q2SF6yxatuPP2e8vSUKS/L+xAU7dPDC4RMyHMhZoGDfBC74mYuyYF4gLqOEG758wajtyhNnsTkuhvng==}
+
+ prosemirror-collab@1.3.1:
+ resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==}
+
+ prosemirror-commands@1.7.1:
+ resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==}
+
+ prosemirror-dropcursor@1.8.2:
+ resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==}
+
+ prosemirror-gapcursor@1.4.0:
+ resolution: {integrity: sha512-z00qvurSdCEWUIulij/isHaqu4uLS8r/Fi61IbjdIPJEonQgggbJsLnstW7Lgdk4zQ68/yr6B6bf7sJXowIgdQ==}
+
+ prosemirror-history@1.5.0:
+ resolution: {integrity: sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==}
+
+ prosemirror-inputrules@1.5.1:
+ resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==}
+
+ prosemirror-keymap@1.2.3:
+ resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==}
+
+ prosemirror-markdown@1.13.4:
+ resolution: {integrity: sha512-D98dm4cQ3Hs6EmjK500TdAOew4Z03EV71ajEFiWra3Upr7diytJsjF4mPV2dW+eK5uNectiRj0xFxYI9NLXDbw==}
+
+ prosemirror-menu@1.3.0:
+ resolution: {integrity: sha512-TImyPXCHPcDsSka2/lwJ6WjTASr4re/qWq1yoTTuLOqfXucwF6VcRa2LWCkM/EyTD1UO3CUwiH8qURJoWJRxwg==}
+
+ prosemirror-model@1.25.4:
+ resolution: {integrity: sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==}
+
+ prosemirror-schema-basic@1.2.4:
+ resolution: {integrity: sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==}
+
+ prosemirror-schema-list@1.5.1:
+ resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==}
+
+ prosemirror-state@1.4.4:
+ resolution: {integrity: sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==}
+
+ prosemirror-tables@1.8.5:
+ resolution: {integrity: sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==}
+
+ prosemirror-trailing-node@3.0.0:
+ resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==}
+ peerDependencies:
+ prosemirror-model: ^1.22.1
+ prosemirror-state: ^1.4.2
+ prosemirror-view: ^1.33.8
+
+ prosemirror-transform@1.11.0:
+ resolution: {integrity: sha512-4I7Ce4KpygXb9bkiPS3hTEk4dSHorfRw8uI0pE8IhxlK2GXsqv5tIA7JUSxtSu7u8APVOTtbUBxTmnHIxVkIJw==}
+
+ prosemirror-view@1.41.6:
+ resolution: {integrity: sha512-mxpcDG4hNQa/CPtzxjdlir5bJFDlm0/x5nGBbStB2BWX+XOQ9M8ekEG+ojqB5BcVu2Rc80/jssCMZzSstJuSYg==}
+
protobufjs@7.5.4:
resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==}
engines: {node: '>=12.0.0'}
@@ -5993,6 +6324,10 @@ packages:
pump@3.0.3:
resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
+ punycode.js@2.3.1:
+ resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
+ engines: {node: '>=6'}
+
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
@@ -6214,6 +6549,9 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
+ rope-sequence@1.3.4:
+ resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==}
+
rou3@0.7.12:
resolution: {integrity: sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg==}
@@ -6797,6 +7135,9 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
+ uc.micro@2.1.0:
+ resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
+
ufo@1.6.3:
resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==}
@@ -7017,6 +7358,9 @@ packages:
vscode-uri@3.0.8:
resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
+ w3c-keyname@2.2.8:
+ resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
+
w3c-xmlserializer@5.0.0:
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
engines: {node: '>=18'}
@@ -7946,6 +8290,20 @@ snapshots:
'@eslint/core': 0.17.0
levn: 0.4.1
+ '@floating-ui/core@1.7.4':
+ dependencies:
+ '@floating-ui/utils': 0.2.10
+ optional: true
+
+ '@floating-ui/dom@1.7.5':
+ dependencies:
+ '@floating-ui/core': 1.7.4
+ '@floating-ui/utils': 0.2.10
+ optional: true
+
+ '@floating-ui/utils@0.2.10':
+ optional: true
+
'@grpc/grpc-js@1.14.3':
dependencies:
'@grpc/proto-loader': 0.8.0
@@ -9488,6 +9846,8 @@ snapshots:
react: 19.2.4
react-redux: 9.2.0(@types/react@19.2.10)(react@19.2.4)(redux@5.0.1)
+ '@remirror/core-constants@3.0.0': {}
+
'@rolldown/pluginutils@1.0.0-beta.27': {}
'@rollup/pluginutils@5.3.0(rollup@4.57.0)':
@@ -9690,6 +10050,212 @@ snapshots:
dependencies:
'@testing-library/dom': 10.4.1
+ '@tiptap/core@3.20.0(@tiptap/pm@3.20.0)':
+ dependencies:
+ '@tiptap/pm': 3.20.0
+
+ '@tiptap/extension-blockquote@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-bold@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-bubble-menu@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)':
+ dependencies:
+ '@floating-ui/dom': 1.7.5
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+ '@tiptap/pm': 3.20.0
+ optional: true
+
+ '@tiptap/extension-bullet-list@3.20.0(@tiptap/extension-list@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/extension-list': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-code-block-lowlight@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/extension-code-block@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)(highlight.js@11.11.1)(lowlight@3.3.0)':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+ '@tiptap/extension-code-block': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+ '@tiptap/pm': 3.20.0
+ highlight.js: 11.11.1
+ lowlight: 3.3.0
+
+ '@tiptap/extension-code-block@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+ '@tiptap/pm': 3.20.0
+
+ '@tiptap/extension-code@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-document@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-dropcursor@3.20.0(@tiptap/extensions@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/extensions': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-floating-menu@3.20.0(@floating-ui/dom@1.7.5)(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)':
+ dependencies:
+ '@floating-ui/dom': 1.7.5
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+ '@tiptap/pm': 3.20.0
+ optional: true
+
+ '@tiptap/extension-gapcursor@3.20.0(@tiptap/extensions@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/extensions': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-hard-break@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-heading@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-horizontal-rule@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+ '@tiptap/pm': 3.20.0
+
+ '@tiptap/extension-italic@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-link@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+ '@tiptap/pm': 3.20.0
+ linkifyjs: 4.3.2
+
+ '@tiptap/extension-list-item@3.20.0(@tiptap/extension-list@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/extension-list': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-list-keymap@3.20.0(@tiptap/extension-list@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/extension-list': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-list@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+ '@tiptap/pm': 3.20.0
+
+ '@tiptap/extension-ordered-list@3.20.0(@tiptap/extension-list@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/extension-list': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-paragraph@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-placeholder@3.20.0(@tiptap/extensions@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/extensions': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-strike@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-table-cell@3.20.0(@tiptap/extension-table@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/extension-table': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-table-header@3.20.0(@tiptap/extension-table@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/extension-table': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-table-row@3.20.0(@tiptap/extension-table@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/extension-table': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-table@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+ '@tiptap/pm': 3.20.0
+
+ '@tiptap/extension-text@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+
+ '@tiptap/extension-underline@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+
+ '@tiptap/extensions@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+ '@tiptap/pm': 3.20.0
+
+ '@tiptap/pm@3.20.0':
+ dependencies:
+ prosemirror-changeset: 2.4.0
+ prosemirror-collab: 1.3.1
+ prosemirror-commands: 1.7.1
+ prosemirror-dropcursor: 1.8.2
+ prosemirror-gapcursor: 1.4.0
+ prosemirror-history: 1.5.0
+ prosemirror-inputrules: 1.5.1
+ prosemirror-keymap: 1.2.3
+ prosemirror-markdown: 1.13.4
+ prosemirror-menu: 1.3.0
+ prosemirror-model: 1.25.4
+ prosemirror-schema-basic: 1.2.4
+ prosemirror-schema-list: 1.5.1
+ prosemirror-state: 1.4.4
+ prosemirror-tables: 1.8.5
+ prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.6)
+ prosemirror-transform: 1.11.0
+ prosemirror-view: 1.41.6
+
+ '@tiptap/react@3.20.0(@floating-ui/dom@1.7.5)(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+ '@tiptap/pm': 3.20.0
+ '@types/react': 19.2.10
+ '@types/react-dom': 19.2.3(@types/react@19.2.10)
+ '@types/use-sync-external-store': 0.0.6
+ fast-equals: 5.4.0
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ use-sync-external-store: 1.6.0(react@19.2.4)
+ optionalDependencies:
+ '@tiptap/extension-bubble-menu': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+ '@tiptap/extension-floating-menu': 3.20.0(@floating-ui/dom@1.7.5)(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+ transitivePeerDependencies:
+ - '@floating-ui/dom'
+
+ '@tiptap/starter-kit@3.20.0':
+ dependencies:
+ '@tiptap/core': 3.20.0(@tiptap/pm@3.20.0)
+ '@tiptap/extension-blockquote': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))
+ '@tiptap/extension-bold': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))
+ '@tiptap/extension-bullet-list': 3.20.0(@tiptap/extension-list@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))
+ '@tiptap/extension-code': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))
+ '@tiptap/extension-code-block': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+ '@tiptap/extension-document': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))
+ '@tiptap/extension-dropcursor': 3.20.0(@tiptap/extensions@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))
+ '@tiptap/extension-gapcursor': 3.20.0(@tiptap/extensions@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))
+ '@tiptap/extension-hard-break': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))
+ '@tiptap/extension-heading': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))
+ '@tiptap/extension-horizontal-rule': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+ '@tiptap/extension-italic': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))
+ '@tiptap/extension-link': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+ '@tiptap/extension-list': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+ '@tiptap/extension-list-item': 3.20.0(@tiptap/extension-list@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))
+ '@tiptap/extension-list-keymap': 3.20.0(@tiptap/extension-list@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))
+ '@tiptap/extension-ordered-list': 3.20.0(@tiptap/extension-list@3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0))
+ '@tiptap/extension-paragraph': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))
+ '@tiptap/extension-strike': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))
+ '@tiptap/extension-text': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))
+ '@tiptap/extension-underline': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))
+ '@tiptap/extensions': 3.20.0(@tiptap/core@3.20.0(@tiptap/pm@3.20.0))(@tiptap/pm@3.20.0)
+ '@tiptap/pm': 3.20.0
+
'@tokenizer/inflate@0.4.1':
dependencies:
debug: 4.4.3
@@ -9943,6 +10509,10 @@ snapshots:
'@types/geojson@7946.0.16': {}
+ '@types/hast@3.0.4':
+ dependencies:
+ '@types/unist': 3.0.3
+
'@types/highlight.js@10.1.0':
dependencies:
highlight.js: 11.11.1
@@ -9951,10 +10521,19 @@ snapshots:
'@types/json-schema@7.0.15': {}
+ '@types/linkify-it@5.0.0': {}
+
+ '@types/markdown-it@14.1.2':
+ dependencies:
+ '@types/linkify-it': 5.0.0
+ '@types/mdurl': 2.0.0
+
'@types/marked@6.0.0':
dependencies:
marked: 17.0.1
+ '@types/mdurl@2.0.0': {}
+
'@types/memcached@2.2.10':
dependencies:
'@types/node': 22.19.7
@@ -10067,6 +10646,8 @@ snapshots:
'@types/trusted-types@2.0.7':
optional: true
+ '@types/unist@3.0.3': {}
+
'@types/use-sync-external-store@0.0.6': {}
'@types/validator@13.15.10': {}
@@ -11115,6 +11696,8 @@ snapshots:
create-require@1.1.1: {}
+ crelt@1.0.6: {}
+
cron-parser@4.9.0:
dependencies:
luxon: 3.7.2
@@ -11396,6 +11979,10 @@ snapshots:
detect-libc@2.1.2: {}
+ devlop@1.1.0:
+ dependencies:
+ dequal: 2.0.3
+
dezalgo@1.0.4:
dependencies:
asap: 2.0.6
@@ -11855,6 +12442,8 @@ snapshots:
fast-equals@4.0.3: {}
+ fast-equals@5.4.0: {}
+
fast-fifo@1.3.2: {}
fast-glob@3.3.3:
@@ -12471,6 +13060,12 @@ snapshots:
lines-and-columns@1.2.4: {}
+ linkify-it@5.0.0:
+ dependencies:
+ uc.micro: 2.1.0
+
+ linkifyjs@4.3.2: {}
+
lint-staged@16.2.7:
dependencies:
commander: 14.0.2
@@ -12543,6 +13138,12 @@ snapshots:
pify: 3.0.0
steno: 0.4.4
+ lowlight@3.3.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ devlop: 1.1.0
+ highlight.js: 11.11.1
+
lru-cache@10.4.3: {}
lru-cache@11.2.5: {}
@@ -12587,6 +13188,15 @@ snapshots:
make-error@1.3.6: {}
+ markdown-it@14.1.1:
+ dependencies:
+ argparse: 2.0.1
+ entities: 4.5.0
+ linkify-it: 5.0.0
+ mdurl: 2.0.0
+ punycode.js: 2.3.1
+ uc.micro: 2.1.0
+
marked-gfm-heading-id@4.1.3(marked@17.0.1):
dependencies:
github-slugger: 2.0.0
@@ -12625,6 +13235,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ mdurl@2.0.0: {}
+
media-typer@0.3.0: {}
media-typer@1.1.0: {}
@@ -12918,6 +13530,8 @@ snapshots:
strip-ansi: 6.0.1
wcwidth: 1.0.1
+ orderedmap@2.1.1: {}
+
p-limit@3.1.0:
dependencies:
yocto-queue: 0.1.0
@@ -13172,6 +13786,109 @@ snapshots:
object-assign: 4.1.1
react-is: 16.13.1
+ prosemirror-changeset@2.4.0:
+ dependencies:
+ prosemirror-transform: 1.11.0
+
+ prosemirror-collab@1.3.1:
+ dependencies:
+ prosemirror-state: 1.4.4
+
+ prosemirror-commands@1.7.1:
+ dependencies:
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.11.0
+
+ prosemirror-dropcursor@1.8.2:
+ dependencies:
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.11.0
+ prosemirror-view: 1.41.6
+
+ prosemirror-gapcursor@1.4.0:
+ dependencies:
+ prosemirror-keymap: 1.2.3
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-view: 1.41.6
+
+ prosemirror-history@1.5.0:
+ dependencies:
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.11.0
+ prosemirror-view: 1.41.6
+ rope-sequence: 1.3.4
+
+ prosemirror-inputrules@1.5.1:
+ dependencies:
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.11.0
+
+ prosemirror-keymap@1.2.3:
+ dependencies:
+ prosemirror-state: 1.4.4
+ w3c-keyname: 2.2.8
+
+ prosemirror-markdown@1.13.4:
+ dependencies:
+ '@types/markdown-it': 14.1.2
+ markdown-it: 14.1.1
+ prosemirror-model: 1.25.4
+
+ prosemirror-menu@1.3.0:
+ dependencies:
+ crelt: 1.0.6
+ prosemirror-commands: 1.7.1
+ prosemirror-history: 1.5.0
+ prosemirror-state: 1.4.4
+
+ prosemirror-model@1.25.4:
+ dependencies:
+ orderedmap: 2.1.1
+
+ prosemirror-schema-basic@1.2.4:
+ dependencies:
+ prosemirror-model: 1.25.4
+
+ prosemirror-schema-list@1.5.1:
+ dependencies:
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.11.0
+
+ prosemirror-state@1.4.4:
+ dependencies:
+ prosemirror-model: 1.25.4
+ prosemirror-transform: 1.11.0
+ prosemirror-view: 1.41.6
+
+ prosemirror-tables@1.8.5:
+ dependencies:
+ prosemirror-keymap: 1.2.3
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.11.0
+ prosemirror-view: 1.41.6
+
+ prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.6):
+ dependencies:
+ '@remirror/core-constants': 3.0.0
+ escape-string-regexp: 4.0.0
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-view: 1.41.6
+
+ prosemirror-transform@1.11.0:
+ dependencies:
+ prosemirror-model: 1.25.4
+
+ prosemirror-view@1.41.6:
+ dependencies:
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.11.0
+
protobufjs@7.5.4:
dependencies:
'@protobufjs/aspromise': 1.1.2
@@ -13199,6 +13916,8 @@ snapshots:
end-of-stream: 1.4.5
once: 1.4.0
+ punycode.js@2.3.1: {}
+
punycode@2.3.1: {}
pure-rand@6.1.0: {}
@@ -13459,6 +14178,8 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.57.0
fsevents: 2.3.3
+ rope-sequence@1.3.4: {}
+
rou3@0.7.12: {}
roughjs@4.6.6:
@@ -14187,6 +14908,8 @@ snapshots:
typescript@5.9.3: {}
+ uc.micro@2.1.0: {}
+
ufo@1.6.3: {}
uid@2.0.2:
@@ -14490,6 +15213,8 @@ snapshots:
vscode-uri@3.0.8: {}
+ w3c-keyname@2.2.8: {}
+
w3c-xmlserializer@5.0.0:
dependencies:
xml-name-validator: 5.0.0