@mjhls/mjh-framework 1.0.204 → 1.0.206
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/README.md +1 -1
- package/dist/cjs/AD-e2479b7c.js +31 -0
- package/dist/cjs/DeckContent.js +430 -0
- package/dist/cjs/DeckQueue.js +366 -0
- package/dist/cjs/Dfp-d94f7f73.js +97 -0
- package/dist/cjs/GridContent.js +613 -0
- package/dist/cjs/GroupDeck.js +156 -0
- package/dist/cjs/IssueContentDeck.js +81 -0
- package/dist/cjs/IssueDeck.js +144 -0
- package/dist/cjs/MasterDeck.js +340 -0
- package/dist/cjs/Normal-7dd8c339.js +2374 -0
- package/dist/cjs/PublicationDeck.js +81 -0
- package/dist/cjs/QueueDeckExpanded.js +559 -0
- package/dist/cjs/TaxonomyCard-7b5b4298.js +1045 -0
- package/dist/cjs/TaxonomyCard.js +18 -0
- package/dist/cjs/TemplateNormal.js +29 -0
- package/dist/cjs/ThumbnailCard.js +58 -0
- package/dist/cjs/Ustream-0d3dd953.js +122 -0
- package/dist/cjs/Ustream.js +10 -0
- package/dist/cjs/VideoSeriesListing.js +248 -0
- package/dist/cjs/YoutubeGroup-4cf7a4aa.js +228 -0
- package/dist/cjs/YoutubeGroup.js +13 -0
- package/dist/cjs/_babelHelpers-f321c258.js +119 -0
- package/dist/cjs/_commonjsHelpers-3fc1f64e.js +20 -0
- package/dist/cjs/debounce-286eb3fb.js +279 -0
- package/dist/cjs/entities-3e0b4a16.js +506 -0
- package/dist/cjs/get-06aac51b.js +992 -0
- package/dist/cjs/index-0d0efcfa.js +610 -0
- package/dist/cjs/index-a4c53ff4.js +551 -0
- package/dist/cjs/index.es-2289df51.js +5028 -0
- package/dist/cjs/index.esm-340d3792.js +113 -0
- package/dist/cjs/index.js +12044 -0
- package/dist/cjs/isSymbol-311eb805.js +209 -0
- package/dist/cjs/main-58839f4e.js +858 -0
- package/dist/cjs/visibility-sensor-5c5a7302.js +2251 -0
- package/dist/esm/AD-1b2a3dd3.js +26 -0
- package/dist/esm/DeckContent.js +424 -0
- package/dist/esm/DeckQueue.js +360 -0
- package/dist/esm/Dfp-ab7941d3.js +92 -0
- package/dist/esm/GridContent.js +607 -0
- package/dist/esm/GroupDeck.js +151 -0
- package/dist/esm/IssueContentDeck.js +76 -0
- package/dist/esm/IssueDeck.js +139 -0
- package/dist/esm/MasterDeck.js +334 -0
- package/dist/esm/Normal-403c5666.js +2354 -0
- package/dist/esm/PublicationDeck.js +76 -0
- package/dist/esm/QueueDeckExpanded.js +553 -0
- package/dist/esm/TaxonomyCard-f9c93953.js +1039 -0
- package/dist/esm/TaxonomyCard.js +12 -0
- package/dist/esm/TemplateNormal.js +23 -0
- package/dist/esm/ThumbnailCard.js +53 -0
- package/dist/esm/Ustream-6bb45fe7.js +116 -0
- package/dist/esm/Ustream.js +4 -0
- package/dist/esm/VideoSeriesListing.js +242 -0
- package/dist/esm/YoutubeGroup-dc617e8b.js +222 -0
- package/dist/esm/YoutubeGroup.js +7 -0
- package/dist/esm/_babelHelpers-67c05996.js +111 -0
- package/dist/esm/_commonjsHelpers-ae1b5db5.js +15 -0
- package/dist/esm/debounce-a0242b4a.js +277 -0
- package/dist/esm/entities-e85d3a4a.js +503 -0
- package/dist/esm/get-b684ff61.js +990 -0
- package/dist/esm/index-3c1ee9ab.js +605 -0
- package/dist/esm/index-ca4ff5cb.js +548 -0
- package/dist/esm/index.es-f369b3e8.js +5022 -0
- package/dist/esm/index.esm-536609db.js +103 -0
- package/dist/esm/index.js +11991 -0
- package/dist/esm/isSymbol-c2b7d05a.js +203 -0
- package/dist/esm/main-dea495b7.js +851 -0
- package/dist/esm/visibility-sensor-3cfe6713.js +2243 -0
- package/package.json +8 -7
- package/dist/index.es.js +0 -30261
- package/dist/index.es.js.map +0 -1
- package/dist/index.js +0 -30320
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,610 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var React__default = _interopDefault(React);
|
|
7
|
+
var _commonjsHelpers = require('./_commonjsHelpers-3fc1f64e.js');
|
|
8
|
+
var PropTypes = _interopDefault(require('prop-types'));
|
|
9
|
+
var reactDom = _interopDefault(require('react-dom'));
|
|
10
|
+
|
|
11
|
+
var event = _commonjsHelpers.createCommonjsModule(function (module, exports) {
|
|
12
|
+
|
|
13
|
+
Object.defineProperty(exports, "__esModule", {
|
|
14
|
+
value: true
|
|
15
|
+
});
|
|
16
|
+
exports.on = on;
|
|
17
|
+
exports.off = off;
|
|
18
|
+
function on(el, eventName, callback, opts) {
|
|
19
|
+
opts = opts || false;
|
|
20
|
+
if (el.addEventListener) {
|
|
21
|
+
el.addEventListener(eventName, callback, opts);
|
|
22
|
+
} else if (el.attachEvent) {
|
|
23
|
+
el.attachEvent("on" + eventName, function (e) {
|
|
24
|
+
callback.call(el, e || window.event);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function off(el, eventName, callback, opts) {
|
|
30
|
+
opts = opts || false;
|
|
31
|
+
if (el.removeEventListener) {
|
|
32
|
+
el.removeEventListener(eventName, callback, opts);
|
|
33
|
+
} else if (el.detachEvent) {
|
|
34
|
+
el.detachEvent("on" + eventName, callback);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
_commonjsHelpers.unwrapExports(event);
|
|
40
|
+
var event_1 = event.on;
|
|
41
|
+
var event_2 = event.off;
|
|
42
|
+
|
|
43
|
+
var scrollParent = _commonjsHelpers.createCommonjsModule(function (module, exports) {
|
|
44
|
+
|
|
45
|
+
Object.defineProperty(exports, "__esModule", {
|
|
46
|
+
value: true
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @fileOverview Find scroll parent
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
exports.default = function (node) {
|
|
54
|
+
if (!(node instanceof HTMLElement)) {
|
|
55
|
+
return document.documentElement;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
var excludeStaticParent = node.style.position === 'absolute';
|
|
59
|
+
var overflowRegex = /(scroll|auto)/;
|
|
60
|
+
var parent = node;
|
|
61
|
+
|
|
62
|
+
while (parent) {
|
|
63
|
+
if (!parent.parentNode) {
|
|
64
|
+
return node.ownerDocument || document.documentElement;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
var style = window.getComputedStyle(parent);
|
|
68
|
+
var position = style.position;
|
|
69
|
+
var overflow = style.overflow;
|
|
70
|
+
var overflowX = style['overflow-x'];
|
|
71
|
+
var overflowY = style['overflow-y'];
|
|
72
|
+
|
|
73
|
+
if (position === 'static' && excludeStaticParent) {
|
|
74
|
+
parent = parent.parentNode;
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (overflowRegex.test(overflow) && overflowRegex.test(overflowX) && overflowRegex.test(overflowY)) {
|
|
79
|
+
return parent;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
parent = parent.parentNode;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return node.ownerDocument || node.documentElement || document.documentElement;
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
_commonjsHelpers.unwrapExports(scrollParent);
|
|
90
|
+
|
|
91
|
+
var debounce_1 = _commonjsHelpers.createCommonjsModule(function (module, exports) {
|
|
92
|
+
|
|
93
|
+
Object.defineProperty(exports, "__esModule", {
|
|
94
|
+
value: true
|
|
95
|
+
});
|
|
96
|
+
exports.default = debounce;
|
|
97
|
+
function debounce(func, wait, immediate) {
|
|
98
|
+
var timeout = void 0;
|
|
99
|
+
var args = void 0;
|
|
100
|
+
var context = void 0;
|
|
101
|
+
var timestamp = void 0;
|
|
102
|
+
var result = void 0;
|
|
103
|
+
|
|
104
|
+
var later = function later() {
|
|
105
|
+
var last = +new Date() - timestamp;
|
|
106
|
+
|
|
107
|
+
if (last < wait && last >= 0) {
|
|
108
|
+
timeout = setTimeout(later, wait - last);
|
|
109
|
+
} else {
|
|
110
|
+
timeout = null;
|
|
111
|
+
if (!immediate) {
|
|
112
|
+
result = func.apply(context, args);
|
|
113
|
+
if (!timeout) {
|
|
114
|
+
context = null;
|
|
115
|
+
args = null;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
return function debounced() {
|
|
122
|
+
context = this;
|
|
123
|
+
args = arguments;
|
|
124
|
+
timestamp = +new Date();
|
|
125
|
+
|
|
126
|
+
var callNow = immediate && !timeout;
|
|
127
|
+
if (!timeout) {
|
|
128
|
+
timeout = setTimeout(later, wait);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (callNow) {
|
|
132
|
+
result = func.apply(context, args);
|
|
133
|
+
context = null;
|
|
134
|
+
args = null;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return result;
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
_commonjsHelpers.unwrapExports(debounce_1);
|
|
143
|
+
|
|
144
|
+
var throttle_1 = _commonjsHelpers.createCommonjsModule(function (module, exports) {
|
|
145
|
+
|
|
146
|
+
Object.defineProperty(exports, "__esModule", {
|
|
147
|
+
value: true
|
|
148
|
+
});
|
|
149
|
+
exports.default = throttle;
|
|
150
|
+
/*eslint-disable */
|
|
151
|
+
function throttle(fn, threshhold, scope) {
|
|
152
|
+
threshhold || (threshhold = 250);
|
|
153
|
+
var last, deferTimer;
|
|
154
|
+
return function () {
|
|
155
|
+
var context = scope || this;
|
|
156
|
+
|
|
157
|
+
var now = +new Date(),
|
|
158
|
+
args = arguments;
|
|
159
|
+
if (last && now < last + threshhold) {
|
|
160
|
+
// hold on to it
|
|
161
|
+
clearTimeout(deferTimer);
|
|
162
|
+
deferTimer = setTimeout(function () {
|
|
163
|
+
last = now;
|
|
164
|
+
fn.apply(context, args);
|
|
165
|
+
}, threshhold);
|
|
166
|
+
} else {
|
|
167
|
+
last = now;
|
|
168
|
+
fn.apply(context, args);
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
_commonjsHelpers.unwrapExports(throttle_1);
|
|
175
|
+
|
|
176
|
+
var lib = _commonjsHelpers.createCommonjsModule(function (module, exports) {
|
|
177
|
+
|
|
178
|
+
Object.defineProperty(exports, "__esModule", {
|
|
179
|
+
value: true
|
|
180
|
+
});
|
|
181
|
+
exports.forceVisible = exports.forceCheck = exports.lazyload = undefined;
|
|
182
|
+
|
|
183
|
+
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
var _react2 = _interopRequireDefault(React__default);
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
var _reactDom2 = _interopRequireDefault(reactDom);
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
var _propTypes2 = _interopRequireDefault(PropTypes);
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
var _scrollParent2 = _interopRequireDefault(scrollParent);
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
var _debounce2 = _interopRequireDefault(debounce_1);
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
var _throttle2 = _interopRequireDefault(throttle_1);
|
|
210
|
+
|
|
211
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
212
|
+
|
|
213
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
214
|
+
|
|
215
|
+
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
216
|
+
|
|
217
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**
|
|
218
|
+
* react-lazyload
|
|
219
|
+
*/
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
var defaultBoundingClientRect = { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };
|
|
223
|
+
var LISTEN_FLAG = 'data-lazyload-listened';
|
|
224
|
+
var listeners = [];
|
|
225
|
+
var pending = [];
|
|
226
|
+
|
|
227
|
+
// try to handle passive events
|
|
228
|
+
var passiveEventSupported = false;
|
|
229
|
+
try {
|
|
230
|
+
var opts = Object.defineProperty({}, 'passive', {
|
|
231
|
+
get: function get() {
|
|
232
|
+
passiveEventSupported = true;
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
window.addEventListener('test', null, opts);
|
|
236
|
+
} catch (e) {}
|
|
237
|
+
// if they are supported, setup the optional params
|
|
238
|
+
// IMPORTANT: FALSE doubles as the default CAPTURE value!
|
|
239
|
+
var passiveEvent = passiveEventSupported ? { capture: false, passive: true } : false;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Check if `component` is visible in overflow container `parent`
|
|
243
|
+
* @param {node} component React component
|
|
244
|
+
* @param {node} parent component's scroll parent
|
|
245
|
+
* @return {bool}
|
|
246
|
+
*/
|
|
247
|
+
var checkOverflowVisible = function checkOverflowVisible(component, parent) {
|
|
248
|
+
var node = _reactDom2.default.findDOMNode(component);
|
|
249
|
+
// const node = component.ref;
|
|
250
|
+
|
|
251
|
+
var parentTop = void 0;
|
|
252
|
+
var parentLeft = void 0;
|
|
253
|
+
var parentHeight = void 0;
|
|
254
|
+
var parentWidth = void 0;
|
|
255
|
+
|
|
256
|
+
try {
|
|
257
|
+
var _parent$getBoundingCl = parent.getBoundingClientRect();
|
|
258
|
+
|
|
259
|
+
parentTop = _parent$getBoundingCl.top;
|
|
260
|
+
parentLeft = _parent$getBoundingCl.left;
|
|
261
|
+
parentHeight = _parent$getBoundingCl.height;
|
|
262
|
+
parentWidth = _parent$getBoundingCl.width;
|
|
263
|
+
} catch (e) {
|
|
264
|
+
parentTop = defaultBoundingClientRect.top;
|
|
265
|
+
parentLeft = defaultBoundingClientRect.left;
|
|
266
|
+
parentHeight = defaultBoundingClientRect.height;
|
|
267
|
+
parentWidth = defaultBoundingClientRect.width;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
var windowInnerHeight = window.innerHeight || document.documentElement.clientHeight;
|
|
271
|
+
var windowInnerWidth = window.innerWidth || document.documentElement.clientWidth;
|
|
272
|
+
|
|
273
|
+
// calculate top and height of the intersection of the element's scrollParent and viewport
|
|
274
|
+
var intersectionTop = Math.max(parentTop, 0); // intersection's top relative to viewport
|
|
275
|
+
var intersectionLeft = Math.max(parentLeft, 0); // intersection's left relative to viewport
|
|
276
|
+
var intersectionHeight = Math.min(windowInnerHeight, parentTop + parentHeight) - intersectionTop; // height
|
|
277
|
+
var intersectionWidth = Math.min(windowInnerWidth, parentLeft + parentWidth) - intersectionLeft; // width
|
|
278
|
+
|
|
279
|
+
// check whether the element is visible in the intersection
|
|
280
|
+
var top = void 0;
|
|
281
|
+
var left = void 0;
|
|
282
|
+
var height = void 0;
|
|
283
|
+
var width = void 0;
|
|
284
|
+
|
|
285
|
+
try {
|
|
286
|
+
var _node$getBoundingClie = node.getBoundingClientRect();
|
|
287
|
+
|
|
288
|
+
top = _node$getBoundingClie.top;
|
|
289
|
+
left = _node$getBoundingClie.left;
|
|
290
|
+
height = _node$getBoundingClie.height;
|
|
291
|
+
width = _node$getBoundingClie.width;
|
|
292
|
+
} catch (e) {
|
|
293
|
+
top = defaultBoundingClientRect.top;
|
|
294
|
+
left = defaultBoundingClientRect.left;
|
|
295
|
+
height = defaultBoundingClientRect.height;
|
|
296
|
+
width = defaultBoundingClientRect.width;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
var offsetTop = top - intersectionTop; // element's top relative to intersection
|
|
300
|
+
var offsetLeft = left - intersectionLeft; // element's left relative to intersection
|
|
301
|
+
|
|
302
|
+
var offsets = Array.isArray(component.props.offset) ? component.props.offset : [component.props.offset, component.props.offset]; // Be compatible with previous API
|
|
303
|
+
|
|
304
|
+
return offsetTop - offsets[0] <= intersectionHeight && offsetTop + height + offsets[1] >= 0 && offsetLeft - offsets[0] <= intersectionWidth && offsetLeft + width + offsets[1] >= 0;
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Check if `component` is visible in document
|
|
309
|
+
* @param {node} component React component
|
|
310
|
+
* @return {bool}
|
|
311
|
+
*/
|
|
312
|
+
var checkNormalVisible = function checkNormalVisible(component) {
|
|
313
|
+
var node = _reactDom2.default.findDOMNode(component);
|
|
314
|
+
// const node = component.ref;
|
|
315
|
+
|
|
316
|
+
// If this element is hidden by css rules somehow, it's definitely invisible
|
|
317
|
+
if (!(node.offsetWidth || node.offsetHeight || node.getClientRects().length)) return false;
|
|
318
|
+
|
|
319
|
+
var top = void 0;
|
|
320
|
+
var elementHeight = void 0;
|
|
321
|
+
|
|
322
|
+
try {
|
|
323
|
+
var _node$getBoundingClie2 = node.getBoundingClientRect();
|
|
324
|
+
|
|
325
|
+
top = _node$getBoundingClie2.top;
|
|
326
|
+
elementHeight = _node$getBoundingClie2.height;
|
|
327
|
+
} catch (e) {
|
|
328
|
+
top = defaultBoundingClientRect.top;
|
|
329
|
+
elementHeight = defaultBoundingClientRect.height;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
var windowInnerHeight = window.innerHeight || document.documentElement.clientHeight;
|
|
333
|
+
|
|
334
|
+
var offsets = Array.isArray(component.props.offset) ? component.props.offset : [component.props.offset, component.props.offset]; // Be compatible with previous API
|
|
335
|
+
|
|
336
|
+
return top - offsets[0] <= windowInnerHeight && top + elementHeight + offsets[1] >= 0;
|
|
337
|
+
};
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Detect if element is visible in viewport, if so, set `visible` state to true.
|
|
341
|
+
* If `once` prop is provided true, remove component as listener after checkVisible
|
|
342
|
+
*
|
|
343
|
+
* @param {React} component React component that respond to scroll and resize
|
|
344
|
+
*/
|
|
345
|
+
var checkVisible = function checkVisible(component) {
|
|
346
|
+
var node = _reactDom2.default.findDOMNode(component);
|
|
347
|
+
// const node = component.ref;
|
|
348
|
+
if (!(node instanceof HTMLElement)) {
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
var parent = (0, _scrollParent2.default)(node);
|
|
353
|
+
var isOverflow = component.props.overflow && parent !== node.ownerDocument && parent !== document && parent !== document.documentElement;
|
|
354
|
+
var visible = isOverflow ? checkOverflowVisible(component, parent) : checkNormalVisible(component);
|
|
355
|
+
if (visible) {
|
|
356
|
+
// Avoid extra render if previously is visible
|
|
357
|
+
if (!component.visible) {
|
|
358
|
+
if (component.props.once) {
|
|
359
|
+
pending.push(component);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
component.visible = true;
|
|
363
|
+
component.forceUpdate();
|
|
364
|
+
}
|
|
365
|
+
} else if (!(component.props.once && component.visible)) {
|
|
366
|
+
component.visible = false;
|
|
367
|
+
if (component.props.unmountIfInvisible) {
|
|
368
|
+
component.forceUpdate();
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
var purgePending = function purgePending() {
|
|
374
|
+
pending.forEach(function (component) {
|
|
375
|
+
var index = listeners.indexOf(component);
|
|
376
|
+
if (index !== -1) {
|
|
377
|
+
listeners.splice(index, 1);
|
|
378
|
+
}
|
|
379
|
+
});
|
|
380
|
+
|
|
381
|
+
pending = [];
|
|
382
|
+
};
|
|
383
|
+
|
|
384
|
+
var lazyLoadHandler = function lazyLoadHandler() {
|
|
385
|
+
for (var i = 0; i < listeners.length; ++i) {
|
|
386
|
+
var listener = listeners[i];
|
|
387
|
+
checkVisible(listener);
|
|
388
|
+
}
|
|
389
|
+
// Remove `once` component in listeners
|
|
390
|
+
purgePending();
|
|
391
|
+
};
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Forces the component to display regardless of whether the element is visible in the viewport.
|
|
395
|
+
*/
|
|
396
|
+
var forceVisible = function forceVisible() {
|
|
397
|
+
for (var i = 0; i < listeners.length; ++i) {
|
|
398
|
+
var listener = listeners[i];
|
|
399
|
+
listener.visible = true;
|
|
400
|
+
listener.forceUpdate();
|
|
401
|
+
}
|
|
402
|
+
// Remove `once` component in listeners
|
|
403
|
+
purgePending();
|
|
404
|
+
};
|
|
405
|
+
|
|
406
|
+
// Depending on component's props
|
|
407
|
+
var delayType = void 0;
|
|
408
|
+
var finalLazyLoadHandler = null;
|
|
409
|
+
|
|
410
|
+
var isString = function isString(string) {
|
|
411
|
+
return typeof string === 'string';
|
|
412
|
+
};
|
|
413
|
+
|
|
414
|
+
var LazyLoad = function (_Component) {
|
|
415
|
+
_inherits(LazyLoad, _Component);
|
|
416
|
+
|
|
417
|
+
function LazyLoad(props) {
|
|
418
|
+
_classCallCheck(this, LazyLoad);
|
|
419
|
+
|
|
420
|
+
var _this = _possibleConstructorReturn(this, (LazyLoad.__proto__ || Object.getPrototypeOf(LazyLoad)).call(this, props));
|
|
421
|
+
|
|
422
|
+
_this.visible = false;
|
|
423
|
+
// this.setRef = this.setRef.bind(this);
|
|
424
|
+
return _this;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
// setRef(element) {
|
|
428
|
+
// if (element) {
|
|
429
|
+
// this.ref = element;
|
|
430
|
+
// }
|
|
431
|
+
// }
|
|
432
|
+
|
|
433
|
+
_createClass(LazyLoad, [{
|
|
434
|
+
key: 'componentDidMount',
|
|
435
|
+
value: function componentDidMount() {
|
|
436
|
+
// It's unlikely to change delay type on the fly, this is mainly
|
|
437
|
+
// designed for tests
|
|
438
|
+
var scrollport = window;
|
|
439
|
+
var scrollContainer = this.props.scrollContainer;
|
|
440
|
+
|
|
441
|
+
if (scrollContainer) {
|
|
442
|
+
if (isString(scrollContainer)) {
|
|
443
|
+
scrollport = scrollport.document.querySelector(scrollContainer);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
var needResetFinalLazyLoadHandler = this.props.debounce !== undefined && delayType === 'throttle' || delayType === 'debounce' && this.props.debounce === undefined;
|
|
447
|
+
|
|
448
|
+
if (needResetFinalLazyLoadHandler) {
|
|
449
|
+
(0, event.off)(scrollport, 'scroll', finalLazyLoadHandler, passiveEvent);
|
|
450
|
+
(0, event.off)(window, 'resize', finalLazyLoadHandler, passiveEvent);
|
|
451
|
+
finalLazyLoadHandler = null;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
if (!finalLazyLoadHandler) {
|
|
455
|
+
if (this.props.debounce !== undefined) {
|
|
456
|
+
finalLazyLoadHandler = (0, _debounce2.default)(lazyLoadHandler, typeof this.props.debounce === 'number' ? this.props.debounce : 300);
|
|
457
|
+
delayType = 'debounce';
|
|
458
|
+
} else if (this.props.throttle !== undefined) {
|
|
459
|
+
finalLazyLoadHandler = (0, _throttle2.default)(lazyLoadHandler, typeof this.props.throttle === 'number' ? this.props.throttle : 300);
|
|
460
|
+
delayType = 'throttle';
|
|
461
|
+
} else {
|
|
462
|
+
finalLazyLoadHandler = lazyLoadHandler;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
if (this.props.overflow) {
|
|
467
|
+
var parent = (0, _scrollParent2.default)(_reactDom2.default.findDOMNode(this));
|
|
468
|
+
// const parent = scrollParent(this.ref);
|
|
469
|
+
if (parent && typeof parent.getAttribute === 'function') {
|
|
470
|
+
var listenerCount = 1 + +parent.getAttribute(LISTEN_FLAG);
|
|
471
|
+
if (listenerCount === 1) {
|
|
472
|
+
parent.addEventListener('scroll', finalLazyLoadHandler, passiveEvent);
|
|
473
|
+
}
|
|
474
|
+
parent.setAttribute(LISTEN_FLAG, listenerCount);
|
|
475
|
+
}
|
|
476
|
+
} else if (listeners.length === 0 || needResetFinalLazyLoadHandler) {
|
|
477
|
+
var _props = this.props,
|
|
478
|
+
scroll = _props.scroll,
|
|
479
|
+
resize = _props.resize;
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
if (scroll) {
|
|
483
|
+
(0, event.on)(scrollport, 'scroll', finalLazyLoadHandler, passiveEvent);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
if (resize) {
|
|
487
|
+
(0, event.on)(window, 'resize', finalLazyLoadHandler, passiveEvent);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
listeners.push(this);
|
|
492
|
+
checkVisible(this);
|
|
493
|
+
}
|
|
494
|
+
}, {
|
|
495
|
+
key: 'shouldComponentUpdate',
|
|
496
|
+
value: function shouldComponentUpdate() {
|
|
497
|
+
return this.visible;
|
|
498
|
+
}
|
|
499
|
+
}, {
|
|
500
|
+
key: 'componentWillUnmount',
|
|
501
|
+
value: function componentWillUnmount() {
|
|
502
|
+
if (this.props.overflow) {
|
|
503
|
+
var parent = (0, _scrollParent2.default)(_reactDom2.default.findDOMNode(this));
|
|
504
|
+
// const parent = scrollParent(this.ref);
|
|
505
|
+
if (parent && typeof parent.getAttribute === 'function') {
|
|
506
|
+
var listenerCount = +parent.getAttribute(LISTEN_FLAG) - 1;
|
|
507
|
+
if (listenerCount === 0) {
|
|
508
|
+
parent.removeEventListener('scroll', finalLazyLoadHandler, passiveEvent);
|
|
509
|
+
parent.removeAttribute(LISTEN_FLAG);
|
|
510
|
+
} else {
|
|
511
|
+
parent.setAttribute(LISTEN_FLAG, listenerCount);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
var index = listeners.indexOf(this);
|
|
517
|
+
if (index !== -1) {
|
|
518
|
+
listeners.splice(index, 1);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
if (listeners.length === 0 && typeof window !== 'undefined') {
|
|
522
|
+
(0, event.off)(window, 'resize', finalLazyLoadHandler, passiveEvent);
|
|
523
|
+
(0, event.off)(window, 'scroll', finalLazyLoadHandler, passiveEvent);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
}, {
|
|
527
|
+
key: 'render',
|
|
528
|
+
value: function render() {
|
|
529
|
+
return this.visible ? this.props.children : this.props.placeholder ? this.props.placeholder : _react2.default.createElement('div', { style: { height: this.props.height }, className: 'lazyload-placeholder' });
|
|
530
|
+
// <span ref={this.setRef} className="lazyload-custom-placeholder">
|
|
531
|
+
// {this.props.placeholder}
|
|
532
|
+
// </span> :
|
|
533
|
+
// <div ref={this.setRef} style={{ height: this.props.height }} className="lazyload-placeholder" />;
|
|
534
|
+
}
|
|
535
|
+
}]);
|
|
536
|
+
|
|
537
|
+
return LazyLoad;
|
|
538
|
+
}(React__default.Component);
|
|
539
|
+
|
|
540
|
+
LazyLoad.propTypes = {
|
|
541
|
+
once: _propTypes2.default.bool,
|
|
542
|
+
height: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.string]),
|
|
543
|
+
offset: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.arrayOf(_propTypes2.default.number)]),
|
|
544
|
+
overflow: _propTypes2.default.bool,
|
|
545
|
+
resize: _propTypes2.default.bool,
|
|
546
|
+
scroll: _propTypes2.default.bool,
|
|
547
|
+
children: _propTypes2.default.node,
|
|
548
|
+
throttle: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.bool]),
|
|
549
|
+
debounce: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.bool]),
|
|
550
|
+
placeholder: _propTypes2.default.node,
|
|
551
|
+
scrollContainer: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),
|
|
552
|
+
unmountIfInvisible: _propTypes2.default.bool
|
|
553
|
+
};
|
|
554
|
+
|
|
555
|
+
LazyLoad.defaultProps = {
|
|
556
|
+
once: false,
|
|
557
|
+
offset: 0,
|
|
558
|
+
overflow: false,
|
|
559
|
+
resize: false,
|
|
560
|
+
scroll: true,
|
|
561
|
+
unmountIfInvisible: false
|
|
562
|
+
};
|
|
563
|
+
|
|
564
|
+
var getDisplayName = function getDisplayName(WrappedComponent) {
|
|
565
|
+
return WrappedComponent.displayName || WrappedComponent.name || 'Component';
|
|
566
|
+
};
|
|
567
|
+
|
|
568
|
+
var decorator = function decorator() {
|
|
569
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
570
|
+
return function lazyload(WrappedComponent) {
|
|
571
|
+
return function (_Component2) {
|
|
572
|
+
_inherits(LazyLoadDecorated, _Component2);
|
|
573
|
+
|
|
574
|
+
function LazyLoadDecorated() {
|
|
575
|
+
_classCallCheck(this, LazyLoadDecorated);
|
|
576
|
+
|
|
577
|
+
var _this2 = _possibleConstructorReturn(this, (LazyLoadDecorated.__proto__ || Object.getPrototypeOf(LazyLoadDecorated)).call(this));
|
|
578
|
+
|
|
579
|
+
_this2.displayName = 'LazyLoad' + getDisplayName(WrappedComponent);
|
|
580
|
+
return _this2;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
_createClass(LazyLoadDecorated, [{
|
|
584
|
+
key: 'render',
|
|
585
|
+
value: function render() {
|
|
586
|
+
return _react2.default.createElement(
|
|
587
|
+
LazyLoad,
|
|
588
|
+
options,
|
|
589
|
+
_react2.default.createElement(WrappedComponent, this.props)
|
|
590
|
+
);
|
|
591
|
+
}
|
|
592
|
+
}]);
|
|
593
|
+
|
|
594
|
+
return LazyLoadDecorated;
|
|
595
|
+
}(React__default.Component);
|
|
596
|
+
};
|
|
597
|
+
};
|
|
598
|
+
|
|
599
|
+
exports.lazyload = decorator;
|
|
600
|
+
exports.default = LazyLoad;
|
|
601
|
+
exports.forceCheck = lazyLoadHandler;
|
|
602
|
+
exports.forceVisible = forceVisible;
|
|
603
|
+
});
|
|
604
|
+
|
|
605
|
+
var LazyLoad = _commonjsHelpers.unwrapExports(lib);
|
|
606
|
+
var lib_1 = lib.forceVisible;
|
|
607
|
+
var lib_2 = lib.forceCheck;
|
|
608
|
+
var lib_3 = lib.lazyload;
|
|
609
|
+
|
|
610
|
+
exports.LazyLoad = LazyLoad;
|