@lobehub/ui 5.20.2 → 5.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1486) hide show
  1. package/es/A/index.d.mts +1 -2
  2. package/es/A/index.mjs.map +1 -1
  3. package/es/Accordion/Accordion.d.mts +2 -4
  4. package/es/Accordion/Accordion.mjs +2 -2
  5. package/es/Accordion/Accordion.mjs.map +1 -1
  6. package/es/Accordion/AccordionItem.d.mts +2 -4
  7. package/es/Accordion/AccordionItem.mjs +2 -2
  8. package/es/Accordion/AccordionItem.mjs.map +1 -1
  9. package/es/Accordion/ArrowIcon.mjs.map +1 -1
  10. package/es/Accordion/context.mjs +18 -17
  11. package/es/Accordion/context.mjs.map +1 -1
  12. package/es/Accordion/index.d.mts +2 -2
  13. package/es/Accordion/style.mjs.map +1 -1
  14. package/es/Accordion/type.d.mts +1 -1
  15. package/es/ActionIcon/ActionIcon.d.mts +2 -4
  16. package/es/ActionIcon/ActionIcon.mjs +1 -1
  17. package/es/ActionIcon/ActionIcon.mjs.map +1 -1
  18. package/es/ActionIcon/components/utils.mjs.map +1 -1
  19. package/es/ActionIcon/index.d.mts +2 -2
  20. package/es/ActionIcon/style.mjs +1 -1
  21. package/es/ActionIcon/style.mjs.map +1 -1
  22. package/es/ActionIcon/type.d.mts +3 -1
  23. package/es/ActionIconGroup/ActionIconGroup.d.mts +1 -2
  24. package/es/ActionIconGroup/ActionIconGroup.mjs.map +1 -1
  25. package/es/ActionIconGroup/index.d.mts +2 -2
  26. package/es/ActionIconGroup/style.mjs +1 -1
  27. package/es/ActionIconGroup/style.mjs.map +1 -1
  28. package/es/ActionIconGroup/type.d.mts +9 -2
  29. package/es/Alert/Alert.d.mts +2 -4
  30. package/es/Alert/Alert.mjs.map +1 -1
  31. package/es/Alert/index.d.mts +2 -2
  32. package/es/Alert/style.mjs +1 -1
  33. package/es/Alert/style.mjs.map +1 -1
  34. package/es/Alert/type.d.mts +1 -1
  35. package/es/AutoComplete/Select.d.mts +2 -4
  36. package/es/AutoComplete/Select.mjs.map +1 -1
  37. package/es/AutoComplete/index.d.mts +2 -2
  38. package/es/AutoComplete/style.mjs +1 -1
  39. package/es/AutoComplete/style.mjs.map +1 -1
  40. package/es/AutoComplete/type.d.mts +0 -1
  41. package/es/Avatar/Avatar.mjs.map +1 -1
  42. package/es/Avatar/AvatarGroup/index.d.mts +2 -4
  43. package/es/Avatar/AvatarGroup/index.mjs.map +1 -1
  44. package/es/Avatar/AvatarGroup/style.mjs.map +1 -1
  45. package/es/Avatar/index.d.mts +2 -3
  46. package/es/Avatar/style.mjs.map +1 -1
  47. package/es/Avatar/type.d.mts +2 -1
  48. package/es/Avatar/utils.mjs.map +1 -1
  49. package/es/Block/Block.d.mts +1 -2
  50. package/es/Block/Block.mjs.map +1 -1
  51. package/es/Block/index.d.mts +2 -2
  52. package/es/Block/style.mjs +1 -1
  53. package/es/Block/style.mjs.map +1 -1
  54. package/es/Block/type.d.mts +1 -1
  55. package/es/Burger/Burger.d.mts +2 -4
  56. package/es/Burger/Burger.mjs.map +1 -1
  57. package/es/Burger/index.d.mts +2 -2
  58. package/es/Burger/style.mjs.map +1 -1
  59. package/es/Burger/type.d.mts +1 -1
  60. package/es/Button/Button.d.mts +1 -2
  61. package/es/Button/Button.mjs.map +1 -1
  62. package/es/Button/index.d.mts +2 -2
  63. package/es/Button/style.mjs +1 -1
  64. package/es/Button/style.mjs.map +1 -1
  65. package/es/Button/type.d.mts +1 -1
  66. package/es/Checkbox/Checkbox.mjs +2 -2
  67. package/es/Checkbox/Checkbox.mjs.map +1 -1
  68. package/es/Checkbox/CheckboxGroup.d.mts +1 -2
  69. package/es/Checkbox/CheckboxGroup.mjs +4 -3
  70. package/es/Checkbox/CheckboxGroup.mjs.map +1 -1
  71. package/es/Checkbox/index.d.mts +2 -3
  72. package/es/Checkbox/style.mjs.map +1 -1
  73. package/es/Checkbox/type.d.mts +2 -1
  74. package/es/CodeDiff/CodeDiff.d.mts +2 -4
  75. package/es/CodeDiff/CodeDiff.mjs +1 -1
  76. package/es/CodeDiff/CodeDiff.mjs.map +1 -1
  77. package/es/CodeDiff/DiffPanel.mjs.map +1 -1
  78. package/es/CodeDiff/PatchDiff.d.mts +2 -4
  79. package/es/CodeDiff/PatchDiff.mjs +1 -1
  80. package/es/CodeDiff/PatchDiff.mjs.map +1 -1
  81. package/es/CodeDiff/index.d.mts +1 -1
  82. package/es/CodeDiff/index.mjs +2 -2
  83. package/es/CodeDiff/style.mjs +1 -1
  84. package/es/CodeDiff/style.mjs.map +1 -1
  85. package/es/CodeDiff/theme.mjs.map +1 -1
  86. package/es/CodeDiff/type.d.mts +1 -1
  87. package/es/CodeEditor/CodeEditor.d.mts +2 -4
  88. package/es/CodeEditor/CodeEditor.mjs +2 -2
  89. package/es/CodeEditor/CodeEditor.mjs.map +1 -1
  90. package/es/CodeEditor/index.d.mts +2 -2
  91. package/es/CodeEditor/style.mjs.map +1 -1
  92. package/es/CodeEditor/type.d.mts +1 -1
  93. package/es/Collapse/Collapse.d.mts +2 -4
  94. package/es/Collapse/Collapse.mjs.map +1 -1
  95. package/es/Collapse/index.d.mts +1 -1
  96. package/es/Collapse/style.mjs.map +1 -1
  97. package/es/Collapse/type.d.mts +1 -1
  98. package/es/ColorSwatches/ColorSwatches.d.mts +1 -2
  99. package/es/ColorSwatches/ColorSwatches.mjs +3 -3
  100. package/es/ColorSwatches/ColorSwatches.mjs.map +1 -1
  101. package/es/ColorSwatches/index.d.mts +1 -1
  102. package/es/ColorSwatches/style.mjs.map +1 -1
  103. package/es/ColorSwatches/type.d.mts +1 -1
  104. package/es/ConfigProvider/index.d.mts +3 -9
  105. package/es/ConfigProvider/index.mjs +11 -10
  106. package/es/ConfigProvider/index.mjs.map +1 -1
  107. package/es/ContextMenu/index.d.mts +2 -1
  108. package/es/CopyButton/CopyButton.d.mts +2 -4
  109. package/es/CopyButton/CopyButton.mjs.map +1 -1
  110. package/es/CopyButton/index.d.mts +1 -1
  111. package/es/CopyButton/type.d.mts +1 -0
  112. package/es/DatePicker/DatePicker.d.mts +2 -4
  113. package/es/DatePicker/DatePicker.mjs.map +1 -1
  114. package/es/DatePicker/index.d.mts +2 -2
  115. package/es/DatePicker/style.mjs +1 -1
  116. package/es/DatePicker/style.mjs.map +1 -1
  117. package/es/DatePicker/type.d.mts +0 -1
  118. package/es/DownloadButton/DownloadButton.d.mts +1 -2
  119. package/es/DownloadButton/DownloadButton.mjs.map +1 -1
  120. package/es/DownloadButton/index.d.mts +1 -1
  121. package/es/DownloadButton/type.d.mts +1 -0
  122. package/es/DraggablePanel/DraggablePanel.mjs +4 -3
  123. package/es/DraggablePanel/DraggablePanel.mjs.map +1 -1
  124. package/es/DraggablePanel/components/DraggablePanelBody.d.mts +2 -4
  125. package/es/DraggablePanel/components/DraggablePanelBody.mjs.map +1 -1
  126. package/es/DraggablePanel/components/DraggablePanelContainer.d.mts +2 -4
  127. package/es/DraggablePanel/components/DraggablePanelContainer.mjs.map +1 -1
  128. package/es/DraggablePanel/components/DraggablePanelFooter.d.mts +2 -4
  129. package/es/DraggablePanel/components/DraggablePanelFooter.mjs.map +1 -1
  130. package/es/DraggablePanel/components/DraggablePanelHeader.d.mts +2 -4
  131. package/es/DraggablePanel/components/DraggablePanelHeader.mjs +2 -2
  132. package/es/DraggablePanel/components/DraggablePanelHeader.mjs.map +1 -1
  133. package/es/DraggablePanel/components/style.mjs.map +1 -1
  134. package/es/DraggablePanel/index.d.mts +5 -6
  135. package/es/DraggablePanel/style.mjs.map +1 -1
  136. package/es/DraggablePanel/type.d.mts +0 -1
  137. package/es/DraggablePanel/utils.mjs.map +1 -1
  138. package/es/DraggableSideNav/DraggableSideNav.d.mts +2 -4
  139. package/es/DraggableSideNav/DraggableSideNav.mjs +2 -2
  140. package/es/DraggableSideNav/DraggableSideNav.mjs.map +1 -1
  141. package/es/DraggableSideNav/index.d.mts +2 -2
  142. package/es/DraggableSideNav/style.mjs.map +1 -1
  143. package/es/DraggableSideNav/type.d.mts +0 -1
  144. package/es/Drawer/Drawer.d.mts +2 -4
  145. package/es/Drawer/Drawer.mjs.map +1 -1
  146. package/es/Drawer/index.d.mts +2 -2
  147. package/es/Drawer/type.d.mts +1 -1
  148. package/es/Dropdown/Dropdown.d.mts +2 -4
  149. package/es/Dropdown/Dropdown.mjs.map +1 -1
  150. package/es/Dropdown/index.d.mts +2 -2
  151. package/es/Dropdown/type.d.mts +3 -2
  152. package/es/DropdownMenu/index.d.mts +3 -2
  153. package/es/EditableText/ControlInput.d.mts +2 -0
  154. package/es/EditableText/ControlInput.mjs.map +1 -1
  155. package/es/EditableText/EditableText.d.mts +2 -4
  156. package/es/EditableText/EditableText.mjs +2 -2
  157. package/es/EditableText/EditableText.mjs.map +1 -1
  158. package/es/EditableText/index.d.mts +2 -2
  159. package/es/EditableText/type.d.mts +9 -1
  160. package/es/EditorSlashMenu/EditorSlashMenu.d.mts +23 -13
  161. package/es/EditorSlashMenu/EditorSlashMenu.mjs.map +1 -1
  162. package/es/EditorSlashMenu/MenuItemRenderer.mjs.map +1 -1
  163. package/es/EditorSlashMenu/atoms.d.mts +14 -59
  164. package/es/EditorSlashMenu/atoms.mjs.map +1 -1
  165. package/es/EditorSlashMenu/index.d.mts +2 -2
  166. package/es/EditorSlashMenu/style.mjs.map +1 -1
  167. package/es/EditorSlashMenu/type.d.mts +16 -9
  168. package/es/EditorSlashMenu/useKeyboardNavigation.mjs.map +1 -1
  169. package/es/EditorSlashMenu/useNormalizedItems.mjs.map +1 -1
  170. package/es/EditorSlashMenu/utils.mjs.map +1 -1
  171. package/es/EmojiPicker/AvatarUploader.mjs.map +1 -1
  172. package/es/EmojiPicker/EmojiPicker.d.mts +2 -4
  173. package/es/EmojiPicker/EmojiPicker.mjs +8 -5
  174. package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
  175. package/es/EmojiPicker/index.d.mts +2 -2
  176. package/es/EmojiPicker/style.mjs.map +1 -1
  177. package/es/EmojiPicker/type.d.mts +1 -1
  178. package/es/Empty/Empty.d.mts +1 -2
  179. package/es/Empty/Empty.mjs.map +1 -1
  180. package/es/Empty/index.d.mts +2 -2
  181. package/es/Empty/type.d.mts +4 -1
  182. package/es/FileTypeIcon/FileTypeIcon.d.mts +1 -2
  183. package/es/FileTypeIcon/FileTypeIcon.mjs.map +1 -1
  184. package/es/FileTypeIcon/components/FileIcon.mjs.map +1 -1
  185. package/es/FileTypeIcon/components/FolderIcon.mjs.map +1 -1
  186. package/es/FileTypeIcon/index.d.mts +2 -2
  187. package/es/FileTypeIcon/style.mjs.map +1 -1
  188. package/es/FileTypeIcon/type.d.mts +0 -1
  189. package/es/Flex/Center.d.mts +1 -2
  190. package/es/Flex/Center.mjs.map +1 -1
  191. package/es/Flex/FlexBasic.d.mts +2 -4
  192. package/es/Flex/FlexBasic.mjs.map +1 -1
  193. package/es/Flex/Flexbox.d.mts +2 -1
  194. package/es/Flex/index.d.mts +3 -2
  195. package/es/Flex/type.d.mts +1 -2
  196. package/es/Flex/utils.mjs.map +1 -1
  197. package/es/FluentEmoji/FluentEmoji.d.mts +1 -2
  198. package/es/FluentEmoji/FluentEmoji.mjs.map +1 -1
  199. package/es/FluentEmoji/index.d.mts +2 -2
  200. package/es/FluentEmoji/style.mjs.map +1 -1
  201. package/es/FluentEmoji/type.d.mts +0 -1
  202. package/es/FluentEmoji/utils.mjs +1 -1
  203. package/es/FluentEmoji/utils.mjs.map +1 -1
  204. package/es/FontLoader/index.d.mts +2 -4
  205. package/es/FontLoader/index.mjs.map +1 -1
  206. package/es/Footer/Footer.d.mts +2 -4
  207. package/es/Footer/Footer.mjs.map +1 -1
  208. package/es/Footer/index.d.mts +2 -2
  209. package/es/Footer/style.mjs.map +1 -1
  210. package/es/Footer/type.d.mts +1 -1
  211. package/es/Form/Form.mjs.map +1 -1
  212. package/es/Form/components/FormDivider.mjs.map +1 -1
  213. package/es/Form/components/FormFlatGroup.mjs.map +1 -1
  214. package/es/Form/components/FormGroup.d.mts +2 -4
  215. package/es/Form/components/FormGroup.mjs.map +1 -1
  216. package/es/Form/components/FormItem.d.mts +2 -4
  217. package/es/Form/components/FormItem.mjs.map +1 -1
  218. package/es/Form/components/FormProvider.mjs +1 -1
  219. package/es/Form/components/FormProvider.mjs.map +1 -1
  220. package/es/Form/components/FormSubmitFooter.d.mts +2 -4
  221. package/es/Form/components/FormSubmitFooter.mjs.map +1 -1
  222. package/es/Form/components/FormTitle.d.mts +1 -2
  223. package/es/Form/components/FormTitle.mjs.map +1 -1
  224. package/es/Form/components/merge.mjs.map +1 -1
  225. package/es/Form/index.d.mts +5 -6
  226. package/es/Form/style.mjs +1 -1
  227. package/es/Form/style.mjs.map +1 -1
  228. package/es/Form/type.d.mts +5 -1
  229. package/es/FormModal/FormModal.d.mts +2 -4
  230. package/es/FormModal/FormModal.mjs.map +1 -1
  231. package/es/FormModal/index.d.mts +2 -2
  232. package/es/FormModal/style.mjs.map +1 -1
  233. package/es/FormModal/type.d.mts +3 -1
  234. package/es/Freeze/Freeze.d.mts +2 -7
  235. package/es/Freeze/Freeze.mjs +1 -1
  236. package/es/Freeze/Freeze.mjs.map +1 -1
  237. package/es/Freeze/index.d.mts +2 -2
  238. package/es/Freeze/type.d.mts +0 -1
  239. package/es/Grid/Grid.d.mts +1 -2
  240. package/es/Grid/Grid.mjs.map +1 -1
  241. package/es/Grid/index.d.mts +2 -2
  242. package/es/Grid/style.mjs.map +1 -1
  243. package/es/Grid/type.d.mts +1 -1
  244. package/es/GroupAvatar/GroupAvatar.d.mts +1 -2
  245. package/es/GroupAvatar/GroupAvatar.mjs.map +1 -1
  246. package/es/GroupAvatar/index.d.mts +2 -2
  247. package/es/GroupAvatar/style.mjs +1 -1
  248. package/es/GroupAvatar/style.mjs.map +1 -1
  249. package/es/GroupAvatar/type.d.mts +0 -1
  250. package/es/GuideCard/GuideCard.d.mts +2 -4
  251. package/es/GuideCard/GuideCard.mjs.map +1 -1
  252. package/es/GuideCard/index.d.mts +2 -1
  253. package/es/GuideCard/style.mjs.map +1 -1
  254. package/es/GuideCard/type.d.mts +2 -1
  255. package/es/Header/Header.d.mts +2 -4
  256. package/es/Header/Header.mjs.map +1 -1
  257. package/es/Header/index.d.mts +2 -2
  258. package/es/Header/style.mjs.map +1 -1
  259. package/es/Header/type.d.mts +1 -1
  260. package/es/Highlighter/FullFeatured.mjs +2 -2
  261. package/es/Highlighter/FullFeatured.mjs.map +1 -1
  262. package/es/Highlighter/Highlighter.d.mts +2 -4
  263. package/es/Highlighter/Highlighter.mjs +2 -2
  264. package/es/Highlighter/Highlighter.mjs.map +1 -1
  265. package/es/Highlighter/LangSelect.mjs +1 -1
  266. package/es/Highlighter/LangSelect.mjs.map +1 -1
  267. package/es/Highlighter/SyntaxHighlighter/StaticRenderer.mjs.map +1 -1
  268. package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs +2 -1
  269. package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs.map +1 -1
  270. package/es/Highlighter/SyntaxHighlighter/index.d.mts +2 -4
  271. package/es/Highlighter/SyntaxHighlighter/index.mjs.map +1 -1
  272. package/es/Highlighter/SyntaxHighlighter/style.mjs +1 -1
  273. package/es/Highlighter/SyntaxHighlighter/style.mjs.map +1 -1
  274. package/es/Highlighter/const.mjs.map +1 -1
  275. package/es/Highlighter/index.d.mts +2 -2
  276. package/es/Highlighter/index.mjs +1 -1
  277. package/es/Highlighter/style.mjs +1 -1
  278. package/es/Highlighter/style.mjs.map +1 -1
  279. package/es/Highlighter/theme/lobe-theme.d.mts +1 -1
  280. package/es/Highlighter/theme/lobe-theme.mjs.map +1 -1
  281. package/es/Highlighter/type.d.mts +2 -1
  282. package/es/Hotkey/Hotkey.d.mts +2 -4
  283. package/es/Hotkey/Hotkey.mjs +2 -1
  284. package/es/Hotkey/Hotkey.mjs.map +1 -1
  285. package/es/Hotkey/const.mjs.map +1 -1
  286. package/es/Hotkey/index.d.mts +2 -2
  287. package/es/Hotkey/style.mjs +1 -1
  288. package/es/Hotkey/style.mjs.map +1 -1
  289. package/es/Hotkey/type.d.mts +1 -1
  290. package/es/Hotkey/utils.mjs.map +1 -1
  291. package/es/HotkeyInput/HotkeyInput.d.mts +2 -4
  292. package/es/HotkeyInput/HotkeyInput.mjs +2 -2
  293. package/es/HotkeyInput/HotkeyInput.mjs.map +1 -1
  294. package/es/HotkeyInput/index.d.mts +1 -1
  295. package/es/HotkeyInput/style.mjs.map +1 -1
  296. package/es/HotkeyInput/type.d.mts +0 -1
  297. package/es/HtmlPreview/HtmlPreview.d.mts +2 -4
  298. package/es/HtmlPreview/HtmlPreview.mjs +1 -1
  299. package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
  300. package/es/HtmlPreview/Iframe.d.mts +2 -4
  301. package/es/HtmlPreview/Iframe.mjs +1 -1
  302. package/es/HtmlPreview/Iframe.mjs.map +1 -1
  303. package/es/HtmlPreview/buildShellSrcDoc.mjs.map +1 -1
  304. package/es/HtmlPreview/buildStaticSrcDoc.mjs.map +1 -1
  305. package/es/HtmlPreview/const.mjs.map +1 -1
  306. package/es/HtmlPreview/index.d.mts +2 -2
  307. package/es/HtmlPreview/index.mjs +1 -1
  308. package/es/HtmlPreview/injectAutoHeightScript.mjs.map +1 -1
  309. package/es/HtmlPreview/type.d.mts +1 -1
  310. package/es/Icon/Icon.d.mts +2 -4
  311. package/es/Icon/Icon.mjs.map +1 -1
  312. package/es/Icon/components/IconProvider.d.mts +2 -4
  313. package/es/Icon/components/IconProvider.mjs.map +1 -1
  314. package/es/Icon/components/utils.mjs.map +1 -1
  315. package/es/Icon/index.d.mts +2 -2
  316. package/es/Icon/style.mjs +7 -6
  317. package/es/Icon/style.mjs.map +1 -1
  318. package/es/Icon/type.d.mts +0 -1
  319. package/es/Image/Image.mjs.map +1 -1
  320. package/es/Image/PreviewGroup.d.mts +2 -4
  321. package/es/Image/PreviewGroup.mjs.map +1 -1
  322. package/es/Image/components/Preview.mjs.map +1 -1
  323. package/es/Image/components/Toolbar.mjs.map +1 -1
  324. package/es/Image/components/usePreview.mjs +1 -1
  325. package/es/Image/components/usePreview.mjs.map +1 -1
  326. package/es/Image/components/usePreviewGroup.mjs +1 -1
  327. package/es/Image/components/usePreviewGroup.mjs.map +1 -1
  328. package/es/Image/index.d.mts +2 -3
  329. package/es/Image/style.mjs.map +1 -1
  330. package/es/Image/type.d.mts +0 -1
  331. package/es/ImageSelect/ImageSelect.d.mts +2 -4
  332. package/es/ImageSelect/ImageSelect.mjs +2 -2
  333. package/es/ImageSelect/ImageSelect.mjs.map +1 -1
  334. package/es/ImageSelect/index.d.mts +2 -1
  335. package/es/ImageSelect/styles.mjs.map +1 -1
  336. package/es/ImageSelect/type.d.mts +8 -1
  337. package/es/Img/index.mjs.map +1 -1
  338. package/es/Input/Input.d.mts +2 -4
  339. package/es/Input/Input.mjs.map +1 -1
  340. package/es/Input/InputNumber.d.mts +2 -4
  341. package/es/Input/InputNumber.mjs.map +1 -1
  342. package/es/Input/InputOPT.d.mts +2 -4
  343. package/es/Input/InputOPT.mjs.map +1 -1
  344. package/es/Input/InputPassword.d.mts +2 -4
  345. package/es/Input/InputPassword.mjs.map +1 -1
  346. package/es/Input/TextArea.d.mts +2 -4
  347. package/es/Input/TextArea.mjs.map +1 -1
  348. package/es/Input/index.d.mts +6 -5
  349. package/es/Input/style.mjs +1 -1
  350. package/es/Input/style.mjs.map +1 -1
  351. package/es/Input/type.d.mts +0 -1
  352. package/es/Layout/Layout.mjs +6 -6
  353. package/es/Layout/Layout.mjs.map +1 -1
  354. package/es/Layout/components/LayoutFooter.d.mts +3 -4
  355. package/es/Layout/components/LayoutFooter.mjs +1 -1
  356. package/es/Layout/components/LayoutFooter.mjs.map +1 -1
  357. package/es/Layout/components/LayoutHeader.d.mts +2 -4
  358. package/es/Layout/components/LayoutHeader.mjs +1 -1
  359. package/es/Layout/components/LayoutHeader.mjs.map +1 -1
  360. package/es/Layout/components/LayoutMain.d.mts +3 -4
  361. package/es/Layout/components/LayoutMain.mjs +1 -1
  362. package/es/Layout/components/LayoutMain.mjs.map +1 -1
  363. package/es/Layout/components/LayoutSidebar.d.mts +2 -4
  364. package/es/Layout/components/LayoutSidebar.mjs +1 -1
  365. package/es/Layout/components/LayoutSidebar.mjs.map +1 -1
  366. package/es/Layout/components/LayoutSidebarInner.d.mts +2 -4
  367. package/es/Layout/components/LayoutSidebarInner.mjs +1 -1
  368. package/es/Layout/components/LayoutSidebarInner.mjs.map +1 -1
  369. package/es/Layout/components/LayoutToc.d.mts +2 -4
  370. package/es/Layout/components/LayoutToc.mjs +1 -1
  371. package/es/Layout/components/LayoutToc.mjs.map +1 -1
  372. package/es/Layout/index.d.mts +1 -2
  373. package/es/Layout/index.mjs +6 -6
  374. package/es/Layout/style.mjs.map +1 -1
  375. package/es/Layout/type.d.mts +0 -1
  376. package/es/List/List.mjs.map +1 -1
  377. package/es/List/ListItem/index.d.mts +2 -4
  378. package/es/List/ListItem/index.mjs.map +1 -1
  379. package/es/List/ListItem/style.mjs.map +1 -1
  380. package/es/List/ListItem/time.mjs.map +1 -1
  381. package/es/List/index.d.mts +2 -3
  382. package/es/List/type.d.mts +1 -1
  383. package/es/Markdown/Markdown.d.mts +2 -4
  384. package/es/Markdown/Markdown.mjs +1 -1
  385. package/es/Markdown/Markdown.mjs.map +1 -1
  386. package/es/Markdown/SyntaxMarkdown/CachedMarkdown.mjs +1 -1
  387. package/es/Markdown/SyntaxMarkdown/CachedMarkdown.mjs.map +1 -1
  388. package/es/Markdown/SyntaxMarkdown/MarkdownRender.mjs.map +1 -1
  389. package/es/Markdown/SyntaxMarkdown/StreamdownRender.mjs +5 -3
  390. package/es/Markdown/SyntaxMarkdown/StreamdownRender.mjs.map +1 -1
  391. package/es/Markdown/SyntaxMarkdown/fenceState.mjs.map +1 -1
  392. package/es/Markdown/SyntaxMarkdown/streamAnimationMeta.mjs.map +1 -1
  393. package/es/Markdown/SyntaxMarkdown/style.mjs.map +1 -1
  394. package/es/Markdown/SyntaxMarkdown/useSmoothStreamContent.mjs +6 -2
  395. package/es/Markdown/SyntaxMarkdown/useSmoothStreamContent.mjs.map +1 -1
  396. package/es/Markdown/SyntaxMarkdown/useStreamQueue.mjs +2 -1
  397. package/es/Markdown/SyntaxMarkdown/useStreamQueue.mjs.map +1 -1
  398. package/es/Markdown/Typography.d.mts +2 -4
  399. package/es/Markdown/Typography.mjs.map +1 -1
  400. package/es/Markdown/components/CodeBlock.mjs +2 -2
  401. package/es/Markdown/components/CodeBlock.mjs.map +1 -1
  402. package/es/Markdown/components/Footnotes.mjs.map +1 -1
  403. package/es/Markdown/components/MarkdownProvider.mjs +3 -2
  404. package/es/Markdown/components/MarkdownProvider.mjs.map +1 -1
  405. package/es/Markdown/components/MarkdownTable/hastTableToMarkdown.mjs.map +1 -1
  406. package/es/Markdown/components/MarkdownTable/index.mjs.map +1 -1
  407. package/es/Markdown/components/SearchResultCards/SearchResultCard.mjs.map +1 -1
  408. package/es/Markdown/components/SearchResultCards/index.d.mts +3 -4
  409. package/es/Markdown/components/SearchResultCards/index.mjs.map +1 -1
  410. package/es/Markdown/components/SearchResultCards/style.mjs.map +1 -1
  411. package/es/Markdown/components/useDelayedAnimated.mjs.map +1 -1
  412. package/es/Markdown/index.d.mts +3 -3
  413. package/es/Markdown/markdown.style.mjs +11 -10
  414. package/es/Markdown/markdown.style.mjs.map +1 -1
  415. package/es/Markdown/plugins/rehypeCustomFootnotes.mjs +1 -1
  416. package/es/Markdown/plugins/rehypeCustomFootnotes.mjs.map +1 -1
  417. package/es/Markdown/plugins/rehypeKatexDir.d.mts +1 -2
  418. package/es/Markdown/plugins/rehypeKatexDir.mjs +1 -1
  419. package/es/Markdown/plugins/rehypeKatexDir.mjs.map +1 -1
  420. package/es/Markdown/plugins/rehypeStreamAnimated.d.mts +2 -3
  421. package/es/Markdown/plugins/rehypeStreamAnimated.mjs +3 -4
  422. package/es/Markdown/plugins/rehypeStreamAnimated.mjs.map +1 -1
  423. package/es/Markdown/plugins/remarkBr.mjs +1 -1
  424. package/es/Markdown/plugins/remarkBr.mjs.map +1 -1
  425. package/es/Markdown/plugins/remarkColor.mjs +1 -1
  426. package/es/Markdown/plugins/remarkColor.mjs.map +1 -1
  427. package/es/Markdown/plugins/remarkCustomFootnotes.mjs +2 -2
  428. package/es/Markdown/plugins/remarkCustomFootnotes.mjs.map +1 -1
  429. package/es/Markdown/plugins/remarkGfmPlus.mjs +1 -1
  430. package/es/Markdown/plugins/remarkGfmPlus.mjs.map +1 -1
  431. package/es/Markdown/plugins/remarkVideo.mjs +1 -1
  432. package/es/Markdown/plugins/remarkVideo.mjs.map +1 -1
  433. package/es/Markdown/streamProfiler/StreamdownProfilerProvider.mjs +1 -1
  434. package/es/Markdown/streamProfiler/StreamdownProfilerProvider.mjs.map +1 -1
  435. package/es/Markdown/style.mjs.map +1 -1
  436. package/es/Markdown/type.d.mts +4 -1
  437. package/es/MaskShadow/MaskShadow.d.mts +2 -4
  438. package/es/MaskShadow/MaskShadow.mjs.map +1 -1
  439. package/es/MaskShadow/index.d.mts +2 -2
  440. package/es/MaskShadow/style.mjs +1 -1
  441. package/es/MaskShadow/style.mjs.map +1 -1
  442. package/es/MaskShadow/type.d.mts +1 -0
  443. package/es/MaterialFileTypeIcon/MaterialFileTypeIcon.d.mts +1 -2
  444. package/es/MaterialFileTypeIcon/MaterialFileTypeIcon.mjs.map +1 -1
  445. package/es/MaterialFileTypeIcon/icon-map.json.d.mts +2 -2
  446. package/es/MaterialFileTypeIcon/index.d.mts +2 -2
  447. package/es/MaterialFileTypeIcon/type.d.mts +1 -2
  448. package/es/MaterialFileTypeIcon/utils.mjs +1 -1
  449. package/es/MaterialFileTypeIcon/utils.mjs.map +1 -1
  450. package/es/Menu/Menu.d.mts +2 -4
  451. package/es/Menu/Menu.mjs.map +1 -1
  452. package/es/Menu/baseItem.d.mts +1 -1
  453. package/es/Menu/checkboxItem.d.mts +1 -1
  454. package/es/Menu/index.d.mts +2 -2
  455. package/es/Menu/renderUtils.d.mts +1 -1
  456. package/es/Menu/renderUtils.mjs.map +1 -1
  457. package/es/Menu/style.mjs +1 -1
  458. package/es/Menu/style.mjs.map +1 -1
  459. package/es/Menu/switchItem.d.mts +1 -1
  460. package/es/Menu/type.d.mts +2 -2
  461. package/es/Menu/utils.d.mts +0 -1
  462. package/es/Menu/utils.mjs.map +1 -1
  463. package/es/Mermaid/FullFeatured.mjs +1 -1
  464. package/es/Mermaid/FullFeatured.mjs.map +1 -1
  465. package/es/Mermaid/Mermaid.d.mts +2 -4
  466. package/es/Mermaid/Mermaid.mjs +1 -1
  467. package/es/Mermaid/Mermaid.mjs.map +1 -1
  468. package/es/Mermaid/SyntaxMermaid/StaticMermaid.mjs +2 -1
  469. package/es/Mermaid/SyntaxMermaid/StaticMermaid.mjs.map +1 -1
  470. package/es/Mermaid/SyntaxMermaid/StreamMermaid.mjs +2 -1
  471. package/es/Mermaid/SyntaxMermaid/StreamMermaid.mjs.map +1 -1
  472. package/es/Mermaid/SyntaxMermaid/index.d.mts +2 -4
  473. package/es/Mermaid/SyntaxMermaid/index.mjs.map +1 -1
  474. package/es/Mermaid/SyntaxMermaid/style.mjs +1 -1
  475. package/es/Mermaid/SyntaxMermaid/style.mjs.map +1 -1
  476. package/es/Mermaid/const.mjs.map +1 -1
  477. package/es/Mermaid/index.d.mts +3 -3
  478. package/es/Mermaid/type.d.mts +1 -1
  479. package/es/Modal/Modal.d.mts +2 -4
  480. package/es/Modal/Modal.mjs.map +1 -1
  481. package/es/Modal/ModalProvider.d.mts +1 -3
  482. package/es/Modal/ModalProvider.mjs +1 -1
  483. package/es/Modal/ModalProvider.mjs.map +1 -1
  484. package/es/Modal/ModalStackItem.mjs.map +1 -1
  485. package/es/Modal/RawModalStackItem.mjs.map +1 -1
  486. package/es/Modal/imperative.d.mts +1 -5
  487. package/es/Modal/imperative.mjs.map +1 -1
  488. package/es/Modal/index.d.mts +2 -2
  489. package/es/Modal/style.mjs.map +1 -1
  490. package/es/Modal/type.d.mts +0 -1
  491. package/es/MotionProvider/index.d.mts +2 -5
  492. package/es/MotionProvider/index.mjs.map +1 -1
  493. package/es/NeuralNetworkLoading/NeuralNetworkLoading.d.mts +2 -4
  494. package/es/NeuralNetworkLoading/NeuralNetworkLoading.mjs.map +1 -1
  495. package/es/NeuralNetworkLoading/index.d.mts +2 -2
  496. package/es/NeuralNetworkLoading/type.d.mts +0 -1
  497. package/es/Popover/index.d.mts +4 -3
  498. package/es/Provider.d.mts +2 -1
  499. package/es/ScrollArea/index.d.mts +2 -1
  500. package/es/ScrollShadow/ScrollShadow.d.mts +1 -2
  501. package/es/ScrollShadow/ScrollShadow.mjs.map +1 -1
  502. package/es/ScrollShadow/index.d.mts +2 -2
  503. package/es/ScrollShadow/style.mjs +1 -1
  504. package/es/ScrollShadow/style.mjs.map +1 -1
  505. package/es/ScrollShadow/type.d.mts +1 -1
  506. package/es/ScrollShadow/useScrollOverflow.mjs.map +1 -1
  507. package/es/SearchBar/SearchBar.d.mts +2 -4
  508. package/es/SearchBar/SearchBar.mjs +2 -2
  509. package/es/SearchBar/SearchBar.mjs.map +1 -1
  510. package/es/SearchBar/index.d.mts +2 -2
  511. package/es/SearchBar/style.mjs.map +1 -1
  512. package/es/SearchBar/type.d.mts +1 -1
  513. package/es/Segmented/Segmented.d.mts +2 -4
  514. package/es/Segmented/Segmented.mjs.map +1 -1
  515. package/es/Segmented/index.d.mts +2 -2
  516. package/es/Segmented/style.mjs +1 -1
  517. package/es/Segmented/style.mjs.map +1 -1
  518. package/es/Segmented/type.d.mts +1 -1
  519. package/es/Select/Select.d.mts +2 -4
  520. package/es/Select/Select.mjs.map +1 -1
  521. package/es/Select/index.d.mts +2 -2
  522. package/es/Select/style.mjs +1 -1
  523. package/es/Select/style.mjs.map +1 -1
  524. package/es/Select/type.d.mts +1 -1
  525. package/es/SideNav/SideNav.d.mts +2 -4
  526. package/es/SideNav/SideNav.mjs.map +1 -1
  527. package/es/SideNav/index.d.mts +2 -2
  528. package/es/SideNav/style.mjs.map +1 -1
  529. package/es/SideNav/type.d.mts +1 -1
  530. package/es/Skeleton/Skeleton.mjs.map +1 -1
  531. package/es/Skeleton/SkeletonAvatar.d.mts +1 -2
  532. package/es/Skeleton/SkeletonAvatar.mjs.map +1 -1
  533. package/es/Skeleton/SkeletonBlock.d.mts +1 -2
  534. package/es/Skeleton/SkeletonBlock.mjs.map +1 -1
  535. package/es/Skeleton/SkeletonButton.d.mts +1 -2
  536. package/es/Skeleton/SkeletonButton.mjs.map +1 -1
  537. package/es/Skeleton/SkeletonParagraph.d.mts +1 -2
  538. package/es/Skeleton/SkeletonParagraph.mjs.map +1 -1
  539. package/es/Skeleton/SkeletonTags.d.mts +1 -2
  540. package/es/Skeleton/SkeletonTags.mjs.map +1 -1
  541. package/es/Skeleton/SkeletonTitle.d.mts +1 -2
  542. package/es/Skeleton/SkeletonTitle.mjs.map +1 -1
  543. package/es/Skeleton/index.d.mts +7 -8
  544. package/es/Skeleton/style.mjs.map +1 -1
  545. package/es/Skeleton/type.d.mts +0 -1
  546. package/es/SliderWithInput/SliderWithInput.d.mts +2 -4
  547. package/es/SliderWithInput/SliderWithInput.mjs.map +1 -1
  548. package/es/SliderWithInput/index.d.mts +2 -2
  549. package/es/SliderWithInput/type.d.mts +2 -1
  550. package/es/Snippet/Snippet.d.mts +1 -2
  551. package/es/Snippet/Snippet.mjs.map +1 -1
  552. package/es/Snippet/index.d.mts +2 -2
  553. package/es/Snippet/style.mjs.map +1 -1
  554. package/es/Snippet/type.d.mts +1 -1
  555. package/es/SortableList/SortableList.d.mts +3 -4
  556. package/es/SortableList/SortableList.mjs.map +1 -1
  557. package/es/SortableList/components/DragHandle.d.mts +3 -4
  558. package/es/SortableList/components/DragHandle.mjs.map +1 -1
  559. package/es/SortableList/components/SortableItem.d.mts +4 -3
  560. package/es/SortableList/components/SortableItem.mjs +10 -9
  561. package/es/SortableList/components/SortableItem.mjs.map +1 -1
  562. package/es/SortableList/components/SortableOverlay.mjs.map +1 -1
  563. package/es/SortableList/index.d.mts +2 -2
  564. package/es/SortableList/style.mjs.map +1 -1
  565. package/es/SortableList/type.d.mts +5 -1
  566. package/es/Tabs/Tabs.d.mts +1 -2
  567. package/es/Tabs/Tabs.mjs.map +1 -1
  568. package/es/Tabs/index.d.mts +2 -2
  569. package/es/Tabs/style.mjs.map +1 -1
  570. package/es/Tabs/type.d.mts +0 -1
  571. package/es/Tag/Tag.d.mts +1 -2
  572. package/es/Tag/Tag.mjs.map +1 -1
  573. package/es/Tag/index.d.mts +2 -1
  574. package/es/Tag/styles.mjs +1 -1
  575. package/es/Tag/styles.mjs.map +1 -1
  576. package/es/Tag/type.d.mts +0 -1
  577. package/es/Tag/utils.mjs +1 -1
  578. package/es/Tag/utils.mjs.map +1 -1
  579. package/es/Text/Text.d.mts +1 -2
  580. package/es/Text/Text.mjs +1 -1
  581. package/es/Text/Text.mjs.map +1 -1
  582. package/es/Text/index.d.mts +2 -2
  583. package/es/Text/styles.mjs +1 -1
  584. package/es/Text/styles.mjs.map +1 -1
  585. package/es/Text/type.d.mts +1 -1
  586. package/es/ThemeProvider/AppElementContext.mjs.map +1 -1
  587. package/es/ThemeProvider/ConfigProvider.mjs.map +1 -1
  588. package/es/ThemeProvider/GlobalStyle/antdOverride.mjs.map +1 -1
  589. package/es/ThemeProvider/GlobalStyle/essential.mjs +90 -0
  590. package/es/ThemeProvider/GlobalStyle/essential.mjs.map +1 -0
  591. package/es/ThemeProvider/GlobalStyle/global.mjs +0 -79
  592. package/es/ThemeProvider/GlobalStyle/global.mjs.map +1 -1
  593. package/es/ThemeProvider/GlobalStyle/index.mjs +4 -2
  594. package/es/ThemeProvider/GlobalStyle/index.mjs.map +1 -1
  595. package/es/ThemeProvider/Meta.d.mts +1 -2
  596. package/es/ThemeProvider/Meta.mjs.map +1 -1
  597. package/es/ThemeProvider/ThemeProvider.d.mts +2 -4
  598. package/es/ThemeProvider/ThemeProvider.mjs +25 -21
  599. package/es/ThemeProvider/ThemeProvider.mjs.map +1 -1
  600. package/es/ThemeProvider/index.d.mts +3 -3
  601. package/es/ThemeProvider/type.d.mts +2 -1
  602. package/es/ThemeSwitch/ThemeSwitch.d.mts +1 -2
  603. package/es/ThemeSwitch/ThemeSwitch.mjs.map +1 -1
  604. package/es/ThemeSwitch/index.d.mts +2 -2
  605. package/es/ThemeSwitch/type.d.mts +1 -1
  606. package/es/Toast/index.d.mts +2 -1
  607. package/es/Toc/Toc.d.mts +2 -4
  608. package/es/Toc/Toc.mjs.map +1 -1
  609. package/es/Toc/TocMobile.mjs +2 -2
  610. package/es/Toc/TocMobile.mjs.map +1 -1
  611. package/es/Toc/index.d.mts +2 -2
  612. package/es/Toc/style.mjs.map +1 -1
  613. package/es/Toc/type.d.mts +0 -1
  614. package/es/Toc/utils.mjs.map +1 -1
  615. package/es/Tooltip/index.d.mts +3 -2
  616. package/es/Tooltip/index.mjs +1 -1
  617. package/es/Video/index.d.mts +3 -4
  618. package/es/Video/index.mjs.map +1 -1
  619. package/es/Video/style.mjs +1 -1
  620. package/es/Video/style.mjs.map +1 -1
  621. package/es/awesome/AuroraBackground/AuroraBackground.d.mts +2 -4
  622. package/es/awesome/AuroraBackground/AuroraBackground.mjs.map +1 -1
  623. package/es/awesome/AuroraBackground/index.d.mts +2 -1
  624. package/es/awesome/AuroraBackground/style.mjs.map +1 -1
  625. package/es/awesome/AuroraBackground/type.d.mts +1 -1
  626. package/es/awesome/BottomGradientButton/BottomGradientButton.d.mts +3 -4
  627. package/es/awesome/BottomGradientButton/BottomGradientButton.mjs.map +1 -1
  628. package/es/awesome/BottomGradientButton/index.d.mts +3 -2
  629. package/es/awesome/BottomGradientButton/style.mjs.map +1 -1
  630. package/es/awesome/BottomGradientButton/type.d.mts +1 -0
  631. package/es/awesome/Features/FeatureItem.mjs.map +1 -1
  632. package/es/awesome/Features/Features.d.mts +2 -4
  633. package/es/awesome/Features/Features.mjs.map +1 -1
  634. package/es/awesome/Features/index.d.mts +2 -1
  635. package/es/awesome/Features/style.mjs.map +1 -1
  636. package/es/awesome/Features/type.d.mts +2 -1
  637. package/es/awesome/Giscus/Giscus.d.mts +2 -4
  638. package/es/awesome/Giscus/Giscus.mjs.map +1 -1
  639. package/es/awesome/Giscus/index.d.mts +2 -1
  640. package/es/awesome/Giscus/style.mjs.map +1 -1
  641. package/es/awesome/Giscus/type.d.mts +0 -1
  642. package/es/awesome/GradientButton/GradientButton.d.mts +2 -4
  643. package/es/awesome/GradientButton/GradientButton.mjs.map +1 -1
  644. package/es/awesome/GradientButton/index.d.mts +2 -1
  645. package/es/awesome/GradientButton/style.mjs.map +1 -1
  646. package/es/awesome/GradientButton/type.d.mts +1 -0
  647. package/es/awesome/GridBackground/GridBackground.d.mts +2 -4
  648. package/es/awesome/GridBackground/GridBackground.mjs.map +1 -1
  649. package/es/awesome/GridBackground/GridShowcase.d.mts +2 -4
  650. package/es/awesome/GridBackground/GridShowcase.mjs.map +1 -1
  651. package/es/awesome/GridBackground/components/Grid.mjs.map +1 -1
  652. package/es/awesome/GridBackground/index.d.mts +3 -2
  653. package/es/awesome/GridBackground/style.mjs.map +1 -1
  654. package/es/awesome/GridBackground/type.d.mts +1 -1
  655. package/es/awesome/Hero/Hero.d.mts +2 -4
  656. package/es/awesome/Hero/Hero.mjs.map +1 -1
  657. package/es/awesome/Hero/index.d.mts +2 -1
  658. package/es/awesome/Hero/style.mjs.map +1 -1
  659. package/es/awesome/Hero/type.d.mts +0 -1
  660. package/es/awesome/Spline/ParentSize.mjs.map +1 -1
  661. package/es/awesome/Spline/Spine.d.mts +3 -3
  662. package/es/awesome/Spline/Spine.mjs.map +1 -1
  663. package/es/awesome/Spline/index.d.mts +2 -1
  664. package/es/awesome/Spline/type.d.mts +0 -1
  665. package/es/awesome/Spotlight/Spotlight.d.mts +2 -4
  666. package/es/awesome/Spotlight/Spotlight.mjs.map +1 -1
  667. package/es/awesome/Spotlight/index.d.mts +2 -1
  668. package/es/awesome/Spotlight/style.mjs.map +1 -1
  669. package/es/awesome/Spotlight/type.d.mts +0 -1
  670. package/es/awesome/Spotlight/useMouseOffset.mjs.map +1 -1
  671. package/es/awesome/SpotlightCard/SpotlightCard.d.mts +2 -4
  672. package/es/awesome/SpotlightCard/SpotlightCard.mjs.map +1 -1
  673. package/es/awesome/SpotlightCard/SpotlightCardItem.mjs.map +1 -1
  674. package/es/awesome/SpotlightCard/index.d.mts +2 -1
  675. package/es/awesome/SpotlightCard/style.mjs.map +1 -1
  676. package/es/awesome/SpotlightCard/type.d.mts +0 -1
  677. package/es/awesome/TypewriterEffect/TypewriterEffect.d.mts +2 -4
  678. package/es/awesome/TypewriterEffect/TypewriterEffect.mjs.map +1 -1
  679. package/es/awesome/TypewriterEffect/index.d.mts +2 -1
  680. package/es/awesome/TypewriterEffect/style.mjs.map +1 -1
  681. package/es/awesome/TypewriterEffect/type.d.mts +0 -1
  682. package/es/awesome/index.d.mts +23 -12
  683. package/es/base-ui/AutoComplete/AutoComplete.d.mts +2 -4
  684. package/es/base-ui/AutoComplete/AutoComplete.mjs.map +1 -1
  685. package/es/base-ui/AutoComplete/index.d.mts +3 -2
  686. package/es/base-ui/AutoComplete/style.mjs.map +1 -1
  687. package/es/base-ui/AutoComplete/type.d.mts +1 -1
  688. package/es/base-ui/Button/Button.d.mts +2 -25
  689. package/es/base-ui/Button/Button.mjs +17 -7
  690. package/es/base-ui/Button/Button.mjs.map +1 -1
  691. package/es/base-ui/Button/SplitButton.d.mts +5 -18
  692. package/es/base-ui/Button/SplitButton.mjs +14 -13
  693. package/es/base-ui/Button/SplitButton.mjs.map +1 -1
  694. package/es/base-ui/Button/index.d.mts +4 -3
  695. package/es/base-ui/Button/style.mjs.map +1 -1
  696. package/es/base-ui/Button/type.d.mts +1 -1
  697. package/es/base-ui/Checkbox/Checkbox.d.mts +2 -4
  698. package/es/base-ui/Checkbox/Checkbox.mjs.map +1 -1
  699. package/es/base-ui/Checkbox/CheckboxGroup.d.mts +2 -4
  700. package/es/base-ui/Checkbox/CheckboxGroup.mjs.map +1 -1
  701. package/es/base-ui/Checkbox/index.d.mts +4 -3
  702. package/es/base-ui/Checkbox/style.mjs.map +1 -1
  703. package/es/base-ui/Checkbox/type.d.mts +2 -1
  704. package/es/base-ui/ContextMenu/ContextMenuHost.d.mts +1 -3
  705. package/es/base-ui/ContextMenu/ContextMenuHost.mjs.map +1 -1
  706. package/es/base-ui/ContextMenu/ContextMenuTrigger.d.mts +0 -1
  707. package/es/base-ui/ContextMenu/ContextMenuTrigger.mjs.map +1 -1
  708. package/es/base-ui/ContextMenu/imperative.d.mts +2 -1
  709. package/es/base-ui/ContextMenu/index.d.mts +4 -1
  710. package/es/base-ui/ContextMenu/renderItems.d.mts +4 -1
  711. package/es/base-ui/ContextMenu/renderItems.mjs.map +1 -1
  712. package/es/base-ui/ContextMenu/store.d.mts +3 -0
  713. package/es/base-ui/ContextMenu/store.mjs +9 -6
  714. package/es/base-ui/ContextMenu/store.mjs.map +1 -1
  715. package/es/base-ui/ContextMenu/type.d.mts +1 -0
  716. package/es/base-ui/DropdownMenu/DropdownMenu.d.mts +2 -4
  717. package/es/base-ui/DropdownMenu/DropdownMenu.mjs.map +1 -1
  718. package/es/base-ui/DropdownMenu/atoms.d.mts +22 -104
  719. package/es/base-ui/DropdownMenu/atoms.mjs.map +1 -1
  720. package/es/base-ui/DropdownMenu/index.d.mts +2 -1
  721. package/es/base-ui/DropdownMenu/renderItems.d.mts +2 -2
  722. package/es/base-ui/DropdownMenu/renderItems.mjs.map +1 -1
  723. package/es/base-ui/DropdownMenu/sharedStyle.mjs.map +1 -1
  724. package/es/base-ui/DropdownMenu/type.d.mts +3 -1
  725. package/es/base-ui/FloatingPanel/FloatingPanel.d.mts +1 -3
  726. package/es/base-ui/FloatingPanel/FloatingPanel.mjs +2 -1
  727. package/es/base-ui/FloatingPanel/FloatingPanel.mjs.map +1 -1
  728. package/es/base-ui/FloatingPanel/index.d.mts +2 -1
  729. package/es/base-ui/FloatingPanel/style.mjs.map +1 -1
  730. package/es/base-ui/FloatingPanel/type.d.mts +2 -2
  731. package/es/base-ui/FloatingSheet/FloatingSheet.d.mts +1 -22
  732. package/es/base-ui/FloatingSheet/FloatingSheet.mjs +6 -3
  733. package/es/base-ui/FloatingSheet/FloatingSheet.mjs.map +1 -1
  734. package/es/base-ui/FloatingSheet/FloatingSheetHeader.mjs.map +1 -1
  735. package/es/base-ui/FloatingSheet/helpers.mjs.map +1 -1
  736. package/es/base-ui/FloatingSheet/index.d.mts +2 -1
  737. package/es/base-ui/FloatingSheet/style.mjs.map +1 -1
  738. package/es/base-ui/FloatingSheet/type.d.mts +0 -1
  739. package/es/base-ui/FloatingSheet/useSheetDrag.mjs.map +1 -1
  740. package/es/base-ui/FloatingSheet/useSnapPoints.mjs.map +1 -1
  741. package/es/base-ui/Form/Form.mjs.map +1 -1
  742. package/es/base-ui/Form/components/FormDivider.d.mts +1 -2
  743. package/es/base-ui/Form/components/FormDivider.mjs.map +1 -1
  744. package/es/base-ui/Form/components/FormField.d.mts +2 -4
  745. package/es/base-ui/Form/components/FormField.mjs.map +1 -1
  746. package/es/base-ui/Form/components/FormFlatGroup.d.mts +2 -4
  747. package/es/base-ui/Form/components/FormFlatGroup.mjs.map +1 -1
  748. package/es/base-ui/Form/components/FormFooter.d.mts +1 -2
  749. package/es/base-ui/Form/components/FormFooter.mjs.map +1 -1
  750. package/es/base-ui/Form/components/FormGroup.d.mts +2 -4
  751. package/es/base-ui/Form/components/FormGroup.mjs.map +1 -1
  752. package/es/base-ui/Form/components/FormSubmitFooter.d.mts +2 -4
  753. package/es/base-ui/Form/components/FormSubmitFooter.mjs.map +1 -1
  754. package/es/base-ui/Form/components/FormTitle.d.mts +1 -2
  755. package/es/base-ui/Form/components/FormTitle.mjs.map +1 -1
  756. package/es/base-ui/Form/context.mjs.map +1 -1
  757. package/es/base-ui/Form/index.d.mts +17 -18
  758. package/es/base-ui/Form/index.mjs +2 -2
  759. package/es/base-ui/Form/index.mjs.map +1 -1
  760. package/es/base-ui/Form/style.mjs +1 -1
  761. package/es/base-ui/Form/style.mjs.map +1 -1
  762. package/es/base-ui/Form/type.d.mts +4 -1
  763. package/es/base-ui/Input/Input.d.mts +2 -4
  764. package/es/base-ui/Input/Input.mjs.map +1 -1
  765. package/es/base-ui/Input/InputNumber.d.mts +2 -4
  766. package/es/base-ui/Input/InputNumber.mjs.map +1 -1
  767. package/es/base-ui/Input/InputOTP.d.mts +2 -4
  768. package/es/base-ui/Input/InputOTP.mjs.map +1 -1
  769. package/es/base-ui/Input/InputPassword.d.mts +2 -4
  770. package/es/base-ui/Input/InputPassword.mjs.map +1 -1
  771. package/es/base-ui/Input/TextArea.d.mts +2 -4
  772. package/es/base-ui/Input/TextArea.mjs.map +1 -1
  773. package/es/base-ui/Input/index.d.mts +6 -5
  774. package/es/base-ui/Input/style.d.mts +3 -5
  775. package/es/base-ui/Input/style.mjs.map +1 -1
  776. package/es/base-ui/Input/type.d.mts +0 -1
  777. package/es/base-ui/Modal/Modal.d.mts +1 -2
  778. package/es/base-ui/Modal/Modal.mjs.map +1 -1
  779. package/es/base-ui/Modal/ModalLayerContext.mjs.map +1 -1
  780. package/es/base-ui/Modal/atoms.d.mts +11 -58
  781. package/es/base-ui/Modal/atoms.mjs.map +1 -1
  782. package/es/base-ui/Modal/constants.d.mts +0 -1
  783. package/es/base-ui/Modal/constants.mjs.map +1 -1
  784. package/es/base-ui/Modal/context.d.mts +1 -3
  785. package/es/base-ui/Modal/context.mjs.map +1 -1
  786. package/es/base-ui/Modal/imperative.d.mts +1 -3
  787. package/es/base-ui/Modal/imperative.mjs +2 -1
  788. package/es/base-ui/Modal/imperative.mjs.map +1 -1
  789. package/es/base-ui/Modal/index.d.mts +2 -1
  790. package/es/base-ui/Modal/style.mjs.map +1 -1
  791. package/es/base-ui/Modal/type.d.mts +1 -1
  792. package/es/base-ui/Popover/ArrowIcon.d.mts +1 -3
  793. package/es/base-ui/Popover/ArrowIcon.mjs.map +1 -1
  794. package/es/base-ui/Popover/Popover.d.mts +1 -2
  795. package/es/base-ui/Popover/Popover.mjs +2 -2
  796. package/es/base-ui/Popover/Popover.mjs.map +1 -1
  797. package/es/base-ui/Popover/PopoverGroup.d.mts +1 -2
  798. package/es/base-ui/Popover/PopoverGroup.mjs.map +1 -1
  799. package/es/base-ui/Popover/PopoverInGroup.mjs.map +1 -1
  800. package/es/base-ui/Popover/PopoverPortal.mjs.map +1 -1
  801. package/es/base-ui/Popover/PopoverStandalone.mjs +6 -3
  802. package/es/base-ui/Popover/PopoverStandalone.mjs.map +1 -1
  803. package/es/base-ui/Popover/atoms.d.mts +7 -41
  804. package/es/base-ui/Popover/atoms.mjs.map +1 -1
  805. package/es/base-ui/Popover/context.d.mts +1 -3
  806. package/es/base-ui/Popover/context.mjs +1 -1
  807. package/es/base-ui/Popover/context.mjs.map +1 -1
  808. package/es/base-ui/Popover/groupContext.d.mts +0 -1
  809. package/es/base-ui/Popover/groupContext.mjs.map +1 -1
  810. package/es/base-ui/Popover/hoverOnlyPress.mjs.map +1 -1
  811. package/es/base-ui/Popover/index.d.mts +4 -3
  812. package/es/base-ui/Popover/style.mjs.map +1 -1
  813. package/es/base-ui/Popover/type.d.mts +1 -1
  814. package/es/base-ui/Popover/useMergedPopoverProps.mjs.map +1 -1
  815. package/es/base-ui/ScrollArea/ScrollArea.d.mts +0 -1
  816. package/es/base-ui/ScrollArea/ScrollArea.mjs.map +1 -1
  817. package/es/base-ui/ScrollArea/atoms.d.mts +6 -26
  818. package/es/base-ui/ScrollArea/atoms.mjs.map +1 -1
  819. package/es/base-ui/ScrollArea/globalStyle.mjs.map +1 -1
  820. package/es/base-ui/ScrollArea/index.d.mts +2 -1
  821. package/es/base-ui/ScrollArea/style.mjs.map +1 -1
  822. package/es/base-ui/ScrollArea/type.d.mts +0 -1
  823. package/es/base-ui/Segmented/Segmented.d.mts +2 -23
  824. package/es/base-ui/Segmented/Segmented.mjs +2 -2
  825. package/es/base-ui/Segmented/Segmented.mjs.map +1 -1
  826. package/es/base-ui/Segmented/atoms.d.mts +2 -16
  827. package/es/base-ui/Segmented/atoms.mjs.map +1 -1
  828. package/es/base-ui/Segmented/index.d.mts +2 -1
  829. package/es/base-ui/Segmented/style.mjs.map +1 -1
  830. package/es/base-ui/Segmented/type.d.mts +0 -1
  831. package/es/base-ui/Select/Select.d.mts +2 -4
  832. package/es/base-ui/Select/Select.mjs.map +1 -1
  833. package/es/base-ui/Select/atoms.d.mts +17 -77
  834. package/es/base-ui/Select/atoms.mjs.map +1 -1
  835. package/es/base-ui/Select/helpers.mjs.map +1 -1
  836. package/es/base-ui/Select/hooks.mjs.map +1 -1
  837. package/es/base-ui/Select/index.d.mts +2 -1
  838. package/es/base-ui/Select/parts.mjs.map +1 -1
  839. package/es/base-ui/Select/renderOptions.mjs.map +1 -1
  840. package/es/base-ui/Select/style.mjs +0 -6
  841. package/es/base-ui/Select/style.mjs.map +1 -1
  842. package/es/base-ui/Select/type.d.mts +2 -2
  843. package/es/base-ui/Slider/Slider.d.mts +2 -4
  844. package/es/base-ui/Slider/Slider.mjs.map +1 -1
  845. package/es/base-ui/Slider/SliderWithInput.d.mts +2 -4
  846. package/es/base-ui/Slider/SliderWithInput.mjs.map +1 -1
  847. package/es/base-ui/Slider/index.d.mts +4 -3
  848. package/es/base-ui/Slider/style.mjs.map +1 -1
  849. package/es/base-ui/Slider/type.d.mts +2 -1
  850. package/es/base-ui/SubmenuArrowIcon.mjs.map +1 -1
  851. package/es/base-ui/Switch/Switch.d.mts +2 -4
  852. package/es/base-ui/Switch/Switch.mjs.map +1 -1
  853. package/es/base-ui/Switch/atoms.d.mts +4 -35
  854. package/es/base-ui/Switch/atoms.mjs +3 -3
  855. package/es/base-ui/Switch/atoms.mjs.map +1 -1
  856. package/es/base-ui/Switch/index.d.mts +2 -1
  857. package/es/base-ui/Switch/style.mjs.map +1 -1
  858. package/es/base-ui/Switch/type.d.mts +0 -1
  859. package/es/base-ui/Tabs/Tabs.d.mts +1 -2
  860. package/es/base-ui/Tabs/Tabs.mjs +2 -2
  861. package/es/base-ui/Tabs/Tabs.mjs.map +1 -1
  862. package/es/base-ui/Tabs/atoms.d.mts +1 -2
  863. package/es/base-ui/Tabs/atoms.mjs +6 -5
  864. package/es/base-ui/Tabs/atoms.mjs.map +1 -1
  865. package/es/base-ui/Tabs/index.d.mts +2 -1
  866. package/es/base-ui/Tabs/style.mjs.map +1 -1
  867. package/es/base-ui/Tabs/type.d.mts +0 -1
  868. package/es/base-ui/Toast/Toast.mjs.map +1 -1
  869. package/es/base-ui/Toast/context.mjs.map +1 -1
  870. package/es/base-ui/Toast/imperative.d.mts +1 -10
  871. package/es/base-ui/Toast/imperative.mjs +16 -12
  872. package/es/base-ui/Toast/imperative.mjs.map +1 -1
  873. package/es/base-ui/Toast/index.d.mts +2 -1
  874. package/es/base-ui/Toast/style.mjs.map +1 -1
  875. package/es/base-ui/Toast/type.d.mts +1 -1
  876. package/es/base-ui/Tooltip/ArrowIcon.mjs.map +1 -1
  877. package/es/base-ui/Tooltip/Tooltip.d.mts +1 -2
  878. package/es/base-ui/Tooltip/Tooltip.mjs +1 -1
  879. package/es/base-ui/Tooltip/Tooltip.mjs.map +1 -1
  880. package/es/base-ui/Tooltip/TooltipContent.mjs.map +1 -1
  881. package/es/base-ui/Tooltip/TooltipGroup.d.mts +1 -2
  882. package/es/base-ui/Tooltip/TooltipGroup.mjs.map +1 -1
  883. package/es/base-ui/Tooltip/TooltipInGroup.mjs.map +1 -1
  884. package/es/base-ui/Tooltip/TooltipStandalone.mjs.map +1 -1
  885. package/es/base-ui/Tooltip/groupContext.mjs.map +1 -1
  886. package/es/base-ui/Tooltip/index.d.mts +2 -1
  887. package/es/base-ui/Tooltip/style.mjs.map +1 -1
  888. package/es/base-ui/Tooltip/type.d.mts +1 -1
  889. package/es/base-ui/Tooltip/useMergedTooltipProps.mjs.map +1 -1
  890. package/es/base-ui/controlSize.mjs.map +1 -1
  891. package/es/base-ui/index.d.mts +47 -28
  892. package/es/base-ui/index.mjs +4 -3
  893. package/es/base-ui/zIndex/constants.mjs.map +1 -1
  894. package/es/base-ui/zIndex/manager.mjs.map +1 -1
  895. package/es/base-ui/zIndex/useLayerZIndex.mjs.map +1 -1
  896. package/es/brand/BrandLoading/index.d.mts +1 -2
  897. package/es/brand/BrandLoading/index.mjs.map +1 -1
  898. package/es/brand/LobeChat/index.d.mts +2 -4
  899. package/es/brand/LobeChat/index.mjs +1 -1
  900. package/es/brand/LobeChat/index.mjs.map +1 -1
  901. package/es/brand/LobeChatText/index.d.mts +1 -2
  902. package/es/brand/LobeChatText/index.mjs.map +1 -1
  903. package/es/brand/LobeHub/index.d.mts +2 -4
  904. package/es/brand/LobeHub/index.mjs +1 -1
  905. package/es/brand/LobeHub/index.mjs.map +1 -1
  906. package/es/brand/LobeHub/style.mjs.map +1 -1
  907. package/es/brand/LobeHubText/index.d.mts +1 -2
  908. package/es/brand/LobeHubText/index.mjs.map +1 -1
  909. package/es/brand/Logo3d/index.d.mts +1 -2
  910. package/es/brand/Logo3d/index.mjs.map +1 -1
  911. package/es/brand/LogoFlat/index.d.mts +2 -4
  912. package/es/brand/LogoMono/index.d.mts +1 -1
  913. package/es/brand/LogoMono/index.mjs +1 -1
  914. package/es/brand/LogoThree/Loading.mjs.map +1 -1
  915. package/es/brand/LogoThree/LogoSpline.d.mts +3 -4
  916. package/es/brand/LogoThree/LogoSpline.mjs.map +1 -1
  917. package/es/brand/LogoThree/index.d.mts +3 -4
  918. package/es/brand/LogoThree/index.mjs.map +1 -1
  919. package/es/brand/components/Divider.mjs.map +1 -1
  920. package/es/brand/index.d.mts +10 -10
  921. package/es/brand/index.mjs +1 -1
  922. package/es/chat/BackBottom/BackBottom.d.mts +2 -4
  923. package/es/chat/BackBottom/BackBottom.mjs.map +1 -1
  924. package/es/chat/BackBottom/index.d.mts +2 -1
  925. package/es/chat/BackBottom/style.mjs.map +1 -1
  926. package/es/chat/BackBottom/type.d.mts +0 -1
  927. package/es/chat/ChatHeader/ChatHeader.mjs.map +1 -1
  928. package/es/chat/ChatHeader/ChatHeaderTitle.d.mts +1 -2
  929. package/es/chat/ChatHeader/ChatHeaderTitle.mjs.map +1 -1
  930. package/es/chat/ChatHeader/index.d.mts +2 -3
  931. package/es/chat/ChatHeader/index.mjs +1 -1
  932. package/es/chat/ChatHeader/style.mjs.map +1 -1
  933. package/es/chat/ChatHeader/type.d.mts +5 -1
  934. package/es/chat/ChatInputArea/ChatInputArea.mjs.map +1 -1
  935. package/es/chat/ChatInputArea/components/ChatInputActionBar.d.mts +1 -2
  936. package/es/chat/ChatInputArea/components/ChatInputActionBar.mjs.map +1 -1
  937. package/es/chat/ChatInputArea/components/ChatInputAreaInner.d.mts +2 -4
  938. package/es/chat/ChatInputArea/components/ChatInputAreaInner.mjs.map +1 -1
  939. package/es/chat/ChatInputArea/components/ChatSendButton.d.mts +1 -2
  940. package/es/chat/ChatInputArea/components/ChatSendButton.mjs.map +1 -1
  941. package/es/chat/ChatInputArea/index.d.mts +4 -5
  942. package/es/chat/ChatInputArea/index.mjs +1 -1
  943. package/es/chat/ChatInputArea/style.mjs.map +1 -1
  944. package/es/chat/ChatInputArea/type.d.mts +3 -1
  945. package/es/chat/ChatItem/ChatItem.d.mts +2 -4
  946. package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
  947. package/es/chat/ChatItem/components/Actions.mjs.map +1 -1
  948. package/es/chat/ChatItem/components/Avatar.mjs.map +1 -1
  949. package/es/chat/ChatItem/components/BorderSpacing.mjs.map +1 -1
  950. package/es/chat/ChatItem/components/ErrorContent.mjs.map +1 -1
  951. package/es/chat/ChatItem/components/Loading.mjs.map +1 -1
  952. package/es/chat/ChatItem/components/MessageContent.mjs.map +1 -1
  953. package/es/chat/ChatItem/components/Title.mjs.map +1 -1
  954. package/es/chat/ChatItem/index.d.mts +2 -1
  955. package/es/chat/ChatItem/style.mjs.map +1 -1
  956. package/es/chat/ChatItem/type.d.mts +8 -3
  957. package/es/chat/ChatList/ChatList.d.mts +2 -4
  958. package/es/chat/ChatList/ChatList.mjs.map +1 -1
  959. package/es/chat/ChatList/components/ChatActionsBar.d.mts +1 -2
  960. package/es/chat/ChatList/components/ChatActionsBar.mjs.map +1 -1
  961. package/es/chat/ChatList/components/ChatListItem.mjs.map +1 -1
  962. package/es/chat/ChatList/components/HistoryDivider.mjs.map +1 -1
  963. package/es/chat/ChatList/components/useChatListActionsBar.mjs.map +1 -1
  964. package/es/chat/ChatList/index.d.mts +3 -2
  965. package/es/chat/ChatList/style.mjs.map +1 -1
  966. package/es/chat/ChatList/type.d.mts +5 -2
  967. package/es/chat/EditableMessage/EditableMessage.d.mts +2 -4
  968. package/es/chat/EditableMessage/EditableMessage.mjs +3 -3
  969. package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
  970. package/es/chat/EditableMessage/index.d.mts +2 -1
  971. package/es/chat/EditableMessage/type.d.mts +3 -1
  972. package/es/chat/EditableMessageList/EditableMessageList.d.mts +2 -4
  973. package/es/chat/EditableMessageList/EditableMessageList.mjs +2 -1
  974. package/es/chat/EditableMessageList/EditableMessageList.mjs.map +1 -1
  975. package/es/chat/EditableMessageList/index.d.mts +2 -1
  976. package/es/chat/EditableMessageList/messageReducer.mjs.map +1 -1
  977. package/es/chat/EditableMessageList/type.d.mts +1 -0
  978. package/es/chat/LoadingDots/LoadingDots.d.mts +1 -2
  979. package/es/chat/LoadingDots/LoadingDots.mjs.map +1 -1
  980. package/es/chat/LoadingDots/index.d.mts +2 -1
  981. package/es/chat/LoadingDots/style.mjs.map +1 -1
  982. package/es/chat/LoadingDots/type.d.mts +0 -1
  983. package/es/chat/MessageInput/MessageInput.d.mts +2 -4
  984. package/es/chat/MessageInput/MessageInput.mjs +1 -1
  985. package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
  986. package/es/chat/MessageInput/index.d.mts +2 -1
  987. package/es/chat/MessageInput/style.mjs.map +1 -1
  988. package/es/chat/MessageInput/type.d.mts +3 -1
  989. package/es/chat/MessageModal/MessageModal.d.mts +2 -4
  990. package/es/chat/MessageModal/MessageModal.mjs +3 -3
  991. package/es/chat/MessageModal/MessageModal.mjs.map +1 -1
  992. package/es/chat/MessageModal/index.d.mts +2 -1
  993. package/es/chat/MessageModal/type.d.mts +2 -1
  994. package/es/chat/TokenTag/TokenTag.d.mts +1 -2
  995. package/es/chat/TokenTag/TokenTag.mjs.map +1 -1
  996. package/es/chat/TokenTag/index.d.mts +2 -1
  997. package/es/chat/TokenTag/type.d.mts +1 -0
  998. package/es/chat/index.d.mts +26 -16
  999. package/es/chat/types/chatMessage.d.mts +0 -1
  1000. package/es/chat/types/error.mjs.map +1 -1
  1001. package/es/chat/types/index.d.mts +2 -1
  1002. package/es/chat/types/llm.mjs.map +1 -1
  1003. package/es/chat/types/meta.d.mts +0 -1
  1004. package/es/color/ColorScales/ScaleRow.mjs.map +1 -1
  1005. package/es/color/ColorScales/index.d.mts +2 -4
  1006. package/es/color/ColorScales/index.mjs.map +1 -1
  1007. package/es/color/ColorScales/style.mjs.map +1 -1
  1008. package/es/color/CssVar/ScaleRow.mjs.map +1 -1
  1009. package/es/color/CssVar/VarRow.mjs.map +1 -1
  1010. package/es/color/CssVar/index.d.mts +2 -4
  1011. package/es/color/CssVar/index.mjs.map +1 -1
  1012. package/es/color/CssVar/style.mjs.map +1 -1
  1013. package/es/color/colors/blue.d.mts +1 -2
  1014. package/es/color/colors/blue.mjs.map +1 -1
  1015. package/es/color/colors/cyan.d.mts +1 -2
  1016. package/es/color/colors/cyan.mjs.map +1 -1
  1017. package/es/color/colors/geekblue.d.mts +1 -2
  1018. package/es/color/colors/geekblue.mjs.map +1 -1
  1019. package/es/color/colors/gold.d.mts +1 -2
  1020. package/es/color/colors/gold.mjs.map +1 -1
  1021. package/es/color/colors/gray.d.mts +1 -2
  1022. package/es/color/colors/gray.mjs.map +1 -1
  1023. package/es/color/colors/green.d.mts +1 -2
  1024. package/es/color/colors/green.mjs.map +1 -1
  1025. package/es/color/colors/index.d.mts +15 -16
  1026. package/es/color/colors/index.mjs +1 -1
  1027. package/es/color/colors/index.mjs.map +1 -1
  1028. package/es/color/colors/lime.d.mts +1 -2
  1029. package/es/color/colors/lime.mjs.map +1 -1
  1030. package/es/color/colors/magenta.d.mts +1 -2
  1031. package/es/color/colors/magenta.mjs.map +1 -1
  1032. package/es/color/colors/orange.d.mts +1 -2
  1033. package/es/color/colors/orange.mjs.map +1 -1
  1034. package/es/color/colors/primary.d.mts +1 -2
  1035. package/es/color/colors/primary.mjs.map +1 -1
  1036. package/es/color/colors/purple.d.mts +1 -2
  1037. package/es/color/colors/purple.mjs.map +1 -1
  1038. package/es/color/colors/red.d.mts +1 -2
  1039. package/es/color/colors/red.mjs.map +1 -1
  1040. package/es/color/colors/volcano.d.mts +1 -2
  1041. package/es/color/colors/volcano.mjs.map +1 -1
  1042. package/es/color/colors/yellow.d.mts +1 -2
  1043. package/es/color/colors/yellow.mjs.map +1 -1
  1044. package/es/color/index.d.mts +21 -21
  1045. package/es/color/neutrals/index.d.mts +6 -7
  1046. package/es/color/neutrals/index.mjs +1 -1
  1047. package/es/color/neutrals/index.mjs.map +1 -1
  1048. package/es/color/neutrals/mauve.d.mts +1 -2
  1049. package/es/color/neutrals/mauve.mjs.map +1 -1
  1050. package/es/color/neutrals/olive.d.mts +1 -2
  1051. package/es/color/neutrals/olive.mjs.map +1 -1
  1052. package/es/color/neutrals/sage.d.mts +1 -2
  1053. package/es/color/neutrals/sage.mjs.map +1 -1
  1054. package/es/color/neutrals/sand.d.mts +1 -2
  1055. package/es/color/neutrals/sand.mjs.map +1 -1
  1056. package/es/color/neutrals/slate.d.mts +1 -2
  1057. package/es/color/neutrals/slate.mjs.map +1 -1
  1058. package/es/eslint/index.mjs.map +1 -1
  1059. package/es/hooks/useCopied.mjs.map +1 -1
  1060. package/es/hooks/useEventCallback.mjs.map +1 -1
  1061. package/es/hooks/useFloatingLayer.mjs +1 -1
  1062. package/es/hooks/useFloatingLayer.mjs.map +1 -1
  1063. package/es/hooks/useHighlight.mjs +5 -2
  1064. package/es/hooks/useHighlight.mjs.map +1 -1
  1065. package/es/hooks/useIsClient.mjs.map +1 -1
  1066. package/es/hooks/useMarkdown/latex.mjs +1 -1
  1067. package/es/hooks/useMarkdown/latex.mjs.map +1 -1
  1068. package/es/hooks/useMarkdown/useMarkdownComponents.mjs.map +1 -1
  1069. package/es/hooks/useMarkdown/useMarkdownContent.mjs.map +1 -1
  1070. package/es/hooks/useMarkdown/useMarkdownRehypePlugins.mjs.map +1 -1
  1071. package/es/hooks/useMarkdown/useMarkdownRemarkPlugins.mjs.map +1 -1
  1072. package/es/hooks/useMarkdown/utils.d.mts +1 -5
  1073. package/es/hooks/useMarkdown/utils.mjs +1 -1
  1074. package/es/hooks/useMarkdown/utils.mjs.map +1 -1
  1075. package/es/hooks/useMermaid.mjs +3 -1
  1076. package/es/hooks/useMermaid.mjs.map +1 -1
  1077. package/es/hooks/useNativeButton.mjs.map +1 -1
  1078. package/es/hooks/useStableValue.mjs.map +1 -1
  1079. package/es/hooks/useStreamHighlight.mjs +3 -2
  1080. package/es/hooks/useStreamHighlight.mjs.map +1 -1
  1081. package/es/hooks/useStreamMermaid.mjs.map +1 -1
  1082. package/es/hooks/useTextOverflow.mjs.map +1 -1
  1083. package/es/i18n/context.d.mts +2 -3
  1084. package/es/i18n/context.mjs +2 -2
  1085. package/es/i18n/context.mjs.map +1 -1
  1086. package/es/i18n/resources/en/chat.d.mts +1 -1
  1087. package/es/i18n/resources/en/chat.mjs.map +1 -1
  1088. package/es/i18n/resources/en/common.d.mts +1 -1
  1089. package/es/i18n/resources/en/common.mjs.map +1 -1
  1090. package/es/i18n/resources/en/editableMessage.d.mts +1 -1
  1091. package/es/i18n/resources/en/editableMessage.mjs.map +1 -1
  1092. package/es/i18n/resources/en/emojiPicker.d.mts +1 -1
  1093. package/es/i18n/resources/en/emojiPicker.mjs.map +1 -1
  1094. package/es/i18n/resources/en/form.d.mts +1 -1
  1095. package/es/i18n/resources/en/form.mjs.map +1 -1
  1096. package/es/i18n/resources/en/hotkey.d.mts +1 -1
  1097. package/es/i18n/resources/en/hotkey.mjs.map +1 -1
  1098. package/es/i18n/resources/en/image.d.mts +1 -1
  1099. package/es/i18n/resources/en/image.mjs.map +1 -1
  1100. package/es/i18n/resources/en/index.d.mts +10 -12
  1101. package/es/i18n/resources/en/index.mjs +1 -1
  1102. package/es/i18n/resources/en/messageModal.d.mts +1 -1
  1103. package/es/i18n/resources/en/messageModal.mjs.map +1 -1
  1104. package/es/i18n/resources/en/sideNav.d.mts +1 -1
  1105. package/es/i18n/resources/en/sideNav.mjs.map +1 -1
  1106. package/es/i18n/resources/zhCn/chat.d.mts +1 -1
  1107. package/es/i18n/resources/zhCn/chat.mjs.map +1 -1
  1108. package/es/i18n/resources/zhCn/common.d.mts +1 -1
  1109. package/es/i18n/resources/zhCn/common.mjs.map +1 -1
  1110. package/es/i18n/resources/zhCn/editableMessage.d.mts +1 -1
  1111. package/es/i18n/resources/zhCn/editableMessage.mjs.map +1 -1
  1112. package/es/i18n/resources/zhCn/emojiPicker.d.mts +1 -1
  1113. package/es/i18n/resources/zhCn/emojiPicker.mjs.map +1 -1
  1114. package/es/i18n/resources/zhCn/form.d.mts +1 -1
  1115. package/es/i18n/resources/zhCn/form.mjs.map +1 -1
  1116. package/es/i18n/resources/zhCn/hotkey.d.mts +1 -1
  1117. package/es/i18n/resources/zhCn/hotkey.mjs.map +1 -1
  1118. package/es/i18n/resources/zhCn/image.d.mts +1 -1
  1119. package/es/i18n/resources/zhCn/image.mjs.map +1 -1
  1120. package/es/i18n/resources/zhCn/index.d.mts +10 -12
  1121. package/es/i18n/resources/zhCn/index.mjs +1 -1
  1122. package/es/i18n/resources/zhCn/messageModal.d.mts +1 -1
  1123. package/es/i18n/resources/zhCn/messageModal.mjs.map +1 -1
  1124. package/es/i18n/resources/zhCn/sideNav.d.mts +1 -1
  1125. package/es/i18n/resources/zhCn/sideNav.mjs.map +1 -1
  1126. package/es/i18n/types.d.mts +9 -10
  1127. package/es/i18n/useTranslation.d.mts +0 -1
  1128. package/es/i18n/useTranslation.mjs.map +1 -1
  1129. package/es/icons/Auth0/components/Avatar.d.mts +1 -2
  1130. package/es/icons/Auth0/components/Avatar.mjs.map +1 -1
  1131. package/es/icons/Auth0/components/Mono.d.mts +1 -2
  1132. package/es/icons/Auth0/components/Mono.mjs.map +1 -1
  1133. package/es/icons/Auth0/index.d.mts +3 -4
  1134. package/es/icons/Authelia/components/Avatar.d.mts +1 -2
  1135. package/es/icons/Authelia/components/Avatar.mjs.map +1 -1
  1136. package/es/icons/Authelia/components/Color.d.mts +1 -2
  1137. package/es/icons/Authelia/components/Color.mjs.map +1 -1
  1138. package/es/icons/Authelia/components/Mono.d.mts +1 -2
  1139. package/es/icons/Authelia/components/Mono.mjs.map +1 -1
  1140. package/es/icons/Authelia/index.d.mts +4 -5
  1141. package/es/icons/Authentik/components/Avatar.d.mts +1 -2
  1142. package/es/icons/Authentik/components/Avatar.mjs.map +1 -1
  1143. package/es/icons/Authentik/components/Color.d.mts +1 -2
  1144. package/es/icons/Authentik/components/Color.mjs.map +1 -1
  1145. package/es/icons/Authentik/components/Mono.d.mts +1 -2
  1146. package/es/icons/Authentik/components/Mono.mjs.map +1 -1
  1147. package/es/icons/Authentik/index.d.mts +4 -5
  1148. package/es/icons/Casdoor/components/Avatar.d.mts +1 -2
  1149. package/es/icons/Casdoor/components/Avatar.mjs.map +1 -1
  1150. package/es/icons/Casdoor/components/Color.d.mts +1 -2
  1151. package/es/icons/Casdoor/components/Color.mjs.map +1 -1
  1152. package/es/icons/Casdoor/components/Mono.d.mts +1 -2
  1153. package/es/icons/Casdoor/components/Mono.mjs.map +1 -1
  1154. package/es/icons/Casdoor/index.d.mts +4 -5
  1155. package/es/icons/Clerk/components/Avatar.d.mts +1 -2
  1156. package/es/icons/Clerk/components/Avatar.mjs.map +1 -1
  1157. package/es/icons/Clerk/components/Color.d.mts +1 -2
  1158. package/es/icons/Clerk/components/Color.mjs.map +1 -1
  1159. package/es/icons/Clerk/components/Mono.d.mts +1 -2
  1160. package/es/icons/Clerk/components/Mono.mjs.map +1 -1
  1161. package/es/icons/Clerk/index.d.mts +4 -5
  1162. package/es/icons/DingTalk/components/Avatar.d.mts +1 -2
  1163. package/es/icons/DingTalk/components/Avatar.mjs.map +1 -1
  1164. package/es/icons/DingTalk/components/Color.d.mts +1 -2
  1165. package/es/icons/DingTalk/components/Color.mjs.map +1 -1
  1166. package/es/icons/DingTalk/components/Mono.d.mts +1 -2
  1167. package/es/icons/DingTalk/components/Mono.mjs.map +1 -1
  1168. package/es/icons/DingTalk/index.d.mts +4 -5
  1169. package/es/icons/Discord/components/Avatar.d.mts +1 -2
  1170. package/es/icons/Discord/components/Avatar.mjs.map +1 -1
  1171. package/es/icons/Discord/components/Color.d.mts +1 -2
  1172. package/es/icons/Discord/components/Color.mjs.map +1 -1
  1173. package/es/icons/Discord/components/Mono.d.mts +1 -2
  1174. package/es/icons/Discord/components/Mono.mjs.map +1 -1
  1175. package/es/icons/Discord/index.d.mts +4 -5
  1176. package/es/icons/GoogleChat/components/Avatar.d.mts +1 -2
  1177. package/es/icons/GoogleChat/components/Avatar.mjs.map +1 -1
  1178. package/es/icons/GoogleChat/components/Color.d.mts +1 -2
  1179. package/es/icons/GoogleChat/components/Color.mjs.map +1 -1
  1180. package/es/icons/GoogleChat/components/Mono.d.mts +1 -2
  1181. package/es/icons/GoogleChat/components/Mono.mjs.map +1 -1
  1182. package/es/icons/GoogleChat/index.d.mts +4 -5
  1183. package/es/icons/IMessage/components/Avatar.d.mts +1 -2
  1184. package/es/icons/IMessage/components/Avatar.mjs.map +1 -1
  1185. package/es/icons/IMessage/components/Color.d.mts +1 -2
  1186. package/es/icons/IMessage/components/Color.mjs.map +1 -1
  1187. package/es/icons/IMessage/components/Inner.mjs.map +1 -1
  1188. package/es/icons/IMessage/components/Mono.d.mts +1 -2
  1189. package/es/icons/IMessage/components/Mono.mjs.map +1 -1
  1190. package/es/icons/IMessage/index.d.mts +4 -5
  1191. package/es/icons/Lark/components/Avatar.d.mts +1 -2
  1192. package/es/icons/Lark/components/Avatar.mjs.map +1 -1
  1193. package/es/icons/Lark/components/Color.d.mts +1 -2
  1194. package/es/icons/Lark/components/Color.mjs.map +1 -1
  1195. package/es/icons/Lark/components/Mono.d.mts +1 -2
  1196. package/es/icons/Lark/components/Mono.mjs.map +1 -1
  1197. package/es/icons/Lark/index.d.mts +4 -5
  1198. package/es/icons/Line/components/Avatar.d.mts +1 -2
  1199. package/es/icons/Line/components/Avatar.mjs.map +1 -1
  1200. package/es/icons/Line/components/Color.d.mts +1 -2
  1201. package/es/icons/Line/components/Color.mjs.map +1 -1
  1202. package/es/icons/Line/components/Mono.d.mts +1 -2
  1203. package/es/icons/Line/components/Mono.mjs.map +1 -1
  1204. package/es/icons/Line/index.d.mts +4 -5
  1205. package/es/icons/Logto/components/Avatar.d.mts +1 -2
  1206. package/es/icons/Logto/components/Avatar.mjs.map +1 -1
  1207. package/es/icons/Logto/components/Color.d.mts +1 -2
  1208. package/es/icons/Logto/components/Color.mjs.map +1 -1
  1209. package/es/icons/Logto/components/Mono.d.mts +1 -2
  1210. package/es/icons/Logto/components/Mono.mjs.map +1 -1
  1211. package/es/icons/Logto/index.d.mts +4 -5
  1212. package/es/icons/MicrosoftEntra/components/Avatar.d.mts +1 -2
  1213. package/es/icons/MicrosoftEntra/components/Avatar.mjs.map +1 -1
  1214. package/es/icons/MicrosoftEntra/components/Color.d.mts +1 -2
  1215. package/es/icons/MicrosoftEntra/components/Color.mjs.map +1 -1
  1216. package/es/icons/MicrosoftEntra/components/Mono.d.mts +1 -2
  1217. package/es/icons/MicrosoftEntra/components/Mono.mjs.map +1 -1
  1218. package/es/icons/MicrosoftEntra/index.d.mts +4 -5
  1219. package/es/icons/MicrosoftTeams/components/Avatar.d.mts +1 -2
  1220. package/es/icons/MicrosoftTeams/components/Avatar.mjs.map +1 -1
  1221. package/es/icons/MicrosoftTeams/components/Color.d.mts +1 -2
  1222. package/es/icons/MicrosoftTeams/components/Color.mjs.map +1 -1
  1223. package/es/icons/MicrosoftTeams/components/Mono.d.mts +1 -2
  1224. package/es/icons/MicrosoftTeams/components/Mono.mjs.map +1 -1
  1225. package/es/icons/MicrosoftTeams/index.d.mts +4 -5
  1226. package/es/icons/NextAuth/components/Avatar.d.mts +1 -2
  1227. package/es/icons/NextAuth/components/Avatar.mjs.map +1 -1
  1228. package/es/icons/NextAuth/components/Color.d.mts +1 -2
  1229. package/es/icons/NextAuth/components/Color.mjs.map +1 -1
  1230. package/es/icons/NextAuth/components/Mono.d.mts +1 -2
  1231. package/es/icons/NextAuth/components/Mono.mjs.map +1 -1
  1232. package/es/icons/NextAuth/index.d.mts +4 -5
  1233. package/es/icons/QQ/components/Avatar.d.mts +1 -2
  1234. package/es/icons/QQ/components/Avatar.mjs.map +1 -1
  1235. package/es/icons/QQ/components/Color.d.mts +1 -2
  1236. package/es/icons/QQ/components/Color.mjs.map +1 -1
  1237. package/es/icons/QQ/components/Mono.d.mts +1 -2
  1238. package/es/icons/QQ/components/Mono.mjs.map +1 -1
  1239. package/es/icons/QQ/index.d.mts +4 -5
  1240. package/es/icons/Slack/components/Avatar.d.mts +1 -2
  1241. package/es/icons/Slack/components/Avatar.mjs.map +1 -1
  1242. package/es/icons/Slack/components/Color.d.mts +1 -2
  1243. package/es/icons/Slack/components/Color.mjs.map +1 -1
  1244. package/es/icons/Slack/components/Mono.d.mts +1 -2
  1245. package/es/icons/Slack/components/Mono.mjs.map +1 -1
  1246. package/es/icons/Slack/index.d.mts +4 -5
  1247. package/es/icons/Telegram/components/Avatar.d.mts +1 -2
  1248. package/es/icons/Telegram/components/Avatar.mjs.map +1 -1
  1249. package/es/icons/Telegram/components/Color.d.mts +1 -2
  1250. package/es/icons/Telegram/components/Color.mjs.map +1 -1
  1251. package/es/icons/Telegram/components/Inner.mjs.map +1 -1
  1252. package/es/icons/Telegram/components/Mono.d.mts +1 -2
  1253. package/es/icons/Telegram/components/Mono.mjs.map +1 -1
  1254. package/es/icons/Telegram/index.d.mts +4 -5
  1255. package/es/icons/WeChat/components/Avatar.d.mts +1 -2
  1256. package/es/icons/WeChat/components/Avatar.mjs.map +1 -1
  1257. package/es/icons/WeChat/components/Color.d.mts +1 -2
  1258. package/es/icons/WeChat/components/Color.mjs.map +1 -1
  1259. package/es/icons/WeChat/components/Mono.d.mts +1 -2
  1260. package/es/icons/WeChat/components/Mono.mjs.map +1 -1
  1261. package/es/icons/WeChat/index.d.mts +4 -5
  1262. package/es/icons/WhatsApp/components/Avatar.d.mts +1 -2
  1263. package/es/icons/WhatsApp/components/Avatar.mjs.map +1 -1
  1264. package/es/icons/WhatsApp/components/Color.d.mts +1 -2
  1265. package/es/icons/WhatsApp/components/Color.mjs.map +1 -1
  1266. package/es/icons/WhatsApp/components/Mono.d.mts +1 -2
  1267. package/es/icons/WhatsApp/components/Mono.mjs.map +1 -1
  1268. package/es/icons/WhatsApp/index.d.mts +4 -5
  1269. package/es/icons/Zitadel/components/Avatar.d.mts +1 -2
  1270. package/es/icons/Zitadel/components/Avatar.mjs.map +1 -1
  1271. package/es/icons/Zitadel/components/Color.d.mts +1 -2
  1272. package/es/icons/Zitadel/components/Color.mjs.map +1 -1
  1273. package/es/icons/Zitadel/components/Mono.d.mts +1 -2
  1274. package/es/icons/Zitadel/components/Mono.mjs.map +1 -1
  1275. package/es/icons/Zitadel/index.d.mts +4 -5
  1276. package/es/icons/index.d.mts +58 -58
  1277. package/es/icons/lucideExtra/AndroidIcon.d.mts +2 -5
  1278. package/es/icons/lucideExtra/AndroidIcon.mjs.map +1 -1
  1279. package/es/icons/lucideExtra/AppleIcon.d.mts +2 -5
  1280. package/es/icons/lucideExtra/AppleIcon.mjs.map +1 -1
  1281. package/es/icons/lucideExtra/AppstoreIcon.d.mts +2 -5
  1282. package/es/icons/lucideExtra/AppstoreIcon.mjs.map +1 -1
  1283. package/es/icons/lucideExtra/BotPromptIcon.d.mts +2 -5
  1284. package/es/icons/lucideExtra/BotPromptIcon.mjs.map +1 -1
  1285. package/es/icons/lucideExtra/BrainOffIcon.d.mts +2 -5
  1286. package/es/icons/lucideExtra/BrainOffIcon.mjs.map +1 -1
  1287. package/es/icons/lucideExtra/ChromeIcon.d.mts +2 -5
  1288. package/es/icons/lucideExtra/ChromeIcon.mjs.map +1 -1
  1289. package/es/icons/lucideExtra/CodepenIcon.d.mts +2 -5
  1290. package/es/icons/lucideExtra/CodepenIcon.mjs.map +1 -1
  1291. package/es/icons/lucideExtra/CodesandboxIcon.d.mts +2 -5
  1292. package/es/icons/lucideExtra/CodesandboxIcon.mjs.map +1 -1
  1293. package/es/icons/lucideExtra/CreateBotIcon.d.mts +2 -5
  1294. package/es/icons/lucideExtra/CreateBotIcon.mjs.map +1 -1
  1295. package/es/icons/lucideExtra/DiscordIcon.d.mts +2 -5
  1296. package/es/icons/lucideExtra/DiscordIcon.mjs.map +1 -1
  1297. package/es/icons/lucideExtra/FacebookIcon.d.mts +2 -5
  1298. package/es/icons/lucideExtra/FacebookIcon.mjs.map +1 -1
  1299. package/es/icons/lucideExtra/FigmaIcon.d.mts +2 -5
  1300. package/es/icons/lucideExtra/FigmaIcon.mjs.map +1 -1
  1301. package/es/icons/lucideExtra/FramerIcon.d.mts +2 -5
  1302. package/es/icons/lucideExtra/FramerIcon.mjs.map +1 -1
  1303. package/es/icons/lucideExtra/GithubIcon.d.mts +2 -5
  1304. package/es/icons/lucideExtra/GithubIcon.mjs.map +1 -1
  1305. package/es/icons/lucideExtra/GitlabIcon.d.mts +2 -5
  1306. package/es/icons/lucideExtra/GitlabIcon.mjs.map +1 -1
  1307. package/es/icons/lucideExtra/GlobeOffIcon.d.mts +2 -5
  1308. package/es/icons/lucideExtra/GlobeOffIcon.mjs.map +1 -1
  1309. package/es/icons/lucideExtra/GooglePlayIcon.d.mts +2 -5
  1310. package/es/icons/lucideExtra/GooglePlayIcon.mjs.map +1 -1
  1311. package/es/icons/lucideExtra/GroupBotIcon.d.mts +2 -5
  1312. package/es/icons/lucideExtra/GroupBotIcon.mjs.map +1 -1
  1313. package/es/icons/lucideExtra/GroupBotSquareIcon.d.mts +2 -5
  1314. package/es/icons/lucideExtra/GroupBotSquareIcon.mjs.map +1 -1
  1315. package/es/icons/lucideExtra/InstagramIcon.d.mts +2 -5
  1316. package/es/icons/lucideExtra/InstagramIcon.mjs.map +1 -1
  1317. package/es/icons/lucideExtra/LeftClickIcon.d.mts +2 -5
  1318. package/es/icons/lucideExtra/LeftClickIcon.mjs.map +1 -1
  1319. package/es/icons/lucideExtra/LeftDoubleClickIcon.d.mts +2 -5
  1320. package/es/icons/lucideExtra/LeftDoubleClickIcon.mjs.map +1 -1
  1321. package/es/icons/lucideExtra/LinkedinIcon.d.mts +2 -5
  1322. package/es/icons/lucideExtra/LinkedinIcon.mjs.map +1 -1
  1323. package/es/icons/lucideExtra/McpIcon.d.mts +2 -5
  1324. package/es/icons/lucideExtra/McpIcon.mjs.map +1 -1
  1325. package/es/icons/lucideExtra/NotionIcon.d.mts +2 -5
  1326. package/es/icons/lucideExtra/NotionIcon.mjs.map +1 -1
  1327. package/es/icons/lucideExtra/PocketIcon.d.mts +2 -5
  1328. package/es/icons/lucideExtra/PocketIcon.mjs.map +1 -1
  1329. package/es/icons/lucideExtra/ProviderIcon.d.mts +2 -5
  1330. package/es/icons/lucideExtra/ProviderIcon.mjs.map +1 -1
  1331. package/es/icons/lucideExtra/RailSymbolIcon.d.mts +2 -5
  1332. package/es/icons/lucideExtra/RailSymbolIcon.mjs.map +1 -1
  1333. package/es/icons/lucideExtra/RedditIcon.d.mts +2 -5
  1334. package/es/icons/lucideExtra/RedditIcon.mjs.map +1 -1
  1335. package/es/icons/lucideExtra/RightClickIcon.d.mts +2 -5
  1336. package/es/icons/lucideExtra/RightClickIcon.mjs.map +1 -1
  1337. package/es/icons/lucideExtra/RightDoubleClickIcon.d.mts +2 -5
  1338. package/es/icons/lucideExtra/RightDoubleClickIcon.mjs.map +1 -1
  1339. package/es/icons/lucideExtra/ShapesUploadIcon.d.mts +2 -5
  1340. package/es/icons/lucideExtra/ShapesUploadIcon.mjs.map +1 -1
  1341. package/es/icons/lucideExtra/SkillsIcon.d.mts +2 -5
  1342. package/es/icons/lucideExtra/SkillsIcon.mjs.map +1 -1
  1343. package/es/icons/lucideExtra/SlackIcon.d.mts +2 -5
  1344. package/es/icons/lucideExtra/SlackIcon.mjs.map +1 -1
  1345. package/es/icons/lucideExtra/ThinkIcon.d.mts +2 -5
  1346. package/es/icons/lucideExtra/ThinkIcon.mjs.map +1 -1
  1347. package/es/icons/lucideExtra/TreeDownRightIcon.d.mts +2 -5
  1348. package/es/icons/lucideExtra/TreeDownRightIcon.mjs.map +1 -1
  1349. package/es/icons/lucideExtra/TreeUpDownRightIcon.d.mts +2 -5
  1350. package/es/icons/lucideExtra/TreeUpDownRightIcon.mjs.map +1 -1
  1351. package/es/index.d.mts +165 -97
  1352. package/es/index.mjs +11 -11
  1353. package/es/mdx/Callout/index.d.mts +2 -2
  1354. package/es/mdx/Callout/index.mjs.map +1 -1
  1355. package/es/mdx/Callout/style.mjs.map +1 -1
  1356. package/es/mdx/Cards/Card.d.mts +4 -2
  1357. package/es/mdx/Cards/Card.mjs.map +1 -1
  1358. package/es/mdx/Cards/index.d.mts +2 -2
  1359. package/es/mdx/Cards/index.mjs.map +1 -1
  1360. package/es/mdx/Cards/style.mjs.map +1 -1
  1361. package/es/mdx/FileTree/File.d.mts +3 -2
  1362. package/es/mdx/FileTree/File.mjs.map +1 -1
  1363. package/es/mdx/FileTree/Folder.d.mts +3 -2
  1364. package/es/mdx/FileTree/Folder.mjs.map +1 -1
  1365. package/es/mdx/FileTree/index.d.mts +1 -2
  1366. package/es/mdx/FileTree/index.mjs.map +1 -1
  1367. package/es/mdx/FileTree/style.mjs.map +1 -1
  1368. package/es/mdx/Mdx/index.d.mts +3 -4
  1369. package/es/mdx/Mdx/index.mjs.map +1 -1
  1370. package/es/mdx/Steps/index.d.mts +1 -2
  1371. package/es/mdx/Steps/index.mjs.map +1 -1
  1372. package/es/mdx/Steps/style.mjs.map +1 -1
  1373. package/es/mdx/Tabs/Tab.d.mts +1 -2
  1374. package/es/mdx/Tabs/Tab.mjs.map +1 -1
  1375. package/es/mdx/Tabs/index.d.mts +3 -2
  1376. package/es/mdx/Tabs/index.mjs.map +1 -1
  1377. package/es/mdx/Tabs/style.mjs.map +1 -1
  1378. package/es/mdx/index.d.mts +15 -15
  1379. package/es/mdx/index.mjs +1 -1
  1380. package/es/mdx/mdxComponents/Citation/PopoverPanel.mjs.map +1 -1
  1381. package/es/mdx/mdxComponents/Citation/index.mjs.map +1 -1
  1382. package/es/mdx/mdxComponents/Citation/style.mjs.map +1 -1
  1383. package/es/mdx/mdxComponents/CodeBlock.d.mts +2 -2
  1384. package/es/mdx/mdxComponents/CodeBlock.mjs +1 -1
  1385. package/es/mdx/mdxComponents/CodeBlock.mjs.map +1 -1
  1386. package/es/mdx/mdxComponents/Image.d.mts +2 -2
  1387. package/es/mdx/mdxComponents/Image.mjs.map +1 -1
  1388. package/es/mdx/mdxComponents/Link.d.mts +1 -2
  1389. package/es/mdx/mdxComponents/Link.mjs.map +1 -1
  1390. package/es/mdx/mdxComponents/Pre.d.mts +5 -2
  1391. package/es/mdx/mdxComponents/Pre.mjs +2 -2
  1392. package/es/mdx/mdxComponents/Pre.mjs.map +1 -1
  1393. package/es/mdx/mdxComponents/Section.mjs.map +1 -1
  1394. package/es/mdx/mdxComponents/Video.d.mts +1 -2
  1395. package/es/mdx/mdxComponents/Video.mjs.map +1 -1
  1396. package/es/mdx/mdxComponents/index.d.mts +2 -3
  1397. package/es/mdx/mdxComponents/index.mjs.map +1 -1
  1398. package/es/mobile/ChatHeader/ChatHeader.mjs.map +1 -1
  1399. package/es/mobile/ChatHeader/ChatHeaderTitle.d.mts +2 -4
  1400. package/es/mobile/ChatHeader/ChatHeaderTitle.mjs.map +1 -1
  1401. package/es/mobile/ChatHeader/index.d.mts +2 -3
  1402. package/es/mobile/ChatHeader/index.mjs +1 -1
  1403. package/es/mobile/ChatHeader/style.mjs.map +1 -1
  1404. package/es/mobile/ChatHeader/type.d.mts +1 -1
  1405. package/es/mobile/ChatInputArea/ChatInputArea.mjs.map +1 -1
  1406. package/es/mobile/ChatInputArea/components/ChatSendButton.d.mts +2 -4
  1407. package/es/mobile/ChatInputArea/components/ChatSendButton.mjs.map +1 -1
  1408. package/es/mobile/ChatInputArea/index.d.mts +2 -3
  1409. package/es/mobile/ChatInputArea/index.mjs +1 -1
  1410. package/es/mobile/ChatInputArea/style.mjs.map +1 -1
  1411. package/es/mobile/ChatInputArea/type.d.mts +2 -1
  1412. package/es/mobile/SafeArea/SafeArea.d.mts +1 -2
  1413. package/es/mobile/SafeArea/SafeArea.mjs.map +1 -1
  1414. package/es/mobile/SafeArea/index.d.mts +2 -1
  1415. package/es/mobile/SafeArea/style.mjs.map +1 -1
  1416. package/es/mobile/SafeArea/type.d.mts +0 -1
  1417. package/es/mobile/TabBar/TabBar.d.mts +2 -4
  1418. package/es/mobile/TabBar/TabBar.mjs +2 -2
  1419. package/es/mobile/TabBar/TabBar.mjs.map +1 -1
  1420. package/es/mobile/TabBar/index.d.mts +2 -1
  1421. package/es/mobile/TabBar/style.mjs.map +1 -1
  1422. package/es/mobile/TabBar/type.d.mts +1 -1
  1423. package/es/mobile/index.d.mts +8 -6
  1424. package/es/node_modules/{@types → .bun/@types_hast@3.0.5/node_modules/@types}/hast/index.d.mts +3 -4
  1425. package/es/node_modules/{@types → .bun/@types_mdx@2.0.14/node_modules/@types}/mdx/types.d.mts +19 -12
  1426. package/es/node_modules/{@types → .bun/@types_unist@3.0.3/node_modules/@types}/unist/index.d.mts +2 -2
  1427. package/es/node_modules/{unist-util-is → .bun/unist-util-is@6.0.1/node_modules/unist-util-is}/lib/index.mjs +7 -2
  1428. package/es/node_modules/.bun/unist-util-is@6.0.1/node_modules/unist-util-is/lib/index.mjs.map +1 -0
  1429. package/es/node_modules/.bun/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/lib/color.node.mjs +12 -0
  1430. package/es/node_modules/.bun/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/lib/color.node.mjs.map +1 -0
  1431. package/es/node_modules/{unist-util-visit → .bun/unist-util-visit-parents@6.0.2}/node_modules/unist-util-visit-parents/lib/index.mjs +2 -2
  1432. package/es/node_modules/.bun/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/lib/index.mjs.map +1 -0
  1433. package/es/node_modules/{unist-util-visit → .bun/unist-util-visit@5.1.0/node_modules/unist-util-visit}/lib/index.mjs +3 -3
  1434. package/es/node_modules/.bun/unist-util-visit@5.1.0/node_modules/unist-util-visit/lib/index.mjs.map +1 -0
  1435. package/es/storybook/StoryBook/index.d.mts +3 -4
  1436. package/es/storybook/StoryBook/index.mjs +1 -1
  1437. package/es/storybook/StoryBook/index.mjs.map +1 -1
  1438. package/es/storybook/StoryBook/style.mjs.map +1 -1
  1439. package/es/storybook/index.mjs +1 -1
  1440. package/es/styles/classNames.mjs.map +1 -1
  1441. package/es/styles/customTheme.mjs.map +1 -1
  1442. package/es/styles/theme/algorithms/darkAlgorithm.mjs.map +1 -1
  1443. package/es/styles/theme/algorithms/lightAlgorithm.mjs.map +1 -1
  1444. package/es/styles/theme/antdTheme.mjs.map +1 -1
  1445. package/es/styles/theme/customStylish.d.mts +0 -1
  1446. package/es/styles/theme/customStylish.mjs.map +1 -1
  1447. package/es/styles/theme/customStylishStatic.d.mts +0 -1
  1448. package/es/styles/theme/customStylishStatic.mjs.map +1 -1
  1449. package/es/styles/theme/customToken.d.mts +0 -1
  1450. package/es/styles/theme/customToken.mjs.map +1 -1
  1451. package/es/styles/theme/generateColorPalette.d.mts +2 -10
  1452. package/es/styles/theme/generateColorPalette.mjs.map +1 -1
  1453. package/es/styles/theme/token/base.mjs.map +1 -1
  1454. package/es/styles/theme/token/dark.mjs.map +1 -1
  1455. package/es/styles/theme/token/light.mjs.map +1 -1
  1456. package/es/types/customToken.d.mts +4 -4
  1457. package/es/types/index.d.mts +0 -1
  1458. package/es/utils/blobToPng.mjs +1 -1
  1459. package/es/utils/blobToPng.mjs.map +1 -1
  1460. package/es/utils/copyToClipboard.mjs.map +1 -1
  1461. package/es/utils/destroyOnInvalidActiveTriggerElement.mjs.map +1 -1
  1462. package/es/utils/devSingleton.mjs.map +1 -1
  1463. package/es/utils/dom.mjs.map +1 -1
  1464. package/es/utils/downloadBlob.mjs.map +1 -1
  1465. package/es/utils/formatTime.mjs.map +1 -1
  1466. package/es/utils/genCdnUrl.d.mts +1 -6
  1467. package/es/utils/genCdnUrl.mjs +1 -1
  1468. package/es/utils/genCdnUrl.mjs.map +1 -1
  1469. package/es/utils/getNow.mjs.map +1 -1
  1470. package/es/utils/isDeepEqual.mjs.map +1 -1
  1471. package/es/utils/parseTrigger.d.mts +1 -0
  1472. package/es/utils/parseTrigger.mjs.map +1 -1
  1473. package/es/utils/placement.d.mts +1 -2
  1474. package/es/utils/placement.mjs.map +1 -1
  1475. package/es/utils/safeParseJSON.mjs.map +1 -1
  1476. package/es/utils/safeReadableColor.mjs.map +1 -1
  1477. package/es/utils/smoothCorners.d.mts +0 -1
  1478. package/es/utils/smoothCorners.mjs +1 -1
  1479. package/es/utils/smoothCorners.mjs.map +1 -1
  1480. package/package.json +70 -55
  1481. package/es/icons/lucideExtra/index.d.mts +0 -37
  1482. package/es/node_modules/unist-util-is/lib/index.mjs.map +0 -1
  1483. package/es/node_modules/unist-util-visit/lib/index.mjs.map +0 -1
  1484. package/es/node_modules/unist-util-visit/node_modules/unist-util-visit-parents/lib/color.node.mjs +0 -12
  1485. package/es/node_modules/unist-util-visit/node_modules/unist-util-visit-parents/lib/color.node.mjs.map +0 -1
  1486. package/es/node_modules/unist-util-visit/node_modules/unist-util-visit-parents/lib/index.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"olive.mjs","names":[],"sources":["../../../src/color/neutrals/olive.ts"],"sourcesContent":["import type { ColorScaleItem } from '../types';\n\nconst olive: ColorScaleItem = {\n dark: [\n '#000000',\n '#1a1c1b',\n '#232624',\n '#2d302e',\n '#383a38',\n '#424542',\n '#4d504d',\n '#585c58',\n '#646763',\n '#70736e',\n '#7c7f79',\n '#b9bab5',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(236, 255, 245, 0.11)',\n 'rgba(233, 253, 240, 0.15)',\n 'rgba(237, 253, 242, 0.19)',\n 'rgba(243, 252, 243, 0.23)',\n 'rgba(236, 246, 236, 0.28)',\n 'rgba(241, 250, 241, 0.32)',\n 'rgba(238, 249, 238, 0.37)',\n 'rgba(244, 251, 241, 0.41)',\n 'rgba(243, 250, 239, 0.46)',\n 'rgba(248, 254, 242, 0.5)',\n 'rgba(253, 255, 248, 0.73)',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#faf9f4',\n '#ecebe6',\n '#ddddd7',\n '#cfcfc9',\n '#c0c1bb',\n '#b2b4ae',\n '#a4a6a0',\n '#969993',\n '#898c86',\n '#7c7f79',\n '#484b48',\n '#111',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(155, 135, 35, 0.05)',\n 'rgba(65, 55, 5, 0.1)',\n 'rgba(43, 43, 5, 0.16)',\n 'rgba(37, 37, 10, 0.22)',\n 'rgba(22, 25, 3, 0.27)',\n 'rgba(14, 21, 2, 0.32)',\n 'rgba(16, 21, 5, 0.38)',\n 'rgba(11, 18, 4, 0.43)',\n 'rgba(9, 15, 3, 0.48)',\n 'rgba(8, 13, 2, 0.53)',\n 'rgba(1, 5, 1, 0.72)',\n 'rgba(1, 3, 2, 0.9)',\n ],\n};\n\nexport default olive;\n"],"mappings":";AAEA,MAAM,QAAwB;CAC5B,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACF"}
1
+ {"version":3,"file":"olive.mjs","names":[],"sources":["../../../src/color/neutrals/olive.ts"],"sourcesContent":["import type { ColorScaleItem } from '../types';\n\nconst olive: ColorScaleItem = {\n dark: [\n '#000000',\n '#1a1c1b',\n '#232624',\n '#2d302e',\n '#383a38',\n '#424542',\n '#4d504d',\n '#585c58',\n '#646763',\n '#70736e',\n '#7c7f79',\n '#b9bab5',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(236, 255, 245, 0.11)',\n 'rgba(233, 253, 240, 0.15)',\n 'rgba(237, 253, 242, 0.19)',\n 'rgba(243, 252, 243, 0.23)',\n 'rgba(236, 246, 236, 0.28)',\n 'rgba(241, 250, 241, 0.32)',\n 'rgba(238, 249, 238, 0.37)',\n 'rgba(244, 251, 241, 0.41)',\n 'rgba(243, 250, 239, 0.46)',\n 'rgba(248, 254, 242, 0.5)',\n 'rgba(253, 255, 248, 0.73)',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#faf9f4',\n '#ecebe6',\n '#ddddd7',\n '#cfcfc9',\n '#c0c1bb',\n '#b2b4ae',\n '#a4a6a0',\n '#969993',\n '#898c86',\n '#7c7f79',\n '#484b48',\n '#111',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(155, 135, 35, 0.05)',\n 'rgba(65, 55, 5, 0.1)',\n 'rgba(43, 43, 5, 0.16)',\n 'rgba(37, 37, 10, 0.22)',\n 'rgba(22, 25, 3, 0.27)',\n 'rgba(14, 21, 2, 0.32)',\n 'rgba(16, 21, 5, 0.38)',\n 'rgba(11, 18, 4, 0.43)',\n 'rgba(9, 15, 3, 0.48)',\n 'rgba(8, 13, 2, 0.53)',\n 'rgba(1, 5, 1, 0.72)',\n 'rgba(1, 3, 2, 0.9)',\n ],\n};\n\nexport default olive;\n"],"mappings":";AAEA,MAAM,QAAwB;CAC5B,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -1,7 +1,6 @@
1
1
  import { ColorScaleItem } from "../types.mjs";
2
-
3
2
  //#region src/color/neutrals/sage.d.ts
4
3
  declare const sage: ColorScaleItem;
5
4
  //#endregion
6
- export { sage };
5
+ export { sage as default };
7
6
  //# sourceMappingURL=sage.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sage.mjs","names":[],"sources":["../../../src/color/neutrals/sage.ts"],"sourcesContent":["import type { ColorScaleItem } from '../types';\n\nconst sage: ColorScaleItem = {\n dark: [\n '#000000',\n '#1a1b1c',\n '#232526',\n '#2d2f30',\n '#383a3a',\n '#424545',\n '#4d5050',\n '#585c5c',\n '#636766',\n '#6e7371',\n '#797f7c',\n '#b5bab6',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(236, 246, 255, 0.11)',\n 'rgba(233, 246, 253, 0.15)',\n 'rgba(237, 248, 253, 0.19)',\n 'rgba(243, 252, 252, 0.23)',\n 'rgba(236, 246, 246, 0.28)',\n 'rgba(241, 250, 250, 0.32)',\n 'rgba(238, 249, 249, 0.37)',\n 'rgba(241, 251, 248, 0.41)',\n 'rgba(239, 250, 246, 0.46)',\n 'rgba(242, 254, 248, 0.5)',\n 'rgba(248, 255, 250, 0.73)',\n 'rgba(255, 255, 255, 1)',\n ],\n light: [\n '#ffffff',\n '#f5faf4',\n '#e7ece6',\n '#d7ddd7',\n '#c9cfc9',\n '#bbc1bc',\n '#aeb4b0',\n '#a0a6a2',\n '#939996',\n '#868c89',\n '#797f7c',\n '#484b4b',\n '#111111',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(55, 155, 35, 0.05)',\n 'rgba(15, 65, 5, 0.1)',\n 'rgba(5, 43, 5, 0.16)',\n 'rgba(10, 37, 10, 0.22)',\n 'rgba(3, 25, 6, 0.27)',\n 'rgba(2, 21, 9, 0.32)',\n 'rgba(5, 21, 10, 0.38)',\n 'rgba(4, 18, 11, 0.43)',\n 'rgba(3, 15, 9, 0.48)',\n 'rgba(2, 13, 7, 0.53)',\n 'rgba(1, 5, 5, 0.72)',\n 'rgba(1, 2, 3, 0.9)',\n ],\n};\n\nexport default sage;\n"],"mappings":";AAEA,MAAM,OAAuB;CAC3B,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACF"}
1
+ {"version":3,"file":"sage.mjs","names":[],"sources":["../../../src/color/neutrals/sage.ts"],"sourcesContent":["import type { ColorScaleItem } from '../types';\n\nconst sage: ColorScaleItem = {\n dark: [\n '#000000',\n '#1a1b1c',\n '#232526',\n '#2d2f30',\n '#383a3a',\n '#424545',\n '#4d5050',\n '#585c5c',\n '#636766',\n '#6e7371',\n '#797f7c',\n '#b5bab6',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(236, 246, 255, 0.11)',\n 'rgba(233, 246, 253, 0.15)',\n 'rgba(237, 248, 253, 0.19)',\n 'rgba(243, 252, 252, 0.23)',\n 'rgba(236, 246, 246, 0.28)',\n 'rgba(241, 250, 250, 0.32)',\n 'rgba(238, 249, 249, 0.37)',\n 'rgba(241, 251, 248, 0.41)',\n 'rgba(239, 250, 246, 0.46)',\n 'rgba(242, 254, 248, 0.5)',\n 'rgba(248, 255, 250, 0.73)',\n 'rgba(255, 255, 255, 1)',\n ],\n light: [\n '#ffffff',\n '#f5faf4',\n '#e7ece6',\n '#d7ddd7',\n '#c9cfc9',\n '#bbc1bc',\n '#aeb4b0',\n '#a0a6a2',\n '#939996',\n '#868c89',\n '#797f7c',\n '#484b4b',\n '#111111',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(55, 155, 35, 0.05)',\n 'rgba(15, 65, 5, 0.1)',\n 'rgba(5, 43, 5, 0.16)',\n 'rgba(10, 37, 10, 0.22)',\n 'rgba(3, 25, 6, 0.27)',\n 'rgba(2, 21, 9, 0.32)',\n 'rgba(5, 21, 10, 0.38)',\n 'rgba(4, 18, 11, 0.43)',\n 'rgba(3, 15, 9, 0.48)',\n 'rgba(2, 13, 7, 0.53)',\n 'rgba(1, 5, 5, 0.72)',\n 'rgba(1, 2, 3, 0.9)',\n ],\n};\n\nexport default sage;\n"],"mappings":";AAEA,MAAM,OAAuB;CAC3B,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -1,7 +1,6 @@
1
1
  import { ColorScaleItem } from "../types.mjs";
2
-
3
2
  //#region src/color/neutrals/sand.d.ts
4
3
  declare const sand: ColorScaleItem;
5
4
  //#endregion
6
- export { sand };
5
+ export { sand as default };
7
6
  //# sourceMappingURL=sand.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sand.mjs","names":[],"sources":["../../../src/color/neutrals/sand.ts"],"sourcesContent":["import type { ColorScaleItem } from '../types';\n\nconst sand: ColorScaleItem = {\n dark: [\n '#000000',\n '#1c1c18',\n '#262521',\n '#30302b',\n '#3a3a35',\n '#45453f',\n '#505049',\n '#5c5b54',\n '#67675f',\n '#73726a',\n '#7f7e76',\n '#bcbab2',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(255, 255, 218, 0.11)',\n 'rgba(253, 247, 220, 0.15)',\n 'rgba(253, 253, 226, 0.19)',\n 'rgba(252, 252, 230, 0.23)',\n 'rgba(246, 246, 225, 0.28)',\n 'rgba(250, 250, 228, 0.32)',\n 'rgba(249, 246, 227, 0.37)',\n 'rgba(251, 251, 232, 0.41)',\n 'rgba(250, 248, 230, 0.46)',\n 'rgba(254, 252, 236, 0.5)',\n 'rgba(254, 251, 241, 0.74)',\n 'rgba(255, 252, 245, 0.99)',\n ],\n light: [\n '#ffffff',\n '#fcf9f3',\n '#edebe4',\n '#dfddd5',\n '#d1cfc7',\n '#c3c1b9',\n '#b5b3ab',\n '#a7a69d',\n '#999890',\n '#8c8b83',\n '#7f7e76',\n '#4b4a44',\n '#111',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(195, 135, 15, 0.05)',\n 'rgba(91, 73, 10, 0.11)',\n 'rgba(67, 55, 8, 0.17)',\n 'rgba(46, 37, 0, 0.22)',\n 'rgba(41, 34, 5, 0.28)',\n 'rgba(31, 25, 0, 0.33)',\n 'rgba(29, 27, 4, 0.39)',\n 'rgba(23, 21, 3, 0.44)',\n 'rgba(20, 18, 2, 0.49)',\n 'rgba(18, 16, 1, 0.54)',\n 'rgba(12, 10, 2, 0.74)',\n 'rgba(6, 6, 1, 0.91)',\n ],\n};\n\nexport default sand;\n"],"mappings":";AAEA,MAAM,OAAuB;CAC3B,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACF"}
1
+ {"version":3,"file":"sand.mjs","names":[],"sources":["../../../src/color/neutrals/sand.ts"],"sourcesContent":["import type { ColorScaleItem } from '../types';\n\nconst sand: ColorScaleItem = {\n dark: [\n '#000000',\n '#1c1c18',\n '#262521',\n '#30302b',\n '#3a3a35',\n '#45453f',\n '#505049',\n '#5c5b54',\n '#67675f',\n '#73726a',\n '#7f7e76',\n '#bcbab2',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(255, 255, 218, 0.11)',\n 'rgba(253, 247, 220, 0.15)',\n 'rgba(253, 253, 226, 0.19)',\n 'rgba(252, 252, 230, 0.23)',\n 'rgba(246, 246, 225, 0.28)',\n 'rgba(250, 250, 228, 0.32)',\n 'rgba(249, 246, 227, 0.37)',\n 'rgba(251, 251, 232, 0.41)',\n 'rgba(250, 248, 230, 0.46)',\n 'rgba(254, 252, 236, 0.5)',\n 'rgba(254, 251, 241, 0.74)',\n 'rgba(255, 252, 245, 0.99)',\n ],\n light: [\n '#ffffff',\n '#fcf9f3',\n '#edebe4',\n '#dfddd5',\n '#d1cfc7',\n '#c3c1b9',\n '#b5b3ab',\n '#a7a69d',\n '#999890',\n '#8c8b83',\n '#7f7e76',\n '#4b4a44',\n '#111',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(195, 135, 15, 0.05)',\n 'rgba(91, 73, 10, 0.11)',\n 'rgba(67, 55, 8, 0.17)',\n 'rgba(46, 37, 0, 0.22)',\n 'rgba(41, 34, 5, 0.28)',\n 'rgba(31, 25, 0, 0.33)',\n 'rgba(29, 27, 4, 0.39)',\n 'rgba(23, 21, 3, 0.44)',\n 'rgba(20, 18, 2, 0.49)',\n 'rgba(18, 16, 1, 0.54)',\n 'rgba(12, 10, 2, 0.74)',\n 'rgba(6, 6, 1, 0.91)',\n ],\n};\n\nexport default sand;\n"],"mappings":";AAEA,MAAM,OAAuB;CAC3B,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -1,7 +1,6 @@
1
1
  import { ColorScaleItem } from "../types.mjs";
2
-
3
2
  //#region src/color/neutrals/slate.d.ts
4
3
  declare const slate: ColorScaleItem;
5
4
  //#endregion
6
- export { slate };
5
+ export { slate as default };
7
6
  //# sourceMappingURL=slate.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slate.mjs","names":[],"sources":["../../../src/color/neutrals/slate.ts"],"sourcesContent":["import type { ColorScaleItem } from '../types';\n\nconst slate: ColorScaleItem = {\n dark: [\n '#000000',\n '#1b1c1d',\n '#242527',\n '#2e2f32',\n '#383a3c',\n '#434547',\n '#4e5052',\n '#595b5e',\n '#64676a',\n '#707276',\n '#7b7e82',\n '#b8babc',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(225, 233, 242, 0.12)',\n 'rgba(225, 231, 244, 0.16)',\n 'rgba(230, 235, 250, 0.2)',\n 'rgba(233, 242, 250, 0.24)',\n 'rgba(239, 246, 254, 0.28)',\n 'rgba(236, 242, 248, 0.33)',\n 'rgba(241, 246, 254, 0.37)',\n 'rgba(238, 245, 252, 0.42)',\n 'rgba(238, 243, 251, 0.47)',\n 'rgba(241, 247, 255, 0.51)',\n 'rgba(249, 251, 254, 0.74)',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#f9f9fa',\n '#ebebec',\n '#dcddde',\n '#cecfd0',\n '#bfc1c3',\n '#b1b3b5',\n '#a4a6a8',\n '#96989b',\n '#898b8e',\n '#7b7e82',\n '#484a4d',\n '#111',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(55, 55, 88, 0.03)',\n 'rgba(5, 5, 17, 0.08)',\n 'rgba(5, 12, 19, 0.14)',\n 'rgba(10, 15, 20, 0.2)',\n 'rgba(9, 17, 24, 0.26)',\n 'rgba(3, 10, 16, 0.31)',\n 'rgba(2, 8, 13, 0.36)',\n 'rgba(5, 10, 17, 0.42)',\n 'rgba(4, 8, 15, 0.47)',\n 'rgba(1, 7, 15, 0.52)',\n 'rgba(1, 4, 8, 0.72)',\n 'rgba(2, 3, 4, 0.9)',\n ],\n};\n\nexport default slate;\n"],"mappings":";AAEA,MAAM,QAAwB;CAC5B,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACF"}
1
+ {"version":3,"file":"slate.mjs","names":[],"sources":["../../../src/color/neutrals/slate.ts"],"sourcesContent":["import type { ColorScaleItem } from '../types';\n\nconst slate: ColorScaleItem = {\n dark: [\n '#000000',\n '#1b1c1d',\n '#242527',\n '#2e2f32',\n '#383a3c',\n '#434547',\n '#4e5052',\n '#595b5e',\n '#64676a',\n '#707276',\n '#7b7e82',\n '#b8babc',\n '#ffffff',\n ],\n darkA: [\n 'rgba(255, 255, 255, 0.02)',\n 'rgba(225, 233, 242, 0.12)',\n 'rgba(225, 231, 244, 0.16)',\n 'rgba(230, 235, 250, 0.2)',\n 'rgba(233, 242, 250, 0.24)',\n 'rgba(239, 246, 254, 0.28)',\n 'rgba(236, 242, 248, 0.33)',\n 'rgba(241, 246, 254, 0.37)',\n 'rgba(238, 245, 252, 0.42)',\n 'rgba(238, 243, 251, 0.47)',\n 'rgba(241, 247, 255, 0.51)',\n 'rgba(249, 251, 254, 0.74)',\n '#ffffff',\n ],\n light: [\n '#ffffff',\n '#f9f9fa',\n '#ebebec',\n '#dcddde',\n '#cecfd0',\n '#bfc1c3',\n '#b1b3b5',\n '#a4a6a8',\n '#96989b',\n '#898b8e',\n '#7b7e82',\n '#484a4d',\n '#111',\n ],\n lightA: [\n 'rgba(0, 0, 0, 0.015)',\n 'rgba(55, 55, 88, 0.03)',\n 'rgba(5, 5, 17, 0.08)',\n 'rgba(5, 12, 19, 0.14)',\n 'rgba(10, 15, 20, 0.2)',\n 'rgba(9, 17, 24, 0.26)',\n 'rgba(3, 10, 16, 0.31)',\n 'rgba(2, 8, 13, 0.36)',\n 'rgba(5, 10, 17, 0.42)',\n 'rgba(4, 8, 15, 0.47)',\n 'rgba(1, 7, 15, 0.52)',\n 'rgba(1, 4, 8, 0.72)',\n 'rgba(2, 3, 4, 0.9)',\n ],\n};\n\nexport default slate;\n"],"mappings":";AAEA,MAAM,QAAwB;CAC5B,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/eslint/index.ts"],"sourcesContent":["const DEPRECATED_UI_COMPONENTS = ['Button', 'Modal', 'Segmented', 'Select', 'Tabs'];\n\nexport const restrictedImports = {\n rules: {\n 'no-restricted-imports': [\n 'error',\n {\n paths: [\n {\n importNames: DEPRECATED_UI_COMPONENTS,\n message:\n 'The antd-based wrapper is deprecated. Import from \"@lobehub/ui/base-ui\" instead.',\n name: '@lobehub/ui',\n },\n {\n importNames: ['createStyles'],\n message:\n '`createStyles` is banned in this project. Use `createStaticStyles` from \"antd-style\" instead.',\n name: 'antd-style',\n },\n {\n importNames: DEPRECATED_UI_COMPONENTS,\n message:\n 'Direct antd import is deprecated. Import from \"@lobehub/ui\" or \"@lobehub/ui/base-ui\" instead.',\n name: 'antd',\n },\n ],\n },\n ],\n },\n};\n\nexport default [restrictedImports];\n"],"mappings":";AAAA,MAAM,2BAA2B;CAAC;CAAU;CAAS;CAAa;CAAU;CAAO;AAEnF,MAAa,oBAAoB,EAC/B,OAAO,EACL,yBAAyB,CACvB,SACA,EACE,OAAO;CACL;EACE,aAAa;EACb,SACE;EACF,MAAM;EACP;CACD;EACE,aAAa,CAAC,eAAe;EAC7B,SACE;EACF,MAAM;EACP;CACD;EACE,aAAa;EACb,SACE;EACF,MAAM;EACP;CACF,EACF,CACF,EACF,EACF;AAED,IAAA,iBAAe,CAAC,kBAAkB"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/eslint/index.ts"],"sourcesContent":["const DEPRECATED_UI_COMPONENTS = ['Button', 'Modal', 'Segmented', 'Select', 'Tabs'];\n\nexport const restrictedImports = {\n rules: {\n 'no-restricted-imports': [\n 'error',\n {\n paths: [\n {\n importNames: DEPRECATED_UI_COMPONENTS,\n message:\n 'The antd-based wrapper is deprecated. Import from \"@lobehub/ui/base-ui\" instead.',\n name: '@lobehub/ui',\n },\n {\n importNames: ['createStyles'],\n message:\n '`createStyles` is banned in this project. Use `createStaticStyles` from \"antd-style\" instead.',\n name: 'antd-style',\n },\n {\n importNames: DEPRECATED_UI_COMPONENTS,\n message:\n 'Direct antd import is deprecated. Import from \"@lobehub/ui\" or \"@lobehub/ui/base-ui\" instead.',\n name: 'antd',\n },\n ],\n },\n ],\n },\n};\n\nexport default [restrictedImports];\n"],"mappings":";AAAA,MAAM,2BAA2B;CAAC;CAAU;CAAS;CAAa;CAAU;AAAM;AAElF,MAAa,oBAAoB,EAC/B,OAAO,EACL,yBAAyB,CACvB,SACA,EACE,OAAO;CACL;EACE,aAAa;EACb,SACE;EACF,MAAM;CACR;CACA;EACE,aAAa,CAAC,cAAc;EAC5B,SACE;EACF,MAAM;CACR;CACA;EACE,aAAa;EACb,SACE;EACF,MAAM;CACR;AACF,EACF,CACF,EACF,EACF;AAEA,IAAA,iBAAe,CAAC,iBAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCopied.mjs","names":[],"sources":["../../src/hooks/useCopied.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nexport const useCopied = () => {\n const [copied, setCopy] = useState(false);\n\n useEffect(() => {\n if (!copied) return;\n\n const timer = setTimeout(() => {\n setCopy(false);\n }, 2000);\n\n return () => {\n clearTimeout(timer);\n };\n }, [copied]);\n\n const setCopied = useCallback(() => setCopy(true), []);\n\n return useMemo(() => ({ copied, setCopied }), [copied]);\n};\n"],"mappings":";;;AAIA,MAAa,kBAAkB;CAC7B,MAAM,CAAC,QAAQ,WAAW,SAAS,MAAM;AAEzC,iBAAgB;AACd,MAAI,CAAC,OAAQ;EAEb,MAAM,QAAQ,iBAAiB;AAC7B,WAAQ,MAAM;KACb,IAAK;AAER,eAAa;AACX,gBAAa,MAAM;;IAEpB,CAAC,OAAO,CAAC;CAEZ,MAAM,YAAY,kBAAkB,QAAQ,KAAK,EAAE,EAAE,CAAC;AAEtD,QAAO,eAAe;EAAE;EAAQ;EAAW,GAAG,CAAC,OAAO,CAAC"}
1
+ {"version":3,"file":"useCopied.mjs","names":[],"sources":["../../src/hooks/useCopied.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nexport const useCopied = () => {\n const [copied, setCopy] = useState(false);\n\n useEffect(() => {\n if (!copied) return;\n\n const timer = setTimeout(() => {\n setCopy(false);\n }, 2000);\n\n return () => {\n clearTimeout(timer);\n };\n }, [copied]);\n\n const setCopied = useCallback(() => setCopy(true), []);\n\n return useMemo(() => ({ copied, setCopied }), [copied]);\n};\n"],"mappings":";;;AAIA,MAAa,kBAAkB;CAC7B,MAAM,CAAC,QAAQ,WAAW,SAAS,KAAK;CAExC,gBAAgB;EACd,IAAI,CAAC,QAAQ;EAEb,MAAM,QAAQ,iBAAiB;GAC7B,QAAQ,KAAK;EACf,GAAG,GAAI;EAEP,aAAa;GACX,aAAa,KAAK;EACpB;CACF,GAAG,CAAC,MAAM,CAAC;CAEX,MAAM,YAAY,kBAAkB,QAAQ,IAAI,GAAG,CAAC,CAAC;CAErD,OAAO,eAAe;EAAE;EAAQ;CAAU,IAAI,CAAC,MAAM,CAAC;AACxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"useEventCallback.mjs","names":[],"sources":["../../src/hooks/useEventCallback.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useRef } from 'react';\n\nexport function useEventCallback<T extends (...args: any[]) => any>(fn: T): T {\n const ref = useRef(fn);\n\n useLayoutEffect(() => {\n ref.current = fn;\n });\n\n return useCallback((...args: Parameters<T>) => {\n return ref.current(...args);\n }, []) as T;\n}\n"],"mappings":";;AAEA,SAAgB,iBAAoD,IAAU;CAC5E,MAAM,MAAM,OAAO,GAAG;AAEtB,uBAAsB;AACpB,MAAI,UAAU;GACd;AAEF,QAAO,aAAa,GAAG,SAAwB;AAC7C,SAAO,IAAI,QAAQ,GAAG,KAAK;IAC1B,EAAE,CAAC"}
1
+ {"version":3,"file":"useEventCallback.mjs","names":[],"sources":["../../src/hooks/useEventCallback.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useRef } from 'react';\n\nexport function useEventCallback<T extends (...args: any[]) => any>(fn: T): T {\n const ref = useRef(fn);\n\n useLayoutEffect(() => {\n ref.current = fn;\n });\n\n return useCallback((...args: Parameters<T>) => {\n return ref.current(...args);\n }, []) as T;\n}\n"],"mappings":";;AAEA,SAAgB,iBAAoD,IAAU;CAC5E,MAAM,MAAM,OAAO,EAAE;CAErB,sBAAsB;EACpB,IAAI,UAAU;CAChB,CAAC;CAED,OAAO,aAAa,GAAG,SAAwB;EAC7C,OAAO,IAAI,QAAQ,GAAG,IAAI;CAC5B,GAAG,CAAC,CAAC;AACP"}
@@ -20,6 +20,6 @@ const useFloatingLayer = () => {
20
20
  */
21
21
  const FloatingLayerProvider = FloatingLayerContext.Provider;
22
22
  //#endregion
23
- export { FloatingLayerProvider, useFloatingLayer };
23
+ export { FloatingLayerContext, FloatingLayerProvider, useFloatingLayer };
24
24
 
25
25
  //# sourceMappingURL=useFloatingLayer.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFloatingLayer.mjs","names":[],"sources":["../../src/hooks/useFloatingLayer.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use } from 'react';\n\n/**\n * Context for managing floating layer stacking.\n * When a component like Popover opens, it can provide its container\n * so that nested floating elements (like Tooltip) can render into it,\n * avoiding z-index stacking context issues.\n */\nexport const FloatingLayerContext = createContext<HTMLElement | null>(null);\n\n/**\n * Hook to get the current floating layer container.\n * Returns the nearest floating layer container from context, or null if none exists.\n */\nexport const useFloatingLayer = (): HTMLElement | null => {\n return use(FloatingLayerContext);\n};\n\n/**\n * Provider component for floating layer context.\n */\nexport const FloatingLayerProvider = FloatingLayerContext.Provider;\n"],"mappings":";;;;;;;;;AAUA,MAAa,uBAAuB,cAAkC,KAAK;;;;;AAM3E,MAAa,yBAA6C;AACxD,QAAO,IAAI,qBAAqB;;;;;AAMlC,MAAa,wBAAwB,qBAAqB"}
1
+ {"version":3,"file":"useFloatingLayer.mjs","names":[],"sources":["../../src/hooks/useFloatingLayer.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use } from 'react';\n\n/**\n * Context for managing floating layer stacking.\n * When a component like Popover opens, it can provide its container\n * so that nested floating elements (like Tooltip) can render into it,\n * avoiding z-index stacking context issues.\n */\nexport const FloatingLayerContext = createContext<HTMLElement | null>(null);\n\n/**\n * Hook to get the current floating layer container.\n * Returns the nearest floating layer container from context, or null if none exists.\n */\nexport const useFloatingLayer = (): HTMLElement | null => {\n return use(FloatingLayerContext);\n};\n\n/**\n * Provider component for floating layer context.\n */\nexport const FloatingLayerProvider = FloatingLayerContext.Provider;\n"],"mappings":";;;;;;;;;AAUA,MAAa,uBAAuB,cAAkC,IAAI;;;;;AAM1E,MAAa,yBAA6C;CACxD,OAAO,IAAI,oBAAoB;AACjC;;;;AAKA,MAAa,wBAAwB,qBAAqB"}
@@ -4,6 +4,8 @@ import { getCodeLanguageByInput } from "../Highlighter/const.mjs";
4
4
  import { useEffect, useMemo, useState } from "react";
5
5
  import { transformerNotationDiff, transformerNotationErrorLevel, transformerNotationFocus, transformerNotationHighlight, transformerNotationWordHighlight } from "@shikijs/transformers";
6
6
  import { Md5 } from "ts-md5";
7
+ //#region src/hooks/useHighlight.ts
8
+ const MD5_LENGTH_THRESHOLD = 1e4;
7
9
  const highlightCache = /* @__PURE__ */ new Map();
8
10
  const MAX_CACHE_SIZE = 1e3;
9
11
  const cleanupCache = () => {
@@ -44,10 +46,11 @@ const useHighlight = (text, { language, enableTransformer, theme: builtinTheme,
44
46
  }, [enableTransformer]);
45
47
  const cacheKey = useMemo(() => {
46
48
  if (streaming) return null;
49
+ const hash = safeText.length < 1e4 ? safeText : Md5.hashStr(safeText);
47
50
  return [
48
51
  matchedLanguage,
49
52
  builtinTheme,
50
- safeText.length < 1e4 ? safeText : Md5.hashStr(safeText)
53
+ hash
51
54
  ].filter(Boolean).join("-");
52
55
  }, [
53
56
  safeText,
@@ -123,6 +126,6 @@ const useHighlight = (text, { language, enableTransformer, theme: builtinTheme,
123
126
  return data || "";
124
127
  };
125
128
  //#endregion
126
- export { shikiModulePromise, useHighlight };
129
+ export { MD5_LENGTH_THRESHOLD, escapeHtml, shikiModulePromise, useHighlight };
127
130
 
128
131
  //# sourceMappingURL=useHighlight.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useHighlight.mjs","names":["lobeTheme"],"sources":["../../src/hooks/useHighlight.ts"],"sourcesContent":["'use client';\n\nimport {\n transformerNotationDiff,\n transformerNotationErrorLevel,\n transformerNotationFocus,\n transformerNotationHighlight,\n transformerNotationWordHighlight,\n} from '@shikijs/transformers';\nimport { type CSSProperties, useEffect, useMemo, useState } from 'react';\nimport type { BuiltinTheme, CodeToHastOptions, ThemedToken } from 'shiki';\nimport { Md5 } from 'ts-md5';\n\nimport { getCodeLanguageByInput } from '@/Highlighter/const';\nimport lobeTheme from '@/Highlighter/theme/lobe-theme';\n\n// Application-level cache to avoid repeated calculations\nexport const MD5_LENGTH_THRESHOLD = 10_000; // Use async MD5 for text exceeding this length\n\nexport type StreamingHighlightResult = {\n lines: ThemedToken[][];\n preStyle?: CSSProperties;\n};\n\n// Application-level cache for highlighted HTML\n// Key: cacheKey string, Value: Promise<string>\nconst highlightCache = new Map<string, Promise<string>>();\n\n// Maximum cache size to prevent memory leaks\nconst MAX_CACHE_SIZE = 1000;\n\n// Clean up old cache entries when limit is reached\nconst cleanupCache = () => {\n if (highlightCache.size > MAX_CACHE_SIZE) {\n // Remove oldest 20% of entries\n const entriesToRemove = Math.floor(MAX_CACHE_SIZE * 0.2);\n const keysToRemove = Array.from(highlightCache.keys()).slice(0, entriesToRemove);\n for (const key of keysToRemove) {\n highlightCache.delete(key);\n }\n }\n};\n\nexport type ICodeToHtml = (code: string, options: CodeToHastOptions) => Promise<string>;\nexport type ShikiModule = typeof import('shiki');\n\n// Use codeToHtml shorthand for better performance\n// It automatically manages highlighter instances and loads themes/languages on-demand\nlet codeToHtmlPromise: Promise<ICodeToHtml | null> | null = null;\n\nconst loadCodeToHtml = (): Promise<ICodeToHtml | null> => {\n if (typeof window === 'undefined') return Promise.resolve(null);\n\n if (!codeToHtmlPromise) {\n codeToHtmlPromise = import('shiki').then((mod) => mod.codeToHtml ?? null);\n }\n\n return codeToHtmlPromise;\n};\n\n// Export shikiModulePromise for useStreamHighlight compatibility\nconst loadShikiModule = (): Promise<ShikiModule | null> => {\n if (typeof window === 'undefined') return Promise.resolve(null);\n return import('shiki');\n};\nexport const shikiModulePromise = loadShikiModule();\n\n// Helper function: Safe HTML escaping\nexport const escapeHtml = (str: string): string => {\n return str\n .replaceAll('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\n .replaceAll('\"', '&quot;')\n .replaceAll(\"'\", '&#039;');\n};\n\n// Main highlight component - optimized version without SWR\nconst customThemes = {\n 'lobe-theme': lobeTheme,\n};\n\nexport const useHighlight = (\n text: string,\n {\n language,\n enableTransformer,\n theme: builtinTheme,\n streaming,\n }: { enableTransformer?: boolean; language: string; streaming?: boolean; theme?: BuiltinTheme },\n): string => {\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 // Optimize transformer creation\n const transformers = useMemo(() => {\n if (!enableTransformer) return;\n return [\n transformerNotationDiff(),\n transformerNotationHighlight(),\n transformerNotationWordHighlight(),\n transformerNotationFocus(),\n transformerNotationErrorLevel(),\n ];\n }, [enableTransformer]);\n\n // Build cache key\n const cacheKey = useMemo((): string | null => {\n if (streaming) return null;\n // Use hash for long text\n const hash = safeText.length < MD5_LENGTH_THRESHOLD ? safeText : Md5.hashStr(safeText);\n return [matchedLanguage, builtinTheme, hash].filter(Boolean).join('-');\n }, [safeText, matchedLanguage, builtinTheme, streaming]);\n\n const [data, setData] = useState<string | undefined>();\n\n useEffect(() => {\n if (!cacheKey) {\n setData(undefined);\n return;\n }\n\n // Check cache first\n const cachedPromise = highlightCache.get(cacheKey);\n if (cachedPromise) {\n cachedPromise\n .then((html) => {\n setData(html);\n })\n .catch(() => {\n // Silently handle errors, fallback will be handled in the promise\n });\n return;\n }\n\n // Create new promise for highlighting\n // Using codeToHtml shorthand: automatically loads themes/languages on-demand\n const highlightPromise = (async (): Promise<string> => {\n try {\n // Try full rendering with transformers\n const shikiModule = await shikiModulePromise;\n if (!shikiModule) return safeText;\n\n const effectiveTheme = builtinTheme || 'lobe-theme';\n\n // Load custom theme if using slack-dark or slack-ochin\n if (!builtinTheme && effectiveTheme === 'lobe-theme') {\n const customTheme = customThemes[effectiveTheme];\n if (customTheme) {\n // Use getSingletonHighlighter to load custom theme\n const highlighter = await shikiModule.getSingletonHighlighter({\n langs: [matchedLanguage],\n themes: [customTheme as any],\n });\n\n const html = await highlighter.codeToHtml(safeText, {\n lang: matchedLanguage,\n theme: effectiveTheme,\n transformers,\n });\n\n return html;\n }\n }\n\n // Fallback to codeToHtml for builtin themes\n const codeToHtml = await loadCodeToHtml();\n if (!codeToHtml) return safeText;\n\n const html = await codeToHtml(safeText, {\n lang: matchedLanguage,\n theme: effectiveTheme,\n transformers,\n });\n\n return html;\n } catch (error_) {\n console.error('Advanced rendering failed:', error_);\n\n try {\n // Try simple rendering (without transformers)\n const codeToHtml = await loadCodeToHtml();\n if (!codeToHtml) return safeText;\n const html = await codeToHtml(safeText, {\n lang: matchedLanguage,\n theme: 'lobe-theme',\n });\n return html;\n } catch {\n // Fallback to plain text\n const fallbackHtml = `<pre class=\"fallback\"><code>${escapeHtml(safeText)}</code></pre>`;\n return fallbackHtml;\n }\n }\n })();\n\n // Cache the promise\n highlightCache.set(cacheKey, highlightPromise);\n cleanupCache();\n\n // Handle promise result\n highlightPromise\n .then((html) => {\n // Only update if this is still the current cache key\n if (highlightCache.get(cacheKey) === highlightPromise) {\n setData(html);\n }\n })\n .catch(() => {\n // Remove failed promise from cache\n if (highlightCache.get(cacheKey) === highlightPromise) {\n highlightCache.delete(cacheKey);\n }\n });\n }, [cacheKey, safeText, matchedLanguage, builtinTheme, transformers, customThemes]);\n\n return data || '';\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"useHighlight.mjs","names":["lobeTheme"],"sources":["../../src/hooks/useHighlight.ts"],"sourcesContent":["'use client';\n\nimport {\n transformerNotationDiff,\n transformerNotationErrorLevel,\n transformerNotationFocus,\n transformerNotationHighlight,\n transformerNotationWordHighlight,\n} from '@shikijs/transformers';\nimport { type CSSProperties, useEffect, useMemo, useState } from 'react';\nimport type { BuiltinTheme, CodeToHastOptions, ThemedToken } from 'shiki';\nimport { Md5 } from 'ts-md5';\n\nimport { getCodeLanguageByInput } from '@/Highlighter/const';\nimport lobeTheme from '@/Highlighter/theme/lobe-theme';\n\n// Application-level cache to avoid repeated calculations\nexport const MD5_LENGTH_THRESHOLD = 10_000; // Use async MD5 for text exceeding this length\n\nexport type StreamingHighlightResult = {\n lines: ThemedToken[][];\n preStyle?: CSSProperties;\n};\n\n// Application-level cache for highlighted HTML\n// Key: cacheKey string, Value: Promise<string>\nconst highlightCache = new Map<string, Promise<string>>();\n\n// Maximum cache size to prevent memory leaks\nconst MAX_CACHE_SIZE = 1000;\n\n// Clean up old cache entries when limit is reached\nconst cleanupCache = () => {\n if (highlightCache.size > MAX_CACHE_SIZE) {\n // Remove oldest 20% of entries\n const entriesToRemove = Math.floor(MAX_CACHE_SIZE * 0.2);\n const keysToRemove = Array.from(highlightCache.keys()).slice(0, entriesToRemove);\n for (const key of keysToRemove) {\n highlightCache.delete(key);\n }\n }\n};\n\nexport type ICodeToHtml = (code: string, options: CodeToHastOptions) => Promise<string>;\nexport type ShikiModule = typeof import('shiki');\n\n// Use codeToHtml shorthand for better performance\n// It automatically manages highlighter instances and loads themes/languages on-demand\nlet codeToHtmlPromise: Promise<ICodeToHtml | null> | null = null;\n\nconst loadCodeToHtml = (): Promise<ICodeToHtml | null> => {\n if (typeof window === 'undefined') return Promise.resolve(null);\n\n if (!codeToHtmlPromise) {\n codeToHtmlPromise = import('shiki').then((mod) => mod.codeToHtml ?? null);\n }\n\n return codeToHtmlPromise;\n};\n\n// Export shikiModulePromise for useStreamHighlight compatibility\nconst loadShikiModule = (): Promise<ShikiModule | null> => {\n if (typeof window === 'undefined') return Promise.resolve(null);\n return import('shiki');\n};\nexport const shikiModulePromise = loadShikiModule();\n\n// Helper function: Safe HTML escaping\nexport const escapeHtml = (str: string): string => {\n return str\n .replaceAll('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\n .replaceAll('\"', '&quot;')\n .replaceAll(\"'\", '&#039;');\n};\n\n// Main highlight component - optimized version without SWR\nconst customThemes = {\n 'lobe-theme': lobeTheme,\n};\n\nexport const useHighlight = (\n text: string,\n {\n language,\n enableTransformer,\n theme: builtinTheme,\n streaming,\n }: { enableTransformer?: boolean; language: string; streaming?: boolean; theme?: BuiltinTheme },\n): string => {\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 // Optimize transformer creation\n const transformers = useMemo(() => {\n if (!enableTransformer) return;\n return [\n transformerNotationDiff(),\n transformerNotationHighlight(),\n transformerNotationWordHighlight(),\n transformerNotationFocus(),\n transformerNotationErrorLevel(),\n ];\n }, [enableTransformer]);\n\n // Build cache key\n const cacheKey = useMemo((): string | null => {\n if (streaming) return null;\n // Use hash for long text\n const hash = safeText.length < MD5_LENGTH_THRESHOLD ? safeText : Md5.hashStr(safeText);\n return [matchedLanguage, builtinTheme, hash].filter(Boolean).join('-');\n }, [safeText, matchedLanguage, builtinTheme, streaming]);\n\n const [data, setData] = useState<string | undefined>();\n\n useEffect(() => {\n if (!cacheKey) {\n setData(undefined);\n return;\n }\n\n // Check cache first\n const cachedPromise = highlightCache.get(cacheKey);\n if (cachedPromise) {\n cachedPromise\n .then((html) => {\n setData(html);\n })\n .catch(() => {\n // Silently handle errors, fallback will be handled in the promise\n });\n return;\n }\n\n // Create new promise for highlighting\n // Using codeToHtml shorthand: automatically loads themes/languages on-demand\n const highlightPromise = (async (): Promise<string> => {\n try {\n // Try full rendering with transformers\n const shikiModule = await shikiModulePromise;\n if (!shikiModule) return safeText;\n\n const effectiveTheme = builtinTheme || 'lobe-theme';\n\n // Load custom theme if using slack-dark or slack-ochin\n if (!builtinTheme && effectiveTheme === 'lobe-theme') {\n const customTheme = customThemes[effectiveTheme];\n if (customTheme) {\n // Use getSingletonHighlighter to load custom theme\n const highlighter = await shikiModule.getSingletonHighlighter({\n langs: [matchedLanguage],\n themes: [customTheme as any],\n });\n\n const html = await highlighter.codeToHtml(safeText, {\n lang: matchedLanguage,\n theme: effectiveTheme,\n transformers,\n });\n\n return html;\n }\n }\n\n // Fallback to codeToHtml for builtin themes\n const codeToHtml = await loadCodeToHtml();\n if (!codeToHtml) return safeText;\n\n const html = await codeToHtml(safeText, {\n lang: matchedLanguage,\n theme: effectiveTheme,\n transformers,\n });\n\n return html;\n } catch (error_) {\n console.error('Advanced rendering failed:', error_);\n\n try {\n // Try simple rendering (without transformers)\n const codeToHtml = await loadCodeToHtml();\n if (!codeToHtml) return safeText;\n const html = await codeToHtml(safeText, {\n lang: matchedLanguage,\n theme: 'lobe-theme',\n });\n return html;\n } catch {\n // Fallback to plain text\n const fallbackHtml = `<pre class=\"fallback\"><code>${escapeHtml(safeText)}</code></pre>`;\n return fallbackHtml;\n }\n }\n })();\n\n // Cache the promise\n highlightCache.set(cacheKey, highlightPromise);\n cleanupCache();\n\n // Handle promise result\n highlightPromise\n .then((html) => {\n // Only update if this is still the current cache key\n if (highlightCache.get(cacheKey) === highlightPromise) {\n setData(html);\n }\n })\n .catch(() => {\n // Remove failed promise from cache\n if (highlightCache.get(cacheKey) === highlightPromise) {\n highlightCache.delete(cacheKey);\n }\n });\n }, [cacheKey, safeText, matchedLanguage, builtinTheme, transformers, customThemes]);\n\n return data || '';\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIsClient.mjs","names":[],"sources":["../../src/hooks/useIsClient.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport const useIsClient = () => {\n const [isClient, setIsClient] = useState(typeof document !== 'undefined');\n\n useEffect(() => {\n if (isClient) return;\n setIsClient(true);\n }, []);\n\n return isClient;\n};\n"],"mappings":";;AAEA,MAAa,oBAAoB;CAC/B,MAAM,CAAC,UAAU,eAAe,SAAS,OAAO,aAAa,YAAY;AAEzE,iBAAgB;AACd,MAAI,SAAU;AACd,cAAY,KAAK;IAChB,EAAE,CAAC;AAEN,QAAO"}
1
+ {"version":3,"file":"useIsClient.mjs","names":[],"sources":["../../src/hooks/useIsClient.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport const useIsClient = () => {\n const [isClient, setIsClient] = useState(typeof document !== 'undefined');\n\n useEffect(() => {\n if (isClient) return;\n setIsClient(true);\n }, []);\n\n return isClient;\n};\n"],"mappings":";;AAEA,MAAa,oBAAoB;CAC/B,MAAM,CAAC,UAAU,eAAe,SAAS,OAAO,aAAa,WAAW;CAExE,gBAAgB;EACd,IAAI,UAAU;EACd,YAAY,IAAI;CAClB,GAAG,CAAC,CAAC;CAEL,OAAO;AACT"}
@@ -289,6 +289,6 @@ function preprocessLaTeX(text, options = {}) {
289
289
  return content;
290
290
  }
291
291
  //#endregion
292
- export { isLastFormulaRenderable, preprocessLaTeX };
292
+ export { convertLatexDelimiters, escapeCurrencyDollars, escapeLatexPipes, escapeMhchemCommands, escapeTextUnderscores, fixCommonLaTeXErrors, handleCJKWithLatex, isLastFormulaRenderable, normalizeLatexSpacing, preprocessLaTeX, validateLatexExpressions };
293
293
 
294
294
  //# sourceMappingURL=latex.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"latex.mjs","names":[],"sources":["../../../src/hooks/useMarkdown/latex.ts"],"sourcesContent":["import { renderToString } from 'katex';\n\n// ============================================================================\n// Utility Classes\n// ============================================================================\n\n/**\n * PlaceholderManager - Manages temporary replacement and restoration of protected content\n * Used to protect code blocks and LaTeX expressions during preprocessing\n */\nclass PlaceholderManager {\n private placeholders: string[] = [];\n private prefix: string;\n\n constructor(prefix = 'PROTECTED') {\n this.prefix = prefix;\n }\n\n add(content: string): string {\n const index = this.placeholders.length;\n this.placeholders.push(content);\n return `<<${this.prefix}_${index}>>`;\n }\n\n restore(text: string): string {\n return text.replaceAll(new RegExp(`<<${this.prefix}_(\\\\d+)>>`, 'g'), (_, index) => {\n return this.placeholders[Number.parseInt(index)] || '';\n });\n }\n\n clear(): void {\n this.placeholders = [];\n }\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n// Helper: replace unescaped pipes with \\vert within a LaTeX math fragment\nconst replaceUnescapedPipes = (formula: string): string =>\n // Use \\vert{} so the control sequence terminates before the next token\n formula.replaceAll(/(?<!\\\\)\\|/g, '\\\\vert{}');\n\n/**\n * Converts LaTeX bracket delimiters to dollar sign delimiters.\n * Converts \\[...\\] to $$...$$ and \\(...\\) to $...$\n * Preserves code blocks during the conversion.\n *\n * @param text The input string containing LaTeX expressions\n * @returns The string with LaTeX bracket delimiters converted to dollar sign delimiters\n */\nexport function convertLatexDelimiters(text: string): string {\n const pattern = /(```[\\s\\S]*?```|`.*?`)|\\\\\\[([\\s\\S]*?[^\\\\])\\\\\\]|\\\\\\((.*?)\\\\\\)/g;\n return text.replaceAll(\n pattern,\n (\n match: string,\n codeBlock: string | undefined,\n squareBracket: string | undefined,\n roundBracket: string | undefined,\n ): string => {\n if (codeBlock !== undefined) {\n return codeBlock;\n } else if (squareBracket !== undefined) {\n return `$$${squareBracket}$$`;\n } else if (roundBracket !== undefined) {\n return `$${roundBracket}$`;\n }\n return match;\n },\n );\n}\n\n/**\n * Escapes mhchem commands in LaTeX expressions to ensure proper rendering.\n *\n * @param text The input string containing LaTeX expressions with mhchem commands\n * @returns The string with escaped mhchem commands\n */\nexport function escapeMhchemCommands(text: string) {\n return text.replaceAll('$\\\\ce{', '$\\\\\\\\ce{').replaceAll('$\\\\pu{', '$\\\\\\\\pu{');\n}\n\n/**\n * Escapes pipe characters within LaTeX expressions to prevent them from being interpreted\n * as table column separators in markdown tables.\n *\n * @param text The input string containing LaTeX expressions\n * @returns The string with pipe characters escaped in LaTeX expressions\n */\nexport function escapeLatexPipes(text: string): string {\n // Replace unescaped '|' inside LaTeX math spans with '\\vert' so that\n // remark-gfm table parsing won't treat them as column separators.\n // Leave code blocks/inline code untouched.\n // Also ignore escaped dollars (\\$) which are currency symbols\n\n // Process code blocks first to protect them\n const codeBlocks: string[] = [];\n let content = text.replaceAll(/(```[\\s\\S]*?```|`[^\\n`]*`)/g, (match) => {\n codeBlocks.push(match);\n return `<<CODE_${codeBlocks.length - 1}>>`;\n });\n\n // For display math, allow multiline\n content = content.replaceAll(/\\$\\$([\\s\\S]*?)\\$\\$/g, (match, display) => {\n return `$$${replaceUnescapedPipes(display)}$$`;\n });\n\n // For inline math, use non-greedy match that DOES NOT cross newlines\n // This prevents issues in tables where $ might appear in different cells\n content = content.replaceAll(/(?<!\\\\)\\$(?!\\$)([^\\n$]*)(?<!\\\\)\\$(?!\\$)/g, (match, inline) => {\n return `$${replaceUnescapedPipes(inline)}$`;\n });\n\n // Restore code blocks\n content = content.replaceAll(/<<CODE_(\\d+)>>/g, (_, index) => {\n return codeBlocks[Number.parseInt(index)];\n });\n\n return content;\n}\n\n/**\n * Escapes underscores within \\text{...} commands in LaTeX expressions\n * that are not already escaped.\n * For example, \\text{node_domain} becomes \\text{node\\_domain},\n * but \\text{node\\_domain} remains \\text{node\\_domain}.\n *\n * @param text The input string potentially containing LaTeX expressions\n * @returns The string with unescaped underscores escaped within \\text{...} commands\n */\nexport function escapeTextUnderscores(text: string): string {\n return text.replaceAll(/\\\\text\\{([^}]*)\\}/g, (match, textContent: string) => {\n // textContent is the content within the braces, e.g., \"node_domain\" or \"already\\_escaped\"\n // Replace underscores '_' with '\\_' only if they are NOT preceded by a backslash '\\'.\n // The (?<!\\\\) is a negative lookbehind assertion that ensures the character before '_' is not a '\\'.\n const escapedTextContent = textContent.replaceAll(/(?<!\\\\)_/g, '\\\\_');\n return `\\\\text{${escapedTextContent}}`;\n });\n}\n\n/**\n * Escapes dollar signs that appear to be currency symbols to prevent them from being\n * interpreted as LaTeX math delimiters.\n *\n * This function identifies currency patterns such as:\n * - $20, $100, $1,000\n * - $20-50, $100+\n * - Patterns within markdown tables\n *\n * @param text The input string containing potential currency symbols\n * @returns The string with currency dollar signs escaped\n */\nexport function escapeCurrencyDollars(text: string): string {\n // Protect code blocks and existing LaTeX expressions from processing\n const manager = new PlaceholderManager('PROTECTED');\n\n let content = text.replaceAll(\n // Match patterns to protect (in order):\n // 1. Code blocks: ```...```\n // 2. Inline code: `...`\n // 3. Display math: $$...$$\n // 4. Inline math with LaTeX commands: $...\\...$ (must contain backslash to distinguish from currency)\n // 5. Simple number formulas: $1$, $10$, $100$ (pure digits in math mode)\n // 6. Number lists in math mode: $1,-1,0$ or $1,2,3$ (comma-separated numbers, possibly negative)\n // 7. LaTeX bracket notation: \\[...\\]\n // 8. LaTeX parenthesis notation: \\(...\\)\n /(```[\\s\\S]*?```|`[^\\n`]*`|\\$\\$[\\s\\S]*?\\$\\$|(?<!\\\\)\\$(?!\\$)(?=[\\s\\S]*?\\\\)[\\s\\S]*?(?<!\\\\)\\$(?!\\$)|\\$\\d+\\$|\\$-?\\d+(?:,-?\\d+)+\\$|\\\\\\[[\\s\\S]*?\\\\\\]|\\\\\\(.*?\\\\\\))/g,\n (match) => manager.add(match),\n );\n\n // Escape dollar signs that are clearly currency:\n // - $ followed by a digit\n // - Not preceded by another $ (to avoid breaking $$)\n // - Not followed immediately by another $ (to avoid breaking $1$ LaTeX)\n // - Followed by number patterns with optional commas, decimals, ranges, or plus signs\n // Match patterns like: $20, $1,000, $19.99, $20-50, $300+, $1,000-2,000+\n // But NOT: $1$, $2$ (these are LaTeX formulas)\n // In the replacement: \\\\ = backslash, $$ = literal $, $1 = capture group 1\n content = content.replaceAll(\n /(?<!\\$)\\$(\\d{1,3}(?:,\\d{3})*(?:\\.\\d+)?(?:-\\d{1,3}(?:,\\d{3})*(?:\\.\\d+)?)?\\+?)(?!\\$)/g,\n '\\\\$$$1',\n );\n\n // Restore protected content\n content = manager.restore(content);\n\n return content;\n}\n\n// Old simple preprocessLaTeX has been replaced by the comprehensive version below\n// The new preprocessLaTeX provides the same default behavior with optional advanced featuresgit\n\n/**\n * Extracts the LaTeX formula after the last $$ delimiter if there's an odd number of $$ delimiters.\n *\n * @param text The input string containing LaTeX formulas\n * @returns The content after the last $$ if there's an odd number of $$, otherwise an empty string\n */\nconst extractIncompleteFormula = (text: string) => {\n // Count the number of $$ delimiters\n const dollarsCount = (text.match(/\\$\\$/g) || []).length;\n\n // If odd number of $$ delimiters, extract content after the last $$\n if (dollarsCount % 2 === 1) {\n const match = text.match(/\\$\\$([\\s\\S]*)$/);\n return match ? match[1] : '';\n }\n\n // If even number of $$ delimiters, return empty string\n return '';\n};\n\n/**\n * Checks if the last LaTeX formula in the text is renderable.\n * Only validates the formula after the last $$ if there's an odd number of $$.\n *\n * @param text The input string containing LaTeX formulas\n * @returns True if the last formula is renderable or if there's no incomplete formula\n */\nexport const isLastFormulaRenderable = (text: string) => {\n const formula = extractIncompleteFormula(text);\n\n // If no incomplete formula, return true\n if (!formula) return true;\n\n // Try to render the last formula\n try {\n renderToString(formula, {\n displayMode: true,\n throwOnError: true,\n });\n return true;\n } catch (error) {\n console.error(`LaTeX formula rendering error: ${error}`);\n return false;\n }\n};\n\n// ============================================================================\n// Advanced Preprocessing Functions\n// ============================================================================\n\n/**\n * Fixes common LaTeX syntax errors automatically\n * - Balances unmatched braces\n * - Balances \\left and \\right delimiters\n *\n * @param text The input string containing LaTeX expressions\n * @returns The string with fixed LaTeX expressions\n */\nexport function fixCommonLaTeXErrors(text: string): string {\n return text.replaceAll(/(\\$\\$[\\s\\S]*?\\$\\$|\\$[\\s\\S]*?\\$)/g, (match) => {\n let fixed = match;\n\n // Fix unbalanced braces\n const openBraces = (fixed.match(/(?<!\\\\)\\{/g) || []).length;\n const closeBraces = (fixed.match(/(?<!\\\\)\\}/g) || []).length;\n if (openBraces > closeBraces) {\n const diff = openBraces - closeBraces;\n const closingBraces = '}'.repeat(diff);\n // Insert before the closing delimiter\n fixed = fixed.replace(/(\\$\\$?)$/, closingBraces + '$1');\n }\n\n // Fix unbalanced \\left and \\right\n const leftDelims = (fixed.match(/\\\\left[(.<[{|]/g) || []).length;\n const rightDelims = (fixed.match(/\\\\right[).>\\]|}]/g) || []).length;\n if (leftDelims > rightDelims) {\n const diff = leftDelims - rightDelims;\n const rightDots = '\\\\right.'.repeat(diff);\n fixed = fixed.replace(/(\\$\\$?)$/, rightDots + '$1');\n }\n\n return fixed;\n });\n}\n\n/**\n * Normalizes whitespace in LaTeX expressions\n * - Removes extra spaces around $ delimiters\n * - Normalizes multiple spaces to single space inside formulas\n *\n * @param text The input string containing LaTeX expressions\n * @returns The string with normalized whitespace\n */\nexport function normalizeLatexSpacing(text: string): string {\n let result = text;\n\n // Remove spaces inside $ delimiters (at the edges)\n result = result.replaceAll(/\\$\\s+/g, '$');\n result = result.replaceAll(/\\s+\\$/g, '$');\n result = result.replaceAll(/\\$\\$\\s+/g, '$$');\n result = result.replaceAll(/\\s+\\$\\$/g, '$$');\n\n // Normalize multiple spaces inside formulas to single space\n result = result.replaceAll(/(\\$\\$[\\s\\S]*?\\$\\$|\\$[\\s\\S]*?\\$)/g, (match) => {\n return match.replaceAll(/\\s{2,}/g, ' ');\n });\n\n return result;\n}\n\n/**\n * Validates all LaTeX expressions in the text\n * Returns detailed information about validation results\n *\n * @param text The input string containing LaTeX expressions\n * @returns Validation results with errors if any\n */\nexport function validateLatexExpressions(text: string): {\n errors: Array<{\n formula: string;\n message: string;\n position: number;\n type: 'display' | 'inline';\n }>;\n totalExpressions: number;\n valid: boolean;\n} {\n const errors: Array<{\n formula: string;\n message: string;\n position: number;\n type: 'display' | 'inline';\n }> = [];\n\n let totalExpressions = 0;\n const pattern = /\\$\\$([\\s\\S]*?)\\$\\$|(?<!\\\\)\\$(?!\\$)([\\s\\S]*?)(?<!\\\\)\\$(?!\\$)/g;\n let match;\n\n while ((match = pattern.exec(text)) !== null) {\n totalExpressions++;\n const formula = match[1] || match[2];\n const isDisplay = match[0].startsWith('$$');\n\n try {\n renderToString(formula, {\n displayMode: isDisplay,\n strict: 'warn',\n throwOnError: true,\n trust: false,\n });\n } catch (error) {\n errors.push({\n formula: formula.slice(0, 50) + (formula.length > 50 ? '...' : ''),\n message: error instanceof Error ? error.message : String(error),\n position: match.index,\n type: isDisplay ? 'display' : 'inline',\n });\n }\n }\n\n return {\n errors,\n totalExpressions,\n valid: errors.length === 0,\n };\n}\n\n/**\n * Handles CJK (Chinese, Japanese, Korean) characters mixed with LaTeX\n * Optionally adds spaces between CJK characters and LaTeX expressions for better rendering\n *\n * @param text The input string\n * @param addSpaces Whether to add spaces between CJK and LaTeX (default: false)\n * @returns The processed string\n */\nexport function handleCJKWithLatex(text: string, addSpaces = false): string {\n if (!addSpaces) return text;\n\n let result = text;\n\n // Add space between CJK character and opening $\n result = result.replaceAll(/([\\u3040-\\u30FF\\u4E00-\\u9FA5])(\\$)/g, '$1 $2');\n\n // Add space between closing $ and CJK character\n result = result.replaceAll(/(\\$)([\\u3040-\\u30FF\\u4E00-\\u9FA5])/g, '$1 $2');\n\n return result;\n}\n\n// ============================================================================\n// Advanced Preprocessing Options\n// ============================================================================\n\nexport interface AdvancedPreprocessOptions {\n /** Add spaces between CJK and LaTeX (default: false, requires handleCJK: true) */\n addCJKSpaces?: boolean;\n /** Convert bracket notation \\[...\\] to $$...$$ (default: true) */\n convertBrackets?: boolean;\n /** Enable currency escaping (default: true) */\n escapeCurrency?: boolean;\n /** Escape mhchem commands (default: true) */\n escapeMhchem?: boolean;\n /** Escape pipe symbols in LaTeX (default: true) */\n escapePipes?: boolean;\n /** Escape underscores in \\text{} (default: true) */\n escapeUnderscores?: boolean;\n /** Automatically fix common LaTeX errors (default: false) */\n fixErrors?: boolean;\n /** Handle CJK characters (default: false) */\n handleCJK?: boolean;\n /** Normalize whitespace (default: false) */\n normalizeSpacing?: boolean;\n /** Throw error on validation failure (default: false, requires validate: true) */\n throwOnValidationError?: boolean;\n /** Validate LaTeX syntax (default: false) */\n validate?: boolean;\n}\n\n/**\n * Comprehensive LaTeX preprocessing with configurable options\n *\n * This is the main preprocessing function that handles:\n * - Currency symbol escaping (e.g., $20 → \\$20)\n * - LaTeX delimiter conversion (\\[...\\] → $$...$$)\n * - Special character escaping (pipes, underscores, mhchem)\n * - Optional error fixing and validation\n * - Optional CJK character handling\n *\n * @param text The input string containing LaTeX and Markdown\n * @param options Configuration options for fine-grained control\n * @returns The preprocessed string\n *\n * @example\n * ```ts\n * // Default behavior (same as old preprocessLaTeX)\n * preprocessLaTeX('向量$90^\\\\circ$,非 $0^\\\\circ$ 和 $180^\\\\circ$')\n *\n * // With custom options\n * preprocessLaTeX(text, {\n * fixErrors: true,\n * validate: true,\n * handleCJK: true\n * })\n * ```\n */\nexport function preprocessLaTeX(text: string, options: AdvancedPreprocessOptions = {}): string {\n const {\n addCJKSpaces = false,\n convertBrackets = true,\n escapeCurrency = true,\n escapeMhchem = true,\n escapePipes = true,\n escapeUnderscores = true,\n fixErrors = false,\n handleCJK = false,\n normalizeSpacing = false,\n throwOnValidationError = false,\n validate = false,\n } = options;\n\n let content = text;\n\n // Phase 1: Currency escaping (if enabled)\n if (escapeCurrency) {\n content = escapeCurrencyDollars(content);\n }\n\n // Phase 2: Bracket conversion (if enabled)\n if (convertBrackets) {\n content = convertLatexDelimiters(content);\n }\n\n // Phase 3: LaTeX-specific escaping\n if (escapeMhchem) {\n content = escapeMhchemCommands(content);\n }\n\n if (escapePipes) {\n content = escapeLatexPipes(content);\n }\n\n if (escapeUnderscores) {\n content = escapeTextUnderscores(content);\n }\n\n // Phase 4: Error fixing (if enabled)\n if (fixErrors) {\n content = fixCommonLaTeXErrors(content);\n }\n\n // Phase 5: Whitespace normalization (if enabled)\n if (normalizeSpacing) {\n content = normalizeLatexSpacing(content);\n }\n\n // Phase 6: CJK handling (if enabled)\n if (handleCJK) {\n content = handleCJKWithLatex(content, addCJKSpaces);\n }\n\n // Phase 7: Validation (if enabled)\n if (validate) {\n const validation = validateLatexExpressions(content);\n if (!validation.valid) {\n const errorMessage = `LaTeX validation failed (${validation.errors.length}/${validation.totalExpressions} expressions have errors):\\n${validation.errors.map((e) => ` - [${e.type}] at position ${e.position}: ${e.message}\\n Formula: ${e.formula}`).join('\\n')}`;\n\n if (throwOnValidationError) {\n throw new Error(errorMessage);\n } else {\n console.warn(errorMessage);\n }\n }\n }\n\n return content;\n}\n\n/**\n * Strict preprocessing mode - enables all safety features and validations\n * Use this when you want maximum correctness and are willing to accept the performance cost\n *\n * @param text The input string\n * @returns The preprocessed string with all features enabled\n *\n * @example\n * ```ts\n * const processed = preprocessLaTeXStrict(userInput)\n * // Enables: error fixing, validation, CJK handling, space normalization\n * ```\n */\nexport function preprocessLaTeXStrict(text: string): string {\n return preprocessLaTeX(text, {\n addCJKSpaces: false, // Usually don't want extra spaces\n convertBrackets: true,\n escapeCurrency: true,\n escapeMhchem: true,\n escapePipes: true,\n escapeUnderscores: true,\n fixErrors: true,\n handleCJK: true,\n normalizeSpacing: true,\n throwOnValidationError: false, // Warn but don't throw\n validate: true,\n });\n}\n\n/**\n * Minimal preprocessing mode - only essential operations\n * Use this for better performance when you control the input\n *\n * @param text The input string\n * @returns The preprocessed string with minimal processing\n *\n * @example\n * ```ts\n * const processed = preprocessLaTeXMinimal(trustedInput)\n * // Only escapes currency and converts brackets\n * ```\n */\nexport function preprocessLaTeXMinimal(text: string): string {\n return preprocessLaTeX(text, {\n convertBrackets: true,\n escapeCurrency: true,\n escapeMhchem: false,\n escapePipes: false,\n escapeUnderscores: false,\n fixErrors: false,\n handleCJK: false,\n normalizeSpacing: false,\n validate: false,\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"latex.mjs","names":[],"sources":["../../../src/hooks/useMarkdown/latex.ts"],"sourcesContent":["import { renderToString } from 'katex';\n\n// ============================================================================\n// Utility Classes\n// ============================================================================\n\n/**\n * PlaceholderManager - Manages temporary replacement and restoration of protected content\n * Used to protect code blocks and LaTeX expressions during preprocessing\n */\nclass PlaceholderManager {\n private placeholders: string[] = [];\n private prefix: string;\n\n constructor(prefix = 'PROTECTED') {\n this.prefix = prefix;\n }\n\n add(content: string): string {\n const index = this.placeholders.length;\n this.placeholders.push(content);\n return `<<${this.prefix}_${index}>>`;\n }\n\n restore(text: string): string {\n return text.replaceAll(new RegExp(`<<${this.prefix}_(\\\\d+)>>`, 'g'), (_, index) => {\n return this.placeholders[Number.parseInt(index)] || '';\n });\n }\n\n clear(): void {\n this.placeholders = [];\n }\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n// Helper: replace unescaped pipes with \\vert within a LaTeX math fragment\nconst replaceUnescapedPipes = (formula: string): string =>\n // Use \\vert{} so the control sequence terminates before the next token\n formula.replaceAll(/(?<!\\\\)\\|/g, '\\\\vert{}');\n\n/**\n * Converts LaTeX bracket delimiters to dollar sign delimiters.\n * Converts \\[...\\] to $$...$$ and \\(...\\) to $...$\n * Preserves code blocks during the conversion.\n *\n * @param text The input string containing LaTeX expressions\n * @returns The string with LaTeX bracket delimiters converted to dollar sign delimiters\n */\nexport function convertLatexDelimiters(text: string): string {\n const pattern = /(```[\\s\\S]*?```|`.*?`)|\\\\\\[([\\s\\S]*?[^\\\\])\\\\\\]|\\\\\\((.*?)\\\\\\)/g;\n return text.replaceAll(\n pattern,\n (\n match: string,\n codeBlock: string | undefined,\n squareBracket: string | undefined,\n roundBracket: string | undefined,\n ): string => {\n if (codeBlock !== undefined) {\n return codeBlock;\n } else if (squareBracket !== undefined) {\n return `$$${squareBracket}$$`;\n } else if (roundBracket !== undefined) {\n return `$${roundBracket}$`;\n }\n return match;\n },\n );\n}\n\n/**\n * Escapes mhchem commands in LaTeX expressions to ensure proper rendering.\n *\n * @param text The input string containing LaTeX expressions with mhchem commands\n * @returns The string with escaped mhchem commands\n */\nexport function escapeMhchemCommands(text: string) {\n return text.replaceAll('$\\\\ce{', '$\\\\\\\\ce{').replaceAll('$\\\\pu{', '$\\\\\\\\pu{');\n}\n\n/**\n * Escapes pipe characters within LaTeX expressions to prevent them from being interpreted\n * as table column separators in markdown tables.\n *\n * @param text The input string containing LaTeX expressions\n * @returns The string with pipe characters escaped in LaTeX expressions\n */\nexport function escapeLatexPipes(text: string): string {\n // Replace unescaped '|' inside LaTeX math spans with '\\vert' so that\n // remark-gfm table parsing won't treat them as column separators.\n // Leave code blocks/inline code untouched.\n // Also ignore escaped dollars (\\$) which are currency symbols\n\n // Process code blocks first to protect them\n const codeBlocks: string[] = [];\n let content = text.replaceAll(/(```[\\s\\S]*?```|`[^\\n`]*`)/g, (match) => {\n codeBlocks.push(match);\n return `<<CODE_${codeBlocks.length - 1}>>`;\n });\n\n // For display math, allow multiline\n content = content.replaceAll(/\\$\\$([\\s\\S]*?)\\$\\$/g, (match, display) => {\n return `$$${replaceUnescapedPipes(display)}$$`;\n });\n\n // For inline math, use non-greedy match that DOES NOT cross newlines\n // This prevents issues in tables where $ might appear in different cells\n content = content.replaceAll(/(?<!\\\\)\\$(?!\\$)([^\\n$]*)(?<!\\\\)\\$(?!\\$)/g, (match, inline) => {\n return `$${replaceUnescapedPipes(inline)}$`;\n });\n\n // Restore code blocks\n content = content.replaceAll(/<<CODE_(\\d+)>>/g, (_, index) => {\n return codeBlocks[Number.parseInt(index)];\n });\n\n return content;\n}\n\n/**\n * Escapes underscores within \\text{...} commands in LaTeX expressions\n * that are not already escaped.\n * For example, \\text{node_domain} becomes \\text{node\\_domain},\n * but \\text{node\\_domain} remains \\text{node\\_domain}.\n *\n * @param text The input string potentially containing LaTeX expressions\n * @returns The string with unescaped underscores escaped within \\text{...} commands\n */\nexport function escapeTextUnderscores(text: string): string {\n return text.replaceAll(/\\\\text\\{([^}]*)\\}/g, (match, textContent: string) => {\n // textContent is the content within the braces, e.g., \"node_domain\" or \"already\\_escaped\"\n // Replace underscores '_' with '\\_' only if they are NOT preceded by a backslash '\\'.\n // The (?<!\\\\) is a negative lookbehind assertion that ensures the character before '_' is not a '\\'.\n const escapedTextContent = textContent.replaceAll(/(?<!\\\\)_/g, '\\\\_');\n return `\\\\text{${escapedTextContent}}`;\n });\n}\n\n/**\n * Escapes dollar signs that appear to be currency symbols to prevent them from being\n * interpreted as LaTeX math delimiters.\n *\n * This function identifies currency patterns such as:\n * - $20, $100, $1,000\n * - $20-50, $100+\n * - Patterns within markdown tables\n *\n * @param text The input string containing potential currency symbols\n * @returns The string with currency dollar signs escaped\n */\nexport function escapeCurrencyDollars(text: string): string {\n // Protect code blocks and existing LaTeX expressions from processing\n const manager = new PlaceholderManager('PROTECTED');\n\n let content = text.replaceAll(\n // Match patterns to protect (in order):\n // 1. Code blocks: ```...```\n // 2. Inline code: `...`\n // 3. Display math: $$...$$\n // 4. Inline math with LaTeX commands: $...\\...$ (must contain backslash to distinguish from currency)\n // 5. Simple number formulas: $1$, $10$, $100$ (pure digits in math mode)\n // 6. Number lists in math mode: $1,-1,0$ or $1,2,3$ (comma-separated numbers, possibly negative)\n // 7. LaTeX bracket notation: \\[...\\]\n // 8. LaTeX parenthesis notation: \\(...\\)\n /(```[\\s\\S]*?```|`[^\\n`]*`|\\$\\$[\\s\\S]*?\\$\\$|(?<!\\\\)\\$(?!\\$)(?=[\\s\\S]*?\\\\)[\\s\\S]*?(?<!\\\\)\\$(?!\\$)|\\$\\d+\\$|\\$-?\\d+(?:,-?\\d+)+\\$|\\\\\\[[\\s\\S]*?\\\\\\]|\\\\\\(.*?\\\\\\))/g,\n (match) => manager.add(match),\n );\n\n // Escape dollar signs that are clearly currency:\n // - $ followed by a digit\n // - Not preceded by another $ (to avoid breaking $$)\n // - Not followed immediately by another $ (to avoid breaking $1$ LaTeX)\n // - Followed by number patterns with optional commas, decimals, ranges, or plus signs\n // Match patterns like: $20, $1,000, $19.99, $20-50, $300+, $1,000-2,000+\n // But NOT: $1$, $2$ (these are LaTeX formulas)\n // In the replacement: \\\\ = backslash, $$ = literal $, $1 = capture group 1\n content = content.replaceAll(\n /(?<!\\$)\\$(\\d{1,3}(?:,\\d{3})*(?:\\.\\d+)?(?:-\\d{1,3}(?:,\\d{3})*(?:\\.\\d+)?)?\\+?)(?!\\$)/g,\n '\\\\$$$1',\n );\n\n // Restore protected content\n content = manager.restore(content);\n\n return content;\n}\n\n// Old simple preprocessLaTeX has been replaced by the comprehensive version below\n// The new preprocessLaTeX provides the same default behavior with optional advanced featuresgit\n\n/**\n * Extracts the LaTeX formula after the last $$ delimiter if there's an odd number of $$ delimiters.\n *\n * @param text The input string containing LaTeX formulas\n * @returns The content after the last $$ if there's an odd number of $$, otherwise an empty string\n */\nconst extractIncompleteFormula = (text: string) => {\n // Count the number of $$ delimiters\n const dollarsCount = (text.match(/\\$\\$/g) || []).length;\n\n // If odd number of $$ delimiters, extract content after the last $$\n if (dollarsCount % 2 === 1) {\n const match = text.match(/\\$\\$([\\s\\S]*)$/);\n return match ? match[1] : '';\n }\n\n // If even number of $$ delimiters, return empty string\n return '';\n};\n\n/**\n * Checks if the last LaTeX formula in the text is renderable.\n * Only validates the formula after the last $$ if there's an odd number of $$.\n *\n * @param text The input string containing LaTeX formulas\n * @returns True if the last formula is renderable or if there's no incomplete formula\n */\nexport const isLastFormulaRenderable = (text: string) => {\n const formula = extractIncompleteFormula(text);\n\n // If no incomplete formula, return true\n if (!formula) return true;\n\n // Try to render the last formula\n try {\n renderToString(formula, {\n displayMode: true,\n throwOnError: true,\n });\n return true;\n } catch (error) {\n console.error(`LaTeX formula rendering error: ${error}`);\n return false;\n }\n};\n\n// ============================================================================\n// Advanced Preprocessing Functions\n// ============================================================================\n\n/**\n * Fixes common LaTeX syntax errors automatically\n * - Balances unmatched braces\n * - Balances \\left and \\right delimiters\n *\n * @param text The input string containing LaTeX expressions\n * @returns The string with fixed LaTeX expressions\n */\nexport function fixCommonLaTeXErrors(text: string): string {\n return text.replaceAll(/(\\$\\$[\\s\\S]*?\\$\\$|\\$[\\s\\S]*?\\$)/g, (match) => {\n let fixed = match;\n\n // Fix unbalanced braces\n const openBraces = (fixed.match(/(?<!\\\\)\\{/g) || []).length;\n const closeBraces = (fixed.match(/(?<!\\\\)\\}/g) || []).length;\n if (openBraces > closeBraces) {\n const diff = openBraces - closeBraces;\n const closingBraces = '}'.repeat(diff);\n // Insert before the closing delimiter\n fixed = fixed.replace(/(\\$\\$?)$/, closingBraces + '$1');\n }\n\n // Fix unbalanced \\left and \\right\n const leftDelims = (fixed.match(/\\\\left[(.<[{|]/g) || []).length;\n const rightDelims = (fixed.match(/\\\\right[).>\\]|}]/g) || []).length;\n if (leftDelims > rightDelims) {\n const diff = leftDelims - rightDelims;\n const rightDots = '\\\\right.'.repeat(diff);\n fixed = fixed.replace(/(\\$\\$?)$/, rightDots + '$1');\n }\n\n return fixed;\n });\n}\n\n/**\n * Normalizes whitespace in LaTeX expressions\n * - Removes extra spaces around $ delimiters\n * - Normalizes multiple spaces to single space inside formulas\n *\n * @param text The input string containing LaTeX expressions\n * @returns The string with normalized whitespace\n */\nexport function normalizeLatexSpacing(text: string): string {\n let result = text;\n\n // Remove spaces inside $ delimiters (at the edges)\n result = result.replaceAll(/\\$\\s+/g, '$');\n result = result.replaceAll(/\\s+\\$/g, '$');\n result = result.replaceAll(/\\$\\$\\s+/g, '$$');\n result = result.replaceAll(/\\s+\\$\\$/g, '$$');\n\n // Normalize multiple spaces inside formulas to single space\n result = result.replaceAll(/(\\$\\$[\\s\\S]*?\\$\\$|\\$[\\s\\S]*?\\$)/g, (match) => {\n return match.replaceAll(/\\s{2,}/g, ' ');\n });\n\n return result;\n}\n\n/**\n * Validates all LaTeX expressions in the text\n * Returns detailed information about validation results\n *\n * @param text The input string containing LaTeX expressions\n * @returns Validation results with errors if any\n */\nexport function validateLatexExpressions(text: string): {\n errors: Array<{\n formula: string;\n message: string;\n position: number;\n type: 'display' | 'inline';\n }>;\n totalExpressions: number;\n valid: boolean;\n} {\n const errors: Array<{\n formula: string;\n message: string;\n position: number;\n type: 'display' | 'inline';\n }> = [];\n\n let totalExpressions = 0;\n const pattern = /\\$\\$([\\s\\S]*?)\\$\\$|(?<!\\\\)\\$(?!\\$)([\\s\\S]*?)(?<!\\\\)\\$(?!\\$)/g;\n let match;\n\n while ((match = pattern.exec(text)) !== null) {\n totalExpressions++;\n const formula = match[1] || match[2];\n const isDisplay = match[0].startsWith('$$');\n\n try {\n renderToString(formula, {\n displayMode: isDisplay,\n strict: 'warn',\n throwOnError: true,\n trust: false,\n });\n } catch (error) {\n errors.push({\n formula: formula.slice(0, 50) + (formula.length > 50 ? '...' : ''),\n message: error instanceof Error ? error.message : String(error),\n position: match.index,\n type: isDisplay ? 'display' : 'inline',\n });\n }\n }\n\n return {\n errors,\n totalExpressions,\n valid: errors.length === 0,\n };\n}\n\n/**\n * Handles CJK (Chinese, Japanese, Korean) characters mixed with LaTeX\n * Optionally adds spaces between CJK characters and LaTeX expressions for better rendering\n *\n * @param text The input string\n * @param addSpaces Whether to add spaces between CJK and LaTeX (default: false)\n * @returns The processed string\n */\nexport function handleCJKWithLatex(text: string, addSpaces = false): string {\n if (!addSpaces) return text;\n\n let result = text;\n\n // Add space between CJK character and opening $\n result = result.replaceAll(/([\\u3040-\\u30FF\\u4E00-\\u9FA5])(\\$)/g, '$1 $2');\n\n // Add space between closing $ and CJK character\n result = result.replaceAll(/(\\$)([\\u3040-\\u30FF\\u4E00-\\u9FA5])/g, '$1 $2');\n\n return result;\n}\n\n// ============================================================================\n// Advanced Preprocessing Options\n// ============================================================================\n\nexport interface AdvancedPreprocessOptions {\n /** Add spaces between CJK and LaTeX (default: false, requires handleCJK: true) */\n addCJKSpaces?: boolean;\n /** Convert bracket notation \\[...\\] to $$...$$ (default: true) */\n convertBrackets?: boolean;\n /** Enable currency escaping (default: true) */\n escapeCurrency?: boolean;\n /** Escape mhchem commands (default: true) */\n escapeMhchem?: boolean;\n /** Escape pipe symbols in LaTeX (default: true) */\n escapePipes?: boolean;\n /** Escape underscores in \\text{} (default: true) */\n escapeUnderscores?: boolean;\n /** Automatically fix common LaTeX errors (default: false) */\n fixErrors?: boolean;\n /** Handle CJK characters (default: false) */\n handleCJK?: boolean;\n /** Normalize whitespace (default: false) */\n normalizeSpacing?: boolean;\n /** Throw error on validation failure (default: false, requires validate: true) */\n throwOnValidationError?: boolean;\n /** Validate LaTeX syntax (default: false) */\n validate?: boolean;\n}\n\n/**\n * Comprehensive LaTeX preprocessing with configurable options\n *\n * This is the main preprocessing function that handles:\n * - Currency symbol escaping (e.g., $20 → \\$20)\n * - LaTeX delimiter conversion (\\[...\\] → $$...$$)\n * - Special character escaping (pipes, underscores, mhchem)\n * - Optional error fixing and validation\n * - Optional CJK character handling\n *\n * @param text The input string containing LaTeX and Markdown\n * @param options Configuration options for fine-grained control\n * @returns The preprocessed string\n *\n * @example\n * ```ts\n * // Default behavior (same as old preprocessLaTeX)\n * preprocessLaTeX('向量$90^\\\\circ$,非 $0^\\\\circ$ 和 $180^\\\\circ$')\n *\n * // With custom options\n * preprocessLaTeX(text, {\n * fixErrors: true,\n * validate: true,\n * handleCJK: true\n * })\n * ```\n */\nexport function preprocessLaTeX(text: string, options: AdvancedPreprocessOptions = {}): string {\n const {\n addCJKSpaces = false,\n convertBrackets = true,\n escapeCurrency = true,\n escapeMhchem = true,\n escapePipes = true,\n escapeUnderscores = true,\n fixErrors = false,\n handleCJK = false,\n normalizeSpacing = false,\n throwOnValidationError = false,\n validate = false,\n } = options;\n\n let content = text;\n\n // Phase 1: Currency escaping (if enabled)\n if (escapeCurrency) {\n content = escapeCurrencyDollars(content);\n }\n\n // Phase 2: Bracket conversion (if enabled)\n if (convertBrackets) {\n content = convertLatexDelimiters(content);\n }\n\n // Phase 3: LaTeX-specific escaping\n if (escapeMhchem) {\n content = escapeMhchemCommands(content);\n }\n\n if (escapePipes) {\n content = escapeLatexPipes(content);\n }\n\n if (escapeUnderscores) {\n content = escapeTextUnderscores(content);\n }\n\n // Phase 4: Error fixing (if enabled)\n if (fixErrors) {\n content = fixCommonLaTeXErrors(content);\n }\n\n // Phase 5: Whitespace normalization (if enabled)\n if (normalizeSpacing) {\n content = normalizeLatexSpacing(content);\n }\n\n // Phase 6: CJK handling (if enabled)\n if (handleCJK) {\n content = handleCJKWithLatex(content, addCJKSpaces);\n }\n\n // Phase 7: Validation (if enabled)\n if (validate) {\n const validation = validateLatexExpressions(content);\n if (!validation.valid) {\n const errorMessage = `LaTeX validation failed (${validation.errors.length}/${validation.totalExpressions} expressions have errors):\\n${validation.errors.map((e) => ` - [${e.type}] at position ${e.position}: ${e.message}\\n Formula: ${e.formula}`).join('\\n')}`;\n\n if (throwOnValidationError) {\n throw new Error(errorMessage);\n } else {\n console.warn(errorMessage);\n }\n }\n }\n\n return content;\n}\n\n/**\n * Strict preprocessing mode - enables all safety features and validations\n * Use this when you want maximum correctness and are willing to accept the performance cost\n *\n * @param text The input string\n * @returns The preprocessed string with all features enabled\n *\n * @example\n * ```ts\n * const processed = preprocessLaTeXStrict(userInput)\n * // Enables: error fixing, validation, CJK handling, space normalization\n * ```\n */\nexport function preprocessLaTeXStrict(text: string): string {\n return preprocessLaTeX(text, {\n addCJKSpaces: false, // Usually don't want extra spaces\n convertBrackets: true,\n escapeCurrency: true,\n escapeMhchem: true,\n escapePipes: true,\n escapeUnderscores: true,\n fixErrors: true,\n handleCJK: true,\n normalizeSpacing: true,\n throwOnValidationError: false, // Warn but don't throw\n validate: true,\n });\n}\n\n/**\n * Minimal preprocessing mode - only essential operations\n * Use this for better performance when you control the input\n *\n * @param text The input string\n * @returns The preprocessed string with minimal processing\n *\n * @example\n * ```ts\n * const processed = preprocessLaTeXMinimal(trustedInput)\n * // Only escapes currency and converts brackets\n * ```\n */\nexport function preprocessLaTeXMinimal(text: string): string {\n return preprocessLaTeX(text, {\n convertBrackets: true,\n escapeCurrency: true,\n escapeMhchem: false,\n escapePipes: false,\n escapeUnderscores: false,\n fixErrors: false,\n handleCJK: false,\n normalizeSpacing: false,\n validate: false,\n });\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMarkdownComponents.mjs","names":[],"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 MarkdownTable from '@/Markdown/components/MarkdownTable';\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 enableHtmlPreview,\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 html: componentProps.html,\n mermaid: componentProps.mermaid\n ? { ...componentProps.mermaid, theme: mermaidTheme }\n : undefined,\n };\n }, [highlightTheme, mermaidTheme, componentProps?.html]);\n\n const memoPre = useCallback(\n ({ node, ...props }: any) => (\n <CodeBlock\n animated={animated}\n enableHtmlPreview={enableHtmlPreview}\n enableMermaid={enableMermaid}\n fullFeatured={fullFeaturedCodeBlock}\n {...stableComponentProps}\n {...componentProps?.pre}\n {...props}\n />\n ),\n [\n animated,\n enableHtmlPreview,\n enableMermaid,\n fullFeaturedCodeBlock,\n stableComponentProps,\n componentProps?.pre,\n ],\n );\n\n const memoColorPreview = useCallback(({ node, ...props }: any) => <code {...props} />, []);\n\n const memoTable = useCallback(\n ({ node, ...props }: any) => <MarkdownTable node={node} {...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 table: memoTable,\n video: memoVideo,\n }),\n [\n memoA,\n memoBr,\n memoImg,\n memoVideo,\n memoPre,\n memoSection,\n memeP,\n memoColorPreview,\n memoKbd,\n memoTable,\n ],\n );\n\n return useMemo(\n () => ({\n ...memoComponents,\n ...components,\n }),\n [memoComponents, components],\n );\n};\n"],"mappings":";;;;;;;;;;;;AAcA,MAAa,8BAA0C;CACrD,MAAM,EACJ,YACA,UACA,WACA,gBACA,mBACA,eACA,uBACA,kBACE,oBAAoB;CAExB,MAAM,QAAQ,aACX,EAAE,MAAM,GAAG,YAAiB,oBAAC,MAAD;EAAiB;EAAW,GAAI;EAAO,GAAI,gBAAgB;EAAK,CAAA,EAC7F,CAAC,WAAW,gBAAgB,EAAE,CAC/B;CAED,MAAM,UAAU,aACb,EAAE,MAAM,GAAG,YAAiB,oBAAC,OAAD;EAAO,GAAI;EAAO,GAAI,gBAAgB;EAAO,CAAA,EAC1E,CAAC,gBAAgB,IAAI,CACtB;CAED,MAAM,YAAY,aACf,EAAE,MAAM,GAAG,YAAiB,oBAAC,OAAD;EAAO,GAAI;EAAO,GAAI,gBAAgB;EAAS,CAAA,EAC5E,CAAC,gBAAgB,MAAM,CACxB;CAED,MAAM,cAAc,aACjB,EAAE,MAAM,GAAG,YAAiB,oBAAC,SAAD;EAAwB;EAAe,GAAI;EAAS,CAAA,EACjF,CAAC,cAAc,CAChB;CAED,MAAM,UAAU,aACb,EAAE,eAAoB,oBAAC,QAAD;EAAQ,MAAM;EAAU,OAAO,EAAE,SAAS,eAAe;EAAI,CAAA,EACpF,EAAE,CACH;CAED,MAAM,SAAS,kBAAkB,oBAAC,MAAD,EAAM,CAAA,EAAE,EAAE,CAAC;CAE5C,MAAM,QAAQ,aAAa,EAAE,OAAO,UAAU,gBAAqB;AAEjE,MAAI,OAAO,aAAa,YAAY,CADX,OAAO,QACmB,CAAC,SAAS,UAAU,OAAO,MAAM,QAAQ,CAC1F,QAAO;AAET,SACE,oBAAC,KAAD;GAAc;GAAkB;GAC7B;GACC,CAAA;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,KAAA;GACJ,MAAM,eAAe;GACrB,SAAS,eAAe,UACpB;IAAE,GAAG,eAAe;IAAS,OAAO;IAAc,GAClD,KAAA;GACL;IACA;EAAC;EAAgB;EAAc,gBAAgB;EAAK,CAAC;CAExD,MAAM,UAAU,aACb,EAAE,MAAM,GAAG,YACV,oBAAC,WAAD;EACY;EACS;EACJ;EACf,cAAc;EACd,GAAI;EACJ,GAAI,gBAAgB;EACpB,GAAI;EACJ,CAAA,EAEJ;EACE;EACA;EACA;EACA;EACA;EACA,gBAAgB;EACjB,CACF;CAED,MAAM,mBAAmB,aAAa,EAAE,MAAM,GAAG,YAAiB,oBAAC,QAAD,EAAM,GAAI,OAAS,CAAA,EAAE,EAAE,CAAC;CAE1F,MAAM,YAAY,aACf,EAAE,MAAM,GAAG,YAAiB,oBAAC,eAAD;EAAqB;EAAM,GAAI;EAAS,CAAA,EACrE,EAAE,CACH;CAED,MAAM,iBAAiB,eACd;EACL,GAAG;EACH,IAAI;EACJ,cAAc;EACd,KAAK;EACL,KAAK;EACL,GAAG;EACH,KAAK;EACL,SAAS;EACT,OAAO;EACP,OAAO;EACR,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAED,QAAO,eACE;EACL,GAAG;EACH,GAAG;EACJ,GACD,CAAC,gBAAgB,WAAW,CAC7B"}
1
+ {"version":3,"file":"useMarkdownComponents.mjs","names":[],"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 MarkdownTable from '@/Markdown/components/MarkdownTable';\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 enableHtmlPreview,\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 html: componentProps.html,\n mermaid: componentProps.mermaid\n ? { ...componentProps.mermaid, theme: mermaidTheme }\n : undefined,\n };\n }, [highlightTheme, mermaidTheme, componentProps?.html]);\n\n const memoPre = useCallback(\n ({ node, ...props }: any) => (\n <CodeBlock\n animated={animated}\n enableHtmlPreview={enableHtmlPreview}\n enableMermaid={enableMermaid}\n fullFeatured={fullFeaturedCodeBlock}\n {...stableComponentProps}\n {...componentProps?.pre}\n {...props}\n />\n ),\n [\n animated,\n enableHtmlPreview,\n enableMermaid,\n fullFeaturedCodeBlock,\n stableComponentProps,\n componentProps?.pre,\n ],\n );\n\n const memoColorPreview = useCallback(({ node, ...props }: any) => <code {...props} />, []);\n\n const memoTable = useCallback(\n ({ node, ...props }: any) => <MarkdownTable node={node} {...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 table: memoTable,\n video: memoVideo,\n }),\n [\n memoA,\n memoBr,\n memoImg,\n memoVideo,\n memoPre,\n memoSection,\n memeP,\n memoColorPreview,\n memoKbd,\n memoTable,\n ],\n );\n\n return useMemo(\n () => ({\n ...memoComponents,\n ...components,\n }),\n [memoComponents, components],\n );\n};\n"],"mappings":";;;;;;;;;;;;AAcA,MAAa,8BAA0C;CACrD,MAAM,EACJ,YACA,UACA,WACA,gBACA,mBACA,eACA,uBACA,kBACE,mBAAmB;CAEvB,MAAM,QAAQ,aACX,EAAE,MAAM,GAAG,YAAiB,oBAAC,MAAD;EAAiB;EAAW,GAAI;EAAO,GAAI,gBAAgB;CAAI,CAAA,GAC5F,CAAC,WAAW,gBAAgB,CAAC,CAC/B;CAEA,MAAM,UAAU,aACb,EAAE,MAAM,GAAG,YAAiB,oBAAC,OAAD;EAAO,GAAI;EAAO,GAAI,gBAAgB;CAAM,CAAA,GACzE,CAAC,gBAAgB,GAAG,CACtB;CAEA,MAAM,YAAY,aACf,EAAE,MAAM,GAAG,YAAiB,oBAAC,OAAD;EAAO,GAAI;EAAO,GAAI,gBAAgB;CAAQ,CAAA,GAC3E,CAAC,gBAAgB,KAAK,CACxB;CAEA,MAAM,cAAc,aACjB,EAAE,MAAM,GAAG,YAAiB,oBAAC,SAAD;EAAwB;EAAe,GAAI;CAAQ,CAAA,GAChF,CAAC,aAAa,CAChB;CAEA,MAAM,UAAU,aACb,EAAE,eAAoB,oBAAC,QAAD;EAAQ,MAAM;EAAU,OAAO,EAAE,SAAS,cAAc;CAAI,CAAA,GACnF,CAAC,CACH;CAEA,MAAM,SAAS,kBAAkB,oBAAC,MAAD,CAAK,CAAA,GAAG,CAAC,CAAC;CAE3C,MAAM,QAAQ,aAAa,EAAE,OAAO,UAAU,gBAAqB;EAEjE,IAAI,OAAO,aAAa,YAAY,CADX,OAAO,OACkB,CAAC,CAAC,SAAS,UAAU,OAAO,MAAM,OAAO,GACzF,OAAO;EAET,OACE,oBAAC,KAAD;GAAc;GAAkB;GAC7B;EACA,CAAA;CAEP,GAAG,CAAC,CAAC;CAGL,MAAM,iBAAiB,cACf,gBAAgB,WAAW,OACjC,CAAC,KAAK,UAAU,gBAAgB,WAAW,KAAK,CAAC,CACnD;CAEA,MAAM,eAAe,cACb,gBAAgB,SAAS,OAC/B,CAAC,KAAK,UAAU,gBAAgB,SAAS,KAAK,CAAC,CACjD;CAGA,MAAM,uBAAuB,cAAc;EACzC,IAAI,CAAC,gBAAgB;EAErB,OAAO;GACL,WAAW,eAAe,YACtB;IAAE,GAAG,eAAe;IAAW,OAAO;GAAe,IACrD,KAAA;GACJ,MAAM,eAAe;GACrB,SAAS,eAAe,UACpB;IAAE,GAAG,eAAe;IAAS,OAAO;GAAa,IACjD,KAAA;EACN;CACF,GAAG;EAAC;EAAgB;EAAc,gBAAgB;CAAI,CAAC;CAEvD,MAAM,UAAU,aACb,EAAE,MAAM,GAAG,YACV,oBAAC,WAAD;EACY;EACS;EACJ;EACf,cAAc;EACd,GAAI;EACJ,GAAI,gBAAgB;EACpB,GAAI;CACL,CAAA,GAEH;EACE;EACA;EACA;EACA;EACA;EACA,gBAAgB;CAClB,CACF;CAEA,MAAM,mBAAmB,aAAa,EAAE,MAAM,GAAG,YAAiB,oBAAC,QAAD,EAAM,GAAI,MAAQ,CAAA,GAAG,CAAC,CAAC;CAEzF,MAAM,YAAY,aACf,EAAE,MAAM,GAAG,YAAiB,oBAAC,eAAD;EAAqB;EAAM,GAAI;CAAQ,CAAA,GACpE,CAAC,CACH;CAEA,MAAM,iBAAiB,eACd;EACL,GAAG;EACH,IAAI;EACJ,cAAc;EACd,KAAK;EACL,KAAK;EACL,GAAG;EACH,KAAK;EACL,SAAS;EACT,OAAO;EACP,OAAO;CACT,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEA,OAAO,eACE;EACL,GAAG;EACH,GAAG;CACL,IACA,CAAC,gBAAgB,UAAU,CAC7B;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMarkdownContent.mjs","names":[],"sources":["../../../src/hooks/useMarkdown/useMarkdownContent.ts"],"sourcesContent":["'use client';\n\nimport { useMemo, useRef, useState } from 'react';\n\nimport { useMarkdownContext } from '@/Markdown/components/MarkdownProvider';\n\nimport { isLastFormulaRenderable } from './latex';\nimport { addToCache, contentCache, preprocessMarkdownContent } from './utils';\n\nexport const useMarkdownContent = (children: string): string | undefined => {\n const { animated, enableLatex = true, enableCustomFootnotes, citations } = useMarkdownContext();\n const [validContent, setValidContent] = useState<string>('');\n const prevProcessedContent = useRef<string>('');\n\n const citationsLength = citations?.length || 0;\n\n // Calculate cache key with fewer string concatenations and better performance\n const cacheKey = useMemo(\n () => `${children}|${enableLatex ? 1 : 0}|${enableCustomFootnotes ? 1 : 0}|${citationsLength}`,\n [children, enableLatex, enableCustomFootnotes, citationsLength],\n );\n\n // Process content and use cache to avoid repeated calculations\n return useMemo(() => {\n // Try to get from cache first for best performance\n if (contentCache.has(cacheKey)) {\n return contentCache.get(cacheKey);\n }\n\n // Process new content only if needed\n let processedContent = preprocessMarkdownContent(children, {\n citationsLength,\n enableCustomFootnotes,\n enableLatex,\n });\n\n // Special handling for LaTeX content when animated\n if (animated && enableLatex) {\n const isRenderable = isLastFormulaRenderable(processedContent);\n if (!isRenderable && validContent) {\n processedContent = validContent;\n }\n }\n\n // Only update state if content changed (prevents unnecessary re-renders)\n if (processedContent !== prevProcessedContent.current) {\n setValidContent(processedContent);\n prevProcessedContent.current = processedContent;\n }\n\n // Cache the processed result\n addToCache(cacheKey, processedContent);\n return processedContent;\n }, [\n cacheKey,\n children,\n enableLatex,\n enableCustomFootnotes,\n citationsLength,\n animated,\n validContent,\n ]);\n};\n"],"mappings":";;;;;;AASA,MAAa,sBAAsB,aAAyC;CAC1E,MAAM,EAAE,UAAU,cAAc,MAAM,uBAAuB,cAAc,oBAAoB;CAC/F,MAAM,CAAC,cAAc,mBAAmB,SAAiB,GAAG;CAC5D,MAAM,uBAAuB,OAAe,GAAG;CAE/C,MAAM,kBAAkB,WAAW,UAAU;CAG7C,MAAM,WAAW,cACT,GAAG,SAAS,GAAG,cAAc,IAAI,EAAE,GAAG,wBAAwB,IAAI,EAAE,GAAG,mBAC7E;EAAC;EAAU;EAAa;EAAuB;EAAgB,CAChE;AAGD,QAAO,cAAc;AAEnB,MAAI,aAAa,IAAI,SAAS,CAC5B,QAAO,aAAa,IAAI,SAAS;EAInC,IAAI,mBAAmB,0BAA0B,UAAU;GACzD;GACA;GACA;GACD,CAAC;AAGF,MAAI,YAAY;OAEV,CADiB,wBAAwB,iBAC5B,IAAI,aACnB,oBAAmB;;AAKvB,MAAI,qBAAqB,qBAAqB,SAAS;AACrD,mBAAgB,iBAAiB;AACjC,wBAAqB,UAAU;;AAIjC,aAAW,UAAU,iBAAiB;AACtC,SAAO;IACN;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC"}
1
+ {"version":3,"file":"useMarkdownContent.mjs","names":[],"sources":["../../../src/hooks/useMarkdown/useMarkdownContent.ts"],"sourcesContent":["'use client';\n\nimport { useMemo, useRef, useState } from 'react';\n\nimport { useMarkdownContext } from '@/Markdown/components/MarkdownProvider';\n\nimport { isLastFormulaRenderable } from './latex';\nimport { addToCache, contentCache, preprocessMarkdownContent } from './utils';\n\nexport const useMarkdownContent = (children: string): string | undefined => {\n const { animated, enableLatex = true, enableCustomFootnotes, citations } = useMarkdownContext();\n const [validContent, setValidContent] = useState<string>('');\n const prevProcessedContent = useRef<string>('');\n\n const citationsLength = citations?.length || 0;\n\n // Calculate cache key with fewer string concatenations and better performance\n const cacheKey = useMemo(\n () => `${children}|${enableLatex ? 1 : 0}|${enableCustomFootnotes ? 1 : 0}|${citationsLength}`,\n [children, enableLatex, enableCustomFootnotes, citationsLength],\n );\n\n // Process content and use cache to avoid repeated calculations\n return useMemo(() => {\n // Try to get from cache first for best performance\n if (contentCache.has(cacheKey)) {\n return contentCache.get(cacheKey);\n }\n\n // Process new content only if needed\n let processedContent = preprocessMarkdownContent(children, {\n citationsLength,\n enableCustomFootnotes,\n enableLatex,\n });\n\n // Special handling for LaTeX content when animated\n if (animated && enableLatex) {\n const isRenderable = isLastFormulaRenderable(processedContent);\n if (!isRenderable && validContent) {\n processedContent = validContent;\n }\n }\n\n // Only update state if content changed (prevents unnecessary re-renders)\n if (processedContent !== prevProcessedContent.current) {\n setValidContent(processedContent);\n prevProcessedContent.current = processedContent;\n }\n\n // Cache the processed result\n addToCache(cacheKey, processedContent);\n return processedContent;\n }, [\n cacheKey,\n children,\n enableLatex,\n enableCustomFootnotes,\n citationsLength,\n animated,\n validContent,\n ]);\n};\n"],"mappings":";;;;;;AASA,MAAa,sBAAsB,aAAyC;CAC1E,MAAM,EAAE,UAAU,cAAc,MAAM,uBAAuB,cAAc,mBAAmB;CAC9F,MAAM,CAAC,cAAc,mBAAmB,SAAiB,EAAE;CAC3D,MAAM,uBAAuB,OAAe,EAAE;CAE9C,MAAM,kBAAkB,WAAW,UAAU;CAG7C,MAAM,WAAW,cACT,GAAG,SAAS,GAAG,cAAc,IAAI,EAAE,GAAG,wBAAwB,IAAI,EAAE,GAAG,mBAC7E;EAAC;EAAU;EAAa;EAAuB;CAAe,CAChE;CAGA,OAAO,cAAc;EAEnB,IAAI,aAAa,IAAI,QAAQ,GAC3B,OAAO,aAAa,IAAI,QAAQ;EAIlC,IAAI,mBAAmB,0BAA0B,UAAU;GACzD;GACA;GACA;EACF,CAAC;EAGD,IAAI,YAAY;OAEV,CADiB,wBAAwB,gBAC7B,KAAK,cACnB,mBAAmB;EAAA;EAKvB,IAAI,qBAAqB,qBAAqB,SAAS;GACrD,gBAAgB,gBAAgB;GAChC,qBAAqB,UAAU;EACjC;EAGA,WAAW,UAAU,gBAAgB;EACrC,OAAO;CACT,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMarkdownRehypePlugins.mjs","names":[],"sources":["../../../src/hooks/useMarkdown/useMarkdownRehypePlugins.ts"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\nimport { rehypeGithubAlerts } from 'rehype-github-alerts';\nimport rehypeKatex from 'rehype-katex';\nimport rehypeRaw from 'rehype-raw';\nimport type { Pluggable } from 'unified';\n\nimport { useMarkdownContext } from '@/Markdown/components/MarkdownProvider';\nimport { rehypeCustomFootnotes } from '@/Markdown/plugins/rehypeCustomFootnotes';\nimport { rehypeKatexDir } from '@/Markdown/plugins/rehypeKatexDir';\n\nexport const useMarkdownRehypePlugins = (): Pluggable[] => {\n const {\n enableLatex,\n enableCustomFootnotes,\n enableGithubAlert,\n allowHtml,\n rehypePlugins = [],\n rehypePluginsAhead = [],\n } = useMarkdownContext();\n\n const memoPlugins = useMemo(\n () =>\n [\n allowHtml && rehypeRaw,\n enableGithubAlert && rehypeGithubAlerts,\n enableLatex && rehypeKatex,\n enableLatex && rehypeKatexDir,\n enableCustomFootnotes && rehypeCustomFootnotes,\n ].filter(Boolean) as Pluggable[],\n [enableLatex, enableGithubAlert, enableCustomFootnotes, allowHtml],\n );\n\n return useMemo(\n () => [...rehypePluginsAhead, ...memoPlugins, ...rehypePlugins],\n [rehypePlugins, memoPlugins, rehypePluginsAhead],\n );\n};\n"],"mappings":";;;;;;;;;AAYA,MAAa,iCAA8C;CACzD,MAAM,EACJ,aACA,uBACA,mBACA,WACA,gBAAgB,EAAE,EAClB,qBAAqB,EAAE,KACrB,oBAAoB;CAExB,MAAM,cAAc,cAEhB;EACE,aAAa;EACb,qBAAqB;EACrB,eAAe;EACf,eAAe;EACf,yBAAyB;EAC1B,CAAC,OAAO,QAAQ,EACnB;EAAC;EAAa;EAAmB;EAAuB;EAAU,CACnE;AAED,QAAO,cACC;EAAC,GAAG;EAAoB,GAAG;EAAa,GAAG;EAAc,EAC/D;EAAC;EAAe;EAAa;EAAmB,CACjD"}
1
+ {"version":3,"file":"useMarkdownRehypePlugins.mjs","names":[],"sources":["../../../src/hooks/useMarkdown/useMarkdownRehypePlugins.ts"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\nimport { rehypeGithubAlerts } from 'rehype-github-alerts';\nimport rehypeKatex from 'rehype-katex';\nimport rehypeRaw from 'rehype-raw';\nimport type { Pluggable } from 'unified';\n\nimport { useMarkdownContext } from '@/Markdown/components/MarkdownProvider';\nimport { rehypeCustomFootnotes } from '@/Markdown/plugins/rehypeCustomFootnotes';\nimport { rehypeKatexDir } from '@/Markdown/plugins/rehypeKatexDir';\n\nexport const useMarkdownRehypePlugins = (): Pluggable[] => {\n const {\n enableLatex,\n enableCustomFootnotes,\n enableGithubAlert,\n allowHtml,\n rehypePlugins = [],\n rehypePluginsAhead = [],\n } = useMarkdownContext();\n\n const memoPlugins = useMemo(\n () =>\n [\n allowHtml && rehypeRaw,\n enableGithubAlert && rehypeGithubAlerts,\n enableLatex && rehypeKatex,\n enableLatex && rehypeKatexDir,\n enableCustomFootnotes && rehypeCustomFootnotes,\n ].filter(Boolean) as Pluggable[],\n [enableLatex, enableGithubAlert, enableCustomFootnotes, allowHtml],\n );\n\n return useMemo(\n () => [...rehypePluginsAhead, ...memoPlugins, ...rehypePlugins],\n [rehypePlugins, memoPlugins, rehypePluginsAhead],\n );\n};\n"],"mappings":";;;;;;;;;AAYA,MAAa,iCAA8C;CACzD,MAAM,EACJ,aACA,uBACA,mBACA,WACA,gBAAgB,CAAC,GACjB,qBAAqB,CAAC,MACpB,mBAAmB;CAEvB,MAAM,cAAc,cAEhB;EACE,aAAa;EACb,qBAAqB;EACrB,eAAe;EACf,eAAe;EACf,yBAAyB;CAC3B,CAAC,CAAC,OAAO,OAAO,GAClB;EAAC;EAAa;EAAmB;EAAuB;CAAS,CACnE;CAEA,OAAO,cACC;EAAC,GAAG;EAAoB,GAAG;EAAa,GAAG;CAAa,GAC9D;EAAC;EAAe;EAAa;CAAkB,CACjD;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMarkdownRemarkPlugins.mjs","names":[],"sources":["../../../src/hooks/useMarkdown/useMarkdownRemarkPlugins.ts"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\nimport remarkBreaks from 'remark-breaks';\nimport remarkCjkFriendly from 'remark-cjk-friendly';\nimport remarkGfm from 'remark-gfm';\nimport remarkMath from 'remark-math';\nimport type { Pluggable } from 'unified';\n\nimport { useMarkdownContext } from '@/Markdown/components/MarkdownProvider';\nimport { remarkBr } from '@/Markdown/plugins/remarkBr';\nimport { remarkCustomFootnotes } from '@/Markdown/plugins/remarkCustomFootnotes';\nimport { remarkGfmPlus } from '@/Markdown/plugins/remarkGfmPlus';\nimport { remarkVideo } from '@/Markdown/plugins/remarkVideo';\n\nexport const useMarkdownRemarkPlugins = (): Pluggable[] => {\n const {\n enableLatex,\n enableCustomFootnotes,\n remarkPlugins = [],\n remarkPluginsAhead = [],\n variant,\n allowHtml,\n } = useMarkdownContext();\n\n const isChatMode = variant === 'chat';\n\n const memoPlugins = useMemo(\n () =>\n [\n remarkCjkFriendly,\n // Parse math before GFM so that '|' inside $...$ isn't treated as a table separator\n enableLatex && remarkMath,\n [remarkGfm, { singleTilde: false }],\n !allowHtml && remarkBr,\n !allowHtml && remarkGfmPlus,\n !allowHtml && remarkVideo,\n enableCustomFootnotes && remarkCustomFootnotes,\n isChatMode && remarkBreaks,\n ].filter(Boolean) as Pluggable[],\n [allowHtml, isChatMode, enableLatex, enableCustomFootnotes],\n );\n\n return useMemo(\n () => [...remarkPluginsAhead, ...memoPlugins, ...remarkPlugins],\n [remarkPlugins, memoPlugins, remarkPluginsAhead],\n );\n};\n"],"mappings":";;;;;;;;;;;;AAeA,MAAa,iCAA8C;CACzD,MAAM,EACJ,aACA,uBACA,gBAAgB,EAAE,EAClB,qBAAqB,EAAE,EACvB,SACA,cACE,oBAAoB;CAExB,MAAM,aAAa,YAAY;CAE/B,MAAM,cAAc,cAEhB;EACE;EAEA,eAAe;EACf,CAAC,WAAW,EAAE,aAAa,OAAO,CAAC;EACnC,CAAC,aAAa;EACd,CAAC,aAAa;EACd,CAAC,aAAa;EACd,yBAAyB;EACzB,cAAc;EACf,CAAC,OAAO,QAAQ,EACnB;EAAC;EAAW;EAAY;EAAa;EAAsB,CAC5D;AAED,QAAO,cACC;EAAC,GAAG;EAAoB,GAAG;EAAa,GAAG;EAAc,EAC/D;EAAC;EAAe;EAAa;EAAmB,CACjD"}
1
+ {"version":3,"file":"useMarkdownRemarkPlugins.mjs","names":[],"sources":["../../../src/hooks/useMarkdown/useMarkdownRemarkPlugins.ts"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\nimport remarkBreaks from 'remark-breaks';\nimport remarkCjkFriendly from 'remark-cjk-friendly';\nimport remarkGfm from 'remark-gfm';\nimport remarkMath from 'remark-math';\nimport type { Pluggable } from 'unified';\n\nimport { useMarkdownContext } from '@/Markdown/components/MarkdownProvider';\nimport { remarkBr } from '@/Markdown/plugins/remarkBr';\nimport { remarkCustomFootnotes } from '@/Markdown/plugins/remarkCustomFootnotes';\nimport { remarkGfmPlus } from '@/Markdown/plugins/remarkGfmPlus';\nimport { remarkVideo } from '@/Markdown/plugins/remarkVideo';\n\nexport const useMarkdownRemarkPlugins = (): Pluggable[] => {\n const {\n enableLatex,\n enableCustomFootnotes,\n remarkPlugins = [],\n remarkPluginsAhead = [],\n variant,\n allowHtml,\n } = useMarkdownContext();\n\n const isChatMode = variant === 'chat';\n\n const memoPlugins = useMemo(\n () =>\n [\n remarkCjkFriendly,\n // Parse math before GFM so that '|' inside $...$ isn't treated as a table separator\n enableLatex && remarkMath,\n [remarkGfm, { singleTilde: false }],\n !allowHtml && remarkBr,\n !allowHtml && remarkGfmPlus,\n !allowHtml && remarkVideo,\n enableCustomFootnotes && remarkCustomFootnotes,\n isChatMode && remarkBreaks,\n ].filter(Boolean) as Pluggable[],\n [allowHtml, isChatMode, enableLatex, enableCustomFootnotes],\n );\n\n return useMemo(\n () => [...remarkPluginsAhead, ...memoPlugins, ...remarkPlugins],\n [remarkPlugins, memoPlugins, remarkPluginsAhead],\n );\n};\n"],"mappings":";;;;;;;;;;;;AAeA,MAAa,iCAA8C;CACzD,MAAM,EACJ,aACA,uBACA,gBAAgB,CAAC,GACjB,qBAAqB,CAAC,GACtB,SACA,cACE,mBAAmB;CAEvB,MAAM,aAAa,YAAY;CAE/B,MAAM,cAAc,cAEhB;EACE;EAEA,eAAe;EACf,CAAC,WAAW,EAAE,aAAa,MAAM,CAAC;EAClC,CAAC,aAAa;EACd,CAAC,aAAa;EACd,CAAC,aAAa;EACd,yBAAyB;EACzB,cAAc;CAChB,CAAC,CAAC,OAAO,OAAO,GAClB;EAAC;EAAW;EAAY;EAAa;CAAqB,CAC5D;CAEA,OAAO,cACC;EAAC,GAAG;EAAoB,GAAG;EAAa,GAAG;CAAa,GAC9D;EAAC;EAAe;EAAa;CAAkB,CACjD;AACF"}
@@ -7,11 +7,7 @@ interface PreprocessOptions {
7
7
  enableCustomFootnotes?: boolean;
8
8
  enableLatex?: boolean;
9
9
  }
10
- declare const preprocessMarkdownContent: (str: string, {
11
- enableCustomFootnotes,
12
- enableLatex,
13
- citationsLength
14
- }?: PreprocessOptions) => string;
10
+ declare const preprocessMarkdownContent: (str: string, { enableCustomFootnotes, enableLatex, citationsLength }?: PreprocessOptions) => string;
15
11
  //#endregion
16
12
  export { preprocessMarkdownContent };
17
13
  //# sourceMappingURL=utils.d.mts.map
@@ -77,6 +77,6 @@ const preprocessMarkdownContent = (str, { enableCustomFootnotes, enableLatex, ci
77
77
  return content;
78
78
  };
79
79
  //#endregion
80
- export { addToCache, contentCache, preprocessMarkdownContent };
80
+ export { addToCache, contentCache, preprocessMarkdownContent, transformCitations };
81
81
 
82
82
  //# sourceMappingURL=utils.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","names":[],"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,MAAM,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,MAAM,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
+ {"version":3,"file":"utils.mjs","names":[],"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,IAAoB;;;;;;;;AASpD,MAAa,cAAc,KAAa,UAAkB;CACxD,IAAI,aAAa,QAAQ,YAAY;EAEnC,MAAM,WAAW,aAAa,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;EAC5C,IAAI,UAAU,aAAa,OAAO,QAAQ;CAC5C;CACA,aAAa,IAAI,KAAK,KAAK;AAC7B;;;;;;;;AASA,MAAa,sBAAsB,YAAoB,SAAiB,MAAM;CAC5E,IAAI,WAAW,GAAG,OAAO;CAGzB,MAAM,kBAAkB,MAAM,KAAK,EAAE,OAAO,CAAC,CAAC,CAC3C,KAAK,EAAE,CAAC,CACR,KAAK,GAAG,UAAU,QAAQ,CAAC;CAG9B,MAAM,UAAU,IAAI,OAAO,OAAO,gBAAgB,KAAK,GAAG,EAAE,OAAO,GAAG;CACtE,MAAM,UAA2D,CAAC;CAElE,IAAI;CACJ,QAAQ,QAAQ,QAAQ,KAAK,UAAU,OAAO,MAC5C,QAAQ,KAAK;EACX,IAAI,MAAM;EACV,OAAO,MAAM;EACb,QAAQ,MAAM,EAAE,CAAC;CACnB,CAAC;CAIH,MAAM,iBAAmD,CAAC;CAG1D,MAAM,kBAAkB;CACxB,QAAQ,QAAQ,gBAAgB,KAAK,UAAU,OAAO,MACpD,eAAe,KAAK;EAClB,KAAK,MAAM,QAAQ,MAAM,EAAE,CAAC,SAAS;EACrC,OAAO,MAAM;CACf,CAAC;CAIH,MAAM,mBAAmB;CACzB,QAAQ,QAAQ,iBAAiB,KAAK,UAAU,OAAO,MACrD,eAAe,KAAK;EAClB,KAAK,MAAM,QAAQ,MAAM,EAAE,CAAC,SAAS;EACrC,OAAO,MAAM;CACf,CAAC;CAIH,MAAM,iBAAiB;CACvB,QAAQ,QAAQ,eAAe,KAAK,UAAU,OAAO,MACnD,eAAe,KAAK;EAClB,KAAK,MAAM,QAAQ,MAAM,EAAE,CAAC,SAAS;EACrC,OAAO,MAAM;CACf,CAAC;CAIH,MAAM,kBAAkB;CACxB,QAAQ,QAAQ,gBAAgB,KAAK,UAAU,OAAO,MACpD,eAAe,KAAK;EAClB,KAAK,MAAM,QAAQ,MAAM,EAAE,CAAC,SAAS;EACrC,OAAO,MAAM;CACf,CAAC;CAIH,MAAM,eAAe,QAAQ,QAAQ,aAAa;EAChD,OAAO,CAAC,eAAe,MACpB,UAAU,SAAS,SAAS,MAAM,SAAS,SAAS,SAAS,MAAM,GACtE;CACF,CAAC;CAGD,IAAI,SAAS;CACb,KAAK,IAAI,IAAI,aAAa,SAAS,GAAG,KAAK,GAAG,KAAK;EACjD,MAAM,WAAW,aAAa;EAC9B,MAAM,SAAS,OAAO,MAAM,GAAG,KAAK,IAAI,GAAG,SAAS,KAAK,CAAC;EAC1D,MAAM,QAAQ,OAAO,MAAM,KAAK,IAAI,GAAG,SAAS,QAAQ,SAAS,MAAM,CAAC;EACxE,SAAS,SAAS,cAAc,SAAS,GAAG,aAAa,SAAS,GAAG,KAAK;CAC5E;CAGA,OAAO,OAAO,WAAW,MAAM,KAAK;AACtC;AAWA,MAAa,6BACX,KACA,EAAE,uBAAuB,aAAa,oBAAuC,CAAC,MAC3E;CACH,IAAI,UAAU;CAGd,IAAI,aACF,UAAU,gBAAgB,OAAO;CAInC,IAAI,uBACF,UAAU,mBAAmB,SAAS,eAAe;CAGvD,OAAO;AACT"}
@@ -2,6 +2,8 @@
2
2
  import { useEffect, useMemo, useState } from "react";
3
3
  import { useTheme } from "antd-style";
4
4
  import { Md5 } from "ts-md5";
5
+ //#region src/hooks/useMermaid.ts
6
+ const MD5_LENGTH_THRESHOLD = 1e4;
5
7
  const mermaidCache = /* @__PURE__ */ new Map();
6
8
  const MAX_CACHE_SIZE = 500;
7
9
  const cleanupCache = () => {
@@ -126,6 +128,6 @@ const useMermaid = (content, { id, theme: customTheme, securityLevel }) => {
126
128
  return data;
127
129
  };
128
130
  //#endregion
129
- export { createMermaidConfig, loadMermaid, useMermaid };
131
+ export { MD5_LENGTH_THRESHOLD, createMermaidConfig, loadMermaid, useMermaid };
130
132
 
131
133
  //# sourceMappingURL=useMermaid.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMermaid.mjs","names":[],"sources":["../../src/hooks/useMermaid.ts"],"sourcesContent":["'use client';\n\nimport { useTheme } from 'antd-style';\nimport type { MermaidConfig } from 'mermaid';\nimport { useEffect, useMemo, useState } from 'react';\nimport { Md5 } from 'ts-md5';\n\n// 缓存已验证的图表内容\nexport const MD5_LENGTH_THRESHOLD = 10_000;\n\n// Application-level cache for rendered Mermaid SVG\n// Key: cacheKey string, Value: Promise<string>\nconst mermaidCache = new Map<string, Promise<string>>();\n\n// Maximum cache size to prevent memory leaks\nconst MAX_CACHE_SIZE = 500;\n\n// Clean up old cache entries when limit is reached\nconst cleanupCache = () => {\n if (mermaidCache.size > MAX_CACHE_SIZE) {\n // Remove oldest 20% of entries\n const entriesToRemove = Math.floor(MAX_CACHE_SIZE * 0.2);\n const keysToRemove = Array.from(mermaidCache.keys()).slice(0, entriesToRemove);\n for (const key of keysToRemove) {\n mermaidCache.delete(key);\n }\n }\n};\n\n// 懒加载 mermaid 实例\nlet mermaidPromise: Promise<typeof import('mermaid').default | null> | null = null;\n\nexport const loadMermaid = (): Promise<typeof import('mermaid').default | null> => {\n if (typeof window === 'undefined') return Promise.resolve(null);\n\n if (!mermaidPromise) {\n mermaidPromise = import('mermaid').then((mod) => mod.default);\n }\n\n return mermaidPromise;\n};\n\n// Helper to create mermaid config\nexport const createMermaidConfig = (\n theme: ReturnType<typeof useTheme>,\n customTheme?: MermaidConfig['theme'],\n // SECURITY: Keep 'strict' as the default. Using 'loose' causes Mermaid to render\n // node labels via innerHTML, enabling XSS when diagram content is user-controlled.\n // Only pass 'loose' if your use case explicitly requires HTML labels and you control\n // the diagram source entirely.\n securityLevel: MermaidConfig['securityLevel'] = 'strict',\n): MermaidConfig => ({\n fontFamily: theme.fontFamilyCode,\n gantt: {\n useWidth: 1920,\n },\n securityLevel,\n startOnLoad: false,\n theme: customTheme || (theme.isDarkMode ? 'dark' : 'neutral'),\n themeVariables: customTheme\n ? undefined\n : {\n errorBkgColor: theme.colorTextDescription,\n errorTextColor: theme.colorTextDescription,\n fontFamily: theme.fontFamily,\n lineColor: theme.colorTextSecondary,\n mainBkg: theme.colorBgContainer,\n noteBkgColor: theme.colorInfoBg,\n noteTextColor: theme.colorInfoText,\n pie1: theme.geekblue,\n pie2: theme.colorWarning,\n pie3: theme.colorSuccess,\n pie4: theme.colorError,\n primaryBorderColor: theme.colorBorder,\n primaryColor: theme.colorBgContainer,\n primaryTextColor: theme.colorText,\n secondaryBorderColor: theme.colorInfoBorder,\n secondaryColor: theme.colorInfoBg,\n secondaryTextColor: theme.colorInfoText,\n tertiaryBorderColor: theme.colorSuccessBorder,\n tertiaryColor: theme.colorSuccessBg,\n tertiaryTextColor: theme.colorSuccessText,\n textColor: theme.colorText,\n },\n});\n\n/**\n * 验证并处理 Mermaid 图表内容 - 优化版本(移除 SWR)\n */\nexport const useMermaid = (\n content: string,\n {\n id,\n theme: customTheme,\n securityLevel,\n }: {\n id: string;\n // SECURITY: Defaults to 'strict'. Set to 'loose' only when you fully control\n // the diagram source and intentionally need HTML rendering in node labels.\n securityLevel?: MermaidConfig['securityLevel'];\n theme?: MermaidConfig['theme'];\n },\n): string => {\n const theme = useTheme();\n const [data, setData] = useState<string>('');\n\n // 提取主题相关配置到 useMemo 中 - 只依赖实际使用的 theme 属性\n const mermaidConfig = useMemo(\n () => createMermaidConfig(theme, customTheme, securityLevel),\n [\n theme.fontFamilyCode,\n theme.isDarkMode,\n theme.colorTextDescription,\n theme.fontFamily,\n theme.colorTextSecondary,\n theme.colorBgContainer,\n theme.colorInfoBg,\n theme.colorInfoText,\n theme.geekblue,\n theme.colorWarning,\n theme.colorSuccess,\n theme.colorError,\n theme.colorBorder,\n theme.colorInfoBorder,\n theme.colorSuccessBorder,\n theme.colorSuccessBg,\n theme.colorSuccessText,\n theme.colorText,\n customTheme,\n securityLevel,\n ],\n );\n\n // 为长内容生成哈希键\n const cacheKey = useMemo((): string => {\n const hash = content.length < MD5_LENGTH_THRESHOLD ? content : Md5.hashStr(content);\n return [id, customTheme || (theme.isDarkMode ? 'd' : 'l'), hash].filter(Boolean).join('-');\n }, [content, id, theme.isDarkMode, customTheme]);\n\n useEffect(() => {\n // Check cache first\n const cachedPromise = mermaidCache.get(cacheKey);\n if (cachedPromise) {\n cachedPromise\n .then((svg) => {\n setData(svg);\n })\n .catch(() => {\n // Silently handle errors, fallback will be handled in the promise\n });\n return;\n }\n\n // Create new promise for rendering\n const renderPromise = (async (): Promise<string> => {\n try {\n const mermaidInstance = await loadMermaid();\n if (!mermaidInstance) return '';\n\n // 验证语法\n const isValid = await mermaidInstance.parse(content);\n\n if (isValid) {\n // 初始化并渲染\n mermaidInstance.initialize(mermaidConfig);\n const { svg } = await mermaidInstance.render(id, content);\n return svg;\n } else {\n throw new Error('Mermaid 语法无效');\n }\n } catch (error_) {\n console.error('Mermaid 解析错误:', error_);\n return '';\n }\n })();\n\n // Cache the promise\n mermaidCache.set(cacheKey, renderPromise);\n cleanupCache();\n\n // Handle promise result\n renderPromise\n .then((svg) => {\n // Only update if this is still the current cache key\n if (mermaidCache.get(cacheKey) === renderPromise) {\n setData(svg);\n }\n })\n .catch(() => {\n // Remove failed promise from cache\n if (mermaidCache.get(cacheKey) === renderPromise) {\n mermaidCache.delete(cacheKey);\n }\n });\n }, [cacheKey, content, id, mermaidConfig]);\n\n return data;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"useMermaid.mjs","names":[],"sources":["../../src/hooks/useMermaid.ts"],"sourcesContent":["'use client';\n\nimport { useTheme } from 'antd-style';\nimport type { MermaidConfig } from 'mermaid';\nimport { useEffect, useMemo, useState } from 'react';\nimport { Md5 } from 'ts-md5';\n\n// 缓存已验证的图表内容\nexport const MD5_LENGTH_THRESHOLD = 10_000;\n\n// Application-level cache for rendered Mermaid SVG\n// Key: cacheKey string, Value: Promise<string>\nconst mermaidCache = new Map<string, Promise<string>>();\n\n// Maximum cache size to prevent memory leaks\nconst MAX_CACHE_SIZE = 500;\n\n// Clean up old cache entries when limit is reached\nconst cleanupCache = () => {\n if (mermaidCache.size > MAX_CACHE_SIZE) {\n // Remove oldest 20% of entries\n const entriesToRemove = Math.floor(MAX_CACHE_SIZE * 0.2);\n const keysToRemove = Array.from(mermaidCache.keys()).slice(0, entriesToRemove);\n for (const key of keysToRemove) {\n mermaidCache.delete(key);\n }\n }\n};\n\n// 懒加载 mermaid 实例\nlet mermaidPromise: Promise<typeof import('mermaid').default | null> | null = null;\n\nexport const loadMermaid = (): Promise<typeof import('mermaid').default | null> => {\n if (typeof window === 'undefined') return Promise.resolve(null);\n\n if (!mermaidPromise) {\n mermaidPromise = import('mermaid').then((mod) => mod.default);\n }\n\n return mermaidPromise;\n};\n\n// Helper to create mermaid config\nexport const createMermaidConfig = (\n theme: ReturnType<typeof useTheme>,\n customTheme?: MermaidConfig['theme'],\n // SECURITY: Keep 'strict' as the default. Using 'loose' causes Mermaid to render\n // node labels via innerHTML, enabling XSS when diagram content is user-controlled.\n // Only pass 'loose' if your use case explicitly requires HTML labels and you control\n // the diagram source entirely.\n securityLevel: MermaidConfig['securityLevel'] = 'strict',\n): MermaidConfig => ({\n fontFamily: theme.fontFamilyCode,\n gantt: {\n useWidth: 1920,\n },\n securityLevel,\n startOnLoad: false,\n theme: customTheme || (theme.isDarkMode ? 'dark' : 'neutral'),\n themeVariables: customTheme\n ? undefined\n : {\n errorBkgColor: theme.colorTextDescription,\n errorTextColor: theme.colorTextDescription,\n fontFamily: theme.fontFamily,\n lineColor: theme.colorTextSecondary,\n mainBkg: theme.colorBgContainer,\n noteBkgColor: theme.colorInfoBg,\n noteTextColor: theme.colorInfoText,\n pie1: theme.geekblue,\n pie2: theme.colorWarning,\n pie3: theme.colorSuccess,\n pie4: theme.colorError,\n primaryBorderColor: theme.colorBorder,\n primaryColor: theme.colorBgContainer,\n primaryTextColor: theme.colorText,\n secondaryBorderColor: theme.colorInfoBorder,\n secondaryColor: theme.colorInfoBg,\n secondaryTextColor: theme.colorInfoText,\n tertiaryBorderColor: theme.colorSuccessBorder,\n tertiaryColor: theme.colorSuccessBg,\n tertiaryTextColor: theme.colorSuccessText,\n textColor: theme.colorText,\n },\n});\n\n/**\n * 验证并处理 Mermaid 图表内容 - 优化版本(移除 SWR)\n */\nexport const useMermaid = (\n content: string,\n {\n id,\n theme: customTheme,\n securityLevel,\n }: {\n id: string;\n // SECURITY: Defaults to 'strict'. Set to 'loose' only when you fully control\n // the diagram source and intentionally need HTML rendering in node labels.\n securityLevel?: MermaidConfig['securityLevel'];\n theme?: MermaidConfig['theme'];\n },\n): string => {\n const theme = useTheme();\n const [data, setData] = useState<string>('');\n\n // 提取主题相关配置到 useMemo 中 - 只依赖实际使用的 theme 属性\n const mermaidConfig = useMemo(\n () => createMermaidConfig(theme, customTheme, securityLevel),\n [\n theme.fontFamilyCode,\n theme.isDarkMode,\n theme.colorTextDescription,\n theme.fontFamily,\n theme.colorTextSecondary,\n theme.colorBgContainer,\n theme.colorInfoBg,\n theme.colorInfoText,\n theme.geekblue,\n theme.colorWarning,\n theme.colorSuccess,\n theme.colorError,\n theme.colorBorder,\n theme.colorInfoBorder,\n theme.colorSuccessBorder,\n theme.colorSuccessBg,\n theme.colorSuccessText,\n theme.colorText,\n customTheme,\n securityLevel,\n ],\n );\n\n // 为长内容生成哈希键\n const cacheKey = useMemo((): string => {\n const hash = content.length < MD5_LENGTH_THRESHOLD ? content : Md5.hashStr(content);\n return [id, customTheme || (theme.isDarkMode ? 'd' : 'l'), hash].filter(Boolean).join('-');\n }, [content, id, theme.isDarkMode, customTheme]);\n\n useEffect(() => {\n // Check cache first\n const cachedPromise = mermaidCache.get(cacheKey);\n if (cachedPromise) {\n cachedPromise\n .then((svg) => {\n setData(svg);\n })\n .catch(() => {\n // Silently handle errors, fallback will be handled in the promise\n });\n return;\n }\n\n // Create new promise for rendering\n const renderPromise = (async (): Promise<string> => {\n try {\n const mermaidInstance = await loadMermaid();\n if (!mermaidInstance) return '';\n\n // 验证语法\n const isValid = await mermaidInstance.parse(content);\n\n if (isValid) {\n // 初始化并渲染\n mermaidInstance.initialize(mermaidConfig);\n const { svg } = await mermaidInstance.render(id, content);\n return svg;\n } else {\n throw new Error('Mermaid 语法无效');\n }\n } catch (error_) {\n console.error('Mermaid 解析错误:', error_);\n return '';\n }\n })();\n\n // Cache the promise\n mermaidCache.set(cacheKey, renderPromise);\n cleanupCache();\n\n // Handle promise result\n renderPromise\n .then((svg) => {\n // Only update if this is still the current cache key\n if (mermaidCache.get(cacheKey) === renderPromise) {\n setData(svg);\n }\n })\n .catch(() => {\n // Remove failed promise from cache\n if (mermaidCache.get(cacheKey) === renderPromise) {\n mermaidCache.delete(cacheKey);\n }\n });\n }, [cacheKey, content, id, mermaidConfig]);\n\n return data;\n};\n"],"mappings":"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"}