dishui 0.0.64 → 0.0.65
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/components/Badge/index.js +12 -9
- package/dist/components/Badge/index.js.map +1 -1
- package/dist/components/Button/index.js +43 -40
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/Card/index.d.ts +11 -0
- package/dist/components/Card/index.js +62 -37
- package/dist/components/Card/index.js.map +1 -1
- package/dist/components/Chart/Chart.js.map +1 -1
- package/dist/components/Checkbox/index.js +32 -30
- package/dist/components/Checkbox/index.js.map +1 -1
- package/dist/components/Demo/index.js.map +1 -1
- package/dist/components/EmptyState/index.d.ts +4 -1
- package/dist/components/EmptyState/index.js +3 -3
- package/dist/components/EmptyState/index.js.map +1 -1
- package/dist/components/FileUploader/DropZone.js.map +1 -1
- package/dist/components/FileUploader/FileItem.js.map +1 -1
- package/dist/components/FileUploader/FileUploader.js.map +1 -1
- package/dist/components/FileUploader/UploadQueue.js.map +1 -1
- package/dist/components/Input/index.js +30 -30
- package/dist/components/Input/index.js.map +1 -1
- package/dist/components/Label/index.js +41 -40
- package/dist/components/Label/index.js.map +1 -1
- package/dist/components/List/index.js +47 -32
- package/dist/components/List/index.js.map +1 -1
- package/dist/components/Markdown/Markdown.js +61 -57
- package/dist/components/Markdown/Markdown.js.map +1 -1
- package/dist/components/Markdown/markdownComponents.js +49 -49
- package/dist/components/Markdown/markdownComponents.js.map +1 -1
- package/dist/components/Modal/index.d.ts +7 -3
- package/dist/components/Modal/index.js +77 -65
- package/dist/components/Modal/index.js.map +1 -1
- package/dist/components/Page/index.d.ts +58 -0
- package/dist/components/Page/index.js +74 -0
- package/dist/components/Page/index.js.map +1 -0
- package/dist/components/PageHeader/index.js.map +1 -1
- package/dist/components/Select/index.js +0 -3
- package/dist/components/Select/index.js.map +1 -1
- package/dist/components/SidebarToggleButton/index.js.map +1 -1
- package/dist/components/StatCard/index.d.ts +3 -1
- package/dist/components/StatCard/index.js +39 -11
- package/dist/components/StatCard/index.js.map +1 -1
- package/dist/components/Table/index.js +103 -85
- package/dist/components/Table/index.js.map +1 -1
- package/dist/components/Tabs/index.d.ts +19 -5
- package/dist/components/Tabs/index.js +32 -13
- package/dist/components/Tabs/index.js.map +1 -1
- package/dist/components/Tree/Tree.js.map +1 -1
- package/dist/components/pro/ArticleContextMenu/index.js.map +1 -1
- package/dist/components/pro/ArticleControl/ArticleControl2.js.map +1 -1
- package/dist/components/pro/CodeEditor/editors/CodeEditor.js +141 -134
- package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
- package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +81 -78
- package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/FootnotePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/HistoryPanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/OutlinePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/VariablePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/themes.js +59 -59
- package/dist/components/pro/CodeEditor/themes.js.map +1 -1
- package/dist/components/pro/DataTable/DataTable.js +49 -48
- package/dist/components/pro/DataTable/DataTable.js.map +1 -1
- package/dist/components/pro/DataTable/Filters.js +42 -42
- package/dist/components/pro/DataTable/Filters.js.map +1 -1
- package/dist/components/pro/DataTable/PivotPanel.js.map +1 -1
- package/dist/components/pro/DataTable/PivotView.js +35 -32
- package/dist/components/pro/DataTable/PivotView.js.map +1 -1
- package/dist/components/pro/DataTable/components/BulkActions.js.map +1 -1
- package/dist/components/pro/DataTable/components/ColumnSelector.js.map +1 -1
- package/dist/components/pro/DataTable/components/FilterBar.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableHeader.js.map +1 -1
- package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableToolbar.js.map +1 -1
- package/dist/components/pro/DataTable/pivotExtension.js.map +1 -1
- package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
- package/dist/components/pro/DataTable/tanstack-table.js +37 -37
- package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
- package/dist/components/pro/FileExplorer/Breadcrumb.js +53 -53
- package/dist/components/pro/FileExplorer/Breadcrumb.js.map +1 -1
- package/dist/components/pro/FileExplorer/CreateDialog.js.map +1 -1
- package/dist/components/pro/FileExplorer/FileExplorer.js.map +1 -1
- package/dist/components/pro/FileExplorer/FileIcon.js +22 -22
- package/dist/components/pro/FileExplorer/FileIcon.js.map +1 -1
- package/dist/components/pro/FileExplorer/GridView.js.map +1 -1
- package/dist/components/pro/FileExplorer/ListView.js.map +1 -1
- package/dist/components/pro/FileExplorer/Toolbar.js.map +1 -1
- package/dist/components/pro/Flow/Flow.js +496 -494
- package/dist/components/pro/Flow/Flow.js.map +1 -1
- package/dist/components/pro/Flow/FlowCanvas.js +916 -917
- package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
- package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
- package/dist/components/pro/Flow/edges/EdgeRenderer.js +59 -59
- package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useClipboard.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useDeleteSelection.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useEdgeMutations.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useLayoutActions.js +9 -11
- package/dist/components/pro/Flow/hooks/useLayoutActions.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useLineMutations.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useMindMap.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useNodeMutations.js.map +1 -1
- package/dist/components/pro/Flow/lines/FreehandTool.js +9 -9
- package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
- package/dist/components/pro/Flow/lines/LineRenderer.js +5 -5
- package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
- package/dist/components/pro/Flow/nodes/DataNodeView.js +113 -93
- package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
- package/dist/components/pro/Flow/nodes/Model3DView.js +1 -1
- package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
- package/dist/components/pro/Flow/nodes/NodeRenderer.js +118 -118
- package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
- package/dist/components/pro/Flow/nodes/dataUtils.js.map +1 -1
- package/dist/components/pro/Flow/nodes/shapes.js +1 -3
- package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
- package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/Breadcrumb.js.map +1 -1
- package/dist/components/pro/Flow/panels/ContextMenu.js.map +1 -1
- package/dist/components/pro/Flow/panels/DataInspectorSection.js.map +1 -1
- package/dist/components/pro/Flow/panels/ExpandableTextarea.js.map +1 -1
- package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
- package/dist/components/pro/Flow/panels/FlowToolbar.js +97 -97
- package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
- package/dist/components/pro/Flow/panels/InspectorPanel.js +57 -57
- package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/OutlinePanel.js +26 -22
- package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/PresentationMode.js +18 -16
- package/dist/components/pro/Flow/panels/PresentationMode.js.map +1 -1
- package/dist/components/pro/Flow/panels/ProjectTitle.js.map +1 -1
- package/dist/components/pro/Flow/panels/ShapePalette.js +109 -104
- package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
- package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
- package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
- package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
- package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentDialog.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
- package/dist/components/pro/RichTextEditor/ContextMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
- package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
- package/dist/contexts/AppContext.js.map +1 -1
- package/dist/dishui.css +1 -1
- package/dist/hooks/useTableColumns.js +7 -8
- package/dist/hooks/useTableColumns.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +227 -221
- package/dist/layouts/MainLayout.js +22 -22
- package/dist/layouts/MainLayout.js.map +1 -1
- package/dist/layouts/Navbar.js.map +1 -1
- package/dist/layouts/Sidebar.js +94 -73
- package/dist/layouts/Sidebar.js.map +1 -1
- package/dist/layouts/headbar/Headbar.js.map +1 -1
- package/dist/layouts/headbar/HeadbarLangSwitcher.js.map +1 -1
- package/dist/layouts/headbar/HeadbarSearch.js.map +1 -1
- package/dist/layouts/headbar/HeadbarThemeSwitcher.js +11 -11
- package/dist/layouts/headbar/HeadbarThemeSwitcher.js.map +1 -1
- package/dist/layouts/headbar/HeadbarTitle.js.map +1 -1
- package/dist/utils/i18n.js +10 -10
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/menu.js.map +1 -1
- package/dist/utils/routerBuilder.js +17 -15
- package/dist/utils/routerBuilder.js.map +1 -1
- package/dist/utils/themes.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Label/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, DragEvent } from 'react';\n\n// 扩展LabelState类型为字符串,允许用户定义任意状态\nexport type LabelState = string;\n\nexport type LabelStyleConfig = {\n [key: string]: {\n className?: string;\n style?: React.CSSProperties;\n }\n};\n\nexport type LabelProps = {\n children: React.ReactNode;\n variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n outline?: boolean;\n dash?: boolean;\n soft?: boolean;\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n ellipsis?: boolean;\n maxWidth?: string;\n stateTimeout?: number;\n styleConfig?: LabelStyleConfig;\n // 新增属性:用户自定义状态\n state?: LabelState;\n // 新增属性:状态变化回调\n onStateChange?: (newState: LabelState) => void;\n onClick?: (e: React.MouseEvent) => void;\n onDoubleClick?: (e: React.MouseEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onDragStart?: (e: DragEvent<HTMLSpanElement>) => void;\n onDragEnd?: (e: DragEvent<HTMLSpanElement>) => void;\n draggable?: boolean;\n className?: string;\n style?: React.CSSProperties;\n};\n\nconst Label = ({\n children,\n variant = 'neutral',\n size = 'sm',\n outline = false,\n dash = false,\n soft = false,\n bold = false,\n italic = false,\n underline = false,\n ellipsis = false,\n maxWidth,\n stateTimeout,\n styleConfig = {},\n // 使用用户传入的状态,默认为'default'\n state: userState,\n onStateChange,\n onClick,\n onDoubleClick,\n onMouseEnter,\n onMouseLeave,\n onDragStart,\n onDragEnd,\n draggable = false,\n className = '',\n style = {},\n}: LabelProps) => {\n // 当用户传入state时使用用户的状态,否则内部管理状态\n const [internalState, setInternalState] = useState<LabelState>('default');\n const state = userState !== undefined ? userState : internalState;\n \n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n \n // 更新状态的函数,同时执行回调\n const updateState = (newState: LabelState) => {\n if (userState === undefined) {\n setInternalState(newState);\n }\n onStateChange && onStateChange(newState);\n resetStateTimeout(newState);\n };\n \n // 重置状态计时器\n const resetStateTimeout = (currentState: LabelState = state) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n \n if (stateTimeout && currentState !== 'default' && userState === undefined) {\n timeoutRef.current = setTimeout(() => {\n setInternalState('default');\n onStateChange && onStateChange('default');\n }, stateTimeout);\n }\n };\n \n // 当状态变化或stateTimeout变化时重置计时器\n useEffect(() => {\n resetStateTimeout();\n \n // 清除计时器\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [state, stateTimeout, userState]);\n \n //
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Label/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, DragEvent } from 'react';\n\n// 扩展LabelState类型为字符串,允许用户定义任意状态\nexport type LabelState = string;\n\nexport type LabelStyleConfig = {\n [key: string]: {\n className?: string;\n style?: React.CSSProperties;\n }\n};\n\nexport type LabelProps = {\n children: React.ReactNode;\n variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n outline?: boolean;\n dash?: boolean;\n soft?: boolean;\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n ellipsis?: boolean;\n maxWidth?: string;\n stateTimeout?: number;\n styleConfig?: LabelStyleConfig;\n // 新增属性:用户自定义状态\n state?: LabelState;\n // 新增属性:状态变化回调\n onStateChange?: (newState: LabelState) => void;\n onClick?: (e: React.MouseEvent) => void;\n onDoubleClick?: (e: React.MouseEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onDragStart?: (e: DragEvent<HTMLSpanElement>) => void;\n onDragEnd?: (e: DragEvent<HTMLSpanElement>) => void;\n draggable?: boolean;\n className?: string;\n style?: React.CSSProperties;\n};\n\nconst Label = ({\n children,\n variant = 'neutral',\n size = 'sm',\n outline = false,\n dash = false,\n soft = false,\n bold = false,\n italic = false,\n underline = false,\n ellipsis = false,\n maxWidth,\n stateTimeout,\n styleConfig = {},\n // 使用用户传入的状态,默认为'default'\n state: userState,\n onStateChange,\n onClick,\n onDoubleClick,\n onMouseEnter,\n onMouseLeave,\n onDragStart,\n onDragEnd,\n draggable = false,\n className = '',\n style = {},\n}: LabelProps) => {\n // 当用户传入state时使用用户的状态,否则内部管理状态\n const [internalState, setInternalState] = useState<LabelState>('default');\n const state = userState !== undefined ? userState : internalState;\n \n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n \n // 更新状态的函数,同时执行回调\n const updateState = (newState: LabelState) => {\n if (userState === undefined) {\n setInternalState(newState);\n }\n onStateChange && onStateChange(newState);\n resetStateTimeout(newState);\n };\n \n // 重置状态计时器\n const resetStateTimeout = (currentState: LabelState = state) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n \n if (stateTimeout && currentState !== 'default' && userState === undefined) {\n timeoutRef.current = setTimeout(() => {\n setInternalState('default');\n onStateChange && onStateChange('default');\n }, stateTimeout);\n }\n };\n \n // 当状态变化或stateTimeout变化时重置计时器\n useEffect(() => {\n resetStateTimeout();\n \n // 清除计时器\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [state, stateTimeout, userState]);\n \n // 尺寸类映射\n const sizeClassMap = {\n 'xs': 'text-xs',\n 'sm': 'text-sm',\n 'md': 'text-base',\n 'lg': 'text-lg',\n 'xl': 'text-xl',\n };\n const sizeClass = sizeClassMap[size] || sizeClassMap.md;\n \n // 样式类(依托 daisyUI badge 的 outline/dash/soft 外观,保证与主题联动)\n const decorated = outline || dash || soft;\n // 基础类:普通文本 label;带装饰时用 badge 充当“标签”容器\n //(装饰态不叠加 text-${variant}/dark:text-white,避免与 badge 自身前景色冲突)\n const baseClass = decorated ? 'badge' : 'label dark:text-white';\n const variantClass = !decorated && variant ? `text-${variant}` : '';\n const outlineClass = outline ? 'badge-outline' : '';\n const dashClass = dash ? 'badge-dash' : '';\n const softClass = soft ? 'badge-soft' : '';\n // 为带装饰的标签补上色调变体(badge-${variant}),让边框/底色跟随 variant\n const badgeVariantClass = decorated && variant && variant !== 'neutral' ? `badge-${variant}` : '';\n const boldClass = bold ? 'font-bold' : '';\n const italicClass = italic ? 'italic' : '';\n const underlineClass = underline ? 'underline' : '';\n const ellipsisClass = ellipsis ? 'truncate' : '';\n \n // 组合所有类名\n const labelClasses = [\n baseClass,\n variantClass,\n sizeClass,\n outlineClass,\n dashClass,\n softClass,\n badgeVariantClass,\n boldClass,\n italicClass,\n underlineClass,\n ellipsisClass,\n className\n ].filter(Boolean).join(' ');\n \n // 处理事件\n const handleClick = (e: React.MouseEvent) => {\n updateState('clicked');\n onClick && onClick(e);\n };\n \n const handleDoubleClick = (e: React.MouseEvent) => {\n updateState('doubleClicked');\n onDoubleClick && onDoubleClick(e);\n };\n \n const handleMouseEnter = (e: React.MouseEvent) => {\n updateState('hover');\n onMouseEnter && onMouseEnter(e);\n };\n \n const handleMouseLeave = (e: React.MouseEvent) => {\n updateState('default');\n onMouseLeave && onMouseLeave(e);\n };\n \n const handleDragStart = (e: DragEvent<HTMLSpanElement>) => {\n updateState('dragging');\n onDragStart && onDragStart(e);\n };\n \n const handleDragEnd = (e: DragEvent<HTMLSpanElement>) => {\n updateState('default');\n onDragEnd && onDragEnd(e);\n };\n \n // 获取当前状态的自定义样式和类\n const stateStyle = styleConfig[state]?.style || {};\n const stateClassName = styleConfig[state]?.className || '';\n \n // 合并样式\n const combinedStyle = {\n ...style,\n ...stateStyle,\n ...(maxWidth ? { maxWidth } : {}),\n ...(ellipsis ? { display: 'inline-block', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } : {})\n };\n \n // 最终类名\n const finalClassName = `${labelClasses} ${stateClassName}`.trim();\n \n return (\n <span\n className={finalClassName}\n style={combinedStyle}\n onClick={handleClick}\n onDoubleClick={handleDoubleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n draggable={draggable}\n >\n {children}\n </span>\n );\n};\n\nexport default Label; "],"mappings":";;AAyCA,IAAM,IAAA,CAAS,EACb,UAAA,GACA,SAAA,IAAU,WACV,MAAA,IAAO,MACP,SAAA,IAAU,IACV,MAAA,IAAO,IACP,MAAA,IAAO,IACP,MAAA,IAAO,IACP,QAAA,IAAS,IACT,WAAA,IAAY,IACZ,UAAA,IAAW,IACX,UAAA,GACA,cAAA,GACA,aAAA,IAAc,CAAC,GAEf,OAAO,GACP,eAAA,GACA,SAAA,GACA,eAAA,GACA,cAAA,GACA,cAAA,GACA,aAAA,GACA,WAAA,GACA,WAAA,IAAY,IACZ,WAAA,IAAY,IACZ,OAAA,IAAQ,CAAC,EAAA,MACO;AAEhB,QAAM,CAAC,GAAe,CAAA,IAAoB,EAAqB,SAAS,GAClE,IAAQ,MAAc,SAAY,IAAY,GAE9C,IAAa,EAA6C,IAAI,GAG9D,IAAA,CAAe,MAAyB;AAC5C,IAAI,MAAc,UAChB,EAAiB,CAAQ,GAE3B,KAAiB,EAAc,CAAQ,GACvC,EAAkB,CAAQ;AAAA,EAC5B,GAGM,IAAA,CAAqB,IAA2B,MAAU;AAC9D,IAAI,EAAW,YACb,aAAa,EAAW,OAAO,GAC/B,EAAW,UAAU,OAGnB,KAAgB,MAAiB,aAAa,MAAc,WAC9D,EAAW,UAAU,WAAA,MAAiB;AACpC,MAAA,EAAiB,SAAS,GAC1B,KAAiB,EAAc,SAAS;AAAA,IAC1C,GAAG,CAAY;AAAA,EAEnB;AAGA,EAAA,EAAA,OACE,EAAkB,GAGlB,MAAa;AACX,IAAI,EAAW,WACb,aAAa,EAAW,OAAO;AAAA,EAEnC,IACC;AAAA,IAAC;AAAA,IAAO;AAAA,IAAc;AAAA,EAAS,CAAC;AAGnC,QAAM,IAAe;AAAA,IACnB,IAAM;AAAA,IACN,IAAM;AAAA,IACN,IAAM;AAAA,IACN,IAAM;AAAA,IACN,IAAM;AAAA,EACR,GACM,IAAY,EAAa,CAAA,KAAS,EAAa,IAG/C,IAAY,KAAW,KAAQ,GAgB/B,IAAe;AAAA,IAbH,IAAY,UAAU;AAAA,IACnB,CAAC,KAAa,IAAU,QAAQ,CAAA,KAAY;AAAA,IAe/D;AAAA,IAdmB,IAAU,kBAAkB;AAAA,IAC/B,IAAO,eAAe;AAAA,IACtB,IAAO,eAAe;AAAA,IAEd,KAAa,KAAW,MAAY,YAAY,SAAS,CAAA,KAAY;AAAA,IAC7E,IAAO,cAAc;AAAA,IACnB,IAAS,WAAW;AAAA,IACjB,IAAY,cAAc;AAAA,IAC3B,IAAW,aAAa;AAAA,IAe5C;AAAA,EACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAGpB,IAAA,CAAe,MAAwB;AAC3C,IAAA,EAAY,SAAS,GACrB,KAAW,EAAQ,CAAC;AAAA,EACtB,GAEM,IAAA,CAAqB,MAAwB;AACjD,IAAA,EAAY,eAAe,GAC3B,KAAiB,EAAc,CAAC;AAAA,EAClC,GAEM,IAAA,CAAoB,MAAwB;AAChD,IAAA,EAAY,OAAO,GACnB,KAAgB,EAAa,CAAC;AAAA,EAChC,GAEM,IAAA,CAAoB,MAAwB;AAChD,IAAA,EAAY,SAAS,GACrB,KAAgB,EAAa,CAAC;AAAA,EAChC,GAEM,IAAA,CAAmB,MAAkC;AACzD,IAAA,EAAY,UAAU,GACtB,KAAe,EAAY,CAAC;AAAA,EAC9B,GAEM,IAAA,CAAiB,MAAkC;AACvD,IAAA,EAAY,SAAS,GACrB,KAAa,EAAU,CAAC;AAAA,EAC1B,GAGM,IAAa,EAAY,CAAA,GAAQ,SAAS,CAAC,GAC3C,IAAiB,EAAY,CAAA,GAAQ,aAAa,IAGlD,IAAgB;AAAA,IACpB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAI,IAAW,EAAE,UAAA,EAAS,IAAI,CAAC;AAAA,IAC/B,GAAI,IAAW;AAAA,MAAE,SAAS;AAAA,MAAgB,UAAU;AAAA,MAAU,cAAc;AAAA,MAAY,YAAY;AAAA,IAAS,IAAI,CAAC;AAAA,EACpH,GAGM,IAAiB,GAAG,CAAA,IAAgB,CAAA,GAAiB,KAAK;AAEhE,SACE,gBAAA,EAAC,QAAD;AAAA,IACE,WAAW;AAAA,IACX,OAAO;AAAA,IACP,SAAS;AAAA,IACT,eAAe;AAAA,IACf,cAAc;AAAA,IACd,cAAc;AAAA,IACd,aAAa;AAAA,IACb,WAAW;AAAA,IACA,WAAA;AAAA,IAEV,UAAA;AAAA,EACG,CAAA;AAEV"}
|
|
@@ -1,44 +1,59 @@
|
|
|
1
1
|
import "react";
|
|
2
|
-
import { jsx as
|
|
3
|
-
var m = ({ children:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
3
|
+
var m = ({ children: s, className: o = "", onClick: a, onMouseEnter: l, onMouseLeave: t }) => {
|
|
4
|
+
const i = ["list", o].filter(Boolean).join(" ");
|
|
5
|
+
return /* @__PURE__ */ r("ul", {
|
|
6
|
+
className: i,
|
|
7
|
+
onClick: a,
|
|
8
|
+
onMouseEnter: l,
|
|
9
|
+
onMouseLeave: t,
|
|
10
|
+
children: s
|
|
11
|
+
});
|
|
12
|
+
}, w = ({ children: s, className: o = "", selected: a = !1, onClick: l, onDoubleClick: t, onMouseEnter: i, onMouseLeave: n, onContextMenu: c }) => {
|
|
13
|
+
const p = [
|
|
11
14
|
"list-row",
|
|
12
|
-
|
|
15
|
+
a ? "bg-base-200" : "",
|
|
13
16
|
o
|
|
14
|
-
].filter(Boolean).join(" ")
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
17
|
+
].filter(Boolean).join(" ");
|
|
18
|
+
return /* @__PURE__ */ r("li", {
|
|
19
|
+
className: p,
|
|
20
|
+
onClick: l,
|
|
21
|
+
onDoubleClick: t,
|
|
22
|
+
onMouseEnter: i,
|
|
23
|
+
onMouseLeave: n,
|
|
24
|
+
onContextMenu: c,
|
|
25
|
+
children: s
|
|
26
|
+
});
|
|
27
|
+
}, C = ({ children: s, className: o = "" }) => {
|
|
28
|
+
const a = ["list-col-wrap", o].filter(Boolean).join(" ");
|
|
29
|
+
return /* @__PURE__ */ r("div", {
|
|
30
|
+
className: a,
|
|
31
|
+
children: s
|
|
32
|
+
});
|
|
33
|
+
}, f = ({ children: s, className: o = "" }) => {
|
|
34
|
+
const a = ["list-col-grow", o].filter(Boolean).join(" ");
|
|
35
|
+
return /* @__PURE__ */ r("div", {
|
|
36
|
+
className: a,
|
|
37
|
+
children: s
|
|
38
|
+
});
|
|
39
|
+
}, d = ({ children: s, className: o = "" }) => {
|
|
40
|
+
const a = [
|
|
29
41
|
"p-4",
|
|
30
42
|
"pb-2",
|
|
31
43
|
"text-xs",
|
|
32
44
|
"opacity-60",
|
|
33
45
|
"tracking-wide",
|
|
34
46
|
o
|
|
35
|
-
].filter(Boolean).join(" ")
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
e
|
|
41
|
-
e.
|
|
47
|
+
].filter(Boolean).join(" ");
|
|
48
|
+
return /* @__PURE__ */ r("li", {
|
|
49
|
+
className: a,
|
|
50
|
+
children: s
|
|
51
|
+
});
|
|
52
|
+
}, e = m;
|
|
53
|
+
e.Row = w;
|
|
54
|
+
e.ColWrap = C;
|
|
55
|
+
e.ColGrow = f;
|
|
56
|
+
e.Header = d;
|
|
42
57
|
export {
|
|
43
58
|
e as default
|
|
44
59
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/List/index.tsx"],"sourcesContent":["import React, { ReactElement } from 'react';\n\nexport type ListProps = {\n children: React.ReactNode;\n className?: string;\n onClick?: (e: React.MouseEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n};\n\nconst List = ({\n children,\n className = '',\n onClick,\n onMouseEnter,\n onMouseLeave,\n}: ListProps) => {\n const baseClass = 'list';\n \n const listClasses = [\n baseClass,\n className\n ].filter(Boolean).join(' ');\n\n return (\n <ul \n className={listClasses}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {children}\n </ul>\n );\n};\n\n// List.Row 组件\nexport type ListRowProps = {\n children: React.ReactNode;\n className?: string;\n selected?: boolean;\n onClick?: (e: React.MouseEvent) => void;\n onDoubleClick?: (e: React.MouseEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onContextMenu?: (e: React.MouseEvent) => void;\n};\n\nconst ListRow = ({\n children,\n className = '',\n selected = false,\n onClick,\n onDoubleClick,\n onMouseEnter,\n onMouseLeave,\n onContextMenu,\n}: ListRowProps) => {\n const baseClass = 'list-row';\n \n const rowClasses = [\n baseClass,\n selected ? 'bg-base-200' : '',\n className\n ].filter(Boolean).join(' ');\n\n return (\n <li \n className={rowClasses}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onContextMenu={onContextMenu}\n >\n {children}\n </li>\n );\n};\n\n// List.ColWrap 组件\nexport type ListColWrapProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nconst ListColWrap = ({\n children,\n className = '',\n}: ListColWrapProps) => {\n const baseClass = 'list-col-wrap';\n \n const colWrapClasses = [\n baseClass,\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div className={colWrapClasses}>\n {children}\n </div>\n );\n};\n\n// List.ColGrow 组件\nexport type ListColGrowProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nconst ListColGrow = ({\n children,\n className = '',\n}: ListColGrowProps) => {\n const baseClass = 'list-col-grow';\n \n const colGrowClasses = [\n baseClass,\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div className={colGrowClasses}>\n {children}\n </div>\n );\n};\n\n// List.Header 组件\nexport type ListHeaderProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nconst ListHeader = ({\n children,\n className = '',\n}: ListHeaderProps) => {\n const headerClasses = [\n 'p-4',\n 'pb-2',\n 'text-xs',\n 'opacity-60',\n 'tracking-wide',\n className\n ].filter(Boolean).join(' ');\n\n return (\n <li className={headerClasses}>\n {children}\n </li>\n );\n};\n\n// 扩展List组件,添加Row、ColWrap和ColGrow子组件\ninterface ListCompound extends React.FC<ListProps> {\n Row: React.FC<ListRowProps>;\n ColWrap: React.FC<ListColWrapProps>;\n ColGrow: React.FC<ListColGrowProps>;\n Header: React.FC<ListHeaderProps>;\n}\n\nconst ListWithCompounds = List as ListCompound;\nListWithCompounds.Row = ListRow;\nListWithCompounds.ColWrap = ListColWrap;\nListWithCompounds.ColGrow = ListColGrow;\nListWithCompounds.Header = ListHeader;\n\nexport default ListWithCompounds; "],"mappings":";;AAUA,IAAM,IAAA,CAAQ,EACZ,UAAA,GACA,WAAA,IAAY,IACZ,SAAA,GACA,cAAA,GACA,cAAA,EAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/List/index.tsx"],"sourcesContent":["import React, { ReactElement } from 'react';\n\nexport type ListProps = {\n children: React.ReactNode;\n className?: string;\n onClick?: (e: React.MouseEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n};\n\nconst List = ({\n children,\n className = '',\n onClick,\n onMouseEnter,\n onMouseLeave,\n}: ListProps) => {\n const baseClass = 'list';\n \n const listClasses = [\n baseClass,\n className\n ].filter(Boolean).join(' ');\n\n return (\n <ul \n className={listClasses}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {children}\n </ul>\n );\n};\n\n// List.Row 组件\nexport type ListRowProps = {\n children: React.ReactNode;\n className?: string;\n selected?: boolean;\n onClick?: (e: React.MouseEvent) => void;\n onDoubleClick?: (e: React.MouseEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onContextMenu?: (e: React.MouseEvent) => void;\n};\n\nconst ListRow = ({\n children,\n className = '',\n selected = false,\n onClick,\n onDoubleClick,\n onMouseEnter,\n onMouseLeave,\n onContextMenu,\n}: ListRowProps) => {\n const baseClass = 'list-row';\n \n const rowClasses = [\n baseClass,\n selected ? 'bg-base-200' : '',\n className\n ].filter(Boolean).join(' ');\n\n return (\n <li \n className={rowClasses}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onContextMenu={onContextMenu}\n >\n {children}\n </li>\n );\n};\n\n// List.ColWrap 组件\nexport type ListColWrapProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nconst ListColWrap = ({\n children,\n className = '',\n}: ListColWrapProps) => {\n const baseClass = 'list-col-wrap';\n \n const colWrapClasses = [\n baseClass,\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div className={colWrapClasses}>\n {children}\n </div>\n );\n};\n\n// List.ColGrow 组件\nexport type ListColGrowProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nconst ListColGrow = ({\n children,\n className = '',\n}: ListColGrowProps) => {\n const baseClass = 'list-col-grow';\n \n const colGrowClasses = [\n baseClass,\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div className={colGrowClasses}>\n {children}\n </div>\n );\n};\n\n// List.Header 组件\nexport type ListHeaderProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nconst ListHeader = ({\n children,\n className = '',\n}: ListHeaderProps) => {\n const headerClasses = [\n 'p-4',\n 'pb-2',\n 'text-xs',\n 'opacity-60',\n 'tracking-wide',\n className\n ].filter(Boolean).join(' ');\n\n return (\n <li className={headerClasses}>\n {children}\n </li>\n );\n};\n\n// 扩展List组件,添加Row、ColWrap和ColGrow子组件\ninterface ListCompound extends React.FC<ListProps> {\n Row: React.FC<ListRowProps>;\n ColWrap: React.FC<ListColWrapProps>;\n ColGrow: React.FC<ListColGrowProps>;\n Header: React.FC<ListHeaderProps>;\n}\n\nconst ListWithCompounds = List as ListCompound;\nListWithCompounds.Row = ListRow;\nListWithCompounds.ColWrap = ListColWrap;\nListWithCompounds.ColGrow = ListColGrow;\nListWithCompounds.Header = ListHeader;\n\nexport default ListWithCompounds; "],"mappings":";;AAUA,IAAM,IAAA,CAAQ,EACZ,UAAA,GACA,WAAA,IAAY,IACZ,SAAA,GACA,cAAA,GACA,cAAA,EAAA,MACe;AAGf,QAAM,IAAc,CAClB,QACA,CACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SACE,gBAAA,EAAC,MAAD;AAAA,IACE,WAAW;AAAA,IACF,SAAA;AAAA,IACK,cAAA;AAAA,IACA,cAAA;AAAA,IAEb,UAAA;AAAA,EACC,CAAA;AAER,GAcM,IAAA,CAAW,EACf,UAAA,GACA,WAAA,IAAY,IACZ,UAAA,IAAW,IACX,SAAA,GACA,eAAA,GACA,cAAA,GACA,cAAA,GACA,eAAA,EAAA,MACkB;AAGlB,QAAM,IAAa;AAAA,IACjB;AAAA,IACA,IAAW,gBAAgB;AAAA,IAC3B;AAAA,EACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SACE,gBAAA,EAAC,MAAD;AAAA,IACE,WAAW;AAAA,IACF,SAAA;AAAA,IACM,eAAA;AAAA,IACD,cAAA;AAAA,IACA,cAAA;AAAA,IACC,eAAA;AAAA,IAEd,UAAA;AAAA,EACC,CAAA;AAER,GAQM,IAAA,CAAe,EACnB,UAAA,GACA,WAAA,IAAY,GAAA,MACU;AAGtB,QAAM,IAAiB,CACrB,iBACA,CACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SACE,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW;AAAA,IACb,UAAA;AAAA,EACE,CAAA;AAET,GAQM,IAAA,CAAe,EACnB,UAAA,GACA,WAAA,IAAY,GAAA,MACU;AAGtB,QAAM,IAAiB,CACrB,iBACA,CACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SACE,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW;AAAA,IACb,UAAA;AAAA,EACE,CAAA;AAET,GAQM,IAAA,CAAc,EAClB,UAAA,GACA,WAAA,IAAY,GAAA,MACS;AACrB,QAAM,IAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SACE,gBAAA,EAAC,MAAD;AAAA,IAAI,WAAW;AAAA,IACZ,UAAA;AAAA,EACC,CAAA;AAER,GAUM,IAAoB;AAC1B,EAAkB,MAAM;AACxB,EAAkB,UAAU;AAC5B,EAAkB,UAAU;AAC5B,EAAkB,SAAS"}
|
|
@@ -1,107 +1,111 @@
|
|
|
1
|
-
import { remarkCodeMeta as
|
|
2
|
-
import { rehypeCodeMeta as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { useMarkdownSource as
|
|
6
|
-
import { useMermaidRenderer as
|
|
7
|
-
import { useMarkmapRenderer as
|
|
8
|
-
import { getCodeStyle as
|
|
9
|
-
import { createMarkdownComponents as
|
|
1
|
+
import { remarkCodeMeta as J } from "../../utils/remark-code-meta.js";
|
|
2
|
+
import { rehypeCodeMeta as O } from "../../utils/rehype-code-meta.js";
|
|
3
|
+
import Q from "../pro/ArticleControl/ArticleControl2.js";
|
|
4
|
+
import U from "../pro/ArticleContextMenu/index.js";
|
|
5
|
+
import { useMarkdownSource as V } from "./useMarkdownSource.js";
|
|
6
|
+
import { useMermaidRenderer as X } from "./useMermaidRenderer.js";
|
|
7
|
+
import { useMarkmapRenderer as Y } from "./useMarkmapRenderer.js";
|
|
8
|
+
import { getCodeStyle as Z } from "./codeThemes.js";
|
|
9
|
+
import { createMarkdownComponents as _ } from "./markdownComponents.js";
|
|
10
10
|
import { useMemo as o, useRef as d } from "react";
|
|
11
|
-
import { Fragment as C, jsx as r, jsxs as
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
11
|
+
import { Fragment as C, jsx as r, jsxs as n } from "react/jsx-runtime";
|
|
12
|
+
import T from "react-markdown";
|
|
13
|
+
import K from "remark-gfm";
|
|
14
|
+
import b from "remark-emoji";
|
|
15
|
+
import rr from "rehype-katex";
|
|
16
|
+
import er from "rehype-raw";
|
|
17
|
+
import tr from "rehype-slug";
|
|
18
|
+
import or from "remark-math";
|
|
19
19
|
import "katex/dist/katex.min.css";
|
|
20
|
-
var
|
|
21
|
-
const a = d(null), l = d(null),
|
|
22
|
-
|
|
20
|
+
var Mr = ({ source: M = "text", content: N, showLoading: j = !0, loadingText: S = "Loading...", showError: $ = !0, errorRenderer: f, codeTheme: u = "vscDarkPlus", showLineNumbers: h = !1, enableGfm: g = !0, enableEmoji: k = !0, enableKatex: t = !0, enableMermaid: i = !0, enableMarkmap: s = !0, enableMdx: w = !0, enableSlug: v = !0, slugPrefix: x = "", showArticleControl: A = !1, articleControlProps: I, showContextMenu: L = !1, contextMenuItems: R = [], containerId: P, className: m = "", s3Config: z, onLoad: B, onError: D }) => {
|
|
21
|
+
const a = d(null), l = d(null), F = d(`markdown-${Math.random().toString(36).substr(2, 9)}`), { markdown: c, loading: W, error: p } = V(M, N, z, B, D);
|
|
22
|
+
X(a, c, i), Y(a, c, s);
|
|
23
23
|
const q = o(() => {
|
|
24
|
-
const e = [
|
|
25
|
-
return g && e.push(
|
|
24
|
+
const e = [J];
|
|
25
|
+
return g && e.push(K), k && e.push(b), t && e.push(or), e;
|
|
26
26
|
}, [
|
|
27
27
|
g,
|
|
28
28
|
k,
|
|
29
29
|
t
|
|
30
30
|
]), E = o(() => {
|
|
31
|
-
const e = [
|
|
32
|
-
return v && e.push([
|
|
31
|
+
const e = [O];
|
|
32
|
+
return v && e.push([tr, { prefix: x }]), w && e.push(er), t && e.push(rr), e;
|
|
33
33
|
}, [
|
|
34
34
|
v,
|
|
35
35
|
x,
|
|
36
36
|
w,
|
|
37
37
|
t
|
|
38
|
-
]), y = o(() =>
|
|
39
|
-
enableMermaid:
|
|
38
|
+
]), y = o(() => Z(u), [u]), G = o(() => _({
|
|
39
|
+
enableMermaid: i,
|
|
40
40
|
enableMarkmap: s,
|
|
41
41
|
showLineNumbers: h,
|
|
42
42
|
codeStyle: y
|
|
43
43
|
}), [
|
|
44
|
-
|
|
44
|
+
i,
|
|
45
45
|
s,
|
|
46
46
|
h,
|
|
47
47
|
y
|
|
48
48
|
]);
|
|
49
|
-
|
|
49
|
+
if (W && j) return /* @__PURE__ */ r("div", {
|
|
50
50
|
className: `flex items-center justify-center p-8 ${m}`,
|
|
51
|
-
children: /* @__PURE__ */
|
|
51
|
+
children: /* @__PURE__ */ n("div", {
|
|
52
52
|
className: "flex flex-col items-center gap-4",
|
|
53
53
|
children: [/* @__PURE__ */ r("span", { className: "loading loading-spinner loading-lg" }), /* @__PURE__ */ r("p", {
|
|
54
54
|
className: "text-base-content/70",
|
|
55
55
|
children: S
|
|
56
56
|
})]
|
|
57
57
|
})
|
|
58
|
-
})
|
|
59
|
-
|
|
60
|
-
children:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
children: "
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
58
|
+
});
|
|
59
|
+
if (p && $)
|
|
60
|
+
return f ? /* @__PURE__ */ r(C, { children: f(p) }) : /* @__PURE__ */ n("div", {
|
|
61
|
+
className: `alert alert-error ${m}`,
|
|
62
|
+
children: [/* @__PURE__ */ r("svg", {
|
|
63
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
64
|
+
className: "stroke-current shrink-0 h-6 w-6",
|
|
65
|
+
fill: "none",
|
|
66
|
+
viewBox: "0 0 24 24",
|
|
67
|
+
children: /* @__PURE__ */ r("path", {
|
|
68
|
+
strokeLinecap: "round",
|
|
69
|
+
strokeLinejoin: "round",
|
|
70
|
+
strokeWidth: "2",
|
|
71
|
+
d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
72
|
+
})
|
|
73
|
+
}), /* @__PURE__ */ n("div", { children: [/* @__PURE__ */ r("h3", {
|
|
74
|
+
className: "font-bold",
|
|
75
|
+
children: "加载失败"
|
|
76
|
+
}), /* @__PURE__ */ r("div", {
|
|
77
|
+
className: "text-xs",
|
|
78
|
+
children: p.message
|
|
79
|
+
})] })]
|
|
80
|
+
});
|
|
81
|
+
const H = P || F.current;
|
|
82
|
+
return /* @__PURE__ */ n(C, { children: [
|
|
79
83
|
/* @__PURE__ */ r("div", {
|
|
80
84
|
ref: l,
|
|
81
|
-
id:
|
|
85
|
+
id: H,
|
|
82
86
|
className: `prose prose-sm md:prose-base lg:prose-lg max-w-none ${m}`,
|
|
83
87
|
children: /* @__PURE__ */ r("div", {
|
|
84
88
|
ref: a,
|
|
85
|
-
children: /* @__PURE__ */ r(
|
|
89
|
+
children: /* @__PURE__ */ r(T, {
|
|
86
90
|
remarkPlugins: q,
|
|
87
91
|
rehypePlugins: E,
|
|
88
92
|
components: G,
|
|
89
|
-
children:
|
|
93
|
+
children: c
|
|
90
94
|
})
|
|
91
95
|
})
|
|
92
96
|
}),
|
|
93
|
-
A && /* @__PURE__ */ r(
|
|
97
|
+
A && /* @__PURE__ */ r(Q, {
|
|
94
98
|
targetRef: l,
|
|
95
|
-
...
|
|
99
|
+
...I
|
|
96
100
|
}),
|
|
97
|
-
|
|
101
|
+
L && R.length > 0 && /* @__PURE__ */ r(U, {
|
|
98
102
|
targetRef: l,
|
|
99
103
|
menuItems: R
|
|
100
104
|
})
|
|
101
105
|
] });
|
|
102
106
|
};
|
|
103
107
|
export {
|
|
104
|
-
|
|
108
|
+
Mr as default
|
|
105
109
|
};
|
|
106
110
|
|
|
107
111
|
//# sourceMappingURL=Markdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.js","names":[],"sources":["../../../src/components/Markdown/Markdown.tsx"],"sourcesContent":["import React, { useRef, useMemo } from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport remarkEmoji from 'remark-emoji';\nimport rehypeKatex from 'rehype-katex';\nimport rehypeRaw from 'rehype-raw';\nimport rehypeSlug from 'rehype-slug';\nimport remarkMath from 'remark-math';\nimport { remarkCodeMeta } from '../../utils/remark-code-meta';\nimport { rehypeCodeMeta } from '../../utils/rehype-code-meta';\nimport ArticleControl, { ArticleAction } from '../pro/ArticleControl';\nimport ArticleContextMenu, { ContextMenuItem } from '../pro/ArticleContextMenu';\nimport { useMarkdownSource } from './useMarkdownSource';\nimport { useMermaidRenderer } from './useMermaidRenderer';\nimport { useMarkmapRenderer } from './useMarkmapRenderer';\nimport { getCodeStyle } from './codeThemes';\nimport type { CodeThemeName } from './codeThemes';\nimport { createMarkdownComponents } from './markdownComponents';\nimport 'katex/dist/katex.min.css';\n\nexport type MarkdownSource = 'url' | 's3' | 'text';\n\nexport interface MarkdownProps {\n source?: MarkdownSource;\n content: string;\n showLoading?: boolean;\n loadingText?: string;\n showError?: boolean;\n errorRenderer?: (error: Error) => React.ReactNode;\n codeTheme?: CodeThemeName;\n showLineNumbers?: boolean;\n enableGfm?: boolean;\n enableEmoji?: boolean;\n enableKatex?: boolean;\n enableMermaid?: boolean;\n enableMarkmap?: boolean;\n enableMdx?: boolean;\n enableSlug?: boolean;\n slugPrefix?: string;\n showArticleControl?: boolean;\n articleControlProps?: {\n initialPosition?: { x: number; y: number };\n initialExpanded?: boolean;\n ballSize?: number;\n panelWidth?: number;\n panelMaxHeight?: number;\n actions?: ArticleAction[];\n };\n containerId?: string;\n showContextMenu?: boolean;\n contextMenuItems?: ContextMenuItem[];\n className?: string;\n s3Config?: {\n accessKeyId?: string;\n secretAccessKey?: string;\n region?: string;\n endpoint?: string;\n };\n onLoad?: (content: string) => void;\n onError?: (error: Error) => void;\n}\n\nconst Markdown: React.FC<MarkdownProps> = ({\n source = 'text',\n content,\n showLoading = true,\n loadingText = 'Loading...',\n showError = true,\n errorRenderer,\n codeTheme = 'vscDarkPlus',\n showLineNumbers = false,\n enableGfm = true,\n enableEmoji = true,\n enableKatex = true,\n enableMermaid = true,\n enableMarkmap = true,\n enableMdx = true,\n enableSlug = true,\n slugPrefix = '',\n showArticleControl = false,\n articleControlProps,\n showContextMenu = false,\n contextMenuItems = [],\n containerId,\n className = '',\n s3Config,\n onLoad,\n onError,\n}) => {\n const mermaidRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const generatedContainerId = useRef(`markdown-${Math.random().toString(36).substr(2, 9)}`);\n\n const { markdown, loading, error } = useMarkdownSource(source, content, s3Config, onLoad, onError);\n\n useMermaidRenderer(mermaidRef, markdown, enableMermaid);\n useMarkmapRenderer(mermaidRef, markdown, enableMarkmap);\n\n const remarkPlugins: any[] = useMemo(() => {\n const plugins: any[] = [remarkCodeMeta];\n if (enableGfm) plugins.push(remarkGfm);\n if (enableEmoji) plugins.push(remarkEmoji);\n if (enableKatex) plugins.push(remarkMath);\n return plugins;\n }, [enableGfm, enableEmoji, enableKatex]);\n\n const rehypePlugins: any[] = useMemo(() => {\n const plugins: any[] = [rehypeCodeMeta];\n if (enableSlug) plugins.push([rehypeSlug, { prefix: slugPrefix }]);\n if (enableMdx) plugins.push(rehypeRaw);\n if (enableKatex) plugins.push(rehypeKatex);\n return plugins;\n }, [enableSlug, slugPrefix, enableMdx, enableKatex]);\n\n const codeStyle = useMemo(() => getCodeStyle(codeTheme), [codeTheme]);\n\n const components = useMemo(\n () => createMarkdownComponents({ enableMermaid, enableMarkmap, showLineNumbers, codeStyle }),\n [enableMermaid, enableMarkmap, showLineNumbers, codeStyle],\n );\n\n if (loading && showLoading) {\n return (\n <div className={`flex items-center justify-center p-8 ${className}`}>\n <div className=\"flex flex-col items-center gap-4\">\n <span className=\"loading loading-spinner loading-lg\"></span>\n <p className=\"text-base-content/70\">{loadingText}</p>\n </div>\n </div>\n );\n }\n\n if (error && showError) {\n if (errorRenderer) {\n return <>{errorRenderer(error)}</>;\n }\n return (\n <div className={`alert alert-error ${className}`}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"stroke-current shrink-0 h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n <div>\n <h3 className=\"font-bold\">加载失败</h3>\n <div className=\"text-xs\">{error.message}</div>\n </div>\n </div>\n );\n }\n\n const finalContainerId = containerId || generatedContainerId.current;\n\n return (\n <>\n <div\n ref={containerRef}\n id={finalContainerId}\n className={`prose prose-sm md:prose-base lg:prose-lg max-w-none ${className}`}\n >\n <div ref={mermaidRef}>\n <ReactMarkdown\n remarkPlugins={remarkPlugins}\n rehypePlugins={rehypePlugins}\n components={components}\n >\n {markdown}\n </ReactMarkdown>\n </div>\n </div>\n\n {showArticleControl && (\n <ArticleControl\n targetRef={containerRef}\n {...articleControlProps}\n />\n )}\n\n {showContextMenu && contextMenuItems.length > 0 && (\n <ArticleContextMenu\n targetRef={containerRef}\n menuItems={contextMenuItems}\n />\n )}\n </>\n );\n};\n\nexport default Markdown;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA8DA,IAAM,KAAA,CAAqC,EACzC,QAAA,IAAS,QACT,SAAA,GACA,aAAA,IAAc,IACd,aAAA,IAAc,cACd,WAAA,IAAY,IACZ,eAAA,GACA,WAAA,IAAY,eACZ,iBAAA,IAAkB,IAClB,WAAA,IAAY,IACZ,aAAA,IAAc,IACd,aAAA,IAAc,IACd,eAAA,IAAgB,IAChB,eAAA,IAAgB,IAChB,WAAA,IAAY,IACZ,YAAA,IAAa,IACb,YAAA,IAAa,IACb,oBAAA,IAAqB,IACrB,qBAAA,GACA,iBAAA,IAAkB,IAClB,kBAAA,IAAmB,CAAC,GACpB,aAAA,GACA,WAAA,IAAY,IACZ,UAAA,GACA,QAAA,GACA,SAAA,EAAA,MACI;AACJ,QAAM,IAAa,EAAuB,IAAI,GACxC,IAAe,EAAuB,IAAI,GAC1C,IAAuB,EAAO,YAAY,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC,CAAA,EAAG,GAEnF,EAAE,UAAA,GAAU,SAAA,GAAS,OAAA,EAAA,IAAU,EAAkB,GAAQ,GAAS,GAAU,GAAQ,CAAO;AAEjG,EAAA,EAAmB,GAAY,GAAU,CAAa,GACtD,EAAmB,GAAY,GAAU,CAAa;AAEtD,QAAM,IAAuB,EAAA,MAAc;AACzC,UAAM,IAAiB,CAAC,CAAc;AACtC,WAAI,KAAW,EAAQ,KAAK,CAAS,GACjC,KAAa,EAAQ,KAAK,CAAW,GACrC,KAAa,EAAQ,KAAK,EAAU,GACjC;AAAA,EACT,GAAG;AAAA,IAAC;AAAA,IAAW;AAAA,IAAa;AAAA,EAAW,CAAC,GAElC,IAAuB,EAAA,MAAc;AACzC,UAAM,IAAiB,CAAC,CAAc;AACtC,WAAI,KAAY,EAAQ,KAAK,CAAC,IAAY,EAAE,QAAQ,EAAW,CAAC,CAAC,GAC7D,KAAW,EAAQ,KAAK,EAAS,GACjC,KAAa,EAAQ,KAAK,
|
|
1
|
+
{"version":3,"file":"Markdown.js","names":[],"sources":["../../../src/components/Markdown/Markdown.tsx"],"sourcesContent":["import React, { useRef, useMemo } from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport remarkEmoji from 'remark-emoji';\nimport rehypeKatex from 'rehype-katex';\nimport rehypeRaw from 'rehype-raw';\nimport rehypeSlug from 'rehype-slug';\nimport remarkMath from 'remark-math';\nimport { remarkCodeMeta } from '../../utils/remark-code-meta';\nimport { rehypeCodeMeta } from '../../utils/rehype-code-meta';\nimport ArticleControl, { ArticleAction } from '../pro/ArticleControl';\nimport ArticleContextMenu, { ContextMenuItem } from '../pro/ArticleContextMenu';\nimport { useMarkdownSource } from './useMarkdownSource';\nimport { useMermaidRenderer } from './useMermaidRenderer';\nimport { useMarkmapRenderer } from './useMarkmapRenderer';\nimport { getCodeStyle } from './codeThemes';\nimport type { CodeThemeName } from './codeThemes';\nimport { createMarkdownComponents } from './markdownComponents';\nimport 'katex/dist/katex.min.css';\n\nexport type MarkdownSource = 'url' | 's3' | 'text';\n\nexport interface MarkdownProps {\n source?: MarkdownSource;\n content: string;\n showLoading?: boolean;\n loadingText?: string;\n showError?: boolean;\n errorRenderer?: (error: Error) => React.ReactNode;\n codeTheme?: CodeThemeName;\n showLineNumbers?: boolean;\n enableGfm?: boolean;\n enableEmoji?: boolean;\n enableKatex?: boolean;\n enableMermaid?: boolean;\n enableMarkmap?: boolean;\n enableMdx?: boolean;\n enableSlug?: boolean;\n slugPrefix?: string;\n showArticleControl?: boolean;\n articleControlProps?: {\n initialPosition?: { x: number; y: number };\n initialExpanded?: boolean;\n ballSize?: number;\n panelWidth?: number;\n panelMaxHeight?: number;\n actions?: ArticleAction[];\n };\n containerId?: string;\n showContextMenu?: boolean;\n contextMenuItems?: ContextMenuItem[];\n className?: string;\n s3Config?: {\n accessKeyId?: string;\n secretAccessKey?: string;\n region?: string;\n endpoint?: string;\n };\n onLoad?: (content: string) => void;\n onError?: (error: Error) => void;\n}\n\nconst Markdown: React.FC<MarkdownProps> = ({\n source = 'text',\n content,\n showLoading = true,\n loadingText = 'Loading...',\n showError = true,\n errorRenderer,\n codeTheme = 'vscDarkPlus',\n showLineNumbers = false,\n enableGfm = true,\n enableEmoji = true,\n enableKatex = true,\n enableMermaid = true,\n enableMarkmap = true,\n enableMdx = true,\n enableSlug = true,\n slugPrefix = '',\n showArticleControl = false,\n articleControlProps,\n showContextMenu = false,\n contextMenuItems = [],\n containerId,\n className = '',\n s3Config,\n onLoad,\n onError,\n}) => {\n const mermaidRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const generatedContainerId = useRef(`markdown-${Math.random().toString(36).substr(2, 9)}`);\n\n const { markdown, loading, error } = useMarkdownSource(source, content, s3Config, onLoad, onError);\n\n useMermaidRenderer(mermaidRef, markdown, enableMermaid);\n useMarkmapRenderer(mermaidRef, markdown, enableMarkmap);\n\n const remarkPlugins: any[] = useMemo(() => {\n const plugins: any[] = [remarkCodeMeta];\n if (enableGfm) plugins.push(remarkGfm);\n if (enableEmoji) plugins.push(remarkEmoji);\n if (enableKatex) plugins.push(remarkMath);\n return plugins;\n }, [enableGfm, enableEmoji, enableKatex]);\n\n const rehypePlugins: any[] = useMemo(() => {\n const plugins: any[] = [rehypeCodeMeta];\n if (enableSlug) plugins.push([rehypeSlug, { prefix: slugPrefix }]);\n if (enableMdx) plugins.push(rehypeRaw);\n if (enableKatex) plugins.push(rehypeKatex);\n return plugins;\n }, [enableSlug, slugPrefix, enableMdx, enableKatex]);\n\n const codeStyle = useMemo(() => getCodeStyle(codeTheme), [codeTheme]);\n\n const components = useMemo(\n () => createMarkdownComponents({ enableMermaid, enableMarkmap, showLineNumbers, codeStyle }),\n [enableMermaid, enableMarkmap, showLineNumbers, codeStyle],\n );\n\n if (loading && showLoading) {\n return (\n <div className={`flex items-center justify-center p-8 ${className}`}>\n <div className=\"flex flex-col items-center gap-4\">\n <span className=\"loading loading-spinner loading-lg\"></span>\n <p className=\"text-base-content/70\">{loadingText}</p>\n </div>\n </div>\n );\n }\n\n if (error && showError) {\n if (errorRenderer) {\n return <>{errorRenderer(error)}</>;\n }\n return (\n <div className={`alert alert-error ${className}`}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"stroke-current shrink-0 h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n <div>\n <h3 className=\"font-bold\">加载失败</h3>\n <div className=\"text-xs\">{error.message}</div>\n </div>\n </div>\n );\n }\n\n const finalContainerId = containerId || generatedContainerId.current;\n\n return (\n <>\n <div\n ref={containerRef}\n id={finalContainerId}\n className={`prose prose-sm md:prose-base lg:prose-lg max-w-none ${className}`}\n >\n <div ref={mermaidRef}>\n <ReactMarkdown\n remarkPlugins={remarkPlugins}\n rehypePlugins={rehypePlugins}\n components={components}\n >\n {markdown}\n </ReactMarkdown>\n </div>\n </div>\n\n {showArticleControl && (\n <ArticleControl\n targetRef={containerRef}\n {...articleControlProps}\n />\n )}\n\n {showContextMenu && contextMenuItems.length > 0 && (\n <ArticleContextMenu\n targetRef={containerRef}\n menuItems={contextMenuItems}\n />\n )}\n </>\n );\n};\n\nexport default Markdown;\n"],"mappings":"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"}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { resolveMetaTheme as
|
|
2
|
-
import { parseCodeBlockMeta as
|
|
1
|
+
import { resolveMetaTheme as M } from "./codeThemes.js";
|
|
2
|
+
import { parseCodeBlockMeta as F } from "./parseCodeBlockMeta.js";
|
|
3
3
|
import "react";
|
|
4
|
-
import { jsx as e, jsxs as
|
|
5
|
-
import { Prism as
|
|
6
|
-
function
|
|
4
|
+
import { jsx as e, jsxs as S } from "react/jsx-runtime";
|
|
5
|
+
import { Prism as C } from "react-syntax-highlighter";
|
|
6
|
+
function T(f) {
|
|
7
7
|
return f.split(`
|
|
8
8
|
`).map((a, c) => {
|
|
9
9
|
if (/^#{1,6}\s/.test(a)) {
|
|
10
|
-
const
|
|
11
|
-
if (
|
|
10
|
+
const r = a.match(/^(#{1,6})(\s+.*)$/);
|
|
11
|
+
if (r) return /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ e("span", {
|
|
12
12
|
style: { color: "#569cd6" },
|
|
13
|
-
children:
|
|
13
|
+
children: r[1]
|
|
14
14
|
}), /* @__PURE__ */ e("span", {
|
|
15
15
|
style: { color: "#dcdcaa" },
|
|
16
|
-
children:
|
|
16
|
+
children: r[2]
|
|
17
17
|
})] }, c);
|
|
18
18
|
}
|
|
19
19
|
if (/^(\s*)([-*+]|\d+\.)\s/.test(a)) {
|
|
20
|
-
const
|
|
21
|
-
if (
|
|
22
|
-
/* @__PURE__ */ e("span", { children:
|
|
20
|
+
const r = a.match(/^(\s*)([-*+]|\d+\.)(\s+.*)$/);
|
|
21
|
+
if (r) return /* @__PURE__ */ S("div", { children: [
|
|
22
|
+
/* @__PURE__ */ e("span", { children: r[1] }),
|
|
23
23
|
/* @__PURE__ */ e("span", {
|
|
24
24
|
style: { color: "#c586c0" },
|
|
25
|
-
children:
|
|
25
|
+
children: r[2]
|
|
26
26
|
}),
|
|
27
|
-
/* @__PURE__ */ e("span", { children:
|
|
27
|
+
/* @__PURE__ */ e("span", { children: r[3] })
|
|
28
28
|
] }, c);
|
|
29
29
|
}
|
|
30
30
|
return /^```/.test(a) ? /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e("span", {
|
|
@@ -33,13 +33,13 @@ function C(f) {
|
|
|
33
33
|
}) }, c) : /^>\s/.test(a) ? /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e("span", {
|
|
34
34
|
style: { color: "#608b4e" },
|
|
35
35
|
children: a
|
|
36
|
-
}) }, c) : /* @__PURE__ */ e("div", { children: ((
|
|
36
|
+
}) }, c) : /* @__PURE__ */ e("div", { children: ((r) => {
|
|
37
37
|
const o = [];
|
|
38
38
|
let t = 0;
|
|
39
|
-
const
|
|
39
|
+
const n = /(\*\*[^*]+\*\*|\*[^*]+\*|`[^`]+`|\[([^\]]+)\]\(([^)]+)\))/g;
|
|
40
40
|
let s;
|
|
41
|
-
for (; (s =
|
|
42
|
-
s.index > t && o.push(
|
|
41
|
+
for (; (s = n.exec(r)) !== null; ) {
|
|
42
|
+
s.index > t && o.push(r.substring(t, s.index));
|
|
43
43
|
const l = s[1];
|
|
44
44
|
l.startsWith("**") ? o.push(/* @__PURE__ */ e("span", {
|
|
45
45
|
style: {
|
|
@@ -59,28 +59,28 @@ function C(f) {
|
|
|
59
59
|
}, s.index)) : l.startsWith("[") && o.push(/* @__PURE__ */ e("span", {
|
|
60
60
|
style: { color: "#4ec9b0" },
|
|
61
61
|
children: l
|
|
62
|
-
}, s.index)), t =
|
|
62
|
+
}, s.index)), t = n.lastIndex;
|
|
63
63
|
}
|
|
64
|
-
return t <
|
|
64
|
+
return t < r.length && o.push(r.substring(t)), o.length > 0 ? o : r;
|
|
65
65
|
})(a) }, c);
|
|
66
66
|
}).filter(Boolean);
|
|
67
67
|
}
|
|
68
68
|
var h = 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace';
|
|
69
|
-
function
|
|
70
|
-
const { enableMermaid: a, enableMarkmap: c, showLineNumbers:
|
|
69
|
+
function O(f) {
|
|
70
|
+
const { enableMermaid: a, enableMarkmap: c, showLineNumbers: w, codeStyle: r } = f;
|
|
71
71
|
return {
|
|
72
|
-
code({ node: o, className: t, children:
|
|
73
|
-
const l = t || "", b = /language-(\w+)/.exec(l), u = s.inline, g = b ? b[1] : "",
|
|
72
|
+
code({ node: o, className: t, children: n, ...s }) {
|
|
73
|
+
const l = t || "", b = /language-(\w+)/.exec(l), u = s.inline, g = b ? b[1] : "", x = s.dataMeta || s["data-meta"] || "", i = F(x, l);
|
|
74
74
|
if (!u && g === "mermaid" && a) return /* @__PURE__ */ e("div", {
|
|
75
75
|
className: "mermaid-diagram my-4",
|
|
76
|
-
children: String(
|
|
76
|
+
children: String(n).replace(/\n$/, "")
|
|
77
77
|
});
|
|
78
78
|
if (!u && g === "markmap" && c) return /* @__PURE__ */ e("div", {
|
|
79
79
|
className: "markmap-diagram my-4 border border-base-300 rounded-lg overflow-hidden",
|
|
80
|
-
"data-markmap-content": String(
|
|
80
|
+
"data-markmap-content": String(n).replace(/\n$/, "")
|
|
81
81
|
});
|
|
82
82
|
if (!u && b && g === "markdown") {
|
|
83
|
-
const y = String(
|
|
83
|
+
const y = String(n).replace(/\n$/, "");
|
|
84
84
|
return /* @__PURE__ */ e("pre", {
|
|
85
85
|
style: {
|
|
86
86
|
fontFamily: h,
|
|
@@ -95,20 +95,20 @@ function B(f) {
|
|
|
95
95
|
},
|
|
96
96
|
children: /* @__PURE__ */ e("code", {
|
|
97
97
|
style: { fontFamily: h },
|
|
98
|
-
children:
|
|
98
|
+
children: T(y)
|
|
99
99
|
})
|
|
100
100
|
});
|
|
101
101
|
}
|
|
102
102
|
if (!u && b) {
|
|
103
|
-
const y =
|
|
103
|
+
const y = M(i.theme, r);
|
|
104
104
|
let p, m;
|
|
105
|
-
Array.isArray(i.showLineNumbers) ? (p = !0, m = i.showLineNumbers) : i.showLineNumbers !== void 0 ? p = i.showLineNumbers : p =
|
|
106
|
-
const
|
|
105
|
+
Array.isArray(i.showLineNumbers) ? (p = !0, m = i.showLineNumbers) : i.showLineNumbers !== void 0 ? p = i.showLineNumbers : p = w;
|
|
106
|
+
const L = i.startLineNumber || 1, k = i.highlightLines && i.highlightLines.length > 0 || m && m.length > 0, v = /* @__PURE__ */ e(C, {
|
|
107
107
|
style: y,
|
|
108
108
|
language: g,
|
|
109
109
|
PreTag: "div",
|
|
110
110
|
showLineNumbers: p,
|
|
111
|
-
startingLineNumber:
|
|
111
|
+
startingLineNumber: L,
|
|
112
112
|
customStyle: {
|
|
113
113
|
fontFamily: h,
|
|
114
114
|
fontSize: "0.875em",
|
|
@@ -130,7 +130,7 @@ function B(f) {
|
|
|
130
130
|
};
|
|
131
131
|
return m ? m.includes(N) ? d.opacity = 0.5 : (d.opacity = 0, d.visibility = "hidden") : d.opacity = 0.5, d;
|
|
132
132
|
},
|
|
133
|
-
wrapLines:
|
|
133
|
+
wrapLines: k,
|
|
134
134
|
lineProps: (N) => {
|
|
135
135
|
const d = {
|
|
136
136
|
display: "block",
|
|
@@ -143,9 +143,9 @@ function B(f) {
|
|
|
143
143
|
return i.highlightLines && i.highlightLines.includes(N) && (d.backgroundColor = "rgba(255, 255, 0, 0.1)", d.display = "block", d.width = "100%"), { style: d };
|
|
144
144
|
},
|
|
145
145
|
...s,
|
|
146
|
-
children: String(
|
|
146
|
+
children: String(n).replace(/\n$/, "")
|
|
147
147
|
});
|
|
148
|
-
return i.title ? /* @__PURE__ */
|
|
148
|
+
return i.title ? /* @__PURE__ */ S("div", {
|
|
149
149
|
className: "my-4",
|
|
150
150
|
children: [/* @__PURE__ */ e("div", {
|
|
151
151
|
className: "px-4 py-2 text-sm font-mono text-base-content bg-base-200 rounded-t-lg border-b border-base-300",
|
|
@@ -157,57 +157,57 @@ function B(f) {
|
|
|
157
157
|
return /* @__PURE__ */ e("code", {
|
|
158
158
|
className: t,
|
|
159
159
|
...s,
|
|
160
|
-
children:
|
|
160
|
+
children: n
|
|
161
161
|
});
|
|
162
162
|
},
|
|
163
|
-
table({ node: o, children: t, ...
|
|
163
|
+
table({ node: o, children: t, ...n }) {
|
|
164
164
|
return /* @__PURE__ */ e("div", {
|
|
165
165
|
className: "overflow-x-auto my-6",
|
|
166
166
|
children: /* @__PURE__ */ e("table", {
|
|
167
167
|
className: "table-auto border-collapse w-full",
|
|
168
|
-
...
|
|
168
|
+
...n,
|
|
169
169
|
children: t
|
|
170
170
|
})
|
|
171
171
|
});
|
|
172
172
|
},
|
|
173
|
-
thead({ node: o, children: t, ...
|
|
173
|
+
thead({ node: o, children: t, ...n }) {
|
|
174
174
|
return /* @__PURE__ */ e("thead", {
|
|
175
175
|
className: "bg-base-200",
|
|
176
|
-
...
|
|
176
|
+
...n,
|
|
177
177
|
children: t
|
|
178
178
|
});
|
|
179
179
|
},
|
|
180
|
-
tbody({ node: o, children: t, ...
|
|
180
|
+
tbody({ node: o, children: t, ...n }) {
|
|
181
181
|
return /* @__PURE__ */ e("tbody", {
|
|
182
|
-
...
|
|
182
|
+
...n,
|
|
183
183
|
children: t
|
|
184
184
|
});
|
|
185
185
|
},
|
|
186
|
-
tr({ node: o, children: t, ...
|
|
186
|
+
tr({ node: o, children: t, ...n }) {
|
|
187
187
|
return /* @__PURE__ */ e("tr", {
|
|
188
188
|
className: "border-b border-base-300 hover:bg-base-100 transition-colors",
|
|
189
|
-
...
|
|
189
|
+
...n,
|
|
190
190
|
children: t
|
|
191
191
|
});
|
|
192
192
|
},
|
|
193
|
-
th({ node: o, children: t, ...
|
|
193
|
+
th({ node: o, children: t, ...n }) {
|
|
194
194
|
return /* @__PURE__ */ e("th", {
|
|
195
195
|
className: "px-4 py-3 text-left font-semibold text-base-content border-b-2 border-base-300",
|
|
196
|
-
...
|
|
196
|
+
...n,
|
|
197
197
|
children: t
|
|
198
198
|
});
|
|
199
199
|
},
|
|
200
|
-
td({ node: o, children: t, ...
|
|
200
|
+
td({ node: o, children: t, ...n }) {
|
|
201
201
|
return /* @__PURE__ */ e("td", {
|
|
202
202
|
className: "px-4 py-3 text-base-content",
|
|
203
|
-
...
|
|
203
|
+
...n,
|
|
204
204
|
children: t
|
|
205
205
|
});
|
|
206
206
|
}
|
|
207
207
|
};
|
|
208
208
|
}
|
|
209
209
|
export {
|
|
210
|
-
|
|
210
|
+
O as createMarkdownComponents
|
|
211
211
|
};
|
|
212
212
|
|
|
213
213
|
//# sourceMappingURL=markdownComponents.js.map
|