@micromag/core 0.3.161 → 0.3.162
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 +21 -8
- package/es/hooks.js +135 -11
- package/lib/contexts.js +21 -7
- package/lib/hooks.js +136 -10
- package/package.json +3 -2
package/es/contexts.js
CHANGED
|
@@ -1935,10 +1935,17 @@ var useViewerEvents = function useViewerEvents() {
|
|
|
1935
1935
|
|
|
1936
1936
|
return events;
|
|
1937
1937
|
};
|
|
1938
|
-
var
|
|
1938
|
+
var useViewerContainer = function useViewerContainer() {
|
|
1939
1939
|
var _useViewerContext3 = useViewerContext(),
|
|
1940
|
-
|
|
1941
|
-
|
|
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;
|
|
1942
1949
|
|
|
1943
1950
|
return {
|
|
1944
1951
|
disableInteraction: disableInteraction,
|
|
@@ -1946,9 +1953,9 @@ var useViewerInteraction = function useViewerInteraction() {
|
|
|
1946
1953
|
};
|
|
1947
1954
|
};
|
|
1948
1955
|
var useViewerWebView = function useViewerWebView() {
|
|
1949
|
-
var
|
|
1950
|
-
webView =
|
|
1951
|
-
setWebView =
|
|
1956
|
+
var _useViewerContext5 = useViewerContext(),
|
|
1957
|
+
webView = _useViewerContext5.webView,
|
|
1958
|
+
setWebView = _useViewerContext5.setWebView;
|
|
1952
1959
|
|
|
1953
1960
|
var value = useMemo(function () {
|
|
1954
1961
|
return _objectSpread(_objectSpread({}, webView), {}, {
|
|
@@ -1971,6 +1978,10 @@ var useViewerWebView = function useViewerWebView() {
|
|
|
1971
1978
|
var propTypes$1 = {
|
|
1972
1979
|
children: PropTypes.node.isRequired,
|
|
1973
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
|
+
})]),
|
|
1974
1985
|
menuVisible: PropTypes.bool,
|
|
1975
1986
|
menuOverScreen: PropTypes.bool,
|
|
1976
1987
|
topHeight: PropTypes.number,
|
|
@@ -1986,6 +1997,7 @@ var defaultProps$1 = _objectSpread({}, defaultValue);
|
|
|
1986
1997
|
|
|
1987
1998
|
var ViewerProvider = function ViewerProvider(_ref) {
|
|
1988
1999
|
var children = _ref.children,
|
|
2000
|
+
containerRef = _ref.containerRef,
|
|
1989
2001
|
events = _ref.events,
|
|
1990
2002
|
menuVisible = _ref.menuVisible,
|
|
1991
2003
|
menuOverScreen = _ref.menuOverScreen,
|
|
@@ -2004,6 +2016,7 @@ var ViewerProvider = function ViewerProvider(_ref) {
|
|
|
2004
2016
|
|
|
2005
2017
|
var value = useMemo(function () {
|
|
2006
2018
|
return {
|
|
2019
|
+
containerRef: containerRef,
|
|
2007
2020
|
events: events,
|
|
2008
2021
|
menuVisible: menuVisible,
|
|
2009
2022
|
menuOverScreen: menuOverScreen,
|
|
@@ -2017,7 +2030,7 @@ var ViewerProvider = function ViewerProvider(_ref) {
|
|
|
2017
2030
|
webView: webView,
|
|
2018
2031
|
setWebView: setWebView
|
|
2019
2032
|
};
|
|
2020
|
-
}, [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]);
|
|
2021
2034
|
return /*#__PURE__*/React.createElement(ViewerContext.Provider, {
|
|
2022
2035
|
value: value
|
|
2023
2036
|
}, children);
|
|
@@ -2080,4 +2093,4 @@ var VisitorProvider = function VisitorProvider(_ref) {
|
|
|
2080
2093
|
VisitorProvider.propTypes = propTypes;
|
|
2081
2094
|
VisitorProvider.defaultProps = defaultProps;
|
|
2082
2095
|
|
|
2083
|
-
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
|
@@ -1970,10 +1970,17 @@ var useViewerEvents = function useViewerEvents() {
|
|
|
1970
1970
|
|
|
1971
1971
|
return events;
|
|
1972
1972
|
};
|
|
1973
|
-
var
|
|
1973
|
+
var useViewerContainer = function useViewerContainer() {
|
|
1974
1974
|
var _useViewerContext3 = useViewerContext(),
|
|
1975
|
-
|
|
1976
|
-
|
|
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;
|
|
1977
1984
|
|
|
1978
1985
|
return {
|
|
1979
1986
|
disableInteraction: disableInteraction,
|
|
@@ -1981,9 +1988,9 @@ var useViewerInteraction = function useViewerInteraction() {
|
|
|
1981
1988
|
};
|
|
1982
1989
|
};
|
|
1983
1990
|
var useViewerWebView = function useViewerWebView() {
|
|
1984
|
-
var
|
|
1985
|
-
webView =
|
|
1986
|
-
setWebView =
|
|
1991
|
+
var _useViewerContext5 = useViewerContext(),
|
|
1992
|
+
webView = _useViewerContext5.webView,
|
|
1993
|
+
setWebView = _useViewerContext5.setWebView;
|
|
1987
1994
|
|
|
1988
1995
|
var value = React.useMemo(function () {
|
|
1989
1996
|
return _objectSpread__default["default"](_objectSpread__default["default"]({}, webView), {}, {
|
|
@@ -2006,6 +2013,10 @@ var useViewerWebView = function useViewerWebView() {
|
|
|
2006
2013
|
var propTypes$1 = {
|
|
2007
2014
|
children: PropTypes__default["default"].node.isRequired,
|
|
2008
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
|
+
})]),
|
|
2009
2020
|
menuVisible: PropTypes__default["default"].bool,
|
|
2010
2021
|
menuOverScreen: PropTypes__default["default"].bool,
|
|
2011
2022
|
topHeight: PropTypes__default["default"].number,
|
|
@@ -2021,6 +2032,7 @@ var defaultProps$1 = _objectSpread__default["default"]({}, defaultValue);
|
|
|
2021
2032
|
|
|
2022
2033
|
var ViewerProvider = function ViewerProvider(_ref) {
|
|
2023
2034
|
var children = _ref.children,
|
|
2035
|
+
containerRef = _ref.containerRef,
|
|
2024
2036
|
events = _ref.events,
|
|
2025
2037
|
menuVisible = _ref.menuVisible,
|
|
2026
2038
|
menuOverScreen = _ref.menuOverScreen,
|
|
@@ -2039,6 +2051,7 @@ var ViewerProvider = function ViewerProvider(_ref) {
|
|
|
2039
2051
|
|
|
2040
2052
|
var value = React.useMemo(function () {
|
|
2041
2053
|
return {
|
|
2054
|
+
containerRef: containerRef,
|
|
2042
2055
|
events: events,
|
|
2043
2056
|
menuVisible: menuVisible,
|
|
2044
2057
|
menuOverScreen: menuOverScreen,
|
|
@@ -2052,7 +2065,7 @@ var ViewerProvider = function ViewerProvider(_ref) {
|
|
|
2052
2065
|
webView: webView,
|
|
2053
2066
|
setWebView: setWebView
|
|
2054
2067
|
};
|
|
2055
|
-
}, [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]);
|
|
2056
2069
|
return /*#__PURE__*/React__default["default"].createElement(ViewerContext.Provider, {
|
|
2057
2070
|
value: value
|
|
2058
2071
|
}, children);
|
|
@@ -2217,6 +2230,7 @@ exports.useTracking = useTracking;
|
|
|
2217
2230
|
exports.useUppy = useUppy;
|
|
2218
2231
|
exports.useUrlGenerator = useUrlGenerator;
|
|
2219
2232
|
exports.useUserInteracted = useUserInteracted;
|
|
2233
|
+
exports.useViewerContainer = useViewerContainer;
|
|
2220
2234
|
exports.useViewerContext = useViewerContext;
|
|
2221
2235
|
exports.useViewerEvents = useViewerEvents;
|
|
2222
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.162",
|
|
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": "ffd4deb967b364580d292f0e02af777abac02967"
|
|
136
137
|
}
|