primereact 9.1.1 → 9.2.0

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 (158) hide show
  1. package/api/api.d.ts +2 -2
  2. package/autocomplete/autocomplete.cjs.js +1 -0
  3. package/autocomplete/autocomplete.cjs.min.js +1 -1
  4. package/autocomplete/autocomplete.esm.js +1 -0
  5. package/autocomplete/autocomplete.esm.min.js +1 -1
  6. package/autocomplete/autocomplete.js +1 -0
  7. package/autocomplete/autocomplete.min.js +1 -1
  8. package/avatar/avatar.cjs.js +2 -2
  9. package/avatar/avatar.cjs.min.js +1 -1
  10. package/avatar/avatar.esm.js +2 -2
  11. package/avatar/avatar.esm.min.js +1 -1
  12. package/avatar/avatar.js +2 -2
  13. package/avatar/avatar.min.js +1 -1
  14. package/calendar/calendar.cjs.js +2 -2
  15. package/calendar/calendar.cjs.min.js +1 -1
  16. package/calendar/calendar.esm.js +2 -2
  17. package/calendar/calendar.esm.min.js +1 -1
  18. package/calendar/calendar.js +2 -2
  19. package/calendar/calendar.min.js +1 -1
  20. package/contextmenu/contextmenu.cjs.js +61 -18
  21. package/contextmenu/contextmenu.cjs.min.js +1 -1
  22. package/contextmenu/contextmenu.d.ts +9 -0
  23. package/contextmenu/contextmenu.esm.js +63 -20
  24. package/contextmenu/contextmenu.esm.min.js +1 -1
  25. package/contextmenu/contextmenu.js +61 -18
  26. package/contextmenu/contextmenu.min.js +1 -1
  27. package/core/core.js +226 -115
  28. package/core/core.min.js +4 -4
  29. package/datatable/datatable.cjs.js +84 -79
  30. package/datatable/datatable.cjs.min.js +1 -1
  31. package/datatable/datatable.d.ts +2 -11
  32. package/datatable/datatable.esm.js +85 -80
  33. package/datatable/datatable.esm.min.js +1 -1
  34. package/datatable/datatable.js +84 -79
  35. package/datatable/datatable.min.css +1 -1
  36. package/datatable/datatable.min.js +1 -1
  37. package/dropdown/dropdown.cjs.js +1 -0
  38. package/dropdown/dropdown.cjs.min.js +1 -1
  39. package/dropdown/dropdown.esm.js +1 -0
  40. package/dropdown/dropdown.esm.min.js +1 -1
  41. package/dropdown/dropdown.js +1 -0
  42. package/dropdown/dropdown.min.js +1 -1
  43. package/hooks/hooks.cjs.js +34 -2
  44. package/hooks/hooks.cjs.min.js +1 -1
  45. package/hooks/hooks.d.ts +13 -0
  46. package/hooks/hooks.esm.js +34 -3
  47. package/hooks/hooks.esm.min.js +1 -1
  48. package/hooks/hooks.js +34 -2
  49. package/hooks/hooks.min.js +1 -1
  50. package/inputtext/inputtext.min.css +1 -1
  51. package/listbox/listbox.cjs.js +5 -4
  52. package/listbox/listbox.cjs.min.js +1 -1
  53. package/listbox/listbox.esm.js +5 -4
  54. package/listbox/listbox.esm.min.js +1 -1
  55. package/listbox/listbox.js +5 -4
  56. package/listbox/listbox.min.js +1 -1
  57. package/megamenu/megamenu.cjs.js +91 -6
  58. package/megamenu/megamenu.cjs.min.js +1 -1
  59. package/megamenu/megamenu.d.ts +9 -0
  60. package/megamenu/megamenu.esm.js +93 -8
  61. package/megamenu/megamenu.esm.min.js +1 -1
  62. package/megamenu/megamenu.js +91 -6
  63. package/megamenu/megamenu.min.css +1 -1
  64. package/megamenu/megamenu.min.js +1 -1
  65. package/multiselect/multiselect.cjs.js +1 -0
  66. package/multiselect/multiselect.cjs.min.js +1 -1
  67. package/multiselect/multiselect.esm.js +1 -0
  68. package/multiselect/multiselect.esm.min.js +1 -1
  69. package/multiselect/multiselect.js +1 -0
  70. package/multiselect/multiselect.min.js +1 -1
  71. package/package.json +1 -1
  72. package/primereact.all.cjs.js +554 -244
  73. package/primereact.all.cjs.min.js +1 -1
  74. package/primereact.all.esm.js +554 -245
  75. package/primereact.all.esm.min.js +1 -1
  76. package/primereact.all.js +554 -244
  77. package/primereact.all.min.js +1 -1
  78. package/resources/primereact.css +616 -667
  79. package/resources/primereact.min.css +1 -1
  80. package/resources/themes/arya-blue/theme.css +130 -2
  81. package/resources/themes/arya-green/theme.css +130 -2
  82. package/resources/themes/arya-orange/theme.css +130 -2
  83. package/resources/themes/arya-purple/theme.css +130 -2
  84. package/resources/themes/bootstrap4-dark-blue/theme.css +131 -2
  85. package/resources/themes/bootstrap4-dark-purple/theme.css +131 -2
  86. package/resources/themes/bootstrap4-light-blue/theme.css +131 -2
  87. package/resources/themes/bootstrap4-light-purple/theme.css +131 -2
  88. package/resources/themes/fluent-light/theme.css +131 -2
  89. package/resources/themes/lara-dark-blue/theme.css +131 -2
  90. package/resources/themes/lara-dark-indigo/theme.css +131 -2
  91. package/resources/themes/lara-dark-purple/theme.css +131 -2
  92. package/resources/themes/lara-dark-teal/theme.css +131 -2
  93. package/resources/themes/lara-light-blue/theme.css +131 -2
  94. package/resources/themes/lara-light-indigo/theme.css +131 -2
  95. package/resources/themes/lara-light-purple/theme.css +131 -2
  96. package/resources/themes/lara-light-teal/theme.css +131 -2
  97. package/resources/themes/luna-amber/theme.css +131 -2
  98. package/resources/themes/luna-blue/theme.css +131 -2
  99. package/resources/themes/luna-green/theme.css +131 -2
  100. package/resources/themes/luna-pink/theme.css +131 -2
  101. package/resources/themes/md-dark-deeppurple/theme.css +131 -2
  102. package/resources/themes/md-dark-indigo/theme.css +131 -2
  103. package/resources/themes/md-light-deeppurple/theme.css +131 -2
  104. package/resources/themes/md-light-indigo/theme.css +131 -2
  105. package/resources/themes/mdc-dark-deeppurple/theme.css +131 -2
  106. package/resources/themes/mdc-dark-indigo/theme.css +131 -2
  107. package/resources/themes/mdc-light-deeppurple/theme.css +131 -2
  108. package/resources/themes/mdc-light-indigo/theme.css +131 -2
  109. package/resources/themes/mira/theme.css +131 -2
  110. package/resources/themes/nano/theme.css +131 -2
  111. package/resources/themes/nova/theme.css +131 -2
  112. package/resources/themes/nova-accent/theme.css +131 -2
  113. package/resources/themes/nova-alt/theme.css +131 -2
  114. package/resources/themes/rhea/theme.css +131 -2
  115. package/resources/themes/saga-blue/theme.css +131 -2
  116. package/resources/themes/saga-green/theme.css +131 -2
  117. package/resources/themes/saga-orange/theme.css +131 -2
  118. package/resources/themes/saga-purple/theme.css +131 -2
  119. package/resources/themes/soho-dark/theme.css +131 -2
  120. package/resources/themes/soho-light/theme.css +131 -2
  121. package/resources/themes/tailwind-light/theme.css +131 -2
  122. package/resources/themes/vela-blue/theme.css +131 -2
  123. package/resources/themes/vela-green/theme.css +131 -2
  124. package/resources/themes/vela-orange/theme.css +131 -2
  125. package/resources/themes/vela-purple/theme.css +131 -2
  126. package/resources/themes/viva-dark/theme.css +131 -2
  127. package/resources/themes/viva-light/theme.css +131 -2
  128. package/tieredmenu/tieredmenu.cjs.js +69 -9
  129. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  130. package/tieredmenu/tieredmenu.d.ts +9 -0
  131. package/tieredmenu/tieredmenu.esm.js +71 -11
  132. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  133. package/tieredmenu/tieredmenu.js +69 -9
  134. package/tieredmenu/tieredmenu.min.js +1 -1
  135. package/toast/toast.min.css +1 -1
  136. package/treetable/treetable.cjs.js +12 -9
  137. package/treetable/treetable.cjs.min.js +1 -1
  138. package/treetable/treetable.d.ts +0 -5
  139. package/treetable/treetable.esm.js +12 -9
  140. package/treetable/treetable.esm.min.js +1 -1
  141. package/treetable/treetable.js +12 -9
  142. package/treetable/treetable.min.css +1 -1
  143. package/treetable/treetable.min.js +1 -1
  144. package/utils/utils.cjs.js +14 -9
  145. package/utils/utils.cjs.min.js +1 -1
  146. package/utils/utils.esm.js +14 -9
  147. package/utils/utils.esm.min.js +1 -1
  148. package/utils/utils.js +14 -9
  149. package/utils/utils.min.js +1 -1
  150. package/virtualscroller/virtualscroller.cjs.js +177 -104
  151. package/virtualscroller/virtualscroller.cjs.min.js +1 -1
  152. package/virtualscroller/virtualscroller.d.ts +20 -0
  153. package/virtualscroller/virtualscroller.esm.js +177 -104
  154. package/virtualscroller/virtualscroller.esm.min.js +1 -1
  155. package/virtualscroller/virtualscroller.js +177 -104
  156. package/virtualscroller/virtualscroller.min.css +1 -1
  157. package/virtualscroller/virtualscroller.min.js +1 -1
  158. package/web-types.json +1 -1
@@ -119,14 +119,18 @@ var VirtualScrollerBase = {
119
119
  id: null,
120
120
  style: null,
121
121
  className: null,
122
+ tabIndex: 0,
122
123
  items: null,
123
124
  itemSize: 0,
124
125
  scrollHeight: null,
125
126
  scrollWidth: null,
126
127
  orientation: 'vertical',
128
+ step: 0,
127
129
  numToleratedItems: null,
128
130
  delay: 0,
129
131
  resizeDelay: 10,
132
+ appendOnly: false,
133
+ inline: false,
130
134
  lazy: false,
131
135
  disabled: false,
132
136
  loaderDisabled: false,
@@ -156,6 +160,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
156
160
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
157
161
  var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (inProps, ref) {
158
162
  var props = VirtualScrollerBase.getProps(inProps);
163
+ var prevProps = usePrevious(inProps) || {};
159
164
  var vertical = props.orientation === 'vertical';
160
165
  var horizontal = props.orientation === 'horizontal';
161
166
  var both = props.orientation === 'both';
@@ -173,25 +178,29 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
173
178
  _React$useState4 = _slicedToArray(_React$useState3, 2),
174
179
  lastState = _React$useState4[0],
175
180
  setLastState = _React$useState4[1];
176
- var _React$useState5 = React.useState(both ? {
181
+ var _React$useState5 = React.useState(0),
182
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
183
+ pageState = _React$useState6[0],
184
+ setPageState = _React$useState6[1];
185
+ var _React$useState7 = React.useState(both ? {
177
186
  rows: 0,
178
187
  cols: 0
179
188
  } : 0),
180
- _React$useState6 = _slicedToArray(_React$useState5, 2),
181
- numItemsInViewportState = _React$useState6[0],
182
- setNumItemsInViewportState = _React$useState6[1];
183
- var _React$useState7 = React.useState(props.numToleratedItems),
184
189
  _React$useState8 = _slicedToArray(_React$useState7, 2),
185
- numToleratedItemsState = _React$useState8[0],
186
- setNumToleratedItemsState = _React$useState8[1];
187
- var _React$useState9 = React.useState(props.loading || false),
190
+ numItemsInViewportState = _React$useState8[0],
191
+ setNumItemsInViewportState = _React$useState8[1];
192
+ var _React$useState9 = React.useState(props.numToleratedItems),
188
193
  _React$useState10 = _slicedToArray(_React$useState9, 2),
189
- loadingState = _React$useState10[0],
190
- setLoadingState = _React$useState10[1];
191
- var _React$useState11 = React.useState([]),
194
+ numToleratedItemsState = _React$useState10[0],
195
+ setNumToleratedItemsState = _React$useState10[1];
196
+ var _React$useState11 = React.useState(props.loading || false),
192
197
  _React$useState12 = _slicedToArray(_React$useState11, 2),
193
- loaderArrState = _React$useState12[0],
194
- setLoaderArrState = _React$useState12[1];
198
+ loadingState = _React$useState12[0],
199
+ setLoadingState = _React$useState12[1];
200
+ var _React$useState13 = React.useState([]),
201
+ _React$useState14 = _slicedToArray(_React$useState13, 2),
202
+ loaderArrState = _React$useState14[0],
203
+ setLoaderArrState = _React$useState14[1];
195
204
  var elementRef = React.useRef(null);
196
205
  var _contentRef = React.useRef(null);
197
206
  var _spacerRef = React.useRef(null);
@@ -202,14 +211,19 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
202
211
  } : 0);
203
212
  var scrollTimeout = React.useRef(null);
204
213
  var resizeTimeout = React.useRef(null);
214
+ var contentStyle = React.useRef({});
215
+ var spacerStyle = React.useRef({});
205
216
  var defaultWidth = React.useRef(null);
206
217
  var defaultHeight = React.useRef(null);
207
- var prevItems = usePrevious(props.items);
208
- var prevLoading = usePrevious(props.loading);
218
+ var defaultContentWidth = React.useRef(null);
219
+ var defaultContentHeight = React.useRef(null);
220
+ var isItemRangeChanged = React.useRef(false);
221
+ var lazyLoadState = React.useRef(null);
209
222
  var _useResizeListener = useResizeListener({
210
223
  listener: function listener(event) {
211
224
  return onResize();
212
- }
225
+ },
226
+ when: !props.disabled
213
227
  }),
214
228
  _useResizeListener2 = _slicedToArray(_useResizeListener, 1),
215
229
  bindWindowResizeListener = _useResizeListener2[0];
@@ -218,13 +232,23 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
218
232
  type: 'orientationchange',
219
233
  listener: function listener(event) {
220
234
  return onResize();
221
- }
235
+ },
236
+ when: !props.disabled
222
237
  }),
223
238
  _useEventListener2 = _slicedToArray(_useEventListener, 1),
224
239
  bindOrientationChangeListener = _useEventListener2[0];
225
240
  var getElementRef = function getElementRef() {
226
241
  return elementRef;
227
242
  };
243
+ var getPageByFirst = function getPageByFirst(first) {
244
+ return Math.floor((first + numToleratedItemsState * 4) / (props.step || 1));
245
+ };
246
+ var setContentElement = function setContentElement(element) {
247
+ _contentRef.current = element || _contentRef.current || DomHandler.findSingle(elementRef.current, '.p-virtualscroller-content');
248
+ };
249
+ var isPageChanged = function isPageChanged(first) {
250
+ return props.step ? pageState !== getPageByFirst(first) : true;
251
+ };
228
252
  var scrollTo = function scrollTo(options) {
229
253
  lastScrollPos.current = both ? {
230
254
  top: 0,
@@ -236,13 +260,14 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
236
260
  var behavior = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'auto';
237
261
  var _calculateNumItems = calculateNumItems(),
238
262
  numToleratedItems = _calculateNumItems.numToleratedItems;
263
+ var contentPos = getContentPosition();
239
264
  var calculateFirst = function calculateFirst() {
240
265
  var _index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
241
266
  var _numT = arguments.length > 1 ? arguments[1] : undefined;
242
267
  return _index <= _numT ? 0 : _index;
243
268
  };
244
- var calculateCoord = function calculateCoord(_first, _size) {
245
- return _first * _size;
269
+ var calculateCoord = function calculateCoord(_first, _size, _cpos) {
270
+ return _first * _size + _cpos;
246
271
  };
247
272
  var scrollToItem = function scrollToItem() {
248
273
  var left = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
@@ -253,20 +278,25 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
253
278
  behavior: behavior
254
279
  });
255
280
  };
281
+ var newFirst = both ? {
282
+ rows: 0,
283
+ cols: 0
284
+ } : 0;
285
+ var isRangeChanged = false;
256
286
  if (both) {
257
- var newFirst = {
287
+ newFirst = {
258
288
  rows: calculateFirst(index[0], numToleratedItems[0]),
259
289
  cols: calculateFirst(index[1], numToleratedItems[1])
260
290
  };
261
- if (newFirst.rows !== firstState.rows || newFirst.cols !== firstState.cols) {
262
- scrollToItem(calculateCoord(newFirst.cols, props.itemSize[1]), calculateCoord(newFirst.rows, props.itemSize[0]));
263
- }
291
+ scrollToItem(calculateCoord(newFirst.cols, props.itemSize[1], contentPos.left), calculateCoord(newFirst.rows, props.itemSize[0], contentPos.top));
292
+ isRangeChanged = firstState.rows !== newFirst.rows || firstState.cols !== newFirst.cols;
264
293
  } else {
265
- var _newFirst = calculateFirst(index, numToleratedItems);
266
- if (_newFirst !== firstState) {
267
- horizontal ? scrollToItem(calculateCoord(_newFirst, props.itemSize), 0) : scrollToItem(0, calculateCoord(_newFirst, props.itemSize));
268
- }
294
+ newFirst = calculateFirst(index, numToleratedItems);
295
+ horizontal ? scrollToItem(calculateCoord(newFirst, props.itemSize, contentPos.left), 0) : scrollToItem(0, calculateCoord(newFirst, props.itemSize, contentPos.top));
296
+ isRangeChanged = firstState !== newFirst;
269
297
  }
298
+ isItemRangeChanged.current = isRangeChanged;
299
+ setFirstState(newFirst);
270
300
  };
271
301
  var scrollInView = function scrollInView(index, to) {
272
302
  var behavior = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'auto';
@@ -383,7 +413,8 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
383
413
  var _calculateNumItems2 = calculateNumItems(),
384
414
  numItemsInViewport = _calculateNumItems2.numItemsInViewport,
385
415
  numToleratedItems = _calculateNumItems2.numToleratedItems;
386
- var calculateLast = function calculateLast(_first, _num, _numT, _isCols) {
416
+ var calculateLast = function calculateLast(_first, _num, _numT) {
417
+ var _isCols = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
387
418
  return getLast(_first + _num + (_first < _numT ? 2 : 3) * _numT, _isCols);
388
419
  };
389
420
  var last = both ? {
@@ -405,9 +436,15 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
405
436
  }));
406
437
  }
407
438
  if (props.lazy) {
408
- props.onLazyLoad && props.onLazyLoad({
409
- first: firstState,
410
- last: last
439
+ Promise.resolve().then(function () {
440
+ lazyLoadState.current = {
441
+ first: props.step ? both ? {
442
+ rows: 0,
443
+ cols: firstState.cols
444
+ } : 0 : firstState,
445
+ last: Math.min(props.step ? props.step : last, props.items.length)
446
+ };
447
+ props.onLazyLoad && props.onLazyLoad(lazyLoadState.current);
411
448
  });
412
449
  }
413
450
  };
@@ -416,12 +453,21 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
416
453
  Promise.resolve().then(function () {
417
454
  if (_contentRef.current) {
418
455
  _contentRef.current.style.minHeight = _contentRef.current.style.minWidth = 'auto';
419
- var _contentRef$current = _contentRef.current,
420
- offsetWidth = _contentRef$current.offsetWidth,
421
- offsetHeight = _contentRef$current.offsetHeight;
422
- (both || horizontal) && (elementRef.current.style.width = (offsetWidth < defaultWidth.current ? offsetWidth : defaultWidth.current) + 'px');
423
- (both || vertical) && (elementRef.current.style.height = (offsetHeight < defaultHeight.current ? offsetHeight : defaultHeight.current) + 'px');
456
+ _contentRef.current.style.position = 'relative';
457
+ elementRef.current.style.contain = 'none';
458
+
459
+ /*const [contentWidth, contentHeight] = [DomHandler.getWidth(contentRef.current), DomHandler.getHeight(contentRef.current)];
460
+ contentWidth !== defaultContentWidth.current && (elementRef.current.style.width = '');
461
+ contentHeight !== defaultContentHeight.current && (elementRef.current.style.height = '');*/
462
+
463
+ var _ref = [DomHandler.getWidth(elementRef.current), DomHandler.getHeight(elementRef.current)],
464
+ width = _ref[0],
465
+ height = _ref[1];
466
+ (both || horizontal) && (elementRef.current.style.width = (width < defaultWidth.current ? width : props.scrollWidth || defaultWidth.current) + 'px');
467
+ (both || vertical) && (elementRef.current.style.height = (height < defaultHeight.current ? height : props.scrollHeight || defaultHeight.current) + 'px');
424
468
  _contentRef.current.style.minHeight = _contentRef.current.style.minWidth = '';
469
+ _contentRef.current.style.position = '';
470
+ elementRef.current.style.contain = '';
425
471
  }
426
472
  });
427
473
  }
@@ -434,10 +480,10 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
434
480
  var getContentPosition = function getContentPosition() {
435
481
  if (_contentRef.current) {
436
482
  var style = getComputedStyle(_contentRef.current);
437
- var left = parseInt(style.paddingLeft, 10) + Math.max(parseInt(style.left, 10), 0);
438
- var right = parseInt(style.paddingRight, 10) + Math.max(parseInt(style.right, 10), 0);
439
- var top = parseInt(style.paddingTop, 10) + Math.max(parseInt(style.top, 10), 0);
440
- var bottom = parseInt(style.paddingBottom, 10) + Math.max(parseInt(style.bottom, 10), 0);
483
+ var left = parseFloat(style.paddingLeft) + Math.max(parseFloat(style.left) || 0, 0);
484
+ var right = parseFloat(style.paddingRight) + Math.max(parseFloat(style.right) || 0, 0);
485
+ var top = parseFloat(style.paddingTop) + Math.max(parseFloat(style.top) || 0, 0);
486
+ var bottom = parseFloat(style.paddingBottom) + Math.max(parseFloat(style.bottom) || 0, 0);
441
487
  return {
442
488
  left: left,
443
489
  right: right,
@@ -474,11 +520,11 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
474
520
  };
475
521
  var setSpacerSize = function setSpacerSize() {
476
522
  var items = props.items;
477
- if (_spacerRef.current && items) {
523
+ if (items) {
478
524
  var contentPos = getContentPosition();
479
525
  var setProp = function setProp(_name, _value, _size) {
480
526
  var _cpos = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
481
- return _spacerRef.current.style[_name] = (_value || []).length * _size + _cpos + 'px';
527
+ return spacerStyle.current = _objectSpread(_objectSpread({}, spacerStyle.current), _defineProperty({}, "".concat(_name), (_value || []).length * _size + _cpos + 'px'));
482
528
  };
483
529
  if (both) {
484
530
  setProp('height', items, props.itemSize[0], contentPos.y);
@@ -489,7 +535,7 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
489
535
  }
490
536
  };
491
537
  var setContentPosition = function setContentPosition(pos) {
492
- if (_contentRef.current) {
538
+ if (_contentRef.current && !props.appendOnly) {
493
539
  var first = pos ? pos.first : firstState;
494
540
  var calculateTranslateVal = function calculateTranslateVal(_first, _size) {
495
541
  return _first * _size;
@@ -498,7 +544,9 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
498
544
  var _x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
499
545
  var _y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
500
546
  _stickyRef.current && (_stickyRef.current.style.top = "-".concat(_y, "px"));
501
- _contentRef.current.style.transform = "translate3d(".concat(_x, "px, ").concat(_y, "px, 0)");
547
+ contentStyle.current = _objectSpread(_objectSpread({}, contentStyle.current), {
548
+ transform: "translate3d(".concat(_x, "px, ").concat(_y, "px, 0)")
549
+ });
502
550
  };
503
551
  if (both) {
504
552
  setTransform(calculateTranslateVal(first.cols, props.itemSize[1]), calculateTranslateVal(first.rows, props.itemSize[0]));
@@ -542,36 +590,40 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
542
590
  if (both) {
543
591
  var isScrollDown = lastScrollPos.current.top <= scrollTop;
544
592
  var isScrollRight = lastScrollPos.current.left <= scrollLeft;
545
- var currentIndex = {
546
- rows: calculateCurrentIndex(scrollTop, props.itemSize[0]),
547
- cols: calculateCurrentIndex(scrollLeft, props.itemSize[1])
548
- };
549
- var triggerIndex = {
550
- rows: calculateTriggerIndex(currentIndex.rows, firstState.rows, lastState.rows, numItemsInViewportState.rows, numToleratedItemsState[0], isScrollDown),
551
- cols: calculateTriggerIndex(currentIndex.cols, firstState.cols, lastState.cols, numItemsInViewportState.cols, numToleratedItemsState[1], isScrollRight)
552
- };
553
- newFirst = {
554
- rows: calculateFirst(currentIndex.rows, triggerIndex.rows, firstState.rows, lastState.rows, numItemsInViewportState.rows, numToleratedItemsState[0], isScrollDown),
555
- cols: calculateFirst(currentIndex.cols, triggerIndex.cols, firstState.cols, lastState.cols, numItemsInViewportState.cols, numToleratedItemsState[1], isScrollRight)
556
- };
557
- newLast = {
558
- rows: calculateLast(currentIndex.rows, newFirst.rows, lastState.rows, numItemsInViewportState.rows, numToleratedItemsState[0]),
559
- cols: calculateLast(currentIndex.cols, newFirst.cols, lastState.cols, numItemsInViewportState.cols, numToleratedItemsState[1], true)
560
- };
561
- isRangeChanged = newFirst.rows !== firstState.rows || newLast.rows !== lastState.rows || newFirst.cols !== firstState.cols || newLast.cols !== lastState.cols;
562
- newScrollPos = {
563
- top: scrollTop,
564
- left: scrollLeft
565
- };
593
+ if (!props.appendOnly || props.appendOnly && (isScrollDown || isScrollRight)) {
594
+ var currentIndex = {
595
+ rows: calculateCurrentIndex(scrollTop, props.itemSize[0]),
596
+ cols: calculateCurrentIndex(scrollLeft, props.itemSize[1])
597
+ };
598
+ var triggerIndex = {
599
+ rows: calculateTriggerIndex(currentIndex.rows, firstState.rows, lastState.rows, numItemsInViewportState.rows, numToleratedItemsState[0], isScrollDown),
600
+ cols: calculateTriggerIndex(currentIndex.cols, firstState.cols, lastState.cols, numItemsInViewportState.cols, numToleratedItemsState[1], isScrollRight)
601
+ };
602
+ newFirst = {
603
+ rows: calculateFirst(currentIndex.rows, triggerIndex.rows, firstState.rows, lastState.rows, numItemsInViewportState.rows, numToleratedItemsState[0], isScrollDown),
604
+ cols: calculateFirst(currentIndex.cols, triggerIndex.cols, firstState.cols, lastState.cols, numItemsInViewportState.cols, numToleratedItemsState[1], isScrollRight)
605
+ };
606
+ newLast = {
607
+ rows: calculateLast(currentIndex.rows, newFirst.rows, lastState.rows, numItemsInViewportState.rows, numToleratedItemsState[0]),
608
+ cols: calculateLast(currentIndex.cols, newFirst.cols, lastState.cols, numItemsInViewportState.cols, numToleratedItemsState[1], true)
609
+ };
610
+ isRangeChanged = newFirst.rows !== firstState.rows || newLast.rows !== lastState.rows || newFirst.cols !== firstState.cols || newLast.cols !== lastState.cols || isItemRangeChanged.current;
611
+ newScrollPos = {
612
+ top: scrollTop,
613
+ left: scrollLeft
614
+ };
615
+ }
566
616
  } else {
567
617
  var scrollPos = horizontal ? scrollLeft : scrollTop;
568
618
  var isScrollDownOrRight = lastScrollPos.current <= scrollPos;
569
- var _currentIndex2 = calculateCurrentIndex(scrollPos, props.itemSize);
570
- var _triggerIndex2 = calculateTriggerIndex(_currentIndex2, firstState, lastState, numItemsInViewportState, numToleratedItemsState, isScrollDownOrRight);
571
- newFirst = calculateFirst(_currentIndex2, _triggerIndex2, firstState, lastState, numItemsInViewportState, numToleratedItemsState, isScrollDownOrRight);
572
- newLast = calculateLast(_currentIndex2, newFirst, lastState, numItemsInViewportState, numToleratedItemsState);
573
- isRangeChanged = newFirst !== firstState || newLast !== lastState;
574
- newScrollPos = scrollPos;
619
+ if (!props.appendOnly || props.appendOnly && isScrollDownOrRight) {
620
+ var _currentIndex2 = calculateCurrentIndex(scrollPos, props.itemSize);
621
+ var _triggerIndex2 = calculateTriggerIndex(_currentIndex2, firstState, lastState, numItemsInViewportState, numToleratedItemsState, isScrollDownOrRight);
622
+ newFirst = calculateFirst(_currentIndex2, _triggerIndex2, firstState, lastState, numItemsInViewportState, numToleratedItemsState, isScrollDownOrRight);
623
+ newLast = calculateLast(_currentIndex2, newFirst, lastState, numItemsInViewportState, numToleratedItemsState);
624
+ isRangeChanged = newFirst !== firstState || newLast !== lastState || isItemRangeChanged.current;
625
+ newScrollPos = scrollPos;
626
+ }
575
627
  }
576
628
  return {
577
629
  first: newFirst,
@@ -596,8 +648,14 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
596
648
  setLastState(last);
597
649
  lastScrollPos.current = scrollPos;
598
650
  props.onScrollIndexChange && props.onScrollIndexChange(newState);
599
- if (props.lazy) {
600
- props.onLazyLoad && props.onLazyLoad(newState);
651
+ if (props.lazy && isPageChanged(first)) {
652
+ var newLazyLoadState = {
653
+ first: props.step ? Math.min(getPageByFirst(first) * props.step, props.items.length - props.step) : first,
654
+ last: Math.min(props.step ? (getPageByFirst(first) + 1) * props.step : last, props.items.length)
655
+ };
656
+ var isLazyStateChanged = !lazyLoadState.current || lazyLoadState.current.first !== newLazyLoadState.first || lazyLoadState.current.last !== newLazyLoadState.last;
657
+ isLazyStateChanged && props.onLazyLoad && props.onLazyLoad(newLazyLoadState);
658
+ lazyLoadState.current = newLazyLoadState;
601
659
  }
602
660
  }
603
661
  };
@@ -607,17 +665,21 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
607
665
  if (scrollTimeout.current) {
608
666
  clearTimeout(scrollTimeout.current);
609
667
  }
610
- if (!loadingState && props.showLoader) {
611
- var _onScrollPositionChan2 = onScrollPositionChange(event),
612
- changed = _onScrollPositionChan2.isRangeChanged;
613
- changed && setLoadingState(true);
614
- }
615
- scrollTimeout.current = setTimeout(function () {
616
- onScrollChange(event);
617
- if (loadingState && props.showLoader && (!props.lazy || props.loading === undefined)) {
618
- setLoadingState(false);
668
+ if (isPageChanged(firstState)) {
669
+ if (!loadingState && props.showLoader) {
670
+ var _onScrollPositionChan2 = onScrollPositionChange(event),
671
+ isRangeChanged = _onScrollPositionChan2.isRangeChanged;
672
+ var changed = isRangeChanged || (props.step ? isPageChanged(firstState) : false);
673
+ changed && setLoadingState(true);
619
674
  }
620
- }, props.delay);
675
+ scrollTimeout.current = setTimeout(function () {
676
+ onScrollChange(event);
677
+ if (loadingState && props.showLoader && (!props.lazy || props.loading === undefined)) {
678
+ setLoadingState(false);
679
+ setPageState(getPageByFirst(firstState));
680
+ }
681
+ }, props.delay);
682
+ }
621
683
  } else {
622
684
  onScrollChange(event);
623
685
  }
@@ -628,9 +690,9 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
628
690
  }
629
691
  resizeTimeout.current = setTimeout(function () {
630
692
  if (elementRef.current) {
631
- var _ref = [DomHandler.getWidth(elementRef.current), DomHandler.getHeight(elementRef.current)],
632
- width = _ref[0],
633
- height = _ref[1];
693
+ var _ref2 = [DomHandler.getWidth(elementRef.current), DomHandler.getHeight(elementRef.current)],
694
+ width = _ref2[0],
695
+ height = _ref2[1];
634
696
  var isDiffWidth = width !== defaultWidth.current,
635
697
  isDiffHeight = height !== defaultHeight.current;
636
698
  var reinit = both ? isDiffWidth || isDiffHeight : horizontal ? isDiffWidth : vertical ? isDiffHeight : false;
@@ -638,6 +700,8 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
638
700
  setNumToleratedItemsState(props.numToleratedItems);
639
701
  defaultWidth.current = width;
640
702
  defaultHeight.current = height;
703
+ defaultContentWidth.current = DomHandler.getWidth(_contentRef.current);
704
+ defaultContentHeight.current = DomHandler.getHeight(_contentRef.current);
641
705
  }
642
706
  }
643
707
  }, props.resizeDelay);
@@ -670,12 +734,24 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
670
734
  var loadedItems = function loadedItems() {
671
735
  var items = props.items;
672
736
  if (items && !loadingState) {
673
- if (both) return items.slice(firstState.rows, lastState.rows).map(function (item) {
674
- return props.columns ? item : item.slice(firstState.cols, lastState.cols);
675
- });else if (horizontal && props.columns) return items;else return items.slice(firstState, lastState);
737
+ if (both) return items.slice(props.appendOnly ? 0 : firstState.rows, lastState.rows).map(function (item) {
738
+ return props.columns ? item : item.slice(props.appendOnly ? 0 : firstState.cols, lastState.cols);
739
+ });else if (horizontal && props.columns) return items;else return items.slice(props.appendOnly ? 0 : firstState, lastState);
676
740
  }
677
741
  return [];
678
742
  };
743
+ var viewInit = function viewInit() {
744
+ if (elementRef.current && DomHandler.isVisible(elementRef.current)) {
745
+ setContentElement(_contentRef.current);
746
+ init();
747
+ bindWindowResizeListener();
748
+ bindOrientationChangeListener();
749
+ defaultWidth.current = DomHandler.getWidth(elementRef.current);
750
+ defaultHeight.current = DomHandler.getHeight(elementRef.current);
751
+ defaultContentWidth.current = DomHandler.getWidth(_contentRef.current);
752
+ defaultContentHeight.current = DomHandler.getHeight(_contentRef.current);
753
+ }
754
+ };
679
755
  var init = function init() {
680
756
  if (!props.disabled) {
681
757
  setSize();
@@ -684,17 +760,11 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
684
760
  }
685
761
  };
686
762
  useMountEffect(function () {
687
- if (!props.disabled) {
688
- init();
689
- bindWindowResizeListener();
690
- bindOrientationChangeListener();
691
- defaultWidth.current = DomHandler.getWidth(elementRef.current);
692
- defaultHeight.current = DomHandler.getHeight(elementRef.current);
693
- }
763
+ viewInit();
694
764
  });
695
765
  useUpdateEffect(function () {
696
766
  init();
697
- }, [props.itemSize, props.scrollHeight]);
767
+ }, [props.itemSize, props.scrollHeight, props.scrollWidth]);
698
768
  useUpdateEffect(function () {
699
769
  if (props.numToleratedItems !== numToleratedItemsState) {
700
770
  setNumToleratedItemsState(props.numToleratedItems);
@@ -706,11 +776,11 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
706
776
  }
707
777
  }, [numToleratedItemsState]);
708
778
  useUpdateEffect(function () {
709
- if (!prevItems || prevItems.length !== (props.items || []).length) {
779
+ if (!prevProps.items || prevProps.items.length !== (props.items || []).length) {
710
780
  init();
711
781
  }
712
782
  var loading = loadingState;
713
- if (props.lazy && prevLoading !== props.loading && props.loading !== loadingState) {
783
+ if (props.lazy && prevProps.loading !== props.loading && props.loading !== loadingState) {
714
784
  setLoadingState(props.loading);
715
785
  loading = props.loading;
716
786
  }
@@ -772,6 +842,7 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
772
842
  if (props.showSpacer) {
773
843
  return /*#__PURE__*/React.createElement("div", {
774
844
  ref: _spacerRef,
845
+ style: spacerStyle.current,
775
846
  className: "p-virtualscroller-spacer"
776
847
  });
777
848
  }
@@ -795,11 +866,14 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
795
866
  });
796
867
  var content = /*#__PURE__*/React.createElement("div", {
797
868
  ref: _contentRef,
869
+ style: contentStyle.current,
798
870
  className: className
799
871
  }, items);
800
872
  if (props.contentTemplate) {
801
873
  var defaultOptions = {
874
+ style: contentStyle.current,
802
875
  className: className,
876
+ spacerStyle: spacerStyle.current,
803
877
  contentRef: function contentRef(el) {
804
878
  return _contentRef.current = ObjectUtils.getRefElement(el);
805
879
  },
@@ -842,10 +916,9 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
842
916
  } else {
843
917
  var otherProps = VirtualScrollerBase.getOtherProps(props);
844
918
  var className = classNames('p-virtualscroller', {
845
- 'p-both-scroll': both,
846
- 'p-virtualscroller-both': both,
847
- 'p-virtualscroller-horizontal': horizontal,
848
- 'p-horizontal-scroll': horizontal
919
+ 'p-virtualscroller-inline': props.inline,
920
+ 'p-virtualscroller-both p-both-scroll': both,
921
+ 'p-virtualscroller-horizontal p-horizontal-scroll': horizontal
849
922
  }, props.className);
850
923
  var loader = createLoader();
851
924
  var _content = createContent();
@@ -853,7 +926,7 @@ var VirtualScroller = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(fun
853
926
  return /*#__PURE__*/React.createElement("div", _extends({
854
927
  ref: elementRef,
855
928
  className: className,
856
- tabIndex: 0,
929
+ tabIndex: props.tabIndex,
857
930
  style: props.style
858
931
  }, otherProps, {
859
932
  onScroll: onScroll
@@ -1 +1 @@
1
- import*as e from"react";import{usePrevious as t,useResizeListener as r,useEventListener as n,useMountEffect as o,useUpdateEffect as l}from"primereact/hooks";import{ObjectUtils as i,DomHandler as s,classNames as c}from"primereact/utils";function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},a.apply(this,arguments)}function u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function f(e,t){if("object"!==u(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==u(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function m(e){var t=f(e,"string");return"symbol"===u(t)?t:String(t)}function d(e,t,r){return(t=m(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function p(e){if(Array.isArray(e))return e}function g(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,l,i,s=[],c=!0,a=!1;try{if(l=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=l.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){a=!0,o=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(a)throw o}}return s}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function v(e,t){if(e){if("string"==typeof e)return h(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(e,t):void 0}}function y(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function w(e,t){return p(e)||g(e,t)||v(e,t)||y()}var S={defaultProps:{__TYPE:"VirtualScroller",id:null,style:null,className:null,items:null,itemSize:0,scrollHeight:null,scrollWidth:null,orientation:"vertical",numToleratedItems:null,delay:0,resizeDelay:10,lazy:!1,disabled:!1,loaderDisabled:!1,columns:null,loading:void 0,autoSize:!1,showSpacer:!0,showLoader:!1,loadingTemplate:null,loaderIconTemplate:null,itemTemplate:null,contentTemplate:null,onScroll:null,onScrollIndexChange:null,onLazyLoad:null,children:void 0},getProps:function(e){return i.getMergedProps(e,S.defaultProps)},getOtherProps:function(e){return i.getDiffProps(e,S.defaultProps)}};function b(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function z(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?b(Object(r),!0).forEach((function(t){d(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):b(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var T=e.memo(e.forwardRef((function(u,f){var m=S.getProps(u),d="vertical"===m.orientation,p="horizontal"===m.orientation,g="both"===m.orientation,h=w(e.useState(g?{rows:0,cols:0}:0),2),v=h[0],y=h[1],b=w(e.useState(g?{rows:0,cols:0}:0),2),T=b[0],I=b[1],O=w(e.useState(g?{rows:0,cols:0}:0),2),x=O[0],P=O[1],E=w(e.useState(m.numToleratedItems),2),R=E[0],j=E[1],L=w(e.useState(m.loading||!1),2),H=L[0],M=L[1],D=w(e.useState([]),2),N=D[0],W=D[1],A=e.useRef(null),C=e.useRef(null),k=e.useRef(null),J=e.useRef(null),V=e.useRef(g?{top:0,left:0}:0),X=e.useRef(null),F=e.useRef(null),_=e.useRef(null),B=e.useRef(null),U=t(m.items),Y=t(m.loading),$=w(r({listener:function(e){return ue()}}),1)[0],q=w(n({target:"window",type:"orientationchange",listener:function(e){return ue()}}),1)[0],G=function(){return A},K=function(e){V.current=g?{top:0,left:0}:0,A.current&&A.current.scrollTo(e)},Q=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"auto",r=te(),n=r.numToleratedItems,o=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1?arguments[1]:void 0;return e<=t?0:e},l=function(e,t){return e*t},i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return K({left:e,top:r,behavior:t})};if(g){var s={rows:o(e[0],n[0]),cols:o(e[1],n[1])};s.rows===v.rows&&s.cols===v.cols||i(l(s.cols,m.itemSize[1]),l(s.rows,m.itemSize[0]))}else{var c=o(e,n);c!==v&&(p?i(l(c,m.itemSize),0):i(0,l(c,m.itemSize)))}},Z=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"auto";if(t){var n=ee(),o=n.first,l=n.viewport,i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return K({left:e,top:t,behavior:r})},s="to-start"===t,c="to-end"===t;if(s){if(g)l.first.rows-o.rows>e[0]?i(l.first.cols*m.itemSize[1],(l.first.rows-1)*m.itemSize[0]):l.first.cols-o.cols>e[1]&&i((l.first.cols-1)*m.itemSize[1],l.first.rows*m.itemSize[0]);else if(l.first-o>e){var a=(l.first-1)*m.itemSize;p?i(a,0):i(0,a)}}else if(c)if(g)l.last.rows-o.rows<=e[0]+1?i(l.first.cols*m.itemSize[1],(l.first.rows+1)*m.itemSize[0]):l.last.cols-o.cols<=e[1]+1&&i((l.first.cols+1)*m.itemSize[1],l.first.rows*m.itemSize[0]);else if(l.last-o<=e+1){var u=(l.first+1)*m.itemSize;p?i(u,0):i(0,u)}}else Q(e,r)},ee=function(){var e=function(e,t){return Math.floor(e/(t||e))},t=v,r=0;if(A.current){var n=A.current,o=n.scrollTop,l=n.scrollLeft;if(g)r={rows:(t={rows:e(o,m.itemSize[0]),cols:e(l,m.itemSize[1])}).rows+x.rows,cols:t.cols+x.cols};else r=(t=e(p?l:o,m.itemSize))+x}return{first:v,last:T,viewport:{first:t,last:r}}},te=function(){var e=oe(),t=A.current?A.current.offsetWidth-e.left:0,r=A.current?A.current.offsetHeight-e.top:0,n=function(e,t){return Math.ceil(e/(t||e))},o=function(e){return Math.ceil(e/2)},l=g?{rows:n(r,m.itemSize[0]),cols:n(t,m.itemSize[1])}:n(p?t:r,m.itemSize);return{numItemsInViewport:l,numToleratedItems:R||(g?[o(l.rows),o(l.cols)]:o(l))}},re=function(e){m.autoSize&&!e&&Promise.resolve().then((function(){if(C.current){C.current.style.minHeight=C.current.style.minWidth="auto";var e=C.current,t=e.offsetWidth,r=e.offsetHeight;(g||p)&&(A.current.style.width=(t<_.current?t:_.current)+"px"),(g||d)&&(A.current.style.height=(r<B.current?r:B.current)+"px"),C.current.style.minHeight=C.current.style.minWidth=""}}))},ne=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1?arguments[1]:void 0;return m.items?Math.min(t?(m.columns||m.items[0]).length:m.items.length,e):0},oe=function(){if(C.current){var e=getComputedStyle(C.current),t=parseInt(e.paddingLeft,10)+Math.max(parseInt(e.left,10),0),r=parseInt(e.paddingRight,10)+Math.max(parseInt(e.right,10),0),n=parseInt(e.paddingTop,10)+Math.max(parseInt(e.top,10),0),o=parseInt(e.paddingBottom,10)+Math.max(parseInt(e.bottom,10),0);return{left:t,right:r,top:n,bottom:o,x:t+r,y:n+o}}return{left:0,right:0,top:0,bottom:0,x:0,y:0}},le=function(){if(A.current){var e=A.current.parentElement,t=m.scrollWidth||"".concat(A.current.offsetWidth||e.offsetWidth,"px"),r=m.scrollHeight||"".concat(A.current.offsetHeight||e.offsetHeight,"px"),n=function(e,t){return A.current.style[e]=t};g||p?(n("height",r),n("width",t)):n("height",r)}},ie=function(){var e=m.items;if(k.current&&e){var t=oe(),r=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return k.current.style[e]=(t||[]).length*r+n+"px"};g?(r("height",e,m.itemSize[0],t.y),r("width",m.columns||e[1],m.itemSize[1],t.x)):p?r("width",m.columns||e,m.itemSize,t.x):r("height",e,m.itemSize,t.y)}},se=function(e){if(C.current){var t=e?e.first:v,r=function(e,t){return e*t},n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;J.current&&(J.current.style.top="-".concat(t,"px")),C.current.style.transform="translate3d(".concat(e,"px, ").concat(t,"px, 0)")};if(g)n(r(t.cols,m.itemSize[1]),r(t.rows,m.itemSize[0]));else{var o=r(t,m.itemSize);p?n(o,0):n(0,o)}}},ce=function(e){var t=e.target,r=oe(),n=function(e,t){return e?e>t?e-t:e:0},o=function(e,t){return Math.floor(e/(t||e))},l=function(e,t,r,n,o,l){return e<=o?o:l?r-n-o:t+o-1},i=function(e,t,r,n,o,l,i){return e<=l?0:Math.max(0,i?e<t?r:e-l:e>t?r:e-2*l)},s=function(e,t,r,n,o,l){var i=t+n+2*o;return e>=o&&(i+=o+1),ne(i,l)},c=n(t.scrollTop,r.top),a=n(t.scrollLeft,r.left),u=g?{rows:0,cols:0}:0,f=T,d=!1,h=V.current;if(g){var y=V.current.top<=c,w=V.current.left<=a,S={rows:o(c,m.itemSize[0]),cols:o(a,m.itemSize[1])},b={rows:l(S.rows,v.rows,T.rows,x.rows,R[0],y),cols:l(S.cols,v.cols,T.cols,x.cols,R[1],w)};u={rows:i(S.rows,b.rows,v.rows,0,0,R[0],y),cols:i(S.cols,b.cols,v.cols,0,0,R[1],w)},f={rows:s(S.rows,u.rows,0,x.rows,R[0]),cols:s(S.cols,u.cols,0,x.cols,R[1],!0)},d=u.rows!==v.rows||f.rows!==T.rows||u.cols!==v.cols||f.cols!==T.cols,h={top:c,left:a}}else{var z=p?a:c,I=V.current<=z,O=o(z,m.itemSize);f=s(O,u=i(O,l(O,v,T,x,R,I),v,0,0,R,I),0,x,R),d=u!==v||f!==T,h=z}return{first:u,last:f,isRangeChanged:d,scrollPos:h}},ae=function(e){var t=ce(e),r=t.first,n=t.last,o=t.scrollPos;if(t.isRangeChanged){var l={first:r,last:n};se(l),y(r),I(n),V.current=o,m.onScrollIndexChange&&m.onScrollIndexChange(l),m.lazy&&m.onLazyLoad&&m.onLazyLoad(l)}},ue=function(){F.current&&clearTimeout(F.current),F.current=setTimeout((function(){if(A.current){var e=[s.getWidth(A.current),s.getHeight(A.current)],t=e[0],r=e[1],n=t!==_.current,o=r!==B.current;(g?n||o:p?n:!!d&&o)&&(j(m.numToleratedItems),_.current=t,B.current=r)}}),m.resizeDelay)},fe=function(e){var t=(m.items||[]).length,r=g?v.rows+e:v+e;return{index:r,count:t,first:0===r,last:r===t-1,even:r%2==0,odd:r%2!=0,props:m}},me=function(e,t){var r=N.length;return z({index:e,count:r,first:0===e,last:e===r-1,even:e%2==0,odd:e%2!=0,props:m},t)},de=function(){var e=m.items;return e&&!H?g?e.slice(v.rows,T.rows).map((function(e){return m.columns?e:e.slice(v.cols,T.cols)})):p&&m.columns?e:e.slice(v,T):[]},pe=function(){var e,t,r,n,o;m.disabled||(le(),e=te(),t=e.numItemsInViewport,r=e.numToleratedItems,n=function(e,t,r,n){return ne(e+t+(e<r?2:3)*r,n)},o=g?{rows:n(v.rows,t.rows,r[0]),cols:n(v.cols,t.cols,r[1],!0)}:n(v,t,r),P(t),j(r),I(o),m.showLoader&&W(g?Array.from({length:t.rows}).map((function(){return Array.from({length:t.cols})})):Array.from({length:t})),m.lazy&&m.onLazyLoad&&m.onLazyLoad({first:v,last:o}),ie())};o((function(){m.disabled||(pe(),$(),q(),_.current=s.getWidth(A.current),B.current=s.getHeight(A.current))})),l((function(){pe()}),[m.itemSize,m.scrollHeight]),l((function(){m.numToleratedItems!==R&&j(m.numToleratedItems)}),[m.numToleratedItems]),l((function(){m.numToleratedItems===R&&pe()}),[R]),l((function(){U&&U.length===(m.items||[]).length||pe();var e=H;m.lazy&&Y!==m.loading&&m.loading!==H&&(M(m.loading),e=m.loading),re(e)})),l((function(){V.current=g?{top:0,left:0}:0}),[m.orientation]),e.useImperativeHandle(f,(function(){return{props:m,getElementRef:G,scrollTo:K,scrollToIndex:Q,scrollInView:Z,getRenderedRange:ee}}));var ge=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=me(t,r),o=i.getJSXElement(m.loadingTemplate,n);return e.createElement(e.Fragment,{key:t},o)},he=function(t,r){var n=fe(r),o=i.getJSXElement(m.itemTemplate,t,n);return e.createElement(e.Fragment,{key:n.index},o)};if(m.disabled){var ve=i.getJSXElement(m.contentTemplate,{items:m.items,rows:m.items,columns:m.columns});return e.createElement(e.Fragment,null,m.children,ve)}var ye=S.getOtherProps(m),we=c("p-virtualscroller",{"p-both-scroll":g,"p-virtualscroller-both":g,"p-virtualscroller-horizontal":p,"p-horizontal-scroll":p},m.className),Se=function(){if(!m.loaderDisabled&&m.showLoader&&H){var t=c("p-virtualscroller-loader",{"p-component-overlay":!m.loadingTemplate}),r=e.createElement("i",{className:"p-virtualscroller-loading-icon pi pi-spinner pi-spin"});return m.loadingTemplate?r=N.map((function(e,t){return ge(t,g&&{numCols:x.cols})})):m.loaderIconTemplate&&(r=i.getJSXElement(m.loaderIconTemplate,{className:"p-virtualscroller-loading-icon",element:r,props:m})),e.createElement("div",{className:t},r)}return null}(),be=function(){var t=de().map(he),r=c("p-virtualscroller-content",{"p-virtualscroller-loading":H}),n=e.createElement("div",{ref:C,className:r},t);if(m.contentTemplate){var o={className:r,contentRef:function(e){return C.current=i.getRefElement(e)},spacerRef:function(e){return k.current=i.getRefElement(e)},stickyRef:function(e){return J.current=i.getRefElement(e)},items:de(),getItemOptions:function(e){return fe(e)},children:t,element:n,props:m,loading:H,getLoaderOptions:function(e,t){return me(e,t)},loadingTemplate:m.loadingTemplate,itemSize:m.itemSize,rows:H?m.loaderDisabled?N:[]:de(),columns:m.columns&&g||p?H&&m.loaderDisabled?g?N[0]:N:m.columns.slice(g?v.cols:v,g?T.cols:T):m.columns,vertical:d,horizontal:p,both:g};return i.getJSXElement(m.contentTemplate,o)}return n}(),ze=m.showSpacer?e.createElement("div",{ref:k,className:"p-virtualscroller-spacer"}):null;return e.createElement("div",a({ref:A,className:we,tabIndex:0,style:m.style},ye,{onScroll:function(e){m.onScroll&&m.onScroll(e),m.delay?(X.current&&clearTimeout(X.current),!H&&m.showLoader&&ce(e).isRangeChanged&&M(!0),X.current=setTimeout((function(){ae(e),!H||!m.showLoader||m.lazy&&void 0!==m.loading||M(!1)}),m.delay)):ae(e)}}),be,ze,Se)})));T.displayName="VirtualScroller";export{T as VirtualScroller};
1
+ import*as e from"react";import{usePrevious as t,useResizeListener as r,useEventListener as n,useMountEffect as o,useUpdateEffect as l}from"primereact/hooks";import{ObjectUtils as i,DomHandler as s,classNames as c}from"primereact/utils";function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},u.apply(this,arguments)}function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function f(e,t){if("object"!==a(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==a(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function m(e){var t=f(e,"string");return"symbol"===a(t)?t:String(t)}function p(e,t,r){return(t=m(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function d(e){if(Array.isArray(e))return e}function g(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,l,i,s=[],c=!0,u=!1;try{if(l=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=l.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(u)throw o}}return s}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function v(e,t){if(e){if("string"==typeof e)return h(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(e,t):void 0}}function y(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function w(e,t){return d(e)||g(e,t)||v(e,t)||y()}var S={defaultProps:{__TYPE:"VirtualScroller",id:null,style:null,className:null,tabIndex:0,items:null,itemSize:0,scrollHeight:null,scrollWidth:null,orientation:"vertical",step:0,numToleratedItems:null,delay:0,resizeDelay:10,appendOnly:!1,inline:!1,lazy:!1,disabled:!1,loaderDisabled:!1,columns:null,loading:void 0,autoSize:!1,showSpacer:!0,showLoader:!1,loadingTemplate:null,loaderIconTemplate:null,itemTemplate:null,contentTemplate:null,onScroll:null,onScrollIndexChange:null,onLazyLoad:null,children:void 0},getProps:function(e){return i.getMergedProps(e,S.defaultProps)},getOtherProps:function(e){return i.getDiffProps(e,S.defaultProps)}};function b(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function z(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?b(Object(r),!0).forEach((function(t){p(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):b(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var O=e.memo(e.forwardRef((function(a,f){var m=S.getProps(a),d=t(a)||{},g="vertical"===m.orientation,h="horizontal"===m.orientation,v="both"===m.orientation,y=w(e.useState(v?{rows:0,cols:0}:0),2),b=y[0],O=y[1],T=w(e.useState(v?{rows:0,cols:0}:0),2),I=T[0],x=T[1],R=w(e.useState(0),2),P=R[0],E=R[1],j=w(e.useState(v?{rows:0,cols:0}:0),2),L=j[0],M=j[1],H=w(e.useState(m.numToleratedItems),2),W=H[0],D=H[1],F=w(e.useState(m.loading||!1),2),N=F[0],A=F[1],C=w(e.useState([]),2),V=C[0],k=C[1],J=e.useRef(null),X=e.useRef(null),_=e.useRef(null),B=e.useRef(null),U=e.useRef(v?{top:0,left:0}:0),Y=e.useRef(null),$=e.useRef(null),q=e.useRef({}),G=e.useRef({}),K=e.useRef(null),Q=e.useRef(null),Z=e.useRef(null),ee=e.useRef(null),te=e.useRef(!1),re=e.useRef(null),ne=w(r({listener:function(e){return be()},when:!m.disabled}),1)[0],oe=w(n({target:"window",type:"orientationchange",listener:function(e){return be()},when:!m.disabled}),1)[0],le=function(){return J},ie=function(e){return Math.floor((e+4*W)/(m.step||1))},se=function(e){return!m.step||P!==ie(e)},ce=function(e){U.current=v?{top:0,left:0}:0,J.current&&J.current.scrollTo(e)},ue=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"auto",r=me(),n=r.numToleratedItems,o=ge(),l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1?arguments[1]:void 0;return e<=t?0:e},i=function(e,t,r){return e*t+r},s=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return ce({left:e,top:r,behavior:t})},c=v?{rows:0,cols:0}:0,u=!1;v?(s(i((c={rows:l(e[0],n[0]),cols:l(e[1],n[1])}).cols,m.itemSize[1],o.left),i(c.rows,m.itemSize[0],o.top)),u=b.rows!==c.rows||b.cols!==c.cols):(c=l(e,n),h?s(i(c,m.itemSize,o.left),0):s(0,i(c,m.itemSize,o.top)),u=b!==c),te.current=u,O(c)},ae=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"auto";if(t){var n=fe(),o=n.first,l=n.viewport,i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return ce({left:e,top:t,behavior:r})},s="to-start"===t,c="to-end"===t;if(s){if(v)l.first.rows-o.rows>e[0]?i(l.first.cols*m.itemSize[1],(l.first.rows-1)*m.itemSize[0]):l.first.cols-o.cols>e[1]&&i((l.first.cols-1)*m.itemSize[1],l.first.rows*m.itemSize[0]);else if(l.first-o>e){var u=(l.first-1)*m.itemSize;h?i(u,0):i(0,u)}}else if(c)if(v)l.last.rows-o.rows<=e[0]+1?i(l.first.cols*m.itemSize[1],(l.first.rows+1)*m.itemSize[0]):l.last.cols-o.cols<=e[1]+1&&i((l.first.cols+1)*m.itemSize[1],l.first.rows*m.itemSize[0]);else if(l.last-o<=e+1){var a=(l.first+1)*m.itemSize;h?i(a,0):i(0,a)}}else ue(e,r)},fe=function(){var e=function(e,t){return Math.floor(e/(t||e))},t=b,r=0;if(J.current){var n=J.current,o=n.scrollTop,l=n.scrollLeft;if(v)r={rows:(t={rows:e(o,m.itemSize[0]),cols:e(l,m.itemSize[1])}).rows+L.rows,cols:t.cols+L.cols};else r=(t=e(h?l:o,m.itemSize))+L}return{first:b,last:I,viewport:{first:t,last:r}}},me=function(){var e=ge(),t=J.current?J.current.offsetWidth-e.left:0,r=J.current?J.current.offsetHeight-e.top:0,n=function(e,t){return Math.ceil(e/(t||e))},o=function(e){return Math.ceil(e/2)},l=v?{rows:n(r,m.itemSize[0]),cols:n(t,m.itemSize[1])}:n(h?t:r,m.itemSize);return{numItemsInViewport:l,numToleratedItems:W||(v?[o(l.rows),o(l.cols)]:o(l))}},pe=function(e){m.autoSize&&!e&&Promise.resolve().then((function(){if(X.current){X.current.style.minHeight=X.current.style.minWidth="auto",X.current.style.position="relative",J.current.style.contain="none";var e=[s.getWidth(J.current),s.getHeight(J.current)],t=e[0],r=e[1];(v||h)&&(J.current.style.width=(t<K.current?t:m.scrollWidth||K.current)+"px"),(v||g)&&(J.current.style.height=(r<Q.current?r:m.scrollHeight||Q.current)+"px"),X.current.style.minHeight=X.current.style.minWidth="",X.current.style.position="",J.current.style.contain=""}}))},de=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1?arguments[1]:void 0;return m.items?Math.min(t?(m.columns||m.items[0]).length:m.items.length,e):0},ge=function(){if(X.current){var e=getComputedStyle(X.current),t=parseFloat(e.paddingLeft)+Math.max(parseFloat(e.left)||0,0),r=parseFloat(e.paddingRight)+Math.max(parseFloat(e.right)||0,0),n=parseFloat(e.paddingTop)+Math.max(parseFloat(e.top)||0,0),o=parseFloat(e.paddingBottom)+Math.max(parseFloat(e.bottom)||0,0);return{left:t,right:r,top:n,bottom:o,x:t+r,y:n+o}}return{left:0,right:0,top:0,bottom:0,x:0,y:0}},he=function(){if(J.current){var e=J.current.parentElement,t=m.scrollWidth||"".concat(J.current.offsetWidth||e.offsetWidth,"px"),r=m.scrollHeight||"".concat(J.current.offsetHeight||e.offsetHeight,"px"),n=function(e,t){return J.current.style[e]=t};v||h?(n("height",r),n("width",t)):n("height",r)}},ve=function(){var e=m.items;if(e){var t=ge(),r=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return G.current=z(z({},G.current),p({},"".concat(e),(t||[]).length*r+n+"px"))};v?(r("height",e,m.itemSize[0],t.y),r("width",m.columns||e[1],m.itemSize[1],t.x)):h?r("width",m.columns||e,m.itemSize,t.x):r("height",e,m.itemSize,t.y)}},ye=function(e){if(X.current&&!m.appendOnly){var t=e?e.first:b,r=function(e,t){return e*t},n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;B.current&&(B.current.style.top="-".concat(t,"px")),q.current=z(z({},q.current),{transform:"translate3d(".concat(e,"px, ").concat(t,"px, 0)")})};if(v)n(r(t.cols,m.itemSize[1]),r(t.rows,m.itemSize[0]));else{var o=r(t,m.itemSize);h?n(o,0):n(0,o)}}},we=function(e){var t=e.target,r=ge(),n=function(e,t){return e?e>t?e-t:e:0},o=function(e,t){return Math.floor(e/(t||e))},l=function(e,t,r,n,o,l){return e<=o?o:l?r-n-o:t+o-1},i=function(e,t,r,n,o,l,i){return e<=l?0:Math.max(0,i?e<t?r:e-l:e>t?r:e-2*l)},s=function(e,t,r,n,o,l){var i=t+n+2*o;return e>=o&&(i+=o+1),de(i,l)},c=n(t.scrollTop,r.top),u=n(t.scrollLeft,r.left),a=v?{rows:0,cols:0}:0,f=I,p=!1,d=U.current;if(v){var g=U.current.top<=c,y=U.current.left<=u;if(!m.appendOnly||m.appendOnly&&(g||y)){var w={rows:o(c,m.itemSize[0]),cols:o(u,m.itemSize[1])},S={rows:l(w.rows,b.rows,I.rows,L.rows,W[0],g),cols:l(w.cols,b.cols,I.cols,L.cols,W[1],y)};a={rows:i(w.rows,S.rows,b.rows,0,0,W[0],g),cols:i(w.cols,S.cols,b.cols,0,0,W[1],y)},f={rows:s(w.rows,a.rows,0,L.rows,W[0]),cols:s(w.cols,a.cols,0,L.cols,W[1],!0)},p=a.rows!==b.rows||f.rows!==I.rows||a.cols!==b.cols||f.cols!==I.cols||te.current,d={top:c,left:u}}}else{var z=h?u:c,O=U.current<=z;if(!m.appendOnly||m.appendOnly&&O){var T=o(z,m.itemSize);f=s(T,a=i(T,l(T,b,I,L,W,O),b,0,0,W,O),0,L,W),p=a!==b||f!==I||te.current,d=z}}return{first:a,last:f,isRangeChanged:p,scrollPos:d}},Se=function(e){var t=we(e),r=t.first,n=t.last,o=t.scrollPos;if(t.isRangeChanged){var l={first:r,last:n};if(ye(l),O(r),x(n),U.current=o,m.onScrollIndexChange&&m.onScrollIndexChange(l),m.lazy&&se(r)){var i={first:m.step?Math.min(ie(r)*m.step,m.items.length-m.step):r,last:Math.min(m.step?(ie(r)+1)*m.step:n,m.items.length)};(!re.current||re.current.first!==i.first||re.current.last!==i.last)&&m.onLazyLoad&&m.onLazyLoad(i),re.current=i}}},be=function(){$.current&&clearTimeout($.current),$.current=setTimeout((function(){if(J.current){var e=[s.getWidth(J.current),s.getHeight(J.current)],t=e[0],r=e[1],n=t!==K.current,o=r!==Q.current;(v?n||o:h?n:!!g&&o)&&(D(m.numToleratedItems),K.current=t,Q.current=r,Z.current=s.getWidth(X.current),ee.current=s.getHeight(X.current))}}),m.resizeDelay)},ze=function(e){var t=(m.items||[]).length,r=v?b.rows+e:b+e;return{index:r,count:t,first:0===r,last:r===t-1,even:r%2==0,odd:r%2!=0,props:m}},Oe=function(e,t){var r=V.length;return z({index:e,count:r,first:0===e,last:e===r-1,even:e%2==0,odd:e%2!=0,props:m},t)},Te=function(){var e=m.items;return e&&!N?v?e.slice(m.appendOnly?0:b.rows,I.rows).map((function(e){return m.columns?e:e.slice(m.appendOnly?0:b.cols,I.cols)})):h&&m.columns?e:e.slice(m.appendOnly?0:b,I):[]},Ie=function(){var e,t,r,n,o;m.disabled||(he(),e=me(),t=e.numItemsInViewport,r=e.numToleratedItems,n=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return de(e+t+(e<r?2:3)*r,n)},o=v?{rows:n(b.rows,t.rows,r[0]),cols:n(b.cols,t.cols,r[1],!0)}:n(b,t,r),M(t),D(r),x(o),m.showLoader&&k(v?Array.from({length:t.rows}).map((function(){return Array.from({length:t.cols})})):Array.from({length:t})),m.lazy&&Promise.resolve().then((function(){re.current={first:m.step?v?{rows:0,cols:b.cols}:0:b,last:Math.min(m.step?m.step:o,m.items.length)},m.onLazyLoad&&m.onLazyLoad(re.current)})),ve())};o((function(){J.current&&s.isVisible(J.current)&&(X.current=X.current||X.current||s.findSingle(J.current,".p-virtualscroller-content"),Ie(),ne(),oe(),K.current=s.getWidth(J.current),Q.current=s.getHeight(J.current),Z.current=s.getWidth(X.current),ee.current=s.getHeight(X.current))})),l((function(){Ie()}),[m.itemSize,m.scrollHeight,m.scrollWidth]),l((function(){m.numToleratedItems!==W&&D(m.numToleratedItems)}),[m.numToleratedItems]),l((function(){m.numToleratedItems===W&&Ie()}),[W]),l((function(){d.items&&d.items.length===(m.items||[]).length||Ie();var e=N;m.lazy&&d.loading!==m.loading&&m.loading!==N&&(A(m.loading),e=m.loading),pe(e)})),l((function(){U.current=v?{top:0,left:0}:0}),[m.orientation]),e.useImperativeHandle(f,(function(){return{props:m,getElementRef:le,scrollTo:ce,scrollToIndex:ue,scrollInView:ae,getRenderedRange:fe}}));var xe=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Oe(t,r),o=i.getJSXElement(m.loadingTemplate,n);return e.createElement(e.Fragment,{key:t},o)},Re=function(t,r){var n=ze(r),o=i.getJSXElement(m.itemTemplate,t,n);return e.createElement(e.Fragment,{key:n.index},o)};if(m.disabled){var Pe=i.getJSXElement(m.contentTemplate,{items:m.items,rows:m.items,columns:m.columns});return e.createElement(e.Fragment,null,m.children,Pe)}var Ee=S.getOtherProps(m),je=c("p-virtualscroller",{"p-virtualscroller-inline":m.inline,"p-virtualscroller-both p-both-scroll":v,"p-virtualscroller-horizontal p-horizontal-scroll":h},m.className),Le=function(){if(!m.loaderDisabled&&m.showLoader&&N){var t=c("p-virtualscroller-loader",{"p-component-overlay":!m.loadingTemplate}),r=e.createElement("i",{className:"p-virtualscroller-loading-icon pi pi-spinner pi-spin"});return m.loadingTemplate?r=V.map((function(e,t){return xe(t,v&&{numCols:L.cols})})):m.loaderIconTemplate&&(r=i.getJSXElement(m.loaderIconTemplate,{className:"p-virtualscroller-loading-icon",element:r,props:m})),e.createElement("div",{className:t},r)}return null}(),Me=function(){var t=Te().map(Re),r=c("p-virtualscroller-content",{"p-virtualscroller-loading":N}),n=e.createElement("div",{ref:X,style:q.current,className:r},t);if(m.contentTemplate){var o={style:q.current,className:r,spacerStyle:G.current,contentRef:function(e){return X.current=i.getRefElement(e)},spacerRef:function(e){return _.current=i.getRefElement(e)},stickyRef:function(e){return B.current=i.getRefElement(e)},items:Te(),getItemOptions:function(e){return ze(e)},children:t,element:n,props:m,loading:N,getLoaderOptions:function(e,t){return Oe(e,t)},loadingTemplate:m.loadingTemplate,itemSize:m.itemSize,rows:N?m.loaderDisabled?V:[]:Te(),columns:m.columns&&v||h?N&&m.loaderDisabled?v?V[0]:V:m.columns.slice(v?b.cols:b,v?I.cols:I):m.columns,vertical:g,horizontal:h,both:v};return i.getJSXElement(m.contentTemplate,o)}return n}(),He=m.showSpacer?e.createElement("div",{ref:_,style:G.current,className:"p-virtualscroller-spacer"}):null;return e.createElement("div",u({ref:J,className:je,tabIndex:m.tabIndex,style:m.style},Ee,{onScroll:function(e){m.onScroll&&m.onScroll(e),m.delay?(Y.current&&clearTimeout(Y.current),se(b)&&(!N&&m.showLoader&&(we(e).isRangeChanged||m.step&&se(b))&&A(!0),Y.current=setTimeout((function(){Se(e),!N||!m.showLoader||m.lazy&&void 0!==m.loading||(A(!1),E(ie(b)))}),m.delay))):Se(e)}}),Me,He,Le)})));O.displayName="VirtualScroller";export{O as VirtualScroller};