remotion 3.3.45 → 3.3.52
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/dist/Sequence.js +1 -1
- package/dist/Still.d.ts +0 -1
- package/dist/audio/Audio.d.ts +2 -2
- package/dist/audio/AudioForDevelopment.d.ts +1 -1
- package/dist/audio/AudioForRendering.d.ts +1 -1
- package/dist/cjs/AbsoluteFill.d.ts +6 -0
- package/dist/cjs/AbsoluteFill.js +28 -0
- package/dist/cjs/CanUseRemotionHooks.d.ts +5 -0
- package/dist/cjs/CanUseRemotionHooks.js +10 -0
- package/dist/cjs/Clipper.d.ts +7 -0
- package/dist/cjs/Clipper.js +24 -0
- package/dist/cjs/Composition.d.ts +23 -0
- package/dist/cjs/Composition.js +113 -0
- package/dist/cjs/CompositionManager.d.ts +82 -0
- package/dist/cjs/CompositionManager.js +164 -0
- package/dist/cjs/Folder.d.ts +15 -0
- package/dist/cjs/Folder.js +33 -0
- package/dist/cjs/IFrame.d.ts +2 -0
- package/dist/cjs/IFrame.js +24 -0
- package/dist/cjs/Img.d.ts +2 -0
- package/dist/cjs/Img.js +52 -0
- package/dist/cjs/NativeLayers.d.ts +13 -0
- package/dist/cjs/NativeLayers.js +29 -0
- package/dist/cjs/Null.d.ts +2 -0
- package/dist/cjs/Null.js +25 -0
- package/dist/cjs/RemotionRoot.d.ts +5 -0
- package/dist/cjs/RemotionRoot.js +73 -0
- package/dist/cjs/Sequence.d.ts +29 -0
- package/dist/cjs/Sequence.js +131 -0
- package/dist/cjs/Still.d.ts +3 -0
- package/dist/cjs/Still.js +9 -0
- package/dist/cjs/absolute-src.d.ts +1 -0
- package/dist/cjs/absolute-src.js +7 -0
- package/dist/cjs/asset-types.d.ts +50 -0
- package/dist/cjs/asset-types.js +1 -0
- package/dist/cjs/audio/Audio.d.ts +8 -0
- package/dist/cjs/audio/Audio.js +52 -0
- package/dist/cjs/audio/AudioForDevelopment.d.ts +11 -0
- package/dist/cjs/audio/AudioForDevelopment.js +94 -0
- package/dist/cjs/audio/AudioForRendering.d.ts +10 -0
- package/dist/cjs/audio/AudioForRendering.js +111 -0
- package/dist/cjs/audio/index.d.ts +2 -0
- package/dist/cjs/audio/index.js +18 -0
- package/dist/cjs/audio/props.d.ts +12 -0
- package/dist/cjs/audio/props.js +2 -0
- package/dist/cjs/audio/shared-audio-tags.d.ts +37 -0
- package/dist/cjs/audio/shared-audio-tags.js +222 -0
- package/dist/cjs/audio/use-audio-frame.d.ts +6 -0
- package/dist/cjs/audio/use-audio-frame.js +23 -0
- package/dist/cjs/bezier.d.ts +1 -0
- package/dist/cjs/bezier.js +114 -0
- package/dist/cjs/cancel-render.d.ts +1 -0
- package/dist/cjs/cancel-render.js +43 -0
- package/dist/cjs/config/input-props.d.ts +1 -0
- package/dist/cjs/config/input-props.js +31 -0
- package/dist/cjs/config.d.ts +285 -0
- package/dist/cjs/config.js +21 -0
- package/dist/cjs/default-css.d.ts +3 -0
- package/dist/cjs/default-css.js +49 -0
- package/dist/cjs/delay-render.d.ts +14 -0
- package/dist/cjs/delay-render.js +77 -0
- package/dist/cjs/easing.d.ts +19 -0
- package/dist/cjs/easing.js +77 -0
- package/dist/cjs/freeze.d.ts +7 -0
- package/dist/cjs/freeze.js +34 -0
- package/dist/cjs/get-asset-file-name.d.ts +1 -0
- package/dist/cjs/get-asset-file-name.js +14 -0
- package/dist/cjs/get-environment.d.ts +3 -0
- package/dist/cjs/get-environment.js +34 -0
- package/dist/cjs/get-preview-dom-element.d.ts +1 -0
- package/dist/cjs/get-preview-dom-element.js +7 -0
- package/dist/cjs/get-static-files.d.ts +17 -0
- package/dist/cjs/get-static-files.js +31 -0
- package/dist/cjs/get-timeline-clip-name.d.ts +1 -0
- package/dist/cjs/get-timeline-clip-name.js +25 -0
- package/dist/cjs/index.d.ts +92 -0
- package/dist/cjs/index.js +73 -0
- package/dist/cjs/internals.d.ts +99 -0
- package/dist/cjs/internals.js +101 -0
- package/dist/cjs/interpolate-colors.d.ts +5 -0
- package/dist/cjs/interpolate-colors.js +401 -0
- package/dist/cjs/interpolate.d.ts +18 -0
- package/dist/cjs/interpolate.js +123 -0
- package/dist/cjs/is-approximately-the-same.d.ts +1 -0
- package/dist/cjs/is-approximately-the-same.js +8 -0
- package/dist/cjs/is-player.d.ts +3 -0
- package/dist/cjs/is-player.js +14 -0
- package/dist/cjs/loading-indicator.d.ts +2 -0
- package/dist/cjs/loading-indicator.js +35 -0
- package/dist/cjs/loop/index.d.ts +9 -0
- package/dist/cjs/loop/index.js +29 -0
- package/dist/cjs/multiple-versions-warning.d.ts +1 -0
- package/dist/cjs/multiple-versions-warning.js +32 -0
- package/dist/cjs/nonce.d.ts +7 -0
- package/dist/cjs/nonce.js +17 -0
- package/dist/cjs/play-and-handle-not-allowed-error.d.ts +2 -0
- package/dist/cjs/play-and-handle-not-allowed-error.js +44 -0
- package/dist/cjs/portal-node.d.ts +1 -0
- package/dist/cjs/portal-node.js +23 -0
- package/dist/cjs/prefetch-state.d.ts +8 -0
- package/dist/cjs/prefetch-state.js +27 -0
- package/dist/cjs/prefetch.d.ts +9 -0
- package/dist/cjs/prefetch.js +108 -0
- package/dist/cjs/random.d.ts +7 -0
- package/dist/cjs/random.js +42 -0
- package/dist/cjs/register-root.d.ts +4 -0
- package/dist/cjs/register-root.js +33 -0
- package/dist/cjs/series/flatten-children.d.ts +2 -0
- package/dist/cjs/series/flatten-children.js +19 -0
- package/dist/cjs/series/index.d.ts +13 -0
- package/dist/cjs/series/index.js +60 -0
- package/dist/cjs/setup-env-variables.d.ts +2 -0
- package/dist/cjs/setup-env-variables.js +36 -0
- package/dist/cjs/spring/index.d.ts +27 -0
- package/dist/cjs/spring/index.js +55 -0
- package/dist/cjs/spring/measure-spring.d.ts +8 -0
- package/dist/cjs/spring/measure-spring.js +64 -0
- package/dist/cjs/spring/spring-utils.d.ts +21 -0
- package/dist/cjs/spring/spring-utils.js +103 -0
- package/dist/cjs/static-file.d.ts +5 -0
- package/dist/cjs/static-file.js +33 -0
- package/dist/cjs/test/Img.test.d.ts +1 -0
- package/dist/cjs/test/Img.test.js +25 -0
- package/dist/cjs/test/absolute-src.test.d.ts +1 -0
- package/dist/cjs/test/absolute-src.test.js +18 -0
- package/dist/cjs/test/audio-for-rendering.test.d.ts +1 -0
- package/dist/cjs/test/audio-for-rendering.test.js +88 -0
- package/dist/cjs/test/audio.test.d.ts +1 -0
- package/dist/cjs/test/audio.test.js +76 -0
- package/dist/cjs/test/bezier.test.d.ts +1 -0
- package/dist/cjs/test/bezier.test.js +52 -0
- package/dist/cjs/test/composition-rules.test.d.ts +1 -0
- package/dist/cjs/test/composition-rules.test.js +30 -0
- package/dist/cjs/test/composition-validation.test.d.ts +1 -0
- package/dist/cjs/test/composition-validation.test.js +99 -0
- package/dist/cjs/test/easing.test.d.ts +1 -0
- package/dist/cjs/test/easing.test.js +191 -0
- package/dist/cjs/test/expect-to-throw.d.ts +1 -0
- package/dist/cjs/test/expect-to-throw.js +15 -0
- package/dist/cjs/test/freeze.test.d.ts +1 -0
- package/dist/cjs/test/freeze.test.js +65 -0
- package/dist/cjs/test/get-asset-file-name.test.d.ts +1 -0
- package/dist/cjs/test/get-asset-file-name.test.js +14 -0
- package/dist/cjs/test/get-current-time.test.d.ts +1 -0
- package/dist/cjs/test/get-current-time.test.js +74 -0
- package/dist/cjs/test/input-props.test.d.ts +1 -0
- package/dist/cjs/test/input-props.test.js +31 -0
- package/dist/cjs/test/interpolate.test.d.ts +1 -0
- package/dist/cjs/test/interpolate.test.js +138 -0
- package/dist/cjs/test/interpolateColors.test.d.ts +1 -0
- package/dist/cjs/test/interpolateColors.test.js +63 -0
- package/dist/cjs/test/loop-validation.test.d.ts +1 -0
- package/dist/cjs/test/loop-validation.test.js +93 -0
- package/dist/cjs/test/measure-spring.test.d.ts +1 -0
- package/dist/cjs/test/measure-spring.test.js +45 -0
- package/dist/cjs/test/media-validation.test.d.ts +1 -0
- package/dist/cjs/test/media-validation.test.js +47 -0
- package/dist/cjs/test/nested-sequences.test.d.ts +1 -0
- package/dist/cjs/test/nested-sequences.test.js +132 -0
- package/dist/cjs/test/not-all-props-in-media-tags.test.d.ts +1 -0
- package/dist/cjs/test/not-all-props-in-media-tags.test.js +33 -0
- package/dist/cjs/test/random.test.d.ts +1 -0
- package/dist/cjs/test/random.test.js +60 -0
- package/dist/cjs/test/ready-manager.test.d.ts +1 -0
- package/dist/cjs/test/ready-manager.test.js +29 -0
- package/dist/cjs/test/render-hook.d.ts +23 -0
- package/dist/cjs/test/render-hook.js +27 -0
- package/dist/cjs/test/sequence-from-initial-offset.test.d.ts +4 -0
- package/dist/cjs/test/sequence-from-initial-offset.test.js +35 -0
- package/dist/cjs/test/sequence-validation.test.d.ts +1 -0
- package/dist/cjs/test/sequence-validation.test.js +47 -0
- package/dist/cjs/test/series.test.d.ts +1 -0
- package/dist/cjs/test/series.test.js +115 -0
- package/dist/cjs/test/spring.test.d.ts +1 -0
- package/dist/cjs/test/spring.test.js +38 -0
- package/dist/cjs/test/truthy.test.d.ts +1 -0
- package/dist/cjs/test/truthy.test.js +24 -0
- package/dist/cjs/test/use-audio-frame.test.d.ts +1 -0
- package/dist/cjs/test/use-audio-frame.test.js +78 -0
- package/dist/cjs/test/use-media-in-timeline.test.d.ts +1 -0
- package/dist/cjs/test/use-media-in-timeline.test.js +74 -0
- package/dist/cjs/test/use-media-tag-volume.test.d.ts +1 -0
- package/dist/cjs/test/use-media-tag-volume.test.js +49 -0
- package/dist/cjs/test/use-sync-volume-with-media-tag.test.d.ts +1 -0
- package/dist/cjs/test/use-sync-volume-with-media-tag.test.js +55 -0
- package/dist/cjs/test/validate-start-from-props.test.d.ts +1 -0
- package/dist/cjs/test/validate-start-from-props.test.js +39 -0
- package/dist/cjs/test/video.test.d.ts +1 -0
- package/dist/cjs/test/video.test.js +80 -0
- package/dist/cjs/test/volume-prop.test.d.ts +1 -0
- package/dist/cjs/test/volume-prop.test.js +95 -0
- package/dist/cjs/test/wrap-sequence-context.d.ts +6 -0
- package/dist/cjs/test/wrap-sequence-context.js +41 -0
- package/dist/cjs/timeline-position-state.d.ts +29 -0
- package/dist/cjs/timeline-position-state.js +41 -0
- package/dist/cjs/truthy.d.ts +3 -0
- package/dist/cjs/truthy.js +7 -0
- package/dist/cjs/use-current-frame.d.ts +6 -0
- package/dist/cjs/use-current-frame.js +28 -0
- package/dist/cjs/use-lazy-component.d.ts +7 -0
- package/dist/cjs/use-lazy-component.js +49 -0
- package/dist/cjs/use-media-in-timeline.d.ts +10 -0
- package/dist/cjs/use-media-in-timeline.js +129 -0
- package/dist/cjs/use-media-playback.d.ts +10 -0
- package/dist/cjs/use-media-playback.js +77 -0
- package/dist/cjs/use-media-tag-volume.d.ts +2 -0
- package/dist/cjs/use-media-tag-volume.js +31 -0
- package/dist/cjs/use-sync-volume-with-media-tag.d.ts +10 -0
- package/dist/cjs/use-sync-volume-with-media-tag.js +21 -0
- package/dist/cjs/use-unsafe-video-config.d.ts +2 -0
- package/dist/cjs/use-unsafe-video-config.js +27 -0
- package/dist/cjs/use-video-config.d.ts +7 -0
- package/dist/cjs/use-video-config.js +29 -0
- package/dist/cjs/use-video.d.ts +13 -0
- package/dist/cjs/use-video.js +28 -0
- package/dist/cjs/validate-frame.d.ts +1 -0
- package/dist/cjs/validate-frame.js +24 -0
- package/dist/cjs/validate-media-props.d.ts +4 -0
- package/dist/cjs/validate-media-props.js +24 -0
- package/dist/cjs/validate-start-from-props.d.ts +1 -0
- package/dist/cjs/validate-start-from-props.js +31 -0
- package/dist/cjs/validation/validate-composition-id.d.ts +3 -0
- package/dist/cjs/validation/validate-composition-id.js +13 -0
- package/dist/cjs/validation/validate-dimensions.d.ts +1 -0
- package/dist/cjs/validation/validate-dimensions.js +21 -0
- package/dist/cjs/validation/validate-duration-in-frames.d.ts +1 -0
- package/dist/cjs/validation/validate-duration-in-frames.js +15 -0
- package/dist/cjs/validation/validate-folder-name.d.ts +3 -0
- package/dist/cjs/validation/validate-folder-name.js +19 -0
- package/dist/cjs/validation/validate-fps.d.ts +1 -0
- package/dist/cjs/validation/validate-fps.js +21 -0
- package/dist/cjs/validation/validate-offthreadvideo-image-format.d.ts +1 -0
- package/dist/cjs/validation/validate-offthreadvideo-image-format.js +15 -0
- package/dist/cjs/validation/validation-spring-duration.d.ts +1 -0
- package/dist/cjs/validation/validation-spring-duration.js +21 -0
- package/dist/cjs/version.d.ts +1 -0
- package/dist/cjs/version.js +5 -0
- package/dist/cjs/video/OffthreadVideo.d.ts +3 -0
- package/dist/cjs/video/OffthreadVideo.js +33 -0
- package/dist/cjs/video/OffthreadVideoForRendering.d.ts +3 -0
- package/dist/cjs/video/OffthreadVideoForRendering.js +104 -0
- package/dist/cjs/video/Video.d.ts +8 -0
- package/dist/cjs/video/Video.js +50 -0
- package/dist/cjs/video/VideoForDevelopment.d.ts +11 -0
- package/dist/cjs/video/VideoForDevelopment.js +113 -0
- package/dist/cjs/video/VideoForRendering.d.ts +10 -0
- package/dist/cjs/video/VideoForRendering.js +203 -0
- package/dist/cjs/video/duration-state.d.ts +17 -0
- package/dist/cjs/video/duration-state.js +34 -0
- package/dist/cjs/video/get-current-time.d.ts +13 -0
- package/dist/cjs/video/get-current-time.js +31 -0
- package/dist/cjs/video/index.d.ts +3 -0
- package/dist/cjs/video/index.js +7 -0
- package/dist/cjs/video/props.d.ts +25 -0
- package/dist/cjs/video/props.js +2 -0
- package/dist/cjs/video/video-fragment.d.ts +12 -0
- package/dist/cjs/video/video-fragment.js +60 -0
- package/dist/cjs/video-config.d.ts +8 -0
- package/dist/cjs/video-config.js +2 -0
- package/dist/cjs/volume-position-state.d.ts +19 -0
- package/dist/cjs/volume-position-state.js +32 -0
- package/dist/cjs/volume-prop.d.ts +7 -0
- package/dist/cjs/volume-prop.js +24 -0
- package/dist/cjs/warn-about-non-seekable-media.d.ts +1 -0
- package/dist/cjs/warn-about-non-seekable-media.js +34 -0
- package/dist/cjs/wrap-remotion-context.d.ts +18 -0
- package/dist/cjs/wrap-remotion-context.js +73 -0
- package/dist/esm/AbsoluteFill.d.ts +6 -0
- package/dist/esm/AbsoluteFill.js +25 -0
- package/dist/esm/CanUseRemotionHooks.d.ts +5 -0
- package/dist/esm/CanUseRemotionHooks.js +6 -0
- package/dist/esm/Clipper.d.ts +7 -0
- package/dist/esm/Clipper.js +20 -0
- package/dist/esm/Composition.d.ts +23 -0
- package/dist/esm/Composition.js +108 -0
- package/dist/esm/CompositionManager.d.ts +82 -0
- package/dist/esm/CompositionManager.js +137 -0
- package/dist/esm/Folder.d.ts +15 -0
- package/dist/esm/Folder.js +29 -0
- package/dist/esm/IFrame.d.ts +2 -0
- package/dist/esm/IFrame.js +21 -0
- package/dist/esm/Img.d.ts +2 -0
- package/dist/esm/Img.js +49 -0
- package/dist/esm/NativeLayers.d.ts +13 -0
- package/dist/esm/NativeLayers.js +25 -0
- package/dist/esm/Null.d.ts +2 -0
- package/dist/esm/Null.js +21 -0
- package/dist/esm/RemotionRoot.d.ts +5 -0
- package/dist/esm/RemotionRoot.js +69 -0
- package/dist/esm/Sequence.d.ts +29 -0
- package/dist/esm/Sequence.js +128 -0
- package/dist/esm/Still.d.ts +3 -0
- package/dist/esm/Still.js +5 -0
- package/dist/esm/absolute-src.d.ts +1 -0
- package/dist/esm/absolute-src.js +3 -0
- package/dist/esm/asset-types.d.ts +50 -0
- package/dist/esm/asset-types.js +1 -0
- package/dist/esm/audio/Audio.d.ts +8 -0
- package/dist/esm/audio/Audio.js +49 -0
- package/dist/esm/audio/AudioForDevelopment.d.ts +11 -0
- package/dist/esm/audio/AudioForDevelopment.js +91 -0
- package/dist/esm/audio/AudioForRendering.d.ts +10 -0
- package/dist/esm/audio/AudioForRendering.js +108 -0
- package/dist/esm/audio/index.d.ts +2 -0
- package/dist/esm/audio/index.js +2 -0
- package/dist/esm/audio/props.d.ts +12 -0
- package/dist/esm/audio/props.js +1 -0
- package/dist/esm/audio/shared-audio-tags.d.ts +37 -0
- package/dist/esm/audio/shared-audio-tags.js +194 -0
- package/dist/esm/audio/use-audio-frame.d.ts +6 -0
- package/dist/esm/audio/use-audio-frame.js +18 -0
- package/dist/esm/bezier.d.ts +1 -0
- package/dist/esm/bezier.js +110 -0
- package/dist/esm/cancel-render.d.ts +1 -0
- package/dist/esm/cancel-render.js +39 -0
- package/dist/esm/config/input-props.d.ts +1 -0
- package/dist/esm/config/input-props.js +27 -0
- package/dist/esm/config.d.ts +285 -0
- package/dist/esm/config.js +17 -0
- package/dist/esm/default-css.d.ts +3 -0
- package/dist/esm/default-css.js +44 -0
- package/dist/esm/delay-render.d.ts +14 -0
- package/dist/esm/delay-render.js +72 -0
- package/dist/esm/easing.d.ts +19 -0
- package/dist/esm/easing.js +73 -0
- package/dist/esm/freeze.d.ts +7 -0
- package/dist/esm/freeze.js +30 -0
- package/dist/esm/get-asset-file-name.d.ts +1 -0
- package/dist/esm/get-asset-file-name.js +10 -0
- package/dist/esm/get-environment.d.ts +3 -0
- package/dist/esm/get-environment.js +29 -0
- package/dist/esm/get-preview-dom-element.d.ts +1 -0
- package/dist/esm/get-preview-dom-element.js +3 -0
- package/dist/esm/get-static-files.d.ts +17 -0
- package/dist/esm/get-static-files.js +27 -0
- package/dist/esm/get-timeline-clip-name.d.ts +1 -0
- package/dist/esm/get-timeline-clip-name.js +21 -0
- package/dist/esm/index.d.ts +92 -0
- package/dist/esm/index.js +41 -0
- package/dist/esm/internals.d.ts +99 -0
- package/dist/esm/internals.js +75 -0
- package/dist/esm/interpolate-colors.d.ts +5 -0
- package/dist/esm/interpolate-colors.js +397 -0
- package/dist/esm/interpolate.d.ts +18 -0
- package/dist/esm/interpolate.js +119 -0
- package/dist/esm/is-approximately-the-same.d.ts +1 -0
- package/dist/esm/is-approximately-the-same.js +4 -0
- package/dist/esm/is-player.d.ts +3 -0
- package/dist/esm/is-player.js +9 -0
- package/dist/esm/loading-indicator.d.ts +2 -0
- package/dist/esm/loading-indicator.js +31 -0
- package/dist/esm/loop/index.d.ts +9 -0
- package/dist/esm/loop/index.js +25 -0
- package/dist/esm/multiple-versions-warning.d.ts +1 -0
- package/dist/esm/multiple-versions-warning.js +28 -0
- package/dist/esm/nonce.d.ts +7 -0
- package/dist/esm/nonce.js +13 -0
- package/dist/esm/play-and-handle-not-allowed-error.d.ts +2 -0
- package/dist/esm/play-and-handle-not-allowed-error.js +40 -0
- package/dist/esm/portal-node.d.ts +1 -0
- package/dist/esm/portal-node.js +19 -0
- package/dist/esm/prefetch-state.d.ts +8 -0
- package/dist/esm/prefetch-state.js +22 -0
- package/dist/esm/prefetch.d.ts +9 -0
- package/dist/esm/prefetch.js +103 -0
- package/dist/esm/random.d.ts +7 -0
- package/dist/esm/random.js +38 -0
- package/dist/esm/register-root.d.ts +4 -0
- package/dist/esm/register-root.js +27 -0
- package/dist/esm/series/flatten-children.d.ts +2 -0
- package/dist/esm/series/flatten-children.js +12 -0
- package/dist/esm/series/index.d.ts +13 -0
- package/dist/esm/series/index.js +57 -0
- package/dist/esm/setup-env-variables.d.ts +2 -0
- package/dist/esm/setup-env-variables.js +32 -0
- package/dist/esm/spring/index.d.ts +27 -0
- package/dist/esm/spring/index.js +50 -0
- package/dist/esm/spring/measure-spring.d.ts +8 -0
- package/dist/esm/spring/measure-spring.js +60 -0
- package/dist/esm/spring/spring-utils.d.ts +21 -0
- package/dist/esm/spring/spring-utils.js +99 -0
- package/dist/esm/static-file.d.ts +5 -0
- package/dist/esm/static-file.js +29 -0
- package/dist/esm/test/Img.test.d.ts +1 -0
- package/dist/esm/test/Img.test.js +20 -0
- package/dist/esm/test/absolute-src.test.d.ts +1 -0
- package/dist/esm/test/absolute-src.test.js +16 -0
- package/dist/esm/test/audio-for-rendering.test.d.ts +1 -0
- package/dist/esm/test/audio-for-rendering.test.js +83 -0
- package/dist/esm/test/audio.test.d.ts +1 -0
- package/dist/esm/test/audio.test.js +51 -0
- package/dist/esm/test/bezier.test.d.ts +1 -0
- package/dist/esm/test/bezier.test.js +50 -0
- package/dist/esm/test/composition-rules.test.d.ts +1 -0
- package/dist/esm/test/composition-rules.test.js +28 -0
- package/dist/esm/test/composition-validation.test.d.ts +1 -0
- package/dist/esm/test/composition-validation.test.js +97 -0
- package/dist/esm/test/easing.test.d.ts +1 -0
- package/dist/esm/test/easing.test.js +189 -0
- package/dist/esm/test/expect-to-throw.d.ts +1 -0
- package/dist/esm/test/expect-to-throw.js +11 -0
- package/dist/esm/test/freeze.test.d.ts +1 -0
- package/dist/esm/test/freeze.test.js +63 -0
- package/dist/esm/test/get-asset-file-name.test.d.ts +1 -0
- package/dist/esm/test/get-asset-file-name.test.js +12 -0
- package/dist/esm/test/get-current-time.test.d.ts +1 -0
- package/dist/esm/test/get-current-time.test.js +72 -0
- package/dist/esm/test/input-props.test.d.ts +1 -0
- package/dist/esm/test/input-props.test.js +29 -0
- package/dist/esm/test/interpolate.test.d.ts +1 -0
- package/dist/esm/test/interpolate.test.js +136 -0
- package/dist/esm/test/interpolateColors.test.d.ts +1 -0
- package/dist/esm/test/interpolateColors.test.js +61 -0
- package/dist/esm/test/loop-validation.test.d.ts +1 -0
- package/dist/esm/test/loop-validation.test.js +68 -0
- package/dist/esm/test/measure-spring.test.d.ts +1 -0
- package/dist/esm/test/measure-spring.test.js +43 -0
- package/dist/esm/test/media-validation.test.d.ts +1 -0
- package/dist/esm/test/media-validation.test.js +45 -0
- package/dist/esm/test/nested-sequences.test.d.ts +1 -0
- package/dist/esm/test/nested-sequences.test.js +130 -0
- package/dist/esm/test/not-all-props-in-media-tags.test.d.ts +1 -0
- package/dist/esm/test/not-all-props-in-media-tags.test.js +28 -0
- package/dist/esm/test/random.test.d.ts +1 -0
- package/dist/esm/test/random.test.js +58 -0
- package/dist/esm/test/ready-manager.test.d.ts +1 -0
- package/dist/esm/test/ready-manager.test.js +27 -0
- package/dist/esm/test/render-hook.d.ts +23 -0
- package/dist/esm/test/render-hook.js +20 -0
- package/dist/esm/test/sequence-from-initial-offset.test.d.ts +4 -0
- package/dist/esm/test/sequence-from-initial-offset.test.js +33 -0
- package/dist/esm/test/sequence-validation.test.d.ts +1 -0
- package/dist/esm/test/sequence-validation.test.js +45 -0
- package/dist/esm/test/series.test.d.ts +1 -0
- package/dist/esm/test/series.test.js +113 -0
- package/dist/esm/test/spring.test.d.ts +1 -0
- package/dist/esm/test/spring.test.js +36 -0
- package/dist/esm/test/truthy.test.d.ts +1 -0
- package/dist/esm/test/truthy.test.js +22 -0
- package/dist/esm/test/use-audio-frame.test.d.ts +1 -0
- package/dist/esm/test/use-audio-frame.test.js +53 -0
- package/dist/esm/test/use-media-in-timeline.test.d.ts +1 -0
- package/dist/esm/test/use-media-in-timeline.test.js +49 -0
- package/dist/esm/test/use-media-tag-volume.test.d.ts +1 -0
- package/dist/esm/test/use-media-tag-volume.test.js +44 -0
- package/dist/esm/test/use-sync-volume-with-media-tag.test.d.ts +1 -0
- package/dist/esm/test/use-sync-volume-with-media-tag.test.js +53 -0
- package/dist/esm/test/validate-start-from-props.test.d.ts +1 -0
- package/dist/esm/test/validate-start-from-props.test.js +37 -0
- package/dist/esm/test/video.test.d.ts +1 -0
- package/dist/esm/test/video.test.js +55 -0
- package/dist/esm/test/volume-prop.test.d.ts +1 -0
- package/dist/esm/test/volume-prop.test.js +93 -0
- package/dist/esm/test/wrap-sequence-context.d.ts +6 -0
- package/dist/esm/test/wrap-sequence-context.js +37 -0
- package/dist/esm/timeline-position-state.d.ts +29 -0
- package/dist/esm/timeline-position-state.js +35 -0
- package/dist/esm/truthy.d.ts +3 -0
- package/dist/esm/truthy.js +3 -0
- package/dist/esm/use-current-frame.d.ts +6 -0
- package/dist/esm/use-current-frame.js +24 -0
- package/dist/esm/use-lazy-component.d.ts +7 -0
- package/dist/esm/use-lazy-component.js +22 -0
- package/dist/esm/use-media-in-timeline.d.ts +10 -0
- package/dist/esm/use-media-in-timeline.js +125 -0
- package/dist/esm/use-media-playback.d.ts +10 -0
- package/dist/esm/use-media-playback.js +73 -0
- package/dist/esm/use-media-tag-volume.d.ts +2 -0
- package/dist/esm/use-media-tag-volume.js +27 -0
- package/dist/esm/use-sync-volume-with-media-tag.d.ts +10 -0
- package/dist/esm/use-sync-volume-with-media-tag.js +17 -0
- package/dist/esm/use-unsafe-video-config.d.ts +2 -0
- package/dist/esm/use-unsafe-video-config.js +23 -0
- package/dist/esm/use-video-config.d.ts +7 -0
- package/dist/esm/use-video-config.js +25 -0
- package/dist/esm/use-video.d.ts +13 -0
- package/dist/esm/use-video.js +24 -0
- package/dist/esm/validate-frame.d.ts +1 -0
- package/dist/esm/validate-frame.js +20 -0
- package/dist/esm/validate-media-props.d.ts +4 -0
- package/dist/esm/validate-media-props.js +20 -0
- package/dist/esm/validate-start-from-props.d.ts +1 -0
- package/dist/esm/validate-start-from-props.js +27 -0
- package/dist/esm/validation/validate-composition-id.d.ts +3 -0
- package/dist/esm/validation/validate-composition-id.js +8 -0
- package/dist/esm/validation/validate-dimensions.d.ts +1 -0
- package/dist/esm/validation/validate-dimensions.js +17 -0
- package/dist/esm/validation/validate-duration-in-frames.d.ts +1 -0
- package/dist/esm/validation/validate-duration-in-frames.js +11 -0
- package/dist/esm/validation/validate-folder-name.d.ts +3 -0
- package/dist/esm/validation/validate-folder-name.js +14 -0
- package/dist/esm/validation/validate-fps.d.ts +1 -0
- package/dist/esm/validation/validate-fps.js +17 -0
- package/dist/esm/validation/validate-offthreadvideo-image-format.d.ts +1 -0
- package/dist/esm/validation/validate-offthreadvideo-image-format.js +11 -0
- package/dist/esm/validation/validation-spring-duration.d.ts +1 -0
- package/dist/esm/validation/validation-spring-duration.js +17 -0
- package/dist/esm/version.d.ts +1 -0
- package/dist/esm/version.js +2 -0
- package/dist/esm/video/OffthreadVideo.d.ts +3 -0
- package/dist/esm/video/OffthreadVideo.js +29 -0
- package/dist/esm/video/OffthreadVideoForRendering.d.ts +3 -0
- package/dist/esm/video/OffthreadVideoForRendering.js +100 -0
- package/dist/esm/video/Video.d.ts +8 -0
- package/dist/esm/video/Video.js +47 -0
- package/dist/esm/video/VideoForDevelopment.d.ts +11 -0
- package/dist/esm/video/VideoForDevelopment.js +110 -0
- package/dist/esm/video/VideoForRendering.d.ts +10 -0
- package/dist/esm/video/VideoForRendering.js +200 -0
- package/dist/esm/video/duration-state.d.ts +17 -0
- package/dist/esm/video/duration-state.js +29 -0
- package/dist/esm/video/get-current-time.d.ts +13 -0
- package/dist/esm/video/get-current-time.js +26 -0
- package/dist/esm/video/index.d.ts +3 -0
- package/dist/esm/video/index.js +2 -0
- package/dist/esm/video/props.d.ts +25 -0
- package/dist/esm/video/props.js +1 -0
- package/dist/esm/video/video-fragment.d.ts +12 -0
- package/dist/esm/video/video-fragment.js +55 -0
- package/dist/esm/video-config.d.ts +8 -0
- package/dist/esm/video-config.js +1 -0
- package/dist/esm/volume-position-state.d.ts +19 -0
- package/dist/esm/volume-position-state.js +27 -0
- package/dist/esm/volume-prop.d.ts +7 -0
- package/dist/esm/volume-prop.js +20 -0
- package/dist/esm/warn-about-non-seekable-media.d.ts +1 -0
- package/dist/esm/warn-about-non-seekable-media.js +30 -0
- package/dist/esm/wrap-remotion-context.d.ts +18 -0
- package/dist/esm/wrap-remotion-context.js +45 -0
- package/dist/internals.d.ts +0 -1
- package/dist/series/index.js +5 -2
- package/dist/tsconfig-cjs.tsbuildinfo +1 -0
- package/dist/use-video.d.ts +0 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/video/Video.d.ts +1 -1
- package/dist/video/VideoForDevelopment.d.ts +1 -1
- package/dist/video/VideoForRendering.d.ts +1 -1
- package/package.json +23 -12
- package/tsconfig-cjs.json +11 -0
- package/tsconfig.json +3 -3
- package/dist/LayerMaster.d.ts +0 -8
- package/dist/LayerMaster.js +0 -39
- package/dist/Satori.d.ts +0 -5
- package/dist/Satori.js +0 -92
- package/dist/get-compositions-from-markup.d.ts +0 -3
- package/dist/get-compositions-from-markup.js +0 -19
- package/dist/layers.d.ts +0 -24
- package/dist/layers.js +0 -149
- package/dist/video/NativeVideo.d.ts +0 -5
- package/dist/video/NativeVideo.js +0 -33
- package/dist/video/NativeVideoForRendering.d.ts +0 -8
- package/dist/video/NativeVideoForRendering.js +0 -14
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const volume_prop_js_1 = require("../volume-prop.js");
|
|
5
|
+
const expect_to_throw_js_1 = require("./expect-to-throw.js");
|
|
6
|
+
(0, vitest_1.describe)('EvaluateVolume does not throw', () => {
|
|
7
|
+
(0, vitest_1.test)('Volume is undefined', () => {
|
|
8
|
+
const toEvaluate = {
|
|
9
|
+
frame: 10,
|
|
10
|
+
volume: undefined,
|
|
11
|
+
mediaVolume: 1,
|
|
12
|
+
allowAmplificationDuringRender: false,
|
|
13
|
+
};
|
|
14
|
+
(0, vitest_1.expect)((0, volume_prop_js_1.evaluateVolume)(toEvaluate)).toEqual(1);
|
|
15
|
+
});
|
|
16
|
+
(0, vitest_1.test)('Volume is smaller than one', () => {
|
|
17
|
+
const smallVolume = 0.5;
|
|
18
|
+
const toEvaluate = {
|
|
19
|
+
frame: 10,
|
|
20
|
+
volume: smallVolume,
|
|
21
|
+
mediaVolume: 1,
|
|
22
|
+
allowAmplificationDuringRender: false,
|
|
23
|
+
};
|
|
24
|
+
(0, vitest_1.expect)((0, volume_prop_js_1.evaluateVolume)(toEvaluate)).toEqual(smallVolume);
|
|
25
|
+
});
|
|
26
|
+
(0, vitest_1.test)('Volume is bigger than one', () => {
|
|
27
|
+
const toEvaluate = {
|
|
28
|
+
frame: 10,
|
|
29
|
+
volume: 10,
|
|
30
|
+
mediaVolume: 1,
|
|
31
|
+
allowAmplificationDuringRender: true,
|
|
32
|
+
};
|
|
33
|
+
(0, vitest_1.expect)((0, volume_prop_js_1.evaluateVolume)(toEvaluate)).toBe(10);
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.test)('evaluated volume from frame that is smaller than one', () => {
|
|
36
|
+
const toEvaluate = {
|
|
37
|
+
frame: 1,
|
|
38
|
+
volume: (frame) => frame * 0.5,
|
|
39
|
+
mediaVolume: 1,
|
|
40
|
+
allowAmplificationDuringRender: false,
|
|
41
|
+
};
|
|
42
|
+
(0, vitest_1.expect)((0, volume_prop_js_1.evaluateVolume)(toEvaluate)).toBe(0.5);
|
|
43
|
+
});
|
|
44
|
+
(0, vitest_1.test)('evaluated volume from frame that is bigger than one', () => {
|
|
45
|
+
const toEvaluate = {
|
|
46
|
+
frame: 10,
|
|
47
|
+
volume: (frame) => frame,
|
|
48
|
+
mediaVolume: 1,
|
|
49
|
+
allowAmplificationDuringRender: false,
|
|
50
|
+
};
|
|
51
|
+
(0, vitest_1.expect)((0, volume_prop_js_1.evaluateVolume)(toEvaluate)).toBe(1);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
(0, vitest_1.describe)('evaluateVolume throws exception', () => {
|
|
55
|
+
(0, vitest_1.test)('It should throw if volume prop is neither number nor undefined', () => {
|
|
56
|
+
const toEvaluate = { frame: 10, volume: 'NaN' };
|
|
57
|
+
(0, expect_to_throw_js_1.expectToThrow)(() => {
|
|
58
|
+
// @ts-expect-error
|
|
59
|
+
(0, volume_prop_js_1.evaluateVolume)(toEvaluate);
|
|
60
|
+
}, /volume is not a function/);
|
|
61
|
+
});
|
|
62
|
+
(0, vitest_1.test)('It should throw if volume is invalid type', () => {
|
|
63
|
+
const invalidVolume = 'anystring';
|
|
64
|
+
const toEvaluate = { frame: 1, volume: () => invalidVolume, mediaVolume: 1 };
|
|
65
|
+
// changing the test because string multiply by a number in javascript is `NaN`
|
|
66
|
+
(0, expect_to_throw_js_1.expectToThrow)(() => {
|
|
67
|
+
// @ts-expect-error
|
|
68
|
+
(0, volume_prop_js_1.evaluateVolume)(toEvaluate);
|
|
69
|
+
}, /You passed in a function to the volume prop but it returned NaN for frame 1./);
|
|
70
|
+
});
|
|
71
|
+
(0, vitest_1.test)('It should throw if volume is NaN', () => {
|
|
72
|
+
const invalidVolume = NaN;
|
|
73
|
+
const toEvaluate = {
|
|
74
|
+
frame: 1,
|
|
75
|
+
volume: () => invalidVolume,
|
|
76
|
+
mediaVolume: 1,
|
|
77
|
+
allowAmplificationDuringRender: false,
|
|
78
|
+
};
|
|
79
|
+
(0, expect_to_throw_js_1.expectToThrow)(() => {
|
|
80
|
+
(0, volume_prop_js_1.evaluateVolume)(toEvaluate);
|
|
81
|
+
}, /You passed in a function to the volume prop but it returned NaN for frame 1/);
|
|
82
|
+
});
|
|
83
|
+
(0, vitest_1.test)('It should throw if volume returns non finite number', () => {
|
|
84
|
+
const invalidVolume = Infinity;
|
|
85
|
+
const toEvaluate = {
|
|
86
|
+
frame: 1,
|
|
87
|
+
volume: () => invalidVolume,
|
|
88
|
+
mediaVolume: 1,
|
|
89
|
+
allowAmplificationDuringRender: false,
|
|
90
|
+
};
|
|
91
|
+
(0, expect_to_throw_js_1.expectToThrow)(() => {
|
|
92
|
+
(0, volume_prop_js_1.evaluateVolume)(toEvaluate);
|
|
93
|
+
}, /You passed in a function to the volume prop but it returned a non-finite number for frame 1/);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WrapSequenceContext = exports.mockCompositionContext = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const CanUseRemotionHooks_js_1 = require("../CanUseRemotionHooks.js");
|
|
6
|
+
const CompositionManager_js_1 = require("../CompositionManager.js");
|
|
7
|
+
const Comp = () => null;
|
|
8
|
+
exports.mockCompositionContext = {
|
|
9
|
+
assets: [],
|
|
10
|
+
compositions: [
|
|
11
|
+
{
|
|
12
|
+
id: 'my-comp',
|
|
13
|
+
durationInFrames: 100,
|
|
14
|
+
// @ts-expect-error
|
|
15
|
+
component: Comp,
|
|
16
|
+
defaultProps: {},
|
|
17
|
+
folderName: null,
|
|
18
|
+
fps: 30,
|
|
19
|
+
height: 1080,
|
|
20
|
+
width: 1080,
|
|
21
|
+
parentFolderName: null,
|
|
22
|
+
nonce: 0,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
currentComposition: 'my-comp',
|
|
26
|
+
folders: [],
|
|
27
|
+
registerAsset: () => undefined,
|
|
28
|
+
registerComposition: () => undefined,
|
|
29
|
+
registerFolder: () => undefined,
|
|
30
|
+
registerSequence: () => undefined,
|
|
31
|
+
sequences: [],
|
|
32
|
+
setCurrentComposition: () => undefined,
|
|
33
|
+
unregisterAsset: () => undefined,
|
|
34
|
+
unregisterComposition: () => undefined,
|
|
35
|
+
unregisterFolder: () => undefined,
|
|
36
|
+
unregisterSequence: () => undefined,
|
|
37
|
+
};
|
|
38
|
+
const WrapSequenceContext = ({ children }) => {
|
|
39
|
+
return ((0, jsx_runtime_1.jsx)(CanUseRemotionHooks_js_1.CanUseRemotionHooksProvider, { children: (0, jsx_runtime_1.jsx)(CompositionManager_js_1.CompositionManager.Provider, { value: exports.mockCompositionContext, children: children }) }));
|
|
40
|
+
};
|
|
41
|
+
exports.WrapSequenceContext = WrapSequenceContext;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { MutableRefObject } from 'react';
|
|
2
|
+
export declare type PlayableMediaTag = {
|
|
3
|
+
play: () => void;
|
|
4
|
+
id: string;
|
|
5
|
+
};
|
|
6
|
+
export declare type TimelineContextValue = {
|
|
7
|
+
frame: number;
|
|
8
|
+
playing: boolean;
|
|
9
|
+
rootId: string;
|
|
10
|
+
playbackRate: number;
|
|
11
|
+
imperativePlaying: MutableRefObject<boolean>;
|
|
12
|
+
setPlaybackRate: (u: React.SetStateAction<number>) => void;
|
|
13
|
+
audioAndVideoTags: MutableRefObject<PlayableMediaTag[]>;
|
|
14
|
+
};
|
|
15
|
+
export declare type SetTimelineContextValue = {
|
|
16
|
+
setFrame: (u: React.SetStateAction<number>) => void;
|
|
17
|
+
setPlaying: (u: React.SetStateAction<boolean>) => void;
|
|
18
|
+
};
|
|
19
|
+
export declare const TimelineContext: import("react").Context<TimelineContextValue>;
|
|
20
|
+
export declare const SetTimelineContext: import("react").Context<SetTimelineContextValue>;
|
|
21
|
+
export declare const useTimelinePosition: () => number;
|
|
22
|
+
export declare const useTimelineSetFrame: () => (u: React.SetStateAction<number>) => void;
|
|
23
|
+
declare type PlayingReturnType = readonly [
|
|
24
|
+
boolean,
|
|
25
|
+
(u: React.SetStateAction<boolean>) => void,
|
|
26
|
+
MutableRefObject<boolean>
|
|
27
|
+
];
|
|
28
|
+
export declare const usePlayingState: () => PlayingReturnType;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.usePlayingState = exports.useTimelineSetFrame = exports.useTimelinePosition = exports.SetTimelineContext = exports.TimelineContext = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
exports.TimelineContext = (0, react_1.createContext)({
|
|
6
|
+
frame: 0,
|
|
7
|
+
playing: false,
|
|
8
|
+
playbackRate: 1,
|
|
9
|
+
rootId: '',
|
|
10
|
+
imperativePlaying: {
|
|
11
|
+
current: false,
|
|
12
|
+
},
|
|
13
|
+
setPlaybackRate: () => {
|
|
14
|
+
throw new Error('default');
|
|
15
|
+
},
|
|
16
|
+
audioAndVideoTags: { current: [] },
|
|
17
|
+
});
|
|
18
|
+
exports.SetTimelineContext = (0, react_1.createContext)({
|
|
19
|
+
setFrame: () => {
|
|
20
|
+
throw new Error('default');
|
|
21
|
+
},
|
|
22
|
+
setPlaying: () => {
|
|
23
|
+
throw new Error('default');
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
const useTimelinePosition = () => {
|
|
27
|
+
const state = (0, react_1.useContext)(exports.TimelineContext);
|
|
28
|
+
return state.frame;
|
|
29
|
+
};
|
|
30
|
+
exports.useTimelinePosition = useTimelinePosition;
|
|
31
|
+
const useTimelineSetFrame = () => {
|
|
32
|
+
const { setFrame } = (0, react_1.useContext)(exports.SetTimelineContext);
|
|
33
|
+
return setFrame;
|
|
34
|
+
};
|
|
35
|
+
exports.useTimelineSetFrame = useTimelineSetFrame;
|
|
36
|
+
const usePlayingState = () => {
|
|
37
|
+
const { playing, imperativePlaying } = (0, react_1.useContext)(exports.TimelineContext);
|
|
38
|
+
const { setPlaying } = (0, react_1.useContext)(exports.SetTimelineContext);
|
|
39
|
+
return (0, react_1.useMemo)(() => [playing, setPlaying, imperativePlaying], [imperativePlaying, playing, setPlaying]);
|
|
40
|
+
};
|
|
41
|
+
exports.usePlayingState = usePlayingState;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get the current frame of the video.
|
|
3
|
+
* Frames are 0-indexed, meaning the first frame is 0, the last frame is the duration of the composition in frames minus one.
|
|
4
|
+
* @link https://www.remotion.dev/docs/use-current-frame
|
|
5
|
+
*/
|
|
6
|
+
export declare const useCurrentFrame: () => number;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useCurrentFrame = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const CanUseRemotionHooks_js_1 = require("./CanUseRemotionHooks.js");
|
|
6
|
+
const Sequence_js_1 = require("./Sequence.js");
|
|
7
|
+
const timeline_position_state_js_1 = require("./timeline-position-state.js");
|
|
8
|
+
/**
|
|
9
|
+
* Get the current frame of the video.
|
|
10
|
+
* Frames are 0-indexed, meaning the first frame is 0, the last frame is the duration of the composition in frames minus one.
|
|
11
|
+
* @link https://www.remotion.dev/docs/use-current-frame
|
|
12
|
+
*/
|
|
13
|
+
const useCurrentFrame = () => {
|
|
14
|
+
const canUseRemotionHooks = (0, react_1.useContext)(CanUseRemotionHooks_js_1.CanUseRemotionHooks);
|
|
15
|
+
if (!canUseRemotionHooks) {
|
|
16
|
+
if (typeof window !== 'undefined' && window.remotion_isPlayer) {
|
|
17
|
+
throw new Error(`useCurrentFrame can only be called inside a component that was passed to <Player>. See: https://www.remotion.dev/docs/player/examples`);
|
|
18
|
+
}
|
|
19
|
+
throw new Error(`useCurrentFrame() can only be called inside a component that was registered as a composition. See https://www.remotion.dev/docs/the-fundamentals#defining-compositions`);
|
|
20
|
+
}
|
|
21
|
+
const frame = (0, timeline_position_state_js_1.useTimelinePosition)();
|
|
22
|
+
const context = (0, react_1.useContext)(Sequence_js_1.SequenceContext);
|
|
23
|
+
const contextOffset = context
|
|
24
|
+
? context.cumulatedFrom + context.relativeFrom
|
|
25
|
+
: 0;
|
|
26
|
+
return frame - contextOffset;
|
|
27
|
+
};
|
|
28
|
+
exports.useCurrentFrame = useCurrentFrame;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ComponentPropsWithRef, ComponentType, ExoticComponent } from 'react';
|
|
2
|
+
import type { CompProps } from './internals.js';
|
|
3
|
+
declare type LazyExoticComponent<T extends ComponentType<any>> = ExoticComponent<ComponentPropsWithRef<T>> & {
|
|
4
|
+
readonly _result: T;
|
|
5
|
+
};
|
|
6
|
+
export declare const useLazyComponent: <T>(compProps: CompProps<T>) => LazyExoticComponent<ComponentType<T>>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.useLazyComponent = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
// Expected, it can be any component props
|
|
29
|
+
const useLazyComponent = (compProps) => {
|
|
30
|
+
const lazy = (0, react_1.useMemo)(() => {
|
|
31
|
+
if ('lazyComponent' in compProps) {
|
|
32
|
+
return react_1.default.lazy(compProps.lazyComponent);
|
|
33
|
+
}
|
|
34
|
+
if ('component' in compProps) {
|
|
35
|
+
// In SSR, suspense is not yet supported, we cannot use React.lazy
|
|
36
|
+
if (typeof document === 'undefined') {
|
|
37
|
+
return compProps.component;
|
|
38
|
+
}
|
|
39
|
+
return react_1.default.lazy(() => Promise.resolve({ default: compProps.component }));
|
|
40
|
+
}
|
|
41
|
+
throw new Error("You must pass either 'component' or 'lazyComponent'");
|
|
42
|
+
// Very important to leave the dependencies as they are, or instead
|
|
43
|
+
// the player will remount on every frame.
|
|
44
|
+
// @ts-expect-error
|
|
45
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
46
|
+
}, [compProps.component, compProps.lazyComponent]);
|
|
47
|
+
return lazy;
|
|
48
|
+
};
|
|
49
|
+
exports.useLazyComponent = useLazyComponent;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RefObject } from 'react';
|
|
2
|
+
import type { VolumeProp } from './volume-prop.js';
|
|
3
|
+
export declare const useMediaInTimeline: ({ volume, mediaVolume, mediaRef, src, mediaType, playbackRate, }: {
|
|
4
|
+
volume: VolumeProp | undefined;
|
|
5
|
+
mediaVolume: number;
|
|
6
|
+
mediaRef: RefObject<HTMLAudioElement | HTMLVideoElement>;
|
|
7
|
+
src: string | undefined;
|
|
8
|
+
mediaType: 'audio' | 'video';
|
|
9
|
+
playbackRate: number;
|
|
10
|
+
}) => void;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useMediaInTimeline = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const use_audio_frame_js_1 = require("./audio/use-audio-frame.js");
|
|
6
|
+
const CompositionManager_js_1 = require("./CompositionManager.js");
|
|
7
|
+
const get_asset_file_name_js_1 = require("./get-asset-file-name.js");
|
|
8
|
+
const get_environment_js_1 = require("./get-environment.js");
|
|
9
|
+
const nonce_js_1 = require("./nonce.js");
|
|
10
|
+
const play_and_handle_not_allowed_error_js_1 = require("./play-and-handle-not-allowed-error.js");
|
|
11
|
+
const Sequence_js_1 = require("./Sequence.js");
|
|
12
|
+
const timeline_position_state_js_1 = require("./timeline-position-state.js");
|
|
13
|
+
const use_video_config_js_1 = require("./use-video-config.js");
|
|
14
|
+
const volume_prop_js_1 = require("./volume-prop.js");
|
|
15
|
+
const didWarn = {};
|
|
16
|
+
const warnOnce = (message) => {
|
|
17
|
+
if (didWarn[message]) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
console.warn(message);
|
|
21
|
+
didWarn[message] = true;
|
|
22
|
+
};
|
|
23
|
+
const useMediaInTimeline = ({ volume, mediaVolume, mediaRef, src, mediaType, playbackRate, }) => {
|
|
24
|
+
const videoConfig = (0, use_video_config_js_1.useVideoConfig)();
|
|
25
|
+
const { rootId, audioAndVideoTags } = (0, react_1.useContext)(timeline_position_state_js_1.TimelineContext);
|
|
26
|
+
const parentSequence = (0, react_1.useContext)(Sequence_js_1.SequenceContext);
|
|
27
|
+
const actualFrom = parentSequence
|
|
28
|
+
? parentSequence.relativeFrom + parentSequence.cumulatedFrom
|
|
29
|
+
: 0;
|
|
30
|
+
const [playing] = (0, timeline_position_state_js_1.usePlayingState)();
|
|
31
|
+
const startsAt = (0, use_audio_frame_js_1.useMediaStartsAt)();
|
|
32
|
+
const { registerSequence, unregisterSequence } = (0, react_1.useContext)(CompositionManager_js_1.CompositionManager);
|
|
33
|
+
const [id] = (0, react_1.useState)(() => String(Math.random()));
|
|
34
|
+
const [initialVolume] = (0, react_1.useState)(() => volume);
|
|
35
|
+
const nonce = (0, nonce_js_1.useNonce)();
|
|
36
|
+
const duration = parentSequence
|
|
37
|
+
? Math.min(parentSequence.durationInFrames, videoConfig.durationInFrames)
|
|
38
|
+
: videoConfig.durationInFrames;
|
|
39
|
+
const doesVolumeChange = typeof volume === 'function';
|
|
40
|
+
const environment = (0, get_environment_js_1.useRemotionEnvironment)();
|
|
41
|
+
const volumes = (0, react_1.useMemo)(() => {
|
|
42
|
+
if (typeof volume === 'number') {
|
|
43
|
+
return volume;
|
|
44
|
+
}
|
|
45
|
+
return new Array(Math.max(0, duration + startsAt))
|
|
46
|
+
.fill(true)
|
|
47
|
+
.map((_, i) => {
|
|
48
|
+
return (0, volume_prop_js_1.evaluateVolume)({
|
|
49
|
+
frame: i + startsAt,
|
|
50
|
+
volume,
|
|
51
|
+
mediaVolume,
|
|
52
|
+
allowAmplificationDuringRender: false,
|
|
53
|
+
});
|
|
54
|
+
})
|
|
55
|
+
.join(',');
|
|
56
|
+
}, [duration, startsAt, volume, mediaVolume]);
|
|
57
|
+
(0, react_1.useEffect)(() => {
|
|
58
|
+
if (typeof volume === 'number' && volume !== initialVolume) {
|
|
59
|
+
warnOnce(`Remotion: The ${mediaType} with src ${src} has changed it's volume. Prefer the callback syntax for setting volume to get better timeline display: https://www.remotion.dev/docs/using-audio/#controlling-volume`);
|
|
60
|
+
}
|
|
61
|
+
}, [initialVolume, mediaType, src, volume]);
|
|
62
|
+
(0, react_1.useEffect)(() => {
|
|
63
|
+
var _a;
|
|
64
|
+
if (!mediaRef.current) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (!src) {
|
|
68
|
+
throw new Error('No src passed');
|
|
69
|
+
}
|
|
70
|
+
if (environment !== 'preview' && process.env.NODE_ENV !== 'test') {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
registerSequence({
|
|
74
|
+
type: mediaType,
|
|
75
|
+
src,
|
|
76
|
+
id,
|
|
77
|
+
duration,
|
|
78
|
+
from: 0,
|
|
79
|
+
parent: (_a = parentSequence === null || parentSequence === void 0 ? void 0 : parentSequence.id) !== null && _a !== void 0 ? _a : null,
|
|
80
|
+
displayName: (0, get_asset_file_name_js_1.getAssetDisplayName)(src),
|
|
81
|
+
rootId,
|
|
82
|
+
volume: volumes,
|
|
83
|
+
showInTimeline: true,
|
|
84
|
+
nonce,
|
|
85
|
+
startMediaFrom: 0 - startsAt,
|
|
86
|
+
doesVolumeChange,
|
|
87
|
+
showLoopTimesInTimeline: undefined,
|
|
88
|
+
playbackRate,
|
|
89
|
+
});
|
|
90
|
+
return () => {
|
|
91
|
+
unregisterSequence(id);
|
|
92
|
+
};
|
|
93
|
+
}, [
|
|
94
|
+
actualFrom,
|
|
95
|
+
duration,
|
|
96
|
+
id,
|
|
97
|
+
parentSequence,
|
|
98
|
+
src,
|
|
99
|
+
registerSequence,
|
|
100
|
+
rootId,
|
|
101
|
+
unregisterSequence,
|
|
102
|
+
videoConfig,
|
|
103
|
+
volumes,
|
|
104
|
+
doesVolumeChange,
|
|
105
|
+
nonce,
|
|
106
|
+
mediaRef,
|
|
107
|
+
mediaType,
|
|
108
|
+
startsAt,
|
|
109
|
+
playbackRate,
|
|
110
|
+
environment,
|
|
111
|
+
]);
|
|
112
|
+
(0, react_1.useEffect)(() => {
|
|
113
|
+
const tag = {
|
|
114
|
+
id,
|
|
115
|
+
play: () => {
|
|
116
|
+
if (!playing) {
|
|
117
|
+
// Don't play if for example in a <Freeze> state.
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
return (0, play_and_handle_not_allowed_error_js_1.playAndHandleNotAllowedError)(mediaRef, mediaType);
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
audioAndVideoTags.current.push(tag);
|
|
124
|
+
return () => {
|
|
125
|
+
audioAndVideoTags.current = audioAndVideoTags.current.filter((a) => a.id !== id);
|
|
126
|
+
};
|
|
127
|
+
}, [audioAndVideoTags, id, mediaRef, mediaType, playing]);
|
|
128
|
+
};
|
|
129
|
+
exports.useMediaInTimeline = useMediaInTimeline;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RefObject } from 'react';
|
|
2
|
+
export declare const DEFAULT_ACCEPTABLE_TIMESHIFT = 0.45;
|
|
3
|
+
export declare const useMediaPlayback: ({ mediaRef, src, mediaType, playbackRate: localPlaybackRate, onlyWarnForMediaSeekingError, acceptableTimeshift, }: {
|
|
4
|
+
mediaRef: RefObject<HTMLVideoElement | HTMLAudioElement>;
|
|
5
|
+
src: string | undefined;
|
|
6
|
+
mediaType: 'audio' | 'video';
|
|
7
|
+
playbackRate: number;
|
|
8
|
+
onlyWarnForMediaSeekingError: boolean;
|
|
9
|
+
acceptableTimeshift: number;
|
|
10
|
+
}) => void;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useMediaPlayback = exports.DEFAULT_ACCEPTABLE_TIMESHIFT = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const use_audio_frame_js_1 = require("./audio/use-audio-frame.js");
|
|
6
|
+
const play_and_handle_not_allowed_error_js_1 = require("./play-and-handle-not-allowed-error.js");
|
|
7
|
+
const timeline_position_state_js_1 = require("./timeline-position-state.js");
|
|
8
|
+
const use_current_frame_js_1 = require("./use-current-frame.js");
|
|
9
|
+
const use_video_config_js_1 = require("./use-video-config.js");
|
|
10
|
+
const get_current_time_js_1 = require("./video/get-current-time.js");
|
|
11
|
+
const warn_about_non_seekable_media_js_1 = require("./warn-about-non-seekable-media.js");
|
|
12
|
+
exports.DEFAULT_ACCEPTABLE_TIMESHIFT = 0.45;
|
|
13
|
+
const useMediaPlayback = ({ mediaRef, src, mediaType, playbackRate: localPlaybackRate, onlyWarnForMediaSeekingError, acceptableTimeshift, }) => {
|
|
14
|
+
const { playbackRate: globalPlaybackRate } = (0, react_1.useContext)(timeline_position_state_js_1.TimelineContext);
|
|
15
|
+
const frame = (0, use_current_frame_js_1.useCurrentFrame)();
|
|
16
|
+
const absoluteFrame = (0, timeline_position_state_js_1.useTimelinePosition)();
|
|
17
|
+
const [playing] = (0, timeline_position_state_js_1.usePlayingState)();
|
|
18
|
+
const { fps } = (0, use_video_config_js_1.useVideoConfig)();
|
|
19
|
+
const mediaStartsAt = (0, use_audio_frame_js_1.useMediaStartsAt)();
|
|
20
|
+
const playbackRate = localPlaybackRate * globalPlaybackRate;
|
|
21
|
+
(0, react_1.useEffect)(() => {
|
|
22
|
+
var _a;
|
|
23
|
+
if (!playing) {
|
|
24
|
+
(_a = mediaRef.current) === null || _a === void 0 ? void 0 : _a.pause();
|
|
25
|
+
}
|
|
26
|
+
}, [mediaRef, mediaType, playing]);
|
|
27
|
+
(0, react_1.useEffect)(() => {
|
|
28
|
+
const tagName = mediaType === 'audio' ? '<Audio>' : '<Video>';
|
|
29
|
+
if (!mediaRef.current) {
|
|
30
|
+
throw new Error(`No ${mediaType} ref found`);
|
|
31
|
+
}
|
|
32
|
+
if (!src) {
|
|
33
|
+
throw new Error(`No 'src' attribute was passed to the ${tagName} element.`);
|
|
34
|
+
}
|
|
35
|
+
mediaRef.current.playbackRate = Math.max(0, playbackRate);
|
|
36
|
+
const shouldBeTime = (0, get_current_time_js_1.getMediaTime)({
|
|
37
|
+
fps,
|
|
38
|
+
frame,
|
|
39
|
+
src,
|
|
40
|
+
playbackRate: localPlaybackRate,
|
|
41
|
+
startFrom: -mediaStartsAt,
|
|
42
|
+
mediaType,
|
|
43
|
+
});
|
|
44
|
+
const isTime = mediaRef.current.currentTime;
|
|
45
|
+
const timeShift = Math.abs(shouldBeTime - isTime);
|
|
46
|
+
if (timeShift > acceptableTimeshift && !mediaRef.current.ended) {
|
|
47
|
+
// If scrubbing around, adjust timing
|
|
48
|
+
// or if time shift is bigger than 0.2sec
|
|
49
|
+
mediaRef.current.currentTime = shouldBeTime;
|
|
50
|
+
if (!onlyWarnForMediaSeekingError) {
|
|
51
|
+
(0, warn_about_non_seekable_media_js_1.warnAboutNonSeekableMedia)(mediaRef.current, onlyWarnForMediaSeekingError ? 'console-warning' : 'console-error');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (!playing || absoluteFrame === 0) {
|
|
55
|
+
mediaRef.current.currentTime = shouldBeTime;
|
|
56
|
+
}
|
|
57
|
+
if (mediaRef.current.paused && !mediaRef.current.ended && playing) {
|
|
58
|
+
const { current } = mediaRef;
|
|
59
|
+
current.currentTime = shouldBeTime;
|
|
60
|
+
(0, play_and_handle_not_allowed_error_js_1.playAndHandleNotAllowedError)(mediaRef, mediaType);
|
|
61
|
+
}
|
|
62
|
+
}, [
|
|
63
|
+
absoluteFrame,
|
|
64
|
+
fps,
|
|
65
|
+
playbackRate,
|
|
66
|
+
frame,
|
|
67
|
+
mediaRef,
|
|
68
|
+
mediaType,
|
|
69
|
+
playing,
|
|
70
|
+
src,
|
|
71
|
+
mediaStartsAt,
|
|
72
|
+
localPlaybackRate,
|
|
73
|
+
onlyWarnForMediaSeekingError,
|
|
74
|
+
acceptableTimeshift,
|
|
75
|
+
]);
|
|
76
|
+
};
|
|
77
|
+
exports.useMediaPlayback = useMediaPlayback;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useMediaTagVolume = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
// Returns the real volume of the audio or video while playing,
|
|
6
|
+
// no matter what the supposed volume should be
|
|
7
|
+
const useMediaTagVolume = (mediaRef) => {
|
|
8
|
+
const [actualVolume, setActualVolume] = (0, react_1.useState)(1);
|
|
9
|
+
(0, react_1.useEffect)(() => {
|
|
10
|
+
const ref = mediaRef.current;
|
|
11
|
+
if (!ref) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const onChange = () => {
|
|
15
|
+
setActualVolume(ref.volume);
|
|
16
|
+
};
|
|
17
|
+
ref.addEventListener('volumechange', onChange);
|
|
18
|
+
return () => ref.removeEventListener('volumechange', onChange);
|
|
19
|
+
}, [mediaRef]);
|
|
20
|
+
(0, react_1.useEffect)(() => {
|
|
21
|
+
const ref = mediaRef.current;
|
|
22
|
+
if (!ref) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (ref.volume !== actualVolume) {
|
|
26
|
+
setActualVolume(ref.volume);
|
|
27
|
+
}
|
|
28
|
+
}, [actualVolume, mediaRef]);
|
|
29
|
+
return actualVolume;
|
|
30
|
+
};
|
|
31
|
+
exports.useMediaTagVolume = useMediaTagVolume;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RefObject } from 'react';
|
|
2
|
+
import type { VolumeProp } from './volume-prop.js';
|
|
3
|
+
export declare type UseSyncVolumeWithMediaTagOptions = {
|
|
4
|
+
volumePropFrame: number;
|
|
5
|
+
actualVolume: number;
|
|
6
|
+
volume?: VolumeProp;
|
|
7
|
+
mediaVolume: number;
|
|
8
|
+
mediaRef: RefObject<HTMLVideoElement | HTMLAudioElement>;
|
|
9
|
+
};
|
|
10
|
+
export declare const useSyncVolumeWithMediaTag: ({ volumePropFrame, actualVolume, volume, mediaVolume, mediaRef, }: UseSyncVolumeWithMediaTagOptions) => void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useSyncVolumeWithMediaTag = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const is_approximately_the_same_js_1 = require("./is-approximately-the-same.js");
|
|
6
|
+
const volume_prop_js_1 = require("./volume-prop.js");
|
|
7
|
+
const useSyncVolumeWithMediaTag = ({ volumePropFrame, actualVolume, volume, mediaVolume, mediaRef, }) => {
|
|
8
|
+
(0, react_1.useEffect)(() => {
|
|
9
|
+
const userPreferredVolume = (0, volume_prop_js_1.evaluateVolume)({
|
|
10
|
+
frame: volumePropFrame,
|
|
11
|
+
volume,
|
|
12
|
+
mediaVolume,
|
|
13
|
+
allowAmplificationDuringRender: false,
|
|
14
|
+
});
|
|
15
|
+
if (!(0, is_approximately_the_same_js_1.isApproximatelyTheSame)(userPreferredVolume, actualVolume) &&
|
|
16
|
+
mediaRef.current) {
|
|
17
|
+
mediaRef.current.volume = userPreferredVolume;
|
|
18
|
+
}
|
|
19
|
+
}, [actualVolume, volumePropFrame, mediaRef, volume, mediaVolume]);
|
|
20
|
+
};
|
|
21
|
+
exports.useSyncVolumeWithMediaTag = useSyncVolumeWithMediaTag;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useUnsafeVideoConfig = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const Sequence_js_1 = require("./Sequence.js");
|
|
6
|
+
const use_video_js_1 = require("./use-video.js");
|
|
7
|
+
const useUnsafeVideoConfig = () => {
|
|
8
|
+
var _a;
|
|
9
|
+
const context = (0, react_1.useContext)(Sequence_js_1.SequenceContext);
|
|
10
|
+
const ctxDuration = (_a = context === null || context === void 0 ? void 0 : context.durationInFrames) !== null && _a !== void 0 ? _a : null;
|
|
11
|
+
const video = (0, use_video_js_1.useVideo)();
|
|
12
|
+
return (0, react_1.useMemo)(() => {
|
|
13
|
+
if (!video) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const { id, durationInFrames, fps, height, width, defaultProps } = video;
|
|
17
|
+
return {
|
|
18
|
+
id,
|
|
19
|
+
width,
|
|
20
|
+
height,
|
|
21
|
+
fps,
|
|
22
|
+
durationInFrames: ctxDuration !== null && ctxDuration !== void 0 ? ctxDuration : durationInFrames,
|
|
23
|
+
defaultProps,
|
|
24
|
+
};
|
|
25
|
+
}, [ctxDuration, video]);
|
|
26
|
+
};
|
|
27
|
+
exports.useUnsafeVideoConfig = useUnsafeVideoConfig;
|