Skip to content

Commit

Permalink
fixup format
Browse files Browse the repository at this point in the history
  • Loading branch information
Slashgear committed Sep 27, 2023
1 parent aa3575c commit 88833c0
Show file tree
Hide file tree
Showing 7 changed files with 164 additions and 117 deletions.
25 changes: 9 additions & 16 deletions app/templates/carousel/carousel/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@ import JSONInput from 'react-json-editor-ajrm';
import locale from 'react-json-editor-ajrm/locale/en';
import {Player} from '@remotion/player';

import { Carousel } from '../../../../remotion/compositions/templates/carousel/Carousel'
import {Carousel} from '../../../../remotion/compositions/templates/carousel/Carousel';
import {Code} from '../../../../src/app/Code';
import { RenderButton } from '../../../../src/app/forms/RenderButton'
import { useGenerateVideo } from '../../../../src/app/hooks/useGenerateVideo'
import {
DefaultPropsTypes,
} from '../../../../src/app/types/template.types';
import {RenderButton} from '../../../../src/app/forms/RenderButton';
import {useGenerateVideo} from '../../../../src/app/hooks/useGenerateVideo';
import {DefaultPropsTypes} from '../../../../src/app/types/template.types';

import styles from '../../../../styles/app/layout/main.module.css';

Expand All @@ -23,13 +21,11 @@ const defaultValues = {
'https://secure.meetupstatic.com/photos/event/a/8/0/b/highres_515983019.webp',
],
imageDuration: 90,
logoUrl: '/images/showcases/lyonjs/lyonjsSquaredLogo.png'
}
logoUrl: '/images/showcases/lyonjs/lyonjsSquaredLogo.png',
};

export default function CarouselTemplate() {
const [data, setData] = useState(
defaultValues,
);
const [data, setData] = useState(defaultValues);
const {getVideoLink, isLoading, videoUrl, error} = useGenerateVideo(
data,
'Carousel',
Expand All @@ -53,7 +49,7 @@ export default function CarouselTemplate() {
width: '100%',
aspectRatio: '16/9',
}}
durationInFrames={data.imageDuration*data.imageUrls.length}
durationInFrames={data.imageDuration * data.imageUrls.length}
compositionWidth={800}
compositionHeight={800}
fps={30}
Expand Down Expand Up @@ -86,10 +82,7 @@ export default function CarouselTemplate() {
setData(event.jsObject);
}}
/>
<Code
composition="Carousel"
params={data || defaultValues}
/>
<Code composition="Carousel" params={data || defaultValues} />
</section>
</div>
);
Expand Down
2 changes: 1 addition & 1 deletion remotion/compositions/templates/Templates.composition.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import {Folder} from 'remotion';

import { CarouselComposition } from './carousel/Carousel.composition'
import {CarouselComposition} from './carousel/Carousel.composition';
import {EventsComposition} from './event/Events.composition';
import {LayersComposition} from './layers/Layers.composition';
import {MeetupComposition} from './meetup/Meetup.composition';
Expand Down
67 changes: 34 additions & 33 deletions remotion/compositions/templates/carousel/Carousel.composition.tsx
Original file line number Diff line number Diff line change
@@ -1,38 +1,39 @@
import { Composition, Folder, staticFile } from 'remotion'
import {Composition, Folder, staticFile} from 'remotion';

import { Carousel } from './Carousel'
import {Carousel} from './Carousel';

export const CarouselComposition: React.FC = () => {
const imageUrls = [
'https://secure.meetupstatic.com/photos/event/a/9/9/9/highres_511003417.webp',
'https://secure.meetupstatic.com/photos/event/4/a/c/7/highres_515299143.webp',
'https://secure.meetupstatic.com/photos/event/a/8/1/1/highres_515983025.webp',
'https://secure.meetupstatic.com/photos/event/a/8/0/b/highres_515983019.webp',
]
const imageUrls = [
'https://secure.meetupstatic.com/photos/event/a/9/9/9/highres_511003417.webp',
'https://secure.meetupstatic.com/photos/event/4/a/c/7/highres_515299143.webp',
'https://secure.meetupstatic.com/photos/event/a/8/1/1/highres_515983025.webp',
'https://secure.meetupstatic.com/photos/event/a/8/0/b/highres_515983019.webp',
];

const imageDuration = 90
const imageDuration = 90;

return (
<Folder name="Carousel">
<Composition
component={Carousel}
width={800}
height={800}
id="Carousel"
fps={30}
durationInFrames={imageUrls.length * imageDuration}
defaultProps={{
imageUrls,
imageDuration,
logoUrl: staticFile('/images/showcases/lyonjs/lyonjsSquaredLogo.png')
}}
calculateMetadata={(props)=> {

return {
durationInFrames: props.defaultProps.imageDuration * props.defaultProps.imageUrls.length
}
}}
/>
</Folder>
);
};
return (
<Folder name="Carousel">
<Composition
component={Carousel}
width={800}
height={800}
id="Carousel"
fps={30}
durationInFrames={imageUrls.length * imageDuration}
defaultProps={{
imageUrls,
imageDuration,
logoUrl: staticFile('/images/showcases/lyonjs/lyonjsSquaredLogo.png'),
}}
calculateMetadata={(props) => {
return {
durationInFrames:
props.defaultProps.imageDuration *
props.defaultProps.imageUrls.length,
};
}}
/>
</Folder>
);
};
61 changes: 42 additions & 19 deletions remotion/compositions/templates/carousel/Carousel.tsx
Original file line number Diff line number Diff line change
@@ -1,23 +1,46 @@
import { AbsoluteFill, Img, Sequence } from 'remotion'
import {AbsoluteFill, Img, Sequence} from 'remotion';

import { CarouselImage } from './CarouselImage'
import {CarouselImage} from './CarouselImage';

export type CarouselType = {
imageUrls: string[]
logoUrl?: string
imageDuration: number
}
export function Carousel({ imageUrls, logoUrl, imageDuration }: CarouselType) {
const delayShift = imageDuration * 0.25;
imageUrls: string[];
logoUrl?: string;
imageDuration: number;
};
export function Carousel({imageUrls, logoUrl, imageDuration}: CarouselType) {
const delayShift = imageDuration * 0.25;

return <AbsoluteFill style={{ overflow: 'hidden', background: 'black'}}>
{
imageUrls.map((image, index) => {
return <Sequence from={index * (imageDuration - delayShift)} key={image} durationInFrames={index === imageUrls.length - 1? undefined: imageDuration} name={`Image number ${index}`}>
<CarouselImage imageUrl={image} noAnimation={index === imageUrls.length - 1} imageDuration={imageDuration}/>
</Sequence>
})
}
{logoUrl && <Img src={logoUrl} style={{ position: 'absolute', right: '20px', bottom: '20px', height: "100px"}}/>}
</AbsoluteFill>
}
return (
<AbsoluteFill style={{overflow: 'hidden', background: 'black'}}>
{imageUrls.map((image, index) => {
return (
<Sequence
from={index * (imageDuration - delayShift)}
key={image}
durationInFrames={
index === imageUrls.length - 1 ? undefined : imageDuration
}
name={`Image number ${index}`}
>
<CarouselImage
imageUrl={image}
noAnimation={index === imageUrls.length - 1}
imageDuration={imageDuration}
/>
</Sequence>
);
})}
{logoUrl && (
<Img
src={logoUrl}
style={{
position: 'absolute',
right: '20px',
bottom: '20px',
height: '100px',
}}
/>
)}
</AbsoluteFill>
);
}
120 changes: 75 additions & 45 deletions remotion/compositions/templates/carousel/CarouselImage.tsx
Original file line number Diff line number Diff line change
@@ -1,49 +1,79 @@
import { CSSProperties } from 'react'
import { Easing, Img, interpolate, useCurrentFrame, useVideoConfig } from 'remotion'
import {CSSProperties} from 'react';
import {
Easing,
Img,
interpolate,
useCurrentFrame,
useVideoConfig,
} from 'remotion';

export type AnimationMode = 'slideLeft'
export function CarouselImage({ imageUrl, imageDuration, noAnimation = false }: { imageUrl: string, imageDuration: number, noAnimation?: boolean}) {
const frame = useCurrentFrame();
const { width } = useVideoConfig();
const animationDuration = imageDuration * 0.10;
const slide = interpolate(frame, [imageDuration - animationDuration , imageDuration], [0,width/2], {
easing: Easing.out(Easing.cubic),
extrapolateRight: 'clamp'
})
const opacity = interpolate(frame, [imageDuration - animationDuration , imageDuration], [1,0], {
extrapolateRight: 'clamp'
})
export type AnimationMode = 'slideLeft';
export function CarouselImage({
imageUrl,
imageDuration,
noAnimation = false,
}: {
imageUrl: string;
imageDuration: number;
noAnimation?: boolean;
}) {
const frame = useCurrentFrame();
const {width} = useVideoConfig();
const animationDuration = imageDuration * 0.1;
const slide = interpolate(
frame,
[imageDuration - animationDuration, imageDuration],
[0, width / 2],
{
easing: Easing.out(Easing.cubic),
extrapolateRight: 'clamp',
},
);
const opacity = interpolate(
frame,
[imageDuration - animationDuration, imageDuration],
[1, 0],
{
extrapolateRight: 'clamp',
},
);

let animation: CSSProperties = {
transform: `translate(-${slide}px)`,
opacity,
};

let animation: CSSProperties = {
transform: `translate(-${slide}px)`,
opacity,
}
if (noAnimation) {
animation = {};
}

if(noAnimation) {
animation = {}
}

return <>
<Img src={imageUrl} style={{
position: 'absolute',
inset: 0,
objectFit: 'cover',
width: '100%',
height: '100%',
filter: 'blur(20px)',
transform: 'scale(1.2)',
opacity: 0.3,
...animation
}}/>
<Img src={imageUrl} style={{
position: 'absolute',
inset: 0,
objectFit: 'contain',
width: '100%',
height: '100%',
...animation
}}/>
</>

}
return (
<>
<Img
src={imageUrl}
style={{
position: 'absolute',
inset: 0,
objectFit: 'cover',
width: '100%',
height: '100%',
filter: 'blur(20px)',
transform: 'scale(1.2)',
opacity: 0.3,
...animation,
}}
/>
<Img
src={imageUrl}
style={{
position: 'absolute',
inset: 0,
objectFit: 'contain',
width: '100%',
height: '100%',
...animation,
}}
/>
</>
);
}
2 changes: 1 addition & 1 deletion src/data/config/compositionsConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {SnowcampConfig} from './showcases/snowcampConfig';
import {TouraineTechConfig} from './showcases/touraineTechConfig';
import {VeryTechTripConfig} from './showcases/veryTechTripConfig';
import {VolcampConfig} from './showcases/volcampConfig';
import { CarouselConfig } from './templates/carouselConfig'
import {CarouselConfig} from './templates/carouselConfig';
import {EventConfig} from './templates/eventConfig';
import {LayersConfig} from './templates/layersConfig';
import {MeetupConfig} from './templates/meetupConfig';
Expand Down
4 changes: 2 additions & 2 deletions src/data/config/templates/carouselConfig.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Carousel } from '../../../../remotion/compositions/templates/carousel/Carousel'
import {Carousel} from '../../../../remotion/compositions/templates/carousel/Carousel';
import {CompositionProps} from '../compositionsConfig';

export const CarouselConfig: CompositionProps = {
Expand All @@ -16,6 +16,6 @@ export const CarouselConfig: CompositionProps = {
'https://secure.meetupstatic.com/photos/event/a/8/0/b/highres_515983019.webp',
],
imageDuration: 90,
logoUrl: '/images/showcases/lyonjs/lyonjsSquaredLogo.png'
logoUrl: '/images/showcases/lyonjs/lyonjsSquaredLogo.png',
},
};

0 comments on commit 88833c0

Please sign in to comment.