@yoka-ui/ui 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/@Docs-yoka/exports.generated.md +93 -0
  2. package/@Docs-yoka/llms.txt +23 -0
  3. package/README.md +113 -0
  4. package/dist/es/Themes/InputTheme/index.d.ts +6 -0
  5. package/dist/es/Themes/InputTheme/index.js +22 -0
  6. package/dist/es/Themes/InputTheme/index.js.map +7 -0
  7. package/dist/es/Themes/TableTheme/index.d.ts +7 -0
  8. package/dist/es/Themes/TableTheme/index.js +31 -0
  9. package/dist/es/Themes/TableTheme/index.js.map +7 -0
  10. package/dist/es/Themes/TableTheme/index.less +46 -0
  11. package/dist/es/assets/image/YKUI-logo.png +0 -0
  12. package/dist/es/assets/less/ant-reset.less +402 -0
  13. package/dist/es/assets/less/index.less +1 -0
  14. package/dist/es/assets/less/variables.less +16 -0
  15. package/dist/es/business/AiChat/MarkdownRender.d.ts +9 -0
  16. package/dist/es/business/AiChat/MarkdownRender.js +72 -0
  17. package/dist/es/business/AiChat/MarkdownRender.js.map +7 -0
  18. package/dist/es/business/AiChat/index.d.ts +16 -0
  19. package/dist/es/business/AiChat/index.js +733 -0
  20. package/dist/es/business/AiChat/index.js.map +7 -0
  21. package/dist/es/business/AiChat/intentRecognizer.d.ts +33 -0
  22. package/dist/es/business/AiChat/intentRecognizer.js +166 -0
  23. package/dist/es/business/AiChat/intentRecognizer.js.map +7 -0
  24. package/dist/es/business/AiChat/navigationManager.d.ts +94 -0
  25. package/dist/es/business/AiChat/navigationManager.js +208 -0
  26. package/dist/es/business/AiChat/navigationManager.js.map +7 -0
  27. package/dist/es/business/AiChat/sse.d.ts +16 -0
  28. package/dist/es/business/AiChat/sse.js +171 -0
  29. package/dist/es/business/AiChat/sse.js.map +7 -0
  30. package/dist/es/business/AiChat/type.d.ts +156 -0
  31. package/dist/es/business/AiChat/type.js +1 -0
  32. package/dist/es/business/AiChat/type.js.map +7 -0
  33. package/dist/es/business/AiChat/useAiChat.d.ts +2 -0
  34. package/dist/es/business/AiChat/useAiChat.js +268 -0
  35. package/dist/es/business/AiChat/useAiChat.js.map +7 -0
  36. package/dist/es/business/AiChat/useTaskWorkflow.d.ts +25 -0
  37. package/dist/es/business/AiChat/useTaskWorkflow.js +196 -0
  38. package/dist/es/business/AiChat/useTaskWorkflow.js.map +7 -0
  39. package/dist/es/business/DrawerPageInfo/index.d.ts +35 -0
  40. package/dist/es/business/DrawerPageInfo/index.js +133 -0
  41. package/dist/es/business/DrawerPageInfo/index.js.map +7 -0
  42. package/dist/es/business/DrawerPageInfo/index.module.less +87 -0
  43. package/dist/es/business/DrawerPageInfo/test.png +0 -0
  44. package/dist/es/business/Editor/index.d.ts +11 -0
  45. package/dist/es/business/Editor/index.js +86 -0
  46. package/dist/es/business/Editor/index.js.map +7 -0
  47. package/dist/es/business/Editor/index.less +31 -0
  48. package/dist/es/business/Empty/empty.png +0 -0
  49. package/dist/es/business/Empty/index.d.ts +19 -0
  50. package/dist/es/business/Empty/index.js +51 -0
  51. package/dist/es/business/Empty/index.js.map +7 -0
  52. package/dist/es/business/ModCommonFilter/assets/images/empty.png +0 -0
  53. package/dist/es/business/ModCommonFilter/components/FilterButton/IconClose.d.ts +13 -0
  54. package/dist/es/business/ModCommonFilter/components/FilterButton/IconClose.js +51 -0
  55. package/dist/es/business/ModCommonFilter/components/FilterButton/IconClose.js.map +7 -0
  56. package/dist/es/business/ModCommonFilter/components/FilterButton/IconXiala.d.ts +13 -0
  57. package/dist/es/business/ModCommonFilter/components/FilterButton/IconXiala.js +51 -0
  58. package/dist/es/business/ModCommonFilter/components/FilterButton/IconXiala.js.map +7 -0
  59. package/dist/es/business/ModCommonFilter/components/FilterButton/index.d.ts +25 -0
  60. package/dist/es/business/ModCommonFilter/components/FilterButton/index.js +30 -0
  61. package/dist/es/business/ModCommonFilter/components/FilterButton/index.js.map +7 -0
  62. package/dist/es/business/ModCommonFilter/components/FilterButton/index.module.less +97 -0
  63. package/dist/es/business/ModCommonFilter/components/PopoverContent/Category.d.ts +18 -0
  64. package/dist/es/business/ModCommonFilter/components/PopoverContent/Category.js +74 -0
  65. package/dist/es/business/ModCommonFilter/components/PopoverContent/Category.js.map +7 -0
  66. package/dist/es/business/ModCommonFilter/components/PopoverContent/Content.d.ts +37 -0
  67. package/dist/es/business/ModCommonFilter/components/PopoverContent/Content.js +216 -0
  68. package/dist/es/business/ModCommonFilter/components/PopoverContent/Content.js.map +7 -0
  69. package/dist/es/business/ModCommonFilter/components/PopoverContent/Selected.d.ts +26 -0
  70. package/dist/es/business/ModCommonFilter/components/PopoverContent/Selected.js +102 -0
  71. package/dist/es/business/ModCommonFilter/components/PopoverContent/Selected.js.map +7 -0
  72. package/dist/es/business/ModCommonFilter/components/PopoverContent/index.d.ts +51 -0
  73. package/dist/es/business/ModCommonFilter/components/PopoverContent/index.js +71 -0
  74. package/dist/es/business/ModCommonFilter/components/PopoverContent/index.js.map +7 -0
  75. package/dist/es/business/ModCommonFilter/components/PopoverContent/index.module.less +260 -0
  76. package/dist/es/business/ModCommonFilter/index.d.ts +53 -0
  77. package/dist/es/business/ModCommonFilter/index.js +129 -0
  78. package/dist/es/business/ModCommonFilter/index.js.map +7 -0
  79. package/dist/es/business/ModCommonFilter/index.module.less +7 -0
  80. package/dist/es/business/ModCommonFilter/typing.d.ts +20 -0
  81. package/dist/es/business/ModCommonFilter/typing.js +1 -0
  82. package/dist/es/business/ModCommonFilter/typing.js.map +7 -0
  83. package/dist/es/business/YkPorjectSelect/icon-product.png +0 -0
  84. package/dist/es/business/YkPorjectSelect/index.d.ts +51 -0
  85. package/dist/es/business/YkPorjectSelect/index.js +260 -0
  86. package/dist/es/business/YkPorjectSelect/index.js.map +7 -0
  87. package/dist/es/business/YkPorjectSelect/index.module.less +334 -0
  88. package/dist/es/business/YkPorjectSelect/product-close.png +0 -0
  89. package/dist/es/components/Clock/index.d.ts +19 -0
  90. package/dist/es/components/Clock/index.js +55 -0
  91. package/dist/es/components/Clock/index.js.map +7 -0
  92. package/dist/es/components/DebounceInput/index.d.ts +16 -0
  93. package/dist/es/components/DebounceInput/index.js +77 -0
  94. package/dist/es/components/DebounceInput/index.js.map +7 -0
  95. package/dist/es/components/DebounceInput/index.module.less +23 -0
  96. package/dist/es/components/MultipleSelect/index.d.ts +23 -0
  97. package/dist/es/components/MultipleSelect/index.js +249 -0
  98. package/dist/es/components/MultipleSelect/index.js.map +7 -0
  99. package/dist/es/components/MultipleSelect/index.module.less +174 -0
  100. package/dist/es/components/NumericInput/index.d.ts +19 -0
  101. package/dist/es/components/NumericInput/index.js +56 -0
  102. package/dist/es/components/NumericInput/index.js.map +7 -0
  103. package/dist/es/components/RefreshButton/index.d.ts +8 -0
  104. package/dist/es/components/RefreshButton/index.js +21 -0
  105. package/dist/es/components/RefreshButton/index.js.map +7 -0
  106. package/dist/es/components/SearchWithHistory/index.d.ts +21 -0
  107. package/dist/es/components/SearchWithHistory/index.js +115 -0
  108. package/dist/es/components/SearchWithHistory/index.js.map +7 -0
  109. package/dist/es/components/SearchWithHistory/index.module.less +64 -0
  110. package/dist/es/components/TextWithInput/index.d.ts +15 -0
  111. package/dist/es/components/TextWithInput/index.js +35 -0
  112. package/dist/es/components/TextWithInput/index.js.map +7 -0
  113. package/dist/es/components/TextWithToolTip/index.d.ts +17 -0
  114. package/dist/es/components/TextWithToolTip/index.js +118 -0
  115. package/dist/es/components/TextWithToolTip/index.js.map +7 -0
  116. package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.d.ts +28 -0
  117. package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.js +161 -0
  118. package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.js.map +7 -0
  119. package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.less +151 -0
  120. package/dist/es/components/TreeTransfer/index.d.ts +28 -0
  121. package/dist/es/components/TreeTransfer/index.js +210 -0
  122. package/dist/es/components/TreeTransfer/index.js.map +7 -0
  123. package/dist/es/components/TreeTransfer/index.less +69 -0
  124. package/dist/es/components/TreeTransfer/types.d.ts +122 -0
  125. package/dist/es/components/TreeTransfer/types.js +6 -0
  126. package/dist/es/components/TreeTransfer/types.js.map +7 -0
  127. package/dist/es/components/TreeTransfer/utils/index.d.ts +120 -0
  128. package/dist/es/components/TreeTransfer/utils/index.js +195 -0
  129. package/dist/es/components/TreeTransfer/utils/index.js.map +7 -0
  130. package/dist/es/components/YkDateRangePicker/YkDateRangePicker.mdx +180 -0
  131. package/dist/es/components/YkDateRangePicker/index.d.ts +61 -0
  132. package/dist/es/components/YkDateRangePicker/index.js +317 -0
  133. package/dist/es/components/YkDateRangePicker/index.js.map +7 -0
  134. package/dist/es/components/YkDateRangePicker/index.module.less +304 -0
  135. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.d.ts +16 -0
  136. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js +193 -0
  137. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js.map +7 -0
  138. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.d.ts +31 -0
  139. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js +576 -0
  140. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js.map +7 -0
  141. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.d.ts +16 -0
  142. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js +55 -0
  143. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js.map +7 -0
  144. package/dist/es/components/YkRangeDateWithVS/index.d.ts +62 -0
  145. package/dist/es/components/YkRangeDateWithVS/index.js +130 -0
  146. package/dist/es/components/YkRangeDateWithVS/index.js.map +7 -0
  147. package/dist/es/components/YkRangeDateWithVS/index.module.less +566 -0
  148. package/dist/es/components/YkRangeDateWithVS/styles.d.ts +2 -0
  149. package/dist/es/components/YkRangeDateWithVS/styles.js +18 -0
  150. package/dist/es/components/YkRangeDateWithVS/styles.js.map +7 -0
  151. package/dist/es/components/YkRangeDateWithVS/typing.d.ts +15 -0
  152. package/dist/es/components/YkRangeTimeWithRecent/constants.d.ts +48 -0
  153. package/dist/es/components/YkRangeTimeWithRecent/constants.js +288 -0
  154. package/dist/es/components/YkRangeTimeWithRecent/constants.js.map +7 -0
  155. package/dist/es/components/YkRangeTimeWithRecent/index.d.ts +26 -0
  156. package/dist/es/components/YkRangeTimeWithRecent/index.js +647 -0
  157. package/dist/es/components/YkRangeTimeWithRecent/index.js.map +7 -0
  158. package/dist/es/components/YkRangeTimeWithRecent/index.module.less +263 -0
  159. package/dist/es/creative/ButtonRadioWithInfo/index.d.ts +17 -0
  160. package/dist/es/creative/ButtonRadioWithInfo/index.js +103 -0
  161. package/dist/es/creative/ButtonRadioWithInfo/index.js.map +7 -0
  162. package/dist/es/creative/ButtonRadioWithInfo/index.less +106 -0
  163. package/dist/es/creative/ButtonWithProgress/index.d.ts +11 -0
  164. package/dist/es/creative/ButtonWithProgress/index.js +79 -0
  165. package/dist/es/creative/ButtonWithProgress/index.js.map +7 -0
  166. package/dist/es/creative/ButtonWithProgress/index.less +66 -0
  167. package/dist/es/global.less +12 -0
  168. package/dist/es/index.d.ts +43 -0
  169. package/dist/es/index.js +87 -0
  170. package/dist/es/index.js.map +7 -0
  171. package/dist/es/index.less +35 -0
  172. package/dist/es/layout/FlexGrid/index.d.ts +25 -0
  173. package/dist/es/layout/FlexGrid/index.js +63 -0
  174. package/dist/es/layout/FlexGrid/index.js.map +7 -0
  175. package/dist/es/layout/YkContainer/index.d.ts +27 -0
  176. package/dist/es/layout/YkContainer/index.js +79 -0
  177. package/dist/es/layout/YkContainer/index.js.map +7 -0
  178. package/dist/es/layout/YkDrawer/index.d.ts +22 -0
  179. package/dist/es/layout/YkDrawer/index.js +160 -0
  180. package/dist/es/layout/YkDrawer/index.js.map +7 -0
  181. package/dist/es/layout/YkDrawer/index.module.less +45 -0
  182. package/dist/es/ui/LabelSelect/demo.d.ts +3 -0
  183. package/dist/es/ui/LabelSelect/demo.js +83 -0
  184. package/dist/es/ui/LabelSelect/demo.js.map +7 -0
  185. package/dist/es/ui/LabelSelect/index.d.ts +41 -0
  186. package/dist/es/ui/LabelSelect/index.js +136 -0
  187. package/dist/es/ui/LabelSelect/index.js.map +7 -0
  188. package/dist/es/ui/LogicOperator/index.d.ts +10 -0
  189. package/dist/es/ui/LogicOperator/index.js +12 -0
  190. package/dist/es/ui/LogicOperator/index.js.map +7 -0
  191. package/dist/es/ui/LogicOperator/index.module.less +97 -0
  192. package/dist/es/ui/YkButton/index.d.ts +9 -0
  193. package/dist/es/ui/YkButton/index.js +59 -0
  194. package/dist/es/ui/YkButton/index.js.map +7 -0
  195. package/dist/es/ui/YkCard/index.d.ts +4 -0
  196. package/dist/es/ui/YkCard/index.js +79 -0
  197. package/dist/es/ui/YkCard/index.js.map +7 -0
  198. package/dist/es/ui/YkCard/index.module.less +30 -0
  199. package/dist/es/ui/YkCheckbox/index.d.ts +4 -0
  200. package/dist/es/ui/YkCheckbox/index.js +45 -0
  201. package/dist/es/ui/YkCheckbox/index.js.map +7 -0
  202. package/dist/es/ui/YkCheckbox/index.module.less +22 -0
  203. package/dist/es/ui/YkDescriptions/index.d.ts +4 -0
  204. package/dist/es/ui/YkDescriptions/index.js +41 -0
  205. package/dist/es/ui/YkDescriptions/index.js.map +7 -0
  206. package/dist/es/ui/YkPagination/index.d.ts +4 -0
  207. package/dist/es/ui/YkPagination/index.js +63 -0
  208. package/dist/es/ui/YkPagination/index.js.map +7 -0
  209. package/dist/es/ui/YkPagination/index.module.less +22 -0
  210. package/dist/es/ui/YkRadio/index.d.ts +4 -0
  211. package/dist/es/ui/YkRadio/index.js +51 -0
  212. package/dist/es/ui/YkRadio/index.js.map +7 -0
  213. package/dist/es/ui/YkRadio/index.module.less +22 -0
  214. package/dist/es/ui/YkRadioBtnSpecial/index.d.ts +15 -0
  215. package/dist/es/ui/YkRadioBtnSpecial/index.js +23 -0
  216. package/dist/es/ui/YkRadioBtnSpecial/index.js.map +7 -0
  217. package/dist/es/ui/YkRadioBtnSpecial/index.module.less +112 -0
  218. package/dist/es/ui/YkSegmented/index.d.ts +4 -0
  219. package/dist/es/ui/YkSegmented/index.js +41 -0
  220. package/dist/es/ui/YkSegmented/index.js.map +7 -0
  221. package/dist/es/ui/YkSelect/index.d.ts +7 -0
  222. package/dist/es/ui/YkSelect/index.js +54 -0
  223. package/dist/es/ui/YkSelect/index.js.map +7 -0
  224. package/dist/es/ui/YkSpin/index.d.ts +4 -0
  225. package/dist/es/ui/YkSpin/index.js +41 -0
  226. package/dist/es/ui/YkSpin/index.js.map +7 -0
  227. package/dist/es/ui/YkStatistic/index.d.ts +4 -0
  228. package/dist/es/ui/YkStatistic/index.js +41 -0
  229. package/dist/es/ui/YkStatistic/index.js.map +7 -0
  230. package/dist/es/ui/YkSwitch/index.d.ts +4 -0
  231. package/dist/es/ui/YkSwitch/index.js +51 -0
  232. package/dist/es/ui/YkSwitch/index.js.map +7 -0
  233. package/dist/es/ui/YkTabs/index.d.ts +12 -0
  234. package/dist/es/ui/YkTabs/index.js +75 -0
  235. package/dist/es/ui/YkTabs/index.js.map +7 -0
  236. package/dist/es/ui/YkTabs/index.module.less +11 -0
  237. package/dist/es/ui/YkTooltip/index.d.ts +4 -0
  238. package/dist/es/ui/YkTooltip/index.js +50 -0
  239. package/dist/es/ui/YkTooltip/index.js.map +7 -0
  240. package/dist/es/utils/styleUtils.d.ts +18 -0
  241. package/dist/es/utils/styleUtils.js +57 -0
  242. package/dist/es/utils/styleUtils.js.map +7 -0
  243. package/dist/es/utils/ykStorybookDoc.d.ts +17 -0
  244. package/dist/es/utils/ykStorybookDoc.js +18 -0
  245. package/dist/es/utils/ykStorybookDoc.js.map +7 -0
  246. package/dist/lib/Themes/InputTheme/index.d.ts +6 -0
  247. package/dist/lib/Themes/InputTheme/index.js +52 -0
  248. package/dist/lib/Themes/InputTheme/index.js.map +7 -0
  249. package/dist/lib/Themes/TableTheme/index.d.ts +7 -0
  250. package/dist/lib/Themes/TableTheme/index.js +61 -0
  251. package/dist/lib/Themes/TableTheme/index.js.map +7 -0
  252. package/dist/lib/Themes/TableTheme/index.less +46 -0
  253. package/dist/lib/assets/image/YKUI-logo.png +0 -0
  254. package/dist/lib/assets/less/ant-reset.less +402 -0
  255. package/dist/lib/assets/less/index.less +1 -0
  256. package/dist/lib/assets/less/variables.less +16 -0
  257. package/dist/lib/business/AiChat/MarkdownRender.d.ts +9 -0
  258. package/dist/lib/business/AiChat/MarkdownRender.js +102 -0
  259. package/dist/lib/business/AiChat/MarkdownRender.js.map +7 -0
  260. package/dist/lib/business/AiChat/index.d.ts +16 -0
  261. package/dist/lib/business/AiChat/index.js +723 -0
  262. package/dist/lib/business/AiChat/index.js.map +7 -0
  263. package/dist/lib/business/AiChat/intentRecognizer.d.ts +33 -0
  264. package/dist/lib/business/AiChat/intentRecognizer.js +193 -0
  265. package/dist/lib/business/AiChat/intentRecognizer.js.map +7 -0
  266. package/dist/lib/business/AiChat/navigationManager.d.ts +94 -0
  267. package/dist/lib/business/AiChat/navigationManager.js +214 -0
  268. package/dist/lib/business/AiChat/navigationManager.js.map +7 -0
  269. package/dist/lib/business/AiChat/sse.d.ts +16 -0
  270. package/dist/lib/business/AiChat/sse.js +171 -0
  271. package/dist/lib/business/AiChat/sse.js.map +7 -0
  272. package/dist/lib/business/AiChat/type.d.ts +156 -0
  273. package/dist/lib/business/AiChat/type.js +18 -0
  274. package/dist/lib/business/AiChat/type.js.map +7 -0
  275. package/dist/lib/business/AiChat/useAiChat.d.ts +2 -0
  276. package/dist/lib/business/AiChat/useAiChat.js +252 -0
  277. package/dist/lib/business/AiChat/useAiChat.js.map +7 -0
  278. package/dist/lib/business/AiChat/useTaskWorkflow.d.ts +25 -0
  279. package/dist/lib/business/AiChat/useTaskWorkflow.js +182 -0
  280. package/dist/lib/business/AiChat/useTaskWorkflow.js.map +7 -0
  281. package/dist/lib/business/DrawerPageInfo/index.d.ts +35 -0
  282. package/dist/lib/business/DrawerPageInfo/index.js +163 -0
  283. package/dist/lib/business/DrawerPageInfo/index.js.map +7 -0
  284. package/dist/lib/business/DrawerPageInfo/index.module.less +87 -0
  285. package/dist/lib/business/DrawerPageInfo/test.png +0 -0
  286. package/dist/lib/business/Editor/index.d.ts +11 -0
  287. package/dist/lib/business/Editor/index.js +99 -0
  288. package/dist/lib/business/Editor/index.js.map +7 -0
  289. package/dist/lib/business/Editor/index.less +31 -0
  290. package/dist/lib/business/Empty/empty.png +0 -0
  291. package/dist/lib/business/Empty/index.d.ts +19 -0
  292. package/dist/lib/business/Empty/index.js +65 -0
  293. package/dist/lib/business/Empty/index.js.map +7 -0
  294. package/dist/lib/business/ModCommonFilter/assets/images/empty.png +0 -0
  295. package/dist/lib/business/ModCommonFilter/components/FilterButton/IconClose.d.ts +13 -0
  296. package/dist/lib/business/ModCommonFilter/components/FilterButton/IconClose.js +50 -0
  297. package/dist/lib/business/ModCommonFilter/components/FilterButton/IconClose.js.map +7 -0
  298. package/dist/lib/business/ModCommonFilter/components/FilterButton/IconXiala.d.ts +13 -0
  299. package/dist/lib/business/ModCommonFilter/components/FilterButton/IconXiala.js +50 -0
  300. package/dist/lib/business/ModCommonFilter/components/FilterButton/IconXiala.js.map +7 -0
  301. package/dist/lib/business/ModCommonFilter/components/FilterButton/index.d.ts +25 -0
  302. package/dist/lib/business/ModCommonFilter/components/FilterButton/index.js +60 -0
  303. package/dist/lib/business/ModCommonFilter/components/FilterButton/index.js.map +7 -0
  304. package/dist/lib/business/ModCommonFilter/components/FilterButton/index.module.less +97 -0
  305. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Category.d.ts +18 -0
  306. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Category.js +69 -0
  307. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Category.js.map +7 -0
  308. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Content.d.ts +37 -0
  309. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Content.js +211 -0
  310. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Content.js.map +7 -0
  311. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Selected.d.ts +26 -0
  312. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Selected.js +97 -0
  313. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Selected.js.map +7 -0
  314. package/dist/lib/business/ModCommonFilter/components/PopoverContent/index.d.ts +51 -0
  315. package/dist/lib/business/ModCommonFilter/components/PopoverContent/index.js +101 -0
  316. package/dist/lib/business/ModCommonFilter/components/PopoverContent/index.js.map +7 -0
  317. package/dist/lib/business/ModCommonFilter/components/PopoverContent/index.module.less +260 -0
  318. package/dist/lib/business/ModCommonFilter/index.d.ts +53 -0
  319. package/dist/lib/business/ModCommonFilter/index.js +143 -0
  320. package/dist/lib/business/ModCommonFilter/index.js.map +7 -0
  321. package/dist/lib/business/ModCommonFilter/index.module.less +7 -0
  322. package/dist/lib/business/ModCommonFilter/typing.d.ts +20 -0
  323. package/dist/lib/business/ModCommonFilter/typing.js +18 -0
  324. package/dist/lib/business/ModCommonFilter/typing.js.map +7 -0
  325. package/dist/lib/business/YkPorjectSelect/icon-product.png +0 -0
  326. package/dist/lib/business/YkPorjectSelect/index.d.ts +51 -0
  327. package/dist/lib/business/YkPorjectSelect/index.js +235 -0
  328. package/dist/lib/business/YkPorjectSelect/index.js.map +7 -0
  329. package/dist/lib/business/YkPorjectSelect/index.module.less +334 -0
  330. package/dist/lib/business/YkPorjectSelect/product-close.png +0 -0
  331. package/dist/lib/components/Clock/index.d.ts +19 -0
  332. package/dist/lib/components/Clock/index.js +85 -0
  333. package/dist/lib/components/Clock/index.js.map +7 -0
  334. package/dist/lib/components/DebounceInput/index.d.ts +16 -0
  335. package/dist/lib/components/DebounceInput/index.js +107 -0
  336. package/dist/lib/components/DebounceInput/index.js.map +7 -0
  337. package/dist/lib/components/DebounceInput/index.module.less +23 -0
  338. package/dist/lib/components/MultipleSelect/index.d.ts +23 -0
  339. package/dist/lib/components/MultipleSelect/index.js +279 -0
  340. package/dist/lib/components/MultipleSelect/index.js.map +7 -0
  341. package/dist/lib/components/MultipleSelect/index.module.less +174 -0
  342. package/dist/lib/components/NumericInput/index.d.ts +19 -0
  343. package/dist/lib/components/NumericInput/index.js +67 -0
  344. package/dist/lib/components/NumericInput/index.js.map +7 -0
  345. package/dist/lib/components/RefreshButton/index.d.ts +8 -0
  346. package/dist/lib/components/RefreshButton/index.js +51 -0
  347. package/dist/lib/components/RefreshButton/index.js.map +7 -0
  348. package/dist/lib/components/SearchWithHistory/index.d.ts +21 -0
  349. package/dist/lib/components/SearchWithHistory/index.js +145 -0
  350. package/dist/lib/components/SearchWithHistory/index.js.map +7 -0
  351. package/dist/lib/components/SearchWithHistory/index.module.less +64 -0
  352. package/dist/lib/components/TextWithInput/index.d.ts +15 -0
  353. package/dist/lib/components/TextWithInput/index.js +65 -0
  354. package/dist/lib/components/TextWithInput/index.js.map +7 -0
  355. package/dist/lib/components/TextWithToolTip/index.d.ts +17 -0
  356. package/dist/lib/components/TextWithToolTip/index.js +134 -0
  357. package/dist/lib/components/TextWithToolTip/index.js.map +7 -0
  358. package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.d.ts +28 -0
  359. package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.js +191 -0
  360. package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.js.map +7 -0
  361. package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.less +151 -0
  362. package/dist/lib/components/TreeTransfer/index.d.ts +28 -0
  363. package/dist/lib/components/TreeTransfer/index.js +214 -0
  364. package/dist/lib/components/TreeTransfer/index.js.map +7 -0
  365. package/dist/lib/components/TreeTransfer/index.less +69 -0
  366. package/dist/lib/components/TreeTransfer/types.d.ts +122 -0
  367. package/dist/lib/components/TreeTransfer/types.js +30 -0
  368. package/dist/lib/components/TreeTransfer/types.js.map +7 -0
  369. package/dist/lib/components/TreeTransfer/utils/index.d.ts +120 -0
  370. package/dist/lib/components/TreeTransfer/utils/index.js +208 -0
  371. package/dist/lib/components/TreeTransfer/utils/index.js.map +7 -0
  372. package/dist/lib/components/YkDateRangePicker/YkDateRangePicker.mdx +180 -0
  373. package/dist/lib/components/YkDateRangePicker/index.d.ts +61 -0
  374. package/dist/lib/components/YkDateRangePicker/index.js +338 -0
  375. package/dist/lib/components/YkDateRangePicker/index.js.map +7 -0
  376. package/dist/lib/components/YkDateRangePicker/index.module.less +304 -0
  377. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.d.ts +16 -0
  378. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js +223 -0
  379. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js.map +7 -0
  380. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.d.ts +31 -0
  381. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js +587 -0
  382. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js.map +7 -0
  383. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.d.ts +16 -0
  384. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js +85 -0
  385. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js.map +7 -0
  386. package/dist/lib/components/YkRangeDateWithVS/index.d.ts +62 -0
  387. package/dist/lib/components/YkRangeDateWithVS/index.js +140 -0
  388. package/dist/lib/components/YkRangeDateWithVS/index.js.map +7 -0
  389. package/dist/lib/components/YkRangeDateWithVS/index.module.less +566 -0
  390. package/dist/lib/components/YkRangeDateWithVS/styles.d.ts +2 -0
  391. package/dist/lib/components/YkRangeDateWithVS/styles.js +48 -0
  392. package/dist/lib/components/YkRangeDateWithVS/styles.js.map +7 -0
  393. package/dist/lib/components/YkRangeDateWithVS/typing.d.ts +15 -0
  394. package/dist/lib/components/YkRangeTimeWithRecent/constants.d.ts +48 -0
  395. package/dist/lib/components/YkRangeTimeWithRecent/constants.js +333 -0
  396. package/dist/lib/components/YkRangeTimeWithRecent/constants.js.map +7 -0
  397. package/dist/lib/components/YkRangeTimeWithRecent/index.d.ts +26 -0
  398. package/dist/lib/components/YkRangeTimeWithRecent/index.js +647 -0
  399. package/dist/lib/components/YkRangeTimeWithRecent/index.js.map +7 -0
  400. package/dist/lib/components/YkRangeTimeWithRecent/index.module.less +263 -0
  401. package/dist/lib/creative/ButtonRadioWithInfo/index.d.ts +17 -0
  402. package/dist/lib/creative/ButtonRadioWithInfo/index.js +102 -0
  403. package/dist/lib/creative/ButtonRadioWithInfo/index.js.map +7 -0
  404. package/dist/lib/creative/ButtonRadioWithInfo/index.less +106 -0
  405. package/dist/lib/creative/ButtonWithProgress/index.d.ts +11 -0
  406. package/dist/lib/creative/ButtonWithProgress/index.js +70 -0
  407. package/dist/lib/creative/ButtonWithProgress/index.js.map +7 -0
  408. package/dist/lib/creative/ButtonWithProgress/index.less +66 -0
  409. package/dist/lib/global.less +12 -0
  410. package/dist/lib/index.d.ts +43 -0
  411. package/dist/lib/index.js +161 -0
  412. package/dist/lib/index.js.map +7 -0
  413. package/dist/lib/index.less +35 -0
  414. package/dist/lib/layout/FlexGrid/index.d.ts +25 -0
  415. package/dist/lib/layout/FlexGrid/index.js +77 -0
  416. package/dist/lib/layout/FlexGrid/index.js.map +7 -0
  417. package/dist/lib/layout/YkContainer/index.d.ts +27 -0
  418. package/dist/lib/layout/YkContainer/index.js +79 -0
  419. package/dist/lib/layout/YkContainer/index.js.map +7 -0
  420. package/dist/lib/layout/YkDrawer/index.d.ts +22 -0
  421. package/dist/lib/layout/YkDrawer/index.js +152 -0
  422. package/dist/lib/layout/YkDrawer/index.js.map +7 -0
  423. package/dist/lib/layout/YkDrawer/index.module.less +45 -0
  424. package/dist/lib/ui/LabelSelect/demo.d.ts +3 -0
  425. package/dist/lib/ui/LabelSelect/demo.js +113 -0
  426. package/dist/lib/ui/LabelSelect/demo.js.map +7 -0
  427. package/dist/lib/ui/LabelSelect/index.d.ts +41 -0
  428. package/dist/lib/ui/LabelSelect/index.js +124 -0
  429. package/dist/lib/ui/LabelSelect/index.js.map +7 -0
  430. package/dist/lib/ui/LogicOperator/index.d.ts +10 -0
  431. package/dist/lib/ui/LogicOperator/index.js +42 -0
  432. package/dist/lib/ui/LogicOperator/index.js.map +7 -0
  433. package/dist/lib/ui/LogicOperator/index.module.less +97 -0
  434. package/dist/lib/ui/YkButton/index.d.ts +9 -0
  435. package/dist/lib/ui/YkButton/index.js +55 -0
  436. package/dist/lib/ui/YkButton/index.js.map +7 -0
  437. package/dist/lib/ui/YkCard/index.d.ts +4 -0
  438. package/dist/lib/ui/YkCard/index.js +76 -0
  439. package/dist/lib/ui/YkCard/index.js.map +7 -0
  440. package/dist/lib/ui/YkCard/index.module.less +30 -0
  441. package/dist/lib/ui/YkCheckbox/index.d.ts +4 -0
  442. package/dist/lib/ui/YkCheckbox/index.js +42 -0
  443. package/dist/lib/ui/YkCheckbox/index.js.map +7 -0
  444. package/dist/lib/ui/YkCheckbox/index.module.less +22 -0
  445. package/dist/lib/ui/YkDescriptions/index.d.ts +4 -0
  446. package/dist/lib/ui/YkDescriptions/index.js +41 -0
  447. package/dist/lib/ui/YkDescriptions/index.js.map +7 -0
  448. package/dist/lib/ui/YkPagination/index.d.ts +4 -0
  449. package/dist/lib/ui/YkPagination/index.js +60 -0
  450. package/dist/lib/ui/YkPagination/index.js.map +7 -0
  451. package/dist/lib/ui/YkPagination/index.module.less +22 -0
  452. package/dist/lib/ui/YkRadio/index.d.ts +4 -0
  453. package/dist/lib/ui/YkRadio/index.js +51 -0
  454. package/dist/lib/ui/YkRadio/index.js.map +7 -0
  455. package/dist/lib/ui/YkRadio/index.module.less +22 -0
  456. package/dist/lib/ui/YkRadioBtnSpecial/index.d.ts +15 -0
  457. package/dist/lib/ui/YkRadioBtnSpecial/index.js +53 -0
  458. package/dist/lib/ui/YkRadioBtnSpecial/index.js.map +7 -0
  459. package/dist/lib/ui/YkRadioBtnSpecial/index.module.less +112 -0
  460. package/dist/lib/ui/YkSegmented/index.d.ts +4 -0
  461. package/dist/lib/ui/YkSegmented/index.js +41 -0
  462. package/dist/lib/ui/YkSegmented/index.js.map +7 -0
  463. package/dist/lib/ui/YkSelect/index.d.ts +7 -0
  464. package/dist/lib/ui/YkSelect/index.js +54 -0
  465. package/dist/lib/ui/YkSelect/index.js.map +7 -0
  466. package/dist/lib/ui/YkSpin/index.d.ts +4 -0
  467. package/dist/lib/ui/YkSpin/index.js +41 -0
  468. package/dist/lib/ui/YkSpin/index.js.map +7 -0
  469. package/dist/lib/ui/YkStatistic/index.d.ts +4 -0
  470. package/dist/lib/ui/YkStatistic/index.js +41 -0
  471. package/dist/lib/ui/YkStatistic/index.js.map +7 -0
  472. package/dist/lib/ui/YkSwitch/index.d.ts +4 -0
  473. package/dist/lib/ui/YkSwitch/index.js +51 -0
  474. package/dist/lib/ui/YkSwitch/index.js.map +7 -0
  475. package/dist/lib/ui/YkTabs/index.d.ts +12 -0
  476. package/dist/lib/ui/YkTabs/index.js +70 -0
  477. package/dist/lib/ui/YkTabs/index.js.map +7 -0
  478. package/dist/lib/ui/YkTabs/index.module.less +11 -0
  479. package/dist/lib/ui/YkTooltip/index.d.ts +4 -0
  480. package/dist/lib/ui/YkTooltip/index.js +45 -0
  481. package/dist/lib/ui/YkTooltip/index.js.map +7 -0
  482. package/dist/lib/utils/styleUtils.d.ts +18 -0
  483. package/dist/lib/utils/styleUtils.js +84 -0
  484. package/dist/lib/utils/styleUtils.js.map +7 -0
  485. package/dist/lib/utils/ykStorybookDoc.d.ts +17 -0
  486. package/dist/lib/utils/ykStorybookDoc.js +41 -0
  487. package/dist/lib/utils/ykStorybookDoc.js.map +7 -0
  488. package/package.json +148 -0
@@ -0,0 +1,69 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one or more
3
+ * contributor license agreements. See the NOTICE file distributed with
4
+ * this work for additional information regarding copyright ownership.
5
+ * The ASF licenses this file to You under the Apache License, Version 2.0
6
+ * (the "License"); you may not use this file except in compliance with
7
+ * the License. You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ *
17
+ */
18
+
19
+ .tree-transfer-wrapper {
20
+ width: 100%;
21
+ height: 100%;
22
+ display: flex;
23
+ flex-direction: column;
24
+
25
+ .ant-spin-nested-loading {
26
+ width: 100%;
27
+ height: 100%;
28
+
29
+ .ant-spin-container {
30
+ width: 100%;
31
+ height: 100%;
32
+ }
33
+ }
34
+
35
+ // 主内容区域
36
+ .tree-transfer-content {
37
+ display: flex;
38
+ align-items: stretch;
39
+ height: 100%;
40
+ }
41
+
42
+ // 中间操作按钮区域
43
+ .tree-transfer-operations {
44
+ display: flex;
45
+ flex-direction: column;
46
+ justify-content: center;
47
+ gap: 8px;
48
+ padding-left: 7px;
49
+ width: 40px;
50
+ flex-shrink: 0;
51
+
52
+ .ant-space {
53
+ .tree-transfer-operation-btn {
54
+ width: 25px;
55
+ height: 25px;
56
+ min-width: 25px;
57
+ padding: 0;
58
+ display: flex;
59
+ align-items: center;
60
+ justify-content: center;
61
+
62
+ .anticon {
63
+ font-size: 12px;
64
+ margin: 0;
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,122 @@
1
+ /// <reference types="react" />
2
+ import type { ColumnsType } from 'antd/es/table';
3
+ /**
4
+ * 默认每页显示条数
5
+ */
6
+ export declare const DEFAULT_PAGE_SIZE = 20;
7
+ /**
8
+ * 树形表格行数据基类
9
+ * @template T - 自定义数据类型
10
+ */
11
+ export interface TreeTransferRow<T = any> {
12
+ /** 唯一标识 */
13
+ key: string | number;
14
+ /** 父节点唯一标识 */
15
+ parentKey?: string | number;
16
+ /** 子节点列表 */
17
+ children?: TreeTransferRow<T>[];
18
+ /** 是否为父节点 */
19
+ isParent?: boolean;
20
+ /** 自定义数据 */
21
+ data: T;
22
+ }
23
+ /**
24
+ * 穿梭框面板Props
25
+ */
26
+ export interface TreeTransferPanelProps<T = any> {
27
+ /** 数据源 */
28
+ dataSource: TreeTransferRow<T>[];
29
+ /** 已选中的行keys */
30
+ selectedRowKeys: React.Key[];
31
+ /** 行选择回调 */
32
+ onRowSelect: (selectedRows: TreeTransferRow<T>[], selectedRowKeys: React.Key[]) => void;
33
+ /** 搜索关键词 */
34
+ searchValue: string;
35
+ /** 设置搜索关键词 */
36
+ setSearchValue: (value: string) => void;
37
+ searchPlaceholder?: string;
38
+ /** 总数 */
39
+ totalCount: number;
40
+ /** 面板标题 */
41
+ title: string;
42
+ /** 是否显示分页 */
43
+ showPagination?: boolean;
44
+ /** 当前页码 */
45
+ currentPage?: number;
46
+ /** 每页条数(与父组件 pageSize 保持一致,用于分页器) */
47
+ pageSize?: number;
48
+ /** 分页变化回调 */
49
+ onPageChange?: (page: number) => void;
50
+ /** 自定义列配置,如果不传则使用默认配置 */
51
+ columns?: ColumnsType<TreeTransferRow<T>>;
52
+ /** 自定义渲染函数 */
53
+ customRender?: {
54
+ /** 自定义行单元格渲染 */
55
+ onCell?: (record: TreeTransferRow<T>) => any;
56
+ /** 自定义单元格内容渲染 */
57
+ cellRender?: (text: any, record: TreeTransferRow<T>, index: number) => React.ReactNode;
58
+ };
59
+ }
60
+ /**
61
+ * 穿梭框面板状态
62
+ */
63
+ export interface TreeTransferPanelState {
64
+ /** 当前页数据 */
65
+ dataSource: TreeTransferRow[];
66
+ /** 选中的keys */
67
+ selectedRowKeys: React.Key[];
68
+ /** 搜索关键词 */
69
+ searchValue: string;
70
+ /** 当前页码 */
71
+ currentPage: number;
72
+ /** 总条数 */
73
+ totalCount: number;
74
+ }
75
+ /**
76
+ * 穿梭框主组件Props
77
+ * @template T - 数据类型
78
+ */
79
+ export interface TreeTransferProps<T = any> {
80
+ /** 左侧数据源(完整数据) */
81
+ leftDataSource: TreeTransferRow<T>[];
82
+ /** 右侧数据源(完整数据) */
83
+ rightDataSource: TreeTransferRow<T>[];
84
+ /** 数据加载状态 */
85
+ loading?: boolean;
86
+ /** 左侧面板标题 */
87
+ leftTitle?: string;
88
+ /** 右侧面板标题 */
89
+ rightTitle?: string;
90
+ /** 左侧总数文本(如需自定义) */
91
+ leftCountText?: string;
92
+ /** 右侧总数文本(如需自定义) */
93
+ rightCountText?: string;
94
+ /** 搜索框占位符 */
95
+ searchPlaceholder?: string;
96
+ /** 是否允许跨页选择 */
97
+ crossPageSelection?: boolean;
98
+ /** 每页显示条数 */
99
+ pageSize?: number;
100
+ /** 自定义列配置 */
101
+ columns?: ColumnsType<TreeTransferRow<T>>;
102
+ /** 自定义渲染 */
103
+ customRender?: TreeTransferPanelProps['customRender'];
104
+ /** 搜索字段,支持字段名或自定义函数 */
105
+ searchFields?: (string | ((item: T) => string))[];
106
+ /** 选中项变化回调 */
107
+ onChange?: (params: {
108
+ leftSelected: TreeTransferRow<T>[];
109
+ rightSelected: TreeTransferRow<T>[];
110
+ leftData: TreeTransferRow<T>[];
111
+ rightData: TreeTransferRow<T>[];
112
+ }) => void;
113
+ }
114
+ /**
115
+ * 权限移动数据(用于穿梭操作)
116
+ */
117
+ export interface TransferItem<T = any> {
118
+ /** 所属父节点key */
119
+ parentKey: string | number;
120
+ /** 移动的数据 */
121
+ data: T;
122
+ }
@@ -0,0 +1,30 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/components/TreeTransfer/types.ts
20
+ var types_exports = {};
21
+ __export(types_exports, {
22
+ DEFAULT_PAGE_SIZE: () => DEFAULT_PAGE_SIZE
23
+ });
24
+ module.exports = __toCommonJS(types_exports);
25
+ var DEFAULT_PAGE_SIZE = 20;
26
+ // Annotate the CommonJS export names for ESM import in node:
27
+ 0 && (module.exports = {
28
+ DEFAULT_PAGE_SIZE
29
+ });
30
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/TreeTransfer/types.ts"],
4
+ "sourcesContent": ["/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport type { ColumnsType } from 'antd/es/table';\n\n/**\n * 默认每页显示条数\n */\nexport const DEFAULT_PAGE_SIZE = 20;\n\n/**\n * 树形表格行数据基类\n * @template T - 自定义数据类型\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface TreeTransferRow<T = any> {\n /** 唯一标识 */\n key: string | number;\n /** 父节点唯一标识 */\n parentKey?: string | number;\n /** 子节点列表 */\n children?: TreeTransferRow<T>[];\n /** 是否为父节点 */\n isParent?: boolean;\n /** 自定义数据 */\n data: T;\n}\n\n/**\n * 穿梭框面板Props\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface TreeTransferPanelProps<T = any> {\n /** 数据源 */\n dataSource: TreeTransferRow<T>[];\n /** 已选中的行keys */\n selectedRowKeys: React.Key[];\n /** 行选择回调 */\n onRowSelect: (selectedRows: TreeTransferRow<T>[], selectedRowKeys: React.Key[]) => void;\n /** 搜索关键词 */\n searchValue: string;\n /** 设置搜索关键词 */\n setSearchValue: (value: string) => void;\n searchPlaceholder?: string;\n /** 总数 */\n totalCount: number;\n /** 面板标题 */\n title: string;\n /** 是否显示分页 */\n showPagination?: boolean;\n /** 当前页码 */\n currentPage?: number;\n /** 每页条数(与父组件 pageSize 保持一致,用于分页器) */\n pageSize?: number;\n /** 分页变化回调 */\n onPageChange?: (page: number) => void;\n /** 自定义列配置,如果不传则使用默认配置 */\n columns?: ColumnsType<TreeTransferRow<T>>;\n /** 自定义渲染函数 */\n customRender?: {\n /** 自定义行单元格渲染 */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onCell?: (record: TreeTransferRow<T>) => any;\n /** 自定义单元格内容渲染 */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n cellRender?: (text: any, record: TreeTransferRow<T>, index: number) => React.ReactNode;\n };\n}\n\n/**\n * 穿梭框面板状态\n */\nexport interface TreeTransferPanelState {\n /** 当前页数据 */\n dataSource: TreeTransferRow[];\n /** 选中的keys */\n selectedRowKeys: React.Key[];\n /** 搜索关键词 */\n searchValue: string;\n /** 当前页码 */\n currentPage: number;\n /** 总条数 */\n totalCount: number;\n}\n\n/**\n * 穿梭框主组件Props\n * @template T - 数据类型\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface TreeTransferProps<T = any> {\n /** 左侧数据源(完整数据) */\n leftDataSource: TreeTransferRow<T>[];\n /** 右侧数据源(完整数据) */\n rightDataSource: TreeTransferRow<T>[];\n /** 数据加载状态 */\n loading?: boolean;\n /** 左侧面板标题 */\n leftTitle?: string;\n /** 右侧面板标题 */\n rightTitle?: string;\n /** 左侧总数文本(如需自定义) */\n leftCountText?: string;\n /** 右侧总数文本(如需自定义) */\n rightCountText?: string;\n /** 搜索框占位符 */\n searchPlaceholder?: string;\n /** 是否允许跨页选择 */\n crossPageSelection?: boolean;\n /** 每页显示条数 */\n pageSize?: number;\n /** 自定义列配置 */\n columns?: ColumnsType<TreeTransferRow<T>>;\n /** 自定义渲染 */\n customRender?: TreeTransferPanelProps['customRender'];\n /** 搜索字段,支持字段名或自定义函数 */\n searchFields?: (string | ((item: T) => string))[];\n /** 选中项变化回调 */\n onChange?: (params: {\n leftSelected: TreeTransferRow<T>[];\n rightSelected: TreeTransferRow<T>[];\n leftData: TreeTransferRow<T>[];\n rightData: TreeTransferRow<T>[];\n }) => void;\n}\n\n/**\n * 权限移动数据(用于穿梭操作)\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface TransferItem<T = any> {\n /** 所属父节点key */\n parentKey: string | number;\n /** 移动的数据 */\n data: T;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBO,IAAM,oBAAoB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,120 @@
1
+ /// <reference types="react" />
2
+ import { TreeTransferRow } from '../types';
3
+ /**
4
+ * 从平铺的数据构建树形结构
5
+ *
6
+ * @param data - 平铺的数据数组
7
+ * @param options - 配置选项
8
+ * @returns 树形结构数据
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * const flatData = [
13
+ * { id: '1', parentId: null, name: '应用1' },
14
+ * { id: '1-1', parentId: '1', name: '权限1' },
15
+ * ];
16
+ *
17
+ * const treeData = buildTreeData(flatData, {
18
+ * keyField: 'id',
19
+ * parentField: 'parentId',
20
+ * });
21
+ * ```
22
+ */
23
+ export declare function buildTreeData<T extends Record<string, any>>(data: T[], options?: {
24
+ /** 唯一键字段名,默认 'id' */
25
+ keyField?: string;
26
+ /** 父键字段名,默认 'parentId' */
27
+ parentField?: string;
28
+ /** 判断是否为父节点的函数,默认:无父键则为父节点 */
29
+ isParent?: (item: T) => boolean;
30
+ }): TreeTransferRow<T>[];
31
+ /**
32
+ * 将树形结构平铺为一维数组(深度优先)
33
+ *
34
+ * @example
35
+ * ```tsx
36
+ * const flat = flattenTreeData([{ key: '1', children: [{ key: '1-1' }] }]);
37
+ * // → [{ key: '1' }, { key: '1-1' }]
38
+ * ```
39
+ */
40
+ export declare function flattenTreeData<T = any>(treeData: TreeTransferRow<T>[]): TreeTransferRow<T>[];
41
+ /**
42
+ * 根据页码切片数据(前端分页)
43
+ *
44
+ * @param data - 数据数组
45
+ * @param page - 页码(从 1 开始)
46
+ * @param pageSize - 每页条数
47
+ * @returns 当前页数据
48
+ */
49
+ export declare function sliceDataByPage<T = any>(data: TreeTransferRow<T>[], page: number, pageSize?: number): TreeTransferRow<T>[];
50
+ /**
51
+ * 过滤数据(支持模糊搜索,递归保留有匹配子节点的父节点)
52
+ *
53
+ * @param data - 数据数组
54
+ * @param searchValue - 搜索关键词(空字符串返回全量数据)
55
+ * @param fields - 搜索字段列表,支持字段名或自定义取值函数,默认 ['id', 'name']
56
+ * @returns 过滤后的数据
57
+ */
58
+ export declare function filterData<T = any>(data: TreeTransferRow<T>[], searchValue: string, fields?: (string | ((item: T) => string))[]): TreeTransferRow<T>[];
59
+ /**
60
+ * 获取选中节点及其所有后代节点的 key 集合(用于批量移除)
61
+ *
62
+ * 修复说明:原实现对 3+ 层树只展开 2 层。现改为对每个选中节点
63
+ * 递归收集完整后代链,支持任意深度的树结构。
64
+ *
65
+ * @param selectedKeys - 选中的 keys
66
+ * @param dataSource - 完整数据源
67
+ * @returns 所有相关 key(字符串形式,含选中节点本身)
68
+ *
69
+ * @example
70
+ * ```tsx
71
+ * // 选中 'app1'(含 2 级子节点)
72
+ * getAllDescendantKeys(['app1'], dataSource);
73
+ * // → ['app1', 'app1-perm1', 'app1-perm1-sub1', 'app1-perm2', ...]
74
+ * ```
75
+ */
76
+ export declare function getAllDescendantKeys(selectedKeys: React.Key[], dataSource: TreeTransferRow[]): string[];
77
+ /**
78
+ * 计算数据总节点数(包含所有后代)
79
+ */
80
+ export declare function countTotalNodes<T = any>(data: TreeTransferRow<T>[]): number;
81
+ /**
82
+ * 计算顶层节点数(用于分页总数,不含嵌套子节点)
83
+ */
84
+ export declare function countParentNodes<T = any>(data: TreeTransferRow<T>[]): number;
85
+ /**
86
+ * 查找节点及其所有后代节点(按 key 定位)
87
+ */
88
+ export declare function findNodeWithDescendants<T = any>(key: string | number, dataSource: TreeTransferRow<T>[]): TreeTransferRow<T>[];
89
+ /**
90
+ * 从树形数据中移除指定 key 的节点(不可变,返回新数组)
91
+ *
92
+ * @param dataSource - 数据源
93
+ * @param keysToRemove - 要移除的节点 key 集合
94
+ * @returns 过滤后的新数据源
95
+ */
96
+ export declare function removeNodesFromTree<T = any>(dataSource: TreeTransferRow<T>[], keysToRemove: Set<string | number>): TreeTransferRow<T>[];
97
+ /**
98
+ * 向树形数据添加节点
99
+ *
100
+ * @param dataSource - 数据源
101
+ * @param parentKey - 父节点 key;传 null 表示添加到根
102
+ * @param nodes - 要添加的节点列表
103
+ * @returns 新的数据源
104
+ */
105
+ export declare function addNodesToTree<T = any>(dataSource: TreeTransferRow<T>[], parentKey: string | number | null, nodes: TreeTransferRow<T>[]): TreeTransferRow<T>[];
106
+ /**
107
+ * 从树形数据中提取"顶层选中节点"(用于穿梭框移动操作)
108
+ *
109
+ * 行为:遍历树,遇到选中节点时直接收集(含其 children),不再向下递归。
110
+ * 这样可以避免父节点和其已选中的子节点被分别添加两次。
111
+ *
112
+ * 适用场景:AntD Table 的 checkStrictly:false 级联选择中,
113
+ * 选中父节点会自动勾选子节点。move 时只需携带父节点(含 children)。
114
+ * 若仅选了某个子节点,则该子节点会被作为顶层节点添加到目标列表。
115
+ *
116
+ * @param selectedKeys - 选中的 key 集合(字符串)
117
+ * @param dataSource - 数据源(支持嵌套树)
118
+ * @returns 最小集合的顶层选中节点列表
119
+ */
120
+ export declare function extractTopLevelSelectedNodes<T = any>(selectedKeys: Set<string>, dataSource: TreeTransferRow<T>[]): TreeTransferRow<T>[];
@@ -0,0 +1,208 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/components/TreeTransfer/utils/index.ts
20
+ var utils_exports = {};
21
+ __export(utils_exports, {
22
+ addNodesToTree: () => addNodesToTree,
23
+ buildTreeData: () => buildTreeData,
24
+ countParentNodes: () => countParentNodes,
25
+ countTotalNodes: () => countTotalNodes,
26
+ extractTopLevelSelectedNodes: () => extractTopLevelSelectedNodes,
27
+ filterData: () => filterData,
28
+ findNodeWithDescendants: () => findNodeWithDescendants,
29
+ flattenTreeData: () => flattenTreeData,
30
+ getAllDescendantKeys: () => getAllDescendantKeys,
31
+ removeNodesFromTree: () => removeNodesFromTree,
32
+ sliceDataByPage: () => sliceDataByPage
33
+ });
34
+ module.exports = __toCommonJS(utils_exports);
35
+ var import_types = require("../types");
36
+ function buildTreeData(data, options = {}) {
37
+ const { keyField = "id", parentField = "parentId", isParent = (item) => !item[parentField] } = options;
38
+ const map = /* @__PURE__ */ new Map();
39
+ const roots = [];
40
+ data.forEach((item) => {
41
+ const key = item[keyField];
42
+ map.set(key, { key, data: item, isParent: isParent(item), children: [] });
43
+ });
44
+ data.forEach((item) => {
45
+ const key = item[keyField];
46
+ const parentId = item[parentField];
47
+ const node = map.get(key);
48
+ if (parentId && map.has(parentId)) {
49
+ map.get(parentId).children.push(node);
50
+ } else {
51
+ roots.push(node);
52
+ }
53
+ });
54
+ return roots;
55
+ }
56
+ function flattenTreeData(treeData) {
57
+ const result = [];
58
+ function traverse(nodes) {
59
+ nodes.forEach((node) => {
60
+ var _a;
61
+ result.push(node);
62
+ if ((_a = node.children) == null ? void 0 : _a.length)
63
+ traverse(node.children);
64
+ });
65
+ }
66
+ traverse(treeData);
67
+ return result;
68
+ }
69
+ function sliceDataByPage(data, page, pageSize = import_types.DEFAULT_PAGE_SIZE) {
70
+ const start = (page - 1) * pageSize;
71
+ return data.slice(start, start + pageSize);
72
+ }
73
+ function filterData(data, searchValue, fields = ["id", "name"]) {
74
+ if (!searchValue.trim())
75
+ return data;
76
+ const lowerSearch = searchValue.toLowerCase();
77
+ return data.filter((item) => {
78
+ var _a;
79
+ const selfMatch = fields.some((field) => {
80
+ const value = typeof field === "function" ? field(item.data) : item.data[field];
81
+ return String(value ?? "").toLowerCase().includes(lowerSearch);
82
+ });
83
+ if (selfMatch)
84
+ return true;
85
+ if ((_a = item.children) == null ? void 0 : _a.length) {
86
+ return filterData(item.children, searchValue, fields).length > 0;
87
+ }
88
+ return false;
89
+ });
90
+ }
91
+ function getAllDescendantKeys(selectedKeys, dataSource) {
92
+ const keySet = new Set(selectedKeys.map(String));
93
+ const allKeys = [];
94
+ function collectWithDescendants(node) {
95
+ var _a;
96
+ allKeys.push(String(node.key));
97
+ (_a = node.children) == null ? void 0 : _a.forEach(collectWithDescendants);
98
+ }
99
+ function traverse(nodes) {
100
+ nodes.forEach((node) => {
101
+ var _a;
102
+ if (keySet.has(String(node.key))) {
103
+ collectWithDescendants(node);
104
+ } else {
105
+ if ((_a = node.children) == null ? void 0 : _a.length)
106
+ traverse(node.children);
107
+ }
108
+ });
109
+ }
110
+ traverse(dataSource);
111
+ return allKeys;
112
+ }
113
+ function countTotalNodes(data) {
114
+ let count = 0;
115
+ function traverse(nodes) {
116
+ nodes.forEach((node) => {
117
+ var _a;
118
+ count += 1;
119
+ if ((_a = node.children) == null ? void 0 : _a.length)
120
+ traverse(node.children);
121
+ });
122
+ }
123
+ traverse(data);
124
+ return count;
125
+ }
126
+ function countParentNodes(data) {
127
+ return data.length;
128
+ }
129
+ function findNodeWithDescendants(key, dataSource) {
130
+ const result = [];
131
+ function traverse(nodes) {
132
+ var _a;
133
+ for (const node of nodes) {
134
+ if (node.key === key) {
135
+ result.push(node);
136
+ (_a = node.children) == null ? void 0 : _a.forEach((child) => {
137
+ result.push(child);
138
+ if (child.children)
139
+ traverse(child.children);
140
+ });
141
+ return true;
142
+ }
143
+ if (node.children && traverse(node.children))
144
+ return true;
145
+ }
146
+ return false;
147
+ }
148
+ traverse(dataSource);
149
+ return result;
150
+ }
151
+ function removeNodesFromTree(dataSource, keysToRemove) {
152
+ var _a;
153
+ const result = [];
154
+ for (const node of dataSource) {
155
+ if (keysToRemove.has(node.key))
156
+ continue;
157
+ if ((_a = node.children) == null ? void 0 : _a.length) {
158
+ result.push({ ...node, children: removeNodesFromTree(node.children, keysToRemove) });
159
+ } else {
160
+ result.push(node);
161
+ }
162
+ }
163
+ return result;
164
+ }
165
+ function addNodesToTree(dataSource, parentKey, nodes) {
166
+ if (parentKey === null) {
167
+ return [...dataSource, ...nodes];
168
+ }
169
+ return dataSource.map((node) => {
170
+ if (node.key === parentKey) {
171
+ return { ...node, children: [...node.children ?? [], ...nodes] };
172
+ }
173
+ if (node.children) {
174
+ return { ...node, children: addNodesToTree(node.children, parentKey, nodes) };
175
+ }
176
+ return node;
177
+ });
178
+ }
179
+ function extractTopLevelSelectedNodes(selectedKeys, dataSource) {
180
+ const result = [];
181
+ function traverse(nodes) {
182
+ nodes.forEach((node) => {
183
+ var _a;
184
+ if (selectedKeys.has(String(node.key))) {
185
+ result.push(node);
186
+ } else if ((_a = node.children) == null ? void 0 : _a.length) {
187
+ traverse(node.children);
188
+ }
189
+ });
190
+ }
191
+ traverse(dataSource);
192
+ return result;
193
+ }
194
+ // Annotate the CommonJS export names for ESM import in node:
195
+ 0 && (module.exports = {
196
+ addNodesToTree,
197
+ buildTreeData,
198
+ countParentNodes,
199
+ countTotalNodes,
200
+ extractTopLevelSelectedNodes,
201
+ filterData,
202
+ findNodeWithDescendants,
203
+ flattenTreeData,
204
+ getAllDescendantKeys,
205
+ removeNodesFromTree,
206
+ sliceDataByPage
207
+ });
208
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/TreeTransfer/utils/index.ts"],
4
+ "sourcesContent": ["/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { TreeTransferRow, DEFAULT_PAGE_SIZE } from '../types';\n\n/**\n * 从平铺的数据构建树形结构\n *\n * @param data - 平铺的数据数组\n * @param options - 配置选项\n * @returns 树形结构数据\n *\n * @example\n * ```tsx\n * const flatData = [\n * { id: '1', parentId: null, name: '应用1' },\n * { id: '1-1', parentId: '1', name: '权限1' },\n * ];\n *\n * const treeData = buildTreeData(flatData, {\n * keyField: 'id',\n * parentField: 'parentId',\n * });\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function buildTreeData<T extends Record<string, any>>(\n data: T[],\n options: {\n /** 唯一键字段名,默认 'id' */\n keyField?: string;\n /** 父键字段名,默认 'parentId' */\n parentField?: string;\n /** 判断是否为父节点的函数,默认:无父键则为父节点 */\n isParent?: (item: T) => boolean;\n } = {},\n): TreeTransferRow<T>[] {\n const { keyField = 'id', parentField = 'parentId', isParent = (item) => !item[parentField] } = options;\n\n const map = new Map<string | number, TreeTransferRow<T>>();\n const roots: TreeTransferRow<T>[] = [];\n\n // 第一次遍历:建立 key → node 映射\n data.forEach((item) => {\n const key = item[keyField];\n map.set(key, { key, data: item, isParent: isParent(item), children: [] });\n });\n\n // 第二次遍历:挂载父子关系\n data.forEach((item) => {\n const key = item[keyField];\n const parentId = item[parentField];\n const node = map.get(key)!;\n\n if (parentId && map.has(parentId)) {\n map.get(parentId)!.children!.push(node);\n } else {\n roots.push(node);\n }\n });\n\n return roots;\n}\n\n/**\n * 将树形结构平铺为一维数组(深度优先)\n *\n * @example\n * ```tsx\n * const flat = flattenTreeData([{ key: '1', children: [{ key: '1-1' }] }]);\n * // → [{ key: '1' }, { key: '1-1' }]\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function flattenTreeData<T = any>(treeData: TreeTransferRow<T>[]): TreeTransferRow<T>[] {\n const result: TreeTransferRow<T>[] = [];\n\n function traverse(nodes: TreeTransferRow<T>[]) {\n nodes.forEach((node) => {\n result.push(node);\n if (node.children?.length) traverse(node.children);\n });\n }\n\n traverse(treeData);\n return result;\n}\n\n/**\n * 根据页码切片数据(前端分页)\n *\n * @param data - 数据数组\n * @param page - 页码(从 1 开始)\n * @param pageSize - 每页条数\n * @returns 当前页数据\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function sliceDataByPage<T = any>(\n data: TreeTransferRow<T>[],\n page: number,\n pageSize: number = DEFAULT_PAGE_SIZE,\n): TreeTransferRow<T>[] {\n const start = (page - 1) * pageSize;\n return data.slice(start, start + pageSize);\n}\n\n/**\n * 过滤数据(支持模糊搜索,递归保留有匹配子节点的父节点)\n *\n * @param data - 数据数组\n * @param searchValue - 搜索关键词(空字符串返回全量数据)\n * @param fields - 搜索字段列表,支持字段名或自定义取值函数,默认 ['id', 'name']\n * @returns 过滤后的数据\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function filterData<T = any>(\n data: TreeTransferRow<T>[],\n searchValue: string,\n fields: (string | ((item: T) => string))[] = ['id', 'name'],\n): TreeTransferRow<T>[] {\n if (!searchValue.trim()) return data;\n\n const lowerSearch = searchValue.toLowerCase();\n\n return data.filter((item) => {\n // 当前节点任意字段匹配即保留\n const selfMatch = fields.some((field) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = typeof field === 'function' ? field(item.data) : (item.data as any)[field];\n return String(value ?? '')\n .toLowerCase()\n .includes(lowerSearch);\n });\n\n if (selfMatch) return true;\n\n // 子节点有匹配项则保留父节点(子节点也递归过滤)\n if (item.children?.length) {\n return filterData(item.children, searchValue, fields).length > 0;\n }\n\n return false;\n });\n}\n\n/**\n * 获取选中节点及其所有后代节点的 key 集合(用于批量移除)\n *\n * 修复说明:原实现对 3+ 层树只展开 2 层。现改为对每个选中节点\n * 递归收集完整后代链,支持任意深度的树结构。\n *\n * @param selectedKeys - 选中的 keys\n * @param dataSource - 完整数据源\n * @returns 所有相关 key(字符串形式,含选中节点本身)\n *\n * @example\n * ```tsx\n * // 选中 'app1'(含 2 级子节点)\n * getAllDescendantKeys(['app1'], dataSource);\n * // → ['app1', 'app1-perm1', 'app1-perm1-sub1', 'app1-perm2', ...]\n * ```\n */\nexport function getAllDescendantKeys(selectedKeys: React.Key[], dataSource: TreeTransferRow[]): string[] {\n const keySet = new Set(selectedKeys.map(String));\n const allKeys: string[] = [];\n\n /** 递归收集节点本身及所有后代的 key */\n function collectWithDescendants(node: TreeTransferRow): void {\n allKeys.push(String(node.key));\n node.children?.forEach(collectWithDescendants);\n }\n\n function traverse(nodes: TreeTransferRow[]): void {\n nodes.forEach((node) => {\n if (keySet.has(String(node.key))) {\n // 选中节点:收集自身及全部后代\n collectWithDescendants(node);\n } else {\n // 未选中:继续向下搜索\n if (node.children?.length) traverse(node.children);\n }\n });\n }\n\n traverse(dataSource);\n return allKeys;\n}\n\n/**\n * 计算数据总节点数(包含所有后代)\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function countTotalNodes<T = any>(data: TreeTransferRow<T>[]): number {\n let count = 0;\n function traverse(nodes: TreeTransferRow<T>[]) {\n nodes.forEach((node) => {\n count += 1;\n if (node.children?.length) traverse(node.children);\n });\n }\n traverse(data);\n return count;\n}\n\n/**\n * 计算顶层节点数(用于分页总数,不含嵌套子节点)\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function countParentNodes<T = any>(data: TreeTransferRow<T>[]): number {\n return data.length;\n}\n\n/**\n * 查找节点及其所有后代节点(按 key 定位)\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findNodeWithDescendants<T = any>(\n key: string | number,\n dataSource: TreeTransferRow<T>[],\n): TreeTransferRow<T>[] {\n const result: TreeTransferRow<T>[] = [];\n\n function traverse(nodes: TreeTransferRow<T>[]): boolean {\n for (const node of nodes) {\n if (node.key === key) {\n result.push(node);\n node.children?.forEach((child) => {\n result.push(child);\n if (child.children) traverse(child.children);\n });\n return true;\n }\n if (node.children && traverse(node.children)) return true;\n }\n return false;\n }\n\n traverse(dataSource);\n return result;\n}\n\n/**\n * 从树形数据中移除指定 key 的节点(不可变,返回新数组)\n *\n * @param dataSource - 数据源\n * @param keysToRemove - 要移除的节点 key 集合\n * @returns 过滤后的新数据源\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeNodesFromTree<T = any>(\n dataSource: TreeTransferRow<T>[],\n keysToRemove: Set<string | number>,\n): TreeTransferRow<T>[] {\n const result: TreeTransferRow<T>[] = [];\n\n for (const node of dataSource) {\n if (keysToRemove.has(node.key)) continue;\n\n if (node.children?.length) {\n result.push({ ...node, children: removeNodesFromTree(node.children, keysToRemove) });\n } else {\n result.push(node);\n }\n }\n\n return result;\n}\n\n/**\n * 向树形数据添加节点\n *\n * @param dataSource - 数据源\n * @param parentKey - 父节点 key;传 null 表示添加到根\n * @param nodes - 要添加的节点列表\n * @returns 新的数据源\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function addNodesToTree<T = any>(\n dataSource: TreeTransferRow<T>[],\n parentKey: string | number | null,\n nodes: TreeTransferRow<T>[],\n): TreeTransferRow<T>[] {\n if (parentKey === null) {\n return [...dataSource, ...nodes];\n }\n\n return dataSource.map((node) => {\n if (node.key === parentKey) {\n return { ...node, children: [...(node.children ?? []), ...nodes] };\n }\n if (node.children) {\n return { ...node, children: addNodesToTree(node.children, parentKey, nodes) };\n }\n return node;\n });\n}\n\n/**\n * 从树形数据中提取\"顶层选中节点\"(用于穿梭框移动操作)\n *\n * 行为:遍历树,遇到选中节点时直接收集(含其 children),不再向下递归。\n * 这样可以避免父节点和其已选中的子节点被分别添加两次。\n *\n * 适用场景:AntD Table 的 checkStrictly:false 级联选择中,\n * 选中父节点会自动勾选子节点。move 时只需携带父节点(含 children)。\n * 若仅选了某个子节点,则该子节点会被作为顶层节点添加到目标列表。\n *\n * @param selectedKeys - 选中的 key 集合(字符串)\n * @param dataSource - 数据源(支持嵌套树)\n * @returns 最小集合的顶层选中节点列表\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function extractTopLevelSelectedNodes<T = any>(\n selectedKeys: Set<string>,\n dataSource: TreeTransferRow<T>[],\n): TreeTransferRow<T>[] {\n const result: TreeTransferRow<T>[] = [];\n\n function traverse(nodes: TreeTransferRow<T>[]): void {\n nodes.forEach((node) => {\n if (selectedKeys.has(String(node.key))) {\n // 选中节点:整体移动(children 随之迁移)\n result.push(node);\n } else if (node.children?.length) {\n // 父节点未选中:继续向下搜寻子节点选中项\n traverse(node.children);\n }\n });\n }\n\n traverse(dataSource);\n return result;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }