@servicetitan/anvil2 3.6.0 → 3.7.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 (215) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{AiMark-voHPSerQ.js → AiMark-DKAIkwNU.js} +2 -2
  3. package/dist/{AiMark-voHPSerQ.js.map → AiMark-DKAIkwNU.js.map} +1 -1
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-CPe0yh6A.js → Alert-tsu15fCc.js} +2 -2
  6. package/dist/Alert-tsu15fCc.js.map +1 -0
  7. package/dist/Alert.js +1 -1
  8. package/dist/Badge-BNrYBFiU.js.map +1 -1
  9. package/dist/{Breadcrumbs-VzOM2nBU.js → Breadcrumbs-CoqJO7Ca.js} +2 -2
  10. package/dist/{Breadcrumbs-VzOM2nBU.js.map → Breadcrumbs-CoqJO7Ca.js.map} +1 -1
  11. package/dist/Breadcrumbs.js +1 -1
  12. package/dist/{Calendar-MRUB0XU7.js → Calendar-Csw2CkqE.js} +2 -2
  13. package/dist/{Calendar-MRUB0XU7.js.map → Calendar-Csw2CkqE.js.map} +1 -1
  14. package/dist/{Calendar-CekTYzdT.js → Calendar-DnwCL7gm.js} +2 -2
  15. package/dist/{Calendar-CekTYzdT.js.map → Calendar-DnwCL7gm.js.map} +1 -1
  16. package/dist/Calendar.js +2 -2
  17. package/dist/Card-Bt0F6RTq.js.map +1 -1
  18. package/dist/{Checkbox-C3rtd-Xe.js → Checkbox-Cmn1o3Ta.js} +3 -3
  19. package/dist/{Checkbox-C3rtd-Xe.js.map → Checkbox-Cmn1o3Ta.js.map} +1 -1
  20. package/dist/{Checkbox-zz9TyZWn.js → Checkbox-DGU3JwZA.js} +2 -2
  21. package/dist/Checkbox-DGU3JwZA.js.map +1 -0
  22. package/dist/Checkbox.js +1 -1
  23. package/dist/{Chip-CxgryK86.js → Chip-BsGckplA.js} +2 -2
  24. package/dist/{Chip-CxgryK86.js.map → Chip-BsGckplA.js.map} +1 -1
  25. package/dist/Chip.js +1 -1
  26. package/dist/Combobox.js +1 -1
  27. package/dist/{DataTable-BpqLvU92.js → DataTable-BLK4-7QQ.js} +7 -7
  28. package/dist/{DataTable-BpqLvU92.js.map → DataTable-BLK4-7QQ.js.map} +1 -1
  29. package/dist/{DateFieldRange-CP7QgS6P.js → DateFieldRange-BnNrQvuG.js} +4 -4
  30. package/dist/{DateFieldRange-CP7QgS6P.js.map → DateFieldRange-BnNrQvuG.js.map} +1 -1
  31. package/dist/DateFieldRange.js +1 -1
  32. package/dist/{DateFieldSingle-CgMPTi1v.js → DateFieldSingle-CwcV_AOp.js} +4 -4
  33. package/dist/{DateFieldSingle-CgMPTi1v.js.map → DateFieldSingle-CwcV_AOp.js.map} +1 -1
  34. package/dist/DateFieldSingle.js +1 -1
  35. package/dist/{DateFieldYearless-DYjvqxRb.js → DateFieldYearless-HntvaWSJ.js} +4 -4
  36. package/dist/{DateFieldYearless-DYjvqxRb.js.map → DateFieldYearless-HntvaWSJ.js.map} +1 -1
  37. package/dist/DateFieldYearless.js +1 -1
  38. package/dist/{DateFieldYearlessRange-lQdJGOaS.js → DateFieldYearlessRange-BPvJvBob.js} +3 -3
  39. package/dist/{DateFieldYearlessRange-lQdJGOaS.js.map → DateFieldYearlessRange-BPvJvBob.js.map} +1 -1
  40. package/dist/DateFieldYearlessRange.js +1 -1
  41. package/dist/{DaysOfTheWeek-Ci-SKebP.js → DaysOfTheWeek-4Cd2WK7u.js} +2 -2
  42. package/dist/{DaysOfTheWeek-Ci-SKebP.js.map → DaysOfTheWeek-4Cd2WK7u.js.map} +1 -1
  43. package/dist/DaysOfTheWeek.js +1 -1
  44. package/dist/{Dialog-BxulNN8n.js → Dialog-CE2fxzJR.js} +4 -4
  45. package/dist/{Dialog-BxulNN8n.js.map → Dialog-CE2fxzJR.js.map} +1 -1
  46. package/dist/Dialog.js +1 -1
  47. package/dist/{Drawer-_spmOgwH.js → Drawer-CWLwXp1D.js} +4 -4
  48. package/dist/{Drawer-_spmOgwH.js.map → Drawer-CWLwXp1D.js.map} +1 -1
  49. package/dist/Drawer.js +1 -1
  50. package/dist/DrillDown.js +1 -1
  51. package/dist/{EditCard-ZpF032WP.js → EditCard-DqFAx5cl.js} +2 -2
  52. package/dist/{EditCard-ZpF032WP.js.map → EditCard-DqFAx5cl.js.map} +1 -1
  53. package/dist/EditCard.js +1 -1
  54. package/dist/{FieldLabel-Cm5A1Jcx.js → FieldLabel-v6vMVVWB.js} +2 -2
  55. package/dist/{FieldLabel-Cm5A1Jcx.js.map → FieldLabel-v6vMVVWB.js.map} +1 -1
  56. package/dist/FieldLabel.js +1 -1
  57. package/dist/{FilterBar-CvyMubuw.js → FilterBar-Ce22r7lY.js} +4 -4
  58. package/dist/{FilterBar-CvyMubuw.js.map → FilterBar-Ce22r7lY.js.map} +1 -1
  59. package/dist/FilterBar.js +1 -1
  60. package/dist/Grid-ho1pGJ5L.js.map +1 -1
  61. package/dist/{InputMask-CX6XiOOm.js → InputMask-DnbZnynw.js} +3 -3
  62. package/dist/{InputMask-CX6XiOOm.js.map → InputMask-DnbZnynw.js.map} +1 -1
  63. package/dist/InputMask.js +1 -1
  64. package/dist/{ListView-DpveXOsN.js → ListView-Dy4m0aQb.js} +2 -2
  65. package/dist/{ListView-DpveXOsN.js.map → ListView-Dy4m0aQb.js.map} +1 -1
  66. package/dist/ListView.js +1 -1
  67. package/dist/{Listbox-Cdwaofd2.js → Listbox-By-gyw1j.js} +2 -2
  68. package/dist/{Listbox-Cdwaofd2.js.map → Listbox-By-gyw1j.js.map} +1 -1
  69. package/dist/Listbox.js +1 -1
  70. package/dist/Menu-DmEXQLXt.js.map +1 -1
  71. package/dist/MultiSelectField.js +1 -1
  72. package/dist/{MultiSelectFieldSync-BHST0FEe.js → MultiSelectFieldSync-CGOAko_r.js} +60 -24
  73. package/dist/MultiSelectFieldSync-CGOAko_r.js.map +1 -0
  74. package/dist/MultiSelectMenu.js +1 -1
  75. package/dist/{MultiSelectMenuSync-BaKxbMLu.js → MultiSelectMenuSync-DTRWdqGg.js} +49 -23
  76. package/dist/MultiSelectMenuSync-DTRWdqGg.js.map +1 -0
  77. package/dist/{NumberField-CjC6KHKl.js → NumberField-BuAlvtg_.js} +3 -3
  78. package/dist/{NumberField-CjC6KHKl.js.map → NumberField-BuAlvtg_.js.map} +1 -1
  79. package/dist/NumberField.js +1 -1
  80. package/dist/{Page-BreBQ3pG.js → Page-DBKu3XYh.js} +8 -8
  81. package/dist/{Page-BreBQ3pG.js.map → Page-DBKu3XYh.js.map} +1 -1
  82. package/dist/Page.js +1 -1
  83. package/dist/{Pagination-CmqAut6y.js → Pagination-Ceh0uZhU.js} +2 -2
  84. package/dist/{Pagination-CmqAut6y.js.map → Pagination-Ceh0uZhU.js.map} +1 -1
  85. package/dist/Pagination.js +1 -1
  86. package/dist/{Popover-CdRuNv3C.js → Popover-hQKMGTiJ.js} +2 -2
  87. package/dist/{Popover-CdRuNv3C.js.map → Popover-hQKMGTiJ.js.map} +1 -1
  88. package/dist/Popover.js +1 -1
  89. package/dist/{ProgressBar-065vjsQ0.js → ProgressBar-CFdDZFV9.js} +2 -2
  90. package/dist/{ProgressBar-065vjsQ0.js.map → ProgressBar-CFdDZFV9.js.map} +1 -1
  91. package/dist/ProgressBar.js +1 -1
  92. package/dist/{Radio-dyLcVmUw.js → Radio-ARjSflvI.js} +3 -3
  93. package/dist/{Radio-dyLcVmUw.js.map → Radio-ARjSflvI.js.map} +1 -1
  94. package/dist/{Radio-D9w_-JYw.js → Radio-Dey7KUCQ.js} +2 -2
  95. package/dist/Radio-Dey7KUCQ.js.map +1 -0
  96. package/dist/Radio.js +1 -1
  97. package/dist/{RichTextEditor-byoMZaJy.js → RichTextEditor-B4ZPAevY.js} +8 -8
  98. package/dist/{RichTextEditor-byoMZaJy.js.map → RichTextEditor-B4ZPAevY.js.map} +1 -1
  99. package/dist/RichTextEditor.js +1 -1
  100. package/dist/{SavedFiltersButton-DlzfvW03.js → SavedFiltersButton-DPISXV2b.js} +9 -9
  101. package/dist/{SavedFiltersButton-DlzfvW03.js.map → SavedFiltersButton-DPISXV2b.js.map} +1 -1
  102. package/dist/SavedFiltersButton.js +1 -1
  103. package/dist/SearchField-B7fIOJf-.js.map +1 -1
  104. package/dist/SegmentedControl-Be6jCglV.js.map +1 -1
  105. package/dist/{SelectCard-CMSG_ba1.js → SelectCard-DtEUPxgj.js} +3 -3
  106. package/dist/{SelectCard-CMSG_ba1.js.map → SelectCard-DtEUPxgj.js.map} +1 -1
  107. package/dist/SelectCard.js +1 -1
  108. package/dist/SelectField.js +1 -1
  109. package/dist/{SelectFieldLabel-dKVBaki2.js → SelectFieldLabel-DB3o9bDD.js} +2 -2
  110. package/dist/{SelectFieldLabel-dKVBaki2.js.map → SelectFieldLabel-DB3o9bDD.js.map} +1 -1
  111. package/dist/{SelectFieldSync-BqL3zlbZ.js → SelectFieldSync-B5r-wl1D.js} +15 -7
  112. package/dist/SelectFieldSync-B5r-wl1D.js.map +1 -0
  113. package/dist/SelectMenu.js +1 -1
  114. package/dist/{SelectMenuSync-BRvi9YTw.js → SelectMenuSync-CqKMKaWt.js} +9 -5
  115. package/dist/SelectMenuSync-CqKMKaWt.js.map +1 -0
  116. package/dist/{SelectOptions-LUHWLYgJ.js → SelectOptions-VVJ4D-0C.js} +2 -2
  117. package/dist/{SelectOptions-LUHWLYgJ.js.map → SelectOptions-VVJ4D-0C.js.map} +1 -1
  118. package/dist/{SelectTrigger-APxYfL3V.js → SelectTrigger-TRI2LhJR.js} +2 -2
  119. package/dist/{SelectTrigger-APxYfL3V.js.map → SelectTrigger-TRI2LhJR.js.map} +1 -1
  120. package/dist/SelectTrigger.js +1 -1
  121. package/dist/{SelectTriggerBase-lYieONTb.js → SelectTriggerBase-D1nOad4B.js} +3 -3
  122. package/dist/{SelectTriggerBase-lYieONTb.js.map → SelectTriggerBase-D1nOad4B.js.map} +1 -1
  123. package/dist/{Switch-Bm3qqjd6.js → Switch-ClbHJvDU.js} +2 -2
  124. package/dist/{Switch-Bm3qqjd6.js.map → Switch-ClbHJvDU.js.map} +1 -1
  125. package/dist/Switch.js +1 -1
  126. package/dist/Tab-Cy4G562A.js.map +1 -1
  127. package/dist/Table.js +1 -1
  128. package/dist/{Text-mDcQHC2U.js → Text-BjYHzUGW.js} +2 -2
  129. package/dist/{Text-mDcQHC2U.js.map → Text-BjYHzUGW.js.map} +1 -1
  130. package/dist/Text.js +1 -1
  131. package/dist/{TextField-WQTlqKso.js → TextField-BsVxym0-.js} +2 -2
  132. package/dist/{TextField-WQTlqKso.js.map → TextField-BsVxym0-.js.map} +1 -1
  133. package/dist/{TextField-CUVsDfWo.js → TextField-DX6-K3jO.js} +3 -3
  134. package/dist/{TextField-CUVsDfWo.js.map → TextField-DX6-K3jO.js.map} +1 -1
  135. package/dist/TextField.js +1 -1
  136. package/dist/{Textarea-CW3KGuB9.js → Textarea-B3z6Y7VU.js} +3 -3
  137. package/dist/Textarea-B3z6Y7VU.js.map +1 -0
  138. package/dist/Textarea.js +1 -1
  139. package/dist/{TimeField-JA3gXyS7.js → TimeField-Bmcwic3C.js} +4 -4
  140. package/dist/{TimeField-JA3gXyS7.js.map → TimeField-Bmcwic3C.js.map} +1 -1
  141. package/dist/TimeField.js +1 -1
  142. package/dist/Toast.js +2 -2
  143. package/dist/{Toaster-fPcgIF7Q.js → Toaster-CTjkTMie.js} +2 -2
  144. package/dist/{Toaster-fPcgIF7Q.js.map → Toaster-CTjkTMie.js.map} +1 -1
  145. package/dist/{Toaster-DMZng3Im.js → Toaster-CvY-A7zY.js} +3 -3
  146. package/dist/{Toaster-DMZng3Im.js.map → Toaster-CvY-A7zY.js.map} +1 -1
  147. package/dist/{Toolbar-BfGcDXgC.js → Toolbar-BpCO-4zj.js} +3 -3
  148. package/dist/{Toolbar-BfGcDXgC.js.map → Toolbar-BpCO-4zj.js.map} +1 -1
  149. package/dist/{Toolbar-Dlu39v69.js → Toolbar-pdJXcqY0.js} +3 -3
  150. package/dist/{Toolbar-Dlu39v69.js.map → Toolbar-pdJXcqY0.js.map} +1 -1
  151. package/dist/Toolbar.js +1 -1
  152. package/dist/TreeSelectField.js +1 -1
  153. package/dist/{TreeSelectFieldSync-CdtC8d3Q.js → TreeSelectFieldSync-Cz8uOdpT.js} +5 -5
  154. package/dist/{TreeSelectFieldSync-CdtC8d3Q.js.map → TreeSelectFieldSync-Cz8uOdpT.js.map} +1 -1
  155. package/dist/TreeSelectMenu.js +1 -1
  156. package/dist/{TreeSelectMenuSync-CPuQWUNU.js → TreeSelectMenuSync-Bk8BN6_B.js} +3 -3
  157. package/dist/{TreeSelectMenuSync-CPuQWUNU.js.map → TreeSelectMenuSync-Bk8BN6_B.js.map} +1 -1
  158. package/dist/{TypeaheadTextField-BkLECKZY.js → TypeaheadTextField-Dg7O5Yu5.js} +3 -3
  159. package/dist/{TypeaheadTextField-BkLECKZY.js.map → TypeaheadTextField-Dg7O5Yu5.js.map} +1 -1
  160. package/dist/TypeaheadTextField.js +1 -1
  161. package/dist/{YearlessDateInputWithPicker-Bd8JnTaZ.js → YearlessDateInputWithPicker-CpnLg01W.js} +2 -2
  162. package/dist/{YearlessDateInputWithPicker-Bd8JnTaZ.js.map → YearlessDateInputWithPicker-CpnLg01W.js.map} +1 -1
  163. package/dist/beta.js +15 -15
  164. package/dist/{bulkActionTypes-DPC382hi.js → bulkActionTypes-B20IInUD.js} +7 -3
  165. package/dist/{bulkActionTypes-DPC382hi.js.map → bulkActionTypes-B20IInUD.js.map} +1 -1
  166. package/dist/{filter-state-BdfBSXYO.js → filter-state-CuiHPC94.js} +26 -30
  167. package/dist/filter-state-CuiHPC94.js.map +1 -0
  168. package/dist/{index-B7BIlotN.js → index-B12T0Vxa.js} +2 -2
  169. package/dist/{index-B7BIlotN.js.map → index-B12T0Vxa.js.map} +1 -1
  170. package/dist/index.js +40 -40
  171. package/dist/src/components/Alert/Alert.d.ts +1 -1
  172. package/dist/src/components/Badge/Badge.d.ts +1 -1
  173. package/dist/src/components/Card/Card.d.ts +1 -1
  174. package/dist/src/components/Checkbox/Checkbox.d.ts +1 -1
  175. package/dist/src/components/DrillDown/DrillDown.d.ts +1 -1
  176. package/dist/src/components/Grid/Grid.d.ts +1 -1
  177. package/dist/src/components/Listbox/Listbox.d.ts +1 -1
  178. package/dist/src/components/Menu/Menu.d.ts +1 -1
  179. package/dist/src/components/MultiSelectField/MultiSelectField.d.ts +1 -1
  180. package/dist/src/components/Pagination/Pagination.d.ts +1 -1
  181. package/dist/src/components/Radio/Radio.d.ts +1 -1
  182. package/dist/src/components/SearchField/SearchField.d.ts +1 -1
  183. package/dist/src/components/SegmentedControl/SegmentedControl.d.ts +1 -1
  184. package/dist/src/components/Tab/Tab.d.ts +1 -1
  185. package/dist/src/components/Textarea/Textarea.d.ts +1 -1
  186. package/dist/src/internal/components/AddNewItemButton.d.ts +2 -1
  187. package/dist/src/internal/types/addNewItemTypes.d.ts +17 -2
  188. package/dist/src/internal/types/bulkActionTypes.d.ts +12 -2
  189. package/dist/{stripInlineMarkdown-BZzgG-Zm.js → stripInlineMarkdown-C-3FEh_E.js} +2 -2
  190. package/dist/{stripInlineMarkdown-BZzgG-Zm.js.map → stripInlineMarkdown-C-3FEh_E.js.map} +1 -1
  191. package/dist/{syncFilterUtils-Cec5y3hY.js → syncFilterUtils-CU5iJQSC.js} +16 -5
  192. package/dist/syncFilterUtils-CU5iJQSC.js.map +1 -0
  193. package/dist/{treeSync-oC-VZpP0.js → treeSync-CUf4vwDm.js} +3 -3
  194. package/dist/{treeSync-oC-VZpP0.js.map → treeSync-CUf4vwDm.js.map} +1 -1
  195. package/dist/{useAdaptiveView-AvsDkChF.js → useAdaptiveView-C0F7qnLD.js} +4 -4
  196. package/dist/{useAdaptiveView-AvsDkChF.js.map → useAdaptiveView-C0F7qnLD.js.map} +1 -1
  197. package/dist/{useDrilldown-PmrZ4BXn.js → useDrilldown-CCsr0_3L.js} +3 -3
  198. package/dist/{useDrilldown-PmrZ4BXn.js.map → useDrilldown-CCsr0_3L.js.map} +1 -1
  199. package/dist/{useInfiniteCombobox-C78WQZx4.js → useInfiniteCombobox-HSttRaX5.js} +4 -4
  200. package/dist/{useInfiniteCombobox-C78WQZx4.js.map → useInfiniteCombobox-HSttRaX5.js.map} +1 -1
  201. package/dist/{useInitialFocus-BUxEDMEG.js → useInitialFocus-BIvXK1Rp.js} +2 -2
  202. package/dist/{useInitialFocus-BUxEDMEG.js.map → useInitialFocus-BIvXK1Rp.js.map} +1 -1
  203. package/dist/{usePopoverTransitionStates-CDXCdyKa.js → usePopoverTransitionStates-B1opfxxn.js} +1 -2
  204. package/dist/{usePopoverTransitionStates-CDXCdyKa.js.map → usePopoverTransitionStates-B1opfxxn.js.map} +1 -1
  205. package/package.json +3 -3
  206. package/dist/Alert-CPe0yh6A.js.map +0 -1
  207. package/dist/Checkbox-zz9TyZWn.js.map +0 -1
  208. package/dist/MultiSelectFieldSync-BHST0FEe.js.map +0 -1
  209. package/dist/MultiSelectMenuSync-BaKxbMLu.js.map +0 -1
  210. package/dist/Radio-D9w_-JYw.js.map +0 -1
  211. package/dist/SelectFieldSync-BqL3zlbZ.js.map +0 -1
  212. package/dist/SelectMenuSync-BRvi9YTw.js.map +0 -1
  213. package/dist/Textarea-CW3KGuB9.js.map +0 -1
  214. package/dist/filter-state-BdfBSXYO.js.map +0 -1
  215. package/dist/syncFilterUtils-Cec5y3hY.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"bulkActionTypes-DPC382hi.js","sources":["../src/internal/hooks/useBulkActionRunner.ts","../src/internal/components/MultiSelectOptions.tsx","../src/internal/hooks/useToggleSelection.ts","../src/internal/types/bulkActionTypes.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\ntype BulkComputeResult<T> = T[] | Promise<T[]>;\n\nexport type UseBulkActionRunnerOptions<T> = {\n /** Sets the draft (or commits when confirmation is off). */\n setDraft: (next: T[]) => void;\n};\n\nexport type UseBulkActionRunnerResult<T> = {\n /**\n * True while a bulk-action promise is in flight. While true, callers should\n * disable option rows, override the bulk row's checkState to \"loading\", and\n * disable Apply.\n */\n pending: boolean;\n /**\n * Run a bulk action. If `compute` returns an array synchronously, the draft\n * is updated immediately. If it returns a promise, the runner enters the\n * pending state until resolve/reject. Stale resolutions (those that finish\n * after another draft mutation or another bulk run, or after `reset()`) are\n * silently discarded.\n */\n runBulk: (\n compute: (current: T[]) => BulkComputeResult<T>,\n current: T[],\n ) => void;\n /**\n * Wrap an external draft mutation so that any in-flight bulk promise's\n * eventual resolution is discarded. Use this in place of the raw setDraft\n * whenever the user mutates the draft outside of a bulk action (option\n * click, etc.) so that a slow Select-All-fetching promise can't clobber a\n * subsequent click.\n */\n setDraftAndBump: (next: T[]) => void;\n /**\n * Discard any in-flight bulk resolution. Call when the menu closes so that\n * a promise resolving after close can't apply to the next menu instance.\n */\n reset: () => void;\n};\n\n/**\n * Runs Select-All / Select-Filtered-style \"bulk action\" computations against\n * the controlled or draft selection, with support for both synchronous and\n * asynchronous results, and stale-result discard via a monotonic generation.\n */\nexport function useBulkActionRunner<T>({\n setDraft,\n}: UseBulkActionRunnerOptions<T>): UseBulkActionRunnerResult<T> {\n const [pending, setPending] = useState(false);\n const genRef = useRef(0);\n const isMountedRef = useRef(true);\n\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n const runBulk = useCallback(\n (compute: (current: T[]) => BulkComputeResult<T>, current: T[]) => {\n const result = compute(current);\n\n // Bumping the generation here means any earlier in-flight promise's\n // eventual resolution will be discarded.\n genRef.current += 1;\n const myGen = genRef.current;\n\n if (Array.isArray(result)) {\n setDraft(result);\n // If a previous async run was pending, it has now been superseded.\n if (pending) setPending(false);\n return;\n }\n\n setPending(true);\n result\n .then((next) => {\n if (!isMountedRef.current) return;\n if (genRef.current !== myGen) return; // stale\n setDraft(next);\n setPending(false);\n })\n .catch(() => {\n if (!isMountedRef.current) return;\n if (genRef.current !== myGen) return; // stale\n // Silent failure — consumer manages their own error UI.\n setPending(false);\n });\n },\n [pending, setDraft],\n );\n\n const setDraftAndBump = useCallback(\n (next: T[]) => {\n genRef.current += 1;\n setDraft(next);\n },\n [setDraft],\n );\n\n const reset = useCallback(() => {\n genRef.current += 1;\n setPending(false);\n }, []);\n\n return { pending, runBulk, setDraftAndBump, reset };\n}\n","import { MultiSelectFieldOption } from \"../../components/MultiSelectField/types\";\nimport { CheckState } from \"../../types\";\nimport { CSSProperties, forwardRef, useCallback, useMemo } from \"react\";\nimport { OptionsPanel, OptionsPanelHandle } from \"./OptionsPanel\";\nimport { VirtualizedOptionsPanel } from \"./VirtualizedOptionsPanel\";\nimport {\n GetItemPropsFn,\n GetMenuPropsFn,\n SectionMeta,\n SelectItem,\n} from \"../types/selectFieldInternalTypes\";\n\nexport type MultiSelectOptionsProps = {\n isOpen: boolean;\n items: SelectItem[];\n getMenuProps: GetMenuPropsFn;\n getItemProps: GetItemPropsFn;\n highlightedIndex: number;\n selectedOptions: MultiSelectFieldOption[];\n hasMore: boolean;\n onLoadMore: () => void;\n loading: boolean;\n loadingMore: boolean;\n disableAutoLoadMore?: boolean;\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n sectionsMeta?: SectionMeta[];\n virtualize?: boolean;\n};\n\nexport const MultiSelectOptions = forwardRef<\n OptionsPanelHandle,\n MultiSelectOptionsProps\n>(({ selectedOptions, items, virtualize, ...rest }, ref) => {\n const selectedIds = useMemo(\n () => new Set(selectedOptions.map((opt) => opt.id)),\n [selectedOptions],\n );\n\n const getCheckedState = useCallback(\n (item: SelectItem): CheckState => {\n if (item.type === \"select-all\" || item.type === \"select-filtered\") {\n return item.checkState ?? \"indeterminate\";\n }\n const checkId =\n item.type === \"pinned-option\" ? item.original.id : item.id;\n return selectedIds.has(checkId) ? \"checked\" : \"unchecked\";\n },\n [selectedIds],\n );\n\n const ListComponent = virtualize ? VirtualizedOptionsPanel : OptionsPanel;\n\n return (\n <ListComponent\n {...rest}\n ref={ref}\n items={items}\n selectionType=\"multiple\"\n getCheckedState={getCheckedState}\n />\n );\n});\n\nMultiSelectOptions.displayName = \"MultiSelectOptions\";\n","import { useCallback, useMemo } from \"react\";\nimport { SelectFieldOption } from \"../../components/SelectField/types\";\nimport { NormalizedPinnedSection } from \"./usePinnedOptions\";\n\ntype UseToggleSelectionParams = {\n options: SelectFieldOption[];\n pinnedSections: NormalizedPinnedSection[];\n selectedOptions: SelectFieldOption[];\n onSelectedOptionsChange: (options: SelectFieldOption[]) => void;\n};\n\n/**\n * Shared multi-select toggle logic: computes allPinnedOptions and provides\n * handleItemClick to add/remove an option from the selection.\n * Used by both useComboMultiple and useSelectModeMultiple.\n */\nexport const useToggleSelection = ({\n options,\n pinnedSections,\n selectedOptions,\n onSelectedOptionsChange,\n}: UseToggleSelectionParams) => {\n const allPinnedOptions = useMemo(() => {\n return pinnedSections.flatMap((section) => section.options);\n }, [pinnedSections]);\n\n const handleItemClick = useCallback(\n (option: { id: string | number; label: string }) => {\n const isSelected = selectedOptions.some((opt) => opt.id === option.id);\n if (isSelected) {\n onSelectedOptionsChange(\n selectedOptions.filter((opt) => opt.id !== option.id),\n );\n } else {\n const fullOption =\n options.find((opt) => opt.id === option.id) ||\n allPinnedOptions.find((opt) => opt.id === option.id);\n if (fullOption) {\n onSelectedOptionsChange([...selectedOptions, fullOption]);\n }\n }\n },\n [selectedOptions, onSelectedOptionsChange, options, allPinnedOptions],\n );\n\n return { handleItemClick, allPinnedOptions };\n};\n","import { CheckState } from \"../../types\";\nimport { SelectFieldOption } from \"../../components/SelectField/types\";\n\n/**\n * The check state of a \"Select All\" / \"Select Filtered\" row.\n *\n * Accepts a static value (`boolean` shorthand or a full `CheckState`) or a\n * function that derives the state from the current selection. The function\n * form is resolved against the live selection (the confirmation draft when\n * confirmation is enabled, otherwise the committed value), so the row's\n * checkbox can reflect how much of the set is currently selected — e.g.\n * `checked` when everything is selected, `indeterminate` when some is, and\n * `unchecked` when none is. This is the async equivalent of the automatic\n * check-state behavior the `*Sync` variants provide.\n */\nexport type BulkActionCheckState =\n | boolean\n | CheckState\n | ((current: SelectFieldOption[]) => boolean | CheckState);\n\n/**\n * Configuration for the \"Select All\" / \"Select Filtered\" rows in a\n * MultiSelectMenu or MultiSelectField.\n *\n * Choose exactly one of `onClick` or `compute`:\n *\n * - **`onClick`** — the row fires the callback; the consumer commits the next\n * selection themselves via `onSelectedOptionsChange`. Simple and familiar.\n * When `confirmation` is enabled, `onClick` bypasses the menu's draft layer\n * (the menu warns once in development).\n * - **`compute`** — the menu invokes `compute(currentDraft)` and writes the\n * result into the draft (or commits it, when confirmation is off). `compute`\n * may return a `Promise<SelectFieldOption[]>`; while the promise is pending\n * the menu shows a loading state, disables all option rows, and disables\n * Apply.\n *\n * `checkState` accepts a static value (a `boolean` shorthand or a full\n * `CheckState`) or a function that derives the state from the current\n * selection, so the row's checkbox can reflect how much of the set is selected.\n */\nexport type BulkActionConfig =\n | {\n label?: string;\n checkState: BulkActionCheckState;\n onClick: () => void;\n compute?: never;\n }\n | {\n label?: string;\n checkState: BulkActionCheckState;\n compute: (\n current: SelectFieldOption[],\n ) => SelectFieldOption[] | Promise<SelectFieldOption[]>;\n onClick?: never;\n };\n\n/**\n * Normalized form used internally after `checkState`'s `boolean` shorthand has\n * been resolved to a `CheckState`.\n */\nexport type ResolvedBulkAction = {\n label?: string;\n checkState: CheckState;\n onClick?: () => void;\n compute?: (\n current: SelectFieldOption[],\n ) => SelectFieldOption[] | Promise<SelectFieldOption[]>;\n};\n\n/**\n * Resolves a `BulkActionCheckState` into a concrete `CheckState`.\n *\n * When `checkState` is a function it is invoked with the current selection.\n * The `boolean` shorthand maps `true → \"checked\"` and `false → \"unchecked\"`;\n * a `CheckState` is passed through, defaulting to `\"indeterminate\"`.\n */\nexport function resolveBulkActionCheckState(\n checkState: BulkActionCheckState,\n current: SelectFieldOption[],\n): CheckState {\n const value =\n typeof checkState === \"function\" ? checkState(current) : checkState;\n return value === true\n ? \"checked\"\n : value === false\n ? \"unchecked\"\n : (value ?? \"indeterminate\");\n}\n"],"names":[],"mappings":";;;;AA+CO,SAAS,mBAAA,CAAuB;AAAA,EACrC;AACF,CAAA,EAAgE;AAC9D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,MAAA,GAAS,OAAO,CAAC,CAAA;AACvB,EAAA,MAAM,YAAA,GAAe,OAAO,IAAI,CAAA;AAEhC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,OAAA,GAAU,KAAA;AAAA,IACzB,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,OAAA,GAAU,WAAA;AAAA,IACd,CAAC,SAAiD,OAAA,KAAiB;AACjE,MAAA,MAAM,MAAA,GAAS,QAAQ,OAAO,CAAA;AAI9B,MAAA,MAAA,CAAO,OAAA,IAAW,CAAA;AAClB,MAAA,MAAM,QAAQ,MAAA,CAAO,OAAA;AAErB,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AACzB,QAAA,QAAA,CAAS,MAAM,CAAA;AAEf,QAAA,IAAI,OAAA,aAAoB,KAAK,CAAA;AAC7B,QAAA;AAAA,MACF;AAEA,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,MAAA,CACG,IAAA,CAAK,CAAC,IAAA,KAAS;AACd,QAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAC3B,QAAA,IAAI,MAAA,CAAO,YAAY,KAAA,EAAO;AAC9B,QAAA,QAAA,CAAS,IAAI,CAAA;AACb,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AACX,QAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAC3B,QAAA,IAAI,MAAA,CAAO,YAAY,KAAA,EAAO;AAE9B,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB,CAAC,CAAA;AAAA,IACL,CAAA;AAAA,IACA,CAAC,SAAS,QAAQ;AAAA,GACpB;AAEA,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,IAAA,KAAc;AACb,MAAA,MAAA,CAAO,OAAA,IAAW,CAAA;AAClB,MAAA,QAAA,CAAS,IAAI,CAAA;AAAA,IACf,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,MAAA,CAAO,OAAA,IAAW,CAAA;AAClB,IAAA,UAAA,CAAW,KAAK,CAAA;AAAA,EAClB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAE,OAAA,EAAS,OAAA,EAAS,eAAA,EAAiB,KAAA,EAAM;AACpD;;AC7EO,MAAM,kBAAA,GAAqB,UAAA,CAGhC,CAAC,EAAE,eAAA,EAAiB,OAAO,UAAA,EAAY,GAAG,IAAA,EAAK,EAAG,GAAA,KAAQ;AAC1D,EAAA,MAAM,WAAA,GAAc,OAAA;AAAA,IAClB,MAAM,IAAI,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAC,GAAA,KAAQ,GAAA,CAAI,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,eAAe;AAAA,GAClB;AAEA,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,IAAA,KAAiC;AAChC,MAAA,IAAI,IAAA,CAAK,IAAA,KAAS,YAAA,IAAgB,IAAA,CAAK,SAAS,iBAAA,EAAmB;AACjE,QAAA,OAAO,KAAK,UAAA,IAAc,eAAA;AAAA,MAC5B;AACA,MAAA,MAAM,UACJ,IAAA,CAAK,IAAA,KAAS,kBAAkB,IAAA,CAAK,QAAA,CAAS,KAAK,IAAA,CAAK,EAAA;AAC1D,MAAA,OAAO,WAAA,CAAY,GAAA,CAAI,OAAO,CAAA,GAAI,SAAA,GAAY,WAAA;AAAA,IAChD,CAAA;AAAA,IACA,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,MAAM,aAAA,GAAgB,aAAa,uBAAA,GAA0B,YAAA;AAE7D,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA,EAAc,UAAA;AAAA,MACd;AAAA;AAAA,GACF;AAEJ,CAAC;AAED,kBAAA,CAAmB,WAAA,GAAc,oBAAA;;ACjD1B,MAAM,qBAAqB,CAAC;AAAA,EACjC,OAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,KAAgC;AAC9B,EAAA,MAAM,gBAAA,GAAmB,QAAQ,MAAM;AACrC,IAAA,OAAO,cAAA,CAAe,OAAA,CAAQ,CAAC,OAAA,KAAY,QAAQ,OAAO,CAAA;AAAA,EAC5D,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,MAAA,KAAmD;AAClD,MAAA,MAAM,UAAA,GAAa,gBAAgB,IAAA,CAAK,CAAC,QAAQ,GAAA,CAAI,EAAA,KAAO,OAAO,EAAE,CAAA;AACrE,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,uBAAA;AAAA,UACE,gBAAgB,MAAA,CAAO,CAAC,QAAQ,GAAA,CAAI,EAAA,KAAO,OAAO,EAAE;AAAA,SACtD;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAM,aACJ,OAAA,CAAQ,IAAA,CAAK,CAAC,GAAA,KAAQ,IAAI,EAAA,KAAO,MAAA,CAAO,EAAE,CAAA,IAC1C,iBAAiB,IAAA,CAAK,CAAC,QAAQ,GAAA,CAAI,EAAA,KAAO,OAAO,EAAE,CAAA;AACrD,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,uBAAA,CAAwB,CAAC,GAAG,eAAA,EAAiB,UAAU,CAAC,CAAA;AAAA,QAC1D;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,eAAA,EAAiB,uBAAA,EAAyB,OAAA,EAAS,gBAAgB;AAAA,GACtE;AAEA,EAAA,OAAO,EAAE,iBAAiB,gBAAA,EAAiB;AAC7C;;AC8BO,SAAS,2BAAA,CACd,YACA,OAAA,EACY;AACZ,EAAA,MAAM,QACJ,OAAO,UAAA,KAAe,UAAA,GAAa,UAAA,CAAW,OAAO,CAAA,GAAI,UAAA;AAC3D,EAAA,OAAO,UAAU,IAAA,GACb,SAAA,GACA,KAAA,KAAU,KAAA,GACR,cACC,KAAA,IAAS,eAAA;AAClB;;;;"}
1
+ {"version":3,"file":"bulkActionTypes-B20IInUD.js","sources":["../src/internal/hooks/useBulkActionRunner.ts","../src/internal/components/MultiSelectOptions.tsx","../src/internal/hooks/useToggleSelection.ts","../src/internal/types/bulkActionTypes.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\ntype BulkComputeResult<T> = T[] | Promise<T[]>;\n\nexport type UseBulkActionRunnerOptions<T> = {\n /** Sets the draft (or commits when confirmation is off). */\n setDraft: (next: T[]) => void;\n};\n\nexport type UseBulkActionRunnerResult<T> = {\n /**\n * True while a bulk-action promise is in flight. While true, callers should\n * disable option rows, override the bulk row's checkState to \"loading\", and\n * disable Apply.\n */\n pending: boolean;\n /**\n * Run a bulk action. If `compute` returns an array synchronously, the draft\n * is updated immediately. If it returns a promise, the runner enters the\n * pending state until resolve/reject. Stale resolutions (those that finish\n * after another draft mutation or another bulk run, or after `reset()`) are\n * silently discarded.\n */\n runBulk: (\n compute: (current: T[]) => BulkComputeResult<T>,\n current: T[],\n ) => void;\n /**\n * Wrap an external draft mutation so that any in-flight bulk promise's\n * eventual resolution is discarded. Use this in place of the raw setDraft\n * whenever the user mutates the draft outside of a bulk action (option\n * click, etc.) so that a slow Select-All-fetching promise can't clobber a\n * subsequent click.\n */\n setDraftAndBump: (next: T[]) => void;\n /**\n * Discard any in-flight bulk resolution. Call when the menu closes so that\n * a promise resolving after close can't apply to the next menu instance.\n */\n reset: () => void;\n};\n\n/**\n * Runs Select-All / Select-Filtered-style \"bulk action\" computations against\n * the controlled or draft selection, with support for both synchronous and\n * asynchronous results, and stale-result discard via a monotonic generation.\n */\nexport function useBulkActionRunner<T>({\n setDraft,\n}: UseBulkActionRunnerOptions<T>): UseBulkActionRunnerResult<T> {\n const [pending, setPending] = useState(false);\n const genRef = useRef(0);\n const isMountedRef = useRef(true);\n\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n const runBulk = useCallback(\n (compute: (current: T[]) => BulkComputeResult<T>, current: T[]) => {\n const result = compute(current);\n\n // Bumping the generation here means any earlier in-flight promise's\n // eventual resolution will be discarded.\n genRef.current += 1;\n const myGen = genRef.current;\n\n if (Array.isArray(result)) {\n setDraft(result);\n // If a previous async run was pending, it has now been superseded.\n if (pending) setPending(false);\n return;\n }\n\n setPending(true);\n result\n .then((next) => {\n if (!isMountedRef.current) return;\n if (genRef.current !== myGen) return; // stale\n setDraft(next);\n setPending(false);\n })\n .catch(() => {\n if (!isMountedRef.current) return;\n if (genRef.current !== myGen) return; // stale\n // Silent failure — consumer manages their own error UI.\n setPending(false);\n });\n },\n [pending, setDraft],\n );\n\n const setDraftAndBump = useCallback(\n (next: T[]) => {\n genRef.current += 1;\n setDraft(next);\n },\n [setDraft],\n );\n\n const reset = useCallback(() => {\n genRef.current += 1;\n setPending(false);\n }, []);\n\n return { pending, runBulk, setDraftAndBump, reset };\n}\n","import { MultiSelectFieldOption } from \"../../components/MultiSelectField/types\";\nimport { CheckState } from \"../../types\";\nimport { CSSProperties, forwardRef, useCallback, useMemo } from \"react\";\nimport { OptionsPanel, OptionsPanelHandle } from \"./OptionsPanel\";\nimport { VirtualizedOptionsPanel } from \"./VirtualizedOptionsPanel\";\nimport {\n GetItemPropsFn,\n GetMenuPropsFn,\n SectionMeta,\n SelectItem,\n} from \"../types/selectFieldInternalTypes\";\n\nexport type MultiSelectOptionsProps = {\n isOpen: boolean;\n items: SelectItem[];\n getMenuProps: GetMenuPropsFn;\n getItemProps: GetItemPropsFn;\n highlightedIndex: number;\n selectedOptions: MultiSelectFieldOption[];\n hasMore: boolean;\n onLoadMore: () => void;\n loading: boolean;\n loadingMore: boolean;\n disableAutoLoadMore?: boolean;\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n sectionsMeta?: SectionMeta[];\n virtualize?: boolean;\n};\n\nexport const MultiSelectOptions = forwardRef<\n OptionsPanelHandle,\n MultiSelectOptionsProps\n>(({ selectedOptions, items, virtualize, ...rest }, ref) => {\n const selectedIds = useMemo(\n () => new Set(selectedOptions.map((opt) => opt.id)),\n [selectedOptions],\n );\n\n const getCheckedState = useCallback(\n (item: SelectItem): CheckState => {\n if (item.type === \"select-all\" || item.type === \"select-filtered\") {\n return item.checkState ?? \"indeterminate\";\n }\n const checkId =\n item.type === \"pinned-option\" ? item.original.id : item.id;\n return selectedIds.has(checkId) ? \"checked\" : \"unchecked\";\n },\n [selectedIds],\n );\n\n const ListComponent = virtualize ? VirtualizedOptionsPanel : OptionsPanel;\n\n return (\n <ListComponent\n {...rest}\n ref={ref}\n items={items}\n selectionType=\"multiple\"\n getCheckedState={getCheckedState}\n />\n );\n});\n\nMultiSelectOptions.displayName = \"MultiSelectOptions\";\n","import { useCallback, useMemo } from \"react\";\nimport { SelectFieldOption } from \"../../components/SelectField/types\";\nimport { NormalizedPinnedSection } from \"./usePinnedOptions\";\n\ntype UseToggleSelectionParams = {\n options: SelectFieldOption[];\n pinnedSections: NormalizedPinnedSection[];\n selectedOptions: SelectFieldOption[];\n onSelectedOptionsChange: (options: SelectFieldOption[]) => void;\n};\n\n/**\n * Shared multi-select toggle logic: computes allPinnedOptions and provides\n * handleItemClick to add/remove an option from the selection.\n * Used by both useComboMultiple and useSelectModeMultiple.\n */\nexport const useToggleSelection = ({\n options,\n pinnedSections,\n selectedOptions,\n onSelectedOptionsChange,\n}: UseToggleSelectionParams) => {\n const allPinnedOptions = useMemo(() => {\n return pinnedSections.flatMap((section) => section.options);\n }, [pinnedSections]);\n\n const handleItemClick = useCallback(\n (option: { id: string | number; label: string }) => {\n const isSelected = selectedOptions.some((opt) => opt.id === option.id);\n if (isSelected) {\n onSelectedOptionsChange(\n selectedOptions.filter((opt) => opt.id !== option.id),\n );\n } else {\n const fullOption =\n options.find((opt) => opt.id === option.id) ||\n allPinnedOptions.find((opt) => opt.id === option.id);\n if (fullOption) {\n onSelectedOptionsChange([...selectedOptions, fullOption]);\n }\n }\n },\n [selectedOptions, onSelectedOptionsChange, options, allPinnedOptions],\n );\n\n return { handleItemClick, allPinnedOptions };\n};\n","import { CheckState } from \"../../types\";\nimport { SelectFieldOption } from \"../../components/SelectField/types\";\n\n/**\n * The check state of a \"Select All\" / \"Select Filtered\" row.\n *\n * Accepts a static value (`boolean` shorthand or a full `CheckState`) or a\n * function that derives the state from the current selection. The function\n * form is resolved against the live selection (the confirmation draft when\n * confirmation is enabled, otherwise the committed value), so the row's\n * checkbox can reflect how much of the set is currently selected — e.g.\n * `checked` when everything is selected, `indeterminate` when some is, and\n * `unchecked` when none is. This is the async equivalent of the automatic\n * check-state behavior the `*Sync` variants provide.\n */\nexport type BulkActionCheckState =\n | boolean\n | CheckState\n | ((current: SelectFieldOption[]) => boolean | CheckState);\n\n/**\n * Label for a \"Select All\" / \"Select Filtered\" row. A function form is\n * resolved against the live selection (the confirmation draft when\n * confirmation is enabled, otherwise the committed value).\n */\nexport type BulkActionLabel =\n string | ((current: SelectFieldOption[]) => string);\n\n/**\n * Configuration for the \"Select All\" / \"Select Filtered\" rows in a\n * MultiSelectMenu or MultiSelectField.\n *\n * Choose exactly one of `onClick` or `compute`:\n *\n * - **`onClick`** — the row fires the callback; the consumer commits the next\n * selection themselves via `onSelectedOptionsChange`. Simple and familiar.\n * When `confirmation` is enabled, `onClick` bypasses the menu's draft layer\n * (the menu warns once in development).\n * - **`compute`** — the menu invokes `compute(currentDraft)` and writes the\n * result into the draft (or commits it, when confirmation is off). `compute`\n * may return a `Promise<SelectFieldOption[]>`; while the promise is pending\n * the menu shows a loading state, disables all option rows, and disables\n * Apply.\n *\n * `checkState` accepts a static value (a `boolean` shorthand or a full\n * `CheckState`) or a function that derives the state from the current\n * selection, so the row's checkbox can reflect how much of the set is selected.\n */\nexport type BulkActionConfig =\n | {\n label?: BulkActionLabel;\n checkState: BulkActionCheckState;\n onClick: () => void;\n compute?: never;\n }\n | {\n label?: BulkActionLabel;\n checkState: BulkActionCheckState;\n compute: (\n current: SelectFieldOption[],\n ) => SelectFieldOption[] | Promise<SelectFieldOption[]>;\n onClick?: never;\n };\n\n/**\n * Normalized form used internally after `checkState`'s `boolean` shorthand has\n * been resolved to a `CheckState`.\n */\nexport type ResolvedBulkAction = {\n label?: string;\n checkState: CheckState;\n onClick?: () => void;\n compute?: (\n current: SelectFieldOption[],\n ) => SelectFieldOption[] | Promise<SelectFieldOption[]>;\n};\n\n/**\n * Resolves a `BulkActionCheckState` into a concrete `CheckState`.\n *\n * When `checkState` is a function it is invoked with the current selection.\n * The `boolean` shorthand maps `true → \"checked\"` and `false → \"unchecked\"`;\n * a `CheckState` is passed through, defaulting to `\"indeterminate\"`.\n */\nexport function resolveBulkActionCheckState(\n checkState: BulkActionCheckState,\n current: SelectFieldOption[],\n): CheckState {\n const value =\n typeof checkState === \"function\" ? checkState(current) : checkState;\n return value === true\n ? \"checked\"\n : value === false\n ? \"unchecked\"\n : (value ?? \"indeterminate\");\n}\n\n/**\n * Resolves a `BulkActionLabel` into a display string.\n */\nexport function resolveBulkActionLabel(\n label: BulkActionLabel | undefined,\n current: SelectFieldOption[],\n fallback = \"Select All\",\n): string {\n if (label === undefined) return fallback;\n return typeof label === \"function\" ? label(current) : label;\n}\n"],"names":[],"mappings":"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"}
@@ -1,38 +1,38 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useMemo, forwardRef, createElement, createContext, useRef, useId, useState, useContext, useEffect, useCallback } from 'react';
3
- import { C as Chip } from './Chip-CxgryK86.js';
3
+ import { C as Chip } from './Chip-BsGckplA.js';
4
4
  import { d as ToolbarItemWrapper, u as useToolbarSize, T as ToolbarButtonToggle, b as ToolbarContext, g as getToolbarElements, a as updateToolbarItemsTabIndex } from './ToolbarButtonToggle-3xbnm1Qr.js';
5
5
  import { S as SvgKeyboardArrowDown } from './keyboard_arrow_down-C8WQ38p1.js';
6
6
  import { S as SvgEvent, a as DateModeToFormatMap } from './TimezoneMessage-BrKB_psP.js';
7
7
  import { c as cx } from './index-De1g9FRV.js';
8
8
  import { B as Button } from './Button-BNzCI47m.js';
9
- import { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-BHST0FEe.js';
10
- import { M as MultiSelectMenu, a as MultiSelectMenuSync } from './MultiSelectMenuSync-BaKxbMLu.js';
11
- import { S as SelectField, a as SelectFieldSync } from './SelectFieldSync-BqL3zlbZ.js';
12
- import { S as SelectMenu, a as SelectMenuSync } from './SelectMenuSync-BRvi9YTw.js';
13
- import { T as TreeSelectField, a as TreeSelectFieldSync } from './TreeSelectFieldSync-CdtC8d3Q.js';
14
- import { a as TreeSelectMenu, T as TreeSelectMenuSync } from './TreeSelectMenuSync-CPuQWUNU.js';
15
- import { C as Checkbox } from './Checkbox-zz9TyZWn.js';
16
- import { a as OptionsPopover } from './useAdaptiveView-AvsDkChF.js';
9
+ import { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-CGOAko_r.js';
10
+ import { M as MultiSelectMenu, a as MultiSelectMenuSync } from './MultiSelectMenuSync-DTRWdqGg.js';
11
+ import { S as SelectField, a as SelectFieldSync } from './SelectFieldSync-B5r-wl1D.js';
12
+ import { S as SelectMenu, a as SelectMenuSync } from './SelectMenuSync-CqKMKaWt.js';
13
+ import { T as TreeSelectField, a as TreeSelectFieldSync } from './TreeSelectFieldSync-Cz8uOdpT.js';
14
+ import { a as TreeSelectMenu, T as TreeSelectMenuSync } from './TreeSelectMenuSync-Bk8BN6_B.js';
15
+ import { C as Checkbox } from './Checkbox-DGU3JwZA.js';
16
+ import { a as OptionsPopover } from './useAdaptiveView-C0F7qnLD.js';
17
17
  import { M as MenuFooter } from './MenuFooter-Ck9L599M.js';
18
18
  import { D as DateTime } from './luxon-wpz4A-OQ.js';
19
- import { u as useDateFieldSingleConversion, a as useDateFieldSingleState, M as MaskedDateInput, b as DateFieldSingleCalendar, D as DateFieldSingle } from './DateFieldSingle-CgMPTi1v.js';
19
+ import { u as useDateFieldSingleConversion, a as useDateFieldSingleState, M as MaskedDateInput, b as DateFieldSingleCalendar, D as DateFieldSingle } from './DateFieldSingle-CwcV_AOp.js';
20
20
  import { F as Flex } from './Flex-Bb3iHExM.js';
21
21
  import { u as useConfirmationDraft } from './confirmationTypes-CG7xl50f.js';
22
- import { D as Dialog } from './Dialog-BxulNN8n.js';
23
- import { u as useDateFieldRangeConversion, a as useDateFieldRangeState, M as MaskedDateRangeInput, b as DateFieldRangeCalendar, D as DateFieldRange } from './DateFieldRange-CP7QgS6P.js';
22
+ import { D as Dialog } from './Dialog-CE2fxzJR.js';
23
+ import { u as useDateFieldRangeConversion, a as useDateFieldRangeState, M as MaskedDateRangeInput, b as DateFieldRangeCalendar, D as DateFieldRange } from './DateFieldRange-BnNrQvuG.js';
24
24
  import { w as warnOnce } from './warnOnce-Y9PRHcU4.js';
25
- import { F as FieldLabel } from './FieldLabel-Cm5A1Jcx.js';
25
+ import { F as FieldLabel } from './FieldLabel-v6vMVVWB.js';
26
26
  import { G as Grid } from './Grid-ho1pGJ5L.js';
27
- import { N as NumberField } from './NumberField-CjC6KHKl.js';
28
- import { T as Text } from './Text-mDcQHC2U.js';
29
- import { T as TextField } from './TextField-WQTlqKso.js';
27
+ import { N as NumberField } from './NumberField-BuAlvtg_.js';
28
+ import { T as Text } from './Text-BjYHzUGW.js';
29
+ import { T as TextField } from './TextField-BsVxym0-.js';
30
30
  import { S as SvgClose } from './close-DZj38AEh.js';
31
31
  import { a as SvgSearch, s as styles$1 } from './SearchField-X4B7f23E.js';
32
32
  import { t as textFieldStyles } from './TextField.module-DklyLNKz.js';
33
33
  import { I as Icon } from './Icon-B4uCvMU9.js';
34
34
  import { useTrackingId } from './useTrackingId.js';
35
- import { R as Radio } from './Radio-D9w_-JYw.js';
35
+ import { R as Radio } from './Radio-Dey7KUCQ.js';
36
36
 
37
37
  import './filter-state.css';const FilterItemWrapper = ({ children }) => {
38
38
  const props = useMemo(
@@ -1203,18 +1203,14 @@ const FilterDateList = ({
1203
1203
  }, [filter.options, visibleLibraryOptions]);
1204
1204
  const options = useMemo(
1205
1205
  () => [
1206
- ...filter.options.map(
1207
- (opt) => ({
1208
- id: opt.id,
1209
- label: opt.label
1210
- })
1211
- ),
1212
- ...visibleLibraryOptions.map(
1213
- (opt) => ({
1214
- id: opt.id,
1215
- label: opt.label
1216
- })
1217
- )
1206
+ ...filter.options.map((opt) => ({
1207
+ id: opt.id,
1208
+ label: opt.label
1209
+ })),
1210
+ ...visibleLibraryOptions.map((opt) => ({
1211
+ id: opt.id,
1212
+ label: opt.label
1213
+ }))
1218
1214
  ],
1219
1215
  [filter.options, visibleLibraryOptions]
1220
1216
  );
@@ -2154,4 +2150,4 @@ const cloneFiltersWithItemRefs = (filters) => filters.map(
2154
2150
  );
2155
2151
 
2156
2152
  export { DateListDialog as D, FilterGroupContext as F, checkActiveFilters as a, getAdapter as b, cloneFiltersWithItemRefs as c, FilterItemWrapper as d, FilterTriggerButton as e, getActiveFilters as g, hasFilterSelectionChanged as h, preserveFilterState as p, resetFilters as r, styles as s, updateSingleFilter as u };
2157
- //# sourceMappingURL=filter-state-BdfBSXYO.js.map
2153
+ //# sourceMappingURL=filter-state-CuiHPC94.js.map