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.
Files changed (177) hide show
  1. package/dist/components/Badge/index.js +12 -9
  2. package/dist/components/Badge/index.js.map +1 -1
  3. package/dist/components/Button/index.js +43 -40
  4. package/dist/components/Button/index.js.map +1 -1
  5. package/dist/components/Card/index.d.ts +11 -0
  6. package/dist/components/Card/index.js +62 -37
  7. package/dist/components/Card/index.js.map +1 -1
  8. package/dist/components/Chart/Chart.js.map +1 -1
  9. package/dist/components/Checkbox/index.js +32 -30
  10. package/dist/components/Checkbox/index.js.map +1 -1
  11. package/dist/components/Demo/index.js.map +1 -1
  12. package/dist/components/EmptyState/index.d.ts +4 -1
  13. package/dist/components/EmptyState/index.js +3 -3
  14. package/dist/components/EmptyState/index.js.map +1 -1
  15. package/dist/components/FileUploader/DropZone.js.map +1 -1
  16. package/dist/components/FileUploader/FileItem.js.map +1 -1
  17. package/dist/components/FileUploader/FileUploader.js.map +1 -1
  18. package/dist/components/FileUploader/UploadQueue.js.map +1 -1
  19. package/dist/components/Input/index.js +30 -30
  20. package/dist/components/Input/index.js.map +1 -1
  21. package/dist/components/Label/index.js +41 -40
  22. package/dist/components/Label/index.js.map +1 -1
  23. package/dist/components/List/index.js +47 -32
  24. package/dist/components/List/index.js.map +1 -1
  25. package/dist/components/Markdown/Markdown.js +61 -57
  26. package/dist/components/Markdown/Markdown.js.map +1 -1
  27. package/dist/components/Markdown/markdownComponents.js +49 -49
  28. package/dist/components/Markdown/markdownComponents.js.map +1 -1
  29. package/dist/components/Modal/index.d.ts +7 -3
  30. package/dist/components/Modal/index.js +77 -65
  31. package/dist/components/Modal/index.js.map +1 -1
  32. package/dist/components/Page/index.d.ts +58 -0
  33. package/dist/components/Page/index.js +74 -0
  34. package/dist/components/Page/index.js.map +1 -0
  35. package/dist/components/PageHeader/index.js.map +1 -1
  36. package/dist/components/Select/index.js +0 -3
  37. package/dist/components/Select/index.js.map +1 -1
  38. package/dist/components/SidebarToggleButton/index.js.map +1 -1
  39. package/dist/components/StatCard/index.d.ts +3 -1
  40. package/dist/components/StatCard/index.js +39 -11
  41. package/dist/components/StatCard/index.js.map +1 -1
  42. package/dist/components/Table/index.js +103 -85
  43. package/dist/components/Table/index.js.map +1 -1
  44. package/dist/components/Tabs/index.d.ts +19 -5
  45. package/dist/components/Tabs/index.js +32 -13
  46. package/dist/components/Tabs/index.js.map +1 -1
  47. package/dist/components/Tree/Tree.js.map +1 -1
  48. package/dist/components/pro/ArticleContextMenu/index.js.map +1 -1
  49. package/dist/components/pro/ArticleControl/ArticleControl2.js.map +1 -1
  50. package/dist/components/pro/CodeEditor/editors/CodeEditor.js +141 -134
  51. package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
  52. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +81 -78
  53. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
  54. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js.map +1 -1
  55. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js.map +1 -1
  56. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js.map +1 -1
  57. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js.map +1 -1
  58. package/dist/components/pro/CodeEditor/panels/VariablePanel.js.map +1 -1
  59. package/dist/components/pro/CodeEditor/themes.js +59 -59
  60. package/dist/components/pro/CodeEditor/themes.js.map +1 -1
  61. package/dist/components/pro/DataTable/DataTable.js +49 -48
  62. package/dist/components/pro/DataTable/DataTable.js.map +1 -1
  63. package/dist/components/pro/DataTable/Filters.js +42 -42
  64. package/dist/components/pro/DataTable/Filters.js.map +1 -1
  65. package/dist/components/pro/DataTable/PivotPanel.js.map +1 -1
  66. package/dist/components/pro/DataTable/PivotView.js +35 -32
  67. package/dist/components/pro/DataTable/PivotView.js.map +1 -1
  68. package/dist/components/pro/DataTable/components/BulkActions.js.map +1 -1
  69. package/dist/components/pro/DataTable/components/ColumnSelector.js.map +1 -1
  70. package/dist/components/pro/DataTable/components/FilterBar.js.map +1 -1
  71. package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
  72. package/dist/components/pro/DataTable/components/TableHeader.js.map +1 -1
  73. package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
  74. package/dist/components/pro/DataTable/components/TableToolbar.js.map +1 -1
  75. package/dist/components/pro/DataTable/pivotExtension.js.map +1 -1
  76. package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
  77. package/dist/components/pro/DataTable/tanstack-table.js +37 -37
  78. package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
  79. package/dist/components/pro/FileExplorer/Breadcrumb.js +53 -53
  80. package/dist/components/pro/FileExplorer/Breadcrumb.js.map +1 -1
  81. package/dist/components/pro/FileExplorer/CreateDialog.js.map +1 -1
  82. package/dist/components/pro/FileExplorer/FileExplorer.js.map +1 -1
  83. package/dist/components/pro/FileExplorer/FileIcon.js +22 -22
  84. package/dist/components/pro/FileExplorer/FileIcon.js.map +1 -1
  85. package/dist/components/pro/FileExplorer/GridView.js.map +1 -1
  86. package/dist/components/pro/FileExplorer/ListView.js.map +1 -1
  87. package/dist/components/pro/FileExplorer/Toolbar.js.map +1 -1
  88. package/dist/components/pro/Flow/Flow.js +496 -494
  89. package/dist/components/pro/Flow/Flow.js.map +1 -1
  90. package/dist/components/pro/Flow/FlowCanvas.js +916 -917
  91. package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
  92. package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
  93. package/dist/components/pro/Flow/edges/EdgeRenderer.js +59 -59
  94. package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
  95. package/dist/components/pro/Flow/hooks/useClipboard.js.map +1 -1
  96. package/dist/components/pro/Flow/hooks/useDeleteSelection.js.map +1 -1
  97. package/dist/components/pro/Flow/hooks/useEdgeMutations.js.map +1 -1
  98. package/dist/components/pro/Flow/hooks/useLayoutActions.js +9 -11
  99. package/dist/components/pro/Flow/hooks/useLayoutActions.js.map +1 -1
  100. package/dist/components/pro/Flow/hooks/useLineMutations.js.map +1 -1
  101. package/dist/components/pro/Flow/hooks/useMindMap.js.map +1 -1
  102. package/dist/components/pro/Flow/hooks/useNodeMutations.js.map +1 -1
  103. package/dist/components/pro/Flow/lines/FreehandTool.js +9 -9
  104. package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
  105. package/dist/components/pro/Flow/lines/LineRenderer.js +5 -5
  106. package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
  107. package/dist/components/pro/Flow/nodes/DataNodeView.js +113 -93
  108. package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
  109. package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
  110. package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
  111. package/dist/components/pro/Flow/nodes/Model3DView.js +1 -1
  112. package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
  113. package/dist/components/pro/Flow/nodes/NodeRenderer.js +118 -118
  114. package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
  115. package/dist/components/pro/Flow/nodes/dataUtils.js.map +1 -1
  116. package/dist/components/pro/Flow/nodes/shapes.js +1 -3
  117. package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
  118. package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -1
  119. package/dist/components/pro/Flow/panels/Breadcrumb.js.map +1 -1
  120. package/dist/components/pro/Flow/panels/ContextMenu.js.map +1 -1
  121. package/dist/components/pro/Flow/panels/DataInspectorSection.js.map +1 -1
  122. package/dist/components/pro/Flow/panels/ExpandableTextarea.js.map +1 -1
  123. package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
  124. package/dist/components/pro/Flow/panels/FlowToolbar.js +97 -97
  125. package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
  126. package/dist/components/pro/Flow/panels/InspectorPanel.js +57 -57
  127. package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
  128. package/dist/components/pro/Flow/panels/OutlinePanel.js +26 -22
  129. package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
  130. package/dist/components/pro/Flow/panels/PresentationMode.js +18 -16
  131. package/dist/components/pro/Flow/panels/PresentationMode.js.map +1 -1
  132. package/dist/components/pro/Flow/panels/ProjectTitle.js.map +1 -1
  133. package/dist/components/pro/Flow/panels/ShapePalette.js +109 -104
  134. package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
  135. package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
  136. package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
  137. package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
  138. package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
  139. package/dist/components/pro/RichTextEditor/CommentDialog.js.map +1 -1
  140. package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
  141. package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
  142. package/dist/components/pro/RichTextEditor/ContextMenu.js.map +1 -1
  143. package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
  144. package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
  145. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
  146. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
  147. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
  148. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js.map +1 -1
  149. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
  150. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
  151. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
  152. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
  153. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
  154. package/dist/contexts/AppContext.js.map +1 -1
  155. package/dist/dishui.css +1 -1
  156. package/dist/hooks/useTableColumns.js +7 -8
  157. package/dist/hooks/useTableColumns.js.map +1 -1
  158. package/dist/index.d.ts +2 -0
  159. package/dist/index.js +227 -221
  160. package/dist/layouts/MainLayout.js +22 -22
  161. package/dist/layouts/MainLayout.js.map +1 -1
  162. package/dist/layouts/Navbar.js.map +1 -1
  163. package/dist/layouts/Sidebar.js +94 -73
  164. package/dist/layouts/Sidebar.js.map +1 -1
  165. package/dist/layouts/headbar/Headbar.js.map +1 -1
  166. package/dist/layouts/headbar/HeadbarLangSwitcher.js.map +1 -1
  167. package/dist/layouts/headbar/HeadbarSearch.js.map +1 -1
  168. package/dist/layouts/headbar/HeadbarThemeSwitcher.js +11 -11
  169. package/dist/layouts/headbar/HeadbarThemeSwitcher.js.map +1 -1
  170. package/dist/layouts/headbar/HeadbarTitle.js.map +1 -1
  171. package/dist/utils/i18n.js +10 -10
  172. package/dist/utils/i18n.js.map +1 -1
  173. package/dist/utils/menu.js.map +1 -1
  174. package/dist/utils/routerBuilder.js +17 -15
  175. package/dist/utils/routerBuilder.js.map +1 -1
  176. package/dist/utils/themes.js.map +1 -1
  177. 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 // 基础类名\n const baseClass = 'label dark:text-white';\n const variantClass = variant ? `text-${variant}` : '';\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 // 样式类\n const outlineClass = outline ? 'border border-current px-2 py-1 rounded' : '';\n const dashClass = dash ? 'border border-dashed border-current px-2 py-1 rounded' : '';\n const softClass = soft ? 'bg-opacity-10 bg-current px-2 py-1 rounded' : '';\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 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":"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"}
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":"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"}
@@ -1,44 +1,59 @@
1
1
  import "react";
2
- import { jsx as a } from "react/jsx-runtime";
3
- var m = ({ children: r, className: o = "", onClick: i, onMouseEnter: l, onMouseLeave: t }) => /* @__PURE__ */ a("ul", {
4
- className: ["list", o].filter(Boolean).join(" "),
5
- onClick: i,
6
- onMouseEnter: l,
7
- onMouseLeave: t,
8
- children: r
9
- }), p = ({ children: r, className: o = "", selected: i = !1, onClick: l, onDoubleClick: t, onMouseEnter: s, onMouseLeave: n, onContextMenu: c }) => /* @__PURE__ */ a("li", {
10
- className: [
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
- i ? "bg-base-200" : "",
15
+ a ? "bg-base-200" : "",
13
16
  o
14
- ].filter(Boolean).join(" "),
15
- onClick: l,
16
- onDoubleClick: t,
17
- onMouseEnter: s,
18
- onMouseLeave: n,
19
- onContextMenu: c,
20
- children: r
21
- }), f = ({ children: r, className: o = "" }) => /* @__PURE__ */ a("div", {
22
- className: ["list-col-wrap", o].filter(Boolean).join(" "),
23
- children: r
24
- }), u = ({ children: r, className: o = "" }) => /* @__PURE__ */ a("div", {
25
- className: ["list-col-grow", o].filter(Boolean).join(" "),
26
- children: r
27
- }), v = ({ children: r, className: o = "" }) => /* @__PURE__ */ a("li", {
28
- className: [
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
- children: r
37
- }), e = m;
38
- e.Row = p;
39
- e.ColWrap = f;
40
- e.ColGrow = u;
41
- e.Header = v;
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,MAUE,gBAAA,EAAC,MAAD;AAAA,EACE,WAPgB,CAClB,QACA,CACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAIR;AAAA,EACF,SAAA;AAAA,EACK,cAAA;AAAA,EACA,cAAA;AAAA,EAEb,UAAA;AACC,CAAA,GAgBF,IAAA,CAAW,EACf,UAAA,GACA,WAAA,IAAY,IACZ,UAAA,IAAW,IACX,SAAA,GACA,eAAA,GACA,cAAA,GACA,cAAA,GACA,eAAA,EAAA,MAWE,gBAAA,EAAC,MAAD;AAAA,EACE,WARe;AAAA,IACjB;AAAA,IACA,IAAW,gBAAgB;AAAA,IAC3B;AAAA,EACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAIR;AAAA,EACF,SAAA;AAAA,EACM,eAAA;AAAA,EACD,cAAA;AAAA,EACA,cAAA;AAAA,EACC,eAAA;AAAA,EAEd,UAAA;AACC,CAAA,GAUF,IAAA,CAAe,EACnB,UAAA,GACA,WAAA,IAAY,GAAA,MAUV,gBAAA,EAAC,OAAD;AAAA,EAAK,WANgB,CACrB,iBACA,CACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAGL;AAAA,EACb,UAAA;AACE,CAAA,GAUH,IAAA,CAAe,EACnB,UAAA,GACA,WAAA,IAAY,GAAA,MAUV,gBAAA,EAAC,OAAD;AAAA,EAAK,WANgB,CACrB,iBACA,CACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAGL;AAAA,EACb,UAAA;AACE,CAAA,GAUH,IAAA,CAAc,EAClB,UAAA,GACA,WAAA,IAAY,GAAA,MAYV,gBAAA,EAAC,MAAD;AAAA,EAAI,WAVgB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAGN;AAAA,EACZ,UAAA;AACC,CAAA,GAYF,IAAoB;AAC1B,EAAkB,MAAM;AACxB,EAAkB,UAAU;AAC5B,EAAkB,UAAU;AAC5B,EAAkB,SAAS"}
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 H } from "../../utils/remark-code-meta.js";
2
- import { rehypeCodeMeta as J } from "../../utils/rehype-code-meta.js";
3
- import O from "../pro/ArticleControl/ArticleControl2.js";
4
- import Q from "../pro/ArticleContextMenu/index.js";
5
- import { useMarkdownSource as U } from "./useMarkdownSource.js";
6
- import { useMermaidRenderer as V } from "./useMermaidRenderer.js";
7
- import { useMarkmapRenderer as X } from "./useMarkmapRenderer.js";
8
- import { getCodeStyle as Y } from "./codeThemes.js";
9
- import { createMarkdownComponents as Z } from "./markdownComponents.js";
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 i } from "react/jsx-runtime";
12
- import _ from "react-markdown";
13
- import T from "remark-gfm";
14
- import K from "remark-emoji";
15
- import b from "rehype-katex";
16
- import rr from "rehype-raw";
17
- import er from "rehype-slug";
18
- import tr from "remark-math";
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 Cr = ({ 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: n = !0, enableMarkmap: s = !0, enableMdx: w = !0, enableSlug: v = !0, slugPrefix: x = "", showArticleControl: A = !1, articleControlProps: L, showContextMenu: P = !1, contextMenuItems: R = [], containerId: z, className: m = "", s3Config: B, onLoad: D, onError: F }) => {
21
- const a = d(null), l = d(null), I = d(`markdown-${Math.random().toString(36).substr(2, 9)}`), { markdown: p, loading: W, error: c } = U(M, N, B, D, F);
22
- V(a, p, n), X(a, p, s);
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 = [H];
25
- return g && e.push(T), k && e.push(K), t && e.push(tr), e;
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 = [J];
32
- return v && e.push([er, { prefix: x }]), w && e.push(rr), t && e.push(b), e;
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(() => Y(u), [u]), G = o(() => Z({
39
- enableMermaid: n,
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
- n,
44
+ i,
45
45
  s,
46
46
  h,
47
47
  y
48
48
  ]);
49
- return W && j ? /* @__PURE__ */ r("div", {
49
+ if (W && j) return /* @__PURE__ */ r("div", {
50
50
  className: `flex items-center justify-center p-8 ${m}`,
51
- children: /* @__PURE__ */ i("div", {
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
- }) : c && $ ? f ? /* @__PURE__ */ r(C, { children: f(c) }) : /* @__PURE__ */ i("div", {
59
- className: `alert alert-error ${m}`,
60
- children: [/* @__PURE__ */ r("svg", {
61
- xmlns: "http://www.w3.org/2000/svg",
62
- className: "stroke-current shrink-0 h-6 w-6",
63
- fill: "none",
64
- viewBox: "0 0 24 24",
65
- children: /* @__PURE__ */ r("path", {
66
- strokeLinecap: "round",
67
- strokeLinejoin: "round",
68
- strokeWidth: "2",
69
- d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
70
- })
71
- }), /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("h3", {
72
- className: "font-bold",
73
- children: "加载失败"
74
- }), /* @__PURE__ */ r("div", {
75
- className: "text-xs",
76
- children: c.message
77
- })] })]
78
- }) : /* @__PURE__ */ i(C, { children: [
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: z || I.current,
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: p
93
+ children: c
90
94
  })
91
95
  })
92
96
  }),
93
- A && /* @__PURE__ */ r(O, {
97
+ A && /* @__PURE__ */ r(Q, {
94
98
  targetRef: l,
95
- ...L
99
+ ...I
96
100
  }),
97
- P && R.length > 0 && /* @__PURE__ */ r(Q, {
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
- Cr as default
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":"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"}
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 k } from "./codeThemes.js";
2
- import { parseCodeBlockMeta as M } from "./parseCodeBlockMeta.js";
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 w } from "react/jsx-runtime";
5
- import { Prism as F } from "react-syntax-highlighter";
6
- function C(f) {
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 n = a.match(/^(#{1,6})(\s+.*)$/);
11
- if (n) return /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ e("span", {
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: n[1]
13
+ children: r[1]
14
14
  }), /* @__PURE__ */ e("span", {
15
15
  style: { color: "#dcdcaa" },
16
- children: n[2]
16
+ children: r[2]
17
17
  })] }, c);
18
18
  }
19
19
  if (/^(\s*)([-*+]|\d+\.)\s/.test(a)) {
20
- const n = a.match(/^(\s*)([-*+]|\d+\.)(\s+.*)$/);
21
- if (n) return /* @__PURE__ */ w("div", { children: [
22
- /* @__PURE__ */ e("span", { children: n[1] }),
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: n[2]
25
+ children: r[2]
26
26
  }),
27
- /* @__PURE__ */ e("span", { children: n[3] })
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: ((n) => {
36
+ }) }, c) : /* @__PURE__ */ e("div", { children: ((r) => {
37
37
  const o = [];
38
38
  let t = 0;
39
- const r = /(\*\*[^*]+\*\*|\*[^*]+\*|`[^`]+`|\[([^\]]+)\]\(([^)]+)\))/g;
39
+ const n = /(\*\*[^*]+\*\*|\*[^*]+\*|`[^`]+`|\[([^\]]+)\]\(([^)]+)\))/g;
40
40
  let s;
41
- for (; (s = r.exec(n)) !== null; ) {
42
- s.index > t && o.push(n.substring(t, s.index));
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 = r.lastIndex;
62
+ }, s.index)), t = n.lastIndex;
63
63
  }
64
- return t < n.length && o.push(n.substring(t)), o.length > 0 ? o : n;
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 B(f) {
70
- const { enableMermaid: a, enableMarkmap: c, showLineNumbers: S, codeStyle: n } = f;
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: r, ...s }) {
73
- const l = t || "", b = /language-(\w+)/.exec(l), u = s.inline, g = b ? b[1] : "", i = M(s.dataMeta || s["data-meta"] || "", l);
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(r).replace(/\n$/, "")
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(r).replace(/\n$/, "")
80
+ "data-markmap-content": String(n).replace(/\n$/, "")
81
81
  });
82
82
  if (!u && b && g === "markdown") {
83
- const y = String(r).replace(/\n$/, "");
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: C(y)
98
+ children: T(y)
99
99
  })
100
100
  });
101
101
  }
102
102
  if (!u && b) {
103
- const y = k(i.theme, n);
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 = S;
106
- const x = i.startLineNumber || 1, L = i.highlightLines && i.highlightLines.length > 0 || m && m.length > 0, v = /* @__PURE__ */ e(F, {
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: x,
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: L,
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(r).replace(/\n$/, "")
146
+ children: String(n).replace(/\n$/, "")
147
147
  });
148
- return i.title ? /* @__PURE__ */ w("div", {
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: r
160
+ children: n
161
161
  });
162
162
  },
163
- table({ node: o, children: t, ...r }) {
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
- ...r,
168
+ ...n,
169
169
  children: t
170
170
  })
171
171
  });
172
172
  },
173
- thead({ node: o, children: t, ...r }) {
173
+ thead({ node: o, children: t, ...n }) {
174
174
  return /* @__PURE__ */ e("thead", {
175
175
  className: "bg-base-200",
176
- ...r,
176
+ ...n,
177
177
  children: t
178
178
  });
179
179
  },
180
- tbody({ node: o, children: t, ...r }) {
180
+ tbody({ node: o, children: t, ...n }) {
181
181
  return /* @__PURE__ */ e("tbody", {
182
- ...r,
182
+ ...n,
183
183
  children: t
184
184
  });
185
185
  },
186
- tr({ node: o, children: t, ...r }) {
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
- ...r,
189
+ ...n,
190
190
  children: t
191
191
  });
192
192
  },
193
- th({ node: o, children: t, ...r }) {
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
- ...r,
196
+ ...n,
197
197
  children: t
198
198
  });
199
199
  },
200
- td({ node: o, children: t, ...r }) {
200
+ td({ node: o, children: t, ...n }) {
201
201
  return /* @__PURE__ */ e("td", {
202
202
  className: "px-4 py-3 text-base-content",
203
- ...r,
203
+ ...n,
204
204
  children: t
205
205
  });
206
206
  }
207
207
  };
208
208
  }
209
209
  export {
210
- B as createMarkdownComponents
210
+ O as createMarkdownComponents
211
211
  };
212
212
 
213
213
  //# sourceMappingURL=markdownComponents.js.map