@ioca/react 1.3.1 → 1.3.3

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 (389) hide show
  1. package/lib/components/affix/affix.js +2 -0
  2. package/lib/components/affix/affix.js.map +1 -0
  3. package/lib/components/affix/index.js +2 -0
  4. package/lib/components/affix/index.js.map +1 -0
  5. package/lib/components/affix/totop.js +2 -0
  6. package/lib/components/affix/totop.js.map +1 -0
  7. package/lib/components/badge/badge.js +2 -0
  8. package/lib/components/badge/badge.js.map +1 -0
  9. package/lib/components/badge/index.js +2 -0
  10. package/lib/components/badge/index.js.map +1 -0
  11. package/lib/components/button/button.js +2 -0
  12. package/lib/components/button/button.js.map +1 -0
  13. package/lib/components/button/group.js +2 -0
  14. package/lib/components/button/group.js.map +1 -0
  15. package/lib/components/button/index.js +2 -0
  16. package/lib/components/button/index.js.map +1 -0
  17. package/lib/components/button/toggle.js +2 -0
  18. package/lib/components/button/toggle.js.map +1 -0
  19. package/lib/components/card/card.js +2 -0
  20. package/lib/components/card/card.js.map +1 -0
  21. package/lib/components/card/index.js +2 -0
  22. package/lib/components/card/index.js.map +1 -0
  23. package/lib/components/checkbox/checkbox.js +2 -0
  24. package/lib/components/checkbox/checkbox.js.map +1 -0
  25. package/lib/components/checkbox/index.js +2 -0
  26. package/lib/components/checkbox/index.js.map +1 -0
  27. package/lib/components/checkbox/item.js +2 -0
  28. package/lib/components/checkbox/item.js.map +1 -0
  29. package/lib/components/collapse/collapse.js +2 -0
  30. package/lib/components/collapse/collapse.js.map +1 -0
  31. package/lib/components/collapse/index.js +2 -0
  32. package/lib/components/collapse/index.js.map +1 -0
  33. package/lib/components/collapse/item.js +2 -0
  34. package/lib/components/collapse/item.js.map +1 -0
  35. package/lib/components/datagrid/cell.js +2 -0
  36. package/lib/components/datagrid/cell.js.map +1 -0
  37. package/lib/components/datagrid/datagrid.js +2 -0
  38. package/lib/components/datagrid/datagrid.js.map +1 -0
  39. package/lib/components/datagrid/index.js +2 -0
  40. package/lib/components/datagrid/index.js.map +1 -0
  41. package/lib/components/datagrid/resize.js +2 -0
  42. package/lib/components/datagrid/resize.js.map +1 -0
  43. package/lib/components/datagrid/row.js +2 -0
  44. package/lib/components/datagrid/row.js.map +1 -0
  45. package/lib/components/datagrid/sorter.js +2 -0
  46. package/lib/components/datagrid/sorter.js.map +1 -0
  47. package/lib/components/description/description.js +2 -0
  48. package/lib/components/description/description.js.map +1 -0
  49. package/lib/components/description/index.js +2 -0
  50. package/lib/components/description/index.js.map +1 -0
  51. package/lib/components/drawer/drawer.js +2 -0
  52. package/lib/components/drawer/drawer.js.map +1 -0
  53. package/lib/components/drawer/index.js +2 -0
  54. package/lib/components/drawer/index.js.map +1 -0
  55. package/lib/components/dropdown/dropdown.js +2 -0
  56. package/lib/components/dropdown/dropdown.js.map +1 -0
  57. package/lib/components/dropdown/index.js +2 -0
  58. package/lib/components/dropdown/index.js.map +1 -0
  59. package/lib/components/dropdown/item.js +2 -0
  60. package/lib/components/dropdown/item.js.map +1 -0
  61. package/lib/components/editor/controls.js +2 -0
  62. package/lib/components/editor/controls.js.map +1 -0
  63. package/lib/components/editor/editor.js +2 -0
  64. package/lib/components/editor/editor.js.map +1 -0
  65. package/lib/components/editor/index.js +2 -0
  66. package/lib/components/editor/index.js.map +1 -0
  67. package/lib/components/flex/flex.js +2 -0
  68. package/lib/components/flex/flex.js.map +1 -0
  69. package/lib/components/flex/index.js +2 -0
  70. package/lib/components/flex/index.js.map +1 -0
  71. package/lib/components/form/context.js +2 -0
  72. package/lib/components/form/context.js.map +1 -0
  73. package/lib/components/form/field.js +2 -0
  74. package/lib/components/form/field.js.map +1 -0
  75. package/lib/components/form/form.js +2 -0
  76. package/lib/components/form/form.js.map +1 -0
  77. package/lib/components/form/index.js +2 -0
  78. package/lib/components/form/index.js.map +1 -0
  79. package/lib/components/form/useForm.js +2 -0
  80. package/lib/components/form/useForm.js.map +1 -0
  81. package/lib/components/icon/icon.js +2 -0
  82. package/lib/components/icon/icon.js.map +1 -0
  83. package/lib/components/icon/index.js +2 -0
  84. package/lib/components/icon/index.js.map +1 -0
  85. package/lib/components/image/image.js +2 -0
  86. package/lib/components/image/image.js.map +1 -0
  87. package/lib/components/image/index.js +2 -0
  88. package/lib/components/image/index.js.map +1 -0
  89. package/lib/components/image/list.js +2 -0
  90. package/lib/components/image/list.js.map +1 -0
  91. package/lib/components/input/container.js +2 -0
  92. package/lib/components/input/container.js.map +1 -0
  93. package/lib/components/input/index.js +2 -0
  94. package/lib/components/input/index.js.map +1 -0
  95. package/lib/components/input/input.js +2 -0
  96. package/lib/components/input/input.js.map +1 -0
  97. package/lib/components/input/number.js +2 -0
  98. package/lib/components/input/number.js.map +1 -0
  99. package/lib/components/input/range.js +2 -0
  100. package/lib/components/input/range.js.map +1 -0
  101. package/lib/components/input/textarea.js +2 -0
  102. package/lib/components/input/textarea.js.map +1 -0
  103. package/lib/components/list/index.js +2 -0
  104. package/lib/components/list/index.js.map +1 -0
  105. package/lib/components/list/item.js +2 -0
  106. package/lib/components/list/item.js.map +1 -0
  107. package/lib/components/list/list.js +2 -0
  108. package/lib/components/list/list.js.map +1 -0
  109. package/lib/components/loading/index.js +2 -0
  110. package/lib/components/loading/index.js.map +1 -0
  111. package/lib/components/loading/loading.js +2 -0
  112. package/lib/components/loading/loading.js.map +1 -0
  113. package/lib/components/message/index.js +2 -0
  114. package/lib/components/message/index.js.map +1 -0
  115. package/lib/components/message/message.js +2 -0
  116. package/lib/components/message/message.js.map +1 -0
  117. package/lib/components/modal/hookModal.js +2 -0
  118. package/lib/components/modal/hookModal.js.map +1 -0
  119. package/lib/components/modal/index.js +2 -0
  120. package/lib/components/modal/index.js.map +1 -0
  121. package/lib/components/modal/modal.js +2 -0
  122. package/lib/components/modal/modal.js.map +1 -0
  123. package/lib/components/modal/useModal.js +2 -0
  124. package/lib/components/modal/useModal.js.map +1 -0
  125. package/lib/components/pagination/index.js +2 -0
  126. package/lib/components/pagination/index.js.map +1 -0
  127. package/lib/components/pagination/page.js +2 -0
  128. package/lib/components/pagination/page.js.map +1 -0
  129. package/lib/components/pagination/pagination.js +2 -0
  130. package/lib/components/pagination/pagination.js.map +1 -0
  131. package/lib/components/picker/colors/footer.js +2 -0
  132. package/lib/components/picker/colors/footer.js.map +1 -0
  133. package/lib/components/picker/colors/handle.js +2 -0
  134. package/lib/components/picker/colors/handle.js.map +1 -0
  135. package/lib/components/picker/colors/index.js +2 -0
  136. package/lib/components/picker/colors/index.js.map +1 -0
  137. package/lib/components/picker/dates/dates.js +2 -0
  138. package/lib/components/picker/dates/dates.js.map +1 -0
  139. package/lib/components/picker/dates/index.js +2 -0
  140. package/lib/components/picker/dates/index.js.map +1 -0
  141. package/lib/components/picker/dates/panel.js +2 -0
  142. package/lib/components/picker/dates/panel.js.map +1 -0
  143. package/lib/components/picker/time/index.js +2 -0
  144. package/lib/components/picker/time/index.js.map +1 -0
  145. package/lib/components/picker/time/item.js +2 -0
  146. package/lib/components/picker/time/item.js.map +1 -0
  147. package/lib/components/picker/time/panel.js +2 -0
  148. package/lib/components/picker/time/panel.js.map +1 -0
  149. package/lib/components/popconfirm/index.js +2 -0
  150. package/lib/components/popconfirm/index.js.map +1 -0
  151. package/lib/components/popconfirm/popconfirm.js +2 -0
  152. package/lib/components/popconfirm/popconfirm.js.map +1 -0
  153. package/lib/components/popup/content.js +2 -0
  154. package/lib/components/popup/content.js.map +1 -0
  155. package/lib/components/popup/index.js +2 -0
  156. package/lib/components/popup/index.js.map +1 -0
  157. package/lib/components/popup/popup.js +2 -0
  158. package/lib/components/popup/popup.js.map +1 -0
  159. package/lib/components/progress/circle.js +2 -0
  160. package/lib/components/progress/circle.js.map +1 -0
  161. package/lib/components/progress/index.js +2 -0
  162. package/lib/components/progress/index.js.map +1 -0
  163. package/lib/components/progress/line.js +2 -0
  164. package/lib/components/progress/line.js.map +1 -0
  165. package/lib/components/progress/progress.js +2 -0
  166. package/lib/components/progress/progress.js.map +1 -0
  167. package/lib/components/radio/index.js +2 -0
  168. package/lib/components/radio/index.js.map +1 -0
  169. package/lib/components/radio/item.js +2 -0
  170. package/lib/components/radio/item.js.map +1 -0
  171. package/lib/components/radio/radio.js +2 -0
  172. package/lib/components/radio/radio.js.map +1 -0
  173. package/lib/components/resizable/index.js +2 -0
  174. package/lib/components/resizable/index.js.map +1 -0
  175. package/lib/components/resizable/resizable.js +2 -0
  176. package/lib/components/resizable/resizable.js.map +1 -0
  177. package/lib/components/select/index.js +2 -0
  178. package/lib/components/select/index.js.map +1 -0
  179. package/lib/components/select/options.js +2 -0
  180. package/lib/components/select/options.js.map +1 -0
  181. package/lib/components/select/select.js +2 -0
  182. package/lib/components/select/select.js.map +1 -0
  183. package/lib/components/step/divider.js +2 -0
  184. package/lib/components/step/divider.js.map +1 -0
  185. package/lib/components/step/index.js +2 -0
  186. package/lib/components/step/index.js.map +1 -0
  187. package/lib/components/step/item.js +2 -0
  188. package/lib/components/step/item.js.map +1 -0
  189. package/lib/components/step/step.js +2 -0
  190. package/lib/components/step/step.js.map +1 -0
  191. package/lib/components/swiper/index.js +2 -0
  192. package/lib/components/swiper/index.js.map +1 -0
  193. package/lib/components/swiper/item.js +2 -0
  194. package/lib/components/swiper/item.js.map +1 -0
  195. package/lib/components/swiper/swiper.js +2 -0
  196. package/lib/components/swiper/swiper.js.map +1 -0
  197. package/lib/components/tabs/index.js +2 -0
  198. package/lib/components/tabs/index.js.map +1 -0
  199. package/lib/components/tabs/item.js +2 -0
  200. package/lib/components/tabs/item.js.map +1 -0
  201. package/lib/components/tabs/tabs.js +2 -0
  202. package/lib/components/tabs/tabs.js.map +1 -0
  203. package/lib/components/tag/index.js +2 -0
  204. package/lib/components/tag/index.js.map +1 -0
  205. package/lib/components/tag/tag.js +2 -0
  206. package/lib/components/tag/tag.js.map +1 -0
  207. package/lib/components/text/highlight.js +2 -0
  208. package/lib/components/text/highlight.js.map +1 -0
  209. package/lib/components/text/index.js +2 -0
  210. package/lib/components/text/index.js.map +1 -0
  211. package/lib/components/text/number.js +2 -0
  212. package/lib/components/text/number.js.map +1 -0
  213. package/lib/components/text/text.js +2 -0
  214. package/lib/components/text/text.js.map +1 -0
  215. package/lib/components/text/time.js +2 -0
  216. package/lib/components/text/time.js.map +1 -0
  217. package/lib/components/tree/index.js +2 -0
  218. package/lib/components/tree/index.js.map +1 -0
  219. package/lib/components/tree/item.js +2 -0
  220. package/lib/components/tree/item.js.map +1 -0
  221. package/lib/components/tree/tree.js +2 -0
  222. package/lib/components/tree/tree.js.map +1 -0
  223. package/lib/components/upload/index.js +2 -0
  224. package/lib/components/upload/index.js.map +1 -0
  225. package/lib/components/upload/renderFile.js +2 -0
  226. package/lib/components/upload/renderFile.js.map +1 -0
  227. package/lib/components/upload/upload.js +2 -0
  228. package/lib/components/upload/upload.js.map +1 -0
  229. package/lib/components/utils/empty/index.js +2 -0
  230. package/lib/components/utils/empty/index.js.map +1 -0
  231. package/lib/components/utils/helpericon/helpericon.js +2 -0
  232. package/lib/components/utils/helpericon/helpericon.js.map +1 -0
  233. package/lib/components/utils/helpericon/index.js +2 -0
  234. package/lib/components/utils/helpericon/index.js.map +1 -0
  235. package/lib/components/video/index.js +2 -0
  236. package/lib/components/video/index.js.map +1 -0
  237. package/lib/components/video/video.js +2 -0
  238. package/lib/components/video/video.js.map +1 -0
  239. package/lib/css/index.css +1 -1
  240. package/lib/css/index.css.map +1 -1
  241. package/lib/index.js +1 -1
  242. package/lib/index.js.map +1 -1
  243. package/lib/js/hooks.js +2 -0
  244. package/lib/js/hooks.js.map +1 -0
  245. package/lib/js/usePreview/content.js +2 -0
  246. package/lib/js/usePreview/content.js.map +1 -0
  247. package/lib/js/usePreview/index.js +2 -0
  248. package/lib/js/usePreview/index.js.map +1 -0
  249. package/lib/js/usePreview/renderFile.js +2 -0
  250. package/lib/js/usePreview/renderFile.js.map +1 -0
  251. package/lib/js/usePreview/type.js +2 -0
  252. package/lib/js/usePreview/type.js.map +1 -0
  253. package/lib/js/useRipple/index.js +2 -0
  254. package/lib/js/useRipple/index.js.map +1 -0
  255. package/lib/js/utils.js +2 -0
  256. package/lib/js/utils.js.map +1 -0
  257. package/lib/types/components/affix/affix.d.ts +10 -0
  258. package/lib/types/components/affix/index.d.ts +5 -0
  259. package/lib/types/components/affix/totop.d.ts +6 -0
  260. package/lib/types/components/affix/type.d.ts +13 -0
  261. package/lib/types/components/badge/badge.d.ts +6 -0
  262. package/lib/types/components/badge/index.d.ts +5 -0
  263. package/lib/types/components/badge/type.d.ts +15 -0
  264. package/lib/types/components/button/button.d.ts +5 -0
  265. package/lib/types/components/button/group.d.ts +6 -0
  266. package/lib/types/components/button/index.d.ts +5 -0
  267. package/lib/types/components/button/toggle.d.ts +6 -0
  268. package/lib/types/components/button/type.d.ts +44 -0
  269. package/lib/types/components/card/card.d.ts +6 -0
  270. package/lib/types/components/card/index.d.ts +5 -0
  271. package/lib/types/components/card/type.d.ts +13 -0
  272. package/lib/types/components/checkbox/checkbox.d.ts +10 -0
  273. package/lib/types/components/checkbox/index.d.ts +5 -0
  274. package/lib/types/components/checkbox/item.d.ts +6 -0
  275. package/lib/types/components/checkbox/type.d.ts +24 -0
  276. package/lib/types/components/collapse/collapse.d.ts +10 -0
  277. package/lib/types/components/collapse/index.d.ts +5 -0
  278. package/lib/types/components/collapse/item.d.ts +6 -0
  279. package/lib/types/components/collapse/type.d.ts +23 -0
  280. package/lib/types/components/datagrid/datagrid.d.ts +6 -0
  281. package/lib/types/components/datagrid/index.d.ts +5 -0
  282. package/lib/types/components/datagrid/type.d.ts +40 -0
  283. package/lib/types/components/description/description.d.ts +6 -0
  284. package/lib/types/components/description/index.d.ts +5 -0
  285. package/lib/types/components/description/type.d.ts +25 -0
  286. package/lib/types/components/drawer/drawer.d.ts +5 -0
  287. package/lib/types/components/drawer/index.d.ts +5 -0
  288. package/lib/types/components/drawer/type.d.ts +16 -0
  289. package/lib/types/components/dropdown/dropdown.d.ts +9 -0
  290. package/lib/types/components/dropdown/index.d.ts +5 -0
  291. package/lib/types/components/dropdown/type.d.ts +13 -0
  292. package/lib/types/components/editor/editor.d.ts +6 -0
  293. package/lib/types/components/editor/index.d.ts +5 -0
  294. package/lib/types/components/editor/type.d.ts +19 -0
  295. package/lib/types/components/flex/flex.d.ts +5 -0
  296. package/lib/types/components/flex/index.d.ts +5 -0
  297. package/lib/types/components/flex/type.d.ts +13 -0
  298. package/lib/types/components/form/field.d.ts +6 -0
  299. package/lib/types/components/form/form.d.ts +12 -0
  300. package/lib/types/components/form/index.d.ts +5 -0
  301. package/lib/types/components/form/type.d.ts +30 -0
  302. package/lib/types/components/form/useForm.d.ts +17 -0
  303. package/lib/types/components/icon/icon.d.ts +6 -0
  304. package/lib/types/components/icon/index.d.ts +5 -0
  305. package/lib/types/components/icon/type.d.ts +12 -0
  306. package/lib/types/components/image/image.d.ts +5 -0
  307. package/lib/types/components/image/index.d.ts +5 -0
  308. package/lib/types/components/image/list.d.ts +6 -0
  309. package/lib/types/components/image/type.d.ts +28 -0
  310. package/lib/types/components/input/index.d.ts +5 -0
  311. package/lib/types/components/input/input.d.ts +5 -0
  312. package/lib/types/components/input/number.d.ts +6 -0
  313. package/lib/types/components/input/range.d.ts +6 -0
  314. package/lib/types/components/input/textarea.d.ts +6 -0
  315. package/lib/types/components/input/type.d.ts +46 -0
  316. package/lib/types/components/list/index.d.ts +5 -0
  317. package/lib/types/components/list/list.d.ts +9 -0
  318. package/lib/types/components/list/type.d.ts +15 -0
  319. package/lib/types/components/loading/index.d.ts +5 -0
  320. package/lib/types/components/loading/loading.d.ts +6 -0
  321. package/lib/types/components/loading/type.d.ts +10 -0
  322. package/lib/types/components/message/index.d.ts +5 -0
  323. package/lib/types/components/message/message.d.ts +24 -0
  324. package/lib/types/components/message/type.d.ts +21 -0
  325. package/lib/types/components/modal/index.d.ts +5 -0
  326. package/lib/types/components/modal/modal.d.ts +5 -0
  327. package/lib/types/components/modal/type.d.ts +31 -0
  328. package/lib/types/components/modal/useModal.d.ts +9 -0
  329. package/lib/types/components/pagination/index.d.ts +5 -0
  330. package/lib/types/components/pagination/pagination.d.ts +6 -0
  331. package/lib/types/components/pagination/type.d.ts +18 -0
  332. package/lib/types/components/picker/colors/index.d.ts +6 -0
  333. package/lib/types/components/picker/dates/index.d.ts +6 -0
  334. package/lib/types/components/picker/time/index.d.ts +6 -0
  335. package/lib/types/components/picker/type.d.ts +41 -0
  336. package/lib/types/components/popconfirm/index.d.ts +5 -0
  337. package/lib/types/components/popconfirm/popconfirm.d.ts +6 -0
  338. package/lib/types/components/popconfirm/type.d.ts +14 -0
  339. package/lib/types/components/popup/index.d.ts +5 -0
  340. package/lib/types/components/popup/popup.d.ts +6 -0
  341. package/lib/types/components/popup/type.d.ts +29 -0
  342. package/lib/types/components/progress/index.d.ts +5 -0
  343. package/lib/types/components/progress/progress.d.ts +6 -0
  344. package/lib/types/components/progress/type.d.ts +23 -0
  345. package/lib/types/components/radio/index.d.ts +5 -0
  346. package/lib/types/components/radio/item.d.ts +6 -0
  347. package/lib/types/components/radio/radio.d.ts +10 -0
  348. package/lib/types/components/radio/type.d.ts +20 -0
  349. package/lib/types/components/resizable/index.d.ts +5 -0
  350. package/lib/types/components/resizable/resizable.d.ts +6 -0
  351. package/lib/types/components/resizable/type.d.ts +19 -0
  352. package/lib/types/components/select/index.d.ts +5 -0
  353. package/lib/types/components/select/select.d.ts +6 -0
  354. package/lib/types/components/select/type.d.ts +22 -0
  355. package/lib/types/components/step/index.d.ts +5 -0
  356. package/lib/types/components/step/item.d.ts +6 -0
  357. package/lib/types/components/step/step.d.ts +10 -0
  358. package/lib/types/components/step/type.d.ts +19 -0
  359. package/lib/types/components/swiper/index.d.ts +5 -0
  360. package/lib/types/components/swiper/item.d.ts +6 -0
  361. package/lib/types/components/swiper/swiper.d.ts +5 -0
  362. package/lib/types/components/swiper/type.d.ts +52 -0
  363. package/lib/types/components/tabs/index.d.ts +5 -0
  364. package/lib/types/components/tabs/item.d.ts +6 -0
  365. package/lib/types/components/tabs/tabs.d.ts +5 -0
  366. package/lib/types/components/tabs/type.d.ts +44 -0
  367. package/lib/types/components/tag/index.d.ts +5 -0
  368. package/lib/types/components/tag/tag.d.ts +6 -0
  369. package/lib/types/components/tag/type.d.ts +14 -0
  370. package/lib/types/components/text/highlight.d.ts +6 -0
  371. package/lib/types/components/text/index.d.ts +5 -0
  372. package/lib/types/components/text/number.d.ts +6 -0
  373. package/lib/types/components/text/text.d.ts +5 -0
  374. package/lib/types/components/text/time.d.ts +6 -0
  375. package/lib/types/components/text/type.d.ts +43 -0
  376. package/lib/types/components/tree/index.d.ts +5 -0
  377. package/lib/types/components/tree/tree.d.ts +6 -0
  378. package/lib/types/components/tree/type.d.ts +48 -0
  379. package/lib/types/components/upload/index.d.ts +5 -0
  380. package/lib/types/components/upload/type.d.ts +36 -0
  381. package/lib/types/components/upload/upload.d.ts +6 -0
  382. package/lib/types/components/video/index.d.ts +5 -0
  383. package/lib/types/components/video/type.d.ts +27 -0
  384. package/lib/types/components/video/video.d.ts +6 -0
  385. package/lib/types/index.d.ts +39 -1021
  386. package/lib/types/js/usePreview/index.d.ts +5 -0
  387. package/lib/types/js/usePreview/type.d.ts +39 -0
  388. package/lib/types/type/index.d.ts +28 -0
  389. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ import{jsx as o}from"react/jsx-runtime";import t from"classnames";import{debounce as r}from"radash";import{useState as e,useMemo as s,Children as i,cloneElement as n,useEffect as l}from"react";import c from"./totop.js";const m=m=>{const{position:p="fixed",left:a,top:f,right:d,bottom:h,offset:u,style:y,className:v,children:x,getContainer:b=()=>document.body}=m,[k,T]=e(!1),g=s((()=>i.map(x,(o=>{if(o.type===c){const{onClick:t}=o.props;return n(o,{key:o.key,...o.props,onClick:o=>{const r=b();t?.(o),r?.scrollTo({top:0,left:0,behavior:"smooth"})}})}return o}))),[x,b]);return l((()=>{const o=b();if(!u||!o)return;const t=r({delay:160},(()=>{const t=o.scrollTop;T(t<u)}));return t(),o.addEventListener("scroll",t),()=>{o.removeEventListener("scroll",t)}}),[u,b]),o("div",{className:t("i-affix",v,{"i-affix-hidden":k}),style:{...y,position:p,left:a,top:f,right:d,bottom:h},children:g})};m.ToTop=c;export{m as default};
2
+ //# sourceMappingURL=affix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"affix.js","sources":["../../../packages/components/affix/affix.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { debounce } from \"radash\";\nimport {\n\tChildren,\n\tMouseEvent,\n\tcloneElement,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n} from \"react\";\nimport \"./index.css\";\nimport ToTop from \"./totop\";\nimport { IAffix } from \"./type\";\n\nconst Affix = (props: IAffix) => {\n\tconst {\n\t\tposition = \"fixed\",\n\t\tleft,\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\toffset,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\tgetContainer = () => document.body,\n\t} = props;\n\n\tconst [hidden, setHidden] = useState<boolean>(false);\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type === ToTop) {\n\t\t\t\tconst { onClick } = node.props;\n\n\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\tkey: node.key,\n\t\t\t\t\t...node.props,\n\t\t\t\t\tonClick: (e: MouseEvent) => {\n\t\t\t\t\t\tconst container = getContainer();\n\n\t\t\t\t\t\tonClick?.(e);\n\t\t\t\t\t\tcontainer?.scrollTo({\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children, getContainer]);\n\n\tuseEffect(() => {\n\t\tconst container = getContainer();\n\t\tif (!offset || !container) return;\n\n\t\tconst listener = debounce({ delay: 160 }, () => {\n\t\t\tconst top = container.scrollTop;\n\n\t\t\tsetHidden(top < offset);\n\t\t});\n\n\t\tlistener();\n\t\tcontainer.addEventListener(\"scroll\", listener);\n\n\t\treturn () => {\n\t\t\tcontainer.removeEventListener(\"scroll\", listener);\n\t\t};\n\t}, [offset, getContainer]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-affix\", className, {\n\t\t\t\t\"i-affix-hidden\": hidden,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tposition,\n\t\t\t\tleft,\n\t\t\t\ttop,\n\t\t\t\tright,\n\t\t\t\tbottom,\n\t\t\t}}\n\t\t>\n\t\t\t{hijackChildren}\n\t\t</div>\n\t);\n};\n\nAffix.ToTop = ToTop;\n\nexport default Affix;\n"],"names":["Affix","props","position","left","top","right","bottom","offset","style","className","children","getContainer","document","body","hidden","setHidden","useState","hijackChildren","useMemo","Children","map","node","type","ToTop","onClick","cloneElement","key","e","container","scrollTo","behavior","useEffect","listener","debounce","delay","scrollTop","addEventListener","removeEventListener","_jsx","classNames"],"mappings":"2NAcA,MAAMA,EAASC,IACd,MAAMC,SACLA,EAAW,QAAOC,KAClBA,EAAIC,IACJA,EAAGC,MACHA,EAAKC,OACLA,EAAMC,OACNA,EAAMC,MACNA,EAAKC,UACLA,EAASC,SACTA,EAAQC,aACRA,EAAe,IAAMC,SAASC,MAC3BZ,GAEGa,EAAQC,GAAaC,GAAkB,GAExCC,EAAiBC,GAAQ,IACvBC,EAASC,IAAIV,GAAWW,IAC9B,GAAIA,EAAKC,OAASC,EAAO,CACxB,MAAMC,QAAEA,GAAYH,EAAKpB,MAEzB,OAAOwB,EAAaJ,EAAM,CACzBK,IAAKL,EAAKK,OACPL,EAAKpB,MACRuB,QAAUG,IACT,MAAMC,EAAYjB,IAElBa,IAAUG,GACVC,GAAWC,SAAS,CACnBzB,IAAK,EACLD,KAAM,EACN2B,SAAU,UACT,IAKL,OAAOT,CAAI,KAEV,CAACX,EAAUC,IAoBd,OAlBAoB,GAAU,KACT,MAAMH,EAAYjB,IAClB,IAAKJ,IAAWqB,EAAW,OAE3B,MAAMI,EAAWC,EAAS,CAAEC,MAAO,MAAO,KACzC,MAAM9B,EAAMwB,EAAUO,UAEtBpB,EAAUX,EAAMG,EAAO,IAMxB,OAHAyB,IACAJ,EAAUQ,iBAAiB,SAAUJ,GAE9B,KACNJ,EAAUS,oBAAoB,SAAUL,EAAS,CACjD,GACC,CAACzB,EAAQI,IAGX2B,SACC7B,UAAW8B,EAAW,UAAW9B,EAAW,CAC3C,iBAAkBK,IAEnBN,MAAO,IACHA,EACHN,WACAC,OACAC,MACAC,QACAC,UAGAI,SAAAO,GACI,EAIRjB,EAAMuB,MAAQA"}
@@ -0,0 +1,2 @@
1
+ import f from"./affix.js";export{f as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{jsx as o}from"react/jsx-runtime";import{SkipPreviousRound as t}from"@ricons/material";import r from"classnames";import"../button/index.js";import i from"../icon/icon.js";import n from"../button/button.js";function s(s){const{style:m,className:e,onClick:a}=s;return o(n,{square:!0,className:r("i-affix-totop",e),style:{...m},onClick:a,children:o(i,{icon:o(t,{}),rotate:90})})}export{s as default};
2
+ //# sourceMappingURL=totop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"totop.js","sources":["../../../packages/components/affix/totop.tsx"],"sourcesContent":["import { SkipPreviousRound } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport { IAffix } from \"./type\";\n\nfunction ToTop(props: IAffix) {\n\tconst { style, className, onClick } = props;\n\n\treturn (\n\t\t<Button\n\t\t\tsquare\n\t\t\tclassName={classNames(\"i-affix-totop\", className)}\n\t\t\tstyle={{ ...style }}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<Icon icon={<SkipPreviousRound />} rotate={90} />\n\t\t</Button>\n\t);\n}\n\nexport default ToTop;\n"],"names":["ToTop","props","style","className","onClick","_jsx","Button","square","classNames","Icon","icon","SkipPreviousRound","rotate"],"mappings":"oNAMA,SAASA,EAAMC,GACd,MAAMC,MAAEA,EAAKC,UAAEA,EAASC,QAAEA,GAAYH,EAEtC,OACCI,EAACC,GACAC,QAAM,EACNJ,UAAWK,EAAW,gBAAiBL,GACvCD,MAAO,IAAKA,GACZE,QAASA,WAETC,EAACI,GAAKC,KAAML,EAACM,EAAiB,CAAA,GAAKC,OAAQ,MAG9C"}
@@ -0,0 +1,2 @@
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import d from"classnames";const s=s=>{const{content:n,contentClass:a,dot:i,dotSize:o,round:r,disabled:c,style:l,className:m,children:b}=s;return e("div",{style:l,className:d("i-badge",{rounded:r},m),children:[b,t("div",{className:d("i-badge-content",a,{"i-badge-dot":i,"i-badge-hidden":c}),style:{fontSize:o},children:n})]})};export{s as default};
2
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sources":["../../../packages/components/badge/badge.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport \"./index.css\";\nimport type { IBadge } from \"./type\";\n\nconst Badge = (props: IBadge) => {\n\tconst {\n\t\tcontent,\n\t\tcontentClass,\n\t\tdot,\n\t\tdotSize,\n\t\tround,\n\t\tdisabled,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\"i-badge\", { rounded: round }, className)}\n\t\t>\n\t\t\t{children}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-badge-content\", contentClass, {\n\t\t\t\t\t\"i-badge-dot\": dot,\n\t\t\t\t\t\"i-badge-hidden\": disabled,\n\t\t\t\t})}\n\t\t\t\tstyle={{ fontSize: dotSize }}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default Badge;\n"],"names":["Badge","props","content","contentClass","dot","dotSize","round","disabled","style","className","children","_jsxs","classNames","rounded","_jsx","fontSize"],"mappings":"4EAIA,MAAMA,EAASC,IACd,MAAMC,QACLA,EAAOC,aACPA,EAAYC,IACZA,EAAGC,QACHA,EAAOC,MACPA,EAAKC,SACLA,EAAQC,MACRA,EAAKC,UACLA,EAASC,SACTA,GACGT,EAEJ,OACCU,EAAA,MAAA,CACCH,MAAOA,EACPC,UAAWG,EAAW,UAAW,CAAEC,QAASP,GAASG,GAAUC,SAAA,CAE9DA,EAEDI,EAAA,MAAA,CACCL,UAAWG,EAAW,kBAAmBT,EAAc,CACtD,cAAeC,EACf,iBAAkBG,IAEnBC,MAAO,CAAEO,SAAUV,GAElBK,SAAAR,MAEG"}
@@ -0,0 +1,2 @@
1
+ import a from"./badge.js";export{a as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{jsx as n,Fragment as e}from"react/jsx-runtime";import o from"../../js/useRipple/index.js";import a from"classnames";import{createElement as i,useEffect as t}from"react";import r from"../loading/loading.js";const s=({outline:n,flat:e,loading:o,disabled:i,size:t="normal",block:r,round:s,square:l,secondary:d,className:c})=>a("i-btn",c,{"i-btn-outline":n,"i-btn-flat":e,"i-btn-block":r,"i-btn-loading":o,"i-btn-square":l,"i-btn-secondary":d,[`i-btn-${t}`]:"normal"!==t,round:s,disabled:i}),l=a=>{const{as:l="a",ref:d,children:c,className:m,loading:f,flat:p,outline:u,square:b,secondary:g,size:k,round:y,href:j,ripple:N=!0,onClick:h,...q}=a;if(!c)return n(e,{});const v=[f&&n(r,{},"loading"),i("span",{key:"content",className:"i-btn-content"},c)],x={className:s(a),"data-ripple":!N||f||q.disabled?void 0:"",onClick:n=>{if(f||q.disabled)return n.stopPropagation(),void n.preventDefault();h?.(n)}};return t((()=>{N&&o()}),[N]),i(l,"string"==typeof l?{ref:d,href:j,...x,...q}:{to:j||"",...x,...q},v)};export{l as default};
2
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sources":["../../../packages/components/button/button.tsx"],"sourcesContent":["import useRipple from \"@p/js/useRipple\";\nimport classnames from \"classnames\";\nimport { MouseEvent, createElement, useEffect } from \"react\";\nimport Loading from \"../loading\";\nimport \"./index.css\";\nimport { CompositionButton, IButton } from \"./type\";\n\nconst formatClass = ({\n\toutline,\n\tflat,\n\tloading,\n\tdisabled,\n\tsize = \"normal\",\n\tblock,\n\tround,\n\tsquare,\n\tsecondary,\n\tclassName,\n}: IButton) =>\n\tclassnames(\"i-btn\", className, {\n\t\t\"i-btn-outline\": outline,\n\t\t\"i-btn-flat\": flat,\n\t\t\"i-btn-block\": block,\n\t\t\"i-btn-loading\": loading,\n\t\t\"i-btn-square\": square,\n\t\t\"i-btn-secondary\": secondary,\n\t\t[`i-btn-${size}`]: size !== \"normal\",\n\t\tround,\n\t\tdisabled,\n\t});\n\nconst Button = (props: IButton) => {\n\tconst {\n\t\tas: As = \"a\",\n\t\tref,\n\t\tchildren,\n\t\tclassName,\n\t\tloading,\n\t\tflat,\n\t\toutline,\n\t\tsquare,\n\t\tsecondary,\n\t\tsize,\n\t\tround,\n\t\thref,\n\t\tripple = true,\n\t\tonClick,\n\t\t...restProps\n\t} = props;\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tif (loading || restProps.disabled) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tonClick?.(e);\n\t};\n\n\tif (!children) return <></>;\n\n\tconst childNodes = [\n\t\tloading && <Loading key='loading' />,\n\t\tcreateElement(\n\t\t\t\"span\",\n\t\t\t{ key: \"content\", className: \"i-btn-content\" },\n\t\t\tchildren\n\t\t),\n\t];\n\n\tconst attrs = {\n\t\tclassName: formatClass(props),\n\t\t[\"data-ripple\"]:\n\t\t\tripple && !loading && !restProps.disabled ? \"\" : undefined,\n\t\tonClick: handleClick,\n\t};\n\n\tuseEffect(() => {\n\t\tripple && useRipple();\n\t}, [ripple]);\n\n\tif (typeof As === \"string\") {\n\t\treturn createElement(\n\t\t\tAs,\n\t\t\t{\n\t\t\t\tref,\n\t\t\t\thref,\n\t\t\t\t...attrs,\n\t\t\t\t...restProps,\n\t\t\t},\n\t\t\tchildNodes\n\t\t);\n\t}\n\n\treturn createElement(\n\t\tAs,\n\t\t{\n\t\t\tto: href || \"\",\n\t\t\t...attrs,\n\t\t\t...restProps,\n\t\t},\n\t\tchildNodes\n\t);\n};\n\nexport default Button as CompositionButton;\n"],"names":["formatClass","outline","flat","loading","disabled","size","block","round","square","secondary","className","classnames","Button","props","as","As","ref","children","href","ripple","onClick","restProps","_jsx","childNodes","Loading","createElement","key","attrs","undefined","e","stopPropagation","preventDefault","useEffect","useRipple","to"],"mappings":"qNAOA,MAAMA,EAAc,EACnBC,UACAC,OACAC,UACAC,WACAC,OAAO,SACPC,QACAC,QACAC,SACAC,YACAC,eAEAC,EAAW,QAASD,EAAW,CAC9B,gBAAiBT,EACjB,aAAcC,EACd,cAAeI,EACf,gBAAiBH,EACjB,eAAgBK,EAChB,kBAAmBC,EACnB,CAAC,SAASJ,KAAkB,WAATA,EACnBE,QACAH,aAGIQ,EAAUC,IACf,MACCC,GAAIC,EAAK,IAAGC,IACZA,EAAGC,SACHA,EAAQP,UACRA,EAASP,QACTA,EAAOD,KACPA,EAAID,QACJA,EAAOO,OACPA,EAAMC,UACNA,EAASJ,KACTA,EAAIE,MACJA,EAAKW,KACLA,EAAIC,OACJA,GAAS,EAAIC,QACbA,KACGC,GACAR,EAYJ,IAAKI,EAAU,OAAOK,QAEtB,MAAMC,EAAa,CAClBpB,GAAWmB,EAACE,EAAO,CAAA,EAAK,WACxBC,EACC,OACA,CAAEC,IAAK,UAAWhB,UAAW,iBAC7BO,IAIIU,EAAQ,CACbjB,UAAWV,EAAYa,GACvB,eACCM,GAAWhB,GAAYkB,EAAUjB,cAAgBwB,EAAL,GAC7CR,QAzBoBS,IACpB,GAAI1B,GAAWkB,EAAUjB,SAGxB,OAFAyB,EAAEC,uBACFD,EAAEE,iBAIHX,IAAUS,EAAE,GAyBb,OAJAG,GAAU,KACTb,GAAUc,GAAW,GACnB,CAACd,IAGIM,EACNV,EAFgB,iBAAPA,EAGT,CACCC,MACAE,UACGS,KACAN,GAQL,CACCa,GAAIhB,GAAQ,MACTS,KACAN,GATHE,EAYD"}
@@ -0,0 +1,2 @@
1
+ import{jsx as t}from"react/jsx-runtime";import r from"classnames";import{useMemo as o,Children as e,cloneElement as s}from"react";import n from"./button.js";function a(a){const{children:i,vertical:c,buttonProps:m,className:p,style:l}=a,u=o((()=>e.map(i,(t=>{const{type:r}=t;return r===n?s(t,Object.assign({},t.props,m)):t}))),[i]);return t("div",{className:r(p,c?"i-btn-group-vertical":"i-btn-group-horizonal"),style:l,children:u})}export{a as default};
2
+ //# sourceMappingURL=group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.js","sources":["../../../packages/components/button/group.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { Children, cloneElement, useMemo } from \"react\";\nimport Button from \"./button\";\nimport { IButtonGroup } from \"./type\";\n\nexport default function Group(props: IButtonGroup) {\n\tconst { children, vertical, buttonProps, className, style } = props;\n\n\tconst nodes = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tconst { type } = node;\n\n\t\t\tif (type === Button) {\n\t\t\t\treturn cloneElement(\n\t\t\t\t\tnode,\n\t\t\t\t\tObject.assign({}, node.props, buttonProps)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn node;\n\t\t});\n\t}, [children]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\tclassName,\n\t\t\t\tvertical ? \"i-btn-group-vertical\" : \"i-btn-group-horizonal\"\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{nodes}\n\t\t</div>\n\t);\n}\n"],"names":["Group","props","children","vertical","buttonProps","className","style","nodes","useMemo","Children","map","node","type","Button","cloneElement","Object","assign","_jsx","classNames"],"mappings":"6JAKwB,SAAAA,EAAMC,GAC7B,MAAMC,SAAEA,EAAQC,SAAEA,EAAQC,YAAEA,EAAWC,UAAEA,EAASC,MAAEA,GAAUL,EAExDM,EAAQC,GAAQ,IACdC,EAASC,IAAIR,GAAWS,IAC9B,MAAMC,KAAEA,GAASD,EAEjB,OAAIC,IAASC,EACLC,EACNH,EACAI,OAAOC,OAAO,CAAA,EAAIL,EAAKV,MAAOG,IAIzBO,CAAI,KAEV,CAACT,IAEJ,OACCe,EACC,MAAA,CAAAZ,UAAWa,EACVb,EACAF,EAAW,uBAAyB,yBAErCG,MAAOA,EAENJ,SAAAK,GAGJ"}
@@ -0,0 +1,2 @@
1
+ import o from"./button.js";import r from"./group.js";import t from"./toggle.js";o.Toggle=t,o.Group=r;export{o as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../packages/components/button/index.tsx"],"sourcesContent":["import Button from \"./button\";\nimport Group from \"./group\";\nimport Toggle from \"./toggle\";\n\nButton.Toggle = Toggle;\nButton.Group = Group;\n\nexport default Button;\n"],"names":["Button","Toggle","Group"],"mappings":"gFAIAA,EAAOC,OAASA,EAChBD,EAAOE,MAAQA"}
@@ -0,0 +1,2 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{useReactive as t}from"ahooks";import o from"classnames";import{useEffect as a}from"react";import i from"./button.js";function c(c){const{ref:n,active:s,activeClass:r,after:l,disabled:m,children:d,className:g,toggable:f,onClick:v,onToggle:b,...p}=c,u=t({active:s,done:!0});return a((()=>{Object.assign(u,{active:s,done:!0})}),[s]),e(i,{ref:n,className:o(g,{[r||""]:u.active},"i-btn-toggle"),...p,onClick:e=>{v?.(e),!m&&(async()=>{const e=!!l,t=!u.active;(!f||await f())&&(Object.assign(u,{active:t,done:!e}),b?.(t),e&&setTimeout((()=>{u.done=!0}),16))})()},children:e("div",{className:o("i-btn-toggle-content",{"i-btn-toggle-active":u.done}),children:u.active?l??d:d})})}export{c as default};
2
+ //# sourceMappingURL=toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.js","sources":["../../../packages/components/button/toggle.tsx"],"sourcesContent":["import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { MouseEvent, useEffect } from \"react\";\nimport Button from \"./button\";\nimport { IButtonToggle } from \"./type\";\n\nexport default function Toggle(props: IButtonToggle) {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\tactiveClass,\n\t\tafter,\n\t\tdisabled,\n\t\tchildren,\n\t\tclassName,\n\t\ttoggable,\n\t\tonClick,\n\t\tonToggle,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tactive,\n\t\tdone: true,\n\t});\n\n\tconst toggle = async () => {\n\t\tconst hasAfter = !!after;\n\t\tconst nextActive = !state.active;\n\n\t\tconst canToggle = toggable ? await toggable() : true;\n\t\tif (!canToggle) return;\n\n\t\tObject.assign(state, {\n\t\t\tactive: nextActive,\n\t\t\tdone: !hasAfter,\n\t\t});\n\t\tonToggle?.(nextActive);\n\n\t\tif (!hasAfter) return;\n\n\t\tsetTimeout(() => {\n\t\t\tstate.done = true;\n\t\t}, 16);\n\t};\n\n\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\tonClick?.(e);\n\n\t\t!disabled && toggle();\n\t};\n\n\tuseEffect(() => {\n\t\tObject.assign(state, {\n\t\t\tactive,\n\t\t\tdone: true,\n\t\t});\n\t}, [active]);\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\n\t\t\t\tclassName,\n\t\t\t\t{ [activeClass || \"\"]: state.active },\n\t\t\t\t\"i-btn-toggle\"\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-btn-toggle-content\", {\n\t\t\t\t\t\"i-btn-toggle-active\": state.done,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{state.active ? after ?? children : children}\n\t\t\t</div>\n\t\t</Button>\n\t);\n}\n"],"names":["Toggle","props","ref","active","activeClass","after","disabled","children","className","toggable","onClick","onToggle","restProps","state","useReactive","done","useEffect","Object","assign","_jsx","Button","classNames","e","async","hasAfter","nextActive","setTimeout","toggle"],"mappings":"oKAMwB,SAAAA,EAAOC,GAC9B,MAAMC,IACLA,EAAGC,OACHA,EAAMC,YACNA,EAAWC,MACXA,EAAKC,SACLA,EAAQC,SACRA,EAAQC,UACRA,EAASC,SACTA,EAAQC,QACRA,EAAOC,SACPA,KACGC,GACAX,EAEEY,EAAQC,EAAY,CACzBX,SACAY,MAAM,IAoCP,OAPAC,GAAU,KACTC,OAAOC,OAAOL,EAAO,CACpBV,SACAY,MAAM,GACL,GACA,CAACZ,IAGHgB,EAACC,GACAlB,IAAKA,EACLM,UAAWa,EACVb,EACA,CAAE,CAACJ,GAAe,IAAKS,EAAMV,QAC7B,mBAEGS,EACJF,QAtBmBY,IACpBZ,IAAUY,IAEThB,GAvBaiB,WACd,MAAMC,IAAanB,EACboB,GAAcZ,EAAMV,SAERM,SAAiBA,OAGnCQ,OAAOC,OAAOL,EAAO,CACpBV,OAAQsB,EACRV,MAAOS,IAERb,IAAWc,GAEND,GAELE,YAAW,KACVb,EAAME,MAAO,CAAI,GACf,IAAG,EAMOY,EAAQ,WAqBpBR,EACC,MAAA,CAAAX,UAAWa,EAAW,uBAAwB,CAC7C,sBAAuBR,EAAME,gBAG7BF,EAAMV,OAASE,GAASE,EAAWA,KAIxC"}
@@ -0,0 +1,2 @@
1
+ import{jsxs as e,jsx as r}from"react/jsx-runtime";import a from"classnames";const d=d=>{const{hideShadow:c,border:i,className:s,children:o,header:t,footer:l,...n}=d;return e("div",{className:a("i-card",s,{shadow:!c,"i-card-bordered":i}),...n,children:[t&&r("div",{className:"i-card-header",children:t}),o&&r("div",{className:"i-card-content",children:o}),l&&r("div",{className:"i-card-footer",children:l})]})};export{d as default};
2
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sources":["../../../packages/components/card/card.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ICard } from \"./type\";\n\nconst Card = (props: ICard) => {\n\tconst {\n\t\thideShadow,\n\t\tborder,\n\t\tclassName,\n\t\tchildren,\n\t\theader,\n\t\tfooter,\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-card\", className, {\n\t\t\t\tshadow: !hideShadow,\n\t\t\t\t\"i-card-bordered\": border,\n\t\t\t})}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{header && <div className='i-card-header'>{header}</div>}\n\n\t\t\t{children && <div className='i-card-content'>{children}</div>}\n\n\t\t\t{footer && <div className='i-card-footer'>{footer}</div>}\n\t\t</div>\n\t);\n};\n\nexport default Card;\n"],"names":["Card","props","hideShadow","border","className","children","header","footer","restProps","_jsxs","classNames","shadow","_jsx"],"mappings":"4EAIA,MAAMA,EAAQC,IACb,MAAMC,WACLA,EAAUC,OACVA,EAAMC,UACNA,EAASC,SACTA,EAAQC,OACRA,EAAMC,OACNA,KACGC,GACAP,EAEJ,OACCQ,SACCL,UAAWM,EAAW,SAAUN,EAAW,CAC1CO,QAAST,EACT,kBAAmBC,OAEhBK,EAEHH,SAAA,CAAAC,GAAUM,EAAK,MAAA,CAAAR,UAAU,yBAAiBE,IAE1CD,GAAYO,EAAK,MAAA,CAAAR,UAAU,iBAAkBC,SAAAA,IAE7CE,GAAUK,EAAA,MAAA,CAAKR,UAAU,gBAAiBC,SAAAE,MACtC"}
@@ -0,0 +1,2 @@
1
+ import r from"./card.js";export{r as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{jsxs as e,jsx as a}from"react/jsx-runtime";import{formatOption as l}from"../../js/utils.js";import{useReactive as i}from"ahooks";import n from"classnames";import{useMemo as o,useEffect as s}from"react";import t from"./item.js";function r(r){const{label:c,name:m,options:u=[],value:p="",type:d="default",optionInline:b=!0,labelInline:h,disabled:v,status:f="normal",message:x,required:k,className:N,renderItem:I,onChange:g,...j}=r,y=i({value:p}),C=o((()=>l(u)),[u]);return s((()=>{y.value=p}),[p]),e("div",{className:n("i-checkbox i-input-label",{[`i-checkbox-${f}`]:"normal"!==f,"i-input-inline":h},N),...j,children:[c&&e("span",{className:"i-input-label-text",children:[k&&a("span",{className:"error",children:"*"}),c,x&&a("p",{className:"i-checkbox-message",children:x})]}),a("div",{className:n("i-checkbox-options",{"i-options-block":!b,"i-checkbox-options-button":"button"===d}),children:C.map((e=>a(t,{name:m,value:y.value.includes(e.value),optionValue:e.value,type:d,disabled:v||e.disabled,onChange:(a,l)=>((e,a,l)=>{const i=[...y.value],n=i.findIndex((e=>e===a.value));e&&n<0?i.push(a.value):!e&&n>-1&&i.splice(n,1),y.value=i,g?.(i,a,l)})(a,e,l),children:I??e.label},e.value)))})]})}r.Item=t;export{r as default};
2
+ //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","sources":["../../../packages/components/checkbox/checkbox.tsx"],"sourcesContent":["import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport CheckboxItem from \"./item\";\nimport type { ICheckbox } from \"./type\";\n\nfunction Checkbox(props: ICheckbox) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions = [],\n\t\tvalue = \"\",\n\t\ttype = \"default\",\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\trequired,\n\t\tclassName,\n\t\trenderItem,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive<{\n\t\tvalue: any;\n\t}>({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (checked, opt, e) => {\n\t\tconst group = [...state.value];\n\t\tconst i = group.findIndex((item) => item === opt.value);\n\n\t\tif (checked && i < 0) {\n\t\t\tgroup.push(opt.value);\n\t\t} else if (!checked && i > -1) {\n\t\t\tgroup.splice(i, 1);\n\t\t}\n\n\t\tstate.value = group;\n\t\tonChange?.(group, opt, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-checkbox-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-checkbox-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-checkbox-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CheckboxItem\n\t\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tvalue={state.value.includes(option.value)}\n\t\t\t\t\t\t\toptionValue={option.value}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\t\tonChange={(checked, e) =>\n\t\t\t\t\t\t\t\thandleChange(checked, option, e)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderItem ?? option.label}\n\t\t\t\t\t\t</CheckboxItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nCheckbox.Item = CheckboxItem;\n\nexport default Checkbox;\n"],"names":["Checkbox","props","label","name","options","value","type","optionInline","labelInline","disabled","status","message","required","className","renderItem","onChange","restProps","state","useReactive","formattedOptions","useMemo","formatOption","useEffect","_jsxs","classNames","children","_jsx","map","option","CheckboxItem","includes","optionValue","checked","e","opt","group","i","findIndex","item","push","splice","handleChange","Item"],"mappings":"0OASA,SAASA,EAASC,GACjB,MAAMC,MACLA,EAAKC,KACLA,EAAIC,QACJA,EAAU,GAAEC,MACZA,EAAQ,GAAEC,KACVA,EAAO,UAASC,aAChBA,GAAe,EAAIC,YACnBA,EAAWC,SACXA,EAAQC,OACRA,EAAS,SAAQC,QACjBA,EAAOC,SACPA,EAAQC,UACRA,EAASC,WACTA,EAAUC,SACVA,KACGC,GACAf,EAEEgB,EAAQC,EAEX,CACFb,UAGKc,EAAmBC,GAAQ,IAAMC,EAAajB,IAAU,CAACA,IAoB/D,OAJAkB,GAAU,KACTL,EAAMZ,MAAQA,CAAK,GACjB,CAACA,IAGHkB,EACC,MAAA,CAAAV,UAAWW,EACV,2BACA,CACC,CAAC,cAAcd,KAAsB,WAAXA,EAC1B,iBAAkBF,GAGnBK,MAEGG,EAEHS,SAAA,CAAAvB,GACAqB,EAAA,OAAA,CAAMV,UAAU,qBACdY,SAAA,CAAAb,GAAYc,EAAM,OAAA,CAAAb,UAAU,QAAOY,SAAA,MACnCvB,EAEAS,GAAWe,OAAGb,UAAU,qBAAsBY,SAAAd,OAIjDe,EACC,MAAA,CAAAb,UAAWW,EAAW,qBAAsB,CAC3C,mBAAoBjB,EACpB,4BAAsC,WAATD,IAC5BmB,SAEDN,EAAiBQ,KAAKC,GAErBF,EAACG,EAAY,CAEZ1B,KAAMA,EACNE,MAAOY,EAAMZ,MAAMyB,SAASF,EAAOvB,OACnC0B,YAAaH,EAAOvB,MACpBC,KAAMA,EACNG,SAAUA,GAAYmB,EAAOnB,SAC7BM,SAAU,CAACiB,EAASC,IAvDL,EAACD,EAASE,EAAKD,KACnC,MAAME,EAAQ,IAAIlB,EAAMZ,OAClB+B,EAAID,EAAME,WAAWC,GAASA,IAASJ,EAAI7B,QAE7C2B,GAAWI,EAAI,EAClBD,EAAMI,KAAKL,EAAI7B,QACJ2B,GAAWI,MACtBD,EAAMK,OAAOJ,EAAG,GAGjBnB,EAAMZ,MAAQ8B,EACdpB,IAAWoB,EAAOD,EAAKD,EAAE,EA6CnBQ,CAAaT,EAASJ,EAAQK,GAG9BR,SAAAX,GAAcc,EAAO1B,OAVjB0B,EAAOvB,aAiBnB,CAEAL,EAAS0C,KAAOb"}
@@ -0,0 +1,2 @@
1
+ import o from"./checkbox.js";export{o as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{jsxs as e,jsx as a}from"react/jsx-runtime";import{useReactive as s}from"ahooks";import t from"classnames";import{useEffect as c}from"react";function o(o){const{type:l="default",label:n,name:i,value:m=!1,className:r,status:u="normal",message:h,disabled:p,partof:b,optionValue:d,children:f,onChange:k,...x}=o,g=s({value:m,status:u,message:h}),v="function"==typeof f;return c((()=>{g.value=m}),[m]),e("label",{className:t("i-checkbox-item",{[`i-checkbox-${g.status}`]:"normal"!==g.status,disabled:p},r),...x,children:[a("input",{type:"checkbox",name:i,className:t("i-checkbox-input",{[`i-checkbox-${l}`]:!b,"i-checkbox-partof":b}),checked:g.value,disabled:p,onChange:e=>{const a=e.target.checked;Object.assign(g,{value:a,status:u,message:h}),k?.(a,e)}}),v?f(g.value,d):a("span",{className:"i-checkbox-text",children:f||n}),g.message&&e("span",{className:"i-checkbox-message",children:["*",g.message]})]})}export{o as default};
2
+ //# sourceMappingURL=item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sources":["../../../packages/components/checkbox/item.tsx"],"sourcesContent":["import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { ChangeEvent, useEffect } from \"react\";\nimport { ICheckboxItem } from \"./type\";\n\nexport default function CheckboxItem(props: ICheckboxItem) {\n\tconst {\n\t\ttype = \"default\",\n\t\tlabel,\n\t\tname,\n\t\tvalue = false,\n\t\tclassName,\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\tdisabled,\n\t\tpartof,\n\t\toptionValue,\n\t\tchildren,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t\tstatus,\n\t\tmessage,\n\t});\n\tconst isChildrenFn = typeof children === \"function\";\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst checked = e.target.checked;\n\n\t\tObject.assign(state, {\n\t\t\tvalue: checked,\n\t\t\tstatus,\n\t\t\tmessage,\n\t\t});\n\n\t\tonChange?.(checked, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<label\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-checkbox-item\",\n\t\t\t\t{\n\t\t\t\t\t[`i-checkbox-${state.status}`]: state.status !== \"normal\",\n\t\t\t\t\tdisabled,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t<input\n\t\t\t\ttype='checkbox'\n\t\t\t\tname={name}\n\t\t\t\tclassName={classNames(\"i-checkbox-input\", {\n\t\t\t\t\t[`i-checkbox-${type}`]: !partof,\n\t\t\t\t\t\"i-checkbox-partof\": partof,\n\t\t\t\t})}\n\t\t\t\tchecked={state.value}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\n\t\t\t{isChildrenFn ? (\n\t\t\t\tchildren(state.value, optionValue)\n\t\t\t) : (\n\t\t\t\t<span className='i-checkbox-text'>{children || label}</span>\n\t\t\t)}\n\n\t\t\t{state.message && (\n\t\t\t\t<span className='i-checkbox-message'>*{state.message}</span>\n\t\t\t)}\n\t\t</label>\n\t);\n}\n"],"names":["CheckboxItem","props","type","label","name","value","className","status","message","disabled","partof","optionValue","children","onChange","restProps","state","useReactive","isChildrenFn","useEffect","_jsxs","classNames","_jsx","checked","e","target","Object","assign"],"mappings":"mJAKwB,SAAAA,EAAaC,GACpC,MAAMC,KACLA,EAAO,UAASC,MAChBA,EAAKC,KACLA,EAAIC,MACJA,GAAQ,EAAKC,UACbA,EAASC,OACTA,EAAS,SAAQC,QACjBA,EAAOC,SACPA,EAAQC,OACRA,EAAMC,YACNA,EAAWC,SACXA,EAAQC,SACRA,KACGC,GACAb,EAEEc,EAAQC,EAAY,CACzBX,QACAE,SACAC,YAEKS,EAAmC,mBAAbL,EAkB5B,OAJAM,GAAU,KACTH,EAAMV,MAAQA,CAAK,GACjB,CAACA,IAGHc,EACC,QAAA,CAAAb,UAAWc,EACV,kBACA,CACC,CAAC,cAAcL,EAAMR,UAA4B,WAAjBQ,EAAMR,OACtCE,YAEDH,MAEGQ,EAEJF,SAAA,CAAAS,EAAA,QAAA,CACCnB,KAAK,WACLE,KAAMA,EACNE,UAAWc,EAAW,mBAAoB,CACzC,CAAC,cAAclB,MAAUQ,EACzB,oBAAqBA,IAEtBY,QAASP,EAAMV,MACfI,SAAUA,EACVI,SArCmBU,IACrB,MAAMD,EAAUC,EAAEC,OAAOF,QAEzBG,OAAOC,OAAOX,EAAO,CACpBV,MAAOiB,EACPf,SACAC,YAGDK,IAAWS,EAASC,EAAE,IA+BpBN,EACAL,EAASG,EAAMV,MAAOM,GAEtBU,EAAA,OAAA,CAAMf,UAAU,kBAAiBM,SAAEA,GAAYT,IAG/CY,EAAMP,SACNW,EAAA,OAAA,CAAMb,UAAU,qBAAoBM,SAAA,CAAA,IAAGG,EAAMP,aAIjD"}
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as i}from"react/jsx-runtime";import{MinusRound as t,PlusRound as a}from"@ricons/material";import{useReactive as c}from"ahooks";import l from"classnames";import{useMemo as o,Children as r}from"react";import s from"../utils/helpericon/helpericon.js";import n from"./item.js";const d=n=>{const{active:d,items:m,multiple:p,border:v,headerClickable:h,className:f,children:u,renderToggle:b=i=>e(i?t:a,{}),onCollapse:k,...N}=n,y=c({active:d}),g=o((()=>m||(u&&r.map(u,((e,i)=>{const{key:t,props:a}=e,{title:c,children:l,content:o,disabled:r,...s}=a;return{...s,key:t||i,title:c,content:l||o,disabled:r}}))||[])),[u]),C=(e,i)=>{const{key:t,disabled:a}=e;if(i?.stopPropagation(),a)return;if(!p)return y.active=y.active===t?void 0:t,void k?.(t,void 0!==y.active);Array.isArray(y.active)||(y.active=[]);const c=y.active.findIndex((e=>e===t));c>-1?y.active.splice(c,1):void 0!==t&&y.active.push(t),k?.(t,c<0)};return e("div",{className:l("i-collapse",{"i-collapse-bordered":v},f),...N,children:g.map((t=>{const{key:a,title:c,content:o,disabled:r,className:n,...d}=t,m=p?(y.active||[]).includes(a):y.active===a;return i("div",{className:l("i-collapse-item",n,{"i-collapse-active":m,"i-collapse-disabled":r}),...d,children:[i("div",{className:"i-collapse-header",onClick:()=>(e=>{h&&C(e)})(t),children:[c,e(s,{active:!0,className:"i-collapse-toggle",icon:b(m),onClick:e=>C(t,e)})]}),e("div",{className:"i-collapse-content",children:o})]},a)}))})};d.Item=n;export{d as default};
2
+ //# sourceMappingURL=collapse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collapse.js","sources":["../../../packages/components/collapse/collapse.tsx"],"sourcesContent":["import { MinusRound, PlusRound } from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { Children, useMemo } from \"react\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { ICollapse, ICollapseItem, TKey } from \"./type\";\n\nconst Collapse = (props: ICollapse) => {\n\tconst {\n\t\tactive,\n\t\titems,\n\t\tmultiple,\n\t\tborder,\n\t\theaderClickable,\n\t\tclassName,\n\t\tchildren,\n\t\trenderToggle = (active: boolean) =>\n\t\t\tactive ? <MinusRound /> : <PlusRound />,\n\t\tonCollapse,\n\t\t...restProps\n\t} = props;\n\n\tconst state = useReactive({\n\t\tactive,\n\t});\n\n\tconst collapses = useMemo(() => {\n\t\tif (!items) {\n\t\t\tif (!children) return [];\n\n\t\t\treturn (\n\t\t\t\tChildren.map(children, (node, i) => {\n\t\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\t\tkey?: TKey;\n\t\t\t\t\t\tprops?: any;\n\t\t\t\t\t};\n\t\t\t\t\tconst { title, children, content, disabled, ...restProps } =\n\t\t\t\t\t\tnodeProps;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...restProps,\n\t\t\t\t\t\tkey: key || i,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tcontent: children || content,\n\t\t\t\t\t\tdisabled,\n\t\t\t\t\t};\n\t\t\t\t}) || []\n\t\t\t);\n\t\t}\n\n\t\treturn items;\n\t}, [children]);\n\n\tconst handleHeaderClick = (item: ICollapseItem) => {\n\t\tif (!headerClickable) return;\n\n\t\thandleToggle(item);\n\t};\n\n\tconst handleToggle = (item: ICollapseItem, e?) => {\n\t\tconst { key, disabled } = item;\n\t\te?.stopPropagation();\n\t\tif (disabled) return;\n\n\t\tif (!multiple) {\n\t\t\tstate.active = state.active === key ? undefined : key;\n\t\t\tonCollapse?.(key as TKey, state.active !== undefined);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Array.isArray(state.active)) state.active = [];\n\n\t\tconst i = state.active.findIndex((k) => k === key);\n\n\t\tif (i > -1) {\n\t\t\tstate.active.splice(i, 1);\n\t\t} else {\n\t\t\tkey !== undefined && state.active.push(key);\n\t\t}\n\t\tonCollapse?.(key as TKey, i < 0);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-collapse\",\n\t\t\t\t{\n\t\t\t\t\t\"i-collapse-bordered\": border,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{collapses.map((item) => {\n\t\t\t\tconst {\n\t\t\t\t\tkey,\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps\n\t\t\t\t} = item;\n\t\t\t\tconst isActive = multiple\n\t\t\t\t\t? ((state.active as TKey[]) || []).includes(key)\n\t\t\t\t\t: state.active === key;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\tclassName={classNames(\"i-collapse-item\", className, {\n\t\t\t\t\t\t\t\"i-collapse-active\": isActive,\n\t\t\t\t\t\t\t\"i-collapse-disabled\": disabled,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\t{...restProps}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName='i-collapse-header'\n\t\t\t\t\t\t\tonClick={() => handleHeaderClick(item)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\tclassName='i-collapse-toggle'\n\t\t\t\t\t\t\t\ticon={renderToggle(isActive)}\n\t\t\t\t\t\t\t\tonClick={(e) => handleToggle(item, e)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className='i-collapse-content'>{content}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nCollapse.Item = Item;\n\nexport default Collapse;\n"],"names":["Collapse","props","active","items","multiple","border","headerClickable","className","children","renderToggle","_jsx","MinusRound","PlusRound","onCollapse","restProps","state","useReactive","collapses","useMemo","Children","map","node","i","key","nodeProps","title","content","disabled","handleToggle","item","e","stopPropagation","undefined","Array","isArray","findIndex","k","splice","push","classNames","isActive","includes","_jsxs","onClick","handleHeaderClick","Helpericon","icon","Item"],"mappings":"sSASA,MAAMA,EAAYC,IACjB,MAAMC,OACLA,EAAMC,MACNA,EAAKC,SACLA,EAAQC,OACRA,EAAMC,gBACNA,EAAeC,UACfA,EAASC,SACTA,EAAQC,aACRA,EAAgBP,GACNQ,EAATR,EAAUS,EAAiBC,EAAJ,IAAgBC,WACxCA,KACGC,GACAb,EAEEc,EAAQC,EAAY,CACzBd,WAGKe,EAAYC,GAAQ,IACpBf,IACCK,GAGJW,EAASC,IAAIZ,GAAU,CAACa,EAAMC,KAC7B,MAAMC,IAAEA,EAAKtB,MAAOuB,GAAcH,GAI5BI,MAAEA,EAAKjB,SAAEA,EAAQkB,QAAEA,EAAOC,SAAEA,KAAab,GAC9CU,EAED,MAAO,IACHV,EACHS,IAAKA,GAAOD,EACZG,QACAC,QAASlB,GAAYkB,EACrBC,WACA,KAjBmB,KAuBrB,CAACnB,IAQEoB,EAAe,CAACC,EAAqBC,KAC1C,MAAMP,IAAEA,EAAGI,SAAEA,GAAaE,EAE1B,GADAC,GAAGC,kBACCJ,EAAU,OAEd,IAAKvB,EAGJ,OAFAW,EAAMb,OAASa,EAAMb,SAAWqB,OAAMS,EAAYT,OAClDV,IAAaU,OAA8BS,IAAjBjB,EAAMb,QAI5B+B,MAAMC,QAAQnB,EAAMb,UAASa,EAAMb,OAAS,IAEjD,MAAMoB,EAAIP,EAAMb,OAAOiC,WAAWC,GAAMA,IAAMb,IAE1CD,GAAI,EACPP,EAAMb,OAAOmC,OAAOf,EAAG,QAEfU,IAART,GAAqBR,EAAMb,OAAOoC,KAAKf,GAExCV,IAAaU,EAAaD,EAAI,EAAE,EAGjC,OACCZ,EACC,MAAA,CAAAH,UAAWgC,EACV,aACA,CACC,sBAAuBlC,GAExBE,MAEGO,EAEHN,SAAAS,EAAUG,KAAKS,IACf,MAAMN,IACLA,EAAGE,MACHA,EAAKC,QACLA,EAAOC,SACPA,EAAQpB,UACRA,KACGO,GACAe,EACEW,EAAWpC,GACZW,EAAMb,QAAqB,IAAIuC,SAASlB,GAC1CR,EAAMb,SAAWqB,EAEpB,OACCmB,SAECnC,UAAWgC,EAAW,kBAAmBhC,EAAW,CACnD,oBAAqBiC,EACrB,sBAAuBb,OAEpBb,EAEJN,SAAA,CAAAkC,EAAA,MAAA,CACCnC,UAAU,oBACVoC,QAAS,IAhEW,CAACd,IACrBvB,GAELsB,EAAaC,EAAK,EA6DEe,CAAkBf,GAAKrB,SAAA,CAErCiB,EAEDf,EAACmC,EACA,CAAA3C,QACA,EAAAK,UAAU,oBACVuC,KAAMrC,EAAa+B,GACnBG,QAAUb,GAAMF,EAAaC,EAAMC,QAIrCpB,EAAK,MAAA,CAAAH,UAAU,qBAAsBC,SAAAkB,MArBhCH,EAsBA,KAGH,EAIRvB,EAAS+C,KAAOA"}
@@ -0,0 +1,2 @@
1
+ import o from"./collapse.js";export{o as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{jsx as r,Fragment as t}from"react/jsx-runtime";function e(e){return r(t,{})}export{e as default};
2
+ //# sourceMappingURL=item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sources":["../../../packages/components/collapse/item.tsx"],"sourcesContent":["import { ICollapseItem } from \"./type\";\n\nexport default function Item(props: ICollapseItem) {\n\treturn <></>;\n}\n"],"names":["Item","props","_jsx"],"mappings":"sDAEwB,SAAAA,EAAKC,GAC5B,OAAOC,OACR"}
@@ -0,0 +1,2 @@
1
+ import{jsx as i}from"react/jsx-runtime";import l from"classnames";function e({justify:i,col:l,row:e,colSpan:r=1,rowSpan:a=1}){return{"--datagrid-justify":i,gridArea:`${e+1} / ${l+1} / ${e+1+a} / ${l+1+r}`,insetInline:`var(--datagrid-cell-inset-${l})`}}function r(r){const{column:a,row:n,col:t,data:o,cellEllipsis:c,onCellClick:d,onCellDoubleClick:s}=r,{id:u,fixed:f,justify:m,rowSpan:p,render:g}=a,w=e({justify:m,fixed:f,col:t,row:n,rowSpan:p});return i("div",{className:l("i-datagrid-cell",{[`i-datagrid-cell-fixed-${f}`]:f}),"data-col":u,style:w,onClick:i=>d?.(o,a,n,t,i),onDoubleClick:i=>s?.(o,a,n,t,i),children:g?.(o[u],o,t)??i("div",{className:l("i-datagrid-cell-content",{"i-datagrid-cell-content-ellipsis":c}),children:o[u]})})}export{r as Cell,e as getCellStyle};
2
+ //# sourceMappingURL=cell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell.js","sources":["../../../packages/components/datagrid/cell.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { ICell, IColumn } from \"./type\";\n\nexport function getCellStyle({\n\tjustify,\n\tcol,\n\trow,\n\tcolSpan = 1,\n\trowSpan = 1,\n}: Pick<IColumn, \"justify\" | \"fixed\"> & {\n\tcol: number;\n\trow: number;\n\tcolSpan?: number;\n\trowSpan?: number;\n\tisHeader?: boolean;\n}) {\n\tconst style = {\n\t\t\"--datagrid-justify\": justify,\n\t\tgridArea: `${row + 1} / ${col + 1} / ${row + 1 + rowSpan} / ${\n\t\t\tcol + 1 + colSpan\n\t\t}`,\n\t\tinsetInline: `var(--datagrid-cell-inset-${col})`,\n\t};\n\n\treturn style;\n}\n\nexport function Cell(props: ICell) {\n\tconst {\n\t\tcolumn,\n\t\trow,\n\t\tcol,\n\t\tdata,\n\t\tcellEllipsis,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\tconst { id, fixed, justify, rowSpan, render } = column;\n\tconst style = getCellStyle({ justify, fixed, col, row, rowSpan });\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t[`i-datagrid-cell-fixed-${fixed}`]: fixed,\n\t\t\t})}\n\t\t\tdata-col={id}\n\t\t\tstyle={style}\n\t\t\tonClick={(e) => onCellClick?.(data, column, row, col, e)}\n\t\t\tonDoubleClick={(e) =>\n\t\t\t\tonCellDoubleClick?.(data, column, row, col, e)\n\t\t\t}\n\t\t>\n\t\t\t{render?.(data[id], data, col) ?? (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-datagrid-cell-content\", {\n\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\": cellEllipsis,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{data[id]}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"names":["getCellStyle","justify","col","row","colSpan","rowSpan","gridArea","insetInline","Cell","props","column","data","cellEllipsis","onCellClick","onCellDoubleClick","id","fixed","render","style","_jsx","className","classNames","onClick","e","onDoubleClick","children"],"mappings":"2EAGgBA,GAAaC,QAC5BA,EAAOC,IACPA,EAAGC,IACHA,EAAGC,QACHA,EAAU,EAACC,QACXA,EAAU,IAgBV,MARc,CACb,qBAAsBJ,EACtBK,SAAU,GAAGH,EAAM,OAAOD,EAAM,OAAOC,EAAM,EAAIE,OAChDH,EAAM,EAAIE,IAEXG,YAAa,6BAA6BL,KAI5C,CAEM,SAAUM,EAAKC,GACpB,MAAMC,OACLA,EAAMP,IACNA,EAAGD,IACHA,EAAGS,KACHA,EAAIC,aACJA,EAAYC,YACZA,EAAWC,kBACXA,GACGL,GACEM,GAAEA,EAAEC,MAAEA,EAAKf,QAAEA,EAAOI,QAAEA,EAAOY,OAAEA,GAAWP,EAC1CQ,EAAQlB,EAAa,CAAEC,UAASe,QAAOd,MAAKC,MAAKE,YAEvD,OACCc,EACC,MAAA,CAAAC,UAAWC,EAAW,kBAAmB,CACxC,CAAC,yBAAyBL,KAAUA,IAE3B,WAAAD,EACVG,MAAOA,EACPI,QAAUC,GAAMV,IAAcF,EAAMD,EAAQP,EAAKD,EAAKqB,GACtDC,cAAgBD,GACfT,IAAoBH,EAAMD,EAAQP,EAAKD,EAAKqB,GAAEE,SAG9CR,IAASN,EAAKI,GAAKJ,EAAMT,IACzBiB,SACCC,UAAWC,EAAW,0BAA2B,CAChD,mCAAoCT,IACnCa,SAEDd,EAAKI,MAKX"}
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as r}from"react/jsx-runtime";import{getNextSorter as t}from"../../js/utils.js";import{useReactive as o}from"ahooks";import i from"classnames";import{useRef as s,useMemo as l,useEffect as n}from"react";import a from"react-custom-scrollbars-2";import d from"../loading/loading.js";import c from"../utils/empty/index.js";import m,{Header as p}from"./row.js";const u=u=>{const{data:f=[],columns:g=[],border:h,striped:y,header:w=!0,resizable:C,cellPadding:j=".5em",cellEllipsis:x,empty:T=e(c,{}),loading:b,height:k="unset",style:B,className:H,renderLoading:N=()=>e(d,{size:"1.5em",className:"color-3"}),onCellClick:z,onRowClick:S,onHeaderClick:$,onSort:v,onScroll:E,onResize:R}=u,W=s(null),q=s(null),A=o({rows:f,widths:g.map((e=>e.width??"min-content")),sortBy:"",sortType:""}),L=l((()=>{const{widths:e}=A,r={...B,"--grid-template-columns":e.map((e=>"number"==typeof e?`${e}px`:e)).join(" ")};if(!C)return r;const t=g.map(((r,t)=>{const{fixed:o}=r;return o?e[t]:0}));return g.map(((e,o)=>{const{fixed:i}=e;if(i)if(0===o)r["--datagrid-cell-inset-0"]=0;else if(o===t.length-1)r["--datagrid-cell-inset-"+(t.length-1)]="auto 0";else{const e="left"===i,s=(e?t.slice(0,o):t.slice(o+1)).reduce(((e,r)=>e+r))+"px",l=e?`${s} auto`:`auto ${s}`;r[`--datagrid-cell-inset-${o}`]=l}})),r}),[A.widths,C]),M=l((()=>{const{sortBy:e,sortType:r}=A;if(e&&!v){const t=g.find((r=>r.id===e))?.sorter,o="function"==typeof t?t:(r,t)=>t[e]-r[e],i=[...f].sort(o);return"desc"===r?i:i.reverse()}return f}),[f,g,A.sortBy,A.sortType]);n((()=>{if(!W.current)return;const{current:e}=W,r=e.querySelector(".i-datagrid-row")?.children;r?.length&&(A.widths=Array.from(r).map((e=>e.offsetWidth)))}),[g,C]),n((()=>{b&&q.current?.scrollTop(0)}),[b]);const O={"--cell-padding":j,...L};return r(a,{ref:q,autoHide:!0,autoHeight:!0,autoHeightMax:k,style:O,className:i("i-datagrid-container",H,{"i-datagrid-bordered":h,"i-datagrid-striped":y}),renderView:r=>e("div",{...r,className:i({"i-datagrid-loading":b})}),onScroll:E,children:[r("div",{ref:W,className:"i-datagrid",children:[w&&e(p,{columns:g,resizable:C,sortType:A.sortType,sortBy:A.sortBy,cellEllipsis:x,onWidthChange:(e,r)=>{if(!C)return;const[...t]=A.widths;t[e]=r,A.widths=t,R?.(g[e],r)},onHeaderClick:(e,r)=>{if(e?.sorter){const[r,o]=t(A.sortBy,A.sortType,e.id);Object.assign(A,{sortBy:r,sortType:o}),v?.(r,o)}$?.(e,r)}}),M.map(((r,t)=>e(m,{row:t+(w?1:0),data:r,cellEllipsis:x,columns:g,onCellClick:z,onRowClick:S},t))),M.length<1&&T]}),b&&N()]})};export{u as default};
2
+ //# sourceMappingURL=datagrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datagrid.js","sources":["../../../packages/components/datagrid/datagrid.tsx"],"sourcesContent":["import { getNextSorter } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { CSSProperties, MouseEvent, useEffect, useMemo, useRef } from \"react\";\nimport ScrollContainer, { Scrollbars } from \"react-custom-scrollbars-2\";\nimport Loading from \"../loading\";\nimport Empty from \"../utils/empty\";\nimport \"./index.css\";\nimport Row, { Header } from \"./row\";\nimport type { IColumn, IData, IDatagrid, TDatagridState } from \"./type\";\n\nconst Datagrid = (props: IDatagrid) => {\n\tconst {\n\t\tdata = [],\n\t\tcolumns = [],\n\t\tborder,\n\t\tstriped,\n\t\theader = true,\n\t\tresizable,\n\t\tcellPadding = \".5em\",\n\t\tcellEllipsis,\n\t\tempty = <Empty />,\n\t\tloading,\n\t\theight = \"unset\",\n\t\tstyle,\n\t\tclassName,\n\t\trenderLoading = () => <Loading size='1.5em' className='color-3' />,\n\t\tonCellClick,\n\t\tonRowClick,\n\t\tonHeaderClick,\n\t\tonSort,\n\t\tonScroll,\n\t\tonResize,\n\t} = props;\n\n\tconst container = useRef<HTMLDivElement>(null);\n\tconst scrollbar = useRef<Scrollbars>(null);\n\tconst state = useReactive<TDatagridState>({\n\t\trows: data,\n\t\twidths: columns.map((col) => col.width ?? \"min-content\"),\n\t\tsortBy: \"\",\n\t\tsortType: \"\",\n\t});\n\n\tconst styles = useMemo(() => {\n\t\tconst { widths } = state;\n\n\t\tconst o = {\n\t\t\t...style,\n\t\t\t\"--grid-template-columns\": widths\n\t\t\t\t.map((w) => {\n\t\t\t\t\treturn typeof w === \"number\" ? `${w}px` : w;\n\t\t\t\t})\n\t\t\t\t.join(\" \"),\n\t\t};\n\n\t\tif (!resizable) return o;\n\n\t\tconst fws = columns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return 0;\n\t\t\treturn widths[i] as number;\n\t\t});\n\n\t\tcolumns.map((col, i) => {\n\t\t\tconst { fixed } = col;\n\t\t\tif (!fixed) return;\n\t\t\tif (i === 0) {\n\t\t\t\to[`--datagrid-cell-inset-0`] = 0;\n\t\t\t} else if (i === fws.length - 1) {\n\t\t\t\to[`--datagrid-cell-inset-${fws.length - 1}`] = \"auto 0\";\n\t\t\t} else {\n\t\t\t\tconst isLeft = fixed === \"left\";\n\t\t\t\tconst before = isLeft ? fws.slice(0, i) : fws.slice(i + 1);\n\t\t\t\tconst sum = before.reduce((pre, cur) => pre + cur) + \"px\";\n\t\t\t\tconst result = isLeft ? `${sum} auto` : `auto ${sum}`;\n\t\t\t\to[`--datagrid-cell-inset-${i}`] = result;\n\t\t\t}\n\t\t});\n\n\t\treturn o;\n\t}, [state.widths, resizable]);\n\n\tconst handleWidthChange = (i: number, w: number) => {\n\t\tif (!resizable) return;\n\n\t\tconst [...ws] = state.widths;\n\t\tws[i] = w;\n\t\tstate.widths = ws;\n\t\tonResize?.(columns[i], w);\n\t};\n\n\tconst handleHeaderClick = (column?: IColumn, e?: MouseEvent) => {\n\t\tif (column?.sorter) {\n\t\t\tconst [sortBy, sortType] = getNextSorter(\n\t\t\t\tstate.sortBy,\n\t\t\t\tstate.sortType,\n\t\t\t\tcolumn.id\n\t\t\t);\n\n\t\t\tObject.assign(state, {\n\t\t\t\tsortBy,\n\t\t\t\tsortType,\n\t\t\t});\n\n\t\t\tonSort?.(sortBy, sortType);\n\t\t}\n\n\t\tonHeaderClick?.(column, e);\n\t};\n\n\tconst rows = useMemo(() => {\n\t\tconst { sortBy, sortType } = state;\n\n\t\tif (sortBy && !onSort) {\n\t\t\tconst sorter = columns.find((col) => col.id === sortBy)?.sorter;\n\t\t\tconst sortFn =\n\t\t\t\ttypeof sorter === \"function\"\n\t\t\t\t\t? sorter\n\t\t\t\t\t: (a: IData, b: IData) => b[sortBy] - a[sortBy];\n\t\t\tconst sorted = [...data].sort(sortFn);\n\n\t\t\treturn sortType === \"desc\" ? sorted : sorted.reverse();\n\t\t}\n\n\t\treturn data;\n\t}, [data, columns, state.sortBy, state.sortType]);\n\n\tuseEffect(() => {\n\t\tif (!container.current) return;\n\t\tconst { current: div } = container;\n\t\tconst tds = div.querySelector(\".i-datagrid-row\")?.children;\n\t\tif (!tds?.length) return;\n\t\tstate.widths = Array.from(tds).map((node: any) => node.offsetWidth);\n\t}, [columns, resizable]);\n\n\tuseEffect(() => {\n\t\tloading && scrollbar.current?.scrollTop(0);\n\t}, [loading]);\n\n\tconst scrollBarStyle = {\n\t\t\"--cell-padding\": cellPadding,\n\t\t...styles,\n\t} as CSSProperties;\n\n\treturn (\n\t\t<ScrollContainer\n\t\t\tref={scrollbar}\n\t\t\tautoHide\n\t\t\tautoHeight\n\t\t\tautoHeightMax={height}\n\t\t\tstyle={scrollBarStyle}\n\t\t\tclassName={classNames(\"i-datagrid-container\", className, {\n\t\t\t\t\"i-datagrid-bordered\": border,\n\t\t\t\t\"i-datagrid-striped\": striped,\n\t\t\t})}\n\t\t\trenderView={(props) => (\n\t\t\t\t<div\n\t\t\t\t\t{...props}\n\t\t\t\t\tclassName={classNames({ \"i-datagrid-loading\": loading })}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\tonScroll={onScroll}\n\t\t>\n\t\t\t<div ref={container} className='i-datagrid'>\n\t\t\t\t{header && (\n\t\t\t\t\t<Header\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tresizable={resizable}\n\t\t\t\t\t\tsortType={state.sortType}\n\t\t\t\t\t\tsortBy={state.sortBy}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tonWidthChange={handleWidthChange}\n\t\t\t\t\t\tonHeaderClick={handleHeaderClick}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{rows.map((row, i) => (\n\t\t\t\t\t<Row\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\trow={i + (header ? 1 : 0)}\n\t\t\t\t\t\tdata={row}\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\t\tonRowClick={onRowClick}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\n\t\t\t\t{rows.length < 1 && empty}\n\t\t\t</div>\n\n\t\t\t{loading && renderLoading()}\n\t\t</ScrollContainer>\n\t);\n};\n\nexport default Datagrid;\n"],"names":["Datagrid","props","data","columns","border","striped","header","resizable","cellPadding","cellEllipsis","empty","_jsx","Empty","loading","height","style","className","renderLoading","Loading","size","onCellClick","onRowClick","onHeaderClick","onSort","onScroll","onResize","container","useRef","scrollbar","state","useReactive","rows","widths","map","col","width","sortBy","sortType","styles","useMemo","o","w","join","fws","i","fixed","length","isLeft","sum","slice","reduce","pre","cur","result","sorter","find","id","sortFn","a","b","sorted","sort","reverse","useEffect","current","div","tds","querySelector","children","Array","from","node","offsetWidth","scrollTop","scrollBarStyle","_jsxs","ScrollContainer","ref","autoHide","autoHeight","autoHeightMax","classNames","renderView","Header","onWidthChange","ws","column","e","getNextSorter","Object","assign","row","Row"],"mappings":"wXAWA,MAAMA,EAAYC,IACjB,MAAMC,KACLA,EAAO,GAAEC,QACTA,EAAU,GAAEC,OACZA,EAAMC,QACNA,EAAOC,OACPA,GAAS,EAAIC,UACbA,EAASC,YACTA,EAAc,OAAMC,aACpBA,EAAYC,MACZA,EAAQC,EAACC,EAAQ,CAAA,GAAAC,QACjBA,EAAOC,OACPA,EAAS,QAAOC,MAChBA,EAAKC,UACLA,EAASC,cACTA,EAAgB,IAAMN,EAACO,EAAQ,CAAAC,KAAK,QAAQH,UAAU,YAAYI,YAClEA,EAAWC,WACXA,EAAUC,cACVA,EAAaC,OACbA,EAAMC,SACNA,EAAQC,SACRA,GACGxB,EAEEyB,EAAYC,EAAuB,MACnCC,EAAYD,EAAmB,MAC/BE,EAAQC,EAA4B,CACzCC,KAAM7B,EACN8B,OAAQ7B,EAAQ8B,KAAKC,GAAQA,EAAIC,OAAS,gBAC1CC,OAAQ,GACRC,SAAU,KAGLC,EAASC,GAAQ,KACtB,MAAMP,OAAEA,GAAWH,EAEbW,EAAI,IACNzB,EACH,0BAA2BiB,EACzBC,KAAKQ,GACe,iBAANA,EAAiB,GAAGA,MAAQA,IAE1CC,KAAK,MAGR,IAAKnC,EAAW,OAAOiC,EAEvB,MAAMG,EAAMxC,EAAQ8B,KAAI,CAACC,EAAKU,KAC7B,MAAMC,MAAEA,GAAUX,EAClB,OAAKW,EACEb,EAAOY,GADK,CACO,IAmB3B,OAhBAzC,EAAQ8B,KAAI,CAACC,EAAKU,KACjB,MAAMC,MAAEA,GAAUX,EAClB,GAAKW,EACL,GAAU,IAAND,EACHJ,EAAE,2BAA6B,OACzB,GAAII,IAAMD,EAAIG,OAAS,EAC7BN,EAAE,0BAAyBG,EAAIG,OAAS,IAAO,aACzC,CACN,MAAMC,EAAmB,SAAVF,EAETG,GADSD,EAASJ,EAAIM,MAAM,EAAGL,GAAKD,EAAIM,MAAML,EAAI,IACrCM,QAAO,CAACC,EAAKC,IAAQD,EAAMC,IAAO,KAC/CC,EAASN,EAAS,GAAGC,SAAa,QAAQA,IAChDR,EAAE,yBAAyBI,KAAOS,MAI7Bb,CAAC,GACN,CAACX,EAAMG,OAAQzB,IA8BZwB,EAAOQ,GAAQ,KACpB,MAAMH,OAAEA,EAAMC,SAAEA,GAAaR,EAE7B,GAAIO,IAAWb,EAAQ,CACtB,MAAM+B,EAASnD,EAAQoD,MAAMrB,GAAQA,EAAIsB,KAAOpB,KAASkB,OACnDG,EACa,mBAAXH,EACJA,EACA,CAACI,EAAUC,IAAaA,EAAEvB,GAAUsB,EAAEtB,GACpCwB,EAAS,IAAI1D,GAAM2D,KAAKJ,GAE9B,MAAoB,SAAbpB,EAAsBuB,EAASA,EAAOE,UAG9C,OAAO5D,CAAI,GACT,CAACA,EAAMC,EAAS0B,EAAMO,OAAQP,EAAMQ,WAEvC0B,GAAU,KACT,IAAKrC,EAAUsC,QAAS,OACxB,MAAQA,QAASC,GAAQvC,EACnBwC,EAAMD,EAAIE,cAAc,oBAAoBC,SAC7CF,GAAKpB,SACVjB,EAAMG,OAASqC,MAAMC,KAAKJ,GAAKjC,KAAKsC,GAAcA,EAAKC,cAAY,GACjE,CAACrE,EAASI,IAEbwD,GAAU,KACTlD,GAAWe,EAAUoC,SAASS,UAAU,EAAE,GACxC,CAAC5D,IAEJ,MAAM6D,EAAiB,CACtB,iBAAkBlE,KACf8B,GAGJ,OACCqC,EAACC,EACA,CAAAC,IAAKjD,EACLkD,UACA,EAAAC,YACA,EAAAC,cAAelE,EACfC,MAAO2D,EACP1D,UAAWiE,EAAW,uBAAwBjE,EAAW,CACxD,sBAAuBZ,EACvB,qBAAsBC,IAEvB6E,WAAajF,GACZU,YACKV,EACJe,UAAWiE,EAAW,CAAE,qBAAsBpE,MAGhDW,SAAUA,YAEVmD,EAAK,MAAA,CAAAE,IAAKnD,EAAWV,UAAU,aAAYoD,SAAA,CACzC9D,GACAK,EAACwE,EACA,CAAAhF,QAASA,EACTI,UAAWA,EACX8B,SAAUR,EAAMQ,SAChBD,OAAQP,EAAMO,OACd3B,aAAcA,EACd2E,cAzFqB,CAACxC,EAAWH,KACrC,IAAKlC,EAAW,OAEhB,SAAU8E,GAAMxD,EAAMG,OACtBqD,EAAGzC,GAAKH,EACRZ,EAAMG,OAASqD,EACf5D,IAAWtB,EAAQyC,GAAIH,EAAE,EAoFrBnB,cAjFqB,CAACgE,EAAkBC,KAC5C,GAAID,GAAQhC,OAAQ,CACnB,MAAOlB,EAAQC,GAAYmD,EAC1B3D,EAAMO,OACNP,EAAMQ,SACNiD,EAAO9B,IAGRiC,OAAOC,OAAO7D,EAAO,CACpBO,SACAC,aAGDd,IAASa,EAAQC,GAGlBf,IAAgBgE,EAAQC,EAAE,IAqEvBxD,EAAKE,KAAI,CAAC0D,EAAK/C,IACfjC,EAACiF,EAAG,CAEHD,IAAK/C,GAAKtC,EAAS,EAAI,GACvBJ,KAAMyF,EACNlF,aAAcA,EACdN,QAASA,EACTiB,YAAaA,EACbC,WAAYA,GANPuB,KAUNb,EAAKe,OAAS,GAAKpC,KAGpBG,GAAWI,MACK"}
@@ -0,0 +1,2 @@
1
+ import a from"./datagrid.js";export{a as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{jsx as i}from"react/jsx-runtime";import{useMouseMove as t,useMouseUp as e}from"../../js/hooks.js";import{useReactive as o}from"ahooks";function r(r){const{index:n,onWidthChange:s}=r,a=o({resizing:!1,x:0,width:0});return t((i=>{if(!a.resizing)return;i.preventDefault();const t=a.width+i.pageX-a.x;t<=24||s(n,t)})),e((()=>{a.resizing&&(a.resizing=!1)})),i("i",{className:"i-datagrid-resizor",onMouseDown:i=>{const t=i.target.offsetParent.offsetWidth;Object.assign(a,{x:i.pageX,resizing:!0,width:t})},onClick:i=>i.stopPropagation()})}export{r as default};
2
+ //# sourceMappingURL=resize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize.js","sources":["../../../packages/components/datagrid/resize.tsx"],"sourcesContent":["import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\n\nexport default function Resize(props) {\n\tconst { index, onWidthChange } = props;\n\tconst state = useReactive({\n\t\tresizing: false,\n\t\tx: 0,\n\t\twidth: 0,\n\t});\n\n\tconst handleMouseDown = (e) => {\n\t\tconst tar = e.target as HTMLElement;\n\t\tconst width = (tar.offsetParent as HTMLElement).offsetWidth;\n\n\t\tObject.assign(state, {\n\t\t\tx: e.pageX,\n\t\t\tresizing: true,\n\t\t\twidth,\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tconst after = state.width + e.pageX - state.x;\n\t\tif (after <= 24) return;\n\n\t\tonWidthChange(index, after);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\treturn (\n\t\t<i\n\t\t\tclassName='i-datagrid-resizor'\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t/>\n\t);\n}\n"],"names":["Resize","props","index","onWidthChange","state","useReactive","resizing","x","width","useMouseMove","e","preventDefault","after","pageX","useMouseUp","_jsx","className","onMouseDown","target","offsetParent","offsetWidth","Object","assign","onClick","stopPropagation"],"mappings":"8IAGwB,SAAAA,EAAOC,GAC9B,MAAMC,MAAEA,EAAKC,cAAEA,GAAkBF,EAC3BG,EAAQC,EAAY,CACzBC,UAAU,EACVC,EAAG,EACHC,MAAO,IAkCR,OAHAC,GAjByBC,IACxB,IAAKN,EAAME,SAAU,OAErBI,EAAEC,iBAEF,MAAMC,EAAQR,EAAMI,MAAQE,EAAEG,MAAQT,EAAMG,EACxCK,GAAS,IAEbT,EAAcD,EAAOU,EAAM,IAU5BE,GAPsB,KAChBV,EAAME,WAEXF,EAAME,UAAW,EAAK,IAOtBS,OACCC,UAAU,qBACVC,YAlCuBP,IACxB,MACMF,EADME,EAAEQ,OACKC,aAA6BC,YAEhDC,OAAOC,OAAOlB,EAAO,CACpBG,EAAGG,EAAEG,MACLP,UAAU,EACVE,SACC,EA2BDe,QAAUb,GAAMA,EAAEc,mBAGrB"}
@@ -0,0 +1,2 @@
1
+ import{jsx as l,jsxs as i}from"react/jsx-runtime";import e from"classnames";import{Cell as r,getCellStyle as o}from"./cell.js";import t from"./resize.js";import a from"./sorter.js";function c(i){const{row:e,data:o,columns:t,cellEllipsis:a,onRowClick:c,onCellClick:s,onCellDoubleClick:n}=i;return l("div",{className:"i-datagrid-row",onClick:()=>c?.(o,e),children:t.map(((i,t)=>l(r,{column:i,col:t,row:e,data:o,cellEllipsis:a,onCellClick:s,onCellDoubleClick:n},t)))})}function s(r){const{columns:c,resizable:s,cellEllipsis:n,sortBy:d,sortType:m,onWidthChange:p,onHeaderClick:u}=r;return l("div",{className:"i-datagrid-header i-datagrid-row",children:c.map(((r,c)=>{const{id:C,title:f,fixed:g,colSpan:h,sorter:k,justify:j,renderHeader:w}=r,y=o({justify:j,row:0,col:c,colSpan:h}),x=d===C?m:"";return i("div",{"data-col":C,className:e("i-datagrid-cell",{"i-datagrid-has-sorter":k,"i-datagrid-cell-fixed":g}),style:{...y,insetBlockStart:0},onClick:l=>u?.(r,l),children:[w?.(r,c)??l("div",{className:e("i-datagrid-cell-content",{"i-datagrid-cell-content-ellipsis":n}),children:f||C}),k&&l(a,{type:x}),s&&l(t,{index:c,onWidthChange:p})]},c)}))})}export{s as Header,c as default};
2
+ //# sourceMappingURL=row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row.js","sources":["../../../packages/components/datagrid/row.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { Cell, getCellStyle } from \"./cell\";\nimport Resize from \"./resize\";\nimport Sorter from \"./sorter\";\nimport { IHeader, IRow } from \"./type\";\n\nexport default function Row(props: IRow) {\n\tconst {\n\t\trow,\n\t\tdata,\n\t\tcolumns,\n\t\tcellEllipsis,\n\t\tonRowClick,\n\t\tonCellClick,\n\t\tonCellDoubleClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-row' onClick={() => onRowClick?.(data, row)}>\n\t\t\t{columns.map((col, i) => (\n\t\t\t\t<Cell\n\t\t\t\t\tkey={i}\n\t\t\t\t\tcolumn={col}\n\t\t\t\t\tcol={i}\n\t\t\t\t\trow={row}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tcellEllipsis={cellEllipsis}\n\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\tonCellDoubleClick={onCellDoubleClick}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nexport function Header(props: IHeader) {\n\tconst {\n\t\tcolumns,\n\t\tresizable,\n\t\tcellEllipsis,\n\t\tsortBy,\n\t\tsortType,\n\t\tonWidthChange,\n\t\tonHeaderClick,\n\t} = props;\n\n\treturn (\n\t\t<div className='i-datagrid-header i-datagrid-row'>\n\t\t\t{columns.map((column, col) => {\n\t\t\t\tconst {\n\t\t\t\t\tid,\n\t\t\t\t\ttitle,\n\t\t\t\t\tfixed,\n\t\t\t\t\tcolSpan,\n\t\t\t\t\tsorter,\n\t\t\t\t\tjustify,\n\t\t\t\t\trenderHeader,\n\t\t\t\t} = column;\n\t\t\t\tconst style = getCellStyle({\n\t\t\t\t\tjustify,\n\t\t\t\t\trow: 0,\n\t\t\t\t\tcol,\n\t\t\t\t\tcolSpan,\n\t\t\t\t});\n\n\t\t\t\tconst order = sortBy === id ? sortType : \"\";\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={col}\n\t\t\t\t\t\tdata-col={id}\n\t\t\t\t\t\tclassName={classNames(\"i-datagrid-cell\", {\n\t\t\t\t\t\t\t\"i-datagrid-has-sorter\": sorter,\n\t\t\t\t\t\t\t\"i-datagrid-cell-fixed\": fixed,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{ ...style, insetBlockStart: 0 }}\n\t\t\t\t\t\tonClick={(e) => onHeaderClick?.(column, e)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderHeader?.(column, col) ?? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content\",\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"i-datagrid-cell-content-ellipsis\":\n\t\t\t\t\t\t\t\t\t\t\tcellEllipsis,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title || id}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{sorter && <Sorter type={order} />}\n\n\t\t\t\t\t\t{resizable && (\n\t\t\t\t\t\t\t<Resize index={col} onWidthChange={onWidthChange} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n"],"names":["Row","props","row","data","columns","cellEllipsis","onRowClick","onCellClick","onCellDoubleClick","_jsx","className","onClick","children","map","col","i","Cell","column","Header","resizable","sortBy","sortType","onWidthChange","onHeaderClick","id","title","fixed","colSpan","sorter","justify","renderHeader","style","getCellStyle","order","_jsxs","classNames","insetBlockStart","e","Sorter","type","Resize","index"],"mappings":"qLAMwB,SAAAA,EAAIC,GAC3B,MAAMC,IACLA,EAAGC,KACHA,EAAIC,QACJA,EAAOC,aACPA,EAAYC,WACZA,EAAUC,YACVA,EAAWC,kBACXA,GACGP,EAEJ,OACCQ,EAAA,MAAA,CAAKC,UAAU,iBAAiBC,QAAS,IAAML,IAAaH,EAAMD,GAChEU,SAAAR,EAAQS,KAAI,CAACC,EAAKC,IAClBN,EAACO,EAAI,CAEJC,OAAQH,EACRA,IAAKC,EACLb,IAAKA,EACLC,KAAMA,EACNE,aAAcA,EACdE,YAAaA,EACbC,kBAAmBA,GAPdO,MAYV,CAEM,SAAUG,EAAOjB,GACtB,MAAMG,QACLA,EAAOe,UACPA,EAASd,aACTA,EAAYe,OACZA,EAAMC,SACNA,EAAQC,cACRA,EAAaC,cACbA,GACGtB,EAEJ,OACCQ,EAAA,MAAA,CAAKC,UAAU,mCACbE,SAAAR,EAAQS,KAAI,CAACI,EAAQH,KACrB,MAAMU,GACLA,EAAEC,MACFA,EAAKC,MACLA,EAAKC,QACLA,EAAOC,OACPA,EAAMC,QACNA,EAAOC,aACPA,GACGb,EACEc,EAAQC,EAAa,CAC1BH,UACA3B,IAAK,EACLY,MACAa,YAGKM,EAAQb,IAAWI,EAAKH,EAAW,GAEzC,OACCa,oBAEWV,EACVd,UAAWyB,EAAW,kBAAmB,CACxC,wBAAyBP,EACzB,wBAAyBF,IAE1BK,MAAO,IAAKA,EAAOK,gBAAiB,GACpCzB,QAAU0B,GAAMd,IAAgBN,EAAQoB,aAEvCP,IAAeb,EAAQH,IACvBL,EACC,MAAA,CAAAC,UAAWyB,EACV,0BACA,CACC,mCACC9B,aAIFoB,GAASD,IAIXI,GAAUnB,EAAC6B,EAAO,CAAAC,KAAMN,IAExBd,GACAV,EAAC+B,EAAM,CAACC,MAAO3B,EAAKQ,cAAeA,MA1B/BR,EA4BA,KAKX"}
@@ -0,0 +1,2 @@
1
+ import{jsxs as r,jsx as t}from"react/jsx-runtime";import a from"classnames";const e=r=>t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",...r,children:t("g",{fill:"none",children:t("path",{d:"M9 17.898c0 1.074 1.265 1.648 2.073.941l6.31-5.522a1.75 1.75 0 0 0 0-2.634l-6.31-5.522C10.265 4.454 9 5.028 9 6.102v11.796z",fill:"currentColor"})})});function s(s){const{type:i}=s;return r("a",{className:a("i-datagrid-sorter",{[`i-datagrid-sorter-${i}`]:i}),children:[t(e,{className:"i-datagrid-sorter-caret"}),t(e,{className:"i-datagrid-sorter-caret"})]})}export{s as default};
2
+ //# sourceMappingURL=sorter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sorter.js","sources":["../../../packages/components/datagrid/sorter.tsx"],"sourcesContent":["import classNames from \"classnames\";\n\nconst Arrow = (props) => (\n\t<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' {...props}>\n\t\t<g fill='none'>\n\t\t\t<path\n\t\t\t\td='M9 17.898c0 1.074 1.265 1.648 2.073.941l6.31-5.522a1.75 1.75 0 0 0 0-2.634l-6.31-5.522C10.265 4.454 9 5.028 9 6.102v11.796z'\n\t\t\t\tfill='currentColor'\n\t\t\t></path>\n\t\t</g>\n\t</svg>\n);\n\nexport default function Sorter(props) {\n\tconst { type } = props;\n\n\treturn (\n\t\t<a\n\t\t\tclassName={classNames(\"i-datagrid-sorter\", {\n\t\t\t\t[`i-datagrid-sorter-${type}`]: type,\n\t\t\t})}\n\t\t>\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t\t<Arrow className='i-datagrid-sorter-caret' />\n\t\t</a>\n\t);\n}\n"],"names":["Arrow","props","_jsx","xmlns","viewBox","children","fill","d","Sorter","type","_jsxs","className","classNames"],"mappings":"4EAEA,MAAMA,EAASC,GACdC,EAAK,MAAA,CAAAC,MAAM,6BAA6BC,QAAQ,eAAgBH,EAC/DI,SAAAH,EAAA,IAAA,CAAGI,KAAK,OACPD,SAAAH,EAAA,OAAA,CACCK,EAAE,8HACFD,KAAK,qBAMe,SAAAE,EAAOP,GAC9B,MAAMQ,KAAEA,GAASR,EAEjB,OACCS,EACC,IAAA,CAAAC,UAAWC,EAAW,oBAAqB,CAC1C,CAAC,qBAAqBH,KAASA,cAGhCP,EAACF,GAAMW,UAAU,4BACjBT,EAACF,GAAMW,UAAU,8BAGpB"}
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as i}from"react/jsx-runtime";import l from"classnames";import{Fragment as a}from"react";const t=t=>{const{data:s,colon:r,columns:n=1,gap:c=".5em",align:o,labelWidth:d,labelAlign:m,vertical:p,equally:u,style:g,className:v}=t;return e("div",{className:l("i-description",v),style:{"--description-label-width":d,gridTemplateColumns:`repeat(${n}, ${u?"1fr":"auto"})`,gap:c,textAlign:o,...g},children:s.map(((t,s)=>{const{label:n,value:c,style:o,hidden:d,rowSpan:u=1,colSpan:g=1}=t;return d?e(a,{},s):i("div",{className:l("i-description-item",{"i-description-item-vertical":p}),style:{gridColumn:`span ${g}`,gridRow:`span ${u}`,...o},children:[n&&i("div",{className:"i-description-label",style:{textAlign:m},children:[n,r]}),e("div",{className:"i-description-value",children:c})]},s)}))})};export{t as default};
2
+ //# sourceMappingURL=description.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"description.js","sources":["../../../packages/components/description/description.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { CSSProperties, Fragment } from \"react\";\nimport \"./index.css\";\nimport { IDescription } from \"./type\";\n\nconst Description = (props: IDescription) => {\n\tconst {\n\t\tdata,\n\t\tcolon,\n\t\tcolumns = 1,\n\t\tgap = \".5em\",\n\t\talign,\n\t\tlabelWidth,\n\t\tlabelAlign,\n\t\tvertical,\n\t\tequally,\n\t\tstyle,\n\t\tclassName,\n\t} = props;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-description\", className)}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t[\"--description-label-width\"]: labelWidth,\n\t\t\t\t\tgridTemplateColumns: `repeat(${columns}, ${\n\t\t\t\t\t\tequally ? \"1fr\" : \"auto\"\n\t\t\t\t\t})`,\n\t\t\t\t\tgap,\n\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t...style,\n\t\t\t\t} as CSSProperties\n\t\t\t}\n\t\t>\n\t\t\t{data.map((item, i) => {\n\t\t\t\tconst {\n\t\t\t\t\tlabel,\n\t\t\t\t\tvalue,\n\t\t\t\t\tstyle,\n\t\t\t\t\thidden,\n\t\t\t\t\trowSpan = 1,\n\t\t\t\t\tcolSpan = 1,\n\t\t\t\t} = item;\n\n\t\t\t\tif (hidden) return <Fragment key={i} />;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tclassName={classNames(\"i-description-item\", {\n\t\t\t\t\t\t\t\"i-description-item-vertical\": vertical,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tgridColumn: `span ${colSpan}`,\n\t\t\t\t\t\t\tgridRow: `span ${rowSpan}`,\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName='i-description-label'\n\t\t\t\t\t\t\t\tstyle={{ textAlign: labelAlign }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t{colon}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className='i-description-value'>{value}</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default Description;\n"],"names":["Description","props","data","colon","columns","gap","align","labelWidth","labelAlign","vertical","equally","style","className","_jsx","classNames","gridTemplateColumns","textAlign","children","map","item","i","label","value","hidden","rowSpan","colSpan","Fragment","_jsxs","gridColumn","gridRow"],"mappings":"6GAKA,MAAMA,EAAeC,IACpB,MAAMC,KACLA,EAAIC,MACJA,EAAKC,QACLA,EAAU,EAACC,IACXA,EAAM,OAAMC,MACZA,EAAKC,WACLA,EAAUC,WACVA,EAAUC,SACVA,EAAQC,QACRA,EAAOC,MACPA,EAAKC,UACLA,GACGX,EAEJ,OACCY,EAAA,MAAA,CACCD,UAAWE,EAAW,gBAAiBF,GACvCD,MACC,CACC,4BAA+BJ,EAC/BQ,oBAAqB,UAAUX,MAC9BM,EAAU,MAAQ,UAEnBL,MACAW,UAAWV,KACRK,GAIJM,SAAAf,EAAKgB,KAAI,CAACC,EAAMC,KAChB,MAAMC,MACLA,EAAKC,MACLA,EAAKX,MACLA,EAAKY,OACLA,EAAMC,QACNA,EAAU,EAACC,QACXA,EAAU,GACPN,EAEJ,OAAII,EAAeV,EAACa,EAAc,CAAA,EAAAN,GAGjCO,EAEC,MAAA,CAAAf,UAAWE,EAAW,qBAAsB,CAC3C,8BAA+BL,IAEhCE,MAAO,CACNiB,WAAY,QAAQH,IACpBI,QAAS,QAAQL,OACdb,GACHM,SAAA,CAEAI,GACAM,EAAA,MAAA,CACCf,UAAU,sBACVD,MAAO,CAAEK,UAAWR,GAAYS,SAAA,CAE/BI,EACAlB,KAGHU,SAAKD,UAAU,sBAAqBK,SAAEK,MAnBjCF,EAoBA,KAGH"}
@@ -0,0 +1,2 @@
1
+ import o from"./description.js";export{o as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as r}from"react/jsx-runtime";import{useKeydown as o}from"../../js/hooks.js";import{useReactive as i}from"ahooks";import t from"classnames";import{useRef as a,useEffect as c}from"react";import{createPortal as s}from"react-dom";import n from"../utils/helpericon/helpericon.js";function d(d){const{visible:l,position:m="left",header:h,footer:p,backdropClosable:u=!0,hideCloseButton:f,keepDOM:v,className:w,disabledEsc:b,children:k,onVisibleChange:C,onClose:N,...j}=d,g=a(!0),x=i({show:l,active:l,init:!1});c((()=>{l?E():T()}),[l]);const E=()=>{g.current&&(x.show=!0,C?.(!0),g.current=!1,setTimeout((()=>{x.active=!0,g.current=!0,x.init=!0}),24))},T=()=>{g.current&&(g.current=!1,x.active=!1,setTimeout((()=>{v||(x.show=!1),C?.(!1),g.current=!0,N?.()}),240))};return o((e=>{"Escape"===e.code&&l&&T()}),{disabled:b}),s(x.show&&e("div",{className:t("i-backdrop-drawer",w,{"i-active":x.active}),onClick:function(){u&&T()},...j,children:r("div",{className:t("i-drawer",`i-drawer-${m}`),onClick:e=>e.stopPropagation(),children:[r("header",{className:"i-drawer-header",children:[h,e(n,{active:!f,className:"i-drawer-close",onClick:T})]}),e("div",{className:"i-drawer-content",children:k}),e("div",{className:"i-drawer-footer",children:p})]})}),document.body)}export{d as default};
2
+ //# sourceMappingURL=drawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawer.js","sources":["../../../packages/components/drawer/drawer.tsx"],"sourcesContent":["import { useKeydown } from \"@/packages/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport { IDrawer } from \"./type\";\n\nfunction Drawer(props: IDrawer) {\n\tconst {\n\t\tvisible,\n\t\tposition = \"left\",\n\t\theader,\n\t\tfooter,\n\t\tbackdropClosable = true,\n\t\thideCloseButton,\n\t\tkeepDOM,\n\t\tclassName,\n\t\tdisabledEsc,\n\t\tchildren,\n\t\tonVisibleChange,\n\t\tonClose,\n\t\t...restProps\n\t} = props;\n\tconst toggable = useRef(true);\n\tconst state = useReactive({\n\t\tshow: visible,\n\t\tactive: visible,\n\t\tinit: false,\n\t});\n\n\tuseEffect(() => {\n\t\tvisible ? handleShow() : handleHide();\n\t}, [visible]);\n\n\tconst handleShow = () => {\n\t\tif (!toggable.current) return;\n\n\t\tstate.show = true;\n\t\tonVisibleChange?.(true);\n\t\ttoggable.current = false;\n\t\tsetTimeout(() => {\n\t\t\tstate.active = true;\n\t\t\ttoggable.current = true;\n\t\t\tstate.init = true;\n\t\t}, 24);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!toggable.current) return;\n\t\ttoggable.current = false;\n\n\t\tstate.active = false;\n\t\tsetTimeout(() => {\n\t\t\tif (!keepDOM) {\n\t\t\t\tstate.show = false;\n\t\t\t}\n\t\t\tonVisibleChange?.(false);\n\t\t\ttoggable.current = true;\n\t\t\tonClose?.();\n\t\t}, 240);\n\t};\n\n\tconst handleBackdropClick = function () {\n\t\tbackdropClosable && handleHide();\n\t};\n\n\tuseKeydown(\n\t\t(e) => {\n\t\t\tif (e.code !== \"Escape\" || !visible) return;\n\t\t\thandleHide();\n\t\t},\n\t\t{\n\t\t\tdisabled: disabledEsc,\n\t\t}\n\t);\n\n\treturn createPortal(\n\t\tstate.show && (\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-backdrop-drawer\", className, {\n\t\t\t\t\t\"i-active\": state.active,\n\t\t\t\t})}\n\t\t\t\tonClick={handleBackdropClick}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-drawer\", `i-drawer-${position}`)}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<header className='i-drawer-header'>\n\t\t\t\t\t\t{header}\n\n\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\tactive={!hideCloseButton}\n\t\t\t\t\t\t\tclassName='i-drawer-close'\n\t\t\t\t\t\t\tonClick={handleHide}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</header>\n\n\t\t\t\t\t<div className='i-drawer-content'>{children}</div>\n\n\t\t\t\t\t<div className='i-drawer-footer'>{footer}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t),\n\t\tdocument.body\n\t);\n}\n\nexport default Drawer;\n"],"names":["Drawer","props","visible","position","header","footer","backdropClosable","hideCloseButton","keepDOM","className","disabledEsc","children","onVisibleChange","onClose","restProps","toggable","useRef","state","useReactive","show","active","init","useEffect","handleShow","handleHide","current","setTimeout","useKeydown","e","code","disabled","createPortal","_jsx","classNames","onClick","_jsxs","stopPropagation","Helpericon","document","body"],"mappings":"wSASA,SAASA,EAAOC,GACf,MAAMC,QACLA,EAAOC,SACPA,EAAW,OAAMC,OACjBA,EAAMC,OACNA,EAAMC,iBACNA,GAAmB,EAAIC,gBACvBA,EAAeC,QACfA,EAAOC,UACPA,EAASC,YACTA,EAAWC,SACXA,EAAQC,gBACRA,EAAeC,QACfA,KACGC,GACAb,EACEc,EAAWC,GAAO,GAClBC,EAAQC,EAAY,CACzBC,KAAMjB,EACNkB,OAAQlB,EACRmB,MAAM,IAGPC,GAAU,KACTpB,EAAUqB,IAAeC,GAAY,GACnC,CAACtB,IAEJ,MAAMqB,EAAa,KACbR,EAASU,UAEdR,EAAME,MAAO,EACbP,KAAkB,GAClBG,EAASU,SAAU,EACnBC,YAAW,KACVT,EAAMG,QAAS,EACfL,EAASU,SAAU,EACnBR,EAAMI,MAAO,CAAI,GACf,IAAG,EAGDG,EAAa,KACbT,EAASU,UACdV,EAASU,SAAU,EAEnBR,EAAMG,QAAS,EACfM,YAAW,KACLlB,IACJS,EAAME,MAAO,GAEdP,KAAkB,GAClBG,EAASU,SAAU,EACnBZ,KAAW,GACT,KAAI,EAiBR,OAVAc,GACEC,IACe,WAAXA,EAAEC,MAAsB3B,GAC5BsB,GAAY,GAEb,CACCM,SAAUpB,IAILqB,EACNd,EAAME,MACLa,EACC,MAAA,CAAAvB,UAAWwB,EAAW,oBAAqBxB,EAAW,CACrD,WAAYQ,EAAMG,SAEnBc,QApByB,WAC3B5B,GAAoBkB,GACpB,KAmBMV,EAEJH,SAAAwB,EAAA,MAAA,CACC1B,UAAWwB,EAAW,WAAY,YAAY9B,KAC9C+B,QAAUN,GAAMA,EAAEQ,4BAElBD,EAAQ,SAAA,CAAA1B,UAAU,kBAAiBE,SAAA,CACjCP,EAED4B,EAACK,EAAU,CACVjB,QAASb,EACTE,UAAU,iBACVyB,QAASV,OAIXQ,EAAA,MAAA,CAAKvB,UAAU,mBAAoBE,SAAAA,IAEnCqB,EAAA,MAAA,CAAKvB,UAAU,kBAAmBE,SAAAN,SAIrCiC,SAASC,KAEX"}
@@ -0,0 +1,2 @@
1
+ import r from"./drawer.js";export{r as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{jsx as t}from"react/jsx-runtime";import o from"../list/list.js";import i from"../popup/popup.js";import r from"./item.js";const e=r=>{const{width:e,content:n,children:m,...c}=r;return t(i,{trigger:"click",position:"bottom",touchable:!0,content:t(o,{className:"i-dropdown-content",style:{minWidth:e},children:n}),...c,children:m})};e.Item=r;export{e as default};
2
+ //# sourceMappingURL=dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown.js","sources":["../../../packages/components/dropdown/dropdown.tsx"],"sourcesContent":["import List from \"../list\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IDropdown } from \"./type\";\n\nconst Dropdown = (props: IDropdown) => {\n\tconst { width, content, children, ...restProps } = props;\n\n\treturn (\n\t\t<Popup\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\ttouchable\n\t\t\tcontent={\n\t\t\t\t<List\n\t\t\t\t\tclassName='i-dropdown-content'\n\t\t\t\t\tstyle={{ minWidth: width }}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</List>\n\t\t\t}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nDropdown.Item = Item;\n\nexport default Dropdown;\n"],"names":["Dropdown","props","width","content","children","restProps","_jsx","Popup","trigger","position","touchable","List","className","style","minWidth","Item"],"mappings":"iIAMA,MAAMA,EAAYC,IACjB,MAAMC,MAAEA,EAAKC,QAAEA,EAAOC,SAAEA,KAAaC,GAAcJ,EAEnD,OACCK,EAACC,EACA,CAAAC,QAAQ,QACRC,SAAS,SACTC,aACAP,QACCG,EAACK,EAAI,CACJC,UAAU,qBACVC,MAAO,CAAEC,SAAUZ,GAElBE,SAAAD,OAGCE,WAEHD,GACM,EAIVJ,EAASe,KAAOA"}
@@ -0,0 +1,2 @@
1
+ import o from"./dropdown.js";export{o as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{jsx as o}from"react/jsx-runtime";import t from"../list/list.js";import r from"../popup/popup.js";const{Item:i}=t,n=n=>{const{more:e,moreProps:p,onClick:s,...a}=n,c=o(i,{onClick:o=>{o.stopPropagation(),s?.(o)},...a});return e?o(r,{position:"right",touchable:!0,arrow:!1,align:"start",offset:10,hideDelay:240,...p,content:o(t,{className:"i-dropdown-content",onClick:o=>o.stopPropagation(),children:e}),children:c}):c};export{n as default};
2
+ //# sourceMappingURL=item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sources":["../../../packages/components/dropdown/item.tsx"],"sourcesContent":["import List from \"../list\";\nimport Popup from \"../popup\";\nimport { IDropItem } from \"./type\";\n\nconst { Item: ListItem } = List;\n\nconst Item = (props: IDropItem) => {\n\tconst { more, moreProps, onClick, ...restProps } = props;\n\tconst Li = (\n\t\t<ListItem\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\tonClick?.(e);\n\t\t\t}}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n\n\tif (!more) return Li;\n\n\treturn (\n\t\t<Popup\n\t\t\tposition='right'\n\t\t\ttouchable\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\toffset={10}\n\t\t\thideDelay={240}\n\t\t\t{...moreProps}\n\t\t\tcontent={\n\t\t\t\t<List\n\t\t\t\t\tclassName='i-dropdown-content'\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t{more}\n\t\t\t\t</List>\n\t\t\t}\n\t\t>\n\t\t\t{Li}\n\t\t</Popup>\n\t);\n};\n\nexport default Item;\n"],"names":["Item","ListItem","List","props","more","moreProps","onClick","restProps","Li","_jsx","e","stopPropagation","Popup","position","touchable","arrow","align","offset","hideDelay","content","className","children"],"mappings":"wGAIA,MAAQA,KAAMC,GAAaC,EAErBF,EAAQG,IACb,MAAMC,KAAEA,EAAIC,UAAEA,EAASC,QAAEA,KAAYC,GAAcJ,EAC7CK,EACLC,EAACR,EACA,CAAAK,QAAUI,IACTA,EAAEC,kBACFL,IAAUI,EAAE,KAETH,IAIN,OAAKH,EAGJK,EAACG,EACA,CAAAC,SAAS,QACTC,WAAS,EACTC,OAAO,EACPC,MAAM,QACNC,OAAQ,GACRC,UAAW,OACPb,EACJc,QACCV,EAACP,EACA,CAAAkB,UAAU,qBACVd,QAAUI,GAAMA,EAAEC,kBAAiBU,SAElCjB,IAIFiB,SAAAb,IApBeA,CAqBT"}
@@ -0,0 +1,2 @@
1
+ import{jsx as o,jsxs as i,Fragment as n}from"react/jsx-runtime";import{FormatBoldRound as t,FormatItalicRound as r,FormatUnderlinedRound as e,StrikethroughSRound as c,RedoRound as l,UndoRound as s,ClearAllRound as d}from"@ricons/material";import{escapeAttrValue as m}from"xss";import"../button/index.js";import p from"../icon/icon.js";import u from"../button/button.js";const a=(o,i,n)=>document.execCommand(o,i,n),k={onIgnoreTagAttr:function(o,i,n){if(["data-","style"].includes(i.substr(0,5)))return i+'="'+m(n)+'"'}},f={bold:{icon:o(t,{}),onClick:()=>a("bold"),tip:"粗体"},italic:{icon:o(r,{}),onClick:()=>a("italic"),tip:"斜体"},underline:{icon:o(e,{}),onClick:()=>a("underline"),tip:"下划线"},strike:{icon:o(c,{}),onClick:()=>a("strikeThrough"),tip:"删除线"},redo:{icon:o(l,{}),onClick:()=>a("redo"),tip:"重做"},undo:{icon:o(s,{}),onClick:()=>a("undo"),tip:"撤销"},clear:{icon:o(d,{}),onClick:()=>a("removeFormat"),tip:"清除格式"}},C={simple:["undo","redo","bold","italic","underline","strike","clear"],all:Object.keys(f)};function b(t,r){const{controlBtnProps:e}=r;return("string"==typeof t?C[t]:t).map((t=>{if(f[t]){const{icon:n,render:c,tip:l,onClick:s}=f[t];return c?c(r):i(u,{...e,onClick:s,children:[o(p,{icon:n}),l&&o("span",{className:"i-editor-control-tip",children:l})]},t)}return o(n,{},t)}))}export{b as default,a as exec,k as xssOptions};
2
+ //# sourceMappingURL=controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controls.js","sources":["../../../packages/components/editor/controls.tsx"],"sourcesContent":["import {\n\tClearAllRound,\n\tFormatBoldRound,\n\tFormatItalicRound,\n\tFormatUnderlinedRound,\n\tRedoRound,\n\tStrikethroughSRound,\n\tUndoRound,\n} from \"@ricons/material\";\nimport { Fragment } from \"react/jsx-runtime\";\nimport { escapeAttrValue } from \"xss\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\n\nexport const exec = (a, b?, c?) => document.execCommand(a, b, c);\n\nexport const xssOptions = {\n\tonIgnoreTagAttr: function (tag, name, value) {\n\t\tif ([\"data-\", \"style\"].includes(name.substr(0, 5))) {\n\t\t\treturn name + '=\"' + escapeAttrValue(value) + '\"';\n\t\t}\n\t},\n};\n\nconst fnMap = {\n\tbold: {\n\t\ticon: <FormatBoldRound />,\n\t\tonClick: () => exec(\"bold\"),\n\t\ttip: \"粗体\",\n\t},\n\titalic: {\n\t\ticon: <FormatItalicRound />,\n\t\tonClick: () => exec(\"italic\"),\n\t\ttip: \"斜体\",\n\t},\n\tunderline: {\n\t\ticon: <FormatUnderlinedRound />,\n\t\tonClick: () => exec(\"underline\"),\n\t\ttip: \"下划线\",\n\t},\n\tstrike: {\n\t\ticon: <StrikethroughSRound />,\n\t\tonClick: () => exec(\"strikeThrough\"),\n\t\ttip: \"删除线\",\n\t},\n\tredo: {\n\t\ticon: <RedoRound />,\n\t\tonClick: () => exec(\"redo\"),\n\t\ttip: \"重做\",\n\t},\n\tundo: {\n\t\ticon: <UndoRound />,\n\t\tonClick: () => exec(\"undo\"),\n\t\ttip: \"撤销\",\n\t},\n\t// color: {\n\t// \ticon: <FormatColorTextRound />,\n\t// \tonClick: () => exec(\"foreColor\", false, \"\"),\n\t// },\n\t// backColor: {\n\t// \ticon: <FormatColorFillRound />,\n\t// \tonClick: () => exec(\"backColor\", false, \"\"),\n\t// },\n\tclear: {\n\t\ticon: <ClearAllRound />,\n\t\tonClick: () => exec(\"removeFormat\"),\n\t\ttip: \"清除格式\",\n\t},\n};\n\nconst aliasMap = {\n\tsimple: [\"undo\", \"redo\", \"bold\", \"italic\", \"underline\", \"strike\", \"clear\"],\n\tall: Object.keys(fnMap),\n};\n\nexport default function getControls(fns, options) {\n\tconst { controlBtnProps } = options;\n\tconst keys = typeof fns === \"string\" ? aliasMap[fns] : fns;\n\n\treturn keys.map((k) => {\n\t\tif (fnMap[k]) {\n\t\t\tconst { icon, render, tip, onClick } = fnMap[k];\n\n\t\t\tif (render) {\n\t\t\t\treturn render(options);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<Button key={k} {...controlBtnProps} onClick={onClick}>\n\t\t\t\t\t<Icon icon={icon} />\n\t\t\t\t\t{tip && <span className='i-editor-control-tip'>{tip}</span>}\n\t\t\t\t</Button>\n\t\t\t);\n\t\t}\n\t\treturn <Fragment key={k} />;\n\t});\n}\n"],"names":["exec","a","b","c","document","execCommand","xssOptions","onIgnoreTagAttr","tag","name","value","includes","substr","escapeAttrValue","fnMap","bold","icon","_jsx","FormatBoldRound","onClick","tip","italic","FormatItalicRound","underline","FormatUnderlinedRound","strike","StrikethroughSRound","redo","RedoRound","undo","UndoRound","clear","ClearAllRound","aliasMap","simple","all","Object","keys","getControls","fns","options","controlBtnProps","map","k","render","_jsxs","Button","children","Icon","className","Fragment"],"mappings":"wXAcaA,EAAO,CAACC,EAAGC,EAAIC,IAAOC,SAASC,YAAYJ,EAAGC,EAAGC,GAEjDG,EAAa,CACzBC,gBAAiB,SAAUC,EAAKC,EAAMC,GACrC,GAAI,CAAC,QAAS,SAASC,SAASF,EAAKG,OAAO,EAAG,IAC9C,OAAOH,EAAO,KAAOI,EAAgBH,GAAS,GAE/C,GAGII,EAAQ,CACbC,KAAM,CACLC,KAAMC,EAACC,EAAkB,IACzBC,QAAS,IAAMnB,EAAK,QACpBoB,IAAK,MAENC,OAAQ,CACPL,KAAMC,EAACK,EAAoB,IAC3BH,QAAS,IAAMnB,EAAK,UACpBoB,IAAK,MAENG,UAAW,CACVP,KAAMC,EAACO,EAAwB,IAC/BL,QAAS,IAAMnB,EAAK,aACpBoB,IAAK,OAENK,OAAQ,CACPT,KAAMC,EAACS,EAAsB,IAC7BP,QAAS,IAAMnB,EAAK,iBACpBoB,IAAK,OAENO,KAAM,CACLX,KAAMC,EAACW,EAAY,IACnBT,QAAS,IAAMnB,EAAK,QACpBoB,IAAK,MAENS,KAAM,CACLb,KAAMC,EAACa,EAAY,IACnBX,QAAS,IAAMnB,EAAK,QACpBoB,IAAK,MAUNW,MAAO,CACNf,KAAMC,EAACe,EAAgB,IACvBb,QAAS,IAAMnB,EAAK,gBACpBoB,IAAK,SAIDa,EAAW,CAChBC,OAAQ,CAAC,OAAQ,OAAQ,OAAQ,SAAU,YAAa,SAAU,SAClEC,IAAKC,OAAOC,KAAKvB,IAGJ,SAAUwB,EAAYC,EAAKC,GACxC,MAAMC,gBAAEA,GAAoBD,EAG5B,OAF4B,iBAARD,EAAmBN,EAASM,GAAOA,GAE3CG,KAAKC,IAChB,GAAI7B,EAAM6B,GAAI,CACb,MAAM3B,KAAEA,EAAI4B,OAAEA,EAAMxB,IAAEA,EAAGD,QAAEA,GAAYL,EAAM6B,GAE7C,OAAIC,EACIA,EAAOJ,GAIdK,EAACC,EAAM,IAAaL,EAAiBtB,QAASA,EAAO4B,SAAA,CACpD9B,EAAC+B,GAAKhC,KAAMA,IACXI,GAAOH,EAAA,OAAA,CAAMgC,UAAU,uBAAwBF,SAAA3B,MAFpCuB,GAMf,OAAO1B,EAACiC,EAAc,CAAA,EAAAP,EAAK,GAE7B"}
@@ -0,0 +1,2 @@
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import r from"classnames";import{useRef as n,useImperativeHandle as o}from"react";import s from"xss";import i,{xssOptions as a,exec as c}from"./controls.js";const l=l=>{const{ref:u,width:d,height:m="10em",placeholder:p,autosize:f,border:h=!0,richPaste:y,controls:b="simple",className:g,style:D,onInput:H,onPaste:T,onKeyDown:v,...x}=l,L=n(null);o(u,(()=>({setValue(e){if(!L.current)return;const t=s(e,a);L.current.innerHTML=t},getSafeValue(){const e=L.current?.innerHTML??"";return s(e,a)}})));return e("div",{className:r("i-editor",g,{"i-editor-borderless":!h}),style:{...D,[f?"minHeight":"height"]:m,width:d},children:["none"!==b&&t("div",{className:"i-editor-controls",children:i(b,{controlBtnProps:{square:!0,flat:!0,size:"small"}})}),t("div",{ref:L,className:"i-editor-content","data-placeholder":p,contentEditable:!0,onPaste:async e=>{if(T?.(e),y)return;e.preventDefault();const t=e.clipboardData.getData("text/plain");c("insertText",!1,t)},onInput:e=>{let t=L.current?.innerHTML??"";["<br>","\n"].includes(t)&&L.current&&(t="",L.current.innerHTML=t),H?.(t,e)},onKeyDown:e=>{switch(v?.(e),e.key){case"Tab":e.preventDefault(),c("insertHTML",!1,"&#09;");break;case"Enter":if(e.preventDefault(),c("insertLineBreak"),!L.current)return;if(L.current.scrollBy({top:20,left:-1e3}),!f)return;L.current.style.height=`${L.current.scrollHeight}px`}},...x})]})};export{l as default};
2
+ //# sourceMappingURL=editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.js","sources":["../../../packages/components/editor/editor.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useImperativeHandle, useRef } from \"react\";\nimport xss from \"xss\";\nimport { IButton } from \"../button/type\";\nimport getControls, { exec, xssOptions } from \"./controls\";\nimport \"./index.css\";\nimport { IEditor } from \"./type\";\n\nconst Editor = (props: IEditor) => {\n\tconst {\n\t\tref,\n\t\twidth,\n\t\theight = \"10em\",\n\t\tplaceholder,\n\t\tautosize,\n\t\tborder = true,\n\t\trichPaste,\n\t\tcontrols = \"simple\",\n\t\tclassName,\n\t\tstyle,\n\t\tonInput,\n\t\tonPaste,\n\t\tonKeyDown,\n\t\t...restProps\n\t} = props;\n\tconst editorRef = useRef<HTMLDivElement>(null);\n\tconst controlBtnProps: IButton = {\n\t\tsquare: true,\n\t\tflat: true,\n\t\tsize: \"small\",\n\t};\n\n\tconst handlePaste = async (e) => {\n\t\tonPaste?.(e);\n\n\t\tif (richPaste) return;\n\t\te.preventDefault();\n\t\tconst text = e.clipboardData.getData(\"text/plain\");\n\t\texec(\"insertText\", false, text);\n\t};\n\n\tconst handleKeyDown = (e) => {\n\t\tonKeyDown?.(e);\n\n\t\tswitch (e.key) {\n\t\t\tcase \"Tab\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertHTML\", false, \"&#09;\");\n\t\t\t\tbreak;\n\t\t\tcase \"Enter\":\n\t\t\t\te.preventDefault();\n\t\t\t\texec(\"insertLineBreak\");\n\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\teditorRef.current.scrollBy({\n\t\t\t\t\ttop: 20,\n\t\t\t\t\tleft: -1000,\n\t\t\t\t});\n\n\t\t\t\tif (!autosize) return;\n\t\t\t\teditorRef.current.style.height = `${editorRef.current.scrollHeight}px`;\n\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tsetValue(html) {\n\t\t\t\tif (!editorRef.current) return;\n\t\t\t\tconst safeHtml = xss(html, xssOptions);\n\n\t\t\t\teditorRef.current.innerHTML = safeHtml;\n\t\t\t},\n\t\t\tgetSafeValue() {\n\t\t\t\tconst html = editorRef.current?.innerHTML ?? \"\";\n\n\t\t\t\treturn xss(html, xssOptions);\n\t\t\t},\n\t\t};\n\t});\n\n\tconst handleInput = (e) => {\n\t\tlet html = editorRef.current?.innerHTML ?? \"\";\n\n\t\tif ([\"<br>\", \"\\n\"].includes(html) && editorRef.current) {\n\t\t\thtml = \"\";\n\t\t\teditorRef.current.innerHTML = html;\n\t\t}\n\n\t\tonInput?.(html, e);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-editor\", className, {\n\t\t\t\t\"i-editor-borderless\": !border,\n\t\t\t})}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\t[autosize ? \"minHeight\" : \"height\"]: height,\n\t\t\t\twidth,\n\t\t\t}}\n\t\t>\n\t\t\t{controls !== \"none\" && (\n\t\t\t\t<div className='i-editor-controls'>\n\t\t\t\t\t{getControls(controls, {\n\t\t\t\t\t\tcontrolBtnProps,\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tref={editorRef}\n\t\t\t\tclassName='i-editor-content'\n\t\t\t\tdata-placeholder={placeholder}\n\t\t\t\tcontentEditable\n\t\t\t\tonPaste={handlePaste}\n\t\t\t\tonInput={handleInput}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t{...restProps}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default Editor;\n"],"names":["Editor","props","ref","width","height","placeholder","autosize","border","richPaste","controls","className","style","onInput","onPaste","onKeyDown","restProps","editorRef","useRef","useImperativeHandle","setValue","html","current","safeHtml","xss","xssOptions","innerHTML","getSafeValue","_jsxs","classNames","children","_jsx","getControls","controlBtnProps","square","flat","size","contentEditable","async","e","preventDefault","text","clipboardData","getData","exec","includes","key","scrollBy","top","left","scrollHeight"],"mappings":"+MAQA,MAAMA,EAAUC,IACf,MAAMC,IACLA,EAAGC,MACHA,EAAKC,OACLA,EAAS,OAAMC,YACfA,EAAWC,SACXA,EAAQC,OACRA,GAAS,EAAIC,UACbA,EAASC,SACTA,EAAW,SAAQC,UACnBA,EAASC,MACTA,EAAKC,QACLA,EAAOC,QACPA,EAAOC,UACPA,KACGC,GACAd,EACEe,EAAYC,EAAuB,MA2CzCC,EAAoBhB,GAAK,KACjB,CACN,QAAAiB,CAASC,GACR,IAAKJ,EAAUK,QAAS,OACxB,MAAMC,EAAWC,EAAIH,EAAMI,GAE3BR,EAAUK,QAAQI,UAAYH,CAC9B,EACD,YAAAI,GACC,MAAMN,EAAOJ,EAAUK,SAASI,WAAa,GAE7C,OAAOF,EAAIH,EAAMI,EACjB,MAeH,OACCG,SACCjB,UAAWkB,EAAW,WAAYlB,EAAW,CAC5C,uBAAwBH,IAEzBI,MAAO,IACHA,EACH,CAACL,EAAW,YAAc,UAAWF,EACrCD,SACA0B,SAAA,CAEa,SAAbpB,GACAqB,EAAA,MAAA,CAAKpB,UAAU,oBAAmBmB,SAChCE,EAAYtB,EAAU,CACtBuB,gBAnF4B,CAChCC,QAAQ,EACRC,MAAM,EACNC,KAAM,aAqFLL,EAAA,MAAA,CACC5B,IAAKc,EACLN,UAAU,mBACQ,mBAAAL,EAClB+B,iBAAe,EACfvB,QAvFiBwB,MAAOC,IAG1B,GAFAzB,IAAUyB,GAEN9B,EAAW,OACf8B,EAAEC,iBACF,MAAMC,EAAOF,EAAEG,cAAcC,QAAQ,cACrCC,EAAK,cAAc,EAAOH,EAAK,EAkF7B5B,QApCkB0B,IACpB,IAAIlB,EAAOJ,EAAUK,SAASI,WAAa,GAEvC,CAAC,OAAQ,MAAMmB,SAASxB,IAASJ,EAAUK,UAC9CD,EAAO,GACPJ,EAAUK,QAAQI,UAAYL,GAG/BR,IAAUQ,EAAMkB,EAAE,EA6BhBxB,UAhFoBwB,IAGtB,OAFAxB,IAAYwB,GAEJA,EAAEO,KACT,IAAK,MACJP,EAAEC,iBACFI,EAAK,cAAc,EAAO,SAC1B,MACD,IAAK,QAIJ,GAHAL,EAAEC,iBACFI,EAAK,oBAEA3B,EAAUK,QAAS,OAMxB,GALAL,EAAUK,QAAQyB,SAAS,CAC1BC,IAAK,GACLC,MAAW,OAGP1C,EAAU,OACfU,EAAUK,QAAQV,MAAMP,OAAS,GAAGY,EAAUK,QAAQ4B,sBA8DlDlC,MAEA"}
@@ -0,0 +1,2 @@
1
+ import o from"./editor.js";export{o as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{jsx as e}from"react/jsx-runtime";import r from"classnames";import{useMemo as t}from"react";const a=a=>{const{as:s="div",align:i,justify:m,direction:n,wrap:o,gap:l,columns:f,className:p,style:c,...u}=a,g=t((()=>{if(f)return"number"==typeof f?`repeat(${f}, 1fr)`:f}),[f]);return e(s,{...u,style:{alignItems:i,justifyContent:m,gap:l,flexDirection:n,flexWrap:!0===o?"wrap":o,gridTemplateColumns:g,...c},className:r(p,{[f?"grid":"flex"]:!0})})};export{a as default};
2
+ //# sourceMappingURL=flex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flex.js","sources":["../../../packages/components/flex/flex.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { IFlex } from \"./type\";\n\nconst Flex: React.FC<IFlex> = (props: IFlex) => {\n\tconst {\n\t\tas: Component = \"div\" as any,\n\t\talign,\n\t\tjustify,\n\t\tdirection,\n\t\twrap,\n\t\tgap,\n\t\tcolumns,\n\t\tclassName,\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns) return;\n\n\t\tif (typeof columns === \"number\") return `repeat(${columns}, 1fr)`;\n\n\t\treturn columns;\n\t}, [columns]);\n\n\treturn (\n\t\t<Component\n\t\t\t{...restProps}\n\t\t\tstyle={{\n\t\t\t\talignItems: align,\n\t\t\t\tjustifyContent: justify,\n\t\t\t\tgap,\n\t\t\t\tflexDirection: direction,\n\t\t\t\tflexWrap: wrap === true ? \"wrap\" : wrap,\n\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tclassName={classNames(className, {\n\t\t\t\t[columns ? \"grid\" : \"flex\"]: true,\n\t\t\t})}\n\t\t/>\n\t);\n};\n\nexport default Flex;\n"],"names":["Flex","props","as","Component","align","justify","direction","wrap","gap","columns","className","style","restProps","gridColumns","useMemo","_jsx","alignItems","justifyContent","flexDirection","flexWrap","gridTemplateColumns","classNames"],"mappings":"kGAKA,MAAMA,EAAyBC,IAC9B,MACCC,GAAIC,EAAY,MAAYC,MAC5BA,EAAKC,QACLA,EAAOC,UACPA,EAASC,KACTA,EAAIC,IACJA,EAAGC,QACHA,EAAOC,UACPA,EAASC,MACTA,KACGC,GACAX,EAEEY,EAAcC,GAAQ,KAC3B,GAAKL,EAEL,MAAuB,iBAAZA,EAA6B,UAAUA,UAE3CA,CAAO,GACZ,CAACA,IAEJ,OACCM,EAACZ,MACIS,EACJD,MAAO,CACNK,WAAYZ,EACZa,eAAgBZ,EAChBG,MACAU,cAAeZ,EACfa,UAAmB,IAATZ,EAAgB,OAASA,EACnCa,oBAAqBP,KAClBF,GAEJD,UAAWW,EAAWX,EAAW,CAChC,CAACD,EAAU,OAAS,SAAS,KAE7B"}
@@ -0,0 +1,2 @@
1
+ import e from"./flex.js";export{e as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{createContext as t}from"react";const o=t({});export{o as default};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sources":["../../../packages/components/form/context.tsx"],"sourcesContent":["import { createContext } from \"react\";\nimport { IFormInstance } from \"./useForm\";\n\nconst Context = createContext({} as IFormInstance);\n\nexport default Context;\n"],"names":["Context","createContext"],"mappings":"sCAGA,MAAMA,EAAUC,EAAc,CAAmB"}
@@ -0,0 +1,2 @@
1
+ import{useReactive as e}from"ahooks";import s from"pubsub-js";import{useContext as a,useMemo as t,Children as r,isValidElement as u,cloneElement as i,useEffect as n}from"react";import o from"./context.js";function m(m){const{name:d,required:l,children:c}=m,p=e({value:void 0,status:"normal",message:void 0,update:0}),b=a(o),{id:v}=b,g=t((()=>r.map(c,(e=>{if(!u(e))return null;const{onChange:a}=e.props,{value:t,status:r,message:n}=p;return i(e,{value:t,status:r,message:n,required:l,onChange:(...e)=>{var t;t=e[0],d&&(b.set(d,t),s.publish(`${v}:change`,{name:d,value:t})),a?.(...e),Object.assign(p,{status:"normal",message:void 0})}})}))),[c,p.update]);return n((()=>{if(d)return s.subscribe(`${v}:set:${d}`,((e,s)=>{p.value=s,p.update+=1})),s.subscribe(`${v}:invalid:${d}`,((e,s)=>{Object.assign(p,s),p.update+=1})),Promise.resolve().then((()=>{b.set(d,b.cacheData[d]??void 0)})),()=>{s.unsubscribe(`${v}:set:${d}`),s.unsubscribe(`${v}:invalid:${d}`),b.delete(d)}}),[d,c]),d?g:c}export{m as default};
2
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.js","sources":["../../../packages/components/form/field.tsx"],"sourcesContent":["import { useReactive } from \"ahooks\";\nimport PubSub from \"pubsub-js\";\nimport {\n\tChildren,\n\tcloneElement,\n\tisValidElement,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n} from \"react\";\nimport Context from \"./context\";\nimport { IField } from \"./type\";\n\nfunction Field(props: IField) {\n\tconst { name, required, children } = props;\n\tconst state = useReactive({\n\t\tvalue: undefined,\n\t\tstatus: \"normal\",\n\t\tmessage: undefined,\n\t\tupdate: 0,\n\t});\n\tconst form = useContext(Context);\n\tconst { id } = form;\n\n\tconst handleChange = (v) => {\n\t\tif (!name) return;\n\n\t\tform.set(name, v);\n\t\tPubSub.publish(`${id}:change`, {\n\t\t\tname,\n\t\t\tvalue: v,\n\t\t});\n\t};\n\n\tconst hijackChildren = useMemo(() => {\n\t\treturn Children.map(children, (node) => {\n\t\t\tif (!isValidElement(node)) return null;\n\n\t\t\tconst { onChange } = node.props as any;\n\t\t\tconst { value, status, message } = state;\n\n\t\t\treturn cloneElement(node, {\n\t\t\t\tvalue,\n\t\t\t\tstatus,\n\t\t\t\tmessage,\n\t\t\t\trequired,\n\t\t\t\tonChange: (...args) => {\n\t\t\t\t\thandleChange(args[0]);\n\t\t\t\t\tonChange?.(...args);\n\t\t\t\t\tObject.assign(state, {\n\t\t\t\t\t\tstatus: \"normal\",\n\t\t\t\t\t\tmessage: undefined,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t} as any);\n\t\t});\n\t}, [children, state.update]);\n\n\tuseEffect(() => {\n\t\tif (!name) return;\n\n\t\tPubSub.subscribe(`${id}:set:${name}`, (evt, v) => {\n\t\t\tstate.value = v;\n\t\t\tstate.update += 1;\n\t\t});\n\t\tPubSub.subscribe(`${id}:invalid:${name}`, (evt, v) => {\n\t\t\tObject.assign(state, v);\n\t\t\tstate.update += 1;\n\t\t});\n\n\t\tPromise.resolve().then(() => {\n\t\t\tform.set(name, form.cacheData[name] ?? undefined);\n\t\t});\n\n\t\treturn () => {\n\t\t\tPubSub.unsubscribe(`${id}:set:${name}`);\n\t\t\tPubSub.unsubscribe(`${id}:invalid:${name}`);\n\t\t\tform.delete(name);\n\t\t};\n\t}, [name, children]);\n\n\tif (!name) return children;\n\n\treturn hijackChildren;\n}\n\nexport default Field;\n"],"names":["Field","props","name","required","children","state","useReactive","value","undefined","status","message","update","form","useContext","Context","id","hijackChildren","useMemo","Children","map","node","isValidElement","onChange","cloneElement","args","v","set","PubSub","publish","Object","assign","useEffect","subscribe","evt","Promise","resolve","then","cacheData","unsubscribe","delete"],"mappings":"6MAaA,SAASA,EAAMC,GACd,MAAMC,KAAEA,EAAIC,SAAEA,EAAQC,SAAEA,GAAaH,EAC/BI,EAAQC,EAAY,CACzBC,WAAOC,EACPC,OAAQ,SACRC,aAASF,EACTG,OAAQ,IAEHC,EAAOC,EAAWC,IAClBC,GAAEA,GAAOH,EAYTI,EAAiBC,GAAQ,IACvBC,EAASC,IAAIf,GAAWgB,IAC9B,IAAKC,EAAeD,GAAO,OAAO,KAElC,MAAME,SAAEA,GAAaF,EAAKnB,OACpBM,MAAEA,EAAKE,OAAEA,EAAMC,QAAEA,GAAYL,EAEnC,OAAOkB,EAAaH,EAAM,CACzBb,QACAE,SACAC,UACAP,WACAmB,SAAU,IAAIE,KAtBI,IAACC,IAuBLD,EAAK,GAtBhBtB,IAELU,EAAKc,IAAIxB,EAAMuB,GACfE,EAAOC,QAAQ,GAAGb,WAAa,CAC9Bb,OACAK,MAAOkB,KAkBLH,OAAcE,GACdK,OAAOC,OAAOzB,EAAO,CACpBI,OAAQ,SACRC,aAASF,GACR,GAEK,KAER,CAACJ,EAAUC,EAAMM,SAyBpB,OAvBAoB,GAAU,KACT,GAAK7B,EAeL,OAbAyB,EAAOK,UAAU,GAAGjB,SAAUb,KAAQ,CAAC+B,EAAKR,KAC3CpB,EAAME,MAAQkB,EACdpB,EAAMM,QAAU,CAAC,IAElBgB,EAAOK,UAAU,GAAGjB,aAAcb,KAAQ,CAAC+B,EAAKR,KAC/CI,OAAOC,OAAOzB,EAAOoB,GACrBpB,EAAMM,QAAU,CAAC,IAGlBuB,QAAQC,UAAUC,MAAK,KACtBxB,EAAKc,IAAIxB,EAAMU,EAAKyB,UAAUnC,SAASM,EAAU,IAG3C,KACNmB,EAAOW,YAAY,GAAGvB,SAAUb,KAChCyB,EAAOW,YAAY,GAAGvB,aAAcb,KACpCU,EAAK2B,OAAOrC,EAAK,CACjB,GACC,CAACA,EAAME,IAELF,EAEEc,EAFWZ,CAGnB"}
@@ -0,0 +1,2 @@
1
+ import{jsx as e}from"react/jsx-runtime";import r from"classnames";import i from"pubsub-js";import{useMemo as o,useEffect as a}from"react";import t from"./context.js";import l from"./field.js";import n from"./useForm.js";const m=l=>{const{form:n={},rules:m,initialValues:s,style:u,className:c,width:d,columns:f=1,gap:p="1em",labelInline:b,labelWidth:h,labelRight:g,children:j,onKeyDown:y,onEnter:w,onChange:x,...v}=l,C=o((()=>{if(f)return"number"==typeof f?"minmax(0, 1fr) ".repeat(f):f}),[f]);return a((()=>{Object.assign(n,{data:{...s},rules:m})}),[n]),a((()=>(i.subscribe(`${n.id}:change`,((e,r)=>{x?.(r.name,r.value)})),()=>{i.unsubscribe(`${n.id}:change`)})),[]),e(t,{value:n,children:e("form",{style:{...u,width:d,gap:p,gridTemplateColumns:C,"--label-width":h,"--label-align":g?"right":void 0},className:r("i-form",c,{"i-form-inline":b}),onKeyDown:e=>{y?.(e),13===e.keyCode&&w?.(n.data,n)},...v,children:j})})};m.useForm=n,m.Field=l;export{m as default};
2
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","sources":["../../../packages/components/form/form.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport PubSub from \"pubsub-js\";\nimport { CSSProperties, useEffect, useMemo } from \"react\";\nimport Context from \"./context\";\nimport Field from \"./field\";\nimport \"./index.css\";\nimport { IForm } from \"./type\";\nimport useForm, { IFormInstance } from \"./useForm\";\n\nconst Form = (props: IForm) => {\n\tconst {\n\t\tform = {} as IFormInstance,\n\t\trules,\n\t\tinitialValues,\n\t\tstyle,\n\t\tclassName,\n\t\twidth,\n\t\tcolumns = 1,\n\t\tgap = \"1em\",\n\t\tlabelInline,\n\t\tlabelWidth,\n\t\tlabelRight,\n\t\tchildren,\n\t\tonKeyDown,\n\t\tonEnter,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst handleKeyDown = (e) => {\n\t\tonKeyDown?.(e);\n\n\t\tif (e.keyCode !== 13) return;\n\n\t\tonEnter?.(form.data, form);\n\t};\n\n\tconst gridColumns = useMemo(() => {\n\t\tif (!columns) return;\n\n\t\tif (typeof columns === \"number\")\n\t\t\treturn `minmax(0, 1fr) `.repeat(columns);\n\n\t\treturn columns;\n\t}, [columns]);\n\n\tuseEffect(() => {\n\t\tObject.assign(form, {\n\t\t\tdata: { ...initialValues },\n\t\t\trules,\n\t\t});\n\t}, [form]);\n\n\tuseEffect(() => {\n\t\tPubSub.subscribe(`${form.id}:change`, (evt, v) => {\n\t\t\tonChange?.(v.name, v.value);\n\t\t});\n\n\t\treturn () => {\n\t\t\tPubSub.unsubscribe(`${form.id}:change`);\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<Context value={form}>\n\t\t\t<form\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t...style,\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\tgap,\n\t\t\t\t\t\tgridTemplateColumns: gridColumns as any,\n\t\t\t\t\t\t\"--label-width\": labelWidth,\n\t\t\t\t\t\t\"--label-align\": labelRight ? \"right\" : undefined,\n\t\t\t\t\t} as CSSProperties\n\t\t\t\t}\n\t\t\t\tclassName={classNames(\"i-form\", className, {\n\t\t\t\t\t\"i-form-inline\": labelInline,\n\t\t\t\t})}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</form>\n\t\t</Context>\n\t);\n};\n\nForm.useForm = useForm;\nForm.Field = Field;\n\nexport default Form;\n"],"names":["Form","props","form","rules","initialValues","style","className","width","columns","gap","labelInline","labelWidth","labelRight","children","onKeyDown","onEnter","onChange","restProps","gridColumns","useMemo","repeat","useEffect","Object","assign","data","PubSub","subscribe","id","evt","v","name","value","unsubscribe","_jsx","Context","gridTemplateColumns","undefined","classNames","e","keyCode","useForm","Field"],"mappings":"4NASA,MAAMA,EAAQC,IACb,MAAMC,KACLA,EAAO,CAAmB,EAAAC,MAC1BA,EAAKC,cACLA,EAAaC,MACbA,EAAKC,UACLA,EAASC,MACTA,EAAKC,QACLA,EAAU,EAACC,IACXA,EAAM,MAAKC,YACXA,EAAWC,WACXA,EAAUC,WACVA,EAAUC,SACVA,EAAQC,UACRA,EAASC,QACTA,EAAOC,SACPA,KACGC,GACAhB,EAUEiB,EAAcC,GAAQ,KAC3B,GAAKX,EAEL,MAAuB,iBAAZA,EACH,kBAAkBY,OAAOZ,GAE1BA,CAAO,GACZ,CAACA,IAmBJ,OAjBAa,GAAU,KACTC,OAAOC,OAAOrB,EAAM,CACnBsB,KAAM,IAAKpB,GACXD,SACC,GACA,CAACD,IAEJmB,GAAU,KACTI,EAAOC,UAAU,GAAGxB,EAAKyB,aAAa,CAACC,EAAKC,KAC3Cb,IAAWa,EAAEC,KAAMD,EAAEE,MAAM,IAGrB,KACNN,EAAOO,YAAY,GAAG9B,EAAKyB,YAAY,IAEtC,IAGFM,EAACC,EAAQ,CAAAH,MAAO7B,EAAIW,SACnBoB,EACC,OAAA,CAAA5B,MACC,IACIA,EACHE,QACAE,MACA0B,oBAAqBjB,EACrB,gBAAiBP,EACjB,gBAAiBC,EAAa,aAAUwB,GAG1C9B,UAAW+B,EAAW,SAAU/B,EAAW,CAC1C,gBAAiBI,IAElBI,UAlDoBwB,IACtBxB,IAAYwB,GAEM,KAAdA,EAAEC,SAENxB,IAAUb,EAAKsB,KAAMtB,EAAK,KA8CpBe,EAASJ,SAEZA,KAEO,EAIZb,EAAKwC,QAAUA,EACfxC,EAAKyC,MAAQA"}
@@ -0,0 +1,2 @@
1
+ import o from"./form.js";export{o as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import t from"pubsub-js";import{uid as s}from"radash";import{useRef as a}from"react";class e{id;data={};cacheData={};rules={};constructor(){this.id=s(8),this.data={}}get(t){return t?this.data[t]:this.data}set(s,a){const e=this.id;if(this.data)return"string"==typeof s?(this.data[s]=a,this.cacheData[s]=a,void t.publish(`${e}:set:${s}`,a)):void Object.keys(s).map((a=>{this.data[a]=s[a],this.cacheData[a]=s[a],t.publish(`${e}:set:${a}`,s[a])}))}delete(t){delete this.data[t]}clear(){this.data&&(this.cacheData={},Object.keys(this.data).map((s=>{t.publish(`${this.id}:set:${s}`,void 0),this.data[s]=void 0})))}async validate(s){const{id:a,rules:e,data:i}=this;if(!e)return i;if(s){const r=e[s],n={validator:t=>Array.isArray(t)?t.length>0:![void 0,null,""].includes(t),message:void 0};"function"==typeof r?n.validator=r:!0===r?n.message="required":Object.assign(n,r);const d=n.validator?.(i[s],this);return d?(t.publish(`${a}:invalid:${name}`,{message:null,status:"normal"}),!0):(t.publish(`${a}:invalid:${s}`,{message:n.message,status:"error"}),!1)}let r=!0;return Object.keys(i).map((s=>{const n=e[s];if(void 0===n)return;const d={validator:t=>Array.isArray(t)?t.length>0:!!t,message:void 0};"function"==typeof n?d.validator=n:!0===n?d.message="required":Object.assign(d,n);const o=d.validator?.(i[s],this);o?t.publish(`${a}:invalid:${s}`,{message:null,status:"normal"}):(t.publish(`${a}:invalid:${s}`,{message:d.message,status:"error"}),r=!1)})),!!r&&Promise.resolve(i)}}function i(t){const s=a(null);return s.current||(s.current=t??new e),s.current}export{e as IFormInstance,i as default};
2
+ //# sourceMappingURL=useForm.js.map