UNPKG

remotion

Version:

Make videos programmatically

81 lines (80 loc) 3.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.usePlayingState = exports.useTimelineSetFrame = exports.useTimelinePosition = exports.getFrameForComposition = exports.getInitialFrameState = exports.persistCurrentFrame = exports.SetTimelineContext = exports.TimelineContext = void 0; const react_1 = require("react"); const get_remotion_environment_js_1 = require("./get-remotion-environment.js"); const use_video_js_1 = require("./use-video.js"); exports.TimelineContext = (0, react_1.createContext)({ frame: {}, playing: false, playbackRate: 1, rootId: '', imperativePlaying: { current: false, }, setPlaybackRate: () => { throw new Error('default'); }, audioAndVideoTags: { current: [] }, }); exports.SetTimelineContext = (0, react_1.createContext)({ setFrame: () => { throw new Error('default'); }, setPlaying: () => { throw new Error('default'); }, }); const makeKey = () => { return `remotion.time-all`; }; const persistCurrentFrame = (time) => { localStorage.setItem(makeKey(), JSON.stringify(time)); }; exports.persistCurrentFrame = persistCurrentFrame; const getInitialFrameState = () => { var _a; const item = (_a = localStorage.getItem(makeKey())) !== null && _a !== void 0 ? _a : '{}'; const obj = JSON.parse(item); return obj; }; exports.getInitialFrameState = getInitialFrameState; const getFrameForComposition = (composition) => { var _a, _b; const item = (_a = localStorage.getItem(makeKey())) !== null && _a !== void 0 ? _a : '{}'; const obj = JSON.parse(item); if (obj[composition] !== undefined) { return Number(obj[composition]); } if (typeof window === 'undefined') { return 0; } return (_b = window.remotion_initialFrame) !== null && _b !== void 0 ? _b : 0; }; exports.getFrameForComposition = getFrameForComposition; const useTimelinePosition = () => { var _a, _b; const videoConfig = (0, use_video_js_1.useVideo)(); const state = (0, react_1.useContext)(exports.TimelineContext); if (!videoConfig) { return typeof window === 'undefined' ? 0 : ((_a = window.remotion_initialFrame) !== null && _a !== void 0 ? _a : 0); } const unclamped = (_b = state.frame[videoConfig.id]) !== null && _b !== void 0 ? _b : ((0, get_remotion_environment_js_1.getRemotionEnvironment)().isPlayer ? 0 : (0, exports.getFrameForComposition)(videoConfig.id)); return Math.min(videoConfig.durationInFrames - 1, unclamped); }; exports.useTimelinePosition = useTimelinePosition; const useTimelineSetFrame = () => { const { setFrame } = (0, react_1.useContext)(exports.SetTimelineContext); return setFrame; }; exports.useTimelineSetFrame = useTimelineSetFrame; const usePlayingState = () => { const { playing, imperativePlaying } = (0, react_1.useContext)(exports.TimelineContext); const { setPlaying } = (0, react_1.useContext)(exports.SetTimelineContext); return (0, react_1.useMemo)(() => [playing, setPlaying, imperativePlaying], [imperativePlaying, playing, setPlaying]); }; exports.usePlayingState = usePlayingState;