@micromag/core 0.3.541 → 0.3.547

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/lib/hooks.js DELETED
@@ -1,2402 +0,0 @@
1
- 'use strict';
2
-
3
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
4
- var react = require('react');
5
- var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
6
- var core$1 = require('@react-spring/core');
7
- var react$1 = require('@use-gesture/react');
8
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
9
- var raf = require('raf');
10
- var isObject = require('lodash/isObject');
11
- var utils = require('@micromag/core/utils');
12
- var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
13
- var core = require('@micromag/core');
14
- var forms = require('@folklore/forms');
15
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
16
- var classNames = require('classnames');
17
- var screenfull = require('screenfull');
18
- var isArray = require('lodash/isArray');
19
- var createDebug = require('debug');
20
- var isString = require('lodash/isString');
21
- var contexts = require('@micromag/core/contexts');
22
- var reactIntl = require('react-intl');
23
- var dayjs = require('dayjs');
24
- var cssMediaquery = require('css-mediaquery');
25
- var clamp = require('lodash/clamp');
26
-
27
- function useActivityDetector() {
28
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
29
- _ref$element = _ref.element,
30
- providedElement = _ref$element === void 0 ? null : _ref$element,
31
- _ref$disabled = _ref.disabled,
32
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
33
- _ref$timeout = _ref.timeout,
34
- timeoutDelay = _ref$timeout === void 0 ? 2000 : _ref$timeout;
35
- var ref = react.useRef(providedElement);
36
- var _useState = react.useState(false),
37
- _useState2 = _slicedToArray(_useState, 2),
38
- detected = _useState2[0],
39
- setDetected = _useState2[1];
40
- var detectedRef = react.useRef(detected);
41
- if (providedElement !== null && providedElement !== ref.current) {
42
- ref.current = providedElement;
43
- }
44
- react.useEffect(function () {
45
- var _ref$current = ref.current,
46
- element = _ref$current === void 0 ? null : _ref$current;
47
- if (element === null || disabled) {
48
- return function () {};
49
- }
50
- var timeout = null;
51
- function onActivity() {
52
- if (timeout !== null) {
53
- clearTimeout(timeout);
54
- timeout = null;
55
- }
56
- if (!detectedRef.current) {
57
- detectedRef.current = true;
58
- setDetected(true);
59
- }
60
- timeout = setTimeout(function () {
61
- detectedRef.current = false;
62
- setDetected(false);
63
- }, timeoutDelay);
64
- }
65
- element.addEventListener('keydown', onActivity);
66
- element.addEventListener('mousedown', onActivity);
67
- element.addEventListener('mousemove', onActivity);
68
- element.addEventListener('mouseup', onActivity);
69
- element.addEventListener('pointerdown', onActivity);
70
- element.addEventListener('pointermove', onActivity);
71
- element.addEventListener('pointerup', onActivity);
72
- element.addEventListener('touchmove', onActivity);
73
- element.addEventListener('touchstart', onActivity);
74
- return function () {
75
- if (timeout !== null) {
76
- clearTimeout(timeout);
77
- timeout = null;
78
- }
79
- element.removeEventListener('keydown', onActivity);
80
- element.removeEventListener('mousedown', onActivity);
81
- element.removeEventListener('mousemove', onActivity);
82
- element.removeEventListener('mouseup', onActivity);
83
- element.removeEventListener('pointerdown', onActivity);
84
- element.removeEventListener('pointermove', onActivity);
85
- element.removeEventListener('pointerup', onActivity);
86
- element.removeEventListener('touchmove', onActivity);
87
- element.removeEventListener('touchstart', onActivity);
88
- };
89
- }, [providedElement, disabled, timeoutDelay]);
90
- return {
91
- ref: ref,
92
- detected: detected
93
- };
94
- }
95
-
96
- var useAnimationFrame = function useAnimationFrame(onFrame) {
97
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
98
- _ref$disabled = _ref.disabled,
99
- disabled = _ref$disabled === void 0 ? false : _ref$disabled;
100
- var requestRef = react.useRef(null);
101
- var startTimeRef = react.useRef(null);
102
- var callback = function callback(time) {
103
- if (!startTimeRef.current) {
104
- startTimeRef.current = time;
105
- }
106
- var progress = time - startTimeRef.current;
107
- onFrame(progress);
108
- requestRef.current = requestAnimationFrame(callback);
109
- };
110
- react.useEffect(function () {
111
- if (!disabled) {
112
- requestRef.current = requestAnimationFrame(callback);
113
- }
114
- return function () {
115
- if (requestRef.current !== null) {
116
- cancelAnimationFrame(requestRef.current);
117
- }
118
- };
119
- }, [disabled]);
120
- };
121
- var useAnimationFrame$1 = useAnimationFrame;
122
-
123
- var useFormattedDate = function useFormattedDate() {
124
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
125
- _ref$format = _ref.format,
126
- format = _ref$format === void 0 ? null : _ref$format,
127
- _ref$showToday = _ref.showToday,
128
- showToday = _ref$showToday === void 0 ? true : _ref$showToday;
129
- var intl = reactIntl.useIntl();
130
- var today = dayjs();
131
- return react.useCallback(function (date) {
132
- var dateToFormat = isString(date) ? dayjs(date) : date;
133
- if (showToday && dateToFormat.format('YYYY-MM-DD') === today.format('YYYY-MM-DD')) {
134
- return intl.formatMessage({
135
- id: "v4Qtl9",
136
- defaultMessage: [{
137
- "type": 0,
138
- "value": "Today"
139
- }]
140
- });
141
- }
142
- return intl.formatDate(dayjs(date).toDate(), _objectSpread({
143
- year: 'numeric',
144
- month: 'long',
145
- day: '2-digit'
146
- }, format));
147
- }, [today, showToday, format]);
148
- };
149
- var useFormattedTime = function useFormattedTime() {
150
- var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
151
- _ref2$format = _ref2.format,
152
- format = _ref2$format === void 0 ? null : _ref2$format,
153
- _ref2$showNow = _ref2.showNow,
154
- showNow = _ref2$showNow === void 0 ? true : _ref2$showNow,
155
- _ref2$timeGap = _ref2.timeGap,
156
- timeGap = _ref2$timeGap === void 0 ? 2 : _ref2$timeGap;
157
- var intl = reactIntl.useIntl();
158
- var now = dayjs();
159
- return react.useCallback(function (date) {
160
- var dateToFormat = isString(date) ? dayjs(date) : date;
161
- if (showNow && dateToFormat.format('YYYY-MM-DD') === now.format('YYYY-MM-DD') && dateToFormat.hour() === now.hour() && dateToFormat.minute() > now.minute() - timeGap && dateToFormat.minute() < now.minute() + timeGap) {
162
- return intl.formatMessage({
163
- id: "3na7F8",
164
- defaultMessage: [{
165
- "type": 0,
166
- "value": "Now"
167
- }]
168
- });
169
- }
170
- return intl.formatTime(dateToFormat.toDate(), _objectSpread({
171
- hour: 'numeric',
172
- minute: 'numeric'
173
- }, format));
174
- }, [now, showNow, timeGap, format]);
175
- };
176
-
177
- var useDebounced = function useDebounced(handler, watchedValue) {
178
- var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;
179
- react.useEffect(function () {
180
- var timeoutHandler = setTimeout(function () {
181
- if (handler !== null) {
182
- handler(watchedValue);
183
- }
184
- }, delay);
185
- return function () {
186
- clearTimeout(timeoutHandler);
187
- };
188
- }, [watchedValue, delay]);
189
- };
190
- var useDebounced$1 = useDebounced;
191
-
192
- var eventsManager$1 = typeof document !== 'undefined' ? new core.EventsManager(document) : null;
193
- var useDocumentEvent = utils.createUseEvent(eventsManager$1);
194
- var useDocumentEvent$1 = useDocumentEvent;
195
-
196
- function useDragProgress() {
197
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
198
- wantedProgress = _ref.progress,
199
- _ref$onTap = _ref.onTap,
200
- onTap = _ref$onTap === void 0 ? null : _ref$onTap,
201
- _ref$disabled = _ref.disabled,
202
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
203
- _ref$dragDisabled = _ref.dragDisabled,
204
- dragDisabled = _ref$dragDisabled === void 0 ? false : _ref$dragDisabled,
205
- _ref$computeProgress = _ref.computeProgress,
206
- computeProgress = _ref$computeProgress === void 0 ? null : _ref$computeProgress,
207
- _ref$onProgress = _ref.onProgress,
208
- onProgress = _ref$onProgress === void 0 ? null : _ref$onProgress,
209
- _ref$springParams = _ref.springParams,
210
- springParams = _ref$springParams === void 0 ? undefined : _ref$springParams,
211
- _ref$dragOptions = _ref.dragOptions,
212
- dragOptions = _ref$dragOptions === void 0 ? {
213
- filterTaps: true
214
- } : _ref$dragOptions;
215
- var refDragging = react.useRef(false);
216
- var refProgress = react.useRef(wantedProgress);
217
- var _useState = react.useState(false),
218
- _useState2 = _slicedToArray(_useState, 2),
219
- dragging = _useState2[0],
220
- setDragging = _useState2[1];
221
- var spring = react.useCallback(function () {
222
- return _objectSpread({
223
- progress: wantedProgress,
224
- immediate: dragging || disabled
225
- }, springParams);
226
- }, [wantedProgress, disabled]);
227
- var _useSpring = core$1.useSpring(spring),
228
- _useSpring2 = _slicedToArray(_useSpring, 2),
229
- progress = _useSpring2[0].progress,
230
- api = _useSpring2[1];
231
- var onDrag = react.useCallback(function (gestureState) {
232
- var active = gestureState.active,
233
- tap = gestureState.tap;
234
- if (disabled) {
235
- refDragging.current = false;
236
- return;
237
- }
238
- if (tap) {
239
- refDragging.current = false;
240
- if (onTap !== null) onTap(gestureState);
241
- return;
242
- }
243
- if (dragDisabled) {
244
- refDragging.current = false;
245
- return;
246
- }
247
- var newProgress = computeProgress(gestureState);
248
- refDragging.current = active;
249
- refProgress.current = newProgress;
250
- if (active !== dragging) {
251
- setDragging(active);
252
- }
253
- api.start({
254
- progress: newProgress,
255
- immediate: active
256
- });
257
- if (onProgress !== null) {
258
- onProgress(newProgress, gestureState);
259
- }
260
- }, [setDragging, disabled, onTap, computeProgress, dragging, onProgress]);
261
- var bind = react$1.useDrag(onDrag, dragOptions);
262
- react.useEffect(function () {
263
- if (!refDragging.current && wantedProgress !== refProgress.current) {
264
- refProgress.current = wantedProgress;
265
- api.start({
266
- progress: wantedProgress,
267
- immediate: false
268
- });
269
- }
270
- }, [wantedProgress]);
271
- return {
272
- bind: bind,
273
- dragging: dragging,
274
- progress: progress
275
- };
276
- }
277
-
278
- var _excluded$3 = ["fields", "injectInFields"],
279
- _excluded2 = ["fields"];
280
-
281
- // eslint-disable-next-line
282
- var useForm = function useForm() {
283
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
284
- _ref$fields = _ref.fields,
285
- providedFields = _ref$fields === void 0 ? [] : _ref$fields,
286
- _ref$injectInFields = _ref.injectInFields,
287
- injectInFields = _ref$injectInFields === void 0 ? false : _ref$injectInFields,
288
- opts = _objectWithoutProperties(_ref, _excluded$3);
289
- var fieldsNames = react.useMemo(function () {
290
- return providedFields.length > 0 ? providedFields.map(function (_ref2) {
291
- var name = _ref2.name;
292
- return name;
293
- }) : [];
294
- }, [providedFields]);
295
- var _useBaseForm = forms.useForm(_objectSpread({
296
- fields: fieldsNames
297
- }, opts)),
298
- fields = _useBaseForm.fields,
299
- form = _objectWithoutProperties(_useBaseForm, _excluded2);
300
- return _objectSpread(_objectSpread({}, form), {}, {
301
- fields: injectInFields ? providedFields.map(function (it) {
302
- return _objectSpread(_objectSpread({}, it), fields[it.name] || null);
303
- }) : providedFields
304
- });
305
- };
306
- var useForm$1 = useForm;
307
-
308
- var useFormTransition = function useFormTransition() {
309
- var paths = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
310
- var styles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
311
- var lastPageRef = react.useRef(paths || []);
312
- var direction = react.useMemo(function () {
313
- var currentPartsCount = paths.length;
314
- if (lastPageRef.current) {
315
- var previousPartsCount = lastPageRef.current.length;
316
- lastPageRef.current = paths || [];
317
- return currentPartsCount > previousPartsCount ? 'right' : 'left';
318
- }
319
- return null;
320
- }, [paths]);
321
- var name = react.useMemo(function () {
322
- return {
323
- enter: classNames(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, styles.enterRight, direction === 'right'), styles.enterLeft, direction === 'left'), styles.enterTop, direction === 'top'), styles.enterBottom, direction === 'bottom')) || 'none',
324
- enterActive: classNames(_defineProperty(_defineProperty({}, styles.enterActiveHorizontal, direction === 'left' || direction === 'right'), styles.enterActiveVertical, direction === 'top' || direction === 'bottom')) || 'none',
325
- leave: styles.leave || 'none',
326
- leaveActive: classNames(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, styles.leaveActiveRight, direction === 'right'), styles.leaveActiveLeft, direction === 'left'), styles.leaveActiveTop, direction === 'top'), styles.leaveActiveBottom, direction === 'bottom')) || 'none'
327
- };
328
- }, [direction]);
329
- return {
330
- direction: direction,
331
- name: name,
332
- timeout: direction === 'left' || direction === 'right' ? 300 : 10
333
- };
334
- };
335
- var useFormTransition$1 = useFormTransition;
336
-
337
- var useFullscreen = function useFullscreen(element) {
338
- var enabled = screenfull.isEnabled;
339
- var _useState = react.useState(false),
340
- _useState2 = _slicedToArray(_useState, 2),
341
- active = _useState2[0],
342
- setActive = _useState2[1];
343
- var fullscreen = react.useCallback(function () {
344
- if (screenfull.isEnabled) {
345
- if (typeof element !== 'undefined' && element !== null) {
346
- screenfull.request(element);
347
- } else {
348
- screenfull.request();
349
- }
350
- }
351
- }, [element]);
352
- var unFullscreen = react.useCallback(function () {
353
- if (screenfull.isEnabled) {
354
- screenfull.exit();
355
- }
356
- }, []);
357
- var toggle = react.useCallback(function () {
358
- if (!active) {
359
- fullscreen();
360
- } else {
361
- unFullscreen();
362
- }
363
- }, [active, fullscreen, unFullscreen]);
364
- react.useEffect(function () {
365
- var onChange = function onChange() {
366
- setActive(screenfull.isFullscreen);
367
- };
368
- if (screenfull.isEnabled) {
369
- screenfull.on('change', onChange);
370
- }
371
- return function () {
372
- if (screenfull.isEnabled) {
373
- screenfull.off('change', onChange);
374
- }
375
- };
376
- }, []);
377
- return {
378
- toggle: toggle,
379
- fullscreen: fullscreen,
380
- unFullscreen: unFullscreen,
381
- active: active,
382
- enabled: enabled
383
- };
384
- };
385
- var useFullscreen$1 = useFullscreen;
386
-
387
- var _excluded$2 = ["entry"];
388
- var buildThresholdArray = function buildThresholdArray() {
389
- return [0, 1.0];
390
- };
391
- var observersCache = new Map();
392
- var getOptionsKey = function getOptionsKey(_ref) {
393
- var _ref$root = _ref.root,
394
- root = _ref$root === void 0 ? null : _ref$root,
395
- rootMargin = _ref.rootMargin,
396
- _ref$threshold = _ref.threshold,
397
- threshold = _ref$threshold === void 0 ? null : _ref$threshold;
398
- return "root_".concat(root, "_rootMargin_").concat(rootMargin || null, "_threshold_").concat(threshold);
399
- };
400
- var createObserver = function createObserver(Observer) {
401
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
402
- var subscribers = [];
403
- var addSubscriber = function addSubscriber(element, callback) {
404
- var currentSubscriber = subscribers.find(function (it) {
405
- return it.element === element;
406
- }) || null;
407
- if (currentSubscriber !== null) {
408
- return subscribers.map(function (it) {
409
- return it.element === element && it.callbacks.indexOf(callback) === -1 ? _objectSpread(_objectSpread({}, it), {}, {
410
- callbacks: [].concat(_toConsumableArray(it.callbacks), [callback])
411
- }) : it;
412
- }).filter(function (it) {
413
- return it.callbacks.length > 0;
414
- });
415
- }
416
- return [].concat(_toConsumableArray(subscribers), [{
417
- element: element,
418
- callbacks: [callback]
419
- }]);
420
- };
421
- var removeSubscriber = function removeSubscriber(element, callback) {
422
- return subscribers.map(function (it) {
423
- return it.element === element ? _objectSpread(_objectSpread({}, it), {}, {
424
- callbacks: it.callbacks.filter(function (subCallback) {
425
- return subCallback !== callback;
426
- })
427
- }) : it;
428
- }).filter(function (it) {
429
- return it.callbacks.length > 0;
430
- });
431
- };
432
- var onUpdate = function onUpdate(entries) {
433
- entries.forEach(function (entry) {
434
- subscribers.forEach(function (_ref2) {
435
- var element = _ref2.element,
436
- callbacks = _ref2.callbacks;
437
- if (element === entry.target) {
438
- callbacks.forEach(function (callback) {
439
- callback(entry);
440
- });
441
- }
442
- });
443
- });
444
- };
445
- var observer = new Observer(onUpdate, options);
446
- var unsubscribe = function unsubscribe(element) {
447
- var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
448
- subscribers = removeSubscriber(element, callback);
449
- if (typeof observer.unobserve === 'undefined') {
450
- observer.disconnect();
451
- subscribers.forEach(function (subscriber) {
452
- observer.observe(subscriber.element);
453
- });
454
- return;
455
- }
456
- var currentSubscriber = subscribers.find(function (it) {
457
- return it.element === element;
458
- }) || null;
459
- if (currentSubscriber === null) {
460
- observer.unobserve(element);
461
- }
462
- };
463
- var subscribe = function subscribe(element, callback) {
464
- var currentSubscriber = subscribers.find(function (it) {
465
- return it.element === element;
466
- }) || null;
467
- subscribers = addSubscriber(element, callback);
468
- if (currentSubscriber === null) {
469
- observer.observe(element);
470
- }
471
- };
472
- return {
473
- subscribe: subscribe,
474
- unsubscribe: unsubscribe,
475
- observer: observer
476
- };
477
- };
478
- var getObserver = function getObserver(Observer) {
479
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
480
- var observerKey = getOptionsKey(options);
481
- if (!observersCache.has(Observer)) {
482
- observersCache.set(Observer, {});
483
- }
484
- var observers = observersCache.get(Observer);
485
- if (typeof observers[observerKey] === 'undefined') {
486
- observers[observerKey] = createObserver(Observer, options);
487
- observersCache.set(Observer, observers);
488
- }
489
- return observers[observerKey];
490
- };
491
- var useObserver = function useObserver(Observer) {
492
- var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
493
- var initialEntry = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
494
- var _opts$root = opts.root,
495
- root = _opts$root === void 0 ? null : _opts$root,
496
- _opts$rootMargin = opts.rootMargin,
497
- rootMargin = _opts$rootMargin === void 0 ? null : _opts$rootMargin,
498
- _opts$threshold = opts.threshold,
499
- threshold = _opts$threshold === void 0 ? null : _opts$threshold,
500
- _opts$disabled = opts.disabled,
501
- disabled = _opts$disabled === void 0 ? false : _opts$disabled;
502
- var _useState = react.useState(initialEntry),
503
- _useState2 = _slicedToArray(_useState, 2),
504
- entry = _useState2[0],
505
- setEntry = _useState2[1];
506
- var nodeRef = react.useRef(null);
507
- var currentElement = react.useRef(null);
508
- var elementChanged = nodeRef.current !== currentElement.current;
509
- react.useEffect(function () {
510
- var nodeElement = nodeRef.current;
511
- var callback = function callback(newEntry) {
512
- return setEntry(newEntry);
513
- };
514
- var unsubscribe = null;
515
- if (nodeElement !== null) {
516
- var newOpts = {};
517
- if (root !== null) {
518
- newOpts.root = root;
519
- }
520
- if (rootMargin !== null) {
521
- newOpts.rootMargin = rootMargin;
522
- }
523
- if (threshold !== null) {
524
- newOpts.threshold = threshold;
525
- }
526
- var _getObserver = getObserver(Observer, newOpts),
527
- subscribe = _getObserver.subscribe,
528
- localUnsubscribe = _getObserver.unsubscribe;
529
- unsubscribe = localUnsubscribe;
530
- subscribe(nodeElement, callback);
531
- }
532
- currentElement.current = nodeElement;
533
- return function () {
534
- if (unsubscribe !== null) {
535
- unsubscribe(nodeElement, callback);
536
- }
537
- };
538
- }, [Observer, elementChanged, disabled, root, rootMargin, threshold]);
539
- return {
540
- ref: nodeRef,
541
- entry: entry
542
- };
543
- };
544
-
545
- /**
546
- * Intersection Observer
547
- */
548
- var thresholdArray = buildThresholdArray();
549
- var intersectionObserverInitialEntry = {
550
- target: null,
551
- time: null,
552
- isVisible: false,
553
- isIntersecting: false,
554
- intersectionRatio: 0,
555
- intersectionRect: null,
556
- boundingClientRect: null,
557
- rootBounds: null
558
- };
559
- var useIntersectionObserver = function useIntersectionObserver() {
560
- var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
561
- _ref3$root = _ref3.root,
562
- root = _ref3$root === void 0 ? null : _ref3$root,
563
- _ref3$rootMargin = _ref3.rootMargin,
564
- rootMargin = _ref3$rootMargin === void 0 ? '0px' : _ref3$rootMargin,
565
- _ref3$threshold = _ref3.threshold,
566
- threshold = _ref3$threshold === void 0 ? thresholdArray : _ref3$threshold,
567
- _ref3$disabled = _ref3.disabled,
568
- disabled = _ref3$disabled === void 0 ? false : _ref3$disabled;
569
- return useObserver(typeof window !== 'undefined' ? IntersectionObserver : null, {
570
- root: root,
571
- rootMargin: rootMargin,
572
- threshold: threshold,
573
- disabled: disabled
574
- }, intersectionObserverInitialEntry);
575
- };
576
-
577
- /**
578
- * Resize Observer
579
- */
580
- var resizeObserverInitialEntry = {
581
- target: null,
582
- contentRect: null,
583
- contentBoxSize: null,
584
- borderBoxSize: null
585
- };
586
- var useResizeObserver = function useResizeObserver() {
587
- var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
588
- _ref4$disabled = _ref4.disabled,
589
- disabled = _ref4$disabled === void 0 ? false : _ref4$disabled;
590
- return useObserver(typeof window !== 'undefined' ? ResizeObserver : null, {
591
- disabled: disabled
592
- }, resizeObserverInitialEntry);
593
- };
594
- var useDimensionObserver = function useDimensionObserver() {
595
- var _useResizeObserver = useResizeObserver.apply(void 0, arguments),
596
- entry = _useResizeObserver.entry,
597
- rest = _objectWithoutProperties(_useResizeObserver, _excluded$2);
598
- var _ref5 = entry || {},
599
- _ref5$contentRect = _ref5.contentRect,
600
- contentRect = _ref5$contentRect === void 0 ? null : _ref5$contentRect,
601
- _ref5$borderBoxSize = _ref5.borderBoxSize,
602
- borderBoxSize = _ref5$borderBoxSize === void 0 ? null : _ref5$borderBoxSize;
603
- var _ref6 = contentRect || {},
604
- _ref6$width = _ref6.width,
605
- width = _ref6$width === void 0 ? 0 : _ref6$width,
606
- _ref6$height = _ref6.height,
607
- height = _ref6$height === void 0 ? 0 : _ref6$height;
608
- var _ref7 = isArray(borderBoxSize) ? borderBoxSize[0] || {} : borderBoxSize || {},
609
- _ref7$blockSize = _ref7.blockSize,
610
- blockSize = _ref7$blockSize === void 0 ? null : _ref7$blockSize,
611
- _ref7$inlineSize = _ref7.inlineSize,
612
- inlineSize = _ref7$inlineSize === void 0 ? null : _ref7$inlineSize;
613
- return _objectSpread(_objectSpread({}, rest), {}, {
614
- entry: entry,
615
- width: inlineSize || width,
616
- height: blockSize || height
617
- });
618
- };
619
-
620
- var useIsVisible = function useIsVisible() {
621
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
622
- rootMargin = _ref.rootMargin,
623
- _ref$threshold = _ref.threshold,
624
- threshold = _ref$threshold === void 0 ? 1 : _ref$threshold,
625
- _ref$persist = _ref.persist,
626
- persist = _ref$persist === void 0 ? false : _ref$persist;
627
- var _useIntersectionObser = useIntersectionObserver({
628
- rootMargin: rootMargin,
629
- threshold: threshold
630
- }),
631
- ref = _useIntersectionObser.ref,
632
- isIntersecting = _useIntersectionObser.entry.isIntersecting;
633
- var wasIntersecting = react.useRef(isIntersecting);
634
- if (isIntersecting && !wasIntersecting.current) {
635
- wasIntersecting.current = isIntersecting;
636
- }
637
- var isVisible = !persist && isIntersecting || persist && wasIntersecting.current;
638
- return {
639
- ref: ref,
640
- visible: isVisible
641
- };
642
- };
643
- var useIsVisible$1 = useIsVisible;
644
-
645
- var fontsMap = {
646
- loading: [],
647
- active: []
648
- };
649
- var isFontLoading = function isFontLoading(name) {
650
- return fontsMap.loading.indexOf(name) !== -1;
651
- };
652
- var isFontActive = function isFontActive(name) {
653
- return fontsMap.active.indexOf(name) !== -1;
654
- };
655
- var addFontLoading = function addFontLoading(name) {
656
- fontsMap.active = fontsMap.active.filter(function (it) {
657
- return it !== name;
658
- });
659
- fontsMap.loading = [].concat(_toConsumableArray(fontsMap.loading), [name]);
660
- };
661
- var removeFontLoading = function removeFontLoading(name) {
662
- fontsMap.loading = fontsMap.loading.filter(function (it) {
663
- return it !== name;
664
- });
665
- };
666
- var addFontActive = function addFontActive(name) {
667
- fontsMap.loading = fontsMap.loading.filter(function (it) {
668
- return it !== name;
669
- });
670
- fontsMap.active = [].concat(_toConsumableArray(fontsMap.active), [name]);
671
- };
672
- var useLoadedFonts = function useLoadedFonts(fonts) {
673
- var _useState = react.useState(false),
674
- _useState2 = _slicedToArray(_useState, 2),
675
- loaded = _useState2[0],
676
- setLoaded = _useState2[1];
677
- react.useEffect(function () {
678
- var config = fonts.reduce(function (newConfig, font) {
679
- var _ref = isObject(font) ? font : {
680
- type: 'system',
681
- name: font
682
- },
683
- type = _ref.type,
684
- name = _ref.name,
685
- _ref$variants = _ref.variants,
686
- variants = _ref$variants === void 0 ? [] : _ref$variants;
687
- if ((type === 'google' || type === 'custom') && !isFontLoading(name) && !isFontActive(name)) {
688
- return _objectSpread(_objectSpread({}, newConfig), {}, _defineProperty({}, type, {
689
- families: [].concat(_toConsumableArray(newConfig !== null ? (newConfig[type] || {}).families || [] : []), [type === 'google' ? [name, (variants || []).filter(function (it) {
690
- return it !== null;
691
- }).join(',')].filter(function (it) {
692
- return it !== null && it.length > 0;
693
- }).join(':') : [name, (variants !== null ? [{
694
- fvd: 'n4'
695
- }].concat(_toConsumableArray(variants)) : []).map(function (_ref2) {
696
- var _ref2$fvd = _ref2.fvd,
697
- fvd = _ref2$fvd === void 0 ? null : _ref2$fvd,
698
- _ref2$weight = _ref2.weight,
699
- weight = _ref2$weight === void 0 ? null : _ref2$weight,
700
- _ref2$style = _ref2.style,
701
- style = _ref2$style === void 0 ? null : _ref2$style;
702
- return fvd || [style, weight].filter(function (it) {
703
- return it !== null;
704
- }).map(function (it) {
705
- return "".concat(it).substr(0, 1);
706
- }).join('');
707
- }).filter(function (it) {
708
- return it !== null && it.length > 0;
709
- }).join(',')].filter(function (it) {
710
- return it !== null && it.length > 0;
711
- }).join(':')])
712
- }));
713
- }
714
- return newConfig;
715
- }, null);
716
- var hasConfig = config !== null;
717
- if (hasConfig && typeof window !== 'undefined') {
718
- import('webfontloader').then(function (_ref3) {
719
- var WebFont = _ref3["default"];
720
- return WebFont.load(_objectSpread(_objectSpread({}, config), {}, {
721
- timeout: 3000,
722
- active: function active() {
723
- return setLoaded(true);
724
- },
725
- fontloading: function fontloading(name) {
726
- return addFontLoading(name);
727
- },
728
- fontactive: function fontactive(name) {
729
- return addFontActive(name);
730
- },
731
- fontinactive: function fontinactive(name) {
732
- return removeFontLoading(name);
733
- }
734
- }));
735
- });
736
- } else {
737
- setLoaded(true);
738
- }
739
- }, [fonts, setLoaded]);
740
- return {
741
- loaded: loaded
742
- };
743
- };
744
- var useLoadedFonts$1 = useLoadedFonts;
745
-
746
- var isTouchEvent = function isTouchEvent(event) {
747
- return 'touches' in event;
748
- };
749
- var preventDefault = function preventDefault(event) {
750
- if (!isTouchEvent(event)) return false;
751
- if (event.touches.length < 2 && event.preventDefault) {
752
- event.preventDefault();
753
- }
754
- return false;
755
- };
756
- var preventClickDefault = function preventClickDefault(e) {
757
- if (e.preventDefault) {
758
- e.preventDefault();
759
- }
760
- if (e.stopPropagation) {
761
- e.stopPropagation();
762
- }
763
- };
764
- var useLongPress = function useLongPress() {
765
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
766
- _ref$onLongPress = _ref.onLongPress,
767
- onLongPress = _ref$onLongPress === void 0 ? null : _ref$onLongPress,
768
- _ref$onLongPressStart = _ref.onLongPressStart,
769
- onLongPressStart = _ref$onLongPressStart === void 0 ? null : _ref$onLongPressStart,
770
- _ref$onLongPressEnd = _ref.onLongPressEnd,
771
- onLongPressEnd = _ref$onLongPressEnd === void 0 ? null : _ref$onLongPressEnd,
772
- _ref$onClick = _ref.onClick,
773
- onClick = _ref$onClick === void 0 ? null : _ref$onClick,
774
- _ref$shouldPreventDef = _ref.shouldPreventDefault,
775
- shouldPreventDefault = _ref$shouldPreventDef === void 0 ? true : _ref$shouldPreventDef,
776
- _ref$shouldStopPropag = _ref.shouldStopPropagation,
777
- shouldStopPropagation = _ref$shouldStopPropag === void 0 ? false : _ref$shouldStopPropag,
778
- _ref$preventClick = _ref.preventClick,
779
- preventClick = _ref$preventClick === void 0 ? false : _ref$preventClick,
780
- _ref$delay = _ref.delay,
781
- delay = _ref$delay === void 0 ? 350 : _ref$delay;
782
- var _useState = react.useState(false),
783
- _useState2 = _slicedToArray(_useState, 2),
784
- pressed = _useState2[0],
785
- setPressed = _useState2[1];
786
- var _useState3 = react.useState(false),
787
- _useState4 = _slicedToArray(_useState3, 2),
788
- triggered = _useState4[0],
789
- setTriggered = _useState4[1];
790
- var timeout = react.useRef(null);
791
- var target = react.useRef(null);
792
- var start = react.useCallback(function (event, props) {
793
- setPressed(true);
794
- if (shouldStopPropagation) {
795
- event.stopPropagation();
796
- }
797
- if (event.target !== null) {
798
- target.current = event.target;
799
- }
800
- if (onLongPressStart !== null) {
801
- onLongPressStart(event, props);
802
- }
803
- timeout.current = setTimeout(function () {
804
- if (shouldPreventDefault && target.current !== null) {
805
- target.current.addEventListener('touchend', preventDefault, {
806
- passive: false
807
- });
808
- target.current.addEventListener('click', preventClickDefault, {
809
- passive: false
810
- });
811
- }
812
- setTriggered(true);
813
- if (onLongPress !== null) {
814
- onLongPress(event, props);
815
- setPressed(false);
816
- }
817
- timeout.current = null;
818
- }, delay);
819
- }, [onLongPress, onLongPressStart, delay, setPressed, shouldPreventDefault]);
820
- var clear = react.useCallback(function (event, props) {
821
- var shouldTriggerClick = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
822
- setPressed(false);
823
- if (preventClick && triggered) {
824
- return;
825
- }
826
- if (timeout.current !== null) {
827
- clearTimeout(timeout.current);
828
- } else if (shouldPreventDefault && target.current !== null) {
829
- preventDefault(event);
830
- target.current.removeEventListener('touchend', preventDefault);
831
- setTimeout(function () {
832
- target.current.removeEventListener('click', preventClickDefault);
833
- }, 10);
834
- }
835
- if (shouldTriggerClick && !triggered && onClick !== null) {
836
- onClick(props);
837
- }
838
- onLongPressEnd(event, props, triggered);
839
- setTriggered(false);
840
- }, [shouldPreventDefault, onClick, onLongPressEnd, setPressed, triggered, preventClick]);
841
- var bind = function bind() {
842
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
843
- return {
844
- onMouseDown: function onMouseDown(e) {
845
- return start(e, props);
846
- },
847
- onTouchStart: function onTouchStart(e) {
848
- return start(e, props);
849
- },
850
- onMouseUp: function onMouseUp(e) {
851
- return clear(e, props);
852
- },
853
- onMouseLeave: function onMouseLeave(e) {
854
- return clear(e, props, false);
855
- },
856
- onTouchEnd: function onTouchEnd(e) {
857
- return clear(e, props);
858
- }
859
- };
860
- };
861
- return {
862
- bind: bind,
863
- pressed: pressed,
864
- triggered: triggered
865
- };
866
- };
867
- var useLongPress$1 = useLongPress;
868
-
869
- var progressSteps = [0.1, 0.25, 0.5, 0.75, 0.9];
870
- var useMediaApi = function useMediaApi() {
871
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
872
- _ref$url = _ref.url,
873
- url = _ref$url === void 0 ? null : _ref$url,
874
- _ref$onTimeUpdate = _ref.onTimeUpdate,
875
- onTimeUpdate = _ref$onTimeUpdate === void 0 ? null : _ref$onTimeUpdate,
876
- _ref$onProgressStep = _ref.onProgressStep,
877
- onProgressStep = _ref$onProgressStep === void 0 ? null : _ref$onProgressStep,
878
- _ref$onDurationChange = _ref.onDurationChange,
879
- onDurationChange = _ref$onDurationChange === void 0 ? null : _ref$onDurationChange,
880
- _ref$onVolumeChange = _ref.onVolumeChange,
881
- onVolumeChange = _ref$onVolumeChange === void 0 ? null : _ref$onVolumeChange,
882
- _ref$onPlay = _ref.onPlay,
883
- onPlay = _ref$onPlay === void 0 ? null : _ref$onPlay,
884
- _ref$onPause = _ref.onPause,
885
- onPause = _ref$onPause === void 0 ? null : _ref$onPause,
886
- _ref$onEnded = _ref.onEnded,
887
- onEnded = _ref$onEnded === void 0 ? null : _ref$onEnded,
888
- _ref$onSeeked = _ref.onSeeked,
889
- onSeeked = _ref$onSeeked === void 0 ? null : _ref$onSeeked,
890
- _ref$onSuspend = _ref.onSuspend,
891
- onSuspend = _ref$onSuspend === void 0 ? null : _ref$onSuspend,
892
- _ref$onLoadStart = _ref.onLoadStart,
893
- onLoadStart = _ref$onLoadStart === void 0 ? null : _ref$onLoadStart,
894
- _ref$onCanPlayThough = _ref.onCanPlayThough,
895
- onCanPlayThough = _ref$onCanPlayThough === void 0 ? null : _ref$onCanPlayThough,
896
- _ref$onCanPlay = _ref.onCanPlay,
897
- onCanPlay = _ref$onCanPlay === void 0 ? null : _ref$onCanPlay,
898
- _ref$onLoadedData = _ref.onLoadedData,
899
- onLoadedData = _ref$onLoadedData === void 0 ? null : _ref$onLoadedData,
900
- _ref$onLoadedMetadata = _ref.onLoadedMetadata,
901
- onLoadedMetadata = _ref$onLoadedMetadata === void 0 ? null : _ref$onLoadedMetadata;
902
- var ref = react.useRef(null);
903
- var _useState = react.useState(null),
904
- _useState2 = _slicedToArray(_useState, 2),
905
- currentTime = _useState2[0],
906
- setCurrentTime = _useState2[1];
907
- var _useState3 = react.useState(null),
908
- _useState4 = _slicedToArray(_useState3, 2),
909
- duration = _useState4[0],
910
- setDuration = _useState4[1];
911
- var _useState5 = react.useState(false),
912
- _useState6 = _slicedToArray(_useState5, 2),
913
- playing = _useState6[0],
914
- setPlaying = _useState6[1];
915
- var _useState7 = react.useState(false),
916
- _useState8 = _slicedToArray(_useState7, 2),
917
- ready = _useState8[0],
918
- setReady = _useState8[1];
919
- var _useState9 = react.useState(false),
920
- _useState10 = _slicedToArray(_useState9, 2),
921
- dataReady = _useState10[0],
922
- setDataReady = _useState10[1];
923
- var _useState11 = react.useState(true),
924
- _useState12 = _slicedToArray(_useState11, 2),
925
- initialPlay = _useState12[0],
926
- setInitialPlay = _useState12[1];
927
- var _useState13 = react.useState(false),
928
- _useState14 = _slicedToArray(_useState13, 2),
929
- suspended = _useState14[0],
930
- setSuspended = _useState14[1];
931
- var progressStepsReached = react.useRef({});
932
- var paused = !playing;
933
-
934
- // Exposed methods
935
-
936
- var play = react.useCallback(function () {
937
- var media = ref.current;
938
- if (media !== null) {
939
- media.play();
940
- }
941
- }, []);
942
- var pause = react.useCallback(function () {
943
- var media = ref.current;
944
- if (media !== null) {
945
- media.pause();
946
- }
947
- }, []);
948
- var stop = react.useCallback(function () {
949
- var media = ref.current;
950
- if (media !== null) {
951
- media.pause();
952
- media.currentTime = 0;
953
- }
954
- }, []);
955
- var seek = react.useCallback(function (time) {
956
- var media = ref.current;
957
- if (media !== null) {
958
- media.currentTime = time;
959
- }
960
- }, []);
961
-
962
- // const mute = useCallback(() => {
963
- // const { current: media } = ref;
964
- // if (media !== null) {
965
- // media.muted = true;
966
- // }
967
- // }, []);
968
-
969
- // const unMute = useCallback(() => {
970
- // const { current: media } = ref;
971
- // if (media !== null) {
972
- // media.muted = false;
973
- // }
974
- // }, []);
975
-
976
- // Media events callbacks
977
-
978
- var onCustomPlay = react.useCallback(function () {
979
- if (onPlay !== null) {
980
- onPlay({
981
- initial: initialPlay
982
- });
983
- }
984
- if (initialPlay) {
985
- setInitialPlay(false);
986
- }
987
- setPlaying(true);
988
- setSuspended(false);
989
- }, [initialPlay, setPlaying, onPlay]);
990
- var onCustomPlaying = react.useCallback(function () {
991
- setPlaying(true);
992
- setSuspended(false);
993
- }, []);
994
- var onCustomPause = react.useCallback(function (e) {
995
- var eventMedia = e.currentTarget;
996
- setPlaying(false);
997
- if (onPause !== null) {
998
- onPause({
999
- midway: eventMedia.currentTime > 0 && eventMedia.currentTime < eventMedia.duration
1000
- });
1001
- }
1002
- }, [setPlaying, onPause]);
1003
- var onCustomEnded = react.useCallback(function (e) {
1004
- var eventMedia = e.currentTarget;
1005
- eventMedia.currentTime = 0;
1006
- if (onEnded !== null) {
1007
- onEnded();
1008
- }
1009
- setInitialPlay(true);
1010
- }, [setInitialPlay, onEnded]);
1011
- var onCustomTimeUpdate = react.useCallback(function (e) {
1012
- var eventMedia = e.currentTarget;
1013
- setCurrentTime(eventMedia.currentTime);
1014
- if (onTimeUpdate !== null) {
1015
- onTimeUpdate(eventMedia.currentTime);
1016
- }
1017
- var progress = eventMedia.currentTime / eventMedia.duration;
1018
- var currentSteps = progressStepsReached.current;
1019
- var stepsToTrack = progressSteps.filter(function (step) {
1020
- return progress > step && typeof currentSteps[step] === 'undefined';
1021
- });
1022
- stepsToTrack.forEach(function (step) {
1023
- if (onProgressStep !== null) {
1024
- onProgressStep(step);
1025
- }
1026
- currentSteps[step] = true;
1027
- });
1028
- }, [setCurrentTime, onTimeUpdate, onProgressStep]);
1029
- var onCustomDurationChange = react.useCallback(function (e) {
1030
- var eventMedia = e.currentTarget;
1031
- setDuration(eventMedia.duration);
1032
- if (onDurationChange !== null) {
1033
- onDurationChange(eventMedia.duration);
1034
- }
1035
- }, [setDuration, onDurationChange]);
1036
- var onCustomSeeked = react.useCallback(function (e) {
1037
- var eventMedia = e.currentTarget;
1038
- if (onSeeked !== null) {
1039
- onSeeked(eventMedia.currentTime);
1040
- }
1041
- }, [onSeeked]);
1042
- var onCustomVolumeChange = react.useCallback(function (e) {
1043
- var eventMedia = e.currentTarget;
1044
-
1045
- // setMuted(eventMedia.muted);
1046
- if (onVolumeChange !== null) {
1047
- onVolumeChange(eventMedia.volume);
1048
- }
1049
- }, [onVolumeChange]);
1050
- var onCustomLoadStart = react.useCallback(function () {
1051
- if (onLoadStart !== null) {
1052
- onLoadStart();
1053
- }
1054
- }, [setReady, onLoadStart]);
1055
- var onCustomCanPlayThrough = react.useCallback(function () {
1056
- setReady(true);
1057
- if (onCanPlayThough !== null) {
1058
- onCanPlayThough();
1059
- }
1060
- }, [setReady, onCanPlayThough]);
1061
- var onCustomCanPlay = react.useCallback(function () {
1062
- setReady(true);
1063
- if (onCanPlay !== null) {
1064
- onCanPlay();
1065
- }
1066
- }, [setReady, onCanPlay]);
1067
- var onCustomLoadedMetadata = react.useCallback(function () {
1068
- setReady(true);
1069
- if (onLoadedMetadata !== null) {
1070
- onLoadedMetadata();
1071
- }
1072
- }, [setReady, onLoadedMetadata]);
1073
- var onCustomLoadedData = react.useCallback(function () {
1074
- setDataReady(true);
1075
- if (onLoadedData !== null) {
1076
- onLoadedData();
1077
- }
1078
- }, [setDataReady, onLoadedData]);
1079
- var onCustomSuspended = react.useCallback(function () {
1080
- setSuspended(true);
1081
- if (onSuspend !== null) {
1082
- onSuspend();
1083
- }
1084
- }, [setSuspended, onSuspended]);
1085
- react.useEffect(function () {
1086
- var _ref$current = ref.current,
1087
- media = _ref$current === void 0 ? null : _ref$current;
1088
-
1089
- // console.log('actions', url);
1090
-
1091
- if (media !== null) {
1092
- media.addEventListener('volumechange', onCustomVolumeChange);
1093
- media.addEventListener('play', onCustomPlay);
1094
- media.addEventListener('playing', onCustomPlaying);
1095
- media.addEventListener('pause', onCustomPause);
1096
- media.addEventListener('ended', onCustomEnded);
1097
- media.addEventListener('seeked', onCustomSeeked);
1098
- // media.addEventListener('loadstart', onCustomLoadStart);
1099
- // media.addEventListener('canplaythrough', onCustomCanPlayThrough);
1100
- // media.addEventListener('canplay', onCustomCanPlay);
1101
- // media.addEventListener('loadedmetadata', onCustomLoadedMetadata);
1102
- // media.addEventListener('loadeddata', onCustomLoadedData);
1103
- }
1104
- return function () {
1105
- if (media !== null) {
1106
- media.removeEventListener('volumechange', onCustomVolumeChange);
1107
- media.removeEventListener('play', onCustomPlay);
1108
- media.removeEventListener('playing', onCustomPlaying);
1109
- media.removeEventListener('pause', onCustomPause);
1110
- media.removeEventListener('ended', onCustomEnded);
1111
- media.removeEventListener('seeked', onCustomSeeked);
1112
- // media.removeEventListener('loadstart', onCustomLoadStart);
1113
- // media.removeEventListener('canplaythrough', onCustomCanPlayThrough);
1114
- // media.removeEventListener('canplay', onCustomCanPlay);
1115
- // media.removeEventListener('loadedmetadata', onCustomLoadedMetadata);
1116
- }
1117
- };
1118
- }, [url, onCustomVolumeChange, onCustomPlay, onCustomPause, onCustomEnded, onCustomSeeked, onCustomSuspended
1119
- // onCustomLoadStart,
1120
- // onCustomCanPlayThrough,
1121
- // onCustomCanPlay,
1122
- // onCustomLoadedMetadata,
1123
- ]);
1124
- react.useEffect(function () {
1125
- var _ref$current2 = ref.current,
1126
- media = _ref$current2 === void 0 ? null : _ref$current2;
1127
- if (media !== null) {
1128
- media.addEventListener('loadstart', onCustomLoadStart);
1129
- media.addEventListener('canplaythrough', onCustomCanPlayThrough);
1130
- media.addEventListener('canplay', onCustomCanPlay);
1131
- media.addEventListener('loadedmetadata', onCustomLoadedMetadata);
1132
- media.addEventListener('loadeddata', onCustomLoadedData);
1133
- media.addEventListener('suspend', onCustomSuspended);
1134
- }
1135
- return function () {
1136
- if (media !== null) {
1137
- media.removeEventListener('loadstart', onCustomLoadStart);
1138
- media.removeEventListener('canplaythrough', onCustomCanPlayThrough);
1139
- media.removeEventListener('canplay', onCustomCanPlay);
1140
- media.removeEventListener('loadedmetadata', onCustomLoadedMetadata);
1141
- media.removeEventListener('suspend', onCustomSuspended);
1142
- }
1143
- };
1144
- }, [url, onCustomLoadStart, onCustomCanPlayThrough, onCustomCanPlay, onCustomLoadedMetadata, onCustomSuspended]);
1145
-
1146
- // Duration
1147
- react.useEffect(function () {
1148
- var _ref$current3 = ref.current,
1149
- media = _ref$current3 === void 0 ? null : _ref$current3;
1150
- if (media !== null) {
1151
- media.addEventListener('durationchange', onCustomDurationChange);
1152
- }
1153
- return function () {
1154
- if (media !== null) {
1155
- media.removeEventListener('durationchange', onCustomDurationChange);
1156
- }
1157
- };
1158
- }, [url, onCustomDurationChange]);
1159
-
1160
- // Timeupdate
1161
- react.useEffect(function () {
1162
- var _ref$current4 = ref.current,
1163
- media = _ref$current4 === void 0 ? null : _ref$current4;
1164
- // console.log('timeupdate', url);
1165
- if (media !== null) {
1166
- media.addEventListener('timeupdate', onCustomTimeUpdate);
1167
- }
1168
- return function () {
1169
- if (media !== null) {
1170
- media.removeEventListener('timeupdate', onCustomTimeUpdate);
1171
- }
1172
- };
1173
- }, [url, onCustomTimeUpdate, onCustomDurationChange]);
1174
- react.useEffect(function () {
1175
- var _ref$current5 = ref.current,
1176
- media = _ref$current5 === void 0 ? null : _ref$current5;
1177
- if (media !== null && media.readyState > 1) {
1178
- setDataReady(true);
1179
- } else {
1180
- setDataReady(false);
1181
- }
1182
- if (media !== null && media.readyState > 3) {
1183
- setReady(true);
1184
- } else {
1185
- setReady(false);
1186
- }
1187
- }, [url]);
1188
- return {
1189
- ref: ref,
1190
- play: play,
1191
- pause: pause,
1192
- stop: stop,
1193
- seek: seek,
1194
- currentTime: currentTime,
1195
- duration: duration,
1196
- playing: playing,
1197
- paused: paused,
1198
- ready: ready,
1199
- dataReady: dataReady,
1200
- suspended: suspended
1201
- };
1202
- };
1203
- var useMediaApi$1 = useMediaApi;
1204
-
1205
- var useMediaBuffering = function useMediaBuffering() {
1206
- var mediaElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
1207
- var _useState = react.useState(false),
1208
- _useState2 = _slicedToArray(_useState, 2),
1209
- buffering = _useState2[0],
1210
- setBuffering = _useState2[1];
1211
- react.useEffect(function () {
1212
- if (mediaElement === null) {
1213
- return function () {};
1214
- }
1215
- function onBufferingEvent(e) {
1216
- // networkstate
1217
- if (mediaElement.networkState === mediaElement.NETWORK_LOADING) {
1218
- // The user agent is actively trying to download data.
1219
- setBuffering(true);
1220
- }
1221
-
1222
- // readystate
1223
- if (mediaElement.readyState < mediaElement.HAVE_FUTURE_DATA) {
1224
- // There is not enough data to keep playing from this point
1225
- setBuffering(true);
1226
- }
1227
- }
1228
- function onPlay() {
1229
- setBuffering(false);
1230
- }
1231
- function onPlaying() {
1232
- setBuffering(false);
1233
- }
1234
- function onPause() {
1235
- setBuffering(false);
1236
- }
1237
- function onEnded() {
1238
- setBuffering(false);
1239
- }
1240
- mediaElement.addEventListener('waiting', onBufferingEvent);
1241
- mediaElement.addEventListener('stalled', onBufferingEvent);
1242
- mediaElement.addEventListener('play', onPlay);
1243
- mediaElement.addEventListener('playing', onPlaying);
1244
- mediaElement.addEventListener('pause', onPause);
1245
- mediaElement.addEventListener('ended', onEnded);
1246
- return function () {
1247
- mediaElement.removeEventListener('waiting', onBufferingEvent);
1248
- mediaElement.removeEventListener('stalled', onBufferingEvent);
1249
- mediaElement.removeEventListener('play', onPlay);
1250
- mediaElement.removeEventListener('playing', onPlaying);
1251
- mediaElement.removeEventListener('pause', onPause);
1252
- mediaElement.removeEventListener('ended', onEnded);
1253
- };
1254
- }, [mediaElement]);
1255
-
1256
- // useEffect(() => {
1257
- // if (mediaElement === null) {
1258
- // return () => {};
1259
- // }
1260
- // let lastPlayPos = 0;
1261
- // let currentPlayPos = 0;
1262
- // let bufferingDetected = false;
1263
-
1264
- // function checkBuffering(player, checkInterval) {
1265
- // currentPlayPos = player.currentTime;
1266
-
1267
- // // checking offset should be at most the check interval
1268
- // // but allow for some margin
1269
- // const offset = (checkInterval - 20) / 1000;
1270
-
1271
- // // if no buffering is currently detected,
1272
- // // and the position does not seem to increase
1273
- // // and the player isn't manually paused...
1274
- // if (!bufferingDetected && currentPlayPos < lastPlayPos + offset && !player.paused) {
1275
- // console.log('buffering!');
1276
- // bufferingDetected = true;
1277
- // }
1278
-
1279
- // // if we were buffering but the player has advanced,
1280
- // // then there is no buffering
1281
- // if (bufferingDetected && currentPlayPos > lastPlayPos + offset && !player.paused) {
1282
- // console.log('not buffering anymore!');
1283
- // bufferingDetected = false;
1284
- // }
1285
- // lastPlayPos = currentPlayPos;
1286
-
1287
- // return bufferingDetected;
1288
- // }
1289
-
1290
- // const id = setInterval(() => {
1291
- // setBuffering(checkBuffering(mediaElement, interval));
1292
- // }, interval);
1293
-
1294
- // return () => {
1295
- // clearInterval(id);
1296
- // };
1297
- // }, [mediaElement, interval]);
1298
-
1299
- return {
1300
- buffering: buffering
1301
- };
1302
- };
1303
- var useMediaBuffering$1 = useMediaBuffering;
1304
-
1305
- var useMediaState = function useMediaState() {
1306
- var mediaElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
1307
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1308
- _ref$playing = _ref.playing,
1309
- wantedPlaying = _ref$playing === void 0 ? false : _ref$playing,
1310
- _ref$muted = _ref.muted,
1311
- wantedMuted = _ref$muted === void 0 ? false : _ref$muted;
1312
- var debug = react.useMemo(function () {
1313
- var mediaKey = mediaElement !== null && isString(mediaElement.src) ? mediaElement.src.split('/')[mediaElement.src.split('/').length - 1].split('#')[0] || null : null;
1314
- return createDebug(mediaKey !== null ? "micromag:media:".concat(mediaKey) : 'micromag:media');
1315
- }, [mediaElement]);
1316
- var _useState = react.useState(wantedPlaying),
1317
- _useState2 = _slicedToArray(_useState, 2),
1318
- playing = _useState2[0],
1319
- setPlaying = _useState2[1];
1320
- var _useState3 = react.useState(false),
1321
- _useState4 = _slicedToArray(_useState3, 2),
1322
- buffering = _useState4[0],
1323
- setBuffering = _useState4[1];
1324
- var _useState5 = react.useState(mediaElement !== null && (mediaElement.muted || mediaElement.volume === 0) || wantedMuted),
1325
- _useState6 = _slicedToArray(_useState5, 2),
1326
- muted = _useState6[0],
1327
- setMuted = _useState6[1];
1328
- react.useEffect(function () {
1329
- debug('State change %o', {
1330
- playing: playing,
1331
- buffering: buffering,
1332
- muted: muted
1333
- });
1334
- }, [playing, buffering, muted, debug]);
1335
- react.useEffect(function () {
1336
- if (mediaElement === null) {
1337
- setPlaying(wantedPlaying);
1338
- setBuffering(false);
1339
- setMuted(wantedMuted);
1340
- debug('Unset media: %o', {
1341
- wantedPlaying: wantedPlaying,
1342
- wantedMuted: wantedMuted
1343
- });
1344
- }
1345
- }, [mediaElement, debug, wantedPlaying, wantedMuted]);
1346
- react.useEffect(function () {
1347
- if (mediaElement === null) {
1348
- return function () {};
1349
- }
1350
- function onBufferingEvent(e) {
1351
- // networkstate
1352
- if (mediaElement.networkState === mediaElement.NETWORK_LOADING) {
1353
- debug('onBufferingEvent: NETWORK_LOADING');
1354
- setBuffering(true);
1355
- }
1356
-
1357
- // readystate
1358
- if (mediaElement.readyState < mediaElement.HAVE_FUTURE_DATA) {
1359
- debug('onBufferingEvent: HAVE_FUTURE_DATA');
1360
- setBuffering(true);
1361
- }
1362
- }
1363
- function onPlay() {
1364
- debug('onPlay');
1365
- setPlaying(true);
1366
- setBuffering(false);
1367
- }
1368
- function onPlaying() {
1369
- debug('onPlaying');
1370
- setPlaying(true);
1371
- setBuffering(false);
1372
- }
1373
- function onTimeUpdate(e) {
1374
- debug('onTimeUpdate');
1375
- setPlaying(!e.currentTarget.paused && !e.currentTarget.ended);
1376
- setBuffering(false);
1377
- }
1378
- function onPause() {
1379
- debug('onPause');
1380
- setPlaying(false);
1381
- setBuffering(false);
1382
- }
1383
- function onEnded() {
1384
- debug('onEnded');
1385
- setPlaying(false);
1386
- setBuffering(false);
1387
- }
1388
- function onSuspend(e) {
1389
- debug('onSuspend');
1390
- setPlaying(!e.currentTarget.paused && !e.currentTarget.ended);
1391
- setBuffering(false);
1392
- }
1393
- function onVolumeChange() {
1394
- setMuted(mediaElement.muted || mediaElement.volume === 0);
1395
- }
1396
- if (mediaElement.paused || mediaElement.ended) {
1397
- setPlaying(false);
1398
- }
1399
- if (muted !== mediaElement.muted) {
1400
- setMuted(mediaElement.muted);
1401
- }
1402
- mediaElement.addEventListener('waiting', onBufferingEvent);
1403
- mediaElement.addEventListener('stalled', onBufferingEvent);
1404
- mediaElement.addEventListener('timeupdate', onTimeUpdate);
1405
- mediaElement.addEventListener('play', onPlay);
1406
- mediaElement.addEventListener('playing', onPlaying);
1407
- mediaElement.addEventListener('pause', onPause);
1408
- mediaElement.addEventListener('suspend', onSuspend);
1409
- mediaElement.addEventListener('ended', onEnded);
1410
- mediaElement.addEventListener('volumechange', onVolumeChange);
1411
- return function () {
1412
- mediaElement.removeEventListener('waiting', onBufferingEvent);
1413
- mediaElement.removeEventListener('stalled', onBufferingEvent);
1414
- mediaElement.removeEventListener('timeupdate', onTimeUpdate);
1415
- mediaElement.removeEventListener('play', onPlay);
1416
- mediaElement.removeEventListener('playing', onPlaying);
1417
- mediaElement.removeEventListener('pause', onPause);
1418
- mediaElement.removeEventListener('suspend', onSuspend);
1419
- mediaElement.removeEventListener('ended', onEnded);
1420
- mediaElement.removeEventListener('volumechange', onVolumeChange);
1421
- };
1422
- }, [mediaElement, debug]);
1423
- return {
1424
- playing: playing,
1425
- muted: muted,
1426
- buffering: buffering
1427
- };
1428
- };
1429
- var useMediaState$1 = useMediaState;
1430
-
1431
- function useMediaCurrentTime(element) {
1432
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1433
- _ref$id = _ref.id,
1434
- id = _ref$id === void 0 ? null : _ref$id,
1435
- _ref$disabled = _ref.disabled,
1436
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
1437
- _ref$updateInterval = _ref.updateInterval,
1438
- updateInterval = _ref$updateInterval === void 0 ? 1000 : _ref$updateInterval,
1439
- _ref$onUpdate = _ref.onUpdate,
1440
- customOnUpdate = _ref$onUpdate === void 0 ? null : _ref$onUpdate;
1441
- var _useState = react.useState(0),
1442
- _useState2 = _slicedToArray(_useState, 2),
1443
- currentTime = _useState2[0],
1444
- setCurrentTime = _useState2[1];
1445
- var realCurrentTime = react.useRef(currentTime);
1446
- var finalId = id || element;
1447
- var lastIdRef = react.useRef(finalId);
1448
- var idChanged = lastIdRef.current !== finalId;
1449
- var disabledRef = react.useRef(disabled);
1450
- var disabledChanged = disabledRef.current !== disabled;
1451
- if (idChanged || disabledChanged) {
1452
- realCurrentTime.current = element !== null ? element.currentTime || 0 : 0;
1453
- lastIdRef.current = finalId;
1454
- disabledRef.current = disabled;
1455
- }
1456
-
1457
- // Check time update
1458
- react.useEffect(function () {
1459
- if (element === null) {
1460
- return function () {};
1461
- }
1462
- function updateTime() {
1463
- var time = element.currentTime || 0;
1464
- if (time !== realCurrentTime.current) {
1465
- realCurrentTime.current = time;
1466
- setCurrentTime(time);
1467
- if (customOnUpdate !== null) {
1468
- customOnUpdate(time);
1469
- }
1470
- }
1471
- return time;
1472
- }
1473
- if (disabled) {
1474
- updateTime();
1475
- return function () {};
1476
- }
1477
- var timeout = null;
1478
- function loop() {
1479
- var _element$duration = element.duration,
1480
- duration = _element$duration === void 0 ? 0 : _element$duration;
1481
- var time = updateTime();
1482
- var remainingTime = Math.floor(((duration || 0) - time) * 1000);
1483
- timeout = setTimeout(loop, Math.max(Math.min(updateInterval, remainingTime), updateInterval));
1484
- }
1485
- loop();
1486
- return function () {
1487
- if (element !== null) {
1488
- realCurrentTime.current = element.currentTime;
1489
- }
1490
- if (timeout !== null) {
1491
- clearInterval(timeout);
1492
- }
1493
- };
1494
- }, [id, element, setCurrentTime, disabled, updateInterval]);
1495
- return realCurrentTime.current;
1496
- }
1497
-
1498
- function useMediaDuration(element) {
1499
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1500
- _ref$id = _ref.id,
1501
- id = _ref$id === void 0 ? null : _ref$id;
1502
- var _useState = react.useState(element !== null ? element.duration || 0 : 0),
1503
- _useState2 = _slicedToArray(_useState, 2),
1504
- duration = _useState2[0],
1505
- setDuration = _useState2[1];
1506
- var realDuration = react.useRef(duration);
1507
- var finalId = id || element;
1508
- var lastIdRef = react.useRef(finalId);
1509
- var idChanged = lastIdRef.current !== finalId;
1510
- if (idChanged) {
1511
- realDuration.current = element !== null ? element.duration || 0 : 0;
1512
- lastIdRef.current = finalId;
1513
- }
1514
- react.useEffect(function () {
1515
- if (element === null) {
1516
- realDuration.current = 0;
1517
- setDuration(0);
1518
- return function () {};
1519
- }
1520
- function updateDuration() {
1521
- var newDuration = element.duration || 0;
1522
- if (newDuration !== realDuration.current) {
1523
- realDuration.current = newDuration;
1524
- setDuration(newDuration);
1525
- }
1526
- }
1527
- updateDuration();
1528
- element.addEventListener('canplay', updateDuration);
1529
- element.addEventListener('loadedmetadata', updateDuration);
1530
- element.addEventListener('durationchange', updateDuration);
1531
- return function () {
1532
- element.removeEventListener('canplay', updateDuration);
1533
- element.removeEventListener('loadedmetadata', updateDuration);
1534
- element.removeEventListener('durationchange', updateDuration);
1535
- };
1536
- }, [element, id, setDuration]);
1537
- return realDuration.current;
1538
- }
1539
-
1540
- function useMediaLoad(element) {
1541
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1542
- _ref$preload = _ref.preload,
1543
- preload = _ref$preload === void 0 ? 'auto' : _ref$preload,
1544
- _ref$shouldLoad = _ref.shouldLoad,
1545
- shouldLoad = _ref$shouldLoad === void 0 ? false : _ref$shouldLoad;
1546
- var firstPreloadRef = react.useRef(preload);
1547
- var firstShouldLoadRef = react.useRef(shouldLoad);
1548
- var hasLoadedRef = react.useRef(preload !== 'none' && preload !== 'metadata' && shouldLoad);
1549
- react.useEffect(function () {
1550
- var canLoad = preload !== 'none' && preload !== 'metadata' && shouldLoad;
1551
- var preloadHasChanged = firstPreloadRef.current !== preload;
1552
- var shouldLoadHasChanged = firstShouldLoadRef.current !== shouldLoad;
1553
- if (canLoad && (preloadHasChanged || shouldLoadHasChanged) && !hasLoadedRef.current && element !== null && typeof element.load !== 'undefined') {
1554
- hasLoadedRef.current = true;
1555
- element.load();
1556
- }
1557
- }, [element, shouldLoad, preload]);
1558
- }
1559
-
1560
- var _excluded$1 = ["disabled"];
1561
- function useMediaProgress(media) {
1562
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1563
- _ref$disabled = _ref.disabled,
1564
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
1565
- props = _objectWithoutProperties(_ref, _excluded$1);
1566
- var _useState = react.useState(!disabled),
1567
- _useState2 = _slicedToArray(_useState, 2),
1568
- playing = _useState2[0],
1569
- setPlaying = _useState2[1];
1570
- var duration = useMediaDuration(media, _objectSpread({
1571
- disabled: disabled || !playing
1572
- }, props));
1573
- var _useState3 = react.useState(0),
1574
- _useState4 = _slicedToArray(_useState3, 2),
1575
- progress = _useState4[0],
1576
- setProgress = _useState4[1];
1577
- var realProgressRef = react.useRef(progress);
1578
- var updateTimeRef = react.useRef(Date.now() / 1000);
1579
- var updateProgress = react.useCallback(function (newProgress) {
1580
- updateTimeRef.current = Date.now() / 1000;
1581
- realProgressRef.current = newProgress;
1582
- setProgress(newProgress);
1583
- }, [setProgress]);
1584
- react.useEffect(function () {
1585
- if (media !== null) {
1586
- var value = (media.currentTime || 0) > 0 && media.duration > 0 ? media.currentTime / media.duration : 0;
1587
- updateProgress(value);
1588
- setPlaying(!media.paused && media.readyState === 4);
1589
- } else {
1590
- updateProgress(0);
1591
- setPlaying(false);
1592
- }
1593
- }, [media, disabled, setPlaying]);
1594
- react.useEffect(function () {
1595
- if (media === null) {
1596
- return function () {};
1597
- }
1598
- function onResume(e) {
1599
- setPlaying(true);
1600
- var newProgress = media.currentTime / media.duration;
1601
- updateProgress(newProgress);
1602
- }
1603
- function onUpdate(e) {
1604
- setPlaying(!e.currentTarget.paused && !e.currentTarget.ended);
1605
- var newProgress = media.currentTime / media.duration;
1606
- updateProgress(newProgress);
1607
- }
1608
- function onPause() {
1609
- setPlaying(false);
1610
- var newProgress = media.currentTime / media.duration;
1611
- updateProgress(newProgress);
1612
- }
1613
- media.addEventListener('play', onResume);
1614
- media.addEventListener('playing', onResume);
1615
- media.addEventListener('seeked', onUpdate);
1616
- // media.addEventListener('timeupdate', onUpdate);
1617
- media.addEventListener('pause', onPause);
1618
- media.addEventListener('ended', onPause);
1619
- media.addEventListener('waiting', onPause);
1620
- media.addEventListener('stalled', onPause);
1621
- media.addEventListener('seeking', onPause);
1622
- media.addEventListener('suspend', onUpdate);
1623
- // if (media.paused) {
1624
- // onPause();
1625
- // } else {
1626
- // onResume();
1627
- // }
1628
- return function () {
1629
- media.removeEventListener('play', onResume);
1630
- media.removeEventListener('seeked', onResume);
1631
- media.removeEventListener('playing', onResume);
1632
- // media.removeEventListener('timeupdate', onResume);
1633
- media.removeEventListener('pause', onPause);
1634
- media.removeEventListener('ended', onPause);
1635
- media.removeEventListener('waiting', onPause);
1636
- media.removeEventListener('stalled', onPause);
1637
- media.removeEventListener('seeking', onPause);
1638
- media.removeEventListener('suspend', onUpdate);
1639
- };
1640
- }, [media, updateProgress, setPlaying, playing]);
1641
- react.useEffect(function () {
1642
- if (media === null || !playing || disabled) {
1643
- return function () {};
1644
- }
1645
- var handle;
1646
- var canceled = false;
1647
- function tick() {
1648
- if (canceled) {
1649
- return;
1650
- }
1651
- var newTime = Date.now() / 1000;
1652
- var elapsed = newTime - updateTimeRef.current;
1653
- var step = elapsed / duration;
1654
- var newProgress = realProgressRef.current < 0.1 ? media.currentTime / media.duration : realProgressRef.current + step;
1655
- updateProgress(newProgress);
1656
- handle = raf(tick);
1657
- }
1658
- tick();
1659
- return function () {
1660
- canceled = true;
1661
- raf.cancel(handle);
1662
- };
1663
- }, [media, playing, disabled, duration, updateProgress]);
1664
- return realProgressRef.current;
1665
- }
1666
-
1667
- function useMediaReady(element) {
1668
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1669
- _ref$id = _ref.id,
1670
- id = _ref$id === void 0 ? null : _ref$id;
1671
- var _useState = react.useState(element !== null && element.readyState > 0),
1672
- _useState2 = _slicedToArray(_useState, 2),
1673
- ready = _useState2[0],
1674
- setReady = _useState2[1];
1675
- var realReady = react.useRef(ready);
1676
- var lastIdRef = react.useRef(id);
1677
- var idChanged = lastIdRef.current !== id;
1678
- if (idChanged) {
1679
- realReady.current = false;
1680
- lastIdRef.current = id;
1681
- }
1682
- react.useEffect(function () {
1683
- if (element === null) {
1684
- return function () {};
1685
- }
1686
- function updateReady() {
1687
- var currentReady = ready;
1688
- if (element.readyState > 0 && !ready) {
1689
- setReady(true);
1690
- currentReady = true;
1691
- } else if (ready && element.readyState === 0) {
1692
- setReady(false);
1693
- currentReady = false;
1694
- }
1695
- realReady.current = currentReady;
1696
- return currentReady;
1697
- }
1698
- var currentReady = updateReady();
1699
- if (!currentReady) {
1700
- element.addEventListener('loadedmetadata', updateReady);
1701
- element.addEventListener('canplay', updateReady);
1702
- element.addEventListener('canplaythrough', updateReady);
1703
- }
1704
- return function () {
1705
- if (!currentReady) {
1706
- element.removeEventListener('loadedmetadata', updateReady);
1707
- element.removeEventListener('canplay', updateReady);
1708
- element.removeEventListener('canplaythrough', updateReady);
1709
- }
1710
- };
1711
- }, [element, id]);
1712
- return realReady.current;
1713
- }
1714
-
1715
- var useMediasParser = function useMediasParser() {
1716
- var screensManager = contexts.useScreensManager();
1717
- var fieldsManager = contexts.useFieldsManager();
1718
-
1719
- // Convert medias object to path
1720
- var parser = react.useMemo(function () {
1721
- return new core.MediasParser({
1722
- screensManager: screensManager,
1723
- fieldsManager: fieldsManager
1724
- });
1725
- }, [screensManager, fieldsManager]);
1726
- var toPath = react.useCallback(function (story) {
1727
- return parser.toPath(story);
1728
- }, [parser]);
1729
- var fromPath = react.useCallback(function (story) {
1730
- return parser.fromPath(story);
1731
- }, [parser]);
1732
- return {
1733
- toPath: toPath,
1734
- fromPath: fromPath,
1735
- parser: parser
1736
- };
1737
- };
1738
- var useMediasParser$1 = useMediasParser;
1739
-
1740
- function useMediaThumbnail(media) {
1741
- var file = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1742
- var thumbnail = react.useMemo(function () {
1743
- if (isObject(file)) {
1744
- return file;
1745
- }
1746
- var _ref = media || {},
1747
- _ref$thumbnail_url = _ref.thumbnail_url,
1748
- defaultThumbnailUrl = _ref$thumbnail_url === void 0 ? null : _ref$thumbnail_url,
1749
- _ref$files = _ref.files,
1750
- files = _ref$files === void 0 ? null : _ref$files,
1751
- _ref$metadata = _ref.metadata,
1752
- metadata = _ref$metadata === void 0 ? null : _ref$metadata;
1753
- var _ref2 = metadata || {},
1754
- mediaWidth = _ref2.width,
1755
- mediaHeight = _ref2.height;
1756
- var filesArray = utils.getMediaFilesAsArray(files) || [];
1757
- var _ref3 = (file !== null ? filesArray.find(function (_ref4) {
1758
- var handle = _ref4.handle;
1759
- return handle === file;
1760
- }) || null : null) || {},
1761
- _ref3$url = _ref3.url,
1762
- url = _ref3$url === void 0 ? null : _ref3$url;
1763
- return url !== null || defaultThumbnailUrl !== null ? {
1764
- url: url || defaultThumbnailUrl,
1765
- metadata: {
1766
- width: mediaWidth,
1767
- height: mediaHeight
1768
- }
1769
- } : null;
1770
- }, [media, file]);
1771
- return thumbnail;
1772
- }
1773
-
1774
- function useMediaWaveform(media) {
1775
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1776
- _ref$fake = _ref.fake,
1777
- fake = _ref$fake === void 0 ? false : _ref$fake,
1778
- _ref$reduceBufferFact = _ref.reduceBufferFactor,
1779
- reduceBufferFactor = _ref$reduceBufferFact === void 0 ? 100 : _ref$reduceBufferFact;
1780
- var _ref2 = media || {},
1781
- _ref2$url = _ref2.url,
1782
- url = _ref2$url === void 0 ? null : _ref2$url,
1783
- _ref2$metadata = _ref2.metadata,
1784
- metadata = _ref2$metadata === void 0 ? null : _ref2$metadata;
1785
- var _ref3 = metadata || {},
1786
- _ref3$waveform = _ref3.waveform,
1787
- waveform = _ref3$waveform === void 0 ? null : _ref3$waveform;
1788
- var _useState = react.useState(null),
1789
- _useState2 = _slicedToArray(_useState, 2),
1790
- audioLevels = _useState2[0],
1791
- setAudioLevels = _useState2[1];
1792
- react.useEffect(function () {
1793
- var canceled = false;
1794
- var AudioContext = typeof window !== 'undefined' ? window.AudioContext || window.webkitAudioContext : null;
1795
- if (waveform !== null) {
1796
- setAudioLevels(waveform.map(function (it) {
1797
- return (it + 256 / 2) / 256;
1798
- }));
1799
- } else if (url !== null && fake) {
1800
- var fakeLength = 1000;
1801
- setAudioLevels(_toConsumableArray(new Array(fakeLength)).map(function () {
1802
- return Math.random();
1803
- }));
1804
- } else if (url !== null && AudioContext !== null) {
1805
- fetch(url, {
1806
- mode: 'cors'
1807
- }).then(function (response) {
1808
- if (canceled) {
1809
- throw new Error('Audio loading canceled');
1810
- }
1811
- return response.arrayBuffer();
1812
- }).then(function (arrayBuffer) {
1813
- if (canceled) {
1814
- throw new Error('Audio loading canceled');
1815
- }
1816
- var audioCtx = new AudioContext();
1817
- return audioCtx.decodeAudioData(arrayBuffer);
1818
- }).then(function (buffer) {
1819
- var channelsCount = buffer.numberOfChannels;
1820
- if (channelsCount > 0) {
1821
- var leftChannelData = buffer.getChannelData(0);
1822
- setAudioLevels(leftChannelData.reduce(function (newArray, level) {
1823
- // eslint-disable-next-line no-param-reassign
1824
- newArray[newArray.length] = Math.abs(level);
1825
- return newArray;
1826
- }, []));
1827
- }
1828
- })["catch"](function (e) {
1829
- throw e;
1830
- });
1831
- }
1832
- return function () {
1833
- if (url === null) {
1834
- canceled = true;
1835
- }
1836
- };
1837
- }, [url, waveform, setAudioLevels, reduceBufferFactor, fake]);
1838
- return audioLevels;
1839
- }
1840
-
1841
- // const debug = createDebug('core:useParsedStory');
1842
-
1843
- var useParsedStory = function useParsedStory(story) {
1844
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1845
- _ref$disabled = _ref.disabled,
1846
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
1847
- _ref$withTheme = _ref.withTheme,
1848
- withTheme = _ref$withTheme === void 0 ? true : _ref$withTheme,
1849
- _ref$withMedias = _ref.withMedias,
1850
- withMedias = _ref$withMedias === void 0 ? true : _ref$withMedias,
1851
- _ref$withFonts = _ref.withFonts,
1852
- withFonts = _ref$withFonts === void 0 ? true : _ref$withFonts,
1853
- _ref$withMigrations = _ref.withMigrations,
1854
- withMigrations = _ref$withMigrations === void 0 ? true : _ref$withMigrations;
1855
- var screensManager = contexts.useScreensManager();
1856
- var fieldsManager = contexts.useFieldsManager();
1857
- var parser = react.useMemo(function () {
1858
- return new core.StoryParser({
1859
- screensManager: screensManager,
1860
- fieldsManager: fieldsManager,
1861
- fieldsPattern: screensManager.getFieldsPattern()
1862
- });
1863
- }, [screensManager, fieldsManager]);
1864
- var newStory = react.useMemo(function () {
1865
- if (disabled) {
1866
- return story;
1867
- }
1868
- return parser.parse(story, {
1869
- withMedias: withMedias,
1870
- withTheme: withTheme,
1871
- withFonts: withFonts,
1872
- withMigrations: withMigrations
1873
- });
1874
- }, [parser, disabled, withMedias, withTheme, withFonts, story]);
1875
- return newStory;
1876
- };
1877
- var useParsedStory$1 = useParsedStory;
1878
-
1879
- function useProgressSteps() {
1880
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1881
- _ref$disabled = _ref.disabled,
1882
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
1883
- currentTime = _ref.currentTime,
1884
- duration = _ref.duration,
1885
- _ref$onStep = _ref.onStep,
1886
- onStep = _ref$onStep === void 0 ? null : _ref$onStep,
1887
- _ref$steps = _ref.steps,
1888
- steps = _ref$steps === void 0 ? [0.1, 0.25, 0.5, 0.75, 0.9] : _ref$steps;
1889
- var progressStepsReached = react.useRef({});
1890
- react.useEffect(function () {
1891
- if (duration === 0 || disabled) {
1892
- return;
1893
- }
1894
- var progress = currentTime / duration;
1895
- var currentSteps = progressStepsReached.current;
1896
- var stepsToTrack = steps.filter(function (step) {
1897
- return progress > step && typeof currentSteps[step] === 'undefined';
1898
- });
1899
- stepsToTrack.forEach(function (step) {
1900
- if (onStep !== null) {
1901
- onStep(step);
1902
- }
1903
- currentSteps[step] = true;
1904
- });
1905
- }, [duration, currentTime, disabled]);
1906
- }
1907
-
1908
- var _excluded = ["width", "height"];
1909
- var devicePixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;
1910
- var useScreenSize = function useScreenSize(_ref) {
1911
- var _ref$width = _ref.width,
1912
- width = _ref$width === void 0 ? null : _ref$width,
1913
- _ref$height = _ref.height,
1914
- height = _ref$height === void 0 ? null : _ref$height,
1915
- _ref$landscape = _ref.landscape,
1916
- landscape = _ref$landscape === void 0 ? false : _ref$landscape,
1917
- _ref$menuOverScreen = _ref.menuOverScreen,
1918
- menuOverScreen = _ref$menuOverScreen === void 0 ? false : _ref$menuOverScreen,
1919
- _ref$screens = _ref.screens,
1920
- screens = _ref$screens === void 0 ? [] : _ref$screens,
1921
- _ref$mediaType = _ref.mediaType,
1922
- mediaType = _ref$mediaType === void 0 ? 'screen' : _ref$mediaType,
1923
- _ref$media = _ref.media,
1924
- providedMedia = _ref$media === void 0 ? null : _ref$media,
1925
- _ref$scale = _ref.scale,
1926
- scale = _ref$scale === void 0 ? null : _ref$scale;
1927
- var screenSize = react.useMemo(function () {
1928
- var media = providedMedia !== null ? providedMedia : {
1929
- type: mediaType,
1930
- width: "".concat(width, "px"),
1931
- height: "".concat(height, "px")
1932
- };
1933
- var matchingScreens = _toConsumableArray(screens).reverse().filter(function (_ref2) {
1934
- var _ref2$mediaQuery = _ref2.mediaQuery,
1935
- mediaQuery = _ref2$mediaQuery === void 0 ? null : _ref2$mediaQuery;
1936
- return mediaQuery === null || cssMediaquery.match(mediaQuery, media);
1937
- });
1938
- return {
1939
- screen: matchingScreens.length > 0 ? matchingScreens[0].name : null,
1940
- screens: _toConsumableArray(matchingScreens).reverse().map(function (_ref3) {
1941
- var name = _ref3.name;
1942
- return name;
1943
- }),
1944
- width: width,
1945
- height: height,
1946
- landscape: landscape,
1947
- menuOverScreen: menuOverScreen,
1948
- resolution: scale !== null ? scale * devicePixelRatio : devicePixelRatio
1949
- };
1950
- }, [screens, providedMedia, mediaType, width, height, landscape, menuOverScreen]);
1951
- return screenSize;
1952
- };
1953
- var useScreenSizeFromElement = function useScreenSizeFromElement() {
1954
- var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1955
- _ref4$width = _ref4.width,
1956
- width = _ref4$width === void 0 ? null : _ref4$width,
1957
- _ref4$height = _ref4.height,
1958
- height = _ref4$height === void 0 ? null : _ref4$height,
1959
- opts = _objectWithoutProperties(_ref4, _excluded);
1960
- var _useDimensionObserver = useDimensionObserver(),
1961
- ref = _useDimensionObserver.ref,
1962
- _useDimensionObserver2 = _useDimensionObserver.width,
1963
- calculatedWidth = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2,
1964
- _useDimensionObserver3 = _useDimensionObserver.height,
1965
- calculatedHeight = _useDimensionObserver3 === void 0 ? 0 : _useDimensionObserver3;
1966
- var fullWidth = width !== null ? width : calculatedWidth;
1967
- var fullHeight = height !== null ? height : calculatedHeight;
1968
- var _ref5 = opts || {},
1969
- _ref5$screenWidth = _ref5.screenWidth,
1970
- screenWidth = _ref5$screenWidth === void 0 ? 320 : _ref5$screenWidth,
1971
- _ref5$screenHeight = _ref5.screenHeight,
1972
- screenHeight = _ref5$screenHeight === void 0 ? 480 : _ref5$screenHeight,
1973
- _ref5$withoutMaxSize = _ref5.withoutMaxSize,
1974
- withoutMaxSize = _ref5$withoutMaxSize === void 0 ? false : _ref5$withoutMaxSize,
1975
- _ref5$landscapeMinHei = _ref5.landscapeMinHeight,
1976
- landscapeMinHeight = _ref5$landscapeMinHei === void 0 ? 600 : _ref5$landscapeMinHei,
1977
- _ref5$menuAlwaysOverS = _ref5.menuAlwaysOverScreen,
1978
- menuAlwaysOverScreen = _ref5$menuAlwaysOverS === void 0 ? true : _ref5$menuAlwaysOverS,
1979
- _ref5$landscapeMinRat = _ref5.landscapeMinRatio,
1980
- landscapeMinRatio = _ref5$landscapeMinRat === void 0 ? 2 / 3 : _ref5$landscapeMinRat,
1981
- _ref5$withoutScale = _ref5.withoutScale,
1982
- withoutScale = _ref5$withoutScale === void 0 ? false : _ref5$withoutScale;
1983
- var screenRatio = screenWidth / screenHeight;
1984
- var elementRatio = fullWidth / fullHeight;
1985
- var landscape = fullHeight > 0 && elementRatio > (landscapeMinRatio || screenRatio);
1986
- var landscapeWithMaxSize = landscape && !withoutMaxSize;
1987
- var finalWidth = fullWidth;
1988
- var finalHeight = fullHeight;
1989
- var menuOverScreen = !landscape;
1990
- if (landscapeWithMaxSize) {
1991
- if (fullHeight < landscapeMinHeight || menuAlwaysOverScreen) {
1992
- menuOverScreen = true;
1993
- } else {
1994
- finalHeight = fullHeight - 100;
1995
- }
1996
- finalWidth = Math.round(finalHeight * screenRatio);
1997
- }
1998
- if (finalWidth % 2 === 1) {
1999
- finalWidth -= 1;
2000
- }
2001
- if (finalHeight % 2 === 1) {
2002
- finalHeight -= 1;
2003
- }
2004
- var scale = finalWidth > 0 ? finalWidth / screenWidth : null;
2005
- var screenSize = useScreenSize(_objectSpread({
2006
- width: withoutScale || scale === null ? finalWidth : screenWidth,
2007
- height: withoutScale || scale === null ? finalHeight : finalHeight / scale,
2008
- landscape: landscape,
2009
- menuOverScreen: menuOverScreen,
2010
- scale: !withoutScale ? scale : null
2011
- }, opts));
2012
- return {
2013
- ref: ref,
2014
- fullWidth: fullWidth,
2015
- fullHeight: fullHeight,
2016
- screenSize: screenSize,
2017
- scale: !withoutScale ? scale : null,
2018
- resolution: !withoutScale ? scale * devicePixelRatio : devicePixelRatio
2019
- };
2020
- };
2021
- var getWindowSize = function getWindowSize() {
2022
- return {
2023
- width: typeof window !== 'undefined' ? window.innerWidth : null,
2024
- height: typeof window !== 'undefined' ? window.innerHæeight : null
2025
- };
2026
- };
2027
- var useScreenSizeFromWindow = function useScreenSizeFromWindow(opts) {
2028
- var _useState = react.useState(getWindowSize()),
2029
- _useState2 = _slicedToArray(_useState, 2),
2030
- windowSize = _useState2[0],
2031
- setWindowSize = _useState2[1];
2032
- react.useEffect(function () {
2033
- var onResize = function onResize() {
2034
- return setWindowSize(getWindowSize());
2035
- };
2036
- if (typeof window !== 'undefined') {
2037
- window.addEventListener('resize', onResize);
2038
- }
2039
- return function () {
2040
- if (typeof window !== 'undefined') {
2041
- window.removeEventListener('resize', onResize);
2042
- }
2043
- };
2044
- }, [setWindowSize]);
2045
- return useScreenSize(_objectSpread(_objectSpread({}, opts), windowSize));
2046
- };
2047
-
2048
- var getValueFromSpring = function getValueFromSpring(s) {
2049
- var _ref = s || {},
2050
- _ref$value = _ref.value,
2051
- v = _ref$value === void 0 ? null : _ref$value;
2052
- var _ref2 = v || {},
2053
- p = _ref2.progress;
2054
- return p;
2055
- };
2056
- function useSpringValue(wantedProgress, immediate, params) {
2057
- var _useState = react.useState(wantedProgress),
2058
- _useState2 = _slicedToArray(_useState, 2),
2059
- progress = _useState2[0],
2060
- setProgress = _useState2[1];
2061
- var onChange = react.useCallback(function (spring) {
2062
- return setProgress(getValueFromSpring(spring));
2063
- }, [setProgress]);
2064
- core$1.useSpring(_objectSpread({
2065
- progress: wantedProgress,
2066
- onChange: onChange,
2067
- immediate: immediate
2068
- }, params));
2069
- return immediate ? wantedProgress : progress;
2070
- }
2071
-
2072
- var useSwipe = function useSwipe() {
2073
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
2074
- _ref$width = _ref.width,
2075
- width = _ref$width === void 0 ? null : _ref$width,
2076
- _ref$items = _ref.items,
2077
- items = _ref$items === void 0 ? [] : _ref$items,
2078
- _ref$withSpring = _ref.withSpring,
2079
- withSpring = _ref$withSpring === void 0 ? true : _ref$withSpring,
2080
- _ref$swipeWidthThresh = _ref.swipeWidthThreshold,
2081
- swipeWidthThreshold = _ref$swipeWidthThresh === void 0 ? 3 : _ref$swipeWidthThresh,
2082
- _ref$animateScale = _ref.animateScale,
2083
- animateScale = _ref$animateScale === void 0 ? false : _ref$animateScale,
2084
- _ref$disabled = _ref.disabled,
2085
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
2086
- _ref$lockAxis = _ref.lockAxis,
2087
- lockAxis = _ref$lockAxis === void 0 ? false : _ref$lockAxis,
2088
- _ref$onSwipeStart = _ref.onSwipeStart,
2089
- onSwipeStart = _ref$onSwipeStart === void 0 ? null : _ref$onSwipeStart,
2090
- _ref$onSwipeEnd = _ref.onSwipeEnd,
2091
- onSwipeEnd = _ref$onSwipeEnd === void 0 ? null : _ref$onSwipeEnd,
2092
- _ref$onSwipeCancel = _ref.onSwipeCancel,
2093
- onSwipeCancel = _ref$onSwipeCancel === void 0 ? null : _ref$onSwipeCancel,
2094
- _ref$onTap = _ref.onTap,
2095
- onTap = _ref$onTap === void 0 ? null : _ref$onTap;
2096
- var swipingIndex = react.useRef(null);
2097
- var index = react.useRef(0);
2098
- var lockedAxis = react.useRef(null);
2099
- var hasWidth = width !== null;
2100
- var windowWidth = typeof window !== 'undefined' && !hasWidth ? window.innerWidth : null;
2101
- var currentWidth = hasWidth ? width : windowWidth;
2102
- var count = items.length;
2103
- var getItem = react.useCallback(function () {
2104
- var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
2105
- var idx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
2106
- var scale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
2107
- return {
2108
- x: x,
2109
- zIndex: idx,
2110
- scale: scale
2111
- };
2112
- });
2113
- var getItems = react.useCallback(function () {
2114
- var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
2115
- _ref2$down = _ref2.down,
2116
- down = _ref2$down === void 0 ? false : _ref2$down,
2117
- _ref2$mx = _ref2.mx,
2118
- mx = _ref2$mx === void 0 ? 0 : _ref2$mx;
2119
- return items.map(function (item, i) {
2120
- var x = disabled ? 0 : (i - index.current) * currentWidth + (down ? mx : 0);
2121
- var scale = !animateScale || disabled || !down ? 1 : 1 - Math.abs(mx) / currentWidth / 2;
2122
- return getItem(x, i, scale);
2123
- });
2124
- }, [disabled, items, index, currentWidth, animateScale]);
2125
-
2126
- // Initial items state
2127
- var _useSprings = core$1.useSprings(items.length, function (i) {
2128
- return {
2129
- x: disabled ? 0 : i * currentWidth,
2130
- y: 0,
2131
- zIndex: i,
2132
- config: _objectSpread({}, !withSpring ? {
2133
- duration: 1
2134
- } : null)
2135
- };
2136
- }),
2137
- _useSprings2 = _slicedToArray(_useSprings, 2),
2138
- itemsWithProps = _useSprings2[0],
2139
- set = _useSprings2[1];
2140
- var bind = react$1.useDrag(function (_ref3) {
2141
- var down = _ref3.down,
2142
- _ref3$movement = _slicedToArray(_ref3.movement, 2),
2143
- mx = _ref3$movement[0],
2144
- my = _ref3$movement[1],
2145
- _ref3$direction = _slicedToArray(_ref3.direction, 1),
2146
- xDir = _ref3$direction[0],
2147
- cancel = _ref3.cancel,
2148
- tap = _ref3.tap;
2149
- if (disabled) {
2150
- cancel();
2151
- return;
2152
- }
2153
- if (!down && swipingIndex.current === index.current) {
2154
- lockedAxis.current = null;
2155
- if (onSwipeCancel !== null) {
2156
- onSwipeCancel(index.current);
2157
- }
2158
- }
2159
-
2160
- // Block first and last moves
2161
- /*
2162
- if (down && index.current === items.length - 1 && xDir < 0) {
2163
- cancel();
2164
- return;
2165
- }
2166
- if (down && index.current === 0 && xDir > 0) {
2167
- cancel();
2168
- return;
2169
- }
2170
- */
2171
-
2172
- var movementX = !lockAxis || lockedAxis.current === 'x' ? mx : 0;
2173
- var movementY = !lockAxis || lockedAxis.current === 'y' ? my : 0;
2174
- if (down) {
2175
- // Snap to next slide
2176
- if (Math.abs(movementX) > currentWidth / swipeWidthThreshold) {
2177
- index.current = clamp(index.current + (xDir > 0 ? -1 : 1), 0, count - 1);
2178
- lockedAxis.current = null;
2179
- cancel();
2180
- if (onSwipeEnd !== null) {
2181
- onSwipeEnd(index.current);
2182
- }
2183
- return;
2184
- }
2185
- }
2186
- set(getItems({
2187
- down: down,
2188
- mx: movementX,
2189
- my: movementY
2190
- }));
2191
-
2192
- // saving current swiping index in a ref in order to have a section called only once when swipe just started or a tap was detected
2193
- if (swipingIndex.current !== index.current) {
2194
- if (down && !tap) {
2195
- if (onSwipeStart !== null) {
2196
- onSwipeStart(index.current);
2197
- }
2198
- }
2199
- if (!down && tap) {
2200
- if (onTap !== null) {
2201
- onTap();
2202
- }
2203
- }
2204
- }
2205
-
2206
- // lock swiping on axis from initial 3 pixels distance (Y axis requires to swipe down)
2207
- if (lockAxis && down && lockedAxis.current === null) {
2208
- var distanceX = Math.abs(mx);
2209
- var distanceY = Math.abs(my);
2210
- if (distanceX !== distanceY && (distanceY > 2 || distanceX > 2)) {
2211
- lockedAxis.current = distanceY > distanceX ? 'y' : 'x';
2212
- }
2213
- }
2214
- swipingIndex.current = down && !tap ? index.current : null;
2215
- }, {
2216
- filterTaps: true
2217
- });
2218
- var reset = react.useCallback(function () {
2219
- set(getItems());
2220
- }, [disabled, items, index, currentWidth]);
2221
- var setIndex = react.useCallback(function (idx) {
2222
- index.current = idx;
2223
- reset();
2224
- }, [reset]);
2225
-
2226
- // Reset on resize or others
2227
- react.useEffect(function () {
2228
- set(getItems());
2229
- }, [items, width, set, disabled]);
2230
- return {
2231
- items: itemsWithProps,
2232
- bind: bind,
2233
- index: index.current,
2234
- setIndex: setIndex
2235
- };
2236
- };
2237
-
2238
- var useThemeParser = function useThemeParser() {
2239
- var screensManager = contexts.useScreensManager();
2240
- var parser = react.useMemo(function () {
2241
- return new core.ThemeParser({
2242
- screensManager: screensManager
2243
- });
2244
- }, [screensManager]);
2245
- var parse = react.useCallback(function (story) {
2246
- return parser.parse(story);
2247
- }, [parser]);
2248
- return parse;
2249
- };
2250
- var useThemeParser$1 = useThemeParser;
2251
-
2252
- var getScreenOptions = function getScreenOptions(screenContext, opts) {
2253
- var _ref = screenContext || {},
2254
- _ref$data = _ref.data,
2255
- ctxData = _ref$data === void 0 ? null : _ref$data;
2256
- var _ref2 = ctxData || {},
2257
- _ref2$id = _ref2.id,
2258
- ctxScreenId = _ref2$id === void 0 ? null : _ref2$id,
2259
- ctxScreenType = _ref2.type;
2260
- var _ref3 = opts || {},
2261
- _ref3$screenId = _ref3.screenId,
2262
- optsScreenId = _ref3$screenId === void 0 ? null : _ref3$screenId,
2263
- _ref3$screenType = _ref3.screenType,
2264
- optsScreenType = _ref3$screenType === void 0 ? null : _ref3$screenType;
2265
- var screenId = ctxScreenId !== null ? ctxScreenId : optsScreenId;
2266
- var screenType = ctxScreenType !== null ? ctxScreenType : optsScreenType;
2267
- return {
2268
- screenId: screenId,
2269
- screenType: screenType
2270
- };
2271
- };
2272
- var hasTracking = function hasTracking(tracking) {
2273
- return typeof tracking !== 'undefined';
2274
- };
2275
- var useTrackScreenView = function useTrackScreenView() {
2276
- var tracking = contexts.useTracking();
2277
- if (!hasTracking(tracking)) {
2278
- return function () {};
2279
- }
2280
- return react.useCallback(function () {
2281
- var screen = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2282
- var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
2283
- if (screen !== null && index !== null) {
2284
- tracking.trackScreenView(screen, index);
2285
- }
2286
- }, []);
2287
- };
2288
- var useTrackScreenEvent = function useTrackScreenEvent() {
2289
- var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2290
- var tracking = contexts.useTracking();
2291
- if (!hasTracking(tracking)) {
2292
- return function () {};
2293
- }
2294
- var screenContext = contexts.useScreen();
2295
- if (screenContext.renderContext !== 'view') {
2296
- return function () {};
2297
- }
2298
- return react.useCallback(function () {
2299
- var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2300
- var label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
2301
- var opts = arguments.length > 2 ? arguments[2] : undefined;
2302
- if (type !== null && action !== null) {
2303
- tracking.trackEvent("screen_".concat(type), action, label, _objectSpread(_objectSpread({}, opts), getScreenOptions(screenContext, opts)));
2304
- }
2305
- }, [screenContext]);
2306
- };
2307
- var useTrackScreenMedia = function useTrackScreenMedia() {
2308
- var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2309
- var tracking = contexts.useTracking();
2310
- if (!hasTracking(tracking)) {
2311
- return function () {};
2312
- }
2313
- var screenContext = contexts.useScreen();
2314
- if (screenContext.renderContext !== 'view') {
2315
- return function () {};
2316
- }
2317
- return react.useCallback(function () {
2318
- var media = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2319
- var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
2320
- var opts = arguments.length > 2 ? arguments[2] : undefined;
2321
- if (type !== null && media !== null && action !== null) {
2322
- tracking.trackMedia("screen_".concat(type), media, action, _objectSpread(_objectSpread({}, opts), getScreenOptions(screenContext, opts)));
2323
- }
2324
- }, [screenContext]);
2325
- };
2326
- var useTrackEvent = function useTrackEvent() {
2327
- var tracking = contexts.useTracking();
2328
- if (!hasTracking(tracking)) {
2329
- return function () {};
2330
- }
2331
- return react.useCallback(function () {
2332
- var category = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2333
- var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
2334
- var label = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
2335
- var opts = arguments.length > 3 ? arguments[3] : undefined;
2336
- if (category !== null && action !== null) {
2337
- tracking.trackEvent(category, action, label, opts);
2338
- }
2339
- }, []);
2340
- };
2341
- var useTrackMedia = function useTrackMedia() {
2342
- var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2343
- var tracking = contexts.useTracking();
2344
- if (!hasTracking(tracking)) {
2345
- return function () {};
2346
- }
2347
- return react.useCallback(function () {
2348
- var media = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2349
- var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
2350
- var opts = arguments.length > 2 ? arguments[2] : undefined;
2351
- if (type !== null && media !== null && action !== null) {
2352
- tracking.trackMedia(type, media, action, opts);
2353
- }
2354
- }, []);
2355
- };
2356
-
2357
- var eventsManager = typeof window !== 'undefined' ? new core.EventsManager(window) : null;
2358
- var useWindowEvent = utils.createUseEvent(eventsManager);
2359
- var useWindowEvent$1 = useWindowEvent;
2360
-
2361
- exports.getObserver = getObserver;
2362
- exports.useActivityDetector = useActivityDetector;
2363
- exports.useAnimationFrame = useAnimationFrame$1;
2364
- exports.useDebounce = useDebounced$1;
2365
- exports.useDimensionObserver = useDimensionObserver;
2366
- exports.useDocumentEvent = useDocumentEvent$1;
2367
- exports.useDragProgress = useDragProgress;
2368
- exports.useForm = useForm$1;
2369
- exports.useFormTransition = useFormTransition$1;
2370
- exports.useFormattedDate = useFormattedDate;
2371
- exports.useFormattedTime = useFormattedTime;
2372
- exports.useFullscreen = useFullscreen$1;
2373
- exports.useIntersectionObserver = useIntersectionObserver;
2374
- exports.useIsVisible = useIsVisible$1;
2375
- exports.useLoadedFonts = useLoadedFonts$1;
2376
- exports.useLongPress = useLongPress$1;
2377
- exports.useMediaApi = useMediaApi$1;
2378
- exports.useMediaBuffering = useMediaBuffering$1;
2379
- exports.useMediaCurrentTime = useMediaCurrentTime;
2380
- exports.useMediaDuration = useMediaDuration;
2381
- exports.useMediaLoad = useMediaLoad;
2382
- exports.useMediaProgress = useMediaProgress;
2383
- exports.useMediaReady = useMediaReady;
2384
- exports.useMediaState = useMediaState$1;
2385
- exports.useMediaThumbnail = useMediaThumbnail;
2386
- exports.useMediaWaveform = useMediaWaveform;
2387
- exports.useMediasParser = useMediasParser$1;
2388
- exports.useObserver = useObserver;
2389
- exports.useParsedStory = useParsedStory$1;
2390
- exports.useProgressSteps = useProgressSteps;
2391
- exports.useResizeObserver = useResizeObserver;
2392
- exports.useScreenSizeFromElement = useScreenSizeFromElement;
2393
- exports.useScreenSizeFromWindow = useScreenSizeFromWindow;
2394
- exports.useSpringValue = useSpringValue;
2395
- exports.useSwipe = useSwipe;
2396
- exports.useThemeParser = useThemeParser$1;
2397
- exports.useTrackEvent = useTrackEvent;
2398
- exports.useTrackMedia = useTrackMedia;
2399
- exports.useTrackScreenEvent = useTrackScreenEvent;
2400
- exports.useTrackScreenMedia = useTrackScreenMedia;
2401
- exports.useTrackScreenView = useTrackScreenView;
2402
- exports.useWindowEvent = useWindowEvent$1;