@hkyhy/marsun-components-core 0.1.52 → 0.1.56

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 (312) hide show
  1. package/README.md +29 -15
  2. package/dist/agent-hub.d.ts +11 -0
  3. package/dist/agent-hub.js +144 -0
  4. package/dist/agent-hub.js.map +1 -0
  5. package/dist/components/AgentHub/Chat/Action/CreateButton.js +3 -3
  6. package/dist/components/AgentHub/Chat/Action/ManageActionButtons.js +4 -4
  7. package/dist/components/AgentHub/Chat/Action/SessionActionButtons.js +4 -4
  8. package/dist/components/AgentHub/Chat/Detail/ChatFollowUpSuggestions/index.js +29 -27
  9. package/dist/components/AgentHub/Chat/Detail/ChatFollowUpSuggestions/index.js.map +1 -1
  10. package/dist/components/AgentHub/Chat/Detail/ChatInput/index.js +19 -18
  11. package/dist/components/AgentHub/Chat/Detail/ChatInput/index.js.map +1 -1
  12. package/dist/components/AgentHub/Chat/Detail/CitationPanel/index.js +18 -17
  13. package/dist/components/AgentHub/Chat/Detail/CitationPanel/index.js.map +1 -1
  14. package/dist/components/AgentHub/Chat/Detail/MessageActions/index.js +23 -19
  15. package/dist/components/AgentHub/Chat/Detail/MessageActions/index.js.map +1 -1
  16. package/dist/components/AgentHub/Chat/Detail/MessageItem/index.js +23 -21
  17. package/dist/components/AgentHub/Chat/Detail/MessageItem/index.js.map +1 -1
  18. package/dist/components/AgentHub/Chat/List/ChatCard/index.js +7 -7
  19. package/dist/components/AgentHub/Chat/List/SessionSidebar/index.js +19 -17
  20. package/dist/components/AgentHub/Chat/List/SessionSidebar/index.js.map +1 -1
  21. package/dist/components/AgentHub/KnowledgeBase/Action/CreateButton.js +3 -3
  22. package/dist/components/AgentHub/KnowledgeBase/Action/ManageActionButtons.js +1 -1
  23. package/dist/components/AgentHub/KnowledgeBase/Detail/DocumentTable/index.js +16 -15
  24. package/dist/components/AgentHub/KnowledgeBase/Detail/DocumentTable/index.js.map +1 -1
  25. package/dist/components/AgentHub/KnowledgeBase/Detail/ParseStatusTag/index.js +7 -7
  26. package/dist/components/AgentHub/KnowledgeBase/List/KnowledgeCard/index.js +8 -8
  27. package/dist/components/AgentHub/Report/Detail/ReportHtmlPreview/index.js +1 -1
  28. package/dist/components/Auth/UserProfileCard/UserProfileCard.js +7 -7
  29. package/dist/components/Auth/UserProfileCard/style.module.scss.js +16 -16
  30. package/dist/components/File/FileItem/index.js +22 -20
  31. package/dist/components/File/FileItem/index.js.map +1 -1
  32. package/dist/components/File/FilePreview/index.js +11 -11
  33. package/dist/components/File/fileDisplay.js +41 -36
  34. package/dist/components/File/fileDisplay.js.map +1 -1
  35. package/dist/components/Filter/CommonFilter/index.js +20 -18
  36. package/dist/components/Filter/CommonFilter/index.js.map +1 -1
  37. package/dist/components/Filter/FilterSelect/index.js +90 -89
  38. package/dist/components/Filter/FilterSelect/index.js.map +1 -1
  39. package/dist/components/Filter/FilterTreeSelect/index.js +51 -48
  40. package/dist/components/Filter/FilterTreeSelect/index.js.map +1 -1
  41. package/dist/components/Filter/FilterTrigger/index.js +13 -11
  42. package/dist/components/Filter/FilterTrigger/index.js.map +1 -1
  43. package/dist/components/Form/PersonOptionRow/index.js +4 -4
  44. package/dist/components/Icons/ArrowLeft.d.ts +1 -0
  45. package/dist/components/Icons/ArrowLeft.js +7 -0
  46. package/dist/components/Icons/ArrowLeft.js.map +1 -0
  47. package/dist/components/Icons/ArrowLeftRight.d.ts +1 -0
  48. package/dist/components/Icons/ArrowLeftRight.js +7 -0
  49. package/dist/components/Icons/ArrowLeftRight.js.map +1 -0
  50. package/dist/components/Icons/BarChart3.d.ts +1 -0
  51. package/dist/components/Icons/BarChart3.js +7 -0
  52. package/dist/components/Icons/BarChart3.js.map +1 -0
  53. package/dist/components/Icons/Bell.d.ts +1 -0
  54. package/dist/components/Icons/Bell.js +7 -0
  55. package/dist/components/Icons/Bell.js.map +1 -0
  56. package/dist/components/Icons/BookOpen.d.ts +1 -0
  57. package/dist/components/Icons/BookOpen.js +7 -0
  58. package/dist/components/Icons/BookOpen.js.map +1 -0
  59. package/dist/components/Icons/Bot.d.ts +1 -0
  60. package/dist/components/Icons/Bot.js +7 -0
  61. package/dist/components/Icons/Bot.js.map +1 -0
  62. package/dist/components/Icons/Check.d.ts +1 -0
  63. package/dist/components/Icons/Check.js +7 -0
  64. package/dist/components/Icons/Check.js.map +1 -0
  65. package/dist/components/Icons/ChevronDown.d.ts +1 -0
  66. package/dist/components/Icons/ChevronDown.js +7 -0
  67. package/dist/components/Icons/ChevronDown.js.map +1 -0
  68. package/dist/components/Icons/ChevronLeft.d.ts +1 -0
  69. package/dist/components/Icons/ChevronLeft.js +7 -0
  70. package/dist/components/Icons/ChevronLeft.js.map +1 -0
  71. package/dist/components/Icons/ChevronRight.d.ts +1 -0
  72. package/dist/components/Icons/ChevronRight.js +7 -0
  73. package/dist/components/Icons/ChevronRight.js.map +1 -0
  74. package/dist/components/Icons/ChevronUp.d.ts +1 -0
  75. package/dist/components/Icons/ChevronUp.js +7 -0
  76. package/dist/components/Icons/ChevronUp.js.map +1 -0
  77. package/dist/components/Icons/CircleAlert.d.ts +1 -0
  78. package/dist/components/Icons/CircleAlert.js +7 -0
  79. package/dist/components/Icons/CircleAlert.js.map +1 -0
  80. package/dist/components/Icons/CircleCheck.d.ts +1 -0
  81. package/dist/components/Icons/CircleCheck.js +7 -0
  82. package/dist/components/Icons/CircleCheck.js.map +1 -0
  83. package/dist/components/Icons/CircleHelp.d.ts +1 -0
  84. package/dist/components/Icons/CircleHelp.js +7 -0
  85. package/dist/components/Icons/CircleHelp.js.map +1 -0
  86. package/dist/components/Icons/CirclePlay.d.ts +1 -0
  87. package/dist/components/Icons/CirclePlay.js +7 -0
  88. package/dist/components/Icons/CirclePlay.js.map +1 -0
  89. package/dist/components/Icons/CircleX.d.ts +1 -0
  90. package/dist/components/Icons/CircleX.js +7 -0
  91. package/dist/components/Icons/CircleX.js.map +1 -0
  92. package/dist/components/Icons/ClipboardCheck.d.ts +1 -0
  93. package/dist/components/Icons/ClipboardCheck.js +7 -0
  94. package/dist/components/Icons/ClipboardCheck.js.map +1 -0
  95. package/dist/components/Icons/Clock.d.ts +1 -0
  96. package/dist/components/Icons/Clock.js +7 -0
  97. package/dist/components/Icons/Clock.js.map +1 -0
  98. package/dist/components/Icons/CloudDownload.d.ts +1 -0
  99. package/dist/components/Icons/CloudDownload.js +7 -0
  100. package/dist/components/Icons/CloudDownload.js.map +1 -0
  101. package/dist/components/Icons/CloudUpload.d.ts +1 -0
  102. package/dist/components/Icons/CloudUpload.js +7 -0
  103. package/dist/components/Icons/CloudUpload.js.map +1 -0
  104. package/dist/components/Icons/Code.d.ts +1 -0
  105. package/dist/components/Icons/Code.js +7 -0
  106. package/dist/components/Icons/Code.js.map +1 -0
  107. package/dist/components/Icons/Copy.d.ts +1 -0
  108. package/dist/components/Icons/Copy.js +7 -0
  109. package/dist/components/Icons/Copy.js.map +1 -0
  110. package/dist/components/Icons/Crown.d.ts +1 -0
  111. package/dist/components/Icons/Crown.js +7 -0
  112. package/dist/components/Icons/Crown.js.map +1 -0
  113. package/dist/components/Icons/Database.d.ts +1 -0
  114. package/dist/components/Icons/Database.js +7 -0
  115. package/dist/components/Icons/Database.js.map +1 -0
  116. package/dist/components/Icons/Download.d.ts +1 -0
  117. package/dist/components/Icons/Download.js +7 -0
  118. package/dist/components/Icons/Download.js.map +1 -0
  119. package/dist/components/Icons/Eye.d.ts +1 -0
  120. package/dist/components/Icons/Eye.js +7 -0
  121. package/dist/components/Icons/Eye.js.map +1 -0
  122. package/dist/components/Icons/EyeOff.d.ts +1 -0
  123. package/dist/components/Icons/EyeOff.js +7 -0
  124. package/dist/components/Icons/EyeOff.js.map +1 -0
  125. package/dist/components/Icons/File.d.ts +1 -0
  126. package/dist/components/Icons/File.js +7 -0
  127. package/dist/components/Icons/File.js.map +1 -0
  128. package/dist/components/Icons/FileArchive.d.ts +1 -0
  129. package/dist/components/Icons/FileArchive.js +7 -0
  130. package/dist/components/Icons/FileArchive.js.map +1 -0
  131. package/dist/components/Icons/FileImage.d.ts +1 -0
  132. package/dist/components/Icons/FileImage.js +7 -0
  133. package/dist/components/Icons/FileImage.js.map +1 -0
  134. package/dist/components/Icons/FileSpreadsheet.d.ts +1 -0
  135. package/dist/components/Icons/FileSpreadsheet.js +7 -0
  136. package/dist/components/Icons/FileSpreadsheet.js.map +1 -0
  137. package/dist/components/Icons/FileText.d.ts +1 -0
  138. package/dist/components/Icons/FileText.js +7 -0
  139. package/dist/components/Icons/FileText.js.map +1 -0
  140. package/dist/components/Icons/Flag.d.ts +1 -0
  141. package/dist/components/Icons/Flag.js +7 -0
  142. package/dist/components/Icons/Flag.js.map +1 -0
  143. package/dist/components/Icons/Flame.d.ts +1 -0
  144. package/dist/components/Icons/Flame.js +7 -0
  145. package/dist/components/Icons/Flame.js.map +1 -0
  146. package/dist/components/Icons/Folder.d.ts +1 -0
  147. package/dist/components/Icons/Folder.js +7 -0
  148. package/dist/components/Icons/Folder.js.map +1 -0
  149. package/dist/components/Icons/FolderOpen.d.ts +1 -0
  150. package/dist/components/Icons/FolderOpen.js +7 -0
  151. package/dist/components/Icons/FolderOpen.js.map +1 -0
  152. package/dist/components/Icons/Hash.d.ts +1 -0
  153. package/dist/components/Icons/Hash.js +7 -0
  154. package/dist/components/Icons/Hash.js.map +1 -0
  155. package/dist/components/Icons/House.d.ts +1 -0
  156. package/dist/components/Icons/House.js +7 -0
  157. package/dist/components/Icons/House.js.map +1 -0
  158. package/dist/components/Icons/Import.d.ts +1 -0
  159. package/dist/components/Icons/Import.js +7 -0
  160. package/dist/components/Icons/Import.js.map +1 -0
  161. package/dist/components/Icons/Inbox.d.ts +1 -0
  162. package/dist/components/Icons/Inbox.js +7 -0
  163. package/dist/components/Icons/Inbox.js.map +1 -0
  164. package/dist/components/Icons/Info.d.ts +1 -0
  165. package/dist/components/Icons/Info.js +7 -0
  166. package/dist/components/Icons/Info.js.map +1 -0
  167. package/dist/components/Icons/LayoutDashboard.d.ts +1 -0
  168. package/dist/components/Icons/LayoutDashboard.js +7 -0
  169. package/dist/components/Icons/LayoutDashboard.js.map +1 -0
  170. package/dist/components/Icons/LayoutGrid.d.ts +1 -0
  171. package/dist/components/Icons/LayoutGrid.js +7 -0
  172. package/dist/components/Icons/LayoutGrid.js.map +1 -0
  173. package/dist/components/Icons/ListTodo.d.ts +1 -0
  174. package/dist/components/Icons/ListTodo.js +7 -0
  175. package/dist/components/Icons/ListTodo.js.map +1 -0
  176. package/dist/components/Icons/Loader2.d.ts +1 -0
  177. package/dist/components/Icons/Loader2.js +7 -0
  178. package/dist/components/Icons/Loader2.js.map +1 -0
  179. package/dist/components/Icons/Lock.d.ts +1 -0
  180. package/dist/components/Icons/Lock.js +7 -0
  181. package/dist/components/Icons/Lock.js.map +1 -0
  182. package/dist/components/Icons/LogOut.d.ts +1 -0
  183. package/dist/components/Icons/LogOut.js +7 -0
  184. package/dist/components/Icons/LogOut.js.map +1 -0
  185. package/dist/components/Icons/Maximize2.d.ts +1 -0
  186. package/dist/components/Icons/Maximize2.js +7 -0
  187. package/dist/components/Icons/Maximize2.js.map +1 -0
  188. package/dist/components/Icons/MessageCircle.d.ts +1 -0
  189. package/dist/components/Icons/MessageCircle.js +7 -0
  190. package/dist/components/Icons/MessageCircle.js.map +1 -0
  191. package/dist/components/Icons/MessageSquare.d.ts +1 -0
  192. package/dist/components/Icons/MessageSquare.js +7 -0
  193. package/dist/components/Icons/MessageSquare.js.map +1 -0
  194. package/dist/components/Icons/Minimize2.d.ts +1 -0
  195. package/dist/components/Icons/Minimize2.js +7 -0
  196. package/dist/components/Icons/Minimize2.js.map +1 -0
  197. package/dist/components/Icons/PanelLeftClose.d.ts +1 -0
  198. package/dist/components/Icons/PanelLeftClose.js +7 -0
  199. package/dist/components/Icons/PanelLeftClose.js.map +1 -0
  200. package/dist/components/Icons/PanelLeftOpen.d.ts +1 -0
  201. package/dist/components/Icons/PanelLeftOpen.js +7 -0
  202. package/dist/components/Icons/PanelLeftOpen.js.map +1 -0
  203. package/dist/components/Icons/Pause.d.ts +1 -0
  204. package/dist/components/Icons/Pause.js +7 -0
  205. package/dist/components/Icons/Pause.js.map +1 -0
  206. package/dist/components/Icons/Pencil.d.ts +1 -0
  207. package/dist/components/Icons/Pencil.js +7 -0
  208. package/dist/components/Icons/Pencil.js.map +1 -0
  209. package/dist/components/Icons/Plus.d.ts +1 -0
  210. package/dist/components/Icons/Plus.js +7 -0
  211. package/dist/components/Icons/Plus.js.map +1 -0
  212. package/dist/components/Icons/Presentation.d.ts +1 -0
  213. package/dist/components/Icons/Presentation.js +7 -0
  214. package/dist/components/Icons/Presentation.js.map +1 -0
  215. package/dist/components/Icons/RefreshCw.d.ts +1 -0
  216. package/dist/components/Icons/RefreshCw.js +7 -0
  217. package/dist/components/Icons/RefreshCw.js.map +1 -0
  218. package/dist/components/Icons/RotateCw.d.ts +1 -0
  219. package/dist/components/Icons/RotateCw.js +7 -0
  220. package/dist/components/Icons/RotateCw.js.map +1 -0
  221. package/dist/components/Icons/Send.d.ts +1 -0
  222. package/dist/components/Icons/Send.js +7 -0
  223. package/dist/components/Icons/Send.js.map +1 -0
  224. package/dist/components/Icons/Settings.d.ts +1 -0
  225. package/dist/components/Icons/Settings.js +7 -0
  226. package/dist/components/Icons/Settings.js.map +1 -0
  227. package/dist/components/Icons/Shield.d.ts +1 -0
  228. package/dist/components/Icons/Shield.js +7 -0
  229. package/dist/components/Icons/Shield.js.map +1 -0
  230. package/dist/components/Icons/ShieldCheck.d.ts +1 -0
  231. package/dist/components/Icons/ShieldCheck.js +7 -0
  232. package/dist/components/Icons/ShieldCheck.js.map +1 -0
  233. package/dist/components/Icons/SlidersHorizontal.d.ts +1 -0
  234. package/dist/components/Icons/SlidersHorizontal.js +7 -0
  235. package/dist/components/Icons/SlidersHorizontal.js.map +1 -0
  236. package/dist/components/Icons/Square.d.ts +1 -0
  237. package/dist/components/Icons/Square.js +7 -0
  238. package/dist/components/Icons/Square.js.map +1 -0
  239. package/dist/components/Icons/Star.d.ts +1 -0
  240. package/dist/components/Icons/Star.js +7 -0
  241. package/dist/components/Icons/Star.js.map +1 -0
  242. package/dist/components/Icons/ThumbsDown.d.ts +1 -0
  243. package/dist/components/Icons/ThumbsDown.js +7 -0
  244. package/dist/components/Icons/ThumbsDown.js.map +1 -0
  245. package/dist/components/Icons/ThumbsUp.d.ts +1 -0
  246. package/dist/components/Icons/ThumbsUp.js +7 -0
  247. package/dist/components/Icons/ThumbsUp.js.map +1 -0
  248. package/dist/components/Icons/Trash2.d.ts +1 -0
  249. package/dist/components/Icons/Trash2.js +7 -0
  250. package/dist/components/Icons/Trash2.js.map +1 -0
  251. package/dist/components/Icons/Trophy.d.ts +1 -0
  252. package/dist/components/Icons/Trophy.js +7 -0
  253. package/dist/components/Icons/Trophy.js.map +1 -0
  254. package/dist/components/Icons/Undo2.d.ts +1 -0
  255. package/dist/components/Icons/Undo2.js +7 -0
  256. package/dist/components/Icons/Undo2.js.map +1 -0
  257. package/dist/components/Icons/Upload.d.ts +1 -0
  258. package/dist/components/Icons/Upload.js +7 -0
  259. package/dist/components/Icons/Upload.js.map +1 -0
  260. package/dist/components/Icons/User.d.ts +1 -0
  261. package/dist/components/Icons/User.js +7 -0
  262. package/dist/components/Icons/User.js.map +1 -0
  263. package/dist/components/Icons/UserPlus.d.ts +1 -0
  264. package/dist/components/Icons/UserPlus.js +7 -0
  265. package/dist/components/Icons/UserPlus.js.map +1 -0
  266. package/dist/components/Icons/UserRoundCog.d.ts +1 -0
  267. package/dist/components/Icons/UserRoundCog.js +7 -0
  268. package/dist/components/Icons/UserRoundCog.js.map +1 -0
  269. package/dist/components/Icons/Users.d.ts +1 -0
  270. package/dist/components/Icons/Users.js +7 -0
  271. package/dist/components/Icons/Users.js.map +1 -0
  272. package/dist/components/Icons/X.d.ts +1 -0
  273. package/dist/components/Icons/X.js +7 -0
  274. package/dist/components/Icons/X.js.map +1 -0
  275. package/dist/components/Icons/createIcon.d.ts +9 -0
  276. package/dist/components/Icons/createIcon.js +32 -0
  277. package/dist/components/Icons/createIcon.js.map +1 -0
  278. package/dist/components/Icons/index.d.ts +80 -90
  279. package/dist/components/Icons/registry.d.ts +6 -0
  280. package/dist/components/Icons/registry.js +239 -0
  281. package/dist/components/Icons/registry.js.map +1 -0
  282. package/dist/components/InteractiveBlock/InteractiveBlock.js +6 -6
  283. package/dist/components/Layout/AgentAppShell/AgentAppShell.js +112 -91
  284. package/dist/components/Layout/AgentAppShell/AgentAppShell.js.map +1 -1
  285. package/dist/components/Layout/AgentAppShell/style.module.scss.js +20 -18
  286. package/dist/components/Layout/AgentAppShell/style.module.scss.js.map +1 -1
  287. package/dist/components/Layout/PageHeaderLayout/index.js +7 -7
  288. package/dist/components/Modal/Modal/index.js +8 -8
  289. package/dist/components/Modal/StepModal/index.js +9 -9
  290. package/dist/components/OrgTree/OrgTree.js +41 -39
  291. package/dist/components/OrgTree/OrgTree.js.map +1 -1
  292. package/dist/components/StateBar/StateBar.js +4 -4
  293. package/dist/components/Table/ColumnConfigPanel.js +13 -10
  294. package/dist/components/Table/ColumnConfigPanel.js.map +1 -1
  295. package/dist/components/Table/Table.js +7 -7
  296. package/dist/components/Tour/AppTour/index.js +10 -10
  297. package/dist/components/Upload/index.js +76 -72
  298. package/dist/components/Upload/index.js.map +1 -1
  299. package/dist/file.d.ts +5 -0
  300. package/dist/file.js +24 -0
  301. package/dist/file.js.map +1 -0
  302. package/dist/index.d.ts +3 -1
  303. package/dist/index.js +615 -537
  304. package/dist/index.js.map +1 -1
  305. package/dist/llm.d.ts +5 -0
  306. package/dist/llm.js +8 -0
  307. package/dist/llm.js.map +1 -0
  308. package/dist/marsun-components-core.css +1 -1
  309. package/dist/styles/global.css +1 -1
  310. package/package.json +15 -5
  311. package/dist/components/Icons/index.js +0 -268
  312. package/dist/components/Icons/index.js.map +0 -1
@@ -1,57 +1,58 @@
1
- import { jsxs as C, jsx as o, Fragment as Ce } from "react/jsx-runtime";
2
- import { Check as Fe, X as we } from "../../Icons/index.js";
3
- import { Input as Oe, Spin as De, Checkbox as te, Space as Pe } from "antd";
4
- import { useState as P, useRef as re, useEffect as G, useMemo as ne } from "react";
5
- import Re from "../../Form/PersonOptionRow/index.js";
6
- import Te from "../FilterPopover/index.js";
1
+ import { jsxs as C, jsx as l, Fragment as Ce } from "react/jsx-runtime";
2
+ import { Input as Fe, Spin as we, Checkbox as re, Space as Oe } from "antd";
3
+ import { useState as P, useRef as te, useEffect as G, useMemo as ne } from "react";
4
+ import De from "../../Form/PersonOptionRow/index.js";
5
+ import Pe from "../FilterPopover/index.js";
7
6
  import { resolveFilterVisible as se } from "../types.js";
8
- import { useFilterFieldBridge as Me, useFilterRegister as je } from "../useFilterState.js";
7
+ import { useFilterFieldBridge as Re, useFilterRegister as Te } from "../useFilterState.js";
9
8
  import a from "./style.module.scss.js";
10
9
  import g from "classnames";
11
- import ze from "../../Empty/Empty.js";
12
- const { Search: Be } = Oe;
13
- function Ie(t) {
14
- const s = [t.label];
15
- return t.departmentName && s.push(t.departmentName), s.join(" · ");
10
+ import Me from "../../Empty/Empty.js";
11
+ import { Check as je } from "../../Icons/Check.js";
12
+ import { X as ze } from "../../Icons/X.js";
13
+ const { Search: Be } = Fe;
14
+ function Ie(r) {
15
+ const s = [r.label];
16
+ return r.departmentName && s.push(r.departmentName), s.join(" · ");
16
17
  }
17
- function qe(t, s) {
18
+ function qe(r, s) {
18
19
  const f = s.toLowerCase();
19
- return [t.label, t.departmentName, t.email, t.phone, t.employeeId].filter(Boolean).some((h) => String(h).toLowerCase().includes(f));
20
+ return [r.label, r.departmentName, r.email, r.phone, r.employeeId].filter(Boolean).some((h) => String(h).toLowerCase().includes(f));
20
21
  }
21
- function ie(t, s) {
22
- if (!(t != null && t.length) && !(s != null && s.length)) return !0;
23
- if (!t || !s || t.length !== s.length) return !1;
24
- const f = [...t].map(String).sort(), h = [...s].map(String).sort();
22
+ function ie(r, s) {
23
+ if (!(r != null && r.length) && !(s != null && s.length)) return !0;
24
+ if (!r || !s || r.length !== s.length) return !1;
25
+ const f = [...r].map(String).sort(), h = [...s].map(String).sort();
25
26
  return f.every((m, c) => m === h[c]);
26
27
  }
27
- function ce(t) {
28
- return Array.isArray(t) ? t : t != null && t !== "" ? [t] : [];
28
+ function ce(r) {
29
+ return Array.isArray(r) ? r : r != null && r !== "" ? [r] : [];
29
30
  }
30
- function J(t, s, f, h, m) {
31
+ function J(r, s, f, h, m) {
31
32
  if (h) {
32
- const c = ce(t);
33
+ const c = ce(r);
33
34
  return !m && (f != null && f.length) && ie(c, f) ? [] : c;
34
35
  }
35
- if (!(!m && s !== void 0 && t === s))
36
- return t;
36
+ if (!(!m && s !== void 0 && r === s))
37
+ return r;
37
38
  }
38
- function H(t, s, f, h) {
39
- return h ? ce(t) : J(t, s, f, !1, !0);
39
+ function H(r, s, f, h) {
40
+ return h ? ce(r) : J(r, s, f, !1, !0);
40
41
  }
41
- function Ee(t, s, f, h, m) {
42
+ function Ee(r, s, f, h, m) {
42
43
  if (f) {
43
- const d = t || [];
44
+ const d = r || [];
44
45
  return d.length ? m != null && m.length && ie(d, m) ? "全部" : d.map((S) => {
45
46
  var p;
46
47
  return ((p = s.find((F) => String(F.value) === String(S))) == null ? void 0 : p.label) ?? String(S);
47
48
  }).join("、") : "";
48
49
  }
49
- if (t == null) return "";
50
- const c = s.find((d) => String(d.value) === String(t));
51
- return c ? h ? Ie(c) : c.label : String(t);
50
+ if (r == null) return "";
51
+ const c = s.find((d) => String(d.value) === String(r));
52
+ return c ? h ? Ie(c) : c.label : String(r);
52
53
  }
53
- const Ve = ({
54
- filterKey: t,
54
+ const er = ({
55
+ filterKey: r,
55
56
  label: s,
56
57
  options: f,
57
58
  loadData: h,
@@ -61,10 +62,10 @@ const Ve = ({
61
62
  defaultValue: S,
62
63
  defaultValues: p,
63
64
  showDefaultAsSelected: F = !1,
64
- searchable: le = !1,
65
+ searchable: oe = !1,
65
66
  multiple: n = !1,
66
67
  minSelection: v,
67
- variant: oe = "default",
68
+ variant: le = "default",
68
69
  active: ae,
69
70
  hidden: j,
70
71
  display: z,
@@ -74,10 +75,10 @@ const Ve = ({
74
75
  panelWidth: ge,
75
76
  loading: he = !1
76
77
  }) => {
77
- const w = oe === "person", [me, R] = P(!1), [T, I] = P(""), b = re(d);
78
+ const w = le === "person", [me, R] = P(!1), [T, I] = P(""), b = te(d);
78
79
  b.current = d;
79
- const ve = ge ?? (B ? 460 : void 0), { resolvedLabel: x, values: Se, depsKey: pe } = Me({
80
- filterKey: t,
80
+ const ve = ge ?? (B ? 460 : void 0), { resolvedLabel: x, values: Se, depsKey: pe } = Re({
81
+ filterKey: r,
81
82
  value: c,
82
83
  label: s,
83
84
  dependsOn: fe,
@@ -86,14 +87,14 @@ const Ve = ({
86
87
  var e;
87
88
  return (e = b.current) == null ? void 0 : e.call(b, void 0);
88
89
  }
89
- }), [be, Q] = P([]), [ue, U] = P(!1), q = re(h);
90
+ }), [be, Q] = P([]), [ue, U] = P(!1), q = te(h);
90
91
  q.current = h, G(() => {
91
92
  if (!q.current || f != null || !m) return;
92
93
  let e = !1;
93
94
  return U(!0), (async () => {
94
95
  try {
95
- const r = await q.current({ values: Se });
96
- e || Q(r ?? []);
96
+ const t = await q.current({ values: Se });
97
+ e || Q(t ?? []);
97
98
  } catch {
98
99
  e || Q([]);
99
100
  } finally {
@@ -103,7 +104,7 @@ const Ve = ({
103
104
  e = !0;
104
105
  };
105
106
  }, [pe, m, f, h]);
106
- const O = f ?? be, Y = he || ue, l = J(
107
+ const O = f ?? be, Y = he || ue, o = J(
107
108
  c,
108
109
  S,
109
110
  p,
@@ -111,13 +112,13 @@ const Ve = ({
111
112
  F
112
113
  ), [u, A] = P(
113
114
  () => H(c, S, p, n) ?? (n ? [] : void 0)
114
- ), M = je(), Z = ne(() => {
115
- const e = Array.isArray(l) ? l : l != null && l !== "" ? [l] : [], r = !n || v == null || e.length > v;
115
+ ), M = Te(), Z = ne(() => {
116
+ const e = Array.isArray(o) ? o : o != null && o !== "" ? [o] : [], t = !n || v == null || e.length > v;
116
117
  return () => {
117
118
  var i;
118
- r && ((i = b.current) == null || i.call(b, void 0));
119
+ t && ((i = b.current) == null || i.call(b, void 0));
119
120
  };
120
- }, [l, v, n]), _ = () => {
121
+ }, [o, v, n]), _ = () => {
121
122
  A(
122
123
  H(c, S, p, n) ?? (n ? [] : void 0)
123
124
  ), I("");
@@ -125,36 +126,36 @@ const Ve = ({
125
126
  G(() => {
126
127
  const e = H(c, S, p, n);
127
128
  A(e ?? (n ? [] : void 0));
128
- const r = J(
129
+ const t = J(
129
130
  c,
130
131
  S,
131
132
  p,
132
133
  n,
133
134
  F
134
135
  );
135
- (r == null || Array.isArray(r) && r.length === 0) && I("");
136
+ (t == null || Array.isArray(t) && t.length === 0) && I("");
136
137
  }, [c, S, p, n, F]);
137
138
  const E = ne(
138
- () => Ee(l, O, n, w, p),
139
- [O, l, n, w, p]
139
+ () => Ee(o, O, n, w, p),
140
+ [O, o, n, w, p]
140
141
  );
141
142
  if (G(() => {
142
143
  if (!M) return;
143
- if (!se({ display: z, hidden: j }, { filterKey: t, label: x, value: c })) {
144
- M.unregister(t);
144
+ if (!se({ display: z, hidden: j }, { filterKey: r, label: x, value: c })) {
145
+ M.unregister(r);
145
146
  return;
146
147
  }
147
148
  if (E) {
148
- const r = Array.isArray(l) ? l : l != null && l !== "" ? [l] : [], i = !n || v == null || r.length > v;
149
- M.register(t, {
149
+ const t = Array.isArray(o) ? o : o != null && o !== "" ? [o] : [], i = !n || v == null || t.length > v;
150
+ M.register(r, {
150
151
  label: x,
151
152
  valueLabel: E,
152
153
  onRemove: Z,
153
154
  removable: i
154
155
  });
155
156
  } else
156
- M.unregister(t);
157
- }, [E, t, x, j, z, Z]), !se({ display: z, hidden: j }, { filterKey: t, label: x, value: c })) return null;
157
+ M.unregister(r);
158
+ }, [E, r, x, j, z, Z]), !se({ display: z, hidden: j }, { filterKey: r, label: x, value: c })) return null;
158
159
  const y = T ? O.filter(
159
160
  (e) => w ? qe(e, T) : e.label.toLowerCase().includes(T.toLowerCase())
160
161
  ) : O, ye = () => {
@@ -165,33 +166,33 @@ const Ve = ({
165
166
  !e && n && _(), R(e);
166
167
  }, Ae = (e) => {
167
168
  if (!n) {
168
- const r = S !== void 0 && e === S;
169
+ const t = S !== void 0 && e === S;
169
170
  let i;
170
- u === e || r ? i = void 0 : i = e, A(i), d == null || d(i), R(!1);
171
+ u === e || t ? i = void 0 : i = e, A(i), d == null || d(i), R(!1);
171
172
  }
172
173
  }, W = (e) => {
173
- const r = u || [], i = r.some((N) => String(N) === String(e));
174
- if (i && v != null && r.length <= v)
174
+ const t = u || [], i = t.some((N) => String(N) === String(e));
175
+ if (i && v != null && t.length <= v)
175
176
  return;
176
- const D = i ? r.filter((N) => String(N) !== String(e)) : [...r, e];
177
+ const D = i ? t.filter((N) => String(N) !== String(e)) : [...t, e];
177
178
  A(D);
178
179
  }, L = Array.isArray(u) ? u : [], K = y.filter(
179
- (e) => L.some((r) => String(r) === String(e.value))
180
+ (e) => L.some((t) => String(t) === String(e.value))
180
181
  ).length, X = y.length > 0 && K === y.length, Le = K > 0 && !X, V = (e) => {
181
- const r = L, i = y.map((k) => k.value);
182
+ const t = L, i = y.map((k) => k.value);
182
183
  if (e) {
183
- const k = new Set(r.map(String)), ee = [...r];
184
+ const k = new Set(t.map(String)), ee = [...t];
184
185
  for (const $ of i)
185
186
  k.has(String($)) || (ee.push($), k.add(String($)));
186
187
  A(ee);
187
188
  return;
188
189
  }
189
190
  const D = new Set(i.map(String));
190
- let N = r.filter((k) => !D.has(String(k)));
191
- v != null && N.length < v && (N = r.slice(0, v)), A(N);
192
- }, ke = n ? Array.isArray(l) && l.length > 0 : l != null && l !== "";
191
+ let N = t.filter((k) => !D.has(String(k)));
192
+ v != null && N.length < v && (N = t.slice(0, v)), A(N);
193
+ }, ke = n ? Array.isArray(o) && o.length > 0 : o != null && o !== "";
193
194
  return /* @__PURE__ */ C(
194
- Te,
195
+ Pe,
195
196
  {
196
197
  label: x,
197
198
  active: ae || ke,
@@ -202,7 +203,7 @@ const Ve = ({
202
203
  onConfirm: n ? ye : void 0,
203
204
  onReset: n ? Ne : void 0,
204
205
  children: [
205
- le && /* @__PURE__ */ o(
206
+ oe && /* @__PURE__ */ l(
206
207
  Be,
207
208
  {
208
209
  placeholder: `搜索${x}`,
@@ -213,14 +214,14 @@ const Ve = ({
213
214
  onChange: (e) => I(e.target.value)
214
215
  }
215
216
  ),
216
- B ? /* @__PURE__ */ o(
217
+ B ? /* @__PURE__ */ l(
217
218
  "div",
218
219
  {
219
220
  className: g("filter-select-panel-extra", a["filter-select-panel-extra"]),
220
221
  children: B
221
222
  }
222
223
  ) : null,
223
- /* @__PURE__ */ o("div", { className: g("filter-select-options", a["filter-select-options"]), children: Y ? /* @__PURE__ */ o("div", { className: g("filter-select-loading", a["filter-select-loading"]), children: /* @__PURE__ */ o(De, { size: "small" }) }) : y.length === 0 ? /* @__PURE__ */ o("div", { className: g("filter-select-empty", a["filter-select-empty"]), children: /* @__PURE__ */ o(ze, { iconType: "simple", description: "暂无数据" }) }) : /* @__PURE__ */ C(Ce, { children: [
224
+ /* @__PURE__ */ l("div", { className: g("filter-select-options", a["filter-select-options"]), children: Y ? /* @__PURE__ */ l("div", { className: g("filter-select-loading", a["filter-select-loading"]), children: /* @__PURE__ */ l(we, { size: "small" }) }) : y.length === 0 ? /* @__PURE__ */ l("div", { className: g("filter-select-empty", a["filter-select-empty"]), children: /* @__PURE__ */ l(Me, { iconType: "simple", description: "暂无数据" }) }) : /* @__PURE__ */ C(Ce, { children: [
224
225
  n && y.length > 0 && /* @__PURE__ */ C(
225
226
  "div",
226
227
  {
@@ -232,8 +233,8 @@ const Ve = ({
232
233
  ),
233
234
  onClick: () => V(!X),
234
235
  children: [
235
- /* @__PURE__ */ o(
236
- te,
236
+ /* @__PURE__ */ l(
237
+ re,
237
238
  {
238
239
  checked: X,
239
240
  indeterminate: Le,
@@ -241,7 +242,7 @@ const Ve = ({
241
242
  onClick: (e) => e.stopPropagation()
242
243
  }
243
244
  ),
244
- /* @__PURE__ */ o("span", { children: "全选" })
245
+ /* @__PURE__ */ l("span", { children: "全选" })
245
246
  ]
246
247
  }
247
248
  ),
@@ -258,17 +259,17 @@ const Ve = ({
258
259
  ),
259
260
  onClick: () => n ? W(e.value) : Ae(e.value),
260
261
  children: [
261
- n && /* @__PURE__ */ o(
262
- te,
262
+ n && /* @__PURE__ */ l(
263
+ re,
263
264
  {
264
- checked: L.some((r) => String(r) === String(e.value)),
265
+ checked: L.some((t) => String(t) === String(e.value)),
265
266
  onChange: () => W(e.value),
266
- onClick: (r) => r.stopPropagation()
267
+ onClick: (t) => t.stopPropagation()
267
268
  }
268
269
  ),
269
- w ? /* @__PURE__ */ o(Re, { option: e }) : /* @__PURE__ */ o("span", { children: e.label }),
270
- !n && !w && u === e.value && /* @__PURE__ */ o(
271
- Fe,
270
+ w ? /* @__PURE__ */ l(De, { option: e }) : /* @__PURE__ */ l("span", { children: e.label }),
271
+ !n && !w && u === e.value && /* @__PURE__ */ l(
272
+ je,
272
273
  {
273
274
  className: g(
274
275
  "filter-select-option-check",
@@ -286,7 +287,7 @@ const Ve = ({
286
287
  {
287
288
  className: g("filter-select-selected-bar", a["filter-select-selected-bar"]),
288
289
  children: [
289
- /* @__PURE__ */ o(
290
+ /* @__PURE__ */ l(
290
291
  "div",
291
292
  {
292
293
  className: g(
@@ -296,15 +297,15 @@ const Ve = ({
296
297
  children: "已选:"
297
298
  }
298
299
  ),
299
- /* @__PURE__ */ o(
300
+ /* @__PURE__ */ l(
300
301
  "div",
301
302
  {
302
303
  className: g(
303
304
  "filter-select-selected-tags",
304
305
  a["filter-select-selected-tags"]
305
306
  ),
306
- children: /* @__PURE__ */ o(Pe, { size: [4, 4], wrap: !0, children: L.map((e) => {
307
- const r = O.find((D) => String(D.value) === String(e)), i = v == null || L.length > v;
307
+ children: /* @__PURE__ */ l(Oe, { size: [4, 4], wrap: !0, children: L.map((e) => {
308
+ const t = O.find((D) => String(D.value) === String(e)), i = v == null || L.length > v;
308
309
  return /* @__PURE__ */ C(
309
310
  "span",
310
311
  {
@@ -315,9 +316,9 @@ const Ve = ({
315
316
  ),
316
317
  onClick: () => i && W(e),
317
318
  children: [
318
- (r == null ? void 0 : r.label) ?? String(e),
319
- /* @__PURE__ */ o(
320
- we,
319
+ (t == null ? void 0 : t.label) ?? String(e),
320
+ /* @__PURE__ */ l(
321
+ ze,
321
322
  {
322
323
  className: g(
323
324
  "filter-select-selected-remove",
@@ -341,6 +342,6 @@ const Ve = ({
341
342
  );
342
343
  };
343
344
  export {
344
- Ve as default
345
+ er as default
345
346
  };
346
347
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/Filter/FilterSelect/index.tsx"],"sourcesContent":["import { Check, X } from '@/components/Icons';\nimport { Empty } from '@/components/Empty';\nimport { Checkbox, Input, Space, Spin } from 'antd';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport PersonOptionRow from '../../Form/PersonOptionRow';\nimport FilterPopover from '../FilterPopover';\nimport type { BaseFilterProps, FilterLoadDataContext, FilterOption, PersonOption } from '../types';\nimport { resolveFilterVisible } from '../types';\nimport { useFilterFieldBridge, useFilterRegister } from '../useFilterState';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\nconst { Search } = Input;\n\nfunction formatPersonValueLabel(opt: PersonOption): string {\n const parts = [opt.label];\n if (opt.departmentName) parts.push(opt.departmentName);\n return parts.join(' · ');\n}\n\nfunction matchPersonOptionSearch(opt: PersonOption, keyword: string): boolean {\n const lower = keyword.toLowerCase();\n return [opt.label, opt.departmentName, opt.email, opt.phone, opt.employeeId]\n .filter(Boolean)\n .some((s) => String(s).toLowerCase().includes(lower));\n}\n\ntype FilterSelectValue = string | number | (string | number)[] | undefined;\n\nexport type { FilterSelectValue };\n\nfunction arraysEqual(a?: (string | number)[], b?: (string | number)[]): boolean {\n if (!a?.length && !b?.length) return true;\n if (!a || !b || a.length !== b.length) return false;\n const sortedA = [...a].map(String).sort();\n const sortedB = [...b].map(String).sort();\n return sortedA.every((v, i) => v === sortedB[i]);\n}\n\ninterface FilterSelectProps extends BaseFilterProps {\n /** 静态选项;与 loadData 二选一(同时存在时以 options 为准) */\n options?: FilterOption[];\n /** 按依赖值动态拉取选项 */\n loadData?: (ctx: FilterLoadDataContext) => Promise<FilterOption[]>;\n /** loadData 是否启用;默认 true */\n enabled?: boolean;\n value?: FilterSelectValue;\n onChange?: (value: FilterSelectValue) => void;\n /** 默认值:与默认值相同时视为未筛选(除非 showDefaultAsSelected) */\n defaultValue?: string | number;\n /** 多选默认值:与默认集合相同时视为未筛选(除非 showDefaultAsSelected) */\n defaultValues?: (string | number)[];\n /** 为 true 时,value 等于默认仍展示在「您已选择」并保持选中态 */\n showDefaultAsSelected?: boolean;\n placeholder?: string;\n searchable?: boolean;\n /** 是否多选 */\n multiple?: boolean;\n /** 多选至少保留项数;达到下限时不允许移除已选标签 */\n minSelection?: number;\n /** 人员选项:展示部门与联系方式 */\n variant?: 'default' | 'person';\n /**\n * 面板内嵌从属条件(与 search 同层:search 下方、选项列表上方)。\n * 禁止再嵌 Filter*(双重 Popover)。\n */\n panelExtra?: React.ReactNode;\n /** 面板宽度;有 panelExtra 时默认 460 */\n panelWidth?: number;\n /**\n * 选项加载中:Filter Item(Trigger)显示 Loader2 spin;\n * 面板列表区显示 Spin,不渲染空态。\n * 与内部 loadData loading 取或。\n */\n loading?: boolean;\n}\n\nfunction toMultiArray(value: FilterSelectValue): (string | number)[] {\n if (Array.isArray(value)) return value;\n if (value != null && value !== '') return [value];\n return [];\n}\n\nfunction toDisplayValue(\n value: FilterSelectValue,\n defaultValue: string | number | undefined,\n defaultValues: (string | number)[] | undefined,\n multiple: boolean,\n showDefaultAsSelected: boolean,\n): string | number | (string | number)[] | undefined {\n if (multiple) {\n const arr = toMultiArray(value);\n // 等于默认集合时:对外视为「未筛选」(不亮 trigger / 不进「您已选择」)\n if (!showDefaultAsSelected && defaultValues?.length && arraysEqual(arr, defaultValues)) {\n return [];\n }\n return arr;\n }\n if (!showDefaultAsSelected && defaultValue !== undefined && value === defaultValue) {\n return undefined;\n }\n return value;\n}\n\n/** 草稿/面板用真实 value,避免 defaultValues 折叠成 [] 后全选勾选丢失 */\nfunction toDraftValue(\n value: FilterSelectValue,\n defaultValue: string | number | undefined,\n defaultValues: (string | number)[] | undefined,\n multiple: boolean,\n): string | number | (string | number)[] | undefined {\n if (multiple) return toMultiArray(value);\n return toDisplayValue(value, defaultValue, defaultValues, false, true);\n}\n\nfunction formatValueLabel(\n displayVal: string | number | (string | number)[] | undefined,\n options: FilterOption[],\n multiple: boolean,\n isPersonVariant: boolean,\n defaultValues?: (string | number)[],\n): string {\n if (multiple) {\n const arr = (displayVal as (string | number)[]) || [];\n if (!arr.length) return '';\n // 全选默认集合时用「全部」,避免「您已选择」被几十个厂名撑满\n if (defaultValues?.length && arraysEqual(arr, defaultValues)) {\n return '全部';\n }\n return arr\n .map((v) => options.find((o) => String(o.value) === String(v))?.label ?? String(v))\n .join('、');\n }\n if (displayVal == null) return '';\n const opt = options.find((o) => String(o.value) === String(displayVal));\n if (!opt) return String(displayVal);\n return isPersonVariant ? formatPersonValueLabel(opt as PersonOption) : opt.label;\n}\n\nconst FilterSelect: React.FC<FilterSelectProps> = ({\n filterKey,\n label,\n options: optionsProp,\n loadData,\n enabled = true,\n value,\n onChange,\n defaultValue,\n defaultValues,\n showDefaultAsSelected = false,\n searchable = false,\n multiple = false,\n minSelection,\n variant = 'default',\n active,\n hidden,\n display,\n dependsOn,\n clearOnDepsChange = true,\n panelExtra,\n panelWidth,\n loading: loadingProp = false,\n}) => {\n const isPersonVariant = variant === 'person';\n const [open, setOpen] = useState(false);\n const [searchText, setSearchText] = useState('');\n\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const resolvedPanelWidth = panelWidth ?? (panelExtra ? 460 : undefined);\n\n const { resolvedLabel, values, depsKey } = useFilterFieldBridge({\n filterKey,\n value,\n label,\n dependsOn,\n clearOnDepsChange,\n onDepsClear: () => onChangeRef.current?.(undefined),\n });\n\n const [loadedOptions, setLoadedOptions] = useState<FilterOption[]>([]);\n const [loadDataLoading, setLoadDataLoading] = useState(false);\n const loadDataRef = useRef(loadData);\n loadDataRef.current = loadData;\n\n useEffect(() => {\n if (!loadDataRef.current || optionsProp != null || !enabled) return;\n let cancelled = false;\n setLoadDataLoading(true);\n (async () => {\n try {\n const next = await loadDataRef.current!({ values });\n if (!cancelled) setLoadedOptions(next ?? []);\n } catch {\n if (!cancelled) setLoadedOptions([]);\n } finally {\n if (!cancelled) setLoadDataLoading(false);\n }\n })();\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [depsKey, enabled, optionsProp, loadData]);\n\n const options = optionsProp ?? loadedOptions;\n const optionsLoading = loadingProp || loadDataLoading;\n\n const displayValue = toDisplayValue(\n value,\n defaultValue,\n defaultValues,\n multiple,\n showDefaultAsSelected,\n );\n const [localValue, setLocalValue] = useState<string | number | (string | number)[] | undefined>(\n () => toDraftValue(value, defaultValue, defaultValues, multiple) ?? (multiple ? [] : undefined),\n );\n\n // ── 自动注册到 CommonFilter ──\n const registerFn = useFilterRegister();\n const handleRemove = useMemo(() => {\n const selectedArr = Array.isArray(displayValue)\n ? displayValue\n : displayValue != null && displayValue !== ''\n ? [displayValue]\n : [];\n const canRemove = !multiple || minSelection == null || selectedArr.length > minSelection;\n return () => {\n if (!canRemove) return;\n onChangeRef.current?.(undefined);\n };\n }, [displayValue, minSelection, multiple]);\n\n const revertToCommitted = () => {\n setLocalValue(\n toDraftValue(value, defaultValue, defaultValues, multiple) ?? (multiple ? [] : undefined),\n );\n setSearchText('');\n };\n\n // 同步外部 value 到内部 localValue(多选用真实 value,保留 defaultValues 全选勾选)\n useEffect(() => {\n const nextDraft = toDraftValue(value, defaultValue, defaultValues, multiple);\n setLocalValue(nextDraft ?? (multiple ? [] : undefined));\n const nextDisplay = toDisplayValue(\n value,\n defaultValue,\n defaultValues,\n multiple,\n showDefaultAsSelected,\n );\n if (\n nextDisplay === undefined ||\n nextDisplay === null ||\n (Array.isArray(nextDisplay) && nextDisplay.length === 0)\n ) {\n setSearchText('');\n }\n }, [value, defaultValue, defaultValues, multiple, showDefaultAsSelected]);\n\n const committedValueLabel = useMemo(\n () => formatValueLabel(displayValue, options, multiple, isPersonVariant, defaultValues),\n [options, displayValue, multiple, isPersonVariant, defaultValues],\n );\n\n useEffect(() => {\n if (!registerFn) return;\n const ctx = { filterKey, label: resolvedLabel, value };\n if (!resolveFilterVisible({ display, hidden }, ctx)) {\n registerFn.unregister(filterKey);\n return;\n }\n if (committedValueLabel) {\n const selectedArr = Array.isArray(displayValue)\n ? displayValue\n : displayValue != null && displayValue !== ''\n ? [displayValue]\n : [];\n const removable = !multiple || minSelection == null || selectedArr.length > minSelection;\n registerFn.register(filterKey, {\n label: resolvedLabel,\n valueLabel: committedValueLabel,\n onRemove: handleRemove,\n removable,\n });\n } else {\n registerFn.unregister(filterKey);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [committedValueLabel, filterKey, resolvedLabel, hidden, display, handleRemove]);\n\n const visibilityCtx = { filterKey, label: resolvedLabel, value };\n if (!resolveFilterVisible({ display, hidden }, visibilityCtx)) return null;\n\n const filteredOptions = searchText\n ? options.filter((opt) =>\n isPersonVariant\n ? matchPersonOptionSearch(opt as PersonOption, searchText)\n : opt.label.toLowerCase().includes(searchText.toLowerCase()),\n )\n : options;\n\n const handleConfirm = () => {\n onChange?.(localValue as FilterSelectValue);\n setOpen(false);\n };\n\n const handleDiscardDraft = () => {\n revertToCommitted();\n setOpen(false);\n };\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!nextOpen && multiple) {\n revertToCommitted();\n }\n setOpen(nextOpen);\n };\n\n const handleClickOption = (optVal: string | number) => {\n if (!multiple) {\n const isDefaultOption = defaultValue !== undefined && optVal === defaultValue;\n let next: string | number | undefined;\n if (localValue === optVal || isDefaultOption) {\n next = undefined;\n } else {\n next = optVal;\n }\n setLocalValue(next);\n onChange?.(next);\n setOpen(false);\n }\n };\n\n const handleToggleMulti = (optVal: string | number) => {\n const arr = (localValue as (string | number)[]) || [];\n const has = arr.some((v) => String(v) === String(optVal));\n if (has && minSelection != null && arr.length <= minSelection) {\n return;\n }\n const next = has ? arr.filter((v) => String(v) !== String(optVal)) : [...arr, optVal];\n setLocalValue(next);\n };\n\n const localMultiArr = (Array.isArray(localValue) ? localValue : []) as (string | number)[];\n const filteredSelectedCount = filteredOptions.filter((opt) =>\n localMultiArr.some((v) => String(v) === String(opt.value)),\n ).length;\n const allFilteredSelected =\n filteredOptions.length > 0 && filteredSelectedCount === filteredOptions.length;\n const someFilteredSelected = filteredSelectedCount > 0 && !allFilteredSelected;\n\n const handleToggleAll = (checked: boolean) => {\n const arr = localMultiArr;\n const filteredVals = filteredOptions.map((o) => o.value);\n if (checked) {\n const seen = new Set(arr.map(String));\n const next = [...arr];\n for (const v of filteredVals) {\n if (!seen.has(String(v))) {\n next.push(v);\n seen.add(String(v));\n }\n }\n setLocalValue(next);\n return;\n }\n const removeSet = new Set(filteredVals.map(String));\n let next = arr.filter((v) => !removeSet.has(String(v)));\n if (minSelection != null && next.length < minSelection) {\n next = arr.slice(0, minSelection);\n }\n setLocalValue(next);\n };\n\n const isActive = multiple\n ? Array.isArray(displayValue) && displayValue.length > 0\n : displayValue != null && displayValue !== '';\n\n return (\n <FilterPopover\n label={resolvedLabel}\n active={active || isActive}\n loading={optionsLoading}\n open={open}\n onOpenChange={handleOpenChange}\n width={resolvedPanelWidth}\n onConfirm={multiple ? handleConfirm : undefined}\n onReset={multiple ? handleDiscardDraft : undefined}\n >\n {searchable && (\n <Search\n placeholder={`搜索${resolvedLabel}`}\n allowClear\n size=\"middle\"\n className={classNames('filter-select-search', styles['filter-select-search'])}\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n />\n )}\n {panelExtra ? (\n <div\n className={classNames('filter-select-panel-extra', styles['filter-select-panel-extra'])}\n >\n {panelExtra}\n </div>\n ) : null}\n\n <div className={classNames('filter-select-options', styles['filter-select-options'])}>\n {optionsLoading ? (\n <div className={classNames('filter-select-loading', styles['filter-select-loading'])}>\n <Spin size=\"small\" />\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className={classNames('filter-select-empty', styles['filter-select-empty'])}>\n <Empty iconType=\"simple\" description=\"暂无数据\" />\n </div>\n ) : (\n <>\n {multiple && filteredOptions.length > 0 && (\n <div\n className={classNames(\n 'filter-select-option',\n styles['filter-select-option'],\n 'filter-select-select-all',\n styles['filter-select-select-all'],\n )}\n onClick={() => handleToggleAll(!allFilteredSelected)}\n >\n <Checkbox\n checked={allFilteredSelected}\n indeterminate={someFilteredSelected}\n onChange={(e) => handleToggleAll(e.target.checked)}\n onClick={(e) => e.stopPropagation()}\n />\n <span>全选</span>\n </div>\n )}\n {filteredOptions.map((opt) => (\n <div\n key={String(opt.value)}\n className={classNames(\n 'filter-select-option',\n styles['filter-select-option'],\n !multiple &&\n localValue === opt.value &&\n classNames(\n 'filter-select-option-selected',\n styles['filter-select-option-selected'],\n ),\n )}\n onClick={() =>\n multiple ? handleToggleMulti(opt.value) : handleClickOption(opt.value)\n }\n >\n {multiple && (\n <Checkbox\n checked={localMultiArr.some((v) => String(v) === String(opt.value))}\n onChange={() => handleToggleMulti(opt.value)}\n onClick={(e) => e.stopPropagation()}\n />\n )}\n {isPersonVariant ? (\n <PersonOptionRow option={opt as PersonOption} />\n ) : (\n <span>{opt.label}</span>\n )}\n {!multiple && !isPersonVariant && localValue === opt.value && (\n <Check\n className={classNames(\n 'filter-select-option-check',\n styles['filter-select-option-check'],\n )}\n />\n )}\n </div>\n ))}\n </>\n )}\n </div>\n\n {multiple && localMultiArr.length > 0 && (\n <div\n className={classNames('filter-select-selected-bar', styles['filter-select-selected-bar'])}\n >\n <div\n className={classNames(\n 'filter-select-selected-label',\n styles['filter-select-selected-label'],\n )}\n >\n 已选:\n </div>\n <div\n className={classNames(\n 'filter-select-selected-tags',\n styles['filter-select-selected-tags'],\n )}\n >\n <Space size={[4, 4]} wrap>\n {localMultiArr.map((v) => {\n const opt = options.find((o) => String(o.value) === String(v));\n const tagRemovable = minSelection == null || localMultiArr.length > minSelection;\n return (\n <span\n key={String(v)}\n className={classNames(\n 'filter-select-selected-tag',\n styles['filter-select-selected-tag'],\n !tagRemovable && styles['filter-select-selected-tag-disabled'],\n )}\n onClick={() => tagRemovable && handleToggleMulti(v)}\n >\n {opt?.label ?? String(v)}\n <X\n className={classNames(\n 'filter-select-selected-remove',\n styles['filter-select-selected-remove'],\n !tagRemovable && styles['filter-select-selected-remove-disabled'],\n )}\n />\n </span>\n );\n })}\n </Space>\n </div>\n </div>\n )}\n </FilterPopover>\n );\n};\n\nexport default FilterSelect;\nexport type { FilterSelectProps };\n"],"names":["Search","Input","formatPersonValueLabel","opt","parts","matchPersonOptionSearch","keyword","lower","s","arraysEqual","a","b","sortedA","sortedB","v","i","toMultiArray","value","toDisplayValue","defaultValue","defaultValues","multiple","showDefaultAsSelected","arr","toDraftValue","formatValueLabel","displayVal","options","isPersonVariant","_a","o","FilterSelect","filterKey","label","optionsProp","loadData","enabled","onChange","searchable","minSelection","variant","active","hidden","display","dependsOn","clearOnDepsChange","panelExtra","panelWidth","loadingProp","open","setOpen","useState","searchText","setSearchText","onChangeRef","useRef","resolvedPanelWidth","resolvedLabel","values","depsKey","useFilterFieldBridge","loadedOptions","setLoadedOptions","loadDataLoading","setLoadDataLoading","loadDataRef","useEffect","cancelled","next","optionsLoading","displayValue","localValue","setLocalValue","registerFn","useFilterRegister","handleRemove","useMemo","selectedArr","canRemove","revertToCommitted","nextDraft","nextDisplay","committedValueLabel","resolveFilterVisible","removable","filteredOptions","handleConfirm","handleDiscardDraft","handleOpenChange","nextOpen","handleClickOption","optVal","isDefaultOption","handleToggleMulti","has","localMultiArr","filteredSelectedCount","allFilteredSelected","someFilteredSelected","handleToggleAll","checked","filteredVals","seen","removeSet","isActive","jsxs","FilterPopover","jsx","classNames","styles","Spin","Empty","Fragment","Checkbox","e","PersonOptionRow","Check","Space","tagRemovable","X"],"mappings":";;;;;;;;;;;AAYA,MAAM,EAAE,QAAAA,OAAWC;AAEnB,SAASC,GAAuBC,GAA2B;AACzD,QAAMC,IAAQ,CAACD,EAAI,KAAK;AACxB,SAAIA,EAAI,kBAAgBC,EAAM,KAAKD,EAAI,cAAc,GAC9CC,EAAM,KAAK,KAAK;AACzB;AAEA,SAASC,GAAwBF,GAAmBG,GAA0B;AAC5E,QAAMC,IAAQD,EAAQ,YAAA;AACtB,SAAO,CAACH,EAAI,OAAOA,EAAI,gBAAgBA,EAAI,OAAOA,EAAI,OAAOA,EAAI,UAAU,EACxE,OAAO,OAAO,EACd,KAAK,CAACK,MAAM,OAAOA,CAAC,EAAE,YAAA,EAAc,SAASD,CAAK,CAAC;AACxD;AAMA,SAASE,GAAYC,GAAyBC,GAAkC;AAC9E,MAAI,EAACD,KAAA,QAAAA,EAAG,WAAU,EAACC,KAAA,QAAAA,EAAG,QAAQ,QAAO;AACrC,MAAI,CAACD,KAAK,CAACC,KAAKD,EAAE,WAAWC,EAAE,OAAQ,QAAO;AAC9C,QAAMC,IAAU,CAAC,GAAGF,CAAC,EAAE,IAAI,MAAM,EAAE,KAAA,GAC7BG,IAAU,CAAC,GAAGF,CAAC,EAAE,IAAI,MAAM,EAAE,KAAA;AACnC,SAAOC,EAAQ,MAAM,CAACE,GAAGC,MAAMD,MAAMD,EAAQE,CAAC,CAAC;AACjD;AAwCA,SAASC,GAAaC,GAA+C;AACnE,SAAI,MAAM,QAAQA,CAAK,IAAUA,IAC7BA,KAAS,QAAQA,MAAU,KAAW,CAACA,CAAK,IACzC,CAAA;AACT;AAEA,SAASC,EACPD,GACAE,GACAC,GACAC,GACAC,GACmD;AACnD,MAAID,GAAU;AACZ,UAAME,IAAMP,GAAaC,CAAK;AAE9B,WAAI,CAACK,MAAyBF,KAAA,QAAAA,EAAe,WAAUX,GAAYc,GAAKH,CAAa,IAC5E,CAAA,IAEFG;AAAA,EACT;AACA,MAAI,GAACD,KAAyBH,MAAiB,UAAaF,MAAUE;AAGtE,WAAOF;AACT;AAGA,SAASO,EACPP,GACAE,GACAC,GACAC,GACmD;AACnD,SAAIA,IAAiBL,GAAaC,CAAK,IAChCC,EAAeD,GAAOE,GAAcC,GAAe,IAAO,EAAI;AACvE;AAEA,SAASK,GACPC,GACAC,GACAN,GACAO,GACAR,GACQ;AACR,MAAIC,GAAU;AACZ,UAAME,IAAOG,KAAsC,CAAA;AACnD,WAAKH,EAAI,SAELH,KAAA,QAAAA,EAAe,UAAUX,GAAYc,GAAKH,CAAa,IAClD,OAEFG,EACJ,IAAI,CAACT,MAAA;;AAAM,eAAAe,IAAAF,EAAQ,KAAK,CAACG,MAAM,OAAOA,EAAE,KAAK,MAAM,OAAOhB,CAAC,CAAC,MAAjD,gBAAAe,EAAoD,UAAS,OAAOf,CAAC;AAAA,KAAC,EACjF,KAAK,GAAG,IAPa;AAAA,EAQ1B;AACA,MAAIY,KAAc,KAAM,QAAO;AAC/B,QAAMvB,IAAMwB,EAAQ,KAAK,CAACG,MAAM,OAAOA,EAAE,KAAK,MAAM,OAAOJ,CAAU,CAAC;AACtE,SAAKvB,IACEyB,IAAkB1B,GAAuBC,CAAmB,IAAIA,EAAI,QAD1D,OAAOuB,CAAU;AAEpC;AAEA,MAAMK,KAA4C,CAAC;AAAA,EACjD,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAASC;AAAA,EACT,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,OAAAnB;AAAA,EACA,UAAAoB;AAAA,EACA,cAAAlB;AAAA,EACA,eAAAC;AAAA,EACA,uBAAAE,IAAwB;AAAA,EACxB,YAAAgB,KAAa;AAAA,EACb,UAAAjB,IAAW;AAAA,EACX,cAAAkB;AAAA,EACA,SAAAC,KAAU;AAAA,EACV,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,mBAAAC,KAAoB;AAAA,EACpB,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAASC,KAAc;AACzB,MAAM;AACJ,QAAMpB,IAAkBY,OAAY,UAC9B,CAACS,IAAMC,CAAO,IAAIC,EAAS,EAAK,GAChC,CAACC,GAAYC,CAAa,IAAIF,EAAS,EAAE,GAEzCG,IAAcC,GAAOlB,CAAQ;AACnC,EAAAiB,EAAY,UAAUjB;AAEtB,QAAMmB,KAAqBT,OAAeD,IAAa,MAAM,SAEvD,EAAE,eAAAW,GAAe,QAAAC,IAAQ,SAAAC,GAAA,IAAYC,GAAqB;AAAA,IAC9D,WAAA5B;AAAA,IACA,OAAAf;AAAA,IACA,OAAAgB;AAAA,IACA,WAAAW;AAAA,IACA,mBAAAC;AAAA,IACA,aAAa,MAAA;;AAAM,cAAAhB,IAAAyB,EAAY,YAAZ,gBAAAzB,EAAA,KAAAyB,GAAsB;AAAA;AAAA,EAAS,CACnD,GAEK,CAACO,IAAeC,CAAgB,IAAIX,EAAyB,CAAA,CAAE,GAC/D,CAACY,IAAiBC,CAAkB,IAAIb,EAAS,EAAK,GACtDc,IAAcV,GAAOpB,CAAQ;AACnC,EAAA8B,EAAY,UAAU9B,GAEtB+B,EAAU,MAAM;AACd,QAAI,CAACD,EAAY,WAAW/B,KAAe,QAAQ,CAACE,EAAS;AAC7D,QAAI+B,IAAY;AAChB,WAAAH,EAAmB,EAAI,IACtB,YAAY;AACX,UAAI;AACF,cAAMI,IAAO,MAAMH,EAAY,QAAS,EAAE,QAAAP,IAAQ;AAClD,QAAKS,KAAWL,EAAiBM,KAAQ,CAAA,CAAE;AAAA,MAC7C,QAAQ;AACN,QAAKD,KAAWL,EAAiB,EAAE;AAAA,MACrC,UAAA;AACE,QAAKK,KAAWH,EAAmB,EAAK;AAAA,MAC1C;AAAA,IACF,GAAA,GACO,MAAM;AACX,MAAAG,IAAY;AAAA,IACd;AAAA,EAEF,GAAG,CAACR,IAASvB,GAASF,GAAaC,CAAQ,CAAC;AAE5C,QAAMR,IAAUO,KAAe2B,IACzBQ,IAAiBrB,MAAee,IAEhCO,IAAepD;AAAA,IACnBD;AAAA,IACAE;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA,GAEI,CAACiD,GAAYC,CAAa,IAAIrB;AAAA,IAClC,MAAM3B,EAAaP,GAAOE,GAAcC,GAAeC,CAAQ,MAAMA,IAAW,CAAA,IAAK;AAAA,EAAA,GAIjFoD,IAAaC,GAAA,GACbC,IAAeC,GAAQ,MAAM;AACjC,UAAMC,IAAc,MAAM,QAAQP,CAAY,IAC1CA,IACAA,KAAgB,QAAQA,MAAiB,KACvC,CAACA,CAAY,IACb,CAAA,GACAQ,IAAY,CAACzD,KAAYkB,KAAgB,QAAQsC,EAAY,SAAStC;AAC5E,WAAO,MAAM;;AACX,MAAKuC,OACLjD,IAAAyB,EAAY,YAAZ,QAAAzB,EAAA,KAAAyB,GAAsB;AAAA,IACxB;AAAA,EACF,GAAG,CAACgB,GAAc/B,GAAclB,CAAQ,CAAC,GAEnC0D,IAAoB,MAAM;AAC9B,IAAAP;AAAA,MACEhD,EAAaP,GAAOE,GAAcC,GAAeC,CAAQ,MAAMA,IAAW,CAAA,IAAK;AAAA,IAAA,GAEjFgC,EAAc,EAAE;AAAA,EAClB;AAGA,EAAAa,EAAU,MAAM;AACd,UAAMc,IAAYxD,EAAaP,GAAOE,GAAcC,GAAeC,CAAQ;AAC3E,IAAAmD,EAAcQ,MAAc3D,IAAW,CAAA,IAAK,OAAU;AACtD,UAAM4D,IAAc/D;AAAA,MAClBD;AAAA,MACAE;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA;AAEF,KAEE2D,KAAgB,QACf,MAAM,QAAQA,CAAW,KAAKA,EAAY,WAAW,MAEtD5B,EAAc,EAAE;AAAA,EAEpB,GAAG,CAACpC,GAAOE,GAAcC,GAAeC,GAAUC,CAAqB,CAAC;AAExE,QAAM4D,IAAsBN;AAAA,IAC1B,MAAMnD,GAAiB6C,GAAc3C,GAASN,GAAUO,GAAiBR,CAAa;AAAA,IACtF,CAACO,GAAS2C,GAAcjD,GAAUO,GAAiBR,CAAa;AAAA,EAAA;AA8BlE,MA3BA8C,EAAU,MAAM;AACd,QAAI,CAACO,EAAY;AAEjB,QAAI,CAACU,GAAqB,EAAE,SAAAxC,GAAS,QAAAD,EAAA,GADzB,EAAE,WAAAV,GAAW,OAAOyB,GAAe,OAAAxC,EAAA,CACG,GAAG;AACnD,MAAAwD,EAAW,WAAWzC,CAAS;AAC/B;AAAA,IACF;AACA,QAAIkD,GAAqB;AACvB,YAAML,IAAc,MAAM,QAAQP,CAAY,IAC1CA,IACAA,KAAgB,QAAQA,MAAiB,KACvC,CAACA,CAAY,IACb,CAAA,GACAc,IAAY,CAAC/D,KAAYkB,KAAgB,QAAQsC,EAAY,SAAStC;AAC5E,MAAAkC,EAAW,SAASzC,GAAW;AAAA,QAC7B,OAAOyB;AAAA,QACP,YAAYyB;AAAA,QACZ,UAAUP;AAAA,QACV,WAAAS;AAAA,MAAA,CACD;AAAA,IACH;AACE,MAAAX,EAAW,WAAWzC,CAAS;AAAA,EAGnC,GAAG,CAACkD,GAAqBlD,GAAWyB,GAAef,GAAQC,GAASgC,CAAY,CAAC,GAG7E,CAACQ,GAAqB,EAAE,SAAAxC,GAAS,QAAAD,KADf,EAAE,WAAAV,GAAW,OAAOyB,GAAe,OAAAxC,EAAA,CACG,EAAG,QAAO;AAEtE,QAAMoE,IAAkBjC,IACpBzB,EAAQ;AAAA,IAAO,CAACxB,MACdyB,IACIvB,GAAwBF,GAAqBiD,CAAU,IACvDjD,EAAI,MAAM,YAAA,EAAc,SAASiD,EAAW,aAAa;AAAA,EAAA,IAE/DzB,GAEE2D,KAAgB,MAAM;AAC1B,IAAAjD,KAAA,QAAAA,EAAWkC,IACXrB,EAAQ,EAAK;AAAA,EACf,GAEMqC,KAAqB,MAAM;AAC/B,IAAAR,EAAA,GACA7B,EAAQ,EAAK;AAAA,EACf,GAEMsC,KAAmB,CAACC,MAAsB;AAC9C,IAAI,CAACA,KAAYpE,KACf0D,EAAA,GAEF7B,EAAQuC,CAAQ;AAAA,EAClB,GAEMC,KAAoB,CAACC,MAA4B;AACrD,QAAI,CAACtE,GAAU;AACb,YAAMuE,IAAkBzE,MAAiB,UAAawE,MAAWxE;AACjE,UAAIiD;AACJ,MAAIG,MAAeoB,KAAUC,IAC3BxB,IAAO,SAEPA,IAAOuB,GAETnB,EAAcJ,CAAI,GAClB/B,KAAA,QAAAA,EAAW+B,IACXlB,EAAQ,EAAK;AAAA,IACf;AAAA,EACF,GAEM2C,IAAoB,CAACF,MAA4B;AACrD,UAAMpE,IAAOgD,KAAsC,CAAA,GAC7CuB,IAAMvE,EAAI,KAAK,CAACT,MAAM,OAAOA,CAAC,MAAM,OAAO6E,CAAM,CAAC;AACxD,QAAIG,KAAOvD,KAAgB,QAAQhB,EAAI,UAAUgB;AAC/C;AAEF,UAAM6B,IAAO0B,IAAMvE,EAAI,OAAO,CAACT,MAAM,OAAOA,CAAC,MAAM,OAAO6E,CAAM,CAAC,IAAI,CAAC,GAAGpE,GAAKoE,CAAM;AACpF,IAAAnB,EAAcJ,CAAI;AAAA,EACpB,GAEM2B,IAAiB,MAAM,QAAQxB,CAAU,IAAIA,IAAa,CAAA,GAC1DyB,IAAwBX,EAAgB;AAAA,IAAO,CAAClF,MACpD4F,EAAc,KAAK,CAACjF,MAAM,OAAOA,CAAC,MAAM,OAAOX,EAAI,KAAK,CAAC;AAAA,EAAA,EACzD,QACI8F,IACJZ,EAAgB,SAAS,KAAKW,MAA0BX,EAAgB,QACpEa,KAAuBF,IAAwB,KAAK,CAACC,GAErDE,IAAkB,CAACC,MAAqB;AAC5C,UAAM7E,IAAMwE,GACNM,IAAehB,EAAgB,IAAI,CAACvD,MAAMA,EAAE,KAAK;AACvD,QAAIsE,GAAS;AACX,YAAME,IAAO,IAAI,IAAI/E,EAAI,IAAI,MAAM,CAAC,GAC9B6C,KAAO,CAAC,GAAG7C,CAAG;AACpB,iBAAWT,KAAKuF;AACd,QAAKC,EAAK,IAAI,OAAOxF,CAAC,CAAC,MACrBsD,GAAK,KAAKtD,CAAC,GACXwF,EAAK,IAAI,OAAOxF,CAAC,CAAC;AAGtB,MAAA0D,EAAcJ,EAAI;AAClB;AAAA,IACF;AACA,UAAMmC,IAAY,IAAI,IAAIF,EAAa,IAAI,MAAM,CAAC;AAClD,QAAIjC,IAAO7C,EAAI,OAAO,CAACT,MAAM,CAACyF,EAAU,IAAI,OAAOzF,CAAC,CAAC,CAAC;AACtD,IAAIyB,KAAgB,QAAQ6B,EAAK,SAAS7B,MACxC6B,IAAO7C,EAAI,MAAM,GAAGgB,CAAY,IAElCiC,EAAcJ,CAAI;AAAA,EACpB,GAEMoC,KAAWnF,IACb,MAAM,QAAQiD,CAAY,KAAKA,EAAa,SAAS,IACrDA,KAAgB,QAAQA,MAAiB;AAE7C,SACE,gBAAAmC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAOjD;AAAA,MACP,QAAQhB,MAAU+D;AAAA,MAClB,SAASnC;AAAA,MACT,MAAApB;AAAA,MACA,cAAcuC;AAAA,MACd,OAAOhC;AAAA,MACP,WAAWnC,IAAWiE,KAAgB;AAAA,MACtC,SAASjE,IAAWkE,KAAqB;AAAA,MAExC,UAAA;AAAA,QAAAjD,MACC,gBAAAqE;AAAA,UAAC3G;AAAA,UAAA;AAAA,YACC,aAAa,KAAKyD,CAAa;AAAA,YAC/B,YAAU;AAAA,YACV,MAAK;AAAA,YACL,WAAWmD,EAAW,wBAAwBC,EAAO,sBAAsB,CAAC;AAAA,YAC5E,OAAOzD;AAAA,YACP,UAAU,CAAC,MAAMC,EAAc,EAAE,OAAO,KAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAGhDP,IACC,gBAAA6D;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWC,EAAW,6BAA6BC,EAAO,2BAA2B,CAAC;AAAA,YAErF,UAAA/D;AAAA,UAAA;AAAA,QAAA,IAED;AAAA,QAEJ,gBAAA6D,EAAC,SAAI,WAAWC,EAAW,yBAAyBC,EAAO,uBAAuB,CAAC,GAChF,UAAAxC,sBACE,OAAA,EAAI,WAAWuC,EAAW,yBAAyBC,EAAO,uBAAuB,CAAC,GACjF,4BAACC,IAAA,EAAK,MAAK,SAAQ,GACrB,IACEzB,EAAgB,WAAW,sBAC5B,OAAA,EAAI,WAAWuB,EAAW,uBAAuBC,EAAO,qBAAqB,CAAC,GAC7E,4BAACE,IAAA,EAAM,UAAS,UAAS,aAAY,OAAA,CAAO,EAAA,CAC9C,IAEA,gBAAAN,EAAAO,IAAA,EACG,UAAA;AAAA,UAAA3F,KAAYgE,EAAgB,SAAS,KACpC,gBAAAoB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWG;AAAA,gBACT;AAAA,gBACAC,EAAO,sBAAsB;AAAA,gBAC7B;AAAA,gBACAA,EAAO,0BAA0B;AAAA,cAAA;AAAA,cAEnC,SAAS,MAAMV,EAAgB,CAACF,CAAmB;AAAA,cAEnD,UAAA;AAAA,gBAAA,gBAAAU;AAAA,kBAACM;AAAA,kBAAA;AAAA,oBACC,SAAShB;AAAA,oBACT,eAAeC;AAAA,oBACf,UAAU,CAAC,MAAMC,EAAgB,EAAE,OAAO,OAAO;AAAA,oBACjD,SAAS,CAAC,MAAM,EAAE,gBAAA;AAAA,kBAAgB;AAAA,gBAAA;AAAA,gBAEpC,gBAAAQ,EAAC,UAAK,UAAA,KAAA,CAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGXtB,EAAgB,IAAI,CAAClF,MACpB,gBAAAsG;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAWG;AAAA,gBACT;AAAA,gBACAC,EAAO,sBAAsB;AAAA,gBAC7B,CAACxF,KACCkD,MAAepE,EAAI,SACnByG;AAAA,kBACE;AAAA,kBACAC,EAAO,+BAA+B;AAAA,gBAAA;AAAA,cACxC;AAAA,cAEJ,SAAS,MACPxF,IAAWwE,EAAkB1F,EAAI,KAAK,IAAIuF,GAAkBvF,EAAI,KAAK;AAAA,cAGtE,UAAA;AAAA,gBAAAkB,KACC,gBAAAsF;AAAA,kBAACM;AAAA,kBAAA;AAAA,oBACC,SAASlB,EAAc,KAAK,CAACjF,MAAM,OAAOA,CAAC,MAAM,OAAOX,EAAI,KAAK,CAAC;AAAA,oBAClE,UAAU,MAAM0F,EAAkB1F,EAAI,KAAK;AAAA,oBAC3C,SAAS,CAAC+G,MAAMA,EAAE,gBAAA;AAAA,kBAAgB;AAAA,gBAAA;AAAA,gBAGrCtF,sBACEuF,IAAA,EAAgB,QAAQhH,GAAqB,IAE9C,gBAAAwG,EAAC,QAAA,EAAM,UAAAxG,EAAI,MAAA,CAAM;AAAA,gBAElB,CAACkB,KAAY,CAACO,KAAmB2C,MAAepE,EAAI,SACnD,gBAAAwG;AAAA,kBAACS;AAAA,kBAAA;AAAA,oBACC,WAAWR;AAAA,sBACT;AAAA,sBACAC,EAAO,4BAA4B;AAAA,oBAAA;AAAA,kBACrC;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,YAjCG,OAAO1G,EAAI,KAAK;AAAA,UAAA,CAoCxB;AAAA,QAAA,EAAA,CACH,EAAA,CAEJ;AAAA,QAECkB,KAAY0E,EAAc,SAAS,KAClC,gBAAAU;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWG,EAAW,8BAA8BC,EAAO,4BAA4B,CAAC;AAAA,YAExF,UAAA;AAAA,cAAA,gBAAAF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWC;AAAA,oBACT;AAAA,oBACAC,EAAO,8BAA8B;AAAA,kBAAA;AAAA,kBAExC,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGD,gBAAAF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWC;AAAA,oBACT;AAAA,oBACAC,EAAO,6BAA6B;AAAA,kBAAA;AAAA,kBAGtC,UAAA,gBAAAF,EAACU,IAAA,EAAM,MAAM,CAAC,GAAG,CAAC,GAAG,MAAI,IACtB,UAAAtB,EAAc,IAAI,CAACjF,MAAM;AACxB,0BAAMX,IAAMwB,EAAQ,KAAK,CAACG,MAAM,OAAOA,EAAE,KAAK,MAAM,OAAOhB,CAAC,CAAC,GACvDwG,IAAe/E,KAAgB,QAAQwD,EAAc,SAASxD;AACpE,2BACE,gBAAAkE;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBAEC,WAAWG;AAAA,0BACT;AAAA,0BACAC,EAAO,4BAA4B;AAAA,0BACnC,CAACS,KAAgBT,EAAO,qCAAqC;AAAA,wBAAA;AAAA,wBAE/D,SAAS,MAAMS,KAAgBzB,EAAkB/E,CAAC;AAAA,wBAEjD,UAAA;AAAA,2BAAAX,KAAA,gBAAAA,EAAK,UAAS,OAAOW,CAAC;AAAA,0BACvB,gBAAA6F;AAAA,4BAACY;AAAA,4BAAA;AAAA,8BACC,WAAWX;AAAA,gCACT;AAAA,gCACAC,EAAO,+BAA+B;AAAA,gCACtC,CAACS,KAAgBT,EAAO,wCAAwC;AAAA,8BAAA;AAAA,4BAClE;AAAA,0BAAA;AAAA,wBACF;AAAA,sBAAA;AAAA,sBAfK,OAAO/F,CAAC;AAAA,oBAAA;AAAA,kBAkBnB,CAAC,EAAA,CACH;AAAA,gBAAA;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/Filter/FilterSelect/index.tsx"],"sourcesContent":["import { Check, X } from '@/components/Icons';\nimport { Empty } from '@/components/Empty';\nimport { Checkbox, Input, Space, Spin } from 'antd';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport PersonOptionRow from '../../Form/PersonOptionRow';\nimport FilterPopover from '../FilterPopover';\nimport type { BaseFilterProps, FilterLoadDataContext, FilterOption, PersonOption } from '../types';\nimport { resolveFilterVisible } from '../types';\nimport { useFilterFieldBridge, useFilterRegister } from '../useFilterState';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\nconst { Search } = Input;\n\nfunction formatPersonValueLabel(opt: PersonOption): string {\n const parts = [opt.label];\n if (opt.departmentName) parts.push(opt.departmentName);\n return parts.join(' · ');\n}\n\nfunction matchPersonOptionSearch(opt: PersonOption, keyword: string): boolean {\n const lower = keyword.toLowerCase();\n return [opt.label, opt.departmentName, opt.email, opt.phone, opt.employeeId]\n .filter(Boolean)\n .some((s) => String(s).toLowerCase().includes(lower));\n}\n\ntype FilterSelectValue = string | number | (string | number)[] | undefined;\n\nexport type { FilterSelectValue };\n\nfunction arraysEqual(a?: (string | number)[], b?: (string | number)[]): boolean {\n if (!a?.length && !b?.length) return true;\n if (!a || !b || a.length !== b.length) return false;\n const sortedA = [...a].map(String).sort();\n const sortedB = [...b].map(String).sort();\n return sortedA.every((v, i) => v === sortedB[i]);\n}\n\ninterface FilterSelectProps extends BaseFilterProps {\n /** 静态选项;与 loadData 二选一(同时存在时以 options 为准) */\n options?: FilterOption[];\n /** 按依赖值动态拉取选项 */\n loadData?: (ctx: FilterLoadDataContext) => Promise<FilterOption[]>;\n /** loadData 是否启用;默认 true */\n enabled?: boolean;\n value?: FilterSelectValue;\n onChange?: (value: FilterSelectValue) => void;\n /** 默认值:与默认值相同时视为未筛选(除非 showDefaultAsSelected) */\n defaultValue?: string | number;\n /** 多选默认值:与默认集合相同时视为未筛选(除非 showDefaultAsSelected) */\n defaultValues?: (string | number)[];\n /** 为 true 时,value 等于默认仍展示在「您已选择」并保持选中态 */\n showDefaultAsSelected?: boolean;\n placeholder?: string;\n searchable?: boolean;\n /** 是否多选 */\n multiple?: boolean;\n /** 多选至少保留项数;达到下限时不允许移除已选标签 */\n minSelection?: number;\n /** 人员选项:展示部门与联系方式 */\n variant?: 'default' | 'person';\n /**\n * 面板内嵌从属条件(与 search 同层:search 下方、选项列表上方)。\n * 禁止再嵌 Filter*(双重 Popover)。\n */\n panelExtra?: React.ReactNode;\n /** 面板宽度;有 panelExtra 时默认 460 */\n panelWidth?: number;\n /**\n * 选项加载中:Filter Item(Trigger)显示 Loader2 spin;\n * 面板列表区显示 Spin,不渲染空态。\n * 与内部 loadData loading 取或。\n */\n loading?: boolean;\n}\n\nfunction toMultiArray(value: FilterSelectValue): (string | number)[] {\n if (Array.isArray(value)) return value;\n if (value != null && value !== '') return [value];\n return [];\n}\n\nfunction toDisplayValue(\n value: FilterSelectValue,\n defaultValue: string | number | undefined,\n defaultValues: (string | number)[] | undefined,\n multiple: boolean,\n showDefaultAsSelected: boolean,\n): string | number | (string | number)[] | undefined {\n if (multiple) {\n const arr = toMultiArray(value);\n // 等于默认集合时:对外视为「未筛选」(不亮 trigger / 不进「您已选择」)\n if (!showDefaultAsSelected && defaultValues?.length && arraysEqual(arr, defaultValues)) {\n return [];\n }\n return arr;\n }\n if (!showDefaultAsSelected && defaultValue !== undefined && value === defaultValue) {\n return undefined;\n }\n return value;\n}\n\n/** 草稿/面板用真实 value,避免 defaultValues 折叠成 [] 后全选勾选丢失 */\nfunction toDraftValue(\n value: FilterSelectValue,\n defaultValue: string | number | undefined,\n defaultValues: (string | number)[] | undefined,\n multiple: boolean,\n): string | number | (string | number)[] | undefined {\n if (multiple) return toMultiArray(value);\n return toDisplayValue(value, defaultValue, defaultValues, false, true);\n}\n\nfunction formatValueLabel(\n displayVal: string | number | (string | number)[] | undefined,\n options: FilterOption[],\n multiple: boolean,\n isPersonVariant: boolean,\n defaultValues?: (string | number)[],\n): string {\n if (multiple) {\n const arr = (displayVal as (string | number)[]) || [];\n if (!arr.length) return '';\n // 全选默认集合时用「全部」,避免「您已选择」被几十个厂名撑满\n if (defaultValues?.length && arraysEqual(arr, defaultValues)) {\n return '全部';\n }\n return arr\n .map((v) => options.find((o) => String(o.value) === String(v))?.label ?? String(v))\n .join('、');\n }\n if (displayVal == null) return '';\n const opt = options.find((o) => String(o.value) === String(displayVal));\n if (!opt) return String(displayVal);\n return isPersonVariant ? formatPersonValueLabel(opt as PersonOption) : opt.label;\n}\n\nconst FilterSelect: React.FC<FilterSelectProps> = ({\n filterKey,\n label,\n options: optionsProp,\n loadData,\n enabled = true,\n value,\n onChange,\n defaultValue,\n defaultValues,\n showDefaultAsSelected = false,\n searchable = false,\n multiple = false,\n minSelection,\n variant = 'default',\n active,\n hidden,\n display,\n dependsOn,\n clearOnDepsChange = true,\n panelExtra,\n panelWidth,\n loading: loadingProp = false,\n}) => {\n const isPersonVariant = variant === 'person';\n const [open, setOpen] = useState(false);\n const [searchText, setSearchText] = useState('');\n\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const resolvedPanelWidth = panelWidth ?? (panelExtra ? 460 : undefined);\n\n const { resolvedLabel, values, depsKey } = useFilterFieldBridge({\n filterKey,\n value,\n label,\n dependsOn,\n clearOnDepsChange,\n onDepsClear: () => onChangeRef.current?.(undefined),\n });\n\n const [loadedOptions, setLoadedOptions] = useState<FilterOption[]>([]);\n const [loadDataLoading, setLoadDataLoading] = useState(false);\n const loadDataRef = useRef(loadData);\n loadDataRef.current = loadData;\n\n useEffect(() => {\n if (!loadDataRef.current || optionsProp != null || !enabled) return;\n let cancelled = false;\n setLoadDataLoading(true);\n (async () => {\n try {\n const next = await loadDataRef.current!({ values });\n if (!cancelled) setLoadedOptions(next ?? []);\n } catch {\n if (!cancelled) setLoadedOptions([]);\n } finally {\n if (!cancelled) setLoadDataLoading(false);\n }\n })();\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [depsKey, enabled, optionsProp, loadData]);\n\n const options = optionsProp ?? loadedOptions;\n const optionsLoading = loadingProp || loadDataLoading;\n\n const displayValue = toDisplayValue(\n value,\n defaultValue,\n defaultValues,\n multiple,\n showDefaultAsSelected,\n );\n const [localValue, setLocalValue] = useState<string | number | (string | number)[] | undefined>(\n () => toDraftValue(value, defaultValue, defaultValues, multiple) ?? (multiple ? [] : undefined),\n );\n\n // ── 自动注册到 CommonFilter ──\n const registerFn = useFilterRegister();\n const handleRemove = useMemo(() => {\n const selectedArr = Array.isArray(displayValue)\n ? displayValue\n : displayValue != null && displayValue !== ''\n ? [displayValue]\n : [];\n const canRemove = !multiple || minSelection == null || selectedArr.length > minSelection;\n return () => {\n if (!canRemove) return;\n onChangeRef.current?.(undefined);\n };\n }, [displayValue, minSelection, multiple]);\n\n const revertToCommitted = () => {\n setLocalValue(\n toDraftValue(value, defaultValue, defaultValues, multiple) ?? (multiple ? [] : undefined),\n );\n setSearchText('');\n };\n\n // 同步外部 value 到内部 localValue(多选用真实 value,保留 defaultValues 全选勾选)\n useEffect(() => {\n const nextDraft = toDraftValue(value, defaultValue, defaultValues, multiple);\n setLocalValue(nextDraft ?? (multiple ? [] : undefined));\n const nextDisplay = toDisplayValue(\n value,\n defaultValue,\n defaultValues,\n multiple,\n showDefaultAsSelected,\n );\n if (\n nextDisplay === undefined ||\n nextDisplay === null ||\n (Array.isArray(nextDisplay) && nextDisplay.length === 0)\n ) {\n setSearchText('');\n }\n }, [value, defaultValue, defaultValues, multiple, showDefaultAsSelected]);\n\n const committedValueLabel = useMemo(\n () => formatValueLabel(displayValue, options, multiple, isPersonVariant, defaultValues),\n [options, displayValue, multiple, isPersonVariant, defaultValues],\n );\n\n useEffect(() => {\n if (!registerFn) return;\n const ctx = { filterKey, label: resolvedLabel, value };\n if (!resolveFilterVisible({ display, hidden }, ctx)) {\n registerFn.unregister(filterKey);\n return;\n }\n if (committedValueLabel) {\n const selectedArr = Array.isArray(displayValue)\n ? displayValue\n : displayValue != null && displayValue !== ''\n ? [displayValue]\n : [];\n const removable = !multiple || minSelection == null || selectedArr.length > minSelection;\n registerFn.register(filterKey, {\n label: resolvedLabel,\n valueLabel: committedValueLabel,\n onRemove: handleRemove,\n removable,\n });\n } else {\n registerFn.unregister(filterKey);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [committedValueLabel, filterKey, resolvedLabel, hidden, display, handleRemove]);\n\n const visibilityCtx = { filterKey, label: resolvedLabel, value };\n if (!resolveFilterVisible({ display, hidden }, visibilityCtx)) return null;\n\n const filteredOptions = searchText\n ? options.filter((opt) =>\n isPersonVariant\n ? matchPersonOptionSearch(opt as PersonOption, searchText)\n : opt.label.toLowerCase().includes(searchText.toLowerCase()),\n )\n : options;\n\n const handleConfirm = () => {\n onChange?.(localValue as FilterSelectValue);\n setOpen(false);\n };\n\n const handleDiscardDraft = () => {\n revertToCommitted();\n setOpen(false);\n };\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!nextOpen && multiple) {\n revertToCommitted();\n }\n setOpen(nextOpen);\n };\n\n const handleClickOption = (optVal: string | number) => {\n if (!multiple) {\n const isDefaultOption = defaultValue !== undefined && optVal === defaultValue;\n let next: string | number | undefined;\n if (localValue === optVal || isDefaultOption) {\n next = undefined;\n } else {\n next = optVal;\n }\n setLocalValue(next);\n onChange?.(next);\n setOpen(false);\n }\n };\n\n const handleToggleMulti = (optVal: string | number) => {\n const arr = (localValue as (string | number)[]) || [];\n const has = arr.some((v) => String(v) === String(optVal));\n if (has && minSelection != null && arr.length <= minSelection) {\n return;\n }\n const next = has ? arr.filter((v) => String(v) !== String(optVal)) : [...arr, optVal];\n setLocalValue(next);\n };\n\n const localMultiArr = (Array.isArray(localValue) ? localValue : []) as (string | number)[];\n const filteredSelectedCount = filteredOptions.filter((opt) =>\n localMultiArr.some((v) => String(v) === String(opt.value)),\n ).length;\n const allFilteredSelected =\n filteredOptions.length > 0 && filteredSelectedCount === filteredOptions.length;\n const someFilteredSelected = filteredSelectedCount > 0 && !allFilteredSelected;\n\n const handleToggleAll = (checked: boolean) => {\n const arr = localMultiArr;\n const filteredVals = filteredOptions.map((o) => o.value);\n if (checked) {\n const seen = new Set(arr.map(String));\n const next = [...arr];\n for (const v of filteredVals) {\n if (!seen.has(String(v))) {\n next.push(v);\n seen.add(String(v));\n }\n }\n setLocalValue(next);\n return;\n }\n const removeSet = new Set(filteredVals.map(String));\n let next = arr.filter((v) => !removeSet.has(String(v)));\n if (minSelection != null && next.length < minSelection) {\n next = arr.slice(0, minSelection);\n }\n setLocalValue(next);\n };\n\n const isActive = multiple\n ? Array.isArray(displayValue) && displayValue.length > 0\n : displayValue != null && displayValue !== '';\n\n return (\n <FilterPopover\n label={resolvedLabel}\n active={active || isActive}\n loading={optionsLoading}\n open={open}\n onOpenChange={handleOpenChange}\n width={resolvedPanelWidth}\n onConfirm={multiple ? handleConfirm : undefined}\n onReset={multiple ? handleDiscardDraft : undefined}\n >\n {searchable && (\n <Search\n placeholder={`搜索${resolvedLabel}`}\n allowClear\n size=\"middle\"\n className={classNames('filter-select-search', styles['filter-select-search'])}\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n />\n )}\n {panelExtra ? (\n <div\n className={classNames('filter-select-panel-extra', styles['filter-select-panel-extra'])}\n >\n {panelExtra}\n </div>\n ) : null}\n\n <div className={classNames('filter-select-options', styles['filter-select-options'])}>\n {optionsLoading ? (\n <div className={classNames('filter-select-loading', styles['filter-select-loading'])}>\n <Spin size=\"small\" />\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className={classNames('filter-select-empty', styles['filter-select-empty'])}>\n <Empty iconType=\"simple\" description=\"暂无数据\" />\n </div>\n ) : (\n <>\n {multiple && filteredOptions.length > 0 && (\n <div\n className={classNames(\n 'filter-select-option',\n styles['filter-select-option'],\n 'filter-select-select-all',\n styles['filter-select-select-all'],\n )}\n onClick={() => handleToggleAll(!allFilteredSelected)}\n >\n <Checkbox\n checked={allFilteredSelected}\n indeterminate={someFilteredSelected}\n onChange={(e) => handleToggleAll(e.target.checked)}\n onClick={(e) => e.stopPropagation()}\n />\n <span>全选</span>\n </div>\n )}\n {filteredOptions.map((opt) => (\n <div\n key={String(opt.value)}\n className={classNames(\n 'filter-select-option',\n styles['filter-select-option'],\n !multiple &&\n localValue === opt.value &&\n classNames(\n 'filter-select-option-selected',\n styles['filter-select-option-selected'],\n ),\n )}\n onClick={() =>\n multiple ? handleToggleMulti(opt.value) : handleClickOption(opt.value)\n }\n >\n {multiple && (\n <Checkbox\n checked={localMultiArr.some((v) => String(v) === String(opt.value))}\n onChange={() => handleToggleMulti(opt.value)}\n onClick={(e) => e.stopPropagation()}\n />\n )}\n {isPersonVariant ? (\n <PersonOptionRow option={opt as PersonOption} />\n ) : (\n <span>{opt.label}</span>\n )}\n {!multiple && !isPersonVariant && localValue === opt.value && (\n <Check\n className={classNames(\n 'filter-select-option-check',\n styles['filter-select-option-check'],\n )}\n />\n )}\n </div>\n ))}\n </>\n )}\n </div>\n\n {multiple && localMultiArr.length > 0 && (\n <div\n className={classNames('filter-select-selected-bar', styles['filter-select-selected-bar'])}\n >\n <div\n className={classNames(\n 'filter-select-selected-label',\n styles['filter-select-selected-label'],\n )}\n >\n 已选:\n </div>\n <div\n className={classNames(\n 'filter-select-selected-tags',\n styles['filter-select-selected-tags'],\n )}\n >\n <Space size={[4, 4]} wrap>\n {localMultiArr.map((v) => {\n const opt = options.find((o) => String(o.value) === String(v));\n const tagRemovable = minSelection == null || localMultiArr.length > minSelection;\n return (\n <span\n key={String(v)}\n className={classNames(\n 'filter-select-selected-tag',\n styles['filter-select-selected-tag'],\n !tagRemovable && styles['filter-select-selected-tag-disabled'],\n )}\n onClick={() => tagRemovable && handleToggleMulti(v)}\n >\n {opt?.label ?? String(v)}\n <X\n className={classNames(\n 'filter-select-selected-remove',\n styles['filter-select-selected-remove'],\n !tagRemovable && styles['filter-select-selected-remove-disabled'],\n )}\n />\n </span>\n );\n })}\n </Space>\n </div>\n </div>\n )}\n </FilterPopover>\n );\n};\n\nexport default FilterSelect;\nexport type { FilterSelectProps };\n"],"names":["Search","Input","formatPersonValueLabel","opt","parts","matchPersonOptionSearch","keyword","lower","s","arraysEqual","a","b","sortedA","sortedB","v","i","toMultiArray","value","toDisplayValue","defaultValue","defaultValues","multiple","showDefaultAsSelected","arr","toDraftValue","formatValueLabel","displayVal","options","isPersonVariant","_a","o","FilterSelect","filterKey","label","optionsProp","loadData","enabled","onChange","searchable","minSelection","variant","active","hidden","display","dependsOn","clearOnDepsChange","panelExtra","panelWidth","loadingProp","open","setOpen","useState","searchText","setSearchText","onChangeRef","useRef","resolvedPanelWidth","resolvedLabel","values","depsKey","useFilterFieldBridge","loadedOptions","setLoadedOptions","loadDataLoading","setLoadDataLoading","loadDataRef","useEffect","cancelled","next","optionsLoading","displayValue","localValue","setLocalValue","registerFn","useFilterRegister","handleRemove","useMemo","selectedArr","canRemove","revertToCommitted","nextDraft","nextDisplay","committedValueLabel","resolveFilterVisible","removable","filteredOptions","handleConfirm","handleDiscardDraft","handleOpenChange","nextOpen","handleClickOption","optVal","isDefaultOption","handleToggleMulti","has","localMultiArr","filteredSelectedCount","allFilteredSelected","someFilteredSelected","handleToggleAll","checked","filteredVals","seen","removeSet","isActive","jsxs","FilterPopover","jsx","classNames","styles","Spin","Empty","Fragment","Checkbox","e","PersonOptionRow","Check","Space","tagRemovable","X"],"mappings":";;;;;;;;;;;;AAYA,MAAM,EAAE,QAAAA,OAAWC;AAEnB,SAASC,GAAuBC,GAA2B;AACzD,QAAMC,IAAQ,CAACD,EAAI,KAAK;AACxB,SAAIA,EAAI,kBAAgBC,EAAM,KAAKD,EAAI,cAAc,GAC9CC,EAAM,KAAK,KAAK;AACzB;AAEA,SAASC,GAAwBF,GAAmBG,GAA0B;AAC5E,QAAMC,IAAQD,EAAQ,YAAA;AACtB,SAAO,CAACH,EAAI,OAAOA,EAAI,gBAAgBA,EAAI,OAAOA,EAAI,OAAOA,EAAI,UAAU,EACxE,OAAO,OAAO,EACd,KAAK,CAACK,MAAM,OAAOA,CAAC,EAAE,YAAA,EAAc,SAASD,CAAK,CAAC;AACxD;AAMA,SAASE,GAAYC,GAAyBC,GAAkC;AAC9E,MAAI,EAACD,KAAA,QAAAA,EAAG,WAAU,EAACC,KAAA,QAAAA,EAAG,QAAQ,QAAO;AACrC,MAAI,CAACD,KAAK,CAACC,KAAKD,EAAE,WAAWC,EAAE,OAAQ,QAAO;AAC9C,QAAMC,IAAU,CAAC,GAAGF,CAAC,EAAE,IAAI,MAAM,EAAE,KAAA,GAC7BG,IAAU,CAAC,GAAGF,CAAC,EAAE,IAAI,MAAM,EAAE,KAAA;AACnC,SAAOC,EAAQ,MAAM,CAACE,GAAGC,MAAMD,MAAMD,EAAQE,CAAC,CAAC;AACjD;AAwCA,SAASC,GAAaC,GAA+C;AACnE,SAAI,MAAM,QAAQA,CAAK,IAAUA,IAC7BA,KAAS,QAAQA,MAAU,KAAW,CAACA,CAAK,IACzC,CAAA;AACT;AAEA,SAASC,EACPD,GACAE,GACAC,GACAC,GACAC,GACmD;AACnD,MAAID,GAAU;AACZ,UAAME,IAAMP,GAAaC,CAAK;AAE9B,WAAI,CAACK,MAAyBF,KAAA,QAAAA,EAAe,WAAUX,GAAYc,GAAKH,CAAa,IAC5E,CAAA,IAEFG;AAAA,EACT;AACA,MAAI,GAACD,KAAyBH,MAAiB,UAAaF,MAAUE;AAGtE,WAAOF;AACT;AAGA,SAASO,EACPP,GACAE,GACAC,GACAC,GACmD;AACnD,SAAIA,IAAiBL,GAAaC,CAAK,IAChCC,EAAeD,GAAOE,GAAcC,GAAe,IAAO,EAAI;AACvE;AAEA,SAASK,GACPC,GACAC,GACAN,GACAO,GACAR,GACQ;AACR,MAAIC,GAAU;AACZ,UAAME,IAAOG,KAAsC,CAAA;AACnD,WAAKH,EAAI,SAELH,KAAA,QAAAA,EAAe,UAAUX,GAAYc,GAAKH,CAAa,IAClD,OAEFG,EACJ,IAAI,CAACT,MAAA;;AAAM,eAAAe,IAAAF,EAAQ,KAAK,CAACG,MAAM,OAAOA,EAAE,KAAK,MAAM,OAAOhB,CAAC,CAAC,MAAjD,gBAAAe,EAAoD,UAAS,OAAOf,CAAC;AAAA,KAAC,EACjF,KAAK,GAAG,IAPa;AAAA,EAQ1B;AACA,MAAIY,KAAc,KAAM,QAAO;AAC/B,QAAMvB,IAAMwB,EAAQ,KAAK,CAACG,MAAM,OAAOA,EAAE,KAAK,MAAM,OAAOJ,CAAU,CAAC;AACtE,SAAKvB,IACEyB,IAAkB1B,GAAuBC,CAAmB,IAAIA,EAAI,QAD1D,OAAOuB,CAAU;AAEpC;AAEA,MAAMK,KAA4C,CAAC;AAAA,EACjD,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAASC;AAAA,EACT,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,OAAAnB;AAAA,EACA,UAAAoB;AAAA,EACA,cAAAlB;AAAA,EACA,eAAAC;AAAA,EACA,uBAAAE,IAAwB;AAAA,EACxB,YAAAgB,KAAa;AAAA,EACb,UAAAjB,IAAW;AAAA,EACX,cAAAkB;AAAA,EACA,SAAAC,KAAU;AAAA,EACV,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,mBAAAC,KAAoB;AAAA,EACpB,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAASC,KAAc;AACzB,MAAM;AACJ,QAAMpB,IAAkBY,OAAY,UAC9B,CAACS,IAAMC,CAAO,IAAIC,EAAS,EAAK,GAChC,CAACC,GAAYC,CAAa,IAAIF,EAAS,EAAE,GAEzCG,IAAcC,GAAOlB,CAAQ;AACnC,EAAAiB,EAAY,UAAUjB;AAEtB,QAAMmB,KAAqBT,OAAeD,IAAa,MAAM,SAEvD,EAAE,eAAAW,GAAe,QAAAC,IAAQ,SAAAC,GAAA,IAAYC,GAAqB;AAAA,IAC9D,WAAA5B;AAAA,IACA,OAAAf;AAAA,IACA,OAAAgB;AAAA,IACA,WAAAW;AAAA,IACA,mBAAAC;AAAA,IACA,aAAa,MAAA;;AAAM,cAAAhB,IAAAyB,EAAY,YAAZ,gBAAAzB,EAAA,KAAAyB,GAAsB;AAAA;AAAA,EAAS,CACnD,GAEK,CAACO,IAAeC,CAAgB,IAAIX,EAAyB,CAAA,CAAE,GAC/D,CAACY,IAAiBC,CAAkB,IAAIb,EAAS,EAAK,GACtDc,IAAcV,GAAOpB,CAAQ;AACnC,EAAA8B,EAAY,UAAU9B,GAEtB+B,EAAU,MAAM;AACd,QAAI,CAACD,EAAY,WAAW/B,KAAe,QAAQ,CAACE,EAAS;AAC7D,QAAI+B,IAAY;AAChB,WAAAH,EAAmB,EAAI,IACtB,YAAY;AACX,UAAI;AACF,cAAMI,IAAO,MAAMH,EAAY,QAAS,EAAE,QAAAP,IAAQ;AAClD,QAAKS,KAAWL,EAAiBM,KAAQ,CAAA,CAAE;AAAA,MAC7C,QAAQ;AACN,QAAKD,KAAWL,EAAiB,EAAE;AAAA,MACrC,UAAA;AACE,QAAKK,KAAWH,EAAmB,EAAK;AAAA,MAC1C;AAAA,IACF,GAAA,GACO,MAAM;AACX,MAAAG,IAAY;AAAA,IACd;AAAA,EAEF,GAAG,CAACR,IAASvB,GAASF,GAAaC,CAAQ,CAAC;AAE5C,QAAMR,IAAUO,KAAe2B,IACzBQ,IAAiBrB,MAAee,IAEhCO,IAAepD;AAAA,IACnBD;AAAA,IACAE;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA,GAEI,CAACiD,GAAYC,CAAa,IAAIrB;AAAA,IAClC,MAAM3B,EAAaP,GAAOE,GAAcC,GAAeC,CAAQ,MAAMA,IAAW,CAAA,IAAK;AAAA,EAAA,GAIjFoD,IAAaC,GAAA,GACbC,IAAeC,GAAQ,MAAM;AACjC,UAAMC,IAAc,MAAM,QAAQP,CAAY,IAC1CA,IACAA,KAAgB,QAAQA,MAAiB,KACvC,CAACA,CAAY,IACb,CAAA,GACAQ,IAAY,CAACzD,KAAYkB,KAAgB,QAAQsC,EAAY,SAAStC;AAC5E,WAAO,MAAM;;AACX,MAAKuC,OACLjD,IAAAyB,EAAY,YAAZ,QAAAzB,EAAA,KAAAyB,GAAsB;AAAA,IACxB;AAAA,EACF,GAAG,CAACgB,GAAc/B,GAAclB,CAAQ,CAAC,GAEnC0D,IAAoB,MAAM;AAC9B,IAAAP;AAAA,MACEhD,EAAaP,GAAOE,GAAcC,GAAeC,CAAQ,MAAMA,IAAW,CAAA,IAAK;AAAA,IAAA,GAEjFgC,EAAc,EAAE;AAAA,EAClB;AAGA,EAAAa,EAAU,MAAM;AACd,UAAMc,IAAYxD,EAAaP,GAAOE,GAAcC,GAAeC,CAAQ;AAC3E,IAAAmD,EAAcQ,MAAc3D,IAAW,CAAA,IAAK,OAAU;AACtD,UAAM4D,IAAc/D;AAAA,MAClBD;AAAA,MACAE;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA;AAEF,KAEE2D,KAAgB,QACf,MAAM,QAAQA,CAAW,KAAKA,EAAY,WAAW,MAEtD5B,EAAc,EAAE;AAAA,EAEpB,GAAG,CAACpC,GAAOE,GAAcC,GAAeC,GAAUC,CAAqB,CAAC;AAExE,QAAM4D,IAAsBN;AAAA,IAC1B,MAAMnD,GAAiB6C,GAAc3C,GAASN,GAAUO,GAAiBR,CAAa;AAAA,IACtF,CAACO,GAAS2C,GAAcjD,GAAUO,GAAiBR,CAAa;AAAA,EAAA;AA8BlE,MA3BA8C,EAAU,MAAM;AACd,QAAI,CAACO,EAAY;AAEjB,QAAI,CAACU,GAAqB,EAAE,SAAAxC,GAAS,QAAAD,EAAA,GADzB,EAAE,WAAAV,GAAW,OAAOyB,GAAe,OAAAxC,EAAA,CACG,GAAG;AACnD,MAAAwD,EAAW,WAAWzC,CAAS;AAC/B;AAAA,IACF;AACA,QAAIkD,GAAqB;AACvB,YAAML,IAAc,MAAM,QAAQP,CAAY,IAC1CA,IACAA,KAAgB,QAAQA,MAAiB,KACvC,CAACA,CAAY,IACb,CAAA,GACAc,IAAY,CAAC/D,KAAYkB,KAAgB,QAAQsC,EAAY,SAAStC;AAC5E,MAAAkC,EAAW,SAASzC,GAAW;AAAA,QAC7B,OAAOyB;AAAA,QACP,YAAYyB;AAAA,QACZ,UAAUP;AAAA,QACV,WAAAS;AAAA,MAAA,CACD;AAAA,IACH;AACE,MAAAX,EAAW,WAAWzC,CAAS;AAAA,EAGnC,GAAG,CAACkD,GAAqBlD,GAAWyB,GAAef,GAAQC,GAASgC,CAAY,CAAC,GAG7E,CAACQ,GAAqB,EAAE,SAAAxC,GAAS,QAAAD,KADf,EAAE,WAAAV,GAAW,OAAOyB,GAAe,OAAAxC,EAAA,CACG,EAAG,QAAO;AAEtE,QAAMoE,IAAkBjC,IACpBzB,EAAQ;AAAA,IAAO,CAACxB,MACdyB,IACIvB,GAAwBF,GAAqBiD,CAAU,IACvDjD,EAAI,MAAM,YAAA,EAAc,SAASiD,EAAW,aAAa;AAAA,EAAA,IAE/DzB,GAEE2D,KAAgB,MAAM;AAC1B,IAAAjD,KAAA,QAAAA,EAAWkC,IACXrB,EAAQ,EAAK;AAAA,EACf,GAEMqC,KAAqB,MAAM;AAC/B,IAAAR,EAAA,GACA7B,EAAQ,EAAK;AAAA,EACf,GAEMsC,KAAmB,CAACC,MAAsB;AAC9C,IAAI,CAACA,KAAYpE,KACf0D,EAAA,GAEF7B,EAAQuC,CAAQ;AAAA,EAClB,GAEMC,KAAoB,CAACC,MAA4B;AACrD,QAAI,CAACtE,GAAU;AACb,YAAMuE,IAAkBzE,MAAiB,UAAawE,MAAWxE;AACjE,UAAIiD;AACJ,MAAIG,MAAeoB,KAAUC,IAC3BxB,IAAO,SAEPA,IAAOuB,GAETnB,EAAcJ,CAAI,GAClB/B,KAAA,QAAAA,EAAW+B,IACXlB,EAAQ,EAAK;AAAA,IACf;AAAA,EACF,GAEM2C,IAAoB,CAACF,MAA4B;AACrD,UAAMpE,IAAOgD,KAAsC,CAAA,GAC7CuB,IAAMvE,EAAI,KAAK,CAACT,MAAM,OAAOA,CAAC,MAAM,OAAO6E,CAAM,CAAC;AACxD,QAAIG,KAAOvD,KAAgB,QAAQhB,EAAI,UAAUgB;AAC/C;AAEF,UAAM6B,IAAO0B,IAAMvE,EAAI,OAAO,CAACT,MAAM,OAAOA,CAAC,MAAM,OAAO6E,CAAM,CAAC,IAAI,CAAC,GAAGpE,GAAKoE,CAAM;AACpF,IAAAnB,EAAcJ,CAAI;AAAA,EACpB,GAEM2B,IAAiB,MAAM,QAAQxB,CAAU,IAAIA,IAAa,CAAA,GAC1DyB,IAAwBX,EAAgB;AAAA,IAAO,CAAClF,MACpD4F,EAAc,KAAK,CAACjF,MAAM,OAAOA,CAAC,MAAM,OAAOX,EAAI,KAAK,CAAC;AAAA,EAAA,EACzD,QACI8F,IACJZ,EAAgB,SAAS,KAAKW,MAA0BX,EAAgB,QACpEa,KAAuBF,IAAwB,KAAK,CAACC,GAErDE,IAAkB,CAACC,MAAqB;AAC5C,UAAM7E,IAAMwE,GACNM,IAAehB,EAAgB,IAAI,CAACvD,MAAMA,EAAE,KAAK;AACvD,QAAIsE,GAAS;AACX,YAAME,IAAO,IAAI,IAAI/E,EAAI,IAAI,MAAM,CAAC,GAC9B6C,KAAO,CAAC,GAAG7C,CAAG;AACpB,iBAAWT,KAAKuF;AACd,QAAKC,EAAK,IAAI,OAAOxF,CAAC,CAAC,MACrBsD,GAAK,KAAKtD,CAAC,GACXwF,EAAK,IAAI,OAAOxF,CAAC,CAAC;AAGtB,MAAA0D,EAAcJ,EAAI;AAClB;AAAA,IACF;AACA,UAAMmC,IAAY,IAAI,IAAIF,EAAa,IAAI,MAAM,CAAC;AAClD,QAAIjC,IAAO7C,EAAI,OAAO,CAACT,MAAM,CAACyF,EAAU,IAAI,OAAOzF,CAAC,CAAC,CAAC;AACtD,IAAIyB,KAAgB,QAAQ6B,EAAK,SAAS7B,MACxC6B,IAAO7C,EAAI,MAAM,GAAGgB,CAAY,IAElCiC,EAAcJ,CAAI;AAAA,EACpB,GAEMoC,KAAWnF,IACb,MAAM,QAAQiD,CAAY,KAAKA,EAAa,SAAS,IACrDA,KAAgB,QAAQA,MAAiB;AAE7C,SACE,gBAAAmC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAOjD;AAAA,MACP,QAAQhB,MAAU+D;AAAA,MAClB,SAASnC;AAAA,MACT,MAAApB;AAAA,MACA,cAAcuC;AAAA,MACd,OAAOhC;AAAA,MACP,WAAWnC,IAAWiE,KAAgB;AAAA,MACtC,SAASjE,IAAWkE,KAAqB;AAAA,MAExC,UAAA;AAAA,QAAAjD,MACC,gBAAAqE;AAAA,UAAC3G;AAAA,UAAA;AAAA,YACC,aAAa,KAAKyD,CAAa;AAAA,YAC/B,YAAU;AAAA,YACV,MAAK;AAAA,YACL,WAAWmD,EAAW,wBAAwBC,EAAO,sBAAsB,CAAC;AAAA,YAC5E,OAAOzD;AAAA,YACP,UAAU,CAAC,MAAMC,EAAc,EAAE,OAAO,KAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAGhDP,IACC,gBAAA6D;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWC,EAAW,6BAA6BC,EAAO,2BAA2B,CAAC;AAAA,YAErF,UAAA/D;AAAA,UAAA;AAAA,QAAA,IAED;AAAA,QAEJ,gBAAA6D,EAAC,SAAI,WAAWC,EAAW,yBAAyBC,EAAO,uBAAuB,CAAC,GAChF,UAAAxC,sBACE,OAAA,EAAI,WAAWuC,EAAW,yBAAyBC,EAAO,uBAAuB,CAAC,GACjF,4BAACC,IAAA,EAAK,MAAK,SAAQ,GACrB,IACEzB,EAAgB,WAAW,sBAC5B,OAAA,EAAI,WAAWuB,EAAW,uBAAuBC,EAAO,qBAAqB,CAAC,GAC7E,4BAACE,IAAA,EAAM,UAAS,UAAS,aAAY,OAAA,CAAO,EAAA,CAC9C,IAEA,gBAAAN,EAAAO,IAAA,EACG,UAAA;AAAA,UAAA3F,KAAYgE,EAAgB,SAAS,KACpC,gBAAAoB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWG;AAAA,gBACT;AAAA,gBACAC,EAAO,sBAAsB;AAAA,gBAC7B;AAAA,gBACAA,EAAO,0BAA0B;AAAA,cAAA;AAAA,cAEnC,SAAS,MAAMV,EAAgB,CAACF,CAAmB;AAAA,cAEnD,UAAA;AAAA,gBAAA,gBAAAU;AAAA,kBAACM;AAAA,kBAAA;AAAA,oBACC,SAAShB;AAAA,oBACT,eAAeC;AAAA,oBACf,UAAU,CAAC,MAAMC,EAAgB,EAAE,OAAO,OAAO;AAAA,oBACjD,SAAS,CAAC,MAAM,EAAE,gBAAA;AAAA,kBAAgB;AAAA,gBAAA;AAAA,gBAEpC,gBAAAQ,EAAC,UAAK,UAAA,KAAA,CAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGXtB,EAAgB,IAAI,CAAClF,MACpB,gBAAAsG;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAWG;AAAA,gBACT;AAAA,gBACAC,EAAO,sBAAsB;AAAA,gBAC7B,CAACxF,KACCkD,MAAepE,EAAI,SACnByG;AAAA,kBACE;AAAA,kBACAC,EAAO,+BAA+B;AAAA,gBAAA;AAAA,cACxC;AAAA,cAEJ,SAAS,MACPxF,IAAWwE,EAAkB1F,EAAI,KAAK,IAAIuF,GAAkBvF,EAAI,KAAK;AAAA,cAGtE,UAAA;AAAA,gBAAAkB,KACC,gBAAAsF;AAAA,kBAACM;AAAA,kBAAA;AAAA,oBACC,SAASlB,EAAc,KAAK,CAACjF,MAAM,OAAOA,CAAC,MAAM,OAAOX,EAAI,KAAK,CAAC;AAAA,oBAClE,UAAU,MAAM0F,EAAkB1F,EAAI,KAAK;AAAA,oBAC3C,SAAS,CAAC+G,MAAMA,EAAE,gBAAA;AAAA,kBAAgB;AAAA,gBAAA;AAAA,gBAGrCtF,sBACEuF,IAAA,EAAgB,QAAQhH,GAAqB,IAE9C,gBAAAwG,EAAC,QAAA,EAAM,UAAAxG,EAAI,MAAA,CAAM;AAAA,gBAElB,CAACkB,KAAY,CAACO,KAAmB2C,MAAepE,EAAI,SACnD,gBAAAwG;AAAA,kBAACS;AAAA,kBAAA;AAAA,oBACC,WAAWR;AAAA,sBACT;AAAA,sBACAC,EAAO,4BAA4B;AAAA,oBAAA;AAAA,kBACrC;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,YAjCG,OAAO1G,EAAI,KAAK;AAAA,UAAA,CAoCxB;AAAA,QAAA,EAAA,CACH,EAAA,CAEJ;AAAA,QAECkB,KAAY0E,EAAc,SAAS,KAClC,gBAAAU;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWG,EAAW,8BAA8BC,EAAO,4BAA4B,CAAC;AAAA,YAExF,UAAA;AAAA,cAAA,gBAAAF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWC;AAAA,oBACT;AAAA,oBACAC,EAAO,8BAA8B;AAAA,kBAAA;AAAA,kBAExC,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGD,gBAAAF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWC;AAAA,oBACT;AAAA,oBACAC,EAAO,6BAA6B;AAAA,kBAAA;AAAA,kBAGtC,UAAA,gBAAAF,EAACU,IAAA,EAAM,MAAM,CAAC,GAAG,CAAC,GAAG,MAAI,IACtB,UAAAtB,EAAc,IAAI,CAACjF,MAAM;AACxB,0BAAMX,IAAMwB,EAAQ,KAAK,CAACG,MAAM,OAAOA,EAAE,KAAK,MAAM,OAAOhB,CAAC,CAAC,GACvDwG,IAAe/E,KAAgB,QAAQwD,EAAc,SAASxD;AACpE,2BACE,gBAAAkE;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBAEC,WAAWG;AAAA,0BACT;AAAA,0BACAC,EAAO,4BAA4B;AAAA,0BACnC,CAACS,KAAgBT,EAAO,qCAAqC;AAAA,wBAAA;AAAA,wBAE/D,SAAS,MAAMS,KAAgBzB,EAAkB/E,CAAC;AAAA,wBAEjD,UAAA;AAAA,2BAAAX,KAAA,gBAAAA,EAAK,UAAS,OAAOW,CAAC;AAAA,0BACvB,gBAAA6F;AAAA,4BAACY;AAAA,4BAAA;AAAA,8BACC,WAAWX;AAAA,gCACT;AAAA,gCACAC,EAAO,+BAA+B;AAAA,gCACtC,CAACS,KAAgBT,EAAO,wCAAwC;AAAA,8BAAA;AAAA,4BAClE;AAAA,0BAAA;AAAA,wBACF;AAAA,sBAAA;AAAA,sBAfK,OAAO/F,CAAC;AAAA,oBAAA;AAAA,kBAkBnB,CAAC,EAAA,CACH;AAAA,gBAAA;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}