@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/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
|
|
@@ -1158,25 +1394,117 @@ var useMediasParser = function useMediasParser() {
|
|
|
1158
1394
|
|
|
1159
1395
|
function useMediaThumbnail(media) {
|
|
1160
1396
|
var file = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
1397
|
+
var thumbnail = react.useMemo(function () {
|
|
1398
|
+
if (isObject__default["default"](file)) {
|
|
1399
|
+
return file;
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
var _ref = media || {},
|
|
1403
|
+
_ref$thumbnail_url = _ref.thumbnail_url,
|
|
1404
|
+
defaultThumbnailUrl = _ref$thumbnail_url === void 0 ? null : _ref$thumbnail_url,
|
|
1405
|
+
_ref$files = _ref.files,
|
|
1406
|
+
files = _ref$files === void 0 ? null : _ref$files,
|
|
1407
|
+
_ref$metadata = _ref.metadata,
|
|
1408
|
+
metadata = _ref$metadata === void 0 ? null : _ref$metadata;
|
|
1161
1409
|
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
_ref$files = _ref.files,
|
|
1166
|
-
files = _ref$files === void 0 ? null : _ref$files;
|
|
1410
|
+
var _ref2 = metadata || {},
|
|
1411
|
+
mediaWidth = _ref2.width,
|
|
1412
|
+
mediaHeight = _ref2.height;
|
|
1167
1413
|
|
|
1168
|
-
var thumbnailUrl = react.useMemo(function () {
|
|
1169
1414
|
var filesArray = utils.getMediaFilesAsArray(files) || [];
|
|
1170
1415
|
|
|
1171
|
-
var
|
|
1172
|
-
var handle =
|
|
1416
|
+
var _ref3 = (file !== null ? filesArray.find(function (_ref4) {
|
|
1417
|
+
var handle = _ref4.handle;
|
|
1173
1418
|
return handle === file;
|
|
1174
1419
|
}) || null : null) || {},
|
|
1175
|
-
url =
|
|
1420
|
+
_ref3$url = _ref3.url,
|
|
1421
|
+
url = _ref3$url === void 0 ? null : _ref3$url;
|
|
1422
|
+
|
|
1423
|
+
return url !== null || defaultThumbnailUrl !== null ? {
|
|
1424
|
+
url: url || defaultThumbnailUrl,
|
|
1425
|
+
metadata: {
|
|
1426
|
+
width: mediaWidth,
|
|
1427
|
+
height: mediaHeight
|
|
1428
|
+
}
|
|
1429
|
+
} : null;
|
|
1430
|
+
}, [media, file]);
|
|
1431
|
+
return thumbnail;
|
|
1432
|
+
}
|
|
1176
1433
|
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1434
|
+
function useMediaWaveform(media) {
|
|
1435
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1436
|
+
_ref$fake = _ref.fake,
|
|
1437
|
+
fake = _ref$fake === void 0 ? false : _ref$fake,
|
|
1438
|
+
_ref$reduceBufferFact = _ref.reduceBufferFactor,
|
|
1439
|
+
reduceBufferFactor = _ref$reduceBufferFact === void 0 ? 100 : _ref$reduceBufferFact;
|
|
1440
|
+
|
|
1441
|
+
var _ref2 = media || {},
|
|
1442
|
+
_ref2$url = _ref2.url,
|
|
1443
|
+
url = _ref2$url === void 0 ? null : _ref2$url,
|
|
1444
|
+
_ref2$metadata = _ref2.metadata,
|
|
1445
|
+
metadata = _ref2$metadata === void 0 ? null : _ref2$metadata;
|
|
1446
|
+
|
|
1447
|
+
var _ref3 = metadata || {},
|
|
1448
|
+
_ref3$waveform = _ref3.waveform,
|
|
1449
|
+
waveform = _ref3$waveform === void 0 ? null : _ref3$waveform;
|
|
1450
|
+
|
|
1451
|
+
var _useState = react.useState(null),
|
|
1452
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
1453
|
+
audioLevels = _useState2[0],
|
|
1454
|
+
setAudioLevels = _useState2[1];
|
|
1455
|
+
|
|
1456
|
+
react.useEffect(function () {
|
|
1457
|
+
var canceled = false;
|
|
1458
|
+
var AudioContext = typeof window !== 'undefined' ? window.AudioContext || window.webkitAudioContext : null;
|
|
1459
|
+
|
|
1460
|
+
if (waveform !== null) {
|
|
1461
|
+
setAudioLevels(waveform.map(function (it) {
|
|
1462
|
+
return (it + 256 / 2) / 256;
|
|
1463
|
+
}));
|
|
1464
|
+
} else if (url !== null && fake) {
|
|
1465
|
+
var fakeLength = 1000;
|
|
1466
|
+
setAudioLevels(_toConsumableArray__default["default"](new Array(fakeLength)).map(function () {
|
|
1467
|
+
return Math.random();
|
|
1468
|
+
}));
|
|
1469
|
+
} else if (url !== null && AudioContext !== null) {
|
|
1470
|
+
fetch(url, {
|
|
1471
|
+
mode: 'cors'
|
|
1472
|
+
}).then(function (response) {
|
|
1473
|
+
if (canceled) {
|
|
1474
|
+
throw new Error('Audio loading canceled');
|
|
1475
|
+
}
|
|
1476
|
+
|
|
1477
|
+
return response.arrayBuffer();
|
|
1478
|
+
}).then(function (arrayBuffer) {
|
|
1479
|
+
if (canceled) {
|
|
1480
|
+
throw new Error('Audio loading canceled');
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
var audioCtx = new AudioContext();
|
|
1484
|
+
return audioCtx.decodeAudioData(arrayBuffer);
|
|
1485
|
+
}).then(function (buffer) {
|
|
1486
|
+
var channelsCount = buffer.numberOfChannels;
|
|
1487
|
+
|
|
1488
|
+
if (channelsCount > 0) {
|
|
1489
|
+
var leftChannelData = buffer.getChannelData(0);
|
|
1490
|
+
setAudioLevels(leftChannelData.reduce(function (newArray, level) {
|
|
1491
|
+
// eslint-disable-next-line no-param-reassign
|
|
1492
|
+
newArray[newArray.length] = Math.abs(level);
|
|
1493
|
+
return newArray;
|
|
1494
|
+
}, []));
|
|
1495
|
+
}
|
|
1496
|
+
})["catch"](function (e) {
|
|
1497
|
+
throw e;
|
|
1498
|
+
});
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
return function () {
|
|
1502
|
+
if (url === null) {
|
|
1503
|
+
canceled = true;
|
|
1504
|
+
}
|
|
1505
|
+
};
|
|
1506
|
+
}, [url, waveform, setAudioLevels, reduceBufferFactor, fake]);
|
|
1507
|
+
return audioLevels;
|
|
1180
1508
|
}
|
|
1181
1509
|
|
|
1182
1510
|
var useParsedStory = function useParsedStory(story) {
|
|
@@ -1212,6 +1540,38 @@ var useParsedStory = function useParsedStory(story) {
|
|
|
1212
1540
|
return newStory;
|
|
1213
1541
|
};
|
|
1214
1542
|
|
|
1543
|
+
function useProgressSteps() {
|
|
1544
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
1545
|
+
_ref$disabled = _ref.disabled,
|
|
1546
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
1547
|
+
currentTime = _ref.currentTime,
|
|
1548
|
+
duration = _ref.duration,
|
|
1549
|
+
_ref$onStep = _ref.onStep,
|
|
1550
|
+
onStep = _ref$onStep === void 0 ? null : _ref$onStep,
|
|
1551
|
+
_ref$steps = _ref.steps,
|
|
1552
|
+
steps = _ref$steps === void 0 ? [0.1, 0.25, 0.5, 0.75, 0.9] : _ref$steps;
|
|
1553
|
+
|
|
1554
|
+
var progressStepsReached = react.useRef({});
|
|
1555
|
+
react.useEffect(function () {
|
|
1556
|
+
if (duration === 0 || disabled) {
|
|
1557
|
+
return;
|
|
1558
|
+
}
|
|
1559
|
+
|
|
1560
|
+
var progress = currentTime / duration;
|
|
1561
|
+
var currentSteps = progressStepsReached.current;
|
|
1562
|
+
var stepsToTrack = steps.filter(function (step) {
|
|
1563
|
+
return progress > step && typeof currentSteps[step] === 'undefined';
|
|
1564
|
+
});
|
|
1565
|
+
stepsToTrack.forEach(function (step) {
|
|
1566
|
+
if (onStep !== null) {
|
|
1567
|
+
onStep(step);
|
|
1568
|
+
}
|
|
1569
|
+
|
|
1570
|
+
currentSteps[step] = true;
|
|
1571
|
+
});
|
|
1572
|
+
}, [duration, currentTime, disabled]);
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1215
1575
|
var _excluded = ["width", "height"];
|
|
1216
1576
|
var devicePixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;
|
|
1217
1577
|
|
|
@@ -1269,34 +1629,31 @@ var useScreenSizeFromElement = function useScreenSizeFromElement() {
|
|
|
1269
1629
|
height = _ref4$height === void 0 ? null : _ref4$height,
|
|
1270
1630
|
opts = _objectWithoutProperties__default["default"](_ref4, _excluded);
|
|
1271
1631
|
|
|
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;
|
|
1632
|
+
var _useDimensionObserver = useDimensionObserver(),
|
|
1633
|
+
ref = _useDimensionObserver.ref,
|
|
1634
|
+
_useDimensionObserver2 = _useDimensionObserver.width,
|
|
1635
|
+
calculatedWidth = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2,
|
|
1636
|
+
_useDimensionObserver3 = _useDimensionObserver.height,
|
|
1637
|
+
calculatedHeight = _useDimensionObserver3 === void 0 ? 0 : _useDimensionObserver3;
|
|
1281
1638
|
|
|
1282
1639
|
var fullWidth = width !== null ? width : calculatedWidth;
|
|
1283
1640
|
var fullHeight = height !== null ? height : calculatedHeight;
|
|
1284
1641
|
|
|
1285
|
-
var
|
|
1286
|
-
|
|
1287
|
-
screenWidth =
|
|
1288
|
-
|
|
1289
|
-
screenHeight =
|
|
1290
|
-
|
|
1291
|
-
withoutMaxSize =
|
|
1292
|
-
|
|
1293
|
-
landscapeMinHeight =
|
|
1294
|
-
|
|
1295
|
-
menuAlwaysOverScreen =
|
|
1296
|
-
|
|
1297
|
-
landscapeMinRatio =
|
|
1298
|
-
|
|
1299
|
-
withoutScale =
|
|
1642
|
+
var _ref5 = opts || {},
|
|
1643
|
+
_ref5$screenWidth = _ref5.screenWidth,
|
|
1644
|
+
screenWidth = _ref5$screenWidth === void 0 ? 320 : _ref5$screenWidth,
|
|
1645
|
+
_ref5$screenHeight = _ref5.screenHeight,
|
|
1646
|
+
screenHeight = _ref5$screenHeight === void 0 ? 480 : _ref5$screenHeight,
|
|
1647
|
+
_ref5$withoutMaxSize = _ref5.withoutMaxSize,
|
|
1648
|
+
withoutMaxSize = _ref5$withoutMaxSize === void 0 ? false : _ref5$withoutMaxSize,
|
|
1649
|
+
_ref5$landscapeMinHei = _ref5.landscapeMinHeight,
|
|
1650
|
+
landscapeMinHeight = _ref5$landscapeMinHei === void 0 ? 600 : _ref5$landscapeMinHei,
|
|
1651
|
+
_ref5$menuAlwaysOverS = _ref5.menuAlwaysOverScreen,
|
|
1652
|
+
menuAlwaysOverScreen = _ref5$menuAlwaysOverS === void 0 ? true : _ref5$menuAlwaysOverS,
|
|
1653
|
+
_ref5$landscapeMinRat = _ref5.landscapeMinRatio,
|
|
1654
|
+
landscapeMinRatio = _ref5$landscapeMinRat === void 0 ? 2 / 3 : _ref5$landscapeMinRat,
|
|
1655
|
+
_ref5$withoutScale = _ref5.withoutScale,
|
|
1656
|
+
withoutScale = _ref5$withoutScale === void 0 ? false : _ref5$withoutScale;
|
|
1300
1657
|
|
|
1301
1658
|
var screenRatio = screenWidth / screenHeight;
|
|
1302
1659
|
var elementRatio = fullWidth / fullHeight;
|
|
@@ -1693,7 +2050,9 @@ var eventsManager = typeof window !== 'undefined' ? new core.EventsManager(windo
|
|
|
1693
2050
|
var useWindowEvent = utils.createUseEvent(eventsManager);
|
|
1694
2051
|
|
|
1695
2052
|
exports.getObserver = getObserver;
|
|
2053
|
+
exports.useActivityDetector = useActivityDetector;
|
|
1696
2054
|
exports.useAnimationFrame = useAnimationFrame;
|
|
2055
|
+
exports.useDimensionObserver = useDimensionObserver;
|
|
1697
2056
|
exports.useDocumentEvent = useDocumentEvent;
|
|
1698
2057
|
exports.useForm = useForm;
|
|
1699
2058
|
exports.useFormTransition = useFormTransition;
|
|
@@ -1705,10 +2064,16 @@ exports.useIsVisible = useIsVisible;
|
|
|
1705
2064
|
exports.useLoadedFonts = useLoadedFonts;
|
|
1706
2065
|
exports.useLongPress = useLongPress;
|
|
1707
2066
|
exports.useMediaApi = useMediaApi;
|
|
2067
|
+
exports.useMediaCurrentTime = useMediaCurrentTime;
|
|
2068
|
+
exports.useMediaDuration = useMediaDuration;
|
|
2069
|
+
exports.useMediaLoad = useMediaLoad;
|
|
2070
|
+
exports.useMediaReady = useMediaReady;
|
|
1708
2071
|
exports.useMediaThumbnail = useMediaThumbnail;
|
|
2072
|
+
exports.useMediaWaveform = useMediaWaveform;
|
|
1709
2073
|
exports.useMediasParser = useMediasParser;
|
|
1710
2074
|
exports.useObserver = useObserver;
|
|
1711
2075
|
exports.useParsedStory = useParsedStory;
|
|
2076
|
+
exports.useProgressSteps = useProgressSteps;
|
|
1712
2077
|
exports.useResizeObserver = useResizeObserver;
|
|
1713
2078
|
exports.useScreenSizeFromElement = useScreenSizeFromElement;
|
|
1714
2079
|
exports.useScreenSizeFromWindow = useScreenSizeFromWindow;
|