remotion 4.0.47 → 4.0.49
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/LICENSE.md +7 -3
- package/dist/cjs/Img.d.ts +1 -1
- package/dist/cjs/audio/Audio.d.ts +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/index.mjs +72 -77
- package/dist/esm/version.mjs +1 -1
- package/package.json +1 -1
- package/dist/cjs/get-environment.d.ts +0 -3
- package/dist/cjs/get-environment.js +0 -34
package/LICENSE.md
CHANGED
|
@@ -7,7 +7,7 @@ Depending on the type of your legal entity, you are granted permission to use Re
|
|
|
7
7
|
|
|
8
8
|
## Free license
|
|
9
9
|
|
|
10
|
-
Copyright © 2023 [Remotion](https://www.remotion.dev
|
|
10
|
+
Copyright © 2023 [Remotion](https://www.remotion.dev)
|
|
11
11
|
|
|
12
12
|
### Eligibility
|
|
13
13
|
|
|
@@ -36,6 +36,10 @@ Support is provided on a best-we-can-do basis via GitHub Issues and Discord.
|
|
|
36
36
|
|
|
37
37
|
## Company license
|
|
38
38
|
|
|
39
|
-
You are required to obtain a company license to use Remotion if you are not within the group of entities eligible for a free license. This license will enable you to use Remotion for the allowed use cases specified in the free license, and give you access to prioritized support (read the [Support Policy](/docs/support)).
|
|
39
|
+
You are required to obtain a company license to use Remotion if you are not within the group of entities eligible for a free license. This license will enable you to use Remotion for the allowed use cases specified in the free license, and give you access to prioritized support (read the [Support Policy](https://www.remotion.dev/docs/support)).
|
|
40
40
|
|
|
41
|
-
Visit [remotion.pro](https://www.remotion.pro) for pricing and to buy a license.
|
|
41
|
+
Visit [remotion.pro](https://www.remotion.pro/license) for pricing and to buy a license.
|
|
42
|
+
|
|
43
|
+
### FAQs
|
|
44
|
+
|
|
45
|
+
Are you not sure whether you need a company license because of an edge case? Here are some [frequently asked questions](https://www.remotion.pro/faq).
|
package/dist/cjs/Img.d.ts
CHANGED
|
@@ -7,4 +7,4 @@ export type ImgProps = Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTML
|
|
|
7
7
|
* @description Works just like a regular HTML img tag. When you use the <Img> tag, Remotion will ensure that the image is loaded before rendering the frame.
|
|
8
8
|
* @see [Documentation](https://www.remotion.dev/docs/img)
|
|
9
9
|
*/
|
|
10
|
-
export declare const Img: React.ForwardRefExoticComponent<Pick<ImgProps, "width" | "height" | "
|
|
10
|
+
export declare const Img: React.ForwardRefExoticComponent<Pick<ImgProps, "width" | "id" | "height" | "slot" | "style" | "title" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "nonce" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "crossOrigin" | "key" | "loading" | "src" | "referrerPolicy" | "alt" | "decoding" | "sizes" | "srcSet" | "useMap" | "maxRetries"> & React.RefAttributes<HTMLImageElement>>;
|
|
@@ -11,4 +11,4 @@ export declare const Audio: React.ForwardRefExoticComponent<Pick<Omit<React.Deta
|
|
|
11
11
|
allowAmplificationDuringRender?: boolean | undefined;
|
|
12
12
|
_remotionInternalNeedsDurationCalculation?: boolean | undefined;
|
|
13
13
|
toneFrequency?: number | undefined;
|
|
14
|
-
} & RemotionMainAudioProps, "id" | "
|
|
14
|
+
} & RemotionMainAudioProps, "id" | "slot" | "style" | "title" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "crossOrigin" | "key" | "volume" | "allowAmplificationDuringRender" | "controlsList" | "loop" | "mediaGroup" | "muted" | "playsInline" | "preload" | "src" | "playbackRate" | "acceptableTimeShiftInSeconds" | "_remotionInternalNeedsDurationCalculation" | "toneFrequency" | keyof RemotionMainAudioProps> & React.RefAttributes<HTMLAudioElement>>;
|
package/dist/cjs/index.d.ts
CHANGED
package/dist/cjs/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "4.0.
|
|
1
|
+
export declare const VERSION = "4.0.49";
|
package/dist/cjs/version.js
CHANGED
package/dist/esm/index.mjs
CHANGED
|
@@ -59,7 +59,7 @@ function truthy(value) {
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
// Automatically generated on publish
|
|
62
|
-
const VERSION = '4.0.
|
|
62
|
+
const VERSION = '4.0.49';
|
|
63
63
|
|
|
64
64
|
const checkMultipleRemotionVersions = () => {
|
|
65
65
|
if (typeof globalThis === 'undefined') {
|
|
@@ -570,23 +570,6 @@ function validateFps(fps, location, isGif) {
|
|
|
570
570
|
}
|
|
571
571
|
}
|
|
572
572
|
|
|
573
|
-
const validateCalculated = ({ composition, calculated, }) => {
|
|
574
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
575
|
-
const calculateMetadataErrorLocation = `calculated by calculateMetadata() for the composition "${composition.id}"`;
|
|
576
|
-
const defaultErrorLocation = `of the "<Composition />" component with the id "${composition.id}"`;
|
|
577
|
-
const width = (_b = (_a = calculated === null || calculated === void 0 ? void 0 : calculated.width) !== null && _a !== void 0 ? _a : composition.width) !== null && _b !== void 0 ? _b : undefined;
|
|
578
|
-
validateDimension(width, 'width', (calculated === null || calculated === void 0 ? void 0 : calculated.width) ? calculateMetadataErrorLocation : defaultErrorLocation);
|
|
579
|
-
const height = (_d = (_c = calculated === null || calculated === void 0 ? void 0 : calculated.height) !== null && _c !== void 0 ? _c : composition.height) !== null && _d !== void 0 ? _d : undefined;
|
|
580
|
-
validateDimension(height, 'height', (calculated === null || calculated === void 0 ? void 0 : calculated.height) ? calculateMetadataErrorLocation : defaultErrorLocation);
|
|
581
|
-
const fps = (_f = (_e = calculated === null || calculated === void 0 ? void 0 : calculated.fps) !== null && _e !== void 0 ? _e : composition.fps) !== null && _f !== void 0 ? _f : null;
|
|
582
|
-
validateFps(fps, (calculated === null || calculated === void 0 ? void 0 : calculated.fps) ? calculateMetadataErrorLocation : defaultErrorLocation, false);
|
|
583
|
-
const durationInFrames = (_h = (_g = calculated === null || calculated === void 0 ? void 0 : calculated.durationInFrames) !== null && _g !== void 0 ? _g : composition.durationInFrames) !== null && _h !== void 0 ? _h : null;
|
|
584
|
-
validateDurationInFrames(durationInFrames, {
|
|
585
|
-
allowFloats: false,
|
|
586
|
-
component: `of the "<Composition />" component with the id "${composition.id}"`,
|
|
587
|
-
});
|
|
588
|
-
return { width, height, fps, durationInFrames };
|
|
589
|
-
};
|
|
590
573
|
const resolveVideoConfig = ({ composition, editorProps: editorPropsOrUndefined, signal, inputProps, }) => {
|
|
591
574
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
592
575
|
const calculatedProm = composition.calculateMetadata
|
|
@@ -643,12 +626,26 @@ const resolveVideoConfig = ({ composition, editorProps: editorPropsOrUndefined,
|
|
|
643
626
|
props: (_g = (_f = calculatedProm.props) !== null && _f !== void 0 ? _f : composition.defaultProps) !== null && _g !== void 0 ? _g : {},
|
|
644
627
|
};
|
|
645
628
|
};
|
|
629
|
+
const validateCalculated = ({ composition, calculated, }) => {
|
|
630
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
631
|
+
const calculateMetadataErrorLocation = `calculated by calculateMetadata() for the composition "${composition.id}"`;
|
|
632
|
+
const defaultErrorLocation = `of the "<Composition />" component with the id "${composition.id}"`;
|
|
633
|
+
const width = (_b = (_a = calculated === null || calculated === void 0 ? void 0 : calculated.width) !== null && _a !== void 0 ? _a : composition.width) !== null && _b !== void 0 ? _b : undefined;
|
|
634
|
+
validateDimension(width, 'width', (calculated === null || calculated === void 0 ? void 0 : calculated.width) ? calculateMetadataErrorLocation : defaultErrorLocation);
|
|
635
|
+
const height = (_d = (_c = calculated === null || calculated === void 0 ? void 0 : calculated.height) !== null && _c !== void 0 ? _c : composition.height) !== null && _d !== void 0 ? _d : undefined;
|
|
636
|
+
validateDimension(height, 'height', (calculated === null || calculated === void 0 ? void 0 : calculated.height) ? calculateMetadataErrorLocation : defaultErrorLocation);
|
|
637
|
+
const fps = (_f = (_e = calculated === null || calculated === void 0 ? void 0 : calculated.fps) !== null && _e !== void 0 ? _e : composition.fps) !== null && _f !== void 0 ? _f : null;
|
|
638
|
+
validateFps(fps, (calculated === null || calculated === void 0 ? void 0 : calculated.fps) ? calculateMetadataErrorLocation : defaultErrorLocation, false);
|
|
639
|
+
const durationInFrames = (_h = (_g = calculated === null || calculated === void 0 ? void 0 : calculated.durationInFrames) !== null && _g !== void 0 ? _g : composition.durationInFrames) !== null && _h !== void 0 ? _h : null;
|
|
640
|
+
validateDurationInFrames(durationInFrames, {
|
|
641
|
+
allowFloats: false,
|
|
642
|
+
component: `of the "<Composition />" component with the id "${composition.id}"`,
|
|
643
|
+
});
|
|
644
|
+
return { width, height, fps, durationInFrames };
|
|
645
|
+
};
|
|
646
646
|
|
|
647
647
|
const ResolveCompositionContext = createContext(null);
|
|
648
648
|
const resolveCompositionsRef = createRef();
|
|
649
|
-
const needsResolution = (composition) => {
|
|
650
|
-
return Boolean(composition.calculateMetadata);
|
|
651
|
-
};
|
|
652
649
|
const ResolveCompositionConfig = ({ children }) => {
|
|
653
650
|
const [currentRenderModalComposition, setCurrentRenderModalComposition] = useState(null);
|
|
654
651
|
const { compositions, canvasContent, currentCompositionMetadata } = useContext(CompositionManager);
|
|
@@ -787,6 +784,9 @@ const ResolveCompositionConfig = ({ children }) => {
|
|
|
787
784
|
}, [compositions, resolvedConfigs]);
|
|
788
785
|
return (jsx(ResolveCompositionContext.Provider, { value: resolvedConfigsIncludingStaticOnes, children: children }));
|
|
789
786
|
};
|
|
787
|
+
const needsResolution = (composition) => {
|
|
788
|
+
return Boolean(composition.calculateMetadata);
|
|
789
|
+
};
|
|
790
790
|
const useResolvedVideoConfig = (preferredCompositionId) => {
|
|
791
791
|
const context = useContext(ResolveCompositionContext);
|
|
792
792
|
const { props: allEditorProps } = useContext(EditorPropsContext);
|
|
@@ -1765,6 +1765,33 @@ const getMediaTime = ({ fps, frame, src, playbackRate, startFrom, mediaType, })
|
|
|
1765
1765
|
const toSeconds = (time, fps) => {
|
|
1766
1766
|
return Math.round((time / fps) * 100) / 100;
|
|
1767
1767
|
};
|
|
1768
|
+
const isSubsetOfDuration = (prevStartFrom, newStartFrom, prevDuration, newDuration) => {
|
|
1769
|
+
return (prevStartFrom <= newStartFrom &&
|
|
1770
|
+
prevStartFrom + prevDuration >= newStartFrom + newDuration);
|
|
1771
|
+
};
|
|
1772
|
+
const useAppendVideoFragment = ({ actualSrc: initialActualSrc, actualFrom: initialActualFrom, duration: initialDuration, fps, }) => {
|
|
1773
|
+
const actualFromRef = useRef(initialActualFrom);
|
|
1774
|
+
const actualDuration = useRef(initialDuration);
|
|
1775
|
+
const actualSrc = useRef(initialActualSrc);
|
|
1776
|
+
if (!isSubsetOfDuration || initialActualSrc !== actualSrc.current) {
|
|
1777
|
+
actualFromRef.current = initialActualFrom;
|
|
1778
|
+
actualDuration.current = initialDuration;
|
|
1779
|
+
actualSrc.current = initialActualSrc;
|
|
1780
|
+
}
|
|
1781
|
+
const appended = appendVideoFragment({
|
|
1782
|
+
actualSrc: actualSrc.current,
|
|
1783
|
+
actualFrom: actualFromRef.current,
|
|
1784
|
+
duration: actualDuration.current,
|
|
1785
|
+
fps,
|
|
1786
|
+
});
|
|
1787
|
+
return appended;
|
|
1788
|
+
};
|
|
1789
|
+
const isIosSafari = () => {
|
|
1790
|
+
return typeof window === 'undefined'
|
|
1791
|
+
? false
|
|
1792
|
+
: /iP(ad|od|hone)/i.test(window.navigator.userAgent) &&
|
|
1793
|
+
Boolean(navigator.userAgent.match(/Version\/[\d.]+.*Safari/));
|
|
1794
|
+
};
|
|
1768
1795
|
// https://github.com/remotion-dev/remotion/issues/1655
|
|
1769
1796
|
const isIOSSafariCase = (actualSrc) => {
|
|
1770
1797
|
return typeof window === 'undefined'
|
|
@@ -1795,33 +1822,6 @@ const appendVideoFragment = ({ actualSrc, actualFrom, duration, fps, }) => {
|
|
|
1795
1822
|
actualSrc += `,${toSeconds(duration, fps)}`;
|
|
1796
1823
|
return actualSrc;
|
|
1797
1824
|
};
|
|
1798
|
-
const isSubsetOfDuration = (prevStartFrom, newStartFrom, prevDuration, newDuration) => {
|
|
1799
|
-
return (prevStartFrom <= newStartFrom &&
|
|
1800
|
-
prevStartFrom + prevDuration >= newStartFrom + newDuration);
|
|
1801
|
-
};
|
|
1802
|
-
const useAppendVideoFragment = ({ actualSrc: initialActualSrc, actualFrom: initialActualFrom, duration: initialDuration, fps, }) => {
|
|
1803
|
-
const actualFromRef = useRef(initialActualFrom);
|
|
1804
|
-
const actualDuration = useRef(initialDuration);
|
|
1805
|
-
const actualSrc = useRef(initialActualSrc);
|
|
1806
|
-
if (!isSubsetOfDuration || initialActualSrc !== actualSrc.current) {
|
|
1807
|
-
actualFromRef.current = initialActualFrom;
|
|
1808
|
-
actualDuration.current = initialDuration;
|
|
1809
|
-
actualSrc.current = initialActualSrc;
|
|
1810
|
-
}
|
|
1811
|
-
const appended = appendVideoFragment({
|
|
1812
|
-
actualSrc: actualSrc.current,
|
|
1813
|
-
actualFrom: actualFromRef.current,
|
|
1814
|
-
duration: actualDuration.current,
|
|
1815
|
-
fps,
|
|
1816
|
-
});
|
|
1817
|
-
return appended;
|
|
1818
|
-
};
|
|
1819
|
-
const isIosSafari = () => {
|
|
1820
|
-
return typeof window === 'undefined'
|
|
1821
|
-
? false
|
|
1822
|
-
: /iP(ad|od|hone)/i.test(window.navigator.userAgent) &&
|
|
1823
|
-
Boolean(navigator.userAgent.match(/Version\/[\d.]+.*Safari/));
|
|
1824
|
-
};
|
|
1825
1825
|
|
|
1826
1826
|
const alreadyWarned = {};
|
|
1827
1827
|
const warnAboutNonSeekableMedia = (ref, type) => {
|
|
@@ -2453,7 +2453,7 @@ const AudioForRenderingRefForwardingFunction = (props, ref) => {
|
|
|
2453
2453
|
var _a;
|
|
2454
2454
|
return `audio-${random((_a = props.src) !== null && _a !== void 0 ? _a : '')}-${sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.relativeFrom}-${sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.cumulatedFrom}-${sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.durationInFrames}`;
|
|
2455
2455
|
}, [props.src, sequenceContext]);
|
|
2456
|
-
const { volume: volumeProp, playbackRate, allowAmplificationDuringRender, onDuration,
|
|
2456
|
+
const { volume: volumeProp, playbackRate, allowAmplificationDuringRender, onDuration, _remotionInternalNeedsDurationCalculation, acceptableTimeShiftInSeconds, ...nativeProps } = props;
|
|
2457
2457
|
const volume = evaluateVolume({
|
|
2458
2458
|
volume: volumeProp,
|
|
2459
2459
|
frame: volumePropFrame,
|
|
@@ -2486,7 +2486,6 @@ const AudioForRenderingRefForwardingFunction = (props, ref) => {
|
|
|
2486
2486
|
mediaFrame: frame,
|
|
2487
2487
|
playbackRate: (_a = props.playbackRate) !== null && _a !== void 0 ? _a : 1,
|
|
2488
2488
|
allowAmplificationDuringRender: allowAmplificationDuringRender !== null && allowAmplificationDuringRender !== void 0 ? allowAmplificationDuringRender : false,
|
|
2489
|
-
toneFrequency: toneFrequency !== null && toneFrequency !== void 0 ? toneFrequency : null,
|
|
2490
2489
|
});
|
|
2491
2490
|
return () => unregisterRenderAsset(id);
|
|
2492
2491
|
}, [
|
|
@@ -2502,7 +2501,6 @@ const AudioForRenderingRefForwardingFunction = (props, ref) => {
|
|
|
2502
2501
|
playbackRate,
|
|
2503
2502
|
props.playbackRate,
|
|
2504
2503
|
allowAmplificationDuringRender,
|
|
2505
|
-
toneFrequency,
|
|
2506
2504
|
]);
|
|
2507
2505
|
const { src } = props;
|
|
2508
2506
|
// The <audio> tag is only rendered if the duration needs to be calculated for the `loop`
|
|
@@ -2597,8 +2595,6 @@ const AudioRefForwardingFunction = (props, ref) => {
|
|
|
2597
2595
|
*/
|
|
2598
2596
|
const Audio = forwardRef(AudioRefForwardingFunction);
|
|
2599
2597
|
|
|
2600
|
-
const getRegex$1 = () => /^([a-zA-Z0-9-])+$/g;
|
|
2601
|
-
const isFolderNameValid = (name) => name.match(getRegex$1());
|
|
2602
2598
|
const validateFolderName = (name) => {
|
|
2603
2599
|
if (name === undefined || name === null) {
|
|
2604
2600
|
throw new TypeError('You must pass a name to a <Folder />.');
|
|
@@ -2610,6 +2606,8 @@ const validateFolderName = (name) => {
|
|
|
2610
2606
|
throw new Error(`Folder name can only contain a-z, A-Z, 0-9 and -. You passed ${name}`);
|
|
2611
2607
|
}
|
|
2612
2608
|
};
|
|
2609
|
+
const getRegex$1 = () => /^([a-zA-Z0-9-])+$/g;
|
|
2610
|
+
const isFolderNameValid = (name) => name.match(getRegex$1());
|
|
2613
2611
|
|
|
2614
2612
|
const FolderContext = createContext({
|
|
2615
2613
|
folderName: null,
|
|
@@ -2712,13 +2710,13 @@ const useLazyComponent = (compProps) => {
|
|
|
2712
2710
|
return lazy;
|
|
2713
2711
|
};
|
|
2714
2712
|
|
|
2715
|
-
const getRegex = () => /^([a-zA-Z0-9-])+$/g;
|
|
2716
|
-
const isCompositionIdValid = (id) => id.match(getRegex());
|
|
2717
2713
|
const validateCompositionId = (id) => {
|
|
2718
2714
|
if (!isCompositionIdValid(id)) {
|
|
2719
2715
|
throw new Error(`Composition id can only contain a-z, A-Z, 0-9 and -. You passed ${id}`);
|
|
2720
2716
|
}
|
|
2721
2717
|
};
|
|
2718
|
+
const getRegex = () => /^([a-zA-Z0-9-])+$/g;
|
|
2719
|
+
const isCompositionIdValid = (id) => id.match(getRegex());
|
|
2722
2720
|
const invalidCompositionErrorMessage = `Composition ID must match ${String(getRegex())}`;
|
|
2723
2721
|
|
|
2724
2722
|
const validateDefaultAndInputProps = (defaultProps, name, compositionId) => {
|
|
@@ -2733,20 +2731,6 @@ const validateDefaultAndInputProps = (defaultProps, name, compositionId) => {
|
|
|
2733
2731
|
}
|
|
2734
2732
|
};
|
|
2735
2733
|
|
|
2736
|
-
const ClipComposition = ({ children }) => {
|
|
2737
|
-
const { clipRegion } = useContext(NativeLayersContext);
|
|
2738
|
-
const style = useMemo(() => {
|
|
2739
|
-
return {
|
|
2740
|
-
display: 'flex',
|
|
2741
|
-
flexDirection: 'row',
|
|
2742
|
-
opacity: clipRegion === 'hide' ? 0 : 1,
|
|
2743
|
-
clipPath: clipRegion && clipRegion !== 'hide'
|
|
2744
|
-
? `polygon(${clipRegion.x}px ${clipRegion.y}px, ${clipRegion.x}px ${clipRegion.height + clipRegion.y}px, ${clipRegion.width + clipRegion.x}px ${clipRegion.height + clipRegion.y}px, ${clipRegion.width + clipRegion.x}px ${clipRegion.y}px)`
|
|
2745
|
-
: undefined,
|
|
2746
|
-
};
|
|
2747
|
-
}, [clipRegion]);
|
|
2748
|
-
return jsx(AbsoluteFill, { style: style, children: children });
|
|
2749
|
-
};
|
|
2750
2734
|
const Fallback = () => {
|
|
2751
2735
|
useEffect(() => {
|
|
2752
2736
|
const fallback = delayRender('Waiting for Root component to unsuspend');
|
|
@@ -2832,6 +2816,20 @@ const Composition = ({ width, height, fps, durationInFrames, id, defaultProps, s
|
|
|
2832
2816
|
}
|
|
2833
2817
|
return null;
|
|
2834
2818
|
};
|
|
2819
|
+
const ClipComposition = ({ children }) => {
|
|
2820
|
+
const { clipRegion } = useContext(NativeLayersContext);
|
|
2821
|
+
const style = useMemo(() => {
|
|
2822
|
+
return {
|
|
2823
|
+
display: 'flex',
|
|
2824
|
+
flexDirection: 'row',
|
|
2825
|
+
opacity: clipRegion === 'hide' ? 0 : 1,
|
|
2826
|
+
clipPath: clipRegion && clipRegion !== 'hide'
|
|
2827
|
+
? `polygon(${clipRegion.x}px ${clipRegion.y}px, ${clipRegion.x}px ${clipRegion.height + clipRegion.y}px, ${clipRegion.width + clipRegion.x}px ${clipRegion.height + clipRegion.y}px, ${clipRegion.width + clipRegion.x}px ${clipRegion.y}px)`
|
|
2828
|
+
: undefined,
|
|
2829
|
+
};
|
|
2830
|
+
}, [clipRegion]);
|
|
2831
|
+
return jsx(AbsoluteFill, { style: style, children: children });
|
|
2832
|
+
};
|
|
2835
2833
|
|
|
2836
2834
|
// Taken from https://github.com/facebook/react-native/blob/0b9ea60b4fee8cacc36e7160e31b91fc114dbc0d/Libraries/Animated/src/bezier.js
|
|
2837
2835
|
const NEWTON_ITERATIONS = 4;
|
|
@@ -3926,11 +3924,12 @@ const RemotionContextProvider = (props) => {
|
|
|
3926
3924
|
return (jsx(CanUseRemotionHooks.Provider, { value: contexts.canUseRemotionHooksContext, children: jsx(NonceContext.Provider, { value: contexts.nonceContext, children: jsx(NativeLayersContext.Provider, { value: contexts.nativeLayersContext, children: jsx(PreloadContext.Provider, { value: contexts.preloadContext, children: jsx(CompositionManager.Provider, { value: contexts.compositionManagerCtx, children: jsx(SequenceManager.Provider, { value: contexts.sequenceManagerContext, children: jsx(RenderAssetManager.Provider, { value: contexts.renderAssetManagerContext, children: jsx(ResolveCompositionContext.Provider, { value: contexts.resolveCompositionContext, children: jsx(TimelineContext.Provider, { value: contexts.timelineContext, children: jsx(SetTimelineContext.Provider, { value: contexts.setTimelineContext, children: jsx(SequenceContext.Provider, { value: contexts.sequenceContext, children: children }) }) }) }) }) }) }) }) }) }) }));
|
|
3927
3925
|
};
|
|
3928
3926
|
|
|
3927
|
+
const Timeline = TimelinePosition;
|
|
3929
3928
|
// Mark them as Internals so use don't assume this is public
|
|
3930
3929
|
// API and are less likely to use it
|
|
3931
3930
|
const Internals = {
|
|
3932
3931
|
useUnsafeVideoConfig,
|
|
3933
|
-
Timeline
|
|
3932
|
+
Timeline,
|
|
3934
3933
|
CompositionManager,
|
|
3935
3934
|
SequenceManager,
|
|
3936
3935
|
RemotionRoot,
|
|
@@ -4324,7 +4323,7 @@ const Still = (props) => {
|
|
|
4324
4323
|
return React.createElement((Composition), newProps);
|
|
4325
4324
|
};
|
|
4326
4325
|
|
|
4327
|
-
const OffthreadVideoForRendering = ({ onError, volume: volumeProp, playbackRate, src, muted, allowAmplificationDuringRender, transparent = false,
|
|
4326
|
+
const OffthreadVideoForRendering = ({ onError, volume: volumeProp, playbackRate, src, muted, allowAmplificationDuringRender, transparent = false, ...props }) => {
|
|
4328
4327
|
const absoluteFrame = useTimelinePosition();
|
|
4329
4328
|
const frame = useCurrentFrame();
|
|
4330
4329
|
const volumePropsFrame = useFrameForVolumeProp();
|
|
@@ -4374,7 +4373,6 @@ const OffthreadVideoForRendering = ({ onError, volume: volumeProp, playbackRate,
|
|
|
4374
4373
|
mediaFrame: frame,
|
|
4375
4374
|
playbackRate: playbackRate !== null && playbackRate !== void 0 ? playbackRate : 1,
|
|
4376
4375
|
allowAmplificationDuringRender: allowAmplificationDuringRender !== null && allowAmplificationDuringRender !== void 0 ? allowAmplificationDuringRender : false,
|
|
4377
|
-
toneFrequency: toneFrequency !== null && toneFrequency !== void 0 ? toneFrequency : null,
|
|
4378
4376
|
});
|
|
4379
4377
|
return () => unregisterRenderAsset(id);
|
|
4380
4378
|
}, [
|
|
@@ -4388,7 +4386,6 @@ const OffthreadVideoForRendering = ({ onError, volume: volumeProp, playbackRate,
|
|
|
4388
4386
|
absoluteFrame,
|
|
4389
4387
|
playbackRate,
|
|
4390
4388
|
allowAmplificationDuringRender,
|
|
4391
|
-
toneFrequency,
|
|
4392
4389
|
]);
|
|
4393
4390
|
const currentTime = useMemo(() => {
|
|
4394
4391
|
return (getExpectedMediaFrameUncorrected({
|
|
@@ -4424,7 +4421,7 @@ const VideoForDevelopmentRefForwardingFunction = (props, ref) => {
|
|
|
4424
4421
|
const parentSequence = useContext(SequenceContext);
|
|
4425
4422
|
const { volume, muted, playbackRate, onlyWarnForMediaSeekingError, src, onDuration,
|
|
4426
4423
|
// @ts-expect-error
|
|
4427
|
-
acceptableTimeShift, acceptableTimeShiftInSeconds,
|
|
4424
|
+
acceptableTimeShift, acceptableTimeShiftInSeconds, ...nativeProps } = props;
|
|
4428
4425
|
if (typeof acceptableTimeShift !== 'undefined') {
|
|
4429
4426
|
throw new Error('acceptableTimeShift has been removed. Use acceptableTimeShiftInSeconds instead.');
|
|
4430
4427
|
}
|
|
@@ -4553,7 +4550,7 @@ const OffthreadVideo = (props) => {
|
|
|
4553
4550
|
return (jsx(VideoForDevelopment, { onDuration: onDuration, onlyWarnForMediaSeekingError: true, ...withoutTransparent }));
|
|
4554
4551
|
};
|
|
4555
4552
|
|
|
4556
|
-
const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, allowAmplificationDuringRender, playbackRate, onDuration,
|
|
4553
|
+
const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, allowAmplificationDuringRender, playbackRate, onDuration, ...props }, ref) => {
|
|
4557
4554
|
const absoluteFrame = useTimelinePosition();
|
|
4558
4555
|
const frame = useCurrentFrame();
|
|
4559
4556
|
const volumePropsFrame = useFrameForVolumeProp();
|
|
@@ -4605,7 +4602,6 @@ const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, allowAm
|
|
|
4605
4602
|
mediaFrame: frame,
|
|
4606
4603
|
playbackRate: playbackRate !== null && playbackRate !== void 0 ? playbackRate : 1,
|
|
4607
4604
|
allowAmplificationDuringRender: allowAmplificationDuringRender !== null && allowAmplificationDuringRender !== void 0 ? allowAmplificationDuringRender : false,
|
|
4608
|
-
toneFrequency: toneFrequency !== null && toneFrequency !== void 0 ? toneFrequency : null,
|
|
4609
4605
|
});
|
|
4610
4606
|
return () => unregisterRenderAsset(id);
|
|
4611
4607
|
}, [
|
|
@@ -4619,7 +4615,6 @@ const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, allowAm
|
|
|
4619
4615
|
absoluteFrame,
|
|
4620
4616
|
playbackRate,
|
|
4621
4617
|
allowAmplificationDuringRender,
|
|
4622
|
-
toneFrequency,
|
|
4623
4618
|
]);
|
|
4624
4619
|
useImperativeHandle(ref, () => {
|
|
4625
4620
|
return videoRef.current;
|
package/dist/esm/version.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useRemotionEnvironment = exports.getRemotionEnvironment = void 0;
|
|
4
|
-
const is_player_js_1 = require("./is-player.js");
|
|
5
|
-
const getRemotionEnvironment = () => {
|
|
6
|
-
if (process.env.NODE_ENV === 'production') {
|
|
7
|
-
if (typeof window !== 'undefined' && window.remotion_isPlayer) {
|
|
8
|
-
return 'player-production';
|
|
9
|
-
}
|
|
10
|
-
return 'rendering';
|
|
11
|
-
}
|
|
12
|
-
// The Vitest framework sets NODE_ENV as test.
|
|
13
|
-
// Right now we don't need to treat it in a special
|
|
14
|
-
// way which is good - defaulting to `rendering`.
|
|
15
|
-
if (process.env.NODE_ENV === 'test') {
|
|
16
|
-
return 'rendering';
|
|
17
|
-
}
|
|
18
|
-
if (typeof window !== 'undefined' && window.remotion_isPlayer) {
|
|
19
|
-
return 'player-development';
|
|
20
|
-
}
|
|
21
|
-
return 'preview';
|
|
22
|
-
};
|
|
23
|
-
exports.getRemotionEnvironment = getRemotionEnvironment;
|
|
24
|
-
const useRemotionEnvironment = () => {
|
|
25
|
-
const isPlayer = (0, is_player_js_1.useIsPlayer)();
|
|
26
|
-
if (isPlayer) {
|
|
27
|
-
if (process.env.NODE_ENV === 'production') {
|
|
28
|
-
return 'player-production';
|
|
29
|
-
}
|
|
30
|
-
return 'player-development';
|
|
31
|
-
}
|
|
32
|
-
return (0, exports.getRemotionEnvironment)();
|
|
33
|
-
};
|
|
34
|
-
exports.useRemotionEnvironment = useRemotionEnvironment;
|