diff --git a/entry_types/scrolled/package/src/frontend/Backdrop.js b/entry_types/scrolled/package/src/frontend/Backdrop.js
deleted file mode 100644
index 271c017421..0000000000
--- a/entry_types/scrolled/package/src/frontend/Backdrop.js
+++ /dev/null
@@ -1,189 +0,0 @@
-import React, { useEffect } from 'react';
-import classNames from 'classnames';
-
-import Fullscreen from './Fullscreen';
-import {Image} from './Image';
-import {VideoPlayer} from './VideoPlayer';
-import FillColor from './FillColor';
-import {MotifArea} from './MotifArea';
-import useDimension from './useDimension';
-import {usePlayerState} from './MediaPlayer/usePlayerState';
-import {usePortraitOrientation} from './usePortraitOrientation';
-import {useSectionLifecycle} from './useSectionLifecycle';
-import {useBackgroundFile} from './useBackgroundFile';
-import {documentHiddenState} from 'pageflow/frontend';
-import {useFile} from '../entryState';
-
-import styles from './Backdrop.module.css';
-
-export function Backdrop(props) {
- const [containerDimension, setContainerRef] = useDimension();
-
- return (
-
-
-
- {props.children(
-
- )}
-
-
-
- );
-}
-
-Backdrop.defaultProps = {
- children: children => children,
- transitionStyles: {}
-};
-
-function BackgroundAsset(props) {
- const video = useBackgroundFile({
- file: useFile({collectionName: 'videoFiles', permaId: props.video}),
- motifArea: props.videoMotifArea,
- containerDimension: props.containerDimension
- });
- const image = useBackgroundFile({
- file: useFile({collectionName: 'imageFiles', permaId: props.image}),
- motifArea: props.imageMotifArea,
- containerDimension: props.containerDimension
- });
- const imageMobile = useBackgroundFile({
- file: useFile({collectionName: 'imageFiles', permaId: props.imageMobile}),
- motifArea: props.imageMobileMotifArea,
- containerDimension: props.containerDimension
- });
-
- if (video) {
- return (
-
-
-
- );
- }
- else if (props.color ||
- (props.image && props.image.toString().startsWith('#'))) {
- return (
-
- );
- } else {
- return (
-
- {renderBackgroundImage({image, imageMobile, onMotifAreaUpdate: props.onMotifAreaUpdate, containerDimension: props.containerDimension})}
-
- );
- }
-}
-
-function renderBackgroundImage({image, imageMobile, onMotifAreaUpdate, containerDimension}) {
- if (image && imageMobile) {
- return (
-
- );
- }
- else {
- return (
-
- );
- }
-}
-
-function OrientationAwareBackgroundImage({image, onMotifAreaUpdate, imageMobile, containerDimension}) {
- const mobile = usePortraitOrientation();
-
- if (mobile) {
- return (
-
- )
- }
- else {
- return (
-
- )
- }
-}
-
-function BackgroundImage({image, onMotifAreaUpdate, containerDimension}) {
- const {isPrepared} = useSectionLifecycle();
-
- return (
- <>
-
-
- >
- );
-}
-
-function BackgroundVideo({video, onMotifAreaUpdate, containerDimension}) {
- const [playerState, playerActions] = usePlayerState();
- const {isPrepared} = useSectionLifecycle({
- onVisible() {
- playerActions.changeVolumeFactor(0, 0);
- playerActions.play()
- },
-
- onActivate() {
- playerActions.changeVolumeFactor(1, 1000);
- },
-
- onDeactivate() {
- playerActions.changeVolumeFactor(0, 1000);
- },
-
- onInvisible() {
- playerActions.pause()
- }
- });
-
- useEffect(() => {
- let documentState = documentHiddenState((visibilityState) => {
- if (visibilityState === 'hidden') {
- playerActions.pause();
- }
- else{
- playerActions.play();
- }
- });
- return () => {
- documentState.removeCallback();
- }
- }, [playerActions])
-
- return (
- <>
-
-
- >
- );
-}
diff --git a/entry_types/scrolled/package/src/frontend/Backdrop.module.css b/entry_types/scrolled/package/src/frontend/Backdrop.module.css
index abbda2ae3b..40003c7755 100644
--- a/entry_types/scrolled/package/src/frontend/Backdrop.module.css
+++ b/entry_types/scrolled/package/src/frontend/Backdrop.module.css
@@ -2,3 +2,7 @@
width: 100%;
z-index: 2;
}
+
+.defaultBackground {
+ background-color: #333;
+}
diff --git a/entry_types/scrolled/package/src/frontend/Backdrop/BackgroundAsset.js b/entry_types/scrolled/package/src/frontend/Backdrop/BackgroundAsset.js
new file mode 100644
index 0000000000..e469b4bc59
--- /dev/null
+++ b/entry_types/scrolled/package/src/frontend/Backdrop/BackgroundAsset.js
@@ -0,0 +1,69 @@
+import React from 'react';
+
+import Fullscreen from './../Fullscreen';
+import FillColor from './../FillColor';
+import {useBackgroundFile} from './../useBackgroundFile';
+import {useFile} from '../../entryState';
+
+import {BackgroundVideo} from './BackgroundVideo';
+import {OrientationAwareBackgroundImage} from './OrientationAwareBackgroundImage';
+import {BackgroundImage} from './BackgroundImage';
+
+export function BackgroundAsset(props) {
+ const video = useBackgroundFile({
+ file: useFile({collectionName: 'videoFiles', permaId: props.video}),
+ motifArea: props.videoMotifArea,
+ containerDimension: props.containerDimension
+ });
+ const image = useBackgroundFile({
+ file: useFile({collectionName: 'imageFiles', permaId: props.image}),
+ motifArea: props.imageMotifArea,
+ containerDimension: props.containerDimension
+ });
+ const imageMobile = useBackgroundFile({
+ file: useFile({collectionName: 'imageFiles', permaId: props.imageMobile}),
+ motifArea: props.imageMobileMotifArea,
+ containerDimension: props.containerDimension
+ });
+
+ if (video) {
+ return (
+
+
+
+ );
+ }
+ else if (props.color ||
+ (props.image && props.image.toString().startsWith('#'))) {
+ return (
+
+ );
+ } else {
+ return (
+
+ {renderBackgroundImage({image, imageMobile, onMotifAreaUpdate: props.onMotifAreaUpdate, containerDimension: props.containerDimension})}
+
+ );
+ }
+}
+
+function renderBackgroundImage({image, imageMobile, onMotifAreaUpdate, containerDimension}) {
+ if (image && imageMobile) {
+ return (
+
+ );
+ }
+ else {
+ return (
+
+ );
+ }
+}
diff --git a/entry_types/scrolled/package/src/frontend/Backdrop/BackgroundImage.js b/entry_types/scrolled/package/src/frontend/Backdrop/BackgroundImage.js
new file mode 100644
index 0000000000..c01984548a
--- /dev/null
+++ b/entry_types/scrolled/package/src/frontend/Backdrop/BackgroundImage.js
@@ -0,0 +1,20 @@
+import React from 'react';
+
+import {Image} from './../Image';
+import {MotifArea} from './../MotifArea';
+import {useSectionLifecycle} from './../useSectionLifecycle';
+
+export function BackgroundImage({image, onMotifAreaUpdate, containerDimension}) {
+ const {isPrepared} = useSectionLifecycle();
+
+ return (
+ <>
+
+
+ >
+ );
+}
diff --git a/entry_types/scrolled/package/src/frontend/Backdrop/BackgroundVideo.js b/entry_types/scrolled/package/src/frontend/Backdrop/BackgroundVideo.js
new file mode 100644
index 0000000000..c0abe391ac
--- /dev/null
+++ b/entry_types/scrolled/package/src/frontend/Backdrop/BackgroundVideo.js
@@ -0,0 +1,61 @@
+import React, { useEffect } from 'react';
+
+import {VideoPlayer} from './../VideoPlayer';
+import {MotifArea} from './../MotifArea';
+import {usePlayerState} from './../MediaPlayer/usePlayerState';
+import {useSectionLifecycle} from './../useSectionLifecycle';
+import {documentHiddenState} from 'pageflow/frontend';
+
+export function BackgroundVideo({video, onMotifAreaUpdate, containerDimension}) {
+ const [playerState, playerActions] = usePlayerState();
+ const {isPrepared} = useSectionLifecycle({
+ onVisible() {
+ playerActions.changeVolumeFactor(0, 0);
+ playerActions.play()
+ },
+
+ onActivate() {
+ playerActions.changeVolumeFactor(1, 1000);
+ },
+
+ onDeactivate() {
+ playerActions.changeVolumeFactor(0, 1000);
+ },
+
+ onInvisible() {
+ playerActions.pause()
+ }
+ });
+
+ useEffect(() => {
+ let documentState = documentHiddenState((visibilityState) => {
+ if (visibilityState === 'hidden') {
+ playerActions.pause();
+ }
+ else{
+ playerActions.play();
+ }
+ });
+ return () => {
+ documentState.removeCallback();
+ }
+ }, [playerActions])
+
+ return (
+ <>
+
+
+ >
+ );
+}
diff --git a/entry_types/scrolled/package/src/frontend/Backdrop/OrientationAwareBackgroundImage.js b/entry_types/scrolled/package/src/frontend/Backdrop/OrientationAwareBackgroundImage.js
new file mode 100644
index 0000000000..28c0f2862c
--- /dev/null
+++ b/entry_types/scrolled/package/src/frontend/Backdrop/OrientationAwareBackgroundImage.js
@@ -0,0 +1,23 @@
+import React from 'react';
+
+import {usePortraitOrientation} from './../usePortraitOrientation';
+import {BackgroundImage} from './BackgroundImage';
+
+export function OrientationAwareBackgroundImage({image, onMotifAreaUpdate, imageMobile, containerDimension}) {
+ const mobile = usePortraitOrientation();
+
+ if (mobile) {
+ return (
+
+ )
+ }
+ else {
+ return (
+
+ )
+ }
+}
diff --git a/entry_types/scrolled/package/src/frontend/Backdrop/index.js b/entry_types/scrolled/package/src/frontend/Backdrop/index.js
new file mode 100644
index 0000000000..925643f383
--- /dev/null
+++ b/entry_types/scrolled/package/src/frontend/Backdrop/index.js
@@ -0,0 +1,34 @@
+import React from 'react';
+import classNames from 'classnames';
+
+import useDimension from './../useDimension';
+
+import {BackgroundAsset} from './BackgroundAsset';
+
+import styles from '../Backdrop.module.css';
+
+export function Backdrop(props) {
+ const [containerDimension, setContainerRef] = useDimension();
+
+ return (
+
+
+
+ {props.children(
+
+ )}
+
+
+
+ );
+}
+
+Backdrop.defaultProps = {
+ children: children => children,
+ transitionStyles: {}
+};