@ioca/react 1.5.19 → 1.5.21

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 (605) hide show
  1. package/lib/css/index.css +1 -2
  2. package/lib/es/components/affix/affix.js +1 -1
  3. package/lib/es/components/affix/index.js +0 -1
  4. package/lib/es/components/affix/totop.js +0 -1
  5. package/lib/es/components/badge/badge.js +1 -1
  6. package/lib/es/components/badge/index.js +0 -1
  7. package/lib/es/components/button/button.js +1 -1
  8. package/lib/es/components/button/confirm.js +0 -1
  9. package/lib/es/components/button/group.js +0 -1
  10. package/lib/es/components/button/index.js +0 -1
  11. package/lib/es/components/button/toggle.js +0 -1
  12. package/lib/es/components/card/card.js +1 -1
  13. package/lib/es/components/card/index.js +0 -1
  14. package/lib/es/components/checkbox/checkbox.js +2 -1
  15. package/lib/es/components/checkbox/index.js +0 -1
  16. package/lib/es/components/checkbox/item.js +0 -1
  17. package/lib/es/components/collapse/collapse.js +1 -1
  18. package/lib/es/components/collapse/index.js +0 -1
  19. package/lib/es/components/collapse/item.js +0 -1
  20. package/lib/es/components/datagrid/cell.js +0 -1
  21. package/lib/es/components/datagrid/datagrid.js +1 -1
  22. package/lib/es/components/datagrid/helper.js +0 -1
  23. package/lib/es/components/datagrid/index.js +0 -1
  24. package/lib/es/components/datagrid/resize.js +0 -1
  25. package/lib/es/components/datagrid/row.js +0 -1
  26. package/lib/es/components/datagrid/sorter.js +0 -1
  27. package/lib/es/components/datagrid/virtual.js +130 -104
  28. package/lib/es/components/description/description.js +1 -1
  29. package/lib/es/components/description/index.js +0 -1
  30. package/lib/es/components/drawer/drawer.js +1 -1
  31. package/lib/es/components/drawer/index.js +0 -1
  32. package/lib/es/components/dropdown/dropdown.js +1 -1
  33. package/lib/es/components/dropdown/index.js +0 -1
  34. package/lib/es/components/dropdown/item.js +0 -1
  35. package/lib/es/components/editor/controls.js +0 -1
  36. package/lib/es/components/editor/editor.js +1 -1
  37. package/lib/es/components/editor/index.js +0 -1
  38. package/lib/es/components/editor/memtion.js +0 -1
  39. package/lib/es/components/flex/flex.js +1 -1
  40. package/lib/es/components/flex/index.js +0 -1
  41. package/lib/es/components/form/context.js +0 -1
  42. package/lib/es/components/form/field.js +0 -1
  43. package/lib/es/components/form/form.js +1 -1
  44. package/lib/es/components/form/index.js +0 -1
  45. package/lib/es/components/form/useConfig.js +0 -1
  46. package/lib/es/components/form/useForm.js +1 -2
  47. package/lib/es/components/form/utils.js +0 -1
  48. package/lib/es/components/icon/icon.js +1 -1
  49. package/lib/es/components/icon/index.js +0 -1
  50. package/lib/es/components/image/image.js +1 -1
  51. package/lib/es/components/image/index.js +0 -1
  52. package/lib/es/components/image/list.js +0 -1
  53. package/lib/es/components/input/container.js +0 -1
  54. package/lib/es/components/input/index.js +0 -1
  55. package/lib/es/components/input/input.js +1 -1
  56. package/lib/es/components/input/number.js +1 -1
  57. package/lib/es/components/input/range.js +1 -1
  58. package/lib/es/components/input/textarea.js +1 -1
  59. package/lib/es/components/list/index.js +0 -1
  60. package/lib/es/components/list/item.js +0 -1
  61. package/lib/es/components/list/list.js +1 -1
  62. package/lib/es/components/loading/index.js +0 -1
  63. package/lib/es/components/loading/loading.js +1 -1
  64. package/lib/es/components/message/index.js +0 -1
  65. package/lib/es/components/message/message.js +1 -1
  66. package/lib/es/components/modal/content.js +1 -1
  67. package/lib/es/components/modal/context.js +0 -1
  68. package/lib/es/components/modal/hookModal.js +0 -1
  69. package/lib/es/components/modal/index.js +0 -1
  70. package/lib/es/components/modal/modal.js +1 -1
  71. package/lib/es/components/modal/modalManager.js +0 -1
  72. package/lib/es/components/modal/useModal.js +0 -1
  73. package/lib/es/components/pagination/index.js +0 -1
  74. package/lib/es/components/pagination/page.js +0 -1
  75. package/lib/es/components/pagination/pagination.js +1 -1
  76. package/lib/es/components/picker/colors/footer.js +0 -1
  77. package/lib/es/components/picker/colors/handle.js +0 -1
  78. package/lib/es/components/picker/colors/index.js +1 -1
  79. package/lib/es/components/picker/daterange/daterange.js +2 -1
  80. package/lib/es/components/picker/daterange/index.js +0 -1
  81. package/lib/es/components/picker/daterange/panel.js +0 -1
  82. package/lib/es/components/picker/dates/dates.js +0 -1
  83. package/lib/es/components/picker/dates/index.js +1 -1
  84. package/lib/es/components/picker/dates/panel.js +0 -1
  85. package/lib/es/components/picker/time/index.js +0 -1
  86. package/lib/es/components/picker/time/item.js +0 -1
  87. package/lib/es/components/picker/time/panel.js +1 -1
  88. package/lib/es/components/popconfirm/index.js +0 -1
  89. package/lib/es/components/popconfirm/popconfirm.js +1 -1
  90. package/lib/es/components/popup/content.js +0 -1
  91. package/lib/es/components/popup/index.js +0 -1
  92. package/lib/es/components/popup/popup.js +1 -1
  93. package/lib/es/components/progress/circle.js +0 -1
  94. package/lib/es/components/progress/index.js +0 -1
  95. package/lib/es/components/progress/line.js +0 -1
  96. package/lib/es/components/progress/progress.js +2 -1
  97. package/lib/es/components/radio/index.js +0 -1
  98. package/lib/es/components/radio/item.js +0 -1
  99. package/lib/es/components/radio/radio.js +2 -1
  100. package/lib/es/components/resizable/index.js +0 -1
  101. package/lib/es/components/resizable/resizable.js +1 -1
  102. package/lib/es/components/river/index.js +0 -1
  103. package/lib/es/components/river/river.js +1 -1
  104. package/lib/es/components/scroll/index.js +0 -1
  105. package/lib/es/components/scroll/scroll.js +1 -1
  106. package/lib/es/components/select/index.js +0 -1
  107. package/lib/es/components/select/options.js +0 -1
  108. package/lib/es/components/select/select.js +2 -1
  109. package/lib/es/components/step/divider.js +1 -1
  110. package/lib/es/components/step/index.js +0 -1
  111. package/lib/es/components/step/item.js +0 -1
  112. package/lib/es/components/step/step.js +1 -1
  113. package/lib/es/components/swiper/index.js +0 -1
  114. package/lib/es/components/swiper/item.js +0 -1
  115. package/lib/es/components/swiper/swiper.js +1 -1
  116. package/lib/es/components/tabs/contents.js +0 -1
  117. package/lib/es/components/tabs/helper.js +0 -1
  118. package/lib/es/components/tabs/index.js +0 -1
  119. package/lib/es/components/tabs/item.js +0 -1
  120. package/lib/es/components/tabs/navs.js +0 -1
  121. package/lib/es/components/tabs/tabs.js +9 -18
  122. package/lib/es/components/tag/index.js +0 -1
  123. package/lib/es/components/tag/tag.js +1 -1
  124. package/lib/es/components/text/highlight.js +0 -1
  125. package/lib/es/components/text/index.js +0 -1
  126. package/lib/es/components/text/number.js +0 -1
  127. package/lib/es/components/text/text.js +1 -1
  128. package/lib/es/components/text/time.js +0 -1
  129. package/lib/es/components/tree/index.js +0 -1
  130. package/lib/es/components/tree/item.js +44 -58
  131. package/lib/es/components/tree/tree.js +123 -20
  132. package/lib/es/components/tree/virtual.js +43 -0
  133. package/lib/es/components/upload/dropbox.js +0 -1
  134. package/lib/es/components/upload/index.js +0 -1
  135. package/lib/es/components/upload/renderFile.js +0 -1
  136. package/lib/es/components/upload/upload.js +1 -1
  137. package/lib/es/components/utils/empty/index.js +1 -1
  138. package/lib/es/components/utils/helpericon/helpericon.js +1 -1
  139. package/lib/es/components/utils/helpericon/index.js +0 -1
  140. package/lib/es/components/video/index.js +0 -1
  141. package/lib/es/components/video/video.js +1 -1
  142. package/lib/es/index.js +1 -1
  143. package/lib/es/js/hooks.js +0 -1
  144. package/lib/es/js/usePreview/content.js +3 -4
  145. package/lib/es/js/usePreview/index.js +1 -1
  146. package/lib/es/js/usePreview/renderFile.js +0 -1
  147. package/lib/es/js/usePreview/type.js +0 -1
  148. package/lib/es/js/useRipple/index.js +2 -1
  149. package/lib/es/js/useTheme/index.js +0 -1
  150. package/lib/es/js/utils.js +0 -1
  151. package/lib/index.js +338 -197
  152. package/lib/types/components/tabs/type.d.ts +1 -1
  153. package/lib/types/components/tree/type.d.ts +8 -5
  154. package/lib/types/js/usePreview/type.d.ts +1 -1
  155. package/package.json +8 -11
  156. package/lib/cjs/components/affix/affix.js +0 -80
  157. package/lib/cjs/components/affix/affix.js.map +0 -1
  158. package/lib/cjs/components/affix/index.js +0 -10
  159. package/lib/cjs/components/affix/index.js.map +0 -1
  160. package/lib/cjs/components/affix/totop.js +0 -21
  161. package/lib/cjs/components/affix/totop.js.map +0 -1
  162. package/lib/cjs/components/badge/badge.js +0 -21
  163. package/lib/cjs/components/badge/badge.js.map +0 -1
  164. package/lib/cjs/components/badge/index.js +0 -10
  165. package/lib/cjs/components/badge/index.js.map +0 -1
  166. package/lib/cjs/components/button/button.js +0 -72
  167. package/lib/cjs/components/button/button.js.map +0 -1
  168. package/lib/cjs/components/button/confirm.js +0 -58
  169. package/lib/cjs/components/button/confirm.js.map +0 -1
  170. package/lib/cjs/components/button/group.js +0 -29
  171. package/lib/cjs/components/button/group.js.map +0 -1
  172. package/lib/cjs/components/button/index.js +0 -10
  173. package/lib/cjs/components/button/index.js.map +0 -1
  174. package/lib/cjs/components/button/toggle.js +0 -47
  175. package/lib/cjs/components/button/toggle.js.map +0 -1
  176. package/lib/cjs/components/card/card.js +0 -21
  177. package/lib/cjs/components/card/card.js.map +0 -1
  178. package/lib/cjs/components/card/index.js +0 -10
  179. package/lib/cjs/components/card/index.js.map +0 -1
  180. package/lib/cjs/components/checkbox/checkbox.js +0 -47
  181. package/lib/cjs/components/checkbox/checkbox.js.map +0 -1
  182. package/lib/cjs/components/checkbox/index.js +0 -10
  183. package/lib/cjs/components/checkbox/index.js.map +0 -1
  184. package/lib/cjs/components/checkbox/item.js +0 -43
  185. package/lib/cjs/components/checkbox/item.js.map +0 -1
  186. package/lib/cjs/components/collapse/collapse.js +0 -80
  187. package/lib/cjs/components/collapse/collapse.js.map +0 -1
  188. package/lib/cjs/components/collapse/index.js +0 -10
  189. package/lib/cjs/components/collapse/index.js.map +0 -1
  190. package/lib/cjs/components/collapse/item.js +0 -12
  191. package/lib/cjs/components/collapse/item.js.map +0 -1
  192. package/lib/cjs/components/datagrid/cell.js +0 -34
  193. package/lib/cjs/components/datagrid/cell.js.map +0 -1
  194. package/lib/cjs/components/datagrid/datagrid.js +0 -219
  195. package/lib/cjs/components/datagrid/datagrid.js.map +0 -1
  196. package/lib/cjs/components/datagrid/helper.js +0 -83
  197. package/lib/cjs/components/datagrid/helper.js.map +0 -1
  198. package/lib/cjs/components/datagrid/index.js +0 -10
  199. package/lib/cjs/components/datagrid/index.js.map +0 -1
  200. package/lib/cjs/components/datagrid/resize.js +0 -72
  201. package/lib/cjs/components/datagrid/resize.js.map +0 -1
  202. package/lib/cjs/components/datagrid/row.js +0 -55
  203. package/lib/cjs/components/datagrid/row.js.map +0 -1
  204. package/lib/cjs/components/datagrid/sorter.js +0 -21
  205. package/lib/cjs/components/datagrid/sorter.js.map +0 -1
  206. package/lib/cjs/components/datagrid/virtual.js +0 -283
  207. package/lib/cjs/components/datagrid/virtual.js.map +0 -1
  208. package/lib/cjs/components/description/description.js +0 -36
  209. package/lib/cjs/components/description/description.js.map +0 -1
  210. package/lib/cjs/components/description/index.js +0 -10
  211. package/lib/cjs/components/description/index.js.map +0 -1
  212. package/lib/cjs/components/drawer/drawer.js +0 -77
  213. package/lib/cjs/components/drawer/drawer.js.map +0 -1
  214. package/lib/cjs/components/drawer/index.js +0 -10
  215. package/lib/cjs/components/drawer/index.js.map +0 -1
  216. package/lib/cjs/components/dropdown/dropdown.js +0 -36
  217. package/lib/cjs/components/dropdown/dropdown.js.map +0 -1
  218. package/lib/cjs/components/dropdown/index.js +0 -10
  219. package/lib/cjs/components/dropdown/index.js.map +0 -1
  220. package/lib/cjs/components/dropdown/item.js +0 -38
  221. package/lib/cjs/components/dropdown/item.js.map +0 -1
  222. package/lib/cjs/components/editor/controls.js +0 -64
  223. package/lib/cjs/components/editor/controls.js.map +0 -1
  224. package/lib/cjs/components/editor/editor.js +0 -287
  225. package/lib/cjs/components/editor/editor.js.map +0 -1
  226. package/lib/cjs/components/editor/index.js +0 -10
  227. package/lib/cjs/components/editor/index.js.map +0 -1
  228. package/lib/cjs/components/editor/memtion.js +0 -302
  229. package/lib/cjs/components/editor/memtion.js.map +0 -1
  230. package/lib/cjs/components/flex/flex.js +0 -36
  231. package/lib/cjs/components/flex/flex.js.map +0 -1
  232. package/lib/cjs/components/flex/index.js +0 -10
  233. package/lib/cjs/components/flex/index.js.map +0 -1
  234. package/lib/cjs/components/form/context.js +0 -10
  235. package/lib/cjs/components/form/context.js.map +0 -1
  236. package/lib/cjs/components/form/field.js +0 -81
  237. package/lib/cjs/components/form/field.js.map +0 -1
  238. package/lib/cjs/components/form/form.js +0 -76
  239. package/lib/cjs/components/form/form.js.map +0 -1
  240. package/lib/cjs/components/form/index.js +0 -10
  241. package/lib/cjs/components/form/index.js.map +0 -1
  242. package/lib/cjs/components/form/useConfig.js +0 -38
  243. package/lib/cjs/components/form/useConfig.js.map +0 -1
  244. package/lib/cjs/components/form/useForm.js +0 -127
  245. package/lib/cjs/components/form/useForm.js.map +0 -1
  246. package/lib/cjs/components/form/utils.js +0 -33
  247. package/lib/cjs/components/form/utils.js.map +0 -1
  248. package/lib/cjs/components/icon/icon.js +0 -31
  249. package/lib/cjs/components/icon/icon.js.map +0 -1
  250. package/lib/cjs/components/icon/index.js +0 -10
  251. package/lib/cjs/components/icon/index.js.map +0 -1
  252. package/lib/cjs/components/image/image.js +0 -103
  253. package/lib/cjs/components/image/image.js.map +0 -1
  254. package/lib/cjs/components/image/index.js +0 -10
  255. package/lib/cjs/components/image/index.js.map +0 -1
  256. package/lib/cjs/components/image/list.js +0 -47
  257. package/lib/cjs/components/image/list.js.map +0 -1
  258. package/lib/cjs/components/input/container.js +0 -22
  259. package/lib/cjs/components/input/container.js.map +0 -1
  260. package/lib/cjs/components/input/index.js +0 -10
  261. package/lib/cjs/components/input/index.js.map +0 -1
  262. package/lib/cjs/components/input/input.js +0 -85
  263. package/lib/cjs/components/input/input.js.map +0 -1
  264. package/lib/cjs/components/input/number.js +0 -118
  265. package/lib/cjs/components/input/number.js.map +0 -1
  266. package/lib/cjs/components/input/range.js +0 -82
  267. package/lib/cjs/components/input/range.js.map +0 -1
  268. package/lib/cjs/components/input/textarea.js +0 -64
  269. package/lib/cjs/components/input/textarea.js.map +0 -1
  270. package/lib/cjs/components/list/index.js +0 -10
  271. package/lib/cjs/components/list/index.js.map +0 -1
  272. package/lib/cjs/components/list/item.js +0 -23
  273. package/lib/cjs/components/list/item.js.map +0 -1
  274. package/lib/cjs/components/list/list.js +0 -33
  275. package/lib/cjs/components/list/list.js.map +0 -1
  276. package/lib/cjs/components/loading/index.js +0 -10
  277. package/lib/cjs/components/loading/index.js.map +0 -1
  278. package/lib/cjs/components/loading/loading.js +0 -26
  279. package/lib/cjs/components/loading/loading.js.map +0 -1
  280. package/lib/cjs/components/message/index.js +0 -11
  281. package/lib/cjs/components/message/index.js.map +0 -1
  282. package/lib/cjs/components/message/message.js +0 -239
  283. package/lib/cjs/components/message/message.js.map +0 -1
  284. package/lib/cjs/components/modal/content.js +0 -45
  285. package/lib/cjs/components/modal/content.js.map +0 -1
  286. package/lib/cjs/components/modal/context.js +0 -10
  287. package/lib/cjs/components/modal/context.js.map +0 -1
  288. package/lib/cjs/components/modal/hookModal.js +0 -31
  289. package/lib/cjs/components/modal/hookModal.js.map +0 -1
  290. package/lib/cjs/components/modal/index.js +0 -10
  291. package/lib/cjs/components/modal/index.js.map +0 -1
  292. package/lib/cjs/components/modal/modal.js +0 -140
  293. package/lib/cjs/components/modal/modal.js.map +0 -1
  294. package/lib/cjs/components/modal/modalManager.js +0 -83
  295. package/lib/cjs/components/modal/modalManager.js.map +0 -1
  296. package/lib/cjs/components/modal/useModal.js +0 -38
  297. package/lib/cjs/components/modal/useModal.js.map +0 -1
  298. package/lib/cjs/components/pagination/index.js +0 -10
  299. package/lib/cjs/components/pagination/index.js.map +0 -1
  300. package/lib/cjs/components/pagination/page.js +0 -32
  301. package/lib/cjs/components/pagination/page.js.map +0 -1
  302. package/lib/cjs/components/pagination/pagination.js +0 -52
  303. package/lib/cjs/components/pagination/pagination.js.map +0 -1
  304. package/lib/cjs/components/picker/colors/footer.js +0 -39
  305. package/lib/cjs/components/picker/colors/footer.js.map +0 -1
  306. package/lib/cjs/components/picker/colors/handle.js +0 -18
  307. package/lib/cjs/components/picker/colors/handle.js.map +0 -1
  308. package/lib/cjs/components/picker/colors/index.js +0 -72
  309. package/lib/cjs/components/picker/colors/index.js.map +0 -1
  310. package/lib/cjs/components/picker/daterange/daterange.js +0 -60
  311. package/lib/cjs/components/picker/daterange/daterange.js.map +0 -1
  312. package/lib/cjs/components/picker/daterange/index.js +0 -11
  313. package/lib/cjs/components/picker/daterange/index.js.map +0 -1
  314. package/lib/cjs/components/picker/daterange/panel.js +0 -55
  315. package/lib/cjs/components/picker/daterange/panel.js.map +0 -1
  316. package/lib/cjs/components/picker/dates/dates.js +0 -63
  317. package/lib/cjs/components/picker/dates/dates.js.map +0 -1
  318. package/lib/cjs/components/picker/dates/index.js +0 -73
  319. package/lib/cjs/components/picker/dates/index.js.map +0 -1
  320. package/lib/cjs/components/picker/dates/panel.js +0 -93
  321. package/lib/cjs/components/picker/dates/panel.js.map +0 -1
  322. package/lib/cjs/components/picker/time/index.js +0 -55
  323. package/lib/cjs/components/picker/time/index.js.map +0 -1
  324. package/lib/cjs/components/picker/time/item.js +0 -23
  325. package/lib/cjs/components/picker/time/item.js.map +0 -1
  326. package/lib/cjs/components/picker/time/panel.js +0 -104
  327. package/lib/cjs/components/picker/time/panel.js.map +0 -1
  328. package/lib/cjs/components/popconfirm/index.js +0 -10
  329. package/lib/cjs/components/popconfirm/index.js.map +0 -1
  330. package/lib/cjs/components/popconfirm/popconfirm.js +0 -55
  331. package/lib/cjs/components/popconfirm/popconfirm.js.map +0 -1
  332. package/lib/cjs/components/popup/content.js +0 -51
  333. package/lib/cjs/components/popup/content.js.map +0 -1
  334. package/lib/cjs/components/popup/index.js +0 -10
  335. package/lib/cjs/components/popup/index.js.map +0 -1
  336. package/lib/cjs/components/popup/popup.js +0 -495
  337. package/lib/cjs/components/popup/popup.js.map +0 -1
  338. package/lib/cjs/components/progress/circle.js +0 -16
  339. package/lib/cjs/components/progress/circle.js.map +0 -1
  340. package/lib/cjs/components/progress/index.js +0 -10
  341. package/lib/cjs/components/progress/index.js.map +0 -1
  342. package/lib/cjs/components/progress/line.js +0 -22
  343. package/lib/cjs/components/progress/line.js.map +0 -1
  344. package/lib/cjs/components/progress/progress.js +0 -90
  345. package/lib/cjs/components/progress/progress.js.map +0 -1
  346. package/lib/cjs/components/radio/index.js +0 -10
  347. package/lib/cjs/components/radio/index.js.map +0 -1
  348. package/lib/cjs/components/radio/item.js +0 -25
  349. package/lib/cjs/components/radio/item.js.map +0 -1
  350. package/lib/cjs/components/radio/radio.js +0 -40
  351. package/lib/cjs/components/radio/radio.js.map +0 -1
  352. package/lib/cjs/components/resizable/index.js +0 -10
  353. package/lib/cjs/components/resizable/index.js.map +0 -1
  354. package/lib/cjs/components/resizable/resizable.js +0 -68
  355. package/lib/cjs/components/resizable/resizable.js.map +0 -1
  356. package/lib/cjs/components/river/index.js +0 -10
  357. package/lib/cjs/components/river/index.js.map +0 -1
  358. package/lib/cjs/components/river/river.js +0 -114
  359. package/lib/cjs/components/river/river.js.map +0 -1
  360. package/lib/cjs/components/scroll/index.js +0 -10
  361. package/lib/cjs/components/scroll/index.js.map +0 -1
  362. package/lib/cjs/components/scroll/scroll.js +0 -78
  363. package/lib/cjs/components/scroll/scroll.js.map +0 -1
  364. package/lib/cjs/components/select/index.js +0 -10
  365. package/lib/cjs/components/select/index.js.map +0 -1
  366. package/lib/cjs/components/select/options.js +0 -55
  367. package/lib/cjs/components/select/options.js.map +0 -1
  368. package/lib/cjs/components/select/select.js +0 -103
  369. package/lib/cjs/components/select/select.js.map +0 -1
  370. package/lib/cjs/components/step/divider.js +0 -12
  371. package/lib/cjs/components/step/divider.js.map +0 -1
  372. package/lib/cjs/components/step/index.js +0 -10
  373. package/lib/cjs/components/step/index.js.map +0 -1
  374. package/lib/cjs/components/step/item.js +0 -30
  375. package/lib/cjs/components/step/item.js.map +0 -1
  376. package/lib/cjs/components/step/step.js +0 -44
  377. package/lib/cjs/components/step/step.js.map +0 -1
  378. package/lib/cjs/components/swiper/index.js +0 -10
  379. package/lib/cjs/components/swiper/index.js.map +0 -1
  380. package/lib/cjs/components/swiper/item.js +0 -33
  381. package/lib/cjs/components/swiper/item.js.map +0 -1
  382. package/lib/cjs/components/swiper/swiper.js +0 -241
  383. package/lib/cjs/components/swiper/swiper.js.map +0 -1
  384. package/lib/cjs/components/tabs/contents.js +0 -28
  385. package/lib/cjs/components/tabs/contents.js.map +0 -1
  386. package/lib/cjs/components/tabs/helper.js +0 -68
  387. package/lib/cjs/components/tabs/helper.js.map +0 -1
  388. package/lib/cjs/components/tabs/index.js +0 -10
  389. package/lib/cjs/components/tabs/index.js.map +0 -1
  390. package/lib/cjs/components/tabs/item.js +0 -12
  391. package/lib/cjs/components/tabs/item.js.map +0 -1
  392. package/lib/cjs/components/tabs/navs.js +0 -38
  393. package/lib/cjs/components/tabs/navs.js.map +0 -1
  394. package/lib/cjs/components/tabs/tabs.js +0 -264
  395. package/lib/cjs/components/tabs/tabs.js.map +0 -1
  396. package/lib/cjs/components/tag/index.js +0 -10
  397. package/lib/cjs/components/tag/index.js.map +0 -1
  398. package/lib/cjs/components/tag/tag.js +0 -26
  399. package/lib/cjs/components/tag/tag.js.map +0 -1
  400. package/lib/cjs/components/text/highlight.js +0 -32
  401. package/lib/cjs/components/text/highlight.js.map +0 -1
  402. package/lib/cjs/components/text/index.js +0 -10
  403. package/lib/cjs/components/text/index.js.map +0 -1
  404. package/lib/cjs/components/text/number.js +0 -31
  405. package/lib/cjs/components/text/number.js.map +0 -1
  406. package/lib/cjs/components/text/text.js +0 -42
  407. package/lib/cjs/components/text/text.js.map +0 -1
  408. package/lib/cjs/components/text/time.js +0 -24
  409. package/lib/cjs/components/text/time.js.map +0 -1
  410. package/lib/cjs/components/tree/index.js +0 -10
  411. package/lib/cjs/components/tree/index.js.map +0 -1
  412. package/lib/cjs/components/tree/item.js +0 -80
  413. package/lib/cjs/components/tree/item.js.map +0 -1
  414. package/lib/cjs/components/tree/tree.js +0 -134
  415. package/lib/cjs/components/tree/tree.js.map +0 -1
  416. package/lib/cjs/components/upload/dropbox.js +0 -54
  417. package/lib/cjs/components/upload/dropbox.js.map +0 -1
  418. package/lib/cjs/components/upload/index.js +0 -10
  419. package/lib/cjs/components/upload/index.js.map +0 -1
  420. package/lib/cjs/components/upload/renderFile.js +0 -66
  421. package/lib/cjs/components/upload/renderFile.js.map +0 -1
  422. package/lib/cjs/components/upload/upload.js +0 -163
  423. package/lib/cjs/components/upload/upload.js.map +0 -1
  424. package/lib/cjs/components/utils/empty/index.js +0 -19
  425. package/lib/cjs/components/utils/empty/index.js.map +0 -1
  426. package/lib/cjs/components/utils/helpericon/helpericon.js +0 -32
  427. package/lib/cjs/components/utils/helpericon/helpericon.js.map +0 -1
  428. package/lib/cjs/components/utils/helpericon/index.js +0 -10
  429. package/lib/cjs/components/utils/helpericon/index.js.map +0 -1
  430. package/lib/cjs/components/video/index.js +0 -10
  431. package/lib/cjs/components/video/index.js.map +0 -1
  432. package/lib/cjs/components/video/video.js +0 -181
  433. package/lib/cjs/components/video/video.js.map +0 -1
  434. package/lib/cjs/index.js +0 -92
  435. package/lib/cjs/index.js.map +0 -1
  436. package/lib/cjs/js/hooks.js +0 -272
  437. package/lib/cjs/js/hooks.js.map +0 -1
  438. package/lib/cjs/js/usePreview/content.js +0 -164
  439. package/lib/cjs/js/usePreview/content.js.map +0 -1
  440. package/lib/cjs/js/usePreview/index.js +0 -27
  441. package/lib/cjs/js/usePreview/index.js.map +0 -1
  442. package/lib/cjs/js/usePreview/renderFile.js +0 -24
  443. package/lib/cjs/js/usePreview/renderFile.js.map +0 -1
  444. package/lib/cjs/js/usePreview/type.js +0 -13
  445. package/lib/cjs/js/usePreview/type.js.map +0 -1
  446. package/lib/cjs/js/useRipple/index.js +0 -51
  447. package/lib/cjs/js/useRipple/index.js.map +0 -1
  448. package/lib/cjs/js/useTheme/index.js +0 -155
  449. package/lib/cjs/js/useTheme/index.js.map +0 -1
  450. package/lib/cjs/js/utils.js +0 -302
  451. package/lib/cjs/js/utils.js.map +0 -1
  452. package/lib/css/colors.css +0 -792
  453. package/lib/css/index.css.map +0 -1
  454. package/lib/css/input.css +0 -214
  455. package/lib/css/reset.css +0 -140
  456. package/lib/css/tokens.css +0 -13
  457. package/lib/css/utilities.css +0 -1973
  458. package/lib/es/components/affix/affix.js.map +0 -1
  459. package/lib/es/components/affix/index.js.map +0 -1
  460. package/lib/es/components/affix/totop.js.map +0 -1
  461. package/lib/es/components/badge/badge.js.map +0 -1
  462. package/lib/es/components/badge/index.js.map +0 -1
  463. package/lib/es/components/button/button.js.map +0 -1
  464. package/lib/es/components/button/confirm.js.map +0 -1
  465. package/lib/es/components/button/group.js.map +0 -1
  466. package/lib/es/components/button/index.js.map +0 -1
  467. package/lib/es/components/button/toggle.js.map +0 -1
  468. package/lib/es/components/card/card.js.map +0 -1
  469. package/lib/es/components/card/index.js.map +0 -1
  470. package/lib/es/components/checkbox/checkbox.js.map +0 -1
  471. package/lib/es/components/checkbox/index.js.map +0 -1
  472. package/lib/es/components/checkbox/item.js.map +0 -1
  473. package/lib/es/components/collapse/collapse.js.map +0 -1
  474. package/lib/es/components/collapse/index.js.map +0 -1
  475. package/lib/es/components/collapse/item.js.map +0 -1
  476. package/lib/es/components/datagrid/cell.js.map +0 -1
  477. package/lib/es/components/datagrid/datagrid.js.map +0 -1
  478. package/lib/es/components/datagrid/helper.js.map +0 -1
  479. package/lib/es/components/datagrid/index.js.map +0 -1
  480. package/lib/es/components/datagrid/resize.js.map +0 -1
  481. package/lib/es/components/datagrid/row.js.map +0 -1
  482. package/lib/es/components/datagrid/sorter.js.map +0 -1
  483. package/lib/es/components/datagrid/virtual.js.map +0 -1
  484. package/lib/es/components/description/description.js.map +0 -1
  485. package/lib/es/components/description/index.js.map +0 -1
  486. package/lib/es/components/drawer/drawer.js.map +0 -1
  487. package/lib/es/components/drawer/index.js.map +0 -1
  488. package/lib/es/components/dropdown/dropdown.js.map +0 -1
  489. package/lib/es/components/dropdown/index.js.map +0 -1
  490. package/lib/es/components/dropdown/item.js.map +0 -1
  491. package/lib/es/components/editor/controls.js.map +0 -1
  492. package/lib/es/components/editor/editor.js.map +0 -1
  493. package/lib/es/components/editor/index.js.map +0 -1
  494. package/lib/es/components/editor/memtion.js.map +0 -1
  495. package/lib/es/components/flex/flex.js.map +0 -1
  496. package/lib/es/components/flex/index.js.map +0 -1
  497. package/lib/es/components/form/context.js.map +0 -1
  498. package/lib/es/components/form/field.js.map +0 -1
  499. package/lib/es/components/form/form.js.map +0 -1
  500. package/lib/es/components/form/index.js.map +0 -1
  501. package/lib/es/components/form/useConfig.js.map +0 -1
  502. package/lib/es/components/form/useForm.js.map +0 -1
  503. package/lib/es/components/form/utils.js.map +0 -1
  504. package/lib/es/components/icon/icon.js.map +0 -1
  505. package/lib/es/components/icon/index.js.map +0 -1
  506. package/lib/es/components/image/image.js.map +0 -1
  507. package/lib/es/components/image/index.js.map +0 -1
  508. package/lib/es/components/image/list.js.map +0 -1
  509. package/lib/es/components/input/container.js.map +0 -1
  510. package/lib/es/components/input/index.js.map +0 -1
  511. package/lib/es/components/input/input.js.map +0 -1
  512. package/lib/es/components/input/number.js.map +0 -1
  513. package/lib/es/components/input/range.js.map +0 -1
  514. package/lib/es/components/input/textarea.js.map +0 -1
  515. package/lib/es/components/list/index.js.map +0 -1
  516. package/lib/es/components/list/item.js.map +0 -1
  517. package/lib/es/components/list/list.js.map +0 -1
  518. package/lib/es/components/loading/index.js.map +0 -1
  519. package/lib/es/components/loading/loading.js.map +0 -1
  520. package/lib/es/components/message/index.js.map +0 -1
  521. package/lib/es/components/message/message.js.map +0 -1
  522. package/lib/es/components/modal/content.js.map +0 -1
  523. package/lib/es/components/modal/context.js.map +0 -1
  524. package/lib/es/components/modal/hookModal.js.map +0 -1
  525. package/lib/es/components/modal/index.js.map +0 -1
  526. package/lib/es/components/modal/modal.js.map +0 -1
  527. package/lib/es/components/modal/modalManager.js.map +0 -1
  528. package/lib/es/components/modal/useModal.js.map +0 -1
  529. package/lib/es/components/pagination/index.js.map +0 -1
  530. package/lib/es/components/pagination/page.js.map +0 -1
  531. package/lib/es/components/pagination/pagination.js.map +0 -1
  532. package/lib/es/components/picker/colors/footer.js.map +0 -1
  533. package/lib/es/components/picker/colors/handle.js.map +0 -1
  534. package/lib/es/components/picker/colors/index.js.map +0 -1
  535. package/lib/es/components/picker/daterange/daterange.js.map +0 -1
  536. package/lib/es/components/picker/daterange/index.js.map +0 -1
  537. package/lib/es/components/picker/daterange/panel.js.map +0 -1
  538. package/lib/es/components/picker/dates/dates.js.map +0 -1
  539. package/lib/es/components/picker/dates/index.js.map +0 -1
  540. package/lib/es/components/picker/dates/panel.js.map +0 -1
  541. package/lib/es/components/picker/time/index.js.map +0 -1
  542. package/lib/es/components/picker/time/item.js.map +0 -1
  543. package/lib/es/components/picker/time/panel.js.map +0 -1
  544. package/lib/es/components/popconfirm/index.js.map +0 -1
  545. package/lib/es/components/popconfirm/popconfirm.js.map +0 -1
  546. package/lib/es/components/popup/content.js.map +0 -1
  547. package/lib/es/components/popup/index.js.map +0 -1
  548. package/lib/es/components/popup/popup.js.map +0 -1
  549. package/lib/es/components/progress/circle.js.map +0 -1
  550. package/lib/es/components/progress/index.js.map +0 -1
  551. package/lib/es/components/progress/line.js.map +0 -1
  552. package/lib/es/components/progress/progress.js.map +0 -1
  553. package/lib/es/components/radio/index.js.map +0 -1
  554. package/lib/es/components/radio/item.js.map +0 -1
  555. package/lib/es/components/radio/radio.js.map +0 -1
  556. package/lib/es/components/resizable/index.js.map +0 -1
  557. package/lib/es/components/resizable/resizable.js.map +0 -1
  558. package/lib/es/components/river/index.js.map +0 -1
  559. package/lib/es/components/river/river.js.map +0 -1
  560. package/lib/es/components/scroll/index.js.map +0 -1
  561. package/lib/es/components/scroll/scroll.js.map +0 -1
  562. package/lib/es/components/select/index.js.map +0 -1
  563. package/lib/es/components/select/options.js.map +0 -1
  564. package/lib/es/components/select/select.js.map +0 -1
  565. package/lib/es/components/step/divider.js.map +0 -1
  566. package/lib/es/components/step/index.js.map +0 -1
  567. package/lib/es/components/step/item.js.map +0 -1
  568. package/lib/es/components/step/step.js.map +0 -1
  569. package/lib/es/components/swiper/index.js.map +0 -1
  570. package/lib/es/components/swiper/item.js.map +0 -1
  571. package/lib/es/components/swiper/swiper.js.map +0 -1
  572. package/lib/es/components/tabs/contents.js.map +0 -1
  573. package/lib/es/components/tabs/helper.js.map +0 -1
  574. package/lib/es/components/tabs/index.js.map +0 -1
  575. package/lib/es/components/tabs/item.js.map +0 -1
  576. package/lib/es/components/tabs/navs.js.map +0 -1
  577. package/lib/es/components/tabs/tabs.js.map +0 -1
  578. package/lib/es/components/tag/index.js.map +0 -1
  579. package/lib/es/components/tag/tag.js.map +0 -1
  580. package/lib/es/components/text/highlight.js.map +0 -1
  581. package/lib/es/components/text/index.js.map +0 -1
  582. package/lib/es/components/text/number.js.map +0 -1
  583. package/lib/es/components/text/text.js.map +0 -1
  584. package/lib/es/components/text/time.js.map +0 -1
  585. package/lib/es/components/tree/index.js.map +0 -1
  586. package/lib/es/components/tree/item.js.map +0 -1
  587. package/lib/es/components/tree/tree.js.map +0 -1
  588. package/lib/es/components/upload/dropbox.js.map +0 -1
  589. package/lib/es/components/upload/index.js.map +0 -1
  590. package/lib/es/components/upload/renderFile.js.map +0 -1
  591. package/lib/es/components/upload/upload.js.map +0 -1
  592. package/lib/es/components/utils/empty/index.js.map +0 -1
  593. package/lib/es/components/utils/helpericon/helpericon.js.map +0 -1
  594. package/lib/es/components/utils/helpericon/index.js.map +0 -1
  595. package/lib/es/components/video/index.js.map +0 -1
  596. package/lib/es/components/video/video.js.map +0 -1
  597. package/lib/es/index.js.map +0 -1
  598. package/lib/es/js/hooks.js.map +0 -1
  599. package/lib/es/js/usePreview/content.js.map +0 -1
  600. package/lib/es/js/usePreview/index.js.map +0 -1
  601. package/lib/es/js/usePreview/renderFile.js.map +0 -1
  602. package/lib/es/js/usePreview/type.js.map +0 -1
  603. package/lib/es/js/useRipple/index.js.map +0 -1
  604. package/lib/es/js/useTheme/index.js.map +0 -1
  605. package/lib/es/js/utils.js.map +0 -1
package/lib/index.js CHANGED
@@ -5,7 +5,7 @@ import { useState, useRef, useEffect, useCallback, useMemo, Children, cloneEleme
5
5
  import { SkipPreviousRound, CloseRound, MinusRound, PlusRound, InboxTwotone, UndoRound, RedoRound, FormatBoldRound, FormatItalicRound, FormatUnderlinedRound, StrikethroughSRound, ClearAllRound, PlayArrowRound, PauseRound, StopRound, VolumeDownRound, VolumeOffRound, FullscreenRound, FullscreenExitRound, FeedOutlined, AspectRatioRound, OpenInNewRound, FileDownloadOutlined, RotateRightRound, RotateLeftRound, KeyboardArrowLeftRound, KeyboardArrowRightRound, KeyboardDoubleArrowUpRound, SyncAltRound, VisibilityRound, VisibilityOffRound, MoreHorizRound, SearchRound, CheckRound, UnfoldMoreRound, CalendarMonthTwotone, AccessTimeRound, KeyboardArrowDownRound, MoveToInboxTwotone, OutboxTwotone, FilePresentOutlined, DriveFolderUploadOutlined } from '@ricons/material';
6
6
  import { createRoot } from 'react-dom/client';
7
7
  import { getScrollbarSize, List as List$2 } from 'react-window';
8
- import { createPortal } from 'react-dom';
8
+ import { createPortal, flushSync } from 'react-dom';
9
9
  import xss from 'xss';
10
10
  import { renderToStaticMarkup } from 'react-dom/server';
11
11
  import PubSub from 'pubsub-js';
@@ -1186,7 +1186,7 @@ function Row(props) {
1186
1186
  }, [data, onRowClick, row]);
1187
1187
  return (jsx("div", { className: 'i-datagrid-row', onClick: handleRowClick, children: columns.map((col, i) => (jsx(Cell, { column: col, col: i, row: row, data: data, cellEllipsis: cellEllipsis, onCellClick: onCellClick, onCellDoubleClick: onCellDoubleClick }, i))) }));
1188
1188
  }
1189
- function Header$1(props) {
1189
+ function Header(props) {
1190
1190
  const { columns, resizable, cellEllipsis, sortBy, sortType, onWidthChange, onHeaderClick, } = props;
1191
1191
  const columnById = useMemo(() => {
1192
1192
  const map = new Map();
@@ -1216,6 +1216,84 @@ function Header$1(props) {
1216
1216
  }) }));
1217
1217
  }
1218
1218
 
1219
+ const VirtualCell = memo(function VirtualCell({ column, data, row, col, isHeader, cellEllipsis, sortBy, sortType, resizable, onWidthChange, }) {
1220
+ const { id, fixed, justify, colSpan, render, title, sorter, renderHeader } = column;
1221
+ const style = useMemo(() => ({
1222
+ "--datagrid-justify": justify,
1223
+ gridColumn: `${col + 1} / span ${colSpan ?? 1}`,
1224
+ insetInline: `var(--datagrid-cell-inset-${col})`,
1225
+ ...(isHeader ? { insetBlockStart: 0 } : null),
1226
+ position: !isHeader && !fixed ? "static" : undefined,
1227
+ }), [col, colSpan, fixed, isHeader, justify]);
1228
+ const order = isHeader && sortBy === id ? sortType : "";
1229
+ return (jsxs("div", { "data-col": id, className: classNames("i-datagrid-cell", {
1230
+ [`i-datagrid-cell-fixed-${fixed}`]: fixed,
1231
+ "i-datagrid-has-sorter": isHeader && sorter,
1232
+ }), style: style, children: [isHeader
1233
+ ? (renderHeader?.(column, col) ?? (jsx("div", { className: classNames("i-datagrid-cell-content", {
1234
+ "i-datagrid-cell-content-ellipsis": cellEllipsis,
1235
+ }), children: title || id })))
1236
+ : (render?.(data?.[id], data, row, col) ?? (jsx("div", { className: classNames("i-datagrid-cell-content", {
1237
+ "i-datagrid-cell-content-ellipsis": cellEllipsis,
1238
+ }), children: data?.[id] }))), isHeader && sorter && jsx(Sorter, { type: order }), isHeader && resizable && (jsx(Resize, { index: col, onWidthChange: onWidthChange }))] }));
1239
+ });
1240
+ // ---------------------------------------------------------------------------
1241
+ // VirtualRow — memoised row rendered by react-window
1242
+ // ---------------------------------------------------------------------------
1243
+ const VirtualRow = memo(function VirtualRow({ index, style: itemStyle, ariaAttributes, rows, columns, columnById, columnIndexById, contentWidthPx, virtualRowHeight, header, striped, cellEllipsis, loaderNode, sortBy, sortType, resizable, onWidthChange, onRowClick, onCellClick, onCellDoubleClick, }) {
1244
+ if (index >= rows.length) {
1245
+ return (jsx("div", { ...ariaAttributes, style: {
1246
+ ...itemStyle,
1247
+ width: contentWidthPx,
1248
+ minWidth: "100%",
1249
+ display: "flex",
1250
+ alignItems: "center",
1251
+ justifyContent: "center",
1252
+ }, children: loaderNode }));
1253
+ }
1254
+ const rowData = rows[index];
1255
+ const rowNum = index + (header ? 1 : 0);
1256
+ const bg = striped && index % 2 === 0 ? "var(--background-1)" : undefined;
1257
+ const handleCellClick = useCallback((e) => {
1258
+ if (!onCellClick)
1259
+ return;
1260
+ const el = e.target?.closest?.(".i-datagrid-cell[data-col]");
1261
+ const id = el?.dataset?.col;
1262
+ if (!id)
1263
+ return;
1264
+ const column = columnById.get(id);
1265
+ const col = columnIndexById.get(id);
1266
+ if (!column || col == null)
1267
+ return;
1268
+ onCellClick(rowData, column, rowNum, col, e);
1269
+ }, [columnById, columnIndexById, onCellClick, rowData, rowNum]);
1270
+ const handleCellDoubleClick = useCallback((e) => {
1271
+ if (!onCellDoubleClick)
1272
+ return;
1273
+ const el = e.target?.closest?.(".i-datagrid-cell[data-col]");
1274
+ const id = el?.dataset?.col;
1275
+ if (!id)
1276
+ return;
1277
+ const column = columnById.get(id);
1278
+ const col = columnIndexById.get(id);
1279
+ if (!column || col == null)
1280
+ return;
1281
+ onCellDoubleClick(rowData, column, rowNum, col, e);
1282
+ }, [columnById, columnIndexById, onCellDoubleClick, rowData, rowNum]);
1283
+ const handleRowClick = useCallback(() => onRowClick?.(rowData, rowNum), [onRowClick, rowData, rowNum]);
1284
+ return (jsx("div", { style: {
1285
+ ...itemStyle,
1286
+ width: contentWidthPx,
1287
+ minWidth: "100%",
1288
+ display: "grid",
1289
+ gridTemplateColumns: "var(--grid-template-columns)",
1290
+ height: virtualRowHeight,
1291
+ "--datagrid-cell-background": bg,
1292
+ }, className: 'i-datagrid-row', onClick: handleRowClick, onClickCapture: handleCellClick, onDoubleClickCapture: handleCellDoubleClick, children: columns.map((c, col) => (jsx(VirtualCell, { column: c, data: rowData, row: rowNum, col: col, cellEllipsis: cellEllipsis, sortBy: sortBy, sortType: sortType, resizable: resizable, onWidthChange: onWidthChange }, c.id))) }));
1293
+ });
1294
+ // ---------------------------------------------------------------------------
1295
+ // VirtualDatagrid
1296
+ // ---------------------------------------------------------------------------
1219
1297
  function VirtualDatagrid(props) {
1220
1298
  const { virtual, columns, rows, header, sortBy, sortType, height, loading, resizable, striped, cellEllipsis, empty, wrapRef, containerRef, onHeaderClick, onWidthChange, onRowClick, onCellClick, onCellDoubleClick, onScroll, } = props;
1221
1299
  const headerRef = useRef(null);
@@ -1228,6 +1306,7 @@ function VirtualDatagrid(props) {
1228
1306
  const rafRef = useRef({
1229
1307
  viewport: 0,
1230
1308
  contentWidth: 0,
1309
+ scrollSync: 0,
1231
1310
  });
1232
1311
  const columnById = useMemo(() => {
1233
1312
  const map = new Map();
@@ -1239,38 +1318,6 @@ function VirtualDatagrid(props) {
1239
1318
  columns.forEach((c, i) => map.set(c.id, i));
1240
1319
  return map;
1241
1320
  }, [columns]);
1242
- const getVirtualCellStyle = useCallback(({ justify, col, colSpan = 1, }) => {
1243
- return {
1244
- "--datagrid-justify": justify,
1245
- gridColumn: `${col + 1} / span ${colSpan}`,
1246
- insetInline: `var(--datagrid-cell-inset-${col})`,
1247
- };
1248
- }, []);
1249
- const renderVirtualCell = useCallback(({ column, data, row, col, isHeader, }) => {
1250
- const { id, fixed, justify, colSpan, render, title, sorter, renderHeader, } = column;
1251
- const style = {
1252
- ...getVirtualCellStyle({ justify, col, colSpan }),
1253
- ...(isHeader ? { insetBlockStart: 0 } : null),
1254
- };
1255
- const order = isHeader && sortBy === id ? sortType : "";
1256
- return (jsxs("div", { "data-col": id, className: classNames("i-datagrid-cell", {
1257
- [`i-datagrid-cell-fixed-${fixed}`]: fixed,
1258
- "i-datagrid-has-sorter": isHeader && sorter,
1259
- }), style: style, children: [isHeader
1260
- ? (renderHeader?.(column, col) ?? (jsx("div", { className: classNames("i-datagrid-cell-content", {
1261
- "i-datagrid-cell-content-ellipsis": cellEllipsis,
1262
- }), children: title || id })))
1263
- : (render?.(data?.[id], data, row, col) ?? (jsx("div", { className: classNames("i-datagrid-cell-content", {
1264
- "i-datagrid-cell-content-ellipsis": cellEllipsis,
1265
- }), children: data?.[id] }))), isHeader && sorter && jsx(Sorter, { type: order }), isHeader && resizable && (jsx(Resize, { index: col, onWidthChange: onWidthChange }))] }, id));
1266
- }, [
1267
- cellEllipsis,
1268
- getVirtualCellStyle,
1269
- onWidthChange,
1270
- resizable,
1271
- sortBy,
1272
- sortType,
1273
- ]);
1274
1321
  const handleHeaderClick = useCallback((e) => {
1275
1322
  const el = e.target?.closest?.(".i-datagrid-cell[data-col]");
1276
1323
  const id = el?.dataset?.col;
@@ -1280,10 +1327,17 @@ function VirtualDatagrid(props) {
1280
1327
  const el = e.currentTarget;
1281
1328
  if (!el)
1282
1329
  return;
1283
- if (headerRef.current &&
1284
- headerRef.current.scrollLeft !== el.scrollLeft) {
1285
- headerRef.current.scrollLeft = el.scrollLeft;
1286
- }
1330
+ if (rafRef.current.scrollSync)
1331
+ return;
1332
+ rafRef.current.scrollSync = requestAnimationFrame(() => {
1333
+ rafRef.current.scrollSync = 0;
1334
+ if (!headerRef.current)
1335
+ return;
1336
+ const target = el.scrollLeft;
1337
+ if (headerRef.current.scrollLeft !== target) {
1338
+ headerRef.current.scrollLeft = target;
1339
+ }
1340
+ });
1287
1341
  }, []);
1288
1342
  const handleReachEnd = useCallback(() => {
1289
1343
  if (virtual.onReachEnd) {
@@ -1313,32 +1367,6 @@ function VirtualDatagrid(props) {
1313
1367
  listEl.scrollLeft = el.scrollLeft;
1314
1368
  }
1315
1369
  }, []);
1316
- const handleBodyClickCapture = useCallback((e, rowData, rowNum) => {
1317
- if (!onCellClick)
1318
- return;
1319
- const el = e.target?.closest?.(".i-datagrid-cell[data-col]");
1320
- const id = el?.dataset?.col;
1321
- if (!id)
1322
- return;
1323
- const column = columnById.get(id);
1324
- const col = columnIndexById.get(id);
1325
- if (!column || col == null)
1326
- return;
1327
- onCellClick(rowData, column, rowNum, col, e);
1328
- }, [columnById, columnIndexById, onCellClick]);
1329
- const handleBodyDoubleClickCapture = useCallback((e, rowData, rowNum) => {
1330
- if (!onCellDoubleClick)
1331
- return;
1332
- const el = e.target?.closest?.(".i-datagrid-cell[data-col]");
1333
- const id = el?.dataset?.col;
1334
- if (!id)
1335
- return;
1336
- const column = columnById.get(id);
1337
- const col = columnIndexById.get(id);
1338
- if (!column || col == null)
1339
- return;
1340
- onCellDoubleClick(rowData, column, rowNum, col, e);
1341
- }, [columnById, columnIndexById, onCellDoubleClick]);
1342
1370
  useEffect(() => {
1343
1371
  const el = wrapRef.current;
1344
1372
  if (!el)
@@ -1409,12 +1437,14 @@ function VirtualDatagrid(props) {
1409
1437
  const contentWidthPx = measuredContentWidth
1410
1438
  ? `${measuredContentWidth}px`
1411
1439
  : "fit-content";
1412
- const headerCells = useMemo(() => columns.map((c, col) => renderVirtualCell({
1413
- column: c,
1414
- row: 0,
1415
- col,
1416
- isHeader: true,
1417
- })), [columns, renderVirtualCell]);
1440
+ const headerCells = useMemo(() => columns.map((c, col) => (jsx(VirtualCell, { column: c, row: 0, col: col, isHeader: true, cellEllipsis: cellEllipsis, sortBy: sortBy, sortType: sortType, resizable: resizable, onWidthChange: onWidthChange }, c.id))), [
1441
+ cellEllipsis,
1442
+ columns,
1443
+ onWidthChange,
1444
+ resizable,
1445
+ sortBy,
1446
+ sortType,
1447
+ ]);
1418
1448
  const headerInnerStyle = useMemo(() => ({
1419
1449
  display: "grid",
1420
1450
  gridTemplateColumns: "var(--grid-template-columns)",
@@ -1434,50 +1464,47 @@ function VirtualDatagrid(props) {
1434
1464
  }
1435
1465
  : undefined, [scrollbarSize]);
1436
1466
  const loaderNode = useMemo(() => virtual.loader ?? jsx(Loading, { className: 'my-12' }), [virtual.loader]);
1437
- const rowComponent = useCallback(({ index, style: itemStyle }) => {
1438
- if (index >= rows.length) {
1439
- return (jsx("div", { style: {
1440
- ...itemStyle,
1441
- width: contentWidthPx,
1442
- minWidth: "100%",
1443
- display: "flex",
1444
- alignItems: "center",
1445
- justifyContent: "center",
1446
- }, children: loaderNode }));
1447
- }
1448
- const rowData = rows[index];
1449
- const rowNum = index + (header ? 1 : 0);
1450
- const bg = striped && index % 2 === 0 ? "var(--background-1)" : undefined;
1451
- return (jsx("div", { style: {
1452
- ...itemStyle,
1453
- width: contentWidthPx,
1454
- minWidth: "100%",
1455
- display: "grid",
1456
- gridTemplateColumns: "var(--grid-template-columns)",
1457
- height: virtual.rowHeight,
1458
- "--datagrid-cell-background": bg,
1459
- }, className: 'i-datagrid-row', onClickCapture: (e) => handleBodyClickCapture(e, rowData, rowNum), onDoubleClickCapture: (e) => handleBodyDoubleClickCapture(e, rowData, rowNum), onClick: () => onRowClick?.(rowData, rowNum), children: columns.map((c, col) => renderVirtualCell({
1460
- column: c,
1461
- data: rowData,
1462
- row: rowNum,
1463
- col,
1464
- })) }));
1465
- }, [
1467
+ // Stable row-component reference so react-window can memoise rows.
1468
+ const rowProps = useMemo(() => ({
1469
+ rows,
1466
1470
  columns,
1471
+ columnById,
1472
+ columnIndexById,
1467
1473
  contentWidthPx,
1468
- handleBodyClickCapture,
1469
- handleBodyDoubleClickCapture,
1474
+ virtualRowHeight: virtual.rowHeight,
1470
1475
  header,
1476
+ striped,
1477
+ cellEllipsis,
1471
1478
  loaderNode,
1479
+ sortBy,
1480
+ sortType,
1481
+ resizable,
1482
+ onWidthChange,
1472
1483
  onRowClick,
1473
- renderVirtualCell,
1484
+ onCellClick,
1485
+ onCellDoubleClick,
1486
+ }), [
1474
1487
  rows,
1475
- striped,
1488
+ columns,
1489
+ columnById,
1490
+ columnIndexById,
1491
+ contentWidthPx,
1476
1492
  virtual.rowHeight,
1493
+ header,
1494
+ striped,
1495
+ cellEllipsis,
1496
+ loaderNode,
1497
+ sortBy,
1498
+ sortType,
1499
+ resizable,
1500
+ onWidthChange,
1501
+ onRowClick,
1502
+ onCellClick,
1503
+ onCellDoubleClick,
1477
1504
  ]);
1478
1505
  return (jsxs("div", { ref: containerRef, className: classNames("i-datagrid", {
1479
1506
  "i-datagrid-loading": loading,
1480
- }), style: { display: "block", width: "100%", maxWidth: "100%" }, children: [header && (jsx("div", { ref: headerRef, className: 'i-datagrid-virtual-header', onScroll: handleHeaderScroll, style: headerWrapStyle, children: jsx("div", { ref: headerInnerRef, className: 'i-datagrid-header i-datagrid-row', style: headerInnerStyle, onClick: handleHeaderClick, children: headerCells }) })), jsx(List$2, { listRef: listRef, rowCount: rows.length + (virtual.hasMore ? 1 : 0), rowHeight: virtual.rowHeight, overscanCount: Math.max(3, virtual.threshold ?? 8), rowProps: {}, style: listStyle, onScroll: handleBodyScroll, onRowsRendered: handleRowsRendered, rowComponent: rowComponent }), rows.length < 1 && !virtual.hasMore && empty] }));
1507
+ }), style: { display: "block", width: "100%", maxWidth: "100%" }, children: [header && (jsx("div", { ref: headerRef, className: 'i-datagrid-virtual-header', onScroll: handleHeaderScroll, style: headerWrapStyle, children: jsx("div", { ref: headerInnerRef, className: 'i-datagrid-header i-datagrid-row', style: headerInnerStyle, onClick: handleHeaderClick, children: headerCells }) })), jsx(List$2, { listRef: listRef, rowCount: rows.length + (virtual.hasMore ? 1 : 0), rowHeight: virtual.rowHeight, overscanCount: Math.max(3, virtual.threshold ?? 8), rowProps: rowProps, style: listStyle, onScroll: handleBodyScroll, onRowsRendered: handleRowsRendered, rowComponent: VirtualRow }), rows.length < 1 && !virtual.hasMore && empty] }));
1481
1508
  }
1482
1509
 
1483
1510
  const Datagrid = (props) => {
@@ -1675,7 +1702,7 @@ const Datagrid = (props) => {
1675
1702
  "i-datagrid-striped": striped,
1676
1703
  }), children: [useVirtual && virtual ? (jsx(VirtualDatagrid, { virtual: virtual, columns: columns, rows: rows, header: header, sortBy: state.sortBy, sortType: state.sortType, height: height, loading: loading, resizable: resizable, striped: striped, cellEllipsis: cellEllipsis, empty: empty, wrapRef: wrapRef, containerRef: container, getRowKey: getRowKey, onHeaderClick: handleHeaderClick, onWidthChange: handleWidthChange, onRowClick: onRowClick, onCellClick: onCellClick, onCellDoubleClick: onCellDoubleClick, onScroll: onScroll })) : (jsxs("div", { ref: container, className: classNames("i-datagrid", {
1677
1704
  "i-datagrid-loading": loading,
1678
- }), onWheel: onScroll, children: [header && (jsx(Header$1, { columns: columns, resizable: resizable, sortType: state.sortType, sortBy: state.sortBy, cellEllipsis: cellEllipsis, onWidthChange: handleWidthChange, onHeaderClick: handleHeaderClick })), rows.map((row, i) => (jsx(Row, { row: i + (header ? 1 : 0), data: row, cellEllipsis: cellEllipsis, columns: columns, onCellClick: onCellClick, onRowClick: onRowClick, onCellDoubleClick: onCellDoubleClick }, getRowKey(row, i) ?? i))), rows.length < 1 && empty] })), loading && renderLoading()] }));
1705
+ }), onWheel: onScroll, children: [header && (jsx(Header, { columns: columns, resizable: resizable, sortType: state.sortType, sortBy: state.sortBy, cellEllipsis: cellEllipsis, onWidthChange: handleWidthChange, onHeaderClick: handleHeaderClick })), rows.map((row, i) => (jsx(Row, { row: i + (header ? 1 : 0), data: row, cellEllipsis: cellEllipsis, columns: columns, onCellClick: onCellClick, onRowClick: onRowClick, onCellDoubleClick: onCellDoubleClick }, getRowKey(row, i) ?? i))), rows.length < 1 && empty] })), loading && renderLoading()] }));
1679
1706
  };
1680
1707
 
1681
1708
  const Description = (props) => {
@@ -3142,7 +3169,7 @@ class IFormInstance {
3142
3169
  const { id, rules, data } = this;
3143
3170
  if (!rules)
3144
3171
  return data;
3145
- const names = field ? [field] : Object.keys(this.cacheData);
3172
+ const names = field ? [field] : [...new Set([...Object.keys(this.cacheData), ...Object.keys(rules)])];
3146
3173
  let isAllValid = true;
3147
3174
  names.forEach((name) => {
3148
3175
  const o = rules[name];
@@ -3894,7 +3921,7 @@ function renderFile(props) {
3894
3921
  }
3895
3922
 
3896
3923
  function Content(props) {
3897
- const { items = [], initial = 0, renderFile: renderFile$1 = renderFile, onRotate, onChange, onClose, onZoom, } = props;
3924
+ const { items = [], initial = 0, hideControl, renderFile: renderFile$1 = renderFile, onRotate, onChange, onClose, onZoom, } = props;
3898
3925
  const state = useReactive({
3899
3926
  current: initial,
3900
3927
  rotate: 0,
@@ -4030,9 +4057,9 @@ function Content(props) {
4030
4057
  transform: `translate(${state.translate
4031
4058
  .map((n) => `${n}px`)
4032
4059
  .join(",")}) rotate(${state.rotate}deg) scale(${state.scale})`,
4033
- }, onMouseDown: handleMouseDown, onClick: (e) => e.stopPropagation(), children: content }), jsxs("div", { className: classNames("i-preview-controls", {
4060
+ }, onMouseDown: handleMouseDown, onClick: (e) => e.stopPropagation(), children: content }), !hideControl && (jsxs("div", { className: classNames("i-preview-controls", {
4034
4061
  "i-preview-controls-hidden": state.controlHidden,
4035
- }), children: [jsx(Button, { square: true, flat: true, onClick: onClose, children: jsx(Icon, { icon: jsx(CloseRound, {}) }) }), files.length > 1 && (jsxs("span", { className: 'px-8', children: [state.current + 1, " / ", files.length] })), state.scale !== 1 && (jsxs(Button, { flat: true, onClick: () => (state.scale = 1), children: [jsx(Icon, { icon: jsx(AspectRatioRound, {}) }), jsxs("span", { className: 'mt-2', children: [(state.scale * 100).toFixed(0), "%"] })] })), jsx(Button, { square: true, flat: true, href: file.src, target: '_blank', children: jsx(Icon, { icon: jsx(OpenInNewRound, {}) }) }), jsx(Button, { square: true, flat: true, href: file.src, download: true, target: '_blank', children: jsx(Icon, { icon: jsx(FileDownloadOutlined, {}) }) }), jsx(Button, { square: true, flat: true, onClick: () => handleRotate(90), children: jsx(Icon, { icon: jsx(RotateRightRound, {}) }) }), jsx(Button, { square: true, flat: true, onClick: () => handleRotate(-90), children: jsx(Icon, { icon: jsx(RotateLeftRound, {}) }) }), files.length > 1 && (jsxs(Fragment, { children: [jsx(Button, { square: true, flat: true, onClick: () => handleSwitch(state.current - 1), children: jsx(Icon, { icon: jsx(KeyboardArrowLeftRound, {}) }) }), jsx(Button, { square: true, flat: true, onClick: () => handleSwitch(state.current + 1), children: jsx(Icon, { icon: jsx(KeyboardArrowRightRound, {}) }) })] }))] })] }));
4062
+ }), children: [jsx(Button, { square: true, flat: true, onClick: onClose, children: jsx(Icon, { icon: jsx(CloseRound, {}) }) }), files.length > 1 && (jsxs("span", { className: 'px-8', children: [state.current + 1, " / ", files.length] })), state.scale !== 1 && (jsxs(Button, { flat: true, onClick: () => (state.scale = 1), children: [jsx(Icon, { icon: jsx(AspectRatioRound, {}) }), jsxs("span", { className: 'mt-2', children: [(state.scale * 100).toFixed(0), "%"] })] })), jsx(Button, { square: true, flat: true, href: file.src, target: '_blank', children: jsx(Icon, { icon: jsx(OpenInNewRound, {}) }) }), jsx(Button, { square: true, flat: true, href: file.src, download: true, target: '_blank', children: jsx(Icon, { icon: jsx(FileDownloadOutlined, {}) }) }), jsx(Button, { square: true, flat: true, onClick: () => handleRotate(90), children: jsx(Icon, { icon: jsx(RotateRightRound, {}) }) }), jsx(Button, { square: true, flat: true, onClick: () => handleRotate(-90), children: jsx(Icon, { icon: jsx(RotateLeftRound, {}) }) }), files.length > 1 && (jsxs(Fragment, { children: [jsx(Button, { square: true, flat: true, onClick: () => handleSwitch(state.current - 1), children: jsx(Icon, { icon: jsx(KeyboardArrowLeftRound, {}) }) }), jsx(Button, { square: true, flat: true, onClick: () => handleSwitch(state.current + 1), children: jsx(Icon, { icon: jsx(KeyboardArrowRightRound, {}) }) })] }))] }))] }));
4036
4063
  }
4037
4064
 
4038
4065
  function usePreview() {
@@ -6052,11 +6079,8 @@ const Tabs = ((props) => {
6052
6079
  });
6053
6080
  sourceKeysRef.current = sourceKeys;
6054
6081
  contentsRef.current = nextContents;
6055
- const nextTabs = [
6056
- ...sourceTabs.filter((tab) => !hiddenSourceKeysRef.current.has(String(tab.key))),
6057
- ...dynamicTabs,
6058
- ];
6059
- setTabs((currentTabs) => isSameTabs(currentTabs, nextTabs) ? currentTabs : nextTabs);
6082
+ const nextTabs = [...sourceTabs.filter((tab) => !hiddenSourceKeysRef.current.has(String(tab.key))), ...dynamicTabs];
6083
+ setTabs((currentTabs) => (isSameTabs(currentTabs, nextTabs) ? currentTabs : nextTabs));
6060
6084
  }, [parsedTabs]);
6061
6085
  const add = (tab, position) => {
6062
6086
  const currentTabs = tabsRef.current;
@@ -6070,9 +6094,7 @@ const Tabs = ((props) => {
6070
6094
  const { content, ...rest } = tab;
6071
6095
  setTabs((ts) => {
6072
6096
  const nextTabs = [...ts];
6073
- const index = position === undefined
6074
- ? nextTabs.length
6075
- : Math.max(0, Math.min(position, nextTabs.length));
6097
+ const index = position === undefined ? nextTabs.length : Math.max(0, Math.min(position, nextTabs.length));
6076
6098
  nextTabs.splice(index, 0, { ...rest, key: tkey });
6077
6099
  return nextTabs;
6078
6100
  });
@@ -6154,8 +6176,7 @@ const Tabs = ((props) => {
6154
6176
  setTabs((ts) => {
6155
6177
  let changed = false;
6156
6178
  const next = ts.map((t) => {
6157
- if (t.intersecting === undefined ||
6158
- t.intersecting === true) {
6179
+ if (t.intersecting === undefined || t.intersecting === true) {
6159
6180
  return t;
6160
6181
  }
6161
6182
  changed = true;
@@ -6176,7 +6197,7 @@ const Tabs = ((props) => {
6176
6197
  return ts;
6177
6198
  if (ts[i]?.intersecting === visible)
6178
6199
  return ts;
6179
- return ts.map((t, idx) => idx === i ? { ...t, intersecting: visible } : t);
6200
+ return ts.map((t, idx) => (idx === i ? { ...t, intersecting: visible } : t));
6180
6201
  });
6181
6202
  });
6182
6203
  });
@@ -6201,10 +6222,9 @@ const Tabs = ((props) => {
6201
6222
  });
6202
6223
  }
6203
6224
  const { offsetHeight, offsetLeft, offsetTop, offsetWidth } = nav;
6204
- const isLine = type === "line";
6205
6225
  setBarStyle({
6206
- height: !vertical && isLine ? ".25em" : offsetHeight * 0.5,
6207
- width: vertical && isLine ? ".25em" : offsetWidth,
6226
+ height: offsetHeight * 0.5,
6227
+ width: offsetWidth,
6208
6228
  transform: `translate(${offsetLeft}px, ${offsetTop}px)`,
6209
6229
  });
6210
6230
  }, 16);
@@ -6246,39 +6266,14 @@ const Tabs = ((props) => {
6246
6266
  navs: navsRef,
6247
6267
  }));
6248
6268
  const cachedTabKeySet = useMemo(() => new Set(cachedTabs), [cachedTabs]);
6249
- const moreTabs = useMemo(() => !hideMore && overflow
6250
- ? tabs.filter((tab) => tab.intersecting === false)
6251
- : [], [hideMore, overflow, tabs]);
6269
+ const moreTabs = useMemo(() => (!hideMore && overflow ? tabs.filter((tab) => tab.intersecting === false) : []), [hideMore, overflow, tabs]);
6252
6270
  return (jsxs("div", { className: classNames("i-tabs", { flex: vertical, [`i-tabs-${type}`]: type !== "default" }, className), ...rest, children: [jsxs("div", { className: classNames("i-tab-navs-container", navsClass, {
6253
6271
  "i-tab-navs-vertical": vertical,
6254
6272
  }), children: [prepend, jsx(TabsNavs$1, { tabs: tabs, moreTabs: moreTabs, activeKey: activeKey, vertical: vertical, overflow: overflow, hideMore: hideMore, navsJustify: navsJustify, bar: bar, barClass: barClass, barStyle: barStyle, navsRef: navsRef, renderMore: renderMore, setNavRef: setNavRef, onOpen: open, onClose: close, onMoreTabClick: handleMoreTabClick, onKeyAction: handleKeyAction }), append] }), jsx(TabsContents$1, { tabs: tabs, activeKey: activeKey, cachedTabKeySet: cachedTabKeySet, getContent: getContent })] }));
6255
6273
  });
6256
6274
  Tabs.Item = Item;
6257
6275
 
6258
- function TreeList(props) {
6259
- const { data = [], depth = 0, round, style, className, parent, nodeProps, ...restProps } = props;
6260
- const contents = data.map((item, i) => {
6261
- const { type } = item;
6262
- const title = item[nodeProps.title];
6263
- const itemKey = item[nodeProps.key] ||
6264
- (parent?.key !== undefined ? `${parent.key}-${i}` : `${i}`);
6265
- item.key = itemKey;
6266
- item.parent = parent;
6267
- if (type === "title") {
6268
- return (jsx("div", { className: 'i-tree-group-title', children: title }, i));
6269
- }
6270
- if (type && type !== "item") {
6271
- return (jsx("div", { className: `i-tree-type-${type}`, children: title }, i));
6272
- }
6273
- return (jsx(TreeItem, { index: i, item: item, depth: depth, nodeProps: nodeProps, ...restProps }, itemKey));
6274
- });
6275
- if (depth > 0)
6276
- return jsx(Fragment, { children: contents });
6277
- return (jsx("div", { className: classNames("i-tree", className, {
6278
- "i-tree-round": round,
6279
- }), style: style, children: contents }));
6280
- }
6281
- const Header = (props) => {
6276
+ const TreeItemHeader = (props) => {
6282
6277
  const { as: Tag = "a", href, selected, children, ...restProps } = props;
6283
6278
  const className = classNames("i-tree-item-header", {
6284
6279
  "i-tree-item-selected": selected,
@@ -6288,50 +6283,166 @@ const Header = (props) => {
6288
6283
  }
6289
6284
  return (jsx(Tag, { to: href || "", className: className, ...restProps, children: children }));
6290
6285
  };
6291
- const TreeItem = (props) => {
6292
- const { item, depth = 0, index, selected, checked = [], partofs = {}, checkable, nodeProps, renderExtra, onItemClick, onItemSelect, onItemCheck, ...restProps } = props;
6293
- const { as, key = "", href, icon, title, expanded, disabled } = item;
6294
- const children = item[nodeProps.children];
6295
- const [expand, setExpand] = useState(expanded);
6296
- const handleExpand = (e, fromToggle) => {
6297
- if (fromToggle) {
6298
- e.preventDefault();
6299
- e.stopPropagation();
6300
- }
6301
- if (disabled || !children?.length)
6302
- return;
6303
- setExpand((v) => !v);
6304
- };
6305
- const handleItemClick = (e) => {
6306
- if (disabled) {
6307
- e.preventDefault();
6308
- e.stopPropagation();
6286
+ function TreeRow(props) {
6287
+ const { flatNode, wrapperStyle, virtualMode, selected, checkedSet, partofs = {}, checkable, nodeProps, renderExtra, loadingKeys, onExpand, onItemClick, onItemSelect, onItemCheck, } = props;
6288
+ const { node, depth, isExpanded } = flatNode;
6289
+ const { key = "", as, href, icon, title, disabled, type } = node;
6290
+ const children = node[nodeProps.children];
6291
+ const hasChildren = children instanceof Promise || (Array.isArray(children) && children.length > 0);
6292
+ const loading = loadingKeys?.includes(key);
6293
+ if (type === "title") {
6294
+ return jsx("div", { style: wrapperStyle, className: "i-tree-group-title", children: title });
6295
+ }
6296
+ if (type && type !== "item") {
6297
+ return jsx("div", { style: wrapperStyle, className: `i-tree-type-${type}`, children: title });
6298
+ }
6299
+ return (jsx("div", { className: !virtualMode ? classNames("i-tree-item", { "i-tree-expand": isExpanded }) : undefined, style: wrapperStyle, children: jsxs(TreeItemHeader, { as: as, href: href, style: { paddingLeft: `${depth * 1.5 + 0.5}em` }, selected: selected === key, onClick: (e) => {
6300
+ if (disabled) {
6301
+ e.preventDefault();
6302
+ e.stopPropagation();
6303
+ return;
6304
+ }
6305
+ if (hasChildren)
6306
+ onExpand(key);
6307
+ onItemClick?.(node, e);
6308
+ onItemSelect?.(key, node);
6309
+ }, children: [checkable && (jsx(Checkbox.Item, { value: checkedSet.has(key), partof: !checkedSet.has(key) && partofs[key], className: "i-tree-checkbox", onChange: () => onItemCheck?.(node, !checkedSet.has(key), []), onClick: (e) => e.stopPropagation() })), icon && jsx("span", { className: "i-tree-item-icon", children: icon }), jsx("span", { className: "i-tree-item-title", children: title }), renderExtra?.(node), hasChildren && (jsx(Icon, { icon: loading ? jsx(Loading, { size: ".86em" }) : jsx(KeyboardArrowDownRound, {}), className: classNames("i-tree-toggle", {
6310
+ "i-tree-expand": virtualMode ? isExpanded : false,
6311
+ }), onClick: (e) => {
6312
+ e.preventDefault();
6313
+ e.stopPropagation();
6314
+ onExpand(key);
6315
+ } }))] }) }));
6316
+ }
6317
+ function TreeList(props) {
6318
+ const { flatNodes, onExpand, selected, checkedSet, partofs = {}, checkable, nodeProps, renderExtra, loadingKeys, round, className, style, onItemClick, onItemSelect, onItemCheck } = props;
6319
+ return (jsx("div", { className: classNames("i-tree", className, {
6320
+ "i-tree-round": round,
6321
+ }), style: style, children: flatNodes.map((flatNode) => {
6322
+ const { key = "" } = flatNode.node;
6323
+ return (jsx(TreeRow, { flatNode: flatNode, selected: selected, checkedSet: checkedSet, partofs: partofs, checkable: checkable, nodeProps: nodeProps, renderExtra: renderExtra, loadingKeys: loadingKeys, onExpand: onExpand, onItemClick: onItemClick, onItemSelect: onItemSelect, onItemCheck: onItemCheck }, key));
6324
+ }) }));
6325
+ }
6326
+
6327
+ function VirtualTree(props) {
6328
+ const { flatNodes, onExpand, selected, checkedSet, partofs = {}, checkable, nodeProps, renderExtra, loadingKeys, height, useVirtual, className, style, onItemClick, onItemSelect, onItemCheck, } = props;
6329
+ const listRef = useRef(null);
6330
+ const wrapRef = useRef(null);
6331
+ const ro = useResizeObserver();
6332
+ const [viewportHeight, setViewportHeight] = useState(0);
6333
+ useEffect(() => {
6334
+ const el = wrapRef.current;
6335
+ if (!el)
6309
6336
  return;
6310
- }
6311
- handleExpand(e);
6312
- onItemClick?.(item, e);
6313
- onItemSelect?.(key, item);
6314
- };
6315
- const handleItemCheck = (checked) => onItemCheck?.(item, checked, []);
6316
- const itemChecked = checked.includes(key);
6317
- return (jsxs("div", { className: classNames("i-tree-item", {
6318
- "i-tree-expand": expand,
6319
- }), children: [jsxs(Header, { as: as, href: href, style: { paddingLeft: `${depth * 1.5 + 0.5}em` }, selected: selected === key, onClick: handleItemClick, children: [checkable && (jsx(Checkbox.Item, { value: itemChecked, partof: !itemChecked && partofs[key], className: 'i-tree-checkbox', onChange: handleItemCheck, onClick: (e) => e.stopPropagation() })), icon && jsx("span", { className: 'i-tree-item-icon', children: icon }), jsx("span", { className: 'i-tree-item-title', children: title }), renderExtra?.(item), children && (jsx(Icon, { icon: jsx(KeyboardArrowDownRound, {}), className: 'i-tree-toggle', onClick: (e) => handleExpand(e, true) }))] }), children?.length && (jsx("div", { className: 'i-tree-item-content', children: jsx(TreeList, { data: children, depth: depth + 1, selected: selected, checkable: checkable, parent: item, partofs: partofs, checked: checked, nodeProps: nodeProps, renderExtra: renderExtra, onItemClick: onItemClick, onItemSelect: onItemSelect, onItemCheck: onItemCheck, ...restProps }) }))] }));
6320
- };
6337
+ const update = () => {
6338
+ const r = el.getBoundingClientRect();
6339
+ setViewportHeight((prev) => (prev === r.height ? prev : r.height));
6340
+ };
6341
+ update();
6342
+ ro.observe?.(el, update);
6343
+ return () => ro.unobserve?.(el);
6344
+ }, [ro]);
6345
+ const listHeight = Math.max(0, (typeof height === "number" ? height : viewportHeight || 360));
6346
+ const propsRef = useRef(props);
6347
+ propsRef.current = props;
6348
+ const rowComponent = useCallback(({ index, style, }) => {
6349
+ const p = propsRef.current;
6350
+ const flatNode = p.flatNodes[index];
6351
+ if (!flatNode)
6352
+ return null;
6353
+ return (jsx(TreeRow, { flatNode: flatNode, wrapperStyle: style, virtualMode: true, selected: p.selected, checkedSet: p.checkedSet, partofs: p.partofs, checkable: p.checkable, nodeProps: p.nodeProps, renderExtra: p.renderExtra, loadingKeys: p.loadingKeys, onExpand: p.onExpand, onItemClick: p.onItemClick, onItemSelect: p.onItemSelect, onItemCheck: p.onItemCheck }));
6354
+ }, []);
6355
+ return (jsx("div", { ref: wrapRef, className: classNames("i-tree", className), style: { display: "block", width: "100%", height: "100%", ...style }, children: jsx(List$2, { listRef: listRef, rowCount: flatNodes.length, rowHeight: useVirtual.rowHeight, overscanCount: Math.max(3, useVirtual.threshold ?? 8), rowProps: {}, style: {
6356
+ width: "100%",
6357
+ height: listHeight,
6358
+ overflow: "auto",
6359
+ }, rowComponent: rowComponent }) }));
6360
+ }
6321
6361
 
6322
6362
  const defaultNodeProps = {
6323
6363
  key: "key",
6324
6364
  title: "title",
6325
6365
  children: "children",
6326
6366
  };
6367
+ function flattenTree(nodes, expandedMap, nodeProps, depth = 0, parentItem, asyncChildrenMap = {}) {
6368
+ const result = [];
6369
+ nodes.forEach((item, i) => {
6370
+ const mapKey = item[nodeProps.key];
6371
+ item.key = mapKey || `${parentItem?.key ?? ""}-${i}`;
6372
+ item.parent = parentItem;
6373
+ const isExpanded = !!expandedMap[item.key];
6374
+ result.push({ node: item, depth, isExpanded });
6375
+ const children = asyncChildrenMap[item.key] || item[nodeProps.children];
6376
+ if (Array.isArray(children) && children.length) {
6377
+ const childNodes = flattenTree(children, expandedMap, nodeProps, depth + 1, item, asyncChildrenMap);
6378
+ if (isExpanded)
6379
+ result.push(...childNodes);
6380
+ }
6381
+ });
6382
+ return result;
6383
+ }
6327
6384
  const Tree = (props) => {
6328
- const { data = [], ref, selected, checked = [], disabledRelated, nodeProps, onItemSelect, onItemCheck, ...restProps } = props;
6385
+ const { data = [], ref, selected, checked = [], disabledRelated, nodeProps, height, useVirtual, onItemSelect, onItemCheck, ...restProps } = props;
6329
6386
  const [selectedKey, setSelectedKey] = useState(selected);
6330
6387
  const [checkedKeys, setCheckedKeys] = useState(checked);
6331
6388
  const [partofs, setPartofs] = useState({});
6389
+ const [loadingMap, setLoadingMap] = useState({});
6390
+ const [asyncChildrenMap, setAsyncChildrenMap] = useState({});
6332
6391
  const nodeMapsRef = useRef(new Map());
6333
- const oNodeProps = Object.assign({}, defaultNodeProps, nodeProps);
6334
- const isChecked = (key) => checkedKeys.includes(key || "");
6392
+ const oNodeProps = useMemo(() => ({ ...defaultNodeProps, ...nodeProps }), [nodeProps]);
6393
+ const checkedSet = useMemo(() => new Set(checkedKeys), [checkedKeys]);
6394
+ const [expandedMap, setExpandedMap] = useState(() => {
6395
+ const map = {};
6396
+ const walk = (nodes, parentKey = "") => {
6397
+ nodes.forEach((item, i) => {
6398
+ const mapKey = item[oNodeProps.key];
6399
+ const key = mapKey || `${parentKey}-${i}`;
6400
+ if (item.expanded)
6401
+ map[key] = true;
6402
+ const children = item[oNodeProps.children];
6403
+ if (Array.isArray(children) && children.length)
6404
+ walk(children, key);
6405
+ });
6406
+ };
6407
+ walk(data);
6408
+ return map;
6409
+ });
6410
+ const handleExpand = (key) => {
6411
+ if (loadingMap[key])
6412
+ return;
6413
+ const item = nodeMapsRef.current.get(key);
6414
+ if (!item)
6415
+ return;
6416
+ const rawChildren = item[oNodeProps.children];
6417
+ const isAsync = rawChildren instanceof Promise;
6418
+ const isExpanded = !!expandedMap[key];
6419
+ if (isAsync && !isExpanded) {
6420
+ flushSync(() => {
6421
+ setLoadingMap((prev) => ({ ...prev, [key]: true }));
6422
+ setExpandedMap((prev) => ({ ...prev, [key]: true }));
6423
+ });
6424
+ rawChildren
6425
+ .then((resolved) => {
6426
+ item[oNodeProps.children] = resolved;
6427
+ setAsyncChildrenMap((prev) => ({ ...prev, [key]: resolved }));
6428
+ })
6429
+ .finally(() => {
6430
+ setLoadingMap((prev) => {
6431
+ const next = { ...prev };
6432
+ delete next[key];
6433
+ return next;
6434
+ });
6435
+ });
6436
+ }
6437
+ else {
6438
+ setExpandedMap((prev) => ({
6439
+ ...prev,
6440
+ [key]: !prev[key],
6441
+ }));
6442
+ }
6443
+ };
6444
+ const flatNodes = useMemo(() => flattenTree(data, expandedMap, oNodeProps, 0, undefined, asyncChildrenMap), [data, expandedMap, oNodeProps, asyncChildrenMap]);
6445
+ const loadingKeys = useMemo(() => Object.keys(loadingMap).filter((k) => loadingMap[k]), [loadingMap]);
6335
6446
  const checkItem = (item, checked, direction) => {
6336
6447
  const { key = "", parent, children } = item;
6337
6448
  const shouldChanged = { [key]: checked };
@@ -6340,7 +6451,9 @@ const Tree = (props) => {
6340
6451
  return [shouldChanged];
6341
6452
  if (checked) {
6342
6453
  if (parent && direction !== "leaf") {
6343
- const hasUnchecked = parent.children?.some((o) => o.key !== key && !isChecked(o.key));
6454
+ const hasUnchecked = Array.isArray(parent.children)
6455
+ ? parent.children.some((o) => o.key !== key && !checkedSet.has(o.key))
6456
+ : false;
6344
6457
  const [changes, parts] = checkItem(parent, true, "root");
6345
6458
  if (!hasUnchecked) {
6346
6459
  Object.assign(shouldChanged, changes);
@@ -6349,9 +6462,9 @@ const Tree = (props) => {
6349
6462
  [parent.key]: true,
6350
6463
  });
6351
6464
  }
6352
- if (children?.length && direction !== "root") {
6465
+ if (Array.isArray(children) && children.length && direction !== "root") {
6353
6466
  children.map((o) => {
6354
- if (isChecked(o.key))
6467
+ if (checkedSet.has(o.key))
6355
6468
  return;
6356
6469
  const [changes] = checkItem(o, true, "leaf");
6357
6470
  Object.assign(shouldChanged, changes);
@@ -6363,16 +6476,18 @@ const Tree = (props) => {
6363
6476
  if (parent && direction !== "leaf") {
6364
6477
  const [changes, parts] = checkItem(parent, false, "root");
6365
6478
  Object.assign(shouldChanged, changes);
6366
- const hasChecked = parent.children?.some((o) => isChecked(o.key) && o.key !== key);
6479
+ const hasChecked = Array.isArray(parent.children)
6480
+ ? parent.children.some((o) => checkedSet.has(o.key) && o.key !== key)
6481
+ : false;
6367
6482
  Object.assign(partofs, hasChecked ? {} : parts, {
6368
6483
  [parent.key]: hasChecked,
6369
6484
  [key]: false,
6370
6485
  });
6371
6486
  }
6372
- if (children?.length && direction !== "root") {
6487
+ if (Array.isArray(children) && children.length && direction !== "root") {
6373
6488
  children.map((o) => {
6374
6489
  const [changes] = checkItem(o, false, "leaf");
6375
- if (!isChecked(o.key))
6490
+ if (!checkedSet.has(o.key))
6376
6491
  return;
6377
6492
  Object.assign(shouldChanged, changes);
6378
6493
  partofs[o.key] = false;
@@ -6383,9 +6498,10 @@ const Tree = (props) => {
6383
6498
  const handleCheck = (item, checked) => {
6384
6499
  const [shouldChanged, partofs] = checkItem(item, checked);
6385
6500
  const changedKeys = Object.keys(shouldChanged);
6501
+ const changedKeysSet = new Set(changedKeys);
6386
6502
  const nextChecked = checked
6387
6503
  ? Array.from(new Set([...checkedKeys, ...changedKeys]))
6388
- : checkedKeys.filter((k) => !changedKeys.includes(k));
6504
+ : checkedKeys.filter((k) => !changedKeysSet.has(k));
6389
6505
  setCheckedKeys(nextChecked);
6390
6506
  setPartofs((p) => ({ ...p, ...partofs }));
6391
6507
  onItemCheck?.(item, checked, nextChecked);
@@ -6403,15 +6519,37 @@ const Tree = (props) => {
6403
6519
  }, [selected]);
6404
6520
  useEffect(() => {
6405
6521
  nodeMapsRef.current.clear();
6406
- const { key, children } = oNodeProps;
6407
- const recursive = (nodes) => {
6408
- nodes.map((o) => {
6409
- nodeMapsRef.current.set(o[key], o);
6410
- o[children]?.length > 0 && recursive(o[children]);
6522
+ const { key: keyProp, children: childrenProp } = oNodeProps;
6523
+ const walk = (nodes, parentKey = "") => {
6524
+ nodes.forEach((item, i) => {
6525
+ const mapKey = item[keyProp];
6526
+ const key = (mapKey || `${parentKey}-${i}`);
6527
+ nodeMapsRef.current.set(key, item);
6528
+ const itemChildren = item[childrenProp];
6529
+ if (Array.isArray(itemChildren) && itemChildren.length) {
6530
+ walk(itemChildren, key);
6531
+ }
6411
6532
  });
6412
6533
  };
6413
- recursive(data);
6414
- }, [data]);
6534
+ walk(data);
6535
+ }, [data, oNodeProps, asyncChildrenMap]);
6536
+ useEffect(() => {
6537
+ if (!props.selected)
6538
+ return;
6539
+ const node = nodeMapsRef.current.get(props.selected);
6540
+ if (!node)
6541
+ return;
6542
+ const toExpand = {};
6543
+ let p = node.parent;
6544
+ while (p) {
6545
+ if (p.key)
6546
+ toExpand[p.key] = true;
6547
+ p = p.parent;
6548
+ }
6549
+ if (Object.keys(toExpand).length > 0) {
6550
+ setExpandedMap((prev) => ({ ...prev, ...toExpand }));
6551
+ }
6552
+ }, [props.selected]);
6415
6553
  useImperativeHandle(ref, () => {
6416
6554
  return {
6417
6555
  getChecked: () => {
@@ -6440,7 +6578,10 @@ const Tree = (props) => {
6440
6578
  },
6441
6579
  };
6442
6580
  });
6443
- return (jsx(TreeList, { data: data, selected: selectedKey, checked: checkedKeys, partofs: partofs, nodeProps: oNodeProps, onItemCheck: handleCheck, onItemSelect: handleSelect, ...restProps }));
6581
+ if (useVirtual) {
6582
+ return (jsx(VirtualTree, { flatNodes: flatNodes, onExpand: handleExpand, height: height, useVirtual: useVirtual, selected: selectedKey, checkedSet: checkedSet, partofs: partofs, nodeProps: oNodeProps, loadingKeys: loadingKeys, onItemCheck: handleCheck, onItemSelect: handleSelect, ...restProps }));
6583
+ }
6584
+ return (jsx(TreeList, { flatNodes: flatNodes, onExpand: handleExpand, selected: selectedKey, checkedSet: checkedSet, partofs: partofs, nodeProps: oNodeProps, loadingKeys: loadingKeys, onItemCheck: handleCheck, onItemSelect: handleSelect, ...restProps }));
6444
6585
  };
6445
6586
 
6446
6587
  const Dropbox = (props) => {