@micromag/core 0.3.159 → 0.3.164
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/contexts.js +26 -9
- package/es/hooks.js +135 -11
- package/lib/contexts.js +26 -8
- package/lib/hooks.js +136 -10
- package/package.json +3 -2
package/es/contexts.js
CHANGED
|
@@ -986,7 +986,11 @@ var PlaybackProvider = function PlaybackProvider(_ref) {
|
|
|
986
986
|
return true;
|
|
987
987
|
}
|
|
988
988
|
|
|
989
|
-
|
|
989
|
+
if (typeof media.dataset.hasAudio === 'undefined') {
|
|
990
|
+
return null;
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
return media.dataset.hasAudio === 'true' || media.dataset.hasAudio === true;
|
|
990
994
|
}, [media]);
|
|
991
995
|
var value = useMemo(function () {
|
|
992
996
|
return {
|
|
@@ -1931,10 +1935,17 @@ var useViewerEvents = function useViewerEvents() {
|
|
|
1931
1935
|
|
|
1932
1936
|
return events;
|
|
1933
1937
|
};
|
|
1934
|
-
var
|
|
1938
|
+
var useViewerContainer = function useViewerContainer() {
|
|
1935
1939
|
var _useViewerContext3 = useViewerContext(),
|
|
1936
|
-
|
|
1937
|
-
|
|
1940
|
+
_useViewerContext3$co = _useViewerContext3.containerRef,
|
|
1941
|
+
containerRef = _useViewerContext3$co === void 0 ? null : _useViewerContext3$co;
|
|
1942
|
+
|
|
1943
|
+
return containerRef !== null ? containerRef.current : null;
|
|
1944
|
+
};
|
|
1945
|
+
var useViewerInteraction = function useViewerInteraction() {
|
|
1946
|
+
var _useViewerContext4 = useViewerContext(),
|
|
1947
|
+
disableInteraction = _useViewerContext4.disableInteraction,
|
|
1948
|
+
enableInteraction = _useViewerContext4.enableInteraction;
|
|
1938
1949
|
|
|
1939
1950
|
return {
|
|
1940
1951
|
disableInteraction: disableInteraction,
|
|
@@ -1942,9 +1953,9 @@ var useViewerInteraction = function useViewerInteraction() {
|
|
|
1942
1953
|
};
|
|
1943
1954
|
};
|
|
1944
1955
|
var useViewerWebView = function useViewerWebView() {
|
|
1945
|
-
var
|
|
1946
|
-
webView =
|
|
1947
|
-
setWebView =
|
|
1956
|
+
var _useViewerContext5 = useViewerContext(),
|
|
1957
|
+
webView = _useViewerContext5.webView,
|
|
1958
|
+
setWebView = _useViewerContext5.setWebView;
|
|
1948
1959
|
|
|
1949
1960
|
var value = useMemo(function () {
|
|
1950
1961
|
return _objectSpread(_objectSpread({}, webView), {}, {
|
|
@@ -1967,6 +1978,10 @@ var useViewerWebView = function useViewerWebView() {
|
|
|
1967
1978
|
var propTypes$1 = {
|
|
1968
1979
|
children: PropTypes.node.isRequired,
|
|
1969
1980
|
events: PropTypes.instanceOf(EventEmitter),
|
|
1981
|
+
containerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
|
|
1982
|
+
// eslint-disable-next-line react/forbid-prop-types
|
|
1983
|
+
current: PropTypes.any
|
|
1984
|
+
})]),
|
|
1970
1985
|
menuVisible: PropTypes.bool,
|
|
1971
1986
|
menuOverScreen: PropTypes.bool,
|
|
1972
1987
|
topHeight: PropTypes.number,
|
|
@@ -1982,6 +1997,7 @@ var defaultProps$1 = _objectSpread({}, defaultValue);
|
|
|
1982
1997
|
|
|
1983
1998
|
var ViewerProvider = function ViewerProvider(_ref) {
|
|
1984
1999
|
var children = _ref.children,
|
|
2000
|
+
containerRef = _ref.containerRef,
|
|
1985
2001
|
events = _ref.events,
|
|
1986
2002
|
menuVisible = _ref.menuVisible,
|
|
1987
2003
|
menuOverScreen = _ref.menuOverScreen,
|
|
@@ -2000,6 +2016,7 @@ var ViewerProvider = function ViewerProvider(_ref) {
|
|
|
2000
2016
|
|
|
2001
2017
|
var value = useMemo(function () {
|
|
2002
2018
|
return {
|
|
2019
|
+
containerRef: containerRef,
|
|
2003
2020
|
events: events,
|
|
2004
2021
|
menuVisible: menuVisible,
|
|
2005
2022
|
menuOverScreen: menuOverScreen,
|
|
@@ -2013,7 +2030,7 @@ var ViewerProvider = function ViewerProvider(_ref) {
|
|
|
2013
2030
|
webView: webView,
|
|
2014
2031
|
setWebView: setWebView
|
|
2015
2032
|
};
|
|
2016
|
-
}, [events, menuVisible, menuOverScreen, topHeight, bottomHeight, bottomSidesWidth, gotoNextScreen, gotoPreviousScreen, disableInteraction, enableInteraction, webView, setWebView]);
|
|
2033
|
+
}, [containerRef, events, menuVisible, menuOverScreen, topHeight, bottomHeight, bottomSidesWidth, gotoNextScreen, gotoPreviousScreen, disableInteraction, enableInteraction, webView, setWebView]);
|
|
2017
2034
|
return /*#__PURE__*/React.createElement(ViewerContext.Provider, {
|
|
2018
2035
|
value: value
|
|
2019
2036
|
}, children);
|
|
@@ -2076,4 +2093,4 @@ var VisitorProvider = function VisitorProvider(_ref) {
|
|
|
2076
2093
|
VisitorProvider.propTypes = propTypes;
|
|
2077
2094
|
VisitorProvider.defaultProps = defaultProps;
|
|
2078
2095
|
|
|
2079
|
-
export { ComponentsContext, ComponentsProvider, ELEMENTS_NAMESPACE, EditorContext, EditorProvider, FIELDS_NAMESPACE, FORMS_NAMESPACE, FieldContext, FieldContextProvider, FieldsContext, FieldsProvider, FieldsValueContext, FieldsValueContextProvider, FontsContext, FontsProvider, GoogleApiClientContext, GoogleApiClientProvider, GoogleKeysContext, GoogleKeysProvider, GoogleMapsClientContext, GoogleMapsClientProvider, MODALS_NAMESPACE, ModalsContext, ModalsProvider, PanelsContext, PanelsProvider, PlaybackContext, PlaybackProvider, RoutesContext, RoutesProvider, SCREENS_NAMESPACE, ScreenContext, ScreenProvider, ScreenSizeContext, ScreenSizeProvider, ScreensContext, ScreensProvider, StoryContext, StoryProvider, TrackingProvider, UppyContext, UppyProvider, UserInteractionContext, UserInteractionProvider, ViewerContext, ViewerProvider, VisitorContext, VisitorProvider, useComponent, useComponents, useComponentsManager, useEditor, useElementComponent, useElementsComponents, useElementsComponentsManager, useFieldComponent, useFieldContext, useFieldDefinition, useFieldsComponents, useFieldsComponentsManager, useFieldsManager, useFieldsValue, useFonts, useFormComponent, useFormsComponents, useFormsComponentsManager, useGetColors, useGoogleApiClient, useGoogleFonts, useGoogleKeys, useGoogleMapsClient, useModalComponent, useModals, useModalsComponents, useModalsComponentsManager, usePanels, usePlaybackContext, usePlaybackMediaRef, useRouteBack, useRoutePush, useRoutes, useScreen, useScreenComponent, useScreenData, useScreenDefinition, useScreenRenderContext, useScreenSize, useScreenState, useScreensComponents, useScreensComponentsManager, useScreensManager, useSetVisitor, useStory, useStoryContext, useTracking, useUppy, useUrlGenerator, useUserInteracted, useViewerContext, useViewerEvents, useViewerInteraction, useViewerNavigation, useViewerWebView, useVisitor, useVisitorContext, withGoogleApiClient, withGoogleMapsClient, withModals, withPanels };
|
|
2096
|
+
export { ComponentsContext, ComponentsProvider, ELEMENTS_NAMESPACE, EditorContext, EditorProvider, FIELDS_NAMESPACE, FORMS_NAMESPACE, FieldContext, FieldContextProvider, FieldsContext, FieldsProvider, FieldsValueContext, FieldsValueContextProvider, FontsContext, FontsProvider, GoogleApiClientContext, GoogleApiClientProvider, GoogleKeysContext, GoogleKeysProvider, GoogleMapsClientContext, GoogleMapsClientProvider, MODALS_NAMESPACE, ModalsContext, ModalsProvider, PanelsContext, PanelsProvider, PlaybackContext, PlaybackProvider, RoutesContext, RoutesProvider, SCREENS_NAMESPACE, ScreenContext, ScreenProvider, ScreenSizeContext, ScreenSizeProvider, ScreensContext, ScreensProvider, StoryContext, StoryProvider, TrackingProvider, UppyContext, UppyProvider, UserInteractionContext, UserInteractionProvider, ViewerContext, ViewerProvider, VisitorContext, VisitorProvider, useComponent, useComponents, useComponentsManager, useEditor, useElementComponent, useElementsComponents, useElementsComponentsManager, useFieldComponent, useFieldContext, useFieldDefinition, useFieldsComponents, useFieldsComponentsManager, useFieldsManager, useFieldsValue, useFonts, useFormComponent, useFormsComponents, useFormsComponentsManager, useGetColors, useGoogleApiClient, useGoogleFonts, useGoogleKeys, useGoogleMapsClient, useModalComponent, useModals, useModalsComponents, useModalsComponentsManager, usePanels, usePlaybackContext, usePlaybackMediaRef, useRouteBack, useRoutePush, useRoutes, useScreen, useScreenComponent, useScreenData, useScreenDefinition, useScreenRenderContext, useScreenSize, useScreenState, useScreensComponents, useScreensComponentsManager, useScreensManager, useSetVisitor, useStory, useStoryContext, useTracking, useUppy, useUrlGenerator, useUserInteracted, useViewerContainer, useViewerContext, useViewerEvents, useViewerInteraction, useViewerNavigation, useViewerWebView, useVisitor, useVisitorContext, withGoogleApiClient, withGoogleMapsClient, withModals, withPanels };
|
package/es/hooks.js
CHANGED
|
@@ -14,6 +14,7 @@ import screenfull from 'screenfull';
|
|
|
14
14
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
15
15
|
import isArray from 'lodash/isArray';
|
|
16
16
|
import isObject from 'lodash/isObject';
|
|
17
|
+
import raf from 'raf';
|
|
17
18
|
import { useScreensManager, useFieldsManager, useTracking, useScreen } from '@micromag/core/contexts';
|
|
18
19
|
import { match } from 'css-mediaquery';
|
|
19
20
|
import { useSprings } from '@react-spring/core';
|
|
@@ -22,12 +23,14 @@ import clamp from 'lodash/clamp';
|
|
|
22
23
|
|
|
23
24
|
function useActivityDetector() {
|
|
24
25
|
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
26
|
+
_ref$element = _ref.element,
|
|
27
|
+
providedElement = _ref$element === void 0 ? null : _ref$element,
|
|
25
28
|
_ref$disabled = _ref.disabled,
|
|
26
29
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
27
30
|
_ref$timeout = _ref.timeout,
|
|
28
31
|
timeoutDelay = _ref$timeout === void 0 ? 2000 : _ref$timeout;
|
|
29
32
|
|
|
30
|
-
var ref = useRef(
|
|
33
|
+
var ref = useRef(providedElement);
|
|
31
34
|
|
|
32
35
|
var _useState = useState(false),
|
|
33
36
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -35,6 +38,11 @@ function useActivityDetector() {
|
|
|
35
38
|
setDetected = _useState2[1];
|
|
36
39
|
|
|
37
40
|
var detectedRef = useRef(detected);
|
|
41
|
+
|
|
42
|
+
if (providedElement !== null && providedElement !== ref.current) {
|
|
43
|
+
ref.current = providedElement;
|
|
44
|
+
}
|
|
45
|
+
|
|
38
46
|
useEffect(function () {
|
|
39
47
|
var _ref$current = ref.current,
|
|
40
48
|
element = _ref$current === void 0 ? null : _ref$current;
|
|
@@ -87,7 +95,7 @@ function useActivityDetector() {
|
|
|
87
95
|
element.removeEventListener('touchmove', onActivity);
|
|
88
96
|
element.removeEventListener('touchstart', onActivity);
|
|
89
97
|
};
|
|
90
|
-
}, [disabled, timeoutDelay]);
|
|
98
|
+
}, [providedElement, disabled, timeoutDelay]);
|
|
91
99
|
return {
|
|
92
100
|
ref: ref,
|
|
93
101
|
detected: detected
|
|
@@ -188,7 +196,7 @@ var useFormattedTime = function useFormattedTime() {
|
|
|
188
196
|
var eventsManager$1 = typeof document !== 'undefined' ? new EventsManager(document) : null;
|
|
189
197
|
var useDocumentEvent = createUseEvent(eventsManager$1);
|
|
190
198
|
|
|
191
|
-
var _excluded$
|
|
199
|
+
var _excluded$3 = ["fields", "injectInFields"],
|
|
192
200
|
_excluded2 = ["fields"];
|
|
193
201
|
|
|
194
202
|
var useForm = function useForm() {
|
|
@@ -197,7 +205,7 @@ var useForm = function useForm() {
|
|
|
197
205
|
providedFields = _ref$fields === void 0 ? [] : _ref$fields,
|
|
198
206
|
_ref$injectInFields = _ref.injectInFields,
|
|
199
207
|
injectInFields = _ref$injectInFields === void 0 ? false : _ref$injectInFields,
|
|
200
|
-
opts = _objectWithoutProperties(_ref, _excluded$
|
|
208
|
+
opts = _objectWithoutProperties(_ref, _excluded$3);
|
|
201
209
|
|
|
202
210
|
var fieldsNames = useMemo(function () {
|
|
203
211
|
return providedFields.length > 0 ? providedFields.map(function (_ref2) {
|
|
@@ -304,7 +312,7 @@ var useFullscreen = function useFullscreen(element) {
|
|
|
304
312
|
};
|
|
305
313
|
};
|
|
306
314
|
|
|
307
|
-
var _excluded$
|
|
315
|
+
var _excluded$2 = ["entry"];
|
|
308
316
|
|
|
309
317
|
var buildThresholdArray = function buildThresholdArray() {
|
|
310
318
|
return [0, 1.0];
|
|
@@ -550,7 +558,7 @@ var useResizeObserver = function useResizeObserver() {
|
|
|
550
558
|
var useDimensionObserver = function useDimensionObserver() {
|
|
551
559
|
var _useResizeObserver = useResizeObserver.apply(void 0, arguments),
|
|
552
560
|
entry = _useResizeObserver.entry,
|
|
553
|
-
rest = _objectWithoutProperties(_useResizeObserver, _excluded$
|
|
561
|
+
rest = _objectWithoutProperties(_useResizeObserver, _excluded$2);
|
|
554
562
|
|
|
555
563
|
var _ref5 = entry || {},
|
|
556
564
|
_ref5$contentRect = _ref5.contentRect,
|
|
@@ -1190,10 +1198,13 @@ function useMediaCurrentTime(element) {
|
|
|
1190
1198
|
var finalId = id || element;
|
|
1191
1199
|
var lastIdRef = useRef(finalId);
|
|
1192
1200
|
var idChanged = lastIdRef.current !== finalId;
|
|
1201
|
+
var disabledRef = useRef(disabled);
|
|
1202
|
+
var disabledChanged = disabledRef.current !== disabled;
|
|
1193
1203
|
|
|
1194
|
-
if (idChanged) {
|
|
1204
|
+
if (idChanged || disabledChanged) {
|
|
1195
1205
|
realCurrentTime.current = element !== null ? element.currentTime || 0 : 0;
|
|
1196
1206
|
lastIdRef.current = finalId;
|
|
1207
|
+
disabledRef.current = disabled;
|
|
1197
1208
|
} // Check time update
|
|
1198
1209
|
|
|
1199
1210
|
|
|
@@ -1203,7 +1214,7 @@ function useMediaCurrentTime(element) {
|
|
|
1203
1214
|
}
|
|
1204
1215
|
|
|
1205
1216
|
function updateTime() {
|
|
1206
|
-
var time = element.currentTime;
|
|
1217
|
+
var time = element.currentTime || 0;
|
|
1207
1218
|
|
|
1208
1219
|
if (time !== realCurrentTime.current) {
|
|
1209
1220
|
realCurrentTime.current = time;
|
|
@@ -1225,13 +1236,19 @@ function useMediaCurrentTime(element) {
|
|
|
1225
1236
|
var timeout = null;
|
|
1226
1237
|
|
|
1227
1238
|
function loop() {
|
|
1239
|
+
var _element$duration = element.duration,
|
|
1240
|
+
duration = _element$duration === void 0 ? 0 : _element$duration;
|
|
1228
1241
|
var time = updateTime();
|
|
1229
|
-
var remainingTime = Math.floor((
|
|
1230
|
-
timeout = setTimeout(loop, Math.min(updateInterval, remainingTime));
|
|
1242
|
+
var remainingTime = Math.floor(((duration || 0) - time) * 1000);
|
|
1243
|
+
timeout = setTimeout(loop, Math.max(Math.min(updateInterval, remainingTime), updateInterval));
|
|
1231
1244
|
}
|
|
1232
1245
|
|
|
1233
1246
|
loop();
|
|
1234
1247
|
return function () {
|
|
1248
|
+
if (element !== null) {
|
|
1249
|
+
realCurrentTime.current = element.currentTime;
|
|
1250
|
+
}
|
|
1251
|
+
|
|
1235
1252
|
if (timeout !== null) {
|
|
1236
1253
|
clearInterval(timeout);
|
|
1237
1254
|
}
|
|
@@ -1310,6 +1327,113 @@ function useMediaLoad(element) {
|
|
|
1310
1327
|
}, [element, shouldLoad, preload]);
|
|
1311
1328
|
}
|
|
1312
1329
|
|
|
1330
|
+
var _excluded$1 = ["disabled"];
|
|
1331
|
+
|
|
1332
|
+
function useMediaProgress(media) {
|
|
1333
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1334
|
+
_ref$disabled = _ref.disabled,
|
|
1335
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
1336
|
+
props = _objectWithoutProperties(_ref, _excluded$1);
|
|
1337
|
+
|
|
1338
|
+
var _useState = useState(!disabled),
|
|
1339
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1340
|
+
playing = _useState2[0],
|
|
1341
|
+
setPlaying = _useState2[1];
|
|
1342
|
+
|
|
1343
|
+
var currentTime = useMediaCurrentTime(media, _objectSpread({
|
|
1344
|
+
disabled: disabled || !playing
|
|
1345
|
+
}, props));
|
|
1346
|
+
var duration = useMediaDuration(media, _objectSpread({
|
|
1347
|
+
disabled: disabled || !playing
|
|
1348
|
+
}, props));
|
|
1349
|
+
|
|
1350
|
+
var _useState3 = useState(currentTime > 0 && duration > 0 ? currentTime / duration : 0),
|
|
1351
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
1352
|
+
progress = _useState4[0],
|
|
1353
|
+
setProgress = _useState4[1];
|
|
1354
|
+
|
|
1355
|
+
var realProgressRef = useRef(progress);
|
|
1356
|
+
var updateTimeRef = useRef(new Date().getTime());
|
|
1357
|
+
var updateProgress = useCallback(function (newProgress) {
|
|
1358
|
+
updateTimeRef.current = new Date().getTime();
|
|
1359
|
+
realProgressRef.current = newProgress;
|
|
1360
|
+
setProgress(newProgress);
|
|
1361
|
+
}, [setProgress]);
|
|
1362
|
+
useEffect(function () {
|
|
1363
|
+
if (media === null) {
|
|
1364
|
+
return function () {};
|
|
1365
|
+
}
|
|
1366
|
+
|
|
1367
|
+
function onResume() {
|
|
1368
|
+
setPlaying(true);
|
|
1369
|
+
updateProgress(media.currentTime / media.duration);
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1372
|
+
function onPause() {
|
|
1373
|
+
setPlaying(false);
|
|
1374
|
+
updateProgress(media.currentTime / media.duration);
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1377
|
+
media.addEventListener('play', onResume);
|
|
1378
|
+
media.addEventListener('seeked', onResume);
|
|
1379
|
+
media.addEventListener('playing', onResume);
|
|
1380
|
+
media.addEventListener('pause', onPause);
|
|
1381
|
+
media.addEventListener('ended', onPause);
|
|
1382
|
+
media.addEventListener('waiting', onPause);
|
|
1383
|
+
media.addEventListener('stalled', onPause);
|
|
1384
|
+
media.addEventListener('seeking', onPause); // media.addEventListener('suspend', onPause);
|
|
1385
|
+
// if (media.paused) {
|
|
1386
|
+
// onPause();
|
|
1387
|
+
// } else {
|
|
1388
|
+
// onResume();
|
|
1389
|
+
// }
|
|
1390
|
+
|
|
1391
|
+
return function () {
|
|
1392
|
+
media.removeEventListener('play', onResume);
|
|
1393
|
+
media.removeEventListener('seeked', onResume);
|
|
1394
|
+
media.removeEventListener('playing', onResume);
|
|
1395
|
+
media.removeEventListener('pause', onPause);
|
|
1396
|
+
media.removeEventListener('ended', onPause);
|
|
1397
|
+
media.removeEventListener('waiting', onPause);
|
|
1398
|
+
media.removeEventListener('stalled', onPause);
|
|
1399
|
+
media.removeEventListener('seeking', onPause); // media.removeEventListener('suspend', onPause);
|
|
1400
|
+
};
|
|
1401
|
+
}, [media, updateProgress]);
|
|
1402
|
+
useEffect(function () {
|
|
1403
|
+
if (media === null) {
|
|
1404
|
+
return function () {};
|
|
1405
|
+
}
|
|
1406
|
+
|
|
1407
|
+
if (!playing || disabled) {
|
|
1408
|
+
return function () {};
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
var handle;
|
|
1412
|
+
var canceled = false;
|
|
1413
|
+
|
|
1414
|
+
function tick() {
|
|
1415
|
+
if (canceled) {
|
|
1416
|
+
return;
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
var newTime = new Date().getTime();
|
|
1420
|
+
var elapsed = newTime - updateTimeRef.current;
|
|
1421
|
+
updateTimeRef.current = newTime;
|
|
1422
|
+
var step = elapsed / (duration * 1000);
|
|
1423
|
+
var newProgress = realProgressRef.current + step;
|
|
1424
|
+
updateProgress(newProgress);
|
|
1425
|
+
handle = raf(tick);
|
|
1426
|
+
}
|
|
1427
|
+
|
|
1428
|
+
tick();
|
|
1429
|
+
return function () {
|
|
1430
|
+
canceled = true;
|
|
1431
|
+
raf.cancel(handle);
|
|
1432
|
+
};
|
|
1433
|
+
}, [media, playing, disabled, duration, updateProgress]);
|
|
1434
|
+
return realProgressRef.current;
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1313
1437
|
function useMediaReady(element) {
|
|
1314
1438
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1315
1439
|
_ref$id = _ref.id,
|
|
@@ -2048,4 +2172,4 @@ var useTrackMedia = function useTrackMedia() {
|
|
|
2048
2172
|
var eventsManager = typeof window !== 'undefined' ? new EventsManager(window) : null;
|
|
2049
2173
|
var useWindowEvent = createUseEvent(eventsManager);
|
|
2050
2174
|
|
|
2051
|
-
export { getObserver, useActivityDetector, useAnimationFrame, useDimensionObserver, useDocumentEvent, useForm, useFormTransition, useFormattedDate, useFormattedTime, useFullscreen, useIntersectionObserver, useIsVisible, useLoadedFonts, useLongPress, useMediaApi, useMediaCurrentTime, useMediaDuration, useMediaLoad, useMediaReady, useMediaThumbnail, useMediaWaveform, useMediasParser, useObserver, useParsedStory, useProgressSteps, useResizeObserver, useScreenSizeFromElement, useScreenSizeFromWindow, useSwipe, useThemeParser, useTrackEvent, useTrackMedia, useTrackScreenEvent, useTrackScreenMedia, useTrackScreenView, useWindowEvent };
|
|
2175
|
+
export { getObserver, useActivityDetector, useAnimationFrame, useDimensionObserver, useDocumentEvent, useForm, useFormTransition, useFormattedDate, useFormattedTime, useFullscreen, useIntersectionObserver, useIsVisible, useLoadedFonts, useLongPress, useMediaApi, useMediaCurrentTime, useMediaDuration, useMediaLoad, useMediaProgress, useMediaReady, useMediaThumbnail, useMediaWaveform, useMediasParser, useObserver, useParsedStory, useProgressSteps, useResizeObserver, useScreenSizeFromElement, useScreenSizeFromWindow, useSwipe, useThemeParser, useTrackEvent, useTrackMedia, useTrackScreenEvent, useTrackScreenMedia, useTrackScreenView, useWindowEvent };
|
package/lib/contexts.js
CHANGED
|
@@ -1021,7 +1021,11 @@ var PlaybackProvider = function PlaybackProvider(_ref) {
|
|
|
1021
1021
|
return true;
|
|
1022
1022
|
}
|
|
1023
1023
|
|
|
1024
|
-
|
|
1024
|
+
if (typeof media.dataset.hasAudio === 'undefined') {
|
|
1025
|
+
return null;
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
return media.dataset.hasAudio === 'true' || media.dataset.hasAudio === true;
|
|
1025
1029
|
}, [media]);
|
|
1026
1030
|
var value = React.useMemo(function () {
|
|
1027
1031
|
return {
|
|
@@ -1966,10 +1970,17 @@ var useViewerEvents = function useViewerEvents() {
|
|
|
1966
1970
|
|
|
1967
1971
|
return events;
|
|
1968
1972
|
};
|
|
1969
|
-
var
|
|
1973
|
+
var useViewerContainer = function useViewerContainer() {
|
|
1970
1974
|
var _useViewerContext3 = useViewerContext(),
|
|
1971
|
-
|
|
1972
|
-
|
|
1975
|
+
_useViewerContext3$co = _useViewerContext3.containerRef,
|
|
1976
|
+
containerRef = _useViewerContext3$co === void 0 ? null : _useViewerContext3$co;
|
|
1977
|
+
|
|
1978
|
+
return containerRef !== null ? containerRef.current : null;
|
|
1979
|
+
};
|
|
1980
|
+
var useViewerInteraction = function useViewerInteraction() {
|
|
1981
|
+
var _useViewerContext4 = useViewerContext(),
|
|
1982
|
+
disableInteraction = _useViewerContext4.disableInteraction,
|
|
1983
|
+
enableInteraction = _useViewerContext4.enableInteraction;
|
|
1973
1984
|
|
|
1974
1985
|
return {
|
|
1975
1986
|
disableInteraction: disableInteraction,
|
|
@@ -1977,9 +1988,9 @@ var useViewerInteraction = function useViewerInteraction() {
|
|
|
1977
1988
|
};
|
|
1978
1989
|
};
|
|
1979
1990
|
var useViewerWebView = function useViewerWebView() {
|
|
1980
|
-
var
|
|
1981
|
-
webView =
|
|
1982
|
-
setWebView =
|
|
1991
|
+
var _useViewerContext5 = useViewerContext(),
|
|
1992
|
+
webView = _useViewerContext5.webView,
|
|
1993
|
+
setWebView = _useViewerContext5.setWebView;
|
|
1983
1994
|
|
|
1984
1995
|
var value = React.useMemo(function () {
|
|
1985
1996
|
return _objectSpread__default["default"](_objectSpread__default["default"]({}, webView), {}, {
|
|
@@ -2002,6 +2013,10 @@ var useViewerWebView = function useViewerWebView() {
|
|
|
2002
2013
|
var propTypes$1 = {
|
|
2003
2014
|
children: PropTypes__default["default"].node.isRequired,
|
|
2004
2015
|
events: PropTypes__default["default"].instanceOf(EventEmitter__default["default"]),
|
|
2016
|
+
containerRef: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].shape({
|
|
2017
|
+
// eslint-disable-next-line react/forbid-prop-types
|
|
2018
|
+
current: PropTypes__default["default"].any
|
|
2019
|
+
})]),
|
|
2005
2020
|
menuVisible: PropTypes__default["default"].bool,
|
|
2006
2021
|
menuOverScreen: PropTypes__default["default"].bool,
|
|
2007
2022
|
topHeight: PropTypes__default["default"].number,
|
|
@@ -2017,6 +2032,7 @@ var defaultProps$1 = _objectSpread__default["default"]({}, defaultValue);
|
|
|
2017
2032
|
|
|
2018
2033
|
var ViewerProvider = function ViewerProvider(_ref) {
|
|
2019
2034
|
var children = _ref.children,
|
|
2035
|
+
containerRef = _ref.containerRef,
|
|
2020
2036
|
events = _ref.events,
|
|
2021
2037
|
menuVisible = _ref.menuVisible,
|
|
2022
2038
|
menuOverScreen = _ref.menuOverScreen,
|
|
@@ -2035,6 +2051,7 @@ var ViewerProvider = function ViewerProvider(_ref) {
|
|
|
2035
2051
|
|
|
2036
2052
|
var value = React.useMemo(function () {
|
|
2037
2053
|
return {
|
|
2054
|
+
containerRef: containerRef,
|
|
2038
2055
|
events: events,
|
|
2039
2056
|
menuVisible: menuVisible,
|
|
2040
2057
|
menuOverScreen: menuOverScreen,
|
|
@@ -2048,7 +2065,7 @@ var ViewerProvider = function ViewerProvider(_ref) {
|
|
|
2048
2065
|
webView: webView,
|
|
2049
2066
|
setWebView: setWebView
|
|
2050
2067
|
};
|
|
2051
|
-
}, [events, menuVisible, menuOverScreen, topHeight, bottomHeight, bottomSidesWidth, gotoNextScreen, gotoPreviousScreen, disableInteraction, enableInteraction, webView, setWebView]);
|
|
2068
|
+
}, [containerRef, events, menuVisible, menuOverScreen, topHeight, bottomHeight, bottomSidesWidth, gotoNextScreen, gotoPreviousScreen, disableInteraction, enableInteraction, webView, setWebView]);
|
|
2052
2069
|
return /*#__PURE__*/React__default["default"].createElement(ViewerContext.Provider, {
|
|
2053
2070
|
value: value
|
|
2054
2071
|
}, children);
|
|
@@ -2213,6 +2230,7 @@ exports.useTracking = useTracking;
|
|
|
2213
2230
|
exports.useUppy = useUppy;
|
|
2214
2231
|
exports.useUrlGenerator = useUrlGenerator;
|
|
2215
2232
|
exports.useUserInteracted = useUserInteracted;
|
|
2233
|
+
exports.useViewerContainer = useViewerContainer;
|
|
2216
2234
|
exports.useViewerContext = useViewerContext;
|
|
2217
2235
|
exports.useViewerEvents = useViewerEvents;
|
|
2218
2236
|
exports.useViewerInteraction = useViewerInteraction;
|
package/lib/hooks.js
CHANGED
|
@@ -18,6 +18,7 @@ var screenfull = require('screenfull');
|
|
|
18
18
|
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
19
19
|
var isArray = require('lodash/isArray');
|
|
20
20
|
var isObject = require('lodash/isObject');
|
|
21
|
+
var raf = require('raf');
|
|
21
22
|
var contexts = require('@micromag/core/contexts');
|
|
22
23
|
var cssMediaquery = require('css-mediaquery');
|
|
23
24
|
var core$1 = require('@react-spring/core');
|
|
@@ -55,16 +56,19 @@ var screenfull__default = /*#__PURE__*/_interopDefaultLegacy(screenfull);
|
|
|
55
56
|
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
56
57
|
var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
|
|
57
58
|
var isObject__default = /*#__PURE__*/_interopDefaultLegacy(isObject);
|
|
59
|
+
var raf__default = /*#__PURE__*/_interopDefaultLegacy(raf);
|
|
58
60
|
var clamp__default = /*#__PURE__*/_interopDefaultLegacy(clamp);
|
|
59
61
|
|
|
60
62
|
function useActivityDetector() {
|
|
61
63
|
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
64
|
+
_ref$element = _ref.element,
|
|
65
|
+
providedElement = _ref$element === void 0 ? null : _ref$element,
|
|
62
66
|
_ref$disabled = _ref.disabled,
|
|
63
67
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
64
68
|
_ref$timeout = _ref.timeout,
|
|
65
69
|
timeoutDelay = _ref$timeout === void 0 ? 2000 : _ref$timeout;
|
|
66
70
|
|
|
67
|
-
var ref = react.useRef(
|
|
71
|
+
var ref = react.useRef(providedElement);
|
|
68
72
|
|
|
69
73
|
var _useState = react.useState(false),
|
|
70
74
|
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
@@ -72,6 +76,11 @@ function useActivityDetector() {
|
|
|
72
76
|
setDetected = _useState2[1];
|
|
73
77
|
|
|
74
78
|
var detectedRef = react.useRef(detected);
|
|
79
|
+
|
|
80
|
+
if (providedElement !== null && providedElement !== ref.current) {
|
|
81
|
+
ref.current = providedElement;
|
|
82
|
+
}
|
|
83
|
+
|
|
75
84
|
react.useEffect(function () {
|
|
76
85
|
var _ref$current = ref.current,
|
|
77
86
|
element = _ref$current === void 0 ? null : _ref$current;
|
|
@@ -124,7 +133,7 @@ function useActivityDetector() {
|
|
|
124
133
|
element.removeEventListener('touchmove', onActivity);
|
|
125
134
|
element.removeEventListener('touchstart', onActivity);
|
|
126
135
|
};
|
|
127
|
-
}, [disabled, timeoutDelay]);
|
|
136
|
+
}, [providedElement, disabled, timeoutDelay]);
|
|
128
137
|
return {
|
|
129
138
|
ref: ref,
|
|
130
139
|
detected: detected
|
|
@@ -225,7 +234,7 @@ var useFormattedTime = function useFormattedTime() {
|
|
|
225
234
|
var eventsManager$1 = typeof document !== 'undefined' ? new core.EventsManager(document) : null;
|
|
226
235
|
var useDocumentEvent = utils.createUseEvent(eventsManager$1);
|
|
227
236
|
|
|
228
|
-
var _excluded$
|
|
237
|
+
var _excluded$3 = ["fields", "injectInFields"],
|
|
229
238
|
_excluded2 = ["fields"];
|
|
230
239
|
|
|
231
240
|
var useForm = function useForm() {
|
|
@@ -234,7 +243,7 @@ var useForm = function useForm() {
|
|
|
234
243
|
providedFields = _ref$fields === void 0 ? [] : _ref$fields,
|
|
235
244
|
_ref$injectInFields = _ref.injectInFields,
|
|
236
245
|
injectInFields = _ref$injectInFields === void 0 ? false : _ref$injectInFields,
|
|
237
|
-
opts = _objectWithoutProperties__default["default"](_ref, _excluded$
|
|
246
|
+
opts = _objectWithoutProperties__default["default"](_ref, _excluded$3);
|
|
238
247
|
|
|
239
248
|
var fieldsNames = react.useMemo(function () {
|
|
240
249
|
return providedFields.length > 0 ? providedFields.map(function (_ref2) {
|
|
@@ -341,7 +350,7 @@ var useFullscreen = function useFullscreen(element) {
|
|
|
341
350
|
};
|
|
342
351
|
};
|
|
343
352
|
|
|
344
|
-
var _excluded$
|
|
353
|
+
var _excluded$2 = ["entry"];
|
|
345
354
|
|
|
346
355
|
var buildThresholdArray = function buildThresholdArray() {
|
|
347
356
|
return [0, 1.0];
|
|
@@ -587,7 +596,7 @@ var useResizeObserver = function useResizeObserver() {
|
|
|
587
596
|
var useDimensionObserver = function useDimensionObserver() {
|
|
588
597
|
var _useResizeObserver = useResizeObserver.apply(void 0, arguments),
|
|
589
598
|
entry = _useResizeObserver.entry,
|
|
590
|
-
rest = _objectWithoutProperties__default["default"](_useResizeObserver, _excluded$
|
|
599
|
+
rest = _objectWithoutProperties__default["default"](_useResizeObserver, _excluded$2);
|
|
591
600
|
|
|
592
601
|
var _ref5 = entry || {},
|
|
593
602
|
_ref5$contentRect = _ref5.contentRect,
|
|
@@ -1227,10 +1236,13 @@ function useMediaCurrentTime(element) {
|
|
|
1227
1236
|
var finalId = id || element;
|
|
1228
1237
|
var lastIdRef = react.useRef(finalId);
|
|
1229
1238
|
var idChanged = lastIdRef.current !== finalId;
|
|
1239
|
+
var disabledRef = react.useRef(disabled);
|
|
1240
|
+
var disabledChanged = disabledRef.current !== disabled;
|
|
1230
1241
|
|
|
1231
|
-
if (idChanged) {
|
|
1242
|
+
if (idChanged || disabledChanged) {
|
|
1232
1243
|
realCurrentTime.current = element !== null ? element.currentTime || 0 : 0;
|
|
1233
1244
|
lastIdRef.current = finalId;
|
|
1245
|
+
disabledRef.current = disabled;
|
|
1234
1246
|
} // Check time update
|
|
1235
1247
|
|
|
1236
1248
|
|
|
@@ -1240,7 +1252,7 @@ function useMediaCurrentTime(element) {
|
|
|
1240
1252
|
}
|
|
1241
1253
|
|
|
1242
1254
|
function updateTime() {
|
|
1243
|
-
var time = element.currentTime;
|
|
1255
|
+
var time = element.currentTime || 0;
|
|
1244
1256
|
|
|
1245
1257
|
if (time !== realCurrentTime.current) {
|
|
1246
1258
|
realCurrentTime.current = time;
|
|
@@ -1262,13 +1274,19 @@ function useMediaCurrentTime(element) {
|
|
|
1262
1274
|
var timeout = null;
|
|
1263
1275
|
|
|
1264
1276
|
function loop() {
|
|
1277
|
+
var _element$duration = element.duration,
|
|
1278
|
+
duration = _element$duration === void 0 ? 0 : _element$duration;
|
|
1265
1279
|
var time = updateTime();
|
|
1266
|
-
var remainingTime = Math.floor((
|
|
1267
|
-
timeout = setTimeout(loop, Math.min(updateInterval, remainingTime));
|
|
1280
|
+
var remainingTime = Math.floor(((duration || 0) - time) * 1000);
|
|
1281
|
+
timeout = setTimeout(loop, Math.max(Math.min(updateInterval, remainingTime), updateInterval));
|
|
1268
1282
|
}
|
|
1269
1283
|
|
|
1270
1284
|
loop();
|
|
1271
1285
|
return function () {
|
|
1286
|
+
if (element !== null) {
|
|
1287
|
+
realCurrentTime.current = element.currentTime;
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1272
1290
|
if (timeout !== null) {
|
|
1273
1291
|
clearInterval(timeout);
|
|
1274
1292
|
}
|
|
@@ -1347,6 +1365,113 @@ function useMediaLoad(element) {
|
|
|
1347
1365
|
}, [element, shouldLoad, preload]);
|
|
1348
1366
|
}
|
|
1349
1367
|
|
|
1368
|
+
var _excluded$1 = ["disabled"];
|
|
1369
|
+
|
|
1370
|
+
function useMediaProgress(media) {
|
|
1371
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1372
|
+
_ref$disabled = _ref.disabled,
|
|
1373
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
1374
|
+
props = _objectWithoutProperties__default["default"](_ref, _excluded$1);
|
|
1375
|
+
|
|
1376
|
+
var _useState = react.useState(!disabled),
|
|
1377
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
1378
|
+
playing = _useState2[0],
|
|
1379
|
+
setPlaying = _useState2[1];
|
|
1380
|
+
|
|
1381
|
+
var currentTime = useMediaCurrentTime(media, _objectSpread__default["default"]({
|
|
1382
|
+
disabled: disabled || !playing
|
|
1383
|
+
}, props));
|
|
1384
|
+
var duration = useMediaDuration(media, _objectSpread__default["default"]({
|
|
1385
|
+
disabled: disabled || !playing
|
|
1386
|
+
}, props));
|
|
1387
|
+
|
|
1388
|
+
var _useState3 = react.useState(currentTime > 0 && duration > 0 ? currentTime / duration : 0),
|
|
1389
|
+
_useState4 = _slicedToArray__default["default"](_useState3, 2),
|
|
1390
|
+
progress = _useState4[0],
|
|
1391
|
+
setProgress = _useState4[1];
|
|
1392
|
+
|
|
1393
|
+
var realProgressRef = react.useRef(progress);
|
|
1394
|
+
var updateTimeRef = react.useRef(new Date().getTime());
|
|
1395
|
+
var updateProgress = react.useCallback(function (newProgress) {
|
|
1396
|
+
updateTimeRef.current = new Date().getTime();
|
|
1397
|
+
realProgressRef.current = newProgress;
|
|
1398
|
+
setProgress(newProgress);
|
|
1399
|
+
}, [setProgress]);
|
|
1400
|
+
react.useEffect(function () {
|
|
1401
|
+
if (media === null) {
|
|
1402
|
+
return function () {};
|
|
1403
|
+
}
|
|
1404
|
+
|
|
1405
|
+
function onResume() {
|
|
1406
|
+
setPlaying(true);
|
|
1407
|
+
updateProgress(media.currentTime / media.duration);
|
|
1408
|
+
}
|
|
1409
|
+
|
|
1410
|
+
function onPause() {
|
|
1411
|
+
setPlaying(false);
|
|
1412
|
+
updateProgress(media.currentTime / media.duration);
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
media.addEventListener('play', onResume);
|
|
1416
|
+
media.addEventListener('seeked', onResume);
|
|
1417
|
+
media.addEventListener('playing', onResume);
|
|
1418
|
+
media.addEventListener('pause', onPause);
|
|
1419
|
+
media.addEventListener('ended', onPause);
|
|
1420
|
+
media.addEventListener('waiting', onPause);
|
|
1421
|
+
media.addEventListener('stalled', onPause);
|
|
1422
|
+
media.addEventListener('seeking', onPause); // media.addEventListener('suspend', onPause);
|
|
1423
|
+
// if (media.paused) {
|
|
1424
|
+
// onPause();
|
|
1425
|
+
// } else {
|
|
1426
|
+
// onResume();
|
|
1427
|
+
// }
|
|
1428
|
+
|
|
1429
|
+
return function () {
|
|
1430
|
+
media.removeEventListener('play', onResume);
|
|
1431
|
+
media.removeEventListener('seeked', onResume);
|
|
1432
|
+
media.removeEventListener('playing', onResume);
|
|
1433
|
+
media.removeEventListener('pause', onPause);
|
|
1434
|
+
media.removeEventListener('ended', onPause);
|
|
1435
|
+
media.removeEventListener('waiting', onPause);
|
|
1436
|
+
media.removeEventListener('stalled', onPause);
|
|
1437
|
+
media.removeEventListener('seeking', onPause); // media.removeEventListener('suspend', onPause);
|
|
1438
|
+
};
|
|
1439
|
+
}, [media, updateProgress]);
|
|
1440
|
+
react.useEffect(function () {
|
|
1441
|
+
if (media === null) {
|
|
1442
|
+
return function () {};
|
|
1443
|
+
}
|
|
1444
|
+
|
|
1445
|
+
if (!playing || disabled) {
|
|
1446
|
+
return function () {};
|
|
1447
|
+
}
|
|
1448
|
+
|
|
1449
|
+
var handle;
|
|
1450
|
+
var canceled = false;
|
|
1451
|
+
|
|
1452
|
+
function tick() {
|
|
1453
|
+
if (canceled) {
|
|
1454
|
+
return;
|
|
1455
|
+
}
|
|
1456
|
+
|
|
1457
|
+
var newTime = new Date().getTime();
|
|
1458
|
+
var elapsed = newTime - updateTimeRef.current;
|
|
1459
|
+
updateTimeRef.current = newTime;
|
|
1460
|
+
var step = elapsed / (duration * 1000);
|
|
1461
|
+
var newProgress = realProgressRef.current + step;
|
|
1462
|
+
updateProgress(newProgress);
|
|
1463
|
+
handle = raf__default["default"](tick);
|
|
1464
|
+
}
|
|
1465
|
+
|
|
1466
|
+
tick();
|
|
1467
|
+
return function () {
|
|
1468
|
+
canceled = true;
|
|
1469
|
+
raf__default["default"].cancel(handle);
|
|
1470
|
+
};
|
|
1471
|
+
}, [media, playing, disabled, duration, updateProgress]);
|
|
1472
|
+
return realProgressRef.current;
|
|
1473
|
+
}
|
|
1474
|
+
|
|
1350
1475
|
function useMediaReady(element) {
|
|
1351
1476
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1352
1477
|
_ref$id = _ref.id,
|
|
@@ -2103,6 +2228,7 @@ exports.useMediaApi = useMediaApi;
|
|
|
2103
2228
|
exports.useMediaCurrentTime = useMediaCurrentTime;
|
|
2104
2229
|
exports.useMediaDuration = useMediaDuration;
|
|
2105
2230
|
exports.useMediaLoad = useMediaLoad;
|
|
2231
|
+
exports.useMediaProgress = useMediaProgress;
|
|
2106
2232
|
exports.useMediaReady = useMediaReady;
|
|
2107
2233
|
exports.useMediaThumbnail = useMediaThumbnail;
|
|
2108
2234
|
exports.useMediaWaveform = useMediaWaveform;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@micromag/core",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.164",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"javascript"
|
|
@@ -117,6 +117,7 @@
|
|
|
117
117
|
"lodash": "^4.17.21",
|
|
118
118
|
"param-case": "^3.0.4",
|
|
119
119
|
"prop-types": "^15.7.2",
|
|
120
|
+
"raf": "^3.4.1",
|
|
120
121
|
"react-helmet": "^6.1.0",
|
|
121
122
|
"react-intl": "^5.12.1",
|
|
122
123
|
"react-router": "^5.2.0",
|
|
@@ -132,5 +133,5 @@
|
|
|
132
133
|
"publishConfig": {
|
|
133
134
|
"access": "public"
|
|
134
135
|
},
|
|
135
|
-
"gitHead": "
|
|
136
|
+
"gitHead": "9f184b29369c35b3928578e6a67bb60e86cf36b0"
|
|
136
137
|
}
|