@servicetitan/anvil2 3.0.6 → 3.0.7

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 (163) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/Combobox.js +1 -2
  3. package/dist/Combobox.js.map +1 -1
  4. package/dist/{DataTable-0kOuVgSB.js → DataTable-E8z0H8c7.js} +140 -13
  5. package/dist/{DataTable-0kOuVgSB.js.map → DataTable-E8z0H8c7.js.map} +1 -1
  6. package/dist/DataTable.css +47 -5
  7. package/dist/{DateFieldRange-Be_I9GTp.js → DateFieldRange-BN_uIvHI.js} +24 -12
  8. package/dist/DateFieldRange-BN_uIvHI.js.map +1 -0
  9. package/dist/DateFieldRange.js +1 -1
  10. package/dist/{DateFieldSingle-CsrsY9i8.js → DateFieldSingle-h3YkdwPo.js} +2 -2
  11. package/dist/{DateFieldSingle-CsrsY9i8.js.map → DateFieldSingle-h3YkdwPo.js.map} +1 -1
  12. package/dist/DateFieldSingle.js +1 -1
  13. package/dist/{Dialog-CD-SDfPT.js → Dialog-CvYSMvfD.js} +2 -2
  14. package/dist/{Dialog-CD-SDfPT.js.map → Dialog-CvYSMvfD.js.map} +1 -1
  15. package/dist/Dialog.js +1 -1
  16. package/dist/FilterBar-B4ZAs73g.js +412 -0
  17. package/dist/FilterBar-B4ZAs73g.js.map +1 -0
  18. package/dist/FilterBar.js +1 -1
  19. package/dist/{ListView-CcRRh1ap.js → ListView-DO5psxd4.js} +5 -5
  20. package/dist/{ListView-CcRRh1ap.js.map → ListView-DO5psxd4.js.map} +1 -1
  21. package/dist/ListView.js +1 -1
  22. package/dist/{ListView.module-CKUQP3kf.js → ListView.module-DfqtCL3Q.js} +3 -3
  23. package/dist/ListView.module-DfqtCL3Q.js.map +1 -0
  24. package/dist/MultiSelectField.js +1 -1
  25. package/dist/{MultiSelectFieldSync-BMVROOjy.js → MultiSelectFieldSync-CXX2F0ru.js} +59 -29
  26. package/dist/MultiSelectFieldSync-CXX2F0ru.js.map +1 -0
  27. package/dist/MultiSelectFieldSync.css +72 -69
  28. package/dist/MultiSelectMenu.js +1 -1
  29. package/dist/{MultiSelectMenuSync-BNPp_2Bm.js → MultiSelectMenuSync-EKtvlL62.js} +218 -47
  30. package/dist/MultiSelectMenuSync-EKtvlL62.js.map +1 -0
  31. package/dist/{Page-SBy27-Wv.js → Page-C2_Hm27h.js} +2 -2
  32. package/dist/{Page-SBy27-Wv.js.map → Page-C2_Hm27h.js.map} +1 -1
  33. package/dist/Page.js +1 -1
  34. package/dist/{Pagination-Cm8-K6VH.js → Pagination-Bmd4JORe.js} +2 -2
  35. package/dist/{Pagination-Cm8-K6VH.js.map → Pagination-Bmd4JORe.js.map} +1 -1
  36. package/dist/Pagination.js +1 -1
  37. package/dist/SavedFiltersButton-2qba2Cgu.js +650 -0
  38. package/dist/SavedFiltersButton-2qba2Cgu.js.map +1 -0
  39. package/dist/SavedFiltersButton.css +8 -0
  40. package/dist/SavedFiltersButton.d.ts +1 -0
  41. package/dist/SavedFiltersButton.js +2 -0
  42. package/dist/SavedFiltersButton.js.map +1 -0
  43. package/dist/{SearchField-3tUPU8hH.js → SearchField-BMHJCVFu.js} +2 -2
  44. package/dist/{SearchField-3tUPU8hH.js.map → SearchField-BMHJCVFu.js.map} +1 -1
  45. package/dist/{SearchField-BcQZ5e0x.js → SearchField-fXc_vWEr.js} +2 -2
  46. package/dist/{SearchField-BcQZ5e0x.js.map → SearchField-fXc_vWEr.js.map} +1 -1
  47. package/dist/SearchField.js +1 -1
  48. package/dist/SelectField.js +1 -1
  49. package/dist/{SelectFieldSync-BeDYbJ2M.js → SelectFieldSync-DykGkR_w.js} +3 -3
  50. package/dist/{SelectFieldSync-BeDYbJ2M.js.map → SelectFieldSync-DykGkR_w.js.map} +1 -1
  51. package/dist/SelectMenu.js +1 -1
  52. package/dist/{SelectMenuSync-C-PFemsQ.js → SelectMenuSync-DTQ8Ofoz.js} +21 -9
  53. package/dist/SelectMenuSync-DTQ8Ofoz.js.map +1 -0
  54. package/dist/{SelectOptions-Tr11Ckqw.js → SelectOptions-DVSOJwRy.js} +2 -2
  55. package/dist/{SelectOptions-Tr11Ckqw.js.map → SelectOptions-DVSOJwRy.js.map} +1 -1
  56. package/dist/{SelectTrigger-DTz7V-Xx.js → SelectTrigger-CHk0KO-P.js} +2 -2
  57. package/dist/{SelectTrigger-DTz7V-Xx.js.map → SelectTrigger-CHk0KO-P.js.map} +1 -1
  58. package/dist/SelectTrigger.js +1 -1
  59. package/dist/{SelectTriggerBase-Ds6I7Qbr.js → SelectTriggerBase-B2S5SOZr.js} +134 -38
  60. package/dist/SelectTriggerBase-B2S5SOZr.js.map +1 -0
  61. package/dist/Table.js +1 -1
  62. package/dist/{Toolbar-BUd9eNkq.js → Toolbar-DaUKbbsL.js} +3 -3
  63. package/dist/{Toolbar-BUd9eNkq.js.map → Toolbar-DaUKbbsL.js.map} +1 -1
  64. package/dist/Toolbar.js +2 -2
  65. package/dist/{ToolbarButtonToggle-C06cqJ6F.js → ToolbarButtonToggle-BPu81Wuv.js} +4 -3
  66. package/dist/ToolbarButtonToggle-BPu81Wuv.js.map +1 -0
  67. package/dist/beta.js +10 -9
  68. package/dist/beta.js.map +1 -1
  69. package/dist/filter-state-Bx3aYS1r.js +1627 -0
  70. package/dist/filter-state-Bx3aYS1r.js.map +1 -0
  71. package/dist/{FilterBar.css → filter-state.css} +19 -33
  72. package/dist/index.js +9 -10
  73. package/dist/index.js.map +1 -1
  74. package/dist/src/beta/components/FilterBar/FilterBar.d.ts +12 -10
  75. package/dist/src/beta/components/FilterBar/FilterDateList.d.ts +15 -5
  76. package/dist/src/beta/components/FilterBar/FilterDateRange.d.ts +34 -29
  77. package/dist/src/beta/components/FilterBar/FilterDateSingle.d.ts +31 -22
  78. package/dist/src/beta/components/FilterBar/FilterDrawer.d.ts +1 -1
  79. package/dist/src/beta/components/FilterBar/FilterItemWrapper.d.ts +4 -12
  80. package/dist/src/beta/components/FilterBar/FilterNumericRange.d.ts +29 -0
  81. package/dist/src/beta/components/FilterBar/FilterPopoverButton.d.ts +86 -0
  82. package/dist/src/beta/components/FilterBar/FilterToggleButton.d.ts +2 -2
  83. package/dist/src/beta/components/FilterBar/FilterTriggerButton.d.ts +50 -0
  84. package/dist/src/beta/components/FilterBar/index.d.ts +1 -1
  85. package/dist/src/beta/components/FilterBar/internal/FilterGroupContext.d.ts +5 -9
  86. package/dist/src/beta/components/FilterBar/internal/adapters/asyncMultiSelect.d.ts +6 -0
  87. package/dist/src/beta/components/FilterBar/internal/adapters/asyncSelect.d.ts +6 -0
  88. package/dist/src/beta/components/FilterBar/internal/adapters/boolean.d.ts +3 -0
  89. package/dist/src/beta/components/FilterBar/internal/adapters/custom.d.ts +3 -0
  90. package/dist/src/beta/components/FilterBar/internal/adapters/date.d.ts +5 -0
  91. package/dist/src/beta/components/FilterBar/internal/adapters/dateList.d.ts +5 -0
  92. package/dist/src/beta/components/FilterBar/internal/adapters/dateRange.d.ts +8 -0
  93. package/dist/src/beta/components/FilterBar/internal/adapters/index.d.ts +15 -0
  94. package/dist/src/beta/components/FilterBar/internal/adapters/multiSelect.d.ts +6 -0
  95. package/dist/src/beta/components/FilterBar/internal/adapters/numericRange.d.ts +3 -0
  96. package/dist/src/beta/components/FilterBar/internal/adapters/singleSelect.d.ts +6 -0
  97. package/dist/src/beta/components/FilterBar/internal/adapters/types.d.ts +78 -0
  98. package/dist/src/beta/components/FilterBar/internal/types.d.ts +166 -61
  99. package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +2 -2
  100. package/dist/src/beta/components/FilterBar/internal/utils/filter-state.d.ts +2 -40
  101. package/dist/src/beta/components/FilterBar/internal/utils/test.d.ts +13 -28
  102. package/dist/src/beta/components/FilterBar/internal/utils/value-compare.d.ts +14 -0
  103. package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  104. package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  105. package/dist/src/beta/components/MultiSelectField/internal/types.d.ts +4 -2
  106. package/dist/src/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +7 -5
  107. package/dist/src/beta/components/MultiSelectField/internal/useSelectModeMultiple.d.ts +5 -2
  108. package/dist/src/beta/components/MultiSelectField/types.d.ts +21 -36
  109. package/dist/src/beta/components/MultiSelectMenu/MultiSelectMenu.d.ts +1 -0
  110. package/dist/src/beta/components/MultiSelectMenu/types.d.ts +52 -12
  111. package/dist/src/beta/components/SavedFiltersButton/SavedFiltersButton.d.ts +40 -0
  112. package/dist/src/beta/components/SavedFiltersButton/index.d.ts +2 -0
  113. package/dist/src/beta/components/SavedFiltersButton/internal/AddSavedFilterDrawer.d.ts +27 -0
  114. package/dist/src/beta/components/SavedFiltersButton/internal/EditSavedFiltersDrawer.d.ts +38 -0
  115. package/dist/src/beta/components/SavedFiltersButton/types.d.ts +147 -0
  116. package/dist/src/beta/components/SelectField/types.d.ts +7 -11
  117. package/dist/src/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +8 -1
  118. package/dist/src/beta/components/SelectMenu/types.d.ts +21 -1
  119. package/dist/src/beta/components/Table/DataTable/internal/DataTablePagination.d.ts +6 -0
  120. package/dist/src/beta/components/Table/DataTable/types.d.ts +43 -10
  121. package/dist/src/beta/components/Toolbar/internal/ToolbarContext.d.ts +3 -2
  122. package/dist/src/beta/components/index.d.ts +1 -0
  123. package/dist/src/internal/components/MenuFooter/MenuFooter.d.ts +43 -0
  124. package/dist/src/internal/components/OptionCheckbox.d.ts +6 -0
  125. package/dist/src/internal/components/OptionContentArea.d.ts +8 -0
  126. package/dist/src/internal/components/OptionRow.d.ts +10 -0
  127. package/dist/src/internal/components/OptionsPopover/OptionsPopover.d.ts +4 -4
  128. package/dist/src/internal/hooks/index.d.ts +2 -0
  129. package/dist/src/internal/hooks/useBulkActionRunner.d.ts +41 -0
  130. package/dist/src/internal/hooks/useConfirmationDraft.d.ts +21 -0
  131. package/dist/src/internal/types/bulkActionTypes.d.ts +39 -0
  132. package/dist/src/internal/types/confirmationTypes.d.ts +19 -0
  133. package/dist/src/internal/types/optionContent.d.ts +19 -0
  134. package/dist/src/internal/types/selectFieldInternalTypes.d.ts +2 -0
  135. package/dist/{syncFilterUtils-COxBIkt6.js → syncFilterUtils-BEKek64h.js} +163 -124
  136. package/dist/syncFilterUtils-BEKek64h.js.map +1 -0
  137. package/dist/syncFilterUtils.css +96 -59
  138. package/dist/{Combobox-Cp7M4-4r.js → useInfiniteCombobox-CknXmqlQ.js} +185 -10
  139. package/dist/useInfiniteCombobox-CknXmqlQ.js.map +1 -0
  140. package/dist/{useMenuInteraction-C4RU5Fdq.js → useMenuInteraction-CpAOHSJu.js} +118 -5
  141. package/dist/useMenuInteraction-CpAOHSJu.js.map +1 -0
  142. package/dist/useMenuInteraction.css +28 -0
  143. package/dist/{useToggleSelection-B5PnTuT2.js → useToggleSelection-B-Z80gy2.js} +53 -4
  144. package/dist/useToggleSelection-B-Z80gy2.js.map +1 -0
  145. package/package.json +3 -3
  146. package/dist/Combobox-Cp7M4-4r.js.map +0 -1
  147. package/dist/DateFieldRange-Be_I9GTp.js.map +0 -1
  148. package/dist/FilterBar-yysyZ-t1.js +0 -1797
  149. package/dist/FilterBar-yysyZ-t1.js.map +0 -1
  150. package/dist/ListView.module-CKUQP3kf.js.map +0 -1
  151. package/dist/MultiSelectFieldSync-BMVROOjy.js.map +0 -1
  152. package/dist/MultiSelectMenuSync-BNPp_2Bm.js.map +0 -1
  153. package/dist/SelectMenuSync-C-PFemsQ.js.map +0 -1
  154. package/dist/SelectTriggerBase-Ds6I7Qbr.js.map +0 -1
  155. package/dist/ToolbarButtonToggle-C06cqJ6F.js.map +0 -1
  156. package/dist/src/beta/components/FilterBar/FilterButton.d.ts +0 -33
  157. package/dist/src/beta/components/FilterBar/FilterSelect.d.ts +0 -29
  158. package/dist/syncFilterUtils-COxBIkt6.js.map +0 -1
  159. package/dist/useInfiniteCombobox-WcRgC9p6.js +0 -179
  160. package/dist/useInfiniteCombobox-WcRgC9p6.js.map +0 -1
  161. package/dist/useMenuInteraction-C4RU5Fdq.js.map +0 -1
  162. package/dist/useToggleSelection-B5PnTuT2.js.map +0 -1
  163. /package/dist/{Combobox.css → useInfiniteCombobox.css} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { createContext, useContext, useEffect, useMemo, useState, useRef, forwardRef, useId, useLayoutEffect } from 'react';
2
+ import { createContext, useContext, useEffect, useMemo, useState, useRef, forwardRef, useId, useLayoutEffect, useDeferredValue, useCallback } from 'react';
3
3
  import { P as Popover, u as usePopoverContext } from './Popover-8mTJoMy7.js';
4
- import { i as isMultiple, b as SELECT_ALL, a as defaultItemToKey, d as defaultItemToString, g as getScrollParent, A as ADD_NEW, S as SelectTriggerBase } from './SelectTriggerBase-Ds6I7Qbr.js';
4
+ import { i as isMultiple, b as SELECT_ALL, a as defaultItemToKey, d as defaultItemToString, g as getScrollParent, A as ADD_NEW, S as SelectTriggerBase } from './SelectTriggerBase-B2S5SOZr.js';
5
5
  import { c as cx } from './index-De1g9FRV.js';
6
6
  import { u as useDownshiftEnvironment, c as useMultipleSelection, b as useSelect, a as useCombobox$1 } from './downshift.esm-xtSnQp44.js';
7
7
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-CB_zHDbW.js';
@@ -10,7 +10,7 @@ import { T as Text } from './Text-BTzgTpqu.js';
10
10
  import { D as Divider } from './Divider-CxtTyw8_.js';
11
11
  import { F as Flex } from './Flex-_orhvoxS.js';
12
12
  import { S as Spinner } from './Spinner-B7tTWcP6.js';
13
- import { l as listViewStyles } from './ListView.module-CKUQP3kf.js';
13
+ import { s as styles$1 } from './ListView.module-DfqtCL3Q.js';
14
14
  import { I as Icon } from './Icon-feeG7gXA.js';
15
15
  import { c as checkboxStyles } from './Checkbox.module-CURNX27M.js';
16
16
  import { S as SvgCheckBox, a as SvgCheckBoxOutlineBlank } from './check_box-0U1tbEAd.js';
@@ -20,7 +20,7 @@ import { useTrackingId } from './useTrackingId.js';
20
20
  import { S as SvgCheck } from './check-Cf67OWrZ.js';
21
21
  import { m as matchSorter } from './match-sorter.esm-CGAauEiU.js';
22
22
 
23
- import './Combobox.css';const ComboboxContext = createContext(null);
23
+ import './useInfiniteCombobox.css';const ComboboxContext = createContext(null);
24
24
  const useCombobox = function() {
25
25
  const context = useContext(
26
26
  ComboboxContext
@@ -582,7 +582,7 @@ const ComboboxItemVisual = forwardRef(
582
582
  });
583
583
  const listViewOptionClassNames = cx(
584
584
  styles["listview-option"],
585
- listViewStyles["listview-option"],
585
+ styles$1["listview-option"],
586
586
  {
587
587
  [styles["listview-option-disabled"]]: disabled
588
588
  }
@@ -595,7 +595,7 @@ const ComboboxItemVisual = forwardRef(
595
595
  ...rootDivProps,
596
596
  className: listViewOptionClassNames,
597
597
  children: [
598
- !hideCheckbox ? /* @__PURE__ */ jsx("div", { className: cx(styles["cell"], listViewStyles["cell"]), children: /* @__PURE__ */ jsx("div", { className: checkboxStyles["wrapper"], children: /* @__PURE__ */ jsxs("div", { className: checkboxClassNames, children: [
598
+ !hideCheckbox ? /* @__PURE__ */ jsx("div", { className: cx(styles["cell"], styles$1["cell"]), children: /* @__PURE__ */ jsx("div", { className: checkboxStyles["wrapper"], children: /* @__PURE__ */ jsxs("div", { className: checkboxClassNames, children: [
599
599
  /* @__PURE__ */ jsx(
600
600
  "input",
601
601
  {
@@ -722,7 +722,7 @@ const ComboboxGroupList = function({
722
722
  ...getMenuProps(rest),
723
723
  ref: listRef,
724
724
  "data-anv": "combobox-list",
725
- className: cx(styles["listview"], listViewStyles["listview"], {
725
+ className: cx(styles["listview"], styles$1["listview"], {
726
726
  [styles.scrolled]: isScrolled
727
727
  }),
728
728
  style: {
@@ -1444,7 +1444,7 @@ const ComboboxListElement = function({
1444
1444
  ...getMenuProps(rest),
1445
1445
  ref: listRef,
1446
1446
  "data-anv": "combobox-list",
1447
- className: cx(styles["listview"], listViewStyles["listview"], {
1447
+ className: cx(styles["listview"], styles$1["listview"], {
1448
1448
  [styles.scrolled]: isScrolled
1449
1449
  }),
1450
1450
  style: {
@@ -2471,5 +2471,180 @@ const Combobox = Object.assign(
2471
2471
  );
2472
2472
  const ComboboxElement = Combobox;
2473
2473
 
2474
- export { Combobox as C, ComboboxElement as a, ComboboxSelect as b, ComboboxList as c };
2475
- //# sourceMappingURL=Combobox-Cp7M4-4r.js.map
2474
+ const SCROLL_THRESHOLD = 0.64;
2475
+ function useInfiniteCombobox({
2476
+ query,
2477
+ queryInitialItems,
2478
+ initialItems = [],
2479
+ initialPage = 0,
2480
+ initialLoading = false,
2481
+ initialInputValue,
2482
+ defaultInputValue,
2483
+ initialSelectedItem,
2484
+ defaultSelectedItem,
2485
+ initialSelectedItems,
2486
+ defaultSelectedItems,
2487
+ updateOnInputValueChange = true,
2488
+ updateOnSelectedItemChange = true,
2489
+ updateOnSelectedItemsChange = true,
2490
+ queryOnFirstRender = false,
2491
+ shouldTriggerQuery: shouldTriggerQueryProp
2492
+ }) {
2493
+ const [items, setItems] = useState(initialItems);
2494
+ const deferredItems = useDeferredValue(items);
2495
+ const [page, setPage] = useState(initialPage);
2496
+ const [loading, setLoading] = useState(initialLoading);
2497
+ const deferredLoading = useDeferredValue(loading);
2498
+ const [inputValue, setInputValue] = useState(
2499
+ initialInputValue ?? defaultInputValue ?? ""
2500
+ );
2501
+ const [selectedItem, setSelectedItem] = useState(
2502
+ initialSelectedItem ?? defaultSelectedItem ?? null
2503
+ );
2504
+ const [selectedItems, setSelectedItems] = useState(
2505
+ initialSelectedItems ?? defaultSelectedItems ?? []
2506
+ );
2507
+ const scrollerRef = useRef(null);
2508
+ const defaultShouldTriggerQuery = (element) => {
2509
+ const totalScrollHeight = element.scrollHeight - element.clientHeight;
2510
+ return element.scrollTop / totalScrollHeight > SCROLL_THRESHOLD;
2511
+ };
2512
+ const [triggerQueryCount, setTriggerQueryCount] = useState(0);
2513
+ const triggerQueryCountRef = useRef(0);
2514
+ const triggerQuery = () => {
2515
+ setTriggerQueryCount((x) => x + 1);
2516
+ triggerQueryCountRef.current += 1;
2517
+ };
2518
+ const [done, setDone] = useState(false);
2519
+ const firstRenderRef = useRef(true);
2520
+ const scrollTimeoutRef = useRef(false);
2521
+ const loadingRef = useRef(false);
2522
+ const setLoadingStateAndRef = (isLoading) => {
2523
+ setLoading(isLoading);
2524
+ loadingRef.current = isLoading;
2525
+ };
2526
+ const queryRetryCountRef = useRef(0);
2527
+ useEffect(() => {
2528
+ if (firstRenderRef.current && queryInitialItems) {
2529
+ setItems(queryInitialItems());
2530
+ }
2531
+ if (firstRenderRef.current && !queryOnFirstRender) {
2532
+ firstRenderRef.current = false;
2533
+ return;
2534
+ }
2535
+ setLoadingStateAndRef(true);
2536
+ const timeoutID = setTimeout(() => {
2537
+ if (triggerQueryCount < triggerQueryCountRef.current) return;
2538
+ query({
2539
+ page,
2540
+ inputValue,
2541
+ selectedItem,
2542
+ selectedItems
2543
+ }).then((res) => {
2544
+ queryRetryCountRef.current = 0;
2545
+ if (triggerQueryCount < triggerQueryCountRef.current) return;
2546
+ setLoadingStateAndRef(false);
2547
+ setPage((x) => x + 1);
2548
+ if (res == null || page > 0 && res.length === 0) {
2549
+ setDone(true);
2550
+ } else if (page === 0) {
2551
+ setItems(() => [...res]);
2552
+ } else {
2553
+ setItems((prevItems) => [...prevItems, ...res]);
2554
+ }
2555
+ }).catch(() => {
2556
+ queryRetryCountRef.current += 1;
2557
+ if (queryRetryCountRef.current > 7) {
2558
+ queryRetryCountRef.current = 0;
2559
+ return;
2560
+ } else {
2561
+ setTimeout(
2562
+ () => {
2563
+ triggerQuery();
2564
+ },
2565
+ 2 ** queryRetryCountRef.current * 160
2566
+ );
2567
+ }
2568
+ });
2569
+ }, 160);
2570
+ return () => {
2571
+ clearTimeout(timeoutID);
2572
+ };
2573
+ }, [triggerQueryCount]);
2574
+ useLayoutEffect(() => {
2575
+ setTimeout(() => {
2576
+ if (scrollerRef.current && scrollerRef.current.scrollHeight > 0 && scrollerRef.current.clientHeight > 0 && scrollerRef.current.scrollHeight <= scrollerRef.current.clientHeight) {
2577
+ triggerQuery();
2578
+ }
2579
+ }, 160);
2580
+ }, [items]);
2581
+ const isEmpty = items.length === 0 && page === 0;
2582
+ const onStateChange = useCallback(
2583
+ (changes) => {
2584
+ if (isEmpty && "isOpen" in changes && changes.isOpen === true) {
2585
+ triggerQuery();
2586
+ }
2587
+ const inputValueShouldUpdate = updateOnInputValueChange && "inputValue" in changes;
2588
+ const selectedItemsShouldUpdate = updateOnSelectedItemsChange && "selectedItems" in changes && changes.selectedItems;
2589
+ const selectedItemShouldUpdate = updateOnSelectedItemChange && "selectedItem" in changes && changes.selectedItem !== void 0;
2590
+ if (inputValueShouldUpdate) {
2591
+ setInputValue(changes.inputValue ?? "");
2592
+ }
2593
+ if (selectedItemsShouldUpdate) {
2594
+ setSelectedItems(changes.selectedItems ?? []);
2595
+ }
2596
+ if (selectedItemShouldUpdate) {
2597
+ setSelectedItem(changes.selectedItem);
2598
+ }
2599
+ if (inputValueShouldUpdate || selectedItemsShouldUpdate || selectedItemShouldUpdate) {
2600
+ setPage(0);
2601
+ setDone(false);
2602
+ triggerQuery();
2603
+ }
2604
+ },
2605
+ [
2606
+ isEmpty,
2607
+ updateOnInputValueChange,
2608
+ updateOnSelectedItemsChange,
2609
+ updateOnSelectedItemChange
2610
+ ]
2611
+ );
2612
+ const onScroll = useCallback(
2613
+ (e) => {
2614
+ const element = e.currentTarget;
2615
+ if (!scrollTimeoutRef.current && !loadingRef.current) {
2616
+ setTimeout(() => {
2617
+ const shouldTriggerQuery = shouldTriggerQueryProp ?? defaultShouldTriggerQuery;
2618
+ if (shouldTriggerQuery(element) && !done) {
2619
+ triggerQuery();
2620
+ }
2621
+ scrollTimeoutRef.current = false;
2622
+ }, 40);
2623
+ scrollTimeoutRef.current = true;
2624
+ }
2625
+ },
2626
+ [done, shouldTriggerQueryProp]
2627
+ );
2628
+ return {
2629
+ comboboxProps: {
2630
+ items: deferredItems,
2631
+ loading: deferredLoading,
2632
+ initialInputValue,
2633
+ defaultInputValue,
2634
+ initialSelectedItem,
2635
+ defaultSelectedItem,
2636
+ initialSelectedItems,
2637
+ defaultSelectedItems,
2638
+ disableFilter: true,
2639
+ // assume the query will return a filtered/sorted list
2640
+ onStateChange
2641
+ },
2642
+ contentProps: {
2643
+ onScroll,
2644
+ scrollerRef
2645
+ }
2646
+ };
2647
+ }
2648
+
2649
+ export { Combobox as C, ComboboxElement as a, ComboboxSelect as b, ComboboxList as c, useInfiniteCombobox as u };
2650
+ //# sourceMappingURL=useInfiniteCombobox-CknXmqlQ.js.map