@pstdio/ui 0.2.2 → 0.2.3
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/chat-ui.js +417 -407
- package/dist/chat-ui.js.map +1 -1
- package/dist/components/chat-ui/components/chat-panel-sticky-user-message.d.ts +4 -0
- package/dist/components/chat-ui/components/chat-panel.sticky-user-message.test.d.ts +1 -0
- package/dist/components/chat-ui/components/chat-panel.stories.d.ts +1 -0
- package/dist/components/rich-text/shared/components/content-editable.d.ts +2 -1
- package/dist/empty-state-kQR0gd4j.js +232 -0
- package/dist/empty-state-kQR0gd4j.js.map +1 -0
- package/dist/index.js +37 -36
- package/dist/index.js.map +1 -1
- package/dist/{rich-message-C0_i-4Ux.js → rich-message-ZT2CEiwt.js} +413 -404
- package/dist/rich-message-ZT2CEiwt.js.map +1 -0
- package/dist/rich-text.js +5 -5
- package/dist/rich-text.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/tooltip-Dze4WXVl.js +86 -0
- package/dist/tooltip-Dze4WXVl.js.map +1 -0
- package/package.json +2 -2
- package/dist/rich-message-C0_i-4Ux.js.map +0 -1
- package/dist/scroll-area-DZs-GiIp.js +0 -267
- package/dist/scroll-area-DZs-GiIp.js.map +0 -1
- package/dist/tooltip-Gm7PLwZG.js +0 -51
- package/dist/tooltip-Gm7PLwZG.js.map +0 -1
package/dist/rich-text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text.js","sources":["../src/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.ts","../src/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/FloatingTextFormatToolbarPlugin.tsx","../src/components/rich-text/collaborative-markdown-editor/awareness-cursors.tsx","../src/components/rich-text/collaborative-markdown-editor/collaborative-markdown-editor.tsx","../src/components/rich-text/markdown-editor/markdown-editor.tsx","../src/components/rich-text/utils/inferResourceType.ts","../src/components/rich-text/utils/mediaType.ts"],"sourcesContent":["const VERTICAL_GAP = 10;\nconst HORIZONTAL_OFFSET = 5;\n\nexport function setFloatingElemPos(\n targetRect: DOMRect | null,\n floatingElem: HTMLElement,\n anchorElem: HTMLElement,\n verticalGap: number = VERTICAL_GAP,\n horizontalOffset: number = HORIZONTAL_OFFSET,\n): void {\n const scrollerElem = anchorElem.parentElement;\n\n if (targetRect === null || !scrollerElem) {\n floatingElem.style.opacity = \"0\";\n floatingElem.style.transform = \"translate(-10000px, -10000px)\";\n return;\n }\n\n const floatingElemRect = floatingElem.getBoundingClientRect();\n const anchorElementRect = anchorElem.getBoundingClientRect();\n const editorScrollerRect = scrollerElem.getBoundingClientRect();\n\n let top = targetRect.top - verticalGap;\n let left = targetRect.left - horizontalOffset;\n\n if (top < editorScrollerRect.top) {\n top += floatingElemRect.height + targetRect.height + verticalGap * 2;\n }\n\n if (left + floatingElemRect.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset;\n }\n\n top -= anchorElementRect.top;\n left -= anchorElementRect.left;\n\n floatingElem.style.opacity = \"1\";\n floatingElem.style.transform = `translate(${left}px, ${top}px)`;\n}\n","import \"./FloatingTextFormatToolbarPlugin.css\";\n\nimport { IconButton, Stack, Text } from \"@chakra-ui/react\";\nimport {\n $isListNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n REMOVE_LIST_COMMAND,\n} from \"@lexical/list\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $createHeadingNode, $isHeadingNode, type HeadingTagType } from \"@lexical/rich-text\";\nimport { $setBlocksType } from \"@lexical/selection\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport {\n $createParagraphNode,\n $getSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_HIGH,\n FORMAT_TEXT_COMMAND,\n type LexicalEditor,\n type LexicalNode,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\";\nimport { List, ListOrdered } from \"lucide-react\";\nimport type React from \"react\";\nimport { type Dispatch, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Tooltip } from \"../../../../tooltip\";\nimport { setFloatingElemPos } from \"../LinkEditorPlugin/utils/setFloatingElemPos\";\n\n// Increase the vertical gap (negative places it below the selection) to avoid overlap\nconst GAP = -4;\n\nconst blockTypeToBlockName = {\n bullet: \"Bulleted List\",\n check: \"Check List\",\n code: \"Code Block\",\n h1: \"Heading 1\",\n h2: \"Heading 2\",\n h3: \"Heading 3\",\n h4: \"Heading 4\",\n h5: \"Heading 5\",\n h6: \"Heading 6\",\n number: \"Numbered List\",\n paragraph: \"Normal\",\n quote: \"Quote\",\n};\n\nconst toKnownBlockType = (type: string) => {\n return type in blockTypeToBlockName ? (type as keyof typeof blockTypeToBlockName) : null;\n};\n\nconst findSelectionElement = (anchorNode: LexicalNode) => {\n const rootMatch =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : $findMatchingParent(anchorNode, (node) => {\n const parent = node.getParent();\n return parent !== null && $isRootOrShadowRoot(parent);\n });\n\n return rootMatch ?? anchorNode.getTopLevelElementOrThrow();\n};\n\nconst resolveBlockTypeFromAnchor = (anchorNode: LexicalNode) => {\n const element = findSelectionElement(anchorNode);\n\n if ($isListNode(element)) {\n return element.getListType() as keyof typeof blockTypeToBlockName;\n }\n\n const parentList = $findMatchingParent(anchorNode, (node) => $isListNode(node));\n if (parentList !== null && $isListNode(parentList)) {\n return parentList.getListType() as keyof typeof blockTypeToBlockName;\n }\n\n const type = $isHeadingNode(element) ? element.getTag() : element.getType();\n return toKnownBlockType(type);\n};\n\nfunction FloatingTextToolbar({\n editor,\n anchorElem,\n isToolbarActive,\n setIsToolbarActive,\n}: {\n editor: LexicalEditor;\n anchorElem: HTMLElement;\n isToolbarActive: boolean;\n setIsToolbarActive: Dispatch<boolean>;\n}): React.JSX.Element {\n const editorRef = useRef<HTMLDivElement | null>(null);\n const [blockType, setBlockType] = useState<keyof typeof blockTypeToBlockName>(\"paragraph\");\n const [isBold, setIsBold] = useState(false);\n const [isItalic, setIsItalic] = useState(false);\n const [isUnderline, setIsUnderline] = useState(false);\n const updateFloatingToolbarRef = useRef<() => boolean | undefined>(() => undefined);\n\n const formatHeading = (headingSize: HeadingTagType) => {\n if (blockType !== headingSize) {\n editor.update(() => {\n const selection = $getSelection();\n $setBlocksType(selection, () => $createHeadingNode(headingSize));\n });\n return;\n }\n\n editor.update(() => {\n const selection = $getSelection();\n $setBlocksType(selection, () => $createParagraphNode());\n });\n };\n\n const formatBulletList = () => {\n if (blockType !== \"bullet\") {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n\n const formatNumberedList = () => {\n if (blockType !== \"number\") {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n\n const updateToolbar = () => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n setIsBold(selection.hasFormat(\"bold\"));\n setIsItalic(selection.hasFormat(\"italic\"));\n setIsUnderline(selection.hasFormat(\"underline\"));\n\n const nextBlockType = resolveBlockTypeFromAnchor(selection.anchor.getNode());\n if (nextBlockType) {\n setBlockType(nextBlockType);\n }\n };\n\n updateFloatingToolbarRef.current = () => {\n const selection = $getSelection();\n const editorElem = editorRef.current;\n const nativeSelection = window.getSelection();\n\n if (editorElem === null) {\n return;\n }\n\n const rootElement = editor.getRootElement();\n\n // Show floating toolbar when there's a non-collapsed text selection\n if (\n selection !== null &&\n $isRangeSelection(selection) &&\n !selection.isCollapsed() &&\n nativeSelection !== null &&\n !nativeSelection.isCollapsed &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode) &&\n editor.isEditable()\n ) {\n const domRect: DOMRect | undefined = nativeSelection.getRangeAt(0).getBoundingClientRect();\n\n if (domRect) {\n // Anchor to the bottom of the selection to avoid overlap with tall selections\n const bottomRect = new DOMRect(domRect.left, domRect.bottom, 0, 0);\n setFloatingElemPos(bottomRect, editorElem, anchorElem, GAP);\n }\n\n setIsToolbarActive(true);\n } else {\n if (rootElement !== null) {\n setFloatingElemPos(null, editorElem, anchorElem);\n }\n setIsToolbarActive(false);\n }\n\n updateToolbar();\n\n return true;\n };\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement;\n\n const update = () => {\n editor.getEditorState().read(() => {\n updateFloatingToolbarRef.current();\n });\n };\n\n window.addEventListener(\"resize\", update);\n\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update);\n }\n\n return () => {\n window.removeEventListener(\"resize\", update);\n if (scrollerElem) {\n scrollerElem.removeEventListener(\"scroll\", update);\n }\n };\n }, [anchorElem, editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateFloatingToolbarRef.current();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload) => {\n updateFloatingToolbarRef.current();\n return false;\n },\n COMMAND_PRIORITY_CRITICAL,\n ),\n editor.registerCommand(\n CLICK_COMMAND,\n (_payload) => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n updateFloatingToolbarRef.current();\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH,\n ),\n );\n }, [editor]);\n\n return (\n <div ref={editorRef} className={`floating-text-format-toolbar ${isToolbarActive ? \"active\" : \"\"}`}>\n <Stack direction=\"row\" gap=\"0.5\" alignItems=\"center\">\n {/* Text formatting buttons */}\n <Tooltip content=\"Bold\">\n <IconButton\n data-active={isBold || undefined}\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\");\n }}\n variant=\"ghost\"\n aria-label=\"Bold\"\n size=\"xs\"\n >\n <Text fontWeight=\"bold\" fontSize=\".75rem\">\n B\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Italic\">\n <IconButton\n data-active={isItalic || undefined}\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\");\n }}\n variant=\"ghost\"\n aria-label=\"Italic\"\n size=\"xs\"\n >\n <Text fontStyle=\"italic\" fontSize=\".75rem\">\n I\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Underline\">\n <IconButton\n data-active={isUnderline || undefined}\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"underline\");\n }}\n variant=\"ghost\"\n aria-label=\"Underline\"\n size=\"xs\"\n >\n <Text textDecoration=\"underline\" fontSize=\".75rem\">\n U\n </Text>\n </IconButton>\n </Tooltip>\n\n {/* Separator */}\n <Stack as=\"span\" height=\"1rem\" mx=\"0.5\">\n <span\n style={{\n borderLeft: \"1px solid\",\n height: \"100%\",\n borderColor: \"var(--chakra-colors-border-muted)\",\n }}\n />\n </Stack>\n\n {/* Heading buttons */}\n <Tooltip content=\"Heading 1\">\n <IconButton\n data-active={blockType === \"h1\" || undefined}\n variant=\"ghost\"\n aria-label=\"Heading 1\"\n size=\"xs\"\n onClick={() => {\n formatHeading(\"h1\");\n }}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n H1\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Heading 2\">\n <IconButton\n data-active={blockType === \"h2\" || undefined}\n variant=\"ghost\"\n aria-label=\"Heading 2\"\n size=\"xs\"\n onClick={() => {\n formatHeading(\"h2\");\n }}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n H2\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Heading 3\">\n <IconButton\n data-active={blockType === \"h3\" || undefined}\n variant=\"ghost\"\n aria-label=\"Heading 3\"\n size=\"xs\"\n onClick={() => {\n formatHeading(\"h3\");\n }}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n H3\n </Text>\n </IconButton>\n </Tooltip>\n\n {/* Separator */}\n <Stack as=\"span\" height=\"1rem\" mx=\"0.5\">\n <span\n style={{\n borderLeft: \"1px solid\",\n height: \"100%\",\n borderColor: \"var(--chakra-colors-border-muted)\",\n }}\n />\n </Stack>\n\n {/* List buttons */}\n <Tooltip content=\"Bulleted List\">\n <IconButton\n data-active={blockType === \"bullet\" || undefined}\n variant=\"ghost\"\n aria-label=\"Bulleted List\"\n size=\"xs\"\n onClick={formatBulletList}\n >\n <List size={14} />\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Numbered List\">\n <IconButton\n data-active={blockType === \"number\" || undefined}\n variant=\"ghost\"\n aria-label=\"Numbered List\"\n size=\"xs\"\n onClick={formatNumberedList}\n >\n <ListOrdered size={14} />\n </IconButton>\n </Tooltip>\n </Stack>\n </div>\n );\n}\n\nfunction useFloatingTextToolbar(editor: LexicalEditor, anchorElem: HTMLElement): React.JSX.Element | null {\n const [isToolbarActive, setIsToolbarActive] = useState(false);\n\n return createPortal(\n <FloatingTextToolbar\n editor={editor}\n anchorElem={anchorElem}\n isToolbarActive={isToolbarActive}\n setIsToolbarActive={setIsToolbarActive}\n />,\n anchorElem,\n );\n}\n\nexport function FloatingTextFormatToolbarPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement;\n}): React.JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n return useFloatingTextToolbar(editor, anchorElem);\n}\n","/**\n * Injects CSS for Yjs awareness cursor rendering in the collaborative editor.\n * @lexical/yjs injects cursor elements with data-* attributes; this styles them.\n */\nexport function AwarenessCursorsCSS() {\n return (\n <style>\n {`\n .collaboration-cursor-container {\n position: relative;\n display: inline;\n }\n\n .collaboration-cursor-caret {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 2px;\n pointer-events: none;\n }\n\n .collaboration-cursor-label {\n position: absolute;\n top: -18px;\n left: -2px;\n padding: 1px 6px;\n font-size: 11px;\n font-weight: 600;\n line-height: 16px;\n white-space: nowrap;\n border-radius: 4px 4px 4px 0;\n color: #fff;\n pointer-events: none;\n user-select: none;\n }\n\n .collaboration-cursor-selection {\n position: absolute;\n pointer-events: none;\n opacity: 0.25;\n }\n `}\n </style>\n );\n}\n","import \"../theme/rich-text-theme.css\";\n\nimport { Box, Flex } from \"@chakra-ui/react\";\nimport { LexicalCollaboration } from \"@lexical/react/LexicalCollaborationContext\";\nimport { CollaborationPluginV2__EXPERIMENTAL } from \"@lexical/react/LexicalCollaborationPlugin\";\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 { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport type { Provider } from \"@lexical/yjs\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { WebsocketProvider } from \"y-websocket\";\nimport * as Y from \"yjs\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport { editorNodes, editorTheme } from \"../shared/editor-config\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { EquationPlugin } from \"../shared/plugins/EquationPlugin/EquationPlugin\";\nimport { FloatingTextFormatToolbarPlugin } from \"../shared/plugins/FloatingTextFormatToolbarPlugin\";\nimport { AwarenessCursorsCSS } from \"./awareness-cursors\";\n\nexport interface CollaborativeMarkdownEditorProps {\n roomId: string;\n wsUrl: string;\n wsParams?: Record<string, string>;\n userName?: string;\n userColor?: string;\n placeholder?: string;\n}\n\nexport function CollaborativeMarkdownEditor(props: CollaborativeMarkdownEditorProps) {\n const { roomId, wsUrl, wsParams = {}, userName = \"Anonymous\", userColor = \"#30bced\", placeholder } = props;\n\n const editorContainerRef = useRef<HTMLDivElement>(null);\n const [floatingToolbarAnchorElem, setFloatingToolbarAnchorElem] = useState<HTMLElement | null>(null);\n const [synced, setSynced] = useState(false);\n\n // Keep collaborative state stable for the component lifetime.\n const [doc] = useState(() => new Y.Doc());\n const [provider] = useState(() => {\n const nextProvider = new WebsocketProvider(wsUrl, roomId, doc, { params: wsParams, connect: false });\n\n nextProvider.on(\"sync\", (isSynced: boolean) => {\n if (isSynced) setSynced(true);\n });\n\n return nextProvider;\n });\n\n // Manage provider connect/disconnect lifecycle\n useEffect(() => {\n provider.connect();\n\n return () => {\n provider.disconnect();\n };\n }, [provider]);\n\n useEffect(() => {\n setFloatingToolbarAnchorElem(editorContainerRef.current);\n }, []);\n\n const initialConfig = {\n namespace: \"COLLABORATIVE_EDITOR\",\n nodes: editorNodes,\n editorState: null,\n onError: (error: Error) => console.error(error),\n editable: true,\n theme: editorTheme,\n };\n\n return (\n <Flex\n ref={editorContainerRef}\n className=\"rich-text\"\n justifyContent=\"space-between\"\n width=\"100%\"\n maxWidth=\"100%\"\n height=\"100%\"\n position=\"relative\"\n direction=\"column\"\n overflow=\"visible\"\n >\n <AwarenessCursorsCSS />\n\n <LexicalComposer initialConfig={initialConfig}>\n <LexicalCollaboration>\n <CollaborationPluginV2__EXPERIMENTAL\n id={roomId}\n doc={doc}\n provider={provider as unknown as Provider}\n __shouldBootstrapUnsafe={false}\n username={userName}\n cursorColor={userColor}\n />\n <LinkPlugin />\n <ListPlugin />\n <HorizontalRulePlugin />\n <ImportCodeBlocksPlugin />\n <EquationPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth={false} />}\n placeholder={\n synced && placeholder ? (\n <Box\n position=\"absolute\"\n top=\"0\"\n color=\"fg.muted\"\n pointerEvents=\"none\"\n userSelect=\"none\"\n textStyle=\"paragraph/M/regular\"\n >\n {placeholder}\n </Box>\n ) : null\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n {floatingToolbarAnchorElem ? (\n <FloatingTextFormatToolbarPlugin anchorElem={floatingToolbarAnchorElem} />\n ) : null}\n </LexicalCollaboration>\n </LexicalComposer>\n </Flex>\n );\n}\n","import \"../theme/rich-text-theme.css\";\n\nimport { Box, Flex } from \"@chakra-ui/react\";\nimport { $convertFromMarkdownString, $convertToMarkdownString } from \"@lexical/markdown\";\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\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 { $getRoot } from \"lexical\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport { editorNodes, editorTheme, editorTransformers } from \"../shared/editor-config\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { EquationPlugin } from \"../shared/plugins/EquationPlugin/EquationPlugin\";\nimport { FloatingTextFormatToolbarPlugin } from \"../shared/plugins/FloatingTextFormatToolbarPlugin\";\nimport ToggleEditablePlugin from \"../shared/plugins/ToggleEditablePlugin\";\nimport { TreeViewPlugin } from \"../shared/plugins/TreeViewPlugin/TreeViewPlugin\";\nimport { splitFrontmatter } from \"../utils/markdown\";\n\nexport interface MarkdownEditorProps {\n autoFocus?: boolean;\n debug?: boolean;\n defaultState: string;\n isEditable?: boolean;\n placeholder?: string;\n onChange?: (value: string) => void;\n}\n\nexport function MarkdownEditor(props: MarkdownEditorProps) {\n const { autoFocus = false, debug = false, defaultState = \"\", isEditable = false, placeholder, onChange } = props;\n const { frontmatter, body } = splitFrontmatter(defaultState);\n const shouldTrackChanges = isEditable && Boolean(onChange);\n const editorContainerRef = useRef<HTMLDivElement>(null);\n const [floatingToolbarAnchorElem, setFloatingToolbarAnchorElem] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n setFloatingToolbarAnchorElem(editorContainerRef.current);\n }, []);\n\n const initialConfig = {\n namespace: \"MARKDOWN_EDITOR\",\n nodes: editorNodes,\n editorState: () => {\n return $convertFromMarkdownString(body, editorTransformers, undefined, false);\n },\n onError: (error: Error) => console.error(error),\n editable: isEditable,\n theme: editorTheme,\n };\n\n return (\n <Flex\n ref={editorContainerRef}\n className=\"rich-text\"\n justifyContent=\"space-between\"\n width=\"100%\"\n maxWidth=\"100%\"\n height=\"100%\"\n position=\"relative\"\n direction=\"column\"\n overflow=\"visible\"\n >\n <LexicalComposer initialConfig={initialConfig}>\n {autoFocus ? <AutoFocusPlugin /> : null}\n <HistoryPlugin />\n <LinkPlugin />\n <ListPlugin />\n <HorizontalRulePlugin />\n <ImportCodeBlocksPlugin />\n <EquationPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth={false} />}\n placeholder={\n placeholder ? (\n <Flex\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n pointerEvents=\"none\"\n userSelect=\"none\"\n justifyContent=\"center\"\n >\n <Box width=\"100%\" maxWidth=\"720px\" color=\"fg.muted\" textStyle=\"paragraph/M/regular\">\n {placeholder}\n </Box>\n </Flex>\n ) : null\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n {isEditable && floatingToolbarAnchorElem ? (\n <FloatingTextFormatToolbarPlugin anchorElem={floatingToolbarAnchorElem} />\n ) : null}\n {shouldTrackChanges ? (\n <OnChangePlugin\n ignoreSelectionChange\n ignoreHistoryMergeTagChange={false}\n onChange={(editorState) => {\n editorState.read(() => {\n const root = $getRoot();\n const markdownBody = $convertToMarkdownString(editorTransformers, root);\n onChange?.(frontmatter + markdownBody);\n });\n }}\n />\n ) : null}\n <ToggleEditablePlugin isEditable={isEditable} />\n {debug && <TreeViewPlugin />}\n </LexicalComposer>\n </Flex>\n );\n}\n","import type { ResourceType } from \"../types\";\n\nexport function inferResourceTypeFromMediaType(mediaType: string) {\n const normalized = mediaType.toLowerCase().trim();\n if (!normalized) return \"text\";\n\n if (normalized.startsWith(\"image/\")) return \"image\";\n if (normalized === \"application/pdf\") return \"pdf\";\n if (normalized === \"text/markdown\") return \"markdown\";\n if (normalized === \"text/csv\" || normalized === \"text/tab-separated-values\") return \"table\";\n if (normalized === \"application/json\") return \"json\";\n if (normalized.startsWith(\"text/\")) return \"text\";\n if (normalized.startsWith(\"application/\")) return \"text\";\n\n const fallback: ResourceType = \"text\";\n return fallback;\n}\n","const extensionToMediaType: Record<string, string> = {\n csv: \"text/csv\",\n tsv: \"text/tab-separated-values\",\n json: \"application/json\",\n md: \"text/markdown\",\n markdown: \"text/markdown\",\n txt: \"text/plain\",\n pdf: \"application/pdf\",\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n gif: \"image/gif\",\n svg: \"image/svg+xml\",\n webp: \"image/webp\",\n mp4: \"video/mp4\",\n mov: \"video/quicktime\",\n ts: \"text/typescript\",\n tsx: \"text/typescript\",\n js: \"text/javascript\",\n jsx: \"text/javascript\",\n sql: \"text/x-sql\",\n yml: \"text/yaml\",\n yaml: \"text/yaml\",\n};\n\nexport function mediaTypeFromPath(path: string) {\n const cleaned = path.split(\"?\")[0]?.split(\"#\")[0] ?? \"\";\n const ext = cleaned.split(\".\").pop()?.toLowerCase();\n if (!ext) return null;\n return extensionToMediaType[ext] ?? null;\n}\n"],"names":["VERTICAL_GAP","HORIZONTAL_OFFSET","setFloatingElemPos","targetRect","floatingElem","anchorElem","verticalGap","horizontalOffset","scrollerElem","parentElement","style","opacity","transform","floatingElemRect","getBoundingClientRect","anchorElementRect","editorScrollerRect","top","left","height","width","right","GAP","blockTypeToBlockName","bullet","check","code","h1","h2","h3","h4","h5","h6","number","paragraph","quote","toKnownBlockType","type","findSelectionElement","anchorNode","getKey","$findMatchingParent","node","parent","getParent","$isRootOrShadowRoot","getTopLevelElementOrThrow","resolveBlockTypeFromAnchor","element","$isListNode","getListType","parentList","$isHeadingNode","getTag","getType","FloatingTextToolbar","editor","isToolbarActive","setIsToolbarActive","editorRef","useRef","blockType","setBlockType","useState","isBold","setIsBold","isItalic","setIsItalic","isUnderline","setIsUnderline","updateFloatingToolbarRef","formatHeading","headingSize","update","selection","$getSelection","$setBlocksType","$createHeadingNode","$createParagraphNode","formatBulletList","dispatchCommand","INSERT_UNORDERED_LIST_COMMAND","undefined","REMOVE_LIST_COMMAND","formatNumberedList","INSERT_ORDERED_LIST_COMMAND","updateToolbar","$isRangeSelection","hasFormat","nextBlockType","anchor","getNode","current","editorElem","nativeSelection","window","getSelection","rootElement","getRootElement","isCollapsed","contains","isEditable","domRect","getRangeAt","bottomRect","DOMRect","bottom","useEffect","getEditorState","read","addEventListener","removeEventListener","mergeRegister","registerUpdateListener","editorState","registerCommand","SELECTION_CHANGE_COMMAND","_payload","COMMAND_PRIORITY_CRITICAL","CLICK_COMMAND","COMMAND_PRIORITY_HIGH","Stack","jsx","Tooltip","IconButton","FORMAT_TEXT_COMMAND","Text","borderLeft","borderColor","List","ListOrdered","useFloatingTextToolbar","$","_c","t0","t1","createPortal","FloatingTextFormatToolbarPlugin","document","body","useLexicalComposerContext","AwarenessCursorsCSS","Symbol","for","CollaborativeMarkdownEditor","props","roomId","wsUrl","wsParams","userName","userColor","t2","placeholder","t3","editorContainerRef","floatingToolbarAnchorElem","setFloatingToolbarAnchorElem","synced","setSynced","doc","_temp","t4","nextProvider","WebsocketProvider","params","connect","on","isSynced","provider","t5","t6","disconnect","t7","t8","t9","namespace","nodes","editorNodes","onError","_temp2","editable","theme","editorTheme","initialConfig","t10","t11","t12","CollaborationPluginV2__EXPERIMENTAL","t13","t14","t15","t16","t17","LinkPlugin","ListPlugin","HorizontalRulePlugin","ImportCodeBlocksPlugin","EquationPlugin","t18","ContentEditable","t19","Box","t20","RichTextPlugin","LexicalErrorBoundary","t21","t22","Flex","LexicalComposer","jsxs","LexicalCollaboration","error","console","Y","Doc","MarkdownEditor","autoFocus","debug","defaultState","onChange","splitFrontmatter","frontmatter","shouldTrackChanges","Boolean","$convertFromMarkdownString","editorTransformers","AutoFocusPlugin","HistoryPlugin","OnChangePlugin","root","$getRoot","markdownBody","$convertToMarkdownString","ToggleEditablePlugin","TreeViewPlugin","t23","inferResourceTypeFromMediaType","mediaType","normalized","toLowerCase","trim","startsWith","extensionToMediaType","csv","tsv","json","md","markdown","txt","pdf","png","jpg","jpeg","gif","svg","webp","mp4","mov","ts","tsx","js","sql","yml","yaml","mediaTypeFromPath","path","ext","split","pop"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAMA,KAAe,IACfC,KAAoB;AAEnB,SAASC,GACdC,GACAC,GACAC,GACAC,IAAsBN,IACtBO,IAA2BN,IACrB;AACN,QAAMO,IAAeH,EAAWI;AAEhC,MAAIN,MAAe,QAAQ,CAACK,GAAc;AACxCJ,IAAAA,EAAaM,MAAMC,UAAU,KAC7BP,EAAaM,MAAME,YAAY;AAC/B;AAAA,EACF;AAEA,QAAMC,IAAmBT,EAAaU,sBAAAA,GAChCC,IAAoBV,EAAWS,sBAAAA,GAC/BE,IAAqBR,EAAaM,sBAAAA;AAExC,MAAIG,IAAMd,EAAWc,MAAMX,GACvBY,IAAOf,EAAWe,OAAOX;AAE7B,EAAIU,IAAMD,EAAmBC,QAC3BA,KAAOJ,EAAiBM,SAAShB,EAAWgB,SAASb,IAAc,IAGjEY,IAAOL,EAAiBO,QAAQJ,EAAmBK,UACrDH,IAAOF,EAAmBK,QAAQR,EAAiBO,QAAQb,IAG7DU,KAAOF,EAAkBE,KACzBC,KAAQH,EAAkBG,MAE1Bd,EAAaM,MAAMC,UAAU,KAC7BP,EAAaM,MAAME,YAAY,aAAaM,CAAI,OAAOD,CAAG;AAC5D;ACJA,MAAMK,KAAM,IAENC,KAAuB;AAAA,EAC3BC,QAAQ;AAAA,EACRC,OAAO;AAAA,EACPC,MAAM;AAAA,EACNC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,QAAQ;AAAA,EACRC,WAAW;AAAA,EACXC,OAAO;AACT,GAEMC,KAAmBA,CAACC,MACjBA,KAAQd,KAAwBc,IAA6C,MAGhFC,KAAuBA,CAACC,OAE1BA,EAAWC,aAAa,SACpBD,IACAE,GAAoBF,GAAaG,CAAAA,MAAS;AACxC,QAAMC,IAASD,EAAKE,UAAAA;AACpB,SAAOD,MAAW,QAAQE,GAAoBF,CAAM;AACtD,CAAC,MAEaJ,EAAWO,0BAAAA,GAG3BC,KAA6BA,CAACR,MAA4B;AAC9D,QAAMS,IAAUV,GAAqBC,CAAU;AAE/C,MAAIU,EAAYD,CAAO;AACrB,WAAOA,EAAQE,YAAAA;AAGjB,QAAMC,IAAaV,GAAoBF,GAAaG,CAAAA,MAASO,EAAYP,CAAI,CAAC;AAC9E,MAAIS,MAAe,QAAQF,EAAYE,CAAU;AAC/C,WAAOA,EAAWD,YAAAA;AAGpB,QAAMb,IAAOe,GAAeJ,CAAO,IAAIA,EAAQK,OAAAA,IAAWL,EAAQM,QAAAA;AAClE,SAAOlB,GAAiBC,CAAI;AAC9B;AAEA,SAASkB,GAAoB;AAAA,EAC3BC,QAAAA;AAAAA,EACAnD,YAAAA;AAAAA,EACAoD,iBAAAA;AAAAA,EACAC,oBAAAA;AAMF,GAAsB;AACpB,QAAMC,IAAYC,EAA8B,IAAI,GAC9C,CAACC,GAAWC,CAAY,IAAIC,EAA4C,WAAW,GACnF,CAACC,GAAQC,CAAS,IAAIF,EAAS,EAAK,GACpC,CAACG,GAAUC,CAAW,IAAIJ,EAAS,EAAK,GACxC,CAACK,GAAaC,CAAc,IAAIN,EAAS,EAAK,GAC9CO,IAA2BV,EAAkC,MAAA;AAAA,GAAe,GAE5EW,IAAgBA,CAACC,MAAgC;AACrD,QAAIX,MAAcW,GAAa;AAC7BhB,MAAAA,EAAOiB,OAAO,MAAM;AAClB,cAAMC,IAAYC,EAAAA;AAClBC,QAAAA,GAAeF,GAAW,MAAMG,GAAmBL,CAAW,CAAC;AAAA,MACjE,CAAC;AACD;AAAA,IACF;AAEAhB,IAAAA,EAAOiB,OAAO,MAAM;AAClB,YAAMC,IAAYC,EAAAA;AAClBC,MAAAA,GAAeF,GAAW,MAAMI,IAAsB;AAAA,IACxD,CAAC;AAAA,EACH,GAEMC,IAAmBA,MAAM;AAC7B,IAAIlB,MAAc,WAChBL,EAAOwB,gBAAgBC,IAA+BC,MAAS,IAE/D1B,EAAOwB,gBAAgBG,IAAqBD,MAAS;AAAA,EAEzD,GAEME,IAAqBA,MAAM;AAC/B,IAAIvB,MAAc,WAChBL,EAAOwB,gBAAgBK,IAA6BH,MAAS,IAE7D1B,EAAOwB,gBAAgBG,IAAqBD,MAAS;AAAA,EAEzD,GAEMI,IAAgBA,MAAM;AAC1B,UAAMZ,IAAYC,EAAAA;AAClB,QAAI,CAACY,EAAkBb,CAAS,EAAG;AAEnCT,IAAAA,EAAUS,EAAUc,UAAU,MAAM,CAAC,GACrCrB,EAAYO,EAAUc,UAAU,QAAQ,CAAC,GACzCnB,EAAeK,EAAUc,UAAU,WAAW,CAAC;AAE/C,UAAMC,IAAgB1C,GAA2B2B,EAAUgB,OAAOC,SAAS;AAC3E,IAAIF,KACF3B,EAAa2B,CAAa;AAAA,EAE9B;AAEAnB,SAAAA,EAAyBsB,UAAU,MAAM;AACvC,UAAMlB,IAAYC,EAAAA,GACZkB,IAAalC,EAAUiC,SACvBE,IAAkBC,OAAOC,aAAAA;AAE/B,QAAIH,MAAe;AACjB;AAGF,UAAMI,IAAczC,EAAO0C,eAAAA;AAG3B,QACExB,MAAc,QACda,EAAkBb,CAAS,KAC3B,CAACA,EAAUyB,YAAAA,KACXL,MAAoB,QACpB,CAACA,EAAgBK,eACjBF,MAAgB,QAChBA,EAAYG,SAASN,EAAgBvD,UAAU,KAC/CiB,EAAO6C,cACP;AACA,YAAMC,IAA+BR,EAAgBS,WAAW,CAAC,EAAEzF,sBAAAA;AAEnE,UAAIwF,GAAS;AAEX,cAAME,IAAa,IAAIC,QAAQH,EAAQpF,MAAMoF,EAAQI,QAAQ,GAAG,CAAC;AACjExG,QAAAA,GAAmBsG,GAAYX,GAAYxF,GAAYiB,EAAG;AAAA,MAC5D;AAEAoC,MAAAA,EAAmB,EAAI;AAAA,IACzB;AACE,MAAIuC,MAAgB,QAClB/F,GAAmB,MAAM2F,GAAYxF,CAAU,GAEjDqD,EAAmB,EAAK;AAG1B4B,WAAAA,EAAAA,GAEO;AAAA,EACT,GAEAqB,EAAU,MAAM;AACd,UAAMnG,IAAeH,EAAWI,eAE1BgE,IAASA,MAAM;AACnBjB,MAAAA,EAAOoD,iBAAiBC,KAAK,MAAM;AACjCvC,QAAAA,EAAyBsB,QAAAA;AAAAA,MAC3B,CAAC;AAAA,IACH;AAEAG,kBAAOe,iBAAiB,UAAUrC,CAAM,GAEpCjE,KACFA,EAAasG,iBAAiB,UAAUrC,CAAM,GAGzC,MAAM;AACXsB,aAAOgB,oBAAoB,UAAUtC,CAAM,GACvCjE,KACFA,EAAauG,oBAAoB,UAAUtC,CAAM;AAAA,IAErD;AAAA,EACF,GAAG,CAACpE,GAAYmD,CAAM,CAAC,GAEvBmD,EAAU,MACDK,GACLxD,EAAOyD,uBAAuB,CAAC;AAAA,IAAEC,aAAAA;AAAAA,EAAAA,MAAkB;AACjDA,IAAAA,EAAYL,KAAK,MAAM;AACrBvC,MAAAA,EAAyBsB,QAAAA;AAAAA,IAC3B,CAAC;AAAA,EACH,CAAC,GACDpC,EAAO2D,gBACLC,IACCC,CAAAA,OACC/C,EAAyBsB,QAAAA,GAClB,KAET0B,EACF,GACA9D,EAAO2D,gBACLI,IACCF,CAAAA,MAAa;AACZ,UAAM3C,IAAYC,EAAAA;AAClB,WAAIY,EAAkBb,CAAS,KAC7BJ,EAAyBsB,QAAAA,GAEpB;AAAA,EACT,GACA4B,EACF,CACF,GACC,CAAChE,CAAM,CAAC,qBAGR,OAAA,EAAI,KAAKG,GAAW,WAAW,gCAAgCF,IAAkB,WAAW,EAAE,IAC7F,4BAACgE,GAAA,EAAM,WAAU,OAAM,KAAI,OAAM,YAAW,UAE1C,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAQ,SAAQ,QACf,UAAA,gBAAAD,EAACE,KACC,eAAa5D,KAAUkB,QACvB,SAAS,MAAM;AACb1B,MAAAA,EAAOwB,gBAAgB6C,IAAqB,MAAM;AAAA,IACpD,GACA,SAAQ,SACR,cAAW,QACX,MAAK,MAEL,UAAA,gBAAAH,EAACI,GAAA,EAAK,YAAW,QAAO,UAAS,UAAQ,UAAA,IAAA,CAEzC,GACF,GACF;AAAA,IACA,gBAAAJ,EAACC,GAAA,EAAQ,SAAQ,UACf,UAAA,gBAAAD,EAACE,KACC,eAAa1D,KAAYgB,QACzB,SAAS,MAAM;AACb1B,MAAAA,EAAOwB,gBAAgB6C,IAAqB,QAAQ;AAAA,IACtD,GACA,SAAQ,SACR,cAAW,UACX,MAAK,MAEL,UAAA,gBAAAH,EAACI,GAAA,EAAK,WAAU,UAAS,UAAS,UAAQ,UAAA,IAAA,CAE1C,GACF,GACF;AAAA,IACA,gBAAAJ,EAACC,GAAA,EAAQ,SAAQ,aACf,UAAA,gBAAAD,EAACE,KACC,eAAaxD,KAAec,QAC5B,SAAS,MAAM;AACb1B,MAAAA,EAAOwB,gBAAgB6C,IAAqB,WAAW;AAAA,IACzD,GACA,SAAQ,SACR,cAAW,aACX,MAAK,MAEL,UAAA,gBAAAH,EAACI,GAAA,EAAK,gBAAe,aAAY,UAAS,UAAQ,UAAA,IAAA,CAElD,GACF,GACF;AAAA,IAGA,gBAAAJ,EAACD,GAAA,EAAM,IAAG,QAAO,QAAO,QAAO,IAAG,OAChC,UAAA,gBAAAC,EAAC,QAAA,EACC,OAAO;AAAA,MACLK,YAAY;AAAA,MACZ5G,QAAQ;AAAA,MACR6G,aAAa;AAAA,IAAA,GACb,EAAA,CAEN;AAAA,sBAGCL,GAAA,EAAQ,SAAQ,aACf,UAAA,gBAAAD,EAACE,KACC,eAAa/D,MAAc,QAAQqB,QACnC,SAAQ,SACR,cAAW,aACX,MAAK,MACL,SAAS,MAAM;AACbX,MAAAA,EAAc,IAAI;AAAA,IACpB,GAEA,4BAACuD,GAAA,EAAK,YAAW,QAAO,UAAS,SAAO,UAAA,KAAA,CAExC,EAAA,CACF,EAAA,CACF;AAAA,sBACCH,GAAA,EAAQ,SAAQ,aACf,UAAA,gBAAAD,EAACE,KACC,eAAa/D,MAAc,QAAQqB,QACnC,SAAQ,SACR,cAAW,aACX,MAAK,MACL,SAAS,MAAM;AACbX,MAAAA,EAAc,IAAI;AAAA,IACpB,GAEA,4BAACuD,GAAA,EAAK,YAAW,QAAO,UAAS,SAAO,UAAA,KAAA,CAExC,EAAA,CACF,EAAA,CACF;AAAA,sBACCH,GAAA,EAAQ,SAAQ,aACf,UAAA,gBAAAD,EAACE,KACC,eAAa/D,MAAc,QAAQqB,QACnC,SAAQ,SACR,cAAW,aACX,MAAK,MACL,SAAS,MAAM;AACbX,MAAAA,EAAc,IAAI;AAAA,IACpB,GAEA,4BAACuD,GAAA,EAAK,YAAW,QAAO,UAAS,SAAO,UAAA,KAAA,CAExC,EAAA,CACF,EAAA,CACF;AAAA,IAGA,gBAAAJ,EAACD,GAAA,EAAM,IAAG,QAAO,QAAO,QAAO,IAAG,OAChC,UAAA,gBAAAC,EAAC,QAAA,EACC,OAAO;AAAA,MACLK,YAAY;AAAA,MACZ5G,QAAQ;AAAA,MACR6G,aAAa;AAAA,IAAA,GACb,EAAA,CAEN;AAAA,IAGA,gBAAAN,EAACC,KAAQ,SAAQ,iBACf,4BAACC,GAAA,EACC,eAAa/D,MAAc,YAAYqB,QACvC,SAAQ,SACR,cAAW,iBACX,MAAK,MACL,SAASH,GAET,4BAACkD,IAAA,EAAK,MAAM,GAAA,CAAG,EAAA,CACjB,EAAA,CACF;AAAA,IACA,gBAAAP,EAACC,KAAQ,SAAQ,iBACf,4BAACC,GAAA,EACC,eAAa/D,MAAc,YAAYqB,QACvC,SAAQ,SACR,cAAW,iBACX,MAAK,MACL,SAASE,GAET,4BAAC8C,IAAA,EAAY,MAAM,GAAA,CAAG,EAAA,CACxB,EAAA,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;AAEA,SAAAC,GAAA3E,GAAAnD,GAAA;AAAA,QAAA+H,IAAAC,EAAA,CAAA,GACE,CAAA5E,GAAAC,CAAA,IAA8CK,EAAS,EAAK;AAAE,MAAAuE;AAAA,EAAAF,EAAA,CAAA,MAAA/H,KAAA+H,SAAA5E,KAAA4E,EAAA,CAAA,MAAA3E,KAG5D6E,IAAA,gBAAAZ,EAACnE,IAAA,EACSC,QAAAA,GACInD,YAAAA,GACKoD,iBAAAA,GACGC,oBAAAA,GAAkB,GACtC0E,OAAA/H,GAAA+H,OAAA5E,GAAA4E,OAAA3E,GAAA2E,OAAAE,KAAAA,IAAAF,EAAA,CAAA;AAAA,MAAAG;AAAA,SAAAH,EAAA,CAAA,MAAA/H,KAAA+H,SAAAE,KANGC,IAAAC,GACLF,GAMAjI,CACF,GAAC+H,OAAA/H,GAAA+H,OAAAE,GAAAF,OAAAG,KAAAA,IAAAH,EAAA,CAAA,GARMG;AAQN;AAGI,SAAAE,GAAAH,GAAA;AAAyC,QAAA;AAAA,IAAAjI,YAAAkI;AAAAA,EAAAA,IAAAD,GAC9CjI,IAAAkI,MAAArD,SAAawD,SAAQC,OAArBJ,GAIA,CAAA/E,CAAA,IAAiBoF,GAAAA;AAA4B,SACtCT,GAAuB3E,GAAQnD,CAAU;AAAC;ACpZ5C,SAAAwI,KAAA;AAAA,QAAAT,IAAAC,EAAA,CAAA;AAAA,MAAAC;AAAA,SAAAF,EAAA,CAAA,MAAAU,uBAAAC,IAAA,2BAAA,KAEHT,IAAA,gBAAAZ,EAAA,WACG,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAmCH,GAAQU,OAAAE,KAAAA,IAAAF,EAAA,CAAA,GApCRE;AAoCQ;ACXL,SAAAU,GAAAC,GAAA;AAAA,QAAAb,IAAAC,EAAA,EAAA,GACL;AAAA,IAAAa,QAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,UAAAd;AAAAA,IAAAe,UAAAd;AAAAA,IAAAe,WAAAC;AAAAA,IAAAC,aAAAA;AAAAA,EAAAA,IAAqGP;AAAM,MAAAQ;AAAA,EAAArB,SAAAE,KAApFmB,IAAAnB,MAAApD,SAAA,CAAA,IAAAoD,GAAaF,OAAAE,GAAAF,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AAAb,QAAAgB,IAAAK,GAAeJ,IAAAd,MAAArD,SAAA,cAAAqD,GAAwBe,IAAAC,MAAArE,SAAA,YAAAqE,GAE9DG,IAA2B9F,EAAuB,IAAI,GACtD,CAAA+F,GAAAC,CAAA,IAAkE7F,EAA6B,IAAI,GACnG,CAAA8F,GAAAC,CAAA,IAA4B/F,EAAS,EAAK,GAG1C,CAAAgG,CAAA,IAAchG,EAASiG,EAAiB;AAAE,MAAAC;AAAA,EAAA7B,EAAA,CAAA,MAAA2B,KAAA3B,EAAA,CAAA,MAAAc,KAAAd,EAAA,CAAA,MAAAgB,KAAAhB,SAAAe,KACdc,IAAAA,MAAA;AAC1B,UAAAC,IAAqB,IAAIC,GAAkBhB,GAAOD,GAAQa,GAAK;AAAA,MAAAK,QAAUhB;AAAAA,MAAQiB,SAAW;AAAA,IAAA,CAAO;AAEnGH,WAAAA,EAAYI,GAAI,QAAQC,CAAAA,MAAA;AACtB,MAAIA,KAAUT,EAAU,EAAI;AAAA,IAAE,CAC/B,GAEMI;AAAAA,EAAY,GACpB9B,OAAA2B,GAAA3B,OAAAc,GAAAd,OAAAgB,GAAAhB,OAAAe,GAAAf,OAAA6B,KAAAA,IAAA7B,EAAA,CAAA;AARD,QAAA,CAAAoC,CAAA,IAAmBzG,EAASkG,CAQ3B;AAAE,MAAAQ,GAAAC;AAAA,EAAAtC,SAAAoC,KAGOC,IAAAA,OACRD,EAAQH,QAAAA,GAED,MAAA;AACLG,IAAAA,EAAQG,WAAAA;AAAAA,EAAa,IAEtBD,IAAA,CAACF,CAAQ,GAACpC,OAAAoC,GAAApC,OAAAqC,GAAArC,OAAAsC,MAAAD,IAAArC,EAAA,CAAA,GAAAsC,IAAAtC,EAAA,CAAA,IANbzB,EAAU8D,GAMPC,CAAU;AAAC,MAAAE,GAAAC;AAAA,EAAAzC,EAAA,EAAA,MAAAU,uBAAAC,IAAA,2BAAA,KAEJ6B,IAAAA,MAAA;AACRhB,IAAAA,EAA6BF,EAAkB9D,OAAQ;AAAA,EAAC,GACvDiF,IAAA,CAAA,GAAEzC,QAAAwC,GAAAxC,QAAAyC,MAAAD,IAAAxC,EAAA,EAAA,GAAAyC,IAAAzC,EAAA,EAAA,IAFLzB,EAAUiE,GAEPC,CAAE;AAAC,MAAAC;AAAA,EAAA1C,EAAA,EAAA,MAAAU,uBAAAC,IAAA,2BAAA,KAEgB+B,IAAA;AAAA,IAAAC,WACT;AAAA,IAAsBC,OAC1BC;AAAAA,IAAW/D,aACL;AAAA,IAAIgE,SACRC;AAAAA,IAAsCC,UACrC;AAAA,IAAIC,OACPC;AAAAA,EAAAA,GACRlD,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA;AAPD,QAAAmD,IAAsBT;AAOpB,MAAAU;AAAA,EAAApD,EAAA,EAAA,MAAAU,uBAAAC,IAAA,2BAAA,KAcEyC,sBAAC3C,IAAA,EAAmB,GAAGT,QAAAoD,KAAAA,IAAApD,EAAA,EAAA;AAOP,QAAAqD,IAAAjB;AAA+B,MAAAkB;AAAA,EAAAtD,EAAA,EAAA,MAAA2B,KAAA3B,EAAA,EAAA,MAAAc,KAAAd,EAAA,EAAA,MAAAqD,KAAArD,EAAA,EAAA,MAAAkB,KAAAlB,UAAAiB,KAH3CqC,IAAA,gBAAAhE,EAACiE,IAAA,EACKzC,IAAAA,GACCa,KAAAA,GACK,UAAA0B,GACe,yBAAA,IACfpC,UAAAA,GACGC,aAAAA,GAAS,GACtBlB,QAAA2B,GAAA3B,QAAAc,GAAAd,QAAAqD,GAAArD,QAAAkB,GAAAlB,QAAAiB,GAAAjB,QAAAsD,KAAAA,IAAAtD,EAAA,EAAA;AAAA,MAAAwD,GAAAC,GAAAC,GAAAC,GAAAC;AAAA,EAAA5D,EAAA,EAAA,MAAAU,uBAAAC,IAAA,2BAAA,KACF6C,sBAACK,IAAA,EAAU,GACXJ,sBAACK,IAAA,EAAU,GACXJ,sBAACK,IAAA,EAAoB,GACrBJ,sBAACK,IAAA,EAAsB,GACvBJ,sBAACK,IAAA,EAAc,GAAGjE,QAAAwD,GAAAxD,QAAAyD,GAAAzD,QAAA0D,GAAA1D,QAAA2D,GAAA3D,QAAA4D,MAAAJ,IAAAxD,EAAA,EAAA,GAAAyD,IAAAzD,EAAA,EAAA,GAAA0D,IAAA1D,EAAA,EAAA,GAAA2D,IAAA3D,EAAA,EAAA,GAAA4D,IAAA5D,EAAA,EAAA;AAAA,MAAAkE;AAAA,EAAAlE,EAAA,EAAA,MAAAU,uBAAAC,IAAA,2BAAA,KAECuD,sBAACC,IAAA,EAA2B,WAAA,GAAA,CAAK,GAAInE,QAAAkE,KAAAA,IAAAlE,EAAA,EAAA;AAAA,MAAAoE;AAAA,EAAApE,EAAA,EAAA,MAAAoB,KAAApB,UAAAyB,KAEpD2C,IAAA3C,KAAAL,IACE,gBAAA9B,EAAC+E,IAAA,EACU,UAAA,YACL,KAAA,KACE,OAAA,YACQ,eAAA,QACH,YAAA,QACD,WAAA,uBAETjD,aACH,IAVF,MAWQpB,QAAAoB,GAAApB,QAAAyB,GAAAzB,QAAAoE,KAAAA,IAAApE,EAAA,EAAA;AAAA,MAAAsE;AAAA,EAAAtE,UAAAoE,KAdZE,sBAACC,IAAA,EACkB,iBAAAL,GAEf,aAAAE,GAaaI,eAAAA,IAAoB,GACnCxE,QAAAoE,GAAApE,QAAAsE,KAAAA,IAAAtE,EAAA,EAAA;AAAA,MAAAyE;AAAA,EAAAzE,UAAAuB,KACDkD,IAAAlD,IACC,gBAAAjC,EAACe,IAAA,EAA4CkB,YAAAA,GAAyB,IADvE,MAEOvB,QAAAuB,GAAAvB,QAAAyE,KAAAA,IAAAzE,EAAA,EAAA;AAAA,MAAA0E;AAAA,SAAA1E,EAAA,EAAA,MAAAsD,KAAAtD,UAAAsE,KAAAtE,EAAA,EAAA,MAAAyE,KAhDdC,sBAACC,IAAA,EACMrD,KAAAA,GACK,WAAA,aACK,gBAAA,iBACT,OAAA,QACG,UAAA,QACF,QAAA,QACE,UAAA,YACC,WAAA,UACD,UAAA,WAET8B,UAAAA;AAAAA,IAAAA;AAAAA,IAEA,gBAAA9D,EAACsF,IAAA,EAA+BzB,eAAAA,GAC9B,UAAA,gBAAA0B,EAACC,IAAA,EACCxB,UAAAA;AAAAA,MAAAA;AAAAA,MAQAE;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAU;AAAAA,MAkBCG;AAAAA,IAAAA,EAAAA,CAGH,EAAA,CACF;AAAA,EAAA,GACF,GAAOzE,QAAAsD,GAAAtD,QAAAsE,GAAAtE,QAAAyE,GAAAzE,QAAA0E,KAAAA,IAAA1E,EAAA,EAAA,GAnDP0E;AAmDO;AA7FJ,SAAA3B,GAAAgC,GAAA;AAAA,SAoCwBC,QAAOD,MAAOA,CAAK;AAAC;AApC5C,SAAAnD,KAAA;AAAA,SAQwB,IAAIqD,GAACC,IAAAA;AAAM;ACNnC,SAAAC,GAAAtE,GAAA;AAAA,QAAAb,IAAAC,EAAA,EAAA,GACL;AAAA,IAAAmF,WAAAlF;AAAAA,IAAAmF,OAAAlF;AAAAA,IAAAmF,cAAAnE;AAAAA,IAAAlD,YAAAoD;AAAAA,IAAAD,aAAAA;AAAAA,IAAAmE,UAAAA;AAAAA,EAAAA,IAA2G1E,GAAnGuE,IAAAlF,MAAApD,SAAA,KAAAoD,GAAmBmF,IAAAlF,MAAArD,SAAA,KAAAqD,GAAemF,IAAAnE,MAAArE,SAAA,KAAAqE,GAAmBlD,IAAAoD,MAAAvE,SAAA,KAAAuE;AAAkB,MAAAQ;AAAA,EAAA7B,SAAAsF,KACjDzD,IAAA2D,GAAiBF,CAAY,GAACtF,OAAAsF,GAAAtF,OAAA6B,KAAAA,IAAA7B,EAAA,CAAA;AAA5D,QAAA;AAAA,IAAAyF,aAAAA;AAAAA,IAAAlF,MAAAA;AAAAA,EAAAA,IAA8BsB,GAC9B6D,IAA2BzH,KAAc0H,EAAQJ,GACjDjE,IAA2B9F,EAAuB,IAAI,GACtD,CAAA+F,GAAAC,CAAA,IAAkE7F,EAA6B,IAAI;AAAE,MAAA0G,GAAAC;AAAA,EAAAtC,EAAA,CAAA,MAAAU,uBAAAC,IAAA,2BAAA,KAE3F0B,IAAAA,MAAA;AACRb,IAAAA,EAA6BF,EAAkB9D,OAAQ;AAAA,EAAC,GACvD8E,IAAA,CAAA,GAAEtC,OAAAqC,GAAArC,OAAAsC,MAAAD,IAAArC,EAAA,CAAA,GAAAsC,IAAAtC,EAAA,CAAA,IAFLzB,EAAU8D,GAEPC,CAAE;AAAC,MAAAE;AAAA,EAAAxC,SAAAO,KAKSiC,IAAAA,MACJoD,GAA2BrF,GAAMsF,IAAoB/I,QAAW,EAAK,GAC7EkD,OAAAO,GAAAP,OAAAwC,KAAAA,IAAAxC,EAAA,CAAA;AAAA,MAAAyC;AAAA,EAAAzC,EAAA,CAAA,MAAA/B,KAAA+B,SAAAwC,KALmBC,IAAA;AAAA,IAAAE,WACT;AAAA,IAAiBC,OACrBC;AAAAA,IAAW/D,aACL0D;AAAAA,IAEZM,SACQlB;AAAAA,IAAsCoB,UACrC/E;AAAAA,IAAUgF,OACbC;AAAAA,EAAAA,GACRlD,OAAA/B,GAAA+B,OAAAwC,GAAAxC,OAAAyC,KAAAA,IAAAzC,EAAA,CAAA;AATD,QAAAmD,IAAsBV;AASpB,MAAAC;AAAA,EAAA1C,SAAAoF,KAeK1C,IAAA0C,IAAY,gBAAA9F,EAACwG,IAAA,CAAA,CAAe,IAA5B,MAAsC9F,OAAAoF,GAAApF,QAAA0C,KAAAA,IAAA1C,EAAA,EAAA;AAAA,MAAAoD,GAAAC,GAAAC,GAAAE,GAAAC,GAAAC;AAAA,EAAA1D,EAAA,EAAA,MAAAU,uBAAAC,IAAA,2BAAA,KACvCyC,sBAAC2C,IAAA,EAAa,GACd1C,sBAACQ,IAAA,EAAU,GACXP,sBAACQ,IAAA,EAAU,GACXN,sBAACO,IAAA,EAAoB,GACrBN,sBAACO,IAAA,EAAsB,GACvBN,sBAACO,IAAA,EAAc,GAAGjE,QAAAoD,GAAApD,QAAAqD,GAAArD,QAAAsD,GAAAtD,QAAAwD,GAAAxD,QAAAyD,GAAAzD,QAAA0D,MAAAN,IAAApD,EAAA,EAAA,GAAAqD,IAAArD,EAAA,EAAA,GAAAsD,IAAAtD,EAAA,EAAA,GAAAwD,IAAAxD,EAAA,EAAA,GAAAyD,IAAAzD,EAAA,EAAA,GAAA0D,IAAA1D,EAAA,EAAA;AAAA,MAAA2D;AAAA,EAAA3D,EAAA,EAAA,MAAAU,uBAAAC,IAAA,2BAAA,KAECgD,sBAACQ,IAAA,EAA2B,WAAA,GAAA,CAAK,GAAInE,QAAA2D,KAAAA,IAAA3D,EAAA,EAAA;AAAA,MAAA4D;AAAA,EAAA5D,UAAAoB,KAEpDwC,IAAAxC,IACE,gBAAA9B,EAACqF,IAAA,EACU,UAAA,YACL,KAAA,KACC,MAAA,KACC,OAAA,KACQ,eAAA,QACH,YAAA,QACI,gBAAA,UAEf,UAAA,gBAAArF,EAAC+E,IAAA,EAAU,OAAA,QAAgB,UAAA,SAAc,OAAA,YAAqB,WAAA,uBAC3DjD,UAAAA,EAAAA,CACH,GACF,IAbF,MAcQpB,QAAAoB,GAAApB,QAAA4D,KAAAA,IAAA5D,EAAA,EAAA;AAAA,MAAAkE;AAAA,EAAAlE,UAAA4D,KAjBZM,sBAACK,IAAA,EACkB,iBAAAZ,GAEf,aAAAC,GAgBaY,eAAAA,IAAoB,GACnCxE,QAAA4D,GAAA5D,QAAAkE,KAAAA,IAAAlE,EAAA,EAAA;AAAA,MAAAoE;AAAA,EAAApE,EAAA,EAAA,MAAAuB,KAAAvB,UAAA/B,KACDmG,IAAAnG,KAAAsD,IACC,gBAAAjC,EAACe,IAAA,EAA4CkB,YAAAA,GAAyB,IADvE,MAEOvB,QAAAuB,GAAAvB,QAAA/B,GAAA+B,QAAAoE,KAAAA,IAAApE,EAAA,EAAA;AAAA,MAAAsE;AAAA,EAAAtE,EAAA,EAAA,MAAAyF,KAAAzF,UAAAuF,KAAAvF,EAAA,EAAA,MAAA0F,KACPpB,IAAAoB,sBACEM,IAAA,EACC,uBAAA,IAC6B,6BAAA,IACnB,UAAAlH,CAAAA,MAAA;AACRA,IAAAA,EAAWL,KAAM,MAAA;AACf,YAAAwH,IAAaC,GAAAA,GACbC,KAAqBC,GAAyBP,IAAoBI,CAAI;AACtEV,MAAAA,IAAWE,IAAcU,EAAY;AAAA,IAAC,CACvC;AAAA,EAAC,GACH,IAVJ,MAYOnG,QAAAyF,GAAAzF,QAAAuF,GAAAvF,QAAA0F,GAAA1F,QAAAsE,KAAAA,IAAAtE,EAAA,EAAA;AAAA,MAAAyE;AAAA,EAAAzE,UAAA/B,KACRwG,sBAAC4B,MAAiCpI,YAAAA,EAAAA,CAAU,GAAI+B,QAAA/B,GAAA+B,QAAAyE,KAAAA,IAAAzE,EAAA,EAAA;AAAA,MAAA0E;AAAA,EAAA1E,UAAAqF,KAC/CX,IAAAW,uBAAUiB,IAAA,CAAA,CAAc,GAAGtG,QAAAqF,GAAArF,QAAA0E,KAAAA,IAAA1E,EAAA,EAAA;AAAA,MAAAuG;AAAA,SAAAvG,EAAA,EAAA,MAAAmD,KAAAnD,EAAA,EAAA,MAAAkE,KAAAlE,EAAA,EAAA,MAAAoE,KAAApE,UAAAsE,KAAAtE,EAAA,EAAA,MAAAyE,KAAAzE,EAAA,EAAA,MAAA0E,KAAA1E,EAAA,EAAA,MAAA0C,KAzDhC6D,sBAAC5B,MACMrD,KAAAA,GACK,WAAA,aACK,gBAAA,iBACT,OAAA,QACG,UAAA,QACF,QAAA,QACE,UAAA,YACC,WAAA,UACD,UAAA,WAET,UAAA,gBAAAuD,EAACD,IAAA,EAA+BzB,eAAAA,GAC7BT,UAAAA;AAAAA,IAAAA;AAAAA,IACDU;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAE;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAQ;AAAAA,IAqBCE;AAAAA,IAGAE;AAAAA,IAaDG;AAAAA,IACCC;AAAAA,EAAAA,EAAAA,CACH,EAAA,CACF,GAAO1E,QAAAmD,GAAAnD,QAAAkE,GAAAlE,QAAAoE,GAAApE,QAAAsE,GAAAtE,QAAAyE,GAAAzE,QAAA0E,GAAA1E,QAAA0C,GAAA1C,QAAAuG,KAAAA,IAAAvG,EAAA,EAAA,GA3DPuG;AA2DO;AAlFJ,SAAA3E,GAAAmD,GAAA;AAAA,SAiBwBC,QAAOD,MAAOA,CAAK;AAAC;AChD5C,SAASyB,GAA+BC,GAAmB;AAChE,QAAMC,IAAaD,EAAUE,YAAAA,EAAcC,KAAAA;AAC3C,SAAKF,IAEDA,EAAWG,WAAW,QAAQ,IAAU,UACxCH,MAAe,oBAA0B,QACzCA,MAAe,kBAAwB,aACvCA,MAAe,cAAcA,MAAe,8BAAoC,UAChFA,MAAe,qBAA2B,UAC1CA,EAAWG,WAAW,OAAO,KAC7BH,EAAWG,WAAW,cAAc,GAAU,UAR1B;AAY1B;AChBA,MAAMC,KAA+C;AAAA,EACnDC,KAAK;AAAA,EACLC,KAAK;AAAA,EACLC,MAAM;AAAA,EACNC,IAAI;AAAA,EACJC,UAAU;AAAA,EACVC,KAAK;AAAA,EACLC,KAAK;AAAA,EACLC,KAAK;AAAA,EACLC,KAAK;AAAA,EACLC,MAAM;AAAA,EACNC,KAAK;AAAA,EACLC,KAAK;AAAA,EACLC,MAAM;AAAA,EACNC,KAAK;AAAA,EACLC,KAAK;AAAA,EACLC,IAAI;AAAA,EACJC,KAAK;AAAA,EACLC,IAAI;AAAA,EACJ1I,KAAK;AAAA,EACL2I,KAAK;AAAA,EACLC,KAAK;AAAA,EACLC,MAAM;AACR;AAEO,SAASC,GAAkBC,GAAc;AAE9C,QAAMC,KADUD,EAAKE,MAAM,GAAG,EAAE,CAAC,GAAGA,MAAM,GAAG,EAAE,CAAC,KAAK,IACjCA,MAAM,GAAG,EAAEC,IAAAA,GAAO7B,YAAAA;AACtC,SAAK2B,IACExB,GAAqBwB,CAAG,KAAK,OADnB;AAEnB;"}
|
|
1
|
+
{"version":3,"file":"rich-text.js","sources":["../src/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.ts","../src/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/FloatingTextFormatToolbarPlugin.tsx","../src/components/rich-text/collaborative-markdown-editor/awareness-cursors.tsx","../src/components/rich-text/collaborative-markdown-editor/collaborative-markdown-editor.tsx","../src/components/rich-text/markdown-editor/markdown-editor.tsx","../src/components/rich-text/utils/inferResourceType.ts","../src/components/rich-text/utils/mediaType.ts"],"sourcesContent":["const VERTICAL_GAP = 10;\nconst HORIZONTAL_OFFSET = 5;\n\nexport function setFloatingElemPos(\n targetRect: DOMRect | null,\n floatingElem: HTMLElement,\n anchorElem: HTMLElement,\n verticalGap: number = VERTICAL_GAP,\n horizontalOffset: number = HORIZONTAL_OFFSET,\n): void {\n const scrollerElem = anchorElem.parentElement;\n\n if (targetRect === null || !scrollerElem) {\n floatingElem.style.opacity = \"0\";\n floatingElem.style.transform = \"translate(-10000px, -10000px)\";\n return;\n }\n\n const floatingElemRect = floatingElem.getBoundingClientRect();\n const anchorElementRect = anchorElem.getBoundingClientRect();\n const editorScrollerRect = scrollerElem.getBoundingClientRect();\n\n let top = targetRect.top - verticalGap;\n let left = targetRect.left - horizontalOffset;\n\n if (top < editorScrollerRect.top) {\n top += floatingElemRect.height + targetRect.height + verticalGap * 2;\n }\n\n if (left + floatingElemRect.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset;\n }\n\n top -= anchorElementRect.top;\n left -= anchorElementRect.left;\n\n floatingElem.style.opacity = \"1\";\n floatingElem.style.transform = `translate(${left}px, ${top}px)`;\n}\n","import \"./FloatingTextFormatToolbarPlugin.css\";\n\nimport { IconButton, Stack, Text } from \"@chakra-ui/react\";\nimport {\n $isListNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n REMOVE_LIST_COMMAND,\n} from \"@lexical/list\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $createHeadingNode, $isHeadingNode, type HeadingTagType } from \"@lexical/rich-text\";\nimport { $setBlocksType } from \"@lexical/selection\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport {\n $createParagraphNode,\n $getSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_HIGH,\n FORMAT_TEXT_COMMAND,\n type LexicalEditor,\n type LexicalNode,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\";\nimport { List, ListOrdered } from \"lucide-react\";\nimport type React from \"react\";\nimport { type Dispatch, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Tooltip } from \"../../../../tooltip\";\nimport { setFloatingElemPos } from \"../LinkEditorPlugin/utils/setFloatingElemPos\";\n\n// Increase the vertical gap (negative places it below the selection) to avoid overlap\nconst GAP = -4;\n\nconst blockTypeToBlockName = {\n bullet: \"Bulleted List\",\n check: \"Check List\",\n code: \"Code Block\",\n h1: \"Heading 1\",\n h2: \"Heading 2\",\n h3: \"Heading 3\",\n h4: \"Heading 4\",\n h5: \"Heading 5\",\n h6: \"Heading 6\",\n number: \"Numbered List\",\n paragraph: \"Normal\",\n quote: \"Quote\",\n};\n\nconst toKnownBlockType = (type: string) => {\n return type in blockTypeToBlockName ? (type as keyof typeof blockTypeToBlockName) : null;\n};\n\nconst findSelectionElement = (anchorNode: LexicalNode) => {\n const rootMatch =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : $findMatchingParent(anchorNode, (node) => {\n const parent = node.getParent();\n return parent !== null && $isRootOrShadowRoot(parent);\n });\n\n return rootMatch ?? anchorNode.getTopLevelElementOrThrow();\n};\n\nconst resolveBlockTypeFromAnchor = (anchorNode: LexicalNode) => {\n const element = findSelectionElement(anchorNode);\n\n if ($isListNode(element)) {\n return element.getListType() as keyof typeof blockTypeToBlockName;\n }\n\n const parentList = $findMatchingParent(anchorNode, (node) => $isListNode(node));\n if (parentList !== null && $isListNode(parentList)) {\n return parentList.getListType() as keyof typeof blockTypeToBlockName;\n }\n\n const type = $isHeadingNode(element) ? element.getTag() : element.getType();\n return toKnownBlockType(type);\n};\n\nfunction FloatingTextToolbar({\n editor,\n anchorElem,\n isToolbarActive,\n setIsToolbarActive,\n}: {\n editor: LexicalEditor;\n anchorElem: HTMLElement;\n isToolbarActive: boolean;\n setIsToolbarActive: Dispatch<boolean>;\n}): React.JSX.Element {\n const editorRef = useRef<HTMLDivElement | null>(null);\n const [blockType, setBlockType] = useState<keyof typeof blockTypeToBlockName>(\"paragraph\");\n const [isBold, setIsBold] = useState(false);\n const [isItalic, setIsItalic] = useState(false);\n const [isUnderline, setIsUnderline] = useState(false);\n const updateFloatingToolbarRef = useRef<() => boolean | undefined>(() => undefined);\n\n const formatHeading = (headingSize: HeadingTagType) => {\n if (blockType !== headingSize) {\n editor.update(() => {\n const selection = $getSelection();\n $setBlocksType(selection, () => $createHeadingNode(headingSize));\n });\n return;\n }\n\n editor.update(() => {\n const selection = $getSelection();\n $setBlocksType(selection, () => $createParagraphNode());\n });\n };\n\n const formatBulletList = () => {\n if (blockType !== \"bullet\") {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n\n const formatNumberedList = () => {\n if (blockType !== \"number\") {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n\n const updateToolbar = () => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n setIsBold(selection.hasFormat(\"bold\"));\n setIsItalic(selection.hasFormat(\"italic\"));\n setIsUnderline(selection.hasFormat(\"underline\"));\n\n const nextBlockType = resolveBlockTypeFromAnchor(selection.anchor.getNode());\n if (nextBlockType) {\n setBlockType(nextBlockType);\n }\n };\n\n updateFloatingToolbarRef.current = () => {\n const selection = $getSelection();\n const editorElem = editorRef.current;\n const nativeSelection = window.getSelection();\n\n if (editorElem === null) {\n return;\n }\n\n const rootElement = editor.getRootElement();\n\n // Show floating toolbar when there's a non-collapsed text selection\n if (\n selection !== null &&\n $isRangeSelection(selection) &&\n !selection.isCollapsed() &&\n nativeSelection !== null &&\n !nativeSelection.isCollapsed &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode) &&\n editor.isEditable()\n ) {\n const domRect: DOMRect | undefined = nativeSelection.getRangeAt(0).getBoundingClientRect();\n\n if (domRect) {\n // Anchor to the bottom of the selection to avoid overlap with tall selections\n const bottomRect = new DOMRect(domRect.left, domRect.bottom, 0, 0);\n setFloatingElemPos(bottomRect, editorElem, anchorElem, GAP);\n }\n\n setIsToolbarActive(true);\n } else {\n if (rootElement !== null) {\n setFloatingElemPos(null, editorElem, anchorElem);\n }\n setIsToolbarActive(false);\n }\n\n updateToolbar();\n\n return true;\n };\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement;\n\n const update = () => {\n editor.getEditorState().read(() => {\n updateFloatingToolbarRef.current();\n });\n };\n\n window.addEventListener(\"resize\", update);\n\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update);\n }\n\n return () => {\n window.removeEventListener(\"resize\", update);\n if (scrollerElem) {\n scrollerElem.removeEventListener(\"scroll\", update);\n }\n };\n }, [anchorElem, editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateFloatingToolbarRef.current();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload) => {\n updateFloatingToolbarRef.current();\n return false;\n },\n COMMAND_PRIORITY_CRITICAL,\n ),\n editor.registerCommand(\n CLICK_COMMAND,\n (_payload) => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n updateFloatingToolbarRef.current();\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH,\n ),\n );\n }, [editor]);\n\n return (\n <div ref={editorRef} className={`floating-text-format-toolbar ${isToolbarActive ? \"active\" : \"\"}`}>\n <Stack direction=\"row\" gap=\"0.5\" alignItems=\"center\">\n {/* Text formatting buttons */}\n <Tooltip content=\"Bold\">\n <IconButton\n data-active={isBold || undefined}\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\");\n }}\n variant=\"ghost\"\n aria-label=\"Bold\"\n size=\"xs\"\n >\n <Text fontWeight=\"bold\" fontSize=\".75rem\">\n B\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Italic\">\n <IconButton\n data-active={isItalic || undefined}\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\");\n }}\n variant=\"ghost\"\n aria-label=\"Italic\"\n size=\"xs\"\n >\n <Text fontStyle=\"italic\" fontSize=\".75rem\">\n I\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Underline\">\n <IconButton\n data-active={isUnderline || undefined}\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"underline\");\n }}\n variant=\"ghost\"\n aria-label=\"Underline\"\n size=\"xs\"\n >\n <Text textDecoration=\"underline\" fontSize=\".75rem\">\n U\n </Text>\n </IconButton>\n </Tooltip>\n\n {/* Separator */}\n <Stack as=\"span\" height=\"1rem\" mx=\"0.5\">\n <span\n style={{\n borderLeft: \"1px solid\",\n height: \"100%\",\n borderColor: \"var(--chakra-colors-border-muted)\",\n }}\n />\n </Stack>\n\n {/* Heading buttons */}\n <Tooltip content=\"Heading 1\">\n <IconButton\n data-active={blockType === \"h1\" || undefined}\n variant=\"ghost\"\n aria-label=\"Heading 1\"\n size=\"xs\"\n onClick={() => {\n formatHeading(\"h1\");\n }}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n H1\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Heading 2\">\n <IconButton\n data-active={blockType === \"h2\" || undefined}\n variant=\"ghost\"\n aria-label=\"Heading 2\"\n size=\"xs\"\n onClick={() => {\n formatHeading(\"h2\");\n }}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n H2\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Heading 3\">\n <IconButton\n data-active={blockType === \"h3\" || undefined}\n variant=\"ghost\"\n aria-label=\"Heading 3\"\n size=\"xs\"\n onClick={() => {\n formatHeading(\"h3\");\n }}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n H3\n </Text>\n </IconButton>\n </Tooltip>\n\n {/* Separator */}\n <Stack as=\"span\" height=\"1rem\" mx=\"0.5\">\n <span\n style={{\n borderLeft: \"1px solid\",\n height: \"100%\",\n borderColor: \"var(--chakra-colors-border-muted)\",\n }}\n />\n </Stack>\n\n {/* List buttons */}\n <Tooltip content=\"Bulleted List\">\n <IconButton\n data-active={blockType === \"bullet\" || undefined}\n variant=\"ghost\"\n aria-label=\"Bulleted List\"\n size=\"xs\"\n onClick={formatBulletList}\n >\n <List size={14} />\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Numbered List\">\n <IconButton\n data-active={blockType === \"number\" || undefined}\n variant=\"ghost\"\n aria-label=\"Numbered List\"\n size=\"xs\"\n onClick={formatNumberedList}\n >\n <ListOrdered size={14} />\n </IconButton>\n </Tooltip>\n </Stack>\n </div>\n );\n}\n\nfunction useFloatingTextToolbar(editor: LexicalEditor, anchorElem: HTMLElement): React.JSX.Element | null {\n const [isToolbarActive, setIsToolbarActive] = useState(false);\n\n return createPortal(\n <FloatingTextToolbar\n editor={editor}\n anchorElem={anchorElem}\n isToolbarActive={isToolbarActive}\n setIsToolbarActive={setIsToolbarActive}\n />,\n anchorElem,\n );\n}\n\nexport function FloatingTextFormatToolbarPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement;\n}): React.JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n return useFloatingTextToolbar(editor, anchorElem);\n}\n","/**\n * Injects CSS for Yjs awareness cursor rendering in the collaborative editor.\n * @lexical/yjs injects cursor elements with data-* attributes; this styles them.\n */\nexport function AwarenessCursorsCSS() {\n return (\n <style>\n {`\n .collaboration-cursor-container {\n position: relative;\n display: inline;\n }\n\n .collaboration-cursor-caret {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 2px;\n pointer-events: none;\n }\n\n .collaboration-cursor-label {\n position: absolute;\n top: -18px;\n left: -2px;\n padding: 1px 6px;\n font-size: 11px;\n font-weight: 600;\n line-height: 16px;\n white-space: nowrap;\n border-radius: 4px 4px 4px 0;\n color: #fff;\n pointer-events: none;\n user-select: none;\n }\n\n .collaboration-cursor-selection {\n position: absolute;\n pointer-events: none;\n opacity: 0.25;\n }\n `}\n </style>\n );\n}\n","import \"../theme/rich-text-theme.css\";\n\nimport { Box, Flex } from \"@chakra-ui/react\";\nimport { LexicalCollaboration } from \"@lexical/react/LexicalCollaborationContext\";\nimport { CollaborationPluginV2__EXPERIMENTAL } from \"@lexical/react/LexicalCollaborationPlugin\";\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 { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport type { Provider } from \"@lexical/yjs\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { WebsocketProvider } from \"y-websocket\";\nimport * as Y from \"yjs\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport { editorNodes, editorTheme } from \"../shared/editor-config\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { EquationPlugin } from \"../shared/plugins/EquationPlugin/EquationPlugin\";\nimport { FloatingTextFormatToolbarPlugin } from \"../shared/plugins/FloatingTextFormatToolbarPlugin\";\nimport { AwarenessCursorsCSS } from \"./awareness-cursors\";\n\nexport interface CollaborativeMarkdownEditorProps {\n roomId: string;\n wsUrl: string;\n wsParams?: Record<string, string>;\n userName?: string;\n userColor?: string;\n placeholder?: string;\n}\n\nexport function CollaborativeMarkdownEditor(props: CollaborativeMarkdownEditorProps) {\n const { roomId, wsUrl, wsParams = {}, userName = \"Anonymous\", userColor = \"#30bced\", placeholder } = props;\n\n const editorContainerRef = useRef<HTMLDivElement>(null);\n const [floatingToolbarAnchorElem, setFloatingToolbarAnchorElem] = useState<HTMLElement | null>(null);\n const [synced, setSynced] = useState(false);\n\n // Keep collaborative state stable for the component lifetime.\n const [doc] = useState(() => new Y.Doc());\n const [provider] = useState(() => {\n const nextProvider = new WebsocketProvider(wsUrl, roomId, doc, { params: wsParams, connect: false });\n\n nextProvider.on(\"sync\", (isSynced: boolean) => {\n if (isSynced) setSynced(true);\n });\n\n return nextProvider;\n });\n\n // Manage provider connect/disconnect lifecycle\n useEffect(() => {\n provider.connect();\n\n return () => {\n provider.disconnect();\n };\n }, [provider]);\n\n useEffect(() => {\n setFloatingToolbarAnchorElem(editorContainerRef.current);\n }, []);\n\n const initialConfig = {\n namespace: \"COLLABORATIVE_EDITOR\",\n nodes: editorNodes,\n editorState: null,\n onError: (error: Error) => console.error(error),\n editable: true,\n theme: editorTheme,\n };\n\n return (\n <Flex\n ref={editorContainerRef}\n className=\"rich-text\"\n justifyContent=\"space-between\"\n width=\"100%\"\n maxWidth=\"100%\"\n height=\"100%\"\n position=\"relative\"\n direction=\"column\"\n overflow=\"visible\"\n >\n <AwarenessCursorsCSS />\n\n <LexicalComposer initialConfig={initialConfig}>\n <LexicalCollaboration>\n <CollaborationPluginV2__EXPERIMENTAL\n id={roomId}\n doc={doc}\n provider={provider as unknown as Provider}\n __shouldBootstrapUnsafe={false}\n username={userName}\n cursorColor={userColor}\n />\n <LinkPlugin />\n <ListPlugin />\n <HorizontalRulePlugin />\n <ImportCodeBlocksPlugin />\n <EquationPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth={false} />}\n placeholder={\n synced && placeholder ? (\n <Box\n position=\"absolute\"\n top=\"0\"\n color=\"fg.muted\"\n pointerEvents=\"none\"\n userSelect=\"none\"\n textStyle=\"paragraph/M/regular\"\n >\n {placeholder}\n </Box>\n ) : null\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n {floatingToolbarAnchorElem ? (\n <FloatingTextFormatToolbarPlugin anchorElem={floatingToolbarAnchorElem} />\n ) : null}\n </LexicalCollaboration>\n </LexicalComposer>\n </Flex>\n );\n}\n","import \"../theme/rich-text-theme.css\";\n\nimport { Box, Flex } from \"@chakra-ui/react\";\nimport { $convertFromMarkdownString, $convertToMarkdownString } from \"@lexical/markdown\";\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\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 { $getRoot } from \"lexical\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport { editorNodes, editorTheme, editorTransformers } from \"../shared/editor-config\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { EquationPlugin } from \"../shared/plugins/EquationPlugin/EquationPlugin\";\nimport { FloatingTextFormatToolbarPlugin } from \"../shared/plugins/FloatingTextFormatToolbarPlugin\";\nimport ToggleEditablePlugin from \"../shared/plugins/ToggleEditablePlugin\";\nimport { TreeViewPlugin } from \"../shared/plugins/TreeViewPlugin/TreeViewPlugin\";\nimport { splitFrontmatter } from \"../utils/markdown\";\n\nexport interface MarkdownEditorProps {\n autoFocus?: boolean;\n debug?: boolean;\n defaultState: string;\n isEditable?: boolean;\n placeholder?: string;\n onChange?: (value: string) => void;\n}\n\nexport function MarkdownEditor(props: MarkdownEditorProps) {\n const { autoFocus = false, debug = false, defaultState = \"\", isEditable = false, placeholder, onChange } = props;\n const { frontmatter, body } = splitFrontmatter(defaultState);\n const shouldTrackChanges = isEditable && Boolean(onChange);\n const editorContainerRef = useRef<HTMLDivElement>(null);\n const [floatingToolbarAnchorElem, setFloatingToolbarAnchorElem] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n setFloatingToolbarAnchorElem(editorContainerRef.current);\n }, []);\n\n const initialConfig = {\n namespace: \"MARKDOWN_EDITOR\",\n nodes: editorNodes,\n editorState: () => {\n return $convertFromMarkdownString(body, editorTransformers, undefined, false);\n },\n onError: (error: Error) => console.error(error),\n editable: isEditable,\n theme: editorTheme,\n };\n\n return (\n <Flex\n ref={editorContainerRef}\n className=\"rich-text\"\n justifyContent=\"space-between\"\n width=\"100%\"\n maxWidth=\"100%\"\n height=\"100%\"\n position=\"relative\"\n direction=\"column\"\n overflow=\"visible\"\n >\n <LexicalComposer initialConfig={initialConfig}>\n {autoFocus ? <AutoFocusPlugin /> : null}\n <HistoryPlugin />\n <LinkPlugin />\n <ListPlugin />\n <HorizontalRulePlugin />\n <ImportCodeBlocksPlugin />\n <EquationPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth={false} padding=\"sm\" />}\n placeholder={\n placeholder ? (\n <Flex\n position=\"absolute\"\n padding=\"sm\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n pointerEvents=\"none\"\n userSelect=\"none\"\n justifyContent=\"center\"\n >\n <Box width=\"100%\" maxWidth=\"720px\" color=\"fg.muted\" textStyle=\"paragraph/M/regular\">\n {placeholder}\n </Box>\n </Flex>\n ) : null\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n {isEditable && floatingToolbarAnchorElem ? (\n <FloatingTextFormatToolbarPlugin anchorElem={floatingToolbarAnchorElem} />\n ) : null}\n {shouldTrackChanges ? (\n <OnChangePlugin\n ignoreSelectionChange\n ignoreHistoryMergeTagChange={false}\n onChange={(editorState) => {\n editorState.read(() => {\n const root = $getRoot();\n const markdownBody = $convertToMarkdownString(editorTransformers, root);\n onChange?.(frontmatter + markdownBody);\n });\n }}\n />\n ) : null}\n <ToggleEditablePlugin isEditable={isEditable} />\n {debug && <TreeViewPlugin />}\n </LexicalComposer>\n </Flex>\n );\n}\n","import type { ResourceType } from \"../types\";\n\nexport function inferResourceTypeFromMediaType(mediaType: string) {\n const normalized = mediaType.toLowerCase().trim();\n if (!normalized) return \"text\";\n\n if (normalized.startsWith(\"image/\")) return \"image\";\n if (normalized === \"application/pdf\") return \"pdf\";\n if (normalized === \"text/markdown\") return \"markdown\";\n if (normalized === \"text/csv\" || normalized === \"text/tab-separated-values\") return \"table\";\n if (normalized === \"application/json\") return \"json\";\n if (normalized.startsWith(\"text/\")) return \"text\";\n if (normalized.startsWith(\"application/\")) return \"text\";\n\n const fallback: ResourceType = \"text\";\n return fallback;\n}\n","const extensionToMediaType: Record<string, string> = {\n csv: \"text/csv\",\n tsv: \"text/tab-separated-values\",\n json: \"application/json\",\n md: \"text/markdown\",\n markdown: \"text/markdown\",\n txt: \"text/plain\",\n pdf: \"application/pdf\",\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n gif: \"image/gif\",\n svg: \"image/svg+xml\",\n webp: \"image/webp\",\n mp4: \"video/mp4\",\n mov: \"video/quicktime\",\n ts: \"text/typescript\",\n tsx: \"text/typescript\",\n js: \"text/javascript\",\n jsx: \"text/javascript\",\n sql: \"text/x-sql\",\n yml: \"text/yaml\",\n yaml: \"text/yaml\",\n};\n\nexport function mediaTypeFromPath(path: string) {\n const cleaned = path.split(\"?\")[0]?.split(\"#\")[0] ?? \"\";\n const ext = cleaned.split(\".\").pop()?.toLowerCase();\n if (!ext) return null;\n return extensionToMediaType[ext] ?? null;\n}\n"],"names":["VERTICAL_GAP","HORIZONTAL_OFFSET","setFloatingElemPos","targetRect","floatingElem","anchorElem","verticalGap","horizontalOffset","scrollerElem","parentElement","style","opacity","transform","floatingElemRect","getBoundingClientRect","anchorElementRect","editorScrollerRect","top","left","height","width","right","GAP","blockTypeToBlockName","bullet","check","code","h1","h2","h3","h4","h5","h6","number","paragraph","quote","toKnownBlockType","type","findSelectionElement","anchorNode","getKey","$findMatchingParent","node","parent","getParent","$isRootOrShadowRoot","getTopLevelElementOrThrow","resolveBlockTypeFromAnchor","element","$isListNode","getListType","parentList","$isHeadingNode","getTag","getType","FloatingTextToolbar","editor","isToolbarActive","setIsToolbarActive","editorRef","useRef","blockType","setBlockType","useState","isBold","setIsBold","isItalic","setIsItalic","isUnderline","setIsUnderline","updateFloatingToolbarRef","formatHeading","headingSize","update","selection","$getSelection","$setBlocksType","$createHeadingNode","$createParagraphNode","formatBulletList","dispatchCommand","INSERT_UNORDERED_LIST_COMMAND","undefined","REMOVE_LIST_COMMAND","formatNumberedList","INSERT_ORDERED_LIST_COMMAND","updateToolbar","$isRangeSelection","hasFormat","nextBlockType","anchor","getNode","current","editorElem","nativeSelection","window","getSelection","rootElement","getRootElement","isCollapsed","contains","isEditable","domRect","getRangeAt","bottomRect","DOMRect","bottom","useEffect","getEditorState","read","addEventListener","removeEventListener","mergeRegister","registerUpdateListener","editorState","registerCommand","SELECTION_CHANGE_COMMAND","_payload","COMMAND_PRIORITY_CRITICAL","CLICK_COMMAND","COMMAND_PRIORITY_HIGH","Stack","jsx","Tooltip","IconButton","FORMAT_TEXT_COMMAND","Text","borderLeft","borderColor","List","ListOrdered","useFloatingTextToolbar","$","_c","t0","t1","createPortal","FloatingTextFormatToolbarPlugin","document","body","useLexicalComposerContext","AwarenessCursorsCSS","Symbol","for","CollaborativeMarkdownEditor","props","roomId","wsUrl","wsParams","userName","userColor","t2","placeholder","t3","editorContainerRef","floatingToolbarAnchorElem","setFloatingToolbarAnchorElem","synced","setSynced","doc","_temp","t4","nextProvider","WebsocketProvider","params","connect","on","isSynced","provider","t5","t6","disconnect","t7","t8","t9","namespace","nodes","editorNodes","onError","_temp2","editable","theme","editorTheme","initialConfig","t10","t11","t12","CollaborationPluginV2__EXPERIMENTAL","t13","t14","t15","t16","t17","LinkPlugin","ListPlugin","HorizontalRulePlugin","ImportCodeBlocksPlugin","EquationPlugin","t18","ContentEditable","t19","Box","t20","RichTextPlugin","LexicalErrorBoundary","t21","t22","Flex","LexicalComposer","jsxs","LexicalCollaboration","error","console","Y","Doc","MarkdownEditor","autoFocus","debug","defaultState","onChange","splitFrontmatter","frontmatter","shouldTrackChanges","Boolean","$convertFromMarkdownString","editorTransformers","AutoFocusPlugin","HistoryPlugin","OnChangePlugin","root","$getRoot","markdownBody","$convertToMarkdownString","ToggleEditablePlugin","TreeViewPlugin","t23","inferResourceTypeFromMediaType","mediaType","normalized","toLowerCase","trim","startsWith","extensionToMediaType","csv","tsv","json","md","markdown","txt","pdf","png","jpg","jpeg","gif","svg","webp","mp4","mov","ts","tsx","js","sql","yml","yaml","mediaTypeFromPath","path","ext","split","pop"],"mappings":"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"}
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.rich-text__ltr{text-align:left}.rich-text__rtl{text-align:right}.rich-text{--rich-text-font-scale: 1;font-size:calc(1rem * var(--rich-text-font-scale))}.rich-text[data-rich-message=true]{--rich-text-font-scale: .8}.rich-text[data-rich-message=true] .rich-text__p:last-child{margin-bottom:0}.rich-text__paragraph{margin:0;position:relative}.rich-text__quote{margin:0;margin-top:var(--chakra-spacing-3, .75rem);margin-left:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem);font-size:calc(15px * var(--rich-text-font-scale));color:var(--chakra-colors-fg-muted);border-left:4px solid var(--chakra-colors-border);padding-left:16px}.rich-text__indent{--lexical-indent-base-value: 40px}.rich-text__textBold{font-weight:700}.rich-text__reference{font:inherit;border-bottom:1px dotted currentColor;opacity:.9;white-space:nowrap}.rich-text__textStrikethrough{text-decoration:line-through}.rich-text__textUnderlineStrikethrough{text-decoration:underline line-through}.rich-text__textSubscript{font-size:.8em;vertical-align:sub}.rich-text__textSuperscript{font-size:.8em;vertical-align:super}.rich-text__textCode{background-color:var(--chakra-colors-bg-code);padding:1px .25rem;font-family:var(--chakra-fonts-mono);font-size:.94em}.rich-text__link{color:var(--chakra-colors-blue-600);text-decoration:none;cursor:pointer}.rich-text__link:hover{text-decoration:underline}.rich-text__code{background-color:var(--chakra-colors-bg-muted);font-family:var(--chakra-fonts-mono);display:block;padding:8px 8px 8px 52px;line-height:1.53;font-size:calc(13px * var(--rich-text-font-scale));margin:8px 0;overflow-x:auto;position:relative;tab-size:2}.rich-text__code:before{content:attr(data-gutter);position:absolute;background-color:var(--chakra-colors-bg-subtle);left:0;top:0;bottom:0;border-right:1px solid var(--chakra-colors-border);padding:8px;color:var(--chakra-colors-fg-muted);white-space:pre-wrap;text-align:right;min-width:25px}.rich-text__table{border-collapse:collapse;border-spacing:0;color:var(--chakra-colors-fg);font-size:calc(var(--chakra-font-sizes-sm) * var(--rich-text-font-scale));line-height:21px;overflow-y:auto;overflow-x:auto;table-layout:fixed;width:max-content}.rich-text__tableSelection *::selection{background-color:transparent}.rich-text__tableSelected{outline:2px solid var(--chakra-colors-blue-500)}.rich-text__tableCell{border:1px solid var(--chakra-colors-border);vertical-align:top;text-align:start;padding:6px 8px;position:relative;outline:none}.rich-text__tableCellSortedIndicator{display:block;opacity:.5;position:absolute;bottom:0;left:0;width:100%;height:4px;background-color:var(--chakra-colors-bg)}.rich-text__tableCellResizer{position:absolute;right:-4px;height:100%;width:8px;cursor:ew-resize;z-index:10;top:0}.rich-text__tableCellHeader{background-color:var(--chakra-colors-bg-muted);font-weight:400;text-align:start}.rich-text__tableCellSelected{background-color:var(--chakra-colors-blue-100)}.rich-text__tableCellPrimarySelected{border:2px solid var(--chakra-colors-blue-500);display:block;height:calc(100% - 2px);position:absolute;width:calc(100% - 2px);left:-1px;top:-1px;z-index:2}.rich-text__tableCellEditing{box-shadow:var(--chakra-shadows-sm);border-radius:3px}.rich-text__tableAddColumns,.rich-text__tableAddRows{position:absolute;background-color:var(--chakra-colors-bg-muted);animation:table-controls .2s ease;border:0;cursor:pointer}.rich-text__tableAddColumns{top:0;width:20px;height:100%;right:-25px}.rich-text__tableAddColumns:after{background-size:contain;background-position:center;background-repeat:no-repeat;display:block;content:" ";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.4}.rich-text__tableAddRows{bottom:-25px;width:calc(100% - 25px);height:20px;left:0}.rich-text__tableAddRows:after{background-size:contain;background-position:center;background-repeat:no-repeat;display:block;content:" ";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.4}.rich-text__tableAddColumns:hover,.rich-text__tableAddRows:hover{background-color:var(--chakra-colors-blue-100)}@keyframes table-controls{0%{opacity:0}to{opacity:1}}.rich-text__tableCellResizeRuler{display:block;position:absolute;width:1px;background-color:var(--chakra-colors-blue-500);height:100%;top:0}.rich-text__tableCellActionButtonContainer{display:block;right:5px;top:6px;position:absolute;z-index:4;width:20px;height:20px}.rich-text__tableCellActionButton{background-color:var(--chakra-colors-bg-muted);display:block;border:0;border-radius:20px;width:20px;height:20px;color:var(--chakra-colors-fg);cursor:pointer}.rich-text__tableCellActionButton:hover{background-color:var(--chakra-colors-bg-subtle)}.rich-text__characterLimit{display:inline;background-color:var(--chakra-colors-red-100)}ul.rich-text__ul,ol.rich-text__ol,ol.rich-text__ol1,ol.rich-text__ol2,ol.rich-text__ol3,ol.rich-text__ol4,ol.rich-text__ol5{--rt-indent: var(--chakra-spacing-sm, .5rem);--rt-level: 1;list-style-position:outside;padding-inline-start:calc(var(--rt-indent) * var(--rt-level));margin-top:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem)}ul.rich-text__ul{list-style-type:disc}ol.rich-text__ol,ol.rich-text__ol1{list-style-type:decimal}ol.rich-text__ol2{list-style-type:upper-alpha}ol.rich-text__ol3{list-style-type:lower-alpha}ol.rich-text__ol4{list-style-type:upper-roman}ol.rich-text__ol5{list-style-type:lower-roman}li.rich-text__listItem{display:list-item;list-style-position:outside;margin-inline:var(--chakra-spacing-1, .25rem)}li.rich-text__listItemUnchecked,li.rich-text__listItemChecked{display:list-item;list-style-type:none}ul.rich-text__ul :where(ul,ol),ol.rich-text__ol :where(ul,ol),ol.rich-text__ol1 :where(ul,ol),ol.rich-text__ol2 :where(ul,ol),ol.rich-text__ol3 :where(ul,ol),ol.rich-text__ol4 :where(ul,ol),ol.rich-text__ol5 :where(ul,ol){--rt-level: calc(var(--rt-level) + 1);padding-inline-start:calc(var(--rt-indent) * var(--rt-level))}.rich-text__listItemUnchecked:before,.rich-text__listItemChecked:before{content:"";width:16px;height:16px;top:2px;left:0;cursor:pointer;display:block;background-size:cover;position:absolute}.rich-text__listItemUnchecked[dir=rtl]:before,.rich-text__listItemChecked[dir=rtl]:before{left:auto;right:0}.rich-text__listItemUnchecked:focus:before,.rich-text__listItemChecked:focus:before{box-shadow:0 0 0 2px var(--chakra-colors-blue-200);border-radius:2px}.rich-text__listItemUnchecked:before{border:1px solid var(--chakra-colors-gray-400);border-radius:2px}.rich-text__listItemChecked:before{border:1px solid var(--chakra-colors-blue-500);border-radius:2px;background-color:var(--chakra-colors-blue-500);background-repeat:no-repeat}.rich-text__listItemChecked:after{content:"";cursor:pointer;border-color:var(--chakra-colors-bg, var(--chakra-colors-bg));border-style:solid;position:absolute;display:block;top:6px;width:3px;left:7px;right:7px;height:6px;transform:rotate(45deg);border-width:0 2px 2px 0}.rich-text__nestedListItem{list-style-type:inherit}.rich-text__nestedListItem:before,.rich-text__nestedListItem:after{display:none}.rich-text__tokenComment{color:var(--chakra-colors-gray-500)}.rich-text__tokenPunctuation{color:var(--chakra-colors-gray-400)}.rich-text__tokenProperty{color:var(--chakra-colors-purple-600)}.rich-text__tokenSelector{color:var(--chakra-colors-green-600)}.rich-text__tokenOperator{color:var(--chakra-colors-orange-600)}.rich-text__tokenAttr{color:var(--chakra-colors-blue-600)}.rich-text__tokenVariable{color:var(--chakra-colors-yellow-600)}.rich-text__tokenFunction{color:var(--chakra-colors-pink-600)}.rich-text__mark{background:var(--chakra-colors-yellow-100);border-bottom:2px solid var(--chakra-colors-yellow-200);padding-bottom:2px}.rich-text__markOverlap{background:var(--chakra-colors-yellow-200);border-bottom:2px solid var(--chakra-colors-yellow-300)}.rich-text__mark.selected{background:var(--chakra-colors-yellow-300);border-bottom:2px solid var(--chakra-colors-yellow-400)}.rich-text__markOverlap.selected{background:var(--chakra-colors-yellow-400);border-bottom:2px solid var(--chakra-colors-yellow-400)}.rich-text__layoutContainer{display:grid;gap:var(--chakra-spacing-2, .5rem)}.rich-text__layoutItem{border-radius:var(--chakra-radii-sm)}.rich-text__layoutItem>:first-child{margin-top:0;margin-bottom:0}.draggable-block-demo__row{display:flex;gap:var(--chakra-spacing-3, .75rem);padding-block:var(--chakra-spacing-2, .5rem);padding-inline:var(--chakra-spacing-4, 1rem);position:relative;transition:box-shadow .14s ease}.rich-text__row{border-radius:var(--chakra-radii-lg)}.draggable-block-demo__row:focus-within{box-shadow:0 0 0 2px var(--chakra-colors-blue-200)}.draggable-block-demo__content,.rich-text__content{position:relative;flex:1 1 0;transition:border-color .14s ease,box-shadow .14s ease,background .14s ease}.draggable-block-demo__content--empty{color:var(--chakra-colors-fg-muted);border-style:dashed;background:var(--chakra-colors-bg-subtle)}.draggable-block-demo__handle-slot{position:absolute;inset:0;width:0;height:0;pointer-events:none}.draggable-block-demo__handle-controls{position:absolute;pointer-events:none;opacity:0;transform:translate(-10000px,-10000px);z-index:11;display:flex;flex-direction:column;align-items:center;gap:8px}.draggable-block-demo__floating-handle,.draggable-block-demo__delete-button{pointer-events:auto}.draggable-block-demo__floating-handle{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--chakra-radii-sm);border:1px solid var(--chakra-colors-border);background:var(--chakra-colors-bg);color:var(--chakra-colors-fg-muted);box-shadow:var(--chakra-shadows-sm);cursor:grab;transition:box-shadow .12s ease,transform .12s ease}.draggable-block-demo__floating-handle:active{cursor:grabbing}.draggable-block-demo__handle-icon{margin-left:-4px;display:inline-block;font-size:calc(12px * var(--rich-text-font-scale));letter-spacing:-4px;-webkit-user-select:none;user-select:none}.draggable-block-demo__delete-button{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--chakra-radii-sm);border:1px solid var(--chakra-colors-red-200);background:var(--chakra-colors-red-50);color:var(--chakra-colors-red-600);cursor:pointer;box-shadow:var(--chakra-shadows-xs);transition:background .12s ease,border-color .12s ease}.draggable-block-demo__delete-button:hover{background:var(--chakra-colors-red-100);border-color:var(--chakra-colors-red-300)}.draggable-block-demo__delete-icon{font-size:calc(16px * var(--rich-text-font-scale));line-height:1;-webkit-user-select:none;user-select:none}.draggable-block-demo__gap{position:absolute;left:0;width:100%;height:28px;display:flex;justify-content:center;align-items:center;pointer-events:auto;opacity:0;transition:opacity .12s ease}.draggable-block-demo__gap-line{width:100%;border-top:1px dashed var(--chakra-colors-border);position:absolute;top:50%;transform:translateY(-50%)}.draggable-block-demo__gap-button{pointer-events:auto;border:1px solid var(--chakra-colors-border);background:var(--chakra-colors-bg);border-radius:999px;width:20px;height:20px;font-size:calc(18px * var(--rich-text-font-scale));line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--chakra-colors-fg-muted);box-shadow:var(--chakra-shadows-xs);transition:background .12s ease,color .12s ease}.draggable-block-demo__gap:hover,.draggable-block-demo__gap.is-active{opacity:1}.draggable-block-demo__gap-button:hover{background:var(--chakra-colors-bg-subtle);color:var(--chakra-colors-fg)}.draggable-block-demo__indicator{position:absolute;background:var(--chakra-colors-blue-500);pointer-events:none;border-radius:2px;z-index:12}.draggable-block-demo__indicator--horizontal{height:2px}.draggable-block-demo__indicator--vertical{width:2px}.rich-text__h1{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-3xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg);margin-top:var(--chakra-spacing-5, 1.5rem);margin-bottom:var(--chakra-spacing-4, 1rem)}.rich-text__h1_2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-3xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg);margin-top:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-2, .5rem)}.rich-text__h2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-2xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-4, 1rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text__h2_2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-2xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-2, .5rem);margin-bottom:var(--chakra-spacing-1, .125rem)}.rich-text__h3{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-lg) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:100%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-4, 1rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text__h3_2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-lg) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:100%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-2, .5rem)}.rich-text__p{font-family:var(--chakra-fonts-body);letter-spacing:.14px;margin:0;margin-top:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text__p:first-child{margin-top:0}.rich-text__p:only-child{margin-bottom:0}.rich-text__p2{font-family:var(--chakra-fonts-body);letter-spacing:.14px;margin:0}.rich-text__textUnderline{text-decoration:underline}.rich-text__textItalic{font-style:italic}span.editor-equation{display:inline-block}.editor-equation span{cursor:inherit}.editor-equation{-webkit-user-select:none;user-select:none}.katex-display{overflow-x:auto;overflow-y:hidden}.floating-text-format-toolbar{display:flex;position:absolute;top:0;left:0;z-index:1000;opacity:0;background-color:var(--chakra-colors-bg);border-radius:8px;border:1px solid var(--chakra-colors-border-muted);box-shadow:0 5px 10px #0000001a;transition:opacity .2s;will-change:transform;padding:4px;gap:2px}.floating-text-format-toolbar.active{opacity:1}.floating-text-format-toolbar button[data-active]{background-color:var(--chakra-colors-bg-accent-primary-medium);color:var(--chakra-colors-text-selectable-primary)}.rich-text__p--no-margin{margin:0}
|
|
1
|
+
.rich-text__ltr{text-align:left}.rich-text__rtl{text-align:right}.rich-text{--rich-text-font-scale: 1;font-size:calc(1rem * var(--rich-text-font-scale))}.rich-text[data-rich-message=true]{--rich-text-font-scale: .9}.rich-text[data-rich-message=true] .rich-text__p:last-child{margin-bottom:0}.rich-text__paragraph{margin:0;position:relative}.rich-text__quote{margin:0;margin-top:var(--chakra-spacing-3, .75rem);margin-left:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem);font-size:calc(15px * var(--rich-text-font-scale));color:var(--chakra-colors-fg-muted);border-left:4px solid var(--chakra-colors-border);padding-left:16px}.rich-text__indent{--lexical-indent-base-value: 40px}.rich-text__textBold{font-weight:700}.rich-text__reference{font:inherit;border-bottom:1px dotted currentColor;opacity:.9;white-space:nowrap}.rich-text__textStrikethrough{text-decoration:line-through}.rich-text__textUnderlineStrikethrough{text-decoration:underline line-through}.rich-text__textSubscript{font-size:.8em;vertical-align:sub}.rich-text__textSuperscript{font-size:.8em;vertical-align:super}.rich-text__textCode{background-color:var(--chakra-colors-bg-code);padding:1px .25rem;font-family:var(--chakra-fonts-mono);font-size:.94em}.rich-text__link{color:var(--chakra-colors-blue-600);text-decoration:none;cursor:pointer}.rich-text__link:hover{text-decoration:underline}.rich-text__code{background-color:var(--chakra-colors-bg-muted);font-family:var(--chakra-fonts-mono);display:block;padding:8px 8px 8px 52px;line-height:1.53;font-size:calc(13px * var(--rich-text-font-scale));margin:8px 0;overflow-x:auto;position:relative;tab-size:2}.rich-text__code:before{content:attr(data-gutter);position:absolute;background-color:var(--chakra-colors-bg-subtle);left:0;top:0;bottom:0;border-right:1px solid var(--chakra-colors-border);padding:8px;color:var(--chakra-colors-fg-muted);white-space:pre-wrap;text-align:right;min-width:25px}.rich-text__table{border-collapse:collapse;border-spacing:0;color:var(--chakra-colors-fg);font-size:calc(var(--chakra-font-sizes-sm) * var(--rich-text-font-scale));line-height:21px;overflow-y:auto;overflow-x:auto;table-layout:fixed;width:max-content}.rich-text__tableSelection *::selection{background-color:transparent}.rich-text__tableSelected{outline:2px solid var(--chakra-colors-blue-500)}.rich-text__tableCell{border:1px solid var(--chakra-colors-border);vertical-align:top;text-align:start;padding:6px 8px;position:relative;outline:none}.rich-text__tableCellSortedIndicator{display:block;opacity:.5;position:absolute;bottom:0;left:0;width:100%;height:4px;background-color:var(--chakra-colors-bg)}.rich-text__tableCellResizer{position:absolute;right:-4px;height:100%;width:8px;cursor:ew-resize;z-index:10;top:0}.rich-text__tableCellHeader{background-color:var(--chakra-colors-bg-muted);font-weight:400;text-align:start}.rich-text__tableCellSelected{background-color:var(--chakra-colors-blue-100)}.rich-text__tableCellPrimarySelected{border:2px solid var(--chakra-colors-blue-500);display:block;height:calc(100% - 2px);position:absolute;width:calc(100% - 2px);left:-1px;top:-1px;z-index:2}.rich-text__tableCellEditing{box-shadow:var(--chakra-shadows-sm);border-radius:3px}.rich-text__tableAddColumns,.rich-text__tableAddRows{position:absolute;background-color:var(--chakra-colors-bg-muted);animation:table-controls .2s ease;border:0;cursor:pointer}.rich-text__tableAddColumns{top:0;width:20px;height:100%;right:-25px}.rich-text__tableAddColumns:after{background-size:contain;background-position:center;background-repeat:no-repeat;display:block;content:" ";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.4}.rich-text__tableAddRows{bottom:-25px;width:calc(100% - 25px);height:20px;left:0}.rich-text__tableAddRows:after{background-size:contain;background-position:center;background-repeat:no-repeat;display:block;content:" ";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.4}.rich-text__tableAddColumns:hover,.rich-text__tableAddRows:hover{background-color:var(--chakra-colors-blue-100)}@keyframes table-controls{0%{opacity:0}to{opacity:1}}.rich-text__tableCellResizeRuler{display:block;position:absolute;width:1px;background-color:var(--chakra-colors-blue-500);height:100%;top:0}.rich-text__tableCellActionButtonContainer{display:block;right:5px;top:6px;position:absolute;z-index:4;width:20px;height:20px}.rich-text__tableCellActionButton{background-color:var(--chakra-colors-bg-muted);display:block;border:0;border-radius:20px;width:20px;height:20px;color:var(--chakra-colors-fg);cursor:pointer}.rich-text__tableCellActionButton:hover{background-color:var(--chakra-colors-bg-subtle)}.rich-text__characterLimit{display:inline;background-color:var(--chakra-colors-red-100)}ul.rich-text__ul,ol.rich-text__ol,ol.rich-text__ol1,ol.rich-text__ol2,ol.rich-text__ol3,ol.rich-text__ol4,ol.rich-text__ol5{--rt-indent: var(--chakra-spacing-sm, .5rem);--rt-level: 1;list-style-position:outside;padding-inline-start:calc(var(--rt-indent) * var(--rt-level));margin-top:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem)}ul.rich-text__ul{list-style-type:disc}ol.rich-text__ol,ol.rich-text__ol1{list-style-type:decimal}ol.rich-text__ol2{list-style-type:upper-alpha}ol.rich-text__ol3{list-style-type:lower-alpha}ol.rich-text__ol4{list-style-type:upper-roman}ol.rich-text__ol5{list-style-type:lower-roman}li.rich-text__listItem{display:list-item;list-style-position:outside;margin-inline:var(--chakra-spacing-1, .25rem)}li.rich-text__listItemUnchecked,li.rich-text__listItemChecked{display:list-item;list-style-type:none}ul.rich-text__ul :where(ul,ol),ol.rich-text__ol :where(ul,ol),ol.rich-text__ol1 :where(ul,ol),ol.rich-text__ol2 :where(ul,ol),ol.rich-text__ol3 :where(ul,ol),ol.rich-text__ol4 :where(ul,ol),ol.rich-text__ol5 :where(ul,ol){--rt-level: calc(var(--rt-level) + 1);padding-inline-start:calc(var(--rt-indent) * var(--rt-level))}.rich-text__listItemUnchecked:before,.rich-text__listItemChecked:before{content:"";width:16px;height:16px;top:2px;left:0;cursor:pointer;display:block;background-size:cover;position:absolute}.rich-text__listItemUnchecked[dir=rtl]:before,.rich-text__listItemChecked[dir=rtl]:before{left:auto;right:0}.rich-text__listItemUnchecked:focus:before,.rich-text__listItemChecked:focus:before{box-shadow:0 0 0 2px var(--chakra-colors-blue-200);border-radius:2px}.rich-text__listItemUnchecked:before{border:1px solid var(--chakra-colors-gray-400);border-radius:2px}.rich-text__listItemChecked:before{border:1px solid var(--chakra-colors-blue-500);border-radius:2px;background-color:var(--chakra-colors-blue-500);background-repeat:no-repeat}.rich-text__listItemChecked:after{content:"";cursor:pointer;border-color:var(--chakra-colors-bg, var(--chakra-colors-bg));border-style:solid;position:absolute;display:block;top:6px;width:3px;left:7px;right:7px;height:6px;transform:rotate(45deg);border-width:0 2px 2px 0}.rich-text__nestedListItem{list-style-type:inherit}.rich-text__nestedListItem:before,.rich-text__nestedListItem:after{display:none}.rich-text__tokenComment{color:var(--chakra-colors-gray-500)}.rich-text__tokenPunctuation{color:var(--chakra-colors-gray-400)}.rich-text__tokenProperty{color:var(--chakra-colors-purple-600)}.rich-text__tokenSelector{color:var(--chakra-colors-green-600)}.rich-text__tokenOperator{color:var(--chakra-colors-orange-600)}.rich-text__tokenAttr{color:var(--chakra-colors-blue-600)}.rich-text__tokenVariable{color:var(--chakra-colors-yellow-600)}.rich-text__tokenFunction{color:var(--chakra-colors-pink-600)}.rich-text__mark{background:var(--chakra-colors-yellow-100);border-bottom:2px solid var(--chakra-colors-yellow-200);padding-bottom:2px}.rich-text__markOverlap{background:var(--chakra-colors-yellow-200);border-bottom:2px solid var(--chakra-colors-yellow-300)}.rich-text__mark.selected{background:var(--chakra-colors-yellow-300);border-bottom:2px solid var(--chakra-colors-yellow-400)}.rich-text__markOverlap.selected{background:var(--chakra-colors-yellow-400);border-bottom:2px solid var(--chakra-colors-yellow-400)}.rich-text__layoutContainer{display:grid;gap:var(--chakra-spacing-2, .5rem)}.rich-text__layoutItem{border-radius:var(--chakra-radii-sm)}.rich-text__layoutItem>:first-child{margin-top:0;margin-bottom:0}.draggable-block-demo__row{display:flex;gap:var(--chakra-spacing-3, .75rem);padding-block:var(--chakra-spacing-2, .5rem);padding-inline:var(--chakra-spacing-4, 1rem);position:relative;transition:box-shadow .14s ease}.rich-text__row{border-radius:var(--chakra-radii-lg)}.draggable-block-demo__row:focus-within{box-shadow:0 0 0 2px var(--chakra-colors-blue-200)}.draggable-block-demo__content,.rich-text__content{position:relative;flex:1 1 0;transition:border-color .14s ease,box-shadow .14s ease,background .14s ease}.draggable-block-demo__content--empty{color:var(--chakra-colors-fg-muted);border-style:dashed;background:var(--chakra-colors-bg-subtle)}.draggable-block-demo__handle-slot{position:absolute;inset:0;width:0;height:0;pointer-events:none}.draggable-block-demo__handle-controls{position:absolute;pointer-events:none;opacity:0;transform:translate(-10000px,-10000px);z-index:11;display:flex;flex-direction:column;align-items:center;gap:8px}.draggable-block-demo__floating-handle,.draggable-block-demo__delete-button{pointer-events:auto}.draggable-block-demo__floating-handle{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--chakra-radii-sm);border:1px solid var(--chakra-colors-border);background:var(--chakra-colors-bg);color:var(--chakra-colors-fg-muted);box-shadow:var(--chakra-shadows-sm);cursor:grab;transition:box-shadow .12s ease,transform .12s ease}.draggable-block-demo__floating-handle:active{cursor:grabbing}.draggable-block-demo__handle-icon{margin-left:-4px;display:inline-block;font-size:calc(12px * var(--rich-text-font-scale));letter-spacing:-4px;-webkit-user-select:none;user-select:none}.draggable-block-demo__delete-button{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--chakra-radii-sm);border:1px solid var(--chakra-colors-red-200);background:var(--chakra-colors-red-50);color:var(--chakra-colors-red-600);cursor:pointer;box-shadow:var(--chakra-shadows-xs);transition:background .12s ease,border-color .12s ease}.draggable-block-demo__delete-button:hover{background:var(--chakra-colors-red-100);border-color:var(--chakra-colors-red-300)}.draggable-block-demo__delete-icon{font-size:calc(16px * var(--rich-text-font-scale));line-height:1;-webkit-user-select:none;user-select:none}.draggable-block-demo__gap{position:absolute;left:0;width:100%;height:28px;display:flex;justify-content:center;align-items:center;pointer-events:auto;opacity:0;transition:opacity .12s ease}.draggable-block-demo__gap-line{width:100%;border-top:1px dashed var(--chakra-colors-border);position:absolute;top:50%;transform:translateY(-50%)}.draggable-block-demo__gap-button{pointer-events:auto;border:1px solid var(--chakra-colors-border);background:var(--chakra-colors-bg);border-radius:999px;width:20px;height:20px;font-size:calc(18px * var(--rich-text-font-scale));line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--chakra-colors-fg-muted);box-shadow:var(--chakra-shadows-xs);transition:background .12s ease,color .12s ease}.draggable-block-demo__gap:hover,.draggable-block-demo__gap.is-active{opacity:1}.draggable-block-demo__gap-button:hover{background:var(--chakra-colors-bg-subtle);color:var(--chakra-colors-fg)}.draggable-block-demo__indicator{position:absolute;background:var(--chakra-colors-blue-500);pointer-events:none;border-radius:2px;z-index:12}.draggable-block-demo__indicator--horizontal{height:2px}.draggable-block-demo__indicator--vertical{width:2px}.rich-text__h1{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-3xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg);margin-top:var(--chakra-spacing-5, 1.5rem);margin-bottom:var(--chakra-spacing-4, 1rem)}.rich-text__h1_2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-3xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg);margin-top:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-2, .5rem)}.rich-text__h2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-2xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-4, 1rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text__h2_2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-2xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-2, .5rem);margin-bottom:var(--chakra-spacing-1, .125rem)}.rich-text__h3{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-lg) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:100%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-4, 1rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text__h3_2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-lg) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:100%;color:var(--chakra-colors-fg, var(--chakra-colors-fg));margin-top:var(--chakra-spacing-2, .5rem)}.rich-text__p{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-md) * var(--rich-text-font-scale));line-height:171%;letter-spacing:.14px;margin:0;margin-top:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text__p:first-child{margin-top:0}.rich-text__p:only-child{margin-bottom:0}.rich-text__p2{font-family:var(--chakra-fonts-body);font-size:calc(var(--chakra-font-sizes-md) * var(--rich-text-font-scale));line-height:171%;letter-spacing:.14px;margin:0}.rich-text__textUnderline{text-decoration:underline}.rich-text__textItalic{font-style:italic}span.editor-equation{display:inline-block}.editor-equation span{cursor:inherit}.editor-equation{-webkit-user-select:none;user-select:none}.katex-display{overflow-x:auto;overflow-y:hidden}.floating-text-format-toolbar{display:flex;position:absolute;top:0;left:0;z-index:1000;opacity:0;background-color:var(--chakra-colors-bg);border-radius:8px;border:1px solid var(--chakra-colors-border-muted);box-shadow:0 5px 10px #0000001a;transition:opacity .2s;will-change:transform;padding:4px;gap:2px}.floating-text-format-toolbar.active{opacity:1}.floating-text-format-toolbar button[data-active]{background-color:var(--chakra-colors-bg-accent-primary-medium);color:var(--chakra-colors-text-selectable-primary)}.rich-text__p--no-margin{margin:0}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as w, jsxs as x } from "react/jsx-runtime";
|
|
2
|
+
import { c as $ } from "react/compiler-runtime";
|
|
3
|
+
import { ScrollArea as P, Tooltip as T, Portal as V } from "@chakra-ui/react";
|
|
4
|
+
import * as z from "react";
|
|
5
|
+
const k = z.forwardRef(function(h, R) {
|
|
6
|
+
const t = $(35);
|
|
7
|
+
let e, l, r, a, o, s, c, f, S, v, n;
|
|
8
|
+
t[0] !== h ? ({
|
|
9
|
+
children: e,
|
|
10
|
+
viewportRef: n,
|
|
11
|
+
contentRef: r,
|
|
12
|
+
viewportProps: v,
|
|
13
|
+
contentProps: l,
|
|
14
|
+
verticalScrollbarProps: S,
|
|
15
|
+
horizontalScrollbarProps: a,
|
|
16
|
+
showVerticalScrollbar: s,
|
|
17
|
+
showHorizontalScrollbar: c,
|
|
18
|
+
showCorner: f,
|
|
19
|
+
...o
|
|
20
|
+
} = h, t[0] = h, t[1] = e, t[2] = l, t[3] = r, t[4] = a, t[5] = o, t[6] = s, t[7] = c, t[8] = f, t[9] = S, t[10] = v, t[11] = n) : (e = t[1], l = t[2], r = t[3], a = t[4], o = t[5], s = t[6], c = t[7], f = t[8], S = t[9], v = t[10], n = t[11]);
|
|
21
|
+
const b = s === void 0 ? !0 : s, d = c === void 0 ? !1 : c, p = f === void 0 ? b && d : f;
|
|
22
|
+
let i;
|
|
23
|
+
t[12] !== e || t[13] !== l || t[14] !== r ? (i = /* @__PURE__ */ w(P.Content, { ...l, ref: r, children: e }), t[12] = e, t[13] = l, t[14] = r, t[15] = i) : i = t[15];
|
|
24
|
+
let u;
|
|
25
|
+
t[16] !== i || t[17] !== v || t[18] !== n ? (u = /* @__PURE__ */ w(P.Viewport, { ...v, ref: n, children: i }), t[16] = i, t[17] = v, t[18] = n, t[19] = u) : u = t[19];
|
|
26
|
+
let C;
|
|
27
|
+
t[20] !== b || t[21] !== S ? (C = b ? /* @__PURE__ */ w(P.Scrollbar, { ...S, borderRadius: "xs" }) : null, t[20] = b, t[21] = S, t[22] = C) : C = t[22];
|
|
28
|
+
let A;
|
|
29
|
+
t[23] !== a || t[24] !== d ? (A = d ? /* @__PURE__ */ w(P.Scrollbar, { orientation: "horizontal", ...a, borderRadius: "xs" }) : null, t[23] = a, t[24] = d, t[25] = A) : A = t[25];
|
|
30
|
+
let y;
|
|
31
|
+
t[26] !== p ? (y = p ? /* @__PURE__ */ w(P.Corner, {}) : null, t[26] = p, t[27] = y) : y = t[27];
|
|
32
|
+
let g;
|
|
33
|
+
return t[28] !== R || t[29] !== o || t[30] !== u || t[31] !== C || t[32] !== A || t[33] !== y ? (g = /* @__PURE__ */ x(P.Root, { ref: R, ...o, children: [
|
|
34
|
+
u,
|
|
35
|
+
C,
|
|
36
|
+
A,
|
|
37
|
+
y
|
|
38
|
+
] }), t[28] = R, t[29] = o, t[30] = u, t[31] = C, t[32] = A, t[33] = y, t[34] = g) : g = t[34], g;
|
|
39
|
+
}), q = z.forwardRef(function(h, R) {
|
|
40
|
+
const t = $(26);
|
|
41
|
+
let e, l, r, a, o, s, c, f;
|
|
42
|
+
t[0] !== h ? ({
|
|
43
|
+
showArrow: c,
|
|
44
|
+
children: e,
|
|
45
|
+
disabled: a,
|
|
46
|
+
portalled: f,
|
|
47
|
+
content: l,
|
|
48
|
+
contentProps: r,
|
|
49
|
+
portalRef: o,
|
|
50
|
+
...s
|
|
51
|
+
} = h, t[0] = h, t[1] = e, t[2] = l, t[3] = r, t[4] = a, t[5] = o, t[6] = s, t[7] = c, t[8] = f) : (e = t[1], l = t[2], r = t[3], a = t[4], o = t[5], s = t[6], c = t[7], f = t[8]);
|
|
52
|
+
const S = f === void 0 ? !0 : f;
|
|
53
|
+
if (a || D(l))
|
|
54
|
+
return e;
|
|
55
|
+
let n;
|
|
56
|
+
t[9] !== e ? (n = /* @__PURE__ */ w(T.Trigger, { asChild: !0, children: e }), t[9] = e, t[10] = n) : n = t[10];
|
|
57
|
+
const b = !S;
|
|
58
|
+
let d;
|
|
59
|
+
t[11] !== c ? (d = c && /* @__PURE__ */ w(T.Arrow, { children: /* @__PURE__ */ w(T.ArrowTip, {}) }), t[11] = c, t[12] = d) : d = t[12];
|
|
60
|
+
let p;
|
|
61
|
+
t[13] !== l || t[14] !== r || t[15] !== R || t[16] !== d ? (p = /* @__PURE__ */ w(T.Positioner, { children: /* @__PURE__ */ x(T.Content, { ref: R, ...r, children: [
|
|
62
|
+
d,
|
|
63
|
+
l
|
|
64
|
+
] }) }), t[13] = l, t[14] = r, t[15] = R, t[16] = d, t[17] = p) : p = t[17];
|
|
65
|
+
let i;
|
|
66
|
+
t[18] !== o || t[19] !== b || t[20] !== p ? (i = /* @__PURE__ */ w(V, { disabled: b, container: o, children: p }), t[18] = o, t[19] = b, t[20] = p, t[21] = i) : i = t[21];
|
|
67
|
+
let u;
|
|
68
|
+
return t[22] !== s || t[23] !== n || t[24] !== i ? (u = /* @__PURE__ */ x(T.Root, { openDelay: 100, closeDelay: 100, ...s, children: [
|
|
69
|
+
n,
|
|
70
|
+
i
|
|
71
|
+
] }), t[22] = s, t[23] = n, t[24] = i, t[25] = u) : u = t[25], u;
|
|
72
|
+
});
|
|
73
|
+
function j(m) {
|
|
74
|
+
return typeof m == "string" ? m.trim().length === 0 : !1;
|
|
75
|
+
}
|
|
76
|
+
function D(m) {
|
|
77
|
+
if (m == null || m === !1)
|
|
78
|
+
return !0;
|
|
79
|
+
const h = z.Children.toArray(m);
|
|
80
|
+
return h.length === 0 ? !0 : h.every(j);
|
|
81
|
+
}
|
|
82
|
+
export {
|
|
83
|
+
k as S,
|
|
84
|
+
q as T
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=tooltip-Dze4WXVl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip-Dze4WXVl.js","sources":["../src/components/scroll-area.tsx","../src/components/tooltip.tsx"],"sourcesContent":["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 ...rest\n } = props;\n\n return (\n <ChakraScrollArea.Root ref={ref} {...rest}>\n <ChakraScrollArea.Viewport {...viewportProps} ref={viewportRef}>\n <ChakraScrollArea.Content {...contentProps} ref={contentRef}>\n {children}\n </ChakraScrollArea.Content>\n </ChakraScrollArea.Viewport>\n {showVerticalScrollbar ? <ChakraScrollArea.Scrollbar {...verticalScrollbarProps} borderRadius={\"xs\"} /> : null}\n {showHorizontalScrollbar ? (\n <ChakraScrollArea.Scrollbar orientation=\"horizontal\" {...horizontalScrollbarProps} borderRadius={\"xs\"} />\n ) : null}\n {showCorner ? <ChakraScrollArea.Corner /> : null}\n </ChakraScrollArea.Root>\n );\n});\n","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 showArrow?: boolean;\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 { showArrow, 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 {showArrow && (\n <ChakraTooltip.Arrow>\n <ChakraTooltip.ArrowTip />\n </ChakraTooltip.Arrow>\n )}\n {content}\n </ChakraTooltip.Content>\n </ChakraTooltip.Positioner>\n </Portal>\n </ChakraTooltip.Root>\n );\n});\n"],"names":["ScrollArea","React","forwardRef","props","ref","$","_c","children","contentProps","contentRef","horizontalScrollbarProps","rest","t0","t1","t2","verticalScrollbarProps","viewportProps","viewportRef","showVerticalScrollbar","showHorizontalScrollbar","showCorner","undefined","t3","jsx","ChakraScrollArea","t4","t5","t6","t7","t8","Tooltip","content","disabled","portalRef","showArrow","portalled","_temp2","ChakraTooltip","jsxs","Portal","_temp","child","trim","length","node","arr","Children","toArray","every"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pstdio/ui",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/pufflyai/prompt-studio"
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"scripts": {
|
|
36
36
|
"build": "vite build",
|
|
37
37
|
"visualize-bundle": "bunx vite-bundle-visualizer",
|
|
38
|
-
"lint": "
|
|
38
|
+
"lint": "biome check .",
|
|
39
39
|
"typegen:tokens": "chakra typegen ./src/theme/theme.ts",
|
|
40
40
|
"test": "bun test --silent",
|
|
41
41
|
"test-storybook": "test-storybook",
|