@pstdio/ui 0.18.0 → 0.20.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-BPiVFNYK.js → MermaidComponent-AmAjWLPm.js} +3 -3
- package/dist/{MermaidComponent-BPiVFNYK.js.map → MermaidComponent-AmAjWLPm.js.map} +1 -1
- package/dist/browser-storage-DPtOQJx0.js +127 -0
- package/dist/browser-storage-DPtOQJx0.js.map +1 -0
- package/dist/chat-ui.js +938 -897
- package/dist/chat-ui.js.map +1 -1
- package/dist/components/chat-ui/components/chat-message-list-items.d.ts +17 -0
- package/dist/components/chat-ui/components/message-types.d.ts +1 -0
- package/dist/components/chat-ui/components/timeline.d.ts +2 -0
- package/dist/components/chat-ui/tool-rendering/default-renderers.d.ts +1 -0
- package/dist/components/chat-ui/tool-rendering/shared.d.ts +3 -2
- package/dist/components/chat-ui/tool-rendering/standard-renderers.d.ts +1 -0
- package/dist/components/data-table/data-table-header.d.ts +3 -1
- package/dist/components/data-table/data-table-skeleton.d.ts +13 -0
- package/dist/components/data-table/edit-mode-data-table-body.d.ts +29 -0
- package/dist/components/data-table/edit-mode-data-table-cell.d.ts +15 -0
- package/dist/components/data-table/edit-mode-data-table-editors.d.ts +19 -0
- package/dist/components/data-table/edit-mode-data-table-header.d.ts +23 -0
- package/dist/components/data-table/edit-mode-data-table-selection.d.ts +12 -0
- package/dist/components/data-table/edit-mode-data-table.d.ts +2 -0
- package/dist/components/data-table/edit-mode-story.d.ts +5 -0
- package/dist/components/data-table/index.d.ts +3 -1
- package/dist/components/data-table/pagination-footer.d.ts +8 -5
- package/dist/components/data-table/types.d.ts +24 -0
- package/dist/components/overlays/dialog-accept-shortcut.d.ts +12 -0
- package/dist/components/overlays/index.d.ts +1 -0
- package/dist/components/param-editor/index.d.ts +3 -1
- package/dist/components/param-editor/inputs/selection-input.d.ts +5 -0
- package/dist/components/param-editor/inputs/selection-menu.d.ts +6 -0
- package/dist/components/param-editor/param-editor-row.d.ts +17 -0
- package/dist/components/param-editor/param-editor.types.d.ts +18 -0
- package/dist/components/primitives/glyph-icon.d.ts +16 -0
- package/dist/components/primitives/icon-color-picker.d.ts +3 -13
- package/dist/components/primitives/icon-options.d.ts +301 -0
- package/dist/components/primitives/index.d.ts +10 -3
- package/dist/components/primitives/segmented-control.d.ts +20 -0
- package/dist/components/primitives/tag-swatch.d.ts +10 -0
- package/dist/components/rich-text/index.d.ts +2 -0
- package/dist/components/rich-text/markdown-editor/markdown-editor.d.ts +7 -0
- package/dist/components/rich-text/markdown-editor/markdown-table.story-fixture.d.ts +3 -0
- package/dist/components/rich-text/markdown-editor/plugins/MarkdownSectionNavigationPlugin.d.ts +8 -0
- package/dist/components/rich-text/markdown-editor/plugins/MarkdownSlashCommandPlugin.d.ts +1 -0
- package/dist/components/rich-text/markdown-editor/plugins/markdown-history-plugin.d.ts +1 -0
- package/dist/components/rich-text/markdown-editor/plugins/markdown-section-navigation.d.ts +20 -0
- package/dist/components/rich-text/rich-message/rich-message.d.ts +2 -0
- package/dist/components/rich-text/shared/markdown-ast.d.ts +6 -0
- package/dist/components/rich-text/shared/markdown-codec.d.ts +3 -0
- package/dist/components/rich-text/shared/markdown-export.d.ts +2 -0
- package/dist/components/rich-text/shared/markdown-import.d.ts +2 -0
- package/dist/components/rich-text/shared/markdown-inline.d.ts +5 -0
- package/dist/components/rich-text/shared/markdown-table.d.ts +41 -0
- package/dist/components/rich-text/shared/markdown-url-context.d.ts +9 -0
- package/dist/components/rich-text/shared/markdown-url.d.ts +3 -0
- package/dist/components/rich-text/shared/nodes/DataTableNode.d.ts +13 -11
- package/dist/components/rich-text/shared/nodes/MarkdownImageNode.d.ts +35 -0
- package/dist/components/rich-text/shared/nodes/MarkdownLinkNode.d.ts +18 -0
- package/dist/components/rich-text/shared/nodes/RawHtmlNode.d.ts +31 -0
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/floating-toolbar-buttons.d.ts +4 -2
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/resolve-block-type.d.ts +1 -1
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.d.ts +1 -1
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +1 -0
- package/dist/components/rich-text/shared/transformers/markdown-transformers.d.ts +2 -3
- package/dist/components/tag-editor/index.d.ts +4 -0
- package/dist/components/tag-editor/tag-editor-heading.d.ts +11 -0
- package/dist/components/tag-editor/tag-editor-row.d.ts +1 -1
- package/dist/components/tag-editor/tag-editor-save-bar.d.ts +13 -0
- package/dist/components/tag-editor/tag-editor.types.d.ts +11 -11
- package/dist/components/tag-editor/tag-settings-panel.d.ts +3 -1
- package/dist/data-table.js +773 -931
- package/dist/data-table.js.map +1 -1
- package/dist/dialog-accept-shortcut-DAEBsoWW.js +7 -0
- package/dist/dialog-accept-shortcut-DAEBsoWW.js.map +1 -0
- package/dist/diff.js +4 -4
- package/dist/edit-mode-data-table-4GMiDy75.js +775 -0
- package/dist/edit-mode-data-table-4GMiDy75.js.map +1 -0
- package/dist/editor-config-Dyh8n5A2.js +2416 -0
- package/dist/editor-config-Dyh8n5A2.js.map +1 -0
- package/dist/font/css/prompt-studio-icons.css +36 -6
- package/dist/font/prompt-studio-icons.eot +0 -0
- package/dist/font/prompt-studio-icons.svg +1 -1
- package/dist/font/prompt-studio-icons.ttf +0 -0
- package/dist/font/prompt-studio-icons.woff +0 -0
- package/dist/font/prompt-studio-icons.woff2 +0 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1976 -1712
- package/dist/index.js.map +1 -1
- package/dist/{kanban-renderer-toolbar-Db1mIWWd.js → kanban-renderer-toolbar-BcUZvGyY.js} +384 -386
- package/dist/kanban-renderer-toolbar-BcUZvGyY.js.map +1 -0
- package/dist/kanban-renderer.js +144 -140
- package/dist/kanban-renderer.js.map +1 -1
- package/dist/{lazy-markdown-editor-DwhqQ-NN.js → lazy-markdown-editor-CWSREEhf.js} +2 -2
- package/dist/{lazy-markdown-editor-DwhqQ-NN.js.map → lazy-markdown-editor-CWSREEhf.js.map} +1 -1
- package/dist/list-row-B8L4TGsh.js +821 -0
- package/dist/list-row-B8L4TGsh.js.map +1 -0
- package/dist/{mermaid-renderer-DZo3qj6D.js → mermaid-renderer-H3IhLqnQ.js} +3 -3
- package/dist/{mermaid-renderer-DZo3qj6D.js.map → mermaid-renderer-H3IhLqnQ.js.map} +1 -1
- package/dist/mermaid.js +1 -1
- package/dist/number-input-WUfejtNx.js +343 -0
- package/dist/number-input-WUfejtNx.js.map +1 -0
- package/dist/param-editor-field-C8zRDStn.js +2845 -0
- package/dist/param-editor-field-C8zRDStn.js.map +1 -0
- package/dist/param-editor-w3xH-t8A.js +161 -0
- package/dist/param-editor-w3xH-t8A.js.map +1 -0
- package/dist/rich-message-jZ2oPQhU.js +658 -0
- package/dist/rich-message-jZ2oPQhU.js.map +1 -0
- package/dist/rich-text.js +182 -110
- package/dist/rich-text.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/theme/primitives/sizes.d.ts +59 -0
- package/dist/theme/recipes/button.d.ts +11 -0
- package/dist/theme/recipes/segmented-control.d.ts +22 -0
- package/dist/theme/recipes/switch.d.ts +1 -0
- package/dist/theme/recipes/tabs.d.ts +11 -0
- package/dist/{theme-poQlUgt0.js → theme-J8K8KbZi.js} +211 -120
- package/dist/theme-J8K8KbZi.js.map +1 -0
- package/dist/{theme-preference-DOzHx64J.js → theme-preference-DyymrYpR.js} +2 -2
- package/dist/{theme-preference-DOzHx64J.js.map → theme-preference-DyymrYpR.js.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{tree-list-BAja2eXU.js → tree-list-CC13pOYi.js} +2 -2
- package/dist/{tree-list-BAja2eXU.js.map → tree-list-CC13pOYi.js.map} +1 -1
- package/package.json +10 -2
- package/dist/browser-storage-BinyFNJX.js +0 -40
- package/dist/browser-storage-BinyFNJX.js.map +0 -1
- package/dist/checkbox-B2zYVemL.js +0 -70
- package/dist/checkbox-B2zYVemL.js.map +0 -1
- package/dist/components/data-table/editable-cells-story.d.ts +0 -9
- package/dist/kanban-renderer-toolbar-Db1mIWWd.js.map +0 -1
- package/dist/list-row-BYWwcbGK.js +0 -823
- package/dist/list-row-BYWwcbGK.js.map +0 -1
- package/dist/markdown-DDd2ESoH.js +0 -743
- package/dist/markdown-DDd2ESoH.js.map +0 -1
- package/dist/markdown-editor-CYVkzt8t.js +0 -741
- package/dist/markdown-editor-CYVkzt8t.js.map +0 -1
- package/dist/param-editor-BCZOw5Gt.js +0 -140
- package/dist/param-editor-BCZOw5Gt.js.map +0 -1
- package/dist/param-editor-field-ZzZwgjZ_.js +0 -2094
- package/dist/param-editor-field-ZzZwgjZ_.js.map +0 -1
- package/dist/resource-badge-CuItchgL.js +0 -98
- package/dist/resource-badge-CuItchgL.js.map +0 -1
- package/dist/rich-message--eRzjWYK.js +0 -730
- package/dist/rich-message--eRzjWYK.js.map +0 -1
- package/dist/scroll-area-BMbg1WcD.js +0 -91
- package/dist/scroll-area-BMbg1WcD.js.map +0 -1
- package/dist/theme-poQlUgt0.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rich-message--eRzjWYK.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/plugins/ReferenceLinkPlugin/ReferenceLinkNode.tsx","../src/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.ts","../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 { Box } from \"@chakra-ui/react\";\nimport {\n DecoratorNode,\n type EditorConfig,\n type LexicalEditor,\n type LexicalNode,\n type NodeKey,\n type SerializedLexicalNode,\n type Spread,\n} from \"lexical\";\nimport type { ReactElement } from \"react\";\nimport { ResourceBadge } from \"@/components/primitives/resource-badge\";\n\nexport type SerializedReferenceLinkNode = Spread<\n {\n href: string;\n label?: string;\n },\n SerializedLexicalNode\n>;\n\nexport class ReferenceLinkNode extends DecoratorNode<ReactElement> {\n __href: string;\n __label?: string;\n\n static getType(): string {\n return \"reference-link\";\n }\n\n static clone(node: ReferenceLinkNode): ReferenceLinkNode {\n return new ReferenceLinkNode(node.__href, node.__label, node.__key);\n }\n\n constructor(href: string, label?: string, key?: NodeKey) {\n super(key);\n this.__href = href;\n this.__label = label;\n }\n\n createDOM(_config: EditorConfig, _editor: LexicalEditor): HTMLElement {\n return document.createElement(\"span\");\n }\n\n updateDOM(_prevNode: ReferenceLinkNode, _dom: HTMLElement, _config: EditorConfig): boolean {\n return false;\n }\n\n getTextContent(): string {\n const label = this.__label ?? this.__href;\n return `{{link('${label}')}}`;\n }\n\n exportJSON(): SerializedReferenceLinkNode {\n return {\n type: ReferenceLinkNode.getType(),\n version: 1,\n href: this.__href,\n label: this.__label,\n };\n }\n\n static importJSON(serializedNode: SerializedReferenceLinkNode): ReferenceLinkNode {\n return $createReferenceLinkNode(serializedNode.href, serializedNode.label);\n }\n\n decorate(_editor: LexicalEditor, _config: EditorConfig): ReactElement {\n const href = this.__href;\n const fileName = href.split(\"/\").pop();\n const label = fileName || \"unknown\";\n const isExternal = /^https?:\\/\\//i.test(href);\n const isProjectFile = /^#?\\$PROJECT\\//i.test(href);\n\n return (\n <Box width=\"fit-content\" display=\"inline-block\">\n <ResourceBadge\n fileName={label}\n onSelect={() => {\n if (isExternal) {\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n } else if (isProjectFile) {\n const projectPath = href.replace(/^#?\\$PROJECT\\//i, \"\");\n const event = new CustomEvent(\"ui:open-project-file\", { detail: projectPath });\n window.dispatchEvent(event);\n } else {\n window.location.assign(href);\n }\n }}\n />\n </Box>\n );\n }\n}\n\nexport function $createReferenceLinkNode(href: string, label?: string): ReferenceLinkNode {\n return new ReferenceLinkNode(href, label);\n}\n\nexport function $isReferenceLinkNode(node: LexicalNode | null | undefined): node is ReferenceLinkNode {\n return node instanceof ReferenceLinkNode;\n}\n","import type { TextMatchTransformer } from \"@lexical/markdown\";\nimport { $createReferenceLinkNode, $isReferenceLinkNode, ReferenceLinkNode } from \"./ReferenceLinkNode\";\n\n// Matches {{link('xxx')}} or {{ link(\"xxx\") }}\nconst LINK_REGEXP = /\\{\\{\\s*link\\((['\"])([^'\"\\s]+)\\1\\)\\s*\\}\\}/;\n\nexport const REFERENCE_LINK_TRANSFORMER: TextMatchTransformer = {\n dependencies: [ReferenceLinkNode],\n export: (node) => {\n if ($isReferenceLinkNode(node)) {\n const href = (node as ReferenceLinkNode).__href;\n const label = (node as ReferenceLinkNode).__label ?? href;\n // Export back to token form so markdown roundtrips\n if (label) {\n return `{{link('${label}')}}`;\n }\n return `{{link('${href}')}}`;\n }\n return null;\n },\n regExp: LINK_REGEXP,\n importRegExp: LINK_REGEXP,\n replace: (textNode, match) => {\n const value = match[2];\n // For now we assume value is both label and href; if it looks like a URL, use as href.\n const looksLikeUrl = /^(https?:\\/\\/|\\/)/i.test(value);\n const href = looksLikeUrl ? value : `#${value}`;\n const label = value;\n textNode.replace($createReferenceLinkNode(href, label));\n },\n type: \"text-match\",\n};\n","import \"../theme/rich-text-theme.css\";\n\nimport { Flex } from \"@chakra-ui/react\";\nimport { AutoLinkNode, LinkNode } from \"@lexical/link\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport { $convertFromMarkdownString, $convertToMarkdownString } from \"@lexical/markdown\";\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 { HeadingNode, QuoteNode } from \"@lexical/rich-text\";\nimport { $getRoot } from \"lexical\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport { baseEditorTransformers } from \"../shared/editor-config\";\nimport { CodeHighlightNode, CodeNode } from \"../shared/lexical-code\";\nimport { DataTableNode } from \"../shared/nodes/DataTableNode\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { CodeHighlightingPlugin } from \"../shared/plugins/CodePlugin/CodeHighlightingPlugin\";\nimport { EquationNode } from \"../shared/plugins/EquationPlugin/EquationNode\";\nimport { EquationPlugin } from \"../shared/plugins/EquationPlugin/EquationPlugin\";\nimport { HRNode } from \"../shared/plugins/HorizontalRulePlugin/HorizontalRuleNode\";\nimport { MermaidNode } from \"../shared/plugins/MermaidPlugin/MermaidNode\";\nimport StateUpdatePlugin from \"../shared/plugins/StateUpdatePlugin\";\nimport ToggleEditablePlugin from \"../shared/plugins/ToggleEditablePlugin\";\nimport { TreeViewPlugin } from \"../shared/plugins/TreeViewPlugin/TreeViewPlugin\";\nimport theme from \"../theme/rich-text-theme\";\nimport { normalizeMarkdownListIndentation, splitFrontmatter } from \"../utils/markdown\";\nimport { REFERENCE_LINK_TRANSFORMER, ReferenceLinkNode } from \"./plugins/ReferenceLinkPlugin\";\n\nexport interface RichMessageProps {\n debug?: boolean;\n defaultState: string;\n fullWidth?: boolean;\n isEditable?: boolean;\n onChange?: (value: string) => void;\n}\n\nconst transformers = [...baseEditorTransformers, REFERENCE_LINK_TRANSFORMER];\n\nexport function RichMessage(props: RichMessageProps) {\n const { debug = false, defaultState = \"\", fullWidth = false, isEditable = false, onChange } = props;\n const { frontmatter, body } = splitFrontmatter(defaultState);\n const shouldTrackChanges = isEditable && Boolean(onChange);\n\n const initialConfig = {\n namespace: \"RICH_MESSAGE\",\n nodes: [\n QuoteNode,\n LinkNode,\n AutoLinkNode,\n DataTableNode,\n HeadingNode,\n ListNode,\n ListItemNode,\n CodeNode,\n CodeHighlightNode,\n MermaidNode,\n EquationNode,\n HRNode,\n ReferenceLinkNode,\n ],\n editorState: () => {\n return $convertFromMarkdownString(normalizeMarkdownListIndentation(body), transformers, undefined, false);\n },\n onError: (error: Error) => console.error(error),\n editable: isEditable,\n theme,\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 <LexicalComposer initialConfig={initialConfig}>\n <StateUpdatePlugin\n value={body}\n onUpdate={(value: string) => {\n $convertFromMarkdownString(normalizeMarkdownListIndentation(value), transformers, undefined, false);\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 = $convertToMarkdownString(transformers, root);\n onChange?.(frontmatter + markdownBody);\n });\n }}\n />\n ) : null}\n <ToggleEditablePlugin isEditable={isEditable} />\n {debug && <TreeViewPlugin />}\n </LexicalComposer>\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","ReferenceLinkNode","DecoratorNode","__href","__label","href","label","_config","_prevNode","_dom","$createReferenceLinkNode","decorate","pop","isExternal","test","isProjectFile","ResourceBadge","window","open","projectPath","CustomEvent","dispatchEvent","location","assign","$isReferenceLinkNode","LINK_REGEXP","REFERENCE_LINK_TRANSFORMER","dependencies","export","regExp","importRegExp","textNode","transformers","baseEditorTransformers","RichMessage","fullWidth","splitFrontmatter","frontmatter","body","shouldTrackChanges","QuoteNode","LinkNode","AutoLinkNode","DataTableNode","HeadingNode","ListNode","ListItemNode","CodeNode","CodeHighlightNode","MermaidNode","EquationNode","HRNode","$convertFromMarkdownString","normalizeMarkdownListIndentation","LinkPlugin","ClickableLinkPlugin","ListPlugin","TabIndentationPlugin","HorizontalRulePlugin","CodeHighlightingPlugin","ImportCodeBlocksPlugin","EquationPlugin","markdownBody","$convertToMarkdownString","t20","t21","error","console"],"mappings":"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"}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { jsx as m, jsxs as j } from "react/jsx-runtime";
|
|
2
|
-
import { c as D } from "react/compiler-runtime";
|
|
3
|
-
import { Tooltip as T, Portal as E, ScrollArea as z } from "@chakra-ui/react";
|
|
4
|
-
import * as V from "react";
|
|
5
|
-
const B = V.forwardRef(function(u, S) {
|
|
6
|
-
const t = D(22);
|
|
7
|
-
let l, e, r, a, o, s, f;
|
|
8
|
-
t[0] !== u ? ({
|
|
9
|
-
children: l,
|
|
10
|
-
disabled: a,
|
|
11
|
-
portalled: f,
|
|
12
|
-
content: e,
|
|
13
|
-
contentProps: r,
|
|
14
|
-
portalRef: o,
|
|
15
|
-
...s
|
|
16
|
-
} = u, t[0] = u, t[1] = l, t[2] = e, t[3] = r, t[4] = a, t[5] = o, t[6] = s, t[7] = f) : (l = t[1], e = t[2], r = t[3], a = t[4], o = t[5], s = t[6], f = t[7]);
|
|
17
|
-
const b = f === void 0 ? !0 : f;
|
|
18
|
-
if (a || _(e))
|
|
19
|
-
return l;
|
|
20
|
-
let n;
|
|
21
|
-
t[8] !== l ? (n = /* @__PURE__ */ m(T.Trigger, { asChild: !0, children: l }), t[8] = l, t[9] = n) : n = t[9];
|
|
22
|
-
const h = !b;
|
|
23
|
-
let i;
|
|
24
|
-
t[10] !== e || t[11] !== r || t[12] !== S ? (i = /* @__PURE__ */ m(T.Positioner, { children: /* @__PURE__ */ m(T.Content, { ref: S, ...r, children: e }) }), t[10] = e, t[11] = r, t[12] = S, t[13] = i) : i = t[13];
|
|
25
|
-
let d;
|
|
26
|
-
t[14] !== o || t[15] !== h || t[16] !== i ? (d = /* @__PURE__ */ m(E, { disabled: h, container: o, children: i }), t[14] = o, t[15] = h, t[16] = i, t[17] = d) : d = t[17];
|
|
27
|
-
let c;
|
|
28
|
-
return t[18] !== s || t[19] !== n || t[20] !== d ? (c = /* @__PURE__ */ j(T.Root, { openDelay: 100, closeDelay: 100, ...s, children: [
|
|
29
|
-
n,
|
|
30
|
-
d
|
|
31
|
-
] }), t[18] = s, t[19] = n, t[20] = d, t[21] = c) : c = t[21], c;
|
|
32
|
-
});
|
|
33
|
-
function H(p) {
|
|
34
|
-
return typeof p == "string" ? p.trim().length === 0 : !1;
|
|
35
|
-
}
|
|
36
|
-
function _(p) {
|
|
37
|
-
if (p == null || p === !1)
|
|
38
|
-
return !0;
|
|
39
|
-
const u = V.Children.toArray(p);
|
|
40
|
-
return u.length === 0 ? !0 : u.every(H);
|
|
41
|
-
}
|
|
42
|
-
const F = V.forwardRef(function(u, S) {
|
|
43
|
-
const t = D(40);
|
|
44
|
-
let l, e, r, a, o, s, f, b, w, n, h, i;
|
|
45
|
-
t[0] !== u ? ({
|
|
46
|
-
children: l,
|
|
47
|
-
viewportRef: i,
|
|
48
|
-
contentRef: r,
|
|
49
|
-
viewportProps: h,
|
|
50
|
-
contentProps: e,
|
|
51
|
-
verticalScrollbarProps: n,
|
|
52
|
-
horizontalScrollbarProps: a,
|
|
53
|
-
showVerticalScrollbar: s,
|
|
54
|
-
showHorizontalScrollbar: f,
|
|
55
|
-
showCorner: b,
|
|
56
|
-
size: w,
|
|
57
|
-
...o
|
|
58
|
-
} = u, t[0] = u, t[1] = l, t[2] = e, t[3] = r, t[4] = a, t[5] = o, t[6] = s, t[7] = f, t[8] = b, t[9] = w, t[10] = n, t[11] = h, t[12] = i) : (l = t[1], e = t[2], r = t[3], a = t[4], o = t[5], s = t[6], f = t[7], b = t[8], w = t[9], n = t[10], h = t[11], i = t[12]);
|
|
59
|
-
const d = s === void 0 ? !0 : s, c = f === void 0 ? !1 : f, A = b === void 0 ? d && c : b, $ = w === void 0 ? "xs" : w;
|
|
60
|
-
let P;
|
|
61
|
-
t[13] !== e || t[14] !== c ? (P = c ? e : {
|
|
62
|
-
...e,
|
|
63
|
-
style: {
|
|
64
|
-
minWidth: 0,
|
|
65
|
-
...e?.style
|
|
66
|
-
}
|
|
67
|
-
}, t[13] = e, t[14] = c, t[15] = P) : P = t[15];
|
|
68
|
-
const I = P;
|
|
69
|
-
let v;
|
|
70
|
-
t[16] !== l || t[17] !== r || t[18] !== I ? (v = /* @__PURE__ */ m(z.Content, { ...I, ref: r, children: l }), t[16] = l, t[17] = r, t[18] = I, t[19] = v) : v = t[19];
|
|
71
|
-
let C;
|
|
72
|
-
t[20] !== v || t[21] !== h || t[22] !== i ? (C = /* @__PURE__ */ m(z.Viewport, { ...h, ref: i, children: v }), t[20] = v, t[21] = h, t[22] = i, t[23] = C) : C = t[23];
|
|
73
|
-
let R;
|
|
74
|
-
t[24] !== d || t[25] !== n ? (R = d ? /* @__PURE__ */ m(z.Scrollbar, { zIndex: "2", ...n, borderRadius: "xs" }) : null, t[24] = d, t[25] = n, t[26] = R) : R = t[26];
|
|
75
|
-
let x;
|
|
76
|
-
t[27] !== a || t[28] !== c ? (x = c ? /* @__PURE__ */ m(z.Scrollbar, { orientation: "horizontal", zIndex: "2", ...a, borderRadius: "xs" }) : null, t[27] = a, t[28] = c, t[29] = x) : x = t[29];
|
|
77
|
-
let y;
|
|
78
|
-
t[30] !== A ? (y = A ? /* @__PURE__ */ m(z.Corner, { zIndex: "2" }) : null, t[30] = A, t[31] = y) : y = t[31];
|
|
79
|
-
let g;
|
|
80
|
-
return t[32] !== S || t[33] !== o || t[34] !== $ || t[35] !== C || t[36] !== R || t[37] !== x || t[38] !== y ? (g = /* @__PURE__ */ j(z.Root, { ref: S, size: $, ...o, children: [
|
|
81
|
-
C,
|
|
82
|
-
R,
|
|
83
|
-
x,
|
|
84
|
-
y
|
|
85
|
-
] }), t[32] = S, t[33] = o, t[34] = $, t[35] = C, t[36] = R, t[37] = x, t[38] = y, t[39] = g) : g = t[39], g;
|
|
86
|
-
});
|
|
87
|
-
export {
|
|
88
|
-
F as S,
|
|
89
|
-
B as T
|
|
90
|
-
};
|
|
91
|
-
//# sourceMappingURL=scroll-area-BMbg1WcD.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-area-BMbg1WcD.js","sources":["../src/components/primitives/tooltip.tsx","../src/components/primitives/scroll-area.tsx"],"sourcesContent":["import { Tooltip as ChakraTooltip, Portal } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface TooltipProps extends ChakraTooltip.RootProps {\n children?: React.ReactElement;\n portalled?: boolean;\n portalRef?: React.RefObject<HTMLElement>;\n content: React.ReactNode;\n contentProps?: ChakraTooltip.ContentProps;\n disabled?: boolean;\n}\n\nexport const Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(function Tooltip(props, ref) {\n const { children, disabled, portalled = true, content, contentProps, portalRef, ...rest } = props;\n\n const isEmptyContent = (node: React.ReactNode): boolean => {\n if (node === null || node === undefined || node === false) return true;\n const arr = React.Children.toArray(node);\n if (arr.length === 0) return true;\n return arr.every((child) => (typeof child === \"string\" ? child.trim().length === 0 : false));\n };\n\n if (disabled || isEmptyContent(content)) return children;\n\n return (\n <ChakraTooltip.Root openDelay={100} closeDelay={100} {...rest}>\n <ChakraTooltip.Trigger asChild>{children}</ChakraTooltip.Trigger>\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraTooltip.Positioner>\n <ChakraTooltip.Content ref={ref} {...contentProps}>\n {content}\n </ChakraTooltip.Content>\n </ChakraTooltip.Positioner>\n </Portal>\n </ChakraTooltip.Root>\n );\n});\n","import { ScrollArea as ChakraScrollArea } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\ntype VerticalScrollbarProps = Omit<ChakraScrollArea.ScrollbarProps, \"orientation\">;\ntype HorizontalScrollbarProps = Omit<ChakraScrollArea.ScrollbarProps, \"orientation\">;\n\nexport interface ScrollAreaProps extends ChakraScrollArea.RootProps {\n viewportRef?: React.Ref<HTMLDivElement>;\n contentRef?: React.Ref<HTMLDivElement>;\n viewportProps?: ChakraScrollArea.ViewportProps;\n contentProps?: ChakraScrollArea.ContentProps;\n verticalScrollbarProps?: VerticalScrollbarProps;\n horizontalScrollbarProps?: HorizontalScrollbarProps;\n showVerticalScrollbar?: boolean;\n showHorizontalScrollbar?: boolean;\n showCorner?: boolean;\n}\n\nexport const ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(props, ref) {\n const {\n children,\n viewportRef,\n contentRef,\n viewportProps,\n contentProps,\n verticalScrollbarProps,\n horizontalScrollbarProps,\n showVerticalScrollbar = true,\n showHorizontalScrollbar = false,\n showCorner = showVerticalScrollbar && showHorizontalScrollbar,\n size = \"xs\",\n ...rest\n } = props;\n\n const mergedContentProps = showHorizontalScrollbar\n ? contentProps\n : { ...contentProps, style: { minWidth: 0, ...contentProps?.style } };\n\n return (\n <ChakraScrollArea.Root ref={ref} size={size} {...rest}>\n <ChakraScrollArea.Viewport {...viewportProps} ref={viewportRef}>\n <ChakraScrollArea.Content {...mergedContentProps} ref={contentRef}>\n {children}\n </ChakraScrollArea.Content>\n </ChakraScrollArea.Viewport>\n {showVerticalScrollbar ? (\n <ChakraScrollArea.Scrollbar zIndex=\"2\" {...verticalScrollbarProps} borderRadius={\"xs\"} />\n ) : null}\n {showHorizontalScrollbar ? (\n <ChakraScrollArea.Scrollbar\n orientation=\"horizontal\"\n zIndex=\"2\"\n {...horizontalScrollbarProps}\n borderRadius={\"xs\"}\n />\n ) : null}\n {showCorner ? <ChakraScrollArea.Corner zIndex=\"2\" /> : null}\n </ChakraScrollArea.Root>\n );\n});\n"],"names":["Tooltip","React","forwardRef","props","ref","$","_c","children","content","contentProps","disabled","portalRef","rest","t0","portalled","undefined","_temp2","t1","ChakraTooltip","t2","t3","jsx","t4","Portal","t5","_temp","child","trim","length","node","arr","Children","toArray","every","ScrollArea","contentRef","horizontalScrollbarProps","verticalScrollbarProps","viewportProps","viewportRef","showVerticalScrollbar","showHorizontalScrollbar","showCorner","size","style","minWidth","mergedContentProps","ChakraScrollArea","t6","t7","t8","t9","t10"],"mappings":"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"}
|