@pstdio/ui 0.20.1 → 0.22.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-BVMyKttu.js → MermaidComponent-D92GMhht.js} +3 -3
- package/dist/{MermaidComponent-BVMyKttu.js.map → MermaidComponent-D92GMhht.js.map} +1 -1
- package/dist/chat-ui.d.ts +2 -0
- package/dist/chat-ui.js +3 -7
- package/dist/chat-ui.js.map +1 -1
- package/dist/components/data-table/build-columns.d.ts +2 -0
- package/dist/components/data-table/data-table-column-menu.d.ts +2 -0
- package/dist/components/data-table/data-table-row-display.d.ts +11 -0
- package/dist/components/data-table/data-table-table-parts.d.ts +1 -0
- package/dist/components/data-table/edit-mode-data-table-body.d.ts +1 -0
- package/dist/components/data-table/edit-mode-data-table-cell.d.ts +1 -0
- package/dist/components/data-table/edit-mode-data-table-header.d.ts +1 -0
- package/dist/components/data-table/types.d.ts +1 -0
- package/dist/components/diff-viewer/code-editor.d.ts +8 -2
- package/dist/components/diff-viewer/index.d.ts +1 -0
- package/dist/components/kanban-renderer/collection-badge.d.ts +7 -0
- package/dist/components/kanban-renderer/index.d.ts +1 -1
- package/dist/components/kanban-renderer/kanban-renderer-helpers.d.ts +2 -1
- package/dist/components/kanban-renderer/types.d.ts +20 -1
- package/dist/components/list-row/list-row-content.d.ts +1 -0
- package/dist/components/param-editor/param-editor-presentation.d.ts +1 -1
- package/dist/components/param-editor/param-editor.types.d.ts +5 -193
- package/dist/components/rich-text/shared/markdown-ast.d.ts +1 -0
- package/dist/components/rich-text/shared/markdown-source-document.d.ts +7 -0
- package/dist/components/rich-text/shared/markdown-source-links.d.ts +11 -0
- package/dist/components/rich-text/shared/markdown-source-map.d.ts +10 -0
- package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
- package/dist/components/tag-editor/tag-editor-row.d.ts +2 -1
- package/dist/components/tag-editor/tag-editor.types.d.ts +13 -0
- package/dist/components/tag-editor/tag-settings-panel.d.ts +1 -1
- package/dist/components/tree-list/tree-list-drag-provider.d.ts +13 -0
- package/dist/components/tree-list/tree-list-order.store.d.ts +4 -1
- package/dist/components/tree-list/tree-list-reorder.d.ts +14 -3
- package/dist/components/tree-list/tree-list-sortable.d.ts +2 -0
- package/dist/components/tree-list/tree-list-visibility-filter.d.ts +2 -2
- package/dist/components/tree-list/tree-list.d.ts +3 -0
- package/dist/components/tree-list/tree-list.types.d.ts +4 -0
- package/dist/data-table.d.ts +2 -0
- package/dist/data-table.js +740 -704
- package/dist/data-table.js.map +1 -1
- package/dist/diff.d.ts +2 -0
- package/dist/diff.js +532 -533
- package/dist/diff.js.map +1 -1
- package/dist/edit-mode-data-table-DGgRuSW3.js +846 -0
- package/dist/edit-mode-data-table-DGgRuSW3.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1603 -1492
- package/dist/index.js.map +1 -1
- package/dist/{kanban-renderer-toolbar-CpegGbwq.js → kanban-renderer-toolbar-Bl8xXdwU.js} +527 -469
- package/dist/kanban-renderer-toolbar-Bl8xXdwU.js.map +1 -0
- package/dist/kanban-renderer.d.ts +2 -0
- package/dist/kanban-renderer.js +21 -21
- package/dist/kanban-renderer.js.map +1 -1
- package/dist/lazy-markdown-editor-CCOchoJX.js +235 -0
- package/dist/lazy-markdown-editor-CCOchoJX.js.map +1 -0
- package/dist/list-row-DCgdza1i.js +812 -0
- package/dist/list-row-DCgdza1i.js.map +1 -0
- package/dist/markdown-CASvn1Z2.js +1643 -0
- package/dist/markdown-CASvn1Z2.js.map +1 -0
- package/dist/markdown-editor-C4GCyebp.js +1019 -0
- package/dist/markdown-editor-C4GCyebp.js.map +1 -0
- package/dist/{mermaid-renderer-H3IhLqnQ.js → mermaid-renderer-CVnuKs-A.js} +2 -2
- package/dist/{mermaid-renderer-H3IhLqnQ.js.map → mermaid-renderer-CVnuKs-A.js.map} +1 -1
- package/dist/mermaid.d.ts +2 -0
- package/dist/mermaid.js +1 -1
- package/dist/monaco-browser-CgvlArN7.js +21 -0
- package/dist/monaco-browser-CgvlArN7.js.map +1 -0
- package/dist/{param-editor-B8Ff9Nm8.js → param-editor-CkDq623X.js} +2 -2
- package/dist/{param-editor-B8Ff9Nm8.js.map → param-editor-CkDq623X.js.map} +1 -1
- package/dist/param-editor-field-DRgbnL7-.js +2809 -0
- package/dist/param-editor-field-DRgbnL7-.js.map +1 -0
- package/dist/rich-message-DARuDVOX.js +628 -0
- package/dist/{rich-message-DdFYRzTo.js.map → rich-message-DARuDVOX.js.map} +1 -1
- package/dist/rich-text.d.ts +2 -0
- package/dist/rich-text.js +48 -47
- package/dist/rich-text.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/terminal.d.ts +2 -0
- package/dist/terminal.js +1 -1
- package/dist/terminal.js.map +1 -1
- package/dist/theme/primitives/sizes.d.ts +9 -0
- package/dist/{theme-BH4fSst9.js → theme-B-l5_a6F.js} +69 -50
- package/dist/theme-B-l5_a6F.js.map +1 -0
- package/dist/theme-preference-Bpobguh4.js +114 -0
- package/dist/theme-preference-Bpobguh4.js.map +1 -0
- package/dist/theme.d.ts +2 -0
- package/dist/theme.js +1 -1
- package/dist/tree-list-AlO5ZmxQ.js +1262 -0
- package/dist/tree-list-AlO5ZmxQ.js.map +1 -0
- package/dist/utils/theme-preference.d.ts +4 -1
- package/dist/workspace-badge-BR_GgsAG.js +175 -0
- package/dist/workspace-badge-BR_GgsAG.js.map +1 -0
- package/package.json +5 -42
- package/dist/dialog-accept-shortcut-DAEBsoWW.js +0 -7
- package/dist/dialog-accept-shortcut-DAEBsoWW.js.map +0 -1
- package/dist/edit-mode-data-table-D6NeiDJx.js +0 -775
- package/dist/edit-mode-data-table-D6NeiDJx.js.map +0 -1
- package/dist/editor-config-D9OksZ93.js +0 -2416
- package/dist/editor-config-D9OksZ93.js.map +0 -1
- package/dist/kanban-renderer-toolbar-CpegGbwq.js.map +0 -1
- package/dist/lazy-markdown-editor-B7uP2ALS.js +0 -26
- package/dist/lazy-markdown-editor-B7uP2ALS.js.map +0 -1
- package/dist/list-row-9oxy-F0v.js +0 -796
- package/dist/list-row-9oxy-F0v.js.map +0 -1
- package/dist/monaco-browser-CO0NxK_Z.js +0 -19
- package/dist/monaco-browser-CO0NxK_Z.js.map +0 -1
- package/dist/number-input-WUfejtNx.js +0 -343
- package/dist/number-input-WUfejtNx.js.map +0 -1
- package/dist/param-editor-field-Cu4pto_a.js +0 -2845
- package/dist/param-editor-field-Cu4pto_a.js.map +0 -1
- package/dist/rich-message-DdFYRzTo.js +0 -658
- package/dist/theme-BH4fSst9.js.map +0 -1
- package/dist/theme-preference-DyymrYpR.js +0 -123
- package/dist/theme-preference-DyymrYpR.js.map +0 -1
- package/dist/tree-list-uV4UFj0x.js +0 -1116
- package/dist/tree-list-uV4UFj0x.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-message-DdFYRzTo.js","sources":["../src/components/rich-text/prompt-input/events.ts","../src/components/rich-text/prompt-input/commands.ts","../src/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.tsx","../src/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentCommands.ts","../src/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentSchema.ts","../src/components/rich-text/prompt-input/plugins/CommentPlugin/CommentPlugin.tsx","../src/components/rich-text/prompt-input/utils.ts","../src/components/rich-text/prompt-input/plugins/ImperativeAPIPlugin.tsx","../src/components/rich-text/prompt-input/plugins/keyboard-shortcuts.ts","../src/components/rich-text/prompt-input/plugins/KeyboardShortcutPlugin.tsx","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/constants.ts","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/getSortedMenuOptions.ts","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenuItem.tsx","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenu.tsx","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.tsx","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/checkForTriggers.ts","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.tsx","../src/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.tsx","../src/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.tsx","../src/components/rich-text/prompt-input/theme/prompt-input-theme.ts","../src/components/rich-text/prompt-input/prompt-input.tsx","../src/components/rich-text/shared/plugins/StateUpdatePlugin.tsx","../src/components/rich-text/rich-message/rich-message.tsx"],"sourcesContent":["export const INSERT_REFERENCE = \"INSERT_REFERENCE\";\nexport const INSERT_BLOCK = \"INSERT_BLOCK\";\n","import { createCommand } from \"lexical\";\nimport { INSERT_BLOCK, INSERT_REFERENCE } from \"./events\";\n\nexport const INSERT_REFERENCE_COMMAND = createCommand(INSERT_REFERENCE);\n\nexport const INSERT_BLOCK_COMMAND = createCommand(INSERT_BLOCK);\n","import { addClassNamesToElement } from \"@lexical/utils\";\nimport {\n $createParagraphNode,\n type DOMConversionMap,\n type DOMConversionOutput,\n type DOMExportOutput,\n type EditorConfig,\n type ElementFormatType,\n ElementNode,\n isHTMLElement,\n type LexicalEditor,\n type ParagraphNode,\n type RangeSelection,\n type SerializedElementNode,\n} from \"lexical\";\n\nexport type SerializedCommentNode = SerializedElementNode;\n\nfunction convertCommentElement(element: HTMLElement): DOMConversionOutput {\n const node = $createCommentNode();\n if (element.style !== null) {\n node.setFormat(element.style.textAlign as ElementFormatType);\n }\n return { node };\n}\n\nexport class CommentNode extends ElementNode {\n static getType(): string {\n return \"comment\";\n }\n\n static clone(node: CommentNode): CommentNode {\n return new CommentNode(node.__key);\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const element = document.createElement(\"blockquote\");\n addClassNamesToElement(element, config.theme.comment);\n return element;\n }\n\n updateDOM(): boolean {\n return false;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n blockquote: () => ({\n conversion: convertCommentElement,\n priority: 0,\n }),\n };\n }\n\n exportDOM(editor: LexicalEditor): DOMExportOutput {\n const { element } = super.exportDOM(editor);\n\n if (element && isHTMLElement(element)) {\n if (this.isEmpty()) {\n element.append(document.createElement(\"br\"));\n }\n\n const formatType = this.getFormatType();\n element.style.textAlign = formatType;\n\n const direction = this.getDirection();\n if (direction) {\n element.dir = direction;\n }\n }\n\n return {\n element,\n };\n }\n\n static importJSON(serializedNode: SerializedCommentNode): CommentNode {\n const node = $createCommentNode();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n exportJSON(): SerializedElementNode {\n return {\n ...super.exportJSON(),\n type: \"comment\",\n };\n }\n\n getTextContent(): string {\n const originalText = super.getTextContent();\n // escape { and } symbols\n const withEscapedReferences = originalText.replace(/([{}])/g, \"\\\\$1\");\n return `{{! ${withEscapedReferences} }}`;\n }\n\n // mutation\n\n insertNewAfter(_: RangeSelection, restoreSelection?: boolean): ParagraphNode {\n const newBlock = $createParagraphNode();\n const direction = this.getDirection();\n newBlock.setDirection(direction);\n this.insertAfter(newBlock, restoreSelection);\n return newBlock;\n }\n\n collapseAtStart(): true {\n const paragraph = $createParagraphNode();\n const children = this.getChildren();\n children.forEach((child) => {\n paragraph.append(child);\n });\n this.replace(paragraph);\n return true;\n }\n}\n\nexport function $createCommentNode(): CommentNode {\n return new CommentNode();\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $setBlocksType } from \"@lexical/selection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_LOW, type TextNode } from \"lexical\";\nimport { useEffect } from \"react\";\nimport { INSERT_BLOCK_COMMAND } from \"../../../commands\";\nimport { $createCommentNode } from \"../nodes/CommentNode/CommentNode\";\n\nexport const insertCommentBlock = (_blockType: string, nodeToReplace?: TextNode) => {\n const selection = $getSelection();\n const commentNode = $createCommentNode();\n\n if (nodeToReplace) {\n const nodeParent = nodeToReplace.getParent();\n nodeParent?.replace(commentNode, true);\n nodeToReplace.remove();\n commentNode.selectEnd();\n return;\n }\n\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, $createCommentNode);\n }\n};\n\ntype InsertBlockEvent = {\n optionId: string;\n nodeToReplace?: TextNode;\n};\n\nexport function useCommentCommands(): null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n INSERT_BLOCK_COMMAND,\n (event: InsertBlockEvent) => {\n const { optionId, nodeToReplace } = event;\n insertCommentBlock(optionId, nodeToReplace);\n return false;\n },\n COMMAND_PRIORITY_LOW,\n ),\n );\n }, [editor]);\n\n return null;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $createParagraphNode } from \"lexical\";\nimport { useEffect } from \"react\";\nimport { CommentNode } from \"../nodes/CommentNode/CommentNode\";\n\nexport const useCommentSchema = () => {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return mergeRegister(\n editor.registerNodeTransform(CommentNode, (node) => {\n const children = node.getChildren();\n\n /**\n * Comment nodes cannot have other comments as children\n */\n const invalidChildren = children.filter((child) => child.getType() === \"comment\");\n\n if (invalidChildren.length > 0) {\n editor.update(() => {\n invalidChildren.forEach((child) => {\n child.replace($createParagraphNode(), true);\n });\n });\n }\n }),\n );\n }, [editor]);\n};\n","import { useCommentCommands } from \"./hooks/useCommentCommands\";\nimport { useCommentSchema } from \"./hooks/useCommentSchema\";\n\nexport function CommentPlugin(): null {\n useCommentSchema();\n useCommentCommands();\n return null;\n}\n","import { $isElementNode, type RootNode } from \"lexical\";\n\nexport const $getTextContent = (root: RootNode) => {\n let textContent = \"\";\n const children = root.getChildren();\n const childrenLength = children.length;\n for (let i = 0; i < childrenLength; i++) {\n const child = children[i];\n textContent += child.getTextContent();\n if ($isElementNode(child) && i !== childrenLength - 1 && !child.isInline()) {\n textContent += \"\\n\";\n }\n }\n return textContent;\n};\n\ntype SerializedNode = {\n type?: string;\n text?: string;\n name?: string;\n referenceId?: string;\n children?: SerializedNode[];\n};\n\ntype SerializedRoot = {\n root?: SerializedNode;\n};\n\nconst getReferenceMarker = (node: SerializedNode) => {\n if (node.type !== \"reference\") return null;\n return `#${node.name ?? node.referenceId ?? \"\"}`;\n};\n\nconst shouldAppendParagraphBreak = (node: SerializedNode) => {\n return node.type === \"paragraph\" && Boolean(node.children?.length);\n};\n\nconst traverseSerializedNode = (node: SerializedNode): string => {\n if (node.type === \"comment\") {\n return \"\";\n }\n\n const referenceMarker = getReferenceMarker(node);\n if (referenceMarker !== null) {\n return referenceMarker;\n }\n\n let text = typeof node.text === \"string\" ? node.text : \"\";\n const children = node.children;\n if (!Array.isArray(children)) return text;\n\n const childrenLength = children.length;\n for (let i = 0; i < childrenLength; i += 1) {\n const child = children[i];\n if (child.type === \"comment\") {\n if (i !== childrenLength - 1) {\n text += \"\\n\";\n }\n continue;\n }\n\n text += traverseSerializedNode(child);\n if (shouldAppendParagraphBreak(child)) {\n text += \"\\n\";\n }\n }\n\n return text;\n};\n\nexport const getTextFromSerializedEditorState = (state: string): string => {\n try {\n const parsed = JSON.parse(state) as SerializedRoot;\n return traverseSerializedNode(parsed.root ?? {});\n } catch {\n return \"\";\n }\n};\n\nexport const emptyEditorState = {\n root: {\n direction: \"ltr\",\n format: \"\",\n indent: 0,\n type: \"root\",\n version: 1,\n children: [\n {\n type: \"paragraph\",\n version: 1,\n format: \"\",\n indent: 0,\n textFormat: undefined,\n direction: null,\n children: [],\n },\n ],\n },\n};\n\nexport function generateEditorStateFromString(input = \"\") {\n if (!input.trim()) {\n return JSON.parse(JSON.stringify(emptyEditorState));\n }\n\n // Split on line breaks → one paragraph per line\n const paragraphs = input.split(/\\r?\\n/);\n\n const children = paragraphs.map((line) => ({\n type: \"paragraph\",\n version: 1,\n format: \"\",\n indent: 0,\n textFormat: undefined,\n direction: null,\n children: line\n ? [\n {\n type: \"text\",\n version: 1,\n text: line,\n format: \"\",\n detail: 0,\n mode: \"normal\",\n style: \"\",\n },\n ]\n : [],\n }));\n\n return {\n root: {\n direction: \"ltr\",\n format: \"\",\n indent: 0,\n type: \"root\",\n version: 1,\n children,\n },\n };\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useImperativeHandle } from \"react\";\nimport { generateEditorStateFromString, getTextFromSerializedEditorState } from \"../utils\";\n\nexport interface PromptEditorRef {\n setEditorValue: (value: string) => void;\n}\n\nexport function ImperativeAPIPlugin({\n editorRef,\n previousTextRef,\n}: {\n editorRef: React.ForwardedRef<PromptEditorRef>;\n previousTextRef: React.MutableRefObject<string>;\n}) {\n const [editor] = useLexicalComposerContext();\n\n useImperativeHandle(\n editorRef,\n () => ({\n setEditorValue: (value: string) => {\n const state = editor.parseEditorState(JSON.stringify(generateEditorStateFromString(value)));\n editor.setEditorState(state);\n previousTextRef.current = getTextFromSerializedEditorState(value);\n editor.focus(undefined, { defaultSelection: \"rootEnd\" });\n },\n }),\n [editor, previousTextRef],\n );\n\n return null;\n}\n","type KeyDownLikeEvent = {\n key: string;\n ctrlKey: boolean;\n metaKey: boolean;\n shiftKey: boolean;\n altKey: boolean;\n};\n\nexport const shouldSubmitOnEnter = (event: KeyDownLikeEvent) => {\n if (event.key !== \"Enter\") return false;\n\n return !event.ctrlKey && !event.metaKey && !event.shiftKey && !event.altKey;\n};\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { COMMAND_PRIORITY_HIGH, KEY_DOWN_COMMAND } from \"lexical\";\nimport { useEffect } from \"react\";\nimport { shouldSubmitOnEnter } from \"./keyboard-shortcuts\";\n\nexport interface KeyboardShortcutPluginProps {\n onSubmit?: () => void;\n}\n\nexport function KeyboardShortcutPlugin({ onSubmit }: KeyboardShortcutPluginProps) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (shouldSubmitOnEnter(event)) {\n event.preventDefault();\n onSubmit?.();\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_HIGH,\n );\n }, [editor, onSubmit]);\n\n return null;\n}\n","import type { MenuOptionGroup } from \"./ReferenceMenuOption\";\n\nexport const menuSortOrder: MenuOptionGroup[] = [\"table\", \"connector\"];\n","import { menuSortOrder } from \"../constants\";\nimport type { MenuOptionGroup, ReferenceMenuOption } from \"../ReferenceMenuOption\";\n\nexport const getSortedMenuOptions = (options: ReferenceMenuOption[]) => {\n const sortedOptions = options\n .sort((a, b) => menuSortOrder.indexOf(a.group) - menuSortOrder.indexOf(b.group))\n .map((option, index) => ({ ...option, index }) as ReferenceMenuOption);\n\n const groupedOptions = sortedOptions.reduce(\n (acc, option) => {\n const bucket = acc[option.group] ?? [];\n bucket.push(option);\n acc[option.group] = bucket;\n return acc;\n },\n {} as Record<MenuOptionGroup, ReferenceMenuOption[]>,\n );\n\n return groupedOptions;\n};\n","import { Flex, Text, Tooltip } from \"@chakra-ui/react\";\n\ninterface ReferenceMenuItemProps {\n id: string;\n isSelected: boolean;\n onClick: () => void;\n onMouseEnter: () => void;\n primaryLabel: string;\n secondaryLabel?: string;\n setRefElement: (element: HTMLDivElement) => void;\n tabIndex: number;\n}\n\nexport function ReferenceMenuItem(props: ReferenceMenuItemProps) {\n const { id, isSelected, onClick, onMouseEnter, setRefElement, secondaryLabel, primaryLabel, tabIndex = -1 } = props;\n\n return (\n <Flex\n direction=\"column\"\n cursor=\"pointer\"\n gap=\"2xs\"\n padding=\"2xs\"\n paddingX=\"sm\"\n bg={isSelected ? \"bg.active\" : \"transparent\"}\n _hover={{ bg: isSelected ? \"bg.active\" : \"bg.hover\" }}\n tabIndex={tabIndex}\n ref={setRefElement}\n role=\"option\"\n aria-selected={isSelected}\n id={id}\n onMouseEnter={onMouseEnter}\n onClick={onClick}\n >\n <Tooltip.Root>\n <Tooltip.Trigger>\n <Text mt=\"1px\" lineClamp={1} textOverflow=\"ellipsis\" textStyle=\"label/M/regular\">\n {primaryLabel}\n </Text>\n </Tooltip.Trigger>\n <Tooltip.Positioner>\n <Tooltip.Content>{primaryLabel}</Tooltip.Content>\n </Tooltip.Positioner>\n </Tooltip.Root>\n {secondaryLabel && (\n <Text lineClamp={2} textOverflow=\"ellipsis\" textStyle=\"label/S/regular\" color=\"fg.muted\">\n {secondaryLabel}\n </Text>\n )}\n </Flex>\n );\n}\n","import { Box, Text } from \"@chakra-ui/react\";\nimport { useEffect } from \"react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport type { ReferenceMenuOption } from \"../../ReferenceMenuOption\";\nimport { getSortedMenuOptions } from \"../../utils/getSortedMenuOptions\";\nimport { ReferenceMenuItem } from \"./ReferenceMenuItem\";\n\ninterface ReferenceMenuProps {\n options: ReferenceMenuOption[];\n selectedIndex: number | null;\n onSelectItem: (option: ReferenceMenuOption, index: number) => void;\n onMouseEnterItem: (index: number) => void;\n}\n\nexport const ReferenceMenu = (props: ReferenceMenuProps) => {\n const { options, selectedIndex, onSelectItem, onMouseEnterItem } = props;\n const { table = [], connector = [] } = getSortedMenuOptions(options);\n\n const hasResults = [...table, ...connector].length;\n\n /** scroll to the selected item if necessary */\n useEffect(() => {\n document\n .getElementById(`typeahead-item-${selectedIndex}`)\n ?.scrollIntoView({ behavior: \"instant\", block: \"nearest\" });\n }, [selectedIndex]);\n\n return (\n <ScrollArea\n zIndex=\"1000\"\n position=\"absolute\"\n layerStyle=\"modal\"\n maxHeight={\"24rem\"}\n showHorizontalScrollbar={false}\n minWidth={{\n base: \"100vw\",\n md: \"264px\",\n }}\n >\n {!hasResults && <Text>No results</Text>}\n {!!table.length && (\n <>\n <Text paddingTop=\"xs\" paddingBottom=\"2xs\" paddingX=\"sm\" color=\"fg.muted\" textStyle=\"label/S/medium\">\n Tables\n </Text>\n <Box>\n {table.map((option) => {\n return (\n <ReferenceMenuItem\n id={`typeahead-item-${option.index}`}\n isSelected={selectedIndex === option.index}\n onClick={() => onSelectItem(option, option.index)}\n onMouseEnter={() => onMouseEnterItem(option.index)}\n key={option.id}\n primaryLabel={option.name}\n secondaryLabel={option.description}\n setRefElement={option.setRefElement}\n tabIndex={-1}\n />\n );\n })}\n </Box>\n </>\n )}\n {!!connector.length && (\n <>\n <Text paddingTop=\"xs\" paddingBottom=\"2xs\" paddingX=\"sm\" color=\"fg.muted\" textStyle=\"label/S/medium\">\n Data Sources\n </Text>\n <Box>\n {connector.map((option) => {\n return (\n <ReferenceMenuItem\n id={`typeahead-item-${option.index}`}\n isSelected={selectedIndex === option.index}\n onClick={() => onSelectItem(option, option.index)}\n onMouseEnter={() => onMouseEnterItem(option.index)}\n key={option.id}\n primaryLabel={option.name}\n secondaryLabel={option.description}\n setRefElement={option.setRefElement}\n tabIndex={-1}\n />\n );\n })}\n </Box>\n </>\n )}\n </ScrollArea>\n );\n};\n","import type { ReferenceResourceType } from \"../../../prompt-input\";\nimport type { ReferenceMenuOption } from \"../ReferenceMenuOption\";\n\nconst localFilter = (data: ReferenceMenuOption[], q: string) =>\n data.filter((m) => m.name.replace(/ /g, \"_\").toLowerCase().includes(q.toLowerCase()));\n\n/**\n * Search across all resources and menu options\n *\n * @param queryString\n * @returns\n */\nexport function useContextLookup(\n queryString: string | null,\n items: {\n resourceId: string;\n resourceType: ReferenceResourceType;\n name: string;\n description?: string;\n }[] = [],\n) {\n const baseOptions: ReferenceMenuOption[] = items.map(\n (res, index): ReferenceMenuOption => ({\n id: res.resourceId,\n key: res.resourceId,\n index,\n group: res.resourceType,\n name: res.name,\n description: res.description,\n setRefElement: () => {},\n }),\n );\n\n if (queryString == null || queryString === \"\") {\n return baseOptions;\n }\n\n return localFilter(baseOptions, queryString);\n}\n","import type { MenuTextMatch } from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\n\nconst VALID_PUNCTUATION = \"\\\\.\\\\-<>_:\";\nconst TRIGGERS = [\"#\"].join(\"\");\n\nconst VALID_CHARS = `[^${TRIGGERS}${VALID_PUNCTUATION}\\\\s]`;\nconst VALID_JOINS = `(?:[${VALID_PUNCTUATION}]|)`;\n\nconst LENGTH_LIMIT = 75;\n\nconst TriggerRegex = new RegExp(`(^|\\\\s|\\\\()([${TRIGGERS}]((?:${VALID_CHARS}${VALID_JOINS}){0,${LENGTH_LIMIT}}))$`);\n\nconst AliasRegex = new RegExp(`(^|\\\\s|\\\\()([${TRIGGERS}]((?:${VALID_CHARS}){0,${LENGTH_LIMIT}}))$`);\n\n/**\n * lexical will run this function on text nodes\n *\n * @param text\n * @param minMatchLength\n * @returns\n */\nexport function checkForTriggers(text: string, minMatchLength: number): MenuTextMatch | null {\n let match = TriggerRegex.exec(text);\n\n if (match === null) {\n match = AliasRegex.exec(text);\n }\n\n if (match !== null) {\n // The strategy ignores leading whitespace but we need to know it's\n // length to add it to the leadOffset\n const maybeLeadingWhitespace = match[1];\n const matchingString = match[3];\n\n if (matchingString.length >= minMatchLength) {\n return {\n leadOffset: match.index + maybeLeadingWhitespace.length,\n matchingString,\n replaceableString: match[2],\n };\n }\n }\n\n return null;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { LexicalTypeaheadMenuPlugin } from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\nimport type { TextNode } from \"lexical\";\nimport { useState } from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { INSERT_REFERENCE_COMMAND } from \"../../commands\";\nimport type { ReferenceResourceType } from \"../../prompt-input\";\nimport { ReferenceMenu } from \"./components/ReferenceMenu/ReferenceMenu\";\nimport { useContextLookup } from \"./hooks/useContextLookup\";\nimport type { ReferenceMenuOption } from \"./ReferenceMenuOption\";\nimport { checkForTriggers } from \"./utils/checkForTriggers\";\n\nconst SUGGESTION_LIST_LENGTH_LIMIT = 20;\n\ntype Props = {\n items?: Array<{\n resourceId: string;\n resourceType: ReferenceResourceType;\n name: string;\n description?: string;\n }>;\n};\n\nexport function ReferenceMenuPlugin({ items = [] }: Props) {\n const [queryString, setQueryString] = useState<string | null>(null);\n const [editor] = useLexicalComposerContext();\n const searchResults = useContextLookup(queryString, items);\n\n /**\n * triggers when the user selects an option in the context menu\n */\n const onSelectOption = (\n selectedOption: ReferenceMenuOption,\n nodeToReplace: TextNode | null,\n closeMenu: () => void,\n ) => {\n editor.update(() => {\n if (!nodeToReplace) return;\n\n editor.dispatchCommand(INSERT_REFERENCE_COMMAND, {\n resourceId: selectedOption.id,\n resourceType: selectedOption.group,\n name: selectedOption.name,\n nodeToReplace,\n });\n\n closeMenu();\n });\n };\n\n /**\n * checks text nodes and return nodes matching the trigger\n */\n const checkForTrigger = (text: string) => {\n return checkForTriggers(text, 0);\n };\n\n /**\n * define the options to display in the context menu\n */\n const menuOptions = searchResults.slice(0, SUGGESTION_LIST_LENGTH_LIMIT);\n\n return (\n <LexicalTypeaheadMenuPlugin<ReferenceMenuOption>\n onQueryChange={setQueryString}\n onSelectOption={onSelectOption}\n triggerFn={checkForTrigger}\n options={menuOptions}\n menuRenderFn={(anchorElementRef, { options, selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }) => {\n if (!anchorElementRef.current) return null;\n return ReactDOM.createPortal(\n <ReferenceMenu\n options={options}\n selectedIndex={selectedIndex}\n onSelectItem={(option, i) => {\n setHighlightedIndex(i);\n selectOptionAndCleanUp(option);\n }}\n onMouseEnterItem={(i) => {\n setHighlightedIndex(i);\n }}\n />,\n anchorElementRef.current,\n );\n }}\n />\n );\n}\n","import { addClassNamesToElement } from \"@lexical/utils\";\nimport {\n type DOMConversionMap,\n type DOMConversionOutput,\n type DOMExportOutput,\n type EditorConfig,\n type LexicalEditor,\n type NodeKey,\n type SerializedTextNode,\n type Spread,\n TextNode,\n} from \"lexical\";\n\ntype SerializedReferenceNode = Spread<\n {\n referenceId: string;\n name: string;\n },\n SerializedTextNode\n>;\n\nexport class ReferenceNode extends TextNode {\n __referenceId: string;\n __name: string;\n\n static getType(): string {\n return \"reference\";\n }\n\n static clone(node: ReferenceNode): ReferenceNode {\n return new ReferenceNode(node.__referenceId, node.__name, node.__key);\n }\n\n constructor(referenceId: string, name: string, key?: NodeKey) {\n super(name, key);\n this.__referenceId = referenceId;\n this.__name = name;\n }\n\n isKeyboardSelectable(): boolean {\n return false;\n }\n\n canBeEmpty(): boolean {\n return false;\n }\n\n canInsertTextAfter(): boolean {\n return false;\n }\n\n canInsertTextBefore(): boolean {\n return false;\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const span = document.createElement(\"span\");\n addClassNamesToElement(span, config.theme.reference);\n span.setAttribute(\"data-reference-id\", this.__referenceId);\n span.setAttribute(\"data-name\", this.__name);\n span.textContent = `#${this.__name}`;\n return span;\n }\n\n updateDOM(prevNode: ReferenceNode, dom: HTMLElement): boolean {\n if (prevNode.__name !== this.__name || prevNode.__referenceId !== this.__referenceId) {\n dom.setAttribute(\"data-reference-id\", this.__referenceId);\n dom.setAttribute(\"data-name\", this.__name);\n dom.textContent = `#${this.__name}`;\n }\n\n return false;\n }\n\n exportDOM(_editor: LexicalEditor): DOMExportOutput {\n const el = document.createElement(\"span\");\n el.setAttribute(\"data-reference-id\", this.__referenceId);\n el.setAttribute(\"data-name\", this.__name);\n el.textContent = `#${this.__name}`;\n return { element: el };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n span: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-reference-id\") || !domNode.hasAttribute(\"data-name\")) {\n return null;\n }\n return {\n conversion: $convertReferenceElement,\n priority: 1,\n };\n },\n };\n }\n\n static importJSON(serializedNode: SerializedReferenceNode): ReferenceNode {\n const node = new ReferenceNode(serializedNode.referenceId, serializedNode.name);\n return node;\n }\n\n exportJSON(): SerializedReferenceNode {\n return {\n ...super.exportJSON(),\n type: \"reference\",\n referenceId: this.__referenceId,\n name: this.__name,\n };\n }\n\n getTextContent(): string {\n return `#${this.__name}`;\n }\n}\n\nfunction $convertReferenceElement(domNode: HTMLElement): DOMConversionOutput | null {\n const referenceId = domNode.getAttribute(\"data-reference-id\");\n const name = domNode.getAttribute(\"data-name\");\n if (!referenceId || !name) return null;\n return { node: $createReferenceNode(referenceId, name) };\n}\n\nexport function $createReferenceNode(referenceId: string, name: string): ReferenceNode {\n return new ReferenceNode(referenceId, name);\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { COMMAND_PRIORITY_LOW, type LexicalNode } from \"lexical\";\nimport { type PropsWithChildren, useEffect } from \"react\";\nimport { INSERT_REFERENCE_COMMAND } from \"../../commands\";\nimport type { ReferenceResourceType } from \"../../prompt-input\";\nimport { $createReferenceNode } from \"./nodes/ReferenceNode/ReferenceNode\";\n\nexport const $insertExistingReference = (nodeToReplace: LexicalNode, resourceId: string, name: string) => {\n const refNode = $createReferenceNode(resourceId, name);\n\n if (nodeToReplace) {\n nodeToReplace?.replace(refNode);\n nodeToReplace.remove();\n refNode.selectEnd();\n return;\n }\n};\n\nexport function ReferencePlugin(\n props: PropsWithChildren<{ onAddReference?: (resourceId: string, resourceType: ReferenceResourceType) => void }>,\n) {\n const { onAddReference } = props;\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n INSERT_REFERENCE_COMMAND,\n (event: {\n resourceId: string;\n resourceType: ReferenceResourceType;\n name: string;\n nodeToReplace: LexicalNode;\n }) => {\n const { resourceId, resourceType, name, nodeToReplace } = event;\n\n editor.update(() => {\n $insertExistingReference(nodeToReplace, resourceId, name);\n });\n\n onAddReference?.(resourceId, resourceType);\n return true;\n },\n COMMAND_PRIORITY_LOW,\n ),\n );\n }, [editor, onAddReference]);\n\n return null;\n}\n","import type { EditorThemeClasses } from \"lexical\";\nimport baseTheme from \"../../theme/rich-text-theme\";\nimport \"./prompt-input-theme.css\";\n\nconst promptInputTheme: EditorThemeClasses = {\n ...baseTheme,\n // Override paragraph class to remove margins specifically for prompt input\n paragraph: \"rich-text__p rich-text__p--no-margin\",\n};\n\nexport default promptInputTheme;\n","import { Flex, Kbd, Text } from \"@chakra-ui/react\";\nimport { MarkNode } from \"@lexical/mark\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { $getRoot } from \"lexical\";\nimport type { ReactElement } from \"react\";\nimport { type ForwardRefRenderFunction, forwardRef, useRef } from \"react\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport ToggleEditablePlugin from \"../shared/plugins/ToggleEditablePlugin\";\nimport { TreeViewPlugin } from \"../shared/plugins/TreeViewPlugin/TreeViewPlugin\";\nimport { CommentPlugin } from \"./plugins/CommentPlugin/CommentPlugin\";\nimport { CommentNode } from \"./plugins/CommentPlugin/nodes/CommentNode/CommentNode\";\nimport { ImperativeAPIPlugin, type PromptEditorRef } from \"./plugins/ImperativeAPIPlugin\";\nimport { KeyboardShortcutPlugin } from \"./plugins/KeyboardShortcutPlugin\";\nimport { ReferenceMenuPlugin } from \"./plugins/ReferenceMenuPlugin/ReferenceMenuPlugin\";\nimport { ReferenceNode } from \"./plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode\";\nimport { ReferencePlugin } from \"./plugins/ReferencePlugin/ReferencePlugin\";\nimport theme from \"./theme/prompt-input-theme\";\nimport { $getTextContent, getTextFromSerializedEditorState } from \"./utils\";\n\nexport type ReferenceResourceType = \"table\" | \"connector\" | \"file\";\n\nexport type ReferenceItem = {\n resourceId: string;\n resourceType: ReferenceResourceType;\n name: string;\n description?: string;\n};\n\nexport interface PromptEditorProps {\n defaultState: string;\n debug?: boolean;\n isEditable?: boolean;\n placeholder?: ReactElement | ((isEditable: boolean) => ReactElement | null);\n onChange?: (text: string, state: object) => void;\n onError?: (error: Error) => void;\n onSubmit?: () => void;\n /** Dynamic list of references (tables, connectors) shown when typing # */\n references?: ReferenceItem[];\n /** Optional app callback when a reference is inserted */\n onAddReference?: (resourceId: string, resourceType: ReferenceResourceType) => void;\n}\n\nconst nodes = [CommentNode, MarkNode, ReferenceNode];\n\nexport const BasePromptEditor: ForwardRefRenderFunction<PromptEditorRef, PromptEditorProps> = (props, ref) => {\n const { defaultState, debug = false, isEditable = true, placeholder } = props;\n const { onChange, onError = () => {}, onSubmit, references = [], onAddReference } = props;\n\n const initialConfig = {\n namespace: \"PROMPT_EDITOR\",\n nodes,\n editorState: defaultState,\n editable: isEditable,\n onError,\n theme,\n };\n\n const previousTextRef = useRef<string>(getTextFromSerializedEditorState(defaultState));\n const placeholderNode: ReactElement | ((isEditable: boolean) => ReactElement | null) = placeholder ?? (\n <Text textStyle=\"label/M/regular\" color=\"fg.subtle\" pointerEvents=\"none\" position=\"absolute\" top=\"0\">\n Type your query here or press <Kbd color=\"fg.subtle\">#</Kbd> to add a reference.\n </Text>\n );\n\n return (\n <Flex direction=\"column\" justifyContent=\"space-between\" width=\"100%\" position=\"relative\">\n <LexicalComposer initialConfig={initialConfig}>\n <HistoryPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth />}\n placeholder={placeholderNode}\n ErrorBoundary={LexicalErrorBoundary}\n />\n <OnChangePlugin\n ignoreSelectionChange\n ignoreHistoryMergeTagChange={false}\n onChange={(editorState) => {\n editorState.read(() => {\n // handle comment blocks properly\n const root = $getRoot();\n const rawText = $getTextContent(root);\n\n if (rawText !== previousTextRef.current) {\n previousTextRef.current = rawText;\n onChange?.(rawText, editorState.toJSON());\n }\n });\n }}\n />\n <ImperativeAPIPlugin editorRef={ref} previousTextRef={previousTextRef} />\n <ToggleEditablePlugin isEditable={isEditable} />\n <CommentPlugin />\n <KeyboardShortcutPlugin onSubmit={onSubmit} />\n <ReferenceMenuPlugin items={references} />\n <ReferencePlugin onAddReference={onAddReference} />\n {debug ? <TreeViewPlugin /> : \"\"}\n </LexicalComposer>\n </Flex>\n );\n};\n\nexport const PromptEditor = forwardRef(BasePromptEditor);\n\nexport type { PromptEditorRef } from \"./plugins/ImperativeAPIPlugin\";\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useEffect } from \"react\";\n\ntype StateUpdatePluginProps = {\n value: string;\n onUpdate: (value: string) => void;\n};\n\nexport default function StateUpdatePlugin({ value, onUpdate }: StateUpdatePluginProps) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n editor.update(() => onUpdate(value), { tag: \"history-merge\" });\n }, [value, editor, onUpdate]);\n\n return null;\n}\n","import \"../theme/rich-text-theme.css\";\n\nimport { Flex } from \"@chakra-ui/react\";\nimport { ClickableLinkPlugin } from \"@lexical/react/LexicalClickableLinkPlugin\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HorizontalRulePlugin } from \"@lexical/react/LexicalHorizontalRulePlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { TabIndentationPlugin } from \"@lexical/react/LexicalTabIndentationPlugin\";\nimport { $getRoot } from \"lexical\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport { editorNodes, editorTheme } from \"../shared/editor-config\";\nimport { exportLexicalToMarkdown, importMarkdownToLexical } from \"../shared/markdown-codec\";\nimport type { MarkdownUrlResolver } from \"../shared/markdown-url\";\nimport { MarkdownUrlProvider } from \"../shared/markdown-url-context\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { CodeHighlightingPlugin } from \"../shared/plugins/CodePlugin/CodeHighlightingPlugin\";\nimport { EquationPlugin } from \"../shared/plugins/EquationPlugin/EquationPlugin\";\nimport StateUpdatePlugin from \"../shared/plugins/StateUpdatePlugin\";\nimport ToggleEditablePlugin from \"../shared/plugins/ToggleEditablePlugin\";\nimport { TreeViewPlugin } from \"../shared/plugins/TreeViewPlugin/TreeViewPlugin\";\nimport { splitFrontmatter } from \"../utils/markdown\";\n\nexport interface RichMessageProps {\n debug?: boolean;\n defaultState: string;\n fullWidth?: boolean;\n isEditable?: boolean;\n resolveMarkdownUrl?: MarkdownUrlResolver;\n onChange?: (value: string) => void;\n}\n\nexport function RichMessage(props: RichMessageProps) {\n const {\n debug = false,\n defaultState = \"\",\n fullWidth = false,\n isEditable = false,\n resolveMarkdownUrl,\n onChange,\n } = props;\n const { frontmatter, body } = splitFrontmatter(defaultState);\n const shouldTrackChanges = isEditable && Boolean(onChange);\n\n const initialConfig = {\n namespace: \"RICH_MESSAGE\",\n nodes: editorNodes,\n editorState: () => {\n importMarkdownToLexical(body, resolveMarkdownUrl);\n },\n onError: (error: Error) => console.error(error),\n editable: isEditable,\n theme: editorTheme,\n };\n\n return (\n <Flex\n className=\"rich-text\"\n data-rich-message=\"true\"\n justifyContent=\"space-between\"\n width=\"100%\"\n maxWidth=\"100%\"\n height=\"100%\"\n position=\"relative\"\n direction=\"column\"\n overflow=\"hidden\"\n >\n <MarkdownUrlProvider resolver={resolveMarkdownUrl}>\n <LexicalComposer initialConfig={initialConfig}>\n <StateUpdatePlugin\n value={body}\n onUpdate={(value: string) => {\n importMarkdownToLexical(value, resolveMarkdownUrl);\n }}\n />\n <LinkPlugin />\n <ClickableLinkPlugin newTab />\n <ListPlugin />\n {isEditable ? <TabIndentationPlugin maxIndent={7} /> : null}\n <HorizontalRulePlugin />\n <CodeHighlightingPlugin />\n <ImportCodeBlocksPlugin />\n <EquationPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth={fullWidth} isRichMessage />}\n ErrorBoundary={LexicalErrorBoundary}\n />\n {shouldTrackChanges ? (\n <OnChangePlugin\n ignoreSelectionChange\n ignoreHistoryMergeTagChange={false}\n onChange={(editorState) => {\n editorState.read(() => {\n const root = $getRoot();\n const markdownBody = exportLexicalToMarkdown(root);\n onChange?.(frontmatter + markdownBody);\n });\n }}\n />\n ) : null}\n <ToggleEditablePlugin isEditable={isEditable} />\n {debug && <TreeViewPlugin />}\n </LexicalComposer>\n </MarkdownUrlProvider>\n </Flex>\n );\n}\n"],"names":["INSERT_REFERENCE","INSERT_BLOCK","INSERT_REFERENCE_COMMAND","createCommand","INSERT_BLOCK_COMMAND","convertCommentElement","element","node","$createCommentNode","style","setFormat","textAlign","CommentNode","ElementNode","getType","clone","__key","createDOM","config","document","createElement","addClassNamesToElement","theme","comment","updateDOM","importDOM","blockquote","conversion","priority","exportDOM","editor","isHTMLElement","isEmpty","append","formatType","getFormatType","direction","getDirection","dir","importJSON","serializedNode","format","setIndent","indent","setDirection","exportJSON","type","getTextContent","replace","insertNewAfter","_","restoreSelection","newBlock","$createParagraphNode","insertAfter","collapseAtStart","paragraph","children","getChildren","forEach","child","insertCommentBlock","_blockType","nodeToReplace","selection","$getSelection","commentNode","nodeParent","getParent","remove","selectEnd","$isRangeSelection","$setBlocksType","useCommentCommands","$","_c","useLexicalComposerContext","t0","t1","mergeRegister","registerCommand","_temp","COMMAND_PRIORITY_LOW","useEffect","event","optionId","useCommentSchema","registerNodeTransform","invalidChildren","filter","length","update","_temp2","child_0","CommentPlugin","$getTextContent","root","textContent","childrenLength","i","$isElementNode","isInline","getReferenceMarker","name","referenceId","shouldAppendParagraphBreak","Boolean","traverseSerializedNode","referenceMarker","text","Array","isArray","getTextFromSerializedEditorState","state","parsed","JSON","parse","emptyEditorState","version","textFormat","undefined","generateEditorStateFromString","input","trim","split","map","line","detail","mode","stringify","ImperativeAPIPlugin","editorRef","previousTextRef","t2","setEditorValue","value","parseEditorState","setEditorState","current","focus","defaultSelection","useImperativeHandle","shouldSubmitOnEnter","key","ctrlKey","metaKey","shiftKey","altKey","KeyboardShortcutPlugin","onSubmit","KEY_DOWN_COMMAND","preventDefault","COMMAND_PRIORITY_HIGH","menuSortOrder","getSortedMenuOptions","options","sort","a","b","indexOf","group","option","index","reduce","acc","bucket","push","ReferenceMenuItem","props","id","isSelected","onClick","onMouseEnter","setRefElement","secondaryLabel","primaryLabel","tabIndex","t3","bg","t4","jsx","Tooltip","Text","t5","t6","t7","t8","Flex","ReferenceMenu","selectedIndex","onSelectItem","onMouseEnterItem","table","connector","hasResults","getElementById","scrollIntoView","behavior","block","T0","ScrollArea","t9","Symbol","for","base","md","t10","t11","jsxs","Fragment","Box","description","t12","option_0","t13","localFilter","data","q","m","toLowerCase","includes","useContextLookup","queryString","items","baseOptions","res","resourceId","resourceType","VALID_PUNCTUATION","TRIGGERS","join","VALID_CHARS","VALID_JOINS","LENGTH_LIMIT","TriggerRegex","RegExp","AliasRegex","checkForTriggers","minMatchLength","match","exec","maybeLeadingWhitespace","matchingString","leadOffset","replaceableString","SUGGESTION_LIST_LENGTH_LIMIT","ReferenceMenuPlugin","setQueryString","useState","searchResults","selectedOption","closeMenu","dispatchCommand","onSelectOption","checkForTrigger","slice","menuOptions","LexicalTypeaheadMenuPlugin","anchorElementRef","selectOptionAndCleanUp","setHighlightedIndex","ReactDOM","createPortal","i_0","ReferenceNode","TextNode","__referenceId","__name","constructor","isKeyboardSelectable","canBeEmpty","canInsertTextAfter","canInsertTextBefore","span","reference","setAttribute","prevNode","dom","_editor","el","domNode","hasAttribute","$convertReferenceElement","getAttribute","$createReferenceNode","$insertExistingReference","refNode","ReferencePlugin","onAddReference","promptInputTheme","baseTheme","nodes","MarkNode","BasePromptEditor","ref","defaultState","debug","isEditable","placeholder","onChange","onError","references","namespace","editorState","editable","initialConfig","useRef","Kbd","placeholderNode","HistoryPlugin","ContentEditable","RichTextPlugin","LexicalErrorBoundary","OnChangePlugin","read","$getRoot","rawText","toJSON","ToggleEditablePlugin","t14","t15","t16","t17","t18","TreeViewPlugin","t19","LexicalComposer","PromptEditor","forwardRef","StateUpdatePlugin","onUpdate","tag","RichMessage","fullWidth","resolveMarkdownUrl","splitFrontmatter","frontmatter","body","shouldTrackChanges","importMarkdownToLexical","editorNodes","editorTheme","LinkPlugin","ClickableLinkPlugin","ListPlugin","TabIndentationPlugin","HorizontalRulePlugin","CodeHighlightingPlugin","ImportCodeBlocksPlugin","EquationPlugin","markdownBody","exportLexicalToMarkdown","t20","t21","t22","MarkdownUrlProvider","error","console"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rich-message-DARuDVOX.js","sources":["../src/components/rich-text/prompt-input/events.ts","../src/components/rich-text/prompt-input/commands.ts","../src/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.tsx","../src/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentCommands.ts","../src/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentSchema.ts","../src/components/rich-text/prompt-input/plugins/CommentPlugin/CommentPlugin.tsx","../src/components/rich-text/prompt-input/utils.ts","../src/components/rich-text/prompt-input/plugins/ImperativeAPIPlugin.tsx","../src/components/rich-text/prompt-input/plugins/keyboard-shortcuts.ts","../src/components/rich-text/prompt-input/plugins/KeyboardShortcutPlugin.tsx","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/constants.ts","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/getSortedMenuOptions.ts","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenuItem.tsx","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenu.tsx","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.tsx","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/checkForTriggers.ts","../src/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.tsx","../src/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.tsx","../src/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.tsx","../src/components/rich-text/prompt-input/theme/prompt-input-theme.ts","../src/components/rich-text/prompt-input/prompt-input.tsx","../src/components/rich-text/shared/plugins/StateUpdatePlugin.tsx","../src/components/rich-text/rich-message/rich-message.tsx"],"sourcesContent":["export const INSERT_REFERENCE = \"INSERT_REFERENCE\";\nexport const INSERT_BLOCK = \"INSERT_BLOCK\";\n","import { createCommand } from \"lexical\";\nimport { INSERT_BLOCK, INSERT_REFERENCE } from \"./events\";\n\nexport const INSERT_REFERENCE_COMMAND = createCommand(INSERT_REFERENCE);\n\nexport const INSERT_BLOCK_COMMAND = createCommand(INSERT_BLOCK);\n","import { addClassNamesToElement } from \"@lexical/utils\";\nimport {\n $createParagraphNode,\n type DOMConversionMap,\n type DOMConversionOutput,\n type DOMExportOutput,\n type EditorConfig,\n type ElementFormatType,\n ElementNode,\n isHTMLElement,\n type LexicalEditor,\n type ParagraphNode,\n type RangeSelection,\n type SerializedElementNode,\n} from \"lexical\";\n\nexport type SerializedCommentNode = SerializedElementNode;\n\nfunction convertCommentElement(element: HTMLElement): DOMConversionOutput {\n const node = $createCommentNode();\n if (element.style !== null) {\n node.setFormat(element.style.textAlign as ElementFormatType);\n }\n return { node };\n}\n\nexport class CommentNode extends ElementNode {\n static getType(): string {\n return \"comment\";\n }\n\n static clone(node: CommentNode): CommentNode {\n return new CommentNode(node.__key);\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const element = document.createElement(\"blockquote\");\n addClassNamesToElement(element, config.theme.comment);\n return element;\n }\n\n updateDOM(): boolean {\n return false;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n blockquote: () => ({\n conversion: convertCommentElement,\n priority: 0,\n }),\n };\n }\n\n exportDOM(editor: LexicalEditor): DOMExportOutput {\n const { element } = super.exportDOM(editor);\n\n if (element && isHTMLElement(element)) {\n if (this.isEmpty()) {\n element.append(document.createElement(\"br\"));\n }\n\n const formatType = this.getFormatType();\n element.style.textAlign = formatType;\n\n const direction = this.getDirection();\n if (direction) {\n element.dir = direction;\n }\n }\n\n return {\n element,\n };\n }\n\n static importJSON(serializedNode: SerializedCommentNode): CommentNode {\n const node = $createCommentNode();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n exportJSON(): SerializedElementNode {\n return {\n ...super.exportJSON(),\n type: \"comment\",\n };\n }\n\n getTextContent(): string {\n const originalText = super.getTextContent();\n // escape { and } symbols\n const withEscapedReferences = originalText.replace(/([{}])/g, \"\\\\$1\");\n return `{{! ${withEscapedReferences} }}`;\n }\n\n // mutation\n\n insertNewAfter(_: RangeSelection, restoreSelection?: boolean): ParagraphNode {\n const newBlock = $createParagraphNode();\n const direction = this.getDirection();\n newBlock.setDirection(direction);\n this.insertAfter(newBlock, restoreSelection);\n return newBlock;\n }\n\n collapseAtStart(): true {\n const paragraph = $createParagraphNode();\n const children = this.getChildren();\n children.forEach((child) => {\n paragraph.append(child);\n });\n this.replace(paragraph);\n return true;\n }\n}\n\nexport function $createCommentNode(): CommentNode {\n return new CommentNode();\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $setBlocksType } from \"@lexical/selection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_LOW, type TextNode } from \"lexical\";\nimport { useEffect } from \"react\";\nimport { INSERT_BLOCK_COMMAND } from \"../../../commands\";\nimport { $createCommentNode } from \"../nodes/CommentNode/CommentNode\";\n\nexport const insertCommentBlock = (_blockType: string, nodeToReplace?: TextNode) => {\n const selection = $getSelection();\n const commentNode = $createCommentNode();\n\n if (nodeToReplace) {\n const nodeParent = nodeToReplace.getParent();\n nodeParent?.replace(commentNode, true);\n nodeToReplace.remove();\n commentNode.selectEnd();\n return;\n }\n\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, $createCommentNode);\n }\n};\n\ntype InsertBlockEvent = {\n optionId: string;\n nodeToReplace?: TextNode;\n};\n\nexport function useCommentCommands(): null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n INSERT_BLOCK_COMMAND,\n (event: InsertBlockEvent) => {\n const { optionId, nodeToReplace } = event;\n insertCommentBlock(optionId, nodeToReplace);\n return false;\n },\n COMMAND_PRIORITY_LOW,\n ),\n );\n }, [editor]);\n\n return null;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $createParagraphNode } from \"lexical\";\nimport { useEffect } from \"react\";\nimport { CommentNode } from \"../nodes/CommentNode/CommentNode\";\n\nexport const useCommentSchema = () => {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return mergeRegister(\n editor.registerNodeTransform(CommentNode, (node) => {\n const children = node.getChildren();\n\n /**\n * Comment nodes cannot have other comments as children\n */\n const invalidChildren = children.filter((child) => child.getType() === \"comment\");\n\n if (invalidChildren.length > 0) {\n editor.update(() => {\n invalidChildren.forEach((child) => {\n child.replace($createParagraphNode(), true);\n });\n });\n }\n }),\n );\n }, [editor]);\n};\n","import { useCommentCommands } from \"./hooks/useCommentCommands\";\nimport { useCommentSchema } from \"./hooks/useCommentSchema\";\n\nexport function CommentPlugin(): null {\n useCommentSchema();\n useCommentCommands();\n return null;\n}\n","import { $isElementNode, type RootNode } from \"lexical\";\n\nexport const $getTextContent = (root: RootNode) => {\n let textContent = \"\";\n const children = root.getChildren();\n const childrenLength = children.length;\n for (let i = 0; i < childrenLength; i++) {\n const child = children[i];\n textContent += child.getTextContent();\n if ($isElementNode(child) && i !== childrenLength - 1 && !child.isInline()) {\n textContent += \"\\n\";\n }\n }\n return textContent;\n};\n\ntype SerializedNode = {\n type?: string;\n text?: string;\n name?: string;\n referenceId?: string;\n children?: SerializedNode[];\n};\n\ntype SerializedRoot = {\n root?: SerializedNode;\n};\n\nconst getReferenceMarker = (node: SerializedNode) => {\n if (node.type !== \"reference\") return null;\n return `#${node.name ?? node.referenceId ?? \"\"}`;\n};\n\nconst shouldAppendParagraphBreak = (node: SerializedNode) => {\n return node.type === \"paragraph\" && Boolean(node.children?.length);\n};\n\nconst traverseSerializedNode = (node: SerializedNode): string => {\n if (node.type === \"comment\") {\n return \"\";\n }\n\n const referenceMarker = getReferenceMarker(node);\n if (referenceMarker !== null) {\n return referenceMarker;\n }\n\n let text = typeof node.text === \"string\" ? node.text : \"\";\n const children = node.children;\n if (!Array.isArray(children)) return text;\n\n const childrenLength = children.length;\n for (let i = 0; i < childrenLength; i += 1) {\n const child = children[i];\n if (child.type === \"comment\") {\n if (i !== childrenLength - 1) {\n text += \"\\n\";\n }\n continue;\n }\n\n text += traverseSerializedNode(child);\n if (shouldAppendParagraphBreak(child)) {\n text += \"\\n\";\n }\n }\n\n return text;\n};\n\nexport const getTextFromSerializedEditorState = (state: string): string => {\n try {\n const parsed = JSON.parse(state) as SerializedRoot;\n return traverseSerializedNode(parsed.root ?? {});\n } catch {\n return \"\";\n }\n};\n\nexport const emptyEditorState = {\n root: {\n direction: \"ltr\",\n format: \"\",\n indent: 0,\n type: \"root\",\n version: 1,\n children: [\n {\n type: \"paragraph\",\n version: 1,\n format: \"\",\n indent: 0,\n textFormat: undefined,\n direction: null,\n children: [],\n },\n ],\n },\n};\n\nexport function generateEditorStateFromString(input = \"\") {\n if (!input.trim()) {\n return JSON.parse(JSON.stringify(emptyEditorState));\n }\n\n // Split on line breaks → one paragraph per line\n const paragraphs = input.split(/\\r?\\n/);\n\n const children = paragraphs.map((line) => ({\n type: \"paragraph\",\n version: 1,\n format: \"\",\n indent: 0,\n textFormat: undefined,\n direction: null,\n children: line\n ? [\n {\n type: \"text\",\n version: 1,\n text: line,\n format: \"\",\n detail: 0,\n mode: \"normal\",\n style: \"\",\n },\n ]\n : [],\n }));\n\n return {\n root: {\n direction: \"ltr\",\n format: \"\",\n indent: 0,\n type: \"root\",\n version: 1,\n children,\n },\n };\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useImperativeHandle } from \"react\";\nimport { generateEditorStateFromString, getTextFromSerializedEditorState } from \"../utils\";\n\nexport interface PromptEditorRef {\n setEditorValue: (value: string) => void;\n}\n\nexport function ImperativeAPIPlugin({\n editorRef,\n previousTextRef,\n}: {\n editorRef: React.ForwardedRef<PromptEditorRef>;\n previousTextRef: React.MutableRefObject<string>;\n}) {\n const [editor] = useLexicalComposerContext();\n\n useImperativeHandle(\n editorRef,\n () => ({\n setEditorValue: (value: string) => {\n const state = editor.parseEditorState(JSON.stringify(generateEditorStateFromString(value)));\n editor.setEditorState(state);\n previousTextRef.current = getTextFromSerializedEditorState(value);\n editor.focus(undefined, { defaultSelection: \"rootEnd\" });\n },\n }),\n [editor, previousTextRef],\n );\n\n return null;\n}\n","type KeyDownLikeEvent = {\n key: string;\n ctrlKey: boolean;\n metaKey: boolean;\n shiftKey: boolean;\n altKey: boolean;\n};\n\nexport const shouldSubmitOnEnter = (event: KeyDownLikeEvent) => {\n if (event.key !== \"Enter\") return false;\n\n return !event.ctrlKey && !event.metaKey && !event.shiftKey && !event.altKey;\n};\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { COMMAND_PRIORITY_HIGH, KEY_DOWN_COMMAND } from \"lexical\";\nimport { useEffect } from \"react\";\nimport { shouldSubmitOnEnter } from \"./keyboard-shortcuts\";\n\nexport interface KeyboardShortcutPluginProps {\n onSubmit?: () => void;\n}\n\nexport function KeyboardShortcutPlugin({ onSubmit }: KeyboardShortcutPluginProps) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (shouldSubmitOnEnter(event)) {\n event.preventDefault();\n onSubmit?.();\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_HIGH,\n );\n }, [editor, onSubmit]);\n\n return null;\n}\n","import type { MenuOptionGroup } from \"./ReferenceMenuOption\";\n\nexport const menuSortOrder: MenuOptionGroup[] = [\"table\", \"connector\"];\n","import { menuSortOrder } from \"../constants\";\nimport type { MenuOptionGroup, ReferenceMenuOption } from \"../ReferenceMenuOption\";\n\nexport const getSortedMenuOptions = (options: ReferenceMenuOption[]) => {\n const sortedOptions = options\n .sort((a, b) => menuSortOrder.indexOf(a.group) - menuSortOrder.indexOf(b.group))\n .map((option, index) => ({ ...option, index }) as ReferenceMenuOption);\n\n const groupedOptions = sortedOptions.reduce(\n (acc, option) => {\n const bucket = acc[option.group] ?? [];\n bucket.push(option);\n acc[option.group] = bucket;\n return acc;\n },\n {} as Record<MenuOptionGroup, ReferenceMenuOption[]>,\n );\n\n return groupedOptions;\n};\n","import { Flex, Text, Tooltip } from \"@chakra-ui/react\";\n\ninterface ReferenceMenuItemProps {\n id: string;\n isSelected: boolean;\n onClick: () => void;\n onMouseEnter: () => void;\n primaryLabel: string;\n secondaryLabel?: string;\n setRefElement: (element: HTMLDivElement) => void;\n tabIndex: number;\n}\n\nexport function ReferenceMenuItem(props: ReferenceMenuItemProps) {\n const { id, isSelected, onClick, onMouseEnter, setRefElement, secondaryLabel, primaryLabel, tabIndex = -1 } = props;\n\n return (\n <Flex\n direction=\"column\"\n cursor=\"pointer\"\n gap=\"2xs\"\n padding=\"2xs\"\n paddingX=\"sm\"\n bg={isSelected ? \"bg.active\" : \"transparent\"}\n _hover={{ bg: isSelected ? \"bg.active\" : \"bg.hover\" }}\n tabIndex={tabIndex}\n ref={setRefElement}\n role=\"option\"\n aria-selected={isSelected}\n id={id}\n onMouseEnter={onMouseEnter}\n onClick={onClick}\n >\n <Tooltip.Root>\n <Tooltip.Trigger>\n <Text mt=\"1px\" lineClamp={1} textOverflow=\"ellipsis\" textStyle=\"label/M/regular\">\n {primaryLabel}\n </Text>\n </Tooltip.Trigger>\n <Tooltip.Positioner>\n <Tooltip.Content>{primaryLabel}</Tooltip.Content>\n </Tooltip.Positioner>\n </Tooltip.Root>\n {secondaryLabel && (\n <Text lineClamp={2} textOverflow=\"ellipsis\" textStyle=\"label/S/regular\" color=\"fg.muted\">\n {secondaryLabel}\n </Text>\n )}\n </Flex>\n );\n}\n","import { Box, Text } from \"@chakra-ui/react\";\nimport { useEffect } from \"react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport type { ReferenceMenuOption } from \"../../ReferenceMenuOption\";\nimport { getSortedMenuOptions } from \"../../utils/getSortedMenuOptions\";\nimport { ReferenceMenuItem } from \"./ReferenceMenuItem\";\n\ninterface ReferenceMenuProps {\n options: ReferenceMenuOption[];\n selectedIndex: number | null;\n onSelectItem: (option: ReferenceMenuOption, index: number) => void;\n onMouseEnterItem: (index: number) => void;\n}\n\nexport const ReferenceMenu = (props: ReferenceMenuProps) => {\n const { options, selectedIndex, onSelectItem, onMouseEnterItem } = props;\n const { table = [], connector = [] } = getSortedMenuOptions(options);\n\n const hasResults = [...table, ...connector].length;\n\n /** scroll to the selected item if necessary */\n useEffect(() => {\n document\n .getElementById(`typeahead-item-${selectedIndex}`)\n ?.scrollIntoView({ behavior: \"instant\", block: \"nearest\" });\n }, [selectedIndex]);\n\n return (\n <ScrollArea\n zIndex=\"1000\"\n position=\"absolute\"\n layerStyle=\"modal\"\n maxHeight={\"24rem\"}\n showHorizontalScrollbar={false}\n minWidth={{\n base: \"100vw\",\n md: \"264px\",\n }}\n >\n {!hasResults && <Text>No results</Text>}\n {!!table.length && (\n <>\n <Text paddingTop=\"xs\" paddingBottom=\"2xs\" paddingX=\"sm\" color=\"fg.muted\" textStyle=\"label/S/medium\">\n Tables\n </Text>\n <Box>\n {table.map((option) => {\n return (\n <ReferenceMenuItem\n id={`typeahead-item-${option.index}`}\n isSelected={selectedIndex === option.index}\n onClick={() => onSelectItem(option, option.index)}\n onMouseEnter={() => onMouseEnterItem(option.index)}\n key={option.id}\n primaryLabel={option.name}\n secondaryLabel={option.description}\n setRefElement={option.setRefElement}\n tabIndex={-1}\n />\n );\n })}\n </Box>\n </>\n )}\n {!!connector.length && (\n <>\n <Text paddingTop=\"xs\" paddingBottom=\"2xs\" paddingX=\"sm\" color=\"fg.muted\" textStyle=\"label/S/medium\">\n Data Sources\n </Text>\n <Box>\n {connector.map((option) => {\n return (\n <ReferenceMenuItem\n id={`typeahead-item-${option.index}`}\n isSelected={selectedIndex === option.index}\n onClick={() => onSelectItem(option, option.index)}\n onMouseEnter={() => onMouseEnterItem(option.index)}\n key={option.id}\n primaryLabel={option.name}\n secondaryLabel={option.description}\n setRefElement={option.setRefElement}\n tabIndex={-1}\n />\n );\n })}\n </Box>\n </>\n )}\n </ScrollArea>\n );\n};\n","import type { ReferenceResourceType } from \"../../../prompt-input\";\nimport type { ReferenceMenuOption } from \"../ReferenceMenuOption\";\n\nconst localFilter = (data: ReferenceMenuOption[], q: string) =>\n data.filter((m) => m.name.replace(/ /g, \"_\").toLowerCase().includes(q.toLowerCase()));\n\n/**\n * Search across all resources and menu options\n *\n * @param queryString\n * @returns\n */\nexport function useContextLookup(\n queryString: string | null,\n items: {\n resourceId: string;\n resourceType: ReferenceResourceType;\n name: string;\n description?: string;\n }[] = [],\n) {\n const baseOptions: ReferenceMenuOption[] = items.map(\n (res, index): ReferenceMenuOption => ({\n id: res.resourceId,\n key: res.resourceId,\n index,\n group: res.resourceType,\n name: res.name,\n description: res.description,\n setRefElement: () => {},\n }),\n );\n\n if (queryString == null || queryString === \"\") {\n return baseOptions;\n }\n\n return localFilter(baseOptions, queryString);\n}\n","import type { MenuTextMatch } from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\n\nconst VALID_PUNCTUATION = \"\\\\.\\\\-<>_:\";\nconst TRIGGERS = [\"#\"].join(\"\");\n\nconst VALID_CHARS = `[^${TRIGGERS}${VALID_PUNCTUATION}\\\\s]`;\nconst VALID_JOINS = `(?:[${VALID_PUNCTUATION}]|)`;\n\nconst LENGTH_LIMIT = 75;\n\nconst TriggerRegex = new RegExp(`(^|\\\\s|\\\\()([${TRIGGERS}]((?:${VALID_CHARS}${VALID_JOINS}){0,${LENGTH_LIMIT}}))$`);\n\nconst AliasRegex = new RegExp(`(^|\\\\s|\\\\()([${TRIGGERS}]((?:${VALID_CHARS}){0,${LENGTH_LIMIT}}))$`);\n\n/**\n * lexical will run this function on text nodes\n *\n * @param text\n * @param minMatchLength\n * @returns\n */\nexport function checkForTriggers(text: string, minMatchLength: number): MenuTextMatch | null {\n let match = TriggerRegex.exec(text);\n\n if (match === null) {\n match = AliasRegex.exec(text);\n }\n\n if (match !== null) {\n // The strategy ignores leading whitespace but we need to know it's\n // length to add it to the leadOffset\n const maybeLeadingWhitespace = match[1];\n const matchingString = match[3];\n\n if (matchingString.length >= minMatchLength) {\n return {\n leadOffset: match.index + maybeLeadingWhitespace.length,\n matchingString,\n replaceableString: match[2],\n };\n }\n }\n\n return null;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { LexicalTypeaheadMenuPlugin } from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\nimport type { TextNode } from \"lexical\";\nimport { useState } from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { INSERT_REFERENCE_COMMAND } from \"../../commands\";\nimport type { ReferenceResourceType } from \"../../prompt-input\";\nimport { ReferenceMenu } from \"./components/ReferenceMenu/ReferenceMenu\";\nimport { useContextLookup } from \"./hooks/useContextLookup\";\nimport type { ReferenceMenuOption } from \"./ReferenceMenuOption\";\nimport { checkForTriggers } from \"./utils/checkForTriggers\";\n\nconst SUGGESTION_LIST_LENGTH_LIMIT = 20;\n\ntype Props = {\n items?: Array<{\n resourceId: string;\n resourceType: ReferenceResourceType;\n name: string;\n description?: string;\n }>;\n};\n\nexport function ReferenceMenuPlugin({ items = [] }: Props) {\n const [queryString, setQueryString] = useState<string | null>(null);\n const [editor] = useLexicalComposerContext();\n const searchResults = useContextLookup(queryString, items);\n\n /**\n * triggers when the user selects an option in the context menu\n */\n const onSelectOption = (\n selectedOption: ReferenceMenuOption,\n nodeToReplace: TextNode | null,\n closeMenu: () => void,\n ) => {\n editor.update(() => {\n if (!nodeToReplace) return;\n\n editor.dispatchCommand(INSERT_REFERENCE_COMMAND, {\n resourceId: selectedOption.id,\n resourceType: selectedOption.group,\n name: selectedOption.name,\n nodeToReplace,\n });\n\n closeMenu();\n });\n };\n\n /**\n * checks text nodes and return nodes matching the trigger\n */\n const checkForTrigger = (text: string) => {\n return checkForTriggers(text, 0);\n };\n\n /**\n * define the options to display in the context menu\n */\n const menuOptions = searchResults.slice(0, SUGGESTION_LIST_LENGTH_LIMIT);\n\n return (\n <LexicalTypeaheadMenuPlugin<ReferenceMenuOption>\n onQueryChange={setQueryString}\n onSelectOption={onSelectOption}\n triggerFn={checkForTrigger}\n options={menuOptions}\n menuRenderFn={(anchorElementRef, { options, selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }) => {\n if (!anchorElementRef.current) return null;\n return ReactDOM.createPortal(\n <ReferenceMenu\n options={options}\n selectedIndex={selectedIndex}\n onSelectItem={(option, i) => {\n setHighlightedIndex(i);\n selectOptionAndCleanUp(option);\n }}\n onMouseEnterItem={(i) => {\n setHighlightedIndex(i);\n }}\n />,\n anchorElementRef.current,\n );\n }}\n />\n );\n}\n","import { addClassNamesToElement } from \"@lexical/utils\";\nimport {\n type DOMConversionMap,\n type DOMConversionOutput,\n type DOMExportOutput,\n type EditorConfig,\n type LexicalEditor,\n type NodeKey,\n type SerializedTextNode,\n type Spread,\n TextNode,\n} from \"lexical\";\n\ntype SerializedReferenceNode = Spread<\n {\n referenceId: string;\n name: string;\n },\n SerializedTextNode\n>;\n\nexport class ReferenceNode extends TextNode {\n __referenceId: string;\n __name: string;\n\n static getType(): string {\n return \"reference\";\n }\n\n static clone(node: ReferenceNode): ReferenceNode {\n return new ReferenceNode(node.__referenceId, node.__name, node.__key);\n }\n\n constructor(referenceId: string, name: string, key?: NodeKey) {\n super(name, key);\n this.__referenceId = referenceId;\n this.__name = name;\n }\n\n isKeyboardSelectable(): boolean {\n return false;\n }\n\n canBeEmpty(): boolean {\n return false;\n }\n\n canInsertTextAfter(): boolean {\n return false;\n }\n\n canInsertTextBefore(): boolean {\n return false;\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const span = document.createElement(\"span\");\n addClassNamesToElement(span, config.theme.reference);\n span.setAttribute(\"data-reference-id\", this.__referenceId);\n span.setAttribute(\"data-name\", this.__name);\n span.textContent = `#${this.__name}`;\n return span;\n }\n\n updateDOM(prevNode: ReferenceNode, dom: HTMLElement): boolean {\n if (prevNode.__name !== this.__name || prevNode.__referenceId !== this.__referenceId) {\n dom.setAttribute(\"data-reference-id\", this.__referenceId);\n dom.setAttribute(\"data-name\", this.__name);\n dom.textContent = `#${this.__name}`;\n }\n\n return false;\n }\n\n exportDOM(_editor: LexicalEditor): DOMExportOutput {\n const el = document.createElement(\"span\");\n el.setAttribute(\"data-reference-id\", this.__referenceId);\n el.setAttribute(\"data-name\", this.__name);\n el.textContent = `#${this.__name}`;\n return { element: el };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n span: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-reference-id\") || !domNode.hasAttribute(\"data-name\")) {\n return null;\n }\n return {\n conversion: $convertReferenceElement,\n priority: 1,\n };\n },\n };\n }\n\n static importJSON(serializedNode: SerializedReferenceNode): ReferenceNode {\n const node = new ReferenceNode(serializedNode.referenceId, serializedNode.name);\n return node;\n }\n\n exportJSON(): SerializedReferenceNode {\n return {\n ...super.exportJSON(),\n type: \"reference\",\n referenceId: this.__referenceId,\n name: this.__name,\n };\n }\n\n getTextContent(): string {\n return `#${this.__name}`;\n }\n}\n\nfunction $convertReferenceElement(domNode: HTMLElement): DOMConversionOutput | null {\n const referenceId = domNode.getAttribute(\"data-reference-id\");\n const name = domNode.getAttribute(\"data-name\");\n if (!referenceId || !name) return null;\n return { node: $createReferenceNode(referenceId, name) };\n}\n\nexport function $createReferenceNode(referenceId: string, name: string): ReferenceNode {\n return new ReferenceNode(referenceId, name);\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { COMMAND_PRIORITY_LOW, type LexicalNode } from \"lexical\";\nimport { type PropsWithChildren, useEffect } from \"react\";\nimport { INSERT_REFERENCE_COMMAND } from \"../../commands\";\nimport type { ReferenceResourceType } from \"../../prompt-input\";\nimport { $createReferenceNode } from \"./nodes/ReferenceNode/ReferenceNode\";\n\nexport const $insertExistingReference = (nodeToReplace: LexicalNode, resourceId: string, name: string) => {\n const refNode = $createReferenceNode(resourceId, name);\n\n if (nodeToReplace) {\n nodeToReplace?.replace(refNode);\n nodeToReplace.remove();\n refNode.selectEnd();\n return;\n }\n};\n\nexport function ReferencePlugin(\n props: PropsWithChildren<{ onAddReference?: (resourceId: string, resourceType: ReferenceResourceType) => void }>,\n) {\n const { onAddReference } = props;\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n INSERT_REFERENCE_COMMAND,\n (event: {\n resourceId: string;\n resourceType: ReferenceResourceType;\n name: string;\n nodeToReplace: LexicalNode;\n }) => {\n const { resourceId, resourceType, name, nodeToReplace } = event;\n\n editor.update(() => {\n $insertExistingReference(nodeToReplace, resourceId, name);\n });\n\n onAddReference?.(resourceId, resourceType);\n return true;\n },\n COMMAND_PRIORITY_LOW,\n ),\n );\n }, [editor, onAddReference]);\n\n return null;\n}\n","import type { EditorThemeClasses } from \"lexical\";\nimport baseTheme from \"../../theme/rich-text-theme\";\nimport \"./prompt-input-theme.css\";\n\nconst promptInputTheme: EditorThemeClasses = {\n ...baseTheme,\n // Override paragraph class to remove margins specifically for prompt input\n paragraph: \"rich-text__p rich-text__p--no-margin\",\n};\n\nexport default promptInputTheme;\n","import { Flex, Kbd, Text } from \"@chakra-ui/react\";\nimport { MarkNode } from \"@lexical/mark\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { $getRoot } from \"lexical\";\nimport type { ReactElement } from \"react\";\nimport { type ForwardRefRenderFunction, forwardRef, useRef } from \"react\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport ToggleEditablePlugin from \"../shared/plugins/ToggleEditablePlugin\";\nimport { TreeViewPlugin } from \"../shared/plugins/TreeViewPlugin/TreeViewPlugin\";\nimport { CommentPlugin } from \"./plugins/CommentPlugin/CommentPlugin\";\nimport { CommentNode } from \"./plugins/CommentPlugin/nodes/CommentNode/CommentNode\";\nimport { ImperativeAPIPlugin, type PromptEditorRef } from \"./plugins/ImperativeAPIPlugin\";\nimport { KeyboardShortcutPlugin } from \"./plugins/KeyboardShortcutPlugin\";\nimport { ReferenceMenuPlugin } from \"./plugins/ReferenceMenuPlugin/ReferenceMenuPlugin\";\nimport { ReferenceNode } from \"./plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode\";\nimport { ReferencePlugin } from \"./plugins/ReferencePlugin/ReferencePlugin\";\nimport theme from \"./theme/prompt-input-theme\";\nimport { $getTextContent, getTextFromSerializedEditorState } from \"./utils\";\n\nexport type ReferenceResourceType = \"table\" | \"connector\" | \"file\";\n\nexport type ReferenceItem = {\n resourceId: string;\n resourceType: ReferenceResourceType;\n name: string;\n description?: string;\n};\n\nexport interface PromptEditorProps {\n defaultState: string;\n debug?: boolean;\n isEditable?: boolean;\n placeholder?: ReactElement | ((isEditable: boolean) => ReactElement | null);\n onChange?: (text: string, state: object) => void;\n onError?: (error: Error) => void;\n onSubmit?: () => void;\n /** Dynamic list of references (tables, connectors) shown when typing # */\n references?: ReferenceItem[];\n /** Optional app callback when a reference is inserted */\n onAddReference?: (resourceId: string, resourceType: ReferenceResourceType) => void;\n}\n\nconst nodes = [CommentNode, MarkNode, ReferenceNode];\n\nexport const BasePromptEditor: ForwardRefRenderFunction<PromptEditorRef, PromptEditorProps> = (props, ref) => {\n const { defaultState, debug = false, isEditable = true, placeholder } = props;\n const { onChange, onError = () => {}, onSubmit, references = [], onAddReference } = props;\n\n const initialConfig = {\n namespace: \"PROMPT_EDITOR\",\n nodes,\n editorState: defaultState,\n editable: isEditable,\n onError,\n theme,\n };\n\n const previousTextRef = useRef<string>(getTextFromSerializedEditorState(defaultState));\n const placeholderNode: ReactElement | ((isEditable: boolean) => ReactElement | null) = placeholder ?? (\n <Text textStyle=\"label/M/regular\" color=\"fg.subtle\" pointerEvents=\"none\" position=\"absolute\" top=\"0\">\n Type your query here or press <Kbd color=\"fg.subtle\">#</Kbd> to add a reference.\n </Text>\n );\n\n return (\n <Flex direction=\"column\" justifyContent=\"space-between\" width=\"100%\" position=\"relative\">\n <LexicalComposer initialConfig={initialConfig}>\n <HistoryPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth />}\n placeholder={placeholderNode}\n ErrorBoundary={LexicalErrorBoundary}\n />\n <OnChangePlugin\n ignoreSelectionChange\n ignoreHistoryMergeTagChange={false}\n onChange={(editorState) => {\n editorState.read(() => {\n // handle comment blocks properly\n const root = $getRoot();\n const rawText = $getTextContent(root);\n\n if (rawText !== previousTextRef.current) {\n previousTextRef.current = rawText;\n onChange?.(rawText, editorState.toJSON());\n }\n });\n }}\n />\n <ImperativeAPIPlugin editorRef={ref} previousTextRef={previousTextRef} />\n <ToggleEditablePlugin isEditable={isEditable} />\n <CommentPlugin />\n <KeyboardShortcutPlugin onSubmit={onSubmit} />\n <ReferenceMenuPlugin items={references} />\n <ReferencePlugin onAddReference={onAddReference} />\n {debug ? <TreeViewPlugin /> : \"\"}\n </LexicalComposer>\n </Flex>\n );\n};\n\nexport const PromptEditor = forwardRef(BasePromptEditor);\n\nexport type { PromptEditorRef } from \"./plugins/ImperativeAPIPlugin\";\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useEffect } from \"react\";\n\ntype StateUpdatePluginProps = {\n value: string;\n onUpdate: (value: string) => void;\n};\n\nexport default function StateUpdatePlugin({ value, onUpdate }: StateUpdatePluginProps) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n editor.update(() => onUpdate(value), { tag: \"history-merge\" });\n }, [value, editor, onUpdate]);\n\n return null;\n}\n","import \"../theme/rich-text-theme.css\";\n\nimport { Flex } from \"@chakra-ui/react\";\nimport { ClickableLinkPlugin } from \"@lexical/react/LexicalClickableLinkPlugin\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HorizontalRulePlugin } from \"@lexical/react/LexicalHorizontalRulePlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { TabIndentationPlugin } from \"@lexical/react/LexicalTabIndentationPlugin\";\nimport { $addUpdateTag, $getRoot } from \"lexical\";\nimport { useRef } from \"react\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport { editorNodes, editorTheme } from \"../shared/editor-config\";\nimport { createMarkdownSourceDocument } from \"../shared/markdown-source-document\";\nimport type { MarkdownUrlResolver } from \"../shared/markdown-url\";\nimport { MarkdownUrlProvider } from \"../shared/markdown-url-context\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { CodeHighlightingPlugin } from \"../shared/plugins/CodePlugin/CodeHighlightingPlugin\";\nimport { EquationPlugin } from \"../shared/plugins/EquationPlugin/EquationPlugin\";\nimport StateUpdatePlugin from \"../shared/plugins/StateUpdatePlugin\";\nimport ToggleEditablePlugin from \"../shared/plugins/ToggleEditablePlugin\";\nimport { TreeViewPlugin } from \"../shared/plugins/TreeViewPlugin/TreeViewPlugin\";\nimport { splitFrontmatter } from \"../utils/markdown\";\n\nexport interface RichMessageProps {\n debug?: boolean;\n defaultState: string;\n fullWidth?: boolean;\n isEditable?: boolean;\n resolveMarkdownUrl?: MarkdownUrlResolver;\n onChange?: (value: string) => void;\n}\n\nconst SOURCE_IMPORT_TAG = \"markdown-source-import\";\n\nexport function RichMessage(props: RichMessageProps) {\n const {\n debug = false,\n defaultState = \"\",\n fullWidth = false,\n isEditable = false,\n resolveMarkdownUrl,\n onChange,\n } = props;\n const { frontmatter, body } = splitFrontmatter(defaultState);\n const shouldTrackChanges = isEditable && Boolean(onChange);\n const sourceDocumentRef = useRef<ReturnType<typeof createMarkdownSourceDocument> | null>(null);\n sourceDocumentRef.current ??= createMarkdownSourceDocument(body, resolveMarkdownUrl);\n\n const initialConfig = {\n namespace: \"RICH_MESSAGE\",\n nodes: editorNodes,\n editorState: () => {\n $addUpdateTag(SOURCE_IMPORT_TAG);\n sourceDocumentRef.current?.importToLexical();\n },\n onError: (error: Error) => console.error(error),\n editable: isEditable,\n theme: editorTheme,\n };\n\n return (\n <Flex\n className=\"rich-text\"\n data-rich-message=\"true\"\n justifyContent=\"space-between\"\n width=\"100%\"\n maxWidth=\"100%\"\n height=\"100%\"\n position=\"relative\"\n direction=\"column\"\n overflow=\"hidden\"\n >\n <MarkdownUrlProvider resolver={resolveMarkdownUrl}>\n <LexicalComposer initialConfig={initialConfig}>\n <StateUpdatePlugin\n value={body}\n onUpdate={(value: string) => {\n const sourceDocument = createMarkdownSourceDocument(value, resolveMarkdownUrl);\n sourceDocumentRef.current = sourceDocument;\n $addUpdateTag(SOURCE_IMPORT_TAG);\n sourceDocument.importToLexical();\n }}\n />\n <LinkPlugin />\n <ClickableLinkPlugin newTab />\n <ListPlugin />\n {isEditable ? <TabIndentationPlugin maxIndent={7} /> : null}\n <HorizontalRulePlugin />\n <CodeHighlightingPlugin />\n <ImportCodeBlocksPlugin />\n <EquationPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth={fullWidth} isRichMessage />}\n ErrorBoundary={LexicalErrorBoundary}\n />\n {shouldTrackChanges ? (\n <OnChangePlugin\n ignoreSelectionChange\n ignoreHistoryMergeTagChange={false}\n onChange={(editorState, _editor, tags) => {\n if (tags.has(SOURCE_IMPORT_TAG)) return;\n editorState.read(() => {\n const root = $getRoot();\n const markdownBody = sourceDocumentRef.current?.exportFromLexical(root) ?? \"\";\n onChange?.(frontmatter + markdownBody);\n });\n }}\n />\n ) : null}\n <ToggleEditablePlugin isEditable={isEditable} />\n {debug && <TreeViewPlugin />}\n </LexicalComposer>\n </MarkdownUrlProvider>\n </Flex>\n );\n}\n"],"names":["INSERT_REFERENCE","INSERT_BLOCK","INSERT_REFERENCE_COMMAND","createCommand","INSERT_BLOCK_COMMAND","convertCommentElement","element","node","$createCommentNode","style","setFormat","textAlign","CommentNode","ElementNode","getType","clone","__key","createDOM","config","document","createElement","addClassNamesToElement","theme","comment","updateDOM","importDOM","blockquote","conversion","priority","exportDOM","editor","isHTMLElement","isEmpty","append","formatType","getFormatType","direction","getDirection","dir","importJSON","serializedNode","format","setIndent","indent","setDirection","exportJSON","type","getTextContent","replace","insertNewAfter","_","restoreSelection","newBlock","$createParagraphNode","insertAfter","collapseAtStart","paragraph","children","getChildren","forEach","child","insertCommentBlock","_blockType","nodeToReplace","selection","$getSelection","commentNode","nodeParent","getParent","remove","selectEnd","$isRangeSelection","$setBlocksType","useCommentCommands","$","_c","useLexicalComposerContext","t0","t1","mergeRegister","registerCommand","_temp","COMMAND_PRIORITY_LOW","useEffect","event","optionId","useCommentSchema","registerNodeTransform","invalidChildren","filter","length","update","_temp2","child_0","CommentPlugin","$getTextContent","root","textContent","childrenLength","i","$isElementNode","isInline","getReferenceMarker","name","referenceId","shouldAppendParagraphBreak","Boolean","traverseSerializedNode","referenceMarker","text","Array","isArray","getTextFromSerializedEditorState","state","parsed","JSON","parse","emptyEditorState","version","textFormat","undefined","generateEditorStateFromString","input","trim","split","map","line","detail","mode","stringify","ImperativeAPIPlugin","editorRef","previousTextRef","t2","setEditorValue","value","parseEditorState","setEditorState","current","focus","defaultSelection","useImperativeHandle","shouldSubmitOnEnter","key","ctrlKey","metaKey","shiftKey","altKey","KeyboardShortcutPlugin","onSubmit","KEY_DOWN_COMMAND","preventDefault","COMMAND_PRIORITY_HIGH","menuSortOrder","getSortedMenuOptions","options","sort","a","b","indexOf","group","option","index","reduce","acc","bucket","push","ReferenceMenuItem","props","id","isSelected","onClick","onMouseEnter","setRefElement","secondaryLabel","primaryLabel","tabIndex","t3","bg","t4","jsx","Tooltip","Text","t5","t6","t7","t8","Flex","ReferenceMenu","selectedIndex","onSelectItem","onMouseEnterItem","table","connector","hasResults","getElementById","scrollIntoView","behavior","block","T0","ScrollArea","t9","Symbol","for","base","md","t10","t11","jsxs","Fragment","Box","description","t12","option_0","t13","localFilter","data","q","m","toLowerCase","includes","useContextLookup","queryString","items","baseOptions","res","resourceId","resourceType","VALID_PUNCTUATION","TRIGGERS","join","VALID_CHARS","VALID_JOINS","LENGTH_LIMIT","TriggerRegex","RegExp","AliasRegex","checkForTriggers","minMatchLength","match","exec","maybeLeadingWhitespace","matchingString","leadOffset","replaceableString","SUGGESTION_LIST_LENGTH_LIMIT","ReferenceMenuPlugin","setQueryString","useState","searchResults","selectedOption","closeMenu","dispatchCommand","onSelectOption","checkForTrigger","slice","menuOptions","LexicalTypeaheadMenuPlugin","anchorElementRef","selectOptionAndCleanUp","setHighlightedIndex","ReactDOM","createPortal","i_0","ReferenceNode","TextNode","__referenceId","__name","constructor","isKeyboardSelectable","canBeEmpty","canInsertTextAfter","canInsertTextBefore","span","reference","setAttribute","prevNode","dom","_editor","el","domNode","hasAttribute","$convertReferenceElement","getAttribute","$createReferenceNode","$insertExistingReference","refNode","ReferencePlugin","onAddReference","promptInputTheme","baseTheme","nodes","MarkNode","BasePromptEditor","ref","defaultState","debug","isEditable","placeholder","onChange","onError","references","namespace","editorState","editable","initialConfig","useRef","Kbd","placeholderNode","HistoryPlugin","ContentEditable","RichTextPlugin","LexicalErrorBoundary","OnChangePlugin","read","$getRoot","rawText","toJSON","ToggleEditablePlugin","t14","t15","t16","t17","t18","TreeViewPlugin","t19","LexicalComposer","PromptEditor","forwardRef","StateUpdatePlugin","onUpdate","tag","SOURCE_IMPORT_TAG","RichMessage","fullWidth","resolveMarkdownUrl","frontmatter","body","splitFrontmatter","shouldTrackChanges","sourceDocumentRef","createMarkdownSourceDocument","MarkdownUrlProvider","editorNodes","$addUpdateTag","importToLexical","error","console","editorTheme","sourceDocument","LinkPlugin","ClickableLinkPlugin","ListPlugin","TabIndentationPlugin","HorizontalRulePlugin","CodeHighlightingPlugin","ImportCodeBlocksPlugin","EquationPlugin","tags","has","markdownBody","exportFromLexical"],"mappings":"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"}
|
package/dist/rich-text.js
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { jsx as o, jsxs as Y } from "react/jsx-runtime";
|
|
2
2
|
import { c as U } from "react/compiler-runtime";
|
|
3
|
-
import { e as ee, a as te, C as oe, I as ne,
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
3
|
+
import { e as ee, a as te, C as oe, I as ne, E as re, b as ie } from "./markdown-CASvn1Z2.js";
|
|
4
|
+
import { Box as j, Flex as le, Table as T, Text as F, Textarea as se } from "@chakra-ui/react";
|
|
5
|
+
import { LexicalCollaboration as ae } from "@lexical/react/LexicalCollaborationContext";
|
|
6
|
+
import { CollaborationPluginV2__EXPERIMENTAL as ce } from "@lexical/react/LexicalCollaborationPlugin";
|
|
7
|
+
import { LexicalComposer as de } from "@lexical/react/LexicalComposer";
|
|
8
|
+
import { LexicalErrorBoundary as me } from "@lexical/react/LexicalErrorBoundary";
|
|
9
|
+
import { HorizontalRulePlugin as fe } from "@lexical/react/LexicalHorizontalRulePlugin";
|
|
10
|
+
import { LinkPlugin as pe } from "@lexical/react/LexicalLinkPlugin";
|
|
11
|
+
import { ListPlugin as ue } from "@lexical/react/LexicalListPlugin";
|
|
12
|
+
import { RichTextPlugin as he } from "@lexical/react/LexicalRichTextPlugin";
|
|
13
|
+
import { TabIndentationPlugin as ge } from "@lexical/react/LexicalTabIndentationPlugin";
|
|
14
|
+
import { useRef as be, useState as q, useEffect as J } from "react";
|
|
15
|
+
import { WebsocketProvider as xe } from "y-websocket";
|
|
16
|
+
import * as Se from "yjs";
|
|
17
|
+
import { C as ye, F as we } from "./markdown-editor-C4GCyebp.js";
|
|
18
|
+
import { M as Ze } from "./markdown-editor-C4GCyebp.js";
|
|
19
|
+
import { L as tt } from "./lazy-markdown-editor-CCOchoJX.js";
|
|
20
|
+
import { R as nt, P as rt, R as it, g as lt, a as st } from "./rich-message-DARuDVOX.js";
|
|
20
21
|
import { S as K } from "./browser-storage-DPtOQJx0.js";
|
|
21
22
|
function ve() {
|
|
22
23
|
const t = U(1);
|
|
@@ -57,7 +58,7 @@ function ve() {
|
|
|
57
58
|
}
|
|
58
59
|
` }), t[0] = e) : e = t[0], e;
|
|
59
60
|
}
|
|
60
|
-
function
|
|
61
|
+
function Ye(t) {
|
|
61
62
|
const e = U(42), {
|
|
62
63
|
roomId: n,
|
|
63
64
|
wsUrl: y,
|
|
@@ -68,10 +69,10 @@ function qe(t) {
|
|
|
68
69
|
} = t;
|
|
69
70
|
let l;
|
|
70
71
|
e[0] !== x ? (l = x === void 0 ? {} : x, e[0] = x, e[1] = l) : l = e[1];
|
|
71
|
-
const f = l, c = S === void 0 ? "Anonymous" : S, p = a === void 0 ? "#30bced" : a, s =
|
|
72
|
+
const f = l, c = S === void 0 ? "Anonymous" : S, p = a === void 0 ? "#30bced" : a, s = be(null), [r, h] = q(null), [C, L] = q(!1), [d] = q(Ee);
|
|
72
73
|
let g;
|
|
73
74
|
e[2] !== d || e[3] !== n || e[4] !== f || e[5] !== y ? (g = () => {
|
|
74
|
-
const G = new
|
|
75
|
+
const G = new xe(y, n, d, {
|
|
75
76
|
params: f,
|
|
76
77
|
connect: !1
|
|
77
78
|
});
|
|
@@ -102,25 +103,25 @@ function qe(t) {
|
|
|
102
103
|
e[13] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (B = /* @__PURE__ */ o(ve, {}), e[13] = B) : B = e[13];
|
|
103
104
|
const X = m;
|
|
104
105
|
let _;
|
|
105
|
-
e[14] !== d || e[15] !== n || e[16] !== X || e[17] !== p || e[18] !== c ? (_ = /* @__PURE__ */ o(
|
|
106
|
+
e[14] !== d || e[15] !== n || e[16] !== X || e[17] !== p || e[18] !== c ? (_ = /* @__PURE__ */ o(ce, { id: n, doc: d, provider: X, __shouldBootstrapUnsafe: !1, username: c, cursorColor: p }), e[14] = d, e[15] = n, e[16] = X, e[17] = p, e[18] = c, e[19] = _) : _ = e[19];
|
|
106
107
|
let W, A, M, N, H, I;
|
|
107
|
-
e[20] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (W = /* @__PURE__ */ o(
|
|
108
|
+
e[20] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (W = /* @__PURE__ */ o(pe, {}), A = /* @__PURE__ */ o(ue, {}), M = /* @__PURE__ */ o(ge, { maxIndent: 7 }), N = /* @__PURE__ */ o(fe, {}), H = /* @__PURE__ */ o(oe, {}), I = /* @__PURE__ */ o(ne, {}), e[20] = W, e[21] = A, e[22] = M, e[23] = N, e[24] = H, e[25] = I) : (W = e[20], A = e[21], M = e[22], N = e[23], H = e[24], I = e[25]);
|
|
108
109
|
let k;
|
|
109
|
-
e[26] !== r ? (k = /* @__PURE__ */ o(
|
|
110
|
+
e[26] !== r ? (k = /* @__PURE__ */ o(ye, { anchorElem: r }), e[26] = r, e[27] = k) : k = e[27];
|
|
110
111
|
let D;
|
|
111
|
-
e[28] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (D = /* @__PURE__ */ o(
|
|
112
|
+
e[28] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (D = /* @__PURE__ */ o(re, {}), e[28] = D) : D = e[28];
|
|
112
113
|
let O;
|
|
113
|
-
e[29] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (O = /* @__PURE__ */ o(
|
|
114
|
+
e[29] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (O = /* @__PURE__ */ o(ie, { fullWidth: !1 }), e[29] = O) : O = e[29];
|
|
114
115
|
let P;
|
|
115
116
|
e[30] !== w || e[31] !== C ? (P = C && w ? /* @__PURE__ */ o(j, { position: "absolute", top: "0", color: "fg.muted", pointerEvents: "none", userSelect: "none", textStyle: "paragraph/M/regular", children: w }) : null, e[30] = w, e[31] = C, e[32] = P) : P = e[32];
|
|
116
117
|
let z;
|
|
117
|
-
e[33] !== P ? (z = /* @__PURE__ */ o(
|
|
118
|
+
e[33] !== P ? (z = /* @__PURE__ */ o(he, { contentEditable: O, placeholder: P, ErrorBoundary: me }), e[33] = P, e[34] = z) : z = e[34];
|
|
118
119
|
let R;
|
|
119
|
-
e[35] !== r ? (R = r ? /* @__PURE__ */ o(
|
|
120
|
+
e[35] !== r ? (R = r ? /* @__PURE__ */ o(we, { anchorElem: r }) : null, e[35] = r, e[36] = R) : R = e[36];
|
|
120
121
|
let V;
|
|
121
|
-
return e[37] !== _ || e[38] !== k || e[39] !== z || e[40] !== R ? (V = /* @__PURE__ */ Y(
|
|
122
|
+
return e[37] !== _ || e[38] !== k || e[39] !== z || e[40] !== R ? (V = /* @__PURE__ */ Y(le, { ref: s, className: "rich-text", justifyContent: "space-between", width: "100%", maxWidth: "100%", height: "100%", position: "relative", direction: "column", overflow: "visible", children: [
|
|
122
123
|
B,
|
|
123
|
-
/* @__PURE__ */ o(
|
|
124
|
+
/* @__PURE__ */ o(de, { initialConfig: Q, children: /* @__PURE__ */ Y(ae, { children: [
|
|
124
125
|
_,
|
|
125
126
|
W,
|
|
126
127
|
A,
|
|
@@ -139,9 +140,9 @@ function Ce(t) {
|
|
|
139
140
|
return console.error(t);
|
|
140
141
|
}
|
|
141
142
|
function Ee() {
|
|
142
|
-
return new
|
|
143
|
+
return new Se.Doc();
|
|
143
144
|
}
|
|
144
|
-
const $ = "calc(var(--chakra-font-sizes-sm) * var(--rich-text-font-scale))", Te = (t) => t == null ? "-" : typeof t == "string" ? t.length ? t : "-" : typeof t == "number" || typeof t == "boolean" ? String(t).toUpperCase() : t instanceof Date ? t.toISOString() : JSON.stringify(t),
|
|
145
|
+
const $ = "calc(var(--chakra-font-sizes-sm) * var(--rich-text-font-scale))", Te = (t) => t == null ? "-" : typeof t == "string" ? t.length ? t : "-" : typeof t == "number" || typeof t == "boolean" ? String(t).toUpperCase() : t instanceof Date ? t.toISOString() : JSON.stringify(t), Ue = (t) => {
|
|
145
146
|
const e = U(8), {
|
|
146
147
|
defaultCode: n,
|
|
147
148
|
isEditable: y,
|
|
@@ -150,7 +151,7 @@ const $ = "calc(var(--chakra-font-sizes-sm) * var(--rich-text-font-scale))", Te
|
|
|
150
151
|
} = t, a = n === void 0 ? "" : n, w = y === void 0 ? !1 : y, l = x === void 0 ? !1 : x, f = S === void 0 ? !1 : S;
|
|
151
152
|
if (w) {
|
|
152
153
|
let r;
|
|
153
|
-
return e[0] !== a ? (r = /* @__PURE__ */ o(
|
|
154
|
+
return e[0] !== a ? (r = /* @__PURE__ */ o(se, { defaultValue: a, fontFamily: "mono", fontSize: $, resize: "vertical", minHeight: "100%" }), e[0] = a, e[1] = r) : r = e[1], r;
|
|
154
155
|
}
|
|
155
156
|
let c;
|
|
156
157
|
if (e[2] !== a || e[3] !== f || e[4] !== l) {
|
|
@@ -164,7 +165,7 @@ const $ = "calc(var(--chakra-font-sizes-sm) * var(--rich-text-font-scale))", Te
|
|
|
164
165
|
return p;
|
|
165
166
|
let s;
|
|
166
167
|
return e[6] !== p ? (s = /* @__PURE__ */ o(K, { width: "100%", background: "bg.code", borderRadius: "md", showHorizontalScrollbar: !0, children: p }), e[6] = p, e[7] = s) : s = e[7], s;
|
|
167
|
-
},
|
|
168
|
+
}, Xe = (t) => {
|
|
168
169
|
const e = U(26), {
|
|
169
170
|
data: n,
|
|
170
171
|
fullWidth: y,
|
|
@@ -214,7 +215,7 @@ function _e(t, e) {
|
|
|
214
215
|
function ke(t) {
|
|
215
216
|
return /* @__PURE__ */ o(T.ColumnHeader, { textTransform: "none", paddingX: "xs", paddingY: "2xs", children: /* @__PURE__ */ o(F, { textStyle: "label/S/medium", fontSize: $, children: t }) }, t);
|
|
216
217
|
}
|
|
217
|
-
function
|
|
218
|
+
function Ge(t) {
|
|
218
219
|
const e = t.toLowerCase().trim();
|
|
219
220
|
return e ? e.startsWith("image/") ? "image" : e === "application/pdf" ? "pdf" : e === "text/markdown" ? "markdown" : e === "text/csv" || e === "text/tab-separated-values" ? "table" : e === "application/json" ? "json" : (e.startsWith("text/") || e.startsWith("application/"), "text") : "text";
|
|
220
221
|
}
|
|
@@ -242,22 +243,22 @@ const Pe = {
|
|
|
242
243
|
yml: "text/yaml",
|
|
243
244
|
yaml: "text/yaml"
|
|
244
245
|
};
|
|
245
|
-
function
|
|
246
|
+
function Je(t) {
|
|
246
247
|
const n = (t.split("?")[0]?.split("#")[0] ?? "").split(".").pop()?.toLowerCase();
|
|
247
248
|
return n ? Pe[n] ?? null : null;
|
|
248
249
|
}
|
|
249
250
|
export {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
251
|
+
Ye as CollaborativeMarkdownEditor,
|
|
252
|
+
Ue as DefaultRichTextCodeEditor,
|
|
253
|
+
Xe as DefaultRichTextDataTable,
|
|
254
|
+
tt as LazyMarkdownEditor,
|
|
255
|
+
Ze as MarkdownEditor,
|
|
256
|
+
nt as MarkdownPreview,
|
|
257
|
+
rt as PromptEditor,
|
|
258
|
+
it as RichMessage,
|
|
259
|
+
lt as generateEditorStateFromString,
|
|
260
|
+
st as getTextFromSerializedEditorState,
|
|
261
|
+
Ge as inferResourceTypeFromMediaType,
|
|
262
|
+
Je as mediaTypeFromPath
|
|
262
263
|
};
|
|
263
264
|
//# sourceMappingURL=rich-text.js.map
|