@micromag/core 0.3.150 → 0.3.156
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/es/components.js +11 -30
- package/es/contexts.js +295 -70
- package/es/hooks.js +476 -120
- package/es/index.js +1 -1
- package/lib/components.js +10 -29
- package/lib/contexts.js +303 -70
- package/lib/hooks.js +484 -119
- package/lib/index.js +1 -1
- package/package.json +2 -2
package/es/hooks.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
2
|
+
import { useRef, useState, useEffect, useCallback, useMemo } from 'react';
|
|
2
3
|
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
3
4
|
import { useIntl } from 'react-intl';
|
|
4
5
|
import isString from 'lodash/isString';
|
|
@@ -9,9 +10,9 @@ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProper
|
|
|
9
10
|
import { useForm as useForm$1 } from '@folklore/forms';
|
|
10
11
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
11
12
|
import classNames from 'classnames';
|
|
12
|
-
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
13
13
|
import screenfull from 'screenfull';
|
|
14
14
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
15
|
+
import isArray from 'lodash/isArray';
|
|
15
16
|
import isObject from 'lodash/isObject';
|
|
16
17
|
import { useScreensManager, useFieldsManager, useTracking, useScreen } from '@micromag/core/contexts';
|
|
17
18
|
import { match } from 'css-mediaquery';
|
|
@@ -19,6 +20,58 @@ import { useSprings } from '@react-spring/core';
|
|
|
19
20
|
import { useDrag } from '@use-gesture/react';
|
|
20
21
|
import clamp from 'lodash/clamp';
|
|
21
22
|
|
|
23
|
+
function useActivityDetector() {
|
|
24
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
25
|
+
_ref$disabled = _ref.disabled,
|
|
26
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
27
|
+
_ref$timeout = _ref.timeout,
|
|
28
|
+
timeoutDelay = _ref$timeout === void 0 ? 2000 : _ref$timeout;
|
|
29
|
+
|
|
30
|
+
var ref = useRef(null);
|
|
31
|
+
|
|
32
|
+
var _useState = useState(false),
|
|
33
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
34
|
+
detected = _useState2[0],
|
|
35
|
+
setDetected = _useState2[1];
|
|
36
|
+
|
|
37
|
+
useEffect(function () {
|
|
38
|
+
var _ref$current = ref.current,
|
|
39
|
+
element = _ref$current === void 0 ? null : _ref$current;
|
|
40
|
+
|
|
41
|
+
if (element === null || disabled) {
|
|
42
|
+
return function () {};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
var timeout = null;
|
|
46
|
+
|
|
47
|
+
function onMove() {
|
|
48
|
+
if (timeout !== null) {
|
|
49
|
+
clearTimeout(timeout);
|
|
50
|
+
timeout = null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
setDetected(true);
|
|
54
|
+
timeout = setTimeout(function () {
|
|
55
|
+
setDetected(false);
|
|
56
|
+
}, timeoutDelay);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
element.addEventListener('mousemove', onMove);
|
|
60
|
+
return function () {
|
|
61
|
+
if (timeout !== null) {
|
|
62
|
+
clearTimeout(timeout);
|
|
63
|
+
timeout = null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
element.removeEventListener('mousemove', onMove);
|
|
67
|
+
};
|
|
68
|
+
}, [disabled, timeoutDelay]);
|
|
69
|
+
return {
|
|
70
|
+
ref: ref,
|
|
71
|
+
detected: detected
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
22
75
|
var useAnimationFrame = function useAnimationFrame(onFrame) {
|
|
23
76
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
24
77
|
_ref$disabled = _ref.disabled,
|
|
@@ -113,7 +166,7 @@ var useFormattedTime = function useFormattedTime() {
|
|
|
113
166
|
var eventsManager$1 = typeof document !== 'undefined' ? new EventsManager(document) : null;
|
|
114
167
|
var useDocumentEvent = createUseEvent(eventsManager$1);
|
|
115
168
|
|
|
116
|
-
var _excluded$
|
|
169
|
+
var _excluded$2 = ["fields", "injectInFields"],
|
|
117
170
|
_excluded2 = ["fields"];
|
|
118
171
|
|
|
119
172
|
var useForm = function useForm() {
|
|
@@ -122,7 +175,7 @@ var useForm = function useForm() {
|
|
|
122
175
|
providedFields = _ref$fields === void 0 ? [] : _ref$fields,
|
|
123
176
|
_ref$injectInFields = _ref.injectInFields,
|
|
124
177
|
injectInFields = _ref$injectInFields === void 0 ? false : _ref$injectInFields,
|
|
125
|
-
opts = _objectWithoutProperties(_ref, _excluded$
|
|
178
|
+
opts = _objectWithoutProperties(_ref, _excluded$2);
|
|
126
179
|
|
|
127
180
|
var fieldsNames = useMemo(function () {
|
|
128
181
|
return providedFields.length > 0 ? providedFields.map(function (_ref2) {
|
|
@@ -229,6 +282,8 @@ var useFullscreen = function useFullscreen(element) {
|
|
|
229
282
|
};
|
|
230
283
|
};
|
|
231
284
|
|
|
285
|
+
var _excluded$1 = ["entry"];
|
|
286
|
+
|
|
232
287
|
var buildThresholdArray = function buildThresholdArray() {
|
|
233
288
|
return [0, 1.0];
|
|
234
289
|
};
|
|
@@ -470,6 +525,35 @@ var useResizeObserver = function useResizeObserver() {
|
|
|
470
525
|
disabled: disabled
|
|
471
526
|
}, resizeObserverInitialEntry);
|
|
472
527
|
};
|
|
528
|
+
var useDimensionObserver = function useDimensionObserver() {
|
|
529
|
+
var _useResizeObserver = useResizeObserver.apply(void 0, arguments),
|
|
530
|
+
entry = _useResizeObserver.entry,
|
|
531
|
+
rest = _objectWithoutProperties(_useResizeObserver, _excluded$1);
|
|
532
|
+
|
|
533
|
+
var _ref5 = entry || {},
|
|
534
|
+
_ref5$contentRect = _ref5.contentRect,
|
|
535
|
+
contentRect = _ref5$contentRect === void 0 ? null : _ref5$contentRect,
|
|
536
|
+
_ref5$borderBoxSize = _ref5.borderBoxSize,
|
|
537
|
+
borderBoxSize = _ref5$borderBoxSize === void 0 ? null : _ref5$borderBoxSize;
|
|
538
|
+
|
|
539
|
+
var _ref6 = contentRect || {},
|
|
540
|
+
_ref6$width = _ref6.width,
|
|
541
|
+
width = _ref6$width === void 0 ? 0 : _ref6$width,
|
|
542
|
+
_ref6$height = _ref6.height,
|
|
543
|
+
height = _ref6$height === void 0 ? 0 : _ref6$height;
|
|
544
|
+
|
|
545
|
+
var _ref7 = isArray(borderBoxSize) ? borderBoxSize[0] || {} : borderBoxSize || {},
|
|
546
|
+
_ref7$blockSize = _ref7.blockSize,
|
|
547
|
+
blockSize = _ref7$blockSize === void 0 ? null : _ref7$blockSize,
|
|
548
|
+
_ref7$inlineSize = _ref7.inlineSize,
|
|
549
|
+
inlineSize = _ref7$inlineSize === void 0 ? null : _ref7$inlineSize;
|
|
550
|
+
|
|
551
|
+
return _objectSpread(_objectSpread({}, rest), {}, {
|
|
552
|
+
entry: entry,
|
|
553
|
+
width: inlineSize || width,
|
|
554
|
+
height: blockSize || height
|
|
555
|
+
});
|
|
556
|
+
};
|
|
473
557
|
|
|
474
558
|
var useIsVisible = function useIsVisible() {
|
|
475
559
|
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
@@ -718,16 +802,14 @@ var useMediaApi = function useMediaApi() {
|
|
|
718
802
|
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
719
803
|
_ref$url = _ref.url,
|
|
720
804
|
url = _ref$url === void 0 ? null : _ref$url,
|
|
721
|
-
_ref$initialMuted = _ref.initialMuted,
|
|
722
|
-
initialMuted = _ref$initialMuted === void 0 ? false : _ref$initialMuted,
|
|
723
805
|
_ref$onTimeUpdate = _ref.onTimeUpdate,
|
|
724
806
|
onTimeUpdate = _ref$onTimeUpdate === void 0 ? null : _ref$onTimeUpdate,
|
|
725
807
|
_ref$onProgressStep = _ref.onProgressStep,
|
|
726
808
|
onProgressStep = _ref$onProgressStep === void 0 ? null : _ref$onProgressStep,
|
|
727
|
-
_ref$onDurationChange = _ref.
|
|
728
|
-
|
|
729
|
-
_ref$
|
|
730
|
-
|
|
809
|
+
_ref$onDurationChange = _ref.onDurationChange,
|
|
810
|
+
onDurationChange = _ref$onDurationChange === void 0 ? null : _ref$onDurationChange,
|
|
811
|
+
_ref$onVolumeChange = _ref.onVolumeChange,
|
|
812
|
+
onVolumeChange = _ref$onVolumeChange === void 0 ? null : _ref$onVolumeChange,
|
|
731
813
|
_ref$onPlay = _ref.onPlay,
|
|
732
814
|
onPlay = _ref$onPlay === void 0 ? null : _ref$onPlay,
|
|
733
815
|
_ref$onPause = _ref.onPause,
|
|
@@ -736,8 +818,8 @@ var useMediaApi = function useMediaApi() {
|
|
|
736
818
|
onEnded = _ref$onEnded === void 0 ? null : _ref$onEnded,
|
|
737
819
|
_ref$onSeeked = _ref.onSeeked,
|
|
738
820
|
onSeeked = _ref$onSeeked === void 0 ? null : _ref$onSeeked,
|
|
739
|
-
_ref$
|
|
740
|
-
|
|
821
|
+
_ref$onSuspend = _ref.onSuspend,
|
|
822
|
+
onSuspend = _ref$onSuspend === void 0 ? null : _ref$onSuspend,
|
|
741
823
|
_ref$onLoadStart = _ref.onLoadStart,
|
|
742
824
|
onLoadStart = _ref$onLoadStart === void 0 ? null : _ref$onLoadStart,
|
|
743
825
|
_ref$onCanPlayThough = _ref.onCanPlayThough,
|
|
@@ -751,45 +833,40 @@ var useMediaApi = function useMediaApi() {
|
|
|
751
833
|
|
|
752
834
|
var ref = useRef(null);
|
|
753
835
|
|
|
754
|
-
var _useState = useState(
|
|
836
|
+
var _useState = useState(null),
|
|
755
837
|
_useState2 = _slicedToArray(_useState, 2),
|
|
756
|
-
|
|
757
|
-
|
|
838
|
+
currentTime = _useState2[0],
|
|
839
|
+
setCurrentTime = _useState2[1];
|
|
758
840
|
|
|
759
841
|
var _useState3 = useState(null),
|
|
760
842
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
761
|
-
|
|
762
|
-
|
|
843
|
+
duration = _useState4[0],
|
|
844
|
+
setDuration = _useState4[1];
|
|
763
845
|
|
|
764
|
-
var _useState5 = useState(
|
|
846
|
+
var _useState5 = useState(false),
|
|
765
847
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
766
|
-
|
|
767
|
-
|
|
848
|
+
playing = _useState6[0],
|
|
849
|
+
setPlaying = _useState6[1];
|
|
768
850
|
|
|
769
851
|
var _useState7 = useState(false),
|
|
770
852
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
771
|
-
|
|
772
|
-
|
|
853
|
+
ready = _useState8[0],
|
|
854
|
+
setReady = _useState8[1];
|
|
773
855
|
|
|
774
856
|
var _useState9 = useState(false),
|
|
775
857
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
776
|
-
|
|
777
|
-
|
|
858
|
+
dataReady = _useState10[0],
|
|
859
|
+
setDataReady = _useState10[1];
|
|
778
860
|
|
|
779
|
-
var _useState11 = useState(
|
|
861
|
+
var _useState11 = useState(true),
|
|
780
862
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
781
|
-
|
|
782
|
-
|
|
863
|
+
initialPlay = _useState12[0],
|
|
864
|
+
setInitialPlay = _useState12[1];
|
|
783
865
|
|
|
784
|
-
var _useState13 = useState(
|
|
866
|
+
var _useState13 = useState(false),
|
|
785
867
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
var _useState15 = useState(false),
|
|
790
|
-
_useState16 = _slicedToArray(_useState15, 2),
|
|
791
|
-
suspended = _useState16[0],
|
|
792
|
-
setSuspended = _useState16[1];
|
|
868
|
+
suspended = _useState14[0],
|
|
869
|
+
setSuspended = _useState14[1];
|
|
793
870
|
|
|
794
871
|
var progressStepsReached = useRef({});
|
|
795
872
|
var paused = !playing; // Exposed methods
|
|
@@ -808,17 +885,6 @@ var useMediaApi = function useMediaApi() {
|
|
|
808
885
|
media.pause();
|
|
809
886
|
}
|
|
810
887
|
}, []);
|
|
811
|
-
var togglePlay = useCallback(function () {
|
|
812
|
-
var media = ref.current;
|
|
813
|
-
|
|
814
|
-
if (media !== null) {
|
|
815
|
-
if (playing) {
|
|
816
|
-
media.pause();
|
|
817
|
-
} else {
|
|
818
|
-
media.play();
|
|
819
|
-
}
|
|
820
|
-
}
|
|
821
|
-
}, [playing]);
|
|
822
888
|
var stop = useCallback(function () {
|
|
823
889
|
var media = ref.current;
|
|
824
890
|
|
|
@@ -833,28 +899,19 @@ var useMediaApi = function useMediaApi() {
|
|
|
833
899
|
if (media !== null) {
|
|
834
900
|
media.currentTime = time;
|
|
835
901
|
}
|
|
836
|
-
}, []);
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
}
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
}
|
|
850
|
-
}, []);
|
|
851
|
-
var toggleMute = useCallback(function () {
|
|
852
|
-
var media = ref.current;
|
|
853
|
-
|
|
854
|
-
if (media !== null) {
|
|
855
|
-
media.muted = !muted;
|
|
856
|
-
}
|
|
857
|
-
}, [muted]); // Media events callbacks
|
|
902
|
+
}, []); // const mute = useCallback(() => {
|
|
903
|
+
// const { current: media } = ref;
|
|
904
|
+
// if (media !== null) {
|
|
905
|
+
// media.muted = true;
|
|
906
|
+
// }
|
|
907
|
+
// }, []);
|
|
908
|
+
// const unMute = useCallback(() => {
|
|
909
|
+
// const { current: media } = ref;
|
|
910
|
+
// if (media !== null) {
|
|
911
|
+
// media.muted = false;
|
|
912
|
+
// }
|
|
913
|
+
// }, []);
|
|
914
|
+
// Media events callbacks
|
|
858
915
|
|
|
859
916
|
var onCustomPlay = useCallback(function () {
|
|
860
917
|
if (onPlay !== null) {
|
|
@@ -915,10 +972,10 @@ var useMediaApi = function useMediaApi() {
|
|
|
915
972
|
var eventMedia = e.currentTarget;
|
|
916
973
|
setDuration(eventMedia.duration);
|
|
917
974
|
|
|
918
|
-
if (
|
|
919
|
-
|
|
975
|
+
if (onDurationChange !== null) {
|
|
976
|
+
onDurationChange(eventMedia.duration);
|
|
920
977
|
}
|
|
921
|
-
}, [setDuration,
|
|
978
|
+
}, [setDuration, onDurationChange]);
|
|
922
979
|
var onCustomSeeked = useCallback(function (e) {
|
|
923
980
|
var eventMedia = e.currentTarget;
|
|
924
981
|
|
|
@@ -927,13 +984,12 @@ var useMediaApi = function useMediaApi() {
|
|
|
927
984
|
}
|
|
928
985
|
}, [onSeeked]);
|
|
929
986
|
var onCustomVolumeChange = useCallback(function (e) {
|
|
930
|
-
var eventMedia = e.currentTarget;
|
|
931
|
-
setMuted(eventMedia.muted);
|
|
987
|
+
var eventMedia = e.currentTarget; // setMuted(eventMedia.muted);
|
|
932
988
|
|
|
933
|
-
if (
|
|
934
|
-
|
|
989
|
+
if (onVolumeChange !== null) {
|
|
990
|
+
onVolumeChange(eventMedia.volume);
|
|
935
991
|
}
|
|
936
|
-
}, [
|
|
992
|
+
}, [onVolumeChange]);
|
|
937
993
|
var onCustomLoadStart = useCallback(function () {
|
|
938
994
|
if (onLoadStart !== null) {
|
|
939
995
|
onLoadStart();
|
|
@@ -970,8 +1026,8 @@ var useMediaApi = function useMediaApi() {
|
|
|
970
1026
|
var onCustomSuspended = useCallback(function () {
|
|
971
1027
|
setSuspended(true);
|
|
972
1028
|
|
|
973
|
-
if (
|
|
974
|
-
|
|
1029
|
+
if (onSuspend !== null) {
|
|
1030
|
+
onSuspend();
|
|
975
1031
|
}
|
|
976
1032
|
}, [setSuspended, onSuspended]);
|
|
977
1033
|
useEffect(function () {
|
|
@@ -1080,13 +1136,8 @@ var useMediaApi = function useMediaApi() {
|
|
|
1080
1136
|
ref: ref,
|
|
1081
1137
|
play: play,
|
|
1082
1138
|
pause: pause,
|
|
1083
|
-
togglePlay: togglePlay,
|
|
1084
1139
|
stop: stop,
|
|
1085
1140
|
seek: seek,
|
|
1086
|
-
mute: mute,
|
|
1087
|
-
unMute: unMute,
|
|
1088
|
-
toggleMute: toggleMute,
|
|
1089
|
-
muted: muted,
|
|
1090
1141
|
currentTime: currentTime,
|
|
1091
1142
|
duration: duration,
|
|
1092
1143
|
playing: playing,
|
|
@@ -1097,6 +1148,190 @@ var useMediaApi = function useMediaApi() {
|
|
|
1097
1148
|
};
|
|
1098
1149
|
};
|
|
1099
1150
|
|
|
1151
|
+
function useMediaCurrentTime(element) {
|
|
1152
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1153
|
+
_ref$id = _ref.id,
|
|
1154
|
+
id = _ref$id === void 0 ? null : _ref$id,
|
|
1155
|
+
_ref$disabled = _ref.disabled,
|
|
1156
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
1157
|
+
_ref$updateInterval = _ref.updateInterval,
|
|
1158
|
+
updateInterval = _ref$updateInterval === void 0 ? 1000 : _ref$updateInterval,
|
|
1159
|
+
_ref$onUpdate = _ref.onUpdate,
|
|
1160
|
+
customOnUpdate = _ref$onUpdate === void 0 ? null : _ref$onUpdate;
|
|
1161
|
+
|
|
1162
|
+
var _useState = useState(0),
|
|
1163
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1164
|
+
currentTime = _useState2[0],
|
|
1165
|
+
setCurrentTime = _useState2[1];
|
|
1166
|
+
|
|
1167
|
+
var realCurrentTime = useRef(currentTime);
|
|
1168
|
+
var lastIdRef = useRef(id);
|
|
1169
|
+
var idChanged = lastIdRef.current !== id;
|
|
1170
|
+
|
|
1171
|
+
if (idChanged) {
|
|
1172
|
+
realCurrentTime.current = 0;
|
|
1173
|
+
lastIdRef.current = id;
|
|
1174
|
+
} // Check time update
|
|
1175
|
+
|
|
1176
|
+
|
|
1177
|
+
useEffect(function () {
|
|
1178
|
+
if (disabled || element === null) {
|
|
1179
|
+
return function () {};
|
|
1180
|
+
}
|
|
1181
|
+
|
|
1182
|
+
var canceled = false;
|
|
1183
|
+
|
|
1184
|
+
var updateTime = function updateTime(time) {
|
|
1185
|
+
if (canceled) {
|
|
1186
|
+
return;
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
realCurrentTime.current = time;
|
|
1190
|
+
setCurrentTime(time);
|
|
1191
|
+
|
|
1192
|
+
if (customOnUpdate !== null) {
|
|
1193
|
+
customOnUpdate(time);
|
|
1194
|
+
}
|
|
1195
|
+
};
|
|
1196
|
+
|
|
1197
|
+
var interval = setInterval(function () {
|
|
1198
|
+
var time = element.currentTime;
|
|
1199
|
+
|
|
1200
|
+
if (typeof time.then !== 'undefined') {
|
|
1201
|
+
time.then(updateTime);
|
|
1202
|
+
} else {
|
|
1203
|
+
updateTime(time);
|
|
1204
|
+
}
|
|
1205
|
+
}, updateInterval);
|
|
1206
|
+
return function () {
|
|
1207
|
+
canceled = true;
|
|
1208
|
+
clearInterval(interval);
|
|
1209
|
+
};
|
|
1210
|
+
}, [id, element, setCurrentTime, disabled, updateInterval]);
|
|
1211
|
+
return realCurrentTime.current;
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
function useMediaDuration(element) {
|
|
1215
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1216
|
+
_ref$id = _ref.id,
|
|
1217
|
+
id = _ref$id === void 0 ? null : _ref$id;
|
|
1218
|
+
|
|
1219
|
+
var _useState = useState(element !== null ? element.duration || 0 : 0),
|
|
1220
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1221
|
+
duration = _useState2[0],
|
|
1222
|
+
setDuration = _useState2[1];
|
|
1223
|
+
|
|
1224
|
+
var realDuration = useRef(duration);
|
|
1225
|
+
var lastIdRef = useRef(id);
|
|
1226
|
+
var idChanged = lastIdRef.current !== id;
|
|
1227
|
+
|
|
1228
|
+
if (idChanged) {
|
|
1229
|
+
realDuration.current = element !== null ? element.duration || 0 : 0;
|
|
1230
|
+
lastIdRef.current = id;
|
|
1231
|
+
}
|
|
1232
|
+
|
|
1233
|
+
useEffect(function () {
|
|
1234
|
+
if (element === null) {
|
|
1235
|
+
return function () {};
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
function updateDuration() {
|
|
1239
|
+
realDuration.current = element.duration || 0;
|
|
1240
|
+
setDuration(element.duration || 0);
|
|
1241
|
+
}
|
|
1242
|
+
|
|
1243
|
+
updateDuration();
|
|
1244
|
+
element.addEventListener('loadedmetadata', updateDuration);
|
|
1245
|
+
element.addEventListener('durationchange', updateDuration);
|
|
1246
|
+
return function () {
|
|
1247
|
+
element.removeEventListener('loadedmetadata', updateDuration);
|
|
1248
|
+
element.removeEventListener('durationchange', updateDuration);
|
|
1249
|
+
};
|
|
1250
|
+
}, [element, id, setDuration]);
|
|
1251
|
+
return realDuration.current;
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
function useMediaLoad(element) {
|
|
1255
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1256
|
+
_ref$preload = _ref.preload,
|
|
1257
|
+
preload = _ref$preload === void 0 ? 'auto' : _ref$preload,
|
|
1258
|
+
_ref$shouldLoad = _ref.shouldLoad,
|
|
1259
|
+
shouldLoad = _ref$shouldLoad === void 0 ? false : _ref$shouldLoad;
|
|
1260
|
+
|
|
1261
|
+
var firstPreloadRef = useRef(preload);
|
|
1262
|
+
var firstShouldLoadRef = useRef(shouldLoad);
|
|
1263
|
+
var hasLoadedRef = useRef(preload !== 'none' && preload !== 'metadata' && shouldLoad);
|
|
1264
|
+
useEffect(function () {
|
|
1265
|
+
var canLoad = preload !== 'none' && preload !== 'metadata' && shouldLoad; // @todo
|
|
1266
|
+
|
|
1267
|
+
var preloadHasChanged = firstPreloadRef.current !== preload;
|
|
1268
|
+
var shouldLoadHasChanged = firstShouldLoadRef.current !== shouldLoad;
|
|
1269
|
+
|
|
1270
|
+
if (canLoad && (preloadHasChanged || shouldLoadHasChanged) && !hasLoadedRef.current && element !== null && typeof element.load !== 'undefined') {
|
|
1271
|
+
hasLoadedRef.current = true;
|
|
1272
|
+
element.load();
|
|
1273
|
+
}
|
|
1274
|
+
}, [element, shouldLoad, preload]);
|
|
1275
|
+
}
|
|
1276
|
+
|
|
1277
|
+
function useMediaReady(element) {
|
|
1278
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1279
|
+
_ref$id = _ref.id,
|
|
1280
|
+
id = _ref$id === void 0 ? null : _ref$id;
|
|
1281
|
+
|
|
1282
|
+
var _useState = useState(element !== null && element.readyState > 0),
|
|
1283
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1284
|
+
ready = _useState2[0],
|
|
1285
|
+
setReady = _useState2[1];
|
|
1286
|
+
|
|
1287
|
+
var realReady = useRef(ready);
|
|
1288
|
+
var lastIdRef = useRef(id);
|
|
1289
|
+
var idChanged = lastIdRef.current !== id;
|
|
1290
|
+
|
|
1291
|
+
if (idChanged) {
|
|
1292
|
+
realReady.current = false;
|
|
1293
|
+
lastIdRef.current = id;
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1296
|
+
useEffect(function () {
|
|
1297
|
+
if (element === null) {
|
|
1298
|
+
return function () {};
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
function updateReady() {
|
|
1302
|
+
var currentReady = ready;
|
|
1303
|
+
|
|
1304
|
+
if (element.readyState > 0 && !ready) {
|
|
1305
|
+
setReady(true);
|
|
1306
|
+
currentReady = true;
|
|
1307
|
+
} else if (ready && element.readyState === 0) {
|
|
1308
|
+
setReady(false);
|
|
1309
|
+
currentReady = false;
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
realReady.current = currentReady;
|
|
1313
|
+
return currentReady;
|
|
1314
|
+
}
|
|
1315
|
+
|
|
1316
|
+
var currentReady = updateReady();
|
|
1317
|
+
|
|
1318
|
+
if (!currentReady) {
|
|
1319
|
+
element.addEventListener('loadedmetadata', updateReady);
|
|
1320
|
+
element.addEventListener('canplay', updateReady);
|
|
1321
|
+
element.addEventListener('canplaythrough', updateReady);
|
|
1322
|
+
}
|
|
1323
|
+
|
|
1324
|
+
return function () {
|
|
1325
|
+
if (!currentReady) {
|
|
1326
|
+
element.removeEventListener('loadedmetadata', updateReady);
|
|
1327
|
+
element.removeEventListener('canplay', updateReady);
|
|
1328
|
+
element.removeEventListener('canplaythrough', updateReady);
|
|
1329
|
+
}
|
|
1330
|
+
};
|
|
1331
|
+
}, [element, id]);
|
|
1332
|
+
return realReady.current;
|
|
1333
|
+
}
|
|
1334
|
+
|
|
1100
1335
|
var useMediasParser = function useMediasParser() {
|
|
1101
1336
|
var screensManager = useScreensManager();
|
|
1102
1337
|
var fieldsManager = useFieldsManager(); // Convert medias object to path
|
|
@@ -1122,25 +1357,117 @@ var useMediasParser = function useMediasParser() {
|
|
|
1122
1357
|
|
|
1123
1358
|
function useMediaThumbnail(media) {
|
|
1124
1359
|
var file = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
1360
|
+
var thumbnail = useMemo(function () {
|
|
1361
|
+
if (isObject(file)) {
|
|
1362
|
+
return file;
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
var _ref = media || {},
|
|
1366
|
+
_ref$thumbnail_url = _ref.thumbnail_url,
|
|
1367
|
+
defaultThumbnailUrl = _ref$thumbnail_url === void 0 ? null : _ref$thumbnail_url,
|
|
1368
|
+
_ref$files = _ref.files,
|
|
1369
|
+
files = _ref$files === void 0 ? null : _ref$files,
|
|
1370
|
+
_ref$metadata = _ref.metadata,
|
|
1371
|
+
metadata = _ref$metadata === void 0 ? null : _ref$metadata;
|
|
1125
1372
|
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
_ref$files = _ref.files,
|
|
1130
|
-
files = _ref$files === void 0 ? null : _ref$files;
|
|
1373
|
+
var _ref2 = metadata || {},
|
|
1374
|
+
mediaWidth = _ref2.width,
|
|
1375
|
+
mediaHeight = _ref2.height;
|
|
1131
1376
|
|
|
1132
|
-
var thumbnailUrl = useMemo(function () {
|
|
1133
1377
|
var filesArray = getMediaFilesAsArray(files) || [];
|
|
1134
1378
|
|
|
1135
|
-
var
|
|
1136
|
-
var handle =
|
|
1379
|
+
var _ref3 = (file !== null ? filesArray.find(function (_ref4) {
|
|
1380
|
+
var handle = _ref4.handle;
|
|
1137
1381
|
return handle === file;
|
|
1138
1382
|
}) || null : null) || {},
|
|
1139
|
-
url =
|
|
1383
|
+
_ref3$url = _ref3.url,
|
|
1384
|
+
url = _ref3$url === void 0 ? null : _ref3$url;
|
|
1385
|
+
|
|
1386
|
+
return url !== null || defaultThumbnailUrl !== null ? {
|
|
1387
|
+
url: url || defaultThumbnailUrl,
|
|
1388
|
+
metadata: {
|
|
1389
|
+
width: mediaWidth,
|
|
1390
|
+
height: mediaHeight
|
|
1391
|
+
}
|
|
1392
|
+
} : null;
|
|
1393
|
+
}, [media, file]);
|
|
1394
|
+
return thumbnail;
|
|
1395
|
+
}
|
|
1140
1396
|
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1397
|
+
function useMediaWaveform(media) {
|
|
1398
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1399
|
+
_ref$fake = _ref.fake,
|
|
1400
|
+
fake = _ref$fake === void 0 ? false : _ref$fake,
|
|
1401
|
+
_ref$reduceBufferFact = _ref.reduceBufferFactor,
|
|
1402
|
+
reduceBufferFactor = _ref$reduceBufferFact === void 0 ? 100 : _ref$reduceBufferFact;
|
|
1403
|
+
|
|
1404
|
+
var _ref2 = media || {},
|
|
1405
|
+
_ref2$url = _ref2.url,
|
|
1406
|
+
url = _ref2$url === void 0 ? null : _ref2$url,
|
|
1407
|
+
_ref2$metadata = _ref2.metadata,
|
|
1408
|
+
metadata = _ref2$metadata === void 0 ? null : _ref2$metadata;
|
|
1409
|
+
|
|
1410
|
+
var _ref3 = metadata || {},
|
|
1411
|
+
_ref3$waveform = _ref3.waveform,
|
|
1412
|
+
waveform = _ref3$waveform === void 0 ? null : _ref3$waveform;
|
|
1413
|
+
|
|
1414
|
+
var _useState = useState(null),
|
|
1415
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1416
|
+
audioLevels = _useState2[0],
|
|
1417
|
+
setAudioLevels = _useState2[1];
|
|
1418
|
+
|
|
1419
|
+
useEffect(function () {
|
|
1420
|
+
var canceled = false;
|
|
1421
|
+
var AudioContext = typeof window !== 'undefined' ? window.AudioContext || window.webkitAudioContext : null;
|
|
1422
|
+
|
|
1423
|
+
if (waveform !== null) {
|
|
1424
|
+
setAudioLevels(waveform.map(function (it) {
|
|
1425
|
+
return (it + 256 / 2) / 256;
|
|
1426
|
+
}));
|
|
1427
|
+
} else if (url !== null && fake) {
|
|
1428
|
+
var fakeLength = 1000;
|
|
1429
|
+
setAudioLevels(_toConsumableArray(new Array(fakeLength)).map(function () {
|
|
1430
|
+
return Math.random();
|
|
1431
|
+
}));
|
|
1432
|
+
} else if (url !== null && AudioContext !== null) {
|
|
1433
|
+
fetch(url, {
|
|
1434
|
+
mode: 'cors'
|
|
1435
|
+
}).then(function (response) {
|
|
1436
|
+
if (canceled) {
|
|
1437
|
+
throw new Error('Audio loading canceled');
|
|
1438
|
+
}
|
|
1439
|
+
|
|
1440
|
+
return response.arrayBuffer();
|
|
1441
|
+
}).then(function (arrayBuffer) {
|
|
1442
|
+
if (canceled) {
|
|
1443
|
+
throw new Error('Audio loading canceled');
|
|
1444
|
+
}
|
|
1445
|
+
|
|
1446
|
+
var audioCtx = new AudioContext();
|
|
1447
|
+
return audioCtx.decodeAudioData(arrayBuffer);
|
|
1448
|
+
}).then(function (buffer) {
|
|
1449
|
+
var channelsCount = buffer.numberOfChannels;
|
|
1450
|
+
|
|
1451
|
+
if (channelsCount > 0) {
|
|
1452
|
+
var leftChannelData = buffer.getChannelData(0);
|
|
1453
|
+
setAudioLevels(leftChannelData.reduce(function (newArray, level) {
|
|
1454
|
+
// eslint-disable-next-line no-param-reassign
|
|
1455
|
+
newArray[newArray.length] = Math.abs(level);
|
|
1456
|
+
return newArray;
|
|
1457
|
+
}, []));
|
|
1458
|
+
}
|
|
1459
|
+
})["catch"](function (e) {
|
|
1460
|
+
throw e;
|
|
1461
|
+
});
|
|
1462
|
+
}
|
|
1463
|
+
|
|
1464
|
+
return function () {
|
|
1465
|
+
if (url === null) {
|
|
1466
|
+
canceled = true;
|
|
1467
|
+
}
|
|
1468
|
+
};
|
|
1469
|
+
}, [url, waveform, setAudioLevels, reduceBufferFactor, fake]);
|
|
1470
|
+
return audioLevels;
|
|
1144
1471
|
}
|
|
1145
1472
|
|
|
1146
1473
|
var useParsedStory = function useParsedStory(story) {
|
|
@@ -1176,6 +1503,38 @@ var useParsedStory = function useParsedStory(story) {
|
|
|
1176
1503
|
return newStory;
|
|
1177
1504
|
};
|
|
1178
1505
|
|
|
1506
|
+
function useProgressSteps() {
|
|
1507
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
1508
|
+
_ref$disabled = _ref.disabled,
|
|
1509
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
1510
|
+
currentTime = _ref.currentTime,
|
|
1511
|
+
duration = _ref.duration,
|
|
1512
|
+
_ref$onStep = _ref.onStep,
|
|
1513
|
+
onStep = _ref$onStep === void 0 ? null : _ref$onStep,
|
|
1514
|
+
_ref$steps = _ref.steps,
|
|
1515
|
+
steps = _ref$steps === void 0 ? [0.1, 0.25, 0.5, 0.75, 0.9] : _ref$steps;
|
|
1516
|
+
|
|
1517
|
+
var progressStepsReached = useRef({});
|
|
1518
|
+
useEffect(function () {
|
|
1519
|
+
if (duration === 0 || disabled) {
|
|
1520
|
+
return;
|
|
1521
|
+
}
|
|
1522
|
+
|
|
1523
|
+
var progress = currentTime / duration;
|
|
1524
|
+
var currentSteps = progressStepsReached.current;
|
|
1525
|
+
var stepsToTrack = steps.filter(function (step) {
|
|
1526
|
+
return progress > step && typeof currentSteps[step] === 'undefined';
|
|
1527
|
+
});
|
|
1528
|
+
stepsToTrack.forEach(function (step) {
|
|
1529
|
+
if (onStep !== null) {
|
|
1530
|
+
onStep(step);
|
|
1531
|
+
}
|
|
1532
|
+
|
|
1533
|
+
currentSteps[step] = true;
|
|
1534
|
+
});
|
|
1535
|
+
}, [duration, currentTime, disabled]);
|
|
1536
|
+
}
|
|
1537
|
+
|
|
1179
1538
|
var _excluded = ["width", "height"];
|
|
1180
1539
|
var devicePixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;
|
|
1181
1540
|
|
|
@@ -1233,34 +1592,31 @@ var useScreenSizeFromElement = function useScreenSizeFromElement() {
|
|
|
1233
1592
|
height = _ref4$height === void 0 ? null : _ref4$height,
|
|
1234
1593
|
opts = _objectWithoutProperties(_ref4, _excluded);
|
|
1235
1594
|
|
|
1236
|
-
var
|
|
1237
|
-
ref =
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
calculatedWidth = _ref5$width === void 0 ? 0 : _ref5$width,
|
|
1243
|
-
_ref5$height = _ref5.height,
|
|
1244
|
-
calculatedHeight = _ref5$height === void 0 ? 0 : _ref5$height;
|
|
1595
|
+
var _useDimensionObserver = useDimensionObserver(),
|
|
1596
|
+
ref = _useDimensionObserver.ref,
|
|
1597
|
+
_useDimensionObserver2 = _useDimensionObserver.width,
|
|
1598
|
+
calculatedWidth = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2,
|
|
1599
|
+
_useDimensionObserver3 = _useDimensionObserver.height,
|
|
1600
|
+
calculatedHeight = _useDimensionObserver3 === void 0 ? 0 : _useDimensionObserver3;
|
|
1245
1601
|
|
|
1246
1602
|
var fullWidth = width !== null ? width : calculatedWidth;
|
|
1247
1603
|
var fullHeight = height !== null ? height : calculatedHeight;
|
|
1248
1604
|
|
|
1249
|
-
var
|
|
1250
|
-
|
|
1251
|
-
screenWidth =
|
|
1252
|
-
|
|
1253
|
-
screenHeight =
|
|
1254
|
-
|
|
1255
|
-
withoutMaxSize =
|
|
1256
|
-
|
|
1257
|
-
landscapeMinHeight =
|
|
1258
|
-
|
|
1259
|
-
menuAlwaysOverScreen =
|
|
1260
|
-
|
|
1261
|
-
landscapeMinRatio =
|
|
1262
|
-
|
|
1263
|
-
withoutScale =
|
|
1605
|
+
var _ref5 = opts || {},
|
|
1606
|
+
_ref5$screenWidth = _ref5.screenWidth,
|
|
1607
|
+
screenWidth = _ref5$screenWidth === void 0 ? 320 : _ref5$screenWidth,
|
|
1608
|
+
_ref5$screenHeight = _ref5.screenHeight,
|
|
1609
|
+
screenHeight = _ref5$screenHeight === void 0 ? 480 : _ref5$screenHeight,
|
|
1610
|
+
_ref5$withoutMaxSize = _ref5.withoutMaxSize,
|
|
1611
|
+
withoutMaxSize = _ref5$withoutMaxSize === void 0 ? false : _ref5$withoutMaxSize,
|
|
1612
|
+
_ref5$landscapeMinHei = _ref5.landscapeMinHeight,
|
|
1613
|
+
landscapeMinHeight = _ref5$landscapeMinHei === void 0 ? 600 : _ref5$landscapeMinHei,
|
|
1614
|
+
_ref5$menuAlwaysOverS = _ref5.menuAlwaysOverScreen,
|
|
1615
|
+
menuAlwaysOverScreen = _ref5$menuAlwaysOverS === void 0 ? true : _ref5$menuAlwaysOverS,
|
|
1616
|
+
_ref5$landscapeMinRat = _ref5.landscapeMinRatio,
|
|
1617
|
+
landscapeMinRatio = _ref5$landscapeMinRat === void 0 ? 2 / 3 : _ref5$landscapeMinRat,
|
|
1618
|
+
_ref5$withoutScale = _ref5.withoutScale,
|
|
1619
|
+
withoutScale = _ref5$withoutScale === void 0 ? false : _ref5$withoutScale;
|
|
1264
1620
|
|
|
1265
1621
|
var screenRatio = screenWidth / screenHeight;
|
|
1266
1622
|
var elementRatio = fullWidth / fullHeight;
|
|
@@ -1656,4 +2012,4 @@ var useTrackMedia = function useTrackMedia() {
|
|
|
1656
2012
|
var eventsManager = typeof window !== 'undefined' ? new EventsManager(window) : null;
|
|
1657
2013
|
var useWindowEvent = createUseEvent(eventsManager);
|
|
1658
2014
|
|
|
1659
|
-
export { getObserver, useAnimationFrame, useDocumentEvent, useForm, useFormTransition, useFormattedDate, useFormattedTime, useFullscreen, useIntersectionObserver, useIsVisible, useLoadedFonts, useLongPress, useMediaApi, useMediaThumbnail, useMediasParser, useObserver, useParsedStory, useResizeObserver, useScreenSizeFromElement, useScreenSizeFromWindow, useSwipe, useThemeParser, useTrackEvent, useTrackMedia, useTrackScreenEvent, useTrackScreenMedia, useTrackScreenView, useWindowEvent };
|
|
2015
|
+
export { getObserver, useActivityDetector, useAnimationFrame, useDimensionObserver, useDocumentEvent, useForm, useFormTransition, useFormattedDate, useFormattedTime, useFullscreen, useIntersectionObserver, useIsVisible, useLoadedFonts, useLongPress, useMediaApi, useMediaCurrentTime, useMediaDuration, useMediaLoad, useMediaReady, useMediaThumbnail, useMediaWaveform, useMediasParser, useObserver, useParsedStory, useProgressSteps, useResizeObserver, useScreenSizeFromElement, useScreenSizeFromWindow, useSwipe, useThemeParser, useTrackEvent, useTrackMedia, useTrackScreenEvent, useTrackScreenMedia, useTrackScreenView, useWindowEvent };
|