@lobehub/ui 4.33.4 → 4.34.1

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 (600) hide show
  1. package/README.md +3 -3
  2. package/es/A/index.mjs.map +1 -1
  3. package/es/Accordion/Accordion.d.mts +2 -2
  4. package/es/Accordion/Accordion.mjs +1 -1
  5. package/es/Accordion/Accordion.mjs.map +1 -1
  6. package/es/Accordion/AccordionItem.d.mts +2 -2
  7. package/es/Accordion/AccordionItem.mjs +13 -13
  8. package/es/Accordion/AccordionItem.mjs.map +1 -1
  9. package/es/Accordion/context.mjs +2 -2
  10. package/es/Accordion/context.mjs.map +1 -1
  11. package/es/ActionIcon/ActionIcon.d.mts +2 -2
  12. package/es/ActionIcon/ActionIcon.mjs +2 -2
  13. package/es/ActionIcon/ActionIcon.mjs.map +1 -1
  14. package/es/ActionIcon/style.mjs.map +1 -1
  15. package/es/ActionIconGroup/ActionIconGroup.mjs +3 -3
  16. package/es/ActionIconGroup/ActionIconGroup.mjs.map +1 -1
  17. package/es/ActionIconGroup/style.mjs.map +1 -1
  18. package/es/Alert/Alert.d.mts +2 -2
  19. package/es/Alert/Alert.mjs +6 -6
  20. package/es/Alert/Alert.mjs.map +1 -1
  21. package/es/Alert/style.mjs.map +1 -1
  22. package/es/AutoComplete/Select.mjs +1 -1
  23. package/es/AutoComplete/Select.mjs.map +1 -1
  24. package/es/AutoComplete/style.mjs.map +1 -1
  25. package/es/Avatar/Avatar.mjs +4 -4
  26. package/es/Avatar/Avatar.mjs.map +1 -1
  27. package/es/Avatar/AvatarGroup/index.d.mts +2 -2
  28. package/es/Avatar/AvatarGroup/index.mjs +5 -5
  29. package/es/Avatar/AvatarGroup/index.mjs.map +1 -1
  30. package/es/Avatar/index.mjs.map +1 -1
  31. package/es/Avatar/style.mjs.map +1 -1
  32. package/es/Avatar/utils.mjs.map +1 -1
  33. package/es/Block/style.mjs.map +1 -1
  34. package/es/Burger/Burger.d.mts +2 -2
  35. package/es/Burger/Burger.mjs +2 -2
  36. package/es/Burger/Burger.mjs.map +1 -1
  37. package/es/Burger/type.d.mts +1 -1
  38. package/es/Button/Button.mjs +7 -7
  39. package/es/Button/Button.mjs.map +1 -1
  40. package/es/Button/style.mjs.map +1 -1
  41. package/es/Checkbox/Checkbox.mjs +6 -6
  42. package/es/Checkbox/Checkbox.mjs.map +1 -1
  43. package/es/Checkbox/CheckboxGroup.mjs +2 -2
  44. package/es/Checkbox/CheckboxGroup.mjs.map +1 -1
  45. package/es/Checkbox/index.mjs.map +1 -1
  46. package/es/CodeDiff/CodeDiff.d.mts +2 -2
  47. package/es/CodeDiff/CodeDiff.mjs +3 -3
  48. package/es/CodeDiff/CodeDiff.mjs.map +1 -1
  49. package/es/CodeDiff/PatchDiff.d.mts +2 -2
  50. package/es/CodeDiff/PatchDiff.mjs +3 -3
  51. package/es/CodeDiff/PatchDiff.mjs.map +1 -1
  52. package/es/CodeDiff/style.mjs.map +1 -1
  53. package/es/CodeEditor/CodeEditor.d.mts +2 -2
  54. package/es/CodeEditor/CodeEditor.mjs +3 -3
  55. package/es/CodeEditor/CodeEditor.mjs.map +1 -1
  56. package/es/CodeEditor/style.mjs.map +1 -1
  57. package/es/Collapse/Collapse.d.mts +2 -2
  58. package/es/Collapse/Collapse.mjs +5 -5
  59. package/es/Collapse/Collapse.mjs.map +1 -1
  60. package/es/Collapse/style.mjs.map +1 -1
  61. package/es/ColorSwatches/ColorSwatches.mjs +9 -9
  62. package/es/ColorSwatches/ColorSwatches.mjs.map +1 -1
  63. package/es/ConfigProvider/index.d.mts +3 -3
  64. package/es/ConfigProvider/index.mjs.map +1 -1
  65. package/es/ContextMenu/ContextMenuHost.d.mts +3 -3
  66. package/es/ContextMenu/ContextMenuHost.mjs +10 -3
  67. package/es/ContextMenu/ContextMenuHost.mjs.map +1 -1
  68. package/es/ContextMenu/ContextMenuTrigger.mjs.map +1 -1
  69. package/es/ContextMenu/renderItems.d.mts +1 -1
  70. package/es/ContextMenu/renderItems.mjs +39 -14
  71. package/es/ContextMenu/renderItems.mjs.map +1 -1
  72. package/es/ContextMenu/store.d.mts +3 -1
  73. package/es/ContextMenu/store.mjs +1 -0
  74. package/es/ContextMenu/store.mjs.map +1 -1
  75. package/es/CopyButton/CopyButton.d.mts +2 -2
  76. package/es/DatePicker/DatePicker.d.mts +2 -2
  77. package/es/DatePicker/DatePicker.mjs +1 -1
  78. package/es/DatePicker/DatePicker.mjs.map +1 -1
  79. package/es/DatePicker/style.mjs.map +1 -1
  80. package/es/DraggablePanel/DraggablePanel.mjs +7 -7
  81. package/es/DraggablePanel/DraggablePanel.mjs.map +1 -1
  82. package/es/DraggablePanel/components/DraggablePanelBody.d.mts +2 -2
  83. package/es/DraggablePanel/components/DraggablePanelContainer.d.mts +2 -2
  84. package/es/DraggablePanel/components/DraggablePanelFooter.d.mts +2 -2
  85. package/es/DraggablePanel/components/DraggablePanelFooter.mjs +1 -1
  86. package/es/DraggablePanel/components/DraggablePanelFooter.mjs.map +1 -1
  87. package/es/DraggablePanel/components/DraggablePanelHeader.d.mts +2 -2
  88. package/es/DraggablePanel/components/DraggablePanelHeader.mjs +5 -5
  89. package/es/DraggablePanel/components/DraggablePanelHeader.mjs.map +1 -1
  90. package/es/DraggablePanel/index.mjs +1 -1
  91. package/es/DraggablePanel/index.mjs.map +1 -1
  92. package/es/DraggablePanel/style.mjs.map +1 -1
  93. package/es/DraggableSideNav/DraggableSideNav.d.mts +2 -2
  94. package/es/DraggableSideNav/DraggableSideNav.mjs +3 -3
  95. package/es/DraggableSideNav/DraggableSideNav.mjs.map +1 -1
  96. package/es/Drawer/Drawer.d.mts +2 -2
  97. package/es/Drawer/Drawer.mjs +5 -5
  98. package/es/Drawer/Drawer.mjs.map +1 -1
  99. package/es/Dropdown/Dropdown.d.mts +2 -2
  100. package/es/DropdownMenu/DropdownMenu.d.mts +2 -2
  101. package/es/DropdownMenu/DropdownMenu.mjs +7 -3
  102. package/es/DropdownMenu/DropdownMenu.mjs.map +1 -1
  103. package/es/DropdownMenu/atoms.d.mts +33 -17
  104. package/es/DropdownMenu/atoms.mjs +20 -6
  105. package/es/DropdownMenu/atoms.mjs.map +1 -1
  106. package/es/DropdownMenu/index.d.mts +2 -2
  107. package/es/DropdownMenu/index.mjs +2 -2
  108. package/es/DropdownMenu/renderItems.d.mts +1 -1
  109. package/es/DropdownMenu/renderItems.mjs +36 -14
  110. package/es/DropdownMenu/renderItems.mjs.map +1 -1
  111. package/es/DropdownMenu/type.d.mts +8 -1
  112. package/es/EditableText/ControlInput.mjs +29 -29
  113. package/es/EditableText/ControlInput.mjs.map +1 -1
  114. package/es/EditableText/EditableText.d.mts +2 -2
  115. package/es/EditableText/EditableText.mjs +14 -14
  116. package/es/EditableText/EditableText.mjs.map +1 -1
  117. package/es/EditorSlashMenu/EditorSlashMenu.mjs +2 -2
  118. package/es/EditorSlashMenu/EditorSlashMenu.mjs.map +1 -1
  119. package/es/EditorSlashMenu/MenuItemRenderer.mjs +1 -1
  120. package/es/EditorSlashMenu/MenuItemRenderer.mjs.map +1 -1
  121. package/es/EditorSlashMenu/atoms.d.mts +10 -1
  122. package/es/EditorSlashMenu/atoms.mjs +3 -4
  123. package/es/EditorSlashMenu/atoms.mjs.map +1 -1
  124. package/es/EmojiPicker/AvatarUploader.mjs +5 -5
  125. package/es/EmojiPicker/AvatarUploader.mjs.map +1 -1
  126. package/es/EmojiPicker/EmojiPicker.d.mts +2 -2
  127. package/es/EmojiPicker/EmojiPicker.mjs +20 -20
  128. package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
  129. package/es/Empty/Empty.mjs +2 -2
  130. package/es/Empty/Empty.mjs.map +1 -1
  131. package/es/FileTypeIcon/components/FileIcon.mjs.map +1 -1
  132. package/es/FileTypeIcon/components/FolderIcon.mjs.map +1 -1
  133. package/es/Flex/FlexBasic.d.mts +2 -2
  134. package/es/FluentEmoji/FluentEmoji.mjs +1 -1
  135. package/es/FluentEmoji/FluentEmoji.mjs.map +1 -1
  136. package/es/FontLoader/index.d.mts +2 -2
  137. package/es/Footer/Footer.d.mts +2 -2
  138. package/es/Footer/Footer.mjs +1 -1
  139. package/es/Footer/Footer.mjs.map +1 -1
  140. package/es/Form/Form.mjs +12 -12
  141. package/es/Form/Form.mjs.map +1 -1
  142. package/es/Form/components/FormGroup.d.mts +2 -2
  143. package/es/Form/components/FormGroup.mjs +5 -5
  144. package/es/Form/components/FormGroup.mjs.map +1 -1
  145. package/es/Form/components/FormItem.d.mts +2 -2
  146. package/es/Form/components/FormProvider.mjs.map +1 -1
  147. package/es/Form/components/FormSubmitFooter.d.mts +2 -2
  148. package/es/Form/components/FormSubmitFooter.mjs +5 -5
  149. package/es/Form/components/FormSubmitFooter.mjs.map +1 -1
  150. package/es/Form/components/FormTitle.mjs +1 -1
  151. package/es/Form/components/FormTitle.mjs.map +1 -1
  152. package/es/Form/components/merge.mjs.map +1 -1
  153. package/es/Form/index.mjs +1 -1
  154. package/es/Form/index.mjs.map +1 -1
  155. package/es/Form/style.mjs.map +1 -1
  156. package/es/Form/type.d.mts +1 -1
  157. package/es/FormModal/FormModal.d.mts +2 -2
  158. package/es/FormModal/FormModal.mjs +10 -10
  159. package/es/FormModal/FormModal.mjs.map +1 -1
  160. package/es/GroupAvatar/style.mjs.map +1 -1
  161. package/es/GroupAvatar/type.d.mts +1 -1
  162. package/es/GuideCard/GuideCard.d.mts +2 -2
  163. package/es/GuideCard/style.mjs.map +1 -1
  164. package/es/Header/Header.d.mts +2 -2
  165. package/es/Header/Header.mjs +5 -5
  166. package/es/Header/Header.mjs.map +1 -1
  167. package/es/Highlighter/FullFeatured.mjs +9 -9
  168. package/es/Highlighter/FullFeatured.mjs.map +1 -1
  169. package/es/Highlighter/Highlighter.d.mts +2 -2
  170. package/es/Highlighter/Highlighter.mjs +4 -4
  171. package/es/Highlighter/Highlighter.mjs.map +1 -1
  172. package/es/Highlighter/LangSelect.mjs +6 -6
  173. package/es/Highlighter/LangSelect.mjs.map +1 -1
  174. package/es/Highlighter/SyntaxHighlighter/StaticRenderer.mjs +2 -2
  175. package/es/Highlighter/SyntaxHighlighter/StaticRenderer.mjs.map +1 -1
  176. package/es/Highlighter/SyntaxHighlighter/index.d.mts +2 -2
  177. package/es/Highlighter/SyntaxHighlighter/style.mjs.map +1 -1
  178. package/es/Highlighter/style.mjs.map +1 -1
  179. package/es/Hotkey/Hotkey.d.mts +2 -2
  180. package/es/Hotkey/Hotkey.mjs +5 -5
  181. package/es/Hotkey/Hotkey.mjs.map +1 -1
  182. package/es/Hotkey/style.mjs.map +1 -1
  183. package/es/HotkeyInput/HotkeyInput.d.mts +2 -2
  184. package/es/HotkeyInput/HotkeyInput.mjs +8 -8
  185. package/es/HotkeyInput/HotkeyInput.mjs.map +1 -1
  186. package/es/HotkeyInput/style.mjs.map +1 -1
  187. package/es/Icon/Icon.d.mts +2 -2
  188. package/es/Icon/Icon.mjs.map +1 -1
  189. package/es/Icon/components/IconProvider.d.mts +3 -3
  190. package/es/Icon/components/IconProvider.mjs.map +1 -1
  191. package/es/Icon/style.mjs.map +1 -1
  192. package/es/Image/Image.mjs +3 -3
  193. package/es/Image/Image.mjs.map +1 -1
  194. package/es/Image/PreviewGroup.d.mts +2 -2
  195. package/es/Image/PreviewGroup.mjs.map +1 -1
  196. package/es/Image/components/Preview.mjs.map +1 -1
  197. package/es/Image/components/Toolbar.mjs +1 -1
  198. package/es/Image/components/Toolbar.mjs.map +1 -1
  199. package/es/Image/components/usePreviewGroup.mjs.map +1 -1
  200. package/es/Image/style.mjs.map +1 -1
  201. package/es/ImageSelect/ImageSelect.d.mts +2 -2
  202. package/es/ImageSelect/ImageSelect.mjs +5 -5
  203. package/es/ImageSelect/ImageSelect.mjs.map +1 -1
  204. package/es/Img/index.mjs.map +1 -1
  205. package/es/Input/Input.d.mts +2 -2
  206. package/es/Input/Input.mjs +2 -2
  207. package/es/Input/Input.mjs.map +1 -1
  208. package/es/Input/InputNumber.d.mts +2 -2
  209. package/es/Input/InputNumber.mjs +2 -2
  210. package/es/Input/InputNumber.mjs.map +1 -1
  211. package/es/Input/InputOPT.d.mts +2 -2
  212. package/es/Input/InputOPT.mjs +2 -2
  213. package/es/Input/InputOPT.mjs.map +1 -1
  214. package/es/Input/InputPassword.d.mts +2 -2
  215. package/es/Input/InputPassword.mjs +2 -2
  216. package/es/Input/InputPassword.mjs.map +1 -1
  217. package/es/Input/TextArea.d.mts +2 -2
  218. package/es/Input/TextArea.mjs +2 -2
  219. package/es/Input/TextArea.mjs.map +1 -1
  220. package/es/Input/style.mjs.map +1 -1
  221. package/es/Layout/Layout.mjs +1 -1
  222. package/es/Layout/Layout.mjs.map +1 -1
  223. package/es/Layout/components/LayoutFooter.d.mts +2 -2
  224. package/es/Layout/components/LayoutHeader.d.mts +2 -2
  225. package/es/Layout/components/LayoutMain.d.mts +2 -2
  226. package/es/Layout/components/LayoutSidebar.d.mts +2 -2
  227. package/es/Layout/components/LayoutSidebarInner.d.mts +2 -2
  228. package/es/Layout/components/LayoutToc.d.mts +2 -2
  229. package/es/Layout/index.mjs.map +1 -1
  230. package/es/List/List.mjs +6 -6
  231. package/es/List/List.mjs.map +1 -1
  232. package/es/List/ListItem/index.d.mts +2 -2
  233. package/es/List/ListItem/index.mjs +11 -11
  234. package/es/List/ListItem/index.mjs.map +1 -1
  235. package/es/LobeSelect/LobeSelect.d.mts +2 -2
  236. package/es/LobeSelect/LobeSelect.mjs +16 -16
  237. package/es/LobeSelect/LobeSelect.mjs.map +1 -1
  238. package/es/LobeSelect/atoms.d.mts +19 -19
  239. package/es/LobeSelect/atoms.mjs +1 -1
  240. package/es/LobeSelect/atoms.mjs.map +1 -1
  241. package/es/LobeSwitch/LobeSwitch.d.mts +2 -2
  242. package/es/LobeSwitch/LobeSwitch.mjs +2 -2
  243. package/es/LobeSwitch/LobeSwitch.mjs.map +1 -1
  244. package/es/LobeSwitch/atoms.d.mts +4 -4
  245. package/es/LobeSwitch/atoms.mjs +8 -8
  246. package/es/LobeSwitch/atoms.mjs.map +1 -1
  247. package/es/Markdown/Markdown.d.mts +2 -2
  248. package/es/Markdown/Markdown.mjs +3 -3
  249. package/es/Markdown/Markdown.mjs.map +1 -1
  250. package/es/Markdown/SyntaxMarkdown/StreamdownRender.mjs.map +1 -1
  251. package/es/Markdown/Typography.d.mts +2 -2
  252. package/es/Markdown/components/CodeBlock.mjs.map +1 -1
  253. package/es/Markdown/components/Footnotes.mjs +3 -3
  254. package/es/Markdown/components/Footnotes.mjs.map +1 -1
  255. package/es/Markdown/components/MarkdownProvider.mjs.map +1 -1
  256. package/es/Markdown/components/SearchResultCards/SearchResultCard.mjs +3 -3
  257. package/es/Markdown/components/SearchResultCards/SearchResultCard.mjs.map +1 -1
  258. package/es/Markdown/components/SearchResultCards/index.d.mts +2 -2
  259. package/es/Markdown/components/SearchResultCards/index.mjs +1 -1
  260. package/es/Markdown/components/SearchResultCards/index.mjs.map +1 -1
  261. package/es/Markdown/plugins/rehypeCustomFootnotes.mjs.map +1 -1
  262. package/es/Markdown/plugins/rehypeKatexDir.mjs.map +1 -1
  263. package/es/Markdown/plugins/rehypeStreamAnimated.mjs.map +1 -1
  264. package/es/Markdown/plugins/remarkColor.mjs +1 -1
  265. package/es/Markdown/plugins/remarkColor.mjs.map +1 -1
  266. package/es/Markdown/plugins/remarkCustomFootnotes.mjs.map +1 -1
  267. package/es/Markdown/plugins/remarkVideo.mjs +3 -3
  268. package/es/Markdown/plugins/remarkVideo.mjs.map +1 -1
  269. package/es/Markdown/style.mjs.map +1 -1
  270. package/es/MaskShadow/MaskShadow.d.mts +2 -2
  271. package/es/MaskShadow/style.mjs.map +1 -1
  272. package/es/Menu/Menu.d.mts +2 -2
  273. package/es/Menu/Menu.mjs.map +1 -1
  274. package/es/Menu/checkboxItem.d.mts +1 -0
  275. package/es/Menu/index.d.mts +2 -2
  276. package/es/Menu/renderUtils.d.mts +4 -1
  277. package/es/Menu/renderUtils.mjs.map +1 -1
  278. package/es/Menu/sharedStyle.d.mts +4 -0
  279. package/es/Menu/sharedStyle.mjs +24 -0
  280. package/es/Menu/sharedStyle.mjs.map +1 -1
  281. package/es/Menu/style.mjs.map +1 -1
  282. package/es/Menu/switchItem.d.mts +1 -0
  283. package/es/Menu/type.d.mts +3 -1
  284. package/es/Mermaid/FullFeatured.mjs +7 -7
  285. package/es/Mermaid/FullFeatured.mjs.map +1 -1
  286. package/es/Mermaid/Mermaid.d.mts +2 -2
  287. package/es/Mermaid/Mermaid.mjs +1 -1
  288. package/es/Mermaid/Mermaid.mjs.map +1 -1
  289. package/es/Mermaid/SyntaxMermaid/StaticMermaid.mjs +3 -3
  290. package/es/Mermaid/SyntaxMermaid/StaticMermaid.mjs.map +1 -1
  291. package/es/Mermaid/SyntaxMermaid/StreamMermaid.mjs +3 -3
  292. package/es/Mermaid/SyntaxMermaid/StreamMermaid.mjs.map +1 -1
  293. package/es/Mermaid/SyntaxMermaid/index.d.mts +2 -2
  294. package/es/Mermaid/SyntaxMermaid/style.mjs.map +1 -1
  295. package/es/Modal/Modal.d.mts +2 -2
  296. package/es/Modal/Modal.mjs +25 -25
  297. package/es/Modal/Modal.mjs.map +1 -1
  298. package/es/Modal/ModalProvider.d.mts +2 -2
  299. package/es/Modal/ModalStackItem.mjs +1 -1
  300. package/es/Modal/ModalStackItem.mjs.map +1 -1
  301. package/es/Modal/imperative.d.mts +2 -2
  302. package/es/Modal/imperative.mjs +5 -5
  303. package/es/Modal/imperative.mjs.map +1 -1
  304. package/es/MotionProvider/index.d.mts +2 -2
  305. package/es/MotionProvider/index.mjs.map +1 -1
  306. package/es/Popover/ArrowIcon.d.mts +2 -2
  307. package/es/Popover/Popover.mjs +2 -2
  308. package/es/Popover/Popover.mjs.map +1 -1
  309. package/es/Popover/PopoverGroup.mjs +2 -2
  310. package/es/Popover/PopoverGroup.mjs.map +1 -1
  311. package/es/Popover/PopoverInGroup.mjs +2 -2
  312. package/es/Popover/PopoverInGroup.mjs.map +1 -1
  313. package/es/Popover/PopoverStandalone.mjs +1 -1
  314. package/es/Popover/PopoverStandalone.mjs.map +1 -1
  315. package/es/Popover/atoms.d.mts +9 -9
  316. package/es/Popover/atoms.mjs +1 -1
  317. package/es/Popover/atoms.mjs.map +1 -1
  318. package/es/Popover/context.d.mts +2 -2
  319. package/es/Popover/context.mjs.map +1 -1
  320. package/es/Popover/groupContext.mjs.map +1 -1
  321. package/es/ScrollArea/atoms.d.mts +7 -7
  322. package/es/ScrollArea/type.d.mts +1 -1
  323. package/es/ScrollShadow/style.mjs.map +1 -1
  324. package/es/ScrollShadow/useScrollOverflow.mjs.map +1 -1
  325. package/es/SearchBar/SearchBar.d.mts +2 -2
  326. package/es/SearchBar/SearchBar.mjs +12 -12
  327. package/es/SearchBar/SearchBar.mjs.map +1 -1
  328. package/es/Segmented/Segmented.d.mts +2 -2
  329. package/es/Segmented/style.mjs.map +1 -1
  330. package/es/Select/Select.d.mts +2 -2
  331. package/es/Select/Select.mjs +2 -2
  332. package/es/Select/Select.mjs.map +1 -1
  333. package/es/Select/style.mjs.map +1 -1
  334. package/es/SideNav/SideNav.d.mts +2 -2
  335. package/es/Skeleton/Skeleton.mjs +1 -1
  336. package/es/Skeleton/Skeleton.mjs.map +1 -1
  337. package/es/Skeleton/SkeletonBlock.mjs.map +1 -1
  338. package/es/Skeleton/SkeletonTags.mjs +3 -3
  339. package/es/Skeleton/SkeletonTags.mjs.map +1 -1
  340. package/es/Skeleton/SkeletonTitle.mjs +1 -1
  341. package/es/Skeleton/SkeletonTitle.mjs.map +1 -1
  342. package/es/SliderWithInput/SliderWithInput.d.mts +2 -2
  343. package/es/SliderWithInput/SliderWithInput.mjs +3 -3
  344. package/es/SliderWithInput/SliderWithInput.mjs.map +1 -1
  345. package/es/Snippet/Snippet.mjs +1 -1
  346. package/es/Snippet/Snippet.mjs.map +1 -1
  347. package/es/Snippet/style.mjs.map +1 -1
  348. package/es/SortableList/SortableList.d.mts +2 -2
  349. package/es/SortableList/SortableList.mjs +1 -1
  350. package/es/SortableList/SortableList.mjs.map +1 -1
  351. package/es/SortableList/components/DragHandle.d.mts +2 -2
  352. package/es/SortableList/components/DragHandle.mjs +3 -3
  353. package/es/SortableList/components/DragHandle.mjs.map +1 -1
  354. package/es/SortableList/components/SortableItem.d.mts +2 -2
  355. package/es/SortableList/components/SortableItem.mjs +1 -1
  356. package/es/SortableList/components/SortableItem.mjs.map +1 -1
  357. package/es/SortableList/components/SortableOverlay.mjs.map +1 -1
  358. package/es/SortableList/style.mjs.map +1 -1
  359. package/es/SortableList/type.d.mts +4 -4
  360. package/es/Tabs/style.mjs.map +1 -1
  361. package/es/Tag/Tag.mjs +2 -2
  362. package/es/Tag/Tag.mjs.map +1 -1
  363. package/es/Tag/styles.mjs.map +1 -1
  364. package/es/Text/Text.mjs +23 -24
  365. package/es/Text/Text.mjs.map +1 -1
  366. package/es/ThemeProvider/ConfigProvider.mjs.map +1 -1
  367. package/es/ThemeProvider/GlobalStyle/antdOverride.mjs.map +1 -1
  368. package/es/ThemeProvider/GlobalStyle/global.mjs.map +1 -1
  369. package/es/ThemeProvider/ThemeProvider.d.mts +2 -2
  370. package/es/ThemeProvider/ThemeProvider.mjs.map +1 -1
  371. package/es/ThemeSwitch/ThemeSwitch.mjs +4 -4
  372. package/es/ThemeSwitch/ThemeSwitch.mjs.map +1 -1
  373. package/es/Toast/Toast.mjs +3 -3
  374. package/es/Toast/Toast.mjs.map +1 -1
  375. package/es/Toast/imperative.d.mts +3 -3
  376. package/es/Toast/imperative.mjs +1 -1
  377. package/es/Toast/imperative.mjs.map +1 -1
  378. package/es/Toc/Toc.d.mts +2 -2
  379. package/es/Toc/Toc.mjs.map +1 -1
  380. package/es/Toc/TocMobile.mjs +4 -4
  381. package/es/Toc/TocMobile.mjs.map +1 -1
  382. package/es/Toc/utils.mjs.map +1 -1
  383. package/es/Tooltip/Tooltip.mjs +2 -2
  384. package/es/Tooltip/Tooltip.mjs.map +1 -1
  385. package/es/Tooltip/TooltipContent.mjs.map +1 -1
  386. package/es/Tooltip/TooltipGroup.mjs +3 -3
  387. package/es/Tooltip/TooltipGroup.mjs.map +1 -1
  388. package/es/Tooltip/TooltipInGroup.mjs +3 -3
  389. package/es/Tooltip/TooltipInGroup.mjs.map +1 -1
  390. package/es/Tooltip/TooltipStandalone.mjs +2 -2
  391. package/es/Tooltip/TooltipStandalone.mjs.map +1 -1
  392. package/es/Tooltip/groupContext.mjs.map +1 -1
  393. package/es/Tooltip/type.d.mts +1 -1
  394. package/es/Video/index.d.mts +2 -2
  395. package/es/Video/index.mjs +8 -8
  396. package/es/Video/index.mjs.map +1 -1
  397. package/es/Video/style.mjs.map +1 -1
  398. package/es/awesome/AuroraBackground/AuroraBackground.d.mts +2 -2
  399. package/es/awesome/BottomGradientButton/BottomGradientButton.d.mts +2 -2
  400. package/es/awesome/BottomGradientButton/BottomGradientButton.mjs +1 -1
  401. package/es/awesome/BottomGradientButton/BottomGradientButton.mjs.map +1 -1
  402. package/es/awesome/Features/FeatureItem.mjs +1 -1
  403. package/es/awesome/Features/FeatureItem.mjs.map +1 -1
  404. package/es/awesome/Features/Features.d.mts +2 -2
  405. package/es/awesome/Features/Features.mjs +4 -4
  406. package/es/awesome/Features/Features.mjs.map +1 -1
  407. package/es/awesome/Features/type.d.mts +1 -1
  408. package/es/awesome/Giscus/Giscus.d.mts +2 -2
  409. package/es/awesome/GradientButton/GradientButton.d.mts +2 -2
  410. package/es/awesome/GradientButton/GradientButton.mjs +2 -2
  411. package/es/awesome/GradientButton/GradientButton.mjs.map +1 -1
  412. package/es/awesome/GridBackground/GridBackground.d.mts +2 -2
  413. package/es/awesome/GridBackground/GridShowcase.d.mts +2 -2
  414. package/es/awesome/GridBackground/GridShowcase.mjs +5 -5
  415. package/es/awesome/GridBackground/GridShowcase.mjs.map +1 -1
  416. package/es/awesome/GridBackground/components/Grid.mjs.map +1 -1
  417. package/es/awesome/Hero/Hero.d.mts +2 -2
  418. package/es/awesome/Hero/Hero.mjs +3 -3
  419. package/es/awesome/Hero/Hero.mjs.map +1 -1
  420. package/es/awesome/Hero/type.d.mts +1 -1
  421. package/es/awesome/Spline/ParentSize.mjs.map +1 -1
  422. package/es/awesome/Spline/Spine.d.mts +2 -2
  423. package/es/awesome/Spline/Spine.mjs +2 -2
  424. package/es/awesome/Spline/Spine.mjs.map +1 -1
  425. package/es/awesome/Spotlight/Spotlight.d.mts +2 -2
  426. package/es/awesome/SpotlightCard/SpotlightCard.d.mts +2 -2
  427. package/es/awesome/TypewriterEffect/TypewriterEffect.d.mts +2 -2
  428. package/es/brand/BrandLoading/index.mjs.map +1 -1
  429. package/es/brand/LobeChat/index.d.mts +2 -2
  430. package/es/brand/LobeChat/index.mjs +3 -3
  431. package/es/brand/LobeChat/index.mjs.map +1 -1
  432. package/es/brand/LobeChatText/index.mjs.map +1 -1
  433. package/es/brand/LobeHub/index.d.mts +2 -2
  434. package/es/brand/LobeHub/index.mjs +3 -3
  435. package/es/brand/LobeHub/index.mjs.map +1 -1
  436. package/es/brand/LobeHubText/index.mjs.map +1 -1
  437. package/es/brand/Logo3d/index.mjs.map +1 -1
  438. package/es/brand/LogoThree/Loading.mjs +2 -2
  439. package/es/brand/LogoThree/Loading.mjs.map +1 -1
  440. package/es/brand/LogoThree/LogoSpline.d.mts +2 -2
  441. package/es/brand/LogoThree/LogoSpline.mjs +1 -1
  442. package/es/brand/LogoThree/LogoSpline.mjs.map +1 -1
  443. package/es/brand/LogoThree/index.d.mts +2 -2
  444. package/es/brand/LogoThree/index.mjs +4 -4
  445. package/es/brand/LogoThree/index.mjs.map +1 -1
  446. package/es/brand/components/Divider.mjs.map +1 -1
  447. package/es/chat/BackBottom/BackBottom.d.mts +2 -2
  448. package/es/chat/BackBottom/BackBottom.mjs +2 -2
  449. package/es/chat/BackBottom/BackBottom.mjs.map +1 -1
  450. package/es/chat/ChatHeader/ChatHeader.mjs +6 -6
  451. package/es/chat/ChatHeader/ChatHeader.mjs.map +1 -1
  452. package/es/chat/ChatHeader/ChatHeaderTitle.mjs +4 -4
  453. package/es/chat/ChatHeader/ChatHeaderTitle.mjs.map +1 -1
  454. package/es/chat/ChatInputArea/ChatInputArea.mjs +3 -3
  455. package/es/chat/ChatInputArea/ChatInputArea.mjs.map +1 -1
  456. package/es/chat/ChatInputArea/components/ChatInputActionBar.mjs +3 -3
  457. package/es/chat/ChatInputArea/components/ChatInputActionBar.mjs.map +1 -1
  458. package/es/chat/ChatInputArea/components/ChatInputAreaInner.d.mts +2 -2
  459. package/es/chat/ChatInputArea/components/ChatInputAreaInner.mjs +3 -3
  460. package/es/chat/ChatInputArea/components/ChatInputAreaInner.mjs.map +1 -1
  461. package/es/chat/ChatInputArea/components/ChatSendButton.mjs +5 -5
  462. package/es/chat/ChatInputArea/components/ChatSendButton.mjs.map +1 -1
  463. package/es/chat/ChatItem/ChatItem.d.mts +2 -2
  464. package/es/chat/ChatItem/ChatItem.mjs +9 -9
  465. package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
  466. package/es/chat/ChatItem/components/Actions.mjs.map +1 -1
  467. package/es/chat/ChatItem/components/Avatar.mjs +2 -2
  468. package/es/chat/ChatItem/components/Avatar.mjs.map +1 -1
  469. package/es/chat/ChatItem/components/ErrorContent.mjs +1 -1
  470. package/es/chat/ChatItem/components/ErrorContent.mjs.map +1 -1
  471. package/es/chat/ChatItem/components/Loading.mjs +2 -2
  472. package/es/chat/ChatItem/components/Loading.mjs.map +1 -1
  473. package/es/chat/ChatItem/components/MessageContent.mjs +4 -4
  474. package/es/chat/ChatItem/components/MessageContent.mjs.map +1 -1
  475. package/es/chat/ChatItem/components/Title.mjs.map +1 -1
  476. package/es/chat/ChatList/ChatList.d.mts +2 -2
  477. package/es/chat/ChatList/components/ChatListItem.mjs +14 -14
  478. package/es/chat/ChatList/components/ChatListItem.mjs.map +1 -1
  479. package/es/chat/ChatList/type.d.mts +1 -1
  480. package/es/chat/EditableMessage/EditableMessage.d.mts +2 -2
  481. package/es/chat/EditableMessage/EditableMessage.mjs +15 -15
  482. package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
  483. package/es/chat/EditableMessageList/EditableMessageList.d.mts +2 -2
  484. package/es/chat/EditableMessageList/EditableMessageList.mjs +17 -17
  485. package/es/chat/EditableMessageList/EditableMessageList.mjs.map +1 -1
  486. package/es/chat/MessageInput/MessageInput.d.mts +2 -2
  487. package/es/chat/MessageInput/MessageInput.mjs +8 -8
  488. package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
  489. package/es/chat/MessageModal/MessageModal.d.mts +2 -2
  490. package/es/chat/MessageModal/MessageModal.mjs +12 -12
  491. package/es/chat/MessageModal/MessageModal.mjs.map +1 -1
  492. package/es/chat/TokenTag/TokenTag.mjs +2 -2
  493. package/es/chat/TokenTag/TokenTag.mjs.map +1 -1
  494. package/es/chat/types/error.mjs.map +1 -1
  495. package/es/color/ColorScales/ScaleRow.mjs +3 -3
  496. package/es/color/ColorScales/ScaleRow.mjs.map +1 -1
  497. package/es/color/ColorScales/index.d.mts +2 -2
  498. package/es/color/ColorScales/index.mjs +4 -4
  499. package/es/color/ColorScales/index.mjs.map +1 -1
  500. package/es/color/CssVar/ScaleRow.mjs +4 -4
  501. package/es/color/CssVar/ScaleRow.mjs.map +1 -1
  502. package/es/color/CssVar/VarRow.mjs +2 -2
  503. package/es/color/CssVar/VarRow.mjs.map +1 -1
  504. package/es/color/CssVar/index.d.mts +2 -2
  505. package/es/color/CssVar/index.mjs +4 -4
  506. package/es/color/CssVar/index.mjs.map +1 -1
  507. package/es/color/colors/blue.mjs.map +1 -1
  508. package/es/color/colors/cyan.mjs.map +1 -1
  509. package/es/color/colors/geekblue.mjs.map +1 -1
  510. package/es/color/colors/gold.mjs.map +1 -1
  511. package/es/color/colors/gray.mjs.map +1 -1
  512. package/es/color/colors/green.mjs.map +1 -1
  513. package/es/color/colors/lime.mjs.map +1 -1
  514. package/es/color/colors/magenta.mjs.map +1 -1
  515. package/es/color/colors/orange.mjs.map +1 -1
  516. package/es/color/colors/primary.mjs.map +1 -1
  517. package/es/color/colors/purple.mjs.map +1 -1
  518. package/es/color/colors/red.mjs.map +1 -1
  519. package/es/color/colors/volcano.mjs.map +1 -1
  520. package/es/color/colors/yellow.mjs.map +1 -1
  521. package/es/color/neutrals/mauve.mjs.map +1 -1
  522. package/es/color/neutrals/olive.mjs.map +1 -1
  523. package/es/color/neutrals/sage.mjs.map +1 -1
  524. package/es/color/neutrals/sand.mjs.map +1 -1
  525. package/es/color/neutrals/slate.mjs.map +1 -1
  526. package/es/hooks/useFloatingLayer.mjs +2 -2
  527. package/es/hooks/useFloatingLayer.mjs.map +1 -1
  528. package/es/hooks/useHighlight.mjs.map +1 -1
  529. package/es/hooks/useMarkdown/latex.mjs +12 -12
  530. package/es/hooks/useMarkdown/latex.mjs.map +1 -1
  531. package/es/hooks/useMarkdown/useMarkdownComponents.mjs +1 -1
  532. package/es/hooks/useMarkdown/useMarkdownComponents.mjs.map +1 -1
  533. package/es/hooks/useMarkdown/utils.mjs +4 -4
  534. package/es/hooks/useMarkdown/utils.mjs.map +1 -1
  535. package/es/hooks/useNativeButton.mjs.map +1 -1
  536. package/es/hooks/useStreamHighlight.mjs.map +1 -1
  537. package/es/i18n/context.d.mts +3 -3
  538. package/es/i18n/context.mjs.map +1 -1
  539. package/es/icons/Authelia/components/Color.mjs.map +1 -1
  540. package/es/icons/lucideExtra/BotPromptIcon.d.mts +2 -2
  541. package/es/icons/lucideExtra/CreateBotIcon.d.mts +2 -2
  542. package/es/icons/lucideExtra/DiscordIcon.d.mts +2 -2
  543. package/es/icons/lucideExtra/GlobeOffIcon.d.mts +3 -3
  544. package/es/icons/lucideExtra/GroupBotIcon.d.mts +3 -3
  545. package/es/icons/lucideExtra/GroupBotSquareIcon.d.mts +3 -3
  546. package/es/icons/lucideExtra/LeftClickIcon.d.mts +2 -2
  547. package/es/icons/lucideExtra/LeftDoubleClickIcon.d.mts +3 -3
  548. package/es/icons/lucideExtra/McpIcon.d.mts +3 -3
  549. package/es/icons/lucideExtra/ProviderIcon.d.mts +3 -3
  550. package/es/icons/lucideExtra/RightClickIcon.d.mts +3 -3
  551. package/es/icons/lucideExtra/RightDoubleClickIcon.d.mts +3 -3
  552. package/es/icons/lucideExtra/ShapesUploadIcon.d.mts +3 -3
  553. package/es/icons/lucideExtra/TreeDownRightIcon.d.mts +2 -2
  554. package/es/icons/lucideExtra/TreeUpDownRightIcon.d.mts +3 -3
  555. package/es/mdx/Callout/index.mjs +1 -1
  556. package/es/mdx/Callout/index.mjs.map +1 -1
  557. package/es/mdx/Cards/Card.mjs +2 -2
  558. package/es/mdx/Cards/Card.mjs.map +1 -1
  559. package/es/mdx/FileTree/File.mjs +1 -1
  560. package/es/mdx/FileTree/File.mjs.map +1 -1
  561. package/es/mdx/FileTree/Folder.mjs +1 -1
  562. package/es/mdx/FileTree/Folder.mjs.map +1 -1
  563. package/es/mdx/FileTree/index.mjs.map +1 -1
  564. package/es/mdx/Mdx/index.d.mts +2 -2
  565. package/es/mdx/Mdx/index.mjs +3 -3
  566. package/es/mdx/Mdx/index.mjs.map +1 -1
  567. package/es/mdx/Steps/index.mjs.map +1 -1
  568. package/es/mdx/Tabs/Tab.mjs.map +1 -1
  569. package/es/mdx/Tabs/index.mjs +1 -1
  570. package/es/mdx/Tabs/index.mjs.map +1 -1
  571. package/es/mdx/mdxComponents/Citation/PopoverPanel.mjs +3 -3
  572. package/es/mdx/mdxComponents/Citation/PopoverPanel.mjs.map +1 -1
  573. package/es/mdx/mdxComponents/Citation/index.mjs.map +1 -1
  574. package/es/mdx/mdxComponents/Link.mjs +1 -1
  575. package/es/mdx/mdxComponents/Link.mjs.map +1 -1
  576. package/es/mobile/ChatHeader/ChatHeader.mjs +4 -4
  577. package/es/mobile/ChatHeader/ChatHeader.mjs.map +1 -1
  578. package/es/mobile/ChatHeader/ChatHeaderTitle.d.mts +2 -2
  579. package/es/mobile/ChatHeader/ChatHeaderTitle.mjs +5 -5
  580. package/es/mobile/ChatHeader/ChatHeaderTitle.mjs.map +1 -1
  581. package/es/mobile/ChatInputArea/ChatInputArea.mjs +9 -9
  582. package/es/mobile/ChatInputArea/ChatInputArea.mjs.map +1 -1
  583. package/es/mobile/ChatInputArea/components/ChatSendButton.d.mts +2 -2
  584. package/es/mobile/ChatInputArea/components/ChatSendButton.mjs +2 -2
  585. package/es/mobile/ChatInputArea/components/ChatSendButton.mjs.map +1 -1
  586. package/es/mobile/SafeArea/SafeArea.mjs.map +1 -1
  587. package/es/mobile/TabBar/TabBar.mjs +1 -1
  588. package/es/mobile/TabBar/TabBar.mjs.map +1 -1
  589. package/es/storybook/StoryBook/index.d.mts +2 -2
  590. package/es/storybook/StoryBook/index.mjs.map +1 -1
  591. package/es/styles/theme/algorithms/darkAlgorithm.mjs.map +1 -1
  592. package/es/styles/theme/algorithms/lightAlgorithm.mjs.map +1 -1
  593. package/es/styles/theme/antdTheme.mjs.map +1 -1
  594. package/es/styles/theme/customStylish.mjs.map +1 -1
  595. package/es/styles/theme/customToken.mjs.map +1 -1
  596. package/es/styles/theme/generateColorPalette.mjs.map +1 -1
  597. package/es/styles/theme/token/base.mjs.map +1 -1
  598. package/es/styles/theme/token/dark.mjs.map +1 -1
  599. package/es/styles/theme/token/light.mjs.map +1 -1
  600. package/package.json +79 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useMarkdownComponents.mjs","names":["Link","Image","Video","Section","Hotkey"],"sources":["../../../src/hooks/useMarkdown/useMarkdownComponents.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback, useMemo } from 'react';\nimport type { Components } from 'react-markdown';\n\nimport Hotkey from '@/Hotkey';\nimport { CodeBlock } from '@/Markdown/components/CodeBlock';\nimport { useMarkdownContext } from '@/Markdown/components/MarkdownProvider';\nimport Image from '@/mdx/mdxComponents/Image';\nimport Link from '@/mdx/mdxComponents/Link';\nimport Section from '@/mdx/mdxComponents/Section';\nimport Video from '@/mdx/mdxComponents/Video';\n\nexport const useMarkdownComponents = (): Components => {\n const {\n components,\n animated,\n citations,\n componentProps,\n enableMermaid,\n fullFeaturedCodeBlock,\n showFootnotes,\n } = useMarkdownContext();\n\n const memoA = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ node, ...props }: any) => <Link citations={citations} {...props} {...componentProps?.a} />,\n [citations, componentProps?.a],\n );\n\n const memoImg = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ node, ...props }: any) => <Image {...props} {...componentProps?.img} />,\n [componentProps?.img],\n );\n\n const memoVideo = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ node, ...props }: any) => <Video {...props} {...componentProps?.video} />,\n [componentProps?.video],\n );\n\n const memoSection = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ node, ...props }: any) => <Section showFootnotes={showFootnotes} {...props} />,\n [showFootnotes],\n );\n\n const memoKbd = useCallback(\n ({ children }: any) => <Hotkey keys={children} style={{ display: 'inline-flex' }} />,\n [],\n );\n\n const memoBr = useCallback(() => <br />, []);\n\n const memeP = useCallback(({ style, children, className }: any) => {\n const skipWrapperTags = ['img', 'video'];\n if (typeof children === 'object' && skipWrapperTags.includes(children?.props?.node?.tagName)) {\n return children;\n }\n return (\n <p className={className} style={style}>\n {children}\n </p>\n );\n }, []);\n\n // Stable references for theme objects to prevent unnecessary re-renders\n const highlightTheme = useMemo(\n () => componentProps?.highlight?.theme,\n [JSON.stringify(componentProps?.highlight?.theme)],\n );\n\n const mermaidTheme = useMemo(\n () => componentProps?.mermaid?.theme,\n [JSON.stringify(componentProps?.mermaid?.theme)],\n );\n\n // Create stable component props reference\n const stableComponentProps = useMemo(() => {\n if (!componentProps) return;\n\n return {\n highlight: componentProps.highlight\n ? { ...componentProps.highlight, theme: highlightTheme }\n : undefined,\n mermaid: componentProps.mermaid\n ? { ...componentProps.mermaid, theme: mermaidTheme }\n : undefined,\n };\n }, [highlightTheme, mermaidTheme]);\n\n const memoPre = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ node, ...props }: any) => (\n <CodeBlock\n animated={animated}\n enableMermaid={enableMermaid}\n fullFeatured={fullFeaturedCodeBlock}\n {...stableComponentProps}\n {...componentProps?.pre}\n {...props}\n />\n ),\n [animated, enableMermaid, fullFeaturedCodeBlock, stableComponentProps, componentProps?.pre],\n );\n\n const memoColorPreview = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ node, ...props }: any) => <code {...props} />,\n [],\n );\n\n const memoComponents = useMemo(\n () => ({\n a: memoA,\n br: memoBr,\n colorPreview: memoColorPreview,\n img: memoImg,\n kbd: memoKbd,\n p: memeP,\n pre: memoPre,\n section: memoSection,\n video: memoVideo,\n }),\n [memoA, memoBr, memoImg, memoVideo, memoPre, memoSection, memeP, memoColorPreview, memoKbd],\n );\n\n return useMemo(\n () => ({\n ...memoComponents,\n ...components,\n }),\n [memoComponents, components],\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAa,8BAA0C;CACrD,MAAM,EACJ,YACA,UACA,WACA,gBACA,eACA,uBACA,kBACE,oBAAoB;CAExB,MAAM,QAAQ,aAEX,EAAE,MAAM,GAAG,YAAiB,oBAACA;EAAgB;EAAW,GAAI;EAAO,GAAI,gBAAgB;GAAK,EAC7F,CAAC,WAAW,gBAAgB,EAAE,CAC/B;CAED,MAAM,UAAU,aAEb,EAAE,MAAM,GAAG,YAAiB,oBAACC;EAAM,GAAI;EAAO,GAAI,gBAAgB;GAAO,EAC1E,CAAC,gBAAgB,IAAI,CACtB;CAED,MAAM,YAAY,aAEf,EAAE,MAAM,GAAG,YAAiB,oBAACC;EAAM,GAAI;EAAO,GAAI,gBAAgB;GAAS,EAC5E,CAAC,gBAAgB,MAAM,CACxB;CAED,MAAM,cAAc,aAEjB,EAAE,MAAM,GAAG,YAAiB,oBAACC;EAAuB;EAAe,GAAI;GAAS,EACjF,CAAC,cAAc,CAChB;CAED,MAAM,UAAU,aACb,EAAE,eAAoB,oBAACC;EAAO,MAAM;EAAU,OAAO,EAAE,SAAS,eAAe;GAAI,EACpF,EAAE,CACH;CAED,MAAM,SAAS,kBAAkB,oBAAC,SAAK,EAAE,EAAE,CAAC;CAE5C,MAAM,QAAQ,aAAa,EAAE,OAAO,UAAU,gBAAqB;AAEjE,MAAI,OAAO,aAAa,YADA,CAAC,OAAO,QAAQ,CACY,SAAS,UAAU,OAAO,MAAM,QAAQ,CAC1F,QAAO;AAET,SACE,oBAAC;GAAa;GAAkB;GAC7B;IACC;IAEL,EAAE,CAAC;CAGN,MAAM,iBAAiB,cACf,gBAAgB,WAAW,OACjC,CAAC,KAAK,UAAU,gBAAgB,WAAW,MAAM,CAAC,CACnD;CAED,MAAM,eAAe,cACb,gBAAgB,SAAS,OAC/B,CAAC,KAAK,UAAU,gBAAgB,SAAS,MAAM,CAAC,CACjD;CAGD,MAAM,uBAAuB,cAAc;AACzC,MAAI,CAAC,eAAgB;AAErB,SAAO;GACL,WAAW,eAAe,YACtB;IAAE,GAAG,eAAe;IAAW,OAAO;IAAgB,GACtD;GACJ,SAAS,eAAe,UACpB;IAAE,GAAG,eAAe;IAAS,OAAO;IAAc,GAClD;GACL;IACA,CAAC,gBAAgB,aAAa,CAAC;CAElC,MAAM,UAAU,aAEb,EAAE,MAAM,GAAG,YACV,oBAAC;EACW;EACK;EACf,cAAc;EACd,GAAI;EACJ,GAAI,gBAAgB;EACpB,GAAI;GACJ,EAEJ;EAAC;EAAU;EAAe;EAAuB;EAAsB,gBAAgB;EAAI,CAC5F;CAED,MAAM,mBAAmB,aAEtB,EAAE,MAAM,GAAG,YAAiB,oBAAC,UAAK,GAAI,QAAS,EAChD,EAAE,CACH;CAED,MAAM,iBAAiB,eACd;EACL,GAAG;EACH,IAAI;EACJ,cAAc;EACd,KAAK;EACL,KAAK;EACL,GAAG;EACH,KAAK;EACL,SAAS;EACT,OAAO;EACR,GACD;EAAC;EAAO;EAAQ;EAAS;EAAW;EAAS;EAAa;EAAO;EAAkB;EAAQ,CAC5F;AAED,QAAO,eACE;EACL,GAAG;EACH,GAAG;EACJ,GACD,CAAC,gBAAgB,WAAW,CAC7B"}
1
+ {"version":3,"file":"useMarkdownComponents.mjs","names":["Link","Image","Video","Section","Hotkey"],"sources":["../../../src/hooks/useMarkdown/useMarkdownComponents.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback, useMemo } from 'react';\nimport type { Components } from 'react-markdown';\n\nimport Hotkey from '@/Hotkey';\nimport { CodeBlock } from '@/Markdown/components/CodeBlock';\nimport { useMarkdownContext } from '@/Markdown/components/MarkdownProvider';\nimport Image from '@/mdx/mdxComponents/Image';\nimport Link from '@/mdx/mdxComponents/Link';\nimport Section from '@/mdx/mdxComponents/Section';\nimport Video from '@/mdx/mdxComponents/Video';\n\nexport const useMarkdownComponents = (): Components => {\n const {\n components,\n animated,\n citations,\n componentProps,\n enableMermaid,\n fullFeaturedCodeBlock,\n showFootnotes,\n } = useMarkdownContext();\n\n const memoA = useCallback(\n ({ node, ...props }: any) => <Link citations={citations} {...props} {...componentProps?.a} />,\n [citations, componentProps?.a],\n );\n\n const memoImg = useCallback(\n ({ node, ...props }: any) => <Image {...props} {...componentProps?.img} />,\n [componentProps?.img],\n );\n\n const memoVideo = useCallback(\n ({ node, ...props }: any) => <Video {...props} {...componentProps?.video} />,\n [componentProps?.video],\n );\n\n const memoSection = useCallback(\n ({ node, ...props }: any) => <Section showFootnotes={showFootnotes} {...props} />,\n [showFootnotes],\n );\n\n const memoKbd = useCallback(\n ({ children }: any) => <Hotkey keys={children} style={{ display: 'inline-flex' }} />,\n [],\n );\n\n const memoBr = useCallback(() => <br />, []);\n\n const memeP = useCallback(({ style, children, className }: any) => {\n const skipWrapperTags = ['img', 'video'];\n if (typeof children === 'object' && skipWrapperTags.includes(children?.props?.node?.tagName)) {\n return children;\n }\n return (\n <p className={className} style={style}>\n {children}\n </p>\n );\n }, []);\n\n // Stable references for theme objects to prevent unnecessary re-renders\n const highlightTheme = useMemo(\n () => componentProps?.highlight?.theme,\n [JSON.stringify(componentProps?.highlight?.theme)],\n );\n\n const mermaidTheme = useMemo(\n () => componentProps?.mermaid?.theme,\n [JSON.stringify(componentProps?.mermaid?.theme)],\n );\n\n // Create stable component props reference\n const stableComponentProps = useMemo(() => {\n if (!componentProps) return;\n\n return {\n highlight: componentProps.highlight\n ? { ...componentProps.highlight, theme: highlightTheme }\n : undefined,\n mermaid: componentProps.mermaid\n ? { ...componentProps.mermaid, theme: mermaidTheme }\n : undefined,\n };\n }, [highlightTheme, mermaidTheme]);\n\n const memoPre = useCallback(\n ({ node, ...props }: any) => (\n <CodeBlock\n animated={animated}\n enableMermaid={enableMermaid}\n fullFeatured={fullFeaturedCodeBlock}\n {...stableComponentProps}\n {...componentProps?.pre}\n {...props}\n />\n ),\n [animated, enableMermaid, fullFeaturedCodeBlock, stableComponentProps, componentProps?.pre],\n );\n\n const memoColorPreview = useCallback(({ node, ...props }: any) => <code {...props} />, []);\n\n const memoComponents = useMemo(\n () => ({\n a: memoA,\n br: memoBr,\n colorPreview: memoColorPreview,\n img: memoImg,\n kbd: memoKbd,\n p: memeP,\n pre: memoPre,\n section: memoSection,\n video: memoVideo,\n }),\n [memoA, memoBr, memoImg, memoVideo, memoPre, memoSection, memeP, memoColorPreview, memoKbd],\n );\n\n return useMemo(\n () => ({\n ...memoComponents,\n ...components,\n }),\n [memoComponents, components],\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAa,8BAA0C;CACrD,MAAM,EACJ,YACA,UACA,WACA,gBACA,eACA,uBACA,kBACE,oBAAoB;CAExB,MAAM,QAAQ,aACX,EAAE,MAAM,GAAG,YAAiB,oBAACA;EAAgB;EAAW,GAAI;EAAO,GAAI,gBAAgB;GAAK,EAC7F,CAAC,WAAW,gBAAgB,EAAE,CAC/B;CAED,MAAM,UAAU,aACb,EAAE,MAAM,GAAG,YAAiB,oBAACC;EAAM,GAAI;EAAO,GAAI,gBAAgB;GAAO,EAC1E,CAAC,gBAAgB,IAAI,CACtB;CAED,MAAM,YAAY,aACf,EAAE,MAAM,GAAG,YAAiB,oBAACC;EAAM,GAAI;EAAO,GAAI,gBAAgB;GAAS,EAC5E,CAAC,gBAAgB,MAAM,CACxB;CAED,MAAM,cAAc,aACjB,EAAE,MAAM,GAAG,YAAiB,oBAACC;EAAuB;EAAe,GAAI;GAAS,EACjF,CAAC,cAAc,CAChB;CAED,MAAM,UAAU,aACb,EAAE,eAAoB,oBAACC;EAAO,MAAM;EAAU,OAAO,EAAE,SAAS,eAAe;GAAI,EACpF,EAAE,CACH;CAED,MAAM,SAAS,kBAAkB,oBAAC,SAAK,EAAE,EAAE,CAAC;CAE5C,MAAM,QAAQ,aAAa,EAAE,OAAO,UAAU,gBAAqB;AAEjE,MAAI,OAAO,aAAa,YADA,CAAC,OAAO,QAAQ,CACY,SAAS,UAAU,OAAO,MAAM,QAAQ,CAC1F,QAAO;AAET,SACE,oBAAC;GAAa;GAAkB;GAC7B;IACC;IAEL,EAAE,CAAC;CAGN,MAAM,iBAAiB,cACf,gBAAgB,WAAW,OACjC,CAAC,KAAK,UAAU,gBAAgB,WAAW,MAAM,CAAC,CACnD;CAED,MAAM,eAAe,cACb,gBAAgB,SAAS,OAC/B,CAAC,KAAK,UAAU,gBAAgB,SAAS,MAAM,CAAC,CACjD;CAGD,MAAM,uBAAuB,cAAc;AACzC,MAAI,CAAC,eAAgB;AAErB,SAAO;GACL,WAAW,eAAe,YACtB;IAAE,GAAG,eAAe;IAAW,OAAO;IAAgB,GACtD;GACJ,SAAS,eAAe,UACpB;IAAE,GAAG,eAAe;IAAS,OAAO;IAAc,GAClD;GACL;IACA,CAAC,gBAAgB,aAAa,CAAC;CAElC,MAAM,UAAU,aACb,EAAE,MAAM,GAAG,YACV,oBAAC;EACW;EACK;EACf,cAAc;EACd,GAAI;EACJ,GAAI,gBAAgB;EACpB,GAAI;GACJ,EAEJ;EAAC;EAAU;EAAe;EAAuB;EAAsB,gBAAgB;EAAI,CAC5F;CAED,MAAM,mBAAmB,aAAa,EAAE,MAAM,GAAG,YAAiB,oBAAC,UAAK,GAAI,QAAS,EAAE,EAAE,CAAC;CAE1F,MAAM,iBAAiB,eACd;EACL,GAAG;EACH,IAAI;EACJ,cAAc;EACd,KAAK;EACL,KAAK;EACL,GAAG;EACH,KAAK;EACL,SAAS;EACT,OAAO;EACR,GACD;EAAC;EAAO;EAAQ;EAAS;EAAW;EAAS;EAAa;EAAO;EAAkB;EAAQ,CAC5F;AAED,QAAO,eACE;EACL,GAAG;EACH,GAAG;EACJ,GACD,CAAC,gBAAgB,WAAW,CAC7B"}
@@ -39,22 +39,22 @@ const transformCitations = (rawContent, length = 0) => {
39
39
  length: match[0].length
40
40
  });
41
41
  const excludedRanges = [];
42
- let latexBlockRegex = /\$\$([\S\s]*?)\$\$/g;
42
+ const latexBlockRegex = /\$\$([\s\S]*?)\$\$/g;
43
43
  while ((match = latexBlockRegex.exec(rawContent)) !== null) excludedRanges.push({
44
44
  end: match.index + match[0].length - 1,
45
45
  start: match.index
46
46
  });
47
- let inlineLatexRegex = /\$([^$]*?)\$/g;
47
+ const inlineLatexRegex = /\$([^$]*)\$/g;
48
48
  while ((match = inlineLatexRegex.exec(rawContent)) !== null) excludedRanges.push({
49
49
  end: match.index + match[0].length - 1,
50
50
  start: match.index
51
51
  });
52
- let codeBlockRegex = /```([\S\s]*?)```/g;
52
+ const codeBlockRegex = /```([\s\S]*?)```/g;
53
53
  while ((match = codeBlockRegex.exec(rawContent)) !== null) excludedRanges.push({
54
54
  end: match.index + match[0].length - 1,
55
55
  start: match.index
56
56
  });
57
- let inlineCodeRegex = /`([^`]*?)`/g;
57
+ const inlineCodeRegex = /`([^`]*)`/g;
58
58
  while ((match = inlineCodeRegex.exec(rawContent)) !== null) excludedRanges.push({
59
59
  end: match.index + match[0].length - 1,
60
60
  start: match.index
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","names":["matches: { id: string; index: number; length: number }[]","excludedRanges: { end: number; start: number }[]"],"sources":["../../../src/hooks/useMarkdown/utils.ts"],"sourcesContent":["import { preprocessLaTeX } from './latex';\n\n// Cache configuration\nconst CACHE_SIZE = 50;\n\n/**\n * Cache for storing processed content to avoid redundant processing\n */\nexport const contentCache = new Map<string, string>();\n\n/**\n * Adds content to the cache with size limitation\n * Removes oldest entry if cache size limit is reached\n *\n * @param key The cache key\n * @param value The processed content to store\n */\nexport const addToCache = (key: string, value: string) => {\n if (contentCache.size >= CACHE_SIZE) {\n // Remove the oldest cache entry\n const firstKey = contentCache.keys().next().value;\n if (firstKey) contentCache.delete(firstKey);\n }\n contentCache.set(key, value);\n};\n\n/**\n * Transforms citation references in the format [n] to markdown links\n *\n * @param rawContent The markdown content with citation references\n * @param length The number of citations\n * @returns The content with citations transformed to markdown links\n */\nexport const transformCitations = (rawContent: string, length: number = 0) => {\n if (length === 0) return rawContent;\n\n // 生成引用索引\n const citationIndices = Array.from({ length })\n .fill('')\n .map((_, index) => index + 1);\n\n // 匹配所有潜在的引用\n const pattern = new RegExp(`\\\\[(${citationIndices.join('|')})\\\\]`, 'g');\n const matches: { id: string; index: number; length: number }[] = [];\n\n let match;\n while ((match = pattern.exec(rawContent)) !== null) {\n matches.push({\n id: match[1],\n index: match.index,\n length: match[0].length,\n });\n }\n\n // 识别所有需要排除的区域\n const excludedRanges: { end: number; start: number }[] = [];\n\n // 查找LaTeX块 $$...$$\n let latexBlockRegex = /\\$\\$([\\S\\s]*?)\\$\\$/g;\n while ((match = latexBlockRegex.exec(rawContent)) !== null) {\n excludedRanges.push({\n end: match.index + match[0].length - 1,\n start: match.index,\n });\n }\n\n // 查找行内LaTeX $...$\n let inlineLatexRegex = /\\$([^$]*?)\\$/g;\n while ((match = inlineLatexRegex.exec(rawContent)) !== null) {\n excludedRanges.push({\n end: match.index + match[0].length - 1,\n start: match.index,\n });\n }\n\n // 查找代码块 ```...```\n let codeBlockRegex = /```([\\S\\s]*?)```/g;\n while ((match = codeBlockRegex.exec(rawContent)) !== null) {\n excludedRanges.push({\n end: match.index + match[0].length - 1,\n start: match.index,\n });\n }\n\n // 查找行内代码 `...`\n let inlineCodeRegex = /`([^`]*?)`/g;\n while ((match = inlineCodeRegex.exec(rawContent)) !== null) {\n excludedRanges.push({\n end: match.index + match[0].length - 1,\n start: match.index,\n });\n }\n\n // 过滤掉在排除区域内的引用\n const validMatches = matches.filter((citation) => {\n return !excludedRanges.some(\n (range) => citation.index >= range.start && citation.index <= range.end,\n );\n });\n\n // 从后向前替换,避免索引变化问题\n let result = rawContent;\n for (let i = validMatches.length - 1; i >= 0; i--) {\n const citation = validMatches[i];\n const before = result.slice(0, Math.max(0, citation.index));\n const after = result.slice(Math.max(0, citation.index + citation.length));\n result = before + `[#citation-${citation.id}](citation-${citation.id})` + after;\n }\n\n // 处理连续引用\n return result.replaceAll('][', '] [');\n};\n\n/**\n * Preprocessing options for markdown content\n */\ninterface PreprocessOptions {\n citationsLength?: number;\n enableCustomFootnotes?: boolean;\n enableLatex?: boolean;\n}\n\nexport const preprocessMarkdownContent = (\n str: string,\n { enableCustomFootnotes, enableLatex, citationsLength }: PreprocessOptions = {},\n) => {\n let content = str;\n\n // Process LaTeX expressions\n if (enableLatex) {\n content = preprocessLaTeX(content);\n }\n\n // Process custom footnotes/citations\n if (enableCustomFootnotes) {\n content = transformCitations(content, citationsLength);\n }\n\n return content;\n};\n"],"mappings":";;;AAGA,MAAM,aAAa;;;;AAKnB,MAAa,+BAAe,IAAI,KAAqB;;;;;;;;AASrD,MAAa,cAAc,KAAa,UAAkB;AACxD,KAAI,aAAa,QAAQ,YAAY;EAEnC,MAAM,WAAW,aAAa,MAAM,CAAC,MAAM,CAAC;AAC5C,MAAI,SAAU,cAAa,OAAO,SAAS;;AAE7C,cAAa,IAAI,KAAK,MAAM;;;;;;;;;AAU9B,MAAa,sBAAsB,YAAoB,SAAiB,MAAM;AAC5E,KAAI,WAAW,EAAG,QAAO;CAGzB,MAAM,kBAAkB,MAAM,KAAK,EAAE,QAAQ,CAAC,CAC3C,KAAK,GAAG,CACR,KAAK,GAAG,UAAU,QAAQ,EAAE;CAG/B,MAAM,UAAU,IAAI,OAAO,OAAO,gBAAgB,KAAK,IAAI,CAAC,OAAO,IAAI;CACvE,MAAMA,UAA2D,EAAE;CAEnE,IAAI;AACJ,SAAQ,QAAQ,QAAQ,KAAK,WAAW,MAAM,KAC5C,SAAQ,KAAK;EACX,IAAI,MAAM;EACV,OAAO,MAAM;EACb,QAAQ,MAAM,GAAG;EAClB,CAAC;CAIJ,MAAMC,iBAAmD,EAAE;CAG3D,IAAI,kBAAkB;AACtB,SAAQ,QAAQ,gBAAgB,KAAK,WAAW,MAAM,KACpD,gBAAe,KAAK;EAClB,KAAK,MAAM,QAAQ,MAAM,GAAG,SAAS;EACrC,OAAO,MAAM;EACd,CAAC;CAIJ,IAAI,mBAAmB;AACvB,SAAQ,QAAQ,iBAAiB,KAAK,WAAW,MAAM,KACrD,gBAAe,KAAK;EAClB,KAAK,MAAM,QAAQ,MAAM,GAAG,SAAS;EACrC,OAAO,MAAM;EACd,CAAC;CAIJ,IAAI,iBAAiB;AACrB,SAAQ,QAAQ,eAAe,KAAK,WAAW,MAAM,KACnD,gBAAe,KAAK;EAClB,KAAK,MAAM,QAAQ,MAAM,GAAG,SAAS;EACrC,OAAO,MAAM;EACd,CAAC;CAIJ,IAAI,kBAAkB;AACtB,SAAQ,QAAQ,gBAAgB,KAAK,WAAW,MAAM,KACpD,gBAAe,KAAK;EAClB,KAAK,MAAM,QAAQ,MAAM,GAAG,SAAS;EACrC,OAAO,MAAM;EACd,CAAC;CAIJ,MAAM,eAAe,QAAQ,QAAQ,aAAa;AAChD,SAAO,CAAC,eAAe,MACpB,UAAU,SAAS,SAAS,MAAM,SAAS,SAAS,SAAS,MAAM,IACrE;GACD;CAGF,IAAI,SAAS;AACb,MAAK,IAAI,IAAI,aAAa,SAAS,GAAG,KAAK,GAAG,KAAK;EACjD,MAAM,WAAW,aAAa;EAC9B,MAAM,SAAS,OAAO,MAAM,GAAG,KAAK,IAAI,GAAG,SAAS,MAAM,CAAC;EAC3D,MAAM,QAAQ,OAAO,MAAM,KAAK,IAAI,GAAG,SAAS,QAAQ,SAAS,OAAO,CAAC;AACzE,WAAS,SAAS,cAAc,SAAS,GAAG,aAAa,SAAS,GAAG,KAAK;;AAI5E,QAAO,OAAO,WAAW,MAAM,MAAM;;AAYvC,MAAa,6BACX,KACA,EAAE,uBAAuB,aAAa,oBAAuC,EAAE,KAC5E;CACH,IAAI,UAAU;AAGd,KAAI,YACF,WAAU,gBAAgB,QAAQ;AAIpC,KAAI,sBACF,WAAU,mBAAmB,SAAS,gBAAgB;AAGxD,QAAO"}
1
+ {"version":3,"file":"utils.mjs","names":["matches: { id: string; index: number; length: number }[]","excludedRanges: { end: number; start: number }[]"],"sources":["../../../src/hooks/useMarkdown/utils.ts"],"sourcesContent":["import { preprocessLaTeX } from './latex';\n\n// Cache configuration\nconst CACHE_SIZE = 50;\n\n/**\n * Cache for storing processed content to avoid redundant processing\n */\nexport const contentCache = new Map<string, string>();\n\n/**\n * Adds content to the cache with size limitation\n * Removes oldest entry if cache size limit is reached\n *\n * @param key The cache key\n * @param value The processed content to store\n */\nexport const addToCache = (key: string, value: string) => {\n if (contentCache.size >= CACHE_SIZE) {\n // Remove the oldest cache entry\n const firstKey = contentCache.keys().next().value;\n if (firstKey) contentCache.delete(firstKey);\n }\n contentCache.set(key, value);\n};\n\n/**\n * Transforms citation references in the format [n] to markdown links\n *\n * @param rawContent The markdown content with citation references\n * @param length The number of citations\n * @returns The content with citations transformed to markdown links\n */\nexport const transformCitations = (rawContent: string, length: number = 0) => {\n if (length === 0) return rawContent;\n\n // 生成引用索引\n const citationIndices = Array.from({ length })\n .fill('')\n .map((_, index) => index + 1);\n\n // 匹配所有潜在的引用\n const pattern = new RegExp(`\\\\[(${citationIndices.join('|')})\\\\]`, 'g');\n const matches: { id: string; index: number; length: number }[] = [];\n\n let match;\n while ((match = pattern.exec(rawContent)) !== null) {\n matches.push({\n id: match[1],\n index: match.index,\n length: match[0].length,\n });\n }\n\n // 识别所有需要排除的区域\n const excludedRanges: { end: number; start: number }[] = [];\n\n // 查找LaTeX块 $$...$$\n const latexBlockRegex = /\\$\\$([\\s\\S]*?)\\$\\$/g;\n while ((match = latexBlockRegex.exec(rawContent)) !== null) {\n excludedRanges.push({\n end: match.index + match[0].length - 1,\n start: match.index,\n });\n }\n\n // 查找行内LaTeX $...$\n const inlineLatexRegex = /\\$([^$]*)\\$/g;\n while ((match = inlineLatexRegex.exec(rawContent)) !== null) {\n excludedRanges.push({\n end: match.index + match[0].length - 1,\n start: match.index,\n });\n }\n\n // 查找代码块 ```...```\n const codeBlockRegex = /```([\\s\\S]*?)```/g;\n while ((match = codeBlockRegex.exec(rawContent)) !== null) {\n excludedRanges.push({\n end: match.index + match[0].length - 1,\n start: match.index,\n });\n }\n\n // 查找行内代码 `...`\n const inlineCodeRegex = /`([^`]*)`/g;\n while ((match = inlineCodeRegex.exec(rawContent)) !== null) {\n excludedRanges.push({\n end: match.index + match[0].length - 1,\n start: match.index,\n });\n }\n\n // 过滤掉在排除区域内的引用\n const validMatches = matches.filter((citation) => {\n return !excludedRanges.some(\n (range) => citation.index >= range.start && citation.index <= range.end,\n );\n });\n\n // 从后向前替换,避免索引变化问题\n let result = rawContent;\n for (let i = validMatches.length - 1; i >= 0; i--) {\n const citation = validMatches[i];\n const before = result.slice(0, Math.max(0, citation.index));\n const after = result.slice(Math.max(0, citation.index + citation.length));\n result = before + `[#citation-${citation.id}](citation-${citation.id})` + after;\n }\n\n // 处理连续引用\n return result.replaceAll('][', '] [');\n};\n\n/**\n * Preprocessing options for markdown content\n */\ninterface PreprocessOptions {\n citationsLength?: number;\n enableCustomFootnotes?: boolean;\n enableLatex?: boolean;\n}\n\nexport const preprocessMarkdownContent = (\n str: string,\n { enableCustomFootnotes, enableLatex, citationsLength }: PreprocessOptions = {},\n) => {\n let content = str;\n\n // Process LaTeX expressions\n if (enableLatex) {\n content = preprocessLaTeX(content);\n }\n\n // Process custom footnotes/citations\n if (enableCustomFootnotes) {\n content = transformCitations(content, citationsLength);\n }\n\n return content;\n};\n"],"mappings":";;;AAGA,MAAM,aAAa;;;;AAKnB,MAAa,+BAAe,IAAI,KAAqB;;;;;;;;AASrD,MAAa,cAAc,KAAa,UAAkB;AACxD,KAAI,aAAa,QAAQ,YAAY;EAEnC,MAAM,WAAW,aAAa,MAAM,CAAC,MAAM,CAAC;AAC5C,MAAI,SAAU,cAAa,OAAO,SAAS;;AAE7C,cAAa,IAAI,KAAK,MAAM;;;;;;;;;AAU9B,MAAa,sBAAsB,YAAoB,SAAiB,MAAM;AAC5E,KAAI,WAAW,EAAG,QAAO;CAGzB,MAAM,kBAAkB,MAAM,KAAK,EAAE,QAAQ,CAAC,CAC3C,KAAK,GAAG,CACR,KAAK,GAAG,UAAU,QAAQ,EAAE;CAG/B,MAAM,UAAU,IAAI,OAAO,OAAO,gBAAgB,KAAK,IAAI,CAAC,OAAO,IAAI;CACvE,MAAMA,UAA2D,EAAE;CAEnE,IAAI;AACJ,SAAQ,QAAQ,QAAQ,KAAK,WAAW,MAAM,KAC5C,SAAQ,KAAK;EACX,IAAI,MAAM;EACV,OAAO,MAAM;EACb,QAAQ,MAAM,GAAG;EAClB,CAAC;CAIJ,MAAMC,iBAAmD,EAAE;CAG3D,MAAM,kBAAkB;AACxB,SAAQ,QAAQ,gBAAgB,KAAK,WAAW,MAAM,KACpD,gBAAe,KAAK;EAClB,KAAK,MAAM,QAAQ,MAAM,GAAG,SAAS;EACrC,OAAO,MAAM;EACd,CAAC;CAIJ,MAAM,mBAAmB;AACzB,SAAQ,QAAQ,iBAAiB,KAAK,WAAW,MAAM,KACrD,gBAAe,KAAK;EAClB,KAAK,MAAM,QAAQ,MAAM,GAAG,SAAS;EACrC,OAAO,MAAM;EACd,CAAC;CAIJ,MAAM,iBAAiB;AACvB,SAAQ,QAAQ,eAAe,KAAK,WAAW,MAAM,KACnD,gBAAe,KAAK;EAClB,KAAK,MAAM,QAAQ,MAAM,GAAG,SAAS;EACrC,OAAO,MAAM;EACd,CAAC;CAIJ,MAAM,kBAAkB;AACxB,SAAQ,QAAQ,gBAAgB,KAAK,WAAW,MAAM,KACpD,gBAAe,KAAK;EAClB,KAAK,MAAM,QAAQ,MAAM,GAAG,SAAS;EACrC,OAAO,MAAM;EACd,CAAC;CAIJ,MAAM,eAAe,QAAQ,QAAQ,aAAa;AAChD,SAAO,CAAC,eAAe,MACpB,UAAU,SAAS,SAAS,MAAM,SAAS,SAAS,SAAS,MAAM,IACrE;GACD;CAGF,IAAI,SAAS;AACb,MAAK,IAAI,IAAI,aAAa,SAAS,GAAG,KAAK,GAAG,KAAK;EACjD,MAAM,WAAW,aAAa;EAC9B,MAAM,SAAS,OAAO,MAAM,GAAG,KAAK,IAAI,GAAG,SAAS,MAAM,CAAC;EAC3D,MAAM,QAAQ,OAAO,MAAM,KAAK,IAAI,GAAG,SAAS,QAAQ,SAAS,OAAO,CAAC;AACzE,WAAS,SAAS,cAAc,SAAS,GAAG,aAAa,SAAS,GAAG,KAAK;;AAI5E,QAAO,OAAO,WAAW,MAAM,MAAM;;AAYvC,MAAa,6BACX,KACA,EAAE,uBAAuB,aAAa,oBAAuC,EAAE,KAC5E;CACH,IAAI,UAAU;AAGd,KAAI,YACF,WAAU,gBAAgB,QAAQ;AAIpC,KAAI,sBACF,WAAU,mBAAmB,SAAS,gBAAgB;AAGxD,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"useNativeButton.mjs","names":["NATIVE_BUTTON_MAP: Record<string, boolean>"],"sources":["../../src/hooks/useNativeButton.ts"],"sourcesContent":["import { type ReactElement, type ReactNode, isValidElement, useMemo } from 'react';\n\nexport interface UseNativeButtonOptions {\n /**\n * The children element that will be used as the trigger\n */\n children: ReactNode;\n /**\n * User-provided nativeButton prop\n */\n nativeButton?: boolean;\n /**\n * Additional nativeButton from trigger props (for DropdownMenu)\n */\n triggerNativeButton?: boolean;\n}\n\nexport interface UseNativeButtonResult {\n /**\n * Whether the trigger element is a native button\n */\n isNativeButtonTriggerElement: boolean;\n /**\n * The resolved nativeButton value to pass to Base UI components\n */\n resolvedNativeButton: boolean | undefined;\n}\n\n/**\n * Map of component displayNames to their nativeButton values.\n * Components that render native <button> elements should be true,\n * components that render non-button elements should be false.\n */\nconst NATIVE_BUTTON_MAP: Record<string, boolean> = {\n A: false,\n ActionIcon: false,\n ActionIconGroup: false,\n Alert: false,\n Avatar: false,\n AvatarGroup: false,\n Block: false,\n BottomGradientButton: true,\n Burger: false,\n Button: true,\n Center: false,\n Checkbox: false,\n CheckboxGroup: false,\n Collapse: false,\n ColorSwatches: false,\n CopyButton: false,\n DownloadButton: false,\n EditableText: false,\n Empty: false,\n FileTypeIcon: false,\n Flexbox: false,\n FluentEmoji: false,\n GradientButton: true,\n Highlighter: false,\n Hotkey: false,\n Icon: false,\n Image: false,\n Img: false,\n Input: false,\n InputNumber: false,\n InputPassword: false,\n List: false,\n ListItem: false,\n LobeSelect: false,\n LobeSwitch: false,\n Markdown: false,\n MaterialFileTypeIcon: false,\n Segmented: false,\n Skeleton: false,\n SkeletonAvatar: false,\n SkeletonBlock: false,\n SkeletonButton: false,\n SkeletonParagraph: false,\n SkeletonTags: false,\n SkeletonTitle: false,\n Snippet: false,\n Tag: false,\n Text: false,\n TextArea: false,\n ThemeSwitch: false,\n Video: false,\n};\n\n/**\n * Get the displayName of a React component from an element.\n * Handles function components, forwardRef, memo, etc.\n */\nfunction getComponentDisplayName(element: ReactElement): string | undefined {\n const type = element.type;\n\n if (typeof type === 'string') return undefined;\n\n if (typeof type === 'function') {\n return (type as any).displayName || type.name;\n }\n\n if (typeof type === 'object' && type !== null) {\n // Handle forwardRef, memo, etc.\n const displayName =\n (type as any).displayName ||\n (type as any).render?.displayName ||\n (type as any).render?.name ||\n (type as any).type?.displayName ||\n (type as any).type?.name;\n return displayName;\n }\n\n return undefined;\n}\n\n/**\n * Hook to resolve nativeButton prop for Base UI trigger components.\n *\n * When using `render`, Base UI expects the rendered element to be a native <button> by default.\n * If we can infer it's not, we opt out to avoid warnings (users can still override via `nativeButton`).\n */\nexport function useNativeButton({\n children,\n nativeButton,\n triggerNativeButton,\n}: UseNativeButtonOptions): UseNativeButtonResult {\n const isNativeButtonTriggerElement = useMemo(() => {\n if (!isValidElement(children)) return false;\n return typeof children.type === 'string' && children.type === 'button';\n }, [children]);\n\n const resolvedNativeButton = useMemo(() => {\n // User-provided nativeButton takes highest priority\n if (nativeButton !== undefined) return nativeButton;\n // Trigger props nativeButton (for DropdownMenu) takes second priority\n if (triggerNativeButton !== undefined) return triggerNativeButton;\n // If it's a native button element, return true\n if (isNativeButtonTriggerElement) return true;\n // If children is not a valid element, let Base UI decide\n if (!isValidElement(children)) return undefined;\n // If it's a string type but not a button (e.g., 'div'), return false\n if (typeof children.type === 'string') return false;\n\n // Check if it's a known component from the library\n const displayName = getComponentDisplayName(children);\n if (displayName && displayName in NATIVE_BUTTON_MAP) {\n return NATIVE_BUTTON_MAP[displayName];\n }\n\n // For unknown React components, default to false to avoid warnings\n // since most custom components don't render native buttons\n return false;\n }, [children, isNativeButtonTriggerElement, nativeButton, triggerNativeButton]);\n\n return {\n isNativeButtonTriggerElement,\n resolvedNativeButton,\n };\n}\n"],"mappings":";;;;;;;;AAiCA,MAAMA,oBAA6C;CACjD,GAAG;CACH,YAAY;CACZ,iBAAiB;CACjB,OAAO;CACP,QAAQ;CACR,aAAa;CACb,OAAO;CACP,sBAAsB;CACtB,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,UAAU;CACV,eAAe;CACf,UAAU;CACV,eAAe;CACf,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,OAAO;CACP,cAAc;CACd,SAAS;CACT,aAAa;CACb,gBAAgB;CAChB,aAAa;CACb,QAAQ;CACR,MAAM;CACN,OAAO;CACP,KAAK;CACL,OAAO;CACP,aAAa;CACb,eAAe;CACf,MAAM;CACN,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,UAAU;CACV,sBAAsB;CACtB,WAAW;CACX,UAAU;CACV,gBAAgB;CAChB,eAAe;CACf,gBAAgB;CAChB,mBAAmB;CACnB,cAAc;CACd,eAAe;CACf,SAAS;CACT,KAAK;CACL,MAAM;CACN,UAAU;CACV,aAAa;CACb,OAAO;CACR;;;;;AAMD,SAAS,wBAAwB,SAA2C;CAC1E,MAAM,OAAO,QAAQ;AAErB,KAAI,OAAO,SAAS,SAAU,QAAO;AAErC,KAAI,OAAO,SAAS,WAClB,QAAQ,KAAa,eAAe,KAAK;AAG3C,KAAI,OAAO,SAAS,YAAY,SAAS,KAQvC,QALG,KAAa,eACb,KAAa,QAAQ,eACrB,KAAa,QAAQ,QACrB,KAAa,MAAM,eACnB,KAAa,MAAM;;;;;;;;AAa1B,SAAgB,gBAAgB,EAC9B,UACA,cACA,uBACgD;CAChD,MAAM,+BAA+B,cAAc;AACjD,MAAI,CAAC,eAAe,SAAS,CAAE,QAAO;AACtC,SAAO,OAAO,SAAS,SAAS,YAAY,SAAS,SAAS;IAC7D,CAAC,SAAS,CAAC;AAyBd,QAAO;EACL;EACA,sBAzB2B,cAAc;AAEzC,OAAI,iBAAiB,OAAW,QAAO;AAEvC,OAAI,wBAAwB,OAAW,QAAO;AAE9C,OAAI,6BAA8B,QAAO;AAEzC,OAAI,CAAC,eAAe,SAAS,CAAE,QAAO;AAEtC,OAAI,OAAO,SAAS,SAAS,SAAU,QAAO;GAG9C,MAAM,cAAc,wBAAwB,SAAS;AACrD,OAAI,eAAe,eAAe,kBAChC,QAAO,kBAAkB;AAK3B,UAAO;KACN;GAAC;GAAU;GAA8B;GAAc;GAAoB,CAAC;EAK9E"}
1
+ {"version":3,"file":"useNativeButton.mjs","names":["NATIVE_BUTTON_MAP: Record<string, boolean>"],"sources":["../../src/hooks/useNativeButton.ts"],"sourcesContent":["import { isValidElement, type ReactElement, type ReactNode, useMemo } from 'react';\n\nexport interface UseNativeButtonOptions {\n /**\n * The children element that will be used as the trigger\n */\n children: ReactNode;\n /**\n * User-provided nativeButton prop\n */\n nativeButton?: boolean;\n /**\n * Additional nativeButton from trigger props (for DropdownMenu)\n */\n triggerNativeButton?: boolean;\n}\n\nexport interface UseNativeButtonResult {\n /**\n * Whether the trigger element is a native button\n */\n isNativeButtonTriggerElement: boolean;\n /**\n * The resolved nativeButton value to pass to Base UI components\n */\n resolvedNativeButton: boolean | undefined;\n}\n\n/**\n * Map of component displayNames to their nativeButton values.\n * Components that render native <button> elements should be true,\n * components that render non-button elements should be false.\n */\nconst NATIVE_BUTTON_MAP: Record<string, boolean> = {\n A: false,\n ActionIcon: false,\n ActionIconGroup: false,\n Alert: false,\n Avatar: false,\n AvatarGroup: false,\n Block: false,\n BottomGradientButton: true,\n Burger: false,\n Button: true,\n Center: false,\n Checkbox: false,\n CheckboxGroup: false,\n Collapse: false,\n ColorSwatches: false,\n CopyButton: false,\n DownloadButton: false,\n EditableText: false,\n Empty: false,\n FileTypeIcon: false,\n Flexbox: false,\n FluentEmoji: false,\n GradientButton: true,\n Highlighter: false,\n Hotkey: false,\n Icon: false,\n Image: false,\n Img: false,\n Input: false,\n InputNumber: false,\n InputPassword: false,\n List: false,\n ListItem: false,\n LobeSelect: false,\n LobeSwitch: false,\n Markdown: false,\n MaterialFileTypeIcon: false,\n Segmented: false,\n Skeleton: false,\n SkeletonAvatar: false,\n SkeletonBlock: false,\n SkeletonButton: false,\n SkeletonParagraph: false,\n SkeletonTags: false,\n SkeletonTitle: false,\n Snippet: false,\n Tag: false,\n Text: false,\n TextArea: false,\n ThemeSwitch: false,\n Video: false,\n};\n\n/**\n * Get the displayName of a React component from an element.\n * Handles function components, forwardRef, memo, etc.\n */\nfunction getComponentDisplayName(element: ReactElement): string | undefined {\n const type = element.type;\n\n if (typeof type === 'string') return undefined;\n\n if (typeof type === 'function') {\n return (type as any).displayName || type.name;\n }\n\n if (typeof type === 'object' && type !== null) {\n // Handle forwardRef, memo, etc.\n const displayName =\n (type as any).displayName ||\n (type as any).render?.displayName ||\n (type as any).render?.name ||\n (type as any).type?.displayName ||\n (type as any).type?.name;\n return displayName;\n }\n\n return undefined;\n}\n\n/**\n * Hook to resolve nativeButton prop for Base UI trigger components.\n *\n * When using `render`, Base UI expects the rendered element to be a native <button> by default.\n * If we can infer it's not, we opt out to avoid warnings (users can still override via `nativeButton`).\n */\nexport function useNativeButton({\n children,\n nativeButton,\n triggerNativeButton,\n}: UseNativeButtonOptions): UseNativeButtonResult {\n const isNativeButtonTriggerElement = useMemo(() => {\n if (!isValidElement(children)) return false;\n return typeof children.type === 'string' && children.type === 'button';\n }, [children]);\n\n const resolvedNativeButton = useMemo(() => {\n // User-provided nativeButton takes highest priority\n if (nativeButton !== undefined) return nativeButton;\n // Trigger props nativeButton (for DropdownMenu) takes second priority\n if (triggerNativeButton !== undefined) return triggerNativeButton;\n // If it's a native button element, return true\n if (isNativeButtonTriggerElement) return true;\n // If children is not a valid element, let Base UI decide\n if (!isValidElement(children)) return undefined;\n // If it's a string type but not a button (e.g., 'div'), return false\n if (typeof children.type === 'string') return false;\n\n // Check if it's a known component from the library\n const displayName = getComponentDisplayName(children);\n if (displayName && displayName in NATIVE_BUTTON_MAP) {\n return NATIVE_BUTTON_MAP[displayName];\n }\n\n // For unknown React components, default to false to avoid warnings\n // since most custom components don't render native buttons\n return false;\n }, [children, isNativeButtonTriggerElement, nativeButton, triggerNativeButton]);\n\n return {\n isNativeButtonTriggerElement,\n resolvedNativeButton,\n };\n}\n"],"mappings":";;;;;;;;AAiCA,MAAMA,oBAA6C;CACjD,GAAG;CACH,YAAY;CACZ,iBAAiB;CACjB,OAAO;CACP,QAAQ;CACR,aAAa;CACb,OAAO;CACP,sBAAsB;CACtB,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,UAAU;CACV,eAAe;CACf,UAAU;CACV,eAAe;CACf,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,OAAO;CACP,cAAc;CACd,SAAS;CACT,aAAa;CACb,gBAAgB;CAChB,aAAa;CACb,QAAQ;CACR,MAAM;CACN,OAAO;CACP,KAAK;CACL,OAAO;CACP,aAAa;CACb,eAAe;CACf,MAAM;CACN,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,UAAU;CACV,sBAAsB;CACtB,WAAW;CACX,UAAU;CACV,gBAAgB;CAChB,eAAe;CACf,gBAAgB;CAChB,mBAAmB;CACnB,cAAc;CACd,eAAe;CACf,SAAS;CACT,KAAK;CACL,MAAM;CACN,UAAU;CACV,aAAa;CACb,OAAO;CACR;;;;;AAMD,SAAS,wBAAwB,SAA2C;CAC1E,MAAM,OAAO,QAAQ;AAErB,KAAI,OAAO,SAAS,SAAU,QAAO;AAErC,KAAI,OAAO,SAAS,WAClB,QAAQ,KAAa,eAAe,KAAK;AAG3C,KAAI,OAAO,SAAS,YAAY,SAAS,KAQvC,QALG,KAAa,eACb,KAAa,QAAQ,eACrB,KAAa,QAAQ,QACrB,KAAa,MAAM,eACnB,KAAa,MAAM;;;;;;;;AAa1B,SAAgB,gBAAgB,EAC9B,UACA,cACA,uBACgD;CAChD,MAAM,+BAA+B,cAAc;AACjD,MAAI,CAAC,eAAe,SAAS,CAAE,QAAO;AACtC,SAAO,OAAO,SAAS,SAAS,YAAY,SAAS,SAAS;IAC7D,CAAC,SAAS,CAAC;AAyBd,QAAO;EACL;EACA,sBAzB2B,cAAc;AAEzC,OAAI,iBAAiB,OAAW,QAAO;AAEvC,OAAI,wBAAwB,OAAW,QAAO;AAE9C,OAAI,6BAA8B,QAAO;AAEzC,OAAI,CAAC,eAAe,SAAS,CAAE,QAAO;AAEtC,OAAI,OAAO,SAAS,SAAS,SAAU,QAAO;GAG9C,MAAM,cAAc,wBAAwB,SAAS;AACrD,OAAI,eAAe,eAAe,kBAChC,QAAO,kBAAkB;AAK3B,UAAO;KACN;GAAC;GAAU;GAA8B;GAAc;GAAoB,CAAC;EAK9E"}
@@ -1 +1 @@
1
- {"version":3,"file":"useStreamHighlight.mjs","names":["lines: ThemedToken[][]","currentLine: ThemedToken[]","mergedLines: ThemedToken[][]","themesToLoad: any[]","lobeTheme"],"sources":["../../src/hooks/useStreamHighlight.ts"],"sourcesContent":["'use client';\n\nimport { CSSProperties, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { BuiltinTheme, ThemedToken } from 'shiki';\nimport { ShikiStreamTokenizer } from 'shiki-stream';\n\nimport { getCodeLanguageByInput } from '@/Highlighter/const';\nimport lobeTheme from '@/Highlighter/theme/lobe-theme';\n\nimport { StreamingHighlightResult, shikiModulePromise } from './useHighlight';\n\ntype StreamingOptions = {\n customThemes?: Record<string, any>;\n enabled?: boolean;\n language: string;\n theme: string;\n};\n\n// Optimized version: reduce array allocations and object spreading\nconst tokensToLineTokens = (tokens: ThemedToken[]): ThemedToken[][] => {\n if (!tokens.length) return [[]];\n\n const lines: ThemedToken[][] = [];\n let currentLine: ThemedToken[] = [];\n\n for (const token of tokens) {\n const content = token.content ?? '';\n\n if (content === '\\n') {\n lines.push(currentLine);\n currentLine = [];\n continue;\n }\n\n const newlineIndex = content.indexOf('\\n');\n if (newlineIndex === -1) {\n // No newline, add token directly\n currentLine.push(token);\n } else {\n // Split on newlines\n const segments = content.split('\\n');\n for (const [j, segment] of segments.entries()) {\n if (segment) {\n // Only create new object if we need to modify content\n currentLine.push(j === 0 && segment === content ? token : { ...token, content: segment });\n }\n if (j < segments.length - 1) {\n lines.push(currentLine);\n currentLine = [];\n }\n }\n }\n }\n\n // Don't forget the last line\n if (currentLine.length > 0 || lines.length === 0) {\n lines.push(currentLine);\n }\n\n return lines.length > 0 ? lines : [[]];\n};\n\nconst createPreStyle = (bg?: string, fg?: string): CSSProperties | undefined => {\n if (!bg && !fg) return undefined;\n return {\n backgroundColor: bg,\n color: fg,\n };\n};\n\nconst useStreamingHighlighter = (\n text: string,\n options: StreamingOptions,\n): StreamingHighlightResult | undefined => {\n const { customThemes, enabled, language, theme } = options;\n const [result, setResult] = useState<StreamingHighlightResult>();\n const tokenizerRef = useRef<ShikiStreamTokenizer | null>(null);\n const previousTextRef = useRef('');\n const safeText = text ?? '';\n const latestTextRef = useRef(safeText);\n const preStyleRef = useRef<CSSProperties | undefined>(undefined);\n const linesRef = useRef<ThemedToken[][]>([[]]);\n\n useEffect(() => {\n latestTextRef.current = safeText;\n }, [safeText]);\n\n // Use ref to store callback to avoid recreating it\n const setStreamingResultRef = useRef((rawLines: ThemedToken[][]) => {\n const previousLines = linesRef.current;\n const newLinesLength = rawLines.length;\n const prevLinesLength = previousLines.length;\n\n // Fast path: if lengths differ or it's a complete reset, use new lines directly\n if (newLinesLength !== prevLinesLength || newLinesLength === 0) {\n linesRef.current = rawLines;\n setResult({\n lines: rawLines,\n preStyle: preStyleRef.current,\n });\n return;\n }\n\n // Optimized comparison: only check changed lines\n let hasChanges = false;\n const mergedLines: ThemedToken[][] = [];\n\n for (let i = 0; i < newLinesLength; i++) {\n const newLine = rawLines[i];\n const prevLine = previousLines[i];\n\n // Quick reference equality check first\n if (prevLine === newLine) {\n mergedLines[i] = prevLine;\n continue;\n }\n\n // Length check\n if (!prevLine || prevLine.length !== newLine.length) {\n mergedLines[i] = newLine;\n hasChanges = true;\n continue;\n }\n\n // Deep comparison only for lines that might have changed\n let lineChanged = false;\n for (const [j, newToken] of newLine.entries()) {\n if (prevLine[j] !== newToken) {\n lineChanged = true;\n break;\n }\n }\n\n if (lineChanged) {\n mergedLines[i] = newLine;\n hasChanges = true;\n } else {\n mergedLines[i] = prevLine;\n }\n }\n\n // Only update state if there are actual changes\n if (hasChanges) {\n linesRef.current = mergedLines;\n setResult({\n lines: mergedLines,\n preStyle: preStyleRef.current,\n });\n }\n });\n\n const updateTokens = useCallback(async (nextText: string, forceReset = false) => {\n const tokenizer = tokenizerRef.current;\n if (!tokenizer) return;\n\n if (forceReset) {\n tokenizer.clear();\n previousTextRef.current = '';\n }\n\n const previousText = previousTextRef.current;\n let chunk = nextText;\n const canAppend = !forceReset && nextText.startsWith(previousText);\n\n if (canAppend) {\n chunk = nextText.slice(previousText.length);\n } else if (!forceReset) {\n tokenizer.clear();\n }\n\n previousTextRef.current = nextText;\n\n if (!chunk) {\n // Optimize: avoid array spread if possible\n const stableTokens = tokenizer.tokensStable;\n const unstableTokens = tokenizer.tokensUnstable;\n const totalLength = stableTokens.length + unstableTokens.length;\n\n if (totalLength === 0) {\n setStreamingResultRef.current([[]]);\n return;\n }\n\n // Only create merged array if we have both stable and unstable tokens\n const mergedTokens =\n stableTokens.length === 0\n ? unstableTokens\n : unstableTokens.length === 0\n ? stableTokens\n : [...stableTokens, ...unstableTokens];\n\n setStreamingResultRef.current(tokensToLineTokens(mergedTokens));\n return;\n }\n\n try {\n await tokenizer.enqueue(chunk);\n // Optimize: avoid array spread if possible\n const stableTokens = tokenizer.tokensStable;\n const unstableTokens = tokenizer.tokensUnstable;\n const mergedTokens =\n stableTokens.length === 0\n ? unstableTokens\n : unstableTokens.length === 0\n ? stableTokens\n : [...stableTokens, ...unstableTokens];\n setStreamingResultRef.current(tokensToLineTokens(mergedTokens));\n } catch (error) {\n console.error('Streaming highlighting failed:', error);\n }\n }, []);\n\n // Cache highlighter key to avoid unnecessary recreations\n const highlighterKeyRef = useRef<string>('');\n\n useEffect(() => {\n if (!enabled) {\n tokenizerRef.current?.clear();\n tokenizerRef.current = null;\n previousTextRef.current = '';\n preStyleRef.current = undefined;\n linesRef.current = [[]];\n setResult(undefined);\n highlighterKeyRef.current = '';\n return;\n }\n\n // Skip if language/theme combination hasn't changed\n const currentKey = `${language}-${theme}`;\n if (highlighterKeyRef.current === currentKey && tokenizerRef.current) {\n return;\n }\n\n let cancelled = false;\n\n (async () => {\n const mod = await shikiModulePromise;\n if (!mod || cancelled) return;\n\n try {\n // Load custom theme if using slack-dark or slack-ochin\n let themesToLoad: any[] = [theme];\n if (customThemes && theme === 'lobe-theme') {\n const customTheme = customThemes[theme];\n if (customTheme) {\n themesToLoad = [customTheme as any];\n }\n }\n\n // Only load the specific language and theme needed\n // getSingletonHighlighter will cache the instance internally\n const highlighter = await mod.getSingletonHighlighter({\n langs: language ? [language] : ['plaintext'],\n themes: themesToLoad,\n });\n\n if (!highlighter || cancelled) return;\n\n // Only create new tokenizer if key changed\n if (highlighterKeyRef.current !== currentKey) {\n // Clear old tokenizer\n tokenizerRef.current?.clear();\n\n const tokenizer = new ShikiStreamTokenizer({\n highlighter,\n lang: language,\n theme,\n });\n\n tokenizerRef.current = tokenizer;\n highlighterKeyRef.current = currentKey;\n previousTextRef.current = '';\n linesRef.current = [[]];\n\n const themeInfo = highlighter.getTheme(theme);\n preStyleRef.current = createPreStyle(themeInfo?.bg, themeInfo?.fg);\n }\n\n const currentText = latestTextRef.current;\n if (currentText) {\n await updateTokens(currentText, true);\n } else {\n setStreamingResultRef.current([[]]);\n }\n } catch (error) {\n console.error('Streaming highlighter initialization failed:', error);\n // Reset on error\n highlighterKeyRef.current = '';\n }\n })();\n\n return () => {\n cancelled = true;\n // Cleanup only if this effect was cancelled before completion\n // The next effect will handle cleanup if key changed\n };\n }, [enabled, language, theme, updateTokens, customThemes]);\n\n // Separate effect for text updates to avoid unnecessary tokenizer recreation\n useEffect(() => {\n if (!enabled) return;\n if (!tokenizerRef.current) return;\n // Use ref to get latest text to avoid stale closures\n const currentText = latestTextRef.current;\n updateTokens(currentText);\n }, [enabled, safeText, updateTokens]);\n\n return result;\n};\n\nexport const useStreamHighlight = (\n text: string,\n {\n language,\n theme: builtinTheme,\n streaming,\n }: { enableTransformer?: boolean; language: string; streaming?: boolean; theme?: BuiltinTheme },\n) => {\n // Safely handle language and text with boundary checks\n const safeText = text ?? '';\n const lang = (language ?? 'plaintext').toLowerCase();\n\n // Match supported languages\n const matchedLanguage = useMemo(() => getCodeLanguageByInput(lang), [lang]);\n\n const effectiveTheme = builtinTheme || 'lobe-theme';\n\n return useStreamingHighlighter(safeText, {\n customThemes: {\n 'lobe-theme': lobeTheme,\n },\n enabled: streaming,\n language: matchedLanguage,\n theme: effectiveTheme,\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"useStreamHighlight.mjs","names":["lines: ThemedToken[][]","currentLine: ThemedToken[]","mergedLines: ThemedToken[][]","themesToLoad: any[]","lobeTheme"],"sources":["../../src/hooks/useStreamHighlight.ts"],"sourcesContent":["'use client';\n\nimport { type CSSProperties, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { type BuiltinTheme, type ThemedToken } from 'shiki';\nimport { ShikiStreamTokenizer } from 'shiki-stream';\n\nimport { getCodeLanguageByInput } from '@/Highlighter/const';\nimport lobeTheme from '@/Highlighter/theme/lobe-theme';\n\nimport { shikiModulePromise, type StreamingHighlightResult } from './useHighlight';\n\ntype StreamingOptions = {\n customThemes?: Record<string, any>;\n enabled?: boolean;\n language: string;\n theme: string;\n};\n\n// Optimized version: reduce array allocations and object spreading\nconst tokensToLineTokens = (tokens: ThemedToken[]): ThemedToken[][] => {\n if (!tokens.length) return [[]];\n\n const lines: ThemedToken[][] = [];\n let currentLine: ThemedToken[] = [];\n\n for (const token of tokens) {\n const content = token.content ?? '';\n\n if (content === '\\n') {\n lines.push(currentLine);\n currentLine = [];\n continue;\n }\n\n const newlineIndex = content.indexOf('\\n');\n if (newlineIndex === -1) {\n // No newline, add token directly\n currentLine.push(token);\n } else {\n // Split on newlines\n const segments = content.split('\\n');\n for (const [j, segment] of segments.entries()) {\n if (segment) {\n // Only create new object if we need to modify content\n currentLine.push(j === 0 && segment === content ? token : { ...token, content: segment });\n }\n if (j < segments.length - 1) {\n lines.push(currentLine);\n currentLine = [];\n }\n }\n }\n }\n\n // Don't forget the last line\n if (currentLine.length > 0 || lines.length === 0) {\n lines.push(currentLine);\n }\n\n return lines.length > 0 ? lines : [[]];\n};\n\nconst createPreStyle = (bg?: string, fg?: string): CSSProperties | undefined => {\n if (!bg && !fg) return undefined;\n return {\n backgroundColor: bg,\n color: fg,\n };\n};\n\nconst useStreamingHighlighter = (\n text: string,\n options: StreamingOptions,\n): StreamingHighlightResult | undefined => {\n const { customThemes, enabled, language, theme } = options;\n const [result, setResult] = useState<StreamingHighlightResult>();\n const tokenizerRef = useRef<ShikiStreamTokenizer | null>(null);\n const previousTextRef = useRef('');\n const safeText = text ?? '';\n const latestTextRef = useRef(safeText);\n const preStyleRef = useRef<CSSProperties | undefined>(undefined);\n const linesRef = useRef<ThemedToken[][]>([[]]);\n\n useEffect(() => {\n latestTextRef.current = safeText;\n }, [safeText]);\n\n // Use ref to store callback to avoid recreating it\n const setStreamingResultRef = useRef((rawLines: ThemedToken[][]) => {\n const previousLines = linesRef.current;\n const newLinesLength = rawLines.length;\n const prevLinesLength = previousLines.length;\n\n // Fast path: if lengths differ or it's a complete reset, use new lines directly\n if (newLinesLength !== prevLinesLength || newLinesLength === 0) {\n linesRef.current = rawLines;\n setResult({\n lines: rawLines,\n preStyle: preStyleRef.current,\n });\n return;\n }\n\n // Optimized comparison: only check changed lines\n let hasChanges = false;\n const mergedLines: ThemedToken[][] = [];\n\n for (let i = 0; i < newLinesLength; i++) {\n const newLine = rawLines[i];\n const prevLine = previousLines[i];\n\n // Quick reference equality check first\n if (prevLine === newLine) {\n mergedLines[i] = prevLine;\n continue;\n }\n\n // Length check\n if (!prevLine || prevLine.length !== newLine.length) {\n mergedLines[i] = newLine;\n hasChanges = true;\n continue;\n }\n\n // Deep comparison only for lines that might have changed\n let lineChanged = false;\n for (const [j, newToken] of newLine.entries()) {\n if (prevLine[j] !== newToken) {\n lineChanged = true;\n break;\n }\n }\n\n if (lineChanged) {\n mergedLines[i] = newLine;\n hasChanges = true;\n } else {\n mergedLines[i] = prevLine;\n }\n }\n\n // Only update state if there are actual changes\n if (hasChanges) {\n linesRef.current = mergedLines;\n setResult({\n lines: mergedLines,\n preStyle: preStyleRef.current,\n });\n }\n });\n\n const updateTokens = useCallback(async (nextText: string, forceReset = false) => {\n const tokenizer = tokenizerRef.current;\n if (!tokenizer) return;\n\n if (forceReset) {\n tokenizer.clear();\n previousTextRef.current = '';\n }\n\n const previousText = previousTextRef.current;\n let chunk = nextText;\n const canAppend = !forceReset && nextText.startsWith(previousText);\n\n if (canAppend) {\n chunk = nextText.slice(previousText.length);\n } else if (!forceReset) {\n tokenizer.clear();\n }\n\n previousTextRef.current = nextText;\n\n if (!chunk) {\n // Optimize: avoid array spread if possible\n const stableTokens = tokenizer.tokensStable;\n const unstableTokens = tokenizer.tokensUnstable;\n const totalLength = stableTokens.length + unstableTokens.length;\n\n if (totalLength === 0) {\n setStreamingResultRef.current([[]]);\n return;\n }\n\n // Only create merged array if we have both stable and unstable tokens\n const mergedTokens =\n stableTokens.length === 0\n ? unstableTokens\n : unstableTokens.length === 0\n ? stableTokens\n : [...stableTokens, ...unstableTokens];\n\n setStreamingResultRef.current(tokensToLineTokens(mergedTokens));\n return;\n }\n\n try {\n await tokenizer.enqueue(chunk);\n // Optimize: avoid array spread if possible\n const stableTokens = tokenizer.tokensStable;\n const unstableTokens = tokenizer.tokensUnstable;\n const mergedTokens =\n stableTokens.length === 0\n ? unstableTokens\n : unstableTokens.length === 0\n ? stableTokens\n : [...stableTokens, ...unstableTokens];\n setStreamingResultRef.current(tokensToLineTokens(mergedTokens));\n } catch (error) {\n console.error('Streaming highlighting failed:', error);\n }\n }, []);\n\n // Cache highlighter key to avoid unnecessary recreations\n const highlighterKeyRef = useRef<string>('');\n\n useEffect(() => {\n if (!enabled) {\n tokenizerRef.current?.clear();\n tokenizerRef.current = null;\n previousTextRef.current = '';\n preStyleRef.current = undefined;\n linesRef.current = [[]];\n setResult(undefined);\n highlighterKeyRef.current = '';\n return;\n }\n\n // Skip if language/theme combination hasn't changed\n const currentKey = `${language}-${theme}`;\n if (highlighterKeyRef.current === currentKey && tokenizerRef.current) {\n return;\n }\n\n let cancelled = false;\n\n (async () => {\n const mod = await shikiModulePromise;\n if (!mod || cancelled) return;\n\n try {\n // Load custom theme if using slack-dark or slack-ochin\n let themesToLoad: any[] = [theme];\n if (customThemes && theme === 'lobe-theme') {\n const customTheme = customThemes[theme];\n if (customTheme) {\n themesToLoad = [customTheme as any];\n }\n }\n\n // Only load the specific language and theme needed\n // getSingletonHighlighter will cache the instance internally\n const highlighter = await mod.getSingletonHighlighter({\n langs: language ? [language] : ['plaintext'],\n themes: themesToLoad,\n });\n\n if (!highlighter || cancelled) return;\n\n // Only create new tokenizer if key changed\n if (highlighterKeyRef.current !== currentKey) {\n // Clear old tokenizer\n tokenizerRef.current?.clear();\n\n const tokenizer = new ShikiStreamTokenizer({\n highlighter,\n lang: language,\n theme,\n });\n\n tokenizerRef.current = tokenizer;\n highlighterKeyRef.current = currentKey;\n previousTextRef.current = '';\n linesRef.current = [[]];\n\n const themeInfo = highlighter.getTheme(theme);\n preStyleRef.current = createPreStyle(themeInfo?.bg, themeInfo?.fg);\n }\n\n const currentText = latestTextRef.current;\n if (currentText) {\n await updateTokens(currentText, true);\n } else {\n setStreamingResultRef.current([[]]);\n }\n } catch (error) {\n console.error('Streaming highlighter initialization failed:', error);\n // Reset on error\n highlighterKeyRef.current = '';\n }\n })();\n\n return () => {\n cancelled = true;\n // Cleanup only if this effect was cancelled before completion\n // The next effect will handle cleanup if key changed\n };\n }, [enabled, language, theme, updateTokens, customThemes]);\n\n // Separate effect for text updates to avoid unnecessary tokenizer recreation\n useEffect(() => {\n if (!enabled) return;\n if (!tokenizerRef.current) return;\n // Use ref to get latest text to avoid stale closures\n const currentText = latestTextRef.current;\n updateTokens(currentText);\n }, [enabled, safeText, updateTokens]);\n\n return result;\n};\n\nexport const useStreamHighlight = (\n text: string,\n {\n language,\n theme: builtinTheme,\n streaming,\n }: { enableTransformer?: boolean; language: string; streaming?: boolean; theme?: BuiltinTheme },\n) => {\n // Safely handle language and text with boundary checks\n const safeText = text ?? '';\n const lang = (language ?? 'plaintext').toLowerCase();\n\n // Match supported languages\n const matchedLanguage = useMemo(() => getCodeLanguageByInput(lang), [lang]);\n\n const effectiveTheme = builtinTheme || 'lobe-theme';\n\n return useStreamingHighlighter(safeText, {\n customThemes: {\n 'lobe-theme': lobeTheme,\n },\n enabled: streaming,\n language: matchedLanguage,\n theme: effectiveTheme,\n });\n};\n"],"mappings":";;;;;;;;;AAmBA,MAAM,sBAAsB,WAA2C;AACrE,KAAI,CAAC,OAAO,OAAQ,QAAO,CAAC,EAAE,CAAC;CAE/B,MAAMA,QAAyB,EAAE;CACjC,IAAIC,cAA6B,EAAE;AAEnC,MAAK,MAAM,SAAS,QAAQ;EAC1B,MAAM,UAAU,MAAM,WAAW;AAEjC,MAAI,YAAY,MAAM;AACpB,SAAM,KAAK,YAAY;AACvB,iBAAc,EAAE;AAChB;;AAIF,MADqB,QAAQ,QAAQ,KAAK,KACrB,GAEnB,aAAY,KAAK,MAAM;OAClB;GAEL,MAAM,WAAW,QAAQ,MAAM,KAAK;AACpC,QAAK,MAAM,CAAC,GAAG,YAAY,SAAS,SAAS,EAAE;AAC7C,QAAI,QAEF,aAAY,KAAK,MAAM,KAAK,YAAY,UAAU,QAAQ;KAAE,GAAG;KAAO,SAAS;KAAS,CAAC;AAE3F,QAAI,IAAI,SAAS,SAAS,GAAG;AAC3B,WAAM,KAAK,YAAY;AACvB,mBAAc,EAAE;;;;;AAOxB,KAAI,YAAY,SAAS,KAAK,MAAM,WAAW,EAC7C,OAAM,KAAK,YAAY;AAGzB,QAAO,MAAM,SAAS,IAAI,QAAQ,CAAC,EAAE,CAAC;;AAGxC,MAAM,kBAAkB,IAAa,OAA2C;AAC9E,KAAI,CAAC,MAAM,CAAC,GAAI,QAAO;AACvB,QAAO;EACL,iBAAiB;EACjB,OAAO;EACR;;AAGH,MAAM,2BACJ,MACA,YACyC;CACzC,MAAM,EAAE,cAAc,SAAS,UAAU,UAAU;CACnD,MAAM,CAAC,QAAQ,aAAa,UAAoC;CAChE,MAAM,eAAe,OAAoC,KAAK;CAC9D,MAAM,kBAAkB,OAAO,GAAG;CAClC,MAAM,WAAW,QAAQ;CACzB,MAAM,gBAAgB,OAAO,SAAS;CACtC,MAAM,cAAc,OAAkC,OAAU;CAChE,MAAM,WAAW,OAAwB,CAAC,EAAE,CAAC,CAAC;AAE9C,iBAAgB;AACd,gBAAc,UAAU;IACvB,CAAC,SAAS,CAAC;CAGd,MAAM,wBAAwB,QAAQ,aAA8B;EAClE,MAAM,gBAAgB,SAAS;EAC/B,MAAM,iBAAiB,SAAS;AAIhC,MAAI,mBAHoB,cAAc,UAGI,mBAAmB,GAAG;AAC9D,YAAS,UAAU;AACnB,aAAU;IACR,OAAO;IACP,UAAU,YAAY;IACvB,CAAC;AACF;;EAIF,IAAI,aAAa;EACjB,MAAMC,cAA+B,EAAE;AAEvC,OAAK,IAAI,IAAI,GAAG,IAAI,gBAAgB,KAAK;GACvC,MAAM,UAAU,SAAS;GACzB,MAAM,WAAW,cAAc;AAG/B,OAAI,aAAa,SAAS;AACxB,gBAAY,KAAK;AACjB;;AAIF,OAAI,CAAC,YAAY,SAAS,WAAW,QAAQ,QAAQ;AACnD,gBAAY,KAAK;AACjB,iBAAa;AACb;;GAIF,IAAI,cAAc;AAClB,QAAK,MAAM,CAAC,GAAG,aAAa,QAAQ,SAAS,CAC3C,KAAI,SAAS,OAAO,UAAU;AAC5B,kBAAc;AACd;;AAIJ,OAAI,aAAa;AACf,gBAAY,KAAK;AACjB,iBAAa;SAEb,aAAY,KAAK;;AAKrB,MAAI,YAAY;AACd,YAAS,UAAU;AACnB,aAAU;IACR,OAAO;IACP,UAAU,YAAY;IACvB,CAAC;;GAEJ;CAEF,MAAM,eAAe,YAAY,OAAO,UAAkB,aAAa,UAAU;EAC/E,MAAM,YAAY,aAAa;AAC/B,MAAI,CAAC,UAAW;AAEhB,MAAI,YAAY;AACd,aAAU,OAAO;AACjB,mBAAgB,UAAU;;EAG5B,MAAM,eAAe,gBAAgB;EACrC,IAAI,QAAQ;AAGZ,MAFkB,CAAC,cAAc,SAAS,WAAW,aAAa,CAGhE,SAAQ,SAAS,MAAM,aAAa,OAAO;WAClC,CAAC,WACV,WAAU,OAAO;AAGnB,kBAAgB,UAAU;AAE1B,MAAI,CAAC,OAAO;GAEV,MAAM,eAAe,UAAU;GAC/B,MAAM,iBAAiB,UAAU;AAGjC,OAFoB,aAAa,SAAS,eAAe,WAErC,GAAG;AACrB,0BAAsB,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC;;GAIF,MAAM,eACJ,aAAa,WAAW,IACpB,iBACA,eAAe,WAAW,IACxB,eACA,CAAC,GAAG,cAAc,GAAG,eAAe;AAE5C,yBAAsB,QAAQ,mBAAmB,aAAa,CAAC;AAC/D;;AAGF,MAAI;AACF,SAAM,UAAU,QAAQ,MAAM;GAE9B,MAAM,eAAe,UAAU;GAC/B,MAAM,iBAAiB,UAAU;GACjC,MAAM,eACJ,aAAa,WAAW,IACpB,iBACA,eAAe,WAAW,IACxB,eACA,CAAC,GAAG,cAAc,GAAG,eAAe;AAC5C,yBAAsB,QAAQ,mBAAmB,aAAa,CAAC;WACxD,OAAO;AACd,WAAQ,MAAM,kCAAkC,MAAM;;IAEvD,EAAE,CAAC;CAGN,MAAM,oBAAoB,OAAe,GAAG;AAE5C,iBAAgB;AACd,MAAI,CAAC,SAAS;AACZ,gBAAa,SAAS,OAAO;AAC7B,gBAAa,UAAU;AACvB,mBAAgB,UAAU;AAC1B,eAAY,UAAU;AACtB,YAAS,UAAU,CAAC,EAAE,CAAC;AACvB,aAAU,OAAU;AACpB,qBAAkB,UAAU;AAC5B;;EAIF,MAAM,aAAa,GAAG,SAAS,GAAG;AAClC,MAAI,kBAAkB,YAAY,cAAc,aAAa,QAC3D;EAGF,IAAI,YAAY;AAEhB,GAAC,YAAY;GACX,MAAM,MAAM,MAAM;AAClB,OAAI,CAAC,OAAO,UAAW;AAEvB,OAAI;IAEF,IAAIC,eAAsB,CAAC,MAAM;AACjC,QAAI,gBAAgB,UAAU,cAAc;KAC1C,MAAM,cAAc,aAAa;AACjC,SAAI,YACF,gBAAe,CAAC,YAAmB;;IAMvC,MAAM,cAAc,MAAM,IAAI,wBAAwB;KACpD,OAAO,WAAW,CAAC,SAAS,GAAG,CAAC,YAAY;KAC5C,QAAQ;KACT,CAAC;AAEF,QAAI,CAAC,eAAe,UAAW;AAG/B,QAAI,kBAAkB,YAAY,YAAY;AAE5C,kBAAa,SAAS,OAAO;AAQ7B,kBAAa,UANK,IAAI,qBAAqB;MACzC;MACA,MAAM;MACN;MACD,CAAC;AAGF,uBAAkB,UAAU;AAC5B,qBAAgB,UAAU;AAC1B,cAAS,UAAU,CAAC,EAAE,CAAC;KAEvB,MAAM,YAAY,YAAY,SAAS,MAAM;AAC7C,iBAAY,UAAU,eAAe,WAAW,IAAI,WAAW,GAAG;;IAGpE,MAAM,cAAc,cAAc;AAClC,QAAI,YACF,OAAM,aAAa,aAAa,KAAK;QAErC,uBAAsB,QAAQ,CAAC,EAAE,CAAC,CAAC;YAE9B,OAAO;AACd,YAAQ,MAAM,gDAAgD,MAAM;AAEpE,sBAAkB,UAAU;;MAE5B;AAEJ,eAAa;AACX,eAAY;;IAIb;EAAC;EAAS;EAAU;EAAO;EAAc;EAAa,CAAC;AAG1D,iBAAgB;AACd,MAAI,CAAC,QAAS;AACd,MAAI,CAAC,aAAa,QAAS;EAE3B,MAAM,cAAc,cAAc;AAClC,eAAa,YAAY;IACxB;EAAC;EAAS;EAAU;EAAa,CAAC;AAErC,QAAO;;AAGT,MAAa,sBACX,MACA,EACE,UACA,OAAO,cACP,gBAEC;CAEH,MAAM,WAAW,QAAQ;CACzB,MAAM,QAAQ,YAAY,aAAa,aAAa;CAGpD,MAAM,kBAAkB,cAAc,uBAAuB,KAAK,EAAE,CAAC,KAAK,CAAC;CAE3E,MAAM,iBAAiB,gBAAgB;AAEvC,QAAO,wBAAwB,UAAU;EACvC,cAAc,EACZ,cAAcC,oBACf;EACD,SAAS;EACT,UAAU;EACV,OAAO;EACR,CAAC"}
@@ -1,7 +1,7 @@
1
- import { MotionComponentType } from "../MotionProvider/index.mjs";
2
1
  import { I18nContextValue, TranslationKey, TranslationResources, TranslationResourcesInput } from "./types.mjs";
2
+ import { MotionComponentType } from "../MotionProvider/index.mjs";
3
3
  import "../ConfigProvider/index.mjs";
4
- import * as react26 from "react";
4
+ import * as react87 from "react";
5
5
  import { ReactNode } from "react";
6
6
 
7
7
  //#region src/i18n/context.d.ts
@@ -11,7 +11,7 @@ interface I18nProviderProps {
11
11
  motion: MotionComponentType;
12
12
  resources?: TranslationResourcesInput;
13
13
  }
14
- declare const I18nProvider: react26.NamedExoticComponent<I18nProviderProps>;
14
+ declare const I18nProvider: react87.NamedExoticComponent<I18nProviderProps>;
15
15
  //#endregion
16
16
  export { I18nProvider, I18nProviderProps };
17
17
  //# sourceMappingURL=context.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.mjs","names":["ConfigProvider"],"sources":["../../src/i18n/context.tsx"],"sourcesContent":["import { type ReactNode, memo } from 'react';\n\nimport ConfigProvider from '@/ConfigProvider';\nimport { type MotionComponentType } from '@/MotionProvider';\n\nimport type { TranslationResourcesInput } from './types';\n\nexport interface I18nProviderProps {\n children: ReactNode;\n locale?: string;\n motion: MotionComponentType;\n resources?: TranslationResourcesInput;\n}\n\n// Re-export for backward compatibility\nexport { I18nContext } from '@/ConfigProvider';\n\n// I18nProvider delegates to ConfigProvider with flattened i18n props\nexport const I18nProvider = memo<I18nProviderProps>(({ children, locale, resources, motion }) => {\n return (\n <ConfigProvider config={{}} locale={locale} motion={motion} resources={resources}>\n {children}\n </ConfigProvider>\n );\n});\n\n// Internal useI18n - for useTranslation only, not exported publicly\nexport { useI18n } from '@/ConfigProvider';\n\n// Re-export types\nexport type { I18nContextValue, TranslationKey, TranslationResources } from './types';\n"],"mappings":";;;;;AAkBA,MAAa,eAAe,MAAyB,EAAE,UAAU,QAAQ,WAAW,aAAa;AAC/F,QACE,oBAACA;EAAe,QAAQ,EAAE;EAAU;EAAgB;EAAmB;EACpE;GACc;EAEnB"}
1
+ {"version":3,"file":"context.mjs","names":["ConfigProvider"],"sources":["../../src/i18n/context.tsx"],"sourcesContent":["import { memo, type ReactNode } from 'react';\n\nimport ConfigProvider from '@/ConfigProvider';\nimport type { MotionComponentType } from '@/MotionProvider';\n\nimport { type TranslationResourcesInput } from './types';\n\nexport interface I18nProviderProps {\n children: ReactNode;\n locale?: string;\n motion: MotionComponentType;\n resources?: TranslationResourcesInput;\n}\n\n// Re-export for backward compatibility\nexport { I18nContext } from '@/ConfigProvider';\n\n// I18nProvider delegates to ConfigProvider with flattened i18n props\nexport const I18nProvider = memo<I18nProviderProps>(({ children, locale, resources, motion }) => {\n return (\n <ConfigProvider config={{}} locale={locale} motion={motion} resources={resources}>\n {children}\n </ConfigProvider>\n );\n});\n\n// Internal useI18n - for useTranslation only, not exported publicly\nexport { useI18n } from '@/ConfigProvider';\n\n// Re-export types\nexport type { I18nContextValue, TranslationKey, TranslationResources } from './types';\n"],"mappings":";;;;;AAkBA,MAAa,eAAe,MAAyB,EAAE,UAAU,QAAQ,WAAW,aAAa;AAC/F,QACE,oBAACA;EAAe,QAAQ,EAAE;EAAU;EAAgB;EAAmB;EACpE;GACc;EAEnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Color.mjs","names":["Icon: IconType"],"sources":["../../../../src/icons/Authelia/components/Color.tsx"],"sourcesContent":["'use client';\n\nimport { IconType, useFillIds } from '@lobehub/icons';\nimport { memo } from 'react';\n\nimport { TITLE } from '../style';\n\nconst Icon: IconType = memo(({ size = '1em', style, ...rest }) => {\n const [a, b, c, d, e] = useFillIds(TITLE, 5);\n return (\n <svg\n height={size}\n style={{ flex: 'none', lineHeight: 1, ...style }}\n viewBox=\"0 0 24 24\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <title>{TITLE}</title>\n <path\n d=\"M12.04 17.99c-3.312-.001-6.044-2.719-6.02-6.025.025-3.47 2.905-6.036 6.073-6.003 3.13.032 5.968 2.485 5.977 6.02.009 3.409-2.727 6.002-6.03 6.008zm1.567-8.38c.002-.767-.447-1.372-1.153-1.555a1.572 1.572 0 00-1.766.745c-.365.647-.268 1.384.311 1.9.284.252.308.491.22.828-.264 1.013-.501 2.034-.752 3.052-.092.376.008.697.299.944.609.515 1.718.565 2.377.118.472-.321.591-.579.464-1.132-.242-1.056-.498-2.11-.762-3.161-.06-.237-.037-.395.172-.56.375-.292.615-.675.59-1.179z\"\n fill={a.fill}\n />\n <path\n d=\"M11.995 20.95c-4.258.137-8.345-3.09-8.918-7.86C2.703 9.98 3.654 7.307 6 5.198c.538-.485 1.192-.85 1.82-1.224.488-.29.899-.165 1.15.265.259.444.134.847-.348 1.169-.449.3-.92.577-1.333.923-1.53 1.283-2.384 2.938-2.567 4.923-.167 1.815.234 3.506 1.32 4.978 1.42 1.926 3.35 2.961 5.753 3.05 2.141.081 3.982-.679 5.459-2.198.6-.618 1.017-1.42 1.488-2.156.262-.41.613-.617 1.01-.496.503.153.766.599.521 1.11-.34.711-.71 1.432-1.198 2.045-1.565 1.971-3.651 3.046-6.14 3.356a.858.858 0 01-.108.007h-.832z\"\n fill={b.fill}\n />\n <path\n d=\"M0 12.325C.04 9.042.96 6.549 2.744 4.38 4.546 2.19 6.851.806 9.637.27c.57-.11 1.175-.056 1.763-.054.31.001.471.207.526.5.06.33-.091.748-.378.869a3.297 3.297 0 01-.834.2c-1.945.258-3.703.966-5.214 2.22-2.138 1.773-3.437 4.026-3.746 6.81-.3 2.72.41 5.173 2.018 7.372.248.34.549.638.808.97.379.486.352.863-.064 1.235-.35.313-.78.272-1.177-.133a11.342 11.342 0 01-3.02-5.576C.114 13.76.061 12.805 0 12.325z\"\n fill={c.fill}\n />\n <path\n d=\"M13.268 23.77c-.12 0-.241.006-.362-.002-.452-.031-.758-.296-.802-.687-.047-.422.221-.788.679-.889.317-.07.641-.102.961-.16 3.216-.58 5.648-2.272 7.27-5.12a9.973 9.973 0 001.317-4.754 9.52 9.52 0 00-.65-3.748c-.074-.188-.114-.432-.062-.62.099-.35.337-.611.74-.642.375-.03.697.141.84.554.23.67.453 1.35.582 2.045.469 2.509.193 4.941-.907 7.255-.894 1.883-2.186 3.447-3.893 4.658-1.518 1.077-3.187 1.784-5.032 2.062-.226.034-.454.047-.68.07l-.001-.023z\"\n fill={d.fill}\n />\n <path\n d=\"M20.84 10.15c0 .494-.248.806-.674.882-.41.074-.752-.143-.915-.585-.216-.585-.388-1.192-.651-1.755-.694-1.48-1.812-2.557-3.27-3.287-.119-.059-.24-.115-.354-.18-.442-.248-.61-.709-.42-1.131.198-.441.632-.643 1.116-.403.653.324 1.307.677 1.886 1.117 1.625 1.235 2.67 2.877 3.203 4.845.028.105.05.212.068.318.01.07.009.143.01.179z\"\n fill={e.fill}\n />\n <defs>\n <linearGradient\n gradientUnits=\"userSpaceOnUse\"\n id={a.id}\n x1=\"-.251\"\n x2=\"23.906\"\n y1=\"11.923\"\n y2=\"12.026\"\n >\n <stop stopColor=\"#3F51B4\" />\n <stop offset=\"1\" stopColor=\"#113155\" />\n </linearGradient>\n <linearGradient\n gradientUnits=\"userSpaceOnUse\"\n id={b.id}\n x1=\"-.253\"\n x2=\"23.905\"\n y1=\"12.342\"\n y2=\"12.446\"\n >\n <stop stopColor=\"#3F51B4\" />\n <stop offset=\"1\" stopColor=\"#113155\" />\n </linearGradient>\n <linearGradient\n gradientUnits=\"userSpaceOnUse\"\n id={c.id}\n x1=\"-.245\"\n x2=\"23.913\"\n y1=\"10.367\"\n y2=\"10.47\"\n >\n <stop stopColor=\"#3F51B4\" />\n <stop offset=\"1\" stopColor=\"#113155\" />\n </linearGradient>\n <linearGradient\n gradientUnits=\"userSpaceOnUse\"\n id={d.id}\n x1=\"-.266\"\n x2=\"23.892\"\n y1=\"15.39\"\n y2=\"15.493\"\n >\n <stop stopColor=\"#3F51B4\" />\n <stop offset=\"1\" stopColor=\"#113155\" />\n </linearGradient>\n <linearGradient\n gradientUnits=\"userSpaceOnUse\"\n id={e.id}\n x1=\"-.231\"\n x2=\"23.926\"\n y1=\"7.241\"\n y2=\"7.344\"\n >\n <stop stopColor=\"#3F51B4\" />\n <stop offset=\"1\" stopColor=\"#113155\" />\n </linearGradient>\n </defs>\n </svg>\n );\n});\n\nexport default Icon;\n"],"mappings":";;;;;;;;AAOA,MAAMA,OAAiB,MAAM,EAAE,OAAO,OAAO,OAAO,GAAG,WAAW;CAChE,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,WAAW,OAAO,EAAE;AAC5C,QACE,qBAAC;EACC,QAAQ;EACR,OAAO;GAAE,MAAM;GAAQ,YAAY;GAAG,GAAG;GAAO;EAChD,SAAQ;EACR,OAAO;EACP,OAAM;EACN,GAAI;;GAEJ,oBAAC,qBAAO,QAAc;GACtB,oBAAC;IACC,GAAE;IACF,MAAM,EAAE;KACR;GACF,oBAAC;IACC,GAAE;IACF,MAAM,EAAE;KACR;GACF,oBAAC;IACC,GAAE;IACF,MAAM,EAAE;KACR;GACF,oBAAC;IACC,GAAE;IACF,MAAM,EAAE;KACR;GACF,oBAAC;IACC,GAAE;IACF,MAAM,EAAE;KACR;GACF,qBAAC;IACC,qBAAC;KACC,eAAc;KACd,IAAI,EAAE;KACN,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;gBAEH,oBAAC,UAAK,WAAU,YAAY,EAC5B,oBAAC;MAAK,QAAO;MAAI,WAAU;OAAY;MACxB;IACjB,qBAAC;KACC,eAAc;KACd,IAAI,EAAE;KACN,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;gBAEH,oBAAC,UAAK,WAAU,YAAY,EAC5B,oBAAC;MAAK,QAAO;MAAI,WAAU;OAAY;MACxB;IACjB,qBAAC;KACC,eAAc;KACd,IAAI,EAAE;KACN,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;gBAEH,oBAAC,UAAK,WAAU,YAAY,EAC5B,oBAAC;MAAK,QAAO;MAAI,WAAU;OAAY;MACxB;IACjB,qBAAC;KACC,eAAc;KACd,IAAI,EAAE;KACN,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;gBAEH,oBAAC,UAAK,WAAU,YAAY,EAC5B,oBAAC;MAAK,QAAO;MAAI,WAAU;OAAY;MACxB;IACjB,qBAAC;KACC,eAAc;KACd,IAAI,EAAE;KACN,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;gBAEH,oBAAC,UAAK,WAAU,YAAY,EAC5B,oBAAC;MAAK,QAAO;MAAI,WAAU;OAAY;MACxB;OACZ;;GACH;EAER;AAEF,oBAAe"}
1
+ {"version":3,"file":"Color.mjs","names":["Icon: IconType"],"sources":["../../../../src/icons/Authelia/components/Color.tsx"],"sourcesContent":["'use client';\n\nimport { type IconType, useFillIds } from '@lobehub/icons';\nimport { memo } from 'react';\n\nimport { TITLE } from '../style';\n\nconst Icon: IconType = memo(({ size = '1em', style, ...rest }) => {\n const [a, b, c, d, e] = useFillIds(TITLE, 5);\n return (\n <svg\n height={size}\n style={{ flex: 'none', lineHeight: 1, ...style }}\n viewBox=\"0 0 24 24\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <title>{TITLE}</title>\n <path\n d=\"M12.04 17.99c-3.312-.001-6.044-2.719-6.02-6.025.025-3.47 2.905-6.036 6.073-6.003 3.13.032 5.968 2.485 5.977 6.02.009 3.409-2.727 6.002-6.03 6.008zm1.567-8.38c.002-.767-.447-1.372-1.153-1.555a1.572 1.572 0 00-1.766.745c-.365.647-.268 1.384.311 1.9.284.252.308.491.22.828-.264 1.013-.501 2.034-.752 3.052-.092.376.008.697.299.944.609.515 1.718.565 2.377.118.472-.321.591-.579.464-1.132-.242-1.056-.498-2.11-.762-3.161-.06-.237-.037-.395.172-.56.375-.292.615-.675.59-1.179z\"\n fill={a.fill}\n />\n <path\n d=\"M11.995 20.95c-4.258.137-8.345-3.09-8.918-7.86C2.703 9.98 3.654 7.307 6 5.198c.538-.485 1.192-.85 1.82-1.224.488-.29.899-.165 1.15.265.259.444.134.847-.348 1.169-.449.3-.92.577-1.333.923-1.53 1.283-2.384 2.938-2.567 4.923-.167 1.815.234 3.506 1.32 4.978 1.42 1.926 3.35 2.961 5.753 3.05 2.141.081 3.982-.679 5.459-2.198.6-.618 1.017-1.42 1.488-2.156.262-.41.613-.617 1.01-.496.503.153.766.599.521 1.11-.34.711-.71 1.432-1.198 2.045-1.565 1.971-3.651 3.046-6.14 3.356a.858.858 0 01-.108.007h-.832z\"\n fill={b.fill}\n />\n <path\n d=\"M0 12.325C.04 9.042.96 6.549 2.744 4.38 4.546 2.19 6.851.806 9.637.27c.57-.11 1.175-.056 1.763-.054.31.001.471.207.526.5.06.33-.091.748-.378.869a3.297 3.297 0 01-.834.2c-1.945.258-3.703.966-5.214 2.22-2.138 1.773-3.437 4.026-3.746 6.81-.3 2.72.41 5.173 2.018 7.372.248.34.549.638.808.97.379.486.352.863-.064 1.235-.35.313-.78.272-1.177-.133a11.342 11.342 0 01-3.02-5.576C.114 13.76.061 12.805 0 12.325z\"\n fill={c.fill}\n />\n <path\n d=\"M13.268 23.77c-.12 0-.241.006-.362-.002-.452-.031-.758-.296-.802-.687-.047-.422.221-.788.679-.889.317-.07.641-.102.961-.16 3.216-.58 5.648-2.272 7.27-5.12a9.973 9.973 0 001.317-4.754 9.52 9.52 0 00-.65-3.748c-.074-.188-.114-.432-.062-.62.099-.35.337-.611.74-.642.375-.03.697.141.84.554.23.67.453 1.35.582 2.045.469 2.509.193 4.941-.907 7.255-.894 1.883-2.186 3.447-3.893 4.658-1.518 1.077-3.187 1.784-5.032 2.062-.226.034-.454.047-.68.07l-.001-.023z\"\n fill={d.fill}\n />\n <path\n d=\"M20.84 10.15c0 .494-.248.806-.674.882-.41.074-.752-.143-.915-.585-.216-.585-.388-1.192-.651-1.755-.694-1.48-1.812-2.557-3.27-3.287-.119-.059-.24-.115-.354-.18-.442-.248-.61-.709-.42-1.131.198-.441.632-.643 1.116-.403.653.324 1.307.677 1.886 1.117 1.625 1.235 2.67 2.877 3.203 4.845.028.105.05.212.068.318.01.07.009.143.01.179z\"\n fill={e.fill}\n />\n <defs>\n <linearGradient\n gradientUnits=\"userSpaceOnUse\"\n id={a.id}\n x1=\"-.251\"\n x2=\"23.906\"\n y1=\"11.923\"\n y2=\"12.026\"\n >\n <stop stopColor=\"#3F51B4\" />\n <stop offset=\"1\" stopColor=\"#113155\" />\n </linearGradient>\n <linearGradient\n gradientUnits=\"userSpaceOnUse\"\n id={b.id}\n x1=\"-.253\"\n x2=\"23.905\"\n y1=\"12.342\"\n y2=\"12.446\"\n >\n <stop stopColor=\"#3F51B4\" />\n <stop offset=\"1\" stopColor=\"#113155\" />\n </linearGradient>\n <linearGradient\n gradientUnits=\"userSpaceOnUse\"\n id={c.id}\n x1=\"-.245\"\n x2=\"23.913\"\n y1=\"10.367\"\n y2=\"10.47\"\n >\n <stop stopColor=\"#3F51B4\" />\n <stop offset=\"1\" stopColor=\"#113155\" />\n </linearGradient>\n <linearGradient\n gradientUnits=\"userSpaceOnUse\"\n id={d.id}\n x1=\"-.266\"\n x2=\"23.892\"\n y1=\"15.39\"\n y2=\"15.493\"\n >\n <stop stopColor=\"#3F51B4\" />\n <stop offset=\"1\" stopColor=\"#113155\" />\n </linearGradient>\n <linearGradient\n gradientUnits=\"userSpaceOnUse\"\n id={e.id}\n x1=\"-.231\"\n x2=\"23.926\"\n y1=\"7.241\"\n y2=\"7.344\"\n >\n <stop stopColor=\"#3F51B4\" />\n <stop offset=\"1\" stopColor=\"#113155\" />\n </linearGradient>\n </defs>\n </svg>\n );\n});\n\nexport default Icon;\n"],"mappings":";;;;;;;;AAOA,MAAMA,OAAiB,MAAM,EAAE,OAAO,OAAO,OAAO,GAAG,WAAW;CAChE,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,WAAW,OAAO,EAAE;AAC5C,QACE,qBAAC;EACC,QAAQ;EACR,OAAO;GAAE,MAAM;GAAQ,YAAY;GAAG,GAAG;GAAO;EAChD,SAAQ;EACR,OAAO;EACP,OAAM;EACN,GAAI;;GAEJ,oBAAC,qBAAO,QAAc;GACtB,oBAAC;IACC,GAAE;IACF,MAAM,EAAE;KACR;GACF,oBAAC;IACC,GAAE;IACF,MAAM,EAAE;KACR;GACF,oBAAC;IACC,GAAE;IACF,MAAM,EAAE;KACR;GACF,oBAAC;IACC,GAAE;IACF,MAAM,EAAE;KACR;GACF,oBAAC;IACC,GAAE;IACF,MAAM,EAAE;KACR;GACF,qBAAC;IACC,qBAAC;KACC,eAAc;KACd,IAAI,EAAE;KACN,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;gBAEH,oBAAC,UAAK,WAAU,YAAY,EAC5B,oBAAC;MAAK,QAAO;MAAI,WAAU;OAAY;MACxB;IACjB,qBAAC;KACC,eAAc;KACd,IAAI,EAAE;KACN,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;gBAEH,oBAAC,UAAK,WAAU,YAAY,EAC5B,oBAAC;MAAK,QAAO;MAAI,WAAU;OAAY;MACxB;IACjB,qBAAC;KACC,eAAc;KACd,IAAI,EAAE;KACN,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;gBAEH,oBAAC,UAAK,WAAU,YAAY,EAC5B,oBAAC;MAAK,QAAO;MAAI,WAAU;OAAY;MACxB;IACjB,qBAAC;KACC,eAAc;KACd,IAAI,EAAE;KACN,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;gBAEH,oBAAC,UAAK,WAAU,YAAY,EAC5B,oBAAC;MAAK,QAAO;MAAI,WAAU;OAAY;MACxB;IACjB,qBAAC;KACC,eAAc;KACd,IAAI,EAAE;KACN,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;gBAEH,oBAAC,UAAK,WAAU,YAAY,EAC5B,oBAAC;MAAK,QAAO;MAAI,WAAU;OAAY;MACxB;OACZ;;GACH;EAER;AAEF,oBAAe"}
@@ -1,8 +1,8 @@
1
- import * as react91 from "react";
1
+ import * as react90 from "react";
2
2
  import * as lucide_react0 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/BotPromptIcon.d.ts
5
- declare const BotPromptIcon: react91.ForwardRefExoticComponent<Omit<lucide_react0.LucideProps, "ref"> & react91.RefAttributes<SVGSVGElement>>;
5
+ declare const BotPromptIcon: react90.ForwardRefExoticComponent<Omit<lucide_react0.LucideProps, "ref"> & react90.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { BotPromptIcon };
8
8
  //# sourceMappingURL=BotPromptIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react89 from "react";
1
+ import * as react88 from "react";
2
2
  import * as lucide_react0 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/CreateBotIcon.d.ts
5
- declare const CreateBotIcon: react89.ForwardRefExoticComponent<Omit<lucide_react0.LucideProps, "ref"> & react89.RefAttributes<SVGSVGElement>>;
5
+ declare const CreateBotIcon: react88.ForwardRefExoticComponent<Omit<lucide_react0.LucideProps, "ref"> & react88.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { CreateBotIcon };
8
8
  //# sourceMappingURL=CreateBotIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react95 from "react";
1
+ import * as react94 from "react";
2
2
  import * as lucide_react2 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/DiscordIcon.d.ts
5
- declare const DiscordIcon: react95.ForwardRefExoticComponent<Omit<lucide_react2.LucideProps, "ref"> & react95.RefAttributes<SVGSVGElement>>;
5
+ declare const DiscordIcon: react94.ForwardRefExoticComponent<Omit<lucide_react2.LucideProps, "ref"> & react94.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { DiscordIcon };
8
8
  //# sourceMappingURL=DiscordIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react97 from "react";
2
- import * as lucide_react3 from "lucide-react";
1
+ import * as react92 from "react";
2
+ import * as lucide_react1 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/GlobeOffIcon.d.ts
5
- declare const GlobeOffIcon: react97.ForwardRefExoticComponent<Omit<lucide_react3.LucideProps, "ref"> & react97.RefAttributes<SVGSVGElement>>;
5
+ declare const GlobeOffIcon: react92.ForwardRefExoticComponent<Omit<lucide_react1.LucideProps, "ref"> & react92.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { GlobeOffIcon };
8
8
  //# sourceMappingURL=GlobeOffIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react99 from "react";
2
- import * as lucide_react4 from "lucide-react";
1
+ import * as react102 from "react";
2
+ import * as lucide_react6 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/GroupBotIcon.d.ts
5
- declare const GroupBotIcon: react99.ForwardRefExoticComponent<Omit<lucide_react4.LucideProps, "ref"> & react99.RefAttributes<SVGSVGElement>>;
5
+ declare const GroupBotIcon: react102.ForwardRefExoticComponent<Omit<lucide_react6.LucideProps, "ref"> & react102.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { GroupBotIcon };
8
8
  //# sourceMappingURL=GroupBotIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react93 from "react";
2
- import * as lucide_react1 from "lucide-react";
1
+ import * as react98 from "react";
2
+ import * as lucide_react4 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/GroupBotSquareIcon.d.ts
5
- declare const GroupBotSquareIcon: react93.ForwardRefExoticComponent<Omit<lucide_react1.LucideProps, "ref"> & react93.RefAttributes<SVGSVGElement>>;
5
+ declare const GroupBotSquareIcon: react98.ForwardRefExoticComponent<Omit<lucide_react4.LucideProps, "ref"> & react98.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { GroupBotSquareIcon };
8
8
  //# sourceMappingURL=GroupBotSquareIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react101 from "react";
1
+ import * as react100 from "react";
2
2
  import * as lucide_react5 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/LeftClickIcon.d.ts
5
- declare const LeftClickIcon: react101.ForwardRefExoticComponent<Omit<lucide_react5.LucideProps, "ref"> & react101.RefAttributes<SVGSVGElement>>;
5
+ declare const LeftClickIcon: react100.ForwardRefExoticComponent<Omit<lucide_react5.LucideProps, "ref"> & react100.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { LeftClickIcon };
8
8
  //# sourceMappingURL=LeftClickIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react103 from "react";
2
- import * as lucide_react6 from "lucide-react";
1
+ import * as react104 from "react";
2
+ import * as lucide_react7 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/LeftDoubleClickIcon.d.ts
5
- declare const LeftDoubleClickIcon: react103.ForwardRefExoticComponent<Omit<lucide_react6.LucideProps, "ref"> & react103.RefAttributes<SVGSVGElement>>;
5
+ declare const LeftDoubleClickIcon: react104.ForwardRefExoticComponent<Omit<lucide_react7.LucideProps, "ref"> & react104.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { LeftDoubleClickIcon };
8
8
  //# sourceMappingURL=LeftDoubleClickIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react109 from "react";
2
- import * as lucide_react9 from "lucide-react";
1
+ import * as react96 from "react";
2
+ import * as lucide_react3 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/McpIcon.d.ts
5
- declare const McpIcon: react109.ForwardRefExoticComponent<Omit<lucide_react9.LucideProps, "ref"> & react109.RefAttributes<SVGSVGElement>>;
5
+ declare const McpIcon: react96.ForwardRefExoticComponent<Omit<lucide_react3.LucideProps, "ref"> & react96.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { McpIcon };
8
8
  //# sourceMappingURL=McpIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react113 from "react";
2
- import * as lucide_react11 from "lucide-react";
1
+ import * as react114 from "react";
2
+ import * as lucide_react12 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/ProviderIcon.d.ts
5
- declare const ProviderIcon: react113.ForwardRefExoticComponent<Omit<lucide_react11.LucideProps, "ref"> & react113.RefAttributes<SVGSVGElement>>;
5
+ declare const ProviderIcon: react114.ForwardRefExoticComponent<Omit<lucide_react12.LucideProps, "ref"> & react114.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { ProviderIcon };
8
8
  //# sourceMappingURL=ProviderIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react105 from "react";
2
- import * as lucide_react7 from "lucide-react";
1
+ import * as react108 from "react";
2
+ import * as lucide_react9 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/RightClickIcon.d.ts
5
- declare const RightClickIcon: react105.ForwardRefExoticComponent<Omit<lucide_react7.LucideProps, "ref"> & react105.RefAttributes<SVGSVGElement>>;
5
+ declare const RightClickIcon: react108.ForwardRefExoticComponent<Omit<lucide_react9.LucideProps, "ref"> & react108.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { RightClickIcon };
8
8
  //# sourceMappingURL=RightClickIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react107 from "react";
2
- import * as lucide_react8 from "lucide-react";
1
+ import * as react110 from "react";
2
+ import * as lucide_react10 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/RightDoubleClickIcon.d.ts
5
- declare const RightDoubleClickIcon: react107.ForwardRefExoticComponent<Omit<lucide_react8.LucideProps, "ref"> & react107.RefAttributes<SVGSVGElement>>;
5
+ declare const RightDoubleClickIcon: react110.ForwardRefExoticComponent<Omit<lucide_react10.LucideProps, "ref"> & react110.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { RightDoubleClickIcon };
8
8
  //# sourceMappingURL=RightDoubleClickIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react111 from "react";
2
- import * as lucide_react10 from "lucide-react";
1
+ import * as react106 from "react";
2
+ import * as lucide_react8 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/ShapesUploadIcon.d.ts
5
- declare const ShapesUploadIcon: react111.ForwardRefExoticComponent<Omit<lucide_react10.LucideProps, "ref"> & react111.RefAttributes<SVGSVGElement>>;
5
+ declare const ShapesUploadIcon: react106.ForwardRefExoticComponent<Omit<lucide_react8.LucideProps, "ref"> & react106.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { ShapesUploadIcon };
8
8
  //# sourceMappingURL=ShapesUploadIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react117 from "react";
1
+ import * as react116 from "react";
2
2
  import * as lucide_react13 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/TreeDownRightIcon.d.ts
5
- declare const TreeDownRightIcon: react117.ForwardRefExoticComponent<Omit<lucide_react13.LucideProps, "ref"> & react117.RefAttributes<SVGSVGElement>>;
5
+ declare const TreeDownRightIcon: react116.ForwardRefExoticComponent<Omit<lucide_react13.LucideProps, "ref"> & react116.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { TreeDownRightIcon };
8
8
  //# sourceMappingURL=TreeDownRightIcon.d.mts.map
@@ -1,8 +1,8 @@
1
- import * as react115 from "react";
2
- import * as lucide_react12 from "lucide-react";
1
+ import * as react112 from "react";
2
+ import * as lucide_react11 from "lucide-react";
3
3
 
4
4
  //#region src/icons/lucideExtra/TreeUpDownRightIcon.d.ts
5
- declare const TreeUpDownRightIcon: react115.ForwardRefExoticComponent<Omit<lucide_react12.LucideProps, "ref"> & react115.RefAttributes<SVGSVGElement>>;
5
+ declare const TreeUpDownRightIcon: react112.ForwardRefExoticComponent<Omit<lucide_react11.LucideProps, "ref"> & react112.RefAttributes<SVGSVGElement>>;
6
6
  //#endregion
7
7
  export { TreeUpDownRightIcon };
8
8
  //# sourceMappingURL=TreeUpDownRightIcon.d.mts.map
@@ -40,9 +40,9 @@ const Callout = ({ children, type = "info", className, style, ...rest }) => {
40
40
  }), [theme]);
41
41
  const { icon, color, background } = typeConfig?.[type] || typeConfig.info;
42
42
  return /* @__PURE__ */ jsxs(FlexBasic_default, {
43
+ horizontal: true,
43
44
  align: "flex-start",
44
45
  className: cx(styles.container, className),
45
- horizontal: true,
46
46
  style: {
47
47
  background,
48
48
  boxShadow: `0 0 0 1px ${background} inset`,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["Callout: FC<CalloutProps>","Flexbox","Icon"],"sources":["../../../src/mdx/Callout/index.tsx"],"sourcesContent":["'use client';\n\nimport { cssVar, cx, useTheme } from 'antd-style';\nimport { AlertOctagon, AlertTriangle, Info, Lightbulb, MessageSquareWarning } from 'lucide-react';\nimport { FC, useMemo } from 'react';\n\nimport { Flexbox, FlexboxProps } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport { styles } from './style';\n\nexport interface CalloutProps extends FlexboxProps {\n type?: 'tip' | 'error' | 'important' | 'info' | 'warning';\n}\n\nconst Callout: FC<CalloutProps> = ({ children, type = 'info', className, style, ...rest }) => {\n const theme = useTheme();\n const typeConfig = useMemo(\n () => ({\n error: {\n background: theme.colorErrorFillTertiary,\n color: cssVar.colorError,\n icon: AlertOctagon,\n },\n important: {\n background: theme.purpleFillTertiary,\n color: cssVar.purple,\n icon: MessageSquareWarning,\n },\n info: {\n background: theme.colorInfoFillTertiary,\n color: cssVar.colorInfo,\n icon: Info,\n },\n tip: {\n background: theme.colorSuccessFillTertiary,\n color: cssVar.colorSuccess,\n icon: Lightbulb,\n },\n warning: {\n background: theme.colorWarningFillTertiary,\n color: cssVar.colorWarning,\n icon: AlertTriangle,\n },\n }),\n [theme],\n );\n\n const selectedType = typeConfig?.[type] || typeConfig.info;\n\n const { icon, color, background } = selectedType;\n\n return (\n <Flexbox\n align={'flex-start'}\n className={cx(styles.container, className)}\n horizontal\n style={{\n background: background,\n boxShadow: `0 0 0 1px ${background} inset`,\n color,\n ...style,\n }}\n {...rest}\n >\n <Icon icon={icon} size={{ size: '1.2em' }} style={{ marginBlock: '0.25em' }} />\n <div className={cx(styles.content, type === 'info' && styles.underlineAnchor)}>\n <div>{children}</div>\n </div>\n </Flexbox>\n );\n};\n\nCallout.displayName = 'MdxCallout';\n\nexport default Callout;\n"],"mappings":";;;;;;;;;;;AAeA,MAAMA,WAA6B,EAAE,UAAU,OAAO,QAAQ,WAAW,OAAO,GAAG,WAAW;CAC5F,MAAM,QAAQ,UAAU;CACxB,MAAM,aAAa,eACV;EACL,OAAO;GACL,YAAY,MAAM;GAClB,OAAO,OAAO;GACd,MAAM;GACP;EACD,WAAW;GACT,YAAY,MAAM;GAClB,OAAO,OAAO;GACd,MAAM;GACP;EACD,MAAM;GACJ,YAAY,MAAM;GAClB,OAAO,OAAO;GACd,MAAM;GACP;EACD,KAAK;GACH,YAAY,MAAM;GAClB,OAAO,OAAO;GACd,MAAM;GACP;EACD,SAAS;GACP,YAAY,MAAM;GAClB,OAAO,OAAO;GACd,MAAM;GACP;EACF,GACD,CAAC,MAAM,CACR;CAID,MAAM,EAAE,MAAM,OAAO,eAFA,aAAa,SAAS,WAAW;AAItD,QACE,qBAACC;EACC,OAAO;EACP,WAAW,GAAG,OAAO,WAAW,UAAU;EAC1C;EACA,OAAO;GACO;GACZ,WAAW,aAAa,WAAW;GACnC;GACA,GAAG;GACJ;EACD,GAAI;aAEJ,oBAACC;GAAW;GAAM,MAAM,EAAE,MAAM,SAAS;GAAE,OAAO,EAAE,aAAa,UAAU;IAAI,EAC/E,oBAAC;GAAI,WAAW,GAAG,OAAO,SAAS,SAAS,UAAU,OAAO,gBAAgB;aAC3E,oBAAC,SAAK,WAAe;IACjB;GACE;;AAId,QAAQ,cAAc;AAEtB,sBAAe"}
1
+ {"version":3,"file":"index.mjs","names":["Callout: FC<CalloutProps>","Flexbox","Icon"],"sources":["../../../src/mdx/Callout/index.tsx"],"sourcesContent":["'use client';\n\nimport { cssVar, cx, useTheme } from 'antd-style';\nimport { AlertOctagon, AlertTriangle, Info, Lightbulb, MessageSquareWarning } from 'lucide-react';\nimport { type FC, useMemo } from 'react';\n\nimport { Flexbox, type FlexboxProps } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport { styles } from './style';\n\nexport interface CalloutProps extends FlexboxProps {\n type?: 'tip' | 'error' | 'important' | 'info' | 'warning';\n}\n\nconst Callout: FC<CalloutProps> = ({ children, type = 'info', className, style, ...rest }) => {\n const theme = useTheme();\n const typeConfig = useMemo(\n () => ({\n error: {\n background: theme.colorErrorFillTertiary,\n color: cssVar.colorError,\n icon: AlertOctagon,\n },\n important: {\n background: theme.purpleFillTertiary,\n color: cssVar.purple,\n icon: MessageSquareWarning,\n },\n info: {\n background: theme.colorInfoFillTertiary,\n color: cssVar.colorInfo,\n icon: Info,\n },\n tip: {\n background: theme.colorSuccessFillTertiary,\n color: cssVar.colorSuccess,\n icon: Lightbulb,\n },\n warning: {\n background: theme.colorWarningFillTertiary,\n color: cssVar.colorWarning,\n icon: AlertTriangle,\n },\n }),\n [theme],\n );\n\n const selectedType = typeConfig?.[type] || typeConfig.info;\n\n const { icon, color, background } = selectedType;\n\n return (\n <Flexbox\n horizontal\n align={'flex-start'}\n className={cx(styles.container, className)}\n style={{\n background: background,\n boxShadow: `0 0 0 1px ${background} inset`,\n color,\n ...style,\n }}\n {...rest}\n >\n <Icon icon={icon} size={{ size: '1.2em' }} style={{ marginBlock: '0.25em' }} />\n <div className={cx(styles.content, type === 'info' && styles.underlineAnchor)}>\n <div>{children}</div>\n </div>\n </Flexbox>\n );\n};\n\nCallout.displayName = 'MdxCallout';\n\nexport default Callout;\n"],"mappings":";;;;;;;;;;;AAeA,MAAMA,WAA6B,EAAE,UAAU,OAAO,QAAQ,WAAW,OAAO,GAAG,WAAW;CAC5F,MAAM,QAAQ,UAAU;CACxB,MAAM,aAAa,eACV;EACL,OAAO;GACL,YAAY,MAAM;GAClB,OAAO,OAAO;GACd,MAAM;GACP;EACD,WAAW;GACT,YAAY,MAAM;GAClB,OAAO,OAAO;GACd,MAAM;GACP;EACD,MAAM;GACJ,YAAY,MAAM;GAClB,OAAO,OAAO;GACd,MAAM;GACP;EACD,KAAK;GACH,YAAY,MAAM;GAClB,OAAO,OAAO;GACd,MAAM;GACP;EACD,SAAS;GACP,YAAY,MAAM;GAClB,OAAO,OAAO;GACd,MAAM;GACP;EACF,GACD,CAAC,MAAM,CACR;CAID,MAAM,EAAE,MAAM,OAAO,eAFA,aAAa,SAAS,WAAW;AAItD,QACE,qBAACC;EACC;EACA,OAAO;EACP,WAAW,GAAG,OAAO,WAAW,UAAU;EAC1C,OAAO;GACO;GACZ,WAAW,aAAa,WAAW;GACnC;GACA,GAAG;GACJ;EACD,GAAI;aAEJ,oBAACC;GAAW;GAAM,MAAM,EAAE,MAAM,SAAS;GAAE,OAAO,EAAE,aAAa,UAAU;IAAI,EAC/E,oBAAC;GAAI,WAAW,GAAG,OAAO,SAAS,SAAS,UAAU,OAAO,gBAAgB;aAC3E,oBAAC,SAAK,WAAe;IACjB;GACE;;AAId,QAAQ,cAAc;AAEtB,sBAAe"}
@@ -55,9 +55,9 @@ const Card = ({ tag, tagColor = "blue", icon, title, desc, href, iconProps, clas
55
55
  return /* @__PURE__ */ jsx(A_default, {
56
56
  href,
57
57
  children: /* @__PURE__ */ jsxs(Block_default, {
58
+ clickable: true,
58
59
  align: "flex-start",
59
60
  className: cx(styles.card, className),
60
- clickable: true,
61
61
  variant,
62
62
  ...rest,
63
63
  children: [
@@ -91,10 +91,10 @@ const Card = ({ tag, tagColor = "blue", icon, title, desc, href, iconProps, clas
91
91
  })
92
92
  }),
93
93
  /* @__PURE__ */ jsxs(FlexBasic_default, {
94
+ horizontal: true,
94
95
  align: desc ? "flex-start" : "center",
95
96
  className: styles.content,
96
97
  gap: "0.75em",
97
- horizontal: true,
98
98
  children: [!image && icon && /* @__PURE__ */ jsx(Icon_default, {
99
99
  className: cx(styles.icon, "mdx-card-icon"),
100
100
  icon,
@@ -1 +1 @@
1
- {"version":3,"file":"Card.mjs","names":["cssVar","Card: FC<CardProps>","A","Block","Img","Flexbox","Tag","Icon"],"sources":["../../../src/mdx/Cards/Card.tsx"],"sourcesContent":["'use client';\n\nimport { createStaticStyles, cx } from 'antd-style';\nimport { FC } from 'react';\n\nimport A from '@/A';\nimport Block, { type BlockProps } from '@/Block';\nimport { Flexbox } from '@/Flex';\nimport Icon, { type IconProps } from '@/Icon';\nimport Img from '@/Img';\nimport Tag, { type TagProps } from '@/Tag';\n\nconst styles = createStaticStyles(({ css, cssVar }) => {\n return {\n card: css`\n --lobe-markdown-header-multiple: 0.2;\n --lobe-markdown-margin-multiple: 1;\n\n overflow: hidden;\n height: 100%;\n color: ${cssVar.colorText};\n\n h3,\n p {\n margin-block: 0 !important;\n }\n\n p {\n color: ${cssVar.colorTextDescription};\n transition: color 0.2s ${cssVar.motionEaseInOut};\n }\n\n &:hover {\n p {\n color: ${cssVar.colorTextSecondary};\n }\n\n .mdx-card-icon {\n opacity: 1;\n }\n }\n `,\n content: css`\n width: 100%;\n padding: 1.4em;\n `,\n icon: css`\n margin-block: 0.1em;\n opacity: 0.5;\n transition: opacity 0.2s ${cssVar.motionEaseInOut};\n `,\n };\n});\n\nexport interface CardProps extends Omit<BlockProps, 'children'> {\n desc?: string;\n href?: string;\n icon?: IconProps['icon'];\n iconProps?: Omit<IconProps, 'icon'>;\n image?: string;\n tag?: string;\n tagColor?: TagProps['color'];\n title: string;\n}\n\nconst Card: FC<CardProps> = ({\n tag,\n tagColor = 'blue',\n icon,\n title,\n desc,\n href,\n iconProps,\n className,\n image,\n variant = 'filled',\n ...rest\n}) => {\n return (\n <A href={href}>\n <Block\n align={'flex-start'}\n className={cx(styles.card, className)}\n clickable\n variant={variant}\n {...rest}\n >\n {image && (\n <Img\n alt={title}\n height={100}\n src={image}\n style={{ height: 'auto', width: '100%' }}\n width={250}\n />\n )}\n {tag && (\n <Flexbox\n align={'flex-start'}\n className={styles.content}\n style={{ paddingBottom: '0.2em', paddingTop: '1.8em' }}\n >\n <Tag\n color={tagColor}\n style={{\n borderRadius: '1em',\n fontSize: '0.8em',\n fontWeight: 500,\n paddingBlock: '0.1em',\n paddingInline: '0.6em',\n }}\n >\n {tag}\n </Tag>\n </Flexbox>\n )}\n <Flexbox\n align={desc ? 'flex-start' : 'center'}\n className={styles.content}\n gap={'0.75em'}\n horizontal\n >\n {!image && icon && (\n <Icon\n className={cx(styles.icon, 'mdx-card-icon')}\n icon={icon}\n size={{ size: '1.5em' }}\n {...iconProps}\n />\n )}\n <Flexbox gap={'0.2em'}>\n <h3>{title}</h3>\n {desc && <p>{desc}</p>}\n </Flexbox>\n </Flexbox>\n </Block>\n </A>\n );\n};\n\nCard.displayName = 'MdxCard';\n\nexport default Card;\n"],"mappings":";;;;;;;;;;;;AAYA,MAAM,SAAS,oBAAoB,EAAE,YAAK,uBAAa;AACrD,QAAO;EACL,MAAM,KAAG;;;;;;eAMEA,SAAO,UAAU;;;;;;;;iBAQfA,SAAO,qBAAqB;iCACZA,SAAO,gBAAgB;;;;;mBAKrCA,SAAO,mBAAmB;;;;;;;;EAQzC,SAAS,KAAG;;;;EAIZ,MAAM,KAAG;;;iCAGoBA,SAAO,gBAAgB;;EAErD;EACD;AAaF,MAAMC,QAAuB,EAC3B,KACA,WAAW,QACX,MACA,OACA,MACA,MACA,WACA,WACA,OACA,UAAU,UACV,GAAG,WACC;AACJ,QACE,oBAACC;EAAQ;YACP,qBAACC;GACC,OAAO;GACP,WAAW,GAAG,OAAO,MAAM,UAAU;GACrC;GACS;GACT,GAAI;;IAEH,SACC,oBAACC;KACC,KAAK;KACL,QAAQ;KACR,KAAK;KACL,OAAO;MAAE,QAAQ;MAAQ,OAAO;MAAQ;KACxC,OAAO;MACP;IAEH,OACC,oBAACC;KACC,OAAO;KACP,WAAW,OAAO;KAClB,OAAO;MAAE,eAAe;MAAS,YAAY;MAAS;eAEtD,oBAACC;MACC,OAAO;MACP,OAAO;OACL,cAAc;OACd,UAAU;OACV,YAAY;OACZ,cAAc;OACd,eAAe;OAChB;gBAEA;OACG;MACE;IAEZ,qBAACD;KACC,OAAO,OAAO,eAAe;KAC7B,WAAW,OAAO;KAClB,KAAK;KACL;gBAEC,CAAC,SAAS,QACT,oBAACE;MACC,WAAW,GAAG,OAAO,MAAM,gBAAgB;MACrC;MACN,MAAM,EAAE,MAAM,SAAS;MACvB,GAAI;OACJ,EAEJ,qBAACF;MAAQ,KAAK;iBACZ,oBAAC,kBAAI,QAAW,EACf,QAAQ,oBAAC,iBAAG,OAAS;OACd;MACF;;IACJ;GACN;;AAIR,KAAK,cAAc;AAEnB,mBAAe"}
1
+ {"version":3,"file":"Card.mjs","names":["cssVar","Card: FC<CardProps>","A","Block","Img","Flexbox","Tag","Icon"],"sources":["../../../src/mdx/Cards/Card.tsx"],"sourcesContent":["'use client';\n\nimport { createStaticStyles, cx } from 'antd-style';\nimport type { FC } from 'react';\n\nimport A from '@/A';\nimport Block, { type BlockProps } from '@/Block';\nimport { Flexbox } from '@/Flex';\nimport Icon, { type IconProps } from '@/Icon';\nimport Img from '@/Img';\nimport Tag, { type TagProps } from '@/Tag';\n\nconst styles = createStaticStyles(({ css, cssVar }) => {\n return {\n card: css`\n --lobe-markdown-header-multiple: 0.2;\n --lobe-markdown-margin-multiple: 1;\n\n overflow: hidden;\n height: 100%;\n color: ${cssVar.colorText};\n\n h3,\n p {\n margin-block: 0 !important;\n }\n\n p {\n color: ${cssVar.colorTextDescription};\n transition: color 0.2s ${cssVar.motionEaseInOut};\n }\n\n &:hover {\n p {\n color: ${cssVar.colorTextSecondary};\n }\n\n .mdx-card-icon {\n opacity: 1;\n }\n }\n `,\n content: css`\n width: 100%;\n padding: 1.4em;\n `,\n icon: css`\n margin-block: 0.1em;\n opacity: 0.5;\n transition: opacity 0.2s ${cssVar.motionEaseInOut};\n `,\n };\n});\n\nexport interface CardProps extends Omit<BlockProps, 'children'> {\n desc?: string;\n href?: string;\n icon?: IconProps['icon'];\n iconProps?: Omit<IconProps, 'icon'>;\n image?: string;\n tag?: string;\n tagColor?: TagProps['color'];\n title: string;\n}\n\nconst Card: FC<CardProps> = ({\n tag,\n tagColor = 'blue',\n icon,\n title,\n desc,\n href,\n iconProps,\n className,\n image,\n variant = 'filled',\n ...rest\n}) => {\n return (\n <A href={href}>\n <Block\n clickable\n align={'flex-start'}\n className={cx(styles.card, className)}\n variant={variant}\n {...rest}\n >\n {image && (\n <Img\n alt={title}\n height={100}\n src={image}\n style={{ height: 'auto', width: '100%' }}\n width={250}\n />\n )}\n {tag && (\n <Flexbox\n align={'flex-start'}\n className={styles.content}\n style={{ paddingBottom: '0.2em', paddingTop: '1.8em' }}\n >\n <Tag\n color={tagColor}\n style={{\n borderRadius: '1em',\n fontSize: '0.8em',\n fontWeight: 500,\n paddingBlock: '0.1em',\n paddingInline: '0.6em',\n }}\n >\n {tag}\n </Tag>\n </Flexbox>\n )}\n <Flexbox\n horizontal\n align={desc ? 'flex-start' : 'center'}\n className={styles.content}\n gap={'0.75em'}\n >\n {!image && icon && (\n <Icon\n className={cx(styles.icon, 'mdx-card-icon')}\n icon={icon}\n size={{ size: '1.5em' }}\n {...iconProps}\n />\n )}\n <Flexbox gap={'0.2em'}>\n <h3>{title}</h3>\n {desc && <p>{desc}</p>}\n </Flexbox>\n </Flexbox>\n </Block>\n </A>\n );\n};\n\nCard.displayName = 'MdxCard';\n\nexport default Card;\n"],"mappings":";;;;;;;;;;;;AAYA,MAAM,SAAS,oBAAoB,EAAE,YAAK,uBAAa;AACrD,QAAO;EACL,MAAM,KAAG;;;;;;eAMEA,SAAO,UAAU;;;;;;;;iBAQfA,SAAO,qBAAqB;iCACZA,SAAO,gBAAgB;;;;;mBAKrCA,SAAO,mBAAmB;;;;;;;;EAQzC,SAAS,KAAG;;;;EAIZ,MAAM,KAAG;;;iCAGoBA,SAAO,gBAAgB;;EAErD;EACD;AAaF,MAAMC,QAAuB,EAC3B,KACA,WAAW,QACX,MACA,OACA,MACA,MACA,WACA,WACA,OACA,UAAU,UACV,GAAG,WACC;AACJ,QACE,oBAACC;EAAQ;YACP,qBAACC;GACC;GACA,OAAO;GACP,WAAW,GAAG,OAAO,MAAM,UAAU;GAC5B;GACT,GAAI;;IAEH,SACC,oBAACC;KACC,KAAK;KACL,QAAQ;KACR,KAAK;KACL,OAAO;MAAE,QAAQ;MAAQ,OAAO;MAAQ;KACxC,OAAO;MACP;IAEH,OACC,oBAACC;KACC,OAAO;KACP,WAAW,OAAO;KAClB,OAAO;MAAE,eAAe;MAAS,YAAY;MAAS;eAEtD,oBAACC;MACC,OAAO;MACP,OAAO;OACL,cAAc;OACd,UAAU;OACV,YAAY;OACZ,cAAc;OACd,eAAe;OAChB;gBAEA;OACG;MACE;IAEZ,qBAACD;KACC;KACA,OAAO,OAAO,eAAe;KAC7B,WAAW,OAAO;KAClB,KAAK;gBAEJ,CAAC,SAAS,QACT,oBAACE;MACC,WAAW,GAAG,OAAO,MAAM,gBAAgB;MACrC;MACN,MAAM,EAAE,MAAM,SAAS;MACvB,GAAI;OACJ,EAEJ,qBAACF;MAAQ,KAAK;iBACZ,oBAAC,kBAAI,QAAW,EACf,QAAQ,oBAAC,iBAAG,OAAS;OACd;MACF;;IACJ;GACN;;AAIR,KAAK,cAAc;AAEnB,mBAAe"}
@@ -8,9 +8,9 @@ import { FileIcon } from "lucide-react";
8
8
  //#region src/mdx/FileTree/File.tsx
9
9
  const File = ({ name, icon = FileIcon, ...rest }) => {
10
10
  return /* @__PURE__ */ jsxs(FlexBasic_default, {
11
+ horizontal: true,
11
12
  align: "center",
12
13
  gap: 4,
13
- horizontal: true,
14
14
  ...rest,
15
15
  children: [/* @__PURE__ */ jsx(Icon_default, { icon }), /* @__PURE__ */ jsx("span", { children: name })]
16
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"File.mjs","names":["File: FC<FileProps>","Flexbox","Icon"],"sources":["../../../src/mdx/FileTree/File.tsx"],"sourcesContent":["'use client';\n\nimport { FileIcon } from 'lucide-react';\nimport { FC } from 'react';\n\nimport { Flexbox, FlexboxProps } from '@/Flex';\nimport Icon, { type IconProps } from '@/Icon';\n\nexport interface FileProps extends Omit<FlexboxProps, 'children'> {\n icon?: IconProps['icon'];\n name: string;\n}\n\nconst File: FC<FileProps> = ({ name, icon = FileIcon, ...rest }) => {\n return (\n <Flexbox align={'center'} gap={4} horizontal {...rest}>\n <Icon icon={icon} />\n <span>{name}</span>\n </Flexbox>\n );\n};\n\nFile.displayName = 'MdxFile';\n\nexport default File;\n"],"mappings":";;;;;;;;AAaA,MAAMA,QAAuB,EAAE,MAAM,OAAO,UAAU,GAAG,WAAW;AAClE,QACE,qBAACC;EAAQ,OAAO;EAAU,KAAK;EAAG;EAAW,GAAI;aAC/C,oBAACC,gBAAW,OAAQ,EACpB,oBAAC,oBAAM,OAAY;GACX;;AAId,KAAK,cAAc;AAEnB,mBAAe"}
1
+ {"version":3,"file":"File.mjs","names":["File: FC<FileProps>","Flexbox","Icon"],"sources":["../../../src/mdx/FileTree/File.tsx"],"sourcesContent":["'use client';\n\nimport { FileIcon } from 'lucide-react';\nimport type { FC } from 'react';\n\nimport { Flexbox, type FlexboxProps } from '@/Flex';\nimport Icon, { type IconProps } from '@/Icon';\n\nexport interface FileProps extends Omit<FlexboxProps, 'children'> {\n icon?: IconProps['icon'];\n name: string;\n}\n\nconst File: FC<FileProps> = ({ name, icon = FileIcon, ...rest }) => {\n return (\n <Flexbox horizontal align={'center'} gap={4} {...rest}>\n <Icon icon={icon} />\n <span>{name}</span>\n </Flexbox>\n );\n};\n\nFile.displayName = 'MdxFile';\n\nexport default File;\n"],"mappings":";;;;;;;;AAaA,MAAMA,QAAuB,EAAE,MAAM,OAAO,UAAU,GAAG,WAAW;AAClE,QACE,qBAACC;EAAQ;EAAW,OAAO;EAAU,KAAK;EAAG,GAAI;aAC/C,oBAACC,gBAAW,OAAQ,EACpB,oBAAC,oBAAM,OAAY;GACX;;AAId,KAAK,cAAc;AAEnB,mBAAe"}
@@ -13,10 +13,10 @@ const Folder = ({ name, defaultOpen, icon = FolderIcon, children, ...rest }) =>
13
13
  return /* @__PURE__ */ jsxs(FlexBasic_default, {
14
14
  ...rest,
15
15
  children: [/* @__PURE__ */ jsxs(FlexBasic_default, {
16
+ horizontal: true,
16
17
  align: "center",
17
18
  className: styles.folder,
18
19
  gap: 4,
19
- horizontal: true,
20
20
  onClick: () => setOpen(!open),
21
21
  children: [/* @__PURE__ */ jsx(Icon_default, { icon: open ? FolderOpen : icon }), /* @__PURE__ */ jsx("span", { children: name })]
22
22
  }), open && /* @__PURE__ */ jsx(FlexBasic_default, {
@@ -1 +1 @@
1
- {"version":3,"file":"Folder.mjs","names":["Folder: FC<FolderProps>","Flexbox","Icon"],"sources":["../../../src/mdx/FileTree/Folder.tsx"],"sourcesContent":["'use client';\n\nimport { FolderIcon, FolderOpen } from 'lucide-react';\nimport { FC, useState } from 'react';\n\nimport { Flexbox, FlexboxProps } from '@/Flex';\nimport Icon, { type IconProps } from '@/Icon';\n\nimport { styles } from './style';\n\nexport interface FolderProps extends FlexboxProps {\n defaultOpen?: boolean;\n icon?: IconProps['icon'];\n name: string;\n}\n\nconst Folder: FC<FolderProps> = ({ name, defaultOpen, icon = FolderIcon, children, ...rest }) => {\n const [open, setOpen] = useState(defaultOpen);\n return (\n <Flexbox {...rest}>\n <Flexbox\n align={'center'}\n className={styles.folder}\n gap={4}\n horizontal\n onClick={() => setOpen(!open)}\n >\n <Icon icon={open ? FolderOpen : icon} />\n <span>{name}</span>\n </Flexbox>\n {open && <Flexbox className={styles.folderChildren}>{children}</Flexbox>}\n </Flexbox>\n );\n};\n\nFolder.displayName = 'MdxFolder';\n\nexport default Folder;\n"],"mappings":";;;;;;;;;;AAgBA,MAAMA,UAA2B,EAAE,MAAM,aAAa,OAAO,YAAY,UAAU,GAAG,WAAW;CAC/F,MAAM,CAAC,MAAM,WAAW,SAAS,YAAY;AAC7C,QACE,qBAACC;EAAQ,GAAI;aACX,qBAACA;GACC,OAAO;GACP,WAAW,OAAO;GAClB,KAAK;GACL;GACA,eAAe,QAAQ,CAAC,KAAK;cAE7B,oBAACC,gBAAK,MAAM,OAAO,aAAa,OAAQ,EACxC,oBAAC,oBAAM,OAAY;IACX,EACT,QAAQ,oBAACD;GAAQ,WAAW,OAAO;GAAiB;IAAmB;GAChE;;AAId,OAAO,cAAc;AAErB,qBAAe"}
1
+ {"version":3,"file":"Folder.mjs","names":["Folder: FC<FolderProps>","Flexbox","Icon"],"sources":["../../../src/mdx/FileTree/Folder.tsx"],"sourcesContent":["'use client';\n\nimport { FolderIcon, FolderOpen } from 'lucide-react';\nimport { type FC, useState } from 'react';\n\nimport { Flexbox, type FlexboxProps } from '@/Flex';\nimport Icon, { type IconProps } from '@/Icon';\n\nimport { styles } from './style';\n\nexport interface FolderProps extends FlexboxProps {\n defaultOpen?: boolean;\n icon?: IconProps['icon'];\n name: string;\n}\n\nconst Folder: FC<FolderProps> = ({ name, defaultOpen, icon = FolderIcon, children, ...rest }) => {\n const [open, setOpen] = useState(defaultOpen);\n return (\n <Flexbox {...rest}>\n <Flexbox\n horizontal\n align={'center'}\n className={styles.folder}\n gap={4}\n onClick={() => setOpen(!open)}\n >\n <Icon icon={open ? FolderOpen : icon} />\n <span>{name}</span>\n </Flexbox>\n {open && <Flexbox className={styles.folderChildren}>{children}</Flexbox>}\n </Flexbox>\n );\n};\n\nFolder.displayName = 'MdxFolder';\n\nexport default Folder;\n"],"mappings":";;;;;;;;;;AAgBA,MAAMA,UAA2B,EAAE,MAAM,aAAa,OAAO,YAAY,UAAU,GAAG,WAAW;CAC/F,MAAM,CAAC,MAAM,WAAW,SAAS,YAAY;AAC7C,QACE,qBAACC;EAAQ,GAAI;aACX,qBAACA;GACC;GACA,OAAO;GACP,WAAW,OAAO;GAClB,KAAK;GACL,eAAe,QAAQ,CAAC,KAAK;cAE7B,oBAACC,gBAAK,MAAM,OAAO,aAAa,OAAQ,EACxC,oBAAC,oBAAM,OAAY;IACX,EACT,QAAQ,oBAACD;GAAQ,WAAW,OAAO;GAAiB;IAAmB;GAChE;;AAId,OAAO,cAAc;AAErB,qBAAe"}