@micromag/core 0.4.65 → 0.4.69
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.d.ts +3 -1
- package/es/contexts.js +20 -5
- package/lib/contexts.js +20 -4
- package/package.json +2 -2
package/es/contexts.d.ts
CHANGED
|
@@ -360,6 +360,7 @@ interface PlaybackControlsTheme {
|
|
|
360
360
|
progressColor?: unknown;
|
|
361
361
|
}
|
|
362
362
|
type MediaElement = HTMLVideoElement | HTMLAudioElement | HTMLMediaElement;
|
|
363
|
+
declare function mediaElementIsPlaying(media: MediaElement | null): boolean;
|
|
363
364
|
interface PlaybackContext {
|
|
364
365
|
playing: boolean;
|
|
365
366
|
completed: boolean;
|
|
@@ -369,6 +370,7 @@ interface PlaybackContext {
|
|
|
369
370
|
controlsVisible: boolean;
|
|
370
371
|
media: MediaElement | null;
|
|
371
372
|
hasAudio: boolean | null;
|
|
373
|
+
isBackground: boolean;
|
|
372
374
|
controlsTheme: PlaybackControlsTheme | null;
|
|
373
375
|
currentQualityLevel: number | null;
|
|
374
376
|
setMuted: (muted: boolean) => void;
|
|
@@ -525,4 +527,4 @@ interface VisitorProviderProps {
|
|
|
525
527
|
}
|
|
526
528
|
declare function VisitorProvider({ visitor: providedVisitor, children, }: VisitorProviderProps): react_jsx_runtime.JSX.Element;
|
|
527
529
|
|
|
528
|
-
export { ComponentsContext, ComponentsProvider, ConsentContext, ConsentProvider, 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, SCREENS_NAMESPACE, ScreenContext, ScreenProvider, ScreenSizeContext, ScreenSizeProvider, ScreensContext, ScreensProvider, SettingsContext, SettingsProvider, StoryContext, StoryProvider, TrackingProvider, ViewerContext, ViewerProvider, VisitorContext, VisitorProvider, useComponent, useComponents, useComponentsManager, useConsent, 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, useScreen, useScreenComponent, useScreenData, useScreenDefinition, useScreenRenderContext, useScreenSize, useScreenState, useScreensComponents, useScreensComponentsManager, useScreensManager, useSetVisitor, useSetting, useSettings, useStory, useStoryContext, useTracking, useViewerContainer, useViewerContext, useViewerEvents, useViewerInteraction, useViewerNavigation, useViewerSize, useViewerWebView, useVisitor, useVisitorContext, withGoogleApiClient, withGoogleMapsClient, withModals, withPanels };
|
|
530
|
+
export { ComponentsContext, ComponentsProvider, ConsentContext, ConsentProvider, 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, SCREENS_NAMESPACE, ScreenContext, ScreenProvider, ScreenSizeContext, ScreenSizeProvider, ScreensContext, ScreensProvider, SettingsContext, SettingsProvider, StoryContext, StoryProvider, TrackingProvider, ViewerContext, ViewerProvider, VisitorContext, VisitorProvider, mediaElementIsPlaying, useComponent, useComponents, useComponentsManager, useConsent, 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, useScreen, useScreenComponent, useScreenData, useScreenDefinition, useScreenRenderContext, useScreenSize, useScreenState, useScreensComponents, useScreensComponentsManager, useScreensManager, useSetVisitor, useSetting, useSettings, useStory, useStoryContext, useTracking, useViewerContainer, useViewerContext, useViewerEvents, useViewerInteraction, useViewerNavigation, useViewerSize, useViewerWebView, useVisitor, useVisitorContext, withGoogleApiClient, withGoogleMapsClient, withModals, withPanels };
|
package/es/contexts.js
CHANGED
|
@@ -1006,6 +1006,9 @@ function PanelsProvider(_ref2) {
|
|
|
1006
1006
|
});
|
|
1007
1007
|
}
|
|
1008
1008
|
|
|
1009
|
+
function mediaElementIsPlaying(media) {
|
|
1010
|
+
return media !== null && !!(media.currentTime > 0 && !media.paused && !media.ended && media.readyState > 2);
|
|
1011
|
+
}
|
|
1009
1012
|
var defaultControlsThemeValue = {
|
|
1010
1013
|
seekBarOnly: false,
|
|
1011
1014
|
color: null,
|
|
@@ -1019,6 +1022,7 @@ var PlaybackContext = /*#__PURE__*/createContext({
|
|
|
1019
1022
|
controlsSuggestPlay: false,
|
|
1020
1023
|
controlsVisible: false,
|
|
1021
1024
|
hasAudio: false,
|
|
1025
|
+
isBackground: false,
|
|
1022
1026
|
media: null,
|
|
1023
1027
|
controlsTheme: defaultControlsThemeValue,
|
|
1024
1028
|
currentQualityLevel: null,
|
|
@@ -1044,26 +1048,37 @@ var usePlaybackMediaRef = function usePlaybackMediaRef() {
|
|
|
1044
1048
|
setMedia = _usePlaybackContext.setMedia,
|
|
1045
1049
|
setIsBackground = _usePlaybackContext.setIsBackground,
|
|
1046
1050
|
media = _usePlaybackContext.media,
|
|
1047
|
-
isBackground = _usePlaybackContext.isBackground
|
|
1051
|
+
isBackground = _usePlaybackContext.isBackground,
|
|
1052
|
+
playing = _usePlaybackContext.playing;
|
|
1048
1053
|
var mediaRef = useRef(null);
|
|
1049
1054
|
|
|
1050
1055
|
// Cleanup: clear media registration when this screen deactivates or unmounts.
|
|
1051
1056
|
// Note: we cannot check mediaRef.current here because React clears callback refs
|
|
1052
1057
|
// before running effect cleanups, so mediaRef.current is always null at this point.
|
|
1053
1058
|
useEffect(function () {
|
|
1054
|
-
var
|
|
1059
|
+
var _mediaRef$current = mediaRef.current,
|
|
1060
|
+
currentMedia = _mediaRef$current === void 0 ? null : _mediaRef$current;
|
|
1055
1061
|
return function () {
|
|
1056
1062
|
if (active) {
|
|
1057
|
-
var
|
|
1063
|
+
var shouldPause = currentMedia !== null && mediaElementIsPlaying(currentMedia);
|
|
1058
1064
|
setMedia(null);
|
|
1059
1065
|
setIsBackground(false);
|
|
1060
|
-
if (
|
|
1066
|
+
if (shouldPause) {
|
|
1061
1067
|
currentMedia.pause();
|
|
1062
1068
|
}
|
|
1063
1069
|
}
|
|
1064
1070
|
};
|
|
1065
1071
|
}, [active, setMedia, setIsBackground, updateKey]);
|
|
1066
1072
|
|
|
1073
|
+
// Play early in the process
|
|
1074
|
+
var currentMedia = mediaRef.current;
|
|
1075
|
+
var forcePlayingRef = useRef(false);
|
|
1076
|
+
var shouldForcePlaying = active && currentMedia !== null && playing && !forcePlayingRef.current && !mediaElementIsPlaying(currentMedia);
|
|
1077
|
+
if (shouldForcePlaying) {
|
|
1078
|
+
forcePlayingRef.current = true;
|
|
1079
|
+
currentMedia.play();
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1067
1082
|
// Register media with context when active and no media is registered
|
|
1068
1083
|
useEffect(function () {
|
|
1069
1084
|
if (!active || mediaRef.current === null || mediaRef.current === media && background === isBackground) {
|
|
@@ -1617,4 +1632,4 @@ function VisitorProvider(_ref) {
|
|
|
1617
1632
|
});
|
|
1618
1633
|
}
|
|
1619
1634
|
|
|
1620
|
-
export { ComponentsContext, ComponentsProvider, ConsentContext, ConsentProvider, 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, SCREENS_NAMESPACE, ScreenContext, ScreenProvider, ScreenSizeContext, ScreenSizeProvider, ScreensContext, ScreensProvider, SettingsContext, SettingsProvider, StoryContext, StoryProvider, TrackingProvider, ViewerContext, ViewerProvider, VisitorContext, VisitorProvider, useComponent, useComponents, useComponentsManager, useConsent, 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, useScreen, useScreenComponent, useScreenData, useScreenDefinition, useScreenRenderContext, useScreenSize, useScreenState, useScreensComponents, useScreensComponentsManager, useScreensManager, useSetVisitor, useSetting, useSettings, useStory, useStoryContext, useTracking, useViewerContainer, useViewerContext, useViewerEvents, useViewerInteraction, useViewerNavigation, useViewerSize, useViewerWebView, useVisitor, useVisitorContext, withGoogleApiClient, withGoogleMapsClient, withModals, withPanels };
|
|
1635
|
+
export { ComponentsContext, ComponentsProvider, ConsentContext, ConsentProvider, 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, SCREENS_NAMESPACE, ScreenContext, ScreenProvider, ScreenSizeContext, ScreenSizeProvider, ScreensContext, ScreensProvider, SettingsContext, SettingsProvider, StoryContext, StoryProvider, TrackingProvider, ViewerContext, ViewerProvider, VisitorContext, VisitorProvider, mediaElementIsPlaying, useComponent, useComponents, useComponentsManager, useConsent, 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, useScreen, useScreenComponent, useScreenData, useScreenDefinition, useScreenRenderContext, useScreenSize, useScreenState, useScreensComponents, useScreensComponentsManager, useScreensManager, useSetVisitor, useSetting, useSettings, useStory, useStoryContext, useTracking, useViewerContainer, useViewerContext, useViewerEvents, useViewerInteraction, useViewerNavigation, useViewerSize, useViewerWebView, useVisitor, useVisitorContext, withGoogleApiClient, withGoogleMapsClient, withModals, withPanels };
|
package/lib/contexts.js
CHANGED
|
@@ -1006,6 +1006,9 @@ function PanelsProvider(_ref2) {
|
|
|
1006
1006
|
});
|
|
1007
1007
|
}
|
|
1008
1008
|
|
|
1009
|
+
function mediaElementIsPlaying(media) {
|
|
1010
|
+
return media !== null && !!(media.currentTime > 0 && !media.paused && !media.ended && media.readyState > 2);
|
|
1011
|
+
}
|
|
1009
1012
|
var defaultControlsThemeValue = {
|
|
1010
1013
|
seekBarOnly: false,
|
|
1011
1014
|
color: null,
|
|
@@ -1019,6 +1022,7 @@ var PlaybackContext = /*#__PURE__*/React.createContext({
|
|
|
1019
1022
|
controlsSuggestPlay: false,
|
|
1020
1023
|
controlsVisible: false,
|
|
1021
1024
|
hasAudio: false,
|
|
1025
|
+
isBackground: false,
|
|
1022
1026
|
media: null,
|
|
1023
1027
|
controlsTheme: defaultControlsThemeValue,
|
|
1024
1028
|
currentQualityLevel: null,
|
|
@@ -1044,26 +1048,37 @@ var usePlaybackMediaRef = function usePlaybackMediaRef() {
|
|
|
1044
1048
|
setMedia = _usePlaybackContext.setMedia,
|
|
1045
1049
|
setIsBackground = _usePlaybackContext.setIsBackground,
|
|
1046
1050
|
media = _usePlaybackContext.media,
|
|
1047
|
-
isBackground = _usePlaybackContext.isBackground
|
|
1051
|
+
isBackground = _usePlaybackContext.isBackground,
|
|
1052
|
+
playing = _usePlaybackContext.playing;
|
|
1048
1053
|
var mediaRef = React.useRef(null);
|
|
1049
1054
|
|
|
1050
1055
|
// Cleanup: clear media registration when this screen deactivates or unmounts.
|
|
1051
1056
|
// Note: we cannot check mediaRef.current here because React clears callback refs
|
|
1052
1057
|
// before running effect cleanups, so mediaRef.current is always null at this point.
|
|
1053
1058
|
React.useEffect(function () {
|
|
1054
|
-
var
|
|
1059
|
+
var _mediaRef$current = mediaRef.current,
|
|
1060
|
+
currentMedia = _mediaRef$current === void 0 ? null : _mediaRef$current;
|
|
1055
1061
|
return function () {
|
|
1056
1062
|
if (active) {
|
|
1057
|
-
var
|
|
1063
|
+
var shouldPause = currentMedia !== null && mediaElementIsPlaying(currentMedia);
|
|
1058
1064
|
setMedia(null);
|
|
1059
1065
|
setIsBackground(false);
|
|
1060
|
-
if (
|
|
1066
|
+
if (shouldPause) {
|
|
1061
1067
|
currentMedia.pause();
|
|
1062
1068
|
}
|
|
1063
1069
|
}
|
|
1064
1070
|
};
|
|
1065
1071
|
}, [active, setMedia, setIsBackground, updateKey]);
|
|
1066
1072
|
|
|
1073
|
+
// Play early in the process
|
|
1074
|
+
var currentMedia = mediaRef.current;
|
|
1075
|
+
var forcePlayingRef = React.useRef(false);
|
|
1076
|
+
var shouldForcePlaying = active && currentMedia !== null && playing && !forcePlayingRef.current && !mediaElementIsPlaying(currentMedia);
|
|
1077
|
+
if (shouldForcePlaying) {
|
|
1078
|
+
forcePlayingRef.current = true;
|
|
1079
|
+
currentMedia.play();
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1067
1082
|
// Register media with context when active and no media is registered
|
|
1068
1083
|
React.useEffect(function () {
|
|
1069
1084
|
if (!active || mediaRef.current === null || mediaRef.current === media && background === isBackground) {
|
|
@@ -1683,6 +1698,7 @@ exports.ViewerContext = ViewerContext;
|
|
|
1683
1698
|
exports.ViewerProvider = ViewerProvider;
|
|
1684
1699
|
exports.VisitorContext = VisitorContext;
|
|
1685
1700
|
exports.VisitorProvider = VisitorProvider;
|
|
1701
|
+
exports.mediaElementIsPlaying = mediaElementIsPlaying;
|
|
1686
1702
|
exports.useComponent = useComponent;
|
|
1687
1703
|
exports.useComponents = useComponents;
|
|
1688
1704
|
exports.useComponentsManager = useComponentsManager;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@micromag/core",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.69",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "",
|
|
6
6
|
"keywords": [
|
|
@@ -161,6 +161,6 @@
|
|
|
161
161
|
"access": "public",
|
|
162
162
|
"registry": "https://registry.npmjs.org/"
|
|
163
163
|
},
|
|
164
|
-
"gitHead": "
|
|
164
|
+
"gitHead": "509e113dc06022d6092e4aac9f47ccd5facfd59d",
|
|
165
165
|
"types": "es/index.d.ts"
|
|
166
166
|
}
|