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.
- package/api/api.d.ts +2 -2
- package/autocomplete/autocomplete.cjs.js +1 -0
- package/autocomplete/autocomplete.cjs.min.js +1 -1
- package/autocomplete/autocomplete.esm.js +1 -0
- package/autocomplete/autocomplete.esm.min.js +1 -1
- package/autocomplete/autocomplete.js +1 -0
- package/autocomplete/autocomplete.min.js +1 -1
- package/avatar/avatar.cjs.js +2 -2
- package/avatar/avatar.cjs.min.js +1 -1
- package/avatar/avatar.esm.js +2 -2
- package/avatar/avatar.esm.min.js +1 -1
- package/avatar/avatar.js +2 -2
- package/avatar/avatar.min.js +1 -1
- package/calendar/calendar.cjs.js +2 -2
- package/calendar/calendar.cjs.min.js +1 -1
- package/calendar/calendar.esm.js +2 -2
- package/calendar/calendar.esm.min.js +1 -1
- package/calendar/calendar.js +2 -2
- package/calendar/calendar.min.js +1 -1
- package/contextmenu/contextmenu.cjs.js +61 -18
- package/contextmenu/contextmenu.cjs.min.js +1 -1
- package/contextmenu/contextmenu.d.ts +9 -0
- package/contextmenu/contextmenu.esm.js +63 -20
- package/contextmenu/contextmenu.esm.min.js +1 -1
- package/contextmenu/contextmenu.js +61 -18
- package/contextmenu/contextmenu.min.js +1 -1
- package/core/core.js +226 -115
- package/core/core.min.js +4 -4
- package/datatable/datatable.cjs.js +84 -79
- package/datatable/datatable.cjs.min.js +1 -1
- package/datatable/datatable.d.ts +2 -11
- package/datatable/datatable.esm.js +85 -80
- package/datatable/datatable.esm.min.js +1 -1
- package/datatable/datatable.js +84 -79
- package/datatable/datatable.min.css +1 -1
- package/datatable/datatable.min.js +1 -1
- package/dropdown/dropdown.cjs.js +1 -0
- package/dropdown/dropdown.cjs.min.js +1 -1
- package/dropdown/dropdown.esm.js +1 -0
- package/dropdown/dropdown.esm.min.js +1 -1
- package/dropdown/dropdown.js +1 -0
- package/dropdown/dropdown.min.js +1 -1
- package/hooks/hooks.cjs.js +34 -2
- package/hooks/hooks.cjs.min.js +1 -1
- package/hooks/hooks.d.ts +13 -0
- package/hooks/hooks.esm.js +34 -3
- package/hooks/hooks.esm.min.js +1 -1
- package/hooks/hooks.js +34 -2
- package/hooks/hooks.min.js +1 -1
- package/inputtext/inputtext.min.css +1 -1
- package/listbox/listbox.cjs.js +5 -4
- package/listbox/listbox.cjs.min.js +1 -1
- package/listbox/listbox.esm.js +5 -4
- package/listbox/listbox.esm.min.js +1 -1
- package/listbox/listbox.js +5 -4
- package/listbox/listbox.min.js +1 -1
- package/megamenu/megamenu.cjs.js +91 -6
- package/megamenu/megamenu.cjs.min.js +1 -1
- package/megamenu/megamenu.d.ts +9 -0
- package/megamenu/megamenu.esm.js +93 -8
- package/megamenu/megamenu.esm.min.js +1 -1
- package/megamenu/megamenu.js +91 -6
- package/megamenu/megamenu.min.css +1 -1
- package/megamenu/megamenu.min.js +1 -1
- package/multiselect/multiselect.cjs.js +1 -0
- package/multiselect/multiselect.cjs.min.js +1 -1
- package/multiselect/multiselect.esm.js +1 -0
- package/multiselect/multiselect.esm.min.js +1 -1
- package/multiselect/multiselect.js +1 -0
- package/multiselect/multiselect.min.js +1 -1
- package/package.json +1 -1
- package/primereact.all.cjs.js +554 -244
- package/primereact.all.cjs.min.js +1 -1
- package/primereact.all.esm.js +554 -245
- package/primereact.all.esm.min.js +1 -1
- package/primereact.all.js +554 -244
- package/primereact.all.min.js +1 -1
- package/resources/primereact.css +616 -667
- package/resources/primereact.min.css +1 -1
- package/resources/themes/arya-blue/theme.css +130 -2
- package/resources/themes/arya-green/theme.css +130 -2
- package/resources/themes/arya-orange/theme.css +130 -2
- package/resources/themes/arya-purple/theme.css +130 -2
- package/resources/themes/bootstrap4-dark-blue/theme.css +131 -2
- package/resources/themes/bootstrap4-dark-purple/theme.css +131 -2
- package/resources/themes/bootstrap4-light-blue/theme.css +131 -2
- package/resources/themes/bootstrap4-light-purple/theme.css +131 -2
- package/resources/themes/fluent-light/theme.css +131 -2
- package/resources/themes/lara-dark-blue/theme.css +131 -2
- package/resources/themes/lara-dark-indigo/theme.css +131 -2
- package/resources/themes/lara-dark-purple/theme.css +131 -2
- package/resources/themes/lara-dark-teal/theme.css +131 -2
- package/resources/themes/lara-light-blue/theme.css +131 -2
- package/resources/themes/lara-light-indigo/theme.css +131 -2
- package/resources/themes/lara-light-purple/theme.css +131 -2
- package/resources/themes/lara-light-teal/theme.css +131 -2
- package/resources/themes/luna-amber/theme.css +131 -2
- package/resources/themes/luna-blue/theme.css +131 -2
- package/resources/themes/luna-green/theme.css +131 -2
- package/resources/themes/luna-pink/theme.css +131 -2
- package/resources/themes/md-dark-deeppurple/theme.css +131 -2
- package/resources/themes/md-dark-indigo/theme.css +131 -2
- package/resources/themes/md-light-deeppurple/theme.css +131 -2
- package/resources/themes/md-light-indigo/theme.css +131 -2
- package/resources/themes/mdc-dark-deeppurple/theme.css +131 -2
- package/resources/themes/mdc-dark-indigo/theme.css +131 -2
- package/resources/themes/mdc-light-deeppurple/theme.css +131 -2
- package/resources/themes/mdc-light-indigo/theme.css +131 -2
- package/resources/themes/mira/theme.css +131 -2
- package/resources/themes/nano/theme.css +131 -2
- package/resources/themes/nova/theme.css +131 -2
- package/resources/themes/nova-accent/theme.css +131 -2
- package/resources/themes/nova-alt/theme.css +131 -2
- package/resources/themes/rhea/theme.css +131 -2
- package/resources/themes/saga-blue/theme.css +131 -2
- package/resources/themes/saga-green/theme.css +131 -2
- package/resources/themes/saga-orange/theme.css +131 -2
- package/resources/themes/saga-purple/theme.css +131 -2
- package/resources/themes/soho-dark/theme.css +131 -2
- package/resources/themes/soho-light/theme.css +131 -2
- package/resources/themes/tailwind-light/theme.css +131 -2
- package/resources/themes/vela-blue/theme.css +131 -2
- package/resources/themes/vela-green/theme.css +131 -2
- package/resources/themes/vela-orange/theme.css +131 -2
- package/resources/themes/vela-purple/theme.css +131 -2
- package/resources/themes/viva-dark/theme.css +131 -2
- package/resources/themes/viva-light/theme.css +131 -2
- package/tieredmenu/tieredmenu.cjs.js +69 -9
- package/tieredmenu/tieredmenu.cjs.min.js +1 -1
- package/tieredmenu/tieredmenu.d.ts +9 -0
- package/tieredmenu/tieredmenu.esm.js +71 -11
- package/tieredmenu/tieredmenu.esm.min.js +1 -1
- package/tieredmenu/tieredmenu.js +69 -9
- package/tieredmenu/tieredmenu.min.js +1 -1
- package/toast/toast.min.css +1 -1
- package/treetable/treetable.cjs.js +12 -9
- package/treetable/treetable.cjs.min.js +1 -1
- package/treetable/treetable.d.ts +0 -5
- package/treetable/treetable.esm.js +12 -9
- package/treetable/treetable.esm.min.js +1 -1
- package/treetable/treetable.js +12 -9
- package/treetable/treetable.min.css +1 -1
- package/treetable/treetable.min.js +1 -1
- package/utils/utils.cjs.js +14 -9
- package/utils/utils.cjs.min.js +1 -1
- package/utils/utils.esm.js +14 -9
- package/utils/utils.esm.min.js +1 -1
- package/utils/utils.js +14 -9
- package/utils/utils.min.js +1 -1
- package/virtualscroller/virtualscroller.cjs.js +177 -104
- package/virtualscroller/virtualscroller.cjs.min.js +1 -1
- package/virtualscroller/virtualscroller.d.ts +20 -0
- package/virtualscroller/virtualscroller.esm.js +177 -104
- package/virtualscroller/virtualscroller.esm.min.js +1 -1
- package/virtualscroller/virtualscroller.js +177 -104
- package/virtualscroller/virtualscroller.min.css +1 -1
- package/virtualscroller/virtualscroller.min.js +1 -1
- package/web-types.json +1 -1
|
@@ -143,14 +143,18 @@ var VirtualScrollerBase = {
|
|
|
143
143
|
id: null,
|
|
144
144
|
style: null,
|
|
145
145
|
className: null,
|
|
146
|
+
tabIndex: 0,
|
|
146
147
|
items: null,
|
|
147
148
|
itemSize: 0,
|
|
148
149
|
scrollHeight: null,
|
|
149
150
|
scrollWidth: null,
|
|
150
151
|
orientation: 'vertical',
|
|
152
|
+
step: 0,
|
|
151
153
|
numToleratedItems: null,
|
|
152
154
|
delay: 0,
|
|
153
155
|
resizeDelay: 10,
|
|
156
|
+
appendOnly: false,
|
|
157
|
+
inline: false,
|
|
154
158
|
lazy: false,
|
|
155
159
|
disabled: false,
|
|
156
160
|
loaderDisabled: false,
|
|
@@ -180,6 +184,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
180
184
|
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; }
|
|
181
185
|
var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace.forwardRef(function (inProps, ref) {
|
|
182
186
|
var props = VirtualScrollerBase.getProps(inProps);
|
|
187
|
+
var prevProps = hooks.usePrevious(inProps) || {};
|
|
183
188
|
var vertical = props.orientation === 'vertical';
|
|
184
189
|
var horizontal = props.orientation === 'horizontal';
|
|
185
190
|
var both = props.orientation === 'both';
|
|
@@ -197,25 +202,29 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
197
202
|
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
198
203
|
lastState = _React$useState4[0],
|
|
199
204
|
setLastState = _React$useState4[1];
|
|
200
|
-
var _React$useState5 = React__namespace.useState(
|
|
205
|
+
var _React$useState5 = React__namespace.useState(0),
|
|
206
|
+
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
207
|
+
pageState = _React$useState6[0],
|
|
208
|
+
setPageState = _React$useState6[1];
|
|
209
|
+
var _React$useState7 = React__namespace.useState(both ? {
|
|
201
210
|
rows: 0,
|
|
202
211
|
cols: 0
|
|
203
212
|
} : 0),
|
|
204
|
-
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
205
|
-
numItemsInViewportState = _React$useState6[0],
|
|
206
|
-
setNumItemsInViewportState = _React$useState6[1];
|
|
207
|
-
var _React$useState7 = React__namespace.useState(props.numToleratedItems),
|
|
208
213
|
_React$useState8 = _slicedToArray(_React$useState7, 2),
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
var _React$useState9 = React__namespace.useState(props.
|
|
214
|
+
numItemsInViewportState = _React$useState8[0],
|
|
215
|
+
setNumItemsInViewportState = _React$useState8[1];
|
|
216
|
+
var _React$useState9 = React__namespace.useState(props.numToleratedItems),
|
|
212
217
|
_React$useState10 = _slicedToArray(_React$useState9, 2),
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
var _React$useState11 = React__namespace.useState(
|
|
218
|
+
numToleratedItemsState = _React$useState10[0],
|
|
219
|
+
setNumToleratedItemsState = _React$useState10[1];
|
|
220
|
+
var _React$useState11 = React__namespace.useState(props.loading || false),
|
|
216
221
|
_React$useState12 = _slicedToArray(_React$useState11, 2),
|
|
217
|
-
|
|
218
|
-
|
|
222
|
+
loadingState = _React$useState12[0],
|
|
223
|
+
setLoadingState = _React$useState12[1];
|
|
224
|
+
var _React$useState13 = React__namespace.useState([]),
|
|
225
|
+
_React$useState14 = _slicedToArray(_React$useState13, 2),
|
|
226
|
+
loaderArrState = _React$useState14[0],
|
|
227
|
+
setLoaderArrState = _React$useState14[1];
|
|
219
228
|
var elementRef = React__namespace.useRef(null);
|
|
220
229
|
var _contentRef = React__namespace.useRef(null);
|
|
221
230
|
var _spacerRef = React__namespace.useRef(null);
|
|
@@ -226,14 +235,19 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
226
235
|
} : 0);
|
|
227
236
|
var scrollTimeout = React__namespace.useRef(null);
|
|
228
237
|
var resizeTimeout = React__namespace.useRef(null);
|
|
238
|
+
var contentStyle = React__namespace.useRef({});
|
|
239
|
+
var spacerStyle = React__namespace.useRef({});
|
|
229
240
|
var defaultWidth = React__namespace.useRef(null);
|
|
230
241
|
var defaultHeight = React__namespace.useRef(null);
|
|
231
|
-
var
|
|
232
|
-
var
|
|
242
|
+
var defaultContentWidth = React__namespace.useRef(null);
|
|
243
|
+
var defaultContentHeight = React__namespace.useRef(null);
|
|
244
|
+
var isItemRangeChanged = React__namespace.useRef(false);
|
|
245
|
+
var lazyLoadState = React__namespace.useRef(null);
|
|
233
246
|
var _useResizeListener = hooks.useResizeListener({
|
|
234
247
|
listener: function listener(event) {
|
|
235
248
|
return onResize();
|
|
236
|
-
}
|
|
249
|
+
},
|
|
250
|
+
when: !props.disabled
|
|
237
251
|
}),
|
|
238
252
|
_useResizeListener2 = _slicedToArray(_useResizeListener, 1),
|
|
239
253
|
bindWindowResizeListener = _useResizeListener2[0];
|
|
@@ -242,13 +256,23 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
242
256
|
type: 'orientationchange',
|
|
243
257
|
listener: function listener(event) {
|
|
244
258
|
return onResize();
|
|
245
|
-
}
|
|
259
|
+
},
|
|
260
|
+
when: !props.disabled
|
|
246
261
|
}),
|
|
247
262
|
_useEventListener2 = _slicedToArray(_useEventListener, 1),
|
|
248
263
|
bindOrientationChangeListener = _useEventListener2[0];
|
|
249
264
|
var getElementRef = function getElementRef() {
|
|
250
265
|
return elementRef;
|
|
251
266
|
};
|
|
267
|
+
var getPageByFirst = function getPageByFirst(first) {
|
|
268
|
+
return Math.floor((first + numToleratedItemsState * 4) / (props.step || 1));
|
|
269
|
+
};
|
|
270
|
+
var setContentElement = function setContentElement(element) {
|
|
271
|
+
_contentRef.current = element || _contentRef.current || utils.DomHandler.findSingle(elementRef.current, '.p-virtualscroller-content');
|
|
272
|
+
};
|
|
273
|
+
var isPageChanged = function isPageChanged(first) {
|
|
274
|
+
return props.step ? pageState !== getPageByFirst(first) : true;
|
|
275
|
+
};
|
|
252
276
|
var scrollTo = function scrollTo(options) {
|
|
253
277
|
lastScrollPos.current = both ? {
|
|
254
278
|
top: 0,
|
|
@@ -260,13 +284,14 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
260
284
|
var behavior = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'auto';
|
|
261
285
|
var _calculateNumItems = calculateNumItems(),
|
|
262
286
|
numToleratedItems = _calculateNumItems.numToleratedItems;
|
|
287
|
+
var contentPos = getContentPosition();
|
|
263
288
|
var calculateFirst = function calculateFirst() {
|
|
264
289
|
var _index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
265
290
|
var _numT = arguments.length > 1 ? arguments[1] : undefined;
|
|
266
291
|
return _index <= _numT ? 0 : _index;
|
|
267
292
|
};
|
|
268
|
-
var calculateCoord = function calculateCoord(_first, _size) {
|
|
269
|
-
return _first * _size;
|
|
293
|
+
var calculateCoord = function calculateCoord(_first, _size, _cpos) {
|
|
294
|
+
return _first * _size + _cpos;
|
|
270
295
|
};
|
|
271
296
|
var scrollToItem = function scrollToItem() {
|
|
272
297
|
var left = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
@@ -277,20 +302,25 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
277
302
|
behavior: behavior
|
|
278
303
|
});
|
|
279
304
|
};
|
|
305
|
+
var newFirst = both ? {
|
|
306
|
+
rows: 0,
|
|
307
|
+
cols: 0
|
|
308
|
+
} : 0;
|
|
309
|
+
var isRangeChanged = false;
|
|
280
310
|
if (both) {
|
|
281
|
-
|
|
311
|
+
newFirst = {
|
|
282
312
|
rows: calculateFirst(index[0], numToleratedItems[0]),
|
|
283
313
|
cols: calculateFirst(index[1], numToleratedItems[1])
|
|
284
314
|
};
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
}
|
|
315
|
+
scrollToItem(calculateCoord(newFirst.cols, props.itemSize[1], contentPos.left), calculateCoord(newFirst.rows, props.itemSize[0], contentPos.top));
|
|
316
|
+
isRangeChanged = firstState.rows !== newFirst.rows || firstState.cols !== newFirst.cols;
|
|
288
317
|
} else {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
}
|
|
318
|
+
newFirst = calculateFirst(index, numToleratedItems);
|
|
319
|
+
horizontal ? scrollToItem(calculateCoord(newFirst, props.itemSize, contentPos.left), 0) : scrollToItem(0, calculateCoord(newFirst, props.itemSize, contentPos.top));
|
|
320
|
+
isRangeChanged = firstState !== newFirst;
|
|
293
321
|
}
|
|
322
|
+
isItemRangeChanged.current = isRangeChanged;
|
|
323
|
+
setFirstState(newFirst);
|
|
294
324
|
};
|
|
295
325
|
var scrollInView = function scrollInView(index, to) {
|
|
296
326
|
var behavior = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'auto';
|
|
@@ -407,7 +437,8 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
407
437
|
var _calculateNumItems2 = calculateNumItems(),
|
|
408
438
|
numItemsInViewport = _calculateNumItems2.numItemsInViewport,
|
|
409
439
|
numToleratedItems = _calculateNumItems2.numToleratedItems;
|
|
410
|
-
var calculateLast = function calculateLast(_first, _num, _numT
|
|
440
|
+
var calculateLast = function calculateLast(_first, _num, _numT) {
|
|
441
|
+
var _isCols = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
411
442
|
return getLast(_first + _num + (_first < _numT ? 2 : 3) * _numT, _isCols);
|
|
412
443
|
};
|
|
413
444
|
var last = both ? {
|
|
@@ -429,9 +460,15 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
429
460
|
}));
|
|
430
461
|
}
|
|
431
462
|
if (props.lazy) {
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
463
|
+
Promise.resolve().then(function () {
|
|
464
|
+
lazyLoadState.current = {
|
|
465
|
+
first: props.step ? both ? {
|
|
466
|
+
rows: 0,
|
|
467
|
+
cols: firstState.cols
|
|
468
|
+
} : 0 : firstState,
|
|
469
|
+
last: Math.min(props.step ? props.step : last, props.items.length)
|
|
470
|
+
};
|
|
471
|
+
props.onLazyLoad && props.onLazyLoad(lazyLoadState.current);
|
|
435
472
|
});
|
|
436
473
|
}
|
|
437
474
|
};
|
|
@@ -440,12 +477,21 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
440
477
|
Promise.resolve().then(function () {
|
|
441
478
|
if (_contentRef.current) {
|
|
442
479
|
_contentRef.current.style.minHeight = _contentRef.current.style.minWidth = 'auto';
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
480
|
+
_contentRef.current.style.position = 'relative';
|
|
481
|
+
elementRef.current.style.contain = 'none';
|
|
482
|
+
|
|
483
|
+
/*const [contentWidth, contentHeight] = [DomHandler.getWidth(contentRef.current), DomHandler.getHeight(contentRef.current)];
|
|
484
|
+
contentWidth !== defaultContentWidth.current && (elementRef.current.style.width = '');
|
|
485
|
+
contentHeight !== defaultContentHeight.current && (elementRef.current.style.height = '');*/
|
|
486
|
+
|
|
487
|
+
var _ref = [utils.DomHandler.getWidth(elementRef.current), utils.DomHandler.getHeight(elementRef.current)],
|
|
488
|
+
width = _ref[0],
|
|
489
|
+
height = _ref[1];
|
|
490
|
+
(both || horizontal) && (elementRef.current.style.width = (width < defaultWidth.current ? width : props.scrollWidth || defaultWidth.current) + 'px');
|
|
491
|
+
(both || vertical) && (elementRef.current.style.height = (height < defaultHeight.current ? height : props.scrollHeight || defaultHeight.current) + 'px');
|
|
448
492
|
_contentRef.current.style.minHeight = _contentRef.current.style.minWidth = '';
|
|
493
|
+
_contentRef.current.style.position = '';
|
|
494
|
+
elementRef.current.style.contain = '';
|
|
449
495
|
}
|
|
450
496
|
});
|
|
451
497
|
}
|
|
@@ -458,10 +504,10 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
458
504
|
var getContentPosition = function getContentPosition() {
|
|
459
505
|
if (_contentRef.current) {
|
|
460
506
|
var style = getComputedStyle(_contentRef.current);
|
|
461
|
-
var left =
|
|
462
|
-
var right =
|
|
463
|
-
var top =
|
|
464
|
-
var bottom =
|
|
507
|
+
var left = parseFloat(style.paddingLeft) + Math.max(parseFloat(style.left) || 0, 0);
|
|
508
|
+
var right = parseFloat(style.paddingRight) + Math.max(parseFloat(style.right) || 0, 0);
|
|
509
|
+
var top = parseFloat(style.paddingTop) + Math.max(parseFloat(style.top) || 0, 0);
|
|
510
|
+
var bottom = parseFloat(style.paddingBottom) + Math.max(parseFloat(style.bottom) || 0, 0);
|
|
465
511
|
return {
|
|
466
512
|
left: left,
|
|
467
513
|
right: right,
|
|
@@ -498,11 +544,11 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
498
544
|
};
|
|
499
545
|
var setSpacerSize = function setSpacerSize() {
|
|
500
546
|
var items = props.items;
|
|
501
|
-
if (
|
|
547
|
+
if (items) {
|
|
502
548
|
var contentPos = getContentPosition();
|
|
503
549
|
var setProp = function setProp(_name, _value, _size) {
|
|
504
550
|
var _cpos = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
|
505
|
-
return
|
|
551
|
+
return spacerStyle.current = _objectSpread(_objectSpread({}, spacerStyle.current), _defineProperty({}, "".concat(_name), (_value || []).length * _size + _cpos + 'px'));
|
|
506
552
|
};
|
|
507
553
|
if (both) {
|
|
508
554
|
setProp('height', items, props.itemSize[0], contentPos.y);
|
|
@@ -513,7 +559,7 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
513
559
|
}
|
|
514
560
|
};
|
|
515
561
|
var setContentPosition = function setContentPosition(pos) {
|
|
516
|
-
if (_contentRef.current) {
|
|
562
|
+
if (_contentRef.current && !props.appendOnly) {
|
|
517
563
|
var first = pos ? pos.first : firstState;
|
|
518
564
|
var calculateTranslateVal = function calculateTranslateVal(_first, _size) {
|
|
519
565
|
return _first * _size;
|
|
@@ -522,7 +568,9 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
522
568
|
var _x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
523
569
|
var _y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
524
570
|
_stickyRef.current && (_stickyRef.current.style.top = "-".concat(_y, "px"));
|
|
525
|
-
|
|
571
|
+
contentStyle.current = _objectSpread(_objectSpread({}, contentStyle.current), {
|
|
572
|
+
transform: "translate3d(".concat(_x, "px, ").concat(_y, "px, 0)")
|
|
573
|
+
});
|
|
526
574
|
};
|
|
527
575
|
if (both) {
|
|
528
576
|
setTransform(calculateTranslateVal(first.cols, props.itemSize[1]), calculateTranslateVal(first.rows, props.itemSize[0]));
|
|
@@ -566,36 +614,40 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
566
614
|
if (both) {
|
|
567
615
|
var isScrollDown = lastScrollPos.current.top <= scrollTop;
|
|
568
616
|
var isScrollRight = lastScrollPos.current.left <= scrollLeft;
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
617
|
+
if (!props.appendOnly || props.appendOnly && (isScrollDown || isScrollRight)) {
|
|
618
|
+
var currentIndex = {
|
|
619
|
+
rows: calculateCurrentIndex(scrollTop, props.itemSize[0]),
|
|
620
|
+
cols: calculateCurrentIndex(scrollLeft, props.itemSize[1])
|
|
621
|
+
};
|
|
622
|
+
var triggerIndex = {
|
|
623
|
+
rows: calculateTriggerIndex(currentIndex.rows, firstState.rows, lastState.rows, numItemsInViewportState.rows, numToleratedItemsState[0], isScrollDown),
|
|
624
|
+
cols: calculateTriggerIndex(currentIndex.cols, firstState.cols, lastState.cols, numItemsInViewportState.cols, numToleratedItemsState[1], isScrollRight)
|
|
625
|
+
};
|
|
626
|
+
newFirst = {
|
|
627
|
+
rows: calculateFirst(currentIndex.rows, triggerIndex.rows, firstState.rows, lastState.rows, numItemsInViewportState.rows, numToleratedItemsState[0], isScrollDown),
|
|
628
|
+
cols: calculateFirst(currentIndex.cols, triggerIndex.cols, firstState.cols, lastState.cols, numItemsInViewportState.cols, numToleratedItemsState[1], isScrollRight)
|
|
629
|
+
};
|
|
630
|
+
newLast = {
|
|
631
|
+
rows: calculateLast(currentIndex.rows, newFirst.rows, lastState.rows, numItemsInViewportState.rows, numToleratedItemsState[0]),
|
|
632
|
+
cols: calculateLast(currentIndex.cols, newFirst.cols, lastState.cols, numItemsInViewportState.cols, numToleratedItemsState[1], true)
|
|
633
|
+
};
|
|
634
|
+
isRangeChanged = newFirst.rows !== firstState.rows || newLast.rows !== lastState.rows || newFirst.cols !== firstState.cols || newLast.cols !== lastState.cols || isItemRangeChanged.current;
|
|
635
|
+
newScrollPos = {
|
|
636
|
+
top: scrollTop,
|
|
637
|
+
left: scrollLeft
|
|
638
|
+
};
|
|
639
|
+
}
|
|
590
640
|
} else {
|
|
591
641
|
var scrollPos = horizontal ? scrollLeft : scrollTop;
|
|
592
642
|
var isScrollDownOrRight = lastScrollPos.current <= scrollPos;
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
643
|
+
if (!props.appendOnly || props.appendOnly && isScrollDownOrRight) {
|
|
644
|
+
var _currentIndex2 = calculateCurrentIndex(scrollPos, props.itemSize);
|
|
645
|
+
var _triggerIndex2 = calculateTriggerIndex(_currentIndex2, firstState, lastState, numItemsInViewportState, numToleratedItemsState, isScrollDownOrRight);
|
|
646
|
+
newFirst = calculateFirst(_currentIndex2, _triggerIndex2, firstState, lastState, numItemsInViewportState, numToleratedItemsState, isScrollDownOrRight);
|
|
647
|
+
newLast = calculateLast(_currentIndex2, newFirst, lastState, numItemsInViewportState, numToleratedItemsState);
|
|
648
|
+
isRangeChanged = newFirst !== firstState || newLast !== lastState || isItemRangeChanged.current;
|
|
649
|
+
newScrollPos = scrollPos;
|
|
650
|
+
}
|
|
599
651
|
}
|
|
600
652
|
return {
|
|
601
653
|
first: newFirst,
|
|
@@ -620,8 +672,14 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
620
672
|
setLastState(last);
|
|
621
673
|
lastScrollPos.current = scrollPos;
|
|
622
674
|
props.onScrollIndexChange && props.onScrollIndexChange(newState);
|
|
623
|
-
if (props.lazy) {
|
|
624
|
-
|
|
675
|
+
if (props.lazy && isPageChanged(first)) {
|
|
676
|
+
var newLazyLoadState = {
|
|
677
|
+
first: props.step ? Math.min(getPageByFirst(first) * props.step, props.items.length - props.step) : first,
|
|
678
|
+
last: Math.min(props.step ? (getPageByFirst(first) + 1) * props.step : last, props.items.length)
|
|
679
|
+
};
|
|
680
|
+
var isLazyStateChanged = !lazyLoadState.current || lazyLoadState.current.first !== newLazyLoadState.first || lazyLoadState.current.last !== newLazyLoadState.last;
|
|
681
|
+
isLazyStateChanged && props.onLazyLoad && props.onLazyLoad(newLazyLoadState);
|
|
682
|
+
lazyLoadState.current = newLazyLoadState;
|
|
625
683
|
}
|
|
626
684
|
}
|
|
627
685
|
};
|
|
@@ -631,17 +689,21 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
631
689
|
if (scrollTimeout.current) {
|
|
632
690
|
clearTimeout(scrollTimeout.current);
|
|
633
691
|
}
|
|
634
|
-
if (
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
onScrollChange(event);
|
|
641
|
-
if (loadingState && props.showLoader && (!props.lazy || props.loading === undefined)) {
|
|
642
|
-
setLoadingState(false);
|
|
692
|
+
if (isPageChanged(firstState)) {
|
|
693
|
+
if (!loadingState && props.showLoader) {
|
|
694
|
+
var _onScrollPositionChan2 = onScrollPositionChange(event),
|
|
695
|
+
isRangeChanged = _onScrollPositionChan2.isRangeChanged;
|
|
696
|
+
var changed = isRangeChanged || (props.step ? isPageChanged(firstState) : false);
|
|
697
|
+
changed && setLoadingState(true);
|
|
643
698
|
}
|
|
644
|
-
|
|
699
|
+
scrollTimeout.current = setTimeout(function () {
|
|
700
|
+
onScrollChange(event);
|
|
701
|
+
if (loadingState && props.showLoader && (!props.lazy || props.loading === undefined)) {
|
|
702
|
+
setLoadingState(false);
|
|
703
|
+
setPageState(getPageByFirst(firstState));
|
|
704
|
+
}
|
|
705
|
+
}, props.delay);
|
|
706
|
+
}
|
|
645
707
|
} else {
|
|
646
708
|
onScrollChange(event);
|
|
647
709
|
}
|
|
@@ -652,9 +714,9 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
652
714
|
}
|
|
653
715
|
resizeTimeout.current = setTimeout(function () {
|
|
654
716
|
if (elementRef.current) {
|
|
655
|
-
var
|
|
656
|
-
width =
|
|
657
|
-
height =
|
|
717
|
+
var _ref2 = [utils.DomHandler.getWidth(elementRef.current), utils.DomHandler.getHeight(elementRef.current)],
|
|
718
|
+
width = _ref2[0],
|
|
719
|
+
height = _ref2[1];
|
|
658
720
|
var isDiffWidth = width !== defaultWidth.current,
|
|
659
721
|
isDiffHeight = height !== defaultHeight.current;
|
|
660
722
|
var reinit = both ? isDiffWidth || isDiffHeight : horizontal ? isDiffWidth : vertical ? isDiffHeight : false;
|
|
@@ -662,6 +724,8 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
662
724
|
setNumToleratedItemsState(props.numToleratedItems);
|
|
663
725
|
defaultWidth.current = width;
|
|
664
726
|
defaultHeight.current = height;
|
|
727
|
+
defaultContentWidth.current = utils.DomHandler.getWidth(_contentRef.current);
|
|
728
|
+
defaultContentHeight.current = utils.DomHandler.getHeight(_contentRef.current);
|
|
665
729
|
}
|
|
666
730
|
}
|
|
667
731
|
}, props.resizeDelay);
|
|
@@ -694,12 +758,24 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
694
758
|
var loadedItems = function loadedItems() {
|
|
695
759
|
var items = props.items;
|
|
696
760
|
if (items && !loadingState) {
|
|
697
|
-
if (both) return items.slice(firstState.rows, lastState.rows).map(function (item) {
|
|
698
|
-
return props.columns ? item : item.slice(firstState.cols, lastState.cols);
|
|
699
|
-
});else if (horizontal && props.columns) return items;else return items.slice(firstState, lastState);
|
|
761
|
+
if (both) return items.slice(props.appendOnly ? 0 : firstState.rows, lastState.rows).map(function (item) {
|
|
762
|
+
return props.columns ? item : item.slice(props.appendOnly ? 0 : firstState.cols, lastState.cols);
|
|
763
|
+
});else if (horizontal && props.columns) return items;else return items.slice(props.appendOnly ? 0 : firstState, lastState);
|
|
700
764
|
}
|
|
701
765
|
return [];
|
|
702
766
|
};
|
|
767
|
+
var viewInit = function viewInit() {
|
|
768
|
+
if (elementRef.current && utils.DomHandler.isVisible(elementRef.current)) {
|
|
769
|
+
setContentElement(_contentRef.current);
|
|
770
|
+
init();
|
|
771
|
+
bindWindowResizeListener();
|
|
772
|
+
bindOrientationChangeListener();
|
|
773
|
+
defaultWidth.current = utils.DomHandler.getWidth(elementRef.current);
|
|
774
|
+
defaultHeight.current = utils.DomHandler.getHeight(elementRef.current);
|
|
775
|
+
defaultContentWidth.current = utils.DomHandler.getWidth(_contentRef.current);
|
|
776
|
+
defaultContentHeight.current = utils.DomHandler.getHeight(_contentRef.current);
|
|
777
|
+
}
|
|
778
|
+
};
|
|
703
779
|
var init = function init() {
|
|
704
780
|
if (!props.disabled) {
|
|
705
781
|
setSize();
|
|
@@ -708,17 +784,11 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
708
784
|
}
|
|
709
785
|
};
|
|
710
786
|
hooks.useMountEffect(function () {
|
|
711
|
-
|
|
712
|
-
init();
|
|
713
|
-
bindWindowResizeListener();
|
|
714
|
-
bindOrientationChangeListener();
|
|
715
|
-
defaultWidth.current = utils.DomHandler.getWidth(elementRef.current);
|
|
716
|
-
defaultHeight.current = utils.DomHandler.getHeight(elementRef.current);
|
|
717
|
-
}
|
|
787
|
+
viewInit();
|
|
718
788
|
});
|
|
719
789
|
hooks.useUpdateEffect(function () {
|
|
720
790
|
init();
|
|
721
|
-
}, [props.itemSize, props.scrollHeight]);
|
|
791
|
+
}, [props.itemSize, props.scrollHeight, props.scrollWidth]);
|
|
722
792
|
hooks.useUpdateEffect(function () {
|
|
723
793
|
if (props.numToleratedItems !== numToleratedItemsState) {
|
|
724
794
|
setNumToleratedItemsState(props.numToleratedItems);
|
|
@@ -730,11 +800,11 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
730
800
|
}
|
|
731
801
|
}, [numToleratedItemsState]);
|
|
732
802
|
hooks.useUpdateEffect(function () {
|
|
733
|
-
if (!
|
|
803
|
+
if (!prevProps.items || prevProps.items.length !== (props.items || []).length) {
|
|
734
804
|
init();
|
|
735
805
|
}
|
|
736
806
|
var loading = loadingState;
|
|
737
|
-
if (props.lazy &&
|
|
807
|
+
if (props.lazy && prevProps.loading !== props.loading && props.loading !== loadingState) {
|
|
738
808
|
setLoadingState(props.loading);
|
|
739
809
|
loading = props.loading;
|
|
740
810
|
}
|
|
@@ -796,6 +866,7 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
796
866
|
if (props.showSpacer) {
|
|
797
867
|
return /*#__PURE__*/React__namespace.createElement("div", {
|
|
798
868
|
ref: _spacerRef,
|
|
869
|
+
style: spacerStyle.current,
|
|
799
870
|
className: "p-virtualscroller-spacer"
|
|
800
871
|
});
|
|
801
872
|
}
|
|
@@ -819,11 +890,14 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
819
890
|
});
|
|
820
891
|
var content = /*#__PURE__*/React__namespace.createElement("div", {
|
|
821
892
|
ref: _contentRef,
|
|
893
|
+
style: contentStyle.current,
|
|
822
894
|
className: className
|
|
823
895
|
}, items);
|
|
824
896
|
if (props.contentTemplate) {
|
|
825
897
|
var defaultOptions = {
|
|
898
|
+
style: contentStyle.current,
|
|
826
899
|
className: className,
|
|
900
|
+
spacerStyle: spacerStyle.current,
|
|
827
901
|
contentRef: function contentRef(el) {
|
|
828
902
|
return _contentRef.current = utils.ObjectUtils.getRefElement(el);
|
|
829
903
|
},
|
|
@@ -866,10 +940,9 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
866
940
|
} else {
|
|
867
941
|
var otherProps = VirtualScrollerBase.getOtherProps(props);
|
|
868
942
|
var className = utils.classNames('p-virtualscroller', {
|
|
869
|
-
'p-
|
|
870
|
-
'p-virtualscroller-both': both,
|
|
871
|
-
'p-virtualscroller-horizontal': horizontal
|
|
872
|
-
'p-horizontal-scroll': horizontal
|
|
943
|
+
'p-virtualscroller-inline': props.inline,
|
|
944
|
+
'p-virtualscroller-both p-both-scroll': both,
|
|
945
|
+
'p-virtualscroller-horizontal p-horizontal-scroll': horizontal
|
|
873
946
|
}, props.className);
|
|
874
947
|
var loader = createLoader();
|
|
875
948
|
var _content = createContent();
|
|
@@ -877,7 +950,7 @@ var VirtualScroller = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__na
|
|
|
877
950
|
return /*#__PURE__*/React__namespace.createElement("div", _extends({
|
|
878
951
|
ref: elementRef,
|
|
879
952
|
className: className,
|
|
880
|
-
tabIndex:
|
|
953
|
+
tabIndex: props.tabIndex,
|
|
881
954
|
style: props.style
|
|
882
955
|
}, otherProps, {
|
|
883
956
|
onScroll: onScroll
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("primereact/hooks"),r=require("primereact/utils");function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var o=n(e);function l(){return l=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},l.apply(this,arguments)}function i(e){return i="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},i(e)}function s(e,t){if("object"!==i(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function c(e){var t=s(e,"string");return"symbol"===i(t)?t:String(t)}function a(e,t,r){return(t=c(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function u(e){if(Array.isArray(e))return e}function f(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 m(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 d(e,t){if(e){if("string"==typeof e)return m(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)?m(e,t):void 0}}function p(){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 g(e,t){return u(e)||f(e,t)||d(e,t)||p()}var h={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 r.ObjectUtils.getMergedProps(e,h.defaultProps)},getOtherProps:function(e){return r.ObjectUtils.getDiffProps(e,h.defaultProps)}};function v(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 y(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?v(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):v(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var w=o.memo(o.forwardRef((function(e,n){var i=h.getProps(e),s="vertical"===i.orientation,c="horizontal"===i.orientation,a="both"===i.orientation,u=g(o.useState(a?{rows:0,cols:0}:0),2),f=u[0],m=u[1],d=g(o.useState(a?{rows:0,cols:0}:0),2),p=d[0],v=d[1],w=g(o.useState(a?{rows:0,cols:0}:0),2),b=w[0],S=w[1],z=g(o.useState(i.numToleratedItems),2),O=z[0],j=z[1],T=g(o.useState(i.loading||!1),2),I=T[0],E=T[1],P=g(o.useState([]),2),x=P[0],R=P[1],L=o.useRef(null),D=o.useRef(null),H=o.useRef(null),U=o.useRef(null),M=o.useRef(a?{top:0,left:0}:0),N=o.useRef(null),W=o.useRef(null),A=o.useRef(null),C=o.useRef(null),k=t.usePrevious(i.items),V=t.usePrevious(i.loading),_=g(t.useResizeListener({listener:function(e){return oe()}}),1)[0],J=g(t.useEventListener({target:"window",type:"orientationchange",listener:function(e){return oe()}}),1)[0],X=function(){return L},q=function(e){M.current=a?{top:0,left:0}:0,L.current&&L.current.scrollTo(e)},F=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"auto",r=$(),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},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 q({left:e,top:r,behavior:t})};if(a){var u={rows:o(e[0],n[0]),cols:o(e[1],n[1])};u.rows===f.rows&&u.cols===f.cols||s(l(u.cols,i.itemSize[1]),l(u.rows,i.itemSize[0]))}else{var m=o(e,n);m!==f&&(c?s(l(m,i.itemSize),0):s(0,l(m,i.itemSize)))}},B=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"auto";if(t){var n=Y(),o=n.first,l=n.viewport,s=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 q({left:e,top:t,behavior:r})},u="to-start"===t,f="to-end"===t;if(u){if(a)l.first.rows-o.rows>e[0]?s(l.first.cols*i.itemSize[1],(l.first.rows-1)*i.itemSize[0]):l.first.cols-o.cols>e[1]&&s((l.first.cols-1)*i.itemSize[1],l.first.rows*i.itemSize[0]);else if(l.first-o>e){var m=(l.first-1)*i.itemSize;c?s(m,0):s(0,m)}}else if(f)if(a)l.last.rows-o.rows<=e[0]+1?s(l.first.cols*i.itemSize[1],(l.first.rows+1)*i.itemSize[0]):l.last.cols-o.cols<=e[1]+1&&s((l.first.cols+1)*i.itemSize[1],l.first.rows*i.itemSize[0]);else if(l.last-o<=e+1){var d=(l.first+1)*i.itemSize;c?s(d,0):s(0,d)}}else F(e,r)},Y=function(){var e=function(e,t){return Math.floor(e/(t||e))},t=f,r=0;if(L.current){var n=L.current,o=n.scrollTop,l=n.scrollLeft;if(a)r={rows:(t={rows:e(o,i.itemSize[0]),cols:e(l,i.itemSize[1])}).rows+b.rows,cols:t.cols+b.cols};else r=(t=e(c?l:o,i.itemSize))+b}return{first:f,last:p,viewport:{first:t,last:r}}},$=function(){var e=Q(),t=L.current?L.current.offsetWidth-e.left:0,r=L.current?L.current.offsetHeight-e.top:0,n=function(e,t){return Math.ceil(e/(t||e))},o=function(e){return Math.ceil(e/2)},l=a?{rows:n(r,i.itemSize[0]),cols:n(t,i.itemSize[1])}:n(c?t:r,i.itemSize);return{numItemsInViewport:l,numToleratedItems:O||(a?[o(l.rows),o(l.cols)]:o(l))}},G=function(e){i.autoSize&&!e&&Promise.resolve().then((function(){if(D.current){D.current.style.minHeight=D.current.style.minWidth="auto";var e=D.current,t=e.offsetWidth,r=e.offsetHeight;(a||c)&&(L.current.style.width=(t<A.current?t:A.current)+"px"),(a||s)&&(L.current.style.height=(r<C.current?r:C.current)+"px"),D.current.style.minHeight=D.current.style.minWidth=""}}))},K=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1?arguments[1]:void 0;return i.items?Math.min(t?(i.columns||i.items[0]).length:i.items.length,e):0},Q=function(){if(D.current){var e=getComputedStyle(D.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}},Z=function(){if(L.current){var e=L.current.parentElement,t=i.scrollWidth||"".concat(L.current.offsetWidth||e.offsetWidth,"px"),r=i.scrollHeight||"".concat(L.current.offsetHeight||e.offsetHeight,"px"),n=function(e,t){return L.current.style[e]=t};a||c?(n("height",r),n("width",t)):n("height",r)}},ee=function(){var e=i.items;if(H.current&&e){var t=Q(),r=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return H.current.style[e]=(t||[]).length*r+n+"px"};a?(r("height",e,i.itemSize[0],t.y),r("width",i.columns||e[1],i.itemSize[1],t.x)):c?r("width",i.columns||e,i.itemSize,t.x):r("height",e,i.itemSize,t.y)}},te=function(e){if(D.current){var t=e?e.first:f,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;U.current&&(U.current.style.top="-".concat(t,"px")),D.current.style.transform="translate3d(".concat(e,"px, ").concat(t,"px, 0)")};if(a)n(r(t.cols,i.itemSize[1]),r(t.rows,i.itemSize[0]));else{var o=r(t,i.itemSize);c?n(o,0):n(0,o)}}},re=function(e){var t=e.target,r=Q(),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},s=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)},u=function(e,t,r,n,o,l){var i=t+n+2*o;return e>=o&&(i+=o+1),K(i,l)},m=n(t.scrollTop,r.top),d=n(t.scrollLeft,r.left),g=a?{rows:0,cols:0}:0,h=p,v=!1,y=M.current;if(a){var w=M.current.top<=m,S=M.current.left<=d,z={rows:o(m,i.itemSize[0]),cols:o(d,i.itemSize[1])},j={rows:l(z.rows,f.rows,p.rows,b.rows,O[0],w),cols:l(z.cols,f.cols,p.cols,b.cols,O[1],S)};g={rows:s(z.rows,j.rows,f.rows,0,0,O[0],w),cols:s(z.cols,j.cols,f.cols,0,0,O[1],S)},h={rows:u(z.rows,g.rows,0,b.rows,O[0]),cols:u(z.cols,g.cols,0,b.cols,O[1],!0)},v=g.rows!==f.rows||h.rows!==p.rows||g.cols!==f.cols||h.cols!==p.cols,y={top:m,left:d}}else{var T=c?d:m,I=M.current<=T,E=o(T,i.itemSize);h=u(E,g=s(E,l(E,f,p,b,O,I),f,0,0,O,I),0,b,O),v=g!==f||h!==p,y=T}return{first:g,last:h,isRangeChanged:v,scrollPos:y}},ne=function(e){var t=re(e),r=t.first,n=t.last,o=t.scrollPos;if(t.isRangeChanged){var l={first:r,last:n};te(l),m(r),v(n),M.current=o,i.onScrollIndexChange&&i.onScrollIndexChange(l),i.lazy&&i.onLazyLoad&&i.onLazyLoad(l)}},oe=function(){W.current&&clearTimeout(W.current),W.current=setTimeout((function(){if(L.current){var e=[r.DomHandler.getWidth(L.current),r.DomHandler.getHeight(L.current)],t=e[0],n=e[1],o=t!==A.current,l=n!==C.current;(a?o||l:c?o:!!s&&l)&&(j(i.numToleratedItems),A.current=t,C.current=n)}}),i.resizeDelay)},le=function(e){var t=(i.items||[]).length,r=a?f.rows+e:f+e;return{index:r,count:t,first:0===r,last:r===t-1,even:r%2==0,odd:r%2!=0,props:i}},ie=function(e,t){var r=x.length;return y({index:e,count:r,first:0===e,last:e===r-1,even:e%2==0,odd:e%2!=0,props:i},t)},se=function(){var e=i.items;return e&&!I?a?e.slice(f.rows,p.rows).map((function(e){return i.columns?e:e.slice(f.cols,p.cols)})):c&&i.columns?e:e.slice(f,p):[]},ce=function(){var e,t,r,n,o;i.disabled||(Z(),e=$(),t=e.numItemsInViewport,r=e.numToleratedItems,n=function(e,t,r,n){return K(e+t+(e<r?2:3)*r,n)},o=a?{rows:n(f.rows,t.rows,r[0]),cols:n(f.cols,t.cols,r[1],!0)}:n(f,t,r),S(t),j(r),v(o),i.showLoader&&R(a?Array.from({length:t.rows}).map((function(){return Array.from({length:t.cols})})):Array.from({length:t})),i.lazy&&i.onLazyLoad&&i.onLazyLoad({first:f,last:o}),ee())};t.useMountEffect((function(){i.disabled||(ce(),_(),J(),A.current=r.DomHandler.getWidth(L.current),C.current=r.DomHandler.getHeight(L.current))})),t.useUpdateEffect((function(){ce()}),[i.itemSize,i.scrollHeight]),t.useUpdateEffect((function(){i.numToleratedItems!==O&&j(i.numToleratedItems)}),[i.numToleratedItems]),t.useUpdateEffect((function(){i.numToleratedItems===O&&ce()}),[O]),t.useUpdateEffect((function(){k&&k.length===(i.items||[]).length||ce();var e=I;i.lazy&&V!==i.loading&&i.loading!==I&&(E(i.loading),e=i.loading),G(e)})),t.useUpdateEffect((function(){M.current=a?{top:0,left:0}:0}),[i.orientation]),o.useImperativeHandle(n,(function(){return{props:i,getElementRef:X,scrollTo:q,scrollToIndex:F,scrollInView:B,getRenderedRange:Y}}));var ae=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=ie(e,t),l=r.ObjectUtils.getJSXElement(i.loadingTemplate,n);return o.createElement(o.Fragment,{key:e},l)},ue=function(e,t){var n=le(t),l=r.ObjectUtils.getJSXElement(i.itemTemplate,e,n);return o.createElement(o.Fragment,{key:n.index},l)};if(i.disabled){var fe=r.ObjectUtils.getJSXElement(i.contentTemplate,{items:i.items,rows:i.items,columns:i.columns});return o.createElement(o.Fragment,null,i.children,fe)}var me=h.getOtherProps(i),de=r.classNames("p-virtualscroller",{"p-both-scroll":a,"p-virtualscroller-both":a,"p-virtualscroller-horizontal":c,"p-horizontal-scroll":c},i.className),pe=function(){if(!i.loaderDisabled&&i.showLoader&&I){var e=r.classNames("p-virtualscroller-loader",{"p-component-overlay":!i.loadingTemplate}),t=o.createElement("i",{className:"p-virtualscroller-loading-icon pi pi-spinner pi-spin"});return i.loadingTemplate?t=x.map((function(e,t){return ae(t,a&&{numCols:b.cols})})):i.loaderIconTemplate&&(t=r.ObjectUtils.getJSXElement(i.loaderIconTemplate,{className:"p-virtualscroller-loading-icon",element:t,props:i})),o.createElement("div",{className:e},t)}return null}(),ge=function(){var e=se().map(ue),t=r.classNames("p-virtualscroller-content",{"p-virtualscroller-loading":I}),n=o.createElement("div",{ref:D,className:t},e);if(i.contentTemplate){var l={className:t,contentRef:function(e){return D.current=r.ObjectUtils.getRefElement(e)},spacerRef:function(e){return H.current=r.ObjectUtils.getRefElement(e)},stickyRef:function(e){return U.current=r.ObjectUtils.getRefElement(e)},items:se(),getItemOptions:function(e){return le(e)},children:e,element:n,props:i,loading:I,getLoaderOptions:function(e,t){return ie(e,t)},loadingTemplate:i.loadingTemplate,itemSize:i.itemSize,rows:I?i.loaderDisabled?x:[]:se(),columns:i.columns&&a||c?I&&i.loaderDisabled?a?x[0]:x:i.columns.slice(a?f.cols:f,a?p.cols:p):i.columns,vertical:s,horizontal:c,both:a};return r.ObjectUtils.getJSXElement(i.contentTemplate,l)}return n}(),he=i.showSpacer?o.createElement("div",{ref:H,className:"p-virtualscroller-spacer"}):null;return o.createElement("div",l({ref:L,className:de,tabIndex:0,style:i.style},me,{onScroll:function(e){i.onScroll&&i.onScroll(e),i.delay?(N.current&&clearTimeout(N.current),!I&&i.showLoader&&re(e).isRangeChanged&&E(!0),N.current=setTimeout((function(){ne(e),!I||!i.showLoader||i.lazy&&void 0!==i.loading||E(!1)}),i.delay)):ne(e)}}),ge,he,pe)})));w.displayName="VirtualScroller",exports.VirtualScroller=w;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("primereact/hooks"),r=require("primereact/utils");function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var o=n(e);function l(){return l=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},l.apply(this,arguments)}function i(e){return i="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},i(e)}function s(e,t){if("object"!==i(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function c(e){var t=s(e,"string");return"symbol"===i(t)?t:String(t)}function u(e,t,r){return(t=c(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e){if(Array.isArray(e))return e}function f(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 m(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 p(e,t){if(e){if("string"==typeof e)return m(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)?m(e,t):void 0}}function d(){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 g(e,t){return a(e)||f(e,t)||p(e,t)||d()}var h={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 r.ObjectUtils.getMergedProps(e,h.defaultProps)},getOtherProps:function(e){return r.ObjectUtils.getDiffProps(e,h.defaultProps)}};function v(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 y(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?v(Object(r),!0).forEach((function(t){u(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):v(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var w=o.memo(o.forwardRef((function(e,n){var i=h.getProps(e),s=t.usePrevious(e)||{},c="vertical"===i.orientation,a="horizontal"===i.orientation,f="both"===i.orientation,m=g(o.useState(f?{rows:0,cols:0}:0),2),p=m[0],d=m[1],v=g(o.useState(f?{rows:0,cols:0}:0),2),w=v[0],b=v[1],S=g(o.useState(0),2),O=S[0],z=S[1],j=g(o.useState(f?{rows:0,cols:0}:0),2),T=j[0],E=j[1],x=g(o.useState(i.numToleratedItems),2),I=x[0],P=x[1],R=g(o.useState(i.loading||!1),2),H=R[0],D=R[1],L=g(o.useState([]),2),M=L[0],U=L[1],N=o.useRef(null),W=o.useRef(null),F=o.useRef(null),A=o.useRef(null),C=o.useRef(f?{top:0,left:0}:0),V=o.useRef(null),k=o.useRef(null),_=o.useRef({}),J=o.useRef({}),X=o.useRef(null),q=o.useRef(null),B=o.useRef(null),Y=o.useRef(null),$=o.useRef(!1),G=o.useRef(null),K=g(t.useResizeListener({listener:function(e){return ge()},when:!i.disabled}),1)[0],Q=g(t.useEventListener({target:"window",type:"orientationchange",listener:function(e){return ge()},when:!i.disabled}),1)[0],Z=function(){return N},ee=function(e){return Math.floor((e+4*I)/(i.step||1))},te=function(e){return!i.step||O!==ee(e)},re=function(e){C.current=f?{top:0,left:0}:0,N.current&&N.current.scrollTo(e)},ne=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"auto",r=ie(),n=r.numToleratedItems,o=ue(),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},s=function(e,t,r){return e*t+r},c=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 re({left:e,top:r,behavior:t})},u=f?{rows:0,cols:0}:0,m=!1;f?(c(s((u={rows:l(e[0],n[0]),cols:l(e[1],n[1])}).cols,i.itemSize[1],o.left),s(u.rows,i.itemSize[0],o.top)),m=p.rows!==u.rows||p.cols!==u.cols):(u=l(e,n),a?c(s(u,i.itemSize,o.left),0):c(0,s(u,i.itemSize,o.top)),m=p!==u),$.current=m,d(u)},oe=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"auto";if(t){var n=le(),o=n.first,l=n.viewport,s=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 re({left:e,top:t,behavior:r})},c="to-start"===t,u="to-end"===t;if(c){if(f)l.first.rows-o.rows>e[0]?s(l.first.cols*i.itemSize[1],(l.first.rows-1)*i.itemSize[0]):l.first.cols-o.cols>e[1]&&s((l.first.cols-1)*i.itemSize[1],l.first.rows*i.itemSize[0]);else if(l.first-o>e){var m=(l.first-1)*i.itemSize;a?s(m,0):s(0,m)}}else if(u)if(f)l.last.rows-o.rows<=e[0]+1?s(l.first.cols*i.itemSize[1],(l.first.rows+1)*i.itemSize[0]):l.last.cols-o.cols<=e[1]+1&&s((l.first.cols+1)*i.itemSize[1],l.first.rows*i.itemSize[0]);else if(l.last-o<=e+1){var p=(l.first+1)*i.itemSize;a?s(p,0):s(0,p)}}else ne(e,r)},le=function(){var e=function(e,t){return Math.floor(e/(t||e))},t=p,r=0;if(N.current){var n=N.current,o=n.scrollTop,l=n.scrollLeft;if(f)r={rows:(t={rows:e(o,i.itemSize[0]),cols:e(l,i.itemSize[1])}).rows+T.rows,cols:t.cols+T.cols};else r=(t=e(a?l:o,i.itemSize))+T}return{first:p,last:w,viewport:{first:t,last:r}}},ie=function(){var e=ue(),t=N.current?N.current.offsetWidth-e.left:0,r=N.current?N.current.offsetHeight-e.top:0,n=function(e,t){return Math.ceil(e/(t||e))},o=function(e){return Math.ceil(e/2)},l=f?{rows:n(r,i.itemSize[0]),cols:n(t,i.itemSize[1])}:n(a?t:r,i.itemSize);return{numItemsInViewport:l,numToleratedItems:I||(f?[o(l.rows),o(l.cols)]:o(l))}},se=function(e){i.autoSize&&!e&&Promise.resolve().then((function(){if(W.current){W.current.style.minHeight=W.current.style.minWidth="auto",W.current.style.position="relative",N.current.style.contain="none";var e=[r.DomHandler.getWidth(N.current),r.DomHandler.getHeight(N.current)],t=e[0],n=e[1];(f||a)&&(N.current.style.width=(t<X.current?t:i.scrollWidth||X.current)+"px"),(f||c)&&(N.current.style.height=(n<q.current?n:i.scrollHeight||q.current)+"px"),W.current.style.minHeight=W.current.style.minWidth="",W.current.style.position="",N.current.style.contain=""}}))},ce=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1?arguments[1]:void 0;return i.items?Math.min(t?(i.columns||i.items[0]).length:i.items.length,e):0},ue=function(){if(W.current){var e=getComputedStyle(W.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}},ae=function(){if(N.current){var e=N.current.parentElement,t=i.scrollWidth||"".concat(N.current.offsetWidth||e.offsetWidth,"px"),r=i.scrollHeight||"".concat(N.current.offsetHeight||e.offsetHeight,"px"),n=function(e,t){return N.current.style[e]=t};f||a?(n("height",r),n("width",t)):n("height",r)}},fe=function(){var e=i.items;if(e){var t=ue(),r=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return J.current=y(y({},J.current),u({},"".concat(e),(t||[]).length*r+n+"px"))};f?(r("height",e,i.itemSize[0],t.y),r("width",i.columns||e[1],i.itemSize[1],t.x)):a?r("width",i.columns||e,i.itemSize,t.x):r("height",e,i.itemSize,t.y)}},me=function(e){if(W.current&&!i.appendOnly){var t=e?e.first:p,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;A.current&&(A.current.style.top="-".concat(t,"px")),_.current=y(y({},_.current),{transform:"translate3d(".concat(e,"px, ").concat(t,"px, 0)")})};if(f)n(r(t.cols,i.itemSize[1]),r(t.rows,i.itemSize[0]));else{var o=r(t,i.itemSize);a?n(o,0):n(0,o)}}},pe=function(e){var t=e.target,r=ue(),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},s=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)},c=function(e,t,r,n,o,l){var i=t+n+2*o;return e>=o&&(i+=o+1),ce(i,l)},u=n(t.scrollTop,r.top),m=n(t.scrollLeft,r.left),d=f?{rows:0,cols:0}:0,g=w,h=!1,v=C.current;if(f){var y=C.current.top<=u,b=C.current.left<=m;if(!i.appendOnly||i.appendOnly&&(y||b)){var S={rows:o(u,i.itemSize[0]),cols:o(m,i.itemSize[1])},O={rows:l(S.rows,p.rows,w.rows,T.rows,I[0],y),cols:l(S.cols,p.cols,w.cols,T.cols,I[1],b)};d={rows:s(S.rows,O.rows,p.rows,0,0,I[0],y),cols:s(S.cols,O.cols,p.cols,0,0,I[1],b)},g={rows:c(S.rows,d.rows,0,T.rows,I[0]),cols:c(S.cols,d.cols,0,T.cols,I[1],!0)},h=d.rows!==p.rows||g.rows!==w.rows||d.cols!==p.cols||g.cols!==w.cols||$.current,v={top:u,left:m}}}else{var z=a?m:u,j=C.current<=z;if(!i.appendOnly||i.appendOnly&&j){var E=o(z,i.itemSize);g=c(E,d=s(E,l(E,p,w,T,I,j),p,0,0,I,j),0,T,I),h=d!==p||g!==w||$.current,v=z}}return{first:d,last:g,isRangeChanged:h,scrollPos:v}},de=function(e){var t=pe(e),r=t.first,n=t.last,o=t.scrollPos;if(t.isRangeChanged){var l={first:r,last:n};if(me(l),d(r),b(n),C.current=o,i.onScrollIndexChange&&i.onScrollIndexChange(l),i.lazy&&te(r)){var s={first:i.step?Math.min(ee(r)*i.step,i.items.length-i.step):r,last:Math.min(i.step?(ee(r)+1)*i.step:n,i.items.length)};(!G.current||G.current.first!==s.first||G.current.last!==s.last)&&i.onLazyLoad&&i.onLazyLoad(s),G.current=s}}},ge=function(){k.current&&clearTimeout(k.current),k.current=setTimeout((function(){if(N.current){var e=[r.DomHandler.getWidth(N.current),r.DomHandler.getHeight(N.current)],t=e[0],n=e[1],o=t!==X.current,l=n!==q.current;(f?o||l:a?o:!!c&&l)&&(P(i.numToleratedItems),X.current=t,q.current=n,B.current=r.DomHandler.getWidth(W.current),Y.current=r.DomHandler.getHeight(W.current))}}),i.resizeDelay)},he=function(e){var t=(i.items||[]).length,r=f?p.rows+e:p+e;return{index:r,count:t,first:0===r,last:r===t-1,even:r%2==0,odd:r%2!=0,props:i}},ve=function(e,t){var r=M.length;return y({index:e,count:r,first:0===e,last:e===r-1,even:e%2==0,odd:e%2!=0,props:i},t)},ye=function(){var e=i.items;return e&&!H?f?e.slice(i.appendOnly?0:p.rows,w.rows).map((function(e){return i.columns?e:e.slice(i.appendOnly?0:p.cols,w.cols)})):a&&i.columns?e:e.slice(i.appendOnly?0:p,w):[]},we=function(){var e,t,r,n,o;i.disabled||(ae(),e=ie(),t=e.numItemsInViewport,r=e.numToleratedItems,n=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return ce(e+t+(e<r?2:3)*r,n)},o=f?{rows:n(p.rows,t.rows,r[0]),cols:n(p.cols,t.cols,r[1],!0)}:n(p,t,r),E(t),P(r),b(o),i.showLoader&&U(f?Array.from({length:t.rows}).map((function(){return Array.from({length:t.cols})})):Array.from({length:t})),i.lazy&&Promise.resolve().then((function(){G.current={first:i.step?f?{rows:0,cols:p.cols}:0:p,last:Math.min(i.step?i.step:o,i.items.length)},i.onLazyLoad&&i.onLazyLoad(G.current)})),fe())};t.useMountEffect((function(){N.current&&r.DomHandler.isVisible(N.current)&&(W.current=W.current||W.current||r.DomHandler.findSingle(N.current,".p-virtualscroller-content"),we(),K(),Q(),X.current=r.DomHandler.getWidth(N.current),q.current=r.DomHandler.getHeight(N.current),B.current=r.DomHandler.getWidth(W.current),Y.current=r.DomHandler.getHeight(W.current))})),t.useUpdateEffect((function(){we()}),[i.itemSize,i.scrollHeight,i.scrollWidth]),t.useUpdateEffect((function(){i.numToleratedItems!==I&&P(i.numToleratedItems)}),[i.numToleratedItems]),t.useUpdateEffect((function(){i.numToleratedItems===I&&we()}),[I]),t.useUpdateEffect((function(){s.items&&s.items.length===(i.items||[]).length||we();var e=H;i.lazy&&s.loading!==i.loading&&i.loading!==H&&(D(i.loading),e=i.loading),se(e)})),t.useUpdateEffect((function(){C.current=f?{top:0,left:0}:0}),[i.orientation]),o.useImperativeHandle(n,(function(){return{props:i,getElementRef:Z,scrollTo:re,scrollToIndex:ne,scrollInView:oe,getRenderedRange:le}}));var be=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=ve(e,t),l=r.ObjectUtils.getJSXElement(i.loadingTemplate,n);return o.createElement(o.Fragment,{key:e},l)},Se=function(e,t){var n=he(t),l=r.ObjectUtils.getJSXElement(i.itemTemplate,e,n);return o.createElement(o.Fragment,{key:n.index},l)};if(i.disabled){var Oe=r.ObjectUtils.getJSXElement(i.contentTemplate,{items:i.items,rows:i.items,columns:i.columns});return o.createElement(o.Fragment,null,i.children,Oe)}var ze=h.getOtherProps(i),je=r.classNames("p-virtualscroller",{"p-virtualscroller-inline":i.inline,"p-virtualscroller-both p-both-scroll":f,"p-virtualscroller-horizontal p-horizontal-scroll":a},i.className),Te=function(){if(!i.loaderDisabled&&i.showLoader&&H){var e=r.classNames("p-virtualscroller-loader",{"p-component-overlay":!i.loadingTemplate}),t=o.createElement("i",{className:"p-virtualscroller-loading-icon pi pi-spinner pi-spin"});return i.loadingTemplate?t=M.map((function(e,t){return be(t,f&&{numCols:T.cols})})):i.loaderIconTemplate&&(t=r.ObjectUtils.getJSXElement(i.loaderIconTemplate,{className:"p-virtualscroller-loading-icon",element:t,props:i})),o.createElement("div",{className:e},t)}return null}(),Ee=function(){var e=ye().map(Se),t=r.classNames("p-virtualscroller-content",{"p-virtualscroller-loading":H}),n=o.createElement("div",{ref:W,style:_.current,className:t},e);if(i.contentTemplate){var l={style:_.current,className:t,spacerStyle:J.current,contentRef:function(e){return W.current=r.ObjectUtils.getRefElement(e)},spacerRef:function(e){return F.current=r.ObjectUtils.getRefElement(e)},stickyRef:function(e){return A.current=r.ObjectUtils.getRefElement(e)},items:ye(),getItemOptions:function(e){return he(e)},children:e,element:n,props:i,loading:H,getLoaderOptions:function(e,t){return ve(e,t)},loadingTemplate:i.loadingTemplate,itemSize:i.itemSize,rows:H?i.loaderDisabled?M:[]:ye(),columns:i.columns&&f||a?H&&i.loaderDisabled?f?M[0]:M:i.columns.slice(f?p.cols:p,f?w.cols:w):i.columns,vertical:c,horizontal:a,both:f};return r.ObjectUtils.getJSXElement(i.contentTemplate,l)}return n}(),xe=i.showSpacer?o.createElement("div",{ref:F,style:J.current,className:"p-virtualscroller-spacer"}):null;return o.createElement("div",l({ref:N,className:je,tabIndex:i.tabIndex,style:i.style},ze,{onScroll:function(e){i.onScroll&&i.onScroll(e),i.delay?(V.current&&clearTimeout(V.current),te(p)&&(!H&&i.showLoader&&(pe(e).isRangeChanged||i.step&&te(p))&&D(!0),V.current=setTimeout((function(){de(e),!H||!i.showLoader||i.lazy&&void 0!==i.loading||(D(!1),z(ee(p)))}),i.delay))):de(e)}}),Ee,xe,Te)})));w.displayName="VirtualScroller",exports.VirtualScroller=w;
|
|
@@ -263,6 +263,11 @@ export interface VirtualScrollerProps {
|
|
|
263
263
|
* Style class of the component.
|
|
264
264
|
*/
|
|
265
265
|
className?: string | undefined;
|
|
266
|
+
/**
|
|
267
|
+
* Index of the element in tabbing order.
|
|
268
|
+
* @defaultValue 0
|
|
269
|
+
*/
|
|
270
|
+
tabIndex?: number | undefined;
|
|
266
271
|
/**
|
|
267
272
|
* An array of objects to display.
|
|
268
273
|
*/
|
|
@@ -284,6 +289,11 @@ export interface VirtualScrollerProps {
|
|
|
284
289
|
* @defaultValue 'vertical'
|
|
285
290
|
*/
|
|
286
291
|
orientation?: 'vertical' | 'horizontal' | 'both' | undefined;
|
|
292
|
+
/**
|
|
293
|
+
* Used to specify how many items to load in each load method in lazy mode.
|
|
294
|
+
* @defaultValue 0
|
|
295
|
+
*/
|
|
296
|
+
step?: number | undefined;
|
|
287
297
|
/**
|
|
288
298
|
* Determines how many additional elements to add to the DOM outside of the view. According to the scrolls made up and down, extra items are added in a certain algorithm in the form of multiples of this number. Default value is half the number of items shown in the view.
|
|
289
299
|
*/
|
|
@@ -298,6 +308,16 @@ export interface VirtualScrollerProps {
|
|
|
298
308
|
* @defaultValue 10
|
|
299
309
|
*/
|
|
300
310
|
resizeDelay?: number | undefined;
|
|
311
|
+
/**
|
|
312
|
+
* Used to append each loaded item to top without removing any items from the DOM. Using very large data may cause the browser to crash.
|
|
313
|
+
* @defaultValue false
|
|
314
|
+
*/
|
|
315
|
+
appendOnly?: boolean | undefined;
|
|
316
|
+
/**
|
|
317
|
+
* When enabled, positions the content as inline.
|
|
318
|
+
* @defaultValue false
|
|
319
|
+
*/
|
|
320
|
+
inline?: boolean | undefined;
|
|
301
321
|
/**
|
|
302
322
|
* Defines if data is loaded and interacted with in lazy manner.
|
|
303
323
|
* @defaultValue false
|