@pstdio/ui 0.17.0 → 0.18.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/dist/{MermaidComponent-BCMQqPqu.js → MermaidComponent-BPiVFNYK.js} +2 -2
- package/dist/{MermaidComponent-BCMQqPqu.js.map → MermaidComponent-BPiVFNYK.js.map} +1 -1
- package/dist/chat-ui.js +2 -2
- package/dist/components/data-table/data-table-column-menu.d.ts +4 -1
- package/dist/components/data-table/data-table-header.d.ts +0 -8
- package/dist/components/data-table/editable-cells-story.d.ts +9 -0
- package/dist/components/diff-viewer/code-editor.d.ts +2 -0
- package/dist/components/diff-viewer/index.d.ts +1 -1
- package/dist/components/diff-viewer/monaco-browser.d.ts +1 -0
- package/dist/components/overlays/searchable-menu-input.d.ts +9 -0
- package/dist/components/param-editor/index.d.ts +5 -2
- package/dist/components/param-editor/inputs/action-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/boolean-input.d.ts +13 -0
- package/dist/components/param-editor/inputs/color-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/date-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/file-upload-input.d.ts +15 -0
- package/dist/components/param-editor/inputs/file-upload-value.d.ts +7 -0
- package/dist/components/param-editor/inputs/horizontal-text-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/markdown-input.d.ts +13 -0
- package/dist/components/param-editor/inputs/number-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/range-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/resource-input.d.ts +2 -0
- package/dist/components/param-editor/inputs/segmented-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/selection-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/selection-menu.d.ts +4 -0
- package/dist/components/param-editor/inputs/text-input.d.ts +1 -0
- package/dist/components/param-editor/param-editor-advanced-field.d.ts +14 -0
- package/dist/components/param-editor/param-editor-control-fixtures.d.ts +24 -0
- package/dist/components/param-editor/param-editor-field.d.ts +2 -0
- package/dist/components/param-editor/param-editor-horizontal.d.ts +2 -2
- package/dist/components/param-editor/param-editor-label.d.ts +1 -0
- package/dist/components/param-editor/param-editor-presentation.d.ts +3 -0
- package/dist/components/param-editor/param-editor.types.d.ts +25 -13
- package/dist/components/param-editor/resolve-param-value.d.ts +2 -0
- package/dist/components/primitives/chip.d.ts +4 -0
- package/dist/components/primitives/index.d.ts +2 -0
- package/dist/components/primitives/resource-badge.d.ts +12 -10
- package/dist/components/rich-text/index.d.ts +1 -0
- package/dist/components/rich-text/lazy-markdown-editor.d.ts +2 -0
- package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
- package/dist/data-table.js +960 -910
- package/dist/data-table.js.map +1 -1
- package/dist/diff.js +370 -366
- package/dist/diff.js.map +1 -1
- package/dist/font/css/prompt-studio-icons.css +690 -0
- package/dist/font/prompt-studio-icons.eot +0 -0
- package/dist/font/prompt-studio-icons.svg +1 -0
- package/dist/font/prompt-studio-icons.ttf +0 -0
- package/dist/font/prompt-studio-icons.woff +0 -0
- package/dist/font/prompt-studio-icons.woff2 +0 -0
- package/dist/index.js +895 -947
- package/dist/index.js.map +1 -1
- package/dist/{kanban-renderer-toolbar-B9ro-9z1.js → kanban-renderer-toolbar-Db1mIWWd.js} +3 -3
- package/dist/{kanban-renderer-toolbar-B9ro-9z1.js.map → kanban-renderer-toolbar-Db1mIWWd.js.map} +1 -1
- package/dist/kanban-renderer.js +831 -817
- package/dist/kanban-renderer.js.map +1 -1
- package/dist/lazy-markdown-editor-DwhqQ-NN.js +26 -0
- package/dist/lazy-markdown-editor-DwhqQ-NN.js.map +1 -0
- package/dist/{list-row-YRUxEcy3.js → list-row-BYWwcbGK.js} +286 -271
- package/dist/list-row-BYWwcbGK.js.map +1 -0
- package/dist/markdown-DDd2ESoH.js +743 -0
- package/dist/markdown-DDd2ESoH.js.map +1 -0
- package/dist/markdown-editor-CYVkzt8t.js +741 -0
- package/dist/markdown-editor-CYVkzt8t.js.map +1 -0
- package/dist/monaco-browser-CO0NxK_Z.js +19 -0
- package/dist/monaco-browser-CO0NxK_Z.js.map +1 -0
- package/dist/param-editor-BCZOw5Gt.js +140 -0
- package/dist/param-editor-BCZOw5Gt.js.map +1 -0
- package/dist/param-editor-field-ZzZwgjZ_.js +2094 -0
- package/dist/param-editor-field-ZzZwgjZ_.js.map +1 -0
- package/dist/resource-badge-CuItchgL.js +98 -0
- package/dist/resource-badge-CuItchgL.js.map +1 -0
- package/dist/rich-message--eRzjWYK.js +730 -0
- package/dist/rich-message--eRzjWYK.js.map +1 -0
- package/dist/rich-text.js +114 -827
- package/dist/rich-text.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/theme/primitives/fonts.d.ts +3 -0
- package/dist/theme/recipes/badge.d.ts +8 -0
- package/dist/theme/recipes/color-picker.d.ts +18 -1
- package/dist/theme/recipes/switch.d.ts +17 -0
- package/dist/{theme-CNhnbvcE.js → theme-poQlUgt0.js} +284 -156
- package/dist/theme-poQlUgt0.js.map +1 -0
- package/dist/theme.js +1 -1
- package/dist/{tree-list-CZHLAURU.js → tree-list-BAja2eXU.js} +2 -2
- package/dist/{tree-list-CZHLAURU.js.map → tree-list-BAja2eXU.js.map} +1 -1
- package/package.json +2 -1
- package/dist/components/param-editor/inputs/file-accept.d.ts +0 -22
- package/dist/components/param-editor/inputs/file-drop-input.d.ts +0 -14
- package/dist/list-row-YRUxEcy3.js.map +0 -1
- package/dist/param-editor-CYZJbmKu.js +0 -933
- package/dist/param-editor-CYZJbmKu.js.map +0 -1
- package/dist/param-editor-read-only-field-DgtLqcFa.js +0 -925
- package/dist/param-editor-read-only-field-DgtLqcFa.js.map +0 -1
- package/dist/prism-BXb57lxL.js +0 -125
- package/dist/prism-BXb57lxL.js.map +0 -1
- package/dist/resource-badge-qCWHP-wQ.js +0 -99
- package/dist/resource-badge-qCWHP-wQ.js.map +0 -1
- package/dist/rich-message-DBf_5YlW.js +0 -1450
- package/dist/rich-message-DBf_5YlW.js.map +0 -1
- package/dist/theme-CNhnbvcE.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-DDd2ESoH.js","sources":["../src/components/rich-text/shared/components/content-editable.tsx","../src/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkNode.tsx","../src/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.ts","../src/components/rich-text/theme/rich-text-theme.tsx","../src/components/rich-text/shared/components/default-rich-text-components.tsx","../src/components/rich-text/shared/nodes/DataTableNode.tsx","../src/components/rich-text/shared/plugins/EquationPlugin/EquationNode.tsx","../src/components/rich-text/shared/plugins/EquationPlugin/EquationPlugin.tsx","../src/components/rich-text/shared/plugins/HorizontalRulePlugin/HorizontalRuleNode.ts","../src/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.tsx","../src/components/rich-text/shared/plugins/HorizontalRulePlugin/horizontalRule.ts","../src/components/rich-text/shared/transformers/markdown-transformers.ts","../src/components/rich-text/shared/editor-config.ts","../src/components/rich-text/shared/plugins/CodePlugin/CodeBlockPlugin.tsx","../src/components/rich-text/shared/plugins/CodePlugin/CodeHighlightingPlugin.tsx","../src/components/rich-text/shared/plugins/ToggleEditablePlugin.tsx","../src/components/rich-text/shared/plugins/TreeViewPlugin/TreeViewPlugin.tsx","../src/components/rich-text/utils/markdown.ts"],"sourcesContent":["import { Box, chakra } from \"@chakra-ui/react\";\nimport { ContentEditable as LexicalContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nconst StyledEditable = chakra(LexicalContentEditable);\n\ninterface ContentEditableProps {\n onRef?: (elem: HTMLDivElement) => void;\n fullWidth?: boolean;\n padding?: string;\n isRichMessage?: boolean;\n scrollable?: boolean;\n}\n\nexport function ContentEditable({\n onRef,\n fullWidth = false,\n padding,\n isRichMessage = false,\n scrollable = true,\n}: ContentEditableProps) {\n const editor = (\n <Box ref={onRef} width=\"100%\" minH=\"100%\" padding={padding}>\n <StyledEditable\n data-testid=\"content-editable\"\n height=\"fit-content\"\n minH=\"100%\"\n width=\"100%\"\n maxWidth={fullWidth ? \"100%\" : \"45rem\"}\n marginInline={fullWidth ? \"0\" : \"auto\"}\n textStyle=\"paragraph/M/regular\"\n fontSize=\"calc(var(--chakra-font-sizes-md) * var(--rich-text-font-scale))\"\n position=\"relative\"\n outline=\"none\"\n />\n </Box>\n );\n\n if (!scrollable) return editor;\n\n return (\n <ScrollArea\n className=\"rich-text\"\n data-rich-message={isRichMessage ? \"true\" : undefined}\n height=\"100%\"\n minH=\"0\"\n position=\"relative\"\n contentProps={{ width: \"100%\", minH: \"100%\" }}\n >\n {editor}\n </ScrollArea>\n );\n}\n","import { Box } from \"@chakra-ui/react\";\nimport {\n DecoratorNode,\n type EditorConfig,\n type LexicalEditor,\n type LexicalNode,\n type NodeKey,\n type SerializedLexicalNode,\n type Spread,\n} from \"lexical\";\nimport type { ReactElement } from \"react\";\nimport { ResourceBadge } from \"@/components/primitives/resource-badge\";\n\nexport type SerializedReferenceLinkNode = Spread<\n {\n href: string;\n label?: string;\n },\n SerializedLexicalNode\n>;\n\nexport class ReferenceLinkNode extends DecoratorNode<ReactElement> {\n __href: string;\n __label?: string;\n\n static getType(): string {\n return \"reference-link\";\n }\n\n static clone(node: ReferenceLinkNode): ReferenceLinkNode {\n return new ReferenceLinkNode(node.__href, node.__label, node.__key);\n }\n\n constructor(href: string, label?: string, key?: NodeKey) {\n super(key);\n this.__href = href;\n this.__label = label;\n }\n\n createDOM(_config: EditorConfig, _editor: LexicalEditor): HTMLElement {\n return document.createElement(\"span\");\n }\n\n updateDOM(_prevNode: ReferenceLinkNode, _dom: HTMLElement, _config: EditorConfig): boolean {\n return false;\n }\n\n getTextContent(): string {\n const label = this.__label ?? this.__href;\n return `{{link('${label}')}}`;\n }\n\n exportJSON(): SerializedReferenceLinkNode {\n return {\n type: ReferenceLinkNode.getType(),\n version: 1,\n href: this.__href,\n label: this.__label,\n };\n }\n\n static importJSON(serializedNode: SerializedReferenceLinkNode): ReferenceLinkNode {\n return $createReferenceLinkNode(serializedNode.href, serializedNode.label);\n }\n\n decorate(_editor: LexicalEditor, _config: EditorConfig): ReactElement {\n const href = this.__href;\n const fileName = href.split(\"/\").pop();\n const label = fileName || \"unknown\";\n const isExternal = /^https?:\\/\\//i.test(href);\n const isProjectFile = /^#?\\$PROJECT\\//i.test(href);\n\n return (\n <Box width=\"fit-content\" display=\"inline-block\">\n <ResourceBadge\n fileName={label}\n onSelect={() => {\n if (isExternal) {\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n } else if (isProjectFile) {\n const projectPath = href.replace(/^#?\\$PROJECT\\//i, \"\");\n const event = new CustomEvent(\"ui:open-project-file\", { detail: projectPath });\n window.dispatchEvent(event);\n } else {\n window.location.assign(href);\n }\n }}\n />\n </Box>\n );\n }\n}\n\nexport function $createReferenceLinkNode(href: string, label?: string): ReferenceLinkNode {\n return new ReferenceLinkNode(href, label);\n}\n\nexport function $isReferenceLinkNode(node: LexicalNode | null | undefined): node is ReferenceLinkNode {\n return node instanceof ReferenceLinkNode;\n}\n","import type { TextMatchTransformer } from \"@lexical/markdown\";\nimport { $createReferenceLinkNode, $isReferenceLinkNode, ReferenceLinkNode } from \"./ReferenceLinkNode\";\n\n// Matches {{link('xxx')}} or {{ link(\"xxx\") }}\nconst LINK_REGEXP = /\\{\\{\\s*link\\((['\"])([^'\"\\s]+)\\1\\)\\s*\\}\\}/;\n\nexport const REFERENCE_LINK_TRANSFORMER: TextMatchTransformer = {\n dependencies: [ReferenceLinkNode],\n export: (node) => {\n if ($isReferenceLinkNode(node)) {\n const href = (node as ReferenceLinkNode).__href;\n const label = (node as ReferenceLinkNode).__label ?? href;\n // Export back to token form so markdown roundtrips\n if (label) {\n return `{{link('${label}')}}`;\n }\n return `{{link('${href}')}}`;\n }\n return null;\n },\n regExp: LINK_REGEXP,\n importRegExp: LINK_REGEXP,\n replace: (textNode, match) => {\n const value = match[2];\n // For now we assume value is both label and href; if it looks like a URL, use as href.\n const looksLikeUrl = /^(https?:\\/\\/|\\/)/i.test(value);\n const href = looksLikeUrl ? value : `#${value}`;\n const label = value;\n textNode.replace($createReferenceLinkNode(href, label));\n },\n type: \"text-match\",\n};\n","import type { EditorThemeClasses } from \"lexical\";\n\nimport \"./rich-text-theme.css\";\n\nconst theme: EditorThemeClasses = {\n code: \"rich-text__code\",\n codeHighlight: {\n atrule: \"rich-text__tokenAttr\",\n attr: \"rich-text__tokenAttr\",\n boolean: \"rich-text__tokenProperty\",\n builtin: \"rich-text__tokenSelector\",\n cdata: \"rich-text__tokenComment\",\n char: \"rich-text__tokenSelector\",\n class: \"rich-text__tokenFunction\",\n \"class-name\": \"rich-text__tokenFunction\",\n comment: \"rich-text__tokenComment\",\n constant: \"rich-text__tokenProperty\",\n deleted: \"rich-text__tokenProperty\",\n doctype: \"rich-text__tokenComment\",\n entity: \"rich-text__tokenOperator\",\n function: \"rich-text__tokenFunction\",\n important: \"rich-text__tokenVariable\",\n inserted: \"rich-text__tokenSelector\",\n keyword: \"rich-text__tokenAttr\",\n namespace: \"rich-text__tokenVariable\",\n number: \"rich-text__tokenProperty\",\n operator: \"rich-text__tokenOperator\",\n prolog: \"rich-text__tokenComment\",\n property: \"rich-text__tokenProperty\",\n punctuation: \"rich-text__tokenPunctuation\",\n regex: \"rich-text__tokenVariable\",\n selector: \"rich-text__tokenSelector\",\n string: \"rich-text__tokenSelector\",\n symbol: \"rich-text__tokenProperty\",\n tag: \"rich-text__tokenProperty\",\n url: \"rich-text__tokenOperator\",\n variable: \"rich-text__tokenVariable\",\n },\n embedBlock: {\n base: \"rich-text__embedBlock\",\n focus: \"rich-text__embedBlockFocus\",\n },\n list: {\n checklist: \"rich-text__checklist\",\n listitem: \"rich-text__listItem\",\n listitemChecked: \"rich-text__listItemChecked\",\n listitemUnchecked: \"rich-text__listItemUnchecked\",\n nested: {\n listitem: \"rich-text__nestedListItem\",\n },\n olDepth: [\"rich-text__ol1\", \"rich-text__ol2\", \"rich-text__ol3\", \"rich-text__ol4\", \"rich-text__ol5\"],\n ol: \"rich-text__ol\",\n ul: \"rich-text__ul\",\n },\n heading: {\n h1: \"rich-text__h1\",\n h2: \"rich-text__h2\",\n h3: \"rich-text__h3\",\n },\n paragraph: \"rich-text__p\",\n text: {\n underline: \"rich-text__textUnderline\",\n italic: \"rich-text__textItalic\",\n code: \"rich-text__textCode\",\n },\n link: \"rich-text__link\",\n quote: \"rich-text__quote\",\n reference: \"rich-text__reference\",\n table: \"rich-text__table\",\n tableCell: \"rich-text__tableCell\",\n tableRow: \"rich-text__tableRow\",\n tableCellHeader: \"rich-text__tableCellHeader\",\n layoutContainer: \"rich-text__layoutContainer\",\n layoutItem: \"rich-text__layoutItem\",\n draggableBlockDemo: {\n row: \"rich-text__row\",\n content: \"rich-text__content\",\n },\n};\n\nexport default theme;\n","import { Box, Table, Text, Textarea } from \"@chakra-ui/react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport type { CodeEditorProps, DataTableProps } from \"../types/rich-text-components\";\n\nconst scaledSmallFontSize = \"calc(var(--chakra-font-sizes-sm) * var(--rich-text-font-scale))\";\n\nconst formatValue = (value: unknown) => {\n if (value === null || value === undefined) return \"-\";\n if (typeof value === \"string\") return value.length ? value : \"-\";\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value).toUpperCase();\n if (value instanceof Date) return value.toISOString();\n return JSON.stringify(value);\n};\n\nexport const DefaultRichTextCodeEditor = (props: CodeEditorProps) => {\n const { defaultCode = \"\", isEditable = false, showLineNumbers = false, disableScroll = false } = props;\n\n if (isEditable) {\n return (\n <Textarea\n defaultValue={defaultCode}\n fontFamily=\"mono\"\n fontSize={scaledSmallFontSize}\n resize=\"vertical\"\n minHeight=\"100%\"\n />\n );\n }\n\n const lines = showLineNumbers ? defaultCode.split(\"\\n\") : [defaultCode];\n\n const codeBlock = (\n <Box\n as=\"pre\"\n margin={0}\n padding=\"sm\"\n fontFamily=\"mono\"\n fontSize={scaledSmallFontSize}\n lineHeight=\"1.5\"\n background=\"bg.code\"\n borderRadius=\"md\"\n width=\"100%\"\n overflowY={disableScroll ? \"hidden\" : undefined}\n >\n {showLineNumbers ? (\n <Box as=\"code\" display=\"grid\" gridTemplateColumns=\"auto 1fr\" columnGap=\"sm\">\n {lines.map((line, index) => (\n <Box as=\"span\" key={`${index}-${line}`} display=\"contents\">\n <Text as=\"span\" color=\"fg.muted\" textAlign=\"right\" fontSize=\"inherit\">\n {index + 1}\n </Text>\n <Text as=\"span\" fontSize=\"inherit\">\n {line.length ? line : \" \"}\n </Text>\n </Box>\n ))}\n </Box>\n ) : (\n <Box as=\"code\">{defaultCode}</Box>\n )}\n </Box>\n );\n\n if (disableScroll) return codeBlock;\n\n return (\n <ScrollArea width=\"100%\" background=\"bg.code\" borderRadius=\"md\" showHorizontalScrollbar>\n {codeBlock}\n </ScrollArea>\n );\n};\n\nexport const DefaultRichTextDataTable = (props: DataTableProps) => {\n const { data, fullWidth = false, noBorder = false, hiddenColumns = [] } = props;\n\n if (!data.length) {\n return (\n <Box padding=\"sm\" borderWidth={noBorder ? \"0\" : \"1px\"} borderColor=\"border.subtle\">\n <Text textStyle=\"label/S/regular\" fontSize={scaledSmallFontSize} color=\"fg.muted\">\n No data\n </Text>\n </Box>\n );\n }\n\n const hiddenSet = new Set(hiddenColumns);\n const columns = Object.keys(data[0] ?? {}).filter((key) => !hiddenSet.has(key));\n\n return (\n <ScrollArea maxWidth=\"100%\" showHorizontalScrollbar showVerticalScrollbar={false}>\n <Table.Root\n size=\"sm\"\n width={fullWidth ? \"100%\" : \"fit-content\"}\n borderWidth={noBorder ? \"0\" : \"1px\"}\n borderColor=\"border.subtle\"\n >\n <Table.Header>\n <Table.Row background=\"bg.muted\">\n {columns.map((column) => (\n <Table.ColumnHeader key={column} textTransform=\"none\" paddingX=\"xs\" paddingY=\"2xs\">\n <Text textStyle=\"label/S/medium\" fontSize={scaledSmallFontSize}>\n {column}\n </Text>\n </Table.ColumnHeader>\n ))}\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {data.map((row, rowIndex) => (\n <Table.Row key={`${rowIndex}-${columns.join(\"-\")}`}>\n {columns.map((column) => (\n <Table.Cell key={`${rowIndex}-${column}`} paddingX=\"xs\" paddingY=\"2xs\">\n <Text textStyle=\"paragraph/S/regular\" fontSize={scaledSmallFontSize}>\n {formatValue(row[column])}\n </Text>\n </Table.Cell>\n ))}\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Root>\n </ScrollArea>\n );\n};\n","import { DecoratorNode, type NodeKey, type SerializedLexicalNode, type Spread } from \"lexical\";\nimport type React from \"react\";\nimport { DefaultRichTextDataTable } from \"../components/default-rich-text-components\";\nimport type { RowData } from \"../types/rich-text-components\";\n\nexport type { RowData } from \"../types/rich-text-components\";\n\nexport class DataTableNode extends DecoratorNode<React.JSX.Element> {\n __data: RowData[];\n\n static getType() {\n return \"data_table\";\n }\n\n static clone(node: DataTableNode) {\n return new DataTableNode(node.__data, node.__key);\n }\n\n constructor(data: RowData[], key?: NodeKey) {\n super(key);\n this.__data = data;\n }\n\n getData(): RowData[] {\n return this.__data;\n }\n\n createDOM(): HTMLElement {\n return document.createElement(\"div\");\n }\n\n updateDOM(): boolean {\n return false;\n }\n\n decorate() {\n return <DefaultRichTextDataTable fullWidth isReadOnly data={this.__data} />;\n }\n\n exportJSON(): SerializedDataTableNode {\n return {\n type: \"data_table\",\n version: 1,\n data: this.__data,\n };\n }\n\n static importJSON(json: SerializedDataTableNode) {\n return new DataTableNode(json.data);\n }\n\n getTextContent(): string {\n // Convert table data to a readable text representation\n if (!this.__data.length) return \"\";\n\n const headers = Object.keys(this.__data[0]);\n const headerRow = headers.join(\" | \");\n const separator = headers.map(() => \"---\").join(\" | \");\n const dataRows = this.__data.map((row) => headers.map((header) => String(row[header] || \"\")).join(\" | \"));\n\n return [headerRow, separator, ...dataRows].join(\"\\n\");\n }\n}\n\nexport type SerializedDataTableNode = Spread<{ data: RowData[] }, SerializedLexicalNode>;\n\nexport function $createDataTableNode(data: RowData[]) {\n return new DataTableNode(data);\n}\n\nexport function $isDataTableNode(node: unknown): node is DataTableNode {\n return node instanceof DataTableNode;\n}\n","import katex from \"katex\";\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n LexicalNode,\n NodeKey,\n SerializedLexicalNode,\n Spread,\n} from \"lexical\";\nimport { $applyNodeReplacement, DecoratorNode, type DOMExportOutput } from \"lexical\";\nimport * as React from \"react\";\nimport { Suspense } from \"react\";\n\nconst EquationComponent = React.lazy(() => import(\"./EquationComponent\"));\n\nexport type SerializedEquationNode = Spread<\n {\n equation: string;\n inline: boolean;\n },\n SerializedLexicalNode\n>;\n\nfunction $convertEquationElement(domNode: HTMLElement): null | DOMConversionOutput {\n let equation = domNode.getAttribute(\"data-lexical-equation\");\n const inline = domNode.getAttribute(\"data-lexical-inline\") === \"true\";\n\n // Decode the equation from base64\n equation = atob(equation || \"\");\n\n if (equation) {\n const node = $createEquationNode(equation, inline);\n return { node };\n }\n\n return null;\n}\n\nexport class EquationNode extends DecoratorNode<React.ReactNode> {\n __equation: string;\n __inline: boolean;\n\n static getType(): string {\n return \"equation\";\n }\n\n static clone(node: EquationNode): EquationNode {\n return new EquationNode(node.__equation, node.__inline, node.__key);\n }\n\n constructor(equation: string, inline?: boolean, key?: NodeKey) {\n super(key);\n this.__equation = equation;\n this.__inline = inline ?? false;\n }\n\n static importJSON(serializedNode: SerializedEquationNode): EquationNode {\n return $createEquationNode(serializedNode.equation, serializedNode.inline);\n }\n\n exportJSON(): SerializedEquationNode {\n return {\n equation: this.getEquation(),\n inline: this.__inline,\n type: \"equation\",\n version: 1,\n };\n }\n\n createDOM(_config: EditorConfig): HTMLElement {\n const element = document.createElement(this.__inline ? \"span\" : \"div\");\n\n // EquationNodes should implement `user-action:none` in their CSS to avoid issues with deletion on Android.\n element.className = \"editor-equation\";\n return element;\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(this.__inline ? \"span\" : \"div\");\n\n // Encode the equation as base64 to avoid issues with special characters\n const equation = btoa(this.__equation);\n element.setAttribute(\"data-lexical-equation\", equation);\n element.setAttribute(\"data-lexical-inline\", `${this.__inline}`);\n katex.render(this.__equation, element, {\n displayMode: !this.__inline, // true === block display //\n errorColor: \"#cc0000\",\n output: \"html\",\n strict: \"warn\",\n throwOnError: false,\n trust: false,\n });\n\n return { element };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n div: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-equation\")) {\n return null;\n }\n\n return {\n conversion: $convertEquationElement,\n priority: 2,\n };\n },\n span: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-equation\")) {\n return null;\n }\n\n return {\n conversion: $convertEquationElement,\n priority: 1,\n };\n },\n };\n }\n\n updateDOM(prevNode: EquationNode): boolean {\n // If the inline property changes, replace the element\n return this.__inline !== prevNode.__inline;\n }\n\n getTextContent(): string {\n return this.__equation;\n }\n\n getEquation(): string {\n return this.__equation;\n }\n\n setEquation(equation: string): void {\n const writable = this.getWritable();\n writable.__equation = equation;\n }\n\n isInline(): boolean {\n return this.__inline;\n }\n\n decorate() {\n return (\n <Suspense fallback={null}>\n <EquationComponent equation={this.__equation} inline={this.__inline} />\n </Suspense>\n );\n }\n}\n\nexport function $createEquationNode(equation = \"\", inline = false): EquationNode {\n const equationNode = new EquationNode(equation, inline);\n return $applyNodeReplacement(equationNode);\n}\n\nexport function $isEquationNode(node: LexicalNode | null | undefined): node is EquationNode {\n return node instanceof EquationNode;\n}\n","import \"./EquationPlugin.css\";\n\nimport type { MultilineElementTransformer, TextMatchTransformer } from \"@lexical/markdown\";\nimport { $createEquationNode, $isEquationNode, EquationNode } from \"./EquationNode.tsx\";\n\nexport const EQUATION_INLINE: TextMatchTransformer = {\n dependencies: [EquationNode],\n export: (node) => {\n if ($isEquationNode(node) && node.isInline()) {\n return `\\\\( ${node.getEquation().trim()} \\\\)`;\n }\n return null;\n },\n importRegExp: /\\\\\\((.*?)\\\\\\)/,\n regExp: /\\\\\\((.*?)\\\\\\)/,\n replace: (textNode, match) => {\n const equationNode = $createEquationNode(match[1].trim(), true);\n textNode.replace(equationNode);\n },\n type: \"text-match\",\n};\n\nexport const EQUATION_MULTILINE: MultilineElementTransformer = {\n dependencies: [EquationNode],\n regExpStart: /\\\\\\[/,\n regExpEnd: /\\\\]/,\n export: (node) => {\n if ($isEquationNode(node) && !node.isInline()) {\n return `\\\\[ ${node.getEquation().trim()} \\\\]`;\n }\n return null;\n },\n replace: (rootNode, _children, _startMatch, _endMatch, linesInBetween) => {\n if (linesInBetween) {\n rootNode.append($createEquationNode(linesInBetween.join(\" \"), false));\n return true;\n }\n return false;\n },\n type: \"multiline-element\",\n};\n\nexport function EquationPlugin(): null {\n return null;\n}\n","import {\n type EditorConfig,\n ElementNode,\n type LexicalEditor,\n type LexicalNode,\n type SerializedElementNode,\n type Spread,\n} from \"lexical\";\n\nexport type SerializedHRNode = Spread<SerializedElementNode, SerializedElementNode>;\n\nexport class HRNode extends ElementNode {\n static getType() {\n return \"hr\";\n }\n\n static clone(node: HRNode) {\n return new HRNode(node?.__key);\n }\n\n static importJSON(_serializedNode: SerializedHRNode) {\n return $createHRNode();\n }\n\n exportJSON(): SerializedHRNode {\n return {\n ...super.exportJSON(),\n };\n }\n\n createDOM(_config: EditorConfig, _editor: LexicalEditor): HTMLElement {\n const element = document.createElement(\"hr\");\n element.style = \"margin: 2rem 0;\";\n return element;\n }\n\n updateDOM(_prevNode: unknown, _dom: HTMLElement, _config: EditorConfig): boolean {\n return false;\n }\n\n decorate(_editor: LexicalEditor) {\n return null;\n }\n}\n\nexport function $createHRNode(): HRNode {\n return new HRNode();\n}\n\nexport function $isHRNode(node: LexicalNode | null | undefined): node is HRNode {\n return node instanceof HRNode;\n}\n","import type { LexicalNode, NodeKey, SerializedLexicalNode } from \"lexical\";\nimport { DecoratorNode } from \"lexical\";\nimport type { ReactNode } from \"react\";\nimport { lazy, Suspense } from \"react\";\n\nconst MermaidComponent = lazy(() => import(\"./MermaidComponent\"));\n\nexport interface SerializedMermaidNode extends SerializedLexicalNode {\n type: \"mermaid\";\n code: string;\n version: 1;\n}\n\nexport class MermaidNode extends DecoratorNode<ReactNode> {\n __code: string;\n\n static getType() {\n return \"mermaid\";\n }\n\n static clone(node: MermaidNode) {\n return new MermaidNode(node.__code, node.__key);\n }\n\n constructor(code: string, key?: NodeKey) {\n super(key);\n this.__code = code;\n }\n\n createDOM() {\n return document.createElement(\"div\");\n }\n\n updateDOM() {\n return false;\n }\n\n static importJSON(serializedNode: SerializedMermaidNode): MermaidNode {\n return new MermaidNode(serializedNode.code);\n }\n\n exportJSON(): SerializedMermaidNode {\n return {\n type: \"mermaid\",\n code: this.__code,\n version: 1,\n };\n }\n\n getTextContent() {\n return `\\`\\`\\`mermaid\\n${this.__code}\\n\\`\\`\\``;\n }\n\n getCode() {\n return this.__code;\n }\n\n setCode(code: string) {\n const writable = this.getWritable();\n writable.__code = code;\n }\n\n decorate() {\n return (\n <Suspense fallback={null}>\n <MermaidComponent code={this.__code} nodeKey={this.__key} />\n </Suspense>\n );\n }\n}\n\nexport function $isMermaidNode(node: LexicalNode | null | undefined): node is MermaidNode {\n return node instanceof MermaidNode;\n}\n","import type { ElementTransformer } from \"@lexical/markdown\";\nimport type { LexicalNode } from \"lexical\";\nimport { $createHRNode, $isHRNode, HRNode } from \"./HorizontalRuleNode\";\n\nexport const HR: ElementTransformer = {\n dependencies: [HRNode],\n export: (node: LexicalNode) => {\n return $isHRNode(node) ? \"***\" : null;\n },\n regExp: /^(---|\\*\\*\\*|___)\\s?$/,\n replace: (parentNode) => {\n const line = $createHRNode();\n parentNode.replace(line);\n },\n type: \"element\",\n};\n","import {\n $createAutoLinkNode,\n $createLinkNode,\n $isAutoLinkNode,\n $isLinkNode,\n AutoLinkNode,\n LinkNode,\n} from \"@lexical/link\";\nimport type { ElementTransformer, TextMatchTransformer } from \"@lexical/markdown\";\nimport { $createTextNode, TextNode } from \"lexical\";\nimport { $createDataTableNode, $isDataTableNode, type RowData } from \"../nodes/DataTableNode\";\nimport { HR } from \"../plugins/HorizontalRulePlugin/horizontalRule\";\n\nexport const TABLE: ElementTransformer = {\n dependencies: [],\n export: (node, _traverseChildren) => {\n if ($isDataTableNode(node)) {\n const data = node.getData();\n\n if (!data.length) return \"\";\n\n const headers = Object.keys(data[0]);\n const headerRow = headers.join(\" | \");\n const separator = headers.map(() => \"---\").join(\" | \");\n const dataRows = data.map((row) => headers.map((header) => String(row[header] || \"\")).join(\" | \"));\n\n return [`| ${headerRow} |`, `| ${separator} |`, ...dataRows.map((row) => `| ${row} |`)].join(\"\\n\");\n }\n\n return null;\n },\n regExp: /^\\s*(\\|.+\\|)\\s*$/,\n replace: (parentNode, _children, match, _isImport) => {\n const previousNode = parentNode.getPreviousSibling();\n const isTableDelimiter = /^\\|?\\s*:?-{3,}:?\\s*(?:\\|\\s*:?-{3,}:?\\s*)*\\|?$/gm.test(match[0]);\n\n // if it is a delimiter, remove it\n if (isTableDelimiter) {\n parentNode.remove();\n return;\n }\n\n // Parse current row\n const cells = match[0]\n .split(\"|\")\n .slice(1, -1)\n .map((cell) => cell.trim());\n\n if (previousNode?.getType() === \"data_table\" && $isDataTableNode(previousNode)) {\n // Add row to existing table\n const existingData = previousNode.getData();\n const newRow: RowData = {};\n\n // Check if we have a placeholder row with empty values (created from headers)\n const isPlaceholderRow =\n existingData.length === 1 && Object.values(existingData[0]).every((value) => value === \"\");\n\n // Get headers from existing data structure\n const headers = existingData.length > 0 ? Object.keys(existingData[0]) : cells.map((_, index) => `col_${index}`);\n\n cells.forEach((cell, index) => {\n const header = headers[index] || `col_${index}`;\n newRow[header] = cell;\n });\n\n // If we had a placeholder row, replace it; otherwise append\n const newTableData = isPlaceholderRow ? [newRow] : [...existingData, newRow];\n const newTableNode = $createDataTableNode(newTableData);\n previousNode.replace(newTableNode);\n parentNode.remove();\n } else {\n // Create new table - treat first row as headers\n // Create a temporary empty row with these headers, which will be replaced when actual data comes\n const newRow: RowData = {};\n cells.forEach((cell, index) => {\n newRow[cell || `col_${index}`] = \"\";\n });\n\n const tableNode = $createDataTableNode([newRow]);\n parentNode.replace(tableNode);\n }\n },\n type: \"element\",\n};\n\nexport const UNDERLINE_INS_TAG: TextMatchTransformer = {\n dependencies: [TextNode],\n export: (node, _children) => {\n if (node instanceof TextNode) {\n let markdownText = node.getTextContent();\n\n if (node.hasFormat(\"bold\")) {\n markdownText = `**${markdownText}**`;\n } else if (node.hasFormat(\"italic\")) {\n markdownText = `*${markdownText}*`;\n } else if (node.hasFormat(\"underline\")) {\n markdownText = `<ins>${markdownText}</ins>`;\n } else {\n return null;\n }\n\n return markdownText;\n }\n return null;\n },\n regExp: /<ins>(.*)<\\/ins>/,\n importRegExp: /<ins>(.*)<\\/ins>/,\n replace: (node, match) => {\n const textNode = $createTextNode(match[1]);\n textNode.toggleFormat(\"underline\");\n node.replace(textNode);\n },\n type: \"text-match\",\n};\n\nexport const UNDERLINE_U_TAG: TextMatchTransformer = {\n dependencies: [TextNode],\n export: (_node, _children) => {\n return null;\n },\n regExp: /<u>(.*)<\\/u>/,\n importRegExp: /<u>(.*)<\\/u>/,\n replace: (node, match) => {\n const textNode = $createTextNode(match[1]);\n textNode.toggleFormat(\"underline\");\n node.replace(textNode);\n },\n type: \"text-match\",\n};\n\nconst BARE_URL_REGEXP = /https?:\\/\\/[^\\s<>\"']*[^\\s<>\"'.,:;\"')\\]}]/;\n\n// Strip markdown character escapes that may have leaked into a URL, e.g.\n// `https://example.com/foo\\_bar` -> `https://example.com/foo_bar`.\n// Without this, repeated save/reopen cycles would accumulate backslashes\n// because the URL is stored as both text content and href.\nconst unescapeUrl = (url: string) => url.replace(/\\\\([*_`~\\\\])/g, \"$1\");\n\nconst escapeLinkTitle = (title: string) => title.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n\nconst unescapeLinkTitle = (title: string | undefined) => title?.replace(/\\\\([\"\\\\])/g, \"$1\");\n\nconst normalizeEscapedUrlText = (textContent: string, href: string, exportedText: string) => {\n if (textContent !== href) {\n return exportedText;\n }\n\n const escapedHref = href.replace(/([*_`~\\\\])/g, \"\\\\$1\");\n\n return exportedText.replace(escapedHref, href);\n};\n\nexport const LINK: TextMatchTransformer = {\n dependencies: [LinkNode],\n export: (node, exportChildren) => {\n if (!$isLinkNode(node) || $isAutoLinkNode(node)) {\n return null;\n }\n\n const title = node.getTitle();\n const href = unescapeUrl(node.getURL());\n const textContent = normalizeEscapedUrlText(node.getTextContent(), href, exportChildren(node));\n\n return title != null ? `[${textContent}](${href} \"${escapeLinkTitle(title)}\")` : `[${textContent}](${href})`;\n },\n importRegExp: /(?:\\[(.+?)\\])(?:\\((?:([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?)\\))/,\n regExp: /(?:\\[(.+?)\\])(?:\\((?:([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?)\\))$/,\n replace: (textNode, match) => {\n const [, linkText, linkUrl, linkTitle] = match;\n const href = unescapeUrl(linkUrl);\n const linkNode = $createLinkNode(href, { title: unescapeLinkTitle(linkTitle) });\n const openBracketAmount = linkText.split(\"[\").length - 1;\n const closeBracketAmount = linkText.split(\"]\").length - 1;\n let parsedLinkText = linkText;\n let outsideLinkText = \"\";\n\n if (openBracketAmount < closeBracketAmount) {\n return;\n }\n\n if (openBracketAmount > closeBracketAmount) {\n const linkTextParts = linkText.split(\"[\");\n outsideLinkText = `[${linkTextParts[0]}`;\n parsedLinkText = linkTextParts.slice(1).join(\"[\");\n }\n\n const normalizedLinkText = unescapeUrl(parsedLinkText);\n const linkTextNode = $createTextNode(normalizedLinkText === href ? href : normalizedLinkText);\n\n linkTextNode.setFormat(textNode.getFormat());\n linkNode.append(linkTextNode);\n textNode.replace(linkNode);\n\n if (outsideLinkText) {\n linkNode.insertBefore($createTextNode(outsideLinkText));\n }\n\n return linkTextNode;\n },\n trigger: \")\",\n type: \"text-match\",\n};\n\nexport const BARE_URL: TextMatchTransformer = {\n dependencies: [AutoLinkNode],\n export: (node, exportChildren) => {\n if (!$isAutoLinkNode(node)) {\n return null;\n }\n\n const href = unescapeUrl(node.getURL());\n\n return normalizeEscapedUrlText(node.getTextContent(), href, exportChildren(node));\n },\n regExp: BARE_URL_REGEXP,\n importRegExp: BARE_URL_REGEXP,\n replace: (textNode, match) => {\n const href = unescapeUrl(match[0]);\n const autoLinkNode = $createAutoLinkNode(href);\n const linkTextNode = $createTextNode(href);\n\n linkTextNode.setFormat(textNode.getFormat());\n autoLinkNode.append(linkTextNode);\n textNode.replace(autoLinkNode);\n },\n type: \"text-match\",\n};\n\nexport const TRANSFORMERS_EXTENDED = [TABLE, HR, UNDERLINE_INS_TAG, UNDERLINE_U_TAG, LINK, BARE_URL];\n","import { AutoLinkNode, LinkNode } from \"@lexical/link\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport { CHECK_LIST, LINK as LEXICAL_LINK, TRANSFORMERS } from \"@lexical/markdown\";\nimport { HeadingNode, QuoteNode } from \"@lexical/rich-text\";\nimport type { Klass, LexicalNode } from \"lexical\";\nimport { REFERENCE_LINK_TRANSFORMER, ReferenceLinkNode } from \"../markdown-editor/plugins/ReferenceLinkPlugin\";\nimport theme from \"../theme/rich-text-theme\";\nimport { CodeHighlightNode, CodeNode } from \"./lexical-code\";\nimport { DataTableNode } from \"./nodes/DataTableNode\";\nimport { EquationNode } from \"./plugins/EquationPlugin/EquationNode\";\nimport { EQUATION_INLINE, EQUATION_MULTILINE } from \"./plugins/EquationPlugin/EquationPlugin\";\nimport { HRNode } from \"./plugins/HorizontalRulePlugin/HorizontalRuleNode\";\nimport { MermaidNode } from \"./plugins/MermaidPlugin/MermaidNode\";\nimport { TRANSFORMERS_EXTENDED } from \"./transformers/markdown-transformers\";\n\nexport const editorNodes: Array<Klass<LexicalNode>> = [\n QuoteNode,\n LinkNode,\n AutoLinkNode,\n DataTableNode,\n HeadingNode,\n ListNode,\n ListItemNode,\n CodeNode,\n CodeHighlightNode,\n MermaidNode,\n EquationNode,\n HRNode,\n ReferenceLinkNode,\n];\n\nexport const baseEditorTransformers = [\n CHECK_LIST,\n ...TRANSFORMERS.filter((transformer) => transformer !== LEXICAL_LINK),\n ...TRANSFORMERS_EXTENDED,\n EQUATION_INLINE,\n EQUATION_MULTILINE,\n];\n\nexport const editorTransformers = [...baseEditorTransformers, REFERENCE_LINK_TRANSFORMER];\n\nexport const editorTheme = theme;\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $nodesOfType } from \"lexical\";\nimport { useEffect } from \"react\";\nimport { CodeNode } from \"../../lexical-code\";\nimport { MermaidNode } from \"../MermaidPlugin/MermaidNode\";\n\nfunction isMermaidLanguage(language: string) {\n return language.trim().toLowerCase() === \"mermaid\";\n}\n\nexport function replaceCodeNodeWithMermaidNode(node: CodeNode) {\n const language = node.getLanguage() ?? \"plaintext\";\n if (!isMermaidLanguage(language)) {\n return false;\n }\n\n node.replace(new MermaidNode(node.getTextContent()));\n return true;\n}\n\nexport function ImportCodeBlocksPlugin() {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n editor.update(() => {\n const codeNodes = $nodesOfType(CodeNode);\n for (const n of codeNodes) {\n replaceCodeNodeWithMermaidNode(n);\n }\n });\n }, [editor]);\n\n return null;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useEffect } from \"react\";\nimport { registerCodeHighlighting } from \"../../lexical-code\";\n\nexport function CodeHighlightingPlugin() {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return registerCodeHighlighting(editor);\n }, [editor]);\n\n return null;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useEffect } from \"react\";\n\nexport default function ToggleEditablePlugin({ isEditable }: { isEditable: boolean }) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n editor.setEditable(isEditable);\n }, [isEditable, editor]);\n\n return null;\n}\n","import { Box } from \"@chakra-ui/react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { TreeView } from \"@lexical/react/LexicalTreeView\";\n\nexport function TreeViewPlugin() {\n const [editor] = useLexicalComposerContext();\n return (\n <Box fontSize=\"xs\" color=\"fg.muted\" padding=\"4\">\n <TreeView\n treeTypeButtonClassName=\"debug-treetype-button\"\n timeTravelButtonClassName=\"debug-timetravel-button\"\n timeTravelPanelButtonClassName=\"debug-timetravel-button\"\n timeTravelPanelClassName=\"debug-timetravel-panel\"\n timeTravelPanelSliderClassName=\"debug-timetravel-slider\"\n viewClassName=\"tree-view-output\"\n editor={editor}\n />\n </Box>\n );\n}\n","const FRONTMATTER_PATTERN = /^---\\s*\\n([\\s\\S]*?)\\n---\\s*(?:\\n|$)/;\n\nconst FENCE_PATTERN = /^```/;\nconst LIST_ITEM_PATTERN = /^([ \\t]*)((?:[-*+])|(?:\\d+\\.))\\s+/;\nconst INDENTED_LINE_PATTERN = /^([ \\t]+)/;\n\ninterface ActiveListIndent {\n normalizedIndentWidth: number;\n sourceIndentWidth: number;\n}\n\ninterface MarkdownListState {\n isInCodeFence: boolean;\n activeListIndents: ActiveListIndent[];\n}\n\nfunction getExpandedIndentWidth(indent: string) {\n let width = 0;\n\n for (const char of indent) {\n width += char === \"\\t\" ? 4 : 1;\n }\n\n return width;\n}\n\nfunction findParentIndent(activeListIndents: ActiveListIndent[], sourceIndentWidth: number) {\n return [...activeListIndents].reverse().find((indent) => indent.sourceIndentWidth < sourceIndentWidth);\n}\n\nfunction toNormalizedIndent(indent: string, normalizedWidth: number, sourceWidth: number) {\n if (normalizedWidth === sourceWidth && !indent.includes(\"\\t\")) return indent;\n return \" \".repeat(normalizedWidth);\n}\n\nfunction normalizeIndentedContinuation(line: string, activeListIndents: ActiveListIndent[]) {\n const indentedLineMatch = line.match(INDENTED_LINE_PATTERN);\n if (!indentedLineMatch) {\n if (line.trim() !== \"\") {\n activeListIndents.length = 0;\n }\n\n return line;\n }\n\n const sourceIndentWidth = getExpandedIndentWidth(indentedLineMatch[1]);\n const parentLevel = findParentIndent(activeListIndents, sourceIndentWidth);\n if (!parentLevel) return line;\n\n const normalizedIndentWidth = sourceIndentWidth + (parentLevel.normalizedIndentWidth - parentLevel.sourceIndentWidth);\n const normalizedIndent = toNormalizedIndent(indentedLineMatch[1], normalizedIndentWidth, sourceIndentWidth);\n\n if (normalizedIndent === indentedLineMatch[1]) return line;\n\n return `${normalizedIndent}${line.slice(indentedLineMatch[1].length)}`;\n}\n\nfunction normalizeListItem(line: string, match: RegExpMatchArray, activeListIndents: ActiveListIndent[]) {\n const sourceIndentWidth = getExpandedIndentWidth(match[1]);\n\n while (activeListIndents.length && activeListIndents.at(-1)!.sourceIndentWidth > sourceIndentWidth) {\n activeListIndents.pop();\n }\n\n const currentLevel = activeListIndents.at(-1);\n if (currentLevel?.sourceIndentWidth === sourceIndentWidth) {\n return `${toNormalizedIndent(match[1], currentLevel.normalizedIndentWidth, sourceIndentWidth)}${line.slice(match[1].length)}`;\n }\n\n const parentLevel = activeListIndents.at(-1);\n const indentStep = sourceIndentWidth - (parentLevel?.sourceIndentWidth ?? 0);\n let normalizedIndentWidth = sourceIndentWidth;\n\n if (parentLevel && indentStep === 2 && !match[1].includes(\"\\t\")) {\n normalizedIndentWidth = parentLevel.normalizedIndentWidth + 4;\n }\n\n activeListIndents.push({ normalizedIndentWidth, sourceIndentWidth });\n\n return `${toNormalizedIndent(match[1], normalizedIndentWidth, sourceIndentWidth)}${line.slice(match[1].length)}`;\n}\n\nfunction normalizeMarkdownLine(line: string, state: MarkdownListState) {\n if (FENCE_PATTERN.test(line.trimStart())) {\n state.isInCodeFence = !state.isInCodeFence;\n return line;\n }\n\n if (state.isInCodeFence) return line;\n\n const match = line.match(LIST_ITEM_PATTERN);\n if (!match) return normalizeIndentedContinuation(line, state.activeListIndents);\n\n return normalizeListItem(line, match, state.activeListIndents);\n}\n\nexport function normalizeMarkdownListIndentation(content: string) {\n const lines = content.split(\"\\n\");\n const state: MarkdownListState = { isInCodeFence: false, activeListIndents: [] };\n\n return lines.map((line) => normalizeMarkdownLine(line, state)).join(\"\\n\");\n}\n\nexport function splitFrontmatter(content: string) {\n const match = content.match(FRONTMATTER_PATTERN);\n if (!match) {\n return { frontmatter: \"\", body: content };\n }\n return {\n frontmatter: match[0],\n body: content.slice(match[0].length),\n };\n}\n"],"names":["StyledEditable","chakra","LexicalContentEditable","ContentEditable","t0","$","_c","onRef","fullWidth","t1","padding","isRichMessage","t2","scrollable","t3","undefined","t4","t5","t6","jsx","t7","Box","editor","t8","t9","Symbol","for","width","minH","t10","ScrollArea","ReferenceLinkNode","DecoratorNode","__href","__label","getType","clone","node","__key","constructor","href","label","key","createDOM","_config","_editor","document","createElement","updateDOM","_prevNode","_dom","getTextContent","exportJSON","type","version","importJSON","serializedNode","$createReferenceLinkNode","decorate","split","pop","isExternal","test","isProjectFile","ResourceBadge","window","open","projectPath","replace","event","CustomEvent","detail","dispatchEvent","location","assign","$isReferenceLinkNode","LINK_REGEXP","REFERENCE_LINK_TRANSFORMER","dependencies","export","regExp","importRegExp","textNode","match","value","theme","code","codeHighlight","atrule","attr","boolean","builtin","cdata","char","class","comment","constant","deleted","doctype","entity","function","important","inserted","keyword","namespace","number","operator","prolog","property","punctuation","regex","selector","string","symbol","tag","url","variable","embedBlock","base","focus","list","checklist","listitem","listitemChecked","listitemUnchecked","nested","olDepth","ol","ul","heading","h1","h2","h3","paragraph","text","underline","italic","link","quote","reference","table","tableCell","tableRow","tableCellHeader","layoutContainer","layoutItem","draggableBlockDemo","row","content","scaledSmallFontSize","formatValue","length","String","toUpperCase","Date","toISOString","JSON","stringify","DefaultRichTextCodeEditor","props","defaultCode","isEditable","showLineNumbers","disableScroll","Textarea","lines","map","_temp","codeBlock","DefaultRichTextDataTable","data","noBorder","hiddenColumns","Text","Set","hiddenSet","Object","keys","filter","has","columns","Table","_temp2","t11","rowIndex","column_0","column","join","t12","jsxs","line","index","DataTableNode","__data","getData","json","headers","headerRow","separator","dataRows","header","$createDataTableNode","$isDataTableNode","EquationComponent","React","lazy","$convertEquationElement","domNode","equation","getAttribute","inline","atob","$createEquationNode","EquationNode","__equation","__inline","getEquation","element","className","exportDOM","btoa","setAttribute","katex","render","displayMode","errorColor","output","strict","throwOnError","trust","importDOM","div","hasAttribute","conversion","priority","span","prevNode","setEquation","writable","getWritable","isInline","Suspense","equationNode","$applyNodeReplacement","$isEquationNode","EQUATION_INLINE","trim","EQUATION_MULTILINE","regExpStart","regExpEnd","rootNode","_children","_startMatch","_endMatch","linesInBetween","append","EquationPlugin","HRNode","ElementNode","_serializedNode","$createHRNode","style","$isHRNode","MermaidComponent","MermaidNode","__code","getCode","setCode","$isMermaidNode","HR","parentNode","TABLE","_traverseChildren","_isImport","previousNode","getPreviousSibling","remove","cells","slice","cell","existingData","newRow","isPlaceholderRow","values","every","_","forEach","newTableData","newTableNode","tableNode","UNDERLINE_INS_TAG","TextNode","markdownText","hasFormat","$createTextNode","toggleFormat","UNDERLINE_U_TAG","_node","BARE_URL_REGEXP","unescapeUrl","escapeLinkTitle","title","unescapeLinkTitle","normalizeEscapedUrlText","textContent","exportedText","escapedHref","LINK","LinkNode","exportChildren","$isLinkNode","$isAutoLinkNode","getTitle","getURL","linkText","linkUrl","linkTitle","linkNode","$createLinkNode","openBracketAmount","closeBracketAmount","parsedLinkText","outsideLinkText","linkTextParts","normalizedLinkText","linkTextNode","setFormat","getFormat","insertBefore","trigger","BARE_URL","AutoLinkNode","autoLinkNode","$createAutoLinkNode","TRANSFORMERS_EXTENDED","editorNodes","QuoteNode","HeadingNode","ListNode","ListItemNode","CodeNode","CodeHighlightNode","baseEditorTransformers","CHECK_LIST","TRANSFORMERS","transformer","LEXICAL_LINK","editorTransformers","editorTheme","isMermaidLanguage","language","toLowerCase","replaceCodeNodeWithMermaidNode","getLanguage","ImportCodeBlocksPlugin","useLexicalComposerContext","update","useEffect","codeNodes","$nodesOfType","n","CodeHighlightingPlugin","registerCodeHighlighting","ToggleEditablePlugin","setEditable","TreeViewPlugin","TreeView","FRONTMATTER_PATTERN","FENCE_PATTERN","LIST_ITEM_PATTERN","INDENTED_LINE_PATTERN","getExpandedIndentWidth","indent","findParentIndent","activeListIndents","sourceIndentWidth","reverse","find","toNormalizedIndent","normalizedWidth","sourceWidth","includes","repeat","normalizeIndentedContinuation","indentedLineMatch","parentLevel","normalizedIndentWidth","normalizedIndent","normalizeListItem","at","currentLevel","indentStep","push","normalizeMarkdownLine","state","trimStart","isInCodeFence","normalizeMarkdownListIndentation","splitFrontmatter","frontmatter","body"],"mappings":"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"}
|