@micromag/core 0.3.147 → 0.3.152
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/assets/css/styles.css +1 -1
- package/assets/css/vendor.css +1 -1
- package/es/components.js +17 -32
- package/es/contexts.js +283 -70
- package/es/hooks.js +450 -110
- package/lib/components.js +15 -30
- package/lib/contexts.js +291 -70
- package/lib/hooks.js +458 -109
- package/package.json +2 -2
- package/scss/_theme.scss +4 -1
package/lib/hooks.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
6
|
var react = require('react');
|
|
6
7
|
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
|
|
7
8
|
var reactIntl = require('react-intl');
|
|
@@ -13,9 +14,9 @@ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProp
|
|
|
13
14
|
var forms = require('@folklore/forms');
|
|
14
15
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
15
16
|
var classNames = require('classnames');
|
|
16
|
-
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
17
17
|
var screenfull = require('screenfull');
|
|
18
18
|
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
19
|
+
var isArray = require('lodash/isArray');
|
|
19
20
|
var isObject = require('lodash/isObject');
|
|
20
21
|
var contexts = require('@micromag/core/contexts');
|
|
21
22
|
var cssMediaquery = require('css-mediaquery');
|
|
@@ -43,18 +44,71 @@ function _interopNamespace(e) {
|
|
|
43
44
|
return Object.freeze(n);
|
|
44
45
|
}
|
|
45
46
|
|
|
47
|
+
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
46
48
|
var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
|
|
47
49
|
var isString__default = /*#__PURE__*/_interopDefaultLegacy(isString);
|
|
48
50
|
var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
|
|
49
51
|
var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
|
|
50
52
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
51
53
|
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
|
|
52
|
-
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
53
54
|
var screenfull__default = /*#__PURE__*/_interopDefaultLegacy(screenfull);
|
|
54
55
|
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
56
|
+
var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
|
|
55
57
|
var isObject__default = /*#__PURE__*/_interopDefaultLegacy(isObject);
|
|
56
58
|
var clamp__default = /*#__PURE__*/_interopDefaultLegacy(clamp);
|
|
57
59
|
|
|
60
|
+
function useActivityDetector() {
|
|
61
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
62
|
+
_ref$disabled = _ref.disabled,
|
|
63
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
64
|
+
_ref$timeout = _ref.timeout,
|
|
65
|
+
timeoutDelay = _ref$timeout === void 0 ? 2000 : _ref$timeout;
|
|
66
|
+
|
|
67
|
+
var ref = react.useRef(null);
|
|
68
|
+
|
|
69
|
+
var _useState = react.useState(false),
|
|
70
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
71
|
+
detected = _useState2[0],
|
|
72
|
+
setDetected = _useState2[1];
|
|
73
|
+
|
|
74
|
+
react.useEffect(function () {
|
|
75
|
+
var _ref$current = ref.current,
|
|
76
|
+
element = _ref$current === void 0 ? null : _ref$current;
|
|
77
|
+
|
|
78
|
+
if (element === null || disabled) {
|
|
79
|
+
return function () {};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
var timeout = null;
|
|
83
|
+
|
|
84
|
+
function onMove() {
|
|
85
|
+
if (timeout !== null) {
|
|
86
|
+
clearTimeout(timeout);
|
|
87
|
+
timeout = null;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
setDetected(true);
|
|
91
|
+
timeout = setTimeout(function () {
|
|
92
|
+
setDetected(false);
|
|
93
|
+
}, timeoutDelay);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
element.addEventListener('mousemove', onMove);
|
|
97
|
+
return function () {
|
|
98
|
+
if (timeout !== null) {
|
|
99
|
+
clearTimeout(timeout);
|
|
100
|
+
timeout = null;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
element.removeEventListener('mousemove', onMove);
|
|
104
|
+
};
|
|
105
|
+
}, [disabled, timeoutDelay]);
|
|
106
|
+
return {
|
|
107
|
+
ref: ref,
|
|
108
|
+
detected: detected
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
58
112
|
var useAnimationFrame = function useAnimationFrame(onFrame) {
|
|
59
113
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
60
114
|
_ref$disabled = _ref.disabled,
|
|
@@ -149,7 +203,7 @@ var useFormattedTime = function useFormattedTime() {
|
|
|
149
203
|
var eventsManager$1 = typeof document !== 'undefined' ? new core.EventsManager(document) : null;
|
|
150
204
|
var useDocumentEvent = utils.createUseEvent(eventsManager$1);
|
|
151
205
|
|
|
152
|
-
var _excluded$
|
|
206
|
+
var _excluded$2 = ["fields", "injectInFields"],
|
|
153
207
|
_excluded2 = ["fields"];
|
|
154
208
|
|
|
155
209
|
var useForm = function useForm() {
|
|
@@ -158,7 +212,7 @@ var useForm = function useForm() {
|
|
|
158
212
|
providedFields = _ref$fields === void 0 ? [] : _ref$fields,
|
|
159
213
|
_ref$injectInFields = _ref.injectInFields,
|
|
160
214
|
injectInFields = _ref$injectInFields === void 0 ? false : _ref$injectInFields,
|
|
161
|
-
opts = _objectWithoutProperties__default["default"](_ref, _excluded$
|
|
215
|
+
opts = _objectWithoutProperties__default["default"](_ref, _excluded$2);
|
|
162
216
|
|
|
163
217
|
var fieldsNames = react.useMemo(function () {
|
|
164
218
|
return providedFields.length > 0 ? providedFields.map(function (_ref2) {
|
|
@@ -265,6 +319,8 @@ var useFullscreen = function useFullscreen(element) {
|
|
|
265
319
|
};
|
|
266
320
|
};
|
|
267
321
|
|
|
322
|
+
var _excluded$1 = ["entry"];
|
|
323
|
+
|
|
268
324
|
var buildThresholdArray = function buildThresholdArray() {
|
|
269
325
|
return [0, 1.0];
|
|
270
326
|
};
|
|
@@ -506,6 +562,35 @@ var useResizeObserver = function useResizeObserver() {
|
|
|
506
562
|
disabled: disabled
|
|
507
563
|
}, resizeObserverInitialEntry);
|
|
508
564
|
};
|
|
565
|
+
var useDimensionObserver = function useDimensionObserver() {
|
|
566
|
+
var _useResizeObserver = useResizeObserver.apply(void 0, arguments),
|
|
567
|
+
entry = _useResizeObserver.entry,
|
|
568
|
+
rest = _objectWithoutProperties__default["default"](_useResizeObserver, _excluded$1);
|
|
569
|
+
|
|
570
|
+
var _ref5 = entry || {},
|
|
571
|
+
_ref5$contentRect = _ref5.contentRect,
|
|
572
|
+
contentRect = _ref5$contentRect === void 0 ? null : _ref5$contentRect,
|
|
573
|
+
_ref5$borderBoxSize = _ref5.borderBoxSize,
|
|
574
|
+
borderBoxSize = _ref5$borderBoxSize === void 0 ? null : _ref5$borderBoxSize;
|
|
575
|
+
|
|
576
|
+
var _ref6 = contentRect || {},
|
|
577
|
+
_ref6$width = _ref6.width,
|
|
578
|
+
width = _ref6$width === void 0 ? 0 : _ref6$width,
|
|
579
|
+
_ref6$height = _ref6.height,
|
|
580
|
+
height = _ref6$height === void 0 ? 0 : _ref6$height;
|
|
581
|
+
|
|
582
|
+
var _ref7 = isArray__default["default"](borderBoxSize) ? borderBoxSize[0] || {} : borderBoxSize || {},
|
|
583
|
+
_ref7$blockSize = _ref7.blockSize,
|
|
584
|
+
blockSize = _ref7$blockSize === void 0 ? null : _ref7$blockSize,
|
|
585
|
+
_ref7$inlineSize = _ref7.inlineSize,
|
|
586
|
+
inlineSize = _ref7$inlineSize === void 0 ? null : _ref7$inlineSize;
|
|
587
|
+
|
|
588
|
+
return _objectSpread__default["default"](_objectSpread__default["default"]({}, rest), {}, {
|
|
589
|
+
entry: entry,
|
|
590
|
+
width: inlineSize || width,
|
|
591
|
+
height: blockSize || height
|
|
592
|
+
});
|
|
593
|
+
};
|
|
509
594
|
|
|
510
595
|
var useIsVisible = function useIsVisible() {
|
|
511
596
|
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
@@ -754,16 +839,14 @@ var useMediaApi = function useMediaApi() {
|
|
|
754
839
|
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
755
840
|
_ref$url = _ref.url,
|
|
756
841
|
url = _ref$url === void 0 ? null : _ref$url,
|
|
757
|
-
_ref$initialMuted = _ref.initialMuted,
|
|
758
|
-
initialMuted = _ref$initialMuted === void 0 ? false : _ref$initialMuted,
|
|
759
842
|
_ref$onTimeUpdate = _ref.onTimeUpdate,
|
|
760
843
|
onTimeUpdate = _ref$onTimeUpdate === void 0 ? null : _ref$onTimeUpdate,
|
|
761
844
|
_ref$onProgressStep = _ref.onProgressStep,
|
|
762
845
|
onProgressStep = _ref$onProgressStep === void 0 ? null : _ref$onProgressStep,
|
|
763
|
-
_ref$onDurationChange = _ref.
|
|
764
|
-
|
|
765
|
-
_ref$
|
|
766
|
-
|
|
846
|
+
_ref$onDurationChange = _ref.onDurationChange,
|
|
847
|
+
onDurationChange = _ref$onDurationChange === void 0 ? null : _ref$onDurationChange,
|
|
848
|
+
_ref$onVolumeChange = _ref.onVolumeChange,
|
|
849
|
+
onVolumeChange = _ref$onVolumeChange === void 0 ? null : _ref$onVolumeChange,
|
|
767
850
|
_ref$onPlay = _ref.onPlay,
|
|
768
851
|
onPlay = _ref$onPlay === void 0 ? null : _ref$onPlay,
|
|
769
852
|
_ref$onPause = _ref.onPause,
|
|
@@ -772,8 +855,8 @@ var useMediaApi = function useMediaApi() {
|
|
|
772
855
|
onEnded = _ref$onEnded === void 0 ? null : _ref$onEnded,
|
|
773
856
|
_ref$onSeeked = _ref.onSeeked,
|
|
774
857
|
onSeeked = _ref$onSeeked === void 0 ? null : _ref$onSeeked,
|
|
775
|
-
_ref$
|
|
776
|
-
|
|
858
|
+
_ref$onSuspend = _ref.onSuspend,
|
|
859
|
+
onSuspend = _ref$onSuspend === void 0 ? null : _ref$onSuspend,
|
|
777
860
|
_ref$onLoadStart = _ref.onLoadStart,
|
|
778
861
|
onLoadStart = _ref$onLoadStart === void 0 ? null : _ref$onLoadStart,
|
|
779
862
|
_ref$onCanPlayThough = _ref.onCanPlayThough,
|
|
@@ -787,45 +870,40 @@ var useMediaApi = function useMediaApi() {
|
|
|
787
870
|
|
|
788
871
|
var ref = react.useRef(null);
|
|
789
872
|
|
|
790
|
-
var _useState = react.useState(
|
|
873
|
+
var _useState = react.useState(null),
|
|
791
874
|
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
792
|
-
|
|
793
|
-
|
|
875
|
+
currentTime = _useState2[0],
|
|
876
|
+
setCurrentTime = _useState2[1];
|
|
794
877
|
|
|
795
878
|
var _useState3 = react.useState(null),
|
|
796
879
|
_useState4 = _slicedToArray__default["default"](_useState3, 2),
|
|
797
|
-
|
|
798
|
-
|
|
880
|
+
duration = _useState4[0],
|
|
881
|
+
setDuration = _useState4[1];
|
|
799
882
|
|
|
800
|
-
var _useState5 = react.useState(
|
|
883
|
+
var _useState5 = react.useState(false),
|
|
801
884
|
_useState6 = _slicedToArray__default["default"](_useState5, 2),
|
|
802
|
-
|
|
803
|
-
|
|
885
|
+
playing = _useState6[0],
|
|
886
|
+
setPlaying = _useState6[1];
|
|
804
887
|
|
|
805
888
|
var _useState7 = react.useState(false),
|
|
806
889
|
_useState8 = _slicedToArray__default["default"](_useState7, 2),
|
|
807
|
-
|
|
808
|
-
|
|
890
|
+
ready = _useState8[0],
|
|
891
|
+
setReady = _useState8[1];
|
|
809
892
|
|
|
810
893
|
var _useState9 = react.useState(false),
|
|
811
894
|
_useState10 = _slicedToArray__default["default"](_useState9, 2),
|
|
812
|
-
|
|
813
|
-
|
|
895
|
+
dataReady = _useState10[0],
|
|
896
|
+
setDataReady = _useState10[1];
|
|
814
897
|
|
|
815
|
-
var _useState11 = react.useState(
|
|
898
|
+
var _useState11 = react.useState(true),
|
|
816
899
|
_useState12 = _slicedToArray__default["default"](_useState11, 2),
|
|
817
|
-
|
|
818
|
-
|
|
900
|
+
initialPlay = _useState12[0],
|
|
901
|
+
setInitialPlay = _useState12[1];
|
|
819
902
|
|
|
820
|
-
var _useState13 = react.useState(
|
|
903
|
+
var _useState13 = react.useState(false),
|
|
821
904
|
_useState14 = _slicedToArray__default["default"](_useState13, 2),
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
var _useState15 = react.useState(false),
|
|
826
|
-
_useState16 = _slicedToArray__default["default"](_useState15, 2),
|
|
827
|
-
suspended = _useState16[0],
|
|
828
|
-
setSuspended = _useState16[1];
|
|
905
|
+
suspended = _useState14[0],
|
|
906
|
+
setSuspended = _useState14[1];
|
|
829
907
|
|
|
830
908
|
var progressStepsReached = react.useRef({});
|
|
831
909
|
var paused = !playing; // Exposed methods
|
|
@@ -844,17 +922,6 @@ var useMediaApi = function useMediaApi() {
|
|
|
844
922
|
media.pause();
|
|
845
923
|
}
|
|
846
924
|
}, []);
|
|
847
|
-
var togglePlay = react.useCallback(function () {
|
|
848
|
-
var media = ref.current;
|
|
849
|
-
|
|
850
|
-
if (media !== null) {
|
|
851
|
-
if (playing) {
|
|
852
|
-
media.pause();
|
|
853
|
-
} else {
|
|
854
|
-
media.play();
|
|
855
|
-
}
|
|
856
|
-
}
|
|
857
|
-
}, [playing]);
|
|
858
925
|
var stop = react.useCallback(function () {
|
|
859
926
|
var media = ref.current;
|
|
860
927
|
|
|
@@ -869,28 +936,19 @@ var useMediaApi = function useMediaApi() {
|
|
|
869
936
|
if (media !== null) {
|
|
870
937
|
media.currentTime = time;
|
|
871
938
|
}
|
|
872
|
-
}, []);
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
}
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
}
|
|
886
|
-
}, []);
|
|
887
|
-
var toggleMute = react.useCallback(function () {
|
|
888
|
-
var media = ref.current;
|
|
889
|
-
|
|
890
|
-
if (media !== null) {
|
|
891
|
-
media.muted = !muted;
|
|
892
|
-
}
|
|
893
|
-
}, [muted]); // Media events callbacks
|
|
939
|
+
}, []); // const mute = useCallback(() => {
|
|
940
|
+
// const { current: media } = ref;
|
|
941
|
+
// if (media !== null) {
|
|
942
|
+
// media.muted = true;
|
|
943
|
+
// }
|
|
944
|
+
// }, []);
|
|
945
|
+
// const unMute = useCallback(() => {
|
|
946
|
+
// const { current: media } = ref;
|
|
947
|
+
// if (media !== null) {
|
|
948
|
+
// media.muted = false;
|
|
949
|
+
// }
|
|
950
|
+
// }, []);
|
|
951
|
+
// Media events callbacks
|
|
894
952
|
|
|
895
953
|
var onCustomPlay = react.useCallback(function () {
|
|
896
954
|
if (onPlay !== null) {
|
|
@@ -951,10 +1009,10 @@ var useMediaApi = function useMediaApi() {
|
|
|
951
1009
|
var eventMedia = e.currentTarget;
|
|
952
1010
|
setDuration(eventMedia.duration);
|
|
953
1011
|
|
|
954
|
-
if (
|
|
955
|
-
|
|
1012
|
+
if (onDurationChange !== null) {
|
|
1013
|
+
onDurationChange(eventMedia.duration);
|
|
956
1014
|
}
|
|
957
|
-
}, [setDuration,
|
|
1015
|
+
}, [setDuration, onDurationChange]);
|
|
958
1016
|
var onCustomSeeked = react.useCallback(function (e) {
|
|
959
1017
|
var eventMedia = e.currentTarget;
|
|
960
1018
|
|
|
@@ -963,13 +1021,12 @@ var useMediaApi = function useMediaApi() {
|
|
|
963
1021
|
}
|
|
964
1022
|
}, [onSeeked]);
|
|
965
1023
|
var onCustomVolumeChange = react.useCallback(function (e) {
|
|
966
|
-
var eventMedia = e.currentTarget;
|
|
967
|
-
setMuted(eventMedia.muted);
|
|
1024
|
+
var eventMedia = e.currentTarget; // setMuted(eventMedia.muted);
|
|
968
1025
|
|
|
969
|
-
if (
|
|
970
|
-
|
|
1026
|
+
if (onVolumeChange !== null) {
|
|
1027
|
+
onVolumeChange(eventMedia.volume);
|
|
971
1028
|
}
|
|
972
|
-
}, [
|
|
1029
|
+
}, [onVolumeChange]);
|
|
973
1030
|
var onCustomLoadStart = react.useCallback(function () {
|
|
974
1031
|
if (onLoadStart !== null) {
|
|
975
1032
|
onLoadStart();
|
|
@@ -1006,8 +1063,8 @@ var useMediaApi = function useMediaApi() {
|
|
|
1006
1063
|
var onCustomSuspended = react.useCallback(function () {
|
|
1007
1064
|
setSuspended(true);
|
|
1008
1065
|
|
|
1009
|
-
if (
|
|
1010
|
-
|
|
1066
|
+
if (onSuspend !== null) {
|
|
1067
|
+
onSuspend();
|
|
1011
1068
|
}
|
|
1012
1069
|
}, [setSuspended, onSuspended]);
|
|
1013
1070
|
react.useEffect(function () {
|
|
@@ -1116,13 +1173,8 @@ var useMediaApi = function useMediaApi() {
|
|
|
1116
1173
|
ref: ref,
|
|
1117
1174
|
play: play,
|
|
1118
1175
|
pause: pause,
|
|
1119
|
-
togglePlay: togglePlay,
|
|
1120
1176
|
stop: stop,
|
|
1121
1177
|
seek: seek,
|
|
1122
|
-
mute: mute,
|
|
1123
|
-
unMute: unMute,
|
|
1124
|
-
toggleMute: toggleMute,
|
|
1125
|
-
muted: muted,
|
|
1126
1178
|
currentTime: currentTime,
|
|
1127
1179
|
duration: duration,
|
|
1128
1180
|
playing: playing,
|
|
@@ -1133,6 +1185,190 @@ var useMediaApi = function useMediaApi() {
|
|
|
1133
1185
|
};
|
|
1134
1186
|
};
|
|
1135
1187
|
|
|
1188
|
+
function useMediaCurrentTime(element) {
|
|
1189
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1190
|
+
_ref$id = _ref.id,
|
|
1191
|
+
id = _ref$id === void 0 ? null : _ref$id,
|
|
1192
|
+
_ref$disabled = _ref.disabled,
|
|
1193
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
1194
|
+
_ref$updateInterval = _ref.updateInterval,
|
|
1195
|
+
updateInterval = _ref$updateInterval === void 0 ? 1000 : _ref$updateInterval,
|
|
1196
|
+
_ref$onUpdate = _ref.onUpdate,
|
|
1197
|
+
customOnUpdate = _ref$onUpdate === void 0 ? null : _ref$onUpdate;
|
|
1198
|
+
|
|
1199
|
+
var _useState = react.useState(0),
|
|
1200
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
1201
|
+
currentTime = _useState2[0],
|
|
1202
|
+
setCurrentTime = _useState2[1];
|
|
1203
|
+
|
|
1204
|
+
var realCurrentTime = react.useRef(currentTime);
|
|
1205
|
+
var lastIdRef = react.useRef(id);
|
|
1206
|
+
var idChanged = lastIdRef.current !== id;
|
|
1207
|
+
|
|
1208
|
+
if (idChanged) {
|
|
1209
|
+
realCurrentTime.current = 0;
|
|
1210
|
+
lastIdRef.current = id;
|
|
1211
|
+
} // Check time update
|
|
1212
|
+
|
|
1213
|
+
|
|
1214
|
+
react.useEffect(function () {
|
|
1215
|
+
if (disabled || element === null) {
|
|
1216
|
+
return function () {};
|
|
1217
|
+
}
|
|
1218
|
+
|
|
1219
|
+
var canceled = false;
|
|
1220
|
+
|
|
1221
|
+
var updateTime = function updateTime(time) {
|
|
1222
|
+
if (canceled) {
|
|
1223
|
+
return;
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
realCurrentTime.current = time;
|
|
1227
|
+
setCurrentTime(time);
|
|
1228
|
+
|
|
1229
|
+
if (customOnUpdate !== null) {
|
|
1230
|
+
customOnUpdate(time);
|
|
1231
|
+
}
|
|
1232
|
+
};
|
|
1233
|
+
|
|
1234
|
+
var interval = setInterval(function () {
|
|
1235
|
+
var time = element.currentTime;
|
|
1236
|
+
|
|
1237
|
+
if (typeof time.then !== 'undefined') {
|
|
1238
|
+
time.then(updateTime);
|
|
1239
|
+
} else {
|
|
1240
|
+
updateTime(time);
|
|
1241
|
+
}
|
|
1242
|
+
}, updateInterval);
|
|
1243
|
+
return function () {
|
|
1244
|
+
canceled = true;
|
|
1245
|
+
clearInterval(interval);
|
|
1246
|
+
};
|
|
1247
|
+
}, [id, element, setCurrentTime, disabled, updateInterval]);
|
|
1248
|
+
return realCurrentTime.current;
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
function useMediaDuration(element) {
|
|
1252
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1253
|
+
_ref$id = _ref.id,
|
|
1254
|
+
id = _ref$id === void 0 ? null : _ref$id;
|
|
1255
|
+
|
|
1256
|
+
var _useState = react.useState(element !== null ? element.duration || 0 : 0),
|
|
1257
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
1258
|
+
duration = _useState2[0],
|
|
1259
|
+
setDuration = _useState2[1];
|
|
1260
|
+
|
|
1261
|
+
var realDuration = react.useRef(duration);
|
|
1262
|
+
var lastIdRef = react.useRef(id);
|
|
1263
|
+
var idChanged = lastIdRef.current !== id;
|
|
1264
|
+
|
|
1265
|
+
if (idChanged) {
|
|
1266
|
+
realDuration.current = element !== null ? element.duration || 0 : 0;
|
|
1267
|
+
lastIdRef.current = id;
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
react.useEffect(function () {
|
|
1271
|
+
if (element === null) {
|
|
1272
|
+
return function () {};
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
function updateDuration() {
|
|
1276
|
+
realDuration.current = element.duration || 0;
|
|
1277
|
+
setDuration(element.duration || 0);
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
updateDuration();
|
|
1281
|
+
element.addEventListener('loadedmetadata', updateDuration);
|
|
1282
|
+
element.addEventListener('durationchange', updateDuration);
|
|
1283
|
+
return function () {
|
|
1284
|
+
element.removeEventListener('loadedmetadata', updateDuration);
|
|
1285
|
+
element.removeEventListener('durationchange', updateDuration);
|
|
1286
|
+
};
|
|
1287
|
+
}, [element, id, setDuration]);
|
|
1288
|
+
return realDuration.current;
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
function useMediaLoad(element) {
|
|
1292
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1293
|
+
_ref$preload = _ref.preload,
|
|
1294
|
+
preload = _ref$preload === void 0 ? 'auto' : _ref$preload,
|
|
1295
|
+
_ref$shouldLoad = _ref.shouldLoad,
|
|
1296
|
+
shouldLoad = _ref$shouldLoad === void 0 ? false : _ref$shouldLoad;
|
|
1297
|
+
|
|
1298
|
+
var firstPreloadRef = react.useRef(preload);
|
|
1299
|
+
var firstShouldLoadRef = react.useRef(shouldLoad);
|
|
1300
|
+
var hasLoadedRef = react.useRef(preload !== 'none' && preload !== 'metadata' && shouldLoad);
|
|
1301
|
+
react.useEffect(function () {
|
|
1302
|
+
var canLoad = preload !== 'none' && preload !== 'metadata' && shouldLoad; // @todo
|
|
1303
|
+
|
|
1304
|
+
var preloadHasChanged = firstPreloadRef.current !== preload;
|
|
1305
|
+
var shouldLoadHasChanged = firstShouldLoadRef.current !== shouldLoad;
|
|
1306
|
+
|
|
1307
|
+
if (canLoad && (preloadHasChanged || shouldLoadHasChanged) && !hasLoadedRef.current && element !== null && typeof element.load !== 'undefined') {
|
|
1308
|
+
hasLoadedRef.current = true;
|
|
1309
|
+
element.load();
|
|
1310
|
+
}
|
|
1311
|
+
}, [element, shouldLoad, preload]);
|
|
1312
|
+
}
|
|
1313
|
+
|
|
1314
|
+
function useMediaReady(element) {
|
|
1315
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1316
|
+
_ref$id = _ref.id,
|
|
1317
|
+
id = _ref$id === void 0 ? null : _ref$id;
|
|
1318
|
+
|
|
1319
|
+
var _useState = react.useState(element !== null && element.readyState > 0),
|
|
1320
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
1321
|
+
ready = _useState2[0],
|
|
1322
|
+
setReady = _useState2[1];
|
|
1323
|
+
|
|
1324
|
+
var realReady = react.useRef(ready);
|
|
1325
|
+
var lastIdRef = react.useRef(id);
|
|
1326
|
+
var idChanged = lastIdRef.current !== id;
|
|
1327
|
+
|
|
1328
|
+
if (idChanged) {
|
|
1329
|
+
realReady.current = false;
|
|
1330
|
+
lastIdRef.current = id;
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1333
|
+
react.useEffect(function () {
|
|
1334
|
+
if (element === null) {
|
|
1335
|
+
return function () {};
|
|
1336
|
+
}
|
|
1337
|
+
|
|
1338
|
+
function updateReady() {
|
|
1339
|
+
var currentReady = ready;
|
|
1340
|
+
|
|
1341
|
+
if (element.readyState > 0 && !ready) {
|
|
1342
|
+
setReady(true);
|
|
1343
|
+
currentReady = true;
|
|
1344
|
+
} else if (ready && element.readyState === 0) {
|
|
1345
|
+
setReady(false);
|
|
1346
|
+
currentReady = false;
|
|
1347
|
+
}
|
|
1348
|
+
|
|
1349
|
+
realReady.current = currentReady;
|
|
1350
|
+
return currentReady;
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
var currentReady = updateReady();
|
|
1354
|
+
|
|
1355
|
+
if (!currentReady) {
|
|
1356
|
+
element.addEventListener('loadedmetadata', updateReady);
|
|
1357
|
+
element.addEventListener('canplay', updateReady);
|
|
1358
|
+
element.addEventListener('canplaythrough', updateReady);
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1361
|
+
return function () {
|
|
1362
|
+
if (!currentReady) {
|
|
1363
|
+
element.removeEventListener('loadedmetadata', updateReady);
|
|
1364
|
+
element.removeEventListener('canplay', updateReady);
|
|
1365
|
+
element.removeEventListener('canplaythrough', updateReady);
|
|
1366
|
+
}
|
|
1367
|
+
};
|
|
1368
|
+
}, [element, id]);
|
|
1369
|
+
return realReady.current;
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1136
1372
|
var useMediasParser = function useMediasParser() {
|
|
1137
1373
|
var screensManager = contexts.useScreensManager();
|
|
1138
1374
|
var fieldsManager = contexts.useFieldsManager(); // Convert medias object to path
|
|
@@ -1168,10 +1404,10 @@ function useMediaThumbnail(media) {
|
|
|
1168
1404
|
var thumbnailUrl = react.useMemo(function () {
|
|
1169
1405
|
var filesArray = utils.getMediaFilesAsArray(files) || [];
|
|
1170
1406
|
|
|
1171
|
-
var _ref2 = (file !== null ? filesArray.find(function (_ref3) {
|
|
1407
|
+
var _ref2 = (file !== null && !isObject__default["default"](file) ? filesArray.find(function (_ref3) {
|
|
1172
1408
|
var handle = _ref3.handle;
|
|
1173
1409
|
return handle === file;
|
|
1174
|
-
}) || null :
|
|
1410
|
+
}) || null : file) || {},
|
|
1175
1411
|
url = _ref2.url;
|
|
1176
1412
|
|
|
1177
1413
|
return url || defaultThumbnailUrl;
|
|
@@ -1179,6 +1415,82 @@ function useMediaThumbnail(media) {
|
|
|
1179
1415
|
return thumbnailUrl;
|
|
1180
1416
|
}
|
|
1181
1417
|
|
|
1418
|
+
function useMediaWaveform(media) {
|
|
1419
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1420
|
+
_ref$fake = _ref.fake,
|
|
1421
|
+
fake = _ref$fake === void 0 ? false : _ref$fake,
|
|
1422
|
+
_ref$reduceBufferFact = _ref.reduceBufferFactor,
|
|
1423
|
+
reduceBufferFactor = _ref$reduceBufferFact === void 0 ? 100 : _ref$reduceBufferFact;
|
|
1424
|
+
|
|
1425
|
+
var _ref2 = media || {},
|
|
1426
|
+
_ref2$url = _ref2.url,
|
|
1427
|
+
url = _ref2$url === void 0 ? null : _ref2$url,
|
|
1428
|
+
_ref2$metadata = _ref2.metadata,
|
|
1429
|
+
metadata = _ref2$metadata === void 0 ? null : _ref2$metadata;
|
|
1430
|
+
|
|
1431
|
+
var _ref3 = metadata || {},
|
|
1432
|
+
_ref3$waveform = _ref3.waveform,
|
|
1433
|
+
waveform = _ref3$waveform === void 0 ? null : _ref3$waveform;
|
|
1434
|
+
|
|
1435
|
+
var _useState = react.useState(null),
|
|
1436
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
1437
|
+
audioLevels = _useState2[0],
|
|
1438
|
+
setAudioLevels = _useState2[1];
|
|
1439
|
+
|
|
1440
|
+
react.useEffect(function () {
|
|
1441
|
+
var canceled = false;
|
|
1442
|
+
var AudioContext = typeof window !== 'undefined' ? window.AudioContext || window.webkitAudioContext : null;
|
|
1443
|
+
|
|
1444
|
+
if (waveform !== null) {
|
|
1445
|
+
setAudioLevels(waveform.map(function (it) {
|
|
1446
|
+
return (it + 256 / 2) / 256;
|
|
1447
|
+
}));
|
|
1448
|
+
} else if (url !== null && fake) {
|
|
1449
|
+
var fakeLength = 1000;
|
|
1450
|
+
setAudioLevels(_toConsumableArray__default["default"](new Array(fakeLength)).map(function () {
|
|
1451
|
+
return Math.random();
|
|
1452
|
+
}));
|
|
1453
|
+
} else if (url !== null && AudioContext !== null) {
|
|
1454
|
+
fetch(url, {
|
|
1455
|
+
mode: 'cors'
|
|
1456
|
+
}).then(function (response) {
|
|
1457
|
+
if (canceled) {
|
|
1458
|
+
throw new Error('Audio loading canceled');
|
|
1459
|
+
}
|
|
1460
|
+
|
|
1461
|
+
return response.arrayBuffer();
|
|
1462
|
+
}).then(function (arrayBuffer) {
|
|
1463
|
+
if (canceled) {
|
|
1464
|
+
throw new Error('Audio loading canceled');
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
var audioCtx = new AudioContext();
|
|
1468
|
+
return audioCtx.decodeAudioData(arrayBuffer);
|
|
1469
|
+
}).then(function (buffer) {
|
|
1470
|
+
var channelsCount = buffer.numberOfChannels;
|
|
1471
|
+
|
|
1472
|
+
if (channelsCount > 0) {
|
|
1473
|
+
var leftChannelData = buffer.getChannelData(0);
|
|
1474
|
+
setAudioLevels(leftChannelData.reduce(function (newArray, level) {
|
|
1475
|
+
// eslint-disable-next-line no-param-reassign
|
|
1476
|
+
newArray[newArray.length] = Math.abs(level);
|
|
1477
|
+
return newArray;
|
|
1478
|
+
}, []));
|
|
1479
|
+
}
|
|
1480
|
+
})["catch"](function (e) {
|
|
1481
|
+
throw e;
|
|
1482
|
+
});
|
|
1483
|
+
}
|
|
1484
|
+
|
|
1485
|
+
return function () {
|
|
1486
|
+
if (url === null) {
|
|
1487
|
+
canceled = true;
|
|
1488
|
+
}
|
|
1489
|
+
};
|
|
1490
|
+
}, [url, waveform, setAudioLevels, reduceBufferFactor, fake]);
|
|
1491
|
+
return audioLevels;
|
|
1492
|
+
}
|
|
1493
|
+
|
|
1182
1494
|
var useParsedStory = function useParsedStory(story) {
|
|
1183
1495
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1184
1496
|
_ref$disabled = _ref.disabled,
|
|
@@ -1212,6 +1524,38 @@ var useParsedStory = function useParsedStory(story) {
|
|
|
1212
1524
|
return newStory;
|
|
1213
1525
|
};
|
|
1214
1526
|
|
|
1527
|
+
function useProgressSteps() {
|
|
1528
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
1529
|
+
_ref$disabled = _ref.disabled,
|
|
1530
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
1531
|
+
currentTime = _ref.currentTime,
|
|
1532
|
+
duration = _ref.duration,
|
|
1533
|
+
_ref$onStep = _ref.onStep,
|
|
1534
|
+
onStep = _ref$onStep === void 0 ? null : _ref$onStep,
|
|
1535
|
+
_ref$steps = _ref.steps,
|
|
1536
|
+
steps = _ref$steps === void 0 ? [0.1, 0.25, 0.5, 0.75, 0.9] : _ref$steps;
|
|
1537
|
+
|
|
1538
|
+
var progressStepsReached = react.useRef({});
|
|
1539
|
+
react.useEffect(function () {
|
|
1540
|
+
if (duration === 0 || disabled) {
|
|
1541
|
+
return;
|
|
1542
|
+
}
|
|
1543
|
+
|
|
1544
|
+
var progress = currentTime / duration;
|
|
1545
|
+
var currentSteps = progressStepsReached.current;
|
|
1546
|
+
var stepsToTrack = steps.filter(function (step) {
|
|
1547
|
+
return progress > step && typeof currentSteps[step] === 'undefined';
|
|
1548
|
+
});
|
|
1549
|
+
stepsToTrack.forEach(function (step) {
|
|
1550
|
+
if (onStep !== null) {
|
|
1551
|
+
onStep(step);
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
currentSteps[step] = true;
|
|
1555
|
+
});
|
|
1556
|
+
}, [duration, currentTime, disabled]);
|
|
1557
|
+
}
|
|
1558
|
+
|
|
1215
1559
|
var _excluded = ["width", "height"];
|
|
1216
1560
|
var devicePixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;
|
|
1217
1561
|
|
|
@@ -1269,34 +1613,31 @@ var useScreenSizeFromElement = function useScreenSizeFromElement() {
|
|
|
1269
1613
|
height = _ref4$height === void 0 ? null : _ref4$height,
|
|
1270
1614
|
opts = _objectWithoutProperties__default["default"](_ref4, _excluded);
|
|
1271
1615
|
|
|
1272
|
-
var
|
|
1273
|
-
ref =
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
calculatedWidth = _ref5$width === void 0 ? 0 : _ref5$width,
|
|
1279
|
-
_ref5$height = _ref5.height,
|
|
1280
|
-
calculatedHeight = _ref5$height === void 0 ? 0 : _ref5$height;
|
|
1616
|
+
var _useDimensionObserver = useDimensionObserver(),
|
|
1617
|
+
ref = _useDimensionObserver.ref,
|
|
1618
|
+
_useDimensionObserver2 = _useDimensionObserver.width,
|
|
1619
|
+
calculatedWidth = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2,
|
|
1620
|
+
_useDimensionObserver3 = _useDimensionObserver.height,
|
|
1621
|
+
calculatedHeight = _useDimensionObserver3 === void 0 ? 0 : _useDimensionObserver3;
|
|
1281
1622
|
|
|
1282
1623
|
var fullWidth = width !== null ? width : calculatedWidth;
|
|
1283
1624
|
var fullHeight = height !== null ? height : calculatedHeight;
|
|
1284
1625
|
|
|
1285
|
-
var
|
|
1286
|
-
|
|
1287
|
-
screenWidth =
|
|
1288
|
-
|
|
1289
|
-
screenHeight =
|
|
1290
|
-
|
|
1291
|
-
withoutMaxSize =
|
|
1292
|
-
|
|
1293
|
-
landscapeMinHeight =
|
|
1294
|
-
|
|
1295
|
-
menuAlwaysOverScreen =
|
|
1296
|
-
|
|
1297
|
-
landscapeMinRatio =
|
|
1298
|
-
|
|
1299
|
-
withoutScale =
|
|
1626
|
+
var _ref5 = opts || {},
|
|
1627
|
+
_ref5$screenWidth = _ref5.screenWidth,
|
|
1628
|
+
screenWidth = _ref5$screenWidth === void 0 ? 320 : _ref5$screenWidth,
|
|
1629
|
+
_ref5$screenHeight = _ref5.screenHeight,
|
|
1630
|
+
screenHeight = _ref5$screenHeight === void 0 ? 480 : _ref5$screenHeight,
|
|
1631
|
+
_ref5$withoutMaxSize = _ref5.withoutMaxSize,
|
|
1632
|
+
withoutMaxSize = _ref5$withoutMaxSize === void 0 ? false : _ref5$withoutMaxSize,
|
|
1633
|
+
_ref5$landscapeMinHei = _ref5.landscapeMinHeight,
|
|
1634
|
+
landscapeMinHeight = _ref5$landscapeMinHei === void 0 ? 600 : _ref5$landscapeMinHei,
|
|
1635
|
+
_ref5$menuAlwaysOverS = _ref5.menuAlwaysOverScreen,
|
|
1636
|
+
menuAlwaysOverScreen = _ref5$menuAlwaysOverS === void 0 ? true : _ref5$menuAlwaysOverS,
|
|
1637
|
+
_ref5$landscapeMinRat = _ref5.landscapeMinRatio,
|
|
1638
|
+
landscapeMinRatio = _ref5$landscapeMinRat === void 0 ? 2 / 3 : _ref5$landscapeMinRat,
|
|
1639
|
+
_ref5$withoutScale = _ref5.withoutScale,
|
|
1640
|
+
withoutScale = _ref5$withoutScale === void 0 ? false : _ref5$withoutScale;
|
|
1300
1641
|
|
|
1301
1642
|
var screenRatio = screenWidth / screenHeight;
|
|
1302
1643
|
var elementRatio = fullWidth / fullHeight;
|
|
@@ -1693,7 +2034,9 @@ var eventsManager = typeof window !== 'undefined' ? new core.EventsManager(windo
|
|
|
1693
2034
|
var useWindowEvent = utils.createUseEvent(eventsManager);
|
|
1694
2035
|
|
|
1695
2036
|
exports.getObserver = getObserver;
|
|
2037
|
+
exports.useActivityDetector = useActivityDetector;
|
|
1696
2038
|
exports.useAnimationFrame = useAnimationFrame;
|
|
2039
|
+
exports.useDimensionObserver = useDimensionObserver;
|
|
1697
2040
|
exports.useDocumentEvent = useDocumentEvent;
|
|
1698
2041
|
exports.useForm = useForm;
|
|
1699
2042
|
exports.useFormTransition = useFormTransition;
|
|
@@ -1705,10 +2048,16 @@ exports.useIsVisible = useIsVisible;
|
|
|
1705
2048
|
exports.useLoadedFonts = useLoadedFonts;
|
|
1706
2049
|
exports.useLongPress = useLongPress;
|
|
1707
2050
|
exports.useMediaApi = useMediaApi;
|
|
2051
|
+
exports.useMediaCurrentTime = useMediaCurrentTime;
|
|
2052
|
+
exports.useMediaDuration = useMediaDuration;
|
|
2053
|
+
exports.useMediaLoad = useMediaLoad;
|
|
2054
|
+
exports.useMediaReady = useMediaReady;
|
|
1708
2055
|
exports.useMediaThumbnail = useMediaThumbnail;
|
|
2056
|
+
exports.useMediaWaveform = useMediaWaveform;
|
|
1709
2057
|
exports.useMediasParser = useMediasParser;
|
|
1710
2058
|
exports.useObserver = useObserver;
|
|
1711
2059
|
exports.useParsedStory = useParsedStory;
|
|
2060
|
+
exports.useProgressSteps = useProgressSteps;
|
|
1712
2061
|
exports.useResizeObserver = useResizeObserver;
|
|
1713
2062
|
exports.useScreenSizeFromElement = useScreenSizeFromElement;
|
|
1714
2063
|
exports.useScreenSizeFromWindow = useScreenSizeFromWindow;
|