@ioca/react 1.4.66 → 1.4.69

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 (289) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +31 -31
  3. package/lib/cjs/components/affix/affix.js.map +1 -1
  4. package/lib/cjs/components/affix/totop.js.map +1 -1
  5. package/lib/cjs/components/badge/badge.js.map +1 -1
  6. package/lib/cjs/components/button/button.js.map +1 -1
  7. package/lib/cjs/components/button/confirm.js +2 -2
  8. package/lib/cjs/components/button/confirm.js.map +1 -1
  9. package/lib/cjs/components/button/group.js.map +1 -1
  10. package/lib/cjs/components/button/toggle.js +3 -3
  11. package/lib/cjs/components/button/toggle.js.map +1 -1
  12. package/lib/cjs/components/card/card.js.map +1 -1
  13. package/lib/cjs/components/checkbox/checkbox.js +2 -2
  14. package/lib/cjs/components/checkbox/checkbox.js.map +1 -1
  15. package/lib/cjs/components/checkbox/item.js +2 -2
  16. package/lib/cjs/components/checkbox/item.js.map +1 -1
  17. package/lib/cjs/components/collapse/collapse.js +2 -2
  18. package/lib/cjs/components/collapse/collapse.js.map +1 -1
  19. package/lib/cjs/components/collapse/item.js.map +1 -1
  20. package/lib/cjs/components/datagrid/cell.js +1 -1
  21. package/lib/cjs/components/datagrid/cell.js.map +1 -1
  22. package/lib/cjs/components/datagrid/datagrid.js +2 -2
  23. package/lib/cjs/components/datagrid/datagrid.js.map +1 -1
  24. package/lib/cjs/components/datagrid/resize.js +1 -2
  25. package/lib/cjs/components/datagrid/resize.js.map +1 -1
  26. package/lib/cjs/components/datagrid/row.js.map +1 -1
  27. package/lib/cjs/components/datagrid/sorter.js.map +1 -1
  28. package/lib/cjs/components/description/description.js.map +1 -1
  29. package/lib/cjs/components/drawer/drawer.js +1 -2
  30. package/lib/cjs/components/drawer/drawer.js.map +1 -1
  31. package/lib/cjs/components/dropdown/dropdown.js.map +1 -1
  32. package/lib/cjs/components/dropdown/item.js.map +1 -1
  33. package/lib/cjs/components/editor/controls.js.map +1 -1
  34. package/lib/cjs/components/editor/editor.js.map +1 -1
  35. package/lib/cjs/components/flex/flex.js.map +1 -1
  36. package/lib/cjs/components/form/context.js.map +1 -1
  37. package/lib/cjs/components/form/field.js +2 -2
  38. package/lib/cjs/components/form/field.js.map +1 -1
  39. package/lib/cjs/components/form/form.js.map +1 -1
  40. package/lib/cjs/components/form/useConfig.js.map +1 -1
  41. package/lib/cjs/components/form/useForm.js.map +1 -1
  42. package/lib/cjs/components/icon/icon.js.map +1 -1
  43. package/lib/cjs/components/image/image.js +1 -2
  44. package/lib/cjs/components/image/image.js.map +1 -1
  45. package/lib/cjs/components/image/list.js.map +1 -1
  46. package/lib/cjs/components/input/container.js.map +1 -1
  47. package/lib/cjs/components/input/input.js +2 -2
  48. package/lib/cjs/components/input/input.js.map +1 -1
  49. package/lib/cjs/components/input/number.js +19 -11
  50. package/lib/cjs/components/input/number.js.map +1 -1
  51. package/lib/cjs/components/input/range.js +2 -2
  52. package/lib/cjs/components/input/range.js.map +1 -1
  53. package/lib/cjs/components/input/textarea.js +2 -2
  54. package/lib/cjs/components/input/textarea.js.map +1 -1
  55. package/lib/cjs/components/list/item.js.map +1 -1
  56. package/lib/cjs/components/list/list.js.map +1 -1
  57. package/lib/cjs/components/loading/loading.js.map +1 -1
  58. package/lib/cjs/components/message/message.js +2 -4
  59. package/lib/cjs/components/message/message.js.map +1 -1
  60. package/lib/cjs/components/modal/content.js.map +1 -1
  61. package/lib/cjs/components/modal/context.js.map +1 -1
  62. package/lib/cjs/components/modal/hookModal.js +2 -2
  63. package/lib/cjs/components/modal/hookModal.js.map +1 -1
  64. package/lib/cjs/components/modal/modal.js.map +1 -1
  65. package/lib/cjs/components/modal/useModal.js.map +1 -1
  66. package/lib/cjs/components/pagination/page.js.map +1 -1
  67. package/lib/cjs/components/pagination/pagination.js.map +1 -1
  68. package/lib/cjs/components/picker/colors/footer.js +2 -2
  69. package/lib/cjs/components/picker/colors/footer.js.map +1 -1
  70. package/lib/cjs/components/picker/colors/handle.js.map +1 -1
  71. package/lib/cjs/components/picker/colors/index.js +2 -2
  72. package/lib/cjs/components/picker/colors/index.js.map +1 -1
  73. package/lib/cjs/components/picker/dates/dates.js.map +1 -1
  74. package/lib/cjs/components/picker/dates/index.js +2 -2
  75. package/lib/cjs/components/picker/dates/index.js.map +1 -1
  76. package/lib/cjs/components/picker/dates/panel.js +2 -2
  77. package/lib/cjs/components/picker/dates/panel.js.map +1 -1
  78. package/lib/cjs/components/picker/time/index.js +2 -2
  79. package/lib/cjs/components/picker/time/index.js.map +1 -1
  80. package/lib/cjs/components/picker/time/item.js.map +1 -1
  81. package/lib/cjs/components/picker/time/panel.js +2 -2
  82. package/lib/cjs/components/picker/time/panel.js.map +1 -1
  83. package/lib/cjs/components/popconfirm/popconfirm.js +2 -2
  84. package/lib/cjs/components/popconfirm/popconfirm.js.map +1 -1
  85. package/lib/cjs/components/popup/content.js.map +1 -1
  86. package/lib/cjs/components/popup/popup.js +2 -3
  87. package/lib/cjs/components/popup/popup.js.map +1 -1
  88. package/lib/cjs/components/progress/circle.js.map +1 -1
  89. package/lib/cjs/components/progress/line.js.map +1 -1
  90. package/lib/cjs/components/progress/progress.js +1 -2
  91. package/lib/cjs/components/progress/progress.js.map +1 -1
  92. package/lib/cjs/components/radio/item.js.map +1 -1
  93. package/lib/cjs/components/radio/radio.js +2 -2
  94. package/lib/cjs/components/radio/radio.js.map +1 -1
  95. package/lib/cjs/components/resizable/resizable.js +1 -2
  96. package/lib/cjs/components/resizable/resizable.js.map +1 -1
  97. package/lib/cjs/components/river/river.js +2 -2
  98. package/lib/cjs/components/river/river.js.map +1 -1
  99. package/lib/cjs/components/select/options.js.map +1 -1
  100. package/lib/cjs/components/select/select.js +2 -2
  101. package/lib/cjs/components/select/select.js.map +1 -1
  102. package/lib/cjs/components/step/divider.js.map +1 -1
  103. package/lib/cjs/components/step/item.js.map +1 -1
  104. package/lib/cjs/components/step/step.js.map +1 -1
  105. package/lib/cjs/components/swiper/item.js.map +1 -1
  106. package/lib/cjs/components/swiper/swiper.js +1 -2
  107. package/lib/cjs/components/swiper/swiper.js.map +1 -1
  108. package/lib/cjs/components/tabs/item.js.map +1 -1
  109. package/lib/cjs/components/tabs/tabs.js +2 -3
  110. package/lib/cjs/components/tabs/tabs.js.map +1 -1
  111. package/lib/cjs/components/tag/tag.js.map +1 -1
  112. package/lib/cjs/components/text/highlight.js.map +1 -1
  113. package/lib/cjs/components/text/number.js.map +1 -1
  114. package/lib/cjs/components/text/text.js.map +1 -1
  115. package/lib/cjs/components/text/time.js.map +1 -1
  116. package/lib/cjs/components/tree/item.js.map +1 -1
  117. package/lib/cjs/components/tree/tree.js +2 -2
  118. package/lib/cjs/components/tree/tree.js.map +1 -1
  119. package/lib/cjs/components/upload/renderFile.js.map +1 -1
  120. package/lib/cjs/components/upload/upload.js +2 -2
  121. package/lib/cjs/components/upload/upload.js.map +1 -1
  122. package/lib/cjs/components/utils/empty/index.js.map +1 -1
  123. package/lib/cjs/components/utils/helpericon/helpericon.js.map +1 -1
  124. package/lib/cjs/components/video/video.js +2 -2
  125. package/lib/cjs/components/video/video.js.map +1 -1
  126. package/lib/cjs/js/hooks.js +167 -1
  127. package/lib/cjs/js/hooks.js.map +1 -1
  128. package/lib/cjs/js/usePreview/content.js +1 -2
  129. package/lib/cjs/js/usePreview/content.js.map +1 -1
  130. package/lib/cjs/js/usePreview/index.js.map +1 -1
  131. package/lib/cjs/js/usePreview/renderFile.js.map +1 -1
  132. package/lib/cjs/js/usePreview/type.js.map +1 -1
  133. package/lib/cjs/js/useRipple/index.js +6 -6
  134. package/lib/cjs/js/useRipple/index.js.map +1 -1
  135. package/lib/cjs/js/useTheme/index.js +2 -2
  136. package/lib/cjs/js/useTheme/index.js.map +1 -1
  137. package/lib/cjs/js/utils.js +1 -1
  138. package/lib/cjs/js/utils.js.map +1 -1
  139. package/lib/css/index.css +1 -1
  140. package/lib/css/index.css.map +1 -1
  141. package/lib/es/components/affix/affix.js.map +1 -1
  142. package/lib/es/components/affix/totop.js.map +1 -1
  143. package/lib/es/components/badge/badge.js.map +1 -1
  144. package/lib/es/components/button/button.js.map +1 -1
  145. package/lib/es/components/button/confirm.js +1 -1
  146. package/lib/es/components/button/confirm.js.map +1 -1
  147. package/lib/es/components/button/group.js.map +1 -1
  148. package/lib/es/components/button/toggle.js +2 -2
  149. package/lib/es/components/button/toggle.js.map +1 -1
  150. package/lib/es/components/card/card.js.map +1 -1
  151. package/lib/es/components/checkbox/checkbox.js +1 -1
  152. package/lib/es/components/checkbox/checkbox.js.map +1 -1
  153. package/lib/es/components/checkbox/item.js +1 -1
  154. package/lib/es/components/checkbox/item.js.map +1 -1
  155. package/lib/es/components/collapse/collapse.js +1 -1
  156. package/lib/es/components/collapse/collapse.js.map +1 -1
  157. package/lib/es/components/collapse/item.js.map +1 -1
  158. package/lib/es/components/datagrid/cell.js +1 -1
  159. package/lib/es/components/datagrid/cell.js.map +1 -1
  160. package/lib/es/components/datagrid/datagrid.js +1 -1
  161. package/lib/es/components/datagrid/datagrid.js.map +1 -1
  162. package/lib/es/components/datagrid/resize.js +1 -2
  163. package/lib/es/components/datagrid/resize.js.map +1 -1
  164. package/lib/es/components/datagrid/row.js.map +1 -1
  165. package/lib/es/components/datagrid/sorter.js.map +1 -1
  166. package/lib/es/components/description/description.js.map +1 -1
  167. package/lib/es/components/drawer/drawer.js +1 -2
  168. package/lib/es/components/drawer/drawer.js.map +1 -1
  169. package/lib/es/components/dropdown/dropdown.js.map +1 -1
  170. package/lib/es/components/dropdown/item.js.map +1 -1
  171. package/lib/es/components/editor/controls.js +1 -1
  172. package/lib/es/components/editor/controls.js.map +1 -1
  173. package/lib/es/components/editor/editor.js.map +1 -1
  174. package/lib/es/components/flex/flex.js.map +1 -1
  175. package/lib/es/components/form/context.js.map +1 -1
  176. package/lib/es/components/form/field.js +1 -1
  177. package/lib/es/components/form/field.js.map +1 -1
  178. package/lib/es/components/form/form.js.map +1 -1
  179. package/lib/es/components/form/useConfig.js.map +1 -1
  180. package/lib/es/components/form/useForm.js.map +1 -1
  181. package/lib/es/components/icon/icon.js.map +1 -1
  182. package/lib/es/components/image/image.js +1 -2
  183. package/lib/es/components/image/image.js.map +1 -1
  184. package/lib/es/components/image/list.js.map +1 -1
  185. package/lib/es/components/input/container.js.map +1 -1
  186. package/lib/es/components/input/input.js +1 -1
  187. package/lib/es/components/input/input.js.map +1 -1
  188. package/lib/es/components/input/number.js +19 -11
  189. package/lib/es/components/input/number.js.map +1 -1
  190. package/lib/es/components/input/range.js +1 -1
  191. package/lib/es/components/input/range.js.map +1 -1
  192. package/lib/es/components/input/textarea.js +1 -1
  193. package/lib/es/components/input/textarea.js.map +1 -1
  194. package/lib/es/components/list/item.js.map +1 -1
  195. package/lib/es/components/list/list.js.map +1 -1
  196. package/lib/es/components/loading/loading.js.map +1 -1
  197. package/lib/es/components/message/message.js +1 -3
  198. package/lib/es/components/message/message.js.map +1 -1
  199. package/lib/es/components/modal/content.js.map +1 -1
  200. package/lib/es/components/modal/context.js.map +1 -1
  201. package/lib/es/components/modal/hookModal.js +1 -1
  202. package/lib/es/components/modal/hookModal.js.map +1 -1
  203. package/lib/es/components/modal/modal.js.map +1 -1
  204. package/lib/es/components/modal/useModal.js.map +1 -1
  205. package/lib/es/components/pagination/page.js.map +1 -1
  206. package/lib/es/components/pagination/pagination.js.map +1 -1
  207. package/lib/es/components/picker/colors/footer.js +1 -1
  208. package/lib/es/components/picker/colors/footer.js.map +1 -1
  209. package/lib/es/components/picker/colors/handle.js.map +1 -1
  210. package/lib/es/components/picker/colors/index.js +1 -1
  211. package/lib/es/components/picker/colors/index.js.map +1 -1
  212. package/lib/es/components/picker/dates/dates.js.map +1 -1
  213. package/lib/es/components/picker/dates/index.js +1 -1
  214. package/lib/es/components/picker/dates/index.js.map +1 -1
  215. package/lib/es/components/picker/dates/panel.js +1 -1
  216. package/lib/es/components/picker/dates/panel.js.map +1 -1
  217. package/lib/es/components/picker/time/index.js +1 -1
  218. package/lib/es/components/picker/time/index.js.map +1 -1
  219. package/lib/es/components/picker/time/item.js.map +1 -1
  220. package/lib/es/components/picker/time/panel.js +1 -1
  221. package/lib/es/components/picker/time/panel.js.map +1 -1
  222. package/lib/es/components/popconfirm/popconfirm.js +1 -1
  223. package/lib/es/components/popconfirm/popconfirm.js.map +1 -1
  224. package/lib/es/components/popup/content.js.map +1 -1
  225. package/lib/es/components/popup/popup.js +2 -3
  226. package/lib/es/components/popup/popup.js.map +1 -1
  227. package/lib/es/components/progress/circle.js.map +1 -1
  228. package/lib/es/components/progress/line.js.map +1 -1
  229. package/lib/es/components/progress/progress.js +1 -2
  230. package/lib/es/components/progress/progress.js.map +1 -1
  231. package/lib/es/components/radio/item.js.map +1 -1
  232. package/lib/es/components/radio/radio.js +1 -1
  233. package/lib/es/components/radio/radio.js.map +1 -1
  234. package/lib/es/components/resizable/resizable.js +1 -2
  235. package/lib/es/components/resizable/resizable.js.map +1 -1
  236. package/lib/es/components/river/river.js +1 -1
  237. package/lib/es/components/river/river.js.map +1 -1
  238. package/lib/es/components/select/options.js +1 -1
  239. package/lib/es/components/select/options.js.map +1 -1
  240. package/lib/es/components/select/select.js +2 -2
  241. package/lib/es/components/select/select.js.map +1 -1
  242. package/lib/es/components/step/divider.js.map +1 -1
  243. package/lib/es/components/step/item.js.map +1 -1
  244. package/lib/es/components/step/step.js.map +1 -1
  245. package/lib/es/components/swiper/item.js.map +1 -1
  246. package/lib/es/components/swiper/swiper.js +1 -2
  247. package/lib/es/components/swiper/swiper.js.map +1 -1
  248. package/lib/es/components/tabs/item.js.map +1 -1
  249. package/lib/es/components/tabs/tabs.js +2 -3
  250. package/lib/es/components/tabs/tabs.js.map +1 -1
  251. package/lib/es/components/tag/tag.js.map +1 -1
  252. package/lib/es/components/text/highlight.js.map +1 -1
  253. package/lib/es/components/text/number.js.map +1 -1
  254. package/lib/es/components/text/text.js.map +1 -1
  255. package/lib/es/components/text/time.js.map +1 -1
  256. package/lib/es/components/tree/item.js.map +1 -1
  257. package/lib/es/components/tree/tree.js +1 -1
  258. package/lib/es/components/tree/tree.js.map +1 -1
  259. package/lib/es/components/upload/renderFile.js.map +1 -1
  260. package/lib/es/components/upload/upload.js +1 -1
  261. package/lib/es/components/upload/upload.js.map +1 -1
  262. package/lib/es/components/utils/empty/index.js.map +1 -1
  263. package/lib/es/components/utils/helpericon/helpericon.js.map +1 -1
  264. package/lib/es/components/video/video.js +2 -2
  265. package/lib/es/components/video/video.js.map +1 -1
  266. package/lib/es/js/hooks.js +165 -3
  267. package/lib/es/js/hooks.js.map +1 -1
  268. package/lib/es/js/usePreview/content.js +1 -2
  269. package/lib/es/js/usePreview/content.js.map +1 -1
  270. package/lib/es/js/usePreview/index.js.map +1 -1
  271. package/lib/es/js/usePreview/renderFile.js.map +1 -1
  272. package/lib/es/js/usePreview/type.js.map +1 -1
  273. package/lib/es/js/useRipple/index.js +6 -6
  274. package/lib/es/js/useRipple/index.js.map +1 -1
  275. package/lib/es/js/useTheme/index.js +1 -1
  276. package/lib/es/js/useTheme/index.js.map +1 -1
  277. package/lib/es/js/utils.js +1 -1
  278. package/lib/es/js/utils.js.map +1 -1
  279. package/lib/index.js +322 -155
  280. package/lib/types/components/button/type.d.ts +1 -1
  281. package/lib/types/components/dropdown/dropdown.d.ts +2 -2
  282. package/lib/types/components/input/type.d.ts +2 -1
  283. package/lib/types/components/modal/type.d.ts +1 -1
  284. package/lib/types/components/radio/type.d.ts +1 -1
  285. package/lib/types/components/tabs/type.d.ts +1 -1
  286. package/lib/types/components/tree/type.d.ts +1 -1
  287. package/lib/types/js/usePreview/type.d.ts +1 -1
  288. package/lib/types/js/useTheme/index.d.ts +1 -2
  289. package/package.json +100 -102
package/lib/index.js CHANGED
@@ -1,9 +1,8 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import classNames from 'classnames';
3
3
  import { debounce, uid, throttle, pick, title } from 'radash';
4
- import { useMemo, Children, cloneElement, useEffect, createElement, isValidElement, useState, useRef, Fragment as Fragment$1, useTransition, createContext, useContext, useLayoutEffect, useImperativeHandle } from 'react';
5
- import { SkipPreviousRound, CloseRound, MinusRound, PlusRound, InboxTwotone, FormatBoldRound, FormatItalicRound, FormatUnderlinedRound, StrikethroughSRound, RedoRound, UndoRound, ClearAllRound, PauseRound, PlayArrowRound, StopRound, VolumeOffRound, VolumeDownRound, FullscreenExitRound, FullscreenRound, FeedOutlined, AspectRatioRound, OpenInNewRound, FileDownloadOutlined, RotateRightRound, RotateLeftRound, KeyboardArrowLeftRound, KeyboardArrowRightRound, HideImageTwotone, SyncAltRound, VisibilityRound, VisibilityOffRound, MoreHorizRound, SearchRound, CheckRound, UnfoldMoreRound, CalendarMonthTwotone, AccessTimeRound, InfoOutlined, KeyboardArrowDownRound, ListAltRound, DriveFolderUploadOutlined, PlusSharp } from '@ricons/material';
6
- import { useReactive, useCreation, useSize, useLocalStorageState } from 'ahooks';
4
+ import { useState, useRef, useEffect, useMemo, Children, cloneElement, createElement, isValidElement, Fragment as Fragment$1, useTransition, createContext, useContext, useLayoutEffect, useImperativeHandle } from 'react';
5
+ import { SkipPreviousRound, CloseRound, MinusRound, PlusRound, InboxTwotone, ClearAllRound, UndoRound, RedoRound, StrikethroughSRound, FormatUnderlinedRound, FormatItalicRound, FormatBoldRound, PlayArrowRound, PauseRound, StopRound, VolumeDownRound, VolumeOffRound, FullscreenRound, FullscreenExitRound, FeedOutlined, AspectRatioRound, OpenInNewRound, FileDownloadOutlined, RotateRightRound, RotateLeftRound, KeyboardArrowLeftRound, KeyboardArrowRightRound, HideImageTwotone, KeyboardDoubleArrowUpRound, SyncAltRound, VisibilityRound, VisibilityOffRound, MoreHorizRound, SearchRound, CheckRound, UnfoldMoreRound, CalendarMonthTwotone, AccessTimeRound, InfoOutlined, KeyboardArrowDownRound, ListAltRound, DriveFolderUploadOutlined, PlusSharp } from '@ricons/material';
7
6
  import { createRoot } from 'react-dom/client';
8
7
  import { createPortal } from 'react-dom';
9
8
  import xss, { escapeAttrValue } from 'xss';
@@ -36,12 +35,12 @@ function triggerRipple(target, e) {
36
35
  const [$box, $ripple] = createRipple();
37
36
  const rect = target.getBoundingClientRect();
38
37
  const size = Math.max(rect.width, rect.height) * 2;
39
- $ripple.style.cssText = `
40
- left: ${e.pageX - rect.left}px;
41
- top: ${e.pageY - rect.top}px;
42
- width: ${size}px;
43
- height: ${size}px;
44
- transition: all ${TIMEOUT / 1000}s;
38
+ $ripple.style.cssText = `
39
+ left: ${e.pageX - rect.left}px;
40
+ top: ${e.pageY - rect.top}px;
41
+ width: ${size}px;
42
+ height: ${size}px;
43
+ transition: all ${TIMEOUT / 1000}s;
45
44
  `;
46
45
  target.insertAdjacentElement("afterbegin", $box);
47
46
  target.offsetHeight;
@@ -71,6 +70,300 @@ const Loading = (props) => {
71
70
  }, children: jsx("circle", { cx: '12', cy: '12', r: '9.5', fill: 'none', strokeWidth: '3', strokeLinecap: 'round', strokeDasharray: 40, strokeDashoffset: 0 }) })), text] }));
72
71
  };
73
72
 
73
+ const MouseMoveEvents = new Set();
74
+ const MouseUpEvents = new Set();
75
+ const KeydownEvents = new Set();
76
+ let initialized = false;
77
+ const initEvents = () => {
78
+ if (typeof document === "undefined" || initialized)
79
+ return;
80
+ initialized = true;
81
+ const touchable = "ontouchend" in document;
82
+ const EVENTS = {
83
+ MOVE: touchable ? "touchmove" : "mousemove",
84
+ UP: touchable ? "touchend" : "mouseup",
85
+ KEYDOWN: "keydown",
86
+ };
87
+ document.addEventListener(EVENTS.MOVE, (e) => {
88
+ for (const listener of MouseMoveEvents.values()) {
89
+ listener(e);
90
+ }
91
+ }, { passive: false });
92
+ document.addEventListener(EVENTS.UP, (e) => {
93
+ for (const listener of MouseUpEvents.values()) {
94
+ listener(e);
95
+ }
96
+ });
97
+ document.addEventListener(EVENTS.KEYDOWN, (e) => {
98
+ for (const listener of KeydownEvents.values()) {
99
+ listener(e);
100
+ }
101
+ });
102
+ };
103
+ function initEventsOnce() {
104
+ useEffect(initEvents, []);
105
+ }
106
+ function useMouseMove(listener, options) {
107
+ initEventsOnce();
108
+ useEffect(() => {
109
+ MouseMoveEvents.add(listener);
110
+ return () => {
111
+ MouseMoveEvents.delete(listener);
112
+ };
113
+ }, []);
114
+ }
115
+ function useMouseUp(listener, options) {
116
+ initEventsOnce();
117
+ useEffect(() => {
118
+ MouseUpEvents.add(listener);
119
+ return () => {
120
+ MouseUpEvents.delete(listener);
121
+ };
122
+ }, []);
123
+ }
124
+ function useKeydown(listener, options) {
125
+ initEventsOnce();
126
+ useEffect(() => {
127
+ if (options?.disabled)
128
+ return;
129
+ KeydownEvents.add(listener);
130
+ return () => {
131
+ KeydownEvents.delete(listener);
132
+ };
133
+ }, []);
134
+ }
135
+ function useCreation(factory, deps) {
136
+ return useMemo(factory, deps);
137
+ }
138
+ function useReactive(initialState) {
139
+ const [, setFlag] = useState(0);
140
+ const scheduledRef = useRef(false);
141
+ const proxyCacheRef = useRef(new WeakMap());
142
+ const rootRef = useRef(null);
143
+ const proxyRef = useRef(null);
144
+ const notify = () => {
145
+ if (scheduledRef.current)
146
+ return;
147
+ scheduledRef.current = true;
148
+ const flush = () => {
149
+ scheduledRef.current = false;
150
+ setFlag((n) => n + 1);
151
+ };
152
+ if (typeof queueMicrotask !== "undefined") {
153
+ queueMicrotask(flush);
154
+ return;
155
+ }
156
+ Promise.resolve().then(flush);
157
+ };
158
+ const createProxy = (target) => {
159
+ if (!target || typeof target !== "object")
160
+ return target;
161
+ if (!Array.isArray(target)) {
162
+ const proto = Object.getPrototypeOf(target);
163
+ const isPlainObject = proto === Object.prototype || proto === null;
164
+ if (!isPlainObject)
165
+ return target;
166
+ }
167
+ const cached = proxyCacheRef.current.get(target);
168
+ if (cached)
169
+ return cached;
170
+ const proxy = new Proxy(target, {
171
+ get(t, p, r) {
172
+ return createProxy(Reflect.get(t, p, r));
173
+ },
174
+ set(t, p, v, r) {
175
+ const prev = Reflect.get(t, p, r);
176
+ const ok = Reflect.set(t, p, v, r);
177
+ if (prev !== v)
178
+ notify();
179
+ return ok;
180
+ },
181
+ deleteProperty(t, p) {
182
+ const had = Object.prototype.hasOwnProperty.call(t, p);
183
+ const ok = Reflect.deleteProperty(t, p);
184
+ if (had)
185
+ notify();
186
+ return ok;
187
+ },
188
+ });
189
+ proxyCacheRef.current.set(target, proxy);
190
+ return proxy;
191
+ };
192
+ if (!proxyRef.current) {
193
+ rootRef.current = initialState;
194
+ proxyRef.current = createProxy(rootRef.current);
195
+ }
196
+ return proxyRef.current;
197
+ }
198
+ function useLocalStorageState(key, options) {
199
+ const { defaultValue, listenStorageChange } = options ?? {};
200
+ const getDefault = () => {
201
+ return typeof defaultValue === "function"
202
+ ? defaultValue()
203
+ : defaultValue;
204
+ };
205
+ const read = () => {
206
+ if (typeof window === "undefined")
207
+ return getDefault();
208
+ const raw = window.localStorage.getItem(key);
209
+ if (raw === null)
210
+ return getDefault();
211
+ try {
212
+ return JSON.parse(raw);
213
+ }
214
+ catch (e) {
215
+ return raw;
216
+ }
217
+ };
218
+ const [state, setState] = useState(() => read());
219
+ const set = (value) => {
220
+ setState((prev) => {
221
+ const next = typeof value === "function"
222
+ ? value(prev)
223
+ : value;
224
+ if (typeof window !== "undefined") {
225
+ if (next === undefined) {
226
+ window.localStorage.removeItem(key);
227
+ }
228
+ else {
229
+ window.localStorage.setItem(key, JSON.stringify(next));
230
+ }
231
+ }
232
+ return next;
233
+ });
234
+ };
235
+ useEffect(() => {
236
+ if (!listenStorageChange)
237
+ return;
238
+ if (typeof window === "undefined")
239
+ return;
240
+ const onStorage = (e) => {
241
+ if (e.key !== key)
242
+ return;
243
+ if (e.newValue === null) {
244
+ setState(getDefault());
245
+ return;
246
+ }
247
+ try {
248
+ setState(JSON.parse(e.newValue));
249
+ }
250
+ catch (err) {
251
+ setState(e.newValue);
252
+ }
253
+ };
254
+ window.addEventListener("storage", onStorage);
255
+ return () => {
256
+ window.removeEventListener("storage", onStorage);
257
+ };
258
+ }, [key, listenStorageChange]);
259
+ return [state, set];
260
+ }
261
+ function useSize(target) {
262
+ const [size, setSize] = useState();
263
+ useEffect(() => {
264
+ if (typeof window === "undefined")
265
+ return;
266
+ const resolveTarget = () => {
267
+ if (!target)
268
+ return null;
269
+ if (typeof target === "function")
270
+ return target();
271
+ if (typeof target === "object" && "current" in target) {
272
+ return target.current;
273
+ }
274
+ return target;
275
+ };
276
+ const el = resolveTarget();
277
+ if (!el)
278
+ return;
279
+ const update = () => {
280
+ const rect = el.getBoundingClientRect();
281
+ setSize({ width: rect.width, height: rect.height });
282
+ };
283
+ update();
284
+ let ro;
285
+ if (typeof ResizeObserver !== "undefined") {
286
+ ro = new ResizeObserver(update);
287
+ ro.observe(el);
288
+ }
289
+ window.addEventListener("resize", update);
290
+ return () => {
291
+ window.removeEventListener("resize", update);
292
+ ro?.disconnect();
293
+ };
294
+ }, [target]);
295
+ return size;
296
+ }
297
+ const defaultObserver = {
298
+ observe: undefined,
299
+ unobserve: undefined,
300
+ disconnect: undefined,
301
+ };
302
+ function useIntersectionObserver(configs) {
303
+ if (typeof window === "undefined") {
304
+ return {
305
+ ...defaultObserver,
306
+ };
307
+ }
308
+ const WM = new WeakMap();
309
+ const IO = new IntersectionObserver((entries) => {
310
+ entries.map((entry) => {
311
+ const callback = WM.get(entry.target);
312
+ callback?.(entry.target, entry.isIntersecting);
313
+ });
314
+ }, configs);
315
+ function observe(target, callback) {
316
+ if (WM.get(target))
317
+ return;
318
+ WM.set(target, callback);
319
+ target && IO.observe(target);
320
+ }
321
+ function unobserve(target) {
322
+ target && IO.unobserve(target);
323
+ WM.delete(target);
324
+ }
325
+ function disconnect() {
326
+ IO.disconnect();
327
+ }
328
+ return {
329
+ observe,
330
+ unobserve,
331
+ disconnect,
332
+ };
333
+ }
334
+ function useResizeObserver() {
335
+ if (typeof window === "undefined") {
336
+ return {
337
+ ...defaultObserver,
338
+ };
339
+ }
340
+ const WM = new WeakMap();
341
+ const IO = new ResizeObserver((entries) => {
342
+ entries.map((entry) => {
343
+ const callback = WM.get(entry.target);
344
+ callback?.(entry.target);
345
+ });
346
+ });
347
+ function observe(target, callback) {
348
+ if (WM.get(target))
349
+ return;
350
+ target && IO.observe(target);
351
+ WM.set(target, callback);
352
+ }
353
+ function unobserve(target) {
354
+ target && IO.unobserve(target);
355
+ WM.delete(target);
356
+ }
357
+ function disconnect() {
358
+ IO.disconnect();
359
+ }
360
+ return {
361
+ observe,
362
+ unobserve,
363
+ disconnect,
364
+ };
365
+ }
366
+
74
367
  const defaultOk$1 = {
75
368
  children: "确定",
76
369
  className: "bg-error",
@@ -168,7 +461,7 @@ function Toggle(props) {
168
461
  }, [active]);
169
462
  return (jsx(Button, { ref: ref, className: classNames(className, { [activeClass || ""]: state.active }, "i-btn-toggle"), ...restProps, onClick: handleClick, children: jsx("div", { className: classNames("i-btn-toggle-content", {
170
463
  "i-btn-toggle-active": state.done,
171
- }), children: state.active ? after ?? children : children }) }));
464
+ }), children: state.active ? (after ?? children) : children }) }));
172
465
  }
173
466
 
174
467
  const formatClass = ({ outline, flat, loading, disabled, size = "normal", block, round, square, secondary, className, }) => classNames("i-btn", className, {
@@ -554,7 +847,7 @@ function exitFullScreen() {
554
847
  }
555
848
  function formatTime(time, options) {
556
849
  const result = [];
557
- const { zero = true, units = ["", ":", ":"] } = options;
850
+ const { zero = true, units = ["", ":", ":"] } = options || {};
558
851
  const l = units.length;
559
852
  let i = 0;
560
853
  while (i < l) {
@@ -760,7 +1053,7 @@ function getCellStyle({ justify, col, row, colSpan = 1, rowSpan = 1, }) {
760
1053
  function Cell(props) {
761
1054
  const { column, row, col, data, cellEllipsis, onCellClick, onCellDoubleClick, } = props;
762
1055
  const { id, fixed, justify, rowSpan, render } = column;
763
- const style = getCellStyle({ justify, fixed, col, row, rowSpan });
1056
+ const style = getCellStyle({ justify, col, row, rowSpan });
764
1057
  return (jsx("div", { className: classNames("i-datagrid-cell", {
765
1058
  [`i-datagrid-cell-fixed-${fixed}`]: fixed,
766
1059
  }), "data-col": id, style: style, onClick: (e) => onCellClick?.(data, column, row, col, e), onDoubleClick: (e) => onCellDoubleClick?.(data, column, row, col, e), children: render?.(data[id], data, row, col) ?? (jsx("div", { className: classNames("i-datagrid-cell-content", {
@@ -768,138 +1061,6 @@ function Cell(props) {
768
1061
  }), children: data[id] })) }));
769
1062
  }
770
1063
 
771
- const MouseMoveEvents = new Set();
772
- const MouseUpEvents = new Set();
773
- const KeydownEvents = new Set();
774
- let initialized = false;
775
- const initEvents = () => {
776
- if (!document || initialized)
777
- return;
778
- initialized = true;
779
- const touchable = "ontouchend" in document;
780
- const EVENTS = {
781
- MOVE: touchable ? "touchmove" : "mousemove",
782
- UP: touchable ? "touchend" : "mouseup",
783
- KEYDOWN: "keydown",
784
- };
785
- document.addEventListener(EVENTS.MOVE, (e) => {
786
- for (const listener of MouseMoveEvents.values()) {
787
- listener(e);
788
- }
789
- }, { passive: false });
790
- document.addEventListener(EVENTS.UP, (e) => {
791
- for (const listener of MouseUpEvents.values()) {
792
- listener(e);
793
- }
794
- });
795
- document.addEventListener(EVENTS.KEYDOWN, (e) => {
796
- for (const listener of KeydownEvents.values()) {
797
- listener(e);
798
- }
799
- });
800
- };
801
- function initEventsOnce() {
802
- useEffect(initEvents, []);
803
- }
804
- function useMouseMove(listener, options) {
805
- initEventsOnce();
806
- useEffect(() => {
807
- MouseMoveEvents.add(listener);
808
- return () => {
809
- MouseMoveEvents.delete(listener);
810
- };
811
- }, []);
812
- }
813
- function useMouseUp(listener, options) {
814
- initEventsOnce();
815
- useEffect(() => {
816
- MouseUpEvents.add(listener);
817
- return () => {
818
- MouseUpEvents.delete(listener);
819
- };
820
- }, []);
821
- }
822
- function useKeydown(listener, options) {
823
- initEventsOnce();
824
- useEffect(() => {
825
- if (options?.disabled)
826
- return;
827
- KeydownEvents.add(listener);
828
- return () => {
829
- KeydownEvents.delete(listener);
830
- };
831
- }, []);
832
- }
833
- const defaultObserver = {
834
- observe: undefined,
835
- unobserve: undefined,
836
- disconnect: undefined,
837
- };
838
- function useIntersectionObserver(configs) {
839
- if (typeof window === "undefined") {
840
- return {
841
- ...defaultObserver,
842
- };
843
- }
844
- const WM = new WeakMap();
845
- const IO = new IntersectionObserver((entries) => {
846
- entries.map((entry) => {
847
- const callback = WM.get(entry.target);
848
- callback?.(entry.target, entry.isIntersecting);
849
- });
850
- }, configs);
851
- function observe(target, callback) {
852
- if (WM.get(target))
853
- return;
854
- WM.set(target, callback);
855
- target && IO.observe(target);
856
- }
857
- function unobserve(target) {
858
- target && IO.unobserve(target);
859
- WM.delete(target);
860
- }
861
- function disconnect() {
862
- IO.disconnect();
863
- }
864
- return {
865
- observe,
866
- unobserve,
867
- disconnect,
868
- };
869
- }
870
- function useResizeObserver() {
871
- if (typeof window === "undefined") {
872
- return {
873
- ...defaultObserver,
874
- };
875
- }
876
- const WM = new WeakMap();
877
- const IO = new ResizeObserver((entries) => {
878
- entries.map((entry) => {
879
- const callback = WM.get(entry.target);
880
- callback?.(entry.target);
881
- });
882
- });
883
- function observe(target, callback) {
884
- if (WM.get(target))
885
- return;
886
- target && IO.observe(target);
887
- WM.set(target, callback);
888
- }
889
- function unobserve(target) {
890
- target && IO.unobserve(target);
891
- WM.delete(target);
892
- }
893
- function disconnect() {
894
- IO.disconnect();
895
- }
896
- return {
897
- observe,
898
- unobserve,
899
- disconnect,
900
- };
901
- }
902
-
903
1064
  function Resize(props) {
904
1065
  const { index, onWidthChange } = props;
905
1066
  const state = useReactive({
@@ -2678,7 +2839,7 @@ function InputContainer(props) {
2678
2839
  }
2679
2840
 
2680
2841
  const Number$1 = (props) => {
2681
- const { ref, label, name, value = "", labelInline, step = 1, min = -Infinity, max = Infinity, thousand, precision, type, className, width, status = "normal", append, border, prepend, disabled, message, tip, hideControl, style, onChange, onEnter, onInput, onBlur, ...restProps } = props;
2842
+ const { ref, label, name, value = "", labelInline, step = 1, min = -Infinity, max = Infinity, thousand, precision, type, className, width, status = "normal", append, border, prepend, disabled, message, tip, hideControl, showMax, style, onChange, onEnter, onInput, onBlur, ...restProps } = props;
2682
2843
  const state = useReactive({
2683
2844
  value,
2684
2845
  });
@@ -2687,19 +2848,27 @@ const Number$1 = (props) => {
2687
2848
  const formatInputValue = (v) => {
2688
2849
  if (!v)
2689
2850
  return "";
2690
- if (typeof v === "number" || !thousand)
2851
+ if (typeof v === "number")
2852
+ return v.toString();
2853
+ if (!thousand)
2691
2854
  return v;
2692
- return v.replaceAll(thousand, "");
2855
+ return v.split(thousand).join("");
2693
2856
  };
2694
2857
  const handleChange = (e) => {
2695
2858
  const { value } = e.target;
2696
- const v = formatInputValue(value.replace(/[^\d\.-]/g, ""));
2697
- state.value = v;
2698
- onChange?.(+v, e);
2859
+ const v = formatInputValue(value.replace(/[^\d\.-]/g, "")); // 保留负号和小数点
2860
+ const numValue = clamp(+v, min, max); // 确保值在范围内
2861
+ state.value = getFormatNumber(numValue); // 修复 thousand 格式化
2862
+ onChange?.(numValue, e);
2699
2863
  };
2700
2864
  const handleOperate = (param) => {
2701
- const value = formatInputValue(state.value) ?? 0;
2702
- const result = getRangeNumber(+value + param);
2865
+ const value = parseFloat(formatInputValue(state.value)) || 0; // 确保值为数字,默认值为 0
2866
+ const result = getRangeNumber(value + param);
2867
+ state.value = getFormatNumber(result);
2868
+ onChange?.(result);
2869
+ };
2870
+ const handleMax = () => {
2871
+ const result = getRangeNumber(max);
2703
2872
  state.value = getFormatNumber(result);
2704
2873
  onChange?.(result);
2705
2874
  };
@@ -2718,7 +2887,7 @@ const Number$1 = (props) => {
2718
2887
  return (jsx(InputContainer, { label: label, labelInline: labelInline, className: className, style: { width, ...style }, tip: message ?? tip, status: status, children: jsxs("div", { className: classNames("i-input-item", {
2719
2888
  [`i-input-${status}`]: status !== "normal",
2720
2889
  "i-input-borderless": !border,
2721
- }), children: [prepend && jsx("div", { className: 'i-input-prepend', children: prepend }), !hideControl && !disabled && (jsx(Helpericon, { active: true, icon: jsx(MinusRound, {}), onClick: () => handleOperate(-step) })), jsx("input", { ...inputProps }), !hideControl && !disabled && (jsx(Helpericon, { active: true, icon: jsx(PlusRound, {}), onClick: () => handleOperate(step) })), append && jsx("div", { className: 'i-input-append', children: append })] }) }));
2890
+ }), children: [prepend && jsx("div", { className: 'i-input-prepend', children: prepend }), !hideControl && !disabled && (jsx(Helpericon, { active: true, icon: jsx(MinusRound, {}), onClick: () => handleOperate(-step) })), jsx("input", { ...inputProps }), !hideControl && !disabled && (jsx(Helpericon, { active: true, icon: jsx(PlusRound, {}), onClick: () => handleOperate(step) })), showMax && max && !disabled && (jsx(Helpericon, { active: true, icon: jsx(KeyboardDoubleArrowUpRound, {}), onClick: handleMax })), append && jsx("div", { className: 'i-input-append', children: append })] }) }));
2722
2891
  };
2723
2892
 
2724
2893
  const Range = (props) => {
@@ -2895,8 +3064,6 @@ const AlignMap = {
2895
3064
  right: "flex-end",
2896
3065
  };
2897
3066
  const GlobalConfig = {
2898
- align: "center",
2899
- offset: "12px",
2900
3067
  gap: 12,
2901
3068
  };
2902
3069
  const ItemDefaultConfig = {
@@ -1,4 +1,4 @@
1
- import { ForwardRefExoticComponent, RefAttributes, ButtonHTMLAttributes, AnchorHTMLAttributes, ReactNode, CSSProperties, RefObject } from 'react';
1
+ import { ForwardRefExoticComponent, RefAttributes, RefObject, ReactNode, ButtonHTMLAttributes, AnchorHTMLAttributes, CSSProperties } from 'react';
2
2
  import { LinkProps } from 'react-router';
3
3
  import Confirm from './confirm.js';
4
4
  import Group from './group.js';
@@ -1,9 +1,9 @@
1
1
  import { IDropdown, IDropItem } from './type.js';
2
- import * as react_jsx_runtime from 'react/jsx-runtime';
3
2
  import * as react from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
 
5
5
  declare const Dropdown: {
6
- (props: IDropdown): string | number | bigint | boolean | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode>> | react_jsx_runtime.JSX.Element;
6
+ (props: IDropdown): string | number | bigint | boolean | react_jsx_runtime.JSX.Element | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode>>;
7
7
  Item: (props: IDropItem) => react_jsx_runtime.JSX.Element;
8
8
  };
9
9
 
@@ -1,4 +1,4 @@
1
- import { ForwardRefExoticComponent, InputHTMLAttributes, ReactNode, TextareaHTMLAttributes, RefObject, ChangeEvent, MouseEvent } from 'react';
1
+ import { InputHTMLAttributes, ReactNode, ForwardRefExoticComponent, TextareaHTMLAttributes, RefObject, ChangeEvent, MouseEvent } from 'react';
2
2
  import { BaseInput } from '../../type/index.js';
3
3
  import Number from './number.js';
4
4
  import Range from './range.js';
@@ -28,6 +28,7 @@ interface IInputNumber extends BaseInput, Omit<InputHTMLAttributes<HTMLInputElem
28
28
  thousand?: string;
29
29
  precision?: number;
30
30
  hideControl?: boolean;
31
+ showMax?: boolean;
31
32
  }
32
33
  interface IInputRange extends Omit<BaseInput, "value" | "onChange">, Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultValue" | "placeholder" | "onChange"> {
33
34
  value?: (number | string | undefined)[];
@@ -1,4 +1,4 @@
1
- import { FC, HTMLAttributes, ReactNode } from 'react';
1
+ import { HTMLAttributes, ReactNode, FC } from 'react';
2
2
  import { IButton } from '../button/type.js';
3
3
  import useModal from './useModal.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { ReactNode, InputHTMLAttributes, ChangeEvent } from 'react';
1
+ import { InputHTMLAttributes, ReactNode, ChangeEvent } from 'react';
2
2
  import { TOption, TStatus } from '../../type/index.js';
3
3
 
4
4
  type TRenderRadioItem = (checked: boolean, value: any) => ReactNode;
@@ -1,4 +1,4 @@
1
- import { ForwardRefExoticComponent, ReactNode, RefObject, CSSProperties, Ref } from 'react';
1
+ import { ForwardRefExoticComponent, RefObject, ReactNode, Ref, CSSProperties } from 'react';
2
2
  import Item from './item.js';
3
3
 
4
4
  interface ITabItem {
@@ -1,4 +1,4 @@
1
- import { RefObject, CSSProperties, ReactNode, MouseEvent, ForwardRefExoticComponent, RefAttributes } from 'react';
1
+ import { ForwardRefExoticComponent, RefAttributes, ReactNode, RefObject, CSSProperties, MouseEvent } from 'react';
2
2
  import { LinkProps } from 'react-router';
3
3
 
4
4
  interface ITreeItem {
@@ -1,4 +1,4 @@
1
- import { CSSProperties, ReactNode } from 'react';
1
+ import { ReactNode, CSSProperties } from 'react';
2
2
  import { IModal } from '../../components/modal/type.js';
3
3
 
4
4
  type TPreviewItem = {
@@ -1,9 +1,8 @@
1
- import * as ahooks_lib_createUseStorageState from 'D:\\codes\\ioca-react\\node_modules\\ahooks\\lib\\createUseStorageState\\index.d.ts';
2
1
  import { ITheme } from './type.js';
3
2
 
4
3
  declare const useTheme: (props?: ITheme) => {
5
4
  theme: string;
6
- setTheme: (value?: ahooks_lib_createUseStorageState.SetState<string>) => void;
5
+ setTheme: (value: string | ((prev: string) => string)) => void;
7
6
  };
8
7
 
9
8
  export { useTheme as default };