@pstdio/ui 0.17.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{MermaidComponent-BCMQqPqu.js → MermaidComponent-BPiVFNYK.js} +2 -2
- package/dist/{MermaidComponent-BCMQqPqu.js.map → MermaidComponent-BPiVFNYK.js.map} +1 -1
- package/dist/chat-ui.js +941 -899
- package/dist/chat-ui.js.map +1 -1
- package/dist/components/chat-ui/components/chat-message-list-items.d.ts +17 -0
- package/dist/components/chat-ui/components/message-types.d.ts +1 -0
- package/dist/components/chat-ui/components/timeline.d.ts +2 -0
- package/dist/components/chat-ui/tool-rendering/default-renderers.d.ts +1 -0
- package/dist/components/chat-ui/tool-rendering/shared.d.ts +3 -2
- package/dist/components/chat-ui/tool-rendering/standard-renderers.d.ts +1 -0
- package/dist/components/data-table/data-table-column-menu.d.ts +4 -1
- package/dist/components/data-table/data-table-header.d.ts +0 -8
- package/dist/components/data-table/data-table-skeleton.d.ts +13 -0
- package/dist/components/data-table/editable-cells-story.d.ts +9 -0
- package/dist/components/data-table/index.d.ts +2 -0
- package/dist/components/diff-viewer/code-editor.d.ts +2 -0
- package/dist/components/diff-viewer/index.d.ts +1 -1
- package/dist/components/diff-viewer/monaco-browser.d.ts +1 -0
- package/dist/components/overlays/dialog-accept-shortcut.d.ts +12 -0
- package/dist/components/overlays/index.d.ts +1 -0
- package/dist/components/overlays/searchable-menu-input.d.ts +9 -0
- package/dist/components/param-editor/index.d.ts +7 -2
- package/dist/components/param-editor/inputs/action-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/boolean-input.d.ts +13 -0
- package/dist/components/param-editor/inputs/color-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/date-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/file-upload-input.d.ts +15 -0
- package/dist/components/param-editor/inputs/file-upload-value.d.ts +7 -0
- package/dist/components/param-editor/inputs/horizontal-text-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/markdown-input.d.ts +13 -0
- package/dist/components/param-editor/inputs/number-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/range-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/resource-input.d.ts +2 -0
- package/dist/components/param-editor/inputs/segmented-input.d.ts +1 -0
- package/dist/components/param-editor/inputs/selection-input.d.ts +6 -0
- package/dist/components/param-editor/inputs/selection-menu.d.ts +10 -0
- package/dist/components/param-editor/inputs/text-input.d.ts +1 -0
- package/dist/components/param-editor/param-editor-advanced-field.d.ts +14 -0
- package/dist/components/param-editor/param-editor-control-fixtures.d.ts +24 -0
- package/dist/components/param-editor/param-editor-field.d.ts +2 -0
- package/dist/components/param-editor/param-editor-horizontal.d.ts +2 -2
- package/dist/components/param-editor/param-editor-label.d.ts +1 -0
- package/dist/components/param-editor/param-editor-presentation.d.ts +3 -0
- package/dist/components/param-editor/param-editor-row.d.ts +17 -0
- package/dist/components/param-editor/param-editor.types.d.ts +43 -13
- package/dist/components/param-editor/resolve-param-value.d.ts +2 -0
- package/dist/components/primitives/chip.d.ts +4 -0
- package/dist/components/primitives/glyph-icon.d.ts +16 -0
- package/dist/components/primitives/icon-color-picker.d.ts +3 -13
- package/dist/components/primitives/icon-options.d.ts +301 -0
- package/dist/components/primitives/index.d.ts +12 -3
- package/dist/components/primitives/resource-badge.d.ts +12 -10
- package/dist/components/primitives/segmented-control.d.ts +20 -0
- package/dist/components/primitives/tag-swatch.d.ts +10 -0
- package/dist/components/rich-text/index.d.ts +1 -0
- package/dist/components/rich-text/lazy-markdown-editor.d.ts +2 -0
- package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
- package/dist/components/tag-editor/index.d.ts +4 -0
- package/dist/components/tag-editor/tag-editor-heading.d.ts +11 -0
- package/dist/components/tag-editor/tag-editor-row.d.ts +1 -1
- package/dist/components/tag-editor/tag-editor-save-bar.d.ts +13 -0
- package/dist/components/tag-editor/tag-editor.types.d.ts +11 -11
- package/dist/components/tag-editor/tag-settings-panel.d.ts +3 -1
- package/dist/data-table.js +1018 -926
- package/dist/data-table.js.map +1 -1
- package/dist/dialog-accept-shortcut-DAEBsoWW.js +7 -0
- package/dist/dialog-accept-shortcut-DAEBsoWW.js.map +1 -0
- package/dist/diff.js +370 -366
- package/dist/diff.js.map +1 -1
- package/dist/font/css/prompt-studio-icons.css +720 -0
- package/dist/font/prompt-studio-icons.eot +0 -0
- package/dist/font/prompt-studio-icons.svg +1 -0
- package/dist/font/prompt-studio-icons.ttf +0 -0
- package/dist/font/prompt-studio-icons.woff +0 -0
- package/dist/font/prompt-studio-icons.woff2 +0 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1958 -1744
- package/dist/index.js.map +1 -1
- package/dist/{kanban-renderer-toolbar-B9ro-9z1.js → kanban-renderer-toolbar-Bcj_N1qr.js} +66 -66
- package/dist/kanban-renderer-toolbar-Bcj_N1qr.js.map +1 -0
- package/dist/kanban-renderer.js +834 -817
- package/dist/kanban-renderer.js.map +1 -1
- package/dist/lazy-markdown-editor-DwhqQ-NN.js +26 -0
- package/dist/lazy-markdown-editor-DwhqQ-NN.js.map +1 -0
- package/dist/list-row-BtoVJpFs.js +821 -0
- package/dist/list-row-BtoVJpFs.js.map +1 -0
- package/dist/markdown-DDd2ESoH.js +743 -0
- package/dist/markdown-DDd2ESoH.js.map +1 -0
- package/dist/markdown-editor-CYVkzt8t.js +741 -0
- package/dist/markdown-editor-CYVkzt8t.js.map +1 -0
- package/dist/monaco-browser-CO0NxK_Z.js +19 -0
- package/dist/monaco-browser-CO0NxK_Z.js.map +1 -0
- package/dist/param-editor-XRjSu6MT.js +161 -0
- package/dist/param-editor-XRjSu6MT.js.map +1 -0
- package/dist/param-editor-field-B9lEPq8c.js +3028 -0
- package/dist/param-editor-field-B9lEPq8c.js.map +1 -0
- package/dist/resource-badge-CuItchgL.js +98 -0
- package/dist/resource-badge-CuItchgL.js.map +1 -0
- package/dist/rich-message--eRzjWYK.js +730 -0
- package/dist/rich-message--eRzjWYK.js.map +1 -0
- package/dist/rich-text.js +114 -827
- package/dist/rich-text.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/theme/primitives/fonts.d.ts +3 -0
- package/dist/theme/primitives/sizes.d.ts +59 -0
- package/dist/theme/recipes/badge.d.ts +8 -0
- package/dist/theme/recipes/color-picker.d.ts +18 -1
- package/dist/theme/recipes/segmented-control.d.ts +22 -0
- package/dist/theme/recipes/switch.d.ts +18 -0
- package/dist/theme/recipes/tabs.d.ts +11 -0
- package/dist/{theme-CNhnbvcE.js → theme-7PDdD9OD.js} +403 -195
- package/dist/theme-7PDdD9OD.js.map +1 -0
- package/dist/theme.js +1 -1
- package/dist/{tree-list-CZHLAURU.js → tree-list-B2L0cTj2.js} +2 -2
- package/dist/{tree-list-CZHLAURU.js.map → tree-list-B2L0cTj2.js.map} +1 -1
- package/package.json +3 -2
- package/dist/components/param-editor/inputs/file-accept.d.ts +0 -22
- package/dist/components/param-editor/inputs/file-drop-input.d.ts +0 -14
- package/dist/kanban-renderer-toolbar-B9ro-9z1.js.map +0 -1
- package/dist/list-row-YRUxEcy3.js +0 -808
- package/dist/list-row-YRUxEcy3.js.map +0 -1
- package/dist/param-editor-CYZJbmKu.js +0 -933
- package/dist/param-editor-CYZJbmKu.js.map +0 -1
- package/dist/param-editor-read-only-field-DgtLqcFa.js +0 -925
- package/dist/param-editor-read-only-field-DgtLqcFa.js.map +0 -1
- package/dist/prism-BXb57lxL.js +0 -125
- package/dist/prism-BXb57lxL.js.map +0 -1
- package/dist/resource-badge-qCWHP-wQ.js +0 -99
- package/dist/resource-badge-qCWHP-wQ.js.map +0 -1
- package/dist/rich-message-DBf_5YlW.js +0 -1450
- package/dist/rich-message-DBf_5YlW.js.map +0 -1
- package/dist/theme-CNhnbvcE.js.map +0 -1
package/dist/rich-text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text.js","sources":["../src/components/rich-text/shared/plugins/CodePlugin/CodeBlockActionsPlugin.tsx","../src/components/rich-text/shared/plugins/LinkEditorPlugin/commands.ts","../src/components/rich-text/shared/plugins/LinkEditorPlugin/utils/getSelectedNode.ts","../src/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.ts","../src/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/floating-toolbar-buttons.tsx","../src/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/resolve-block-type.ts","../src/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/should-show-floating-toolbar.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/shared/plugins/LinkEditorPlugin/link-editor-content.tsx","../src/components/rich-text/shared/plugins/LinkEditorPlugin/utils/link-edit-state.ts","../src/components/rich-text/shared/plugins/LinkEditorPlugin/utils/selection-link-url.ts","../src/components/rich-text/shared/plugins/LinkEditorPlugin/utils/url.ts","../src/components/rich-text/shared/plugins/LinkEditorPlugin/LinkEditorPlugin.tsx","../src/components/rich-text/shared/plugins/LinkEditorPlugin/LinkPlugin.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":["import \"./CodeBlockActionsPlugin.css\";\n\nimport { IconButton } from \"@chakra-ui/react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_CRITICAL, SELECTION_CHANGE_COMMAND } from \"lexical\";\nimport { Check, Copy } from \"lucide-react\";\nimport type React from \"react\";\nimport { type CSSProperties, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { $isCodeNode } from \"../../lexical-code\";\n\nfunction getCodeElementFromSelection(editor: ReturnType<typeof useLexicalComposerContext>[0]) {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return null;\n }\n\n const anchorNode = selection.anchor.getNode();\n const codeNode = $isCodeNode(anchorNode)\n ? anchorNode\n : $findMatchingParent(anchorNode, (node) => {\n return $isCodeNode(node);\n });\n\n if (!$isCodeNode(codeNode)) {\n return null;\n }\n\n const codeElement = editor.getElementByKey(codeNode.getKey());\n return codeElement instanceof HTMLElement ? codeElement : null;\n}\n\nfunction getCodeElementFromTarget(target: EventTarget | null) {\n if (!(target instanceof HTMLElement)) {\n return null;\n }\n\n return target.closest(\".rich-text__code\");\n}\n\nfunction getActionPosition(anchorElem: HTMLElement, codeElement: HTMLElement) {\n const anchorRect = anchorElem.getBoundingClientRect();\n const codeRect = codeElement.getBoundingClientRect();\n\n return {\n top: codeRect.top - anchorRect.top + 6,\n left: codeRect.right - anchorRect.left - 30,\n };\n}\n\nexport function CodeBlockActionsPlugin({ anchorElem }: { anchorElem?: HTMLElement | null }): React.JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n const [activeCodeElement, setActiveCodeElement] = useState<HTMLElement | null>(null);\n const [isCopied, setIsCopied] = useState(false);\n const copyResetTimeoutRef = useRef<number | null>(null);\n\n useEffect(() => {\n return () => {\n if (copyResetTimeoutRef.current !== null) {\n window.clearTimeout(copyResetTimeoutRef.current);\n }\n };\n }, []);\n\n useEffect(() => {\n const rootElement = editor.getRootElement();\n if (!rootElement) {\n return;\n }\n\n const handlePointerMove = (event: PointerEvent) => {\n const nextCodeElement = getCodeElementFromTarget(event.target);\n setActiveCodeElement(nextCodeElement instanceof HTMLElement ? nextCodeElement : null);\n };\n\n const handlePointerLeave = () => {\n editor.getEditorState().read(() => {\n const selectionCodeElement = getCodeElementFromSelection(editor);\n setActiveCodeElement(selectionCodeElement);\n });\n };\n\n rootElement.addEventListener(\"pointermove\", handlePointerMove);\n rootElement.addEventListener(\"pointerleave\", handlePointerLeave);\n\n return () => {\n rootElement.removeEventListener(\"pointermove\", handlePointerMove);\n rootElement.removeEventListener(\"pointerleave\", handlePointerLeave);\n };\n }, [editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const selectionCodeElement = getCodeElementFromSelection(editor);\n if (selectionCodeElement) {\n setActiveCodeElement(selectionCodeElement);\n }\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n editor.getEditorState().read(() => {\n const selectionCodeElement = getCodeElementFromSelection(editor);\n if (!selectionCodeElement) {\n setActiveCodeElement((current) => {\n return current?.matches(\":hover\") ? current : null;\n });\n return;\n }\n\n setActiveCodeElement(selectionCodeElement);\n });\n\n return false;\n },\n COMMAND_PRIORITY_CRITICAL,\n ),\n );\n }, [editor]);\n\n if (!anchorElem || !activeCodeElement) {\n return null;\n }\n\n const position = getActionPosition(anchorElem, activeCodeElement);\n const style: CSSProperties = {\n position: \"absolute\",\n top: position.top,\n left: position.left,\n };\n\n return createPortal(\n <div className=\"code-block-actions\" style={style}>\n <Tooltip content={isCopied ? \"Copied\" : \"Copy code\"}>\n <IconButton\n aria-label={isCopied ? \"Copied\" : \"Copy code\"}\n variant=\"subtle\"\n size=\"xs\"\n onClick={async () => {\n const code = activeCodeElement.textContent ?? \"\";\n try {\n await navigator.clipboard.writeText(code);\n setIsCopied(true);\n if (copyResetTimeoutRef.current !== null) {\n window.clearTimeout(copyResetTimeoutRef.current);\n }\n copyResetTimeoutRef.current = window.setTimeout(() => {\n setIsCopied(false);\n }, 1200);\n } catch {\n setIsCopied(false);\n }\n }}\n >\n {isCopied ? <Check size={14} /> : <Copy size={14} />}\n </IconButton>\n </Tooltip>\n </div>,\n anchorElem,\n );\n}\n","import { createCommand, type LexicalCommand } from \"lexical\";\n\nexport const TOGGLE_LINK_EDIT_MODE_COMMAND: LexicalCommand<boolean> = createCommand(\"TOGGLE_LINK_EDIT_MODE_COMMAND\");\n","import { $isAtNodeEnd } from \"@lexical/selection\";\nimport type { ElementNode, RangeSelection, TextNode } from \"lexical\";\n\nexport function getSelectedNode(selection: RangeSelection): TextNode | ElementNode {\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n if (anchorNode === focusNode) {\n return anchorNode;\n }\n const isBackward = selection.isBackward();\n if (isBackward) {\n return $isAtNodeEnd(focus) ? anchorNode : focusNode;\n }\n return $isAtNodeEnd(anchor) ? anchorNode : focusNode;\n}\n","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 placement: \"above\" | \"legacy\" = \"legacy\",\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 =\n placement === \"above\" ? targetRect.top - floatingElemRect.height - verticalGap : targetRect.top - verticalGap;\n let left = targetRect.left - horizontalOffset;\n\n if (top < editorScrollerRect.top) {\n top =\n placement === \"above\"\n ? targetRect.bottom + verticalGap\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 { IconButton, Stack, Text } from \"@chakra-ui/react\";\nimport { FORMAT_TEXT_COMMAND, type LexicalEditor } from \"lexical\";\nimport { Code2, Link as LinkIcon, List, ListOrdered, ListTodo } from \"lucide-react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport type { BlockType } from \"./resolve-block-type\";\n\ninterface FloatingToolbarButtonsProps {\n editor: LexicalEditor;\n blockType: BlockType;\n isBold: boolean;\n isItalic: boolean;\n isUnderline: boolean;\n isLink: boolean;\n formatHeading: (headingSize: \"h1\" | \"h2\" | \"h3\") => void;\n formatList: (type: \"bullet\" | \"number\" | \"check\") => void;\n formatCodeBlock: () => void;\n insertLink: () => void;\n}\n\nfunction ToolbarSeparator() {\n return (\n <span\n style={{\n display: \"inline-flex\",\n height: \"1rem\",\n margin: \"0 0.25rem\",\n borderLeft: \"1px solid var(--chakra-colors-border-subtle)\",\n }}\n />\n );\n}\n\nexport function FloatingToolbarButtons(props: FloatingToolbarButtonsProps) {\n const {\n editor,\n blockType,\n isBold,\n isItalic,\n isUnderline,\n isLink,\n formatHeading,\n formatList,\n formatCodeBlock,\n insertLink,\n } = props;\n\n return (\n <Stack direction=\"row\" gap=\"0.5\" alignItems=\"center\">\n <Tooltip content=\"Bold\">\n <IconButton\n data-active={isBold || undefined}\n onClick={() => editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\")}\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={() => editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\")}\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={() => editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"underline\")}\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 <Tooltip content={isLink ? \"Remove Link\" : \"Insert Link\"}>\n <IconButton\n data-active={isLink || undefined}\n variant=\"ghost\"\n aria-label={isLink ? \"Remove Link\" : \"Insert Link\"}\n size=\"xs\"\n onClick={insertLink}\n >\n <LinkIcon size={14} />\n </IconButton>\n </Tooltip>\n\n <ToolbarSeparator />\n\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={() => formatHeading(\"h1\")}\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={() => formatHeading(\"h2\")}\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={() => formatHeading(\"h3\")}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n H3\n </Text>\n </IconButton>\n </Tooltip>\n\n <ToolbarSeparator />\n\n <Tooltip content=\"Code Block\">\n <IconButton\n data-active={blockType === \"code\" || undefined}\n variant=\"ghost\"\n aria-label=\"Code Block\"\n size=\"xs\"\n onClick={formatCodeBlock}\n >\n <Code2 size={14} />\n </IconButton>\n </Tooltip>\n\n <ToolbarSeparator />\n\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={() => formatList(\"bullet\")}\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={() => formatList(\"number\")}\n >\n <ListOrdered size={14} />\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Check List\">\n <IconButton\n data-active={blockType === \"check\" || undefined}\n variant=\"ghost\"\n aria-label=\"Check List\"\n size=\"xs\"\n onClick={() => formatList(\"check\")}\n >\n <ListTodo size={14} />\n </IconButton>\n </Tooltip>\n </Stack>\n );\n}\n","import { $isListNode } from \"@lexical/list\";\nimport { $isHeadingNode } from \"@lexical/rich-text\";\nimport { $findMatchingParent } from \"@lexical/utils\";\nimport { $isRootOrShadowRoot, type LexicalNode } from \"lexical\";\n\nexport const 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\nexport type BlockType = keyof typeof blockTypeToBlockName;\n\nconst toKnownBlockType = (type: string) => {\n return type in blockTypeToBlockName ? (type as BlockType) : 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\nexport const resolveBlockTypeFromAnchor = (anchorNode: LexicalNode) => {\n const element = findSelectionElement(anchorNode);\n\n if ($isListNode(element)) {\n return element.getListType() as BlockType;\n }\n\n const parentList = $findMatchingParent(anchorNode, (node) => $isListNode(node));\n if (parentList !== null && $isListNode(parentList)) {\n return parentList.getListType() as BlockType;\n }\n\n const type = $isHeadingNode(element) ? element.getTag() : element.getType();\n return toKnownBlockType(type);\n};\n","interface ShouldShowFloatingToolbarParams {\n hasSelection: boolean;\n isRangeSelection: boolean;\n isCollapsed: boolean;\n hasNativeSelection: boolean;\n hasNativeRange: boolean;\n isAnchorInsideEditor: boolean;\n isEditorEditable: boolean;\n}\n\nexport function shouldShowFloatingToolbar(params: ShouldShowFloatingToolbarParams) {\n const {\n hasSelection,\n isRangeSelection,\n isCollapsed,\n hasNativeSelection,\n hasNativeRange,\n isAnchorInsideEditor,\n isEditorEditable,\n } = params;\n\n return (\n hasSelection &&\n isRangeSelection &&\n !isCollapsed &&\n hasNativeSelection &&\n hasNativeRange &&\n isAnchorInsideEditor &&\n isEditorEditable\n );\n}\n","import \"./FloatingTextFormatToolbarPlugin.css\";\n\nimport { $isAutoLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport {\n INSERT_CHECK_LIST_COMMAND,\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, 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 CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_HIGH,\n type LexicalEditor,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\";\nimport type React from \"react\";\nimport { type Dispatch, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { $createCodeNode } from \"../../lexical-code\";\nimport { TOGGLE_LINK_EDIT_MODE_COMMAND } from \"../LinkEditorPlugin/commands\";\nimport { getSelectedNode } from \"../LinkEditorPlugin/utils/getSelectedNode\";\nimport { setFloatingElemPos } from \"../LinkEditorPlugin/utils/setFloatingElemPos\";\nimport { FloatingToolbarButtons } from \"./floating-toolbar-buttons\";\nimport { type BlockType, resolveBlockTypeFromAnchor } from \"./resolve-block-type\";\nimport { shouldShowFloatingToolbar } from \"./should-show-floating-toolbar\";\n\n// Increase the vertical gap (negative places it below the selection) to avoid overlap\nconst GAP = -4;\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<BlockType>(\"paragraph\");\n const [isBold, setIsBold] = useState(false);\n const [isItalic, setIsItalic] = useState(false);\n const [isUnderline, setIsUnderline] = useState(false);\n const [isLink, setIsLink] = useState(false);\n const updateFloatingToolbarRef = useRef<() => boolean | undefined>(() => undefined);\n\n const formatHeading = (headingSize: HeadingTagType) => {\n editor.update(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n if (blockType === headingSize) {\n $setBlocksType(selection, $createParagraphNode);\n return;\n }\n\n $setBlocksType(selection, () => $createHeadingNode(headingSize));\n });\n };\n\n const formatList = (type: \"bullet\" | \"number\" | \"check\") => {\n if (blockType === type) {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n return;\n }\n const command = {\n bullet: INSERT_UNORDERED_LIST_COMMAND,\n number: INSERT_ORDERED_LIST_COMMAND,\n check: INSERT_CHECK_LIST_COMMAND,\n }[type];\n editor.dispatchCommand(command, undefined);\n };\n\n const formatCodeBlock = () => {\n editor.update(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n if (blockType === \"code\") {\n $setBlocksType(selection, $createParagraphNode);\n return;\n }\n\n $setBlocksType(selection, () => $createCodeNode());\n });\n };\n\n const insertLink = () => {\n if (isLink) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n return;\n }\n editor.dispatchCommand(TOGGLE_LINK_EDIT_MODE_COMMAND, true);\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 node = getSelectedNode(selection);\n const linkParent = $findMatchingParent(node, $isLinkNode);\n const autoLinkParent = $findMatchingParent(node, $isAutoLinkNode);\n setIsLink(linkParent !== null || autoLinkParent !== null);\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 const hasNativeSelection = nativeSelection !== null;\n const hasNativeRange = hasNativeSelection && nativeSelection.rangeCount > 0;\n const isAnchorInsideEditor = Boolean(rootElement?.contains(hasNativeSelection ? nativeSelection.anchorNode : null));\n\n if (\n shouldShowFloatingToolbar({\n hasSelection: selection !== null,\n isRangeSelection: $isRangeSelection(selection),\n isCollapsed: $isRangeSelection(selection) ? selection.isCollapsed() : false,\n hasNativeSelection,\n hasNativeRange,\n isAnchorInsideEditor,\n isEditorEditable: editor.isEditable(),\n }) &&\n nativeSelection\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 <FloatingToolbarButtons\n editor={editor}\n blockType={blockType}\n isBold={isBold}\n isItalic={isItalic}\n isUnderline={isUnderline}\n isLink={isLink}\n formatHeading={formatHeading}\n formatList={formatList}\n formatCodeBlock={formatCodeBlock}\n insertLink={insertLink}\n />\n </div>\n );\n}\n\nexport function FloatingTextFormatToolbarPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement;\n}): React.JSX.Element | null {\n const [editor] = useLexicalComposerContext();\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","/**\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 { TabIndentationPlugin } from \"@lexical/react/LexicalTabIndentationPlugin\";\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 { CodeBlockActionsPlugin } from \"../shared/plugins/CodePlugin/CodeBlockActionsPlugin\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { CodeHighlightingPlugin } from \"../shared/plugins/CodePlugin/CodeHighlightingPlugin\";\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 <TabIndentationPlugin maxIndent={7} />\n <HorizontalRulePlugin />\n <CodeHighlightingPlugin />\n <ImportCodeBlocksPlugin />\n <CodeBlockActionsPlugin anchorElem={floatingToolbarAnchorElem} />\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 { Link as ChakraLink, IconButton, Input, Stack } from \"@chakra-ui/react\";\nimport { Check, Pencil, Trash2, X } from \"lucide-react\";\nimport type React from \"react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\ninterface LinkEditorContentProps {\n isActive: boolean;\n isLinkEditMode: boolean;\n editedLinkUrl: string;\n editedLinkUrlIsValid: boolean;\n linkUrl: string;\n href: string;\n inputRef: React.RefObject<HTMLInputElement | null>;\n onEditedLinkUrlChange: (url: string) => void;\n onInputKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n onClose: () => void;\n onSubmit: () => void;\n onEdit: () => void;\n onRemove: () => void;\n}\n\nexport function LinkEditorContent(props: LinkEditorContentProps) {\n const {\n isActive,\n isLinkEditMode,\n editedLinkUrl,\n editedLinkUrlIsValid,\n linkUrl,\n href,\n inputRef,\n onEditedLinkUrlChange,\n onInputKeyDown,\n onClose,\n onSubmit,\n onEdit,\n onRemove,\n } = props;\n\n if (!isActive) {\n return null;\n }\n\n if (isLinkEditMode) {\n return (\n <Stack className=\"link-editor-content\" direction=\"row\" gap=\"1\" alignItems=\"center\" p=\"1\">\n <Input\n ref={inputRef}\n className=\"link-editor-url-field\"\n size=\"sm\"\n fontSize=\"sm\"\n value={editedLinkUrl}\n placeholder=\"https://\"\n aria-label=\"Link URL\"\n aria-invalid={!editedLinkUrlIsValid}\n onChange={(event) => {\n onEditedLinkUrlChange(event.target.value);\n }}\n onKeyDown={onInputKeyDown}\n />\n <Tooltip content=\"Cancel\">\n <IconButton\n variant=\"ghost\"\n size=\"xs\"\n aria-label=\"Cancel link edit\"\n onMouseDown={preventFocusLoss}\n onClick={onClose}\n >\n <X size={14} />\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Confirm\">\n <IconButton\n variant=\"ghost\"\n size=\"xs\"\n aria-label=\"Confirm link edit\"\n disabled={!editedLinkUrlIsValid}\n onMouseDown={preventFocusLoss}\n onClick={onSubmit}\n >\n <Check size={14} />\n </IconButton>\n </Tooltip>\n </Stack>\n );\n }\n\n return (\n <Stack className=\"link-editor-content\" direction=\"row\" gap=\"1\" alignItems=\"center\" p=\"1\">\n <ChakraLink\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"link-editor-url-field\"\n fontSize=\"sm\"\n textDecoration=\"underline\"\n px=\"2\"\n truncate\n >\n {linkUrl}\n </ChakraLink>\n <Tooltip content=\"Edit link\">\n <IconButton variant=\"ghost\" size=\"xs\" aria-label=\"Edit link\" onMouseDown={preventFocusLoss} onClick={onEdit}>\n <Pencil size={14} />\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Remove link\">\n <IconButton\n variant=\"ghost\"\n size=\"xs\"\n aria-label=\"Remove link\"\n onMouseDown={preventFocusLoss}\n onClick={onRemove}\n >\n <Trash2 size={14} />\n </IconButton>\n </Tooltip>\n </Stack>\n );\n}\n\nfunction preventFocusLoss(event: React.MouseEvent) {\n event.preventDefault();\n}\n","export function shouldCancelLinkEdit(isLinkEditMode: boolean, isLink: boolean, linkUrl: string) {\n return isLinkEditMode && isLink && linkUrl === \"\";\n}\n","import { $isLinkNode } from \"@lexical/link\";\nimport { $findMatchingParent } from \"@lexical/utils\";\nimport type { RangeSelection } from \"lexical\";\nimport { getSelectedNode } from \"./getSelectedNode\";\n\nexport function getSelectionLinkUrl(selection: RangeSelection) {\n const node = getSelectedNode(selection);\n const linkParent = $findMatchingParent(node, $isLinkNode);\n\n if (linkParent) {\n return linkParent.getURL();\n }\n if ($isLinkNode(node)) {\n return node.getURL();\n }\n return \"\";\n}\n","const SUPPORTED_URL_PROTOCOLS = new Set([\"http:\", \"https:\", \"mailto:\", \"sms:\", \"tel:\"]);\n\nexport function sanitizeUrl(url: string): string {\n try {\n const parsedUrl = new URL(url);\n if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {\n return \"about:blank\";\n }\n } catch {\n return url;\n }\n return url;\n}\n\nexport function validateUrl(url: string): boolean {\n try {\n const parsedUrl = new URL(url);\n if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {\n return false;\n }\n if (parsedUrl.protocol === \"http:\" || parsedUrl.protocol === \"https:\") {\n return parsedUrl.hostname !== \"\";\n }\n return parsedUrl.pathname.trim() !== \"\";\n } catch {\n return false;\n }\n}\n","import \"./LinkEditorPlugin.css\";\n\nimport { Box } from \"@chakra-ui/react\";\nimport { $createLinkNode, $isAutoLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport {\n $getSelection,\n $isLineBreakNode,\n $isRangeSelection,\n $setSelection,\n type BaseSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n type LexicalEditor,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\";\nimport type React from \"react\";\nimport { type Dispatch, useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { TOGGLE_LINK_EDIT_MODE_COMMAND } from \"./commands\";\nimport { LinkEditorContent } from \"./link-editor-content\";\nimport { getSelectedNode } from \"./utils/getSelectedNode\";\nimport { shouldCancelLinkEdit } from \"./utils/link-edit-state\";\nimport { getSelectionLinkUrl } from \"./utils/selection-link-url\";\nimport { setFloatingElemPos } from \"./utils/setFloatingElemPos\";\nimport { sanitizeUrl, validateUrl } from \"./utils/url\";\n\nconst GAP = 8;\n\nfunction LinkEditor({\n editor,\n isLink,\n setIsLink,\n anchorElem,\n isLinkEditMode,\n setIsLinkEditMode,\n}: {\n editor: LexicalEditor;\n isLink: boolean;\n setIsLink: Dispatch<boolean>;\n anchorElem: HTMLElement;\n isLinkEditMode: boolean;\n setIsLinkEditMode: Dispatch<boolean>;\n}): React.JSX.Element {\n const editorRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const updateLinkEditorRef = useRef<() => void>(() => undefined);\n const [linkUrl, setLinkUrl] = useState(\"\");\n const [editedLinkUrl, setEditedLinkUrl] = useState(\"https://\");\n const [lastSelection, setLastSelection] = useState<BaseSelection | null>(null);\n const isActive = isLink || isLinkEditMode;\n const editedLinkUrlIsValid = validateUrl(editedLinkUrl);\n\n updateLinkEditorRef.current = () => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const nextLinkUrl = getSelectionLinkUrl(selection);\n setLinkUrl(nextLinkUrl);\n if (shouldCancelLinkEdit(isLinkEditMode, isLink, nextLinkUrl)) {\n closeLinkEditor();\n }\n if (isLinkEditMode && nextLinkUrl !== \"\") {\n setEditedLinkUrl(nextLinkUrl);\n }\n }\n const editorElem = editorRef.current;\n const nativeSelection = window.getSelection();\n const activeElement = document.activeElement;\n\n if (editorElem === null) {\n return;\n }\n\n const rootElement = editor.getRootElement();\n const hasNativeRange = nativeSelection !== null && nativeSelection.rangeCount > 0;\n\n if (\n selection !== null &&\n nativeSelection !== null &&\n hasNativeRange &&\n rootElement?.contains(nativeSelection.anchorNode) &&\n editor.isEditable()\n ) {\n const rangeRect = nativeSelection.getRangeAt(0).getBoundingClientRect();\n const topRect = new DOMRect(rangeRect.left, rangeRect.top, 0, rangeRect.height);\n setFloatingElemPos(topRect, editorElem, anchorElem, GAP, undefined, \"above\");\n setLastSelection(selection);\n } else if (!editorElem.contains(activeElement)) {\n if (rootElement !== null) {\n setFloatingElemPos(null, editorElem, anchorElem);\n }\n setLastSelection(null);\n setIsLinkEditMode(false);\n setLinkUrl(\"\");\n }\n };\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement;\n\n const update = () => {\n editor.getEditorState().read(() => {\n updateLinkEditorRef.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\n if (scrollerElem) {\n scrollerElem.removeEventListener(\"scroll\", update);\n }\n };\n }, [anchorElem.parentElement, editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateLinkEditorRef.current();\n });\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateLinkEditorRef.current();\n return true;\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setIsLink(false);\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH,\n ),\n );\n }, [editor, setIsLink, isLink]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateLinkEditorRef.current();\n });\n }, [editor]);\n\n useLayoutEffect(() => {\n if (!isActive) {\n return;\n }\n\n editor.getEditorState().read(() => {\n updateLinkEditorRef.current();\n });\n }, [editor, isActive]);\n\n useEffect(() => {\n if (isLinkEditMode && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isLinkEditMode]);\n\n const monitorInputInteraction = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n handleLinkSubmission();\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n closeLinkEditor();\n }\n };\n\n const closeLinkEditor = () => {\n setEditedLinkUrl(\"https://\");\n setIsLinkEditMode(false);\n };\n\n const handleLinkSubmission = () => {\n if (lastSelection === null || !editedLinkUrlIsValid) {\n return;\n }\n\n editor.update(() => {\n $setSelection(lastSelection);\n });\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, sanitizeUrl(editedLinkUrl));\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const parent = getSelectedNode(selection).getParent();\n if ($isAutoLinkNode(parent)) {\n const linkNode = $createLinkNode(parent.getURL(), {\n rel: parent.__rel,\n target: parent.__target,\n title: parent.__title,\n });\n parent.replace(linkNode, true);\n }\n }\n });\n closeLinkEditor();\n };\n\n return (\n <Box ref={editorRef} className={`link-editor ${isActive ? \"active\" : \"\"}`}>\n <LinkEditorContent\n isActive={isActive}\n isLinkEditMode={isLinkEditMode}\n editedLinkUrl={editedLinkUrl}\n editedLinkUrlIsValid={editedLinkUrlIsValid}\n linkUrl={linkUrl}\n href={sanitizeUrl(linkUrl)}\n inputRef={inputRef}\n onEditedLinkUrlChange={setEditedLinkUrl}\n onInputKeyDown={monitorInputInteraction}\n onClose={closeLinkEditor}\n onSubmit={handleLinkSubmission}\n onEdit={() => {\n setEditedLinkUrl(linkUrl);\n setIsLinkEditMode(true);\n }}\n onRemove={() => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }}\n />\n </Box>\n );\n}\n\nfunction useLinkEditorToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n isLinkEditMode: boolean,\n setIsLinkEditMode: Dispatch<boolean>,\n): React.JSX.Element | null {\n const [activeEditor, setActiveEditor] = useState(editor);\n const [isLink, setIsLink] = useState(false);\n\n useEffect(() => {\n function $updateToolbar() {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const focusNode = getSelectedNode(selection);\n const focusLinkNode = $findMatchingParent(focusNode, $isLinkNode);\n const focusAutoLinkNode = $findMatchingParent(focusNode, $isAutoLinkNode);\n if (!(focusLinkNode || focusAutoLinkNode)) {\n setIsLink(false);\n return;\n }\n const badNode = selection\n .getNodes()\n .filter((node) => !$isLineBreakNode(node))\n .find((node) => {\n const linkNode = $findMatchingParent(node, $isLinkNode);\n const autoLinkNode = $findMatchingParent(node, $isAutoLinkNode);\n const autoLinkIsUnlinked = $isAutoLinkNode(autoLinkNode) && autoLinkNode.getIsUnlinked();\n return (\n (focusLinkNode && !focusLinkNode.is(linkNode)) ||\n (linkNode && !linkNode.is(focusLinkNode)) ||\n (focusAutoLinkNode && !focusAutoLinkNode.is(autoLinkNode)) ||\n (autoLinkNode && (!autoLinkNode.is(focusAutoLinkNode) || autoLinkIsUnlinked))\n );\n });\n if (!badNode) {\n setIsLink(true);\n } else {\n setIsLink(false);\n }\n }\n }\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n $updateToolbar();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n $updateToolbar();\n setActiveEditor(newEditor);\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 const node = getSelectedNode(selection);\n const linkNode = $findMatchingParent(node, $isLinkNode);\n if ($isLinkNode(linkNode) && (payload.metaKey || payload.ctrlKey)) {\n window.open(sanitizeUrl(linkNode.getURL()), \"_blank\", \"noopener,noreferrer\");\n return true;\n }\n }\n return false;\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n TOGGLE_LINK_EDIT_MODE_COMMAND,\n (payload) => {\n setIsLinkEditMode(payload);\n return true;\n },\n COMMAND_PRIORITY_LOW,\n ),\n );\n }, [editor, setIsLinkEditMode]);\n\n return createPortal(\n <LinkEditor\n editor={activeEditor}\n isLink={isLink}\n anchorElem={anchorElem}\n setIsLink={setIsLink}\n isLinkEditMode={isLinkEditMode}\n setIsLinkEditMode={setIsLinkEditMode}\n />,\n anchorElem,\n );\n}\n\nexport default function LinkEditorPlugin({ anchorElem = document.body }: { anchorElem?: HTMLElement }) {\n const [isLinkEditMode, setIsLinkEditMode] = useState(false);\n const [editor] = useLexicalComposerContext();\n return useLinkEditorToolbar(editor, anchorElem, isLinkEditMode, setIsLinkEditMode);\n}\n","import { LinkPlugin as LexicalLinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { validateUrl } from \"./utils/url.ts\";\n\nexport default function LinkPlugin(): React.JSX.Element {\n return <LexicalLinkPlugin validateUrl={validateUrl} />;\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 { CheckListPlugin } from \"@lexical/react/LexicalCheckListPlugin\";\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 { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { MarkdownShortcutPlugin } from \"@lexical/react/LexicalMarkdownShortcutPlugin\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { TabIndentationPlugin } from \"@lexical/react/LexicalTabIndentationPlugin\";\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 { CodeBlockActionsPlugin } from \"../shared/plugins/CodePlugin/CodeBlockActionsPlugin\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { CodeHighlightingPlugin } from \"../shared/plugins/CodePlugin/CodeHighlightingPlugin\";\nimport { EquationPlugin } from \"../shared/plugins/EquationPlugin/EquationPlugin\";\nimport { FloatingTextFormatToolbarPlugin } from \"../shared/plugins/FloatingTextFormatToolbarPlugin\";\nimport { LinkEditorPlugin, LinkPlugin } from \"../shared/plugins/LinkEditorPlugin\";\nimport ToggleEditablePlugin from \"../shared/plugins/ToggleEditablePlugin\";\nimport { TreeViewPlugin } from \"../shared/plugins/TreeViewPlugin/TreeViewPlugin\";\nimport { normalizeMarkdownListIndentation, splitFrontmatter } from \"../utils/markdown\";\n\nexport interface MarkdownEditorProps {\n autoFocus?: boolean;\n debug?: boolean;\n defaultState: string;\n isEditable?: boolean;\n placeholder?: string;\n scrollable?: boolean;\n onChange?: (value: string) => void;\n}\n\nexport function MarkdownEditor(props: MarkdownEditorProps) {\n const {\n autoFocus = false,\n debug = false,\n defaultState = \"\",\n isEditable = false,\n placeholder,\n scrollable = true,\n onChange,\n } = 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(normalizeMarkdownListIndentation(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={scrollable ? \"100%\" : \"auto\"}\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 {isEditable ? <TabIndentationPlugin maxIndent={7} /> : null}\n <CheckListPlugin />\n {isEditable ? <MarkdownShortcutPlugin transformers={editorTransformers} /> : null}\n <HorizontalRulePlugin />\n <CodeHighlightingPlugin />\n <ImportCodeBlocksPlugin />\n <CodeBlockActionsPlugin anchorElem={floatingToolbarAnchorElem} />\n <EquationPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth={false} padding=\"sm\" scrollable={scrollable} />}\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=\"45rem\" color=\"fg.muted\" textStyle=\"paragraph/M/regular\">\n {placeholder}\n </Box>\n </Flex>\n ) : null\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n {isEditable && floatingToolbarAnchorElem ? (\n <>\n <FloatingTextFormatToolbarPlugin anchorElem={floatingToolbarAnchorElem} />\n <LinkEditorPlugin anchorElem={floatingToolbarAnchorElem} />\n </>\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":["getCodeElementFromSelection","editor","selection","$getSelection","$isRangeSelection","anchorNode","anchor","getNode","codeNode","$isCodeNode","$findMatchingParent","node","codeElement","getElementByKey","getKey","HTMLElement","getCodeElementFromTarget","target","closest","getActionPosition","anchorElem","anchorRect","getBoundingClientRect","codeRect","top","left","right","CodeBlockActionsPlugin","t0","$","_c","useLexicalComposerContext","activeCodeElement","setActiveCodeElement","useState","isCopied","setIsCopied","copyResetTimeoutRef","useRef","t1","t2","Symbol","for","current","window","clearTimeout","useEffect","t3","t4","rootElement","getRootElement","handlePointerMove","event","nextCodeElement","handlePointerLeave","getEditorState","read","selectionCodeElement","addEventListener","removeEventListener","t5","t6","mergeRegister","registerUpdateListener","t7","editorState","selectionCodeElement_0","registerCommand","SELECTION_CHANGE_COMMAND","selectionCodeElement_1","_temp","COMMAND_PRIORITY_CRITICAL","position","t8","style","t9","t10","t11","textContent","code","navigator","clipboard","writeText","setTimeout","t12","Check","jsx","Copy","t13","IconButton","t14","Tooltip","t15","t16","createPortal","matches","TOGGLE_LINK_EDIT_MODE_COMMAND","createCommand","getSelectedNode","focus","focusNode","isBackward","$isAtNodeEnd","VERTICAL_GAP","HORIZONTAL_OFFSET","setFloatingElemPos","targetRect","floatingElem","verticalGap","horizontalOffset","placement","scrollerElem","parentElement","opacity","transform","floatingElemRect","anchorElementRect","editorScrollerRect","height","bottom","width","ToolbarSeparator","display","margin","borderLeft","FloatingToolbarButtons","props","blockType","isBold","isItalic","isUnderline","isLink","formatHeading","formatList","formatCodeBlock","insertLink","undefined","dispatchCommand","FORMAT_TEXT_COMMAND","Text","LinkIcon","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","Code2","t34","t35","t36","t37","t38","List","t39","t40","t41","t42","ListOrdered","t43","t44","t45","t46","ListTodo","t47","t48","Stack","blockTypeToBlockName","bullet","check","h1","h2","h3","h4","h5","h6","number","paragraph","quote","toKnownBlockType","type","findSelectionElement","parent","getParent","$isRootOrShadowRoot","getTopLevelElementOrThrow","resolveBlockTypeFromAnchor","element","$isListNode","getListType","parentList","$isHeadingNode","getTag","getType","shouldShowFloatingToolbar","params","hasSelection","isRangeSelection","isCollapsed","hasNativeSelection","hasNativeRange","isAnchorInsideEditor","isEditorEditable","GAP","FloatingTextToolbar","isToolbarActive","setIsToolbarActive","editorRef","setBlockType","setIsBold","setIsItalic","setIsUnderline","setIsLink","updateFloatingToolbarRef","headingSize","update","$setBlocksType","$createParagraphNode","$createHeadingNode","REMOVE_LIST_COMMAND","command","INSERT_UNORDERED_LIST_COMMAND","INSERT_ORDERED_LIST_COMMAND","INSERT_CHECK_LIST_COMMAND","$createCodeNode","TOGGLE_LINK_COMMAND","updateToolbar","hasFormat","linkParent","$isLinkNode","autoLinkParent","$isAutoLinkNode","nextBlockType","editorElem","nativeSelection","getSelection","rangeCount","Boolean","contains","isEditable","domRect","getRangeAt","bottomRect","DOMRect","_payload","CLICK_COMMAND","COMMAND_PRIORITY_HIGH","FloatingTextFormatToolbarPlugin","document","body","AwarenessCursorsCSS","CollaborativeMarkdownEditor","roomId","wsUrl","wsParams","userName","userColor","placeholder","editorContainerRef","floatingToolbarAnchorElem","setFloatingToolbarAnchorElem","synced","setSynced","doc","nextProvider","WebsocketProvider","connect","on","isSynced","provider","disconnect","namespace","nodes","editorNodes","onError","_temp2","editable","theme","editorTheme","initialConfig","CollaborationPluginV2__EXPERIMENTAL","LinkPlugin","ListPlugin","TabIndentationPlugin","HorizontalRulePlugin","CodeHighlightingPlugin","ImportCodeBlocksPlugin","EquationPlugin","ContentEditable","Box","RichTextPlugin","LexicalErrorBoundary","Flex","LexicalComposer","jsxs","LexicalCollaboration","error","console","Y","Doc","LinkEditorContent","isActive","isLinkEditMode","editedLinkUrl","editedLinkUrlIsValid","linkUrl","href","inputRef","onEditedLinkUrlChange","onInputKeyDown","onClose","onSubmit","onEdit","onRemove","value","Input","X","preventFocusLoss","ChakraLink","Pencil","Trash2","preventDefault","shouldCancelLinkEdit","getSelectionLinkUrl","getURL","SUPPORTED_URL_PROTOCOLS","Set","sanitizeUrl","url","parsedUrl","URL","has","protocol","validateUrl","hostname","pathname","trim","LinkEditor","setIsLinkEditMode","updateLinkEditorRef","setLinkUrl","setEditedLinkUrl","lastSelection","setLastSelection","nextLinkUrl","closeLinkEditor","activeElement","rangeRect","topRect","COMMAND_PRIORITY_LOW","KEY_ESCAPE_COMMAND","useLayoutEffect","monitorInputInteraction","key","handleLinkSubmission","$setSelection","linkNode","$createLinkNode","rel","__rel","__target","title","__title","replace","useLinkEditorToolbar","activeEditor","setActiveEditor","$updateToolbar","focusLinkNode","focusAutoLinkNode","badNode","getNodes","filter","find","node_0","autoLinkNode","autoLinkIsUnlinked","getIsUnlinked","is","newEditor","payload_0","payload","selection_0","node_1","linkNode_0","metaKey","ctrlKey","open","$isLineBreakNode","LinkEditorPlugin","LexicalLinkPlugin","MarkdownEditor","autoFocus","debug","defaultState","scrollable","onChange","splitFrontmatter","frontmatter","shouldTrackChanges","$convertFromMarkdownString","normalizeMarkdownListIndentation","editorTransformers","AutoFocusPlugin","HistoryPlugin","CheckListPlugin","MarkdownShortcutPlugin","Fragment","OnChangePlugin","root","$getRoot","markdownBody","$convertToMarkdownString","ToggleEditablePlugin","TreeViewPlugin","inferResourceTypeFromMediaType","mediaType","normalized","toLowerCase","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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"}
|
|
1
|
+
{"version":3,"file":"rich-text.js","sources":["../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/utils/inferResourceType.ts","../src/components/rich-text/utils/mediaType.ts"],"sourcesContent":["/**\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 { TabIndentationPlugin } from \"@lexical/react/LexicalTabIndentationPlugin\";\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 { CodeBlockActionsPlugin } from \"../shared/plugins/CodePlugin/CodeBlockActionsPlugin\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { CodeHighlightingPlugin } from \"../shared/plugins/CodePlugin/CodeHighlightingPlugin\";\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 <TabIndentationPlugin maxIndent={7} />\n <HorizontalRulePlugin />\n <CodeHighlightingPlugin />\n <ImportCodeBlocksPlugin />\n <CodeBlockActionsPlugin anchorElem={floatingToolbarAnchorElem} />\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 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":["AwarenessCursorsCSS","$","_c","t0","Symbol","for","jsx","CollaborativeMarkdownEditor","props","roomId","wsUrl","wsParams","userName","t1","userColor","t2","placeholder","t3","undefined","editorContainerRef","useRef","floatingToolbarAnchorElem","setFloatingToolbarAnchorElem","useState","synced","setSynced","doc","_temp","t4","nextProvider","WebsocketProvider","params","connect","on","isSynced","provider","t5","t6","disconnect","useEffect","t7","t8","current","t9","namespace","nodes","editorNodes","editorState","onError","_temp2","editable","theme","editorTheme","initialConfig","t10","t11","t12","CollaborationPluginV2__EXPERIMENTAL","t13","t14","t15","t16","t17","t18","LinkPlugin","ListPlugin","TabIndentationPlugin","HorizontalRulePlugin","CodeHighlightingPlugin","ImportCodeBlocksPlugin","t19","CodeBlockActionsPlugin","t20","EquationPlugin","t21","ContentEditable","t22","Box","t23","RichTextPlugin","LexicalErrorBoundary","t24","FloatingTextFormatToolbarPlugin","t25","Flex","LexicalComposer","jsxs","LexicalCollaboration","error","console","Y","Doc","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
|
-
.pstdio-terminal .xterm-viewport{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.4) transparent}.pstdio-terminal .xterm-viewport::-webkit-scrollbar{width:10px}.pstdio-terminal .xterm-viewport::-webkit-scrollbar-track{background:transparent}.pstdio-terminal .xterm-viewport::-webkit-scrollbar-thumb{background-color:#80808066;border:3px solid transparent;background-clip:padding-box;border-radius:9999px}.pstdio-terminal .xterm-viewport::-webkit-scrollbar-thumb:hover{background-color:#80808099}.data-table{table-layout:fixed}.data-table.full-width{width:100%;table-layout:auto}.data-table tr{width:fit-content}.data-table.full-width tr{width:100%}.data-table thead th{background-color:var(--chakra-colors-bg-subtle, rgba(13, 17, 23, .02));white-space:nowrap}.data-table .data-table-column-header-row{position:sticky;top:0;z-index:2;height:40px}.data-table .data-table-stats-row{position:sticky;top:40px;z-index:1;height:88px}.data-table thead th>*{max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table .data-table-stats-row th[data-stat-type=histogram],.data-table .data-table-stats-row th[data-stat-type=histogram]>*,.data-table .data-table-stats-row th[data-stat-type=top-values],.data-table .data-table-stats-row th[data-stat-type=top-values]>*{overflow:visible}.data-table tbody tr{height:40px}.data-table tbody td{height:40px;max-height:40px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table tbody td>*{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table tbody td[data-column-id=rowIndex]{background-color:var(--chakra-colors-bg-subtle, rgba(13, 17, 23, .02))}.data-table tbody tr[data-active=true]>td,.data-table tbody tr:hover>td{background-color:var(--chakra-colors-bg-hover, rgba(13, 17, 23, .04))}.data-table tbody tr[data-active=true]>td[data-column-id=rowIndex],.data-table tbody tr:hover>td[data-column-id=rowIndex]{background-color:var(--chakra-colors-bg-hover, rgba(13, 17, 23, .04))}.data-table .resizer{position:absolute;top:0;height:100%;right:0;width:5px;background-color:var(--chakra-colors-border-primary);opacity:.5;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none}.data-table .resizer.isResizing{opacity:1}@media(hover:hover){.data-table .resizer{opacity:0}.data-table *:hover>.resizer{opacity:1}}.data-table .resizer.ltr{right:0}.data-table .resizer.rtl{left:0}.rich-text__ltr{text-align:left}.rich-text__rtl{text-align:right}.rich-text{--rich-text-font-scale: 1;--rich-text-list-indent: 1.5rem;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-xl, 1.5rem);margin-left:var(--chakra-spacing-sm, .75rem);margin-bottom:var(--chakra-spacing-xl, 1.5rem);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-code);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:0;margin-top:var(--chakra-spacing-md, 1rem);margin-bottom:var(--chakra-spacing-md, 1rem);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{outline:1px solid var(--chakra-colors-border-subtle);outline-offset:-1px;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;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,ul.rich-text__checklist,ol.rich-text__ol,ol.rich-text__ol1,ol.rich-text__ol2,ol.rich-text__ol3,ol.rich-text__ol4,ol.rich-text__ol5{list-style-position:outside;padding-inline-start:var(--rich-text-list-indent);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;padding-inline-start:var(--chakra-spacing-1, .25rem)}li.rich-text__listItemUnchecked,li.rich-text__listItemChecked{position:relative;list-style-type:none;padding-left:24px;outline:none}li.rich-text__listItemUnchecked:before,li.rich-text__listItemChecked:before{content:"";position:absolute;left:0;top:3px;width:16px;height:16px;border-radius:var(--chakra-radii-xs, 4px);cursor:pointer}li.rich-text__listItemUnchecked:before{border:1px solid var(--chakra-colors-border)}li.rich-text__listItemChecked:before{background:var(--chakra-colors-fg);border:1px solid var(--chakra-colors-fg)}li.rich-text__listItemChecked:after{content:"";position:absolute;left:0;top:3px;width:16px;height:16px;cursor:pointer;background-color:var(--chakra-colors-bg);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");-webkit-mask-size:10px 10px;mask-size:10px 10px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}ul.rich-text__ul :where(ul,ol),ul.rich-text__checklist :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){padding-inline-start:var(--rich-text-list-indent)}li.rich-text__nestedListItem{list-style-type:none;padding-inline-start:0}.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:outline-color .14s ease}.rich-text__row{border-radius:var(--chakra-radii-lg)}.draggable-block-demo__row:focus-within{outline:2px solid var(--chakra-colors-blue-200);outline-offset:2px}.draggable-block-demo__content,.rich-text__content{position:relative;flex:1 1 0;transition:border-color .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:1px solid var(--chakra-colors-border);background:var(--chakra-colors-bg);color:var(--chakra-colors-fg-muted);cursor:grab;transition:border-color .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:1px solid var(--chakra-colors-red-200);background:var(--chakra-colors-red-50);color:var(--chakra-colors-red-600);cursor:pointer;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);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);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-4xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg);margin-top:2.5rem;margin-bottom:var(--chakra-spacing-md, 1rem)}.rich-text__h1:first-of-type{margin-top:0}.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-3xl) * 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-lg, 1.5rem);margin-bottom:var(--chakra-spacing-md, 1rem)}.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-lg, 1.5rem);margin-bottom:var(--chakra-spacing-md, 1rem)}.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[data-rich-message=true] .rich-text__quote{margin-top:var(--chakra-spacing-3, .75rem);margin-left:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text[data-rich-message=true] .rich-text__code{margin-top:8px;margin-bottom:8px}.rich-text[data-rich-message=true] .rich-text__h1{font-size:calc(var(--chakra-font-sizes-3xl) * var(--rich-text-font-scale));margin-top:var(--chakra-spacing-5, 1.5rem);margin-bottom:var(--chakra-spacing-4, 1rem)}.rich-text[data-rich-message=true] .rich-text__h2{font-size:calc(var(--chakra-font-sizes-2xl) * var(--rich-text-font-scale));margin-top:var(--chakra-spacing-4, 1rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text[data-rich-message=true] .rich-text__h3{margin-top:var(--chakra-spacing-4, 1rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.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}.rich-text__p--no-margin{margin:0}.code-block-actions{z-index:1001;opacity:.95}.code-block-actions button{border:1px solid var(--chakra-colors-border-subtle)}.floating-text-format-toolbar{display:flex;position:absolute;top:0;left:0;z-index:1000;opacity:0;pointer-events:none;background-color:var(--chakra-colors-bg);border-radius:8px;border:1px solid var(--chakra-colors-border-subtle);transition:opacity .2s;will-change:transform;padding:4px;gap:2px}.floating-text-format-toolbar.active{opacity:1;pointer-events:auto}.floating-text-format-toolbar button[data-active]{background-color:var(--chakra-colors-bg-accent-primary-medium);color:var(--chakra-colors-text-selectable-primary)}.link-editor{position:absolute;top:0;left:0;z-index:1001;width:320px;opacity:0;pointer-events:none;transition:opacity .2s;will-change:transform}.link-editor.active{opacity:1;pointer-events:auto;background-color:var(--chakra-colors-bg);border-radius:8px;border:1px solid var(--chakra-colors-border-subtle)}.link-editor-content{width:100%}.link-editor-url-field{flex:1;min-width:0}
|
|
1
|
+
.rich-text__ltr{text-align:left}.rich-text__rtl{text-align:right}.rich-text{--rich-text-font-scale: 1;--rich-text-list-indent: 1.5rem;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-xl, 1.5rem);margin-left:var(--chakra-spacing-sm, .75rem);margin-bottom:var(--chakra-spacing-xl, 1.5rem);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-code);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:0;margin-top:var(--chakra-spacing-md, 1rem);margin-bottom:var(--chakra-spacing-md, 1rem);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{outline:1px solid var(--chakra-colors-border-subtle);outline-offset:-1px;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;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,ul.rich-text__checklist,ol.rich-text__ol,ol.rich-text__ol1,ol.rich-text__ol2,ol.rich-text__ol3,ol.rich-text__ol4,ol.rich-text__ol5{list-style-position:outside;padding-inline-start:var(--rich-text-list-indent);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;padding-inline-start:var(--chakra-spacing-1, .25rem)}li.rich-text__listItemUnchecked,li.rich-text__listItemChecked{position:relative;list-style-type:none;padding-left:24px;outline:none}li.rich-text__listItemUnchecked:before,li.rich-text__listItemChecked:before{content:"";position:absolute;left:0;top:3px;width:16px;height:16px;border-radius:var(--chakra-radii-xs, 4px);cursor:pointer}li.rich-text__listItemUnchecked:before{border:1px solid var(--chakra-colors-border)}li.rich-text__listItemChecked:before{background:var(--chakra-colors-fg);border:1px solid var(--chakra-colors-fg)}li.rich-text__listItemChecked:after{content:"";position:absolute;left:0;top:3px;width:16px;height:16px;cursor:pointer;background-color:var(--chakra-colors-bg);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");-webkit-mask-size:10px 10px;mask-size:10px 10px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}ul.rich-text__ul :where(ul,ol),ul.rich-text__checklist :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){padding-inline-start:var(--rich-text-list-indent)}li.rich-text__nestedListItem{list-style-type:none;padding-inline-start:0}.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:outline-color .14s ease}.rich-text__row{border-radius:var(--chakra-radii-lg)}.draggable-block-demo__row:focus-within{outline:2px solid var(--chakra-colors-blue-200);outline-offset:2px}.draggable-block-demo__content,.rich-text__content{position:relative;flex:1 1 0;transition:border-color .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:1px solid var(--chakra-colors-border);background:var(--chakra-colors-bg);color:var(--chakra-colors-fg-muted);cursor:grab;transition:border-color .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:1px solid var(--chakra-colors-red-200);background:var(--chakra-colors-red-50);color:var(--chakra-colors-red-600);cursor:pointer;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);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);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-4xl) * var(--rich-text-font-scale));font-weight:var(--chakra-font-weights-medium);line-height:120%;color:var(--chakra-colors-fg);margin-top:2.5rem;margin-bottom:var(--chakra-spacing-md, 1rem)}.rich-text__h1:first-of-type{margin-top:0}.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-3xl) * 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-lg, 1.5rem);margin-bottom:var(--chakra-spacing-md, 1rem)}.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-lg, 1.5rem);margin-bottom:var(--chakra-spacing-md, 1rem)}.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[data-rich-message=true] .rich-text__quote{margin-top:var(--chakra-spacing-3, .75rem);margin-left:var(--chakra-spacing-3, .75rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text[data-rich-message=true] .rich-text__code{margin-top:8px;margin-bottom:8px}.rich-text[data-rich-message=true] .rich-text__h1{font-size:calc(var(--chakra-font-sizes-3xl) * var(--rich-text-font-scale));margin-top:var(--chakra-spacing-5, 1.5rem);margin-bottom:var(--chakra-spacing-4, 1rem)}.rich-text[data-rich-message=true] .rich-text__h2{font-size:calc(var(--chakra-font-sizes-2xl) * var(--rich-text-font-scale));margin-top:var(--chakra-spacing-4, 1rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.rich-text[data-rich-message=true] .rich-text__h3{margin-top:var(--chakra-spacing-4, 1rem);margin-bottom:var(--chakra-spacing-3, .75rem)}.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}.code-block-actions{z-index:1001;opacity:.95}.code-block-actions button{border:1px solid var(--chakra-colors-border-subtle)}.floating-text-format-toolbar{display:flex;position:absolute;top:0;left:0;z-index:1000;opacity:0;pointer-events:none;background-color:var(--chakra-colors-bg);border-radius:8px;border:1px solid var(--chakra-colors-border-subtle);transition:opacity .2s;will-change:transform;padding:4px;gap:2px}.floating-text-format-toolbar.active{opacity:1;pointer-events:auto}.floating-text-format-toolbar button[data-active]{background-color:var(--chakra-colors-bg-accent-primary-medium);color:var(--chakra-colors-text-selectable-primary)}.link-editor{position:absolute;top:0;left:0;z-index:1001;width:320px;opacity:0;pointer-events:none;transition:opacity .2s;will-change:transform}.link-editor.active{opacity:1;pointer-events:auto;background-color:var(--chakra-colors-bg);border-radius:8px;border:1px solid var(--chakra-colors-border-subtle)}.link-editor-content{width:100%}.link-editor-url-field{flex:1;min-width:0}.rich-text__p--no-margin{margin:0}.pstdio-terminal .xterm-viewport{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.4) transparent}.pstdio-terminal .xterm-viewport::-webkit-scrollbar{width:10px}.pstdio-terminal .xterm-viewport::-webkit-scrollbar-track{background:transparent}.pstdio-terminal .xterm-viewport::-webkit-scrollbar-thumb{background-color:#80808066;border:3px solid transparent;background-clip:padding-box;border-radius:9999px}.pstdio-terminal .xterm-viewport::-webkit-scrollbar-thumb:hover{background-color:#80808099}@font-face{font-family:prompt-studio-icons;src:url(data:font/woff2;base64,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) format("woff2");font-weight:400;font-style:normal;font-display:block}.data-table{table-layout:fixed}.data-table.full-width{width:100%;table-layout:auto}.data-table tr{width:fit-content}.data-table.full-width tr{width:100%}.data-table thead th{background-color:var(--chakra-colors-bg-subtle, rgba(13, 17, 23, .02));white-space:nowrap}.data-table .data-table-column-header-row{position:sticky;top:0;z-index:2;height:40px}.data-table .data-table-stats-row{position:sticky;top:40px;z-index:1;height:88px}.data-table thead th>*{max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table .data-table-stats-row th[data-stat-type=histogram],.data-table .data-table-stats-row th[data-stat-type=histogram]>*,.data-table .data-table-stats-row th[data-stat-type=top-values],.data-table .data-table-stats-row th[data-stat-type=top-values]>*{overflow:visible}.data-table tbody tr{height:40px}.data-table tbody td{height:40px;max-height:40px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table tbody td>*{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table tbody td[data-column-id=rowIndex]{background-color:var(--chakra-colors-bg-subtle, rgba(13, 17, 23, .02))}.data-table tbody tr[data-active=true]>td,.data-table tbody tr:hover>td{background-color:var(--chakra-colors-bg-hover, rgba(13, 17, 23, .04))}.data-table tbody tr[data-active=true]>td[data-column-id=rowIndex],.data-table tbody tr:hover>td[data-column-id=rowIndex]{background-color:var(--chakra-colors-bg-hover, rgba(13, 17, 23, .04))}.data-table .resizer{position:absolute;top:0;height:100%;right:0;width:5px;background-color:var(--chakra-colors-border-primary);opacity:.5;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none}.data-table .resizer.isResizing{opacity:1}@media(hover:hover){.data-table .resizer{opacity:0}.data-table *:hover>.resizer{opacity:1}}.data-table .resizer.ltr{right:0}.data-table .resizer.rtl{left:0}
|
|
@@ -24,6 +24,9 @@ export declare const spacing: {
|
|
|
24
24
|
none: {
|
|
25
25
|
value: string;
|
|
26
26
|
};
|
|
27
|
+
"3xs": {
|
|
28
|
+
value: string;
|
|
29
|
+
};
|
|
27
30
|
"2xs": {
|
|
28
31
|
value: string;
|
|
29
32
|
};
|
|
@@ -74,6 +77,57 @@ export declare const sizes: {
|
|
|
74
77
|
"filter-pill": {
|
|
75
78
|
value: string;
|
|
76
79
|
};
|
|
80
|
+
"icon-2xs": {
|
|
81
|
+
value: string;
|
|
82
|
+
};
|
|
83
|
+
"icon-xs": {
|
|
84
|
+
value: string;
|
|
85
|
+
};
|
|
86
|
+
"icon-sm": {
|
|
87
|
+
value: string;
|
|
88
|
+
};
|
|
89
|
+
"icon-md": {
|
|
90
|
+
value: string;
|
|
91
|
+
};
|
|
92
|
+
"tag-color-dot": {
|
|
93
|
+
value: string;
|
|
94
|
+
};
|
|
95
|
+
"tag-icon-cell": {
|
|
96
|
+
value: string;
|
|
97
|
+
};
|
|
98
|
+
"tag-picker": {
|
|
99
|
+
value: string;
|
|
100
|
+
};
|
|
101
|
+
"tag-picker-color-only": {
|
|
102
|
+
value: string;
|
|
103
|
+
};
|
|
104
|
+
"tag-swatch": {
|
|
105
|
+
value: string;
|
|
106
|
+
};
|
|
107
|
+
"tag-swatch-dot": {
|
|
108
|
+
value: string;
|
|
109
|
+
};
|
|
110
|
+
"tag-editor-row": {
|
|
111
|
+
value: string;
|
|
112
|
+
};
|
|
113
|
+
"tag-editor-add-row": {
|
|
114
|
+
value: string;
|
|
115
|
+
};
|
|
116
|
+
"segmented-control-sm": {
|
|
117
|
+
value: string;
|
|
118
|
+
};
|
|
119
|
+
"segmented-control-xs": {
|
|
120
|
+
value: string;
|
|
121
|
+
};
|
|
122
|
+
"segmented-control-item-sm": {
|
|
123
|
+
value: string;
|
|
124
|
+
};
|
|
125
|
+
"segmented-control-item-xs": {
|
|
126
|
+
value: string;
|
|
127
|
+
};
|
|
128
|
+
"tag-action-menu": {
|
|
129
|
+
value: string;
|
|
130
|
+
};
|
|
77
131
|
"view-bar": {
|
|
78
132
|
value: string;
|
|
79
133
|
};
|
|
@@ -81,6 +135,11 @@ export declare const sizes: {
|
|
|
81
135
|
value: string;
|
|
82
136
|
};
|
|
83
137
|
};
|
|
138
|
+
export declare const borderWidths: {
|
|
139
|
+
selection: {
|
|
140
|
+
value: string;
|
|
141
|
+
};
|
|
142
|
+
};
|
|
84
143
|
export declare const radii: {
|
|
85
144
|
none: {
|
|
86
145
|
value: string;
|
|
@@ -14,6 +14,14 @@ export declare const badgeRecipe: import('@chakra-ui/react').RecipeDefinition<{
|
|
|
14
14
|
borderRadius: "2xs";
|
|
15
15
|
justifyContent: "center";
|
|
16
16
|
};
|
|
17
|
+
chip: {
|
|
18
|
+
bg: "bg.subtle";
|
|
19
|
+
color: "fg.muted";
|
|
20
|
+
borderWidth: "1px";
|
|
21
|
+
borderColor: "border";
|
|
22
|
+
borderRadius: "xs";
|
|
23
|
+
fontWeight: "normal";
|
|
24
|
+
};
|
|
17
25
|
outline: {
|
|
18
26
|
color: "colorPalette.fg";
|
|
19
27
|
"--outline-shadow-legacy": "colors.colorPalette.muted";
|