@micromag/core 0.3.459 → 0.3.463
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/vendor.css +1 -1
- package/es/components.js +4 -4
- package/es/contexts.js +31 -9
- package/es/hooks.js +251 -16
- package/es/index.js +7 -13
- package/lib/components.js +4 -4
- package/lib/contexts.js +32 -10
- package/lib/hooks.js +252 -15
- package/lib/index.js +7 -13
- package/package.json +3 -3
package/es/components.js
CHANGED
|
@@ -1084,14 +1084,14 @@ var PlayIcon = function PlayIcon(_ref) {
|
|
|
1084
1084
|
var color = _ref.color,
|
|
1085
1085
|
className = _ref.className;
|
|
1086
1086
|
return /*#__PURE__*/React.createElement("svg", {
|
|
1087
|
-
width: "
|
|
1088
|
-
height: "
|
|
1089
|
-
viewBox: "0 0
|
|
1087
|
+
width: "40",
|
|
1088
|
+
height: "45.1",
|
|
1089
|
+
viewBox: "0 0 40 45.1",
|
|
1090
1090
|
fill: "none",
|
|
1091
1091
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1092
1092
|
className: className
|
|
1093
1093
|
}, /*#__PURE__*/React.createElement("path", {
|
|
1094
|
-
d: "
|
|
1094
|
+
d: "M38.2,25.7L5.5,44.6C3,46,0,44.2,0,41.4L0,3.6c0-2.8,3-4.5,5.5-3.1l32.7,18.9C40.6,20.8,40.6,24.3,38.2,25.7z",
|
|
1095
1095
|
fill: color,
|
|
1096
1096
|
stroke: color
|
|
1097
1097
|
}));
|
package/es/contexts.js
CHANGED
|
@@ -825,6 +825,7 @@ var defaultValue$1 = {
|
|
|
825
825
|
paused: false,
|
|
826
826
|
muted: true,
|
|
827
827
|
controls: false,
|
|
828
|
+
controlsSuggestPlay: false,
|
|
828
829
|
controlsVisible: false,
|
|
829
830
|
media: null,
|
|
830
831
|
controlsTheme: defaultControlsThemeValue
|
|
@@ -862,6 +863,7 @@ var usePlaybackMediaRef = function usePlaybackMediaRef(active) {
|
|
|
862
863
|
var propTypes$7 = {
|
|
863
864
|
children: PropTypes.node.isRequired,
|
|
864
865
|
controls: PropTypes.bool,
|
|
866
|
+
controlsSuggestPlay: PropTypes.bool,
|
|
865
867
|
controlsVisible: PropTypes.bool,
|
|
866
868
|
controlsTheme: PropTypes.shape({
|
|
867
869
|
seekBarOnly: PropTypes.bool,
|
|
@@ -878,6 +880,7 @@ var PlaybackProvider = function PlaybackProvider(_ref) {
|
|
|
878
880
|
initialPlaying = _ref.playing,
|
|
879
881
|
paused = _ref.paused,
|
|
880
882
|
initialControls = _ref.controls,
|
|
883
|
+
initialControlsSuggestPlay = _ref.controlsSuggestPlay,
|
|
881
884
|
initialControlsVisible = _ref.controlsVisible,
|
|
882
885
|
initialControlsTheme = _ref.controlsTheme,
|
|
883
886
|
children = _ref.children;
|
|
@@ -897,26 +900,43 @@ var PlaybackProvider = function PlaybackProvider(_ref) {
|
|
|
897
900
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
898
901
|
controls = _useState8[0],
|
|
899
902
|
setControls = _useState8[1];
|
|
900
|
-
var _useState9 = useState(
|
|
903
|
+
var _useState9 = useState(initialControlsSuggestPlay),
|
|
901
904
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
var _useState11 = useState(
|
|
905
|
+
controlsSuggestPlay = _useState10[0],
|
|
906
|
+
setControlsSuggestPlay = _useState10[1];
|
|
907
|
+
var _useState11 = useState(initialControlsVisible),
|
|
905
908
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
906
|
-
|
|
907
|
-
|
|
909
|
+
controlsVisible = _useState12[0],
|
|
910
|
+
setControlsVisible = _useState12[1];
|
|
911
|
+
var _useState13 = useState(initialControlsTheme),
|
|
912
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
913
|
+
controlsTheme = _useState14[0],
|
|
914
|
+
setControlsTheme = _useState14[1];
|
|
908
915
|
var finalSetControls = useCallback(function (newControls) {
|
|
909
916
|
if (newControls) {
|
|
910
917
|
setControls(true);
|
|
911
918
|
setControlsVisible(true);
|
|
919
|
+
setControlsSuggestPlay(false);
|
|
912
920
|
} else {
|
|
913
921
|
setControls(false);
|
|
914
922
|
setControlsVisible(false);
|
|
923
|
+
setControlsSuggestPlay(false);
|
|
915
924
|
}
|
|
916
|
-
}, [setControls, setControlsVisible]);
|
|
925
|
+
}, [setControls, setControlsVisible, setControlsSuggestPlay]);
|
|
917
926
|
var finalSetControlsTheme = useCallback(function (newTheme) {
|
|
918
927
|
setControlsTheme(_objectSpread(_objectSpread({}, defaultControlsThemeValue), newTheme));
|
|
919
928
|
}, [setControlsTheme]);
|
|
929
|
+
var finalSetPlaying = useCallback(function (value) {
|
|
930
|
+
if (value) {
|
|
931
|
+
setControlsSuggestPlay(false);
|
|
932
|
+
}
|
|
933
|
+
setPlaying(value);
|
|
934
|
+
}, [setPlaying, setControlsSuggestPlay]);
|
|
935
|
+
|
|
936
|
+
// Reset on media change
|
|
937
|
+
useEffect(function () {
|
|
938
|
+
setControlsSuggestPlay(false);
|
|
939
|
+
}, [media, setControlsSuggestPlay]);
|
|
920
940
|
var showControls = useCallback(function () {
|
|
921
941
|
return setControlsVisible(true);
|
|
922
942
|
}, [setControlsVisible]);
|
|
@@ -940,20 +960,22 @@ var PlaybackProvider = function PlaybackProvider(_ref) {
|
|
|
940
960
|
muted: muted,
|
|
941
961
|
playing: playing && !paused,
|
|
942
962
|
controls: controls,
|
|
963
|
+
controlsSuggestPlay: controlsSuggestPlay,
|
|
943
964
|
controlsVisible: controlsVisible,
|
|
944
965
|
media: media,
|
|
945
966
|
hasAudio: hasAudio,
|
|
946
967
|
controlsTheme: controlsTheme,
|
|
947
968
|
setMuted: setMuted,
|
|
948
|
-
setPlaying:
|
|
969
|
+
setPlaying: finalSetPlaying,
|
|
949
970
|
setControls: finalSetControls,
|
|
971
|
+
setControlsSuggestPlay: setControlsSuggestPlay,
|
|
950
972
|
setControlsVisible: setControlsVisible,
|
|
951
973
|
setControlsTheme: finalSetControlsTheme,
|
|
952
974
|
showControls: showControls,
|
|
953
975
|
hideControls: hideControls,
|
|
954
976
|
setMedia: setMedia
|
|
955
977
|
};
|
|
956
|
-
}, [muted, playing, paused, controls, controlsVisible, controlsTheme, media, hasAudio, setMuted,
|
|
978
|
+
}, [muted, playing, paused, controls, controlsSuggestPlay, controlsVisible, controlsTheme, media, hasAudio, setMuted, finalSetPlaying, finalSetControls, finalSetControlsTheme, setControlsSuggestPlay, setControlsVisible, setControlsTheme, showControls, hideControls, setMedia]);
|
|
957
979
|
return /*#__PURE__*/React.createElement(PlaybackContext.Provider, {
|
|
958
980
|
value: value
|
|
959
981
|
}, children);
|
package/es/hooks.js
CHANGED
|
@@ -16,6 +16,7 @@ import screenfull from 'screenfull';
|
|
|
16
16
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
17
17
|
import isArray from 'lodash/isArray';
|
|
18
18
|
import isObject from 'lodash/isObject';
|
|
19
|
+
import createDebug from 'debug';
|
|
19
20
|
import raf from 'raf';
|
|
20
21
|
import { useScreensManager, useFieldsManager, useTracking, useScreen } from '@micromag/core/contexts';
|
|
21
22
|
import { match } from 'css-mediaquery';
|
|
@@ -972,6 +973,10 @@ var useMediaApi = function useMediaApi() {
|
|
|
972
973
|
setPlaying(true);
|
|
973
974
|
setSuspended(false);
|
|
974
975
|
}, [initialPlay, setPlaying, onPlay]);
|
|
976
|
+
var onCustomPlaying = useCallback(function () {
|
|
977
|
+
setPlaying(true);
|
|
978
|
+
setSuspended(false);
|
|
979
|
+
}, []);
|
|
975
980
|
var onCustomPause = useCallback(function (e) {
|
|
976
981
|
var eventMedia = e.currentTarget;
|
|
977
982
|
setPlaying(false);
|
|
@@ -1072,6 +1077,7 @@ var useMediaApi = function useMediaApi() {
|
|
|
1072
1077
|
if (media !== null) {
|
|
1073
1078
|
media.addEventListener('volumechange', onCustomVolumeChange);
|
|
1074
1079
|
media.addEventListener('play', onCustomPlay);
|
|
1080
|
+
media.addEventListener('playing', onCustomPlaying);
|
|
1075
1081
|
media.addEventListener('pause', onCustomPause);
|
|
1076
1082
|
media.addEventListener('ended', onCustomEnded);
|
|
1077
1083
|
media.addEventListener('seeked', onCustomSeeked);
|
|
@@ -1085,6 +1091,7 @@ var useMediaApi = function useMediaApi() {
|
|
|
1085
1091
|
if (media !== null) {
|
|
1086
1092
|
media.removeEventListener('volumechange', onCustomVolumeChange);
|
|
1087
1093
|
media.removeEventListener('play', onCustomPlay);
|
|
1094
|
+
media.removeEventListener('playing', onCustomPlaying);
|
|
1088
1095
|
media.removeEventListener('pause', onCustomPause);
|
|
1089
1096
|
media.removeEventListener('ended', onCustomEnded);
|
|
1090
1097
|
media.removeEventListener('seeked', onCustomSeeked);
|
|
@@ -1180,6 +1187,232 @@ var useMediaApi = function useMediaApi() {
|
|
|
1180
1187
|
};
|
|
1181
1188
|
};
|
|
1182
1189
|
|
|
1190
|
+
var useMediaBuffering = function useMediaBuffering() {
|
|
1191
|
+
var mediaElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
1192
|
+
var _useState = useState(false),
|
|
1193
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1194
|
+
buffering = _useState2[0],
|
|
1195
|
+
setBuffering = _useState2[1];
|
|
1196
|
+
useEffect(function () {
|
|
1197
|
+
if (mediaElement === null) {
|
|
1198
|
+
return function () {};
|
|
1199
|
+
}
|
|
1200
|
+
function onBufferingEvent(e) {
|
|
1201
|
+
// networkstate
|
|
1202
|
+
if (mediaElement.networkState === mediaElement.NETWORK_LOADING) {
|
|
1203
|
+
// The user agent is actively trying to download data.
|
|
1204
|
+
console.log('buffering? NETWORK_LOADING', e);
|
|
1205
|
+
setBuffering(true);
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
// readystate
|
|
1209
|
+
if (mediaElement.readyState < mediaElement.HAVE_FUTURE_DATA) {
|
|
1210
|
+
// There is not enough data to keep playing from this point
|
|
1211
|
+
console.log('buffering? You have very little data', e);
|
|
1212
|
+
setBuffering(true);
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
function onPlay() {
|
|
1216
|
+
setBuffering(false);
|
|
1217
|
+
}
|
|
1218
|
+
function onPlaying() {
|
|
1219
|
+
setBuffering(false);
|
|
1220
|
+
}
|
|
1221
|
+
function onPause() {
|
|
1222
|
+
setBuffering(false);
|
|
1223
|
+
}
|
|
1224
|
+
function onEnded() {
|
|
1225
|
+
setBuffering(false);
|
|
1226
|
+
}
|
|
1227
|
+
mediaElement.addEventListener('waiting', onBufferingEvent);
|
|
1228
|
+
mediaElement.addEventListener('stalled', onBufferingEvent);
|
|
1229
|
+
mediaElement.addEventListener('play', onPlay);
|
|
1230
|
+
mediaElement.addEventListener('playing', onPlaying);
|
|
1231
|
+
mediaElement.addEventListener('pause', onPause);
|
|
1232
|
+
mediaElement.addEventListener('ended', onEnded);
|
|
1233
|
+
return function () {
|
|
1234
|
+
mediaElement.removeEventListener('waiting', onBufferingEvent);
|
|
1235
|
+
mediaElement.removeEventListener('stalled', onBufferingEvent);
|
|
1236
|
+
mediaElement.removeEventListener('play', onPlay);
|
|
1237
|
+
mediaElement.removeEventListener('playing', onPlaying);
|
|
1238
|
+
mediaElement.removeEventListener('pause', onPause);
|
|
1239
|
+
mediaElement.removeEventListener('ended', onEnded);
|
|
1240
|
+
};
|
|
1241
|
+
}, [mediaElement]);
|
|
1242
|
+
|
|
1243
|
+
// useEffect(() => {
|
|
1244
|
+
// if (mediaElement === null) {
|
|
1245
|
+
// return () => {};
|
|
1246
|
+
// }
|
|
1247
|
+
// let lastPlayPos = 0;
|
|
1248
|
+
// let currentPlayPos = 0;
|
|
1249
|
+
// let bufferingDetected = false;
|
|
1250
|
+
|
|
1251
|
+
// function checkBuffering(player, checkInterval) {
|
|
1252
|
+
// currentPlayPos = player.currentTime;
|
|
1253
|
+
|
|
1254
|
+
// // checking offset should be at most the check interval
|
|
1255
|
+
// // but allow for some margin
|
|
1256
|
+
// const offset = (checkInterval - 20) / 1000;
|
|
1257
|
+
|
|
1258
|
+
// // if no buffering is currently detected,
|
|
1259
|
+
// // and the position does not seem to increase
|
|
1260
|
+
// // and the player isn't manually paused...
|
|
1261
|
+
// if (!bufferingDetected && currentPlayPos < lastPlayPos + offset && !player.paused) {
|
|
1262
|
+
// console.log('buffering!');
|
|
1263
|
+
// bufferingDetected = true;
|
|
1264
|
+
// }
|
|
1265
|
+
|
|
1266
|
+
// // if we were buffering but the player has advanced,
|
|
1267
|
+
// // then there is no buffering
|
|
1268
|
+
// if (bufferingDetected && currentPlayPos > lastPlayPos + offset && !player.paused) {
|
|
1269
|
+
// console.log('not buffering anymore!');
|
|
1270
|
+
// bufferingDetected = false;
|
|
1271
|
+
// }
|
|
1272
|
+
// lastPlayPos = currentPlayPos;
|
|
1273
|
+
|
|
1274
|
+
// return bufferingDetected;
|
|
1275
|
+
// }
|
|
1276
|
+
|
|
1277
|
+
// const id = setInterval(() => {
|
|
1278
|
+
// setBuffering(checkBuffering(mediaElement, interval));
|
|
1279
|
+
// }, interval);
|
|
1280
|
+
|
|
1281
|
+
// return () => {
|
|
1282
|
+
// clearInterval(id);
|
|
1283
|
+
// };
|
|
1284
|
+
// }, [mediaElement, interval]);
|
|
1285
|
+
|
|
1286
|
+
return {
|
|
1287
|
+
buffering: buffering
|
|
1288
|
+
};
|
|
1289
|
+
};
|
|
1290
|
+
|
|
1291
|
+
var useMediaState = function useMediaState() {
|
|
1292
|
+
var mediaElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
1293
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1294
|
+
_ref$playing = _ref.playing,
|
|
1295
|
+
wantedPlaying = _ref$playing === void 0 ? false : _ref$playing,
|
|
1296
|
+
_ref$muted = _ref.muted,
|
|
1297
|
+
wantedMuted = _ref$muted === void 0 ? false : _ref$muted;
|
|
1298
|
+
var debug = useMemo(function () {
|
|
1299
|
+
var mediaKey = mediaElement !== null && isString(mediaElement.src) ? mediaElement.src.split('/')[mediaElement.src.split('/').length - 1].split('#')[0] || null : null;
|
|
1300
|
+
return createDebug(mediaKey !== null ? "micromag:media:".concat(mediaKey) : 'micromag:media');
|
|
1301
|
+
}, [mediaElement]);
|
|
1302
|
+
var _useState = useState(wantedPlaying),
|
|
1303
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1304
|
+
playing = _useState2[0],
|
|
1305
|
+
setPlaying = _useState2[1];
|
|
1306
|
+
var _useState3 = useState(false),
|
|
1307
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
1308
|
+
buffering = _useState4[0],
|
|
1309
|
+
setBuffering = _useState4[1];
|
|
1310
|
+
var _useState5 = useState(mediaElement !== null && (mediaElement.muted || mediaElement.volume === 0) || wantedMuted),
|
|
1311
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
1312
|
+
muted = _useState6[0],
|
|
1313
|
+
setMuted = _useState6[1];
|
|
1314
|
+
useEffect(function () {
|
|
1315
|
+
debug('State change %o', {
|
|
1316
|
+
playing: playing,
|
|
1317
|
+
buffering: buffering,
|
|
1318
|
+
muted: muted
|
|
1319
|
+
});
|
|
1320
|
+
}, [playing, buffering, muted, debug]);
|
|
1321
|
+
useEffect(function () {
|
|
1322
|
+
if (mediaElement === null) {
|
|
1323
|
+
setPlaying(wantedPlaying);
|
|
1324
|
+
setBuffering(false);
|
|
1325
|
+
setMuted(wantedMuted);
|
|
1326
|
+
debug('Unset media: %o', {
|
|
1327
|
+
wantedPlaying: wantedPlaying,
|
|
1328
|
+
wantedMuted: wantedMuted
|
|
1329
|
+
});
|
|
1330
|
+
}
|
|
1331
|
+
}, [mediaElement, debug, wantedPlaying, wantedMuted]);
|
|
1332
|
+
useEffect(function () {
|
|
1333
|
+
if (mediaElement === null) {
|
|
1334
|
+
return function () {};
|
|
1335
|
+
}
|
|
1336
|
+
function onBufferingEvent(e) {
|
|
1337
|
+
// networkstate
|
|
1338
|
+
if (mediaElement.networkState === mediaElement.NETWORK_LOADING) {
|
|
1339
|
+
debug('onBufferingEvent: NETWORK_LOADING');
|
|
1340
|
+
setBuffering(true);
|
|
1341
|
+
}
|
|
1342
|
+
|
|
1343
|
+
// readystate
|
|
1344
|
+
if (mediaElement.readyState < mediaElement.HAVE_FUTURE_DATA) {
|
|
1345
|
+
debug('onBufferingEvent: HAVE_FUTURE_DATA');
|
|
1346
|
+
setBuffering(true);
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1349
|
+
function onPlay() {
|
|
1350
|
+
debug('onPlay');
|
|
1351
|
+
setPlaying(true);
|
|
1352
|
+
setBuffering(false);
|
|
1353
|
+
}
|
|
1354
|
+
function onPlaying() {
|
|
1355
|
+
debug('onPlaying');
|
|
1356
|
+
setPlaying(true);
|
|
1357
|
+
setBuffering(false);
|
|
1358
|
+
}
|
|
1359
|
+
function onTimeUpdate(e) {
|
|
1360
|
+
debug('onTimeUpdate');
|
|
1361
|
+
setPlaying(!e.currentTarget.paused && !e.currentTarget.ended);
|
|
1362
|
+
setBuffering(false);
|
|
1363
|
+
}
|
|
1364
|
+
function onPause() {
|
|
1365
|
+
debug('onPause');
|
|
1366
|
+
setPlaying(false);
|
|
1367
|
+
setBuffering(false);
|
|
1368
|
+
}
|
|
1369
|
+
function onEnded() {
|
|
1370
|
+
debug('onEnded');
|
|
1371
|
+
setPlaying(false);
|
|
1372
|
+
setBuffering(false);
|
|
1373
|
+
}
|
|
1374
|
+
function onSuspend(e) {
|
|
1375
|
+
debug('onSuspend');
|
|
1376
|
+
setPlaying(!e.currentTarget.paused && !e.currentTarget.ended);
|
|
1377
|
+
setBuffering(false);
|
|
1378
|
+
}
|
|
1379
|
+
function onVolumeChange() {
|
|
1380
|
+
setMuted(mediaElement.muted || mediaElement.volume === 0);
|
|
1381
|
+
}
|
|
1382
|
+
if (mediaElement.paused || mediaElement.ended) {
|
|
1383
|
+
setPlaying(false);
|
|
1384
|
+
}
|
|
1385
|
+
if (muted !== mediaElement.muted) {
|
|
1386
|
+
setMuted(mediaElement.muted);
|
|
1387
|
+
}
|
|
1388
|
+
mediaElement.addEventListener('waiting', onBufferingEvent);
|
|
1389
|
+
mediaElement.addEventListener('stalled', onBufferingEvent);
|
|
1390
|
+
mediaElement.addEventListener('timeupdate', onTimeUpdate);
|
|
1391
|
+
mediaElement.addEventListener('play', onPlay);
|
|
1392
|
+
mediaElement.addEventListener('playing', onPlaying);
|
|
1393
|
+
mediaElement.addEventListener('pause', onPause);
|
|
1394
|
+
mediaElement.addEventListener('suspend', onSuspend);
|
|
1395
|
+
mediaElement.addEventListener('ended', onEnded);
|
|
1396
|
+
mediaElement.addEventListener('volumechange', onVolumeChange);
|
|
1397
|
+
return function () {
|
|
1398
|
+
mediaElement.removeEventListener('waiting', onBufferingEvent);
|
|
1399
|
+
mediaElement.removeEventListener('stalled', onBufferingEvent);
|
|
1400
|
+
mediaElement.removeEventListener('timeupdate', onTimeUpdate);
|
|
1401
|
+
mediaElement.removeEventListener('play', onPlay);
|
|
1402
|
+
mediaElement.removeEventListener('playing', onPlaying);
|
|
1403
|
+
mediaElement.removeEventListener('pause', onPause);
|
|
1404
|
+
mediaElement.removeEventListener('suspend', onSuspend);
|
|
1405
|
+
mediaElement.removeEventListener('ended', onEnded);
|
|
1406
|
+
mediaElement.removeEventListener('volumechange', onVolumeChange);
|
|
1407
|
+
};
|
|
1408
|
+
}, [mediaElement, debug]);
|
|
1409
|
+
return {
|
|
1410
|
+
playing: playing,
|
|
1411
|
+
muted: muted,
|
|
1412
|
+
buffering: buffering
|
|
1413
|
+
};
|
|
1414
|
+
};
|
|
1415
|
+
|
|
1183
1416
|
function useMediaCurrentTime(element) {
|
|
1184
1417
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1185
1418
|
_ref$id = _ref.id,
|
|
@@ -1347,28 +1580,31 @@ function useMediaProgress(media) {
|
|
|
1347
1580
|
if (media === null) {
|
|
1348
1581
|
return function () {};
|
|
1349
1582
|
}
|
|
1350
|
-
function onResume() {
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1583
|
+
function onResume(e) {
|
|
1584
|
+
setPlaying(true);
|
|
1585
|
+
var newProgress = media.currentTime / media.duration;
|
|
1586
|
+
updateProgress(newProgress);
|
|
1587
|
+
}
|
|
1588
|
+
function onUpdate(e) {
|
|
1589
|
+
setPlaying(!e.currentTarget.paused && !e.currentTarget.ended);
|
|
1590
|
+
var newProgress = media.currentTime / media.duration;
|
|
1591
|
+
updateProgress(newProgress);
|
|
1355
1592
|
}
|
|
1356
1593
|
function onPause() {
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
updateProgress(media.currentTime / media.duration);
|
|
1594
|
+
setPlaying(false);
|
|
1595
|
+
var newProgress = media.currentTime / media.duration;
|
|
1596
|
+
updateProgress(newProgress);
|
|
1361
1597
|
}
|
|
1362
1598
|
media.addEventListener('play', onResume);
|
|
1363
|
-
media.addEventListener('seeked', onResume);
|
|
1364
1599
|
media.addEventListener('playing', onResume);
|
|
1365
|
-
|
|
1600
|
+
media.addEventListener('seeked', onUpdate);
|
|
1601
|
+
// media.addEventListener('timeupdate', onUpdate);
|
|
1366
1602
|
media.addEventListener('pause', onPause);
|
|
1367
1603
|
media.addEventListener('ended', onPause);
|
|
1368
1604
|
media.addEventListener('waiting', onPause);
|
|
1369
1605
|
media.addEventListener('stalled', onPause);
|
|
1370
1606
|
media.addEventListener('seeking', onPause);
|
|
1371
|
-
|
|
1607
|
+
media.addEventListener('suspend', onUpdate);
|
|
1372
1608
|
// if (media.paused) {
|
|
1373
1609
|
// onPause();
|
|
1374
1610
|
// } else {
|
|
@@ -1384,7 +1620,7 @@ function useMediaProgress(media) {
|
|
|
1384
1620
|
media.removeEventListener('waiting', onPause);
|
|
1385
1621
|
media.removeEventListener('stalled', onPause);
|
|
1386
1622
|
media.removeEventListener('seeking', onPause);
|
|
1387
|
-
|
|
1623
|
+
media.removeEventListener('suspend', onUpdate);
|
|
1388
1624
|
};
|
|
1389
1625
|
}, [media, updateProgress, setPlaying, playing]);
|
|
1390
1626
|
useEffect(function () {
|
|
@@ -1399,9 +1635,8 @@ function useMediaProgress(media) {
|
|
|
1399
1635
|
}
|
|
1400
1636
|
var newTime = Date.now() / 1000;
|
|
1401
1637
|
var elapsed = newTime - updateTimeRef.current;
|
|
1402
|
-
updateTimeRef.current = newTime;
|
|
1403
1638
|
var step = elapsed / duration;
|
|
1404
|
-
var newProgress = realProgressRef.current + step;
|
|
1639
|
+
var newProgress = realProgressRef.current < 0.1 ? media.currentTime / media.duration : realProgressRef.current + step;
|
|
1405
1640
|
updateProgress(newProgress);
|
|
1406
1641
|
handle = raf(tick);
|
|
1407
1642
|
}
|
|
@@ -2103,4 +2338,4 @@ var useTrackMedia = function useTrackMedia() {
|
|
|
2103
2338
|
var eventsManager = typeof window !== 'undefined' ? new EventsManager(window) : null;
|
|
2104
2339
|
var useWindowEvent = createUseEvent(eventsManager);
|
|
2105
2340
|
|
|
2106
|
-
export { getObserver, useActivityDetector, useAnimationFrame, useDebounced as useDebounce, useDimensionObserver, useDocumentEvent, useDragProgress, useForm, useFormTransition, useFormattedDate, useFormattedTime, useFullscreen, useIntersectionObserver, useIsVisible, useLoadedFonts, useLongPress, useMediaApi, useMediaCurrentTime, useMediaDuration, useMediaLoad, useMediaProgress, useMediaReady, useMediaThumbnail, useMediaWaveform, useMediasParser, useObserver, useParsedStory, useProgressSteps, useResizeObserver, useScreenSizeFromElement, useScreenSizeFromWindow, useSpringValue, useSwipe, useThemeParser, useTrackEvent, useTrackMedia, useTrackScreenEvent, useTrackScreenMedia, useTrackScreenView, useWindowEvent };
|
|
2341
|
+
export { getObserver, useActivityDetector, useAnimationFrame, useDebounced as useDebounce, useDimensionObserver, useDocumentEvent, useDragProgress, useForm, useFormTransition, useFormattedDate, useFormattedTime, useFullscreen, useIntersectionObserver, useIsVisible, useLoadedFonts, useLongPress, useMediaApi, useMediaBuffering, useMediaCurrentTime, useMediaDuration, useMediaLoad, useMediaProgress, useMediaReady, useMediaState, useMediaThumbnail, useMediaWaveform, useMediasParser, useObserver, useParsedStory, useProgressSteps, useResizeObserver, useScreenSizeFromElement, useScreenSizeFromWindow, useSpringValue, useSwipe, useThemeParser, useTrackEvent, useTrackMedia, useTrackScreenEvent, useTrackScreenMedia, useTrackScreenView, useWindowEvent };
|
package/es/index.js
CHANGED
|
@@ -9,8 +9,8 @@ import isArray from 'lodash/isArray';
|
|
|
9
9
|
import isObject from 'lodash/isObject';
|
|
10
10
|
import uniqWith from 'lodash/uniqWith';
|
|
11
11
|
import sortBy from 'lodash/sortBy';
|
|
12
|
+
import _callSuper from '@babel/runtime/helpers/callSuper';
|
|
12
13
|
import _inherits from '@babel/runtime/helpers/inherits';
|
|
13
|
-
import _createSuper from '@babel/runtime/helpers/createSuper';
|
|
14
14
|
import EventEmitter from 'wolfy87-eventemitter';
|
|
15
15
|
import 'lodash/isNumber';
|
|
16
16
|
import '@babel/runtime/helpers/regeneratorRuntime';
|
|
@@ -1012,12 +1012,11 @@ var getComponentFromName = function getComponentFromName() {
|
|
|
1012
1012
|
|
|
1013
1013
|
var ComponentsManager = /*#__PURE__*/function (_EventEmitter) {
|
|
1014
1014
|
_inherits(ComponentsManager, _EventEmitter);
|
|
1015
|
-
var _super = _createSuper(ComponentsManager);
|
|
1016
1015
|
function ComponentsManager() {
|
|
1017
1016
|
var _this;
|
|
1018
1017
|
var components = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
1019
1018
|
_classCallCheck(this, ComponentsManager);
|
|
1020
|
-
_this =
|
|
1019
|
+
_this = _callSuper(this, ComponentsManager);
|
|
1021
1020
|
_this.components = components;
|
|
1022
1021
|
return _this;
|
|
1023
1022
|
}
|
|
@@ -1086,12 +1085,11 @@ var ComponentsManager = /*#__PURE__*/function (_EventEmitter) {
|
|
|
1086
1085
|
|
|
1087
1086
|
var DefinitionsManager = /*#__PURE__*/function (_EventEmitter) {
|
|
1088
1087
|
_inherits(DefinitionsManager, _EventEmitter);
|
|
1089
|
-
var _super = _createSuper(DefinitionsManager);
|
|
1090
1088
|
function DefinitionsManager() {
|
|
1091
1089
|
var _this;
|
|
1092
1090
|
var definitions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
1093
1091
|
_classCallCheck(this, DefinitionsManager);
|
|
1094
|
-
_this =
|
|
1092
|
+
_this = _callSuper(this, DefinitionsManager);
|
|
1095
1093
|
_this.definitions = definitions || [];
|
|
1096
1094
|
return _this;
|
|
1097
1095
|
}
|
|
@@ -1166,11 +1164,10 @@ var DefinitionsManager = /*#__PURE__*/function (_EventEmitter) {
|
|
|
1166
1164
|
|
|
1167
1165
|
var EventsManager = /*#__PURE__*/function (_EventEmitter) {
|
|
1168
1166
|
_inherits(EventsManager, _EventEmitter);
|
|
1169
|
-
var _super = _createSuper(EventsManager);
|
|
1170
1167
|
function EventsManager(element) {
|
|
1171
1168
|
var _this;
|
|
1172
1169
|
_classCallCheck(this, EventsManager);
|
|
1173
|
-
_this =
|
|
1170
|
+
_this = _callSuper(this, EventsManager);
|
|
1174
1171
|
_this.element = element;
|
|
1175
1172
|
_this.events = {};
|
|
1176
1173
|
_this.listeners = {};
|
|
@@ -1228,10 +1225,9 @@ var EventsManager = /*#__PURE__*/function (_EventEmitter) {
|
|
|
1228
1225
|
|
|
1229
1226
|
var FieldsManager = /*#__PURE__*/function (_DefinitionsManager) {
|
|
1230
1227
|
_inherits(FieldsManager, _DefinitionsManager);
|
|
1231
|
-
var _super = _createSuper(FieldsManager);
|
|
1232
1228
|
function FieldsManager() {
|
|
1233
1229
|
_classCallCheck(this, FieldsManager);
|
|
1234
|
-
return
|
|
1230
|
+
return _callSuper(this, FieldsManager, arguments);
|
|
1235
1231
|
}
|
|
1236
1232
|
_createClass(FieldsManager, [{
|
|
1237
1233
|
key: "filter",
|
|
@@ -1518,10 +1514,9 @@ var MediasParser = /*#__PURE__*/function () {
|
|
|
1518
1514
|
|
|
1519
1515
|
var ScreensManager = /*#__PURE__*/function (_DefinitionsManager) {
|
|
1520
1516
|
_inherits(ScreensManager, _DefinitionsManager);
|
|
1521
|
-
var _super = _createSuper(ScreensManager);
|
|
1522
1517
|
function ScreensManager() {
|
|
1523
1518
|
_classCallCheck(this, ScreensManager);
|
|
1524
|
-
return
|
|
1519
|
+
return _callSuper(this, ScreensManager, arguments);
|
|
1525
1520
|
}
|
|
1526
1521
|
_createClass(ScreensManager, [{
|
|
1527
1522
|
key: "getFields",
|
|
@@ -2152,12 +2147,11 @@ var _excluded = ["value"],
|
|
|
2152
2147
|
_excluded2 = ["value", "currentTime"];
|
|
2153
2148
|
var Tracking = /*#__PURE__*/function (_BaseTracking) {
|
|
2154
2149
|
_inherits(Tracking, _BaseTracking);
|
|
2155
|
-
var _super = _createSuper(Tracking);
|
|
2156
2150
|
function Tracking() {
|
|
2157
2151
|
var _this;
|
|
2158
2152
|
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
2159
2153
|
_classCallCheck(this, Tracking);
|
|
2160
|
-
_this =
|
|
2154
|
+
_this = _callSuper(this, Tracking, [opts]);
|
|
2161
2155
|
var _this$options$variabl = _this.options.variables,
|
|
2162
2156
|
variables = _this$options$variabl === void 0 ? null : _this$options$variabl;
|
|
2163
2157
|
_this.variables = null;
|
package/lib/components.js
CHANGED
|
@@ -1086,14 +1086,14 @@ var PlayIcon = function PlayIcon(_ref) {
|
|
|
1086
1086
|
var color = _ref.color,
|
|
1087
1087
|
className = _ref.className;
|
|
1088
1088
|
return /*#__PURE__*/React.createElement("svg", {
|
|
1089
|
-
width: "
|
|
1090
|
-
height: "
|
|
1091
|
-
viewBox: "0 0
|
|
1089
|
+
width: "40",
|
|
1090
|
+
height: "45.1",
|
|
1091
|
+
viewBox: "0 0 40 45.1",
|
|
1092
1092
|
fill: "none",
|
|
1093
1093
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1094
1094
|
className: className
|
|
1095
1095
|
}, /*#__PURE__*/React.createElement("path", {
|
|
1096
|
-
d: "
|
|
1096
|
+
d: "M38.2,25.7L5.5,44.6C3,46,0,44.2,0,41.4L0,3.6c0-2.8,3-4.5,5.5-3.1l32.7,18.9C40.6,20.8,40.6,24.3,38.2,25.7z",
|
|
1097
1097
|
fill: color,
|
|
1098
1098
|
stroke: color
|
|
1099
1099
|
}));
|
package/lib/contexts.js
CHANGED
|
@@ -826,6 +826,7 @@ var defaultValue$1 = {
|
|
|
826
826
|
paused: false,
|
|
827
827
|
muted: true,
|
|
828
828
|
controls: false,
|
|
829
|
+
controlsSuggestPlay: false,
|
|
829
830
|
controlsVisible: false,
|
|
830
831
|
media: null,
|
|
831
832
|
controlsTheme: defaultControlsThemeValue
|
|
@@ -863,6 +864,7 @@ var usePlaybackMediaRef = function usePlaybackMediaRef(active) {
|
|
|
863
864
|
var propTypes$7 = {
|
|
864
865
|
children: PropTypes.node.isRequired,
|
|
865
866
|
controls: PropTypes.bool,
|
|
867
|
+
controlsSuggestPlay: PropTypes.bool,
|
|
866
868
|
controlsVisible: PropTypes.bool,
|
|
867
869
|
controlsTheme: PropTypes.shape({
|
|
868
870
|
seekBarOnly: PropTypes.bool,
|
|
@@ -879,6 +881,7 @@ var PlaybackProvider = function PlaybackProvider(_ref) {
|
|
|
879
881
|
initialPlaying = _ref.playing,
|
|
880
882
|
paused = _ref.paused,
|
|
881
883
|
initialControls = _ref.controls,
|
|
884
|
+
initialControlsSuggestPlay = _ref.controlsSuggestPlay,
|
|
882
885
|
initialControlsVisible = _ref.controlsVisible,
|
|
883
886
|
initialControlsTheme = _ref.controlsTheme,
|
|
884
887
|
children = _ref.children;
|
|
@@ -898,26 +901,43 @@ var PlaybackProvider = function PlaybackProvider(_ref) {
|
|
|
898
901
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
899
902
|
controls = _useState8[0],
|
|
900
903
|
setControls = _useState8[1];
|
|
901
|
-
var _useState9 = React.useState(
|
|
904
|
+
var _useState9 = React.useState(initialControlsSuggestPlay),
|
|
902
905
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
var _useState11 = React.useState(
|
|
906
|
+
controlsSuggestPlay = _useState10[0],
|
|
907
|
+
setControlsSuggestPlay = _useState10[1];
|
|
908
|
+
var _useState11 = React.useState(initialControlsVisible),
|
|
906
909
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
907
|
-
|
|
908
|
-
|
|
910
|
+
controlsVisible = _useState12[0],
|
|
911
|
+
setControlsVisible = _useState12[1];
|
|
912
|
+
var _useState13 = React.useState(initialControlsTheme),
|
|
913
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
914
|
+
controlsTheme = _useState14[0],
|
|
915
|
+
setControlsTheme = _useState14[1];
|
|
909
916
|
var finalSetControls = React.useCallback(function (newControls) {
|
|
910
917
|
if (newControls) {
|
|
911
918
|
setControls(true);
|
|
912
919
|
setControlsVisible(true);
|
|
920
|
+
setControlsSuggestPlay(false);
|
|
913
921
|
} else {
|
|
914
922
|
setControls(false);
|
|
915
923
|
setControlsVisible(false);
|
|
924
|
+
setControlsSuggestPlay(false);
|
|
916
925
|
}
|
|
917
|
-
}, [setControls, setControlsVisible]);
|
|
926
|
+
}, [setControls, setControlsVisible, setControlsSuggestPlay]);
|
|
918
927
|
var finalSetControlsTheme = React.useCallback(function (newTheme) {
|
|
919
928
|
setControlsTheme(_objectSpread(_objectSpread({}, defaultControlsThemeValue), newTheme));
|
|
920
929
|
}, [setControlsTheme]);
|
|
930
|
+
var finalSetPlaying = React.useCallback(function (value) {
|
|
931
|
+
if (value) {
|
|
932
|
+
setControlsSuggestPlay(false);
|
|
933
|
+
}
|
|
934
|
+
setPlaying(value);
|
|
935
|
+
}, [setPlaying, setControlsSuggestPlay]);
|
|
936
|
+
|
|
937
|
+
// Reset on media change
|
|
938
|
+
React.useEffect(function () {
|
|
939
|
+
setControlsSuggestPlay(false);
|
|
940
|
+
}, [media, setControlsSuggestPlay]);
|
|
921
941
|
var showControls = React.useCallback(function () {
|
|
922
942
|
return setControlsVisible(true);
|
|
923
943
|
}, [setControlsVisible]);
|
|
@@ -941,20 +961,22 @@ var PlaybackProvider = function PlaybackProvider(_ref) {
|
|
|
941
961
|
muted: muted,
|
|
942
962
|
playing: playing && !paused,
|
|
943
963
|
controls: controls,
|
|
964
|
+
controlsSuggestPlay: controlsSuggestPlay,
|
|
944
965
|
controlsVisible: controlsVisible,
|
|
945
966
|
media: media,
|
|
946
967
|
hasAudio: hasAudio,
|
|
947
968
|
controlsTheme: controlsTheme,
|
|
948
969
|
setMuted: setMuted,
|
|
949
|
-
setPlaying:
|
|
970
|
+
setPlaying: finalSetPlaying,
|
|
950
971
|
setControls: finalSetControls,
|
|
972
|
+
setControlsSuggestPlay: setControlsSuggestPlay,
|
|
951
973
|
setControlsVisible: setControlsVisible,
|
|
952
974
|
setControlsTheme: finalSetControlsTheme,
|
|
953
975
|
showControls: showControls,
|
|
954
976
|
hideControls: hideControls,
|
|
955
977
|
setMedia: setMedia
|
|
956
978
|
};
|
|
957
|
-
}, [muted, playing, paused, controls, controlsVisible, controlsTheme, media, hasAudio, setMuted,
|
|
979
|
+
}, [muted, playing, paused, controls, controlsSuggestPlay, controlsVisible, controlsTheme, media, hasAudio, setMuted, finalSetPlaying, finalSetControls, finalSetControlsTheme, setControlsSuggestPlay, setControlsVisible, setControlsTheme, showControls, hideControls, setMedia]);
|
|
958
980
|
return /*#__PURE__*/React.createElement(PlaybackContext.Provider, {
|
|
959
981
|
value: value
|
|
960
982
|
}, children);
|
|
@@ -1954,7 +1976,7 @@ var VisitorProvider = function VisitorProvider(_ref) {
|
|
|
1954
1976
|
VisitorProvider.propTypes = propTypes;
|
|
1955
1977
|
VisitorProvider.defaultProps = defaultProps;
|
|
1956
1978
|
|
|
1957
|
-
Object.defineProperty(exports,
|
|
1979
|
+
Object.defineProperty(exports, "TrackingContext", {
|
|
1958
1980
|
enumerable: true,
|
|
1959
1981
|
get: function () { return tracking.TrackingContext; }
|
|
1960
1982
|
});
|