@mjhls/mjh-framework 1.0.401 → 1.0.403

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 (48) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/{ADInfeed-d1783f42.js → ADInfeed-494f5e6b.js} +1 -1
  3. package/dist/cjs/{AdSlot-20aa927e.js → AdSlot-4d22aad4.js} +2 -2
  4. package/dist/cjs/DeckContent.js +9 -7
  5. package/dist/cjs/DeckQueue.js +6 -4
  6. package/dist/cjs/{Dfp-27b922b0.js → Dfp-2399639f.js} +1 -1
  7. package/dist/cjs/{Figure-8dd7df44.js → Figure-04d4a60d.js} +1 -1
  8. package/dist/cjs/{GridContent-c0c0d3e5.js → GridContent-2f42692a.js} +7 -6
  9. package/dist/cjs/GridContent.js +9 -7
  10. package/dist/cjs/IssueDeck.js +182 -86
  11. package/dist/cjs/MasterDeck.js +21 -7
  12. package/dist/cjs/{Normal-53437675.js → Normal-4a0d7dfc.js} +105 -3
  13. package/dist/cjs/QueueDeckExpanded.js +9 -7
  14. package/dist/cjs/{TaxonomyCard-cf264332.js → TaxonomyCard-eb928f05.js} +8 -1
  15. package/dist/cjs/TaxonomyCard.js +1 -1
  16. package/dist/cjs/TemplateNormal.js +6 -4
  17. package/dist/cjs/VideoSeriesListing.js +3 -2
  18. package/dist/cjs/_iter-detect-234453c3.js +53 -0
  19. package/dist/cjs/index.es-ab3f2690.js +428 -0
  20. package/dist/cjs/index.js +54 -109
  21. package/dist/cjs/{main-2020ba94.js → main-bc4db521.js} +0 -50
  22. package/dist/cjs/{promise-d5136080.js → promise-0a493c7a.js} +4 -4
  23. package/dist/cjs/{toConsumableArray-3cf1df2c.js → toConsumableArray-25d0e2a3.js} +4 -4
  24. package/dist/cjs/{visibility-sensor-43e0b37c.js → visibility-sensor-0c45a583.js} +0 -421
  25. package/dist/esm/{ADInfeed-40adc8e0.js → ADInfeed-e5cefea5.js} +1 -1
  26. package/dist/esm/{AdSlot-c3ed3214.js → AdSlot-78e48a2c.js} +2 -2
  27. package/dist/esm/DeckContent.js +8 -6
  28. package/dist/esm/DeckQueue.js +5 -3
  29. package/dist/esm/{Dfp-3b3273ee.js → Dfp-d5fe1252.js} +1 -1
  30. package/dist/esm/{Figure-f269f495.js → Figure-e32f60c5.js} +1 -1
  31. package/dist/esm/{GridContent-b042eb2d.js → GridContent-cafb2fe4.js} +6 -5
  32. package/dist/esm/GridContent.js +9 -7
  33. package/dist/esm/IssueDeck.js +183 -87
  34. package/dist/esm/MasterDeck.js +20 -6
  35. package/dist/esm/{Normal-fe65159c.js → Normal-b8c423e3.js} +104 -4
  36. package/dist/esm/QueueDeckExpanded.js +8 -6
  37. package/dist/esm/{TaxonomyCard-12f0a90a.js → TaxonomyCard-b29aa7ac.js} +8 -1
  38. package/dist/esm/TaxonomyCard.js +1 -1
  39. package/dist/esm/TemplateNormal.js +6 -4
  40. package/dist/esm/VideoSeriesListing.js +2 -1
  41. package/dist/esm/_iter-detect-7c281f0a.js +49 -0
  42. package/dist/esm/index.es-938a3a58.js +423 -0
  43. package/dist/esm/index.js +52 -107
  44. package/dist/esm/{main-25bb2c75.js → main-7d1b3c98.js} +1 -48
  45. package/dist/esm/{promise-5d7cd78a.js → promise-2592a80a.js} +1 -1
  46. package/dist/esm/{toConsumableArray-d7054876.js → toConsumableArray-c5e2fde8.js} +1 -1
  47. package/dist/esm/{visibility-sensor-49d5805d.js → visibility-sensor-0baa4eea.js} +2 -422
  48. package/package.json +1 -1
@@ -0,0 +1,49 @@
1
+ import { n as _anObject } from './_to-object-1b1f7766.js';
2
+ import { c as _wks, h as _iterators } from './web.dom.iterable-e6bf2bf6.js';
3
+
4
+ // call something on iterator step with safe closing on error
5
+
6
+ var _iterCall = function (iterator, fn, value, entries) {
7
+ try {
8
+ return entries ? fn(_anObject(value)[0], value[1]) : fn(value);
9
+ // 7.4.6 IteratorClose(iterator, completion)
10
+ } catch (e) {
11
+ var ret = iterator['return'];
12
+ if (ret !== undefined) _anObject(ret.call(iterator));
13
+ throw e;
14
+ }
15
+ };
16
+
17
+ // check on default Array iterator
18
+
19
+ var ITERATOR = _wks('iterator');
20
+ var ArrayProto = Array.prototype;
21
+
22
+ var _isArrayIter = function (it) {
23
+ return it !== undefined && (_iterators.Array === it || ArrayProto[ITERATOR] === it);
24
+ };
25
+
26
+ var ITERATOR$1 = _wks('iterator');
27
+ var SAFE_CLOSING = false;
28
+
29
+ try {
30
+ var riter = [7][ITERATOR$1]();
31
+ riter['return'] = function () { SAFE_CLOSING = true; };
32
+ // eslint-disable-next-line no-throw-literal
33
+ Array.from(riter, function () { throw 2; });
34
+ } catch (e) { /* empty */ }
35
+
36
+ var _iterDetect = function (exec, skipClosing) {
37
+ if (!skipClosing && !SAFE_CLOSING) return false;
38
+ var safe = false;
39
+ try {
40
+ var arr = [7];
41
+ var iter = arr[ITERATOR$1]();
42
+ iter.next = function () { return { done: safe = true }; };
43
+ arr[ITERATOR$1] = function () { return iter; };
44
+ exec(arr);
45
+ } catch (e) { /* empty */ }
46
+ return safe;
47
+ };
48
+
49
+ export { _iterDetect as _, _isArrayIter as a, _iterCall as b };
@@ -0,0 +1,423 @@
1
+ import React__default, { Component } from 'react';
2
+
3
+ /*! *****************************************************************************
4
+ Copyright (c) Microsoft Corporation. All rights reserved.
5
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
6
+ this file except in compliance with the License. You may obtain a copy of the
7
+ License at http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
10
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
11
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
12
+ MERCHANTABLITY OR NON-INFRINGEMENT.
13
+
14
+ See the Apache Version 2.0 License for specific language governing permissions
15
+ and limitations under the License.
16
+ ***************************************************************************** */
17
+ /* global Reflect, Promise */
18
+
19
+ var extendStatics = function(d, b) {
20
+ extendStatics = Object.setPrototypeOf ||
21
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
22
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
23
+ return extendStatics(d, b);
24
+ };
25
+
26
+ function __extends(d, b) {
27
+ extendStatics(d, b);
28
+ function __() { this.constructor = d; }
29
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30
+ }
31
+
32
+ var __assign = function() {
33
+ __assign = Object.assign || function __assign(t) {
34
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
35
+ s = arguments[i];
36
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
37
+ }
38
+ return t;
39
+ };
40
+ return __assign.apply(this, arguments);
41
+ };
42
+
43
+ /* eslint-disable no-undefined,no-param-reassign,no-shadow */
44
+
45
+ /**
46
+ * Throttle execution of a function. Especially useful for rate limiting
47
+ * execution of handlers on events like resize and scroll.
48
+ *
49
+ * @param {Number} delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
50
+ * @param {Boolean} [noTrailing] Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the
51
+ * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time
52
+ * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,
53
+ * the internal counter is reset)
54
+ * @param {Function} callback A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
55
+ * to `callback` when the throttled-function is executed.
56
+ * @param {Boolean} [debounceMode] If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),
57
+ * schedule `callback` to execute after `delay` ms.
58
+ *
59
+ * @return {Function} A new, throttled, function.
60
+ */
61
+ function throttle (delay, noTrailing, callback, debounceMode) {
62
+ /*
63
+ * After wrapper has stopped being called, this timeout ensures that
64
+ * `callback` is executed at the proper times in `throttle` and `end`
65
+ * debounce modes.
66
+ */
67
+ var timeoutID;
68
+ var cancelled = false; // Keep track of the last time `callback` was executed.
69
+
70
+ var lastExec = 0; // Function to clear existing timeout
71
+
72
+ function clearExistingTimeout() {
73
+ if (timeoutID) {
74
+ clearTimeout(timeoutID);
75
+ }
76
+ } // Function to cancel next exec
77
+
78
+
79
+ function cancel() {
80
+ clearExistingTimeout();
81
+ cancelled = true;
82
+ } // `noTrailing` defaults to falsy.
83
+
84
+
85
+ if (typeof noTrailing !== 'boolean') {
86
+ debounceMode = callback;
87
+ callback = noTrailing;
88
+ noTrailing = undefined;
89
+ }
90
+ /*
91
+ * The `wrapper` function encapsulates all of the throttling / debouncing
92
+ * functionality and when executed will limit the rate at which `callback`
93
+ * is executed.
94
+ */
95
+
96
+
97
+ function wrapper() {
98
+ var self = this;
99
+ var elapsed = Date.now() - lastExec;
100
+ var args = arguments;
101
+
102
+ if (cancelled) {
103
+ return;
104
+ } // Execute `callback` and update the `lastExec` timestamp.
105
+
106
+
107
+ function exec() {
108
+ lastExec = Date.now();
109
+ callback.apply(self, args);
110
+ }
111
+ /*
112
+ * If `debounceMode` is true (at begin) this is used to clear the flag
113
+ * to allow future `callback` executions.
114
+ */
115
+
116
+
117
+ function clear() {
118
+ timeoutID = undefined;
119
+ }
120
+
121
+ if (debounceMode && !timeoutID) {
122
+ /*
123
+ * Since `wrapper` is being called for the first time and
124
+ * `debounceMode` is true (at begin), execute `callback`.
125
+ */
126
+ exec();
127
+ }
128
+
129
+ clearExistingTimeout();
130
+
131
+ if (debounceMode === undefined && elapsed > delay) {
132
+ /*
133
+ * In throttle mode, if `delay` time has been exceeded, execute
134
+ * `callback`.
135
+ */
136
+ exec();
137
+ } else if (noTrailing !== true) {
138
+ /*
139
+ * In trailing throttle mode, since `delay` time has not been
140
+ * exceeded, schedule `callback` to execute `delay` ms after most
141
+ * recent execution.
142
+ *
143
+ * If `debounceMode` is true (at begin), schedule `clear` to execute
144
+ * after `delay` ms.
145
+ *
146
+ * If `debounceMode` is false (at end), schedule `callback` to
147
+ * execute after `delay` ms.
148
+ */
149
+ timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);
150
+ }
151
+ }
152
+
153
+ wrapper.cancel = cancel; // Return the wrapper function.
154
+
155
+ return wrapper;
156
+ }
157
+
158
+ var ThresholdUnits = {
159
+ Pixel: 'Pixel',
160
+ Percent: 'Percent',
161
+ };
162
+ var defaultThreshold = {
163
+ unit: ThresholdUnits.Percent,
164
+ value: 0.8,
165
+ };
166
+ function parseThreshold(scrollThreshold) {
167
+ if (typeof scrollThreshold === 'number') {
168
+ return {
169
+ unit: ThresholdUnits.Percent,
170
+ value: scrollThreshold * 100,
171
+ };
172
+ }
173
+ if (typeof scrollThreshold === 'string') {
174
+ if (scrollThreshold.match(/^(\d*(\.\d+)?)px$/)) {
175
+ return {
176
+ unit: ThresholdUnits.Pixel,
177
+ value: parseFloat(scrollThreshold),
178
+ };
179
+ }
180
+ if (scrollThreshold.match(/^(\d*(\.\d+)?)%$/)) {
181
+ return {
182
+ unit: ThresholdUnits.Percent,
183
+ value: parseFloat(scrollThreshold),
184
+ };
185
+ }
186
+ console.warn('scrollThreshold format is invalid. Valid formats: "120px", "50%"...');
187
+ return defaultThreshold;
188
+ }
189
+ console.warn('scrollThreshold should be string or number');
190
+ return defaultThreshold;
191
+ }
192
+
193
+ var InfiniteScroll = /** @class */ (function (_super) {
194
+ __extends(InfiniteScroll, _super);
195
+ function InfiniteScroll(props) {
196
+ var _this = _super.call(this, props) || this;
197
+ _this.lastScrollTop = 0;
198
+ _this.actionTriggered = false;
199
+ // variables to keep track of pull down behaviour
200
+ _this.startY = 0;
201
+ _this.currentY = 0;
202
+ _this.dragging = false;
203
+ // will be populated in componentDidMount
204
+ // based on the height of the pull down element
205
+ _this.maxPullDownDistance = 0;
206
+ _this.getScrollableTarget = function () {
207
+ if (_this.props.scrollableTarget instanceof HTMLElement)
208
+ return _this.props.scrollableTarget;
209
+ if (typeof _this.props.scrollableTarget === 'string') {
210
+ return document.getElementById(_this.props.scrollableTarget);
211
+ }
212
+ if (_this.props.scrollableTarget === null) {
213
+ console.warn("You are trying to pass scrollableTarget but it is null. This might\n happen because the element may not have been added to DOM yet.\n See https://github.com/ankeetmaini/react-infinite-scroll-component/issues/59 for more info.\n ");
214
+ }
215
+ return null;
216
+ };
217
+ _this.onStart = function (evt) {
218
+ if (_this.lastScrollTop)
219
+ return;
220
+ _this.dragging = true;
221
+ if (evt instanceof MouseEvent) {
222
+ _this.startY = evt.pageY;
223
+ }
224
+ else if (evt instanceof TouchEvent) {
225
+ _this.startY = evt.touches[0].pageY;
226
+ }
227
+ _this.currentY = _this.startY;
228
+ if (_this._infScroll) {
229
+ _this._infScroll.style.willChange = 'transform';
230
+ _this._infScroll.style.transition = "transform 0.2s cubic-bezier(0,0,0.31,1)";
231
+ }
232
+ };
233
+ _this.onMove = function (evt) {
234
+ if (!_this.dragging)
235
+ return;
236
+ if (evt instanceof MouseEvent) {
237
+ _this.currentY = evt.pageY;
238
+ }
239
+ else if (evt instanceof TouchEvent) {
240
+ _this.currentY = evt.touches[0].pageY;
241
+ }
242
+ // user is scrolling down to up
243
+ if (_this.currentY < _this.startY)
244
+ return;
245
+ if (_this.currentY - _this.startY >=
246
+ Number(_this.props.pullDownToRefreshThreshold)) {
247
+ _this.setState({
248
+ pullToRefreshThresholdBreached: true,
249
+ });
250
+ }
251
+ // so you can drag upto 1.5 times of the maxPullDownDistance
252
+ if (_this.currentY - _this.startY > _this.maxPullDownDistance * 1.5)
253
+ return;
254
+ if (_this._infScroll) {
255
+ _this._infScroll.style.overflow = 'visible';
256
+ _this._infScroll.style.transform = "translate3d(0px, " + (_this.currentY -
257
+ _this.startY) + "px, 0px)";
258
+ }
259
+ };
260
+ _this.onEnd = function () {
261
+ _this.startY = 0;
262
+ _this.currentY = 0;
263
+ _this.dragging = false;
264
+ if (_this.state.pullToRefreshThresholdBreached) {
265
+ _this.props.refreshFunction && _this.props.refreshFunction();
266
+ _this.setState({
267
+ pullToRefreshThresholdBreached: false,
268
+ });
269
+ }
270
+ requestAnimationFrame(function () {
271
+ // this._infScroll
272
+ if (_this._infScroll) {
273
+ _this._infScroll.style.overflow = 'auto';
274
+ _this._infScroll.style.transform = 'none';
275
+ _this._infScroll.style.willChange = 'none';
276
+ }
277
+ });
278
+ };
279
+ _this.onScrollListener = function (event) {
280
+ if (typeof _this.props.onScroll === 'function') {
281
+ // Execute this callback in next tick so that it does not affect the
282
+ // functionality of the library.
283
+ setTimeout(function () { return _this.props.onScroll && _this.props.onScroll(event); }, 0);
284
+ }
285
+ var target = _this.props.height || _this._scrollableNode
286
+ ? event.target
287
+ : document.documentElement.scrollTop
288
+ ? document.documentElement
289
+ : document.body;
290
+ // return immediately if the action has already been triggered,
291
+ // prevents multiple triggers.
292
+ if (_this.actionTriggered)
293
+ return;
294
+ var atBottom = _this.isElementAtBottom(target, _this.props.scrollThreshold);
295
+ // call the `next` function in the props to trigger the next data fetch
296
+ if (atBottom && _this.props.hasMore) {
297
+ _this.actionTriggered = true;
298
+ _this.setState({ showLoader: true });
299
+ _this.props.next && _this.props.next();
300
+ }
301
+ _this.lastScrollTop = target.scrollTop;
302
+ };
303
+ _this.state = {
304
+ showLoader: false,
305
+ pullToRefreshThresholdBreached: false,
306
+ };
307
+ _this.throttledOnScrollListener = throttle(150, _this.onScrollListener).bind(_this);
308
+ _this.onStart = _this.onStart.bind(_this);
309
+ _this.onMove = _this.onMove.bind(_this);
310
+ _this.onEnd = _this.onEnd.bind(_this);
311
+ return _this;
312
+ }
313
+ InfiniteScroll.prototype.componentDidMount = function () {
314
+ if (typeof this.props.dataLength === 'undefined') {
315
+ throw new Error("mandatory prop \"dataLength\" is missing. The prop is needed" +
316
+ " when loading more content. Check README.md for usage");
317
+ }
318
+ this._scrollableNode = this.getScrollableTarget();
319
+ this.el = this.props.height
320
+ ? this._infScroll
321
+ : this._scrollableNode || window;
322
+ if (this.el) {
323
+ this.el.addEventListener('scroll', this
324
+ .throttledOnScrollListener);
325
+ }
326
+ if (typeof this.props.initialScrollY === 'number' &&
327
+ this.el &&
328
+ this.el instanceof HTMLElement &&
329
+ this.el.scrollHeight > this.props.initialScrollY) {
330
+ this.el.scrollTo(0, this.props.initialScrollY);
331
+ }
332
+ if (this.props.pullDownToRefresh && this.el) {
333
+ this.el.addEventListener('touchstart', this.onStart);
334
+ this.el.addEventListener('touchmove', this.onMove);
335
+ this.el.addEventListener('touchend', this.onEnd);
336
+ this.el.addEventListener('mousedown', this.onStart);
337
+ this.el.addEventListener('mousemove', this.onMove);
338
+ this.el.addEventListener('mouseup', this.onEnd);
339
+ // get BCR of pullDown element to position it above
340
+ this.maxPullDownDistance =
341
+ (this._pullDown &&
342
+ this._pullDown.firstChild &&
343
+ this._pullDown.firstChild.getBoundingClientRect()
344
+ .height) ||
345
+ 0;
346
+ this.forceUpdate();
347
+ if (typeof this.props.refreshFunction !== 'function') {
348
+ throw new Error("Mandatory prop \"refreshFunction\" missing.\n Pull Down To Refresh functionality will not work\n as expected. Check README.md for usage'");
349
+ }
350
+ }
351
+ };
352
+ InfiniteScroll.prototype.componentWillUnmount = function () {
353
+ if (this.el) {
354
+ this.el.removeEventListener('scroll', this
355
+ .throttledOnScrollListener);
356
+ if (this.props.pullDownToRefresh) {
357
+ this.el.removeEventListener('touchstart', this.onStart);
358
+ this.el.removeEventListener('touchmove', this.onMove);
359
+ this.el.removeEventListener('touchend', this.onEnd);
360
+ this.el.removeEventListener('mousedown', this.onStart);
361
+ this.el.removeEventListener('mousemove', this.onMove);
362
+ this.el.removeEventListener('mouseup', this.onEnd);
363
+ }
364
+ }
365
+ };
366
+ InfiniteScroll.prototype.UNSAFE_componentWillReceiveProps = function (props) {
367
+ // do nothing when dataLength and key are unchanged
368
+ if (this.props.key === props.key &&
369
+ this.props.dataLength === props.dataLength)
370
+ return;
371
+ this.actionTriggered = false;
372
+ // update state when new data was sent in
373
+ this.setState({
374
+ showLoader: false,
375
+ });
376
+ };
377
+ InfiniteScroll.prototype.isElementAtBottom = function (target, scrollThreshold) {
378
+ if (scrollThreshold === void 0) { scrollThreshold = 0.8; }
379
+ var clientHeight = target === document.body || target === document.documentElement
380
+ ? window.screen.availHeight
381
+ : target.clientHeight;
382
+ var threshold = parseThreshold(scrollThreshold);
383
+ if (threshold.unit === ThresholdUnits.Pixel) {
384
+ return (target.scrollTop + clientHeight >= target.scrollHeight - threshold.value);
385
+ }
386
+ return (target.scrollTop + clientHeight >=
387
+ (threshold.value / 100) * target.scrollHeight);
388
+ };
389
+ InfiniteScroll.prototype.render = function () {
390
+ var _this = this;
391
+ var style = __assign({ height: this.props.height || 'auto', overflow: 'auto', WebkitOverflowScrolling: 'touch' }, this.props.style);
392
+ var hasChildren = this.props.hasChildren ||
393
+ !!(this.props.children &&
394
+ this.props.children instanceof Array &&
395
+ this.props.children.length);
396
+ // because heighted infiniteScroll visualy breaks
397
+ // on drag down as overflow becomes visible
398
+ var outerDivStyle = this.props.pullDownToRefresh && this.props.height
399
+ ? { overflow: 'auto' }
400
+ : {};
401
+ return (React__default.createElement("div", { style: outerDivStyle, className: "infinite-scroll-component__outerdiv" },
402
+ React__default.createElement("div", { className: "infinite-scroll-component " + (this.props.className || ''), ref: function (infScroll) { return (_this._infScroll = infScroll); }, style: style },
403
+ this.props.pullDownToRefresh && (React__default.createElement("div", { style: { position: 'relative' }, ref: function (pullDown) { return (_this._pullDown = pullDown); } },
404
+ React__default.createElement("div", { style: {
405
+ position: 'absolute',
406
+ left: 0,
407
+ right: 0,
408
+ top: -1 * this.maxPullDownDistance,
409
+ } }, this.state.pullToRefreshThresholdBreached
410
+ ? this.props.releaseToRefreshContent
411
+ : this.props.pullDownToRefreshContent))),
412
+ this.props.children,
413
+ !this.state.showLoader &&
414
+ !hasChildren &&
415
+ this.props.hasMore &&
416
+ this.props.loader,
417
+ this.state.showLoader && this.props.hasMore && this.props.loader,
418
+ !this.props.hasMore && this.props.endMessage)));
419
+ };
420
+ return InfiniteScroll;
421
+ }(Component));
422
+
423
+ export { InfiniteScroll as I };