@gobolt/genesis 0.4.14 → 0.4.18

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.
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ function requireClassnames() {
19
19
  hasRequiredClassnames = 1;
20
20
  (function(module2) {
21
21
  (function() {
22
- var hasOwn2 = {}.hasOwnProperty;
22
+ var hasOwn = {}.hasOwnProperty;
23
23
  function classNames2() {
24
24
  var classes = "";
25
25
  for (var i = 0; i < arguments.length; i++) {
@@ -45,7 +45,7 @@ function requireClassnames() {
45
45
  }
46
46
  var classes = "";
47
47
  for (var key in arg) {
48
- if (hasOwn2.call(arg, key) && arg[key]) {
48
+ if (hasOwn.call(arg, key) && arg[key]) {
49
49
  classes = appendClass(classes, key);
50
50
  }
51
51
  }
@@ -3154,14 +3154,14 @@ function merge$2() {
3154
3154
  });
3155
3155
  return clone;
3156
3156
  }
3157
- function noop$5() {
3157
+ function noop$4() {
3158
3158
  }
3159
3159
  let deprecatedWarnList = null;
3160
3160
  function resetWarned() {
3161
3161
  deprecatedWarnList = null;
3162
3162
  resetWarned$1();
3163
3163
  }
3164
- let _warning = noop$5;
3164
+ let _warning = noop$4;
3165
3165
  if (process.env.NODE_ENV !== "production") {
3166
3166
  _warning = (valid2, component, message2) => {
3167
3167
  warningOnce(valid2, `[antd: ${component}] ${message2}`);
@@ -3202,7 +3202,7 @@ const devUseWarning = process.env.NODE_ENV !== "production" ? (component) => {
3202
3202
  } : () => {
3203
3203
  const noopWarning = () => {
3204
3204
  };
3205
- noopWarning.deprecated = noop$5;
3205
+ noopWarning.deprecated = noop$4;
3206
3206
  return noopWarning;
3207
3207
  };
3208
3208
  const ValidateMessagesContext = /* @__PURE__ */ createContext$1(void 0);
@@ -4910,12 +4910,12 @@ function merge$1() {
4910
4910
  return ret;
4911
4911
  }
4912
4912
  var statistic = {};
4913
- function noop$4() {
4913
+ function noop$3() {
4914
4914
  }
4915
4915
  var statisticToken = function statisticToken2(token2) {
4916
4916
  var tokenKeys2;
4917
4917
  var proxy = token2;
4918
- var flush = noop$4;
4918
+ var flush = noop$3;
4919
4919
  if (enableStatistic && typeof Proxy !== "undefined") {
4920
4920
  tokenKeys2 = /* @__PURE__ */ new Set();
4921
4921
  proxy = new Proxy(token2, {
@@ -44883,7 +44883,7 @@ if (process.env.NODE_ENV !== "production") {
44883
44883
  var defaultItemRender = function defaultItemRender2(page, type4, element2) {
44884
44884
  return element2;
44885
44885
  };
44886
- function noop$3() {
44886
+ function noop$2() {
44887
44887
  }
44888
44888
  function isInteger(v) {
44889
44889
  var value2 = Number(v);
@@ -44894,7 +44894,7 @@ function calculatePage(p, pageSize, total) {
44894
44894
  return Math.floor((total - 1) / _pageSize) + 1;
44895
44895
  }
44896
44896
  var Pagination$1 = function Pagination(props) {
44897
- var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-pagination" : _props$prefixCls, _props$selectPrefixCl = props.selectPrefixCls, selectPrefixCls = _props$selectPrefixCl === void 0 ? "rc-select" : _props$selectPrefixCl, className = props.className, currentProp = props.current, _props$defaultCurrent = props.defaultCurrent, defaultCurrent = _props$defaultCurrent === void 0 ? 1 : _props$defaultCurrent, _props$total = props.total, total = _props$total === void 0 ? 0 : _props$total, pageSizeProp = props.pageSize, _props$defaultPageSiz = props.defaultPageSize, defaultPageSize = _props$defaultPageSiz === void 0 ? 10 : _props$defaultPageSiz, _props$onChange = props.onChange, onChange = _props$onChange === void 0 ? noop$3 : _props$onChange, hideOnSinglePage = props.hideOnSinglePage, align = props.align, _props$showPrevNextJu = props.showPrevNextJumpers, showPrevNextJumpers = _props$showPrevNextJu === void 0 ? true : _props$showPrevNextJu, showQuickJumper = props.showQuickJumper, showLessItems = props.showLessItems, _props$showTitle = props.showTitle, showTitle = _props$showTitle === void 0 ? true : _props$showTitle, _props$onShowSizeChan = props.onShowSizeChange, onShowSizeChange = _props$onShowSizeChan === void 0 ? noop$3 : _props$onShowSizeChan, _props$locale = props.locale, locale2 = _props$locale === void 0 ? locale$1 : _props$locale, style2 = props.style, _props$totalBoundaryS = props.totalBoundaryShowSizeChanger, totalBoundaryShowSizeChanger = _props$totalBoundaryS === void 0 ? 50 : _props$totalBoundaryS, disabled2 = props.disabled, simple = props.simple, showTotal = props.showTotal, _props$showSizeChange = props.showSizeChanger, showSizeChanger = _props$showSizeChange === void 0 ? total > totalBoundaryShowSizeChanger : _props$showSizeChange, sizeChangerRender = props.sizeChangerRender, pageSizeOptions = props.pageSizeOptions, _props$itemRender = props.itemRender, itemRender = _props$itemRender === void 0 ? defaultItemRender : _props$itemRender, jumpPrevIcon = props.jumpPrevIcon, jumpNextIcon = props.jumpNextIcon, prevIcon = props.prevIcon, nextIcon = props.nextIcon;
44897
+ var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-pagination" : _props$prefixCls, _props$selectPrefixCl = props.selectPrefixCls, selectPrefixCls = _props$selectPrefixCl === void 0 ? "rc-select" : _props$selectPrefixCl, className = props.className, currentProp = props.current, _props$defaultCurrent = props.defaultCurrent, defaultCurrent = _props$defaultCurrent === void 0 ? 1 : _props$defaultCurrent, _props$total = props.total, total = _props$total === void 0 ? 0 : _props$total, pageSizeProp = props.pageSize, _props$defaultPageSiz = props.defaultPageSize, defaultPageSize = _props$defaultPageSiz === void 0 ? 10 : _props$defaultPageSiz, _props$onChange = props.onChange, onChange = _props$onChange === void 0 ? noop$2 : _props$onChange, hideOnSinglePage = props.hideOnSinglePage, align = props.align, _props$showPrevNextJu = props.showPrevNextJumpers, showPrevNextJumpers = _props$showPrevNextJu === void 0 ? true : _props$showPrevNextJu, showQuickJumper = props.showQuickJumper, showLessItems = props.showLessItems, _props$showTitle = props.showTitle, showTitle = _props$showTitle === void 0 ? true : _props$showTitle, _props$onShowSizeChan = props.onShowSizeChange, onShowSizeChange = _props$onShowSizeChan === void 0 ? noop$2 : _props$onShowSizeChan, _props$locale = props.locale, locale2 = _props$locale === void 0 ? locale$1 : _props$locale, style2 = props.style, _props$totalBoundaryS = props.totalBoundaryShowSizeChanger, totalBoundaryShowSizeChanger = _props$totalBoundaryS === void 0 ? 50 : _props$totalBoundaryS, disabled2 = props.disabled, simple = props.simple, showTotal = props.showTotal, _props$showSizeChange = props.showSizeChanger, showSizeChanger = _props$showSizeChange === void 0 ? total > totalBoundaryShowSizeChanger : _props$showSizeChange, sizeChangerRender = props.sizeChangerRender, pageSizeOptions = props.pageSizeOptions, _props$itemRender = props.itemRender, itemRender = _props$itemRender === void 0 ? defaultItemRender : _props$itemRender, jumpPrevIcon = props.jumpPrevIcon, jumpNextIcon = props.jumpNextIcon, prevIcon = props.prevIcon, nextIcon = props.nextIcon;
44898
44898
  var paginationRef = React__default.useRef(null);
44899
44899
  var _useMergedState = useMergedState(10, {
44900
44900
  value: pageSizeProp,
@@ -44911,7 +44911,7 @@ var Pagination$1 = function Pagination(props) {
44911
44911
  useEffect(function() {
44912
44912
  setInternalInputVal(current);
44913
44913
  }, [current]);
44914
- var hasOnChange = onChange !== noop$3;
44914
+ var hasOnChange = onChange !== noop$2;
44915
44915
  var hasCurrent = "current" in props;
44916
44916
  if (process.env.NODE_ENV !== "production") {
44917
44917
  warningOnce(hasCurrent ? hasOnChange : true, "You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.");
@@ -53135,7 +53135,7 @@ var HIDDEN_STYLE = {
53135
53135
  padding: 0,
53136
53136
  margin: 0
53137
53137
  };
53138
- var noop$2 = function noop() {
53138
+ var noop$1 = function noop() {
53139
53139
  };
53140
53140
  var MOTION_KEY = "RC_TREE_MOTION_".concat(Math.random());
53141
53141
  var MotionNode = {
@@ -53271,7 +53271,7 @@ var NodeList = /* @__PURE__ */ React.forwardRef(function(props, ref) {
53271
53271
  onFocus,
53272
53272
  onBlur,
53273
53273
  value: "",
53274
- onChange: noop$2,
53274
+ onChange: noop$1,
53275
53275
  "aria-label": "for screen reader"
53276
53276
  })), /* @__PURE__ */ React.createElement("div", {
53277
53277
  className: "".concat(prefixCls, "-treenode"),
@@ -72288,7 +72288,7 @@ var hasRequiredExtend;
72288
72288
  function requireExtend() {
72289
72289
  if (hasRequiredExtend) return extend$2;
72290
72290
  hasRequiredExtend = 1;
72291
- var hasOwn2 = Object.prototype.hasOwnProperty;
72291
+ var hasOwn = Object.prototype.hasOwnProperty;
72292
72292
  var toStr = Object.prototype.toString;
72293
72293
  var defineProperty = Object.defineProperty;
72294
72294
  var gOPD = Object.getOwnPropertyDescriptor;
@@ -72302,15 +72302,15 @@ function requireExtend() {
72302
72302
  if (!obj || toStr.call(obj) !== "[object Object]") {
72303
72303
  return false;
72304
72304
  }
72305
- var hasOwnConstructor = hasOwn2.call(obj, "constructor");
72306
- var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn2.call(obj.constructor.prototype, "isPrototypeOf");
72305
+ var hasOwnConstructor = hasOwn.call(obj, "constructor");
72306
+ var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, "isPrototypeOf");
72307
72307
  if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {
72308
72308
  return false;
72309
72309
  }
72310
72310
  var key;
72311
72311
  for (key in obj) {
72312
72312
  }
72313
- return typeof key === "undefined" || hasOwn2.call(obj, key);
72313
+ return typeof key === "undefined" || hasOwn.call(obj, key);
72314
72314
  };
72315
72315
  var setProperty = function setProperty2(target, options) {
72316
72316
  if (defineProperty && options.name === "__proto__") {
@@ -72326,7 +72326,7 @@ function requireExtend() {
72326
72326
  };
72327
72327
  var getProperty = function getProperty2(obj, name2) {
72328
72328
  if (name2 === "__proto__") {
72329
- if (!hasOwn2.call(obj, name2)) {
72329
+ if (!hasOwn.call(obj, name2)) {
72330
72330
  return void 0;
72331
72331
  } else if (gOPD) {
72332
72332
  return gOPD(obj, name2).value;
@@ -72376,7 +72376,7 @@ function requireExtend() {
72376
72376
  }
72377
72377
  var extendExports = requireExtend();
72378
72378
  const extend$1 = /* @__PURE__ */ getDefaultExportFromCjs(extendExports);
72379
- function isPlainObject$1(value2) {
72379
+ function isPlainObject(value2) {
72380
72380
  if (typeof value2 !== "object" || value2 === null) {
72381
72381
  return false;
72382
72382
  }
@@ -73780,7 +73780,7 @@ class Processor extends CallableInstance {
73780
73780
  } else if (parameters2.length > 0) {
73781
73781
  let [primary, ...rest] = parameters2;
73782
73782
  const currentPrimary = attachers[entryIndex][1];
73783
- if (isPlainObject$1(currentPrimary) && isPlainObject$1(primary)) {
73783
+ if (isPlainObject(currentPrimary) && isPlainObject(primary)) {
73784
73784
  primary = extend$1(true, currentPrimary, primary);
73785
73785
  }
73786
73786
  attachers[entryIndex] = [plugin, primary, ...rest];
@@ -73807,7 +73807,7 @@ function assertUnfrozen(name2, frozen) {
73807
73807
  }
73808
73808
  }
73809
73809
  function assertNode(node2) {
73810
- if (!isPlainObject$1(node2) || typeof node2.type !== "string") {
73810
+ if (!isPlainObject(node2) || typeof node2.type !== "string") {
73811
73811
  throw new TypeError("Expected node, got `" + node2 + "`");
73812
73812
  }
73813
73813
  }
@@ -74704,7 +74704,7 @@ function range2(start2, stop, step) {
74704
74704
  }
74705
74705
  return range3;
74706
74706
  }
74707
- var noop$1 = { value: () => {
74707
+ var noop2 = { value: () => {
74708
74708
  } };
74709
74709
  function dispatch() {
74710
74710
  for (var i = 0, n2 = arguments.length, _ = {}, t2; i < n2; ++i) {
@@ -74764,7 +74764,7 @@ function get$1(type4, name2) {
74764
74764
  function set$1(type4, name2, callback) {
74765
74765
  for (var i = 0, n2 = type4.length; i < n2; ++i) {
74766
74766
  if (type4[i].name === name2) {
74767
- type4[i] = noop$1, type4 = type4.slice(0, i).concat(type4.slice(i + 1));
74767
+ type4[i] = noop2, type4 = type4.slice(0, i).concat(type4.slice(i + 1));
74768
74768
  break;
74769
74769
  }
74770
74770
  }
@@ -80896,16 +80896,21 @@ const OverflowMenuContainer = styled.div`
80896
80896
  animation: ${({ $placement, $isAnimating }) => {
80897
80897
  if (!$isAnimating) return "none";
80898
80898
  switch ($placement) {
80899
- case "bottom":
80899
+ case "bottom": {
80900
80900
  return slideDown;
80901
- case "top":
80901
+ }
80902
+ case "top": {
80902
80903
  return slideUp;
80903
- case "left":
80904
+ }
80905
+ case "left": {
80904
80906
  return slideLeft;
80905
- case "right":
80907
+ }
80908
+ case "right": {
80906
80909
  return slideRight;
80907
- default:
80910
+ }
80911
+ default: {
80908
80912
  return slideDown;
80913
+ }
80909
80914
  }
80910
80915
  }}
80911
80916
  0.15s cubic-bezier(0.4, 0, 0.2, 1);
@@ -80943,112 +80948,136 @@ const OverflowMenuItem = ({ children: children2, onClick }) => {
80943
80948
  const DefaultTrigger = () => {
80944
80949
  return /* @__PURE__ */ jsx(Button$1, { isIconButton: true, themeType: "secondary", size: "small", children: /* @__PURE__ */ jsx(HiDotsHorizontal, {}) });
80945
80950
  };
80946
- const OverflowMenu = ({
80947
- items,
80948
- children: children2,
80949
- trigger = /* @__PURE__ */ jsx(DefaultTrigger, {}),
80950
- isOpen: controlledIsOpen,
80951
- onOpenChange,
80952
- placement = "bottom",
80953
- alignment = "left",
80954
- offset: offset2 = 8,
80955
- className,
80956
- style: style2,
80957
- onItemClick
80958
- }) => {
80959
- const [internalIsOpen, setInternalIsOpen] = useState(false);
80960
- const [isAnimating, setIsAnimating] = useState(false);
80961
- const triggerRef = useRef(null);
80962
- const menuRef = useRef(null);
80963
- const { theme } = useGenesis();
80964
- const isOpen = controlledIsOpen === void 0 ? internalIsOpen : controlledIsOpen;
80965
- const handleOpenChange = useCallback(
80966
- (open) => {
80967
- if (onOpenChange) {
80968
- onOpenChange(open);
80969
- } else {
80970
- setInternalIsOpen(open);
80971
- }
80972
- },
80973
- [onOpenChange]
80974
- );
80975
- const handleTriggerClick = () => {
80976
- handleOpenChange(!isOpen);
80977
- };
80978
- const handleClickOutside = useCallback(
80979
- (event) => {
80980
- if (triggerRef.current && menuRef.current && !triggerRef.current.contains(event.target) && !menuRef.current.contains(event.target)) {
80981
- handleOpenChange(false);
80982
- }
80983
- },
80984
- [handleOpenChange]
80985
- );
80986
- useEffect(() => {
80987
- if (isOpen) {
80988
- const timer2 = setTimeout(() => {
80989
- setIsAnimating(true);
80990
- }, 10);
80991
- document.addEventListener("mousedown", handleClickOutside);
80992
- return () => {
80993
- clearTimeout(timer2);
80994
- document.removeEventListener("mousedown", handleClickOutside);
80995
- };
80996
- } else {
80997
- setIsAnimating(false);
80998
- document.removeEventListener("mousedown", handleClickOutside);
80999
- }
81000
- }, [isOpen, handleClickOutside]);
81001
- const getMenuStyle = useMemo$1(() => {
81002
- const baseStyle = {
81003
- position: "absolute",
81004
- zIndex: 1e3,
81005
- ...style2
80951
+ const OverflowMenu = forwardRef(
80952
+ ({
80953
+ items,
80954
+ children: children2,
80955
+ trigger = /* @__PURE__ */ jsx(DefaultTrigger, {}),
80956
+ isOpen: controlledIsOpen,
80957
+ onOpenChange,
80958
+ placement = "bottom",
80959
+ alignment = "left",
80960
+ offset: offset2 = 8,
80961
+ className,
80962
+ style: style2,
80963
+ onItemClick
80964
+ }, ref) => {
80965
+ const [internalIsOpen, setInternalIsOpen] = useState(false);
80966
+ const [isAnimating, setIsAnimating] = useState(false);
80967
+ const triggerRef = useRef(null);
80968
+ const menuRef = useRef(null);
80969
+ const { theme } = useGenesis();
80970
+ const isOpen = controlledIsOpen === void 0 ? internalIsOpen : controlledIsOpen;
80971
+ const handleOpenChange = useCallback(
80972
+ (open) => {
80973
+ if (onOpenChange) {
80974
+ onOpenChange(open);
80975
+ } else {
80976
+ setInternalIsOpen(open);
80977
+ }
80978
+ },
80979
+ [onOpenChange]
80980
+ );
80981
+ const handleTriggerClick = () => {
80982
+ handleOpenChange(!isOpen);
81006
80983
  };
81007
- switch (placement) {
81008
- case "bottom": {
81009
- return {
81010
- ...baseStyle,
81011
- top: `calc(100% + ${offset2}px)`,
81012
- ...alignment === "right" ? { right: 0 } : { left: 0 }
81013
- };
81014
- }
81015
- case "top": {
81016
- return {
81017
- ...baseStyle,
81018
- bottom: `calc(100% + ${offset2}px)`,
81019
- ...alignment === "right" ? { right: 0 } : { left: 0 }
81020
- };
81021
- }
81022
- case "left": {
81023
- return {
81024
- ...baseStyle,
81025
- top: 0,
81026
- right: `calc(100% + ${offset2}px)`,
81027
- ...alignment === "right" ? { bottom: 0 } : {}
81028
- };
81029
- }
81030
- case "right": {
81031
- return {
81032
- ...baseStyle,
81033
- top: 0,
81034
- left: `calc(100% + ${offset2}px)`,
81035
- ...alignment === "right" ? { bottom: 0 } : {}
80984
+ const handleClickOutside = useCallback(
80985
+ (event) => {
80986
+ if (triggerRef.current && menuRef.current && !triggerRef.current.contains(event.target) && !menuRef.current.contains(event.target)) {
80987
+ handleOpenChange(false);
80988
+ }
80989
+ },
80990
+ [handleOpenChange]
80991
+ );
80992
+ useEffect(() => {
80993
+ if (isOpen) {
80994
+ const timer2 = setTimeout(() => {
80995
+ setIsAnimating(true);
80996
+ }, 10);
80997
+ document.addEventListener("mousedown", handleClickOutside);
80998
+ return () => {
80999
+ clearTimeout(timer2);
81000
+ document.removeEventListener("mousedown", handleClickOutside);
81036
81001
  };
81002
+ } else {
81003
+ setIsAnimating(false);
81004
+ document.removeEventListener("mousedown", handleClickOutside);
81037
81005
  }
81038
- default: {
81039
- return baseStyle;
81006
+ }, [isOpen, handleClickOutside]);
81007
+ const getMenuStyle = useMemo$1(() => {
81008
+ const baseStyle = {
81009
+ position: "absolute",
81010
+ zIndex: 1e3,
81011
+ ...style2
81012
+ };
81013
+ switch (placement) {
81014
+ case "bottom": {
81015
+ return {
81016
+ ...baseStyle,
81017
+ top: `calc(100% + ${offset2}px)`,
81018
+ ...alignment === "right" ? { right: 0 } : { left: 0 }
81019
+ };
81020
+ }
81021
+ case "top": {
81022
+ return {
81023
+ ...baseStyle,
81024
+ bottom: `calc(100% + ${offset2}px)`,
81025
+ ...alignment === "right" ? { right: 0 } : { left: 0 }
81026
+ };
81027
+ }
81028
+ case "left": {
81029
+ return {
81030
+ ...baseStyle,
81031
+ top: 0,
81032
+ right: `calc(100% + ${offset2}px)`,
81033
+ ...alignment === "right" ? { bottom: 0 } : {}
81034
+ };
81035
+ }
81036
+ case "right": {
81037
+ return {
81038
+ ...baseStyle,
81039
+ top: 0,
81040
+ left: `calc(100% + ${offset2}px)`,
81041
+ ...alignment === "right" ? { bottom: 0 } : {}
81042
+ };
81043
+ }
81044
+ default: {
81045
+ return baseStyle;
81046
+ }
81040
81047
  }
81048
+ }, [placement, alignment, offset2, style2]);
81049
+ const handleItemClick = useCallback(
81050
+ (item) => {
81051
+ onItemClick?.(item);
81052
+ handleOpenChange(false);
81053
+ },
81054
+ [onItemClick, handleOpenChange]
81055
+ );
81056
+ if (items && items.length > 0) {
81057
+ return /* @__PURE__ */ jsxs(OverflowMenuWrapper, { ref, children: [
81058
+ /* @__PURE__ */ jsx("div", { ref: triggerRef, onClick: handleTriggerClick, children: trigger }),
81059
+ isOpen && /* @__PURE__ */ jsx(
81060
+ OverflowMenuContainer,
81061
+ {
81062
+ ref: menuRef,
81063
+ theme,
81064
+ className,
81065
+ style: getMenuStyle,
81066
+ $isAnimating: isAnimating,
81067
+ $placement: placement,
81068
+ children: items.map((item) => /* @__PURE__ */ jsx(
81069
+ OverflowMenuItem,
81070
+ {
81071
+ ...item,
81072
+ onClick: () => handleItemClick(item)
81073
+ },
81074
+ item.id
81075
+ ))
81076
+ }
81077
+ )
81078
+ ] });
81041
81079
  }
81042
- }, [placement, alignment, offset2, style2]);
81043
- const handleItemClick = useCallback(
81044
- (item) => {
81045
- onItemClick?.(item);
81046
- handleOpenChange(false);
81047
- },
81048
- [onItemClick, handleOpenChange]
81049
- );
81050
- if (items && items.length > 0) {
81051
- return /* @__PURE__ */ jsxs(OverflowMenuWrapper, { children: [
81080
+ return /* @__PURE__ */ jsxs(OverflowMenuWrapper, { ref, children: [
81052
81081
  /* @__PURE__ */ jsx("div", { ref: triggerRef, onClick: handleTriggerClick, children: trigger }),
81053
81082
  isOpen && /* @__PURE__ */ jsx(
81054
81083
  OverflowMenuContainer,
@@ -81059,34 +81088,13 @@ const OverflowMenu = ({
81059
81088
  style: getMenuStyle,
81060
81089
  $isAnimating: isAnimating,
81061
81090
  $placement: placement,
81062
- children: items.map((item) => /* @__PURE__ */ jsx(
81063
- OverflowMenuItem,
81064
- {
81065
- ...item,
81066
- onClick: () => handleItemClick(item)
81067
- },
81068
- item.id
81069
- ))
81091
+ children: children2
81070
81092
  }
81071
81093
  )
81072
81094
  ] });
81073
81095
  }
81074
- return /* @__PURE__ */ jsxs(OverflowMenuWrapper, { children: [
81075
- /* @__PURE__ */ jsx("div", { ref: triggerRef, onClick: handleTriggerClick, children: trigger }),
81076
- isOpen && /* @__PURE__ */ jsx(
81077
- OverflowMenuContainer,
81078
- {
81079
- ref: menuRef,
81080
- theme,
81081
- className,
81082
- style: getMenuStyle,
81083
- $isAnimating: isAnimating,
81084
- $placement: placement,
81085
- children: children2
81086
- }
81087
- )
81088
- ] });
81089
- };
81096
+ );
81097
+ OverflowMenu.displayName = "OverflowMenu";
81090
81098
  const getGenesisClass$6 = (theme) => ``;
81091
81099
  const Popover$1 = styled(Popconfirm)`
81092
81100
  ${({ theme }) => {
@@ -84313,1231 +84321,105 @@ const CustomPagination = ({
84313
84321
  }
84314
84322
  return null;
84315
84323
  };
84316
- var Subscribable = class {
84317
- constructor() {
84318
- this.listeners = /* @__PURE__ */ new Set();
84319
- this.subscribe = this.subscribe.bind(this);
84320
- }
84321
- subscribe(listener) {
84322
- this.listeners.add(listener);
84323
- this.onSubscribe();
84324
- return () => {
84325
- this.listeners.delete(listener);
84326
- this.onUnsubscribe();
84327
- };
84328
- }
84329
- hasListeners() {
84330
- return this.listeners.size > 0;
84331
- }
84332
- onSubscribe() {
84333
- }
84334
- onUnsubscribe() {
84335
- }
84336
- };
84337
- var defaultTimeoutProvider = {
84338
- // We need the wrapper function syntax below instead of direct references to
84339
- // global setTimeout etc.
84340
- //
84341
- // BAD: `setTimeout: setTimeout`
84342
- // GOOD: `setTimeout: (cb, delay) => setTimeout(cb, delay)`
84343
- //
84344
- // If we use direct references here, then anything that wants to spy on or
84345
- // replace the global setTimeout (like tests) won't work since we'll already
84346
- // have a hard reference to the original implementation at the time when this
84347
- // file was imported.
84348
- setTimeout: (callback, delay) => setTimeout(callback, delay),
84349
- clearTimeout: (timeoutId) => clearTimeout(timeoutId),
84350
- setInterval: (callback, delay) => setInterval(callback, delay),
84351
- clearInterval: (intervalId) => clearInterval(intervalId)
84352
- };
84353
- var TimeoutManager = class {
84354
- // We cannot have TimeoutManager<T> as we must instantiate it with a concrete
84355
- // type at app boot; and if we leave that type, then any new timer provider
84356
- // would need to support ReturnType<typeof setTimeout>, which is infeasible.
84357
- //
84358
- // We settle for type safety for the TimeoutProvider type, and accept that
84359
- // this class is unsafe internally to allow for extension.
84360
- #provider = defaultTimeoutProvider;
84361
- #providerCalled = false;
84362
- setTimeoutProvider(provider) {
84363
- if (process.env.NODE_ENV !== "production") {
84364
- if (this.#providerCalled && provider !== this.#provider) {
84365
- console.error(
84366
- `[timeoutManager]: Switching provider after calls to previous provider might result in unexpected behavior.`,
84367
- { previous: this.#provider, provider }
84368
- );
84369
- }
84370
- }
84371
- this.#provider = provider;
84372
- if (process.env.NODE_ENV !== "production") {
84373
- this.#providerCalled = false;
84374
- }
84375
- }
84376
- setTimeout(callback, delay) {
84377
- if (process.env.NODE_ENV !== "production") {
84378
- this.#providerCalled = true;
84379
- }
84380
- return this.#provider.setTimeout(callback, delay);
84381
- }
84382
- clearTimeout(timeoutId) {
84383
- this.#provider.clearTimeout(timeoutId);
84384
- }
84385
- setInterval(callback, delay) {
84386
- if (process.env.NODE_ENV !== "production") {
84387
- this.#providerCalled = true;
84388
- }
84389
- return this.#provider.setInterval(callback, delay);
84390
- }
84391
- clearInterval(intervalId) {
84392
- this.#provider.clearInterval(intervalId);
84393
- }
84394
- };
84395
- var timeoutManager = new TimeoutManager();
84396
- function systemSetTimeoutZero(callback) {
84397
- setTimeout(callback, 0);
84398
- }
84399
- var isServer = typeof window === "undefined" || "Deno" in globalThis;
84400
- function noop2() {
84401
- }
84402
- function isValidTimeout(value2) {
84403
- return typeof value2 === "number" && value2 >= 0 && value2 !== Infinity;
84404
- }
84405
- function timeUntilStale(updatedAt, staleTime) {
84406
- return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);
84407
- }
84408
- function resolveStaleTime(staleTime, query) {
84409
- return typeof staleTime === "function" ? staleTime(query) : staleTime;
84410
- }
84411
- function resolveEnabled(enabled, query) {
84412
- return typeof enabled === "function" ? enabled(query) : enabled;
84413
- }
84414
- var hasOwn = Object.prototype.hasOwnProperty;
84415
- function replaceEqualDeep(a, b) {
84416
- if (a === b) {
84417
- return a;
84418
- }
84419
- const array4 = isPlainArray(a) && isPlainArray(b);
84420
- if (!array4 && !(isPlainObject(a) && isPlainObject(b))) return b;
84421
- const aItems = array4 ? a : Object.keys(a);
84422
- const aSize = aItems.length;
84423
- const bItems = array4 ? b : Object.keys(b);
84424
- const bSize = bItems.length;
84425
- const copy2 = array4 ? new Array(bSize) : {};
84426
- let equalItems = 0;
84427
- for (let i = 0; i < bSize; i++) {
84428
- const key = array4 ? i : bItems[i];
84429
- const aItem = a[key];
84430
- const bItem = b[key];
84431
- if (aItem === bItem) {
84432
- copy2[key] = aItem;
84433
- if (array4 ? i < aSize : hasOwn.call(a, key)) equalItems++;
84434
- continue;
84435
- }
84436
- if (aItem === null || bItem === null || typeof aItem !== "object" || typeof bItem !== "object") {
84437
- copy2[key] = bItem;
84438
- continue;
84439
- }
84440
- const v = replaceEqualDeep(aItem, bItem);
84441
- copy2[key] = v;
84442
- if (v === aItem) equalItems++;
84443
- }
84444
- return aSize === bSize && equalItems === aSize ? a : copy2;
84445
- }
84446
- function shallowEqualObjects(a, b) {
84447
- if (!b || Object.keys(a).length !== Object.keys(b).length) {
84448
- return false;
84449
- }
84450
- for (const key in a) {
84451
- if (a[key] !== b[key]) {
84452
- return false;
84453
- }
84454
- }
84455
- return true;
84456
- }
84457
- function isPlainArray(value2) {
84458
- return Array.isArray(value2) && value2.length === Object.keys(value2).length;
84459
- }
84460
- function isPlainObject(o2) {
84461
- if (!hasObjectPrototype(o2)) {
84462
- return false;
84463
- }
84464
- const ctor = o2.constructor;
84465
- if (ctor === void 0) {
84466
- return true;
84467
- }
84468
- const prot = ctor.prototype;
84469
- if (!hasObjectPrototype(prot)) {
84470
- return false;
84471
- }
84472
- if (!prot.hasOwnProperty("isPrototypeOf")) {
84473
- return false;
84474
- }
84475
- if (Object.getPrototypeOf(o2) !== Object.prototype) {
84476
- return false;
84477
- }
84478
- return true;
84479
- }
84480
- function hasObjectPrototype(o2) {
84481
- return Object.prototype.toString.call(o2) === "[object Object]";
84482
- }
84483
- function replaceData(prevData, data, options) {
84484
- if (typeof options.structuralSharing === "function") {
84485
- return options.structuralSharing(prevData, data);
84486
- } else if (options.structuralSharing !== false) {
84487
- if (process.env.NODE_ENV !== "production") {
84488
- try {
84489
- return replaceEqualDeep(prevData, data);
84490
- } catch (error2) {
84491
- console.error(
84492
- `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error2}`
84493
- );
84494
- throw error2;
84495
- }
84496
- }
84497
- return replaceEqualDeep(prevData, data);
84498
- }
84499
- return data;
84500
- }
84501
- function addToEnd(items, item, max2 = 0) {
84502
- const newItems = [...items, item];
84503
- return max2 && newItems.length > max2 ? newItems.slice(1) : newItems;
84504
- }
84505
- function addToStart(items, item, max2 = 0) {
84506
- const newItems = [item, ...items];
84507
- return max2 && newItems.length > max2 ? newItems.slice(0, -1) : newItems;
84508
- }
84509
- var skipToken = Symbol();
84510
- function ensureQueryFn(options, fetchOptions) {
84511
- if (process.env.NODE_ENV !== "production") {
84512
- if (options.queryFn === skipToken) {
84513
- console.error(
84514
- `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`
84515
- );
84516
- }
84517
- }
84518
- if (!options.queryFn && fetchOptions?.initialPromise) {
84519
- return () => fetchOptions.initialPromise;
84520
- }
84521
- if (!options.queryFn || options.queryFn === skipToken) {
84522
- return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));
84523
- }
84524
- return options.queryFn;
84525
- }
84526
- function shouldThrowError(throwOnError, params) {
84527
- if (typeof throwOnError === "function") {
84528
- return throwOnError(...params);
84529
- }
84530
- return !!throwOnError;
84531
- }
84532
- var FocusManager = class extends Subscribable {
84533
- #focused;
84534
- #cleanup;
84535
- #setup;
84536
- constructor() {
84537
- super();
84538
- this.#setup = (onFocus) => {
84539
- if (!isServer && window.addEventListener) {
84540
- const listener = () => onFocus();
84541
- window.addEventListener("visibilitychange", listener, false);
84542
- return () => {
84543
- window.removeEventListener("visibilitychange", listener);
84544
- };
84545
- }
84546
- return;
84547
- };
84548
- }
84549
- onSubscribe() {
84550
- if (!this.#cleanup) {
84551
- this.setEventListener(this.#setup);
84552
- }
84553
- }
84554
- onUnsubscribe() {
84555
- if (!this.hasListeners()) {
84556
- this.#cleanup?.();
84557
- this.#cleanup = void 0;
84558
- }
84559
- }
84560
- setEventListener(setup) {
84561
- this.#setup = setup;
84562
- this.#cleanup?.();
84563
- this.#cleanup = setup((focused) => {
84564
- if (typeof focused === "boolean") {
84565
- this.setFocused(focused);
84566
- } else {
84567
- this.onFocus();
84568
- }
84569
- });
84570
- }
84571
- setFocused(focused) {
84572
- const changed = this.#focused !== focused;
84573
- if (changed) {
84574
- this.#focused = focused;
84575
- this.onFocus();
84576
- }
84577
- }
84578
- onFocus() {
84579
- const isFocused = this.isFocused();
84580
- this.listeners.forEach((listener) => {
84581
- listener(isFocused);
84582
- });
84583
- }
84584
- isFocused() {
84585
- if (typeof this.#focused === "boolean") {
84586
- return this.#focused;
84587
- }
84588
- return globalThis.document?.visibilityState !== "hidden";
84589
- }
84590
- };
84591
- var focusManager = new FocusManager();
84592
- function pendingThenable() {
84593
- let resolve;
84594
- let reject;
84595
- const thenable = new Promise((_resolve, _reject) => {
84596
- resolve = _resolve;
84597
- reject = _reject;
84598
- });
84599
- thenable.status = "pending";
84600
- thenable.catch(() => {
84601
- });
84602
- function finalize(data) {
84603
- Object.assign(thenable, data);
84604
- delete thenable.resolve;
84605
- delete thenable.reject;
84606
- }
84607
- thenable.resolve = (value2) => {
84608
- finalize({
84609
- status: "fulfilled",
84610
- value: value2
84611
- });
84612
- resolve(value2);
84613
- };
84614
- thenable.reject = (reason) => {
84615
- finalize({
84616
- status: "rejected",
84617
- reason
84618
- });
84619
- reject(reason);
84620
- };
84621
- return thenable;
84622
- }
84623
- var defaultScheduler = systemSetTimeoutZero;
84624
- function createNotifyManager() {
84625
- let queue = [];
84626
- let transactions = 0;
84627
- let notifyFn = (callback) => {
84628
- callback();
84629
- };
84630
- let batchNotifyFn = (callback) => {
84631
- callback();
84632
- };
84633
- let scheduleFn = defaultScheduler;
84634
- const schedule2 = (callback) => {
84635
- if (transactions) {
84636
- queue.push(callback);
84637
- } else {
84638
- scheduleFn(() => {
84639
- notifyFn(callback);
84640
- });
84641
- }
84642
- };
84643
- const flush = () => {
84644
- const originalQueue = queue;
84645
- queue = [];
84646
- if (originalQueue.length) {
84647
- scheduleFn(() => {
84648
- batchNotifyFn(() => {
84649
- originalQueue.forEach((callback) => {
84650
- notifyFn(callback);
84651
- });
84652
- });
84653
- });
84654
- }
84655
- };
84656
- return {
84657
- batch: (callback) => {
84658
- let result;
84659
- transactions++;
84324
+ const useInfiniteQuery = ({
84325
+ queryKey: queryKey2,
84326
+ queryFn,
84327
+ initialPageParam,
84328
+ getNextPageParam
84329
+ }) => {
84330
+ const [pages, setPages] = useState([]);
84331
+ const [error2, setError] = useState(null);
84332
+ const [isFetchingNextPage, setIsFetchingNextPage] = useState(false);
84333
+ const [status, setStatus] = useState(
84334
+ "pending"
84335
+ );
84336
+ const [hasNextPage, setHasNextPage] = useState(true);
84337
+ const [isInitialLoad, setIsInitialLoad] = useState(true);
84338
+ const abortControllerRef = useRef(null);
84339
+ const isFetchingRef = useRef(false);
84340
+ useEffect(() => {
84341
+ setPages([]);
84342
+ setError(null);
84343
+ setStatus("pending");
84344
+ setHasNextPage(true);
84345
+ setIsInitialLoad(true);
84346
+ isFetchingRef.current = false;
84347
+ }, [queryKey2]);
84348
+ const fetchPage = useCallback(
84349
+ async (pageParam) => {
84350
+ if (isFetchingRef.current) return;
84351
+ isFetchingRef.current = true;
84352
+ setError(null);
84353
+ if (abortControllerRef.current) {
84354
+ abortControllerRef.current.abort();
84355
+ }
84356
+ abortControllerRef.current = new AbortController();
84660
84357
  try {
84661
- result = callback();
84662
- } finally {
84663
- transactions--;
84664
- if (!transactions) {
84665
- flush();
84358
+ const result = await queryFn({ pageParam });
84359
+ if (abortControllerRef.current?.signal.aborted) {
84360
+ return;
84666
84361
  }
84667
- }
84668
- return result;
84669
- },
84670
- /**
84671
- * All calls to the wrapped function will be batched.
84672
- */
84673
- batchCalls: (callback) => {
84674
- return (...args) => {
84675
- schedule2(() => {
84676
- callback(...args);
84677
- });
84678
- };
84679
- },
84680
- schedule: schedule2,
84681
- /**
84682
- * Use this method to set a custom notify function.
84683
- * This can be used to for example wrap notifications with `React.act` while running tests.
84684
- */
84685
- setNotifyFunction: (fn) => {
84686
- notifyFn = fn;
84687
- },
84688
- /**
84689
- * Use this method to set a custom function to batch notifications together into a single tick.
84690
- * By default React Query will use the batch function provided by ReactDOM or React Native.
84691
- */
84692
- setBatchNotifyFunction: (fn) => {
84693
- batchNotifyFn = fn;
84694
- },
84695
- setScheduler: (fn) => {
84696
- scheduleFn = fn;
84697
- }
84698
- };
84699
- }
84700
- var notifyManager = createNotifyManager();
84701
- var OnlineManager = class extends Subscribable {
84702
- #online = true;
84703
- #cleanup;
84704
- #setup;
84705
- constructor() {
84706
- super();
84707
- this.#setup = (onOnline) => {
84708
- if (!isServer && window.addEventListener) {
84709
- const onlineListener = () => onOnline(true);
84710
- const offlineListener = () => onOnline(false);
84711
- window.addEventListener("online", onlineListener, false);
84712
- window.addEventListener("offline", offlineListener, false);
84713
- return () => {
84714
- window.removeEventListener("online", onlineListener);
84715
- window.removeEventListener("offline", offlineListener);
84716
- };
84717
- }
84718
- return;
84719
- };
84720
- }
84721
- onSubscribe() {
84722
- if (!this.#cleanup) {
84723
- this.setEventListener(this.#setup);
84724
- }
84725
- }
84726
- onUnsubscribe() {
84727
- if (!this.hasListeners()) {
84728
- this.#cleanup?.();
84729
- this.#cleanup = void 0;
84730
- }
84731
- }
84732
- setEventListener(setup) {
84733
- this.#setup = setup;
84734
- this.#cleanup?.();
84735
- this.#cleanup = setup(this.setOnline.bind(this));
84736
- }
84737
- setOnline(online) {
84738
- const changed = this.#online !== online;
84739
- if (changed) {
84740
- this.#online = online;
84741
- this.listeners.forEach((listener) => {
84742
- listener(online);
84743
- });
84744
- }
84745
- }
84746
- isOnline() {
84747
- return this.#online;
84748
- }
84749
- };
84750
- var onlineManager = new OnlineManager();
84751
- function canFetch(networkMode) {
84752
- return (networkMode ?? "online") === "online" ? onlineManager.isOnline() : true;
84753
- }
84754
- function fetchState(data, options) {
84755
- return {
84756
- fetchFailureCount: 0,
84757
- fetchFailureReason: null,
84758
- fetchStatus: canFetch(options.networkMode) ? "fetching" : "paused",
84759
- ...data === void 0 && {
84760
- error: null,
84761
- status: "pending"
84762
- }
84763
- };
84764
- }
84765
- var QueryObserver = class extends Subscribable {
84766
- constructor(client, options) {
84767
- super();
84768
- this.options = options;
84769
- this.#client = client;
84770
- this.#selectError = null;
84771
- this.#currentThenable = pendingThenable();
84772
- this.bindMethods();
84773
- this.setOptions(options);
84774
- }
84775
- #client;
84776
- #currentQuery = void 0;
84777
- #currentQueryInitialState = void 0;
84778
- #currentResult = void 0;
84779
- #currentResultState;
84780
- #currentResultOptions;
84781
- #currentThenable;
84782
- #selectError;
84783
- #selectFn;
84784
- #selectResult;
84785
- // This property keeps track of the last query with defined data.
84786
- // It will be used to pass the previous data and query to the placeholder function between renders.
84787
- #lastQueryWithDefinedData;
84788
- #staleTimeoutId;
84789
- #refetchIntervalId;
84790
- #currentRefetchInterval;
84791
- #trackedProps = /* @__PURE__ */ new Set();
84792
- bindMethods() {
84793
- this.refetch = this.refetch.bind(this);
84794
- }
84795
- onSubscribe() {
84796
- if (this.listeners.size === 1) {
84797
- this.#currentQuery.addObserver(this);
84798
- if (shouldFetchOnMount(this.#currentQuery, this.options)) {
84799
- this.#executeFetch();
84800
- } else {
84801
- this.updateResult();
84802
- }
84803
- this.#updateTimers();
84804
- }
84805
- }
84806
- onUnsubscribe() {
84807
- if (!this.hasListeners()) {
84808
- this.destroy();
84809
- }
84810
- }
84811
- shouldFetchOnReconnect() {
84812
- return shouldFetchOn(
84813
- this.#currentQuery,
84814
- this.options,
84815
- this.options.refetchOnReconnect
84816
- );
84817
- }
84818
- shouldFetchOnWindowFocus() {
84819
- return shouldFetchOn(
84820
- this.#currentQuery,
84821
- this.options,
84822
- this.options.refetchOnWindowFocus
84823
- );
84824
- }
84825
- destroy() {
84826
- this.listeners = /* @__PURE__ */ new Set();
84827
- this.#clearStaleTimeout();
84828
- this.#clearRefetchInterval();
84829
- this.#currentQuery.removeObserver(this);
84830
- }
84831
- setOptions(options) {
84832
- const prevOptions = this.options;
84833
- const prevQuery = this.#currentQuery;
84834
- this.options = this.#client.defaultQueryOptions(options);
84835
- if (this.options.enabled !== void 0 && typeof this.options.enabled !== "boolean" && typeof this.options.enabled !== "function" && typeof resolveEnabled(this.options.enabled, this.#currentQuery) !== "boolean") {
84836
- throw new Error(
84837
- "Expected enabled to be a boolean or a callback that returns a boolean"
84838
- );
84839
- }
84840
- this.#updateQuery();
84841
- this.#currentQuery.setOptions(this.options);
84842
- if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {
84843
- this.#client.getQueryCache().notify({
84844
- type: "observerOptionsUpdated",
84845
- query: this.#currentQuery,
84846
- observer: this
84847
- });
84848
- }
84849
- const mounted = this.hasListeners();
84850
- if (mounted && shouldFetchOptionally(
84851
- this.#currentQuery,
84852
- prevQuery,
84853
- this.options,
84854
- prevOptions
84855
- )) {
84856
- this.#executeFetch();
84857
- }
84858
- this.updateResult();
84859
- if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || resolveStaleTime(this.options.staleTime, this.#currentQuery) !== resolveStaleTime(prevOptions.staleTime, this.#currentQuery))) {
84860
- this.#updateStaleTimeout();
84861
- }
84862
- const nextRefetchInterval = this.#computeRefetchInterval();
84863
- if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) {
84864
- this.#updateRefetchInterval(nextRefetchInterval);
84865
- }
84866
- }
84867
- getOptimisticResult(options) {
84868
- const query = this.#client.getQueryCache().build(this.#client, options);
84869
- const result = this.createResult(query, options);
84870
- if (shouldAssignObserverCurrentProperties(this, result)) {
84871
- this.#currentResult = result;
84872
- this.#currentResultOptions = this.options;
84873
- this.#currentResultState = this.#currentQuery.state;
84874
- }
84875
- return result;
84876
- }
84877
- getCurrentResult() {
84878
- return this.#currentResult;
84879
- }
84880
- trackResult(result, onPropTracked) {
84881
- return new Proxy(result, {
84882
- get: (target, key) => {
84883
- this.trackProp(key);
84884
- onPropTracked?.(key);
84885
- if (key === "promise" && !this.options.experimental_prefetchInRender && this.#currentThenable.status === "pending") {
84886
- this.#currentThenable.reject(
84887
- new Error(
84888
- "experimental_prefetchInRender feature flag is not enabled"
84889
- )
84362
+ setPages((prevPages) => {
84363
+ const pageExists = prevPages.some(
84364
+ (page) => page.page === result.page
84890
84365
  );
84366
+ if (pageExists) {
84367
+ return prevPages;
84368
+ }
84369
+ return [...prevPages, result];
84370
+ });
84371
+ setStatus("success");
84372
+ setHasNextPage(result.hasNextPage);
84373
+ if (isInitialLoad) {
84374
+ setIsInitialLoad(false);
84891
84375
  }
84892
- return Reflect.get(target, key);
84893
- }
84894
- });
84895
- }
84896
- trackProp(key) {
84897
- this.#trackedProps.add(key);
84898
- }
84899
- getCurrentQuery() {
84900
- return this.#currentQuery;
84901
- }
84902
- refetch({ ...options } = {}) {
84903
- return this.fetch({
84904
- ...options
84905
- });
84906
- }
84907
- fetchOptimistic(options) {
84908
- const defaultedOptions = this.#client.defaultQueryOptions(options);
84909
- const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);
84910
- return query.fetch().then(() => this.createResult(query, defaultedOptions));
84911
- }
84912
- fetch(fetchOptions) {
84913
- return this.#executeFetch({
84914
- ...fetchOptions,
84915
- cancelRefetch: fetchOptions.cancelRefetch ?? true
84916
- }).then(() => {
84917
- this.updateResult();
84918
- return this.#currentResult;
84919
- });
84920
- }
84921
- #executeFetch(fetchOptions) {
84922
- this.#updateQuery();
84923
- let promise = this.#currentQuery.fetch(
84924
- this.options,
84925
- fetchOptions
84926
- );
84927
- if (!fetchOptions?.throwOnError) {
84928
- promise = promise.catch(noop2);
84929
- }
84930
- return promise;
84931
- }
84932
- #updateStaleTimeout() {
84933
- this.#clearStaleTimeout();
84934
- const staleTime = resolveStaleTime(
84935
- this.options.staleTime,
84936
- this.#currentQuery
84937
- );
84938
- if (isServer || this.#currentResult.isStale || !isValidTimeout(staleTime)) {
84939
- return;
84940
- }
84941
- const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime);
84942
- const timeout2 = time + 1;
84943
- this.#staleTimeoutId = timeoutManager.setTimeout(() => {
84944
- if (!this.#currentResult.isStale) {
84945
- this.updateResult();
84946
- }
84947
- }, timeout2);
84948
- }
84949
- #computeRefetchInterval() {
84950
- return (typeof this.options.refetchInterval === "function" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;
84951
- }
84952
- #updateRefetchInterval(nextInterval) {
84953
- this.#clearRefetchInterval();
84954
- this.#currentRefetchInterval = nextInterval;
84955
- if (isServer || resolveEnabled(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {
84956
- return;
84957
- }
84958
- this.#refetchIntervalId = timeoutManager.setInterval(() => {
84959
- if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {
84960
- this.#executeFetch();
84961
- }
84962
- }, this.#currentRefetchInterval);
84963
- }
84964
- #updateTimers() {
84965
- this.#updateStaleTimeout();
84966
- this.#updateRefetchInterval(this.#computeRefetchInterval());
84967
- }
84968
- #clearStaleTimeout() {
84969
- if (this.#staleTimeoutId) {
84970
- timeoutManager.clearTimeout(this.#staleTimeoutId);
84971
- this.#staleTimeoutId = void 0;
84972
- }
84973
- }
84974
- #clearRefetchInterval() {
84975
- if (this.#refetchIntervalId) {
84976
- timeoutManager.clearInterval(this.#refetchIntervalId);
84977
- this.#refetchIntervalId = void 0;
84978
- }
84979
- }
84980
- createResult(query, options) {
84981
- const prevQuery = this.#currentQuery;
84982
- const prevOptions = this.options;
84983
- const prevResult = this.#currentResult;
84984
- const prevResultState = this.#currentResultState;
84985
- const prevResultOptions = this.#currentResultOptions;
84986
- const queryChange = query !== prevQuery;
84987
- const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;
84988
- const { state } = query;
84989
- let newState = { ...state };
84990
- let isPlaceholderData = false;
84991
- let data;
84992
- if (options._optimisticResults) {
84993
- const mounted = this.hasListeners();
84994
- const fetchOnMount = !mounted && shouldFetchOnMount(query, options);
84995
- const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);
84996
- if (fetchOnMount || fetchOptionally) {
84997
- newState = {
84998
- ...newState,
84999
- ...fetchState(state.data, query.options)
85000
- };
85001
- }
85002
- if (options._optimisticResults === "isRestoring") {
85003
- newState.fetchStatus = "idle";
85004
- }
85005
- }
85006
- let { error: error2, errorUpdatedAt, status } = newState;
85007
- data = newState.data;
85008
- let skipSelect = false;
85009
- if (options.placeholderData !== void 0 && data === void 0 && status === "pending") {
85010
- let placeholderData;
85011
- if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {
85012
- placeholderData = prevResult.data;
85013
- skipSelect = true;
85014
- } else {
85015
- placeholderData = typeof options.placeholderData === "function" ? options.placeholderData(
85016
- this.#lastQueryWithDefinedData?.state.data,
85017
- this.#lastQueryWithDefinedData
85018
- ) : options.placeholderData;
85019
- }
85020
- if (placeholderData !== void 0) {
85021
- status = "success";
85022
- data = replaceData(
85023
- prevResult?.data,
85024
- placeholderData,
85025
- options
85026
- );
85027
- isPlaceholderData = true;
85028
- }
85029
- }
85030
- if (options.select && data !== void 0 && !skipSelect) {
85031
- if (prevResult && data === prevResultState?.data && options.select === this.#selectFn) {
85032
- data = this.#selectResult;
85033
- } else {
85034
- try {
85035
- this.#selectFn = options.select;
85036
- data = options.select(data);
85037
- data = replaceData(prevResult?.data, data, options);
85038
- this.#selectResult = data;
85039
- this.#selectError = null;
85040
- } catch (selectError) {
85041
- this.#selectError = selectError;
85042
- }
85043
- }
85044
- }
85045
- if (this.#selectError) {
85046
- error2 = this.#selectError;
85047
- data = this.#selectResult;
85048
- errorUpdatedAt = Date.now();
85049
- status = "error";
85050
- }
85051
- const isFetching = newState.fetchStatus === "fetching";
85052
- const isPending = status === "pending";
85053
- const isError = status === "error";
85054
- const isLoading = isPending && isFetching;
85055
- const hasData = data !== void 0;
85056
- const result = {
85057
- status,
85058
- fetchStatus: newState.fetchStatus,
85059
- isPending,
85060
- isSuccess: status === "success",
85061
- isError,
85062
- isInitialLoading: isLoading,
85063
- isLoading,
85064
- data,
85065
- dataUpdatedAt: newState.dataUpdatedAt,
85066
- error: error2,
85067
- errorUpdatedAt,
85068
- failureCount: newState.fetchFailureCount,
85069
- failureReason: newState.fetchFailureReason,
85070
- errorUpdateCount: newState.errorUpdateCount,
85071
- isFetched: newState.dataUpdateCount > 0 || newState.errorUpdateCount > 0,
85072
- isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,
85073
- isFetching,
85074
- isRefetching: isFetching && !isPending,
85075
- isLoadingError: isError && !hasData,
85076
- isPaused: newState.fetchStatus === "paused",
85077
- isPlaceholderData,
85078
- isRefetchError: isError && hasData,
85079
- isStale: isStale(query, options),
85080
- refetch: this.refetch,
85081
- promise: this.#currentThenable,
85082
- isEnabled: resolveEnabled(options.enabled, query) !== false
85083
- };
85084
- const nextResult = result;
85085
- if (this.options.experimental_prefetchInRender) {
85086
- const finalizeThenableIfPossible = (thenable) => {
85087
- if (nextResult.status === "error") {
85088
- thenable.reject(nextResult.error);
85089
- } else if (nextResult.data !== void 0) {
85090
- thenable.resolve(nextResult.data);
84376
+ } catch (error_) {
84377
+ if (abortControllerRef.current?.signal.aborted) {
84378
+ return;
85091
84379
  }
85092
- };
85093
- const recreateThenable = () => {
85094
- const pending = this.#currentThenable = nextResult.promise = pendingThenable();
85095
- finalizeThenableIfPossible(pending);
85096
- };
85097
- const prevThenable = this.#currentThenable;
85098
- switch (prevThenable.status) {
85099
- case "pending":
85100
- if (query.queryHash === prevQuery.queryHash) {
85101
- finalizeThenableIfPossible(prevThenable);
85102
- }
85103
- break;
85104
- case "fulfilled":
85105
- if (nextResult.status === "error" || nextResult.data !== prevThenable.value) {
85106
- recreateThenable();
85107
- }
85108
- break;
85109
- case "rejected":
85110
- if (nextResult.status !== "error" || nextResult.error !== prevThenable.reason) {
85111
- recreateThenable();
85112
- }
85113
- break;
85114
- }
85115
- }
85116
- return nextResult;
85117
- }
85118
- updateResult() {
85119
- const prevResult = this.#currentResult;
85120
- const nextResult = this.createResult(this.#currentQuery, this.options);
85121
- this.#currentResultState = this.#currentQuery.state;
85122
- this.#currentResultOptions = this.options;
85123
- if (this.#currentResultState.data !== void 0) {
85124
- this.#lastQueryWithDefinedData = this.#currentQuery;
85125
- }
85126
- if (shallowEqualObjects(nextResult, prevResult)) {
85127
- return;
85128
- }
85129
- this.#currentResult = nextResult;
85130
- const shouldNotifyListeners = () => {
85131
- if (!prevResult) {
85132
- return true;
85133
- }
85134
- const { notifyOnChangeProps } = this.options;
85135
- const notifyOnChangePropsValue = typeof notifyOnChangeProps === "function" ? notifyOnChangeProps() : notifyOnChangeProps;
85136
- if (notifyOnChangePropsValue === "all" || !notifyOnChangePropsValue && !this.#trackedProps.size) {
85137
- return true;
85138
- }
85139
- const includedProps = new Set(
85140
- notifyOnChangePropsValue ?? this.#trackedProps
85141
- );
85142
- if (this.options.throwOnError) {
85143
- includedProps.add("error");
84380
+ const error22 = error_ instanceof Error ? error_ : new Error("Unknown error occurred");
84381
+ setError(error22);
84382
+ setStatus("error");
84383
+ } finally {
84384
+ isFetchingRef.current = false;
84385
+ setIsFetchingNextPage(false);
85144
84386
  }
85145
- return Object.keys(this.#currentResult).some((key) => {
85146
- const typedKey = key;
85147
- const changed = this.#currentResult[typedKey] !== prevResult[typedKey];
85148
- return changed && includedProps.has(typedKey);
85149
- });
85150
- };
85151
- this.#notify({ listeners: shouldNotifyListeners() });
85152
- }
85153
- #updateQuery() {
85154
- const query = this.#client.getQueryCache().build(this.#client, this.options);
85155
- if (query === this.#currentQuery) {
84387
+ },
84388
+ [queryFn, isInitialLoad]
84389
+ );
84390
+ const fetchNextPage = useCallback(() => {
84391
+ if (isFetchingRef.current || !hasNextPage) return;
84392
+ const lastPage = pages.at(-1);
84393
+ if (!lastPage) return;
84394
+ const nextPageParam = getNextPageParam(lastPage);
84395
+ if (nextPageParam === void 0) {
84396
+ setHasNextPage(false);
85156
84397
  return;
85157
84398
  }
85158
- const prevQuery = this.#currentQuery;
85159
- this.#currentQuery = query;
85160
- this.#currentQueryInitialState = query.state;
85161
- if (this.hasListeners()) {
85162
- prevQuery?.removeObserver(this);
85163
- query.addObserver(this);
85164
- }
85165
- }
85166
- onQueryUpdate() {
85167
- this.updateResult();
85168
- if (this.hasListeners()) {
85169
- this.#updateTimers();
85170
- }
85171
- }
85172
- #notify(notifyOptions) {
85173
- notifyManager.batch(() => {
85174
- if (notifyOptions.listeners) {
85175
- this.listeners.forEach((listener) => {
85176
- listener(this.#currentResult);
85177
- });
85178
- }
85179
- this.#client.getQueryCache().notify({
85180
- query: this.#currentQuery,
85181
- type: "observerResultsUpdated"
85182
- });
85183
- });
85184
- }
85185
- };
85186
- function shouldLoadOnMount(query, options) {
85187
- return resolveEnabled(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === "error" && options.retryOnMount === false);
85188
- }
85189
- function shouldFetchOnMount(query, options) {
85190
- return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);
85191
- }
85192
- function shouldFetchOn(query, options, field) {
85193
- if (resolveEnabled(options.enabled, query) !== false && resolveStaleTime(options.staleTime, query) !== "static") {
85194
- const value2 = typeof field === "function" ? field(query) : field;
85195
- return value2 === "always" || value2 !== false && isStale(query, options);
85196
- }
85197
- return false;
85198
- }
85199
- function shouldFetchOptionally(query, prevQuery, options, prevOptions) {
85200
- return (query !== prevQuery || resolveEnabled(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== "error") && isStale(query, options);
85201
- }
85202
- function isStale(query, options) {
85203
- return resolveEnabled(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));
85204
- }
85205
- function shouldAssignObserverCurrentProperties(observer, optimisticResult) {
85206
- if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {
85207
- return true;
85208
- }
85209
- return false;
85210
- }
85211
- function infiniteQueryBehavior(pages) {
85212
- return {
85213
- onFetch: (context, query) => {
85214
- const options = context.options;
85215
- const direction = context.fetchOptions?.meta?.fetchMore?.direction;
85216
- const oldPages = context.state.data?.pages || [];
85217
- const oldPageParams = context.state.data?.pageParams || [];
85218
- let result = { pages: [], pageParams: [] };
85219
- let currentPage = 0;
85220
- const fetchFn = async () => {
85221
- let cancelled = false;
85222
- const addSignalProperty = (object4) => {
85223
- Object.defineProperty(object4, "signal", {
85224
- enumerable: true,
85225
- get: () => {
85226
- if (context.signal.aborted) {
85227
- cancelled = true;
85228
- } else {
85229
- context.signal.addEventListener("abort", () => {
85230
- cancelled = true;
85231
- });
85232
- }
85233
- return context.signal;
85234
- }
85235
- });
85236
- };
85237
- const queryFn = ensureQueryFn(context.options, context.fetchOptions);
85238
- const fetchPage = async (data, param, previous2) => {
85239
- if (cancelled) {
85240
- return Promise.reject();
85241
- }
85242
- if (param == null && data.pages.length) {
85243
- return Promise.resolve(data);
85244
- }
85245
- const createQueryFnContext = () => {
85246
- const queryFnContext2 = {
85247
- client: context.client,
85248
- queryKey: context.queryKey,
85249
- pageParam: param,
85250
- direction: previous2 ? "backward" : "forward",
85251
- meta: context.options.meta
85252
- };
85253
- addSignalProperty(queryFnContext2);
85254
- return queryFnContext2;
85255
- };
85256
- const queryFnContext = createQueryFnContext();
85257
- const page = await queryFn(queryFnContext);
85258
- const { maxPages } = context.options;
85259
- const addTo = previous2 ? addToStart : addToEnd;
85260
- return {
85261
- pages: addTo(data.pages, page, maxPages),
85262
- pageParams: addTo(data.pageParams, param, maxPages)
85263
- };
85264
- };
85265
- if (direction && oldPages.length) {
85266
- const previous2 = direction === "backward";
85267
- const pageParamFn = previous2 ? getPreviousPageParam : getNextPageParam;
85268
- const oldData = {
85269
- pages: oldPages,
85270
- pageParams: oldPageParams
85271
- };
85272
- const param = pageParamFn(options, oldData);
85273
- result = await fetchPage(oldData, param, previous2);
85274
- } else {
85275
- const remainingPages = oldPages.length;
85276
- do {
85277
- const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);
85278
- if (currentPage > 0 && param == null) {
85279
- break;
85280
- }
85281
- result = await fetchPage(result, param);
85282
- currentPage++;
85283
- } while (currentPage < remainingPages);
85284
- }
85285
- return result;
85286
- };
85287
- if (context.options.persister) {
85288
- context.fetchFn = () => {
85289
- return context.options.persister?.(
85290
- fetchFn,
85291
- {
85292
- client: context.client,
85293
- queryKey: context.queryKey,
85294
- meta: context.options.meta,
85295
- signal: context.signal
85296
- },
85297
- query
85298
- );
85299
- };
85300
- } else {
85301
- context.fetchFn = fetchFn;
85302
- }
84399
+ setIsFetchingNextPage(true);
84400
+ fetchPage(nextPageParam);
84401
+ }, [pages, hasNextPage, getNextPageParam, fetchPage]);
84402
+ useEffect(() => {
84403
+ if (isInitialLoad && pages.length === 0) {
84404
+ fetchPage(initialPageParam);
85303
84405
  }
85304
- };
85305
- }
85306
- function getNextPageParam(options, { pages, pageParams }) {
85307
- const lastIndex = pages.length - 1;
85308
- return pages.length > 0 ? options.getNextPageParam(
85309
- pages[lastIndex],
85310
- pages,
85311
- pageParams[lastIndex],
85312
- pageParams
85313
- ) : void 0;
85314
- }
85315
- function getPreviousPageParam(options, { pages, pageParams }) {
85316
- return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;
85317
- }
85318
- function hasNextPage(options, data) {
85319
- if (!data) return false;
85320
- return getNextPageParam(options, data) != null;
85321
- }
85322
- function hasPreviousPage(options, data) {
85323
- if (!data || !options.getPreviousPageParam) return false;
85324
- return getPreviousPageParam(options, data) != null;
85325
- }
85326
- var InfiniteQueryObserver = class extends QueryObserver {
85327
- constructor(client, options) {
85328
- super(client, options);
85329
- }
85330
- bindMethods() {
85331
- super.bindMethods();
85332
- this.fetchNextPage = this.fetchNextPage.bind(this);
85333
- this.fetchPreviousPage = this.fetchPreviousPage.bind(this);
85334
- }
85335
- setOptions(options) {
85336
- super.setOptions({
85337
- ...options,
85338
- behavior: infiniteQueryBehavior()
85339
- });
85340
- }
85341
- getOptimisticResult(options) {
85342
- options.behavior = infiniteQueryBehavior();
85343
- return super.getOptimisticResult(options);
85344
- }
85345
- fetchNextPage(options) {
85346
- return this.fetch({
85347
- ...options,
85348
- meta: {
85349
- fetchMore: { direction: "forward" }
85350
- }
85351
- });
85352
- }
85353
- fetchPreviousPage(options) {
85354
- return this.fetch({
85355
- ...options,
85356
- meta: {
85357
- fetchMore: { direction: "backward" }
84406
+ }, [isInitialLoad, pages.length, fetchPage, initialPageParam]);
84407
+ useEffect(() => {
84408
+ return () => {
84409
+ if (abortControllerRef.current) {
84410
+ abortControllerRef.current.abort();
85358
84411
  }
85359
- });
85360
- }
85361
- createResult(query, options) {
85362
- const { state } = query;
85363
- const parentResult = super.createResult(query, options);
85364
- const { isFetching, isRefetching, isError, isRefetchError } = parentResult;
85365
- const fetchDirection = state.fetchMeta?.fetchMore?.direction;
85366
- const isFetchNextPageError = isError && fetchDirection === "forward";
85367
- const isFetchingNextPage = isFetching && fetchDirection === "forward";
85368
- const isFetchPreviousPageError = isError && fetchDirection === "backward";
85369
- const isFetchingPreviousPage = isFetching && fetchDirection === "backward";
85370
- const result = {
85371
- ...parentResult,
85372
- fetchNextPage: this.fetchNextPage,
85373
- fetchPreviousPage: this.fetchPreviousPage,
85374
- hasNextPage: hasNextPage(options, state.data),
85375
- hasPreviousPage: hasPreviousPage(options, state.data),
85376
- isFetchNextPageError,
85377
- isFetchingNextPage,
85378
- isFetchPreviousPageError,
85379
- isFetchingPreviousPage,
85380
- isRefetchError: isRefetchError && !isFetchNextPageError && !isFetchPreviousPageError,
85381
- isRefetching: isRefetching && !isFetchingNextPage && !isFetchingPreviousPage
85382
84412
  };
85383
- return result;
85384
- }
85385
- };
85386
- var QueryClientContext = React.createContext(
85387
- void 0
85388
- );
85389
- var useQueryClient = (queryClient) => {
85390
- const client = React.useContext(QueryClientContext);
85391
- if (!client) {
85392
- throw new Error("No QueryClient set, use QueryClientProvider to set one");
85393
- }
85394
- return client;
85395
- };
85396
- var IsRestoringContext = React.createContext(false);
85397
- var useIsRestoring = () => React.useContext(IsRestoringContext);
85398
- IsRestoringContext.Provider;
85399
- function createValue() {
85400
- let isReset = false;
84413
+ }, []);
85401
84414
  return {
85402
- clearReset: () => {
85403
- isReset = false;
85404
- },
85405
- reset: () => {
85406
- isReset = true;
85407
- },
85408
- isReset: () => {
85409
- return isReset;
85410
- }
84415
+ data: pages.length > 0 ? { pages } : void 0,
84416
+ error: error2,
84417
+ fetchNextPage,
84418
+ hasNextPage,
84419
+ isFetchingNextPage,
84420
+ status
85411
84421
  };
85412
- }
85413
- var QueryErrorResetBoundaryContext = React.createContext(createValue());
85414
- var useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);
85415
- var ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => {
85416
- if (options.suspense || options.throwOnError || options.experimental_prefetchInRender) {
85417
- if (!errorResetBoundary.isReset()) {
85418
- options.retryOnMount = false;
85419
- }
85420
- }
85421
84422
  };
85422
- var useClearResetErrorBoundary = (errorResetBoundary) => {
85423
- React.useEffect(() => {
85424
- errorResetBoundary.clearReset();
85425
- }, [errorResetBoundary]);
85426
- };
85427
- var getHasError = ({
85428
- result,
85429
- errorResetBoundary,
85430
- throwOnError,
85431
- query,
85432
- suspense
85433
- }) => {
85434
- return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));
85435
- };
85436
- var ensureSuspenseTimers = (defaultedOptions) => {
85437
- if (defaultedOptions.suspense) {
85438
- const MIN_SUSPENSE_TIME_MS = 1e3;
85439
- const clamp = (value2) => value2 === "static" ? value2 : Math.max(value2 ?? MIN_SUSPENSE_TIME_MS, MIN_SUSPENSE_TIME_MS);
85440
- const originalStaleTime = defaultedOptions.staleTime;
85441
- defaultedOptions.staleTime = typeof originalStaleTime === "function" ? (...args) => clamp(originalStaleTime(...args)) : clamp(originalStaleTime);
85442
- if (typeof defaultedOptions.gcTime === "number") {
85443
- defaultedOptions.gcTime = Math.max(
85444
- defaultedOptions.gcTime,
85445
- MIN_SUSPENSE_TIME_MS
85446
- );
85447
- }
85448
- }
85449
- };
85450
- var willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;
85451
- var shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;
85452
- var fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {
85453
- errorResetBoundary.clearReset();
85454
- });
85455
- function useBaseQuery(options, Observer, queryClient) {
85456
- if (process.env.NODE_ENV !== "production") {
85457
- if (typeof options !== "object" || Array.isArray(options)) {
85458
- throw new Error(
85459
- 'Bad argument type. Starting with v5, only the "Object" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'
85460
- );
85461
- }
85462
- }
85463
- const isRestoring = useIsRestoring();
85464
- const errorResetBoundary = useQueryErrorResetBoundary();
85465
- const client = useQueryClient();
85466
- const defaultedOptions = client.defaultQueryOptions(options);
85467
- client.getDefaultOptions().queries?._experimental_beforeQuery?.(
85468
- defaultedOptions
85469
- );
85470
- if (process.env.NODE_ENV !== "production") {
85471
- if (!defaultedOptions.queryFn) {
85472
- console.error(
85473
- `[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`
85474
- );
85475
- }
85476
- }
85477
- defaultedOptions._optimisticResults = isRestoring ? "isRestoring" : "optimistic";
85478
- ensureSuspenseTimers(defaultedOptions);
85479
- ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary);
85480
- useClearResetErrorBoundary(errorResetBoundary);
85481
- const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash);
85482
- const [observer] = React.useState(
85483
- () => new Observer(
85484
- client,
85485
- defaultedOptions
85486
- )
85487
- );
85488
- const result = observer.getOptimisticResult(defaultedOptions);
85489
- const shouldSubscribe = !isRestoring && options.subscribed !== false;
85490
- React.useSyncExternalStore(
85491
- React.useCallback(
85492
- (onStoreChange) => {
85493
- const unsubscribe = shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop2;
85494
- observer.updateResult();
85495
- return unsubscribe;
85496
- },
85497
- [observer, shouldSubscribe]
85498
- ),
85499
- () => observer.getCurrentResult(),
85500
- () => observer.getCurrentResult()
85501
- );
85502
- React.useEffect(() => {
85503
- observer.setOptions(defaultedOptions);
85504
- }, [defaultedOptions, observer]);
85505
- if (shouldSuspend(defaultedOptions, result)) {
85506
- throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);
85507
- }
85508
- if (getHasError({
85509
- result,
85510
- errorResetBoundary,
85511
- throwOnError: defaultedOptions.throwOnError,
85512
- query: client.getQueryCache().get(defaultedOptions.queryHash),
85513
- suspense: defaultedOptions.suspense
85514
- })) {
85515
- throw result.error;
85516
- }
85517
- client.getDefaultOptions().queries?._experimental_afterQuery?.(
85518
- defaultedOptions,
85519
- result
85520
- );
85521
- if (defaultedOptions.experimental_prefetchInRender && !isServer && willFetch(result, isRestoring)) {
85522
- const promise = isNewCacheEntry ? (
85523
- // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted
85524
- fetchOptimistic(defaultedOptions, observer, errorResetBoundary)
85525
- ) : (
85526
- // subscribe to the "cache promise" so that we can finalize the currentThenable once data comes in
85527
- client.getQueryCache().get(defaultedOptions.queryHash)?.promise
85528
- );
85529
- promise?.catch(noop2).finally(() => {
85530
- observer.updateResult();
85531
- });
85532
- }
85533
- return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;
85534
- }
85535
- function useInfiniteQuery(options, queryClient) {
85536
- return useBaseQuery(
85537
- options,
85538
- InfiniteQueryObserver
85539
- );
85540
- }
85541
84423
  const ResizableTitle = (props) => {
85542
84424
  const { onResize: onResize2, width, ...restProps } = props;
85543
84425
  if (!width || !onResize2) {
@@ -85581,17 +84463,41 @@ const ResizableTitle = (props) => {
85581
84463
  ] });
85582
84464
  };
85583
84465
  const InfiniteScrollTable = ({
85584
- instanceId,
85585
84466
  columns: initialColumns,
85586
84467
  fetchService,
85587
- title,
85588
84468
  scrollHeight = 600,
85589
- scrollWidth = 1300
84469
+ scrollWidth = 1300,
84470
+ onChange,
84471
+ rowSelection,
84472
+ onRowClick,
84473
+ onRowSelectionChange,
84474
+ onDataChange
85590
84475
  }) => {
85591
84476
  const observer = useRef();
85592
84477
  const [scrollableNode, setScrollableNode] = useState(
85593
84478
  null
85594
84479
  );
84480
+ const [selectedRowKeys, setSelectedRowKeys] = useState([]);
84481
+ const [selectedRows, setSelectedRows] = useState([]);
84482
+ const handleRowSelection = useCallback(
84483
+ (newSelectedRowKeys, newSelectedRows) => {
84484
+ setSelectedRowKeys(newSelectedRowKeys);
84485
+ setSelectedRows(newSelectedRows);
84486
+ if (rowSelection?.onChange) {
84487
+ rowSelection.onChange(newSelectedRowKeys, newSelectedRows);
84488
+ }
84489
+ },
84490
+ [rowSelection]
84491
+ );
84492
+ const defaultRowSelection2 = {
84493
+ type: "checkbox",
84494
+ selectedRowKeys,
84495
+ onChange: handleRowSelection,
84496
+ getCheckboxProps: (record) => ({
84497
+ name: record.id || record.key || String(record)
84498
+ })
84499
+ };
84500
+ const finalRowSelection = rowSelection || defaultRowSelection2;
85595
84501
  const tableContainerRef = useCallback((node2) => {
85596
84502
  if (node2 !== null) {
85597
84503
  const scrollNode = node2.querySelector(".ant-table-body");
@@ -85602,7 +84508,7 @@ const InfiniteScrollTable = ({
85602
84508
  data,
85603
84509
  error: error2,
85604
84510
  fetchNextPage,
85605
- hasNextPage: hasNextPage2,
84511
+ hasNextPage,
85606
84512
  isFetchingNextPage,
85607
84513
  status
85608
84514
  } = useInfiniteQuery({
@@ -85632,7 +84538,7 @@ const InfiniteScrollTable = ({
85632
84538
  if (observer.current) observer.current.disconnect();
85633
84539
  observer.current = new IntersectionObserver(
85634
84540
  (entries) => {
85635
- if (entries[0].isIntersecting && hasNextPage2) {
84541
+ if (entries[0].isIntersecting && hasNextPage) {
85636
84542
  fetchNextPage();
85637
84543
  }
85638
84544
  },
@@ -85640,10 +84546,36 @@ const InfiniteScrollTable = ({
85640
84546
  );
85641
84547
  if (node2) observer.current.observe(node2);
85642
84548
  },
85643
- [isFetchingNextPage, hasNextPage2, fetchNextPage, scrollableNode]
84549
+ [isFetchingNextPage, hasNextPage, fetchNextPage, scrollableNode]
85644
84550
  );
85645
84551
  const dataSource = data?.pages.flatMap((page) => page.docs) ?? [];
85646
- data?.pages?.[0]?.totalDocs ?? 0;
84552
+ const totalDocs = data?.pages?.[0]?.totalDocs ?? 0;
84553
+ useEffect(() => {
84554
+ if (onRowSelectionChange) {
84555
+ const wrappedSetSelectedRowKeys = (keys2) => {
84556
+ setSelectedRowKeys(keys2);
84557
+ };
84558
+ onRowSelectionChange(wrappedSetSelectedRowKeys);
84559
+ }
84560
+ }, [onRowSelectionChange]);
84561
+ const dataSentRef = useRef(false);
84562
+ useEffect(() => {
84563
+ if (onDataChange && dataSource.length > 0 && !dataSentRef.current) {
84564
+ onDataChange(dataSource);
84565
+ dataSentRef.current = true;
84566
+ }
84567
+ }, [dataSource, onDataChange]);
84568
+ useEffect(() => {
84569
+ if (onChange) {
84570
+ const dataChangeEvent = {
84571
+ totalPages: data?.pages?.length ?? 0,
84572
+ currentPage: data?.pages?.[0]?.page ?? 0,
84573
+ resultsShown: dataSource.length,
84574
+ totalResults: totalDocs
84575
+ };
84576
+ onChange(dataChangeEvent);
84577
+ }
84578
+ }, [data]);
85647
84579
  if (status === "pending") {
85648
84580
  return /* @__PURE__ */ jsx(
85649
84581
  "div",
@@ -85664,79 +84596,73 @@ const InfiniteScrollTable = ({
85664
84596
  }
85665
84597
  );
85666
84598
  }
85667
- return /* @__PURE__ */ jsxs(
85668
- "div",
85669
- {
85670
- style: {
85671
- backgroundColor: "white",
85672
- padding: "24px",
85673
- borderRadius: "8px",
85674
- boxShadow: "0 2px 8px rgba(0, 0, 0, 0.1)",
85675
- marginBottom: "24px"
85676
- },
85677
- ref: tableContainerRef,
85678
- children: [
85679
- /* @__PURE__ */ jsxs("div", { style: { position: "relative" }, children: [
85680
- /* @__PURE__ */ jsx("style", { children: `
84599
+ return /* @__PURE__ */ jsxs("div", { ref: tableContainerRef, children: [
84600
+ /* @__PURE__ */ jsxs("div", { style: { position: "relative" }, ref: tableContainerRef, children: [
84601
+ /* @__PURE__ */ jsx("style", { children: `
85681
84602
  .infinite-scroll-table .ant-pagination {
85682
84603
  display: none !important;
85683
84604
  }
85684
84605
  ` }),
85685
- /* @__PURE__ */ jsx("div", { className: "infinite-scroll-table", children: /* @__PURE__ */ jsx(
85686
- ForwardTable,
85687
- {
85688
- dataSource,
85689
- columns: resizableColumns,
85690
- components: { header: { cell: ResizableTitle } },
85691
- rowKey: "id",
85692
- pagination: false,
85693
- showSorterTooltip: false,
85694
- size: "small",
85695
- scroll: { y: scrollHeight, x: scrollWidth },
85696
- onChange: () => {
85697
- },
85698
- onRow: (record, index2) => {
85699
- if (index2 === dataSource.length - 1) {
85700
- return { ref: lastRowRef };
85701
- }
85702
- return {};
85703
- }
84606
+ /* @__PURE__ */ jsx("div", { className: "infinite-scroll-table", children: /* @__PURE__ */ jsx(
84607
+ ForwardTable,
84608
+ {
84609
+ dataSource,
84610
+ columns: resizableColumns,
84611
+ components: { header: { cell: ResizableTitle } },
84612
+ rowKey: "id",
84613
+ pagination: false,
84614
+ showSorterTooltip: false,
84615
+ size: "small",
84616
+ scroll: { y: scrollHeight, x: scrollWidth },
84617
+ onChange: () => {
84618
+ },
84619
+ rowSelection: finalRowSelection,
84620
+ onRow: (record, index2) => {
84621
+ const rowProps = {};
84622
+ if (index2 === dataSource.length - 1) {
84623
+ rowProps.ref = lastRowRef;
85704
84624
  }
85705
- ) }),
85706
- isFetchingNextPage && /* @__PURE__ */ jsx(
85707
- "div",
85708
- {
85709
- style: {
85710
- position: "absolute",
85711
- bottom: 0,
85712
- left: 0,
85713
- width: "100%",
85714
- padding: "16px",
85715
- display: "flex",
85716
- justifyContent: "center",
85717
- alignItems: "center",
85718
- backgroundColor: "rgba(255, 255, 255, 0.7)",
85719
- backdropFilter: "blur(2px)",
85720
- zIndex: 10
85721
- },
85722
- children: /* @__PURE__ */ jsx(Spin, {})
84625
+ if (onRowClick && index2 !== void 0) {
84626
+ rowProps.onClick = (event) => {
84627
+ onRowClick(record, index2, event);
84628
+ };
85723
84629
  }
85724
- )
85725
- ] }),
85726
- !hasNextPage2 && /* @__PURE__ */ jsx(
85727
- "div",
85728
- {
85729
- style: {
85730
- textAlign: "center",
85731
- padding: "20px",
85732
- borderTop: "1px solid #f0f0f0"
85733
- },
85734
- children: /* @__PURE__ */ jsx(Typography$1.Text, { type: "secondary", children: "No more rows to load." })
84630
+ return rowProps;
85735
84631
  }
85736
- )
85737
- ]
85738
- }
85739
- );
84632
+ }
84633
+ ) }),
84634
+ isFetchingNextPage && /* @__PURE__ */ jsx(
84635
+ "div",
84636
+ {
84637
+ style: {
84638
+ position: "absolute",
84639
+ bottom: 0,
84640
+ left: 0,
84641
+ width: "100%",
84642
+ padding: "16px",
84643
+ display: "flex",
84644
+ justifyContent: "center",
84645
+ alignItems: "center",
84646
+ backgroundColor: "rgba(255, 255, 255, 0.7)",
84647
+ backdropFilter: "blur(2px)",
84648
+ zIndex: 10
84649
+ },
84650
+ children: /* @__PURE__ */ jsx(Spin, {})
84651
+ }
84652
+ )
84653
+ ] }),
84654
+ !hasNextPage && /* @__PURE__ */ jsx(
84655
+ "div",
84656
+ {
84657
+ style: {
84658
+ textAlign: "center",
84659
+ padding: "20px",
84660
+ borderTop: "1px solid #f0f0f0"
84661
+ },
84662
+ children: /* @__PURE__ */ jsx(Typography$1.Text, { type: "secondary", children: "No more rows to load." })
84663
+ }
84664
+ )
84665
+ ] });
85740
84666
  };
85741
84667
  const getRowKey = (record, rowKey, index2, enableValidation = true) => {
85742
84668
  try {
@@ -85788,6 +84714,8 @@ function Table({
85788
84714
  onChange,
85789
84715
  rowSelection,
85790
84716
  onRowClick,
84717
+ onRowSelectionChange,
84718
+ onDataChange,
85791
84719
  pagination,
85792
84720
  isMainContentCell = false,
85793
84721
  isInfiniteScroll = false,
@@ -85842,7 +84770,9 @@ function Table({
85842
84770
  fetchService: infiniteScrollConfig.fetchService,
85843
84771
  title: infiniteScrollConfig.title,
85844
84772
  scrollHeight: infiniteScrollConfig.scrollHeight,
85845
- scrollWidth: infiniteScrollConfig.scrollWidth
84773
+ scrollWidth: infiniteScrollConfig.scrollWidth,
84774
+ onRowSelectionChange,
84775
+ onDataChange
85846
84776
  }
85847
84777
  );
85848
84778
  }
@@ -86395,7 +85325,8 @@ const GroupsRow = ({ groups, onGroupItemClick }) => {
86395
85325
  const SecondaryTableControlsRow = ({
86396
85326
  groups,
86397
85327
  totalRecords,
86398
- onChange
85328
+ onChange,
85329
+ infiniteScrollData
86399
85330
  }) => {
86400
85331
  const onGroupItemClick = (title, item) => {
86401
85332
  const groupItemClickEvent = {
@@ -86415,7 +85346,8 @@ const SecondaryTableControlsRow = ({
86415
85346
  },
86416
85347
  children: [
86417
85348
  /* @__PURE__ */ jsx(GroupsRow, { groups, onGroupItemClick }),
86418
- (totalRecords ?? 0) > 0 ? /* @__PURE__ */ jsx(Typography, { variant: "body2", color: "#6C6C6C", children: `${totalRecords} results` }) : null
85349
+ (totalRecords ?? 0) > 0 && !infiniteScrollData ? /* @__PURE__ */ jsx(Typography, { variant: "body2", color: "#6C6C6C", children: `${totalRecords} results` }) : null,
85350
+ infiniteScrollData ? /* @__PURE__ */ jsx(Typography, { variant: "body2", color: "#6C6C6C", children: `Loaded ${infiniteScrollData.resultsShown} of ${infiniteScrollData.totalResults} Results` }) : null
86419
85351
  ]
86420
85352
  }
86421
85353
  );
@@ -86450,7 +85382,8 @@ const TableControls = ({
86450
85382
  {
86451
85383
  groups: secondaryTableRowData.groups,
86452
85384
  totalRecords: secondaryTableRowData.totalRecords,
86453
- onChange: onSecondaryChange
85385
+ onChange: onSecondaryChange,
85386
+ infiniteScrollData: secondaryTableRowData.infiniteScrollData
86454
85387
  }
86455
85388
  ) : null
86456
85389
  ] });
@@ -86460,14 +85393,28 @@ const TableWithControls = ({
86460
85393
  tableControlsData: tableControlsData2,
86461
85394
  onChange,
86462
85395
  onRowClick,
85396
+ onRowSelectionChange,
85397
+ onDataChange,
86463
85398
  tableType = "table",
86464
85399
  isInfiniteScroll,
86465
- // Deprecated: use tableType instead
86466
85400
  infiniteScrollConfig,
86467
85401
  paginationStyle
86468
85402
  }) => {
85403
+ const [infiniteScrollData, setInfiniteScrollData] = useState({
85404
+ totalPages: 0,
85405
+ currentPage: 0,
85406
+ resultsShown: 0,
85407
+ totalResults: 0
85408
+ });
86469
85409
  const { primaryTableRowData, secondaryTableRowData } = tableControlsData2;
86470
- const { dataSource, columns, rowSelection, hasSettings, hasFilter } = tableData;
85410
+ const {
85411
+ dataSource,
85412
+ columns,
85413
+ rowSelection,
85414
+ hasSettings,
85415
+ hasFilter,
85416
+ onRowClick: tableOnRowClick
85417
+ } = tableData;
86471
85418
  const actualTableType = isInfiniteScroll ? "infiniteScroll" : tableType;
86472
85419
  const onTableControlsChange = (event) => {
86473
85420
  onChange(event);
@@ -86478,6 +85425,12 @@ const TableWithControls = ({
86478
85425
  payload: { value: "tableChange", pagination, filters, sorter }
86479
85426
  });
86480
85427
  };
85428
+ const onInfiniteScrollTableChange = (event) => {
85429
+ onChange({
85430
+ event: "infiniteScrollTableChange",
85431
+ payload: { value: "infiniteScrollTableChange", event }
85432
+ });
85433
+ };
86481
85434
  const renderTable = () => {
86482
85435
  switch (actualTableType) {
86483
85436
  case "infiniteScroll": {
@@ -86500,7 +85453,12 @@ const TableWithControls = ({
86500
85453
  fetchService: infiniteScrollConfig.fetchService,
86501
85454
  title: infiniteScrollConfig.title,
86502
85455
  scrollHeight: infiniteScrollConfig.scrollHeight,
86503
- scrollWidth: infiniteScrollConfig.scrollWidth
85456
+ scrollWidth: infiniteScrollConfig.scrollWidth,
85457
+ onChange: onInfiniteScrollTableChange,
85458
+ rowSelection,
85459
+ onRowClick: tableOnRowClick || onRowClick,
85460
+ onRowSelectionChange,
85461
+ onDataChange
86504
85462
  }
86505
85463
  );
86506
85464
  }
@@ -86526,7 +85484,8 @@ const TableWithControls = ({
86526
85484
  columns,
86527
85485
  rowSelection,
86528
85486
  onChange: onTableChange,
86529
- onRowClick
85487
+ onRowClick,
85488
+ onRowSelectionChange
86530
85489
  }
86531
85490
  );
86532
85491
  }
@@ -87040,6 +85999,7 @@ const staticTableData = [
87040
85999
  state: "CA",
87041
86000
  zip: "90210"
87042
86001
  },
86002
+ job_subtype: "delivery",
87043
86003
  progress: {
87044
86004
  currentStep: 1,
87045
86005
  totalSteps: 4,
@@ -87079,6 +86039,7 @@ const staticTableData = [
87079
86039
  state: "CA",
87080
86040
  zip: "90211"
87081
86041
  },
86042
+ job_subtype: "delivery",
87082
86043
  progress: {
87083
86044
  currentStep: 4,
87084
86045
  totalSteps: 4,
@@ -87118,6 +86079,7 @@ const staticTableData = [
87118
86079
  state: "CA",
87119
86080
  zip: "90212"
87120
86081
  },
86082
+ job_subtype: "delivery",
87121
86083
  progress: {
87122
86084
  currentStep: 2,
87123
86085
  totalSteps: 4,
@@ -87157,6 +86119,7 @@ const staticTableData = [
87157
86119
  state: "CA",
87158
86120
  zip: "90213"
87159
86121
  },
86122
+ job_subtype: "pickup",
87160
86123
  progress: {
87161
86124
  currentStep: 1,
87162
86125
  totalSteps: 4,
@@ -87196,6 +86159,7 @@ const staticTableData = [
87196
86159
  state: "CA",
87197
86160
  zip: "90214"
87198
86161
  },
86162
+ job_subtype: "delivery",
87199
86163
  progress: {
87200
86164
  currentStep: 1,
87201
86165
  totalSteps: 4,
@@ -87235,6 +86199,7 @@ const staticTableData = [
87235
86199
  state: "CA",
87236
86200
  zip: "90215"
87237
86201
  },
86202
+ job_subtype: "delivery",
87238
86203
  progress: {
87239
86204
  currentStep: 3,
87240
86205
  totalSteps: 4,
@@ -87274,6 +86239,7 @@ const staticTableData = [
87274
86239
  state: "CA",
87275
86240
  zip: "90216"
87276
86241
  },
86242
+ job_subtype: "delivery",
87277
86243
  progress: {
87278
86244
  currentStep: 4,
87279
86245
  totalSteps: 4,
@@ -87313,6 +86279,7 @@ const staticTableData = [
87313
86279
  state: "CA",
87314
86280
  zip: "90217"
87315
86281
  },
86282
+ job_subtype: "delivery",
87316
86283
  progress: {
87317
86284
  currentStep: 1,
87318
86285
  totalSteps: 4,
@@ -87352,6 +86319,7 @@ const staticTableData = [
87352
86319
  state: "CA",
87353
86320
  zip: "90218"
87354
86321
  },
86322
+ job_subtype: "delivery",
87355
86323
  progress: {
87356
86324
  currentStep: 2,
87357
86325
  totalSteps: 4,
@@ -87443,9 +86411,25 @@ const mockColumns = [
87443
86411
  dataIndex: "progress",
87444
86412
  render: (progress) => {
87445
86413
  if (!progress) return null;
86414
+ let firstBarData, secondBarData;
86415
+ if ("firstBarData" in progress) {
86416
+ firstBarData = progress.firstBarData;
86417
+ secondBarData = progress.secondBarData;
86418
+ } else {
86419
+ firstBarData = {
86420
+ text: progress.steps.pickup.text,
86421
+ status: progress.steps.pickup.status,
86422
+ value: progress.steps.pickup.value
86423
+ };
86424
+ secondBarData = {
86425
+ text: progress.steps.transit.text,
86426
+ status: progress.steps.transit.status,
86427
+ value: progress.steps.transit.value
86428
+ };
86429
+ }
87446
86430
  return React__default.createElement(Progress, {
87447
- firstBarData: progress.firstBarData,
87448
- secondBarData: progress.secondBarData,
86431
+ firstBarData,
86432
+ secondBarData,
87449
86433
  width: 150,
87450
86434
  height: 20,
87451
86435
  isProgressCombined: true