@pstdio/ui 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat-ui.js +691 -637
- package/dist/chat-ui.js.map +1 -1
- package/dist/components/chat-ui/agent-types.d.ts +1 -0
- package/dist/components/chat-ui/components/ai-conversation.d.ts +21 -579
- package/dist/components/chat-ui/components/ai-conversation.test.d.ts +1 -0
- package/dist/components/chat-ui/components/ai-message.d.ts +8 -8
- package/dist/components/chat-ui/components/chat-panel.d.ts +2 -0
- package/dist/components/chat-ui/components/message-parts-renderer.stories.d.ts +1 -0
- package/dist/components/chat-ui/components/message-types.d.ts +8 -0
- package/dist/components/menu-item.d.ts +3 -1
- package/dist/components/menu-item.stories.d.ts +1 -1
- package/dist/components/rich-text/rich-message/rich-message.d.ts +1 -0
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeNode.d.ts +2 -0
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeNode.test.d.ts +1 -0
- package/dist/components/scroll-area.d.ts +1 -0
- package/dist/components/sidebar-next/sidebar-next-header.d.ts +1 -1
- package/dist/components/sidebar-next/sidebar-next.types.d.ts +3 -1
- package/dist/components/sidebar-tree/sidebar-tree.d.ts +2 -1
- package/dist/components/sidebar-tree/sidebar-tree.types.d.ts +9 -1
- package/dist/components/tickets/display-menu.d.ts +15 -0
- package/dist/components/tickets/display-menu.stories.d.ts +6 -0
- package/dist/components/tickets/filter-menu.d.ts +11 -0
- package/dist/components/tickets/filter-menu.stories.d.ts +6 -0
- package/dist/components/tickets/ticket-board.d.ts +7 -0
- package/dist/components/tickets/ticket-grouping.d.ts +22 -0
- package/dist/components/tickets/ticket-grouping.test.d.ts +1 -0
- package/dist/components/tickets/tickets-workspace.d.ts +29 -0
- package/dist/components/tickets/tickets-workspace.stories.d.ts +10 -0
- package/dist/components/tickets/types.d.ts +49 -0
- package/dist/components/tickets/use-workspace-store.d.ts +51 -0
- package/dist/components/tickets/use-workspace-store.test.d.ts +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.js +2077 -1211
- package/dist/index.js.map +1 -1
- package/dist/{rich-message-B2gxL8oy.js → rich-message-C0_i-4Ux.js} +323 -308
- package/dist/rich-message-C0_i-4Ux.js.map +1 -0
- package/dist/rich-text.js +89 -88
- package/dist/rich-text.js.map +1 -1
- package/dist/scroll-area-DZs-GiIp.js +267 -0
- package/dist/scroll-area-DZs-GiIp.js.map +1 -0
- package/dist/style.css +1 -1
- package/package.json +2 -2
- package/dist/empty-state-B8mbv7ZH.js +0 -128
- package/dist/empty-state-B8mbv7ZH.js.map +0 -1
- package/dist/rich-message-B2gxL8oy.js.map +0 -1
package/dist/rich-text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text.js","sources":["../src/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.ts","../src/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/FloatingTextFormatToolbarPlugin.tsx","../src/components/rich-text/collaborative-markdown-editor/awareness-cursors.tsx","../src/components/rich-text/collaborative-markdown-editor/collaborative-markdown-editor.tsx","../src/components/rich-text/markdown-editor/markdown-editor.tsx","../src/components/rich-text/utils/inferResourceType.ts","../src/components/rich-text/utils/mediaType.ts"],"sourcesContent":["const VERTICAL_GAP = 10;\nconst HORIZONTAL_OFFSET = 5;\n\nexport function setFloatingElemPos(\n targetRect: DOMRect | null,\n floatingElem: HTMLElement,\n anchorElem: HTMLElement,\n verticalGap: number = VERTICAL_GAP,\n horizontalOffset: number = HORIZONTAL_OFFSET,\n): void {\n const scrollerElem = anchorElem.parentElement;\n\n if (targetRect === null || !scrollerElem) {\n floatingElem.style.opacity = \"0\";\n floatingElem.style.transform = \"translate(-10000px, -10000px)\";\n return;\n }\n\n const floatingElemRect = floatingElem.getBoundingClientRect();\n const anchorElementRect = anchorElem.getBoundingClientRect();\n const editorScrollerRect = scrollerElem.getBoundingClientRect();\n\n let top = targetRect.top - verticalGap;\n let left = targetRect.left - horizontalOffset;\n\n if (top < editorScrollerRect.top) {\n top += floatingElemRect.height + targetRect.height + verticalGap * 2;\n }\n\n if (left + floatingElemRect.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset;\n }\n\n top -= anchorElementRect.top;\n left -= anchorElementRect.left;\n\n floatingElem.style.opacity = \"1\";\n floatingElem.style.transform = `translate(${left}px, ${top}px)`;\n}\n","import \"./FloatingTextFormatToolbarPlugin.css\";\n\nimport { IconButton, Stack, Text } from \"@chakra-ui/react\";\nimport {\n $isListNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n REMOVE_LIST_COMMAND,\n} from \"@lexical/list\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $createHeadingNode, $isHeadingNode, type HeadingTagType } from \"@lexical/rich-text\";\nimport { $setBlocksType } from \"@lexical/selection\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport {\n $createParagraphNode,\n $getSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_HIGH,\n FORMAT_TEXT_COMMAND,\n type LexicalEditor,\n type LexicalNode,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\";\nimport type React from \"react\";\nimport { type Dispatch, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Tooltip } from \"../../../../tooltip\";\nimport { setFloatingElemPos } from \"../LinkEditorPlugin/utils/setFloatingElemPos\";\n\n// Increase the vertical gap (negative places it below the selection) to avoid overlap\nconst GAP = -4;\n\nconst blockTypeToBlockName = {\n bullet: \"Bulleted List\",\n check: \"Check List\",\n code: \"Code Block\",\n h1: \"Heading 1\",\n h2: \"Heading 2\",\n h3: \"Heading 3\",\n h4: \"Heading 4\",\n h5: \"Heading 5\",\n h6: \"Heading 6\",\n number: \"Numbered List\",\n paragraph: \"Normal\",\n quote: \"Quote\",\n};\n\nconst toKnownBlockType = (type: string) => {\n return type in blockTypeToBlockName ? (type as keyof typeof blockTypeToBlockName) : null;\n};\n\nconst findSelectionElement = (anchorNode: LexicalNode) => {\n const rootMatch =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : $findMatchingParent(anchorNode, (node) => {\n const parent = node.getParent();\n return parent !== null && $isRootOrShadowRoot(parent);\n });\n\n return rootMatch ?? anchorNode.getTopLevelElementOrThrow();\n};\n\nconst resolveBlockTypeFromAnchor = (anchorNode: LexicalNode) => {\n const element = findSelectionElement(anchorNode);\n\n if ($isListNode(element)) {\n return element.getListType() as keyof typeof blockTypeToBlockName;\n }\n\n const parentList = $findMatchingParent(anchorNode, (node) => $isListNode(node));\n if (parentList !== null && $isListNode(parentList)) {\n return parentList.getListType() as keyof typeof blockTypeToBlockName;\n }\n\n const type = $isHeadingNode(element) ? element.getTag() : element.getType();\n return toKnownBlockType(type);\n};\n\nfunction FloatingTextToolbar({\n editor,\n anchorElem,\n isToolbarActive,\n setIsToolbarActive,\n}: {\n editor: LexicalEditor;\n anchorElem: HTMLElement;\n isToolbarActive: boolean;\n setIsToolbarActive: Dispatch<boolean>;\n}): React.JSX.Element {\n const editorRef = useRef<HTMLDivElement | null>(null);\n const [blockType, setBlockType] = useState<keyof typeof blockTypeToBlockName>(\"paragraph\");\n const [isBold, setIsBold] = useState(false);\n const [isItalic, setIsItalic] = useState(false);\n const [isUnderline, setIsUnderline] = useState(false);\n const updateFloatingToolbarRef = useRef<() => boolean | undefined>(() => undefined);\n\n const formatHeading = (headingSize: HeadingTagType) => {\n if (blockType !== headingSize) {\n editor.update(() => {\n const selection = $getSelection();\n $setBlocksType(selection, () => $createHeadingNode(headingSize));\n });\n return;\n }\n\n editor.update(() => {\n const selection = $getSelection();\n $setBlocksType(selection, () => $createParagraphNode());\n });\n };\n\n const formatBulletList = () => {\n if (blockType !== \"bullet\") {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n\n const formatNumberedList = () => {\n if (blockType !== \"number\") {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n\n const updateToolbar = () => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n setIsBold(selection.hasFormat(\"bold\"));\n setIsItalic(selection.hasFormat(\"italic\"));\n setIsUnderline(selection.hasFormat(\"underline\"));\n\n const nextBlockType = resolveBlockTypeFromAnchor(selection.anchor.getNode());\n if (nextBlockType) {\n setBlockType(nextBlockType);\n }\n };\n\n updateFloatingToolbarRef.current = () => {\n const selection = $getSelection();\n const editorElem = editorRef.current;\n const nativeSelection = window.getSelection();\n\n if (editorElem === null) {\n return;\n }\n\n const rootElement = editor.getRootElement();\n\n // Show floating toolbar when there's a non-collapsed text selection\n if (\n selection !== null &&\n $isRangeSelection(selection) &&\n !selection.isCollapsed() &&\n nativeSelection !== null &&\n !nativeSelection.isCollapsed &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode) &&\n editor.isEditable()\n ) {\n const domRect: DOMRect | undefined = nativeSelection.getRangeAt(0).getBoundingClientRect();\n\n if (domRect) {\n // Anchor to the bottom of the selection to avoid overlap with tall selections\n const bottomRect = new DOMRect(domRect.left, domRect.bottom, 0, 0);\n setFloatingElemPos(bottomRect, editorElem, anchorElem, GAP);\n }\n\n setIsToolbarActive(true);\n } else {\n if (rootElement !== null) {\n setFloatingElemPos(null, editorElem, anchorElem);\n }\n setIsToolbarActive(false);\n }\n\n updateToolbar();\n\n return true;\n };\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement;\n\n const update = () => {\n editor.getEditorState().read(() => {\n updateFloatingToolbarRef.current();\n });\n };\n\n window.addEventListener(\"resize\", update);\n\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update);\n }\n\n return () => {\n window.removeEventListener(\"resize\", update);\n if (scrollerElem) {\n scrollerElem.removeEventListener(\"scroll\", update);\n }\n };\n }, [anchorElem, editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateFloatingToolbarRef.current();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload) => {\n updateFloatingToolbarRef.current();\n return false;\n },\n COMMAND_PRIORITY_CRITICAL,\n ),\n editor.registerCommand(\n CLICK_COMMAND,\n (_payload) => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n updateFloatingToolbarRef.current();\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH,\n ),\n );\n }, [editor]);\n\n return (\n <div ref={editorRef} className={`floating-text-format-toolbar ${isToolbarActive ? \"active\" : \"\"}`}>\n <Stack direction=\"row\" gap=\"0.5\" alignItems=\"center\">\n {/* Text formatting buttons */}\n <Tooltip content=\"Bold\">\n <IconButton\n data-active={isBold || undefined}\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\");\n }}\n variant=\"ghost\"\n aria-label=\"Bold\"\n size=\"xs\"\n >\n <Text fontWeight=\"bold\" fontSize=\".75rem\">\n B\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Italic\">\n <IconButton\n data-active={isItalic || undefined}\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\");\n }}\n variant=\"ghost\"\n aria-label=\"Italic\"\n size=\"xs\"\n >\n <Text fontStyle=\"italic\" fontSize=\".75rem\">\n I\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Underline\">\n <IconButton\n data-active={isUnderline || undefined}\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"underline\");\n }}\n variant=\"ghost\"\n aria-label=\"Underline\"\n size=\"xs\"\n >\n <Text textDecoration=\"underline\" fontSize=\".75rem\">\n U\n </Text>\n </IconButton>\n </Tooltip>\n\n {/* Separator */}\n <Stack as=\"span\" height=\"1rem\" mx=\"0.5\">\n <span\n style={{\n borderLeft: \"1px solid\",\n height: \"100%\",\n borderColor: \"var(--chakra-colors-border-muted)\",\n }}\n />\n </Stack>\n\n {/* Heading buttons */}\n <Tooltip content=\"Heading 1\">\n <IconButton\n data-active={blockType === \"h1\" || undefined}\n variant=\"ghost\"\n aria-label=\"Heading 1\"\n size=\"xs\"\n onClick={() => {\n formatHeading(\"h1\");\n }}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n H1\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Heading 2\">\n <IconButton\n data-active={blockType === \"h2\" || undefined}\n variant=\"ghost\"\n aria-label=\"Heading 2\"\n size=\"xs\"\n onClick={() => {\n formatHeading(\"h2\");\n }}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n H2\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Heading 3\">\n <IconButton\n data-active={blockType === \"h3\" || undefined}\n variant=\"ghost\"\n aria-label=\"Heading 3\"\n size=\"xs\"\n onClick={() => {\n formatHeading(\"h3\");\n }}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n H3\n </Text>\n </IconButton>\n </Tooltip>\n\n {/* Separator */}\n <Stack as=\"span\" height=\"1rem\" mx=\"0.5\">\n <span\n style={{\n borderLeft: \"1px solid\",\n height: \"100%\",\n borderColor: \"var(--chakra-colors-border-muted)\",\n }}\n />\n </Stack>\n\n {/* List buttons */}\n <Tooltip content=\"Bulleted List\">\n <IconButton\n data-active={blockType === \"bullet\" || undefined}\n variant=\"ghost\"\n aria-label=\"Bulleted List\"\n size=\"xs\"\n onClick={formatBulletList}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n •\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Numbered List\">\n <IconButton\n data-active={blockType === \"number\" || undefined}\n variant=\"ghost\"\n aria-label=\"Numbered List\"\n size=\"xs\"\n onClick={formatNumberedList}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n 1.\n </Text>\n </IconButton>\n </Tooltip>\n </Stack>\n </div>\n );\n}\n\nfunction useFloatingTextToolbar(editor: LexicalEditor, anchorElem: HTMLElement): React.JSX.Element | null {\n const [isToolbarActive, setIsToolbarActive] = useState(false);\n\n return createPortal(\n <FloatingTextToolbar\n editor={editor}\n anchorElem={anchorElem}\n isToolbarActive={isToolbarActive}\n setIsToolbarActive={setIsToolbarActive}\n />,\n anchorElem,\n );\n}\n\nexport function FloatingTextFormatToolbarPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement;\n}): React.JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n return useFloatingTextToolbar(editor, anchorElem);\n}\n","/**\n * Injects CSS for Yjs awareness cursor rendering in the collaborative editor.\n * @lexical/yjs injects cursor elements with data-* attributes; this styles them.\n */\nexport function AwarenessCursorsCSS() {\n return (\n <style>\n {`\n .collaboration-cursor-container {\n position: relative;\n display: inline;\n }\n\n .collaboration-cursor-caret {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 2px;\n pointer-events: none;\n }\n\n .collaboration-cursor-label {\n position: absolute;\n top: -18px;\n left: -2px;\n padding: 1px 6px;\n font-size: 11px;\n font-weight: 600;\n line-height: 16px;\n white-space: nowrap;\n border-radius: 4px 4px 4px 0;\n color: #fff;\n pointer-events: none;\n user-select: none;\n }\n\n .collaboration-cursor-selection {\n position: absolute;\n pointer-events: none;\n opacity: 0.25;\n }\n `}\n </style>\n );\n}\n","import \"../theme/rich-text-theme.css\";\n\nimport { Box, Flex } from \"@chakra-ui/react\";\nimport { LexicalCollaboration } from \"@lexical/react/LexicalCollaborationContext\";\nimport { CollaborationPluginV2__EXPERIMENTAL } from \"@lexical/react/LexicalCollaborationPlugin\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HorizontalRulePlugin } from \"@lexical/react/LexicalHorizontalRulePlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport type { Provider } from \"@lexical/yjs\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { WebsocketProvider } from \"y-websocket\";\nimport * as Y from \"yjs\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport { editorNodes, editorTheme } from \"../shared/editor-config\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { EquationPlugin } from \"../shared/plugins/EquationPlugin/EquationPlugin\";\nimport { FloatingTextFormatToolbarPlugin } from \"../shared/plugins/FloatingTextFormatToolbarPlugin\";\nimport { AwarenessCursorsCSS } from \"./awareness-cursors\";\n\nexport interface CollaborativeMarkdownEditorProps {\n roomId: string;\n wsUrl: string;\n wsParams?: Record<string, string>;\n userName?: string;\n userColor?: string;\n placeholder?: string;\n}\n\nexport function CollaborativeMarkdownEditor(props: CollaborativeMarkdownEditorProps) {\n const { roomId, wsUrl, wsParams = {}, userName = \"Anonymous\", userColor = \"#30bced\", placeholder } = props;\n\n const editorContainerRef = useRef<HTMLDivElement>(null);\n const [floatingToolbarAnchorElem, setFloatingToolbarAnchorElem] = useState<HTMLElement | null>(null);\n const [synced, setSynced] = useState(false);\n\n // Keep collaborative state stable for the component lifetime.\n const [doc] = useState(() => new Y.Doc());\n const [provider] = useState(() => {\n const nextProvider = new WebsocketProvider(wsUrl, roomId, doc, { params: wsParams, connect: false });\n\n nextProvider.on(\"sync\", (isSynced: boolean) => {\n if (isSynced) setSynced(true);\n });\n\n return nextProvider;\n });\n\n // Manage provider connect/disconnect lifecycle\n useEffect(() => {\n provider.connect();\n\n return () => {\n provider.disconnect();\n };\n }, [provider]);\n\n useEffect(() => {\n setFloatingToolbarAnchorElem(editorContainerRef.current);\n }, []);\n\n const initialConfig = {\n namespace: \"COLLABORATIVE_EDITOR\",\n nodes: editorNodes,\n editorState: null,\n onError: (error: Error) => console.error(error),\n editable: true,\n theme: editorTheme,\n };\n\n return (\n <Flex\n ref={editorContainerRef}\n className=\"rich-text\"\n justifyContent=\"space-between\"\n width=\"100%\"\n maxWidth=\"100%\"\n height=\"100%\"\n position=\"relative\"\n direction=\"column\"\n overflow=\"visible\"\n >\n <AwarenessCursorsCSS />\n\n <LexicalComposer initialConfig={initialConfig}>\n <LexicalCollaboration>\n <CollaborationPluginV2__EXPERIMENTAL\n id={roomId}\n doc={doc}\n provider={provider as unknown as Provider}\n __shouldBootstrapUnsafe={false}\n username={userName}\n cursorColor={userColor}\n />\n <LinkPlugin />\n <ListPlugin />\n <HorizontalRulePlugin />\n <ImportCodeBlocksPlugin />\n <EquationPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth={false} />}\n placeholder={\n synced && placeholder ? (\n <Box\n position=\"absolute\"\n top=\"0\"\n color=\"fg.muted\"\n pointerEvents=\"none\"\n userSelect=\"none\"\n textStyle=\"paragraph/M/regular\"\n >\n {placeholder}\n </Box>\n ) : null\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n {floatingToolbarAnchorElem ? (\n <FloatingTextFormatToolbarPlugin anchorElem={floatingToolbarAnchorElem} />\n ) : null}\n </LexicalCollaboration>\n </LexicalComposer>\n </Flex>\n );\n}\n","import \"../theme/rich-text-theme.css\";\n\nimport { Box, Flex } from \"@chakra-ui/react\";\nimport { $convertFromMarkdownString, $convertToMarkdownString } from \"@lexical/markdown\";\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { HorizontalRulePlugin } from \"@lexical/react/LexicalHorizontalRulePlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { $getRoot } from \"lexical\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport { editorNodes, editorTheme, editorTransformers } from \"../shared/editor-config\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { EquationPlugin } from \"../shared/plugins/EquationPlugin/EquationPlugin\";\nimport { FloatingTextFormatToolbarPlugin } from \"../shared/plugins/FloatingTextFormatToolbarPlugin\";\nimport ToggleEditablePlugin from \"../shared/plugins/ToggleEditablePlugin\";\nimport { TreeViewPlugin } from \"../shared/plugins/TreeViewPlugin/TreeViewPlugin\";\nimport { splitFrontmatter } from \"../utils/markdown\";\n\nexport interface MarkdownEditorProps {\n autoFocus?: boolean;\n debug?: boolean;\n defaultState: string;\n isEditable?: boolean;\n placeholder?: string;\n onChange?: (value: string) => void;\n}\n\nexport function MarkdownEditor(props: MarkdownEditorProps) {\n const { autoFocus = false, debug = false, defaultState = \"\", isEditable = false, placeholder, onChange } = props;\n const { frontmatter, body } = splitFrontmatter(defaultState);\n const shouldTrackChanges = isEditable && Boolean(onChange);\n const editorContainerRef = useRef<HTMLDivElement>(null);\n const [floatingToolbarAnchorElem, setFloatingToolbarAnchorElem] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n setFloatingToolbarAnchorElem(editorContainerRef.current);\n }, []);\n\n const initialConfig = {\n namespace: \"MARKDOWN_EDITOR\",\n nodes: editorNodes,\n editorState: () => {\n return $convertFromMarkdownString(body, editorTransformers, undefined, false);\n },\n onError: (error: Error) => console.error(error),\n editable: isEditable,\n theme: editorTheme,\n };\n\n return (\n <Flex\n ref={editorContainerRef}\n className=\"rich-text\"\n justifyContent=\"space-between\"\n width=\"100%\"\n maxWidth=\"100%\"\n height=\"100%\"\n position=\"relative\"\n direction=\"column\"\n overflow=\"visible\"\n >\n <LexicalComposer initialConfig={initialConfig}>\n {autoFocus ? <AutoFocusPlugin /> : null}\n <HistoryPlugin />\n <LinkPlugin />\n <ListPlugin />\n <HorizontalRulePlugin />\n <ImportCodeBlocksPlugin />\n <EquationPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth={false} />}\n placeholder={\n placeholder ? (\n <Flex\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n pointerEvents=\"none\"\n userSelect=\"none\"\n justifyContent=\"center\"\n >\n <Box width=\"100%\" maxWidth=\"720px\" color=\"fg.muted\" textStyle=\"paragraph/M/regular\">\n {placeholder}\n </Box>\n </Flex>\n ) : null\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n {isEditable && floatingToolbarAnchorElem ? (\n <FloatingTextFormatToolbarPlugin anchorElem={floatingToolbarAnchorElem} />\n ) : null}\n {shouldTrackChanges ? (\n <OnChangePlugin\n ignoreSelectionChange\n ignoreHistoryMergeTagChange={false}\n onChange={(editorState) => {\n editorState.read(() => {\n const root = $getRoot();\n const markdownBody = $convertToMarkdownString(editorTransformers, root);\n onChange?.(frontmatter + markdownBody);\n });\n }}\n />\n ) : null}\n <ToggleEditablePlugin isEditable={isEditable} />\n {debug && <TreeViewPlugin />}\n </LexicalComposer>\n </Flex>\n );\n}\n","import type { ResourceType } from \"../types\";\n\nexport function inferResourceTypeFromMediaType(mediaType: string) {\n const normalized = mediaType.toLowerCase().trim();\n if (!normalized) return \"text\";\n\n if (normalized.startsWith(\"image/\")) return \"image\";\n if (normalized === \"application/pdf\") return \"pdf\";\n if (normalized === \"text/markdown\") return \"markdown\";\n if (normalized === \"text/csv\" || normalized === \"text/tab-separated-values\") return \"table\";\n if (normalized === \"application/json\") return \"json\";\n if (normalized.startsWith(\"text/\")) return \"text\";\n if (normalized.startsWith(\"application/\")) return \"text\";\n\n const fallback: ResourceType = \"text\";\n return fallback;\n}\n","const extensionToMediaType: Record<string, string> = {\n csv: \"text/csv\",\n tsv: \"text/tab-separated-values\",\n json: \"application/json\",\n md: \"text/markdown\",\n markdown: \"text/markdown\",\n txt: \"text/plain\",\n pdf: \"application/pdf\",\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n gif: \"image/gif\",\n svg: \"image/svg+xml\",\n webp: \"image/webp\",\n mp4: \"video/mp4\",\n mov: \"video/quicktime\",\n ts: \"text/typescript\",\n tsx: \"text/typescript\",\n js: \"text/javascript\",\n jsx: \"text/javascript\",\n sql: \"text/x-sql\",\n yml: \"text/yaml\",\n yaml: \"text/yaml\",\n};\n\nexport function mediaTypeFromPath(path: string) {\n const cleaned = path.split(\"?\")[0]?.split(\"#\")[0] ?? \"\";\n const ext = cleaned.split(\".\").pop()?.toLowerCase();\n if (!ext) return null;\n return extensionToMediaType[ext] ?? null;\n}\n"],"names":["VERTICAL_GAP","HORIZONTAL_OFFSET","setFloatingElemPos","targetRect","floatingElem","anchorElem","verticalGap","horizontalOffset","scrollerElem","parentElement","style","opacity","transform","floatingElemRect","getBoundingClientRect","anchorElementRect","editorScrollerRect","top","left","height","width","right","GAP","blockTypeToBlockName","bullet","check","code","h1","h2","h3","h4","h5","h6","number","paragraph","quote","toKnownBlockType","type","findSelectionElement","anchorNode","getKey","$findMatchingParent","node","parent","getParent","$isRootOrShadowRoot","getTopLevelElementOrThrow","resolveBlockTypeFromAnchor","element","$isListNode","getListType","parentList","$isHeadingNode","getTag","getType","FloatingTextToolbar","editor","isToolbarActive","setIsToolbarActive","editorRef","useRef","blockType","setBlockType","useState","isBold","setIsBold","isItalic","setIsItalic","isUnderline","setIsUnderline","updateFloatingToolbarRef","formatHeading","headingSize","update","selection","$getSelection","$setBlocksType","$createHeadingNode","$createParagraphNode","formatBulletList","dispatchCommand","INSERT_UNORDERED_LIST_COMMAND","undefined","REMOVE_LIST_COMMAND","formatNumberedList","INSERT_ORDERED_LIST_COMMAND","updateToolbar","$isRangeSelection","hasFormat","nextBlockType","anchor","getNode","current","editorElem","nativeSelection","window","getSelection","rootElement","getRootElement","isCollapsed","contains","isEditable","domRect","getRangeAt","bottomRect","DOMRect","bottom","useEffect","getEditorState","read","addEventListener","removeEventListener","mergeRegister","registerUpdateListener","editorState","registerCommand","SELECTION_CHANGE_COMMAND","_payload","COMMAND_PRIORITY_CRITICAL","CLICK_COMMAND","COMMAND_PRIORITY_HIGH","Stack","jsx","Tooltip","IconButton","FORMAT_TEXT_COMMAND","Text","borderLeft","borderColor","useFloatingTextToolbar","$","_c","t0","t1","createPortal","FloatingTextFormatToolbarPlugin","document","body","useLexicalComposerContext","AwarenessCursorsCSS","Symbol","for","CollaborativeMarkdownEditor","props","roomId","wsUrl","wsParams","userName","userColor","t2","placeholder","t3","editorContainerRef","floatingToolbarAnchorElem","setFloatingToolbarAnchorElem","synced","setSynced","doc","_temp","t4","nextProvider","WebsocketProvider","params","connect","on","isSynced","provider","t5","t6","disconnect","t7","t8","t9","namespace","nodes","editorNodes","onError","_temp2","editable","theme","editorTheme","initialConfig","t10","t11","t12","CollaborationPluginV2__EXPERIMENTAL","t13","t14","t15","t16","t17","LinkPlugin","ListPlugin","HorizontalRulePlugin","ImportCodeBlocksPlugin","EquationPlugin","t18","ContentEditable","t19","Box","t20","RichTextPlugin","LexicalErrorBoundary","t21","t22","Flex","LexicalComposer","jsxs","LexicalCollaboration","error","console","Y","Doc","MarkdownEditor","autoFocus","debug","defaultState","onChange","splitFrontmatter","frontmatter","shouldTrackChanges","Boolean","$convertFromMarkdownString","editorTransformers","AutoFocusPlugin","HistoryPlugin","OnChangePlugin","root","$getRoot","markdownBody","$convertToMarkdownString","ToggleEditablePlugin","TreeViewPlugin","t23","inferResourceTypeFromMediaType","mediaType","normalized","toLowerCase","trim","startsWith","extensionToMediaType","csv","tsv","json","md","markdown","txt","pdf","png","jpg","jpeg","gif","svg","webp","mp4","mov","ts","tsx","js","sql","yml","yaml","mediaTypeFromPath","path","ext","split","pop"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rich-text.js","sources":["../src/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.ts","../src/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/FloatingTextFormatToolbarPlugin.tsx","../src/components/rich-text/collaborative-markdown-editor/awareness-cursors.tsx","../src/components/rich-text/collaborative-markdown-editor/collaborative-markdown-editor.tsx","../src/components/rich-text/markdown-editor/markdown-editor.tsx","../src/components/rich-text/utils/inferResourceType.ts","../src/components/rich-text/utils/mediaType.ts"],"sourcesContent":["const VERTICAL_GAP = 10;\nconst HORIZONTAL_OFFSET = 5;\n\nexport function setFloatingElemPos(\n targetRect: DOMRect | null,\n floatingElem: HTMLElement,\n anchorElem: HTMLElement,\n verticalGap: number = VERTICAL_GAP,\n horizontalOffset: number = HORIZONTAL_OFFSET,\n): void {\n const scrollerElem = anchorElem.parentElement;\n\n if (targetRect === null || !scrollerElem) {\n floatingElem.style.opacity = \"0\";\n floatingElem.style.transform = \"translate(-10000px, -10000px)\";\n return;\n }\n\n const floatingElemRect = floatingElem.getBoundingClientRect();\n const anchorElementRect = anchorElem.getBoundingClientRect();\n const editorScrollerRect = scrollerElem.getBoundingClientRect();\n\n let top = targetRect.top - verticalGap;\n let left = targetRect.left - horizontalOffset;\n\n if (top < editorScrollerRect.top) {\n top += floatingElemRect.height + targetRect.height + verticalGap * 2;\n }\n\n if (left + floatingElemRect.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset;\n }\n\n top -= anchorElementRect.top;\n left -= anchorElementRect.left;\n\n floatingElem.style.opacity = \"1\";\n floatingElem.style.transform = `translate(${left}px, ${top}px)`;\n}\n","import \"./FloatingTextFormatToolbarPlugin.css\";\n\nimport { IconButton, Stack, Text } from \"@chakra-ui/react\";\nimport {\n $isListNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n REMOVE_LIST_COMMAND,\n} from \"@lexical/list\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $createHeadingNode, $isHeadingNode, type HeadingTagType } from \"@lexical/rich-text\";\nimport { $setBlocksType } from \"@lexical/selection\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport {\n $createParagraphNode,\n $getSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_HIGH,\n FORMAT_TEXT_COMMAND,\n type LexicalEditor,\n type LexicalNode,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\";\nimport { List, ListOrdered } from \"lucide-react\";\nimport type React from \"react\";\nimport { type Dispatch, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Tooltip } from \"../../../../tooltip\";\nimport { setFloatingElemPos } from \"../LinkEditorPlugin/utils/setFloatingElemPos\";\n\n// Increase the vertical gap (negative places it below the selection) to avoid overlap\nconst GAP = -4;\n\nconst blockTypeToBlockName = {\n bullet: \"Bulleted List\",\n check: \"Check List\",\n code: \"Code Block\",\n h1: \"Heading 1\",\n h2: \"Heading 2\",\n h3: \"Heading 3\",\n h4: \"Heading 4\",\n h5: \"Heading 5\",\n h6: \"Heading 6\",\n number: \"Numbered List\",\n paragraph: \"Normal\",\n quote: \"Quote\",\n};\n\nconst toKnownBlockType = (type: string) => {\n return type in blockTypeToBlockName ? (type as keyof typeof blockTypeToBlockName) : null;\n};\n\nconst findSelectionElement = (anchorNode: LexicalNode) => {\n const rootMatch =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : $findMatchingParent(anchorNode, (node) => {\n const parent = node.getParent();\n return parent !== null && $isRootOrShadowRoot(parent);\n });\n\n return rootMatch ?? anchorNode.getTopLevelElementOrThrow();\n};\n\nconst resolveBlockTypeFromAnchor = (anchorNode: LexicalNode) => {\n const element = findSelectionElement(anchorNode);\n\n if ($isListNode(element)) {\n return element.getListType() as keyof typeof blockTypeToBlockName;\n }\n\n const parentList = $findMatchingParent(anchorNode, (node) => $isListNode(node));\n if (parentList !== null && $isListNode(parentList)) {\n return parentList.getListType() as keyof typeof blockTypeToBlockName;\n }\n\n const type = $isHeadingNode(element) ? element.getTag() : element.getType();\n return toKnownBlockType(type);\n};\n\nfunction FloatingTextToolbar({\n editor,\n anchorElem,\n isToolbarActive,\n setIsToolbarActive,\n}: {\n editor: LexicalEditor;\n anchorElem: HTMLElement;\n isToolbarActive: boolean;\n setIsToolbarActive: Dispatch<boolean>;\n}): React.JSX.Element {\n const editorRef = useRef<HTMLDivElement | null>(null);\n const [blockType, setBlockType] = useState<keyof typeof blockTypeToBlockName>(\"paragraph\");\n const [isBold, setIsBold] = useState(false);\n const [isItalic, setIsItalic] = useState(false);\n const [isUnderline, setIsUnderline] = useState(false);\n const updateFloatingToolbarRef = useRef<() => boolean | undefined>(() => undefined);\n\n const formatHeading = (headingSize: HeadingTagType) => {\n if (blockType !== headingSize) {\n editor.update(() => {\n const selection = $getSelection();\n $setBlocksType(selection, () => $createHeadingNode(headingSize));\n });\n return;\n }\n\n editor.update(() => {\n const selection = $getSelection();\n $setBlocksType(selection, () => $createParagraphNode());\n });\n };\n\n const formatBulletList = () => {\n if (blockType !== \"bullet\") {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n\n const formatNumberedList = () => {\n if (blockType !== \"number\") {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n\n const updateToolbar = () => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n setIsBold(selection.hasFormat(\"bold\"));\n setIsItalic(selection.hasFormat(\"italic\"));\n setIsUnderline(selection.hasFormat(\"underline\"));\n\n const nextBlockType = resolveBlockTypeFromAnchor(selection.anchor.getNode());\n if (nextBlockType) {\n setBlockType(nextBlockType);\n }\n };\n\n updateFloatingToolbarRef.current = () => {\n const selection = $getSelection();\n const editorElem = editorRef.current;\n const nativeSelection = window.getSelection();\n\n if (editorElem === null) {\n return;\n }\n\n const rootElement = editor.getRootElement();\n\n // Show floating toolbar when there's a non-collapsed text selection\n if (\n selection !== null &&\n $isRangeSelection(selection) &&\n !selection.isCollapsed() &&\n nativeSelection !== null &&\n !nativeSelection.isCollapsed &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode) &&\n editor.isEditable()\n ) {\n const domRect: DOMRect | undefined = nativeSelection.getRangeAt(0).getBoundingClientRect();\n\n if (domRect) {\n // Anchor to the bottom of the selection to avoid overlap with tall selections\n const bottomRect = new DOMRect(domRect.left, domRect.bottom, 0, 0);\n setFloatingElemPos(bottomRect, editorElem, anchorElem, GAP);\n }\n\n setIsToolbarActive(true);\n } else {\n if (rootElement !== null) {\n setFloatingElemPos(null, editorElem, anchorElem);\n }\n setIsToolbarActive(false);\n }\n\n updateToolbar();\n\n return true;\n };\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement;\n\n const update = () => {\n editor.getEditorState().read(() => {\n updateFloatingToolbarRef.current();\n });\n };\n\n window.addEventListener(\"resize\", update);\n\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update);\n }\n\n return () => {\n window.removeEventListener(\"resize\", update);\n if (scrollerElem) {\n scrollerElem.removeEventListener(\"scroll\", update);\n }\n };\n }, [anchorElem, editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateFloatingToolbarRef.current();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload) => {\n updateFloatingToolbarRef.current();\n return false;\n },\n COMMAND_PRIORITY_CRITICAL,\n ),\n editor.registerCommand(\n CLICK_COMMAND,\n (_payload) => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n updateFloatingToolbarRef.current();\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH,\n ),\n );\n }, [editor]);\n\n return (\n <div ref={editorRef} className={`floating-text-format-toolbar ${isToolbarActive ? \"active\" : \"\"}`}>\n <Stack direction=\"row\" gap=\"0.5\" alignItems=\"center\">\n {/* Text formatting buttons */}\n <Tooltip content=\"Bold\">\n <IconButton\n data-active={isBold || undefined}\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\");\n }}\n variant=\"ghost\"\n aria-label=\"Bold\"\n size=\"xs\"\n >\n <Text fontWeight=\"bold\" fontSize=\".75rem\">\n B\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Italic\">\n <IconButton\n data-active={isItalic || undefined}\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\");\n }}\n variant=\"ghost\"\n aria-label=\"Italic\"\n size=\"xs\"\n >\n <Text fontStyle=\"italic\" fontSize=\".75rem\">\n I\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Underline\">\n <IconButton\n data-active={isUnderline || undefined}\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"underline\");\n }}\n variant=\"ghost\"\n aria-label=\"Underline\"\n size=\"xs\"\n >\n <Text textDecoration=\"underline\" fontSize=\".75rem\">\n U\n </Text>\n </IconButton>\n </Tooltip>\n\n {/* Separator */}\n <Stack as=\"span\" height=\"1rem\" mx=\"0.5\">\n <span\n style={{\n borderLeft: \"1px solid\",\n height: \"100%\",\n borderColor: \"var(--chakra-colors-border-muted)\",\n }}\n />\n </Stack>\n\n {/* Heading buttons */}\n <Tooltip content=\"Heading 1\">\n <IconButton\n data-active={blockType === \"h1\" || undefined}\n variant=\"ghost\"\n aria-label=\"Heading 1\"\n size=\"xs\"\n onClick={() => {\n formatHeading(\"h1\");\n }}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n H1\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Heading 2\">\n <IconButton\n data-active={blockType === \"h2\" || undefined}\n variant=\"ghost\"\n aria-label=\"Heading 2\"\n size=\"xs\"\n onClick={() => {\n formatHeading(\"h2\");\n }}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n H2\n </Text>\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Heading 3\">\n <IconButton\n data-active={blockType === \"h3\" || undefined}\n variant=\"ghost\"\n aria-label=\"Heading 3\"\n size=\"xs\"\n onClick={() => {\n formatHeading(\"h3\");\n }}\n >\n <Text fontWeight=\"thin\" fontSize=\".8rem\">\n H3\n </Text>\n </IconButton>\n </Tooltip>\n\n {/* Separator */}\n <Stack as=\"span\" height=\"1rem\" mx=\"0.5\">\n <span\n style={{\n borderLeft: \"1px solid\",\n height: \"100%\",\n borderColor: \"var(--chakra-colors-border-muted)\",\n }}\n />\n </Stack>\n\n {/* List buttons */}\n <Tooltip content=\"Bulleted List\">\n <IconButton\n data-active={blockType === \"bullet\" || undefined}\n variant=\"ghost\"\n aria-label=\"Bulleted List\"\n size=\"xs\"\n onClick={formatBulletList}\n >\n <List size={14} />\n </IconButton>\n </Tooltip>\n <Tooltip content=\"Numbered List\">\n <IconButton\n data-active={blockType === \"number\" || undefined}\n variant=\"ghost\"\n aria-label=\"Numbered List\"\n size=\"xs\"\n onClick={formatNumberedList}\n >\n <ListOrdered size={14} />\n </IconButton>\n </Tooltip>\n </Stack>\n </div>\n );\n}\n\nfunction useFloatingTextToolbar(editor: LexicalEditor, anchorElem: HTMLElement): React.JSX.Element | null {\n const [isToolbarActive, setIsToolbarActive] = useState(false);\n\n return createPortal(\n <FloatingTextToolbar\n editor={editor}\n anchorElem={anchorElem}\n isToolbarActive={isToolbarActive}\n setIsToolbarActive={setIsToolbarActive}\n />,\n anchorElem,\n );\n}\n\nexport function FloatingTextFormatToolbarPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement;\n}): React.JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n return useFloatingTextToolbar(editor, anchorElem);\n}\n","/**\n * Injects CSS for Yjs awareness cursor rendering in the collaborative editor.\n * @lexical/yjs injects cursor elements with data-* attributes; this styles them.\n */\nexport function AwarenessCursorsCSS() {\n return (\n <style>\n {`\n .collaboration-cursor-container {\n position: relative;\n display: inline;\n }\n\n .collaboration-cursor-caret {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 2px;\n pointer-events: none;\n }\n\n .collaboration-cursor-label {\n position: absolute;\n top: -18px;\n left: -2px;\n padding: 1px 6px;\n font-size: 11px;\n font-weight: 600;\n line-height: 16px;\n white-space: nowrap;\n border-radius: 4px 4px 4px 0;\n color: #fff;\n pointer-events: none;\n user-select: none;\n }\n\n .collaboration-cursor-selection {\n position: absolute;\n pointer-events: none;\n opacity: 0.25;\n }\n `}\n </style>\n );\n}\n","import \"../theme/rich-text-theme.css\";\n\nimport { Box, Flex } from \"@chakra-ui/react\";\nimport { LexicalCollaboration } from \"@lexical/react/LexicalCollaborationContext\";\nimport { CollaborationPluginV2__EXPERIMENTAL } from \"@lexical/react/LexicalCollaborationPlugin\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HorizontalRulePlugin } from \"@lexical/react/LexicalHorizontalRulePlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport type { Provider } from \"@lexical/yjs\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { WebsocketProvider } from \"y-websocket\";\nimport * as Y from \"yjs\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport { editorNodes, editorTheme } from \"../shared/editor-config\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { EquationPlugin } from \"../shared/plugins/EquationPlugin/EquationPlugin\";\nimport { FloatingTextFormatToolbarPlugin } from \"../shared/plugins/FloatingTextFormatToolbarPlugin\";\nimport { AwarenessCursorsCSS } from \"./awareness-cursors\";\n\nexport interface CollaborativeMarkdownEditorProps {\n roomId: string;\n wsUrl: string;\n wsParams?: Record<string, string>;\n userName?: string;\n userColor?: string;\n placeholder?: string;\n}\n\nexport function CollaborativeMarkdownEditor(props: CollaborativeMarkdownEditorProps) {\n const { roomId, wsUrl, wsParams = {}, userName = \"Anonymous\", userColor = \"#30bced\", placeholder } = props;\n\n const editorContainerRef = useRef<HTMLDivElement>(null);\n const [floatingToolbarAnchorElem, setFloatingToolbarAnchorElem] = useState<HTMLElement | null>(null);\n const [synced, setSynced] = useState(false);\n\n // Keep collaborative state stable for the component lifetime.\n const [doc] = useState(() => new Y.Doc());\n const [provider] = useState(() => {\n const nextProvider = new WebsocketProvider(wsUrl, roomId, doc, { params: wsParams, connect: false });\n\n nextProvider.on(\"sync\", (isSynced: boolean) => {\n if (isSynced) setSynced(true);\n });\n\n return nextProvider;\n });\n\n // Manage provider connect/disconnect lifecycle\n useEffect(() => {\n provider.connect();\n\n return () => {\n provider.disconnect();\n };\n }, [provider]);\n\n useEffect(() => {\n setFloatingToolbarAnchorElem(editorContainerRef.current);\n }, []);\n\n const initialConfig = {\n namespace: \"COLLABORATIVE_EDITOR\",\n nodes: editorNodes,\n editorState: null,\n onError: (error: Error) => console.error(error),\n editable: true,\n theme: editorTheme,\n };\n\n return (\n <Flex\n ref={editorContainerRef}\n className=\"rich-text\"\n justifyContent=\"space-between\"\n width=\"100%\"\n maxWidth=\"100%\"\n height=\"100%\"\n position=\"relative\"\n direction=\"column\"\n overflow=\"visible\"\n >\n <AwarenessCursorsCSS />\n\n <LexicalComposer initialConfig={initialConfig}>\n <LexicalCollaboration>\n <CollaborationPluginV2__EXPERIMENTAL\n id={roomId}\n doc={doc}\n provider={provider as unknown as Provider}\n __shouldBootstrapUnsafe={false}\n username={userName}\n cursorColor={userColor}\n />\n <LinkPlugin />\n <ListPlugin />\n <HorizontalRulePlugin />\n <ImportCodeBlocksPlugin />\n <EquationPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth={false} />}\n placeholder={\n synced && placeholder ? (\n <Box\n position=\"absolute\"\n top=\"0\"\n color=\"fg.muted\"\n pointerEvents=\"none\"\n userSelect=\"none\"\n textStyle=\"paragraph/M/regular\"\n >\n {placeholder}\n </Box>\n ) : null\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n {floatingToolbarAnchorElem ? (\n <FloatingTextFormatToolbarPlugin anchorElem={floatingToolbarAnchorElem} />\n ) : null}\n </LexicalCollaboration>\n </LexicalComposer>\n </Flex>\n );\n}\n","import \"../theme/rich-text-theme.css\";\n\nimport { Box, Flex } from \"@chakra-ui/react\";\nimport { $convertFromMarkdownString, $convertToMarkdownString } from \"@lexical/markdown\";\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { HorizontalRulePlugin } from \"@lexical/react/LexicalHorizontalRulePlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { $getRoot } from \"lexical\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ContentEditable } from \"../shared/components/content-editable\";\nimport { editorNodes, editorTheme, editorTransformers } from \"../shared/editor-config\";\nimport { ImportCodeBlocksPlugin } from \"../shared/plugins/CodePlugin/CodeBlockPlugin\";\nimport { EquationPlugin } from \"../shared/plugins/EquationPlugin/EquationPlugin\";\nimport { FloatingTextFormatToolbarPlugin } from \"../shared/plugins/FloatingTextFormatToolbarPlugin\";\nimport ToggleEditablePlugin from \"../shared/plugins/ToggleEditablePlugin\";\nimport { TreeViewPlugin } from \"../shared/plugins/TreeViewPlugin/TreeViewPlugin\";\nimport { splitFrontmatter } from \"../utils/markdown\";\n\nexport interface MarkdownEditorProps {\n autoFocus?: boolean;\n debug?: boolean;\n defaultState: string;\n isEditable?: boolean;\n placeholder?: string;\n onChange?: (value: string) => void;\n}\n\nexport function MarkdownEditor(props: MarkdownEditorProps) {\n const { autoFocus = false, debug = false, defaultState = \"\", isEditable = false, placeholder, onChange } = props;\n const { frontmatter, body } = splitFrontmatter(defaultState);\n const shouldTrackChanges = isEditable && Boolean(onChange);\n const editorContainerRef = useRef<HTMLDivElement>(null);\n const [floatingToolbarAnchorElem, setFloatingToolbarAnchorElem] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n setFloatingToolbarAnchorElem(editorContainerRef.current);\n }, []);\n\n const initialConfig = {\n namespace: \"MARKDOWN_EDITOR\",\n nodes: editorNodes,\n editorState: () => {\n return $convertFromMarkdownString(body, editorTransformers, undefined, false);\n },\n onError: (error: Error) => console.error(error),\n editable: isEditable,\n theme: editorTheme,\n };\n\n return (\n <Flex\n ref={editorContainerRef}\n className=\"rich-text\"\n justifyContent=\"space-between\"\n width=\"100%\"\n maxWidth=\"100%\"\n height=\"100%\"\n position=\"relative\"\n direction=\"column\"\n overflow=\"visible\"\n >\n <LexicalComposer initialConfig={initialConfig}>\n {autoFocus ? <AutoFocusPlugin /> : null}\n <HistoryPlugin />\n <LinkPlugin />\n <ListPlugin />\n <HorizontalRulePlugin />\n <ImportCodeBlocksPlugin />\n <EquationPlugin />\n <RichTextPlugin\n contentEditable={<ContentEditable fullWidth={false} />}\n placeholder={\n placeholder ? (\n <Flex\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n pointerEvents=\"none\"\n userSelect=\"none\"\n justifyContent=\"center\"\n >\n <Box width=\"100%\" maxWidth=\"720px\" color=\"fg.muted\" textStyle=\"paragraph/M/regular\">\n {placeholder}\n </Box>\n </Flex>\n ) : null\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n {isEditable && floatingToolbarAnchorElem ? (\n <FloatingTextFormatToolbarPlugin anchorElem={floatingToolbarAnchorElem} />\n ) : null}\n {shouldTrackChanges ? (\n <OnChangePlugin\n ignoreSelectionChange\n ignoreHistoryMergeTagChange={false}\n onChange={(editorState) => {\n editorState.read(() => {\n const root = $getRoot();\n const markdownBody = $convertToMarkdownString(editorTransformers, root);\n onChange?.(frontmatter + markdownBody);\n });\n }}\n />\n ) : null}\n <ToggleEditablePlugin isEditable={isEditable} />\n {debug && <TreeViewPlugin />}\n </LexicalComposer>\n </Flex>\n );\n}\n","import type { ResourceType } from \"../types\";\n\nexport function inferResourceTypeFromMediaType(mediaType: string) {\n const normalized = mediaType.toLowerCase().trim();\n if (!normalized) return \"text\";\n\n if (normalized.startsWith(\"image/\")) return \"image\";\n if (normalized === \"application/pdf\") return \"pdf\";\n if (normalized === \"text/markdown\") return \"markdown\";\n if (normalized === \"text/csv\" || normalized === \"text/tab-separated-values\") return \"table\";\n if (normalized === \"application/json\") return \"json\";\n if (normalized.startsWith(\"text/\")) return \"text\";\n if (normalized.startsWith(\"application/\")) return \"text\";\n\n const fallback: ResourceType = \"text\";\n return fallback;\n}\n","const extensionToMediaType: Record<string, string> = {\n csv: \"text/csv\",\n tsv: \"text/tab-separated-values\",\n json: \"application/json\",\n md: \"text/markdown\",\n markdown: \"text/markdown\",\n txt: \"text/plain\",\n pdf: \"application/pdf\",\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n gif: \"image/gif\",\n svg: \"image/svg+xml\",\n webp: \"image/webp\",\n mp4: \"video/mp4\",\n mov: \"video/quicktime\",\n ts: \"text/typescript\",\n tsx: \"text/typescript\",\n js: \"text/javascript\",\n jsx: \"text/javascript\",\n sql: \"text/x-sql\",\n yml: \"text/yaml\",\n yaml: \"text/yaml\",\n};\n\nexport function mediaTypeFromPath(path: string) {\n const cleaned = path.split(\"?\")[0]?.split(\"#\")[0] ?? \"\";\n const ext = cleaned.split(\".\").pop()?.toLowerCase();\n if (!ext) return null;\n return extensionToMediaType[ext] ?? null;\n}\n"],"names":["VERTICAL_GAP","HORIZONTAL_OFFSET","setFloatingElemPos","targetRect","floatingElem","anchorElem","verticalGap","horizontalOffset","scrollerElem","parentElement","style","opacity","transform","floatingElemRect","getBoundingClientRect","anchorElementRect","editorScrollerRect","top","left","height","width","right","GAP","blockTypeToBlockName","bullet","check","code","h1","h2","h3","h4","h5","h6","number","paragraph","quote","toKnownBlockType","type","findSelectionElement","anchorNode","getKey","$findMatchingParent","node","parent","getParent","$isRootOrShadowRoot","getTopLevelElementOrThrow","resolveBlockTypeFromAnchor","element","$isListNode","getListType","parentList","$isHeadingNode","getTag","getType","FloatingTextToolbar","editor","isToolbarActive","setIsToolbarActive","editorRef","useRef","blockType","setBlockType","useState","isBold","setIsBold","isItalic","setIsItalic","isUnderline","setIsUnderline","updateFloatingToolbarRef","formatHeading","headingSize","update","selection","$getSelection","$setBlocksType","$createHeadingNode","$createParagraphNode","formatBulletList","dispatchCommand","INSERT_UNORDERED_LIST_COMMAND","undefined","REMOVE_LIST_COMMAND","formatNumberedList","INSERT_ORDERED_LIST_COMMAND","updateToolbar","$isRangeSelection","hasFormat","nextBlockType","anchor","getNode","current","editorElem","nativeSelection","window","getSelection","rootElement","getRootElement","isCollapsed","contains","isEditable","domRect","getRangeAt","bottomRect","DOMRect","bottom","useEffect","getEditorState","read","addEventListener","removeEventListener","mergeRegister","registerUpdateListener","editorState","registerCommand","SELECTION_CHANGE_COMMAND","_payload","COMMAND_PRIORITY_CRITICAL","CLICK_COMMAND","COMMAND_PRIORITY_HIGH","Stack","jsx","Tooltip","IconButton","FORMAT_TEXT_COMMAND","Text","borderLeft","borderColor","List","ListOrdered","useFloatingTextToolbar","$","_c","t0","t1","createPortal","FloatingTextFormatToolbarPlugin","document","body","useLexicalComposerContext","AwarenessCursorsCSS","Symbol","for","CollaborativeMarkdownEditor","props","roomId","wsUrl","wsParams","userName","userColor","t2","placeholder","t3","editorContainerRef","floatingToolbarAnchorElem","setFloatingToolbarAnchorElem","synced","setSynced","doc","_temp","t4","nextProvider","WebsocketProvider","params","connect","on","isSynced","provider","t5","t6","disconnect","t7","t8","t9","namespace","nodes","editorNodes","onError","_temp2","editable","theme","editorTheme","initialConfig","t10","t11","t12","CollaborationPluginV2__EXPERIMENTAL","t13","t14","t15","t16","t17","LinkPlugin","ListPlugin","HorizontalRulePlugin","ImportCodeBlocksPlugin","EquationPlugin","t18","ContentEditable","t19","Box","t20","RichTextPlugin","LexicalErrorBoundary","t21","t22","Flex","LexicalComposer","jsxs","LexicalCollaboration","error","console","Y","Doc","MarkdownEditor","autoFocus","debug","defaultState","onChange","splitFrontmatter","frontmatter","shouldTrackChanges","Boolean","$convertFromMarkdownString","editorTransformers","AutoFocusPlugin","HistoryPlugin","OnChangePlugin","root","$getRoot","markdownBody","$convertToMarkdownString","ToggleEditablePlugin","TreeViewPlugin","t23","inferResourceTypeFromMediaType","mediaType","normalized","toLowerCase","trim","startsWith","extensionToMediaType","csv","tsv","json","md","markdown","txt","pdf","png","jpg","jpeg","gif","svg","webp","mp4","mov","ts","tsx","js","sql","yml","yaml","mediaTypeFromPath","path","ext","split","pop"],"mappings":"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"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { jsx as p, jsxs as $ } from "react/jsx-runtime";
|
|
2
|
+
import { c as k } from "react/compiler-runtime";
|
|
3
|
+
import { Span as B, EmptyState as E, VStack as A, ScrollArea as R } from "@chakra-ui/react";
|
|
4
|
+
import { Editor as M, DiffEditor as L } from "@monaco-editor/react";
|
|
5
|
+
import * as _ from "react";
|
|
6
|
+
const D = {
|
|
7
|
+
base: "vs-dark",
|
|
8
|
+
inherit: !0,
|
|
9
|
+
rules: [],
|
|
10
|
+
colors: {
|
|
11
|
+
"editor.background": "#0a0d15",
|
|
12
|
+
"editor.foreground": "#f5f5f5",
|
|
13
|
+
"editor.lineHighlightBackground": "#22252C",
|
|
14
|
+
"editorCursor.foreground": "#A7A7A7",
|
|
15
|
+
"editorWhitespace.foreground": "#3B3B3B",
|
|
16
|
+
"editorIndentGuide.background": "#404040",
|
|
17
|
+
"editorIndentGuide.activeBackground": "#707070"
|
|
18
|
+
}
|
|
19
|
+
}, J = (m) => {
|
|
20
|
+
const e = k(15), {
|
|
21
|
+
defaultCode: f,
|
|
22
|
+
code: t,
|
|
23
|
+
showLineNumbers: u,
|
|
24
|
+
isEditable: d,
|
|
25
|
+
language: s,
|
|
26
|
+
onChange: r,
|
|
27
|
+
disableScroll: o
|
|
28
|
+
} = m, i = s === void 0 ? "javascript" : s;
|
|
29
|
+
let l;
|
|
30
|
+
e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (l = {
|
|
31
|
+
enabled: !1
|
|
32
|
+
}, e[0] = l) : l = e[0];
|
|
33
|
+
const n = !d, a = u ? "on" : "off";
|
|
34
|
+
let c;
|
|
35
|
+
e[1] !== o ? (c = o ? {
|
|
36
|
+
scrollbar: {
|
|
37
|
+
vertical: "hidden",
|
|
38
|
+
horizontal: "hidden",
|
|
39
|
+
useShadows: !1,
|
|
40
|
+
alwaysConsumeMouseWheel: !1
|
|
41
|
+
},
|
|
42
|
+
scrollBeyondLastLine: !1,
|
|
43
|
+
mouseWheelScrollSensitivity: 0,
|
|
44
|
+
overviewRulerLanes: 0
|
|
45
|
+
} : {}, e[1] = o, e[2] = c) : c = e[2];
|
|
46
|
+
let h;
|
|
47
|
+
e[3] !== n || e[4] !== a || e[5] !== c ? (h = {
|
|
48
|
+
tabSize: 2,
|
|
49
|
+
minimap: l,
|
|
50
|
+
fontSize: 12,
|
|
51
|
+
readOnly: n,
|
|
52
|
+
lineNumbers: a,
|
|
53
|
+
...c
|
|
54
|
+
}, e[3] = n, e[4] = a, e[5] = c, e[6] = h) : h = e[6];
|
|
55
|
+
const w = h;
|
|
56
|
+
let g;
|
|
57
|
+
e[7] !== r ? (g = (b) => {
|
|
58
|
+
r?.(b || "");
|
|
59
|
+
}, e[7] = r, e[8] = g) : g = e[8];
|
|
60
|
+
let S;
|
|
61
|
+
return e[9] !== t || e[10] !== f || e[11] !== i || e[12] !== w || e[13] !== g ? (S = /* @__PURE__ */ p(M, { width: "100%", height: "100%", language: i, defaultValue: f, value: t, theme: "ps-theme", options: w, onChange: g, beforeMount: T, onMount: j }), e[9] = t, e[10] = f, e[11] = i, e[12] = w, e[13] = g, e[14] = S) : S = e[14], S;
|
|
62
|
+
}, F = (m) => {
|
|
63
|
+
const e = k(11), {
|
|
64
|
+
original: f,
|
|
65
|
+
modified: t,
|
|
66
|
+
showLineNumbers: u,
|
|
67
|
+
language: d,
|
|
68
|
+
disableScroll: s
|
|
69
|
+
} = m, r = d === void 0 ? "javascript" : d;
|
|
70
|
+
let o;
|
|
71
|
+
e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (o = {
|
|
72
|
+
enabled: !1
|
|
73
|
+
}, e[0] = o) : o = e[0];
|
|
74
|
+
const i = u ? "on" : "off";
|
|
75
|
+
let l;
|
|
76
|
+
e[1] !== s ? (l = s ? {
|
|
77
|
+
scrollbar: {
|
|
78
|
+
vertical: "hidden",
|
|
79
|
+
horizontal: "hidden",
|
|
80
|
+
useShadows: !1,
|
|
81
|
+
alwaysConsumeMouseWheel: !1
|
|
82
|
+
},
|
|
83
|
+
scrollBeyondLastLine: !1,
|
|
84
|
+
mouseWheelScrollSensitivity: 0,
|
|
85
|
+
overviewRulerLanes: 0
|
|
86
|
+
} : {}, e[1] = s, e[2] = l) : l = e[2];
|
|
87
|
+
let n;
|
|
88
|
+
e[3] !== i || e[4] !== l ? (n = {
|
|
89
|
+
tabSize: 2,
|
|
90
|
+
minimap: o,
|
|
91
|
+
fontSize: 12,
|
|
92
|
+
readOnly: !0,
|
|
93
|
+
originalEditable: !1,
|
|
94
|
+
renderSideBySide: !0,
|
|
95
|
+
useInlineViewWhenSpaceIsTooSmall: !0,
|
|
96
|
+
lineNumbers: i,
|
|
97
|
+
...l
|
|
98
|
+
}, e[3] = i, e[4] = l, e[5] = n) : n = e[5];
|
|
99
|
+
const a = n;
|
|
100
|
+
let c;
|
|
101
|
+
return e[6] !== r || e[7] !== t || e[8] !== a || e[9] !== f ? (c = /* @__PURE__ */ p(L, { width: "100%", height: "100%", language: r, original: f, modified: t, theme: "ps-theme", options: a, beforeMount: I, onMount: V }), e[6] = r, e[7] = t, e[8] = a, e[9] = f, e[10] = c) : c = e[10], c;
|
|
102
|
+
};
|
|
103
|
+
function T(m) {
|
|
104
|
+
m.editor.defineTheme("ps-theme", D);
|
|
105
|
+
}
|
|
106
|
+
async function j(m, e) {
|
|
107
|
+
e.editor.setTheme("ps-theme"), e.languages.typescript.typescriptDefaults.setCompilerOptions({
|
|
108
|
+
jsx: e.languages.typescript.JsxEmit.React
|
|
109
|
+
}), m.addCommand(e.KeyMod.CtrlCmd | e.KeyCode.KeyS, async () => {
|
|
110
|
+
await m.getAction("editor.action.formatDocument")?.run();
|
|
111
|
+
}), await m.getAction("editor.action.formatDocument")?.run();
|
|
112
|
+
}
|
|
113
|
+
function I(m) {
|
|
114
|
+
m.editor.defineTheme("ps-theme", D);
|
|
115
|
+
}
|
|
116
|
+
function V(m, e) {
|
|
117
|
+
e.editor.setTheme("ps-theme"), e.languages.typescript.typescriptDefaults.setCompilerOptions({
|
|
118
|
+
jsx: e.languages.typescript.JsxEmit.React
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
const X = (m) => {
|
|
122
|
+
const e = k(18), {
|
|
123
|
+
fileName: f,
|
|
124
|
+
additions: t,
|
|
125
|
+
deletions: u,
|
|
126
|
+
label: d,
|
|
127
|
+
variant: s,
|
|
128
|
+
size: r,
|
|
129
|
+
onClick: o,
|
|
130
|
+
onClickFileLink: i
|
|
131
|
+
} = m, l = s === void 0 ? "outline" : s, a = (r === void 0 ? "default" : r) === "small", c = l === "outline" ? "1px solid" : "none", h = l === "outline" ? a ? "3xs" : "2xs" : "2px", w = a ? "label/S/regular" : void 0, g = o ? "pointer" : "default";
|
|
132
|
+
let S;
|
|
133
|
+
e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (S = {
|
|
134
|
+
background: "bg.muted"
|
|
135
|
+
}, e[0] = S) : S = e[0];
|
|
136
|
+
let b;
|
|
137
|
+
e[1] !== f || e[2] !== i ? (b = f && /* @__PURE__ */ p(B, { display: "inline-block", maxW: "24ch", truncate: !0, mr: "xs", title: f, onClick: (W) => {
|
|
138
|
+
W.stopPropagation(), i?.();
|
|
139
|
+
}, cursor: i ? "pointer" : "default", _hover: {
|
|
140
|
+
textDecoration: i ? "underline" : "none",
|
|
141
|
+
color: i ? "fg.blue-dark" : "fg.muted"
|
|
142
|
+
}, children: f }), e[1] = f, e[2] = i, e[3] = b) : b = e[3];
|
|
143
|
+
const C = `+${t}`;
|
|
144
|
+
let y;
|
|
145
|
+
e[4] !== C ? (y = /* @__PURE__ */ p(B, { color: "fg.success", children: C }), e[4] = C, e[5] = y) : y = e[5];
|
|
146
|
+
const x = `-${u}`;
|
|
147
|
+
let v;
|
|
148
|
+
e[6] !== x ? (v = /* @__PURE__ */ p(B, { color: "fg.error", children: x }), e[6] = x, e[7] = v) : v = e[7];
|
|
149
|
+
let z;
|
|
150
|
+
return e[8] !== d || e[9] !== o || e[10] !== v || e[11] !== c || e[12] !== h || e[13] !== w || e[14] !== g || e[15] !== b || e[16] !== y ? (z = /* @__PURE__ */ $(B, { display: "inline-flex", alignItems: "center", gap: "2xs", border: c, borderColor: "border.muted", color: "fg.muted", paddingX: h, paddingY: "1px", borderRadius: "xs", textStyle: w, cursor: g, onClick: o, _hover: S, children: [
|
|
151
|
+
d,
|
|
152
|
+
b,
|
|
153
|
+
y,
|
|
154
|
+
v
|
|
155
|
+
] }), e[8] = d, e[9] = o, e[10] = v, e[11] = c, e[12] = h, e[13] = w, e[14] = g, e[15] = b, e[16] = y, e[17] = z) : z = e[17], z;
|
|
156
|
+
};
|
|
157
|
+
function Y(m) {
|
|
158
|
+
const e = k(11), {
|
|
159
|
+
original: f,
|
|
160
|
+
modified: t,
|
|
161
|
+
language: u,
|
|
162
|
+
sideBySide: d,
|
|
163
|
+
disableScroll: s
|
|
164
|
+
} = m, r = u === void 0 ? "plaintext" : u, o = d === void 0 ? !1 : d, i = s === void 0 ? !0 : s;
|
|
165
|
+
let l;
|
|
166
|
+
e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (l = {
|
|
167
|
+
enabled: !1
|
|
168
|
+
}, e[0] = l) : l = e[0];
|
|
169
|
+
let n;
|
|
170
|
+
e[1] !== i ? (n = i ? {
|
|
171
|
+
scrollbar: {
|
|
172
|
+
vertical: "hidden",
|
|
173
|
+
horizontal: "hidden",
|
|
174
|
+
useShadows: !1,
|
|
175
|
+
alwaysConsumeMouseWheel: !1
|
|
176
|
+
},
|
|
177
|
+
overviewRulerLanes: 0
|
|
178
|
+
} : {}, e[1] = i, e[2] = n) : n = e[2];
|
|
179
|
+
let a;
|
|
180
|
+
e[3] !== o || e[4] !== n ? (a = {
|
|
181
|
+
renderSideBySide: o,
|
|
182
|
+
readOnly: !0,
|
|
183
|
+
fontSize: 11,
|
|
184
|
+
minimap: l,
|
|
185
|
+
wordWrap: "on",
|
|
186
|
+
scrollBeyondLastLine: !1,
|
|
187
|
+
...n
|
|
188
|
+
}, e[3] = o, e[4] = n, e[5] = a) : a = e[5];
|
|
189
|
+
const c = a;
|
|
190
|
+
let h;
|
|
191
|
+
return e[6] !== r || e[7] !== t || e[8] !== c || e[9] !== f ? (h = /* @__PURE__ */ p(L, { width: "100%", height: "100%", original: f, modified: t, language: r, theme: "ps-theme", options: c, beforeMount: O, onMount: N }), e[6] = r, e[7] = t, e[8] = c, e[9] = f, e[10] = h) : h = e[10], h;
|
|
192
|
+
}
|
|
193
|
+
function N(m, e) {
|
|
194
|
+
e.editor.setTheme("ps-theme");
|
|
195
|
+
}
|
|
196
|
+
function O(m) {
|
|
197
|
+
m.editor.defineTheme("ps-theme", D);
|
|
198
|
+
}
|
|
199
|
+
const q = _.forwardRef(function(e, f) {
|
|
200
|
+
const t = k(19);
|
|
201
|
+
let u, d, s, r, o;
|
|
202
|
+
t[0] !== e ? ({
|
|
203
|
+
title: o,
|
|
204
|
+
description: d,
|
|
205
|
+
icon: s,
|
|
206
|
+
children: u,
|
|
207
|
+
...r
|
|
208
|
+
} = e, t[0] = e, t[1] = u, t[2] = d, t[3] = s, t[4] = r, t[5] = o) : (u = t[1], d = t[2], s = t[3], r = t[4], o = t[5]);
|
|
209
|
+
let i;
|
|
210
|
+
t[6] !== s ? (i = s && /* @__PURE__ */ p(E.Indicator, { children: s }), t[6] = s, t[7] = i) : i = t[7];
|
|
211
|
+
let l;
|
|
212
|
+
t[8] !== d || t[9] !== o ? (l = d ? /* @__PURE__ */ $(A, { textAlign: "center", children: [
|
|
213
|
+
/* @__PURE__ */ p(E.Title, { fontWeight: "normal", children: o }),
|
|
214
|
+
/* @__PURE__ */ p(E.Description, { children: d })
|
|
215
|
+
] }) : /* @__PURE__ */ p(E.Title, { fontWeight: "normal", children: o }), t[8] = d, t[9] = o, t[10] = l) : l = t[10];
|
|
216
|
+
let n;
|
|
217
|
+
t[11] !== u || t[12] !== i || t[13] !== l ? (n = /* @__PURE__ */ $(E.Content, { children: [
|
|
218
|
+
i,
|
|
219
|
+
l,
|
|
220
|
+
u
|
|
221
|
+
] }), t[11] = u, t[12] = i, t[13] = l, t[14] = n) : n = t[14];
|
|
222
|
+
let a;
|
|
223
|
+
return t[15] !== f || t[16] !== r || t[17] !== n ? (a = /* @__PURE__ */ p(E.Root, { ref: f, ...r, children: n }), t[15] = f, t[16] = r, t[17] = n, t[18] = a) : a = t[18], a;
|
|
224
|
+
}), Q = _.forwardRef(function(e, f) {
|
|
225
|
+
const t = k(35);
|
|
226
|
+
let u, d, s, r, o, i, l, n, a, c, h;
|
|
227
|
+
t[0] !== e ? ({
|
|
228
|
+
children: u,
|
|
229
|
+
viewportRef: h,
|
|
230
|
+
contentRef: s,
|
|
231
|
+
viewportProps: c,
|
|
232
|
+
contentProps: d,
|
|
233
|
+
verticalScrollbarProps: a,
|
|
234
|
+
horizontalScrollbarProps: r,
|
|
235
|
+
showVerticalScrollbar: i,
|
|
236
|
+
showHorizontalScrollbar: l,
|
|
237
|
+
showCorner: n,
|
|
238
|
+
...o
|
|
239
|
+
} = e, t[0] = e, t[1] = u, t[2] = d, t[3] = s, t[4] = r, t[5] = o, t[6] = i, t[7] = l, t[8] = n, t[9] = a, t[10] = c, t[11] = h) : (u = t[1], d = t[2], s = t[3], r = t[4], o = t[5], i = t[6], l = t[7], n = t[8], a = t[9], c = t[10], h = t[11]);
|
|
240
|
+
const w = i === void 0 ? !0 : i, g = l === void 0 ? !1 : l, S = n === void 0 ? w && g : n;
|
|
241
|
+
let b;
|
|
242
|
+
t[12] !== u || t[13] !== d || t[14] !== s ? (b = /* @__PURE__ */ p(R.Content, { ...d, ref: s, children: u }), t[12] = u, t[13] = d, t[14] = s, t[15] = b) : b = t[15];
|
|
243
|
+
let C;
|
|
244
|
+
t[16] !== b || t[17] !== c || t[18] !== h ? (C = /* @__PURE__ */ p(R.Viewport, { ...c, ref: h, children: b }), t[16] = b, t[17] = c, t[18] = h, t[19] = C) : C = t[19];
|
|
245
|
+
let y;
|
|
246
|
+
t[20] !== w || t[21] !== a ? (y = w ? /* @__PURE__ */ p(R.Scrollbar, { ...a, borderRadius: "xs" }) : null, t[20] = w, t[21] = a, t[22] = y) : y = t[22];
|
|
247
|
+
let x;
|
|
248
|
+
t[23] !== r || t[24] !== g ? (x = g ? /* @__PURE__ */ p(R.Scrollbar, { orientation: "horizontal", ...r, borderRadius: "xs" }) : null, t[23] = r, t[24] = g, t[25] = x) : x = t[25];
|
|
249
|
+
let v;
|
|
250
|
+
t[26] !== S ? (v = S ? /* @__PURE__ */ p(R.Corner, {}) : null, t[26] = S, t[27] = v) : v = t[27];
|
|
251
|
+
let z;
|
|
252
|
+
return t[28] !== f || t[29] !== o || t[30] !== C || t[31] !== y || t[32] !== x || t[33] !== v ? (z = /* @__PURE__ */ $(R.Root, { ref: f, ...o, children: [
|
|
253
|
+
C,
|
|
254
|
+
y,
|
|
255
|
+
x,
|
|
256
|
+
v
|
|
257
|
+
] }), t[28] = f, t[29] = o, t[30] = C, t[31] = y, t[32] = x, t[33] = v, t[34] = z) : z = t[34], z;
|
|
258
|
+
});
|
|
259
|
+
export {
|
|
260
|
+
F as C,
|
|
261
|
+
Y as D,
|
|
262
|
+
q as E,
|
|
263
|
+
Q as S,
|
|
264
|
+
X as a,
|
|
265
|
+
J as b
|
|
266
|
+
};
|
|
267
|
+
//# sourceMappingURL=scroll-area-DZs-GiIp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-area-DZs-GiIp.js","sources":["../src/components/code-editor.tsx","../src/components/diff-bubble.tsx","../src/components/diff-editor.tsx","../src/components/empty-state.tsx","../src/components/scroll-area.tsx"],"sourcesContent":["import { DiffEditor, Editor } from \"@monaco-editor/react\";\n\nexport const customTheme = {\n base: \"vs-dark\" as const,\n inherit: true,\n rules: [],\n colors: {\n \"editor.background\": \"#0a0d15\",\n \"editor.foreground\": \"#f5f5f5\",\n \"editor.lineHighlightBackground\": \"#22252C\",\n \"editorCursor.foreground\": \"#A7A7A7\",\n \"editorWhitespace.foreground\": \"#3B3B3B\",\n \"editorIndentGuide.background\": \"#404040\",\n \"editorIndentGuide.activeBackground\": \"#707070\",\n },\n};\n\ninterface CodeEditorProps {\n language: string;\n defaultCode?: string;\n code?: string;\n isEditable: boolean;\n showLineNumbers?: boolean;\n onChange?: (code: string) => void;\n disableScroll?: boolean;\n}\n\nexport const CodeEditor = (props: CodeEditorProps) => {\n const { defaultCode, code, showLineNumbers, isEditable, language = \"javascript\", onChange, disableScroll } = props;\n\n const options = {\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: !isEditable,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <Editor\n width=\"100%\"\n height=\"100%\"\n language={language}\n defaultValue={defaultCode}\n value={code}\n theme={\"ps-theme\"}\n options={options}\n onChange={(value) => {\n onChange?.(value || \"\");\n }}\n beforeMount={(monaco) => {\n monaco.editor.defineTheme(\"ps-theme\", customTheme);\n }}\n onMount={async (editor, monaco) => {\n monaco.editor.setTheme(\"ps-theme\");\n\n // Add JSX support\n monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n jsx: monaco.languages.typescript.JsxEmit.React,\n });\n\n // Format on cmd+s\n editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, async () => {\n await editor.getAction(\"editor.action.formatDocument\")?.run();\n });\n\n // Run format on the initial value\n await editor.getAction(\"editor.action.formatDocument\")?.run();\n }}\n />\n );\n};\n\ninterface CodeDiffEditorProps {\n language: string;\n original: string;\n modified: string;\n showLineNumbers?: boolean;\n disableScroll?: boolean;\n}\n\nexport const CodeDiffEditor = (props: CodeDiffEditorProps) => {\n const { original, modified, showLineNumbers, language = \"javascript\", disableScroll } = props;\n\n const options = {\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: true,\n originalEditable: false,\n renderSideBySide: true,\n useInlineViewWhenSpaceIsTooSmall: true,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <DiffEditor\n width=\"100%\"\n height=\"100%\"\n language={language}\n original={original}\n modified={modified}\n theme={\"ps-theme\"}\n options={options}\n beforeMount={(monaco) => {\n monaco.editor.defineTheme(\"ps-theme\", customTheme);\n }}\n onMount={(_, monaco) => {\n monaco.editor.setTheme(\"ps-theme\");\n\n monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n jsx: monaco.languages.typescript.JsxEmit.React,\n });\n }}\n />\n );\n};\n","import { Span } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport type { ComponentProps, MouseEvent } from \"react\";\n\ninterface DiffBubbleProps extends Omit<ComponentProps<typeof Span>, \"onClick\"> {\n fileName?: string;\n additions: number;\n deletions: number;\n label?: React.ReactNode;\n variant?: \"outline\" | \"ghost\";\n size?: \"default\" | \"small\";\n onClick?: (event: MouseEvent<HTMLSpanElement>) => void;\n onClickFileLink?: () => void;\n}\n\nexport const DiffBubble = (props: DiffBubbleProps) => {\n const {\n fileName,\n additions,\n deletions,\n label,\n variant = \"outline\",\n size = \"default\",\n onClick,\n onClickFileLink,\n } = props;\n\n const isSmall = size === \"small\";\n\n return (\n <Span\n display=\"inline-flex\"\n alignItems=\"center\"\n gap={\"2xs\"}\n border={variant === \"outline\" ? \"1px solid\" : \"none\"}\n borderColor=\"border.muted\"\n color=\"fg.muted\"\n paddingX={variant === \"outline\" ? (isSmall ? \"3xs\" : \"2xs\") : \"2px\"}\n paddingY=\"1px\"\n borderRadius=\"xs\"\n textStyle={isSmall ? \"label/S/regular\" : undefined}\n cursor={onClick ? \"pointer\" : \"default\"}\n onClick={onClick}\n _hover={{\n background: \"bg.muted\",\n }}\n >\n {label}\n {fileName && (\n <Span\n display=\"inline-block\"\n maxW=\"24ch\"\n truncate\n mr=\"xs\"\n title={fileName}\n onClick={(e) => {\n e.stopPropagation();\n onClickFileLink?.();\n }}\n cursor={onClickFileLink ? \"pointer\" : \"default\"}\n _hover={{\n textDecoration: onClickFileLink ? \"underline\" : \"none\",\n color: onClickFileLink ? \"fg.blue-dark\" : \"fg.muted\",\n }}\n >\n {fileName}\n </Span>\n )}\n <Span color=\"fg.success\">{`+${additions}`}</Span>\n <Span color=\"fg.error\">{`-${deletions}`}</Span>\n </Span>\n );\n};\n","import { DiffEditor as MonacoDiffEditor } from \"@monaco-editor/react\";\nimport { customTheme } from \"./code-editor\";\n\ninterface DiffEditorProps {\n original: string;\n modified: string;\n language?: string;\n sideBySide?: boolean;\n disableScroll?: boolean;\n}\n\nexport function DiffEditor(props: DiffEditorProps) {\n const { original, modified, language = \"plaintext\", sideBySide = false, disableScroll = true } = props;\n\n const options = {\n renderSideBySide: sideBySide,\n readOnly: true,\n fontSize: 11,\n minimap: { enabled: false },\n wordWrap: \"on\" as const,\n scrollBeyondLastLine: false,\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <MonacoDiffEditor\n width=\"100%\"\n height=\"100%\"\n original={original}\n modified={modified}\n language={language}\n theme=\"ps-theme\"\n options={options}\n beforeMount={(monaco) => {\n monaco.editor.defineTheme(\"ps-theme\", customTheme);\n }}\n onMount={(_editor, monaco) => {\n monaco.editor.setTheme(\"ps-theme\");\n }}\n />\n );\n}\n","import { EmptyState as ChakraEmptyState, VStack } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface EmptyStateProps extends ChakraEmptyState.RootProps {\n title: string;\n description?: string;\n icon?: React.ReactNode;\n}\n\nexport const EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(function EmptyState(props, ref) {\n const { title, description, icon, children, ...rest } = props;\n return (\n <ChakraEmptyState.Root ref={ref} {...rest}>\n <ChakraEmptyState.Content>\n {icon && <ChakraEmptyState.Indicator>{icon}</ChakraEmptyState.Indicator>}\n {description ? (\n <VStack textAlign=\"center\">\n <ChakraEmptyState.Title fontWeight=\"normal\">{title}</ChakraEmptyState.Title>\n <ChakraEmptyState.Description>{description}</ChakraEmptyState.Description>\n </VStack>\n ) : (\n <ChakraEmptyState.Title fontWeight=\"normal\">{title}</ChakraEmptyState.Title>\n )}\n {children}\n </ChakraEmptyState.Content>\n </ChakraEmptyState.Root>\n );\n});\n","import { ScrollArea as ChakraScrollArea } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\ntype VerticalScrollbarProps = Omit<ChakraScrollArea.ScrollbarProps, \"orientation\">;\ntype HorizontalScrollbarProps = Omit<ChakraScrollArea.ScrollbarProps, \"orientation\">;\n\nexport interface ScrollAreaProps extends ChakraScrollArea.RootProps {\n viewportRef?: React.Ref<HTMLDivElement>;\n contentRef?: React.Ref<HTMLDivElement>;\n viewportProps?: ChakraScrollArea.ViewportProps;\n contentProps?: ChakraScrollArea.ContentProps;\n verticalScrollbarProps?: VerticalScrollbarProps;\n horizontalScrollbarProps?: HorizontalScrollbarProps;\n showVerticalScrollbar?: boolean;\n showHorizontalScrollbar?: boolean;\n showCorner?: boolean;\n}\n\nexport const ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(props, ref) {\n const {\n children,\n viewportRef,\n contentRef,\n viewportProps,\n contentProps,\n verticalScrollbarProps,\n horizontalScrollbarProps,\n showVerticalScrollbar = true,\n showHorizontalScrollbar = false,\n showCorner = showVerticalScrollbar && showHorizontalScrollbar,\n ...rest\n } = props;\n\n return (\n <ChakraScrollArea.Root ref={ref} {...rest}>\n <ChakraScrollArea.Viewport {...viewportProps} ref={viewportRef}>\n <ChakraScrollArea.Content {...contentProps} ref={contentRef}>\n {children}\n </ChakraScrollArea.Content>\n </ChakraScrollArea.Viewport>\n {showVerticalScrollbar ? <ChakraScrollArea.Scrollbar {...verticalScrollbarProps} borderRadius={\"xs\"} /> : null}\n {showHorizontalScrollbar ? (\n <ChakraScrollArea.Scrollbar orientation=\"horizontal\" {...horizontalScrollbarProps} borderRadius={\"xs\"} />\n ) : null}\n {showCorner ? <ChakraScrollArea.Corner /> : null}\n </ChakraScrollArea.Root>\n );\n});\n"],"names":["customTheme","base","inherit","rules","colors","CodeEditor","props","$","_c","defaultCode","code","showLineNumbers","isEditable","language","t0","onChange","disableScroll","undefined","t1","Symbol","for","enabled","t2","t3","t4","scrollbar","vertical","horizontal","useShadows","alwaysConsumeMouseWheel","scrollBeyondLastLine","mouseWheelScrollSensitivity","overviewRulerLanes","t5","tabSize","minimap","fontSize","readOnly","lineNumbers","options","t6","value","t7","Editor","_temp","_temp2","CodeDiffEditor","original","modified","originalEditable","renderSideBySide","useInlineViewWhenSpaceIsTooSmall","jsx","DiffEditor","_temp3","_temp4","monaco","editor","defineTheme","monaco_0","setTheme","languages","typescript","typescriptDefaults","setCompilerOptions","JsxEmit","React","addCommand","KeyMod","CtrlCmd","KeyCode","KeyS","getAction","run","_","DiffBubble","fileName","additions","deletions","label","variant","size","onClick","onClickFileLink","isSmall","background","Span","e","stopPropagation","textDecoration","color","t8","t9","t10","t11","t12","sideBySide","wordWrap","MonacoDiffEditor","_editor","EmptyState","forwardRef","ref","children","description","icon","rest","title","ChakraEmptyState","jsxs","VStack","ScrollArea","contentProps","contentRef","horizontalScrollbarProps","verticalScrollbarProps","viewportProps","viewportRef","showVerticalScrollbar","showHorizontalScrollbar","showCorner","ChakraScrollArea"],"mappings":"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"}
|