Mbonea's picture
absolute text
00ce43d
raw
history blame
1.44 kB
import React, {createElement} from 'react';
import {useVideoConfig} from 'remotion';
import * as Fonts from '@remotion/google-fonts';
import transcriptData from './Assets/TextSequences.json';
import {FONT_FAMILY} from './constants';
import {TransitionSeries} from '@remotion/transitions';
const codeStyle = (index) => {
return {
color: 'white',
position: 'absolute',
top: '50%',
zIndex: 50,
transform: 'translate(-50%, -50%)',
left: '50%',
};
};
const subtitle = {
fontFamily: FONT_FAMILY,
fontSize: 120,
textAlign: 'center',
display: 'absolute',
bottom: 140,
width: '100%',
};
Fonts.getAvailableFonts()
.filter((font) => {
return font.fontFamily === FONT_FAMILY;
})[0]
.load()
.then((font) => font.loadFont());
export const TextStream = () => {
const {fps} = useVideoConfig();
return (
<div style={subtitle}>
<TransitionSeries>
{transcriptData.map((entry, index) => {
return (
<TransitionSeries.Sequence
key={index}
from={entry.start * fps}
durationInFrames={fps * (entry.end - entry.start)}
>
<Letter index={index} color="#0b84f3">
{entry.text}
</Letter>
</TransitionSeries.Sequence>
);
})}
</TransitionSeries>
</div>
);
};
export function Letter({children, color, index}) {
const x = codeStyle(index);
return createElement(
'div',
{className: 'greeting', style: {...x, color: 'white'}},
children
);
}