mardora 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +113 -0
- package/dist/chunk-3OCUX4OO.js +7690 -0
- package/dist/chunk-3OCUX4OO.js.map +1 -0
- package/dist/chunk-3ZOCCFDL.cjs +74 -0
- package/dist/chunk-3ZOCCFDL.cjs.map +1 -0
- package/dist/chunk-7JOEPNEV.cjs +7740 -0
- package/dist/chunk-7JOEPNEV.cjs.map +1 -0
- package/dist/chunk-BIKZQZ6W.js +33 -0
- package/dist/chunk-BIKZQZ6W.js.map +1 -0
- package/dist/chunk-EQJESPP2.js +234 -0
- package/dist/chunk-EQJESPP2.js.map +1 -0
- package/dist/chunk-G4SE26YY.js +70 -0
- package/dist/chunk-G4SE26YY.js.map +1 -0
- package/dist/chunk-KNDWF2DP.cjs +35 -0
- package/dist/chunk-KNDWF2DP.cjs.map +1 -0
- package/dist/chunk-MLBEBFHB.cjs +2971 -0
- package/dist/chunk-MLBEBFHB.cjs.map +1 -0
- package/dist/chunk-P7JFCYU3.js +905 -0
- package/dist/chunk-P7JFCYU3.js.map +1 -0
- package/dist/chunk-SWFUKJDO.cjs +243 -0
- package/dist/chunk-SWFUKJDO.cjs.map +1 -0
- package/dist/chunk-WFVCG4LD.cjs +926 -0
- package/dist/chunk-WFVCG4LD.cjs.map +1 -0
- package/dist/chunk-XL6WFGJT.js +2901 -0
- package/dist/chunk-XL6WFGJT.js.map +1 -0
- package/dist/editor/index.cjs +277 -0
- package/dist/editor/index.cjs.map +1 -0
- package/dist/editor/index.d.cts +186 -0
- package/dist/editor/index.d.ts +186 -0
- package/dist/editor/index.js +4 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/index.cjs +405 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +13 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/index.cjs +12 -0
- package/dist/lib/index.cjs.map +1 -0
- package/dist/lib/index.d.cts +16 -0
- package/dist/lib/index.d.ts +16 -0
- package/dist/lib/index.js +3 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/mardora-DCwjomil.d.cts +640 -0
- package/dist/mardora-DCwjomil.d.ts +640 -0
- package/dist/plugins/index.cjs +104 -0
- package/dist/plugins/index.cjs.map +1 -0
- package/dist/plugins/index.d.cts +740 -0
- package/dist/plugins/index.d.ts +740 -0
- package/dist/plugins/index.js +7 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/preview/index.cjs +38 -0
- package/dist/preview/index.cjs.map +1 -0
- package/dist/preview/index.d.cts +101 -0
- package/dist/preview/index.d.ts +101 -0
- package/dist/preview/index.js +5 -0
- package/dist/preview/index.js.map +1 -0
- package/dist/types-NBsaxl4d.d.cts +71 -0
- package/dist/types-Pw2SWWAR.d.ts +71 -0
- package/package.json +92 -0
- package/src/editor/attachments/extension.ts +181 -0
- package/src/editor/attachments/format.ts +63 -0
- package/src/editor/attachments/index.ts +3 -0
- package/src/editor/attachments/types.ts +37 -0
- package/src/editor/heading-fold/config.ts +25 -0
- package/src/editor/heading-fold/extension.ts +268 -0
- package/src/editor/heading-fold/extract.ts +88 -0
- package/src/editor/heading-fold/index.ts +5 -0
- package/src/editor/heading-fold/theme.ts +85 -0
- package/src/editor/heading-fold/types.ts +24 -0
- package/src/editor/i18n.ts +13 -0
- package/src/editor/icons/index.ts +367 -0
- package/src/editor/index.ts +16 -0
- package/src/editor/mardora.ts +257 -0
- package/src/editor/media-lightbox-theme.ts +146 -0
- package/src/editor/media-lightbox.ts +125 -0
- package/src/editor/plugin.ts +294 -0
- package/src/editor/selection-toolbar/activation.ts +123 -0
- package/src/editor/selection-toolbar/commands.ts +279 -0
- package/src/editor/selection-toolbar/extension.ts +564 -0
- package/src/editor/selection-toolbar/i18n.ts +164 -0
- package/src/editor/selection-toolbar/index.ts +7 -0
- package/src/editor/selection-toolbar/menu.ts +252 -0
- package/src/editor/selection-toolbar/position.ts +43 -0
- package/src/editor/selection-toolbar/theme.ts +195 -0
- package/src/editor/selection-toolbar/types.ts +155 -0
- package/src/editor/slash/default-commands.ts +190 -0
- package/src/editor/slash/extension.ts +319 -0
- package/src/editor/slash/index.ts +7 -0
- package/src/editor/slash/insertions.ts +26 -0
- package/src/editor/slash/menu.ts +123 -0
- package/src/editor/slash/position.ts +61 -0
- package/src/editor/slash/query.ts +33 -0
- package/src/editor/slash/theme.ts +113 -0
- package/src/editor/slash/types.ts +40 -0
- package/src/editor/table-of-contents/extension.ts +202 -0
- package/src/editor/table-of-contents/extract.ts +53 -0
- package/src/editor/table-of-contents/index.ts +7 -0
- package/src/editor/table-of-contents/panel.ts +83 -0
- package/src/editor/table-of-contents/slug.ts +50 -0
- package/src/editor/table-of-contents/storage.ts +35 -0
- package/src/editor/table-of-contents/theme.ts +153 -0
- package/src/editor/table-of-contents/types.ts +44 -0
- package/src/editor/theme.ts +72 -0
- package/src/editor/utils.ts +176 -0
- package/src/editor/view-plugin.ts +189 -0
- package/src/index.ts +5 -0
- package/src/lib/index.ts +2 -0
- package/src/lib/input-handler.ts +47 -0
- package/src/plugins/code-plugin.theme.ts +545 -0
- package/src/plugins/code-plugin.ts +1892 -0
- package/src/plugins/emoji-plugin.ts +140 -0
- package/src/plugins/heading-plugin.ts +194 -0
- package/src/plugins/hr-plugin.ts +102 -0
- package/src/plugins/html-plugin.ts +353 -0
- package/src/plugins/image-plugin.ts +806 -0
- package/src/plugins/index.ts +71 -0
- package/src/plugins/inline-plugin.ts +311 -0
- package/src/plugins/link-plugin.ts +509 -0
- package/src/plugins/list-plugin.ts +492 -0
- package/src/plugins/math-plugin.ts +526 -0
- package/src/plugins/mermaid-plugin.ts +513 -0
- package/src/plugins/paragraph-plugin.ts +38 -0
- package/src/plugins/quote-plugin.ts +733 -0
- package/src/plugins/table-controls-theme.ts +126 -0
- package/src/plugins/table-controls.ts +423 -0
- package/src/plugins/table-model.ts +661 -0
- package/src/plugins/table-plugin.ts +2111 -0
- package/src/preview/context.ts +45 -0
- package/src/preview/css-generator.ts +64 -0
- package/src/preview/default-renderers.ts +29 -0
- package/src/preview/index.ts +29 -0
- package/src/preview/preview.ts +41 -0
- package/src/preview/renderer.ts +184 -0
- package/src/preview/syntax-theme.ts +112 -0
- package/src/preview/toc.ts +23 -0
- package/src/preview/types.ts +89 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/editor/utils.ts","../src/editor/icons/index.ts","../src/editor/table-of-contents/slug.ts","../src/editor/table-of-contents/storage.ts","../src/editor/table-of-contents/extract.ts","../src/editor/table-of-contents/panel.ts","../src/editor/table-of-contents/theme.ts","../src/editor/table-of-contents/extension.ts"],"names":["ThemeEnum","ensureSyntaxTree","syntaxTree","EditorView","EditorSelection","Prec","ViewPlugin"],"mappings":"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","file":"chunk-WFVCG4LD.cjs","sourcesContent":["import { EditorView } from \"@codemirror/view\";\nimport { StyleSpec } from \"style-mod\";\n\n/**\n * Deep merge two objects\n * @param a - First object\n * @param b - Second object\n * @returns Merged object\n */\nexport function deepMerge<T>(a: T, b?: T): T {\n const result = { ...a };\n\n if (!b) {\n return result;\n }\n\n for (const key in b as T) {\n if (b[key] && typeof b[key] === \"object\" && !Array.isArray(b[key]) && typeof a[key] === \"object\") {\n result[key] = deepMerge(a[key], b[key]);\n } else {\n result[key] = b[key];\n }\n }\n\n return result;\n}\n\n/**\n * Theme style\n */\nexport type ThemeStyle = {\n [selector: string]: StyleSpec;\n};\n\n/**\n * Theme Enum\n */\nexport enum ThemeEnum {\n DARK = \"dark\",\n LIGHT = \"light\",\n AUTO = \"auto\",\n}\n\n/**\n * Function to create the themes\n *\n * @param defaultTheme - Default theme -- Always applied\n * @param darkTheme - Dark theme -- Applied when theme is \"dark\" or \"auto\" and system is dark\n * @param lightTheme - Light theme -- Applied when theme is \"light\" or \"auto\" and system is light\n * @returns Theme function\n */\nexport function createTheme({\n default: defaultTheme,\n dark: darkTheme,\n light: lightTheme,\n}: {\n default: ThemeStyle;\n dark?: ThemeStyle;\n light?: ThemeStyle;\n}): (theme: ThemeEnum) => ThemeStyle {\n return (theme: ThemeEnum) => {\n defaultTheme = flattenThemeStyles(defaultTheme);\n darkTheme = flattenThemeStyles(darkTheme || {});\n lightTheme = flattenThemeStyles(lightTheme || {});\n\n let style: ThemeStyle = defaultTheme;\n\n if (theme === ThemeEnum.DARK) {\n style = deepMerge(style, darkTheme);\n }\n\n if (theme === ThemeEnum.LIGHT) {\n style = deepMerge(style, lightTheme);\n }\n\n return style;\n };\n}\n\nexport function flattenThemeStyles(themeStyles: ThemeStyle, parentSelector?: string): ThemeStyle {\n const flattened: ThemeStyle = {};\n\n for (const [selectors, styles] of Object.entries(themeStyles)) {\n for (const selector of selectors.split(\",\")) {\n if (typeof styles === \"object\" && !Array.isArray(styles)) {\n // Flatten nested styles\n const fullSelector = fixSelector(parentSelector ? `${parentSelector} ${selector}` : selector);\n const nestedStyles = flattenThemeStyles(styles as ThemeStyle, fullSelector);\n Object.assign(flattened, nestedStyles);\n } else {\n // Add styles to the flattened object\n if (parentSelector) {\n flattened[parentSelector] = { ...flattened[parentSelector], [selector]: styles };\n } else {\n flattened[selector] = styles as StyleSpec;\n }\n }\n }\n }\n\n return flattened;\n}\n\nexport function fixSelector(selector: string): string {\n // Replace all occurrences of \"&\" with the parent selector\n return selector.replace(/\\s&/g, \"\");\n}\n\n/**\n * Check if cursor is within the given range\n */\nexport function cursorInRange(view: EditorView, from: number, to: number): boolean {\n const selection = view.state.selection.main;\n return selection.from <= to && selection.to >= from;\n}\n\n/**\n * Check if any selection overlaps with the given range\n */\nexport function selectionOverlapsRange(view: EditorView, from: number, to: number): boolean {\n for (const range of view.state.selection.ranges) {\n if (range.from <= to && range.to >= from) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Toggle markdown style on selection or insert markers at cursor\n * @param marker - The markdown marker (e.g., \"**\" for bold, \"*\" for italic)\n * @returns Command function for EditorView\n */\nexport function toggleMarkdownStyle(marker: string): (view: EditorView) => boolean {\n return (view: EditorView) => {\n const { state } = view;\n const { from, to, empty } = state.selection.main;\n\n // Get selected text\n const selectedText = state.sliceDoc(from, to);\n\n // Check if already wrapped with markers\n const markerLen = marker.length;\n const beforeFrom = Math.max(0, from - markerLen);\n const afterTo = Math.min(state.doc.length, to + markerLen);\n const textBefore = state.sliceDoc(beforeFrom, from);\n const textAfter = state.sliceDoc(to, afterTo);\n\n const isWrapped = textBefore === marker && textAfter === marker;\n\n if (isWrapped) {\n // Remove markers\n view.dispatch({\n changes: [\n { from: beforeFrom, to: from, insert: \"\" },\n { from: to, to: afterTo, insert: \"\" },\n ],\n selection: { anchor: beforeFrom, head: beforeFrom + selectedText.length },\n });\n } else if (empty) {\n // No selection - insert markers and place cursor between them\n view.dispatch({\n changes: { from, to, insert: marker + marker },\n selection: { anchor: from + markerLen },\n });\n } else {\n // Wrap selection with markers\n view.dispatch({\n changes: { from, to, insert: marker + selectedText + marker },\n selection: { anchor: from + markerLen, head: to + markerLen },\n });\n }\n\n return true;\n };\n}\n","type IconElementName = \"circle\" | \"line\" | \"path\" | \"rect\";\n\ntype IconElementDefinition = {\n name: IconElementName;\n attrs: Record<string, string>;\n};\n\nexport type MardoraIconName =\n | \"arrow-down\"\n | \"arrow-down-to-line\"\n | \"arrow-left\"\n | \"arrow-left-to-line\"\n | \"arrow-right\"\n | \"arrow-right-to-line\"\n | \"arrow-up\"\n | \"arrow-up-to-line\"\n | \"badge-alert\"\n | \"baseline\"\n | \"bold\"\n | \"code\"\n | \"code-xml\"\n | \"copy\"\n | \"external-link\"\n | \"file\"\n | \"heading-1\"\n | \"heading-2\"\n | \"heading-3\"\n | \"heading-4\"\n | \"heading-5\"\n | \"heading-6\"\n | \"highlighter\"\n | \"image\"\n | \"info\"\n | \"italic\"\n | \"link\"\n | \"lightbulb\"\n | \"list\"\n | \"list-ordered\"\n | \"list-todo\"\n | \"maximize-2\"\n | \"minus\"\n | \"music-2\"\n | \"octagon-alert\"\n | \"play\"\n | \"rotate-ccw\"\n | \"strikethrough\"\n | \"table\"\n | \"table-delete\"\n | \"table-of-contents\"\n | \"text-align-start\"\n | \"text-quote\"\n | \"trash-2\"\n | \"triangle-alert\"\n | \"underline\"\n | \"type\"\n | \"x\";\n\nconst svgNamespace = \"http://www.w3.org/2000/svg\";\n\nconst iconDefinitions: Record<MardoraIconName, IconElementDefinition[]> = {\n \"arrow-down\": [\n { name: \"path\", attrs: { d: \"M12 5v14\" } },\n { name: \"path\", attrs: { d: \"m19 12-7 7-7-7\" } },\n ],\n \"arrow-down-to-line\": [\n { name: \"path\", attrs: { d: \"M19 21H5\" } },\n { name: \"path\", attrs: { d: \"M12 3v14\" } },\n { name: \"path\", attrs: { d: \"m19 10-7 7-7-7\" } },\n ],\n \"arrow-left\": [\n { name: \"path\", attrs: { d: \"M19 12H5\" } },\n { name: \"path\", attrs: { d: \"m12 19-7-7 7-7\" } },\n ],\n \"arrow-left-to-line\": [\n { name: \"path\", attrs: { d: \"M3 5v14\" } },\n { name: \"path\", attrs: { d: \"M21 12H7\" } },\n { name: \"path\", attrs: { d: \"m14 19-7-7 7-7\" } },\n ],\n \"arrow-right\": [\n { name: \"path\", attrs: { d: \"M5 12h14\" } },\n { name: \"path\", attrs: { d: \"m12 5 7 7-7 7\" } },\n ],\n \"arrow-right-to-line\": [\n { name: \"path\", attrs: { d: \"M21 5v14\" } },\n { name: \"path\", attrs: { d: \"M3 12h14\" } },\n { name: \"path\", attrs: { d: \"m10 5 7 7-7 7\" } },\n ],\n \"arrow-up\": [\n { name: \"path\", attrs: { d: \"M12 19V5\" } },\n { name: \"path\", attrs: { d: \"m5 12 7-7 7 7\" } },\n ],\n \"arrow-up-to-line\": [\n { name: \"path\", attrs: { d: \"M5 3h14\" } },\n { name: \"path\", attrs: { d: \"M12 21V7\" } },\n { name: \"path\", attrs: { d: \"m5 14 7-7 7 7\" } },\n ],\n \"badge-alert\": [\n {\n name: \"path\",\n attrs: {\n d: \"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\",\n },\n },\n { name: \"line\", attrs: { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\" } },\n { name: \"line\", attrs: { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\" } },\n ],\n baseline: [\n { name: \"path\", attrs: { d: \"M4 20h16\" } },\n { name: \"path\", attrs: { d: \"m6 16 6-12 6 12\" } },\n { name: \"path\", attrs: { d: \"M8 12h8\" } },\n ],\n bold: [\n {\n name: \"path\",\n attrs: {\n d: \"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\",\n },\n },\n ],\n code: [\n { name: \"path\", attrs: { d: \"m16 18 6-6-6-6\" } },\n { name: \"path\", attrs: { d: \"m8 6-6 6 6 6\" } },\n ],\n \"code-xml\": [\n { name: \"path\", attrs: { d: \"m18 16 4-4-4-4\" } },\n { name: \"path\", attrs: { d: \"m6 8-4 4 4 4\" } },\n { name: \"path\", attrs: { d: \"m14.5 4-5 16\" } },\n ],\n copy: [\n { name: \"rect\", attrs: { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\" } },\n { name: \"path\", attrs: { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" } },\n ],\n \"external-link\": [\n { name: \"path\", attrs: { d: \"M15 3h6v6\" } },\n { name: \"path\", attrs: { d: \"M10 14 21 3\" } },\n { name: \"path\", attrs: { d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" } },\n ],\n file: [\n {\n name: \"path\",\n attrs: {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n },\n },\n { name: \"path\", attrs: { d: \"M14 2v5a1 1 0 0 0 1 1h5\" } },\n ],\n \"heading-1\": [\n { name: \"path\", attrs: { d: \"M4 12h8\" } },\n { name: \"path\", attrs: { d: \"M4 18V6\" } },\n { name: \"path\", attrs: { d: \"M12 18V6\" } },\n { name: \"path\", attrs: { d: \"m17 12 3-2v8\" } },\n ],\n \"heading-2\": [\n { name: \"path\", attrs: { d: \"M4 12h8\" } },\n { name: \"path\", attrs: { d: \"M4 18V6\" } },\n { name: \"path\", attrs: { d: \"M12 18V6\" } },\n { name: \"path\", attrs: { d: \"M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1\" } },\n ],\n \"heading-3\": [\n { name: \"path\", attrs: { d: \"M4 12h8\" } },\n { name: \"path\", attrs: { d: \"M4 18V6\" } },\n { name: \"path\", attrs: { d: \"M12 18V6\" } },\n { name: \"path\", attrs: { d: \"M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2\" } },\n { name: \"path\", attrs: { d: \"M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2\" } },\n ],\n \"heading-4\": [\n { name: \"path\", attrs: { d: \"M12 18V6\" } },\n { name: \"path\", attrs: { d: \"M17 10v3a1 1 0 0 0 1 1h3\" } },\n { name: \"path\", attrs: { d: \"M21 10v8\" } },\n { name: \"path\", attrs: { d: \"M4 12h8\" } },\n { name: \"path\", attrs: { d: \"M4 18V6\" } },\n ],\n \"heading-5\": [\n { name: \"path\", attrs: { d: \"M4 12h8\" } },\n { name: \"path\", attrs: { d: \"M4 18V6\" } },\n { name: \"path\", attrs: { d: \"M12 18V6\" } },\n { name: \"path\", attrs: { d: \"M17 13v-3h4\" } },\n { name: \"path\", attrs: { d: \"M17 17.7c.4.2.8.3 1.3.3 1.5 0 2.7-1.1 2.7-2.5S19.8 13 18.3 13H17\" } },\n ],\n \"heading-6\": [\n { name: \"path\", attrs: { d: \"M4 12h8\" } },\n { name: \"path\", attrs: { d: \"M4 18V6\" } },\n { name: \"path\", attrs: { d: \"M12 18V6\" } },\n { name: \"circle\", attrs: { cx: \"19\", cy: \"16\", r: \"2\" } },\n { name: \"path\", attrs: { d: \"M20 10c-2 2-3 3.5-3 6\" } },\n ],\n highlighter: [\n { name: \"path\", attrs: { d: \"m9 11-6 6v3h9l3-3\" } },\n { name: \"path\", attrs: { d: \"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4\" } },\n ],\n image: [\n { name: \"rect\", attrs: { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\" } },\n { name: \"circle\", attrs: { cx: \"9\", cy: \"9\", r: \"2\" } },\n { name: \"path\", attrs: { d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\" } },\n ],\n info: [\n { name: \"circle\", attrs: { cx: \"12\", cy: \"12\", r: \"10\" } },\n { name: \"path\", attrs: { d: \"M12 16v-4\" } },\n { name: \"path\", attrs: { d: \"M12 8h.01\" } },\n ],\n italic: [\n { name: \"line\", attrs: { x1: \"19\", x2: \"10\", y1: \"4\", y2: \"4\" } },\n { name: \"line\", attrs: { x1: \"14\", x2: \"5\", y1: \"20\", y2: \"20\" } },\n { name: \"line\", attrs: { x1: \"15\", x2: \"9\", y1: \"4\", y2: \"20\" } },\n ],\n link: [\n { name: \"path\", attrs: { d: \"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" } },\n { name: \"path\", attrs: { d: \"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" } },\n ],\n lightbulb: [\n {\n name: \"path\",\n attrs: {\n d: \"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\",\n },\n },\n { name: \"path\", attrs: { d: \"M9 18h6\" } },\n { name: \"path\", attrs: { d: \"M10 22h4\" } },\n ],\n list: [\n { name: \"path\", attrs: { d: \"M3 5h.01\" } },\n { name: \"path\", attrs: { d: \"M3 12h.01\" } },\n { name: \"path\", attrs: { d: \"M3 19h.01\" } },\n { name: \"path\", attrs: { d: \"M8 5h13\" } },\n { name: \"path\", attrs: { d: \"M8 12h13\" } },\n { name: \"path\", attrs: { d: \"M8 19h13\" } },\n ],\n \"list-ordered\": [\n { name: \"path\", attrs: { d: \"M11 5h10\" } },\n { name: \"path\", attrs: { d: \"M11 12h10\" } },\n { name: \"path\", attrs: { d: \"M11 19h10\" } },\n { name: \"path\", attrs: { d: \"M4 4h1v5\" } },\n { name: \"path\", attrs: { d: \"M4 9h2\" } },\n { name: \"path\", attrs: { d: \"M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02\" } },\n ],\n \"list-todo\": [\n { name: \"path\", attrs: { d: \"M13 5h8\" } },\n { name: \"path\", attrs: { d: \"M13 12h8\" } },\n { name: \"path\", attrs: { d: \"M13 19h8\" } },\n { name: \"path\", attrs: { d: \"m3 17 2 2 4-4\" } },\n { name: \"rect\", attrs: { x: \"3\", y: \"4\", width: \"6\", height: \"6\", rx: \"1\" } },\n ],\n \"maximize-2\": [\n { name: \"path\", attrs: { d: \"M15 3h6v6\" } },\n { name: \"path\", attrs: { d: \"m21 3-7 7\" } },\n { name: \"path\", attrs: { d: \"M9 21H3v-6\" } },\n { name: \"path\", attrs: { d: \"m3 21 7-7\" } },\n ],\n minus: [{ name: \"path\", attrs: { d: \"M5 12h14\" } }],\n \"music-2\": [\n { name: \"circle\", attrs: { cx: \"8\", cy: \"18\", r: \"4\" } },\n { name: \"path\", attrs: { d: \"M12 18V2l7 4\" } },\n ],\n \"octagon-alert\": [\n { name: \"path\", attrs: { d: \"M12 16h.01\" } },\n { name: \"path\", attrs: { d: \"M12 8v4\" } },\n {\n name: \"path\",\n attrs: {\n d: \"M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z\",\n },\n },\n ],\n play: [\n {\n name: \"path\",\n attrs: { d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\" },\n },\n ],\n \"rotate-ccw\": [\n { name: \"path\", attrs: { d: \"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" } },\n { name: \"path\", attrs: { d: \"M3 3v5h5\" } },\n ],\n strikethrough: [\n { name: \"path\", attrs: { d: \"M16 4H9a3 3 0 0 0-2.83 4\" } },\n { name: \"path\", attrs: { d: \"M14 12a4 4 0 0 1 0 8H6\" } },\n { name: \"line\", attrs: { x1: \"4\", x2: \"20\", y1: \"12\", y2: \"12\" } },\n ],\n table: [\n { name: \"path\", attrs: { d: \"M12 3v18\" } },\n { name: \"rect\", attrs: { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\" } },\n { name: \"path\", attrs: { d: \"M3 9h18\" } },\n { name: \"path\", attrs: { d: \"M3 15h18\" } },\n ],\n \"table-delete\": [\n { name: \"rect\", attrs: { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\" } },\n { name: \"path\", attrs: { d: \"M3 9h18\" } },\n { name: \"path\", attrs: { d: \"M9 3v18\" } },\n { name: \"path\", attrs: { d: \"m14 14 4 4\" } },\n { name: \"path\", attrs: { d: \"m18 14-4 4\" } },\n ],\n \"table-of-contents\": [\n { name: \"path\", attrs: { d: \"M16 5H3\" } },\n { name: \"path\", attrs: { d: \"M16 12H3\" } },\n { name: \"path\", attrs: { d: \"M16 19H3\" } },\n { name: \"path\", attrs: { d: \"M21 5h.01\" } },\n { name: \"path\", attrs: { d: \"M21 12h.01\" } },\n { name: \"path\", attrs: { d: \"M21 19h.01\" } },\n ],\n \"text-align-start\": [\n { name: \"path\", attrs: { d: \"M21 5H3\" } },\n { name: \"path\", attrs: { d: \"M15 12H3\" } },\n { name: \"path\", attrs: { d: \"M17 19H3\" } },\n ],\n \"text-quote\": [\n { name: \"path\", attrs: { d: \"M17 5H3\" } },\n { name: \"path\", attrs: { d: \"M21 12H8\" } },\n { name: \"path\", attrs: { d: \"M21 19H8\" } },\n { name: \"path\", attrs: { d: \"M3 12v7\" } },\n ],\n \"trash-2\": [\n { name: \"path\", attrs: { d: \"M10 11v6\" } },\n { name: \"path\", attrs: { d: \"M14 11v6\" } },\n { name: \"path\", attrs: { d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\" } },\n { name: \"path\", attrs: { d: \"M3 6h18\" } },\n { name: \"path\", attrs: { d: \"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" } },\n ],\n \"triangle-alert\": [\n { name: \"path\", attrs: { d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" } },\n { name: \"path\", attrs: { d: \"M12 9v4\" } },\n { name: \"path\", attrs: { d: \"M12 17h.01\" } },\n ],\n underline: [\n { name: \"path\", attrs: { d: \"M6 4v6a6 6 0 0 0 12 0V4\" } },\n { name: \"line\", attrs: { x1: \"4\", x2: \"20\", y1: \"20\", y2: \"20\" } },\n ],\n type: [\n { name: \"path\", attrs: { d: \"M12 4v16\" } },\n { name: \"path\", attrs: { d: \"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2\" } },\n { name: \"path\", attrs: { d: \"M9 20h6\" } },\n ],\n x: [\n { name: \"path\", attrs: { d: \"M18 6 6 18\" } },\n { name: \"path\", attrs: { d: \"m6 6 12 12\" } },\n ],\n};\n\nexport function hasMardoraIcon(name: string): name is MardoraIconName {\n return name in iconDefinitions;\n}\n\nexport function createMardoraIcon(name: string): SVGSVGElement | null {\n if (!hasMardoraIcon(name)) return null;\n\n const svg = document.createElementNS(svgNamespace, \"svg\");\n svg.setAttribute(\"xmlns\", svgNamespace);\n svg.setAttribute(\"width\", \"24\");\n svg.setAttribute(\"height\", \"24\");\n svg.setAttribute(\"viewBox\", \"0 0 24 24\");\n svg.setAttribute(\"fill\", \"none\");\n svg.setAttribute(\"stroke\", \"currentColor\");\n svg.setAttribute(\"stroke-width\", \"2\");\n svg.setAttribute(\"stroke-linecap\", \"round\");\n svg.setAttribute(\"stroke-linejoin\", \"round\");\n svg.setAttribute(\"aria-hidden\", \"true\");\n svg.setAttribute(\"focusable\", \"false\");\n\n for (const definition of iconDefinitions[name]) {\n const element = document.createElementNS(svgNamespace, definition.name);\n for (const [attr, value] of Object.entries(definition.attrs)) {\n element.setAttribute(attr, value);\n }\n svg.appendChild(element);\n }\n\n return svg;\n}\n","import type { MardoraTocConfig, ResolvedMardoraTocConfig } from \"./types\";\n\nconst defaultMinWidth = 180;\nconst defaultMaxWidth = 360;\nconst defaultWidth = 240;\n\nexport function clampTocWidth(width: number, config: Pick<ResolvedMardoraTocConfig, \"minWidth\" | \"maxWidth\">): number {\n return Math.min(Math.max(width, config.minWidth), config.maxWidth);\n}\n\nexport function resolveTocConfig(config: MardoraTocConfig = {}): ResolvedMardoraTocConfig {\n const minWidth = Math.max(120, config.minWidth ?? defaultMinWidth);\n const maxWidth = Math.max(minWidth, config.maxWidth ?? defaultMaxWidth);\n const requestedMinLevel = config.minLevel ?? 2;\n const requestedMaxLevel = config.maxLevel ?? 6;\n const minLevel = requestedMinLevel <= requestedMaxLevel ? requestedMinLevel : requestedMaxLevel;\n const maxLevel = requestedMaxLevel >= requestedMinLevel ? requestedMaxLevel : requestedMinLevel;\n const resolved: ResolvedMardoraTocConfig = {\n enabled: config.enabled !== false,\n minLevel,\n maxLevel,\n defaultExpanded: config.defaultExpanded !== false,\n defaultWidth,\n minWidth,\n maxWidth,\n };\n\n if (config.onTocChange) resolved.onTocChange = config.onTocChange;\n if (config.storageKey) resolved.storageKey = config.storageKey;\n resolved.defaultWidth = clampTocWidth(config.defaultWidth ?? defaultWidth, resolved);\n return resolved;\n}\n\nfunction normalizeHeadingText(value: string): string {\n return value\n .trim()\n .toLowerCase()\n .replace(/[^\\p{L}\\p{N}]+/gu, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\nexport function createTocSlugger(): (text: string) => string {\n const seen = new Map<string, number>();\n return (text: string) => {\n const base = normalizeHeadingText(text) || \"heading\";\n const count = (seen.get(base) ?? 0) + 1;\n seen.set(base, count);\n return count === 1 ? base : `${base}-${count}`;\n };\n}\n","import type { TocPanelState, TocStorageAdapter } from \"./types\";\n\nfunction defaultStorage(): TocStorageAdapter | null {\n if (typeof window === \"undefined\") return null;\n return window.localStorage;\n}\n\nexport function readTocPanelState(\n storageKey?: string,\n storage: TocStorageAdapter | null = defaultStorage()\n): TocPanelState | null {\n if (!storageKey || !storage) return null;\n try {\n const raw = storage.getItem(storageKey);\n if (!raw) return null;\n const parsed = JSON.parse(raw) as Partial<TocPanelState>;\n if (typeof parsed.expanded !== \"boolean\" || typeof parsed.width !== \"number\") return null;\n return { expanded: parsed.expanded, width: parsed.width };\n } catch {\n return null;\n }\n}\n\nexport function writeTocPanelState(\n storageKey: string | undefined,\n state: TocPanelState,\n storage: TocStorageAdapter | null = defaultStorage()\n): void {\n if (!storageKey || !storage) return;\n try {\n storage.setItem(storageKey, JSON.stringify({ expanded: state.expanded, width: state.width }));\n } catch {\n // Storage can fail in private mode or restricted host environments.\n }\n}\n","import type { EditorState } from \"@codemirror/state\";\nimport { ensureSyntaxTree, syntaxTree } from \"@codemirror/language\";\nimport type { SyntaxNodeRef } from \"@lezer/common\";\nimport type { MardoraTocConfig, MardoraTocItem, MardoraTocLevel } from \"./types\";\nimport { createTocSlugger, resolveTocConfig } from \"./slug\";\n\nconst headingPattern = /^ATXHeading([1-6])$/;\nconst tocParseTimeout = 100;\n\nfunction headingLevel(node: SyntaxNodeRef): MardoraTocLevel | null {\n const match = headingPattern.exec(node.name);\n if (!match) return null;\n const level = Number(match[1]);\n return level >= 2 && level <= 6 ? (level as MardoraTocLevel) : null;\n}\n\nexport function stripMarkdownHeadingText(text: string): string {\n return text\n .replace(/^#{1,6}\\s*/, \"\")\n .replace(/`([^`]+)`/g, \"$1\")\n .replace(/\\*\\*([^*]+)\\*\\*/g, \"$1\")\n .replace(/\\*([^*]+)\\*/g, \"$1\")\n .replace(/__([^_]+)__/g, \"$1\")\n .replace(/_([^_]+)_/g, \"$1\")\n .replace(/\\[([^\\]]+)\\]\\([^)]+\\)/g, \"$1\")\n .trim();\n}\n\nexport function extractTocItemsFromState(state: EditorState, config: MardoraTocConfig = {}): MardoraTocItem[] {\n const resolved = resolveTocConfig(config);\n const slug = createTocSlugger();\n const items: MardoraTocItem[] = [];\n const tree = ensureSyntaxTree(state, state.doc.length, tocParseTimeout) ?? syntaxTree(state);\n\n tree.iterate({\n enter: (node) => {\n const level = headingLevel(node);\n if (!level || level < resolved.minLevel || level > resolved.maxLevel) return;\n const text = stripMarkdownHeadingText(state.sliceDoc(node.from, node.to));\n if (!text) return;\n items.push({\n id: slug(text),\n level,\n text,\n from: node.from,\n to: node.to,\n active: false,\n });\n },\n });\n\n return items;\n}\n","import { createMardoraIcon } from \"../icons\";\nimport type { MardoraTocItem } from \"./types\";\n\nexport interface TocPanelRenderState {\n expanded: boolean;\n width: number;\n items: MardoraTocItem[];\n}\n\nexport interface TocPanelCallbacks {\n onSelect(item: MardoraTocItem): void;\n onToggle(): void;\n onResizeStart(event: MouseEvent): void;\n}\n\nfunction appendIcon(parent: HTMLElement, name: string): void {\n const icon = createMardoraIcon(name);\n if (icon) parent.appendChild(icon);\n}\n\nfunction createExpandedToggle(callbacks: TocPanelCallbacks): HTMLButtonElement {\n const toggle = document.createElement(\"button\");\n toggle.type = \"button\";\n toggle.className = \"cm-mardora-toc-toggle\";\n toggle.setAttribute(\"aria-label\", \"Toggle table of contents\");\n toggle.textContent = \"‹\";\n toggle.addEventListener(\"click\", callbacks.onToggle);\n return toggle;\n}\n\nfunction createCollapsed(callbacks: TocPanelCallbacks): HTMLElement {\n const button = document.createElement(\"button\");\n button.type = \"button\";\n button.className = \"cm-mardora-toc-collapsed\";\n button.setAttribute(\"aria-label\", \"Open table of contents\");\n appendIcon(button, \"table-of-contents\");\n button.addEventListener(\"click\", callbacks.onToggle);\n return button;\n}\n\nfunction createItem(item: MardoraTocItem, callbacks: TocPanelCallbacks): HTMLButtonElement {\n const button = document.createElement(\"button\");\n button.type = \"button\";\n button.className = item.active ? \"cm-mardora-toc-item cm-mardora-toc-item-active\" : \"cm-mardora-toc-item\";\n button.dataset.mardoraTocId = item.id;\n button.dataset.mardoraTocLevel = String(item.level);\n button.title = item.text;\n button.textContent = item.text;\n button.addEventListener(\"click\", () => callbacks.onSelect(item));\n return button;\n}\n\nexport function createTocPanelElement(state: TocPanelRenderState, callbacks: TocPanelCallbacks): HTMLElement {\n const root = document.createElement(\"aside\");\n root.className = \"cm-mardora-toc\";\n root.dataset.mardoraTocExpanded = String(state.expanded);\n root.style.setProperty(\"--mardora-toc-width\", `${state.width}px`);\n\n const resize = document.createElement(\"div\");\n resize.className = \"cm-mardora-toc-resize\";\n resize.addEventListener(\"mousedown\", callbacks.onResizeStart);\n root.appendChild(resize);\n\n if (!state.expanded) {\n root.appendChild(createCollapsed(callbacks));\n return root;\n }\n\n root.appendChild(createExpandedToggle(callbacks));\n\n const list = document.createElement(\"nav\");\n list.className = \"cm-mardora-toc-list\";\n if (state.items.length === 0) {\n const empty = document.createElement(\"div\");\n empty.className = \"cm-mardora-toc-empty\";\n empty.textContent = \"暂无目录\";\n list.appendChild(empty);\n } else {\n for (const item of state.items) list.appendChild(createItem(item, callbacks));\n }\n root.appendChild(list);\n return root;\n}\n","import { EditorView } from \"@codemirror/view\";\n\nexport const tocTheme = EditorView.baseTheme({\n \".cm-mardora\": {\n position: \"relative\",\n },\n \".cm-mardora .cm-scroller\": {\n boxSizing: \"border-box\",\n paddingRight: \"calc(var(--mardora-toc-layout-width, 0px) + var(--mardora-toc-scrollbar-gutter, 0px))\",\n scrollbarGutter: \"stable\",\n },\n \".cm-mardora .cm-scroller::-webkit-scrollbar-track\": {\n background: \"transparent\",\n },\n \".cm-mardora-toc\": {\n position: \"absolute\",\n top: \"0\",\n right: \"var(--mardora-toc-scrollbar-gutter, 0px)\",\n bottom: \"0\",\n zIndex: \"8\",\n width: \"var(--mardora-toc-width, 240px)\",\n minWidth: \"0\",\n borderLeft: \"1px solid var(--mardora-toc-border, #ececef)\",\n background: \"var(--mardora-toc-bg, transparent)\",\n color: \"var(--mardora-toc-fg, #27272a)\",\n userSelect: \"none\",\n },\n \".cm-mardora-toc[data-mardora-toc-expanded='false']\": {\n width: \"42px\",\n },\n \".cm-mardora-toc-resize\": {\n position: \"absolute\",\n top: \"0\",\n bottom: \"0\",\n left: \"-4px\",\n zIndex: \"2\",\n width: \"8px\",\n cursor: \"col-resize\",\n },\n \".cm-mardora-toc-resize::after\": {\n position: \"absolute\",\n top: \"50%\",\n left: \"3px\",\n width: \"2px\",\n height: \"64px\",\n borderRadius: \"999px\",\n background: \"var(--mardora-toc-handle, #d4d4d8)\",\n opacity: \"0\",\n transform: \"translateY(-50%)\",\n transition: \"opacity 120ms ease\",\n content: \"''\",\n },\n \".cm-mardora-toc:hover .cm-mardora-toc-resize::after, .cm-mardora-toc-resizing .cm-mardora-toc-resize::after\": {\n opacity: \"1\",\n },\n \".cm-mardora-toc-collapsed svg\": {\n width: \"16px\",\n height: \"16px\",\n },\n \".cm-mardora-toc-toggle, .cm-mardora-toc-collapsed, .cm-mardora-toc-item\": {\n border: \"0\",\n background: \"transparent\",\n color: \"inherit\",\n cursor: \"default\",\n font: \"inherit\",\n },\n \".cm-mardora-toc-toggle\": {\n position: \"absolute\",\n top: \"8px\",\n right: \"8px\",\n zIndex: \"1\",\n width: \"28px\",\n height: \"28px\",\n borderRadius: \"6px\",\n color: \"var(--mardora-toc-muted, #71717a)\",\n opacity: \"0.55\",\n transition: \"background 120ms ease, color 120ms ease, opacity 120ms ease\",\n },\n \".cm-mardora-toc-toggle:hover\": {\n color: \"var(--mardora-toc-active, #18181b)\",\n opacity: \"1\",\n },\n \".cm-mardora-toc-toggle:hover, .cm-mardora-toc-collapsed:hover, .cm-mardora-toc-item:hover\": {\n background: \"var(--mardora-toc-hover, #f4f4f5)\",\n },\n \".cm-mardora-toc-collapsed\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"100%\",\n color: \"var(--mardora-toc-muted, #71717a)\",\n },\n \".cm-mardora-toc-list\": {\n overflow: \"auto\",\n height: \"100%\",\n padding: \"12px 10px 16px 18px\",\n scrollbarWidth: \"thin\",\n },\n \".cm-mardora-toc-list::-webkit-scrollbar\": {\n width: \"8px\",\n },\n \".cm-mardora-toc-list::-webkit-scrollbar-track\": {\n background: \"transparent\",\n },\n \".cm-mardora-toc-list::-webkit-scrollbar-thumb\": {\n borderRadius: \"999px\",\n background: \"var(--mardora-toc-scrollbar, #c7c7cc)\",\n },\n \".cm-mardora-toc-item\": {\n display: \"block\",\n width: \"100%\",\n overflow: \"hidden\",\n minHeight: \"30px\",\n padding: \"0 8px\",\n borderLeft: \"2px solid transparent\",\n borderRadius: \"6px\",\n color: \"var(--mardora-toc-muted, #71717a)\",\n lineHeight: \"30px\",\n textAlign: \"left\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n transition: \"background 120ms ease, color 120ms ease\",\n },\n \".cm-mardora-toc-item[data-mardora-toc-level='3']\": { paddingLeft: \"18px\" },\n \".cm-mardora-toc-item[data-mardora-toc-level='4']\": { paddingLeft: \"28px\" },\n \".cm-mardora-toc-item[data-mardora-toc-level='5']\": { paddingLeft: \"38px\" },\n \".cm-mardora-toc-item[data-mardora-toc-level='6']\": { paddingLeft: \"48px\" },\n \".cm-mardora-toc-item-active\": {\n borderLeftColor: \"var(--mardora-toc-active, #18181b)\",\n background: \"var(--mardora-toc-hover, #f4f4f5)\",\n color: \"var(--mardora-toc-active, #18181b)\",\n fontWeight: \"600\",\n },\n \".cm-mardora-toc-empty\": {\n padding: \"12px 8px\",\n color: \"var(--mardora-toc-muted, #71717a)\",\n fontSize: \"13px\",\n },\n \".cm-mardora-toc-resizing\": {\n userSelect: \"none\",\n },\n \"&dark .cm-mardora-toc\": {\n \"--mardora-toc-bg\": \"#18181b\",\n \"--mardora-toc-fg\": \"#f4f4f5\",\n \"--mardora-toc-border\": \"#3f3f46\",\n \"--mardora-toc-handle\": \"#52525b\",\n \"--mardora-toc-hover\": \"#27272a\",\n \"--mardora-toc-muted\": \"#a1a1aa\",\n \"--mardora-toc-active\": \"#f4f4f5\",\n \"--mardora-toc-scrollbar\": \"#52525b\",\n },\n});\n","import { EditorSelection, Extension, Prec } from \"@codemirror/state\";\nimport { EditorView, ViewPlugin, ViewUpdate } from \"@codemirror/view\";\nimport { extractTocItemsFromState } from \"./extract\";\nimport { createTocPanelElement } from \"./panel\";\nimport { clampTocWidth, resolveTocConfig } from \"./slug\";\nimport { readTocPanelState, writeTocPanelState } from \"./storage\";\nimport { tocTheme } from \"./theme\";\nimport type { MardoraTocConfig, MardoraTocItem, ResolvedMardoraTocConfig, TocPanelState } from \"./types\";\n\nfunction sameItems(a: MardoraTocItem[], b: MardoraTocItem[]): boolean {\n return JSON.stringify(a) === JSON.stringify(b);\n}\n\nclass TocViewPlugin {\n private panel: HTMLElement | null = null;\n private config: ResolvedMardoraTocConfig;\n private panelState: TocPanelState;\n private items: MardoraTocItem[] = [];\n private renderFrame: number | null = null;\n private readonly measureKey = {};\n\n constructor(\n private readonly view: EditorView,\n rawConfig: MardoraTocConfig\n ) {\n this.config = resolveTocConfig(rawConfig);\n const stored = readTocPanelState(this.config.storageKey);\n this.panelState = {\n expanded: stored?.expanded ?? this.config.defaultExpanded,\n width: clampTocWidth(stored?.width ?? this.config.defaultWidth, this.config),\n };\n this.view.scrollDOM.addEventListener(\"scroll\", this.handleScroll, { passive: true });\n this.recompute();\n this.scheduleRender();\n this.scheduleActiveMeasure();\n }\n\n update(update: ViewUpdate): void {\n if (update.docChanged) {\n this.recompute();\n return;\n }\n if (update.viewportChanged || update.geometryChanged) this.scheduleActiveMeasure();\n }\n\n destroy(): void {\n this.view.scrollDOM.removeEventListener(\"scroll\", this.handleScroll);\n if (this.renderFrame !== null) {\n this.view.dom.ownerDocument.defaultView?.cancelAnimationFrame(this.renderFrame);\n this.renderFrame = null;\n }\n this.clearLayoutWidth();\n this.panel?.remove();\n this.panel = null;\n }\n\n private readonly handleScroll = (): void => {\n this.scheduleActiveMeasure();\n };\n\n private recompute(): void {\n const next = extractTocItemsFromState(this.view.state, this.config);\n this.items = this.withPreservedActive(next);\n this.config.onTocChange?.(this.items);\n this.render();\n this.scheduleActiveMeasure();\n }\n\n private withPreservedActive(items: MardoraTocItem[]): MardoraTocItem[] {\n if (items.length === 0) return [];\n const previousActive = this.items.find((item) => item.active)?.id;\n const fallbackActiveId = items[0]?.id;\n const activeId =\n previousActive && items.some((item) => item.id === previousActive) ? previousActive : fallbackActiveId;\n return items.map((item) => ({ ...item, active: item.id === activeId }));\n }\n\n private scheduleActiveMeasure(): void {\n if (this.items.length === 0 || !this.view.dom.isConnected) return;\n this.view.requestMeasure({\n key: this.measureKey,\n read: (view) => {\n const viewportTop = view.scrollDOM.getBoundingClientRect().top + 24;\n let activeId = this.items[0]?.id ?? null;\n for (const item of this.items) {\n if (typeof item.from !== \"number\") continue;\n const coords = view.coordsAtPos(item.from);\n if (coords && coords.top <= viewportTop) activeId = item.id;\n }\n return activeId;\n },\n write: (activeId) => {\n if (!activeId) return;\n this.updateActiveItem(activeId);\n },\n });\n }\n\n private updateActiveItem(activeId: string): void {\n const next = this.items.map((item) => ({ ...item, active: item.id === activeId }));\n if (sameItems(next, this.items)) return;\n this.items = next;\n this.config.onTocChange?.(this.items);\n this.render();\n }\n\n private scheduleRender(): void {\n const win = this.view.dom.ownerDocument.defaultView;\n if (!win) {\n this.render();\n return;\n }\n if (this.renderFrame !== null) return;\n this.renderFrame = win.requestAnimationFrame(() => {\n this.renderFrame = null;\n this.render();\n });\n }\n\n private render(): void {\n if (!this.config.enabled) {\n this.clearLayoutWidth();\n this.panel?.remove();\n this.panel = null;\n return;\n }\n this.syncLayoutWidth();\n const nextPanel = createTocPanelElement(\n { expanded: this.panelState.expanded, width: this.panelState.width, items: this.items },\n {\n onSelect: (item) => this.selectItem(item),\n onToggle: () => this.toggle(),\n onResizeStart: (event) => this.startResize(event),\n }\n );\n if (this.panel?.isConnected) {\n this.panel.replaceWith(nextPanel);\n } else {\n this.view.dom.appendChild(nextPanel);\n }\n this.panel = nextPanel;\n }\n\n private selectItem(item: MardoraTocItem): void {\n if (typeof item.from !== \"number\") return;\n this.view.dispatch({\n selection: EditorSelection.cursor(item.from),\n effects: EditorView.scrollIntoView(item.from, { y: \"start\" }),\n });\n this.view.focus();\n this.updateActiveItem(item.id);\n this.scheduleActiveMeasure();\n }\n\n private persistPanelState(): void {\n writeTocPanelState(this.config.storageKey, this.panelState);\n }\n\n private toggle(): void {\n this.panelState = { ...this.panelState, expanded: !this.panelState.expanded };\n this.persistPanelState();\n this.render();\n }\n\n private syncLayoutWidth(): void {\n const layoutWidth = this.panelState.expanded ? this.panelState.width : 42;\n this.view.dom.style.setProperty(\"--mardora-toc-layout-width\", `${layoutWidth}px`);\n this.view.dom.style.setProperty(\"--mardora-toc-scrollbar-gutter\", \"14px\");\n }\n\n private clearLayoutWidth(): void {\n this.view.dom.style.removeProperty(\"--mardora-toc-layout-width\");\n this.view.dom.style.removeProperty(\"--mardora-toc-scrollbar-gutter\");\n }\n\n private startResize(event: MouseEvent): void {\n event.preventDefault();\n const startX = event.clientX;\n const startWidth = this.panelState.width;\n const doc = this.view.dom.ownerDocument;\n doc.body.classList.add(\"cm-mardora-toc-resizing\");\n\n const move = (moveEvent: MouseEvent) => {\n const nextWidth = clampTocWidth(startWidth - (moveEvent.clientX - startX), this.config);\n this.panelState = { ...this.panelState, width: nextWidth };\n this.render();\n };\n const up = () => {\n doc.body.classList.remove(\"cm-mardora-toc-resizing\");\n doc.removeEventListener(\"mousemove\", move);\n doc.removeEventListener(\"mouseup\", up);\n this.persistPanelState();\n };\n\n doc.addEventListener(\"mousemove\", move);\n doc.addEventListener(\"mouseup\", up);\n }\n}\n\nexport function tableOfContents(config: MardoraTocConfig = {}): Extension[] {\n return [tocTheme, Prec.low(ViewPlugin.define((view) => new TocViewPlugin(view, config)))];\n}\n"]}
|