@lobehub/ui 4.33.4 → 4.34.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (600) hide show
  1. package/README.md +3 -3
  2. package/es/A/index.mjs.map +1 -1
  3. package/es/Accordion/Accordion.d.mts +2 -2
  4. package/es/Accordion/Accordion.mjs +1 -1
  5. package/es/Accordion/Accordion.mjs.map +1 -1
  6. package/es/Accordion/AccordionItem.d.mts +2 -2
  7. package/es/Accordion/AccordionItem.mjs +13 -13
  8. package/es/Accordion/AccordionItem.mjs.map +1 -1
  9. package/es/Accordion/context.mjs +2 -2
  10. package/es/Accordion/context.mjs.map +1 -1
  11. package/es/ActionIcon/ActionIcon.d.mts +2 -2
  12. package/es/ActionIcon/ActionIcon.mjs +2 -2
  13. package/es/ActionIcon/ActionIcon.mjs.map +1 -1
  14. package/es/ActionIcon/style.mjs.map +1 -1
  15. package/es/ActionIconGroup/ActionIconGroup.mjs +3 -3
  16. package/es/ActionIconGroup/ActionIconGroup.mjs.map +1 -1
  17. package/es/ActionIconGroup/style.mjs.map +1 -1
  18. package/es/Alert/Alert.d.mts +2 -2
  19. package/es/Alert/Alert.mjs +6 -6
  20. package/es/Alert/Alert.mjs.map +1 -1
  21. package/es/Alert/style.mjs.map +1 -1
  22. package/es/AutoComplete/Select.mjs +1 -1
  23. package/es/AutoComplete/Select.mjs.map +1 -1
  24. package/es/AutoComplete/style.mjs.map +1 -1
  25. package/es/Avatar/Avatar.mjs +4 -4
  26. package/es/Avatar/Avatar.mjs.map +1 -1
  27. package/es/Avatar/AvatarGroup/index.d.mts +2 -2
  28. package/es/Avatar/AvatarGroup/index.mjs +5 -5
  29. package/es/Avatar/AvatarGroup/index.mjs.map +1 -1
  30. package/es/Avatar/index.mjs.map +1 -1
  31. package/es/Avatar/style.mjs.map +1 -1
  32. package/es/Avatar/utils.mjs.map +1 -1
  33. package/es/Block/style.mjs.map +1 -1
  34. package/es/Burger/Burger.d.mts +2 -2
  35. package/es/Burger/Burger.mjs +2 -2
  36. package/es/Burger/Burger.mjs.map +1 -1
  37. package/es/Burger/type.d.mts +1 -1
  38. package/es/Button/Button.mjs +7 -7
  39. package/es/Button/Button.mjs.map +1 -1
  40. package/es/Button/style.mjs.map +1 -1
  41. package/es/Checkbox/Checkbox.mjs +6 -6
  42. package/es/Checkbox/Checkbox.mjs.map +1 -1
  43. package/es/Checkbox/CheckboxGroup.mjs +2 -2
  44. package/es/Checkbox/CheckboxGroup.mjs.map +1 -1
  45. package/es/Checkbox/index.mjs.map +1 -1
  46. package/es/CodeDiff/CodeDiff.d.mts +2 -2
  47. package/es/CodeDiff/CodeDiff.mjs +3 -3
  48. package/es/CodeDiff/CodeDiff.mjs.map +1 -1
  49. package/es/CodeDiff/PatchDiff.d.mts +2 -2
  50. package/es/CodeDiff/PatchDiff.mjs +3 -3
  51. package/es/CodeDiff/PatchDiff.mjs.map +1 -1
  52. package/es/CodeDiff/style.mjs.map +1 -1
  53. package/es/CodeEditor/CodeEditor.d.mts +2 -2
  54. package/es/CodeEditor/CodeEditor.mjs +3 -3
  55. package/es/CodeEditor/CodeEditor.mjs.map +1 -1
  56. package/es/CodeEditor/style.mjs.map +1 -1
  57. package/es/Collapse/Collapse.d.mts +2 -2
  58. package/es/Collapse/Collapse.mjs +5 -5
  59. package/es/Collapse/Collapse.mjs.map +1 -1
  60. package/es/Collapse/style.mjs.map +1 -1
  61. package/es/ColorSwatches/ColorSwatches.mjs +9 -9
  62. package/es/ColorSwatches/ColorSwatches.mjs.map +1 -1
  63. package/es/ConfigProvider/index.d.mts +3 -3
  64. package/es/ConfigProvider/index.mjs.map +1 -1
  65. package/es/ContextMenu/ContextMenuHost.d.mts +3 -3
  66. package/es/ContextMenu/ContextMenuHost.mjs +10 -3
  67. package/es/ContextMenu/ContextMenuHost.mjs.map +1 -1
  68. package/es/ContextMenu/ContextMenuTrigger.mjs.map +1 -1
  69. package/es/ContextMenu/renderItems.d.mts +1 -1
  70. package/es/ContextMenu/renderItems.mjs +39 -14
  71. package/es/ContextMenu/renderItems.mjs.map +1 -1
  72. package/es/ContextMenu/store.d.mts +3 -1
  73. package/es/ContextMenu/store.mjs +1 -0
  74. package/es/ContextMenu/store.mjs.map +1 -1
  75. package/es/CopyButton/CopyButton.d.mts +2 -2
  76. package/es/DatePicker/DatePicker.d.mts +2 -2
  77. package/es/DatePicker/DatePicker.mjs +1 -1
  78. package/es/DatePicker/DatePicker.mjs.map +1 -1
  79. package/es/DatePicker/style.mjs.map +1 -1
  80. package/es/DraggablePanel/DraggablePanel.mjs +7 -7
  81. package/es/DraggablePanel/DraggablePanel.mjs.map +1 -1
  82. package/es/DraggablePanel/components/DraggablePanelBody.d.mts +2 -2
  83. package/es/DraggablePanel/components/DraggablePanelContainer.d.mts +2 -2
  84. package/es/DraggablePanel/components/DraggablePanelFooter.d.mts +2 -2
  85. package/es/DraggablePanel/components/DraggablePanelFooter.mjs +1 -1
  86. package/es/DraggablePanel/components/DraggablePanelFooter.mjs.map +1 -1
  87. package/es/DraggablePanel/components/DraggablePanelHeader.d.mts +2 -2
  88. package/es/DraggablePanel/components/DraggablePanelHeader.mjs +5 -5
  89. package/es/DraggablePanel/components/DraggablePanelHeader.mjs.map +1 -1
  90. package/es/DraggablePanel/index.mjs +1 -1
  91. package/es/DraggablePanel/index.mjs.map +1 -1
  92. package/es/DraggablePanel/style.mjs.map +1 -1
  93. package/es/DraggableSideNav/DraggableSideNav.d.mts +2 -2
  94. package/es/DraggableSideNav/DraggableSideNav.mjs +3 -3
  95. package/es/DraggableSideNav/DraggableSideNav.mjs.map +1 -1
  96. package/es/Drawer/Drawer.d.mts +2 -2
  97. package/es/Drawer/Drawer.mjs +5 -5
  98. package/es/Drawer/Drawer.mjs.map +1 -1
  99. package/es/Dropdown/Dropdown.d.mts +2 -2
  100. package/es/DropdownMenu/DropdownMenu.d.mts +2 -2
  101. package/es/DropdownMenu/DropdownMenu.mjs +7 -3
  102. package/es/DropdownMenu/DropdownMenu.mjs.map +1 -1
  103. package/es/DropdownMenu/atoms.d.mts +33 -17
  104. package/es/DropdownMenu/atoms.mjs +20 -6
  105. package/es/DropdownMenu/atoms.mjs.map +1 -1
  106. package/es/DropdownMenu/index.d.mts +2 -2
  107. package/es/DropdownMenu/index.mjs +2 -2
  108. package/es/DropdownMenu/renderItems.d.mts +1 -1
  109. package/es/DropdownMenu/renderItems.mjs +36 -14
  110. package/es/DropdownMenu/renderItems.mjs.map +1 -1
  111. package/es/DropdownMenu/type.d.mts +8 -1
  112. package/es/EditableText/ControlInput.mjs +29 -29
  113. package/es/EditableText/ControlInput.mjs.map +1 -1
  114. package/es/EditableText/EditableText.d.mts +2 -2
  115. package/es/EditableText/EditableText.mjs +14 -14
  116. package/es/EditableText/EditableText.mjs.map +1 -1
  117. package/es/EditorSlashMenu/EditorSlashMenu.mjs +2 -2
  118. package/es/EditorSlashMenu/EditorSlashMenu.mjs.map +1 -1
  119. package/es/EditorSlashMenu/MenuItemRenderer.mjs +1 -1
  120. package/es/EditorSlashMenu/MenuItemRenderer.mjs.map +1 -1
  121. package/es/EditorSlashMenu/atoms.d.mts +10 -1
  122. package/es/EditorSlashMenu/atoms.mjs +3 -4
  123. package/es/EditorSlashMenu/atoms.mjs.map +1 -1
  124. package/es/EmojiPicker/AvatarUploader.mjs +5 -5
  125. package/es/EmojiPicker/AvatarUploader.mjs.map +1 -1
  126. package/es/EmojiPicker/EmojiPicker.d.mts +2 -2
  127. package/es/EmojiPicker/EmojiPicker.mjs +20 -20
  128. package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
  129. package/es/Empty/Empty.mjs +2 -2
  130. package/es/Empty/Empty.mjs.map +1 -1
  131. package/es/FileTypeIcon/components/FileIcon.mjs.map +1 -1
  132. package/es/FileTypeIcon/components/FolderIcon.mjs.map +1 -1
  133. package/es/Flex/FlexBasic.d.mts +2 -2
  134. package/es/FluentEmoji/FluentEmoji.mjs +1 -1
  135. package/es/FluentEmoji/FluentEmoji.mjs.map +1 -1
  136. package/es/FontLoader/index.d.mts +2 -2
  137. package/es/Footer/Footer.d.mts +2 -2
  138. package/es/Footer/Footer.mjs +1 -1
  139. package/es/Footer/Footer.mjs.map +1 -1
  140. package/es/Form/Form.mjs +12 -12
  141. package/es/Form/Form.mjs.map +1 -1
  142. package/es/Form/components/FormGroup.d.mts +2 -2
  143. package/es/Form/components/FormGroup.mjs +5 -5
  144. package/es/Form/components/FormGroup.mjs.map +1 -1
  145. package/es/Form/components/FormItem.d.mts +2 -2
  146. package/es/Form/components/FormProvider.mjs.map +1 -1
  147. package/es/Form/components/FormSubmitFooter.d.mts +2 -2
  148. package/es/Form/components/FormSubmitFooter.mjs +5 -5
  149. package/es/Form/components/FormSubmitFooter.mjs.map +1 -1
  150. package/es/Form/components/FormTitle.mjs +1 -1
  151. package/es/Form/components/FormTitle.mjs.map +1 -1
  152. package/es/Form/components/merge.mjs.map +1 -1
  153. package/es/Form/index.mjs +1 -1
  154. package/es/Form/index.mjs.map +1 -1
  155. package/es/Form/style.mjs.map +1 -1
  156. package/es/Form/type.d.mts +1 -1
  157. package/es/FormModal/FormModal.d.mts +2 -2
  158. package/es/FormModal/FormModal.mjs +10 -10
  159. package/es/FormModal/FormModal.mjs.map +1 -1
  160. package/es/GroupAvatar/style.mjs.map +1 -1
  161. package/es/GroupAvatar/type.d.mts +1 -1
  162. package/es/GuideCard/GuideCard.d.mts +2 -2
  163. package/es/GuideCard/style.mjs.map +1 -1
  164. package/es/Header/Header.d.mts +2 -2
  165. package/es/Header/Header.mjs +5 -5
  166. package/es/Header/Header.mjs.map +1 -1
  167. package/es/Highlighter/FullFeatured.mjs +9 -9
  168. package/es/Highlighter/FullFeatured.mjs.map +1 -1
  169. package/es/Highlighter/Highlighter.d.mts +2 -2
  170. package/es/Highlighter/Highlighter.mjs +4 -4
  171. package/es/Highlighter/Highlighter.mjs.map +1 -1
  172. package/es/Highlighter/LangSelect.mjs +6 -6
  173. package/es/Highlighter/LangSelect.mjs.map +1 -1
  174. package/es/Highlighter/SyntaxHighlighter/StaticRenderer.mjs +2 -2
  175. package/es/Highlighter/SyntaxHighlighter/StaticRenderer.mjs.map +1 -1
  176. package/es/Highlighter/SyntaxHighlighter/index.d.mts +2 -2
  177. package/es/Highlighter/SyntaxHighlighter/style.mjs.map +1 -1
  178. package/es/Highlighter/style.mjs.map +1 -1
  179. package/es/Hotkey/Hotkey.d.mts +2 -2
  180. package/es/Hotkey/Hotkey.mjs +5 -5
  181. package/es/Hotkey/Hotkey.mjs.map +1 -1
  182. package/es/Hotkey/style.mjs.map +1 -1
  183. package/es/HotkeyInput/HotkeyInput.d.mts +2 -2
  184. package/es/HotkeyInput/HotkeyInput.mjs +8 -8
  185. package/es/HotkeyInput/HotkeyInput.mjs.map +1 -1
  186. package/es/HotkeyInput/style.mjs.map +1 -1
  187. package/es/Icon/Icon.d.mts +2 -2
  188. package/es/Icon/Icon.mjs.map +1 -1
  189. package/es/Icon/components/IconProvider.d.mts +3 -3
  190. package/es/Icon/components/IconProvider.mjs.map +1 -1
  191. package/es/Icon/style.mjs.map +1 -1
  192. package/es/Image/Image.mjs +3 -3
  193. package/es/Image/Image.mjs.map +1 -1
  194. package/es/Image/PreviewGroup.d.mts +2 -2
  195. package/es/Image/PreviewGroup.mjs.map +1 -1
  196. package/es/Image/components/Preview.mjs.map +1 -1
  197. package/es/Image/components/Toolbar.mjs +1 -1
  198. package/es/Image/components/Toolbar.mjs.map +1 -1
  199. package/es/Image/components/usePreviewGroup.mjs.map +1 -1
  200. package/es/Image/style.mjs.map +1 -1
  201. package/es/ImageSelect/ImageSelect.d.mts +2 -2
  202. package/es/ImageSelect/ImageSelect.mjs +5 -5
  203. package/es/ImageSelect/ImageSelect.mjs.map +1 -1
  204. package/es/Img/index.mjs.map +1 -1
  205. package/es/Input/Input.d.mts +2 -2
  206. package/es/Input/Input.mjs +2 -2
  207. package/es/Input/Input.mjs.map +1 -1
  208. package/es/Input/InputNumber.d.mts +2 -2
  209. package/es/Input/InputNumber.mjs +2 -2
  210. package/es/Input/InputNumber.mjs.map +1 -1
  211. package/es/Input/InputOPT.d.mts +2 -2
  212. package/es/Input/InputOPT.mjs +2 -2
  213. package/es/Input/InputOPT.mjs.map +1 -1
  214. package/es/Input/InputPassword.d.mts +2 -2
  215. package/es/Input/InputPassword.mjs +2 -2
  216. package/es/Input/InputPassword.mjs.map +1 -1
  217. package/es/Input/TextArea.d.mts +2 -2
  218. package/es/Input/TextArea.mjs +2 -2
  219. package/es/Input/TextArea.mjs.map +1 -1
  220. package/es/Input/style.mjs.map +1 -1
  221. package/es/Layout/Layout.mjs +1 -1
  222. package/es/Layout/Layout.mjs.map +1 -1
  223. package/es/Layout/components/LayoutFooter.d.mts +2 -2
  224. package/es/Layout/components/LayoutHeader.d.mts +2 -2
  225. package/es/Layout/components/LayoutMain.d.mts +2 -2
  226. package/es/Layout/components/LayoutSidebar.d.mts +2 -2
  227. package/es/Layout/components/LayoutSidebarInner.d.mts +2 -2
  228. package/es/Layout/components/LayoutToc.d.mts +2 -2
  229. package/es/Layout/index.mjs.map +1 -1
  230. package/es/List/List.mjs +6 -6
  231. package/es/List/List.mjs.map +1 -1
  232. package/es/List/ListItem/index.d.mts +2 -2
  233. package/es/List/ListItem/index.mjs +11 -11
  234. package/es/List/ListItem/index.mjs.map +1 -1
  235. package/es/LobeSelect/LobeSelect.d.mts +2 -2
  236. package/es/LobeSelect/LobeSelect.mjs +16 -16
  237. package/es/LobeSelect/LobeSelect.mjs.map +1 -1
  238. package/es/LobeSelect/atoms.d.mts +19 -19
  239. package/es/LobeSelect/atoms.mjs +1 -1
  240. package/es/LobeSelect/atoms.mjs.map +1 -1
  241. package/es/LobeSwitch/LobeSwitch.d.mts +2 -2
  242. package/es/LobeSwitch/LobeSwitch.mjs +2 -2
  243. package/es/LobeSwitch/LobeSwitch.mjs.map +1 -1
  244. package/es/LobeSwitch/atoms.d.mts +4 -4
  245. package/es/LobeSwitch/atoms.mjs +8 -8
  246. package/es/LobeSwitch/atoms.mjs.map +1 -1
  247. package/es/Markdown/Markdown.d.mts +2 -2
  248. package/es/Markdown/Markdown.mjs +3 -3
  249. package/es/Markdown/Markdown.mjs.map +1 -1
  250. package/es/Markdown/SyntaxMarkdown/StreamdownRender.mjs.map +1 -1
  251. package/es/Markdown/Typography.d.mts +2 -2
  252. package/es/Markdown/components/CodeBlock.mjs.map +1 -1
  253. package/es/Markdown/components/Footnotes.mjs +3 -3
  254. package/es/Markdown/components/Footnotes.mjs.map +1 -1
  255. package/es/Markdown/components/MarkdownProvider.mjs.map +1 -1
  256. package/es/Markdown/components/SearchResultCards/SearchResultCard.mjs +3 -3
  257. package/es/Markdown/components/SearchResultCards/SearchResultCard.mjs.map +1 -1
  258. package/es/Markdown/components/SearchResultCards/index.d.mts +2 -2
  259. package/es/Markdown/components/SearchResultCards/index.mjs +1 -1
  260. package/es/Markdown/components/SearchResultCards/index.mjs.map +1 -1
  261. package/es/Markdown/plugins/rehypeCustomFootnotes.mjs.map +1 -1
  262. package/es/Markdown/plugins/rehypeKatexDir.mjs.map +1 -1
  263. package/es/Markdown/plugins/rehypeStreamAnimated.mjs.map +1 -1
  264. package/es/Markdown/plugins/remarkColor.mjs +1 -1
  265. package/es/Markdown/plugins/remarkColor.mjs.map +1 -1
  266. package/es/Markdown/plugins/remarkCustomFootnotes.mjs.map +1 -1
  267. package/es/Markdown/plugins/remarkVideo.mjs +3 -3
  268. package/es/Markdown/plugins/remarkVideo.mjs.map +1 -1
  269. package/es/Markdown/style.mjs.map +1 -1
  270. package/es/MaskShadow/MaskShadow.d.mts +2 -2
  271. package/es/MaskShadow/style.mjs.map +1 -1
  272. package/es/Menu/Menu.d.mts +2 -2
  273. package/es/Menu/Menu.mjs.map +1 -1
  274. package/es/Menu/checkboxItem.d.mts +1 -0
  275. package/es/Menu/index.d.mts +2 -2
  276. package/es/Menu/renderUtils.d.mts +4 -1
  277. package/es/Menu/renderUtils.mjs.map +1 -1
  278. package/es/Menu/sharedStyle.d.mts +4 -0
  279. package/es/Menu/sharedStyle.mjs +24 -0
  280. package/es/Menu/sharedStyle.mjs.map +1 -1
  281. package/es/Menu/style.mjs.map +1 -1
  282. package/es/Menu/switchItem.d.mts +1 -0
  283. package/es/Menu/type.d.mts +3 -1
  284. package/es/Mermaid/FullFeatured.mjs +7 -7
  285. package/es/Mermaid/FullFeatured.mjs.map +1 -1
  286. package/es/Mermaid/Mermaid.d.mts +2 -2
  287. package/es/Mermaid/Mermaid.mjs +1 -1
  288. package/es/Mermaid/Mermaid.mjs.map +1 -1
  289. package/es/Mermaid/SyntaxMermaid/StaticMermaid.mjs +3 -3
  290. package/es/Mermaid/SyntaxMermaid/StaticMermaid.mjs.map +1 -1
  291. package/es/Mermaid/SyntaxMermaid/StreamMermaid.mjs +3 -3
  292. package/es/Mermaid/SyntaxMermaid/StreamMermaid.mjs.map +1 -1
  293. package/es/Mermaid/SyntaxMermaid/index.d.mts +2 -2
  294. package/es/Mermaid/SyntaxMermaid/style.mjs.map +1 -1
  295. package/es/Modal/Modal.d.mts +2 -2
  296. package/es/Modal/Modal.mjs +25 -25
  297. package/es/Modal/Modal.mjs.map +1 -1
  298. package/es/Modal/ModalProvider.d.mts +2 -2
  299. package/es/Modal/ModalStackItem.mjs +1 -1
  300. package/es/Modal/ModalStackItem.mjs.map +1 -1
  301. package/es/Modal/imperative.d.mts +2 -2
  302. package/es/Modal/imperative.mjs +5 -5
  303. package/es/Modal/imperative.mjs.map +1 -1
  304. package/es/MotionProvider/index.d.mts +2 -2
  305. package/es/MotionProvider/index.mjs.map +1 -1
  306. package/es/Popover/ArrowIcon.d.mts +2 -2
  307. package/es/Popover/Popover.mjs +2 -2
  308. package/es/Popover/Popover.mjs.map +1 -1
  309. package/es/Popover/PopoverGroup.mjs +2 -2
  310. package/es/Popover/PopoverGroup.mjs.map +1 -1
  311. package/es/Popover/PopoverInGroup.mjs +2 -2
  312. package/es/Popover/PopoverInGroup.mjs.map +1 -1
  313. package/es/Popover/PopoverStandalone.mjs +1 -1
  314. package/es/Popover/PopoverStandalone.mjs.map +1 -1
  315. package/es/Popover/atoms.d.mts +9 -9
  316. package/es/Popover/atoms.mjs +1 -1
  317. package/es/Popover/atoms.mjs.map +1 -1
  318. package/es/Popover/context.d.mts +2 -2
  319. package/es/Popover/context.mjs.map +1 -1
  320. package/es/Popover/groupContext.mjs.map +1 -1
  321. package/es/ScrollArea/atoms.d.mts +7 -7
  322. package/es/ScrollArea/type.d.mts +1 -1
  323. package/es/ScrollShadow/style.mjs.map +1 -1
  324. package/es/ScrollShadow/useScrollOverflow.mjs.map +1 -1
  325. package/es/SearchBar/SearchBar.d.mts +2 -2
  326. package/es/SearchBar/SearchBar.mjs +12 -12
  327. package/es/SearchBar/SearchBar.mjs.map +1 -1
  328. package/es/Segmented/Segmented.d.mts +2 -2
  329. package/es/Segmented/style.mjs.map +1 -1
  330. package/es/Select/Select.d.mts +2 -2
  331. package/es/Select/Select.mjs +2 -2
  332. package/es/Select/Select.mjs.map +1 -1
  333. package/es/Select/style.mjs.map +1 -1
  334. package/es/SideNav/SideNav.d.mts +2 -2
  335. package/es/Skeleton/Skeleton.mjs +1 -1
  336. package/es/Skeleton/Skeleton.mjs.map +1 -1
  337. package/es/Skeleton/SkeletonBlock.mjs.map +1 -1
  338. package/es/Skeleton/SkeletonTags.mjs +3 -3
  339. package/es/Skeleton/SkeletonTags.mjs.map +1 -1
  340. package/es/Skeleton/SkeletonTitle.mjs +1 -1
  341. package/es/Skeleton/SkeletonTitle.mjs.map +1 -1
  342. package/es/SliderWithInput/SliderWithInput.d.mts +2 -2
  343. package/es/SliderWithInput/SliderWithInput.mjs +3 -3
  344. package/es/SliderWithInput/SliderWithInput.mjs.map +1 -1
  345. package/es/Snippet/Snippet.mjs +1 -1
  346. package/es/Snippet/Snippet.mjs.map +1 -1
  347. package/es/Snippet/style.mjs.map +1 -1
  348. package/es/SortableList/SortableList.d.mts +2 -2
  349. package/es/SortableList/SortableList.mjs +1 -1
  350. package/es/SortableList/SortableList.mjs.map +1 -1
  351. package/es/SortableList/components/DragHandle.d.mts +2 -2
  352. package/es/SortableList/components/DragHandle.mjs +3 -3
  353. package/es/SortableList/components/DragHandle.mjs.map +1 -1
  354. package/es/SortableList/components/SortableItem.d.mts +2 -2
  355. package/es/SortableList/components/SortableItem.mjs +1 -1
  356. package/es/SortableList/components/SortableItem.mjs.map +1 -1
  357. package/es/SortableList/components/SortableOverlay.mjs.map +1 -1
  358. package/es/SortableList/style.mjs.map +1 -1
  359. package/es/SortableList/type.d.mts +4 -4
  360. package/es/Tabs/style.mjs.map +1 -1
  361. package/es/Tag/Tag.mjs +2 -2
  362. package/es/Tag/Tag.mjs.map +1 -1
  363. package/es/Tag/styles.mjs.map +1 -1
  364. package/es/Text/Text.mjs +23 -24
  365. package/es/Text/Text.mjs.map +1 -1
  366. package/es/ThemeProvider/ConfigProvider.mjs.map +1 -1
  367. package/es/ThemeProvider/GlobalStyle/antdOverride.mjs.map +1 -1
  368. package/es/ThemeProvider/GlobalStyle/global.mjs.map +1 -1
  369. package/es/ThemeProvider/ThemeProvider.d.mts +2 -2
  370. package/es/ThemeProvider/ThemeProvider.mjs.map +1 -1
  371. package/es/ThemeSwitch/ThemeSwitch.mjs +4 -4
  372. package/es/ThemeSwitch/ThemeSwitch.mjs.map +1 -1
  373. package/es/Toast/Toast.mjs +3 -3
  374. package/es/Toast/Toast.mjs.map +1 -1
  375. package/es/Toast/imperative.d.mts +3 -3
  376. package/es/Toast/imperative.mjs +1 -1
  377. package/es/Toast/imperative.mjs.map +1 -1
  378. package/es/Toc/Toc.d.mts +2 -2
  379. package/es/Toc/Toc.mjs.map +1 -1
  380. package/es/Toc/TocMobile.mjs +4 -4
  381. package/es/Toc/TocMobile.mjs.map +1 -1
  382. package/es/Toc/utils.mjs.map +1 -1
  383. package/es/Tooltip/Tooltip.mjs +2 -2
  384. package/es/Tooltip/Tooltip.mjs.map +1 -1
  385. package/es/Tooltip/TooltipContent.mjs.map +1 -1
  386. package/es/Tooltip/TooltipGroup.mjs +3 -3
  387. package/es/Tooltip/TooltipGroup.mjs.map +1 -1
  388. package/es/Tooltip/TooltipInGroup.mjs +3 -3
  389. package/es/Tooltip/TooltipInGroup.mjs.map +1 -1
  390. package/es/Tooltip/TooltipStandalone.mjs +2 -2
  391. package/es/Tooltip/TooltipStandalone.mjs.map +1 -1
  392. package/es/Tooltip/groupContext.mjs.map +1 -1
  393. package/es/Tooltip/type.d.mts +1 -1
  394. package/es/Video/index.d.mts +2 -2
  395. package/es/Video/index.mjs +8 -8
  396. package/es/Video/index.mjs.map +1 -1
  397. package/es/Video/style.mjs.map +1 -1
  398. package/es/awesome/AuroraBackground/AuroraBackground.d.mts +2 -2
  399. package/es/awesome/BottomGradientButton/BottomGradientButton.d.mts +2 -2
  400. package/es/awesome/BottomGradientButton/BottomGradientButton.mjs +1 -1
  401. package/es/awesome/BottomGradientButton/BottomGradientButton.mjs.map +1 -1
  402. package/es/awesome/Features/FeatureItem.mjs +1 -1
  403. package/es/awesome/Features/FeatureItem.mjs.map +1 -1
  404. package/es/awesome/Features/Features.d.mts +2 -2
  405. package/es/awesome/Features/Features.mjs +4 -4
  406. package/es/awesome/Features/Features.mjs.map +1 -1
  407. package/es/awesome/Features/type.d.mts +1 -1
  408. package/es/awesome/Giscus/Giscus.d.mts +2 -2
  409. package/es/awesome/GradientButton/GradientButton.d.mts +2 -2
  410. package/es/awesome/GradientButton/GradientButton.mjs +2 -2
  411. package/es/awesome/GradientButton/GradientButton.mjs.map +1 -1
  412. package/es/awesome/GridBackground/GridBackground.d.mts +2 -2
  413. package/es/awesome/GridBackground/GridShowcase.d.mts +2 -2
  414. package/es/awesome/GridBackground/GridShowcase.mjs +5 -5
  415. package/es/awesome/GridBackground/GridShowcase.mjs.map +1 -1
  416. package/es/awesome/GridBackground/components/Grid.mjs.map +1 -1
  417. package/es/awesome/Hero/Hero.d.mts +2 -2
  418. package/es/awesome/Hero/Hero.mjs +3 -3
  419. package/es/awesome/Hero/Hero.mjs.map +1 -1
  420. package/es/awesome/Hero/type.d.mts +1 -1
  421. package/es/awesome/Spline/ParentSize.mjs.map +1 -1
  422. package/es/awesome/Spline/Spine.d.mts +2 -2
  423. package/es/awesome/Spline/Spine.mjs +2 -2
  424. package/es/awesome/Spline/Spine.mjs.map +1 -1
  425. package/es/awesome/Spotlight/Spotlight.d.mts +2 -2
  426. package/es/awesome/SpotlightCard/SpotlightCard.d.mts +2 -2
  427. package/es/awesome/TypewriterEffect/TypewriterEffect.d.mts +2 -2
  428. package/es/brand/BrandLoading/index.mjs.map +1 -1
  429. package/es/brand/LobeChat/index.d.mts +2 -2
  430. package/es/brand/LobeChat/index.mjs +3 -3
  431. package/es/brand/LobeChat/index.mjs.map +1 -1
  432. package/es/brand/LobeChatText/index.mjs.map +1 -1
  433. package/es/brand/LobeHub/index.d.mts +2 -2
  434. package/es/brand/LobeHub/index.mjs +3 -3
  435. package/es/brand/LobeHub/index.mjs.map +1 -1
  436. package/es/brand/LobeHubText/index.mjs.map +1 -1
  437. package/es/brand/Logo3d/index.mjs.map +1 -1
  438. package/es/brand/LogoThree/Loading.mjs +2 -2
  439. package/es/brand/LogoThree/Loading.mjs.map +1 -1
  440. package/es/brand/LogoThree/LogoSpline.d.mts +2 -2
  441. package/es/brand/LogoThree/LogoSpline.mjs +1 -1
  442. package/es/brand/LogoThree/LogoSpline.mjs.map +1 -1
  443. package/es/brand/LogoThree/index.d.mts +2 -2
  444. package/es/brand/LogoThree/index.mjs +4 -4
  445. package/es/brand/LogoThree/index.mjs.map +1 -1
  446. package/es/brand/components/Divider.mjs.map +1 -1
  447. package/es/chat/BackBottom/BackBottom.d.mts +2 -2
  448. package/es/chat/BackBottom/BackBottom.mjs +2 -2
  449. package/es/chat/BackBottom/BackBottom.mjs.map +1 -1
  450. package/es/chat/ChatHeader/ChatHeader.mjs +6 -6
  451. package/es/chat/ChatHeader/ChatHeader.mjs.map +1 -1
  452. package/es/chat/ChatHeader/ChatHeaderTitle.mjs +4 -4
  453. package/es/chat/ChatHeader/ChatHeaderTitle.mjs.map +1 -1
  454. package/es/chat/ChatInputArea/ChatInputArea.mjs +3 -3
  455. package/es/chat/ChatInputArea/ChatInputArea.mjs.map +1 -1
  456. package/es/chat/ChatInputArea/components/ChatInputActionBar.mjs +3 -3
  457. package/es/chat/ChatInputArea/components/ChatInputActionBar.mjs.map +1 -1
  458. package/es/chat/ChatInputArea/components/ChatInputAreaInner.d.mts +2 -2
  459. package/es/chat/ChatInputArea/components/ChatInputAreaInner.mjs +3 -3
  460. package/es/chat/ChatInputArea/components/ChatInputAreaInner.mjs.map +1 -1
  461. package/es/chat/ChatInputArea/components/ChatSendButton.mjs +5 -5
  462. package/es/chat/ChatInputArea/components/ChatSendButton.mjs.map +1 -1
  463. package/es/chat/ChatItem/ChatItem.d.mts +2 -2
  464. package/es/chat/ChatItem/ChatItem.mjs +9 -9
  465. package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
  466. package/es/chat/ChatItem/components/Actions.mjs.map +1 -1
  467. package/es/chat/ChatItem/components/Avatar.mjs +2 -2
  468. package/es/chat/ChatItem/components/Avatar.mjs.map +1 -1
  469. package/es/chat/ChatItem/components/ErrorContent.mjs +1 -1
  470. package/es/chat/ChatItem/components/ErrorContent.mjs.map +1 -1
  471. package/es/chat/ChatItem/components/Loading.mjs +2 -2
  472. package/es/chat/ChatItem/components/Loading.mjs.map +1 -1
  473. package/es/chat/ChatItem/components/MessageContent.mjs +4 -4
  474. package/es/chat/ChatItem/components/MessageContent.mjs.map +1 -1
  475. package/es/chat/ChatItem/components/Title.mjs.map +1 -1
  476. package/es/chat/ChatList/ChatList.d.mts +2 -2
  477. package/es/chat/ChatList/components/ChatListItem.mjs +14 -14
  478. package/es/chat/ChatList/components/ChatListItem.mjs.map +1 -1
  479. package/es/chat/ChatList/type.d.mts +1 -1
  480. package/es/chat/EditableMessage/EditableMessage.d.mts +2 -2
  481. package/es/chat/EditableMessage/EditableMessage.mjs +15 -15
  482. package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
  483. package/es/chat/EditableMessageList/EditableMessageList.d.mts +2 -2
  484. package/es/chat/EditableMessageList/EditableMessageList.mjs +17 -17
  485. package/es/chat/EditableMessageList/EditableMessageList.mjs.map +1 -1
  486. package/es/chat/MessageInput/MessageInput.d.mts +2 -2
  487. package/es/chat/MessageInput/MessageInput.mjs +8 -8
  488. package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
  489. package/es/chat/MessageModal/MessageModal.d.mts +2 -2
  490. package/es/chat/MessageModal/MessageModal.mjs +12 -12
  491. package/es/chat/MessageModal/MessageModal.mjs.map +1 -1
  492. package/es/chat/TokenTag/TokenTag.mjs +2 -2
  493. package/es/chat/TokenTag/TokenTag.mjs.map +1 -1
  494. package/es/chat/types/error.mjs.map +1 -1
  495. package/es/color/ColorScales/ScaleRow.mjs +3 -3
  496. package/es/color/ColorScales/ScaleRow.mjs.map +1 -1
  497. package/es/color/ColorScales/index.d.mts +2 -2
  498. package/es/color/ColorScales/index.mjs +4 -4
  499. package/es/color/ColorScales/index.mjs.map +1 -1
  500. package/es/color/CssVar/ScaleRow.mjs +4 -4
  501. package/es/color/CssVar/ScaleRow.mjs.map +1 -1
  502. package/es/color/CssVar/VarRow.mjs +2 -2
  503. package/es/color/CssVar/VarRow.mjs.map +1 -1
  504. package/es/color/CssVar/index.d.mts +2 -2
  505. package/es/color/CssVar/index.mjs +4 -4
  506. package/es/color/CssVar/index.mjs.map +1 -1
  507. package/es/color/colors/blue.mjs.map +1 -1
  508. package/es/color/colors/cyan.mjs.map +1 -1
  509. package/es/color/colors/geekblue.mjs.map +1 -1
  510. package/es/color/colors/gold.mjs.map +1 -1
  511. package/es/color/colors/gray.mjs.map +1 -1
  512. package/es/color/colors/green.mjs.map +1 -1
  513. package/es/color/colors/lime.mjs.map +1 -1
  514. package/es/color/colors/magenta.mjs.map +1 -1
  515. package/es/color/colors/orange.mjs.map +1 -1
  516. package/es/color/colors/primary.mjs.map +1 -1
  517. package/es/color/colors/purple.mjs.map +1 -1
  518. package/es/color/colors/red.mjs.map +1 -1
  519. package/es/color/colors/volcano.mjs.map +1 -1
  520. package/es/color/colors/yellow.mjs.map +1 -1
  521. package/es/color/neutrals/mauve.mjs.map +1 -1
  522. package/es/color/neutrals/olive.mjs.map +1 -1
  523. package/es/color/neutrals/sage.mjs.map +1 -1
  524. package/es/color/neutrals/sand.mjs.map +1 -1
  525. package/es/color/neutrals/slate.mjs.map +1 -1
  526. package/es/hooks/useFloatingLayer.mjs +2 -2
  527. package/es/hooks/useFloatingLayer.mjs.map +1 -1
  528. package/es/hooks/useHighlight.mjs.map +1 -1
  529. package/es/hooks/useMarkdown/latex.mjs +12 -12
  530. package/es/hooks/useMarkdown/latex.mjs.map +1 -1
  531. package/es/hooks/useMarkdown/useMarkdownComponents.mjs +1 -1
  532. package/es/hooks/useMarkdown/useMarkdownComponents.mjs.map +1 -1
  533. package/es/hooks/useMarkdown/utils.mjs +4 -4
  534. package/es/hooks/useMarkdown/utils.mjs.map +1 -1
  535. package/es/hooks/useNativeButton.mjs.map +1 -1
  536. package/es/hooks/useStreamHighlight.mjs.map +1 -1
  537. package/es/i18n/context.d.mts +3 -3
  538. package/es/i18n/context.mjs.map +1 -1
  539. package/es/icons/Authelia/components/Color.mjs.map +1 -1
  540. package/es/icons/lucideExtra/BotPromptIcon.d.mts +2 -2
  541. package/es/icons/lucideExtra/CreateBotIcon.d.mts +2 -2
  542. package/es/icons/lucideExtra/DiscordIcon.d.mts +2 -2
  543. package/es/icons/lucideExtra/GlobeOffIcon.d.mts +3 -3
  544. package/es/icons/lucideExtra/GroupBotIcon.d.mts +3 -3
  545. package/es/icons/lucideExtra/GroupBotSquareIcon.d.mts +3 -3
  546. package/es/icons/lucideExtra/LeftClickIcon.d.mts +2 -2
  547. package/es/icons/lucideExtra/LeftDoubleClickIcon.d.mts +3 -3
  548. package/es/icons/lucideExtra/McpIcon.d.mts +3 -3
  549. package/es/icons/lucideExtra/ProviderIcon.d.mts +3 -3
  550. package/es/icons/lucideExtra/RightClickIcon.d.mts +3 -3
  551. package/es/icons/lucideExtra/RightDoubleClickIcon.d.mts +3 -3
  552. package/es/icons/lucideExtra/ShapesUploadIcon.d.mts +3 -3
  553. package/es/icons/lucideExtra/TreeDownRightIcon.d.mts +2 -2
  554. package/es/icons/lucideExtra/TreeUpDownRightIcon.d.mts +3 -3
  555. package/es/mdx/Callout/index.mjs +1 -1
  556. package/es/mdx/Callout/index.mjs.map +1 -1
  557. package/es/mdx/Cards/Card.mjs +2 -2
  558. package/es/mdx/Cards/Card.mjs.map +1 -1
  559. package/es/mdx/FileTree/File.mjs +1 -1
  560. package/es/mdx/FileTree/File.mjs.map +1 -1
  561. package/es/mdx/FileTree/Folder.mjs +1 -1
  562. package/es/mdx/FileTree/Folder.mjs.map +1 -1
  563. package/es/mdx/FileTree/index.mjs.map +1 -1
  564. package/es/mdx/Mdx/index.d.mts +2 -2
  565. package/es/mdx/Mdx/index.mjs +3 -3
  566. package/es/mdx/Mdx/index.mjs.map +1 -1
  567. package/es/mdx/Steps/index.mjs.map +1 -1
  568. package/es/mdx/Tabs/Tab.mjs.map +1 -1
  569. package/es/mdx/Tabs/index.mjs +1 -1
  570. package/es/mdx/Tabs/index.mjs.map +1 -1
  571. package/es/mdx/mdxComponents/Citation/PopoverPanel.mjs +3 -3
  572. package/es/mdx/mdxComponents/Citation/PopoverPanel.mjs.map +1 -1
  573. package/es/mdx/mdxComponents/Citation/index.mjs.map +1 -1
  574. package/es/mdx/mdxComponents/Link.mjs +1 -1
  575. package/es/mdx/mdxComponents/Link.mjs.map +1 -1
  576. package/es/mobile/ChatHeader/ChatHeader.mjs +4 -4
  577. package/es/mobile/ChatHeader/ChatHeader.mjs.map +1 -1
  578. package/es/mobile/ChatHeader/ChatHeaderTitle.d.mts +2 -2
  579. package/es/mobile/ChatHeader/ChatHeaderTitle.mjs +5 -5
  580. package/es/mobile/ChatHeader/ChatHeaderTitle.mjs.map +1 -1
  581. package/es/mobile/ChatInputArea/ChatInputArea.mjs +9 -9
  582. package/es/mobile/ChatInputArea/ChatInputArea.mjs.map +1 -1
  583. package/es/mobile/ChatInputArea/components/ChatSendButton.d.mts +2 -2
  584. package/es/mobile/ChatInputArea/components/ChatSendButton.mjs +2 -2
  585. package/es/mobile/ChatInputArea/components/ChatSendButton.mjs.map +1 -1
  586. package/es/mobile/SafeArea/SafeArea.mjs.map +1 -1
  587. package/es/mobile/TabBar/TabBar.mjs +1 -1
  588. package/es/mobile/TabBar/TabBar.mjs.map +1 -1
  589. package/es/storybook/StoryBook/index.d.mts +2 -2
  590. package/es/storybook/StoryBook/index.mjs.map +1 -1
  591. package/es/styles/theme/algorithms/darkAlgorithm.mjs.map +1 -1
  592. package/es/styles/theme/algorithms/lightAlgorithm.mjs.map +1 -1
  593. package/es/styles/theme/antdTheme.mjs.map +1 -1
  594. package/es/styles/theme/customStylish.mjs.map +1 -1
  595. package/es/styles/theme/customToken.mjs.map +1 -1
  596. package/es/styles/theme/generateColorPalette.mjs.map +1 -1
  597. package/es/styles/theme/token/base.mjs.map +1 -1
  598. package/es/styles/theme/token/dark.mjs.map +1 -1
  599. package/es/styles/theme/token/light.mjs.map +1 -1
  600. package/package.json +79 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FullFeatured.mjs","names":["LangSelect","Flexbox","MaterialFileTypeIcon","Text","CopyButton","ActionIcon"],"sources":["../../src/Highlighter/FullFeatured.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport { ReactNode, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { getCodeLanguageDisplayName, getCodeLanguageFilename } from '@/Highlighter/const';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nimport LangSelect from './LangSelect';\nimport { bodyVariants, headerVariants, variants } from './style';\nimport { HighlighterProps } from './type';\n\ninterface HeaderLanguageProps {\n allowChangeLanguage: boolean;\n displayName: string;\n fileName?: string;\n filetype: string;\n icon?: ReactNode;\n language: string;\n setLanguage?: (language: string) => void;\n showLanguage?: boolean;\n}\n\nconst HeaderLanguage = memo<HeaderLanguageProps>(\n ({\n allowChangeLanguage,\n displayName,\n fileName,\n filetype,\n icon,\n language,\n setLanguage,\n showLanguage,\n }) => {\n if (!showLanguage) return null;\n\n if (allowChangeLanguage && !fileName)\n return <LangSelect onSelect={setLanguage} value={language.toLowerCase()} />;\n\n return (\n <Flexbox\n align={'center'}\n className={'languageTitle'}\n flex={1}\n gap={4}\n horizontal\n justify={'flex-start'}\n paddingInline={8}\n >\n {icon || (\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={filetype}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n )}\n <Text ellipsis fontSize={13}>\n {displayName}\n </Text>\n </Flexbox>\n );\n },\n (prev, next) =>\n prev.allowChangeLanguage === next.allowChangeLanguage &&\n prev.displayName === next.displayName &&\n prev.fileName === next.fileName &&\n prev.filetype === next.filetype &&\n prev.icon === next.icon &&\n prev.language === next.language &&\n prev.setLanguage === next.setLanguage &&\n prev.showLanguage === next.showLanguage,\n);\n\ninterface HighlighterFullFeaturedProps extends Omit<\n HighlighterProps,\n 'children' | 'bodyRender' | 'enableTransformer'\n> {\n content: string;\n setLanguage?: (language: string) => void;\n}\n\nexport const HighlighterFullFeatured = memo<HighlighterFullFeaturedProps & { children: ReactNode }>(\n ({\n content,\n language,\n setLanguage,\n showLanguage,\n className,\n classNames,\n styles: customStyles,\n style,\n allowChangeLanguage = false,\n fileName,\n icon,\n actionsRender,\n copyable,\n variant,\n shadow,\n wrap,\n defaultExpand = true,\n children,\n ...rest\n }) => {\n const [expand, setExpand] = useState(defaultExpand);\n const contentRef = useRef(content);\n\n useEffect(() => {\n contentRef.current = content;\n }, [content]);\n\n const getContent = useCallback(() => contentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return <CopyButton content={getContent} size={'small'} />;\n }, [copyable, getContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize: 'small',\n content,\n getContent,\n language,\n originalNode: originalActions,\n });\n }, [actionsRender, content, getContent, language, originalActions]);\n\n const displayName = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageDisplayName(language);\n }, [fileName, language]);\n\n const filetype = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageFilename(language);\n }, [fileName, language]);\n\n const handleToggleExpand = useCallback(() => {\n setExpand((prev) => !prev);\n }, []);\n\n return (\n <Flexbox\n className={cx(variants({ shadow, variant, wrap }), className)}\n data-code-type=\"highlighter\"\n style={style}\n {...rest}\n >\n <Flexbox\n align={'center'}\n className={cx(headerVariants({ variant }), classNames?.header)}\n horizontal\n justify={'space-between'}\n onClick={handleToggleExpand}\n style={customStyles?.header}\n >\n <HeaderLanguage\n allowChangeLanguage={allowChangeLanguage}\n displayName={displayName}\n fileName={fileName}\n filetype={filetype}\n icon={icon}\n language={language}\n setLanguage={setLanguage}\n showLanguage={showLanguage}\n />\n <Flexbox align={'center'} flex={'none'} gap={4} horizontal onClick={stopPropagation}>\n <Flexbox align={'center'} className={'panel-actions'} flex={'none'} gap={4} horizontal>\n {actions}\n </Flexbox>\n <ActionIcon\n icon={expand ? ChevronDown : ChevronRight}\n onClick={handleToggleExpand}\n size={'small'}\n />\n </Flexbox>\n </Flexbox>\n <Flexbox\n className={cx(bodyVariants({ expand }), classNames?.body)}\n style={customStyles?.body}\n >\n {children}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nexport default HighlighterFullFeatured;\n"],"mappings":";;;;;;;;;;;;;;;;;AA6BA,MAAM,iBAAiB,MACpB,EACC,qBACA,aACA,UACA,UACA,MACA,UACA,aACA,mBACI;AACJ,KAAI,CAAC,aAAc,QAAO;AAE1B,KAAI,uBAAuB,CAAC,SAC1B,QAAO,oBAACA;EAAW,UAAU;EAAa,OAAO,SAAS,aAAa;GAAI;AAE7E,QACE,qBAACC;EACC,OAAO;EACP,WAAW;EACX,MAAM;EACN,KAAK;EACL;EACA,SAAS;EACT,eAAe;aAEd,QACC,oBAACC;GACC,qBAAqB;GACrB,UAAU;GACV,MAAM;GACN,MAAM;GACN,SAAS;IACT,EAEJ,oBAACC;GAAK;GAAS,UAAU;aACtB;IACI;GACC;IAGb,MAAM,SACL,KAAK,wBAAwB,KAAK,uBAClC,KAAK,gBAAgB,KAAK,eAC1B,KAAK,aAAa,KAAK,YACvB,KAAK,aAAa,KAAK,YACvB,KAAK,SAAS,KAAK,QACnB,KAAK,aAAa,KAAK,YACvB,KAAK,gBAAgB,KAAK,eAC1B,KAAK,iBAAiB,KAAK,aAC9B;AAUD,MAAa,0BAA0B,MACpC,EACC,SACA,UACA,aACA,cACA,WACA,YACA,QAAQ,cACR,OACA,sBAAsB,OACtB,UACA,MACA,eACA,UACA,SACA,QACA,MACA,gBAAgB,MAChB,UACA,GAAG,WACC;CACJ,MAAM,CAAC,QAAQ,aAAa,SAAS,cAAc;CACnD,MAAM,aAAa,OAAO,QAAQ;AAElC,iBAAgB;AACd,aAAW,UAAU;IACpB,CAAC,QAAQ,CAAC;CAEb,MAAM,aAAa,kBAAkB,WAAW,SAAS,EAAE,CAAC;CAE5D,MAAM,kBAAkB,cAAc;AACpC,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,oBAACC;GAAW,SAAS;GAAY,MAAM;IAAW;IACxD,CAAC,UAAU,WAAW,CAAC;CAE1B,MAAM,UAAU,cAAc;AAC5B,MAAI,CAAC,cAAe,QAAO;AAC3B,SAAO,cAAc;GACnB,gBAAgB;GAChB;GACA;GACA;GACA,cAAc;GACf,CAAC;IACD;EAAC;EAAe;EAAS;EAAY;EAAU;EAAgB,CAAC;CAEnE,MAAM,cAAc,cAAc;AAChC,MAAI,SAAU,QAAO;AACrB,SAAO,2BAA2B,SAAS;IAC1C,CAAC,UAAU,SAAS,CAAC;CAExB,MAAM,WAAW,cAAc;AAC7B,MAAI,SAAU,QAAO;AACrB,SAAO,wBAAwB,SAAS;IACvC,CAAC,UAAU,SAAS,CAAC;CAExB,MAAM,qBAAqB,kBAAkB;AAC3C,aAAW,SAAS,CAAC,KAAK;IACzB,EAAE,CAAC;AAEN,QACE,qBAACH;EACC,WAAW,GAAG,SAAS;GAAE;GAAQ;GAAS;GAAM,CAAC,EAAE,UAAU;EAC7D,kBAAe;EACR;EACP,GAAI;aAEJ,qBAACA;GACC,OAAO;GACP,WAAW,GAAG,eAAe,EAAE,SAAS,CAAC,EAAE,YAAY,OAAO;GAC9D;GACA,SAAS;GACT,SAAS;GACT,OAAO,cAAc;cAErB,oBAAC;IACsB;IACR;IACH;IACA;IACJ;IACI;IACG;IACC;KACd,EACF,qBAACA;IAAQ,OAAO;IAAU,MAAM;IAAQ,KAAK;IAAG;IAAW,SAAS;eAClE,oBAACA;KAAQ,OAAO;KAAU,WAAW;KAAiB,MAAM;KAAQ,KAAK;KAAG;eACzE;MACO,EACV,oBAACI;KACC,MAAM,SAAS,cAAc;KAC7B,SAAS;KACT,MAAM;MACN;KACM;IACF,EACV,oBAACJ;GACC,WAAW,GAAG,aAAa,EAAE,QAAQ,CAAC,EAAE,YAAY,KAAK;GACzD,OAAO,cAAc;GAEpB;IACO;GACF;EAGf;AAED,2BAAe"}
1
+ {"version":3,"file":"FullFeatured.mjs","names":["LangSelect","Flexbox","MaterialFileTypeIcon","Text","CopyButton","ActionIcon"],"sources":["../../src/Highlighter/FullFeatured.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport { memo, type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { getCodeLanguageDisplayName, getCodeLanguageFilename } from '@/Highlighter/const';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nimport LangSelect from './LangSelect';\nimport { bodyVariants, headerVariants, variants } from './style';\nimport { type HighlighterProps } from './type';\n\ninterface HeaderLanguageProps {\n allowChangeLanguage: boolean;\n displayName: string;\n fileName?: string;\n filetype: string;\n icon?: ReactNode;\n language: string;\n setLanguage?: (language: string) => void;\n showLanguage?: boolean;\n}\n\nconst HeaderLanguage = memo<HeaderLanguageProps>(\n ({\n allowChangeLanguage,\n displayName,\n fileName,\n filetype,\n icon,\n language,\n setLanguage,\n showLanguage,\n }) => {\n if (!showLanguage) return null;\n\n if (allowChangeLanguage && !fileName)\n return <LangSelect value={language.toLowerCase()} onSelect={setLanguage} />;\n\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={'languageTitle'}\n flex={1}\n gap={4}\n justify={'flex-start'}\n paddingInline={8}\n >\n {icon || (\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={filetype}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n )}\n <Text ellipsis fontSize={13}>\n {displayName}\n </Text>\n </Flexbox>\n );\n },\n (prev, next) =>\n prev.allowChangeLanguage === next.allowChangeLanguage &&\n prev.displayName === next.displayName &&\n prev.fileName === next.fileName &&\n prev.filetype === next.filetype &&\n prev.icon === next.icon &&\n prev.language === next.language &&\n prev.setLanguage === next.setLanguage &&\n prev.showLanguage === next.showLanguage,\n);\n\ninterface HighlighterFullFeaturedProps extends Omit<\n HighlighterProps,\n 'children' | 'bodyRender' | 'enableTransformer'\n> {\n content: string;\n setLanguage?: (language: string) => void;\n}\n\nexport const HighlighterFullFeatured = memo<HighlighterFullFeaturedProps & { children: ReactNode }>(\n ({\n content,\n language,\n setLanguage,\n showLanguage,\n className,\n classNames,\n styles: customStyles,\n style,\n allowChangeLanguage = false,\n fileName,\n icon,\n actionsRender,\n copyable,\n variant,\n shadow,\n wrap,\n defaultExpand = true,\n children,\n ...rest\n }) => {\n const [expand, setExpand] = useState(defaultExpand);\n const contentRef = useRef(content);\n\n useEffect(() => {\n contentRef.current = content;\n }, [content]);\n\n const getContent = useCallback(() => contentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return <CopyButton content={getContent} size={'small'} />;\n }, [copyable, getContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize: 'small',\n content,\n getContent,\n language,\n originalNode: originalActions,\n });\n }, [actionsRender, content, getContent, language, originalActions]);\n\n const displayName = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageDisplayName(language);\n }, [fileName, language]);\n\n const filetype = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageFilename(language);\n }, [fileName, language]);\n\n const handleToggleExpand = useCallback(() => {\n setExpand((prev) => !prev);\n }, []);\n\n return (\n <Flexbox\n className={cx(variants({ shadow, variant, wrap }), className)}\n data-code-type=\"highlighter\"\n style={style}\n {...rest}\n >\n <Flexbox\n horizontal\n align={'center'}\n className={cx(headerVariants({ variant }), classNames?.header)}\n justify={'space-between'}\n style={customStyles?.header}\n onClick={handleToggleExpand}\n >\n <HeaderLanguage\n allowChangeLanguage={allowChangeLanguage}\n displayName={displayName}\n fileName={fileName}\n filetype={filetype}\n icon={icon}\n language={language}\n setLanguage={setLanguage}\n showLanguage={showLanguage}\n />\n <Flexbox horizontal align={'center'} flex={'none'} gap={4} onClick={stopPropagation}>\n <Flexbox horizontal align={'center'} className={'panel-actions'} flex={'none'} gap={4}>\n {actions}\n </Flexbox>\n <ActionIcon\n icon={expand ? ChevronDown : ChevronRight}\n size={'small'}\n onClick={handleToggleExpand}\n />\n </Flexbox>\n </Flexbox>\n <Flexbox\n className={cx(bodyVariants({ expand }), classNames?.body)}\n style={customStyles?.body}\n >\n {children}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nexport default HighlighterFullFeatured;\n"],"mappings":";;;;;;;;;;;;;;;;;AA6BA,MAAM,iBAAiB,MACpB,EACC,qBACA,aACA,UACA,UACA,MACA,UACA,aACA,mBACI;AACJ,KAAI,CAAC,aAAc,QAAO;AAE1B,KAAI,uBAAuB,CAAC,SAC1B,QAAO,oBAACA;EAAW,OAAO,SAAS,aAAa;EAAE,UAAU;GAAe;AAE7E,QACE,qBAACC;EACC;EACA,OAAO;EACP,WAAW;EACX,MAAM;EACN,KAAK;EACL,SAAS;EACT,eAAe;aAEd,QACC,oBAACC;GACC,qBAAqB;GACrB,UAAU;GACV,MAAM;GACN,MAAM;GACN,SAAS;IACT,EAEJ,oBAACC;GAAK;GAAS,UAAU;aACtB;IACI;GACC;IAGb,MAAM,SACL,KAAK,wBAAwB,KAAK,uBAClC,KAAK,gBAAgB,KAAK,eAC1B,KAAK,aAAa,KAAK,YACvB,KAAK,aAAa,KAAK,YACvB,KAAK,SAAS,KAAK,QACnB,KAAK,aAAa,KAAK,YACvB,KAAK,gBAAgB,KAAK,eAC1B,KAAK,iBAAiB,KAAK,aAC9B;AAUD,MAAa,0BAA0B,MACpC,EACC,SACA,UACA,aACA,cACA,WACA,YACA,QAAQ,cACR,OACA,sBAAsB,OACtB,UACA,MACA,eACA,UACA,SACA,QACA,MACA,gBAAgB,MAChB,UACA,GAAG,WACC;CACJ,MAAM,CAAC,QAAQ,aAAa,SAAS,cAAc;CACnD,MAAM,aAAa,OAAO,QAAQ;AAElC,iBAAgB;AACd,aAAW,UAAU;IACpB,CAAC,QAAQ,CAAC;CAEb,MAAM,aAAa,kBAAkB,WAAW,SAAS,EAAE,CAAC;CAE5D,MAAM,kBAAkB,cAAc;AACpC,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,oBAACC;GAAW,SAAS;GAAY,MAAM;IAAW;IACxD,CAAC,UAAU,WAAW,CAAC;CAE1B,MAAM,UAAU,cAAc;AAC5B,MAAI,CAAC,cAAe,QAAO;AAC3B,SAAO,cAAc;GACnB,gBAAgB;GAChB;GACA;GACA;GACA,cAAc;GACf,CAAC;IACD;EAAC;EAAe;EAAS;EAAY;EAAU;EAAgB,CAAC;CAEnE,MAAM,cAAc,cAAc;AAChC,MAAI,SAAU,QAAO;AACrB,SAAO,2BAA2B,SAAS;IAC1C,CAAC,UAAU,SAAS,CAAC;CAExB,MAAM,WAAW,cAAc;AAC7B,MAAI,SAAU,QAAO;AACrB,SAAO,wBAAwB,SAAS;IACvC,CAAC,UAAU,SAAS,CAAC;CAExB,MAAM,qBAAqB,kBAAkB;AAC3C,aAAW,SAAS,CAAC,KAAK;IACzB,EAAE,CAAC;AAEN,QACE,qBAACH;EACC,WAAW,GAAG,SAAS;GAAE;GAAQ;GAAS;GAAM,CAAC,EAAE,UAAU;EAC7D,kBAAe;EACR;EACP,GAAI;aAEJ,qBAACA;GACC;GACA,OAAO;GACP,WAAW,GAAG,eAAe,EAAE,SAAS,CAAC,EAAE,YAAY,OAAO;GAC9D,SAAS;GACT,OAAO,cAAc;GACrB,SAAS;cAET,oBAAC;IACsB;IACR;IACH;IACA;IACJ;IACI;IACG;IACC;KACd,EACF,qBAACA;IAAQ;IAAW,OAAO;IAAU,MAAM;IAAQ,KAAK;IAAG,SAAS;eAClE,oBAACA;KAAQ;KAAW,OAAO;KAAU,WAAW;KAAiB,MAAM;KAAQ,KAAK;eACjF;MACO,EACV,oBAACI;KACC,MAAM,SAAS,cAAc;KAC7B,MAAM;KACN,SAAS;MACT;KACM;IACF,EACV,oBAACJ;GACC,WAAW,GAAG,aAAa,EAAE,QAAQ,CAAC,EAAE,YAAY,KAAK;GACzD,OAAO,cAAc;GAEpB;IACO;GACF;EAGf;AAED,2BAAe"}
@@ -1,8 +1,8 @@
1
1
  import { HighlighterProps } from "./type.mjs";
2
- import * as react35 from "react";
2
+ import * as react57 from "react";
3
3
 
4
4
  //#region src/Highlighter/Highlighter.d.ts
5
- declare const Highlighter: react35.NamedExoticComponent<HighlighterProps>;
5
+ declare const Highlighter: react57.NamedExoticComponent<HighlighterProps>;
6
6
  //#endregion
7
7
  export { Highlighter };
8
8
  //# sourceMappingURL=Highlighter.d.mts.map
@@ -30,8 +30,8 @@ const Highlighter = memo(({ animated, fullFeatured, actionIconSize, children, la
30
30
  const originalActions = useMemo(() => {
31
31
  if (!copyable) return null;
32
32
  return /* @__PURE__ */ jsx(CopyButton_default, {
33
- content: getCopyContent,
34
33
  glass: true,
34
+ content: getCopyContent,
35
35
  size: actionIconSize || {
36
36
  blockSize: 28,
37
37
  size: 16
@@ -64,12 +64,12 @@ const Highlighter = memo(({ animated, fullFeatured, actionIconSize, children, la
64
64
  className: classNames?.content,
65
65
  enableTransformer,
66
66
  language: lang?.toLowerCase(),
67
+ theme,
68
+ variant,
67
69
  style: {
68
70
  height: "100%",
69
71
  ...customStyles?.content
70
72
  },
71
- theme,
72
- variant,
73
73
  children: tirmedChildren
74
74
  }), [
75
75
  animated,
@@ -128,11 +128,11 @@ const Highlighter = memo(({ animated, fullFeatured, actionIconSize, children, la
128
128
  ...rest,
129
129
  children: [
130
130
  /* @__PURE__ */ jsx(FlexBasic_default, {
131
+ horizontal: true,
131
132
  align: "center",
132
133
  className: styles.actions,
133
134
  flex: "none",
134
135
  gap: 4,
135
- horizontal: true,
136
136
  children: actions
137
137
  }),
138
138
  showLanguage && language && /* @__PURE__ */ jsx(Tag_default, {
@@ -1 +1 @@
1
- {"version":3,"file":"Highlighter.mjs","names":["CopyButton","SyntaxHighlighter","FullFeatured","Flexbox","Tag"],"sources":["../../src/Highlighter/Highlighter.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { getCodeLanguageDisplayName } from '@/Highlighter/const';\nimport Tag from '@/Tag';\n\nimport FullFeatured from './FullFeatured';\nimport SyntaxHighlighter from './SyntaxHighlighter';\nimport { styles, variants } from './style';\nimport type { HighlighterProps } from './type';\n\nexport const Highlighter = memo<HighlighterProps>(\n ({\n animated,\n fullFeatured,\n actionIconSize,\n children,\n language = 'markdown',\n className,\n classNames,\n styles: customStyles,\n copyable = true,\n showLanguage = true,\n variant = 'filled',\n shadow,\n wrap,\n bodyRender,\n actionsRender,\n enableTransformer,\n theme,\n icon,\n fileName,\n allowChangeLanguage,\n defaultExpand = true,\n ...rest\n }) => {\n const [lang, setLang] = useState(language);\n\n // Safely handle children with boundary check\n const tirmedChildren = useMemo(() => {\n if (children === null || children === undefined) return '';\n if (typeof children !== 'string') {\n console.warn('Highlighter: children should be a string, received:', typeof children);\n return String(children);\n }\n return children.trim();\n }, [children]);\n\n const copyContentRef = useRef(tirmedChildren);\n\n useEffect(() => {\n copyContentRef.current = tirmedChildren;\n }, [tirmedChildren]);\n\n const getCopyContent = useCallback(() => copyContentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return (\n <CopyButton\n content={getCopyContent}\n glass\n size={actionIconSize || { blockSize: 28, size: 16 }}\n />\n );\n }, [actionIconSize, copyable, getCopyContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize,\n content: tirmedChildren,\n getContent: getCopyContent,\n language: lang,\n originalNode: originalActions,\n });\n }, [actionIconSize, actionsRender, getCopyContent, lang, originalActions, tirmedChildren]);\n\n const originalBody = useMemo(\n () => (\n <SyntaxHighlighter\n animated={animated}\n className={classNames?.content}\n enableTransformer={enableTransformer}\n language={lang?.toLowerCase()}\n style={{\n height: '100%',\n ...customStyles?.content,\n }}\n theme={theme}\n variant={variant}\n >\n {tirmedChildren}\n </SyntaxHighlighter>\n ),\n [\n animated,\n enableTransformer,\n lang,\n theme,\n tirmedChildren,\n variant,\n customStyles?.content,\n customStyles?.content,\n ],\n );\n\n const displayName = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageDisplayName(language);\n }, [fileName, language]);\n\n const body = useMemo(() => {\n if (!bodyRender) return originalBody;\n return bodyRender({ content: tirmedChildren, language: lang, originalNode: originalBody });\n }, [bodyRender, lang, originalBody, tirmedChildren]);\n\n if (fullFeatured)\n return (\n <FullFeatured\n actionsRender={actionsRender}\n allowChangeLanguage={allowChangeLanguage}\n className={className}\n classNames={classNames}\n content={tirmedChildren}\n copyable={copyable}\n defaultExpand={defaultExpand}\n fileName={fileName}\n icon={icon}\n language={language}\n setLanguage={setLang}\n shadow={shadow}\n showLanguage={showLanguage}\n styles={customStyles}\n variant={variant}\n wrap={wrap}\n {...rest}\n >\n {body}\n </FullFeatured>\n );\n\n return (\n <Flexbox\n className={cx(variants({ shadow, variant, wrap }), className)}\n data-code-type=\"highlighter\"\n {...rest}\n >\n <Flexbox align={'center'} className={styles.actions} flex={'none'} gap={4} horizontal>\n {actions}\n </Flexbox>\n {showLanguage && language && <Tag className={styles.lang}>{displayName}</Tag>}\n {body}\n </Flexbox>\n );\n },\n);\n\nHighlighter.displayName = 'Highlighter';\n\nexport default Highlighter;\n"],"mappings":";;;;;;;;;;;;;;AAeA,MAAa,cAAc,MACxB,EACC,UACA,cACA,gBACA,UACA,WAAW,YACX,WACA,YACA,QAAQ,cACR,WAAW,MACX,eAAe,MACf,UAAU,UACV,QACA,MACA,YACA,eACA,mBACA,OACA,MACA,UACA,qBACA,gBAAgB,MAChB,GAAG,WACC;CACJ,MAAM,CAAC,MAAM,WAAW,SAAS,SAAS;CAG1C,MAAM,iBAAiB,cAAc;AACnC,MAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,MAAI,OAAO,aAAa,UAAU;AAChC,WAAQ,KAAK,uDAAuD,OAAO,SAAS;AACpF,UAAO,OAAO,SAAS;;AAEzB,SAAO,SAAS,MAAM;IACrB,CAAC,SAAS,CAAC;CAEd,MAAM,iBAAiB,OAAO,eAAe;AAE7C,iBAAgB;AACd,iBAAe,UAAU;IACxB,CAAC,eAAe,CAAC;CAEpB,MAAM,iBAAiB,kBAAkB,eAAe,SAAS,EAAE,CAAC;CAEpE,MAAM,kBAAkB,cAAc;AACpC,MAAI,CAAC,SAAU,QAAO;AACtB,SACE,oBAACA;GACC,SAAS;GACT;GACA,MAAM,kBAAkB;IAAE,WAAW;IAAI,MAAM;IAAI;IACnD;IAEH;EAAC;EAAgB;EAAU;EAAe,CAAC;CAE9C,MAAM,UAAU,cAAc;AAC5B,MAAI,CAAC,cAAe,QAAO;AAC3B,SAAO,cAAc;GACnB;GACA,SAAS;GACT,YAAY;GACZ,UAAU;GACV,cAAc;GACf,CAAC;IACD;EAAC;EAAgB;EAAe;EAAgB;EAAM;EAAiB;EAAe,CAAC;CAE1F,MAAM,eAAe,cAEjB,oBAACC;EACW;EACV,WAAW,YAAY;EACJ;EACnB,UAAU,MAAM,aAAa;EAC7B,OAAO;GACL,QAAQ;GACR,GAAG,cAAc;GAClB;EACM;EACE;YAER;GACiB,EAEtB;EACE;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACd,cAAc;EACf,CACF;CAED,MAAM,cAAc,cAAc;AAChC,MAAI,SAAU,QAAO;AACrB,SAAO,2BAA2B,SAAS;IAC1C,CAAC,UAAU,SAAS,CAAC;CAExB,MAAM,OAAO,cAAc;AACzB,MAAI,CAAC,WAAY,QAAO;AACxB,SAAO,WAAW;GAAE,SAAS;GAAgB,UAAU;GAAM,cAAc;GAAc,CAAC;IACzF;EAAC;EAAY;EAAM;EAAc;EAAe,CAAC;AAEpD,KAAI,aACF,QACE,oBAACC;EACgB;EACM;EACV;EACC;EACZ,SAAS;EACC;EACK;EACL;EACJ;EACI;EACV,aAAa;EACL;EACM;EACd,QAAQ;EACC;EACH;EACN,GAAI;YAEH;GACY;AAGnB,QACE,qBAACC;EACC,WAAW,GAAG,SAAS;GAAE;GAAQ;GAAS;GAAM,CAAC,EAAE,UAAU;EAC7D,kBAAe;EACf,GAAI;;GAEJ,oBAACA;IAAQ,OAAO;IAAU,WAAW,OAAO;IAAS,MAAM;IAAQ,KAAK;IAAG;cACxE;KACO;GACT,gBAAgB,YAAY,oBAACC;IAAI,WAAW,OAAO;cAAO;KAAkB;GAC5E;;GACO;EAGf;AAED,YAAY,cAAc;AAE1B,0BAAe"}
1
+ {"version":3,"file":"Highlighter.mjs","names":["CopyButton","SyntaxHighlighter","FullFeatured","Flexbox","Tag"],"sources":["../../src/Highlighter/Highlighter.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { getCodeLanguageDisplayName } from '@/Highlighter/const';\nimport Tag from '@/Tag';\n\nimport FullFeatured from './FullFeatured';\nimport { styles, variants } from './style';\nimport SyntaxHighlighter from './SyntaxHighlighter';\nimport { type HighlighterProps } from './type';\n\nexport const Highlighter = memo<HighlighterProps>(\n ({\n animated,\n fullFeatured,\n actionIconSize,\n children,\n language = 'markdown',\n className,\n classNames,\n styles: customStyles,\n copyable = true,\n showLanguage = true,\n variant = 'filled',\n shadow,\n wrap,\n bodyRender,\n actionsRender,\n enableTransformer,\n theme,\n icon,\n fileName,\n allowChangeLanguage,\n defaultExpand = true,\n ...rest\n }) => {\n const [lang, setLang] = useState(language);\n\n // Safely handle children with boundary check\n const tirmedChildren = useMemo(() => {\n if (children === null || children === undefined) return '';\n if (typeof children !== 'string') {\n console.warn('Highlighter: children should be a string, received:', typeof children);\n return String(children);\n }\n return children.trim();\n }, [children]);\n\n const copyContentRef = useRef(tirmedChildren);\n\n useEffect(() => {\n copyContentRef.current = tirmedChildren;\n }, [tirmedChildren]);\n\n const getCopyContent = useCallback(() => copyContentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return (\n <CopyButton\n glass\n content={getCopyContent}\n size={actionIconSize || { blockSize: 28, size: 16 }}\n />\n );\n }, [actionIconSize, copyable, getCopyContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize,\n content: tirmedChildren,\n getContent: getCopyContent,\n language: lang,\n originalNode: originalActions,\n });\n }, [actionIconSize, actionsRender, getCopyContent, lang, originalActions, tirmedChildren]);\n\n const originalBody = useMemo(\n () => (\n <SyntaxHighlighter\n animated={animated}\n className={classNames?.content}\n enableTransformer={enableTransformer}\n language={lang?.toLowerCase()}\n theme={theme}\n variant={variant}\n style={{\n height: '100%',\n ...customStyles?.content,\n }}\n >\n {tirmedChildren}\n </SyntaxHighlighter>\n ),\n [\n animated,\n enableTransformer,\n lang,\n theme,\n tirmedChildren,\n variant,\n customStyles?.content,\n customStyles?.content,\n ],\n );\n\n const displayName = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageDisplayName(language);\n }, [fileName, language]);\n\n const body = useMemo(() => {\n if (!bodyRender) return originalBody;\n return bodyRender({ content: tirmedChildren, language: lang, originalNode: originalBody });\n }, [bodyRender, lang, originalBody, tirmedChildren]);\n\n if (fullFeatured)\n return (\n <FullFeatured\n actionsRender={actionsRender}\n allowChangeLanguage={allowChangeLanguage}\n className={className}\n classNames={classNames}\n content={tirmedChildren}\n copyable={copyable}\n defaultExpand={defaultExpand}\n fileName={fileName}\n icon={icon}\n language={language}\n setLanguage={setLang}\n shadow={shadow}\n showLanguage={showLanguage}\n styles={customStyles}\n variant={variant}\n wrap={wrap}\n {...rest}\n >\n {body}\n </FullFeatured>\n );\n\n return (\n <Flexbox\n className={cx(variants({ shadow, variant, wrap }), className)}\n data-code-type=\"highlighter\"\n {...rest}\n >\n <Flexbox horizontal align={'center'} className={styles.actions} flex={'none'} gap={4}>\n {actions}\n </Flexbox>\n {showLanguage && language && <Tag className={styles.lang}>{displayName}</Tag>}\n {body}\n </Flexbox>\n );\n },\n);\n\nHighlighter.displayName = 'Highlighter';\n\nexport default Highlighter;\n"],"mappings":";;;;;;;;;;;;;;AAeA,MAAa,cAAc,MACxB,EACC,UACA,cACA,gBACA,UACA,WAAW,YACX,WACA,YACA,QAAQ,cACR,WAAW,MACX,eAAe,MACf,UAAU,UACV,QACA,MACA,YACA,eACA,mBACA,OACA,MACA,UACA,qBACA,gBAAgB,MAChB,GAAG,WACC;CACJ,MAAM,CAAC,MAAM,WAAW,SAAS,SAAS;CAG1C,MAAM,iBAAiB,cAAc;AACnC,MAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,MAAI,OAAO,aAAa,UAAU;AAChC,WAAQ,KAAK,uDAAuD,OAAO,SAAS;AACpF,UAAO,OAAO,SAAS;;AAEzB,SAAO,SAAS,MAAM;IACrB,CAAC,SAAS,CAAC;CAEd,MAAM,iBAAiB,OAAO,eAAe;AAE7C,iBAAgB;AACd,iBAAe,UAAU;IACxB,CAAC,eAAe,CAAC;CAEpB,MAAM,iBAAiB,kBAAkB,eAAe,SAAS,EAAE,CAAC;CAEpE,MAAM,kBAAkB,cAAc;AACpC,MAAI,CAAC,SAAU,QAAO;AACtB,SACE,oBAACA;GACC;GACA,SAAS;GACT,MAAM,kBAAkB;IAAE,WAAW;IAAI,MAAM;IAAI;IACnD;IAEH;EAAC;EAAgB;EAAU;EAAe,CAAC;CAE9C,MAAM,UAAU,cAAc;AAC5B,MAAI,CAAC,cAAe,QAAO;AAC3B,SAAO,cAAc;GACnB;GACA,SAAS;GACT,YAAY;GACZ,UAAU;GACV,cAAc;GACf,CAAC;IACD;EAAC;EAAgB;EAAe;EAAgB;EAAM;EAAiB;EAAe,CAAC;CAE1F,MAAM,eAAe,cAEjB,oBAACC;EACW;EACV,WAAW,YAAY;EACJ;EACnB,UAAU,MAAM,aAAa;EACtB;EACE;EACT,OAAO;GACL,QAAQ;GACR,GAAG,cAAc;GAClB;YAEA;GACiB,EAEtB;EACE;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACd,cAAc;EACf,CACF;CAED,MAAM,cAAc,cAAc;AAChC,MAAI,SAAU,QAAO;AACrB,SAAO,2BAA2B,SAAS;IAC1C,CAAC,UAAU,SAAS,CAAC;CAExB,MAAM,OAAO,cAAc;AACzB,MAAI,CAAC,WAAY,QAAO;AACxB,SAAO,WAAW;GAAE,SAAS;GAAgB,UAAU;GAAM,cAAc;GAAc,CAAC;IACzF;EAAC;EAAY;EAAM;EAAc;EAAe,CAAC;AAEpD,KAAI,aACF,QACE,oBAACC;EACgB;EACM;EACV;EACC;EACZ,SAAS;EACC;EACK;EACL;EACJ;EACI;EACV,aAAa;EACL;EACM;EACd,QAAQ;EACC;EACH;EACN,GAAI;YAEH;GACY;AAGnB,QACE,qBAACC;EACC,WAAW,GAAG,SAAS;GAAE;GAAQ;GAAS;GAAM,CAAC,EAAE,UAAU;EAC7D,kBAAe;EACf,GAAI;;GAEJ,oBAACA;IAAQ;IAAW,OAAO;IAAU,WAAW,OAAO;IAAS,MAAM;IAAQ,KAAK;cAChF;KACO;GACT,gBAAgB,YAAY,oBAACC;IAAI,WAAW,OAAO;cAAO;KAAkB;GAC5E;;GACO;EAGf;AAED,YAAY,cAAc;AAE1B,0BAAe"}
@@ -12,14 +12,14 @@ import { bundledLanguagesInfo } from "shiki";
12
12
  //#region src/Highlighter/LangSelect.tsx
13
13
  const LangSelect = memo(({ ...rest }) => {
14
14
  return /* @__PURE__ */ jsx(Select, {
15
+ showSearch: true,
15
16
  className: "languageTitle",
16
- onClick: stopPropagation,
17
17
  options: useMemo(() => [{
18
18
  aliases: ["text", "txt"],
19
19
  label: /* @__PURE__ */ jsxs(FlexBasic_default, {
20
+ horizontal: true,
20
21
  align: "center",
21
22
  gap: 4,
22
- horizontal: true,
23
23
  children: [/* @__PURE__ */ jsx(MaterialFileTypeIcon_default, {
24
24
  fallbackUnknownType: false,
25
25
  filename: `*.txt`,
@@ -36,9 +36,9 @@ const LangSelect = memo(({ ...rest }) => {
36
36
  }, ...bundledLanguagesInfo.map((item) => ({
37
37
  aliases: item.aliases,
38
38
  label: /* @__PURE__ */ jsxs(FlexBasic_default, {
39
+ horizontal: true,
39
40
  align: "center",
40
41
  gap: 4,
41
- horizontal: true,
42
42
  children: [/* @__PURE__ */ jsx(MaterialFileTypeIcon_default, {
43
43
  fallbackUnknownType: false,
44
44
  filename: `*.${item?.aliases?.[0] || item.id}`,
@@ -54,14 +54,14 @@ const LangSelect = memo(({ ...rest }) => {
54
54
  title: (item.aliases || [item.id]).filter(Boolean).map((item$1) => `*.${item$1}`).join(","),
55
55
  value: item.id
56
56
  }))], []),
57
- showSearch: true,
58
57
  size: "small",
58
+ suffixIcon: false,
59
+ variant: "borderless",
59
60
  style: {
60
61
  maxWidth: 240,
61
62
  width: "100%"
62
63
  },
63
- suffixIcon: false,
64
- variant: "borderless",
64
+ onClick: stopPropagation,
65
65
  ...rest
66
66
  });
67
67
  });
@@ -1 +1 @@
1
- {"version":3,"file":"LangSelect.mjs","names":["Flexbox","MaterialFileTypeIcon","Text","item"],"sources":["../../src/Highlighter/LangSelect.tsx"],"sourcesContent":["'use client';\n\nimport { Select, type SelectProps } from 'antd';\nimport { memo, useMemo } from 'react';\nimport { bundledLanguagesInfo } from 'shiki';\n\nimport { Flexbox } from '@/Flex';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nexport const LangSelect = memo<Omit<SelectProps, 'options'>>(({ ...rest }) => {\n const options = useMemo(\n () => [\n {\n aliases: ['text', 'txt'],\n label: (\n <Flexbox align={'center'} gap={4} horizontal>\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={`*.txt`}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n <Text ellipsis fontSize={13}>\n Plaintext\n </Text>\n </Flexbox>\n ),\n value: 'plaintext',\n },\n ...bundledLanguagesInfo.map((item) => ({\n aliases: item.aliases,\n label: (\n <Flexbox align={'center'} gap={4} horizontal>\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={`*.${item?.aliases?.[0] || item.id}`}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n <Text ellipsis fontSize={13}>\n {item.name}\n </Text>\n </Flexbox>\n ),\n title: (item.aliases || [item.id])\n .filter(Boolean)\n .map((item) => `*.${item}`)\n .join(','),\n value: item.id,\n })),\n ],\n [],\n );\n\n return (\n <Select\n className={'languageTitle'}\n onClick={stopPropagation}\n options={options}\n showSearch\n size={'small'}\n style={{\n maxWidth: 240,\n width: '100%',\n }}\n suffixIcon={false}\n variant={'borderless'}\n {...rest}\n />\n );\n});\n\nexport default LangSelect;\n"],"mappings":";;;;;;;;;;;;AAWA,MAAa,aAAa,MAAoC,EAAE,GAAG,WAAW;AA+C5E,QACE,oBAAC;EACC,WAAW;EACX,SAAS;EACT,SAlDY,cACR,CACJ;GACE,SAAS,CAAC,QAAQ,MAAM;GACxB,OACE,qBAACA;IAAQ,OAAO;IAAU,KAAK;IAAG;eAChC,oBAACC;KACC,qBAAqB;KACrB,UAAU;KACV,MAAM;KACN,MAAM;KACN,SAAS;MACT,EACF,oBAACC;KAAK;KAAS,UAAU;eAAI;MAEtB;KACC;GAEZ,OAAO;GACR,EACD,GAAG,qBAAqB,KAAK,UAAU;GACrC,SAAS,KAAK;GACd,OACE,qBAACF;IAAQ,OAAO;IAAU,KAAK;IAAG;eAChC,oBAACC;KACC,qBAAqB;KACrB,UAAU,KAAK,MAAM,UAAU,MAAM,KAAK;KAC1C,MAAM;KACN,MAAM;KACN,SAAS;MACT,EACF,oBAACC;KAAK;KAAS,UAAU;eACtB,KAAK;MACD;KACC;GAEZ,QAAQ,KAAK,WAAW,CAAC,KAAK,GAAG,EAC9B,OAAO,QAAQ,CACf,KAAK,WAAS,KAAKC,SAAO,CAC1B,KAAK,IAAI;GACZ,OAAO,KAAK;GACb,EAAE,CACJ,EACD,EAAE,CACH;EAOG;EACA,MAAM;EACN,OAAO;GACL,UAAU;GACV,OAAO;GACR;EACD,YAAY;EACZ,SAAS;EACT,GAAI;GACJ;EAEJ;AAEF,yBAAe"}
1
+ {"version":3,"file":"LangSelect.mjs","names":["Flexbox","MaterialFileTypeIcon","Text","item"],"sources":["../../src/Highlighter/LangSelect.tsx"],"sourcesContent":["'use client';\n\nimport { Select, type SelectProps } from 'antd';\nimport { memo, useMemo } from 'react';\nimport { bundledLanguagesInfo } from 'shiki';\n\nimport { Flexbox } from '@/Flex';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nexport const LangSelect = memo<Omit<SelectProps, 'options'>>(({ ...rest }) => {\n const options = useMemo(\n () => [\n {\n aliases: ['text', 'txt'],\n label: (\n <Flexbox horizontal align={'center'} gap={4}>\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={`*.txt`}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n <Text ellipsis fontSize={13}>\n Plaintext\n </Text>\n </Flexbox>\n ),\n value: 'plaintext',\n },\n ...bundledLanguagesInfo.map((item) => ({\n aliases: item.aliases,\n label: (\n <Flexbox horizontal align={'center'} gap={4}>\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={`*.${item?.aliases?.[0] || item.id}`}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n <Text ellipsis fontSize={13}>\n {item.name}\n </Text>\n </Flexbox>\n ),\n title: (item.aliases || [item.id])\n .filter(Boolean)\n .map((item) => `*.${item}`)\n .join(','),\n value: item.id,\n })),\n ],\n [],\n );\n\n return (\n <Select\n showSearch\n className={'languageTitle'}\n options={options}\n size={'small'}\n suffixIcon={false}\n variant={'borderless'}\n style={{\n maxWidth: 240,\n width: '100%',\n }}\n onClick={stopPropagation}\n {...rest}\n />\n );\n});\n\nexport default LangSelect;\n"],"mappings":";;;;;;;;;;;;AAWA,MAAa,aAAa,MAAoC,EAAE,GAAG,WAAW;AA+C5E,QACE,oBAAC;EACC;EACA,WAAW;EACX,SAlDY,cACR,CACJ;GACE,SAAS,CAAC,QAAQ,MAAM;GACxB,OACE,qBAACA;IAAQ;IAAW,OAAO;IAAU,KAAK;eACxC,oBAACC;KACC,qBAAqB;KACrB,UAAU;KACV,MAAM;KACN,MAAM;KACN,SAAS;MACT,EACF,oBAACC;KAAK;KAAS,UAAU;eAAI;MAEtB;KACC;GAEZ,OAAO;GACR,EACD,GAAG,qBAAqB,KAAK,UAAU;GACrC,SAAS,KAAK;GACd,OACE,qBAACF;IAAQ;IAAW,OAAO;IAAU,KAAK;eACxC,oBAACC;KACC,qBAAqB;KACrB,UAAU,KAAK,MAAM,UAAU,MAAM,KAAK;KAC1C,MAAM;KACN,MAAM;KACN,SAAS;MACT,EACF,oBAACC;KAAK;KAAS,UAAU;eACtB,KAAK;MACD;KACC;GAEZ,QAAQ,KAAK,WAAW,CAAC,KAAK,GAAG,EAC9B,OAAO,QAAQ,CACf,KAAK,WAAS,KAAKC,SAAO,CAC1B,KAAK,IAAI;GACZ,OAAO,KAAK;GACb,EAAE,CACJ,EACD,EAAE,CACH;EAOG,MAAM;EACN,YAAY;EACZ,SAAS;EACT,OAAO;GACL,UAAU;GACV,OAAO;GACR;EACD,SAAS;EACT,GAAI;GACJ;EAEJ;AAEF,yBAAe"}
@@ -19,9 +19,9 @@ const StaticRenderer = memo(({ children, className, enableTransformer, fallbackC
19
19
  });
20
20
  return /* @__PURE__ */ jsx("div", {
21
21
  className: typeof data === "string" && data.length > 0 ? className : fallbackClassName,
22
- dangerouslySetInnerHTML: { __html: data || `<pre><code>${escapeHtml(safeChildren)}</code></pre>` },
23
22
  dir: "ltr",
24
- style
23
+ style,
24
+ dangerouslySetInnerHTML: { __html: data || `<pre><code>${escapeHtml(safeChildren)}</code></pre>` }
25
25
  });
26
26
  });
27
27
  StaticRenderer.displayName = "StaticRenderer";
@@ -1 +1 @@
1
- {"version":3,"file":"StaticRenderer.mjs","names":[],"sources":["../../../src/Highlighter/SyntaxHighlighter/StaticRenderer.tsx"],"sourcesContent":["'use client';\n\nimport { CSSProperties, memo } from 'react';\nimport type { BuiltinTheme } from 'shiki';\n\nimport { useHighlight } from '@/hooks/useHighlight';\n\ninterface StaticRendererProps {\n children: string;\n className?: string;\n enableTransformer?: boolean;\n fallbackClassName?: string;\n language: string;\n style?: CSSProperties;\n theme?: BuiltinTheme;\n}\n\n// Escape HTML for fallback to prevent XSS\nconst escapeHtml = (str: string) =>\n str\n .replaceAll('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\n .replaceAll('\"', '&quot;')\n .replaceAll(\"'\", '&#039;');\n\n/**\n * Static renderer for syntax highlighting without animation\n * Uses useHighlight hook to generate HTML and renders it directly\n */\nconst StaticRenderer = memo<StaticRendererProps>(\n ({ children, className, enableTransformer, fallbackClassName, language, style, theme }) => {\n // Safely handle empty or invalid children\n const safeChildren = children ?? '';\n\n const data = useHighlight(safeChildren, {\n enableTransformer,\n language,\n theme,\n });\n\n const hasData = typeof data === 'string' && data.length > 0;\n const containerClassName = hasData ? className : fallbackClassName;\n\n return (\n <div\n className={containerClassName}\n dangerouslySetInnerHTML={{\n __html: data || `<pre><code>${escapeHtml(safeChildren)}</code></pre>`,\n }}\n dir=\"ltr\"\n style={style}\n />\n );\n },\n);\n\nStaticRenderer.displayName = 'StaticRenderer';\n\nexport default StaticRenderer;\n"],"mappings":";;;;;;;AAkBA,MAAM,cAAc,QAClB,IACG,WAAW,KAAK,QAAQ,CACxB,WAAW,KAAK,OAAO,CACvB,WAAW,KAAK,OAAO,CACvB,WAAW,MAAK,SAAS,CACzB,WAAW,KAAK,SAAS;;;;;AAM9B,MAAM,iBAAiB,MACpB,EAAE,UAAU,WAAW,mBAAmB,mBAAmB,UAAU,OAAO,YAAY;CAEzF,MAAM,eAAe,YAAY;CAEjC,MAAM,OAAO,aAAa,cAAc;EACtC;EACA;EACA;EACD,CAAC;AAKF,QACE,oBAAC;EACC,WALY,OAAO,SAAS,YAAY,KAAK,SAAS,IACrB,YAAY;EAK7C,yBAAyB,EACvB,QAAQ,QAAQ,cAAc,WAAW,aAAa,CAAC,gBACxD;EACD,KAAI;EACG;GACP;EAGP;AAED,eAAe,cAAc;AAE7B,6BAAe"}
1
+ {"version":3,"file":"StaticRenderer.mjs","names":[],"sources":["../../../src/Highlighter/SyntaxHighlighter/StaticRenderer.tsx"],"sourcesContent":["'use client';\n\nimport { type CSSProperties, memo } from 'react';\nimport type { BuiltinTheme } from 'shiki';\n\nimport { useHighlight } from '@/hooks/useHighlight';\n\ninterface StaticRendererProps {\n children: string;\n className?: string;\n enableTransformer?: boolean;\n fallbackClassName?: string;\n language: string;\n style?: CSSProperties;\n theme?: BuiltinTheme;\n}\n\n// Escape HTML for fallback to prevent XSS\nconst escapeHtml = (str: string) =>\n str\n .replaceAll('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\n .replaceAll('\"', '&quot;')\n .replaceAll(\"'\", '&#039;');\n\n/**\n * Static renderer for syntax highlighting without animation\n * Uses useHighlight hook to generate HTML and renders it directly\n */\nconst StaticRenderer = memo<StaticRendererProps>(\n ({ children, className, enableTransformer, fallbackClassName, language, style, theme }) => {\n // Safely handle empty or invalid children\n const safeChildren = children ?? '';\n\n const data = useHighlight(safeChildren, {\n enableTransformer,\n language,\n theme,\n });\n\n const hasData = typeof data === 'string' && data.length > 0;\n const containerClassName = hasData ? className : fallbackClassName;\n\n return (\n <div\n className={containerClassName}\n dir=\"ltr\"\n style={style}\n dangerouslySetInnerHTML={{\n __html: data || `<pre><code>${escapeHtml(safeChildren)}</code></pre>`,\n }}\n />\n );\n },\n);\n\nStaticRenderer.displayName = 'StaticRenderer';\n\nexport default StaticRenderer;\n"],"mappings":";;;;;;;AAkBA,MAAM,cAAc,QAClB,IACG,WAAW,KAAK,QAAQ,CACxB,WAAW,KAAK,OAAO,CACvB,WAAW,KAAK,OAAO,CACvB,WAAW,MAAK,SAAS,CACzB,WAAW,KAAK,SAAS;;;;;AAM9B,MAAM,iBAAiB,MACpB,EAAE,UAAU,WAAW,mBAAmB,mBAAmB,UAAU,OAAO,YAAY;CAEzF,MAAM,eAAe,YAAY;CAEjC,MAAM,OAAO,aAAa,cAAc;EACtC;EACA;EACA;EACD,CAAC;AAKF,QACE,oBAAC;EACC,WALY,OAAO,SAAS,YAAY,KAAK,SAAS,IACrB,YAAY;EAK7C,KAAI;EACG;EACP,yBAAyB,EACvB,QAAQ,QAAQ,cAAc,WAAW,aAAa,CAAC,gBACxD;GACD;EAGP;AAED,eAAe,cAAc;AAE7B,6BAAe"}
@@ -1,8 +1,8 @@
1
1
  import { SyntaxHighlighterProps } from "../type.mjs";
2
- import * as react36 from "react";
2
+ import * as react58 from "react";
3
3
 
4
4
  //#region src/Highlighter/SyntaxHighlighter/index.d.ts
5
- declare const SyntaxHighlighter: react36.NamedExoticComponent<SyntaxHighlighterProps>;
5
+ declare const SyntaxHighlighter: react58.NamedExoticComponent<SyntaxHighlighterProps>;
6
6
  //#endregion
7
7
  export { SyntaxHighlighter };
8
8
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.mjs","names":["cssVar"],"sources":["../../../src/Highlighter/SyntaxHighlighter/style.ts"],"sourcesContent":["import { createStaticStyles, cx, keyframes } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n `;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n animated: css`\n .animate-fade-in,\n span.line > span,\n code:not(:has(span.line)) {\n opacity: 1;\n animation: ${fadeIn} 1s ease-in-out;\n }\n `,\n\n noBackground: css`\n pre {\n background: transparent !important;\n }\n `,\n\n noPadding: css`\n pre {\n padding: 0;\n }\n `,\n\n padding: css`\n pre {\n padding: 16px;\n }\n `,\n root: css`\n direction: ltr;\n margin: 0;\n padding: 0;\n text-align: start;\n\n pre {\n overflow-x: auto;\n margin: 0;\n }\n `,\n shiki: cx(\n 'ant-highlighter-highlighter-shiki',\n css`\n pre {\n user-select: none;\n\n code {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n .line {\n user-select: text;\n\n display: block;\n\n width: calc(100% + 32px);\n margin-block: 0;\n margin-inline: -16px;\n padding-block: 0;\n padding-inline: 16px;\n }\n }\n\n &.has-focused {\n .line:not(.focused) {\n opacity: 0.5;\n }\n }\n\n .highlighted {\n background: ${cssVar.colorFillTertiary};\n\n &.warning {\n background: ${cssVar.colorWarningBg};\n }\n\n &.error {\n background: ${cssVar.colorErrorBg};\n }\n }\n\n .highlighted-word {\n padding-block: 0.1em;\n padding-inline: 0.2em;\n border: 1px solid ${cssVar.colorBorderSecondary};\n border-radius: ${cssVar.borderRadius};\n\n background: ${cssVar.colorFillTertiary};\n }\n\n .diff {\n &.remove {\n background: ${cssVar.colorErrorBg};\n\n &::before {\n content: '-';\n\n position: absolute;\n inset-inline-start: 4px;\n\n display: inline-block;\n\n color: ${cssVar.colorErrorText};\n }\n }\n\n &.add {\n background: ${cssVar.colorSuccessBg};\n\n &::before {\n content: '+';\n\n position: absolute;\n inset-inline-start: 4px;\n\n display: inline-block;\n\n color: ${cssVar.colorSuccessText};\n }\n }\n }\n }\n `,\n ),\n unshiki: css`\n color: ${cssVar.colorTextDescription};\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n animated: false,\n shiki: true,\n showBackground: false,\n variant: 'borderless',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n shiki: {\n false: styles.unshiki,\n true: styles.shiki,\n },\n showBackground: {\n false: styles.noBackground,\n true: null,\n },\n animated: {\n true: styles.animated,\n false: null,\n },\n variant: {\n filled: styles.padding,\n outlined: styles.padding,\n borderless: styles.noPadding,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n"],"mappings":";;;;AAGA,MAAM,SAAS,SAAS;;;;;;;;AASxB,MAAa,SAAS,oBAAoB,EAAE,YAAK,uBAAa;AAC5D,QAAO;EACL,UAAU,KAAG;;;;;qBAKI,OAAO;;;EAIxB,cAAc,KAAG;;;;;EAMjB,WAAW,KAAG;;;;;EAMd,SAAS,KAAG;;;;;EAKZ,MAAM,KAAG;;;;;;;;;;;EAWT,OAAO,GACL,qCACA,KAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA6BiBA,SAAO,kBAAkB;;;4BAGvBA,SAAO,eAAe;;;;4BAItBA,SAAO,aAAa;;;;;;;gCAOhBA,SAAO,qBAAqB;6BAC/BA,SAAO,aAAa;;0BAEvBA,SAAO,kBAAkB;;;;;4BAKvBA,SAAO,aAAa;;;;;;;;;;yBAUvBA,SAAO,eAAe;;;;;4BAKnBA,SAAO,eAAe;;;;;;;;;;yBAUzBA,SAAO,iBAAiB;;;;;QAM5C;EACD,SAAS,KAAG;eACDA,SAAO,qBAAqB;;EAExC;EACD;AAEF,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,iBAAiB;EACf,UAAU;EACV,OAAO;EACP,gBAAgB;EAChB,SAAS;EACV;CAED,UAAU;EACR,OAAO;GACL,OAAO,OAAO;GACd,MAAM,OAAO;GACd;EACD,gBAAgB;GACd,OAAO,OAAO;GACd,MAAM;GACP;EACD,UAAU;GACR,MAAM,OAAO;GACb,OAAO;GACR;EACD,SAAS;GACP,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,YAAY,OAAO;GACpB;EACF;CAEF,CAAC"}
1
+ {"version":3,"file":"style.mjs","names":["cssVar"],"sources":["../../../src/Highlighter/SyntaxHighlighter/style.ts"],"sourcesContent":["import { createStaticStyles, cx, keyframes } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n `;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n animated: css`\n .animate-fade-in,\n span.line > span,\n code:not(:has(span.line)) {\n opacity: 1;\n animation: ${fadeIn} 1s ease-in-out;\n }\n `,\n\n noBackground: css`\n pre {\n background: transparent !important;\n }\n `,\n\n noPadding: css`\n pre {\n padding: 0;\n }\n `,\n\n padding: css`\n pre {\n padding: 16px;\n }\n `,\n root: css`\n direction: ltr;\n margin: 0;\n padding: 0;\n text-align: start;\n\n pre {\n overflow-x: auto;\n margin: 0;\n }\n `,\n shiki: cx(\n 'ant-highlighter-highlighter-shiki',\n css`\n pre {\n user-select: none;\n\n code {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n .line {\n user-select: text;\n\n display: block;\n\n width: calc(100% + 32px);\n margin-block: 0;\n margin-inline: -16px;\n padding-block: 0;\n padding-inline: 16px;\n }\n }\n\n &.has-focused {\n .line:not(.focused) {\n opacity: 0.5;\n }\n }\n\n .highlighted {\n background: ${cssVar.colorFillTertiary};\n\n &.warning {\n background: ${cssVar.colorWarningBg};\n }\n\n &.error {\n background: ${cssVar.colorErrorBg};\n }\n }\n\n .highlighted-word {\n padding-block: 0.1em;\n padding-inline: 0.2em;\n border: 1px solid ${cssVar.colorBorderSecondary};\n border-radius: ${cssVar.borderRadius};\n\n background: ${cssVar.colorFillTertiary};\n }\n\n .diff {\n &.remove {\n background: ${cssVar.colorErrorBg};\n\n &::before {\n content: '-';\n\n position: absolute;\n inset-inline-start: 4px;\n\n display: inline-block;\n\n color: ${cssVar.colorErrorText};\n }\n }\n\n &.add {\n background: ${cssVar.colorSuccessBg};\n\n &::before {\n content: '+';\n\n position: absolute;\n inset-inline-start: 4px;\n\n display: inline-block;\n\n color: ${cssVar.colorSuccessText};\n }\n }\n }\n }\n `,\n ),\n unshiki: css`\n color: ${cssVar.colorTextDescription};\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n animated: false,\n shiki: true,\n showBackground: false,\n variant: 'borderless',\n },\n\n variants: {\n shiki: {\n false: styles.unshiki,\n true: styles.shiki,\n },\n showBackground: {\n false: styles.noBackground,\n true: null,\n },\n animated: {\n true: styles.animated,\n false: null,\n },\n variant: {\n filled: styles.padding,\n outlined: styles.padding,\n borderless: styles.noPadding,\n },\n },\n});\n"],"mappings":";;;;AAGA,MAAM,SAAS,SAAS;;;;;;;;AASxB,MAAa,SAAS,oBAAoB,EAAE,YAAK,uBAAa;AAC5D,QAAO;EACL,UAAU,KAAG;;;;;qBAKI,OAAO;;;EAIxB,cAAc,KAAG;;;;;EAMjB,WAAW,KAAG;;;;;EAMd,SAAS,KAAG;;;;;EAKZ,MAAM,KAAG;;;;;;;;;;;EAWT,OAAO,GACL,qCACA,KAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA6BiBA,SAAO,kBAAkB;;;4BAGvBA,SAAO,eAAe;;;;4BAItBA,SAAO,aAAa;;;;;;;gCAOhBA,SAAO,qBAAqB;6BAC/BA,SAAO,aAAa;;0BAEvBA,SAAO,kBAAkB;;;;;4BAKvBA,SAAO,aAAa;;;;;;;;;;yBAUvBA,SAAO,eAAe;;;;;4BAKnBA,SAAO,eAAe;;;;;;;;;;yBAUzBA,SAAO,iBAAiB;;;;;QAM5C;EACD,SAAS,KAAG;eACDA,SAAO,qBAAqB;;EAExC;EACD;AAEF,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,iBAAiB;EACf,UAAU;EACV,OAAO;EACP,gBAAgB;EAChB,SAAS;EACV;CAED,UAAU;EACR,OAAO;GACL,OAAO,OAAO;GACd,MAAM,OAAO;GACd;EACD,gBAAgB;GACd,OAAO,OAAO;GACd,MAAM;GACP;EACD,UAAU;GACR,MAAM,OAAO;GACb,OAAO;GACR;EACD,SAAS;GACP,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,YAAY,OAAO;GACpB;EACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"style.mjs","names":["cssVar","lobeStaticStylish"],"sources":["../../src/Highlighter/style.ts"],"sourcesContent":["import { createStaticStyles, cx } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\n// 动态类名常量(用于 className)\nexport const actionsHoverCls = 'ant-highlighter-highlighter-hover-actions';\nexport const langHoverCls = 'ant-highlighter-highlighter-hover-lang';\nexport const expandCls = 'ant-highlighter-highlighter-body-expand';\nexport const prefix = 'ant-highlighter';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n actions: cx(\n actionsHoverCls,\n css`\n position: absolute;\n z-index: 2;\n inset-block-start: 8px;\n inset-inline-end: 8px;\n\n opacity: 0;\n `,\n ),\n bodyCollapsed: css`\n height: 0;\n opacity: 0;\n `,\n bodyExpand: cx(expandCls),\n bodyRoot: css`\n overflow: hidden;\n transition: opacity 0.25s ${cssVar.motionEaseOut};\n `,\n borderless: lobeStaticStylish.variantBorderlessWithoutHover,\n filled: cx(\n lobeStaticStylish.variantFilledWithoutHover,\n css`\n background: ${cssVar.colorFillQuaternary};\n `,\n ),\n headerBorderless: css`\n padding-inline: 0;\n `,\n\n headerFilled: css`\n background: transparent;\n `,\n\n headerOutlined: css`\n & + .${expandCls} {\n border-block-start: 1px solid ${cssVar.colorFillQuaternary};\n }\n `,\n\n headerRoot: css`\n cursor: pointer;\n position: relative;\n padding: 4px;\n `,\n\n lang: cx(\n langHoverCls,\n lobeStaticStylish.blur,\n css`\n position: absolute;\n z-index: 2;\n inset-block-end: 8px;\n inset-inline-end: 8px;\n\n font-family: ${cssVar.fontFamilyCode};\n color: ${cssVar.colorTextSecondary};\n\n opacity: 0;\n background: ${cssVar.colorFillQuaternary};\n\n transition: opacity 0.1s;\n `,\n ),\n nowrap: css`\n pre,\n code {\n text-wrap: nowrap;\n }\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: cx(\n prefix,\n css`\n position: relative;\n\n overflow: hidden;\n\n width: 100%;\n border-radius: ${cssVar.borderRadius};\n\n transition: background-color 100ms ${cssVar.motionEaseOut};\n\n .languageTitle {\n opacity: 0.5;\n filter: grayscale(100%);\n transition:\n opacity,\n grayscale 0.2s ${cssVar.motionEaseInOut};\n }\n\n .panel-actions {\n opacity: 0;\n transition: opacity 0.2s ${cssVar.motionEaseInOut};\n }\n\n &:hover {\n .languageTitle {\n opacity: 1;\n filter: grayscale(0%);\n }\n\n .panel-actions {\n opacity: 1;\n }\n\n .${actionsHoverCls} {\n opacity: 1;\n }\n\n .${langHoverCls} {\n opacity: 1;\n }\n }\n\n pre {\n height: 100%;\n font-size: 12px;\n }\n\n code {\n background: transparent !important;\n }\n `,\n ),\n shadow: lobeStaticStylish.shadow,\n wrap: css`\n pre,\n code {\n text-wrap: wrap;\n }\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n shadow: false,\n variant: 'filled',\n wrap: false,\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n wrap: {\n false: styles.nowrap,\n true: styles.wrap,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const headerVariants = cva(styles.headerRoot, {\n defaultVariants: {\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: cx(styles.headerFilled, styles.headerOutlined),\n outlined: styles.headerOutlined,\n borderless: styles.headerBorderless,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const bodyVariants = cva(styles.bodyRoot, {\n defaultVariants: {\n expand: true,\n },\n variants: {\n expand: {\n false: styles.bodyCollapsed,\n true: styles.bodyExpand,\n },\n },\n});\n"],"mappings":";;;;;AAMA,MAAa,kBAAkB;AAC/B,MAAa,eAAe;AAC5B,MAAa,YAAY;AACzB,MAAa,SAAS;AAEtB,MAAa,SAAS,oBAAoB,EAAE,YAAK,uBAAa;AAC5D,QAAO;EACL,SAAS,GACP,iBACA,KAAG;;;;;;;QAQJ;EACD,eAAe,KAAG;;;;EAIlB,YAAY,GAAG,UAAU;EACzB,UAAU,KAAG;;kCAEiBA,SAAO,cAAc;;EAEnD,YAAYC,cAAkB;EAC9B,QAAQ,GACNA,cAAkB,2BAClB,KAAG;sBACaD,SAAO,oBAAoB;QAE5C;EACD,kBAAkB,KAAG;;;EAIrB,cAAc,KAAG;;;EAIjB,gBAAgB,KAAG;aACV,UAAU;wCACiBA,SAAO,oBAAoB;;;EAI/D,YAAY,KAAG;;;;;EAMf,MAAM,GACJ,cACAC,cAAkB,MAClB,KAAG;;;;;;uBAMcD,SAAO,eAAe;iBAC5BA,SAAO,mBAAmB;;;sBAGrBA,SAAO,oBAAoB;;;QAI5C;EACD,QAAQ,KAAG;;;;;;EAMX,UAAUC,cAAkB;EAC5B,MAAM,GACJ,QACA,KAAG;;;;;;yBAMgBD,SAAO,aAAa;;6CAEAA,SAAO,cAAc;;;;;;;6BAOrCA,SAAO,gBAAgB;;;;;qCAKfA,SAAO,gBAAgB;;;;;;;;;;;;;aAa/C,gBAAgB;;;;aAIhB,aAAa;;;;;;;;;;;;;QAcrB;EACD,QAAQC,cAAkB;EAC1B,MAAM,KAAG;;;;;;EAMV;EACD;AAEF,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,iBAAiB;EACf,QAAQ;EACR,SAAS;EACT,MAAM;EACP;CAED,UAAU;EACR,SAAS;GACP,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,YAAY,OAAO;GACpB;EACD,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;GACd;EACD,MAAM;GACJ,OAAO,OAAO;GACd,MAAM,OAAO;GACd;EACF;CAEF,CAAC;AAEF,MAAa,iBAAiB,IAAI,OAAO,YAAY;CACnD,iBAAiB,EACf,SAAS,UACV;CAED,UAAU,EACR,SAAS;EACP,QAAQ,GAAG,OAAO,cAAc,OAAO,eAAe;EACtD,UAAU,OAAO;EACjB,YAAY,OAAO;EACpB,EACF;CAEF,CAAC;AAEF,MAAa,eAAe,IAAI,OAAO,UAAU;CAC/C,iBAAiB,EACf,QAAQ,MACT;CACD,UAAU,EACR,QAAQ;EACN,OAAO,OAAO;EACd,MAAM,OAAO;EACd,EACF;CACF,CAAC"}
1
+ {"version":3,"file":"style.mjs","names":["cssVar","lobeStaticStylish"],"sources":["../../src/Highlighter/style.ts"],"sourcesContent":["import { createStaticStyles, cx } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\n// 动态类名常量(用于 className)\nexport const actionsHoverCls = 'ant-highlighter-highlighter-hover-actions';\nexport const langHoverCls = 'ant-highlighter-highlighter-hover-lang';\nexport const expandCls = 'ant-highlighter-highlighter-body-expand';\nexport const prefix = 'ant-highlighter';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n actions: cx(\n actionsHoverCls,\n css`\n position: absolute;\n z-index: 2;\n inset-block-start: 8px;\n inset-inline-end: 8px;\n\n opacity: 0;\n `,\n ),\n bodyCollapsed: css`\n height: 0;\n opacity: 0;\n `,\n bodyExpand: cx(expandCls),\n bodyRoot: css`\n overflow: hidden;\n transition: opacity 0.25s ${cssVar.motionEaseOut};\n `,\n borderless: lobeStaticStylish.variantBorderlessWithoutHover,\n filled: cx(\n lobeStaticStylish.variantFilledWithoutHover,\n css`\n background: ${cssVar.colorFillQuaternary};\n `,\n ),\n headerBorderless: css`\n padding-inline: 0;\n `,\n\n headerFilled: css`\n background: transparent;\n `,\n\n headerOutlined: css`\n & + .${expandCls} {\n border-block-start: 1px solid ${cssVar.colorFillQuaternary};\n }\n `,\n\n headerRoot: css`\n cursor: pointer;\n position: relative;\n padding: 4px;\n `,\n\n lang: cx(\n langHoverCls,\n lobeStaticStylish.blur,\n css`\n position: absolute;\n z-index: 2;\n inset-block-end: 8px;\n inset-inline-end: 8px;\n\n font-family: ${cssVar.fontFamilyCode};\n color: ${cssVar.colorTextSecondary};\n\n opacity: 0;\n background: ${cssVar.colorFillQuaternary};\n\n transition: opacity 0.1s;\n `,\n ),\n nowrap: css`\n pre,\n code {\n text-wrap: nowrap;\n }\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: cx(\n prefix,\n css`\n position: relative;\n\n overflow: hidden;\n\n width: 100%;\n border-radius: ${cssVar.borderRadius};\n\n transition: background-color 100ms ${cssVar.motionEaseOut};\n\n .languageTitle {\n opacity: 0.5;\n filter: grayscale(100%);\n transition:\n opacity,\n grayscale 0.2s ${cssVar.motionEaseInOut};\n }\n\n .panel-actions {\n opacity: 0;\n transition: opacity 0.2s ${cssVar.motionEaseInOut};\n }\n\n &:hover {\n .languageTitle {\n opacity: 1;\n filter: grayscale(0%);\n }\n\n .panel-actions {\n opacity: 1;\n }\n\n .${actionsHoverCls} {\n opacity: 1;\n }\n\n .${langHoverCls} {\n opacity: 1;\n }\n }\n\n pre {\n height: 100%;\n font-size: 12px;\n }\n\n code {\n background: transparent !important;\n }\n `,\n ),\n shadow: lobeStaticStylish.shadow,\n wrap: css`\n pre,\n code {\n text-wrap: wrap;\n }\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n shadow: false,\n variant: 'filled',\n wrap: false,\n },\n\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n wrap: {\n false: styles.nowrap,\n true: styles.wrap,\n },\n },\n});\n\nexport const headerVariants = cva(styles.headerRoot, {\n defaultVariants: {\n variant: 'filled',\n },\n\n variants: {\n variant: {\n filled: cx(styles.headerFilled, styles.headerOutlined),\n outlined: styles.headerOutlined,\n borderless: styles.headerBorderless,\n },\n },\n});\n\nexport const bodyVariants = cva(styles.bodyRoot, {\n defaultVariants: {\n expand: true,\n },\n variants: {\n expand: {\n false: styles.bodyCollapsed,\n true: styles.bodyExpand,\n },\n },\n});\n"],"mappings":";;;;;AAMA,MAAa,kBAAkB;AAC/B,MAAa,eAAe;AAC5B,MAAa,YAAY;AACzB,MAAa,SAAS;AAEtB,MAAa,SAAS,oBAAoB,EAAE,YAAK,uBAAa;AAC5D,QAAO;EACL,SAAS,GACP,iBACA,KAAG;;;;;;;QAQJ;EACD,eAAe,KAAG;;;;EAIlB,YAAY,GAAG,UAAU;EACzB,UAAU,KAAG;;kCAEiBA,SAAO,cAAc;;EAEnD,YAAYC,cAAkB;EAC9B,QAAQ,GACNA,cAAkB,2BAClB,KAAG;sBACaD,SAAO,oBAAoB;QAE5C;EACD,kBAAkB,KAAG;;;EAIrB,cAAc,KAAG;;;EAIjB,gBAAgB,KAAG;aACV,UAAU;wCACiBA,SAAO,oBAAoB;;;EAI/D,YAAY,KAAG;;;;;EAMf,MAAM,GACJ,cACAC,cAAkB,MAClB,KAAG;;;;;;uBAMcD,SAAO,eAAe;iBAC5BA,SAAO,mBAAmB;;;sBAGrBA,SAAO,oBAAoB;;;QAI5C;EACD,QAAQ,KAAG;;;;;;EAMX,UAAUC,cAAkB;EAC5B,MAAM,GACJ,QACA,KAAG;;;;;;yBAMgBD,SAAO,aAAa;;6CAEAA,SAAO,cAAc;;;;;;;6BAOrCA,SAAO,gBAAgB;;;;;qCAKfA,SAAO,gBAAgB;;;;;;;;;;;;;aAa/C,gBAAgB;;;;aAIhB,aAAa;;;;;;;;;;;;;QAcrB;EACD,QAAQC,cAAkB;EAC1B,MAAM,KAAG;;;;;;EAMV;EACD;AAEF,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,iBAAiB;EACf,QAAQ;EACR,SAAS;EACT,MAAM;EACP;CAED,UAAU;EACR,SAAS;GACP,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,YAAY,OAAO;GACpB;EACD,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;GACd;EACD,MAAM;GACJ,OAAO,OAAO;GACd,MAAM,OAAO;GACd;EACF;CACF,CAAC;AAEF,MAAa,iBAAiB,IAAI,OAAO,YAAY;CACnD,iBAAiB,EACf,SAAS,UACV;CAED,UAAU,EACR,SAAS;EACP,QAAQ,GAAG,OAAO,cAAc,OAAO,eAAe;EACtD,UAAU,OAAO;EACjB,YAAY,OAAO;EACpB,EACF;CACF,CAAC;AAEF,MAAa,eAAe,IAAI,OAAO,UAAU;CAC/C,iBAAiB,EACf,QAAQ,MACT;CACD,UAAU,EACR,QAAQ;EACN,OAAO,OAAO;EACd,MAAM,OAAO;EACd,EACF;CACF,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { HotkeyProps } from "./type.mjs";
2
- import * as react72 from "react";
2
+ import * as react56 from "react";
3
3
 
4
4
  //#region src/Hotkey/Hotkey.d.ts
5
- declare const Hotkey: react72.NamedExoticComponent<HotkeyProps>;
5
+ declare const Hotkey: react56.NamedExoticComponent<HotkeyProps>;
6
6
  //#endregion
7
7
  export { Hotkey };
8
8
  //# sourceMappingURL=Hotkey.d.mts.map
@@ -107,31 +107,31 @@ const Hotkey = memo(({ variant = "filled", classNames, styles: customStyles, key
107
107
  }, [keys]);
108
108
  const mapping = useMemo(() => mappingKey(isAppleDevice), [isAppleDevice]);
109
109
  return /* @__PURE__ */ jsx(FlexBasic_default, {
110
+ horizontal: true,
110
111
  align: "center",
111
112
  className,
112
113
  gap: isBorderless ? 6 : 2,
113
- horizontal: true,
114
114
  style,
115
115
  ...rest,
116
116
  children: compact || isBorderless ? /* @__PURE__ */ jsx(Center_default, {
117
+ horizontal: true,
117
118
  as: "kbd",
119
+ gap: 6,
120
+ style: customStyles?.kbdStyle,
118
121
  className: cx(variants({
119
122
  inverseTheme,
120
123
  isDarkMode,
121
124
  variant
122
125
  }), classNames?.kbdClassName),
123
- gap: 6,
124
- horizontal: true,
125
- style: customStyles?.kbdStyle,
126
126
  children: keysGroup.map((key, index) => /* @__PURE__ */ jsx("div", { children: mapping[key] ?? startCase(key) }, index))
127
127
  }) : keysGroup.map((key, index) => /* @__PURE__ */ jsx(Center_default, {
128
128
  as: "kbd",
129
+ style: customStyles?.kbdStyle,
129
130
  className: cx(variants({
130
131
  inverseTheme,
131
132
  isDarkMode,
132
133
  variant
133
134
  }), classNames?.kbdClassName),
134
- style: customStyles?.kbdStyle,
135
135
  children: mapping[key] ?? startCase(key)
136
136
  }, index))
137
137
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Hotkey.mjs","names":["Icon","LeftClickIcon","RightClickIcon","RightDoubleClickIcon","LeftDoubleClickIcon","mapping: Record<string, any>","Flexbox","Center"],"sources":["../../src/Hotkey/Hotkey.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport {\n ArrowBigUpIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n ArrowRightToLineIcon,\n ArrowUpIcon,\n ChevronUpIcon,\n Command,\n CornerDownLeftIcon,\n Delete,\n Grid2X2Icon,\n MouseIcon,\n Option,\n SpaceIcon,\n} from 'lucide-react';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport { Center, Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\nimport LeftClickIcon from '@/icons/lucideExtra/LeftClickIcon';\nimport LeftDoubleClickIcon from '@/icons/lucideExtra/LeftDoubleClickIcon';\nimport RightClickIcon from '@/icons/lucideExtra/RightClickIcon';\nimport RightDoubleClickIcon from '@/icons/lucideExtra/RightDoubleClickIcon';\n\nimport { KeyMapEnum } from './const';\nimport { variants } from './style';\nimport type { HotkeyProps } from './type';\nimport { checkIsAppleDevice, splitKeysByPlus, startCase } from './utils';\n\nconst mappingKey = (isAppleDevice: boolean) => ({\n [KeyMapEnum.Alt]: isAppleDevice ? <Icon icon={Option} size={{ size: '0.95em' }} /> : 'Alt',\n [KeyMapEnum.Backspace]: isAppleDevice ? <Icon icon={Delete} /> : 'Backspace',\n [KeyMapEnum.CommandOrControl]: isAppleDevice ? (\n <Icon icon={Command} size={{ size: '0.95em' }} />\n ) : (\n 'Ctrl'\n ),\n [KeyMapEnum.Ctrl]: isAppleDevice ? <Icon icon={ChevronUpIcon} /> : 'Ctrl',\n [KeyMapEnum.Control]: isAppleDevice ? <Icon icon={ChevronUpIcon} /> : 'Ctrl',\n [KeyMapEnum.Down]: <Icon icon={ArrowDownIcon} />,\n [KeyMapEnum.Enter]: isAppleDevice ? <Icon icon={CornerDownLeftIcon} /> : 'Enter',\n [KeyMapEnum.LeftClick]: <Icon icon={LeftClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />,\n [KeyMapEnum.Left]: <Icon icon={ArrowLeftIcon} />,\n [KeyMapEnum.Meta]: isAppleDevice ? (\n <Icon icon={Command} size={{ size: '0.95em' }} />\n ) : (\n <Icon icon={Grid2X2Icon} />\n ),\n [KeyMapEnum.MiddleClick]: <Icon icon={MouseIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />,\n [KeyMapEnum.Mod]: isAppleDevice ? <Icon icon={Command} size={{ size: '0.95em' }} /> : 'Ctrl',\n [KeyMapEnum.RightClick]: (\n <Icon icon={RightClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.RightDoubleClick]: (\n <Icon icon={RightDoubleClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.LeftDoubleClick]: (\n <Icon icon={LeftDoubleClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.Right]: <Icon icon={ArrowRightIcon} />,\n [KeyMapEnum.Shift]: isAppleDevice ? (\n <Icon icon={ArrowBigUpIcon} size={{ size: '1.15em', strokeWidth: 1.75 }} />\n ) : (\n 'Shift'\n ),\n [KeyMapEnum.Space]: <Icon icon={SpaceIcon} />,\n [KeyMapEnum.Tab]: isAppleDevice ? <Icon icon={ArrowRightToLineIcon} /> : 'Tab',\n [KeyMapEnum.Up]: <Icon icon={ArrowUpIcon} />,\n [KeyMapEnum.Comma]: ',',\n [KeyMapEnum.Period]: '.',\n [KeyMapEnum.Slash]: '?',\n [KeyMapEnum.Semicolon]: ';',\n [KeyMapEnum.Quote]: \"'\",\n [KeyMapEnum.Backquote]: '`',\n [KeyMapEnum.Backslash]: '\\\\',\n [KeyMapEnum.BracketLeft]: '[',\n [KeyMapEnum.BracketRight]: ']',\n [KeyMapEnum.Minus]: '-',\n [KeyMapEnum.Equal]: '+',\n});\n\nconst Hotkey = memo<HotkeyProps>(\n ({\n variant = 'filled',\n classNames,\n styles: customStyles,\n keys,\n inverseTheme,\n isApple,\n compact,\n className,\n style,\n ...rest\n }) => {\n const { isDarkMode } = useThemeMode();\n const isBorderless = variant === 'borderless';\n const [keysGroup, setKeysGroup] = useState(() => splitKeysByPlus(keys));\n const isAppleDevice = useMemo(() => checkIsAppleDevice(isApple), [isApple]);\n\n useEffect(() => {\n const newValue = splitKeysByPlus(keys);\n setKeysGroup(newValue);\n }, [keys]);\n\n const mapping: Record<string, any> = useMemo(() => mappingKey(isAppleDevice), [isAppleDevice]);\n\n return (\n <Flexbox\n align={'center'}\n className={className}\n gap={isBorderless ? 6 : 2}\n horizontal\n style={style}\n {...rest}\n >\n {compact || isBorderless ? (\n <Center\n as={'kbd'}\n className={cx(\n variants({ inverseTheme, isDarkMode, variant }),\n classNames?.kbdClassName,\n )}\n gap={6}\n horizontal\n style={customStyles?.kbdStyle}\n >\n {keysGroup.map((key, index) => (\n <div key={index}>{mapping[key] ?? startCase(key)}</div>\n ))}\n </Center>\n ) : (\n keysGroup.map((key, index) => (\n <Center\n as={'kbd'}\n className={cx(\n variants({ inverseTheme, isDarkMode, variant }),\n classNames?.kbdClassName,\n )}\n key={index}\n style={customStyles?.kbdStyle}\n >\n {mapping[key] ?? startCase(key)}\n </Center>\n ))\n )}\n </Flexbox>\n );\n },\n);\n\nHotkey.displayName = 'Hotkey';\n\nexport default Hotkey;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAiCA,MAAM,cAAc,mBAA4B;EAC7C,WAAW,MAAM,gBAAgB,oBAACA;EAAK,MAAM;EAAQ,MAAM,EAAE,MAAM,UAAU;GAAI,GAAG;EACpF,WAAW,YAAY,gBAAgB,oBAACA,gBAAK,MAAM,SAAU,GAAG;EAChE,WAAW,mBAAmB,gBAC7B,oBAACA;EAAK,MAAM;EAAS,MAAM,EAAE,MAAM,UAAU;GAAI,GAEjD;EAED,WAAW,OAAO,gBAAgB,oBAACA,gBAAK,MAAM,gBAAiB,GAAG;EAClE,WAAW,UAAU,gBAAgB,oBAACA,gBAAK,MAAM,gBAAiB,GAAG;EACrE,WAAW,OAAO,oBAACA,gBAAK,MAAM,gBAAiB;EAC/C,WAAW,QAAQ,gBAAgB,oBAACA,gBAAK,MAAM,qBAAsB,GAAG;EACxE,WAAW,YAAY,oBAACA;EAAK,MAAMC;EAAe,MAAM;GAAE,MAAM;GAAS,aAAa;GAAM;GAAI;EAChG,WAAW,OAAO,oBAACD,gBAAK,MAAM,gBAAiB;EAC/C,WAAW,OAAO,gBACjB,oBAACA;EAAK,MAAM;EAAS,MAAM,EAAE,MAAM,UAAU;GAAI,GAEjD,oBAACA,gBAAK,MAAM,cAAe;EAE5B,WAAW,cAAc,oBAACA;EAAK,MAAM;EAAW,MAAM;GAAE,MAAM;GAAS,aAAa;GAAM;GAAI;EAC9F,WAAW,MAAM,gBAAgB,oBAACA;EAAK,MAAM;EAAS,MAAM,EAAE,MAAM,UAAU;GAAI,GAAG;EACrF,WAAW,aACV,oBAACA;EAAK,MAAME;EAAgB,MAAM;GAAE,MAAM;GAAS,aAAa;GAAM;GAAI;EAE3E,WAAW,mBACV,oBAACF;EAAK,MAAMG;EAAsB,MAAM;GAAE,MAAM;GAAS,aAAa;GAAM;GAAI;EAEjF,WAAW,kBACV,oBAACH;EAAK,MAAMI;EAAqB,MAAM;GAAE,MAAM;GAAS,aAAa;GAAM;GAAI;EAEhF,WAAW,QAAQ,oBAACJ,gBAAK,MAAM,iBAAkB;EACjD,WAAW,QAAQ,gBAClB,oBAACA;EAAK,MAAM;EAAgB,MAAM;GAAE,MAAM;GAAU,aAAa;GAAM;GAAI,GAE3E;EAED,WAAW,QAAQ,oBAACA,gBAAK,MAAM,YAAa;EAC5C,WAAW,MAAM,gBAAgB,oBAACA,gBAAK,MAAM,uBAAwB,GAAG;EACxE,WAAW,KAAK,oBAACA,gBAAK,MAAM,cAAe;EAC3C,WAAW,QAAQ;EACnB,WAAW,SAAS;EACpB,WAAW,QAAQ;EACnB,WAAW,YAAY;EACvB,WAAW,QAAQ;EACnB,WAAW,YAAY;EACvB,WAAW,YAAY;EACvB,WAAW,cAAc;EACzB,WAAW,eAAe;EAC1B,WAAW,QAAQ;EACnB,WAAW,QAAQ;CACrB;AAED,MAAM,SAAS,MACZ,EACC,UAAU,UACV,YACA,QAAQ,cACR,MACA,cACA,SACA,SACA,WACA,OACA,GAAG,WACC;CACJ,MAAM,EAAE,eAAe,cAAc;CACrC,MAAM,eAAe,YAAY;CACjC,MAAM,CAAC,WAAW,gBAAgB,eAAe,gBAAgB,KAAK,CAAC;CACvE,MAAM,gBAAgB,cAAc,mBAAmB,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAE3E,iBAAgB;AAEd,eADiB,gBAAgB,KAAK,CAChB;IACrB,CAAC,KAAK,CAAC;CAEV,MAAMK,UAA+B,cAAc,WAAW,cAAc,EAAE,CAAC,cAAc,CAAC;AAE9F,QACE,oBAACC;EACC,OAAO;EACI;EACX,KAAK,eAAe,IAAI;EACxB;EACO;EACP,GAAI;YAEH,WAAW,eACV,oBAACC;GACC,IAAI;GACJ,WAAW,GACT,SAAS;IAAE;IAAc;IAAY;IAAS,CAAC,EAC/C,YAAY,aACb;GACD,KAAK;GACL;GACA,OAAO,cAAc;aAEpB,UAAU,KAAK,KAAK,UACnB,oBAAC,mBAAiB,QAAQ,QAAQ,UAAU,IAAI,IAAtC,MAA6C,CACvD;IACK,GAET,UAAU,KAAK,KAAK,UAClB,oBAACA;GACC,IAAI;GACJ,WAAW,GACT,SAAS;IAAE;IAAc;IAAY;IAAS,CAAC,EAC/C,YAAY,aACb;GAED,OAAO,cAAc;aAEpB,QAAQ,QAAQ,UAAU,IAAI;KAH1B,MAIE,CACT;GAEI;EAGf;AAED,OAAO,cAAc;AAErB,qBAAe"}
1
+ {"version":3,"file":"Hotkey.mjs","names":["Icon","LeftClickIcon","RightClickIcon","RightDoubleClickIcon","LeftDoubleClickIcon","mapping: Record<string, any>","Flexbox","Center"],"sources":["../../src/Hotkey/Hotkey.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport {\n ArrowBigUpIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n ArrowRightToLineIcon,\n ArrowUpIcon,\n ChevronUpIcon,\n Command,\n CornerDownLeftIcon,\n Delete,\n Grid2X2Icon,\n MouseIcon,\n Option,\n SpaceIcon,\n} from 'lucide-react';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport { Center, Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\nimport LeftClickIcon from '@/icons/lucideExtra/LeftClickIcon';\nimport LeftDoubleClickIcon from '@/icons/lucideExtra/LeftDoubleClickIcon';\nimport RightClickIcon from '@/icons/lucideExtra/RightClickIcon';\nimport RightDoubleClickIcon from '@/icons/lucideExtra/RightDoubleClickIcon';\n\nimport { KeyMapEnum } from './const';\nimport { variants } from './style';\nimport type { HotkeyProps } from './type';\nimport { checkIsAppleDevice, splitKeysByPlus, startCase } from './utils';\n\nconst mappingKey = (isAppleDevice: boolean) => ({\n [KeyMapEnum.Alt]: isAppleDevice ? <Icon icon={Option} size={{ size: '0.95em' }} /> : 'Alt',\n [KeyMapEnum.Backspace]: isAppleDevice ? <Icon icon={Delete} /> : 'Backspace',\n [KeyMapEnum.CommandOrControl]: isAppleDevice ? (\n <Icon icon={Command} size={{ size: '0.95em' }} />\n ) : (\n 'Ctrl'\n ),\n [KeyMapEnum.Ctrl]: isAppleDevice ? <Icon icon={ChevronUpIcon} /> : 'Ctrl',\n [KeyMapEnum.Control]: isAppleDevice ? <Icon icon={ChevronUpIcon} /> : 'Ctrl',\n [KeyMapEnum.Down]: <Icon icon={ArrowDownIcon} />,\n [KeyMapEnum.Enter]: isAppleDevice ? <Icon icon={CornerDownLeftIcon} /> : 'Enter',\n [KeyMapEnum.LeftClick]: <Icon icon={LeftClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />,\n [KeyMapEnum.Left]: <Icon icon={ArrowLeftIcon} />,\n [KeyMapEnum.Meta]: isAppleDevice ? (\n <Icon icon={Command} size={{ size: '0.95em' }} />\n ) : (\n <Icon icon={Grid2X2Icon} />\n ),\n [KeyMapEnum.MiddleClick]: <Icon icon={MouseIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />,\n [KeyMapEnum.Mod]: isAppleDevice ? <Icon icon={Command} size={{ size: '0.95em' }} /> : 'Ctrl',\n [KeyMapEnum.RightClick]: (\n <Icon icon={RightClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.RightDoubleClick]: (\n <Icon icon={RightDoubleClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.LeftDoubleClick]: (\n <Icon icon={LeftDoubleClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.Right]: <Icon icon={ArrowRightIcon} />,\n [KeyMapEnum.Shift]: isAppleDevice ? (\n <Icon icon={ArrowBigUpIcon} size={{ size: '1.15em', strokeWidth: 1.75 }} />\n ) : (\n 'Shift'\n ),\n [KeyMapEnum.Space]: <Icon icon={SpaceIcon} />,\n [KeyMapEnum.Tab]: isAppleDevice ? <Icon icon={ArrowRightToLineIcon} /> : 'Tab',\n [KeyMapEnum.Up]: <Icon icon={ArrowUpIcon} />,\n [KeyMapEnum.Comma]: ',',\n [KeyMapEnum.Period]: '.',\n [KeyMapEnum.Slash]: '?',\n [KeyMapEnum.Semicolon]: ';',\n [KeyMapEnum.Quote]: \"'\",\n [KeyMapEnum.Backquote]: '`',\n [KeyMapEnum.Backslash]: '\\\\',\n [KeyMapEnum.BracketLeft]: '[',\n [KeyMapEnum.BracketRight]: ']',\n [KeyMapEnum.Minus]: '-',\n [KeyMapEnum.Equal]: '+',\n});\n\nconst Hotkey = memo<HotkeyProps>(\n ({\n variant = 'filled',\n classNames,\n styles: customStyles,\n keys,\n inverseTheme,\n isApple,\n compact,\n className,\n style,\n ...rest\n }) => {\n const { isDarkMode } = useThemeMode();\n const isBorderless = variant === 'borderless';\n const [keysGroup, setKeysGroup] = useState(() => splitKeysByPlus(keys));\n const isAppleDevice = useMemo(() => checkIsAppleDevice(isApple), [isApple]);\n\n useEffect(() => {\n const newValue = splitKeysByPlus(keys);\n setKeysGroup(newValue);\n }, [keys]);\n\n const mapping: Record<string, any> = useMemo(() => mappingKey(isAppleDevice), [isAppleDevice]);\n\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={className}\n gap={isBorderless ? 6 : 2}\n style={style}\n {...rest}\n >\n {compact || isBorderless ? (\n <Center\n horizontal\n as={'kbd'}\n gap={6}\n style={customStyles?.kbdStyle}\n className={cx(\n variants({ inverseTheme, isDarkMode, variant }),\n classNames?.kbdClassName,\n )}\n >\n {keysGroup.map((key, index) => (\n <div key={index}>{mapping[key] ?? startCase(key)}</div>\n ))}\n </Center>\n ) : (\n keysGroup.map((key, index) => (\n <Center\n as={'kbd'}\n key={index}\n style={customStyles?.kbdStyle}\n className={cx(\n variants({ inverseTheme, isDarkMode, variant }),\n classNames?.kbdClassName,\n )}\n >\n {mapping[key] ?? startCase(key)}\n </Center>\n ))\n )}\n </Flexbox>\n );\n },\n);\n\nHotkey.displayName = 'Hotkey';\n\nexport default Hotkey;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"style.mjs","names":["lobeStaticStylish","cssVar"],"sources":["../../src/Hotkey/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: css`\n ${lobeStaticStylish.variantBorderlessWithoutHover};\n padding-inline: 4px;\n `,\n filled: lobeStaticStylish.variantFilledWithoutHover,\n inverseThemeDark: css`\n color: ${cssVar.colorTextTertiary};\n background: color-mix(in srgb, ${cssVar.colorBgContainer} 8%, transparent);\n `,\n inverseThemeLight: css`\n color: ${cssVar.colorTextTertiary};\n background: color-mix(in srgb, ${cssVar.colorBgContainer} 16%, transparent);\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: css`\n overflow: hidden;\n\n min-width: 1.8em;\n height: 1.8em;\n padding-block: 0;\n padding-inline: 8px;\n border: none;\n border-radius: ${cssVar.borderRadiusSM};\n\n font-family: ${cssVar.fontFamily};\n font-size: 12px;\n line-height: 1.1;\n color: ${cssVar.colorTextSecondary};\n text-align: center;\n white-space: nowrap;\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n compoundVariants: [\n {\n class: styles.inverseThemeDark,\n inverseTheme: true,\n isDarkMode: true,\n },\n {\n class: styles.inverseThemeLight,\n inverseTheme: true,\n isDarkMode: false,\n },\n ],\n defaultVariants: {\n inverseTheme: false,\n isDarkMode: false,\n variant: 'filled',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n inverseTheme: {\n false: null,\n true: null,\n },\n isDarkMode: {\n false: null,\n true: null,\n },\n variant: {\n borderless: styles.borderless,\n filled: styles.filled,\n outlined: styles.outlined,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n"],"mappings":";;;;;AAKA,MAAa,SAAS,oBAAoB,EAAE,YAAK,uBAAa;AAC5D,QAAO;EACL,YAAY,KAAG;QACXA,cAAkB,8BAA8B;;;EAGpD,QAAQA,cAAkB;EAC1B,kBAAkB,KAAG;eACVC,SAAO,kBAAkB;uCACDA,SAAO,iBAAiB;;EAE3D,mBAAmB,KAAG;eACXA,SAAO,kBAAkB;uCACDA,SAAO,iBAAiB;;EAE3D,UAAUD,cAAkB;EAC5B,MAAM,KAAG;;;;;;;;uBAQUC,SAAO,eAAe;;qBAExBA,SAAO,WAAW;;;eAGxBA,SAAO,mBAAmB;;;;EAItC;EACD;AAEF,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,kBAAkB,CAChB;EACE,OAAO,OAAO;EACd,cAAc;EACd,YAAY;EACb,EACD;EACE,OAAO,OAAO;EACd,cAAc;EACd,YAAY;EACb,CACF;CACD,iBAAiB;EACf,cAAc;EACd,YAAY;EACZ,SAAS;EACV;CAED,UAAU;EACR,cAAc;GACZ,OAAO;GACP,MAAM;GACP;EACD,YAAY;GACV,OAAO;GACP,MAAM;GACP;EACD,SAAS;GACP,YAAY,OAAO;GACnB,QAAQ,OAAO;GACf,UAAU,OAAO;GAClB;EACF;CAEF,CAAC"}
1
+ {"version":3,"file":"style.mjs","names":["lobeStaticStylish","cssVar"],"sources":["../../src/Hotkey/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: css`\n ${lobeStaticStylish.variantBorderlessWithoutHover};\n padding-inline: 4px;\n `,\n filled: lobeStaticStylish.variantFilledWithoutHover,\n inverseThemeDark: css`\n color: ${cssVar.colorTextTertiary};\n background: color-mix(in srgb, ${cssVar.colorBgContainer} 8%, transparent);\n `,\n inverseThemeLight: css`\n color: ${cssVar.colorTextTertiary};\n background: color-mix(in srgb, ${cssVar.colorBgContainer} 16%, transparent);\n `,\n outlined: lobeStaticStylish.variantOutlinedWithoutHover,\n root: css`\n overflow: hidden;\n\n min-width: 1.8em;\n height: 1.8em;\n padding-block: 0;\n padding-inline: 8px;\n border: none;\n border-radius: ${cssVar.borderRadiusSM};\n\n font-family: ${cssVar.fontFamily};\n font-size: 12px;\n line-height: 1.1;\n color: ${cssVar.colorTextSecondary};\n text-align: center;\n white-space: nowrap;\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n compoundVariants: [\n {\n class: styles.inverseThemeDark,\n inverseTheme: true,\n isDarkMode: true,\n },\n {\n class: styles.inverseThemeLight,\n inverseTheme: true,\n isDarkMode: false,\n },\n ],\n defaultVariants: {\n inverseTheme: false,\n isDarkMode: false,\n variant: 'filled',\n },\n\n variants: {\n inverseTheme: {\n false: null,\n true: null,\n },\n isDarkMode: {\n false: null,\n true: null,\n },\n variant: {\n borderless: styles.borderless,\n filled: styles.filled,\n outlined: styles.outlined,\n },\n },\n});\n"],"mappings":";;;;;AAKA,MAAa,SAAS,oBAAoB,EAAE,YAAK,uBAAa;AAC5D,QAAO;EACL,YAAY,KAAG;QACXA,cAAkB,8BAA8B;;;EAGpD,QAAQA,cAAkB;EAC1B,kBAAkB,KAAG;eACVC,SAAO,kBAAkB;uCACDA,SAAO,iBAAiB;;EAE3D,mBAAmB,KAAG;eACXA,SAAO,kBAAkB;uCACDA,SAAO,iBAAiB;;EAE3D,UAAUD,cAAkB;EAC5B,MAAM,KAAG;;;;;;;;uBAQUC,SAAO,eAAe;;qBAExBA,SAAO,WAAW;;;eAGxBA,SAAO,mBAAmB;;;;EAItC;EACD;AAEF,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,kBAAkB,CAChB;EACE,OAAO,OAAO;EACd,cAAc;EACd,YAAY;EACb,EACD;EACE,OAAO,OAAO;EACd,cAAc;EACd,YAAY;EACb,CACF;CACD,iBAAiB;EACf,cAAc;EACd,YAAY;EACZ,SAAS;EACV;CAED,UAAU;EACR,cAAc;GACZ,OAAO;GACP,MAAM;GACP;EACD,YAAY;GACV,OAAO;GACP,MAAM;GACP;EACD,SAAS;GACP,YAAY,OAAO;GACnB,QAAQ,OAAO;GACf,UAAU,OAAO;GAClB;EACF;CACF,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { HotkeyInputProps } from "./type.mjs";
2
- import * as react27 from "react";
2
+ import * as react55 from "react";
3
3
 
4
4
  //#region src/HotkeyInput/HotkeyInput.d.ts
5
- declare const HotkeyInput: react27.NamedExoticComponent<HotkeyInputProps>;
5
+ declare const HotkeyInput: react55.NamedExoticComponent<HotkeyInputProps>;
6
6
  //#endregion
7
7
  export { HotkeyInput };
8
8
  //# sourceMappingURL=HotkeyInput.d.mts.map
@@ -136,7 +136,9 @@ const HotkeyInput = memo(({ value = "", defaultValue = "", resetValue = "", onCh
136
136
  },
137
137
  children: [
138
138
  /* @__PURE__ */ jsxs(FlexBasic_default, {
139
+ horizontal: true,
139
140
  align: "center",
141
+ justify: "space-between",
140
142
  className: cx(variants({
141
143
  disabled,
142
144
  error: hasConflict || hasInvalidCombination,
@@ -144,8 +146,6 @@ const HotkeyInput = memo(({ value = "", defaultValue = "", resetValue = "", onCh
144
146
  shadow,
145
147
  variant: variant || (isDarkMode ? "filled" : "outlined")
146
148
  })),
147
- horizontal: true,
148
- justify: "space-between",
149
149
  onClick: handleClick,
150
150
  children: [
151
151
  /* @__PURE__ */ jsx("div", {
@@ -159,20 +159,20 @@ const HotkeyInput = memo(({ value = "", defaultValue = "", resetValue = "", onCh
159
159
  })
160
160
  }),
161
161
  /* @__PURE__ */ jsx("input", {
162
+ readOnly: true,
162
163
  className: styles.hiddenInput,
163
164
  disabled,
164
- onBlur: handleBlur,
165
- onFocus: handleFocus,
166
- readOnly: true,
167
165
  ref: inputRef,
168
- style: { pointerEvents: "none" }
166
+ style: { pointerEvents: "none" },
167
+ onBlur: handleBlur,
168
+ onFocus: handleFocus
169
169
  }),
170
170
  !isFocused && allowReset && hotkeyValue && hotkeyValue !== resetValue && !disabled && /* @__PURE__ */ jsx(ActionIcon_default, {
171
171
  icon: Undo2Icon,
172
- onClick: handleReset,
173
172
  size: "small",
174
173
  title: resetTitle,
175
- variant: "filled"
174
+ variant: "filled",
175
+ onClick: handleReset
176
176
  })
177
177
  ]
178
178
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"HotkeyInput.mjs","names":["hotkeyMessages","useControlledState","modifiers: string[]","normalKeys: string[]","normalizedKey: any","Flexbox","Hotkey","ActionIcon"],"sources":["../../src/HotkeyInput/HotkeyInput.tsx"],"sourcesContent":["'use client';\n\nimport type { InputRef } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { isEqual } from 'es-toolkit/compat';\nimport { Undo2Icon } from 'lucide-react';\nimport {\n type FocusEvent,\n type MouseEvent,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useHotkeys, useRecordHotkeys } from 'react-hotkeys-hook';\nimport useControlledState from 'use-merge-value';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\nimport Hotkey from '@/Hotkey';\nimport { NORMATIVE_MODIFIER, checkIsAppleDevice, splitKeysByPlus } from '@/Hotkey/utils';\nimport hotkeyMessages from '@/i18n/resources/en/hotkey';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport { styles, variants } from './style';\nimport type { HotkeyInputProps } from './type';\n\nconst HotkeyInput = memo<HotkeyInputProps>(\n ({\n value = '',\n defaultValue = '',\n resetValue = '',\n onChange,\n onConflict,\n placeholder,\n disabled,\n shadow,\n allowReset = true,\n style,\n className,\n hotkeyConflicts = [],\n variant,\n texts,\n isApple,\n onBlur,\n onReset,\n onFocus,\n }) => {\n const [isFocused, setIsFocused] = useState(false);\n const [hasConflict, setHasConflict] = useState(false);\n const [hasInvalidCombination, setHasInvalidCombination] = useState(false);\n const inputRef = useRef<InputRef>(null);\n const { isDarkMode } = useThemeMode();\n const { t } = useTranslation(hotkeyMessages);\n const isAppleDevice = useMemo(() => checkIsAppleDevice(isApple), [isApple]);\n const [hotkeyValue, setHotkeyValue] = useControlledState(defaultValue, {\n defaultValue,\n onChange,\n value,\n });\n\n // 使用 useRecordHotkeys 处理快捷键录入\n const [recordedKeys, { start, stop, isRecording, resetKeys }] = useRecordHotkeys();\n\n useHotkeys(\n '*',\n () => {\n inputRef.current?.blur();\n },\n {\n enableOnContentEditable: true,\n enableOnFormTags: true,\n enabled: isRecording && !disabled,\n keydown: false,\n keyup: true,\n preventDefault: true,\n },\n );\n\n // 处理按键,保证格式正确:修饰键在前,最多一个非修饰键在后\n const formatKeys = useCallback((keysSet: Set<string>) => {\n const modifiers: string[] = [];\n const normalKeys: string[] = [];\n\n for (const key of keysSet) {\n // 处理不同表示的修饰键\n const normalizedKey: any = key.toLowerCase();\n if (NORMATIVE_MODIFIER.includes(normalizedKey)) {\n // 统一修饰键表示\n if (\n (!isAppleDevice && normalizedKey === 'ctrl') ||\n (isAppleDevice && normalizedKey === 'meta')\n ) {\n if (!modifiers.includes('mod')) modifiers.push('mod');\n } else if (!modifiers.includes(normalizedKey)) {\n modifiers.push(normalizedKey);\n }\n } else {\n normalKeys.push(key);\n }\n }\n\n // 至少需要一个修饰键\n if (modifiers.length === 0 && normalKeys.length > 0) {\n return { isValid: false, keys: [] };\n }\n\n // 只允许一个非修饰键,如果有多个,只保留最后一个\n const finalKey = normalKeys.length > 0 ? [normalKeys.at(-1)] : [];\n const shortcuts = [modifiers, finalKey];\n\n return {\n // 组合必须包含至少一个按键\n isValid: shortcuts.every((k) => k.length > 0),\n keys: shortcuts.flat(),\n };\n }, []);\n\n // 获取格式化后的按键字符串\n const { isValid, keys } = formatKeys(recordedKeys);\n const keysString = keys.join('+');\n\n // 检查快捷键冲突\n const checkHotkeyConflict = useCallback(\n (newHotkey: string): boolean => {\n return hotkeyConflicts\n .filter((conflictKey) => conflictKey !== resetValue)\n .some((conflictKey) => {\n const newKeys = splitKeysByPlus(newHotkey);\n const conflictKeys = splitKeysByPlus(conflictKey);\n return isEqual(newKeys, conflictKeys);\n });\n },\n [hotkeyConflicts],\n );\n\n // 当按键组合完成时处理结果\n useEffect(() => {\n if (recordedKeys.size > 0 && !isRecording) {\n if (!isValid) {\n setHasInvalidCombination(true);\n setHasConflict(false);\n return;\n }\n\n setHasInvalidCombination(false);\n const newKeysString = keysString;\n\n // 检查冲突\n const conflict = checkHotkeyConflict(newKeysString);\n if (conflict) {\n setHasConflict(true);\n onConflict?.(newKeysString);\n } else {\n setHasConflict(false);\n setHotkeyValue?.(newKeysString);\n }\n }\n }, [\n recordedKeys,\n isRecording,\n isValid,\n keysString,\n checkHotkeyConflict,\n setHotkeyValue,\n onConflict,\n ]);\n\n // 处理输入框焦点\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n if (disabled) return;\n setIsFocused(true);\n setHasConflict(false);\n setHasInvalidCombination(false);\n start(); // 开始记录\n onFocus?.(e);\n };\n\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n stop(); // 停止记录\n onBlur?.(e);\n };\n\n // 重置功能\n const handleReset = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setHotkeyValue?.(resetValue);\n resetKeys();\n setHasConflict(false);\n setHasInvalidCombination(false);\n setIsFocused(false);\n stop(); // 停止记录\n onReset?.(hotkeyValue, resetValue);\n };\n\n const handleClick = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (disabled || isFocused) return;\n inputRef.current?.focus();\n };\n\n const placeholderText = placeholder ?? t('hotkey.placeholder');\n const resetTitle = texts?.reset ?? t('hotkey.reset');\n const conflictText = texts?.conflicts ?? t('hotkey.conflict');\n const invalidText = texts?.invalidCombination ?? t('hotkey.invalidCombination');\n\n return (\n <Flexbox\n className={className}\n gap={8}\n style={{\n position: 'relative',\n ...style,\n }}\n >\n <Flexbox\n align={'center'}\n className={cx(\n variants({\n disabled,\n error: hasConflict || hasInvalidCombination,\n focused: isFocused,\n shadow,\n variant: variant || (isDarkMode ? 'filled' : 'outlined'),\n }),\n )}\n horizontal\n justify={'space-between'}\n onClick={handleClick}\n >\n <div style={{ pointerEvents: 'none' }}>\n {isRecording ? (\n <span className={styles.placeholder}>\n {keys.length > 0 ? <Hotkey keys={keysString} /> : placeholderText}\n </span>\n ) : hotkeyValue ? (\n <Hotkey keys={hotkeyValue} />\n ) : (\n <span className={styles.placeholder}>{placeholderText}</span>\n )}\n </div>\n\n {/* 隐藏的输入框,用于接收焦点 */}\n <input\n className={styles.hiddenInput}\n disabled={disabled}\n onBlur={handleBlur}\n onFocus={handleFocus}\n readOnly\n ref={inputRef as any}\n style={{ pointerEvents: 'none' }}\n />\n\n {!isFocused && allowReset && hotkeyValue && hotkeyValue !== resetValue && !disabled && (\n <ActionIcon\n icon={Undo2Icon}\n onClick={handleReset}\n size={'small'}\n title={resetTitle}\n variant={'filled'}\n />\n )}\n </Flexbox>\n {hasConflict && <div className={styles.errorText}>{conflictText}</div>}\n {hasInvalidCombination && <div className={styles.errorText}>{invalidText}</div>}\n </Flexbox>\n );\n },\n);\n\nHotkeyInput.displayName = 'HotkeyInput';\n\nexport default HotkeyInput;\n"],"mappings":"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"}
1
+ {"version":3,"file":"HotkeyInput.mjs","names":["hotkeyMessages","useControlledState","modifiers: string[]","normalKeys: string[]","normalizedKey: any","Flexbox","Hotkey","ActionIcon"],"sources":["../../src/HotkeyInput/HotkeyInput.tsx"],"sourcesContent":["'use client';\n\nimport { type InputRef } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { isEqual } from 'es-toolkit/compat';\nimport { Undo2Icon } from 'lucide-react';\nimport {\n type FocusEvent,\n memo,\n type MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useHotkeys, useRecordHotkeys } from 'react-hotkeys-hook';\nimport useControlledState from 'use-merge-value';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\nimport Hotkey from '@/Hotkey';\nimport { checkIsAppleDevice, NORMATIVE_MODIFIER, splitKeysByPlus } from '@/Hotkey/utils';\nimport hotkeyMessages from '@/i18n/resources/en/hotkey';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport { styles, variants } from './style';\nimport { type HotkeyInputProps } from './type';\n\nconst HotkeyInput = memo<HotkeyInputProps>(\n ({\n value = '',\n defaultValue = '',\n resetValue = '',\n onChange,\n onConflict,\n placeholder,\n disabled,\n shadow,\n allowReset = true,\n style,\n className,\n hotkeyConflicts = [],\n variant,\n texts,\n isApple,\n onBlur,\n onReset,\n onFocus,\n }) => {\n const [isFocused, setIsFocused] = useState(false);\n const [hasConflict, setHasConflict] = useState(false);\n const [hasInvalidCombination, setHasInvalidCombination] = useState(false);\n const inputRef = useRef<InputRef>(null);\n const { isDarkMode } = useThemeMode();\n const { t } = useTranslation(hotkeyMessages);\n const isAppleDevice = useMemo(() => checkIsAppleDevice(isApple), [isApple]);\n const [hotkeyValue, setHotkeyValue] = useControlledState(defaultValue, {\n defaultValue,\n onChange,\n value,\n });\n\n // 使用 useRecordHotkeys 处理快捷键录入\n const [recordedKeys, { start, stop, isRecording, resetKeys }] = useRecordHotkeys();\n\n useHotkeys(\n '*',\n () => {\n inputRef.current?.blur();\n },\n {\n enableOnContentEditable: true,\n enableOnFormTags: true,\n enabled: isRecording && !disabled,\n keydown: false,\n keyup: true,\n preventDefault: true,\n },\n );\n\n // 处理按键,保证格式正确:修饰键在前,最多一个非修饰键在后\n const formatKeys = useCallback((keysSet: Set<string>) => {\n const modifiers: string[] = [];\n const normalKeys: string[] = [];\n\n for (const key of keysSet) {\n // 处理不同表示的修饰键\n const normalizedKey: any = key.toLowerCase();\n if (NORMATIVE_MODIFIER.includes(normalizedKey)) {\n // 统一修饰键表示\n if (\n (!isAppleDevice && normalizedKey === 'ctrl') ||\n (isAppleDevice && normalizedKey === 'meta')\n ) {\n if (!modifiers.includes('mod')) modifiers.push('mod');\n } else if (!modifiers.includes(normalizedKey)) {\n modifiers.push(normalizedKey);\n }\n } else {\n normalKeys.push(key);\n }\n }\n\n // 至少需要一个修饰键\n if (modifiers.length === 0 && normalKeys.length > 0) {\n return { isValid: false, keys: [] };\n }\n\n // 只允许一个非修饰键,如果有多个,只保留最后一个\n const finalKey = normalKeys.length > 0 ? [normalKeys.at(-1)] : [];\n const shortcuts = [modifiers, finalKey];\n\n return {\n // 组合必须包含至少一个按键\n isValid: shortcuts.every((k) => k.length > 0),\n keys: shortcuts.flat(),\n };\n }, []);\n\n // 获取格式化后的按键字符串\n const { isValid, keys } = formatKeys(recordedKeys);\n const keysString = keys.join('+');\n\n // 检查快捷键冲突\n const checkHotkeyConflict = useCallback(\n (newHotkey: string): boolean => {\n return hotkeyConflicts\n .filter((conflictKey) => conflictKey !== resetValue)\n .some((conflictKey) => {\n const newKeys = splitKeysByPlus(newHotkey);\n const conflictKeys = splitKeysByPlus(conflictKey);\n return isEqual(newKeys, conflictKeys);\n });\n },\n [hotkeyConflicts],\n );\n\n // 当按键组合完成时处理结果\n useEffect(() => {\n if (recordedKeys.size > 0 && !isRecording) {\n if (!isValid) {\n setHasInvalidCombination(true);\n setHasConflict(false);\n return;\n }\n\n setHasInvalidCombination(false);\n const newKeysString = keysString;\n\n // 检查冲突\n const conflict = checkHotkeyConflict(newKeysString);\n if (conflict) {\n setHasConflict(true);\n onConflict?.(newKeysString);\n } else {\n setHasConflict(false);\n setHotkeyValue?.(newKeysString);\n }\n }\n }, [\n recordedKeys,\n isRecording,\n isValid,\n keysString,\n checkHotkeyConflict,\n setHotkeyValue,\n onConflict,\n ]);\n\n // 处理输入框焦点\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n if (disabled) return;\n setIsFocused(true);\n setHasConflict(false);\n setHasInvalidCombination(false);\n start(); // 开始记录\n onFocus?.(e);\n };\n\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n stop(); // 停止记录\n onBlur?.(e);\n };\n\n // 重置功能\n const handleReset = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setHotkeyValue?.(resetValue);\n resetKeys();\n setHasConflict(false);\n setHasInvalidCombination(false);\n setIsFocused(false);\n stop(); // 停止记录\n onReset?.(hotkeyValue, resetValue);\n };\n\n const handleClick = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (disabled || isFocused) return;\n inputRef.current?.focus();\n };\n\n const placeholderText = placeholder ?? t('hotkey.placeholder');\n const resetTitle = texts?.reset ?? t('hotkey.reset');\n const conflictText = texts?.conflicts ?? t('hotkey.conflict');\n const invalidText = texts?.invalidCombination ?? t('hotkey.invalidCombination');\n\n return (\n <Flexbox\n className={className}\n gap={8}\n style={{\n position: 'relative',\n ...style,\n }}\n >\n <Flexbox\n horizontal\n align={'center'}\n justify={'space-between'}\n className={cx(\n variants({\n disabled,\n error: hasConflict || hasInvalidCombination,\n focused: isFocused,\n shadow,\n variant: variant || (isDarkMode ? 'filled' : 'outlined'),\n }),\n )}\n onClick={handleClick}\n >\n <div style={{ pointerEvents: 'none' }}>\n {isRecording ? (\n <span className={styles.placeholder}>\n {keys.length > 0 ? <Hotkey keys={keysString} /> : placeholderText}\n </span>\n ) : hotkeyValue ? (\n <Hotkey keys={hotkeyValue} />\n ) : (\n <span className={styles.placeholder}>{placeholderText}</span>\n )}\n </div>\n\n {/* 隐藏的输入框,用于接收焦点 */}\n <input\n readOnly\n className={styles.hiddenInput}\n disabled={disabled}\n ref={inputRef as any}\n style={{ pointerEvents: 'none' }}\n onBlur={handleBlur}\n onFocus={handleFocus}\n />\n\n {!isFocused && allowReset && hotkeyValue && hotkeyValue !== resetValue && !disabled && (\n <ActionIcon\n icon={Undo2Icon}\n size={'small'}\n title={resetTitle}\n variant={'filled'}\n onClick={handleReset}\n />\n )}\n </Flexbox>\n {hasConflict && <div className={styles.errorText}>{conflictText}</div>}\n {hasInvalidCombination && <div className={styles.errorText}>{invalidText}</div>}\n </Flexbox>\n );\n },\n);\n\nHotkeyInput.displayName = 'HotkeyInput';\n\nexport default HotkeyInput;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"style.mjs","names":["lobeStaticStylish","cssVar"],"sources":["../../src/HotkeyInput/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: lobeStaticStylish.variantBorderless,\n disabled: lobeStaticStylish.disabled,\n error: css`\n border: 1px solid ${cssVar.colorError};\n `,\n errorText: css`\n font-size: 12px;\n color: ${cssVar.colorError};\n `,\n filled: lobeStaticStylish.variantFilled,\n focused: css`\n background: ${cssVar.colorFillSecondary} !important;\n `,\n hiddenInput: css`\n cursor: text;\n\n position: absolute;\n z-index: -1;\n inset-block-start: 0;\n inset-inline-start: 0;\n\n width: 100%;\n height: 100%;\n\n opacity: 0;\n `,\n outlined: lobeStaticStylish.variantOutlined,\n placeholder: css`\n color: ${cssVar.colorTextDescription};\n `,\n root: css`\n cursor: pointer;\n\n position: relative;\n\n max-width: 100%;\n height: 36px;\n padding-block: 0;\n padding-inline: 12px;\n border-radius: ${cssVar.borderRadius};\n `,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n disabled: false,\n error: false,\n shadow: false,\n variant: 'outlined',\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n focused: {\n false: null,\n true: styles.focused,\n },\n error: {\n fales: null,\n true: styles.error,\n },\n disabled: {\n false: null,\n true: styles.disabled,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n"],"mappings":";;;;;AAKA,MAAa,SAAS,oBAAoB,EAAE,YAAK,uBAAa;AAC5D,QAAO;EACL,YAAYA,cAAkB;EAC9B,UAAUA,cAAkB;EAC5B,OAAO,KAAG;0BACYC,SAAO,WAAW;;EAExC,WAAW,KAAG;;eAEHA,SAAO,WAAW;;EAE7B,QAAQD,cAAkB;EAC1B,SAAS,KAAG;oBACIC,SAAO,mBAAmB;;EAE1C,aAAa,KAAG;;;;;;;;;;;;;EAahB,UAAUD,cAAkB;EAC5B,aAAa,KAAG;eACLC,SAAO,qBAAqB;;EAEvC,MAAM,KAAG;;;;;;;;;uBASUA,SAAO,aAAa;;EAEvC,QAAQD,cAAkB;EAC3B;EACD;AAEF,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,iBAAiB;EACf,UAAU;EACV,OAAO;EACP,QAAQ;EACR,SAAS;EACV;CAED,UAAU;EACR,SAAS;GACP,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,YAAY,OAAO;GACpB;EACD,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;GACd;EACD,SAAS;GACP,OAAO;GACP,MAAM,OAAO;GACd;EACD,OAAO;GACL,OAAO;GACP,MAAM,OAAO;GACd;EACD,UAAU;GACR,OAAO;GACP,MAAM,OAAO;GACd;EACF;CAEF,CAAC"}
1
+ {"version":3,"file":"style.mjs","names":["lobeStaticStylish","cssVar"],"sources":["../../src/HotkeyInput/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n borderless: lobeStaticStylish.variantBorderless,\n disabled: lobeStaticStylish.disabled,\n error: css`\n border: 1px solid ${cssVar.colorError};\n `,\n errorText: css`\n font-size: 12px;\n color: ${cssVar.colorError};\n `,\n filled: lobeStaticStylish.variantFilled,\n focused: css`\n background: ${cssVar.colorFillSecondary} !important;\n `,\n hiddenInput: css`\n cursor: text;\n\n position: absolute;\n z-index: -1;\n inset-block-start: 0;\n inset-inline-start: 0;\n\n width: 100%;\n height: 100%;\n\n opacity: 0;\n `,\n outlined: lobeStaticStylish.variantOutlined,\n placeholder: css`\n color: ${cssVar.colorTextDescription};\n `,\n root: css`\n cursor: pointer;\n\n position: relative;\n\n max-width: 100%;\n height: 36px;\n padding-block: 0;\n padding-inline: 12px;\n border-radius: ${cssVar.borderRadius};\n `,\n shadow: lobeStaticStylish.shadow,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n disabled: false,\n error: false,\n shadow: false,\n variant: 'outlined',\n },\n\n variants: {\n variant: {\n filled: styles.filled,\n outlined: styles.outlined,\n borderless: styles.borderless,\n },\n shadow: {\n false: null,\n true: styles.shadow,\n },\n focused: {\n false: null,\n true: styles.focused,\n },\n error: {\n fales: null,\n true: styles.error,\n },\n disabled: {\n false: null,\n true: styles.disabled,\n },\n },\n});\n"],"mappings":";;;;;AAKA,MAAa,SAAS,oBAAoB,EAAE,YAAK,uBAAa;AAC5D,QAAO;EACL,YAAYA,cAAkB;EAC9B,UAAUA,cAAkB;EAC5B,OAAO,KAAG;0BACYC,SAAO,WAAW;;EAExC,WAAW,KAAG;;eAEHA,SAAO,WAAW;;EAE7B,QAAQD,cAAkB;EAC1B,SAAS,KAAG;oBACIC,SAAO,mBAAmB;;EAE1C,aAAa,KAAG;;;;;;;;;;;;;EAahB,UAAUD,cAAkB;EAC5B,aAAa,KAAG;eACLC,SAAO,qBAAqB;;EAEvC,MAAM,KAAG;;;;;;;;;uBASUA,SAAO,aAAa;;EAEvC,QAAQD,cAAkB;EAC3B;EACD;AAEF,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,iBAAiB;EACf,UAAU;EACV,OAAO;EACP,QAAQ;EACR,SAAS;EACV;CAED,UAAU;EACR,SAAS;GACP,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,YAAY,OAAO;GACpB;EACD,QAAQ;GACN,OAAO;GACP,MAAM,OAAO;GACd;EACD,SAAS;GACP,OAAO;GACP,MAAM,OAAO;GACd;EACD,OAAO;GACL,OAAO;GACP,MAAM,OAAO;GACd;EACD,UAAU;GACR,OAAO;GACP,MAAM,OAAO;GACd;EACF;CACF,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { IconProps } from "./type.mjs";
2
- import * as react25 from "react";
2
+ import * as react54 from "react";
3
3
 
4
4
  //#region src/Icon/Icon.d.ts
5
- declare const Icon: react25.NamedExoticComponent<IconProps>;
5
+ declare const Icon: react54.NamedExoticComponent<IconProps>;
6
6
  //#endregion
7
7
  export { Icon };
8
8
  //# sourceMappingURL=Icon.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.mjs","names":[],"sources":["../../src/Icon/Icon.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { LucideIcon } from 'lucide-react';\nimport { isValidElement, memo, useMemo } from 'react';\n\nimport { useIconContext } from './components/IconProvider';\nimport { calcSize } from './components/utils';\nimport { variants } from './style';\nimport type { IconProps } from './type';\n\nconst Icon = memo<IconProps>(\n ({\n icon,\n size: iconSize,\n color,\n fill = 'transparent',\n className,\n focusable,\n spin,\n fillRule,\n fillOpacity,\n ref,\n ...rest\n }) => {\n const {\n color: colorConfig,\n fill: fillConfig,\n fillOpacity: fillOpacityConfig,\n fillRule: fillRuleConfig,\n focusable: focusableConfig,\n className: classNameConfig,\n size: sizeConfig,\n ...restConfig\n } = useIconContext();\n\n const { size, strokeWidth } = useMemo(\n () => calcSize(iconSize || sizeConfig),\n [iconSize, sizeConfig],\n );\n\n const SvgIcon = icon as LucideIcon;\n\n return (\n <span\n className={cx(variants({ spin }), classNameConfig, className)}\n role=\"img\"\n {...restConfig}\n {...rest}\n >\n {icon &&\n (isValidElement(icon) ? (\n icon\n ) : (\n <SvgIcon\n color={color || colorConfig}\n fill={fill || fillConfig}\n fillOpacity={fillOpacity || fillOpacityConfig}\n fillRule={fillRule || fillRuleConfig}\n focusable={focusable || focusableConfig}\n height={size}\n ref={ref}\n size={size}\n strokeWidth={strokeWidth}\n width={size}\n />\n ))}\n </span>\n );\n },\n);\n\nIcon.displayName = 'Icon';\n\nexport default Icon;\n"],"mappings":";;;;;;;;;;AAWA,MAAM,OAAO,MACV,EACC,MACA,MAAM,UACN,OACA,OAAO,eACP,WACA,WACA,MACA,UACA,aACA,KACA,GAAG,WACC;CACJ,MAAM,EACJ,OAAO,aACP,MAAM,YACN,aAAa,mBACb,UAAU,gBACV,WAAW,iBACX,WAAW,iBACX,MAAM,YACN,GAAG,eACD,gBAAgB;CAEpB,MAAM,EAAE,MAAM,gBAAgB,cACtB,SAAS,YAAY,WAAW,EACtC,CAAC,UAAU,WAAW,CACvB;CAED,MAAM,UAAU;AAEhB,QACE,oBAAC;EACC,WAAW,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,iBAAiB,UAAU;EAC7D,MAAK;EACL,GAAI;EACJ,GAAI;YAEH,SACE,eAAe,KAAK,GACnB,OAEA,oBAAC;GACC,OAAO,SAAS;GAChB,MAAM,QAAQ;GACd,aAAa,eAAe;GAC5B,UAAU,YAAY;GACtB,WAAW,aAAa;GACxB,QAAQ;GACH;GACC;GACO;GACb,OAAO;IACP;GAED;EAGZ;AAED,KAAK,cAAc;AAEnB,mBAAe"}
1
+ {"version":3,"file":"Icon.mjs","names":[],"sources":["../../src/Icon/Icon.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport type { LucideIcon } from 'lucide-react';\nimport { isValidElement, memo, useMemo } from 'react';\n\nimport { useIconContext } from './components/IconProvider';\nimport { calcSize } from './components/utils';\nimport { variants } from './style';\nimport type { IconProps } from './type';\n\nconst Icon = memo<IconProps>(\n ({\n icon,\n size: iconSize,\n color,\n fill = 'transparent',\n className,\n focusable,\n spin,\n fillRule,\n fillOpacity,\n ref,\n ...rest\n }) => {\n const {\n color: colorConfig,\n fill: fillConfig,\n fillOpacity: fillOpacityConfig,\n fillRule: fillRuleConfig,\n focusable: focusableConfig,\n className: classNameConfig,\n size: sizeConfig,\n ...restConfig\n } = useIconContext();\n\n const { size, strokeWidth } = useMemo(\n () => calcSize(iconSize || sizeConfig),\n [iconSize, sizeConfig],\n );\n\n const SvgIcon = icon as LucideIcon;\n\n return (\n <span\n className={cx(variants({ spin }), classNameConfig, className)}\n role=\"img\"\n {...restConfig}\n {...rest}\n >\n {icon &&\n (isValidElement(icon) ? (\n icon\n ) : (\n <SvgIcon\n color={color || colorConfig}\n fill={fill || fillConfig}\n fillOpacity={fillOpacity || fillOpacityConfig}\n fillRule={fillRule || fillRuleConfig}\n focusable={focusable || focusableConfig}\n height={size}\n ref={ref}\n size={size}\n strokeWidth={strokeWidth}\n width={size}\n />\n ))}\n </span>\n );\n },\n);\n\nIcon.displayName = 'Icon';\n\nexport default Icon;\n"],"mappings":";;;;;;;;;;AAWA,MAAM,OAAO,MACV,EACC,MACA,MAAM,UACN,OACA,OAAO,eACP,WACA,WACA,MACA,UACA,aACA,KACA,GAAG,WACC;CACJ,MAAM,EACJ,OAAO,aACP,MAAM,YACN,aAAa,mBACb,UAAU,gBACV,WAAW,iBACX,WAAW,iBACX,MAAM,YACN,GAAG,eACD,gBAAgB;CAEpB,MAAM,EAAE,MAAM,gBAAgB,cACtB,SAAS,YAAY,WAAW,EACtC,CAAC,UAAU,WAAW,CACvB;CAED,MAAM,UAAU;AAEhB,QACE,oBAAC;EACC,WAAW,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,iBAAiB,UAAU;EAC7D,MAAK;EACL,GAAI;EACJ,GAAI;YAEH,SACE,eAAe,KAAK,GACnB,OAEA,oBAAC;GACC,OAAO,SAAS;GAChB,MAAM,QAAQ;GACd,aAAa,eAAe;GAC5B,UAAU,YAAY;GACtB,WAAW,aAAa;GACxB,QAAQ;GACH;GACC;GACO;GACb,OAAO;IACP;GAED;EAGZ;AAED,KAAK,cAAc;AAEnB,mBAAe"}
@@ -1,11 +1,11 @@
1
1
  import { IconProps } from "../type.mjs";
2
- import * as react23 from "react";
2
+ import * as react52 from "react";
3
3
  import { ReactNode } from "react";
4
4
 
5
5
  //#region src/Icon/components/IconProvider.d.ts
6
6
  type IconContentConfig = Omit<IconProps, 'icon' | 'ref'>;
7
- declare const IconContext: react23.Context<IconContentConfig>;
8
- declare const IconProvider: react23.NamedExoticComponent<{
7
+ declare const IconContext: react52.Context<IconContentConfig>;
8
+ declare const IconProvider: react52.NamedExoticComponent<{
9
9
  children: ReactNode;
10
10
  config?: IconContentConfig;
11
11
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"IconProvider.mjs","names":[],"sources":["../../../src/Icon/components/IconProvider.tsx"],"sourcesContent":["'use client';\n\nimport { type ReactNode, createContext, memo, use } from 'react';\n\nimport type { IconProps } from '../type';\n\nexport type IconContentConfig = Omit<IconProps, 'icon' | 'ref'>;\n\nexport const IconContext = createContext<IconContentConfig>({});\n\nexport const IconProvider = memo<{ children: ReactNode; config?: IconContentConfig }>(\n ({ children, config = {} }) => {\n return <IconContext value={config}>{children}</IconContext>;\n },\n);\n\nexport const useIconContext = () => {\n return use(IconContext);\n};\n"],"mappings":";;;;;;AAQA,MAAa,cAAc,cAAiC,EAAE,CAAC;AAE/D,MAAa,eAAe,MACzB,EAAE,UAAU,SAAS,EAAE,OAAO;AAC7B,QAAO,oBAAC;EAAY,OAAO;EAAS;GAAuB;EAE9D;AAED,MAAa,uBAAuB;AAClC,QAAO,IAAI,YAAY"}
1
+ {"version":3,"file":"IconProvider.mjs","names":[],"sources":["../../../src/Icon/components/IconProvider.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, memo, type ReactNode, use } from 'react';\n\nimport { type IconProps } from '../type';\n\nexport type IconContentConfig = Omit<IconProps, 'icon' | 'ref'>;\n\nexport const IconContext = createContext<IconContentConfig>({});\n\nexport const IconProvider = memo<{ children: ReactNode; config?: IconContentConfig }>(\n ({ children, config = {} }) => {\n return <IconContext value={config}>{children}</IconContext>;\n },\n);\n\nexport const useIconContext = () => {\n return use(IconContext);\n};\n"],"mappings":";;;;;;AAQA,MAAa,cAAc,cAAiC,EAAE,CAAC;AAE/D,MAAa,eAAe,MACzB,EAAE,UAAU,SAAS,EAAE,OAAO;AAC7B,QAAO,oBAAC;EAAY,OAAO;EAAS;GAAuB;EAE9D;AAED,MAAa,uBAAuB;AAClC,QAAO,IAAI,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"style.mjs","names":[],"sources":["../../src/Icon/style.ts"],"sourcesContent":["import { createStaticStyles, keyframes } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nconst spin = keyframes`\n 0% {\n rotate: 0deg;\n }\n 100% {\n rotate: 360deg;\n }\n`;\n\nexport const styles = createStaticStyles(({ css }) => {\n return {\n spin: css`\n animation: ${spin} 1s linear infinite;\n `,\n };\n});\n\nexport const variants = cva('anticon', {\n defaultVariants: {\n spin: false,\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n spin: {\n false: null,\n true: styles.spin,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n"],"mappings":";;;;AAGA,MAAM,OAAO,SAAS;;;;;;;;AAStB,MAAa,SAAS,oBAAoB,EAAE,iBAAU;AACpD,QAAO,EACL,MAAM,KAAG;mBACM,KAAK;OAErB;EACD;AAEF,MAAa,WAAW,IAAI,WAAW;CACrC,iBAAiB,EACf,MAAM,OACP;CAED,UAAU,EACR,MAAM;EACJ,OAAO;EACP,MAAM,OAAO;EACd,EACF;CAEF,CAAC"}
1
+ {"version":3,"file":"style.mjs","names":[],"sources":["../../src/Icon/style.ts"],"sourcesContent":["import { createStaticStyles, keyframes } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nconst spin = keyframes`\n 0% {\n rotate: 0deg;\n }\n 100% {\n rotate: 360deg;\n }\n`;\n\nexport const styles = createStaticStyles(({ css }) => {\n return {\n spin: css`\n animation: ${spin} 1s linear infinite;\n `,\n };\n});\n\nexport const variants = cva('anticon', {\n defaultVariants: {\n spin: false,\n },\n\n variants: {\n spin: {\n false: null,\n true: styles.spin,\n },\n },\n});\n"],"mappings":";;;;AAGA,MAAM,OAAO,SAAS;;;;;;;;AAStB,MAAa,SAAS,oBAAoB,EAAE,iBAAU;AACpD,QAAO,EACL,MAAM,KAAG;mBACM,KAAK;OAErB;EACD;AAEF,MAAa,WAAW,IAAI,WAAW;CACrC,iBAAiB,EACf,MAAM,OACP;CAED,UAAU,EACR,MAAM;EACJ,OAAO;EACP,MAAM,OAAO;EACd,EACF;CACF,CAAC"}