remotion 4.0.536 → 4.0.537
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/cjs/CompositionManagerContext.d.ts +3 -0
- package/dist/cjs/CompositionManagerContext.js +5 -3
- package/dist/cjs/CompositionManagerProvider.js +3 -1
- package/dist/cjs/HtmlInCanvas.js +66 -15
- package/dist/cjs/animated-image/AnimatedImage.js +11 -6
- package/dist/cjs/effects/use-memoized-effects.js +86 -44
- package/dist/cjs/internals.d.ts +3 -0
- package/dist/cjs/internals.js +1 -0
- package/dist/cjs/timeline-position-state.d.ts +1 -0
- package/dist/cjs/timeline-position-state.js +21 -1
- package/dist/cjs/use-current-frame.d.ts +1 -0
- package/dist/cjs/use-current-frame.js +14 -7
- package/dist/cjs/validation/validate-duration-in-frames.js +3 -3
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/with-interactivity-schema.js +18 -16
- package/dist/esm/index.mjs +327 -243
- package/dist/esm/no-react.mjs +3 -3
- package/dist/esm/version.mjs +1 -1
- package/package.json +2 -2
package/dist/esm/index.mjs
CHANGED
|
@@ -27,6 +27,7 @@ __export(exports_timeline_position_state, {
|
|
|
27
27
|
usePlaying: () => usePlaying,
|
|
28
28
|
useTimelineContext: () => useTimelineContext,
|
|
29
29
|
useTimelinePosition: () => useTimelinePosition,
|
|
30
|
+
useTimelinePositionWithOptionalSubscription: () => useTimelinePositionWithOptionalSubscription,
|
|
30
31
|
useTimelineSeekFrame: () => useTimelineSeekFrame,
|
|
31
32
|
useTimelineSetFrameWithoutSeek: () => useTimelineSetFrameWithoutSeek
|
|
32
33
|
});
|
|
@@ -284,13 +285,15 @@ class CompositionErrorBoundary extends React5.Component {
|
|
|
284
285
|
// src/CompositionManagerContext.tsx
|
|
285
286
|
import { createContext as createContext7 } from "react";
|
|
286
287
|
var getAssetPreviewCompositionId = (asset) => `asset:${asset}`;
|
|
287
|
-
var
|
|
288
|
+
var defaultCompositionManagerContext = {
|
|
288
289
|
compositions: [],
|
|
289
290
|
folders: [],
|
|
290
291
|
currentCompositionMetadata: null,
|
|
291
292
|
currentAssetMetadata: null,
|
|
292
293
|
canvasContent: null
|
|
293
|
-
}
|
|
294
|
+
};
|
|
295
|
+
var CompositionManager = createContext7(defaultCompositionManagerContext);
|
|
296
|
+
var CompositionManagerRefContext = createContext7({ current: defaultCompositionManagerContext });
|
|
294
297
|
var CompositionSetters = createContext7({
|
|
295
298
|
setCanvasContent: () => {
|
|
296
299
|
return;
|
|
@@ -761,12 +764,12 @@ function validateDurationInFrames(durationInFrames, options) {
|
|
|
761
764
|
if (durationInFrames <= 0) {
|
|
762
765
|
throw new TypeError(`The "durationInFrames" prop ${component} must be positive, but got ${durationInFrames}.`);
|
|
763
766
|
}
|
|
764
|
-
if (!allowFloats && durationInFrames % 1 !== 0) {
|
|
765
|
-
throw new TypeError(`The "durationInFrames" prop ${component} must be an integer, but got ${durationInFrames}.`);
|
|
766
|
-
}
|
|
767
767
|
if (!Number.isFinite(durationInFrames)) {
|
|
768
768
|
throw new TypeError(`The "durationInFrames" prop ${component} must be finite, but got ${durationInFrames}.`);
|
|
769
769
|
}
|
|
770
|
+
if (!allowFloats && durationInFrames % 1 !== 0) {
|
|
771
|
+
throw new TypeError(`The "durationInFrames" prop ${component} must be an integer, but got ${durationInFrames}.`);
|
|
772
|
+
}
|
|
770
773
|
}
|
|
771
774
|
|
|
772
775
|
// src/validation/validate-fps.ts
|
|
@@ -1741,7 +1744,7 @@ var getStackForControls = (controls) => {
|
|
|
1741
1744
|
};
|
|
1742
1745
|
|
|
1743
1746
|
// src/version.ts
|
|
1744
|
-
var VERSION = "4.0.
|
|
1747
|
+
var VERSION = "4.0.537";
|
|
1745
1748
|
|
|
1746
1749
|
// src/multiple-versions-warning.ts
|
|
1747
1750
|
var checkMultipleRemotionVersions = () => {
|
|
@@ -1779,12 +1782,12 @@ var Null = () => {
|
|
|
1779
1782
|
|
|
1780
1783
|
// src/Sequence.tsx
|
|
1781
1784
|
import React26, {
|
|
1782
|
-
createContext as
|
|
1785
|
+
createContext as createContext28,
|
|
1783
1786
|
forwardRef as forwardRef3,
|
|
1784
1787
|
useCallback as useCallback7,
|
|
1785
1788
|
useContext as useContext28,
|
|
1786
1789
|
useLayoutEffect as useLayoutEffect8,
|
|
1787
|
-
useMemo as
|
|
1790
|
+
useMemo as useMemo20,
|
|
1788
1791
|
useRef as useRef8,
|
|
1789
1792
|
useState as useState9
|
|
1790
1793
|
} from "react";
|
|
@@ -1805,7 +1808,7 @@ var DEFAULT_PREMOUNT_IN_SECONDS = ENABLE_V5_BREAKING_CHANGES ? 2 : 0;
|
|
|
1805
1808
|
var DefaultPremountContext = createContext17(DEFAULT_PREMOUNT_IN_SECONDS);
|
|
1806
1809
|
|
|
1807
1810
|
// src/freeze.tsx
|
|
1808
|
-
import { createContext as
|
|
1811
|
+
import { createContext as createContext21, useContext as useContext17, useMemo as useMemo11 } from "react";
|
|
1809
1812
|
|
|
1810
1813
|
// src/sequence-activity-context.ts
|
|
1811
1814
|
import { createContext as createContext18, useContext as useContext11 } from "react";
|
|
@@ -1825,7 +1828,7 @@ var SequenceContent = ({ children }) => {
|
|
|
1825
1828
|
};
|
|
1826
1829
|
|
|
1827
1830
|
// src/timeline-position-state.ts
|
|
1828
|
-
import { useContext as useContext14 } from "react";
|
|
1831
|
+
import { createContext as createContext20, useContext as useContext14 } from "react";
|
|
1829
1832
|
|
|
1830
1833
|
// src/TimelineContext.tsx
|
|
1831
1834
|
import {
|
|
@@ -2020,6 +2023,7 @@ var useBuffering = () => {
|
|
|
2020
2023
|
};
|
|
2021
2024
|
|
|
2022
2025
|
// src/timeline-position-state.ts
|
|
2026
|
+
var UnsubscribedTimelineContext = createContext20(null);
|
|
2023
2027
|
var makeKey = () => {
|
|
2024
2028
|
return `remotion.time-all`;
|
|
2025
2029
|
};
|
|
@@ -2049,6 +2053,9 @@ var useTimelinePositionFromContext = (state) => {
|
|
|
2049
2053
|
const videoConfig = useVideo();
|
|
2050
2054
|
const env = useRemotionEnvironment();
|
|
2051
2055
|
const dormant = useContext14(SequenceActivityDormantContext);
|
|
2056
|
+
if (state === null) {
|
|
2057
|
+
return 0;
|
|
2058
|
+
}
|
|
2052
2059
|
if (!videoConfig) {
|
|
2053
2060
|
return typeof window === "undefined" ? 0 : window.remotion_initialFrame ?? 0;
|
|
2054
2061
|
}
|
|
@@ -2074,6 +2081,15 @@ var useTimelinePosition = () => {
|
|
|
2074
2081
|
const state = useTimelineContext();
|
|
2075
2082
|
return useTimelinePositionFromContext(state);
|
|
2076
2083
|
};
|
|
2084
|
+
var useTimelinePositionWithOptionalSubscription = (subscribe) => {
|
|
2085
|
+
const dormant = useContext14(SequenceActivityDormantContext);
|
|
2086
|
+
const state = useContext14(subscribe ? dormant ? SequenceActivityTimelineContext : TimelineContext : UnsubscribedTimelineContext);
|
|
2087
|
+
const frame = useTimelinePositionFromContext(state);
|
|
2088
|
+
if (subscribe && state === null) {
|
|
2089
|
+
throw new Error("TimelineContext is not available. This hook must be used inside a <Player> or the Remotion Studio.");
|
|
2090
|
+
}
|
|
2091
|
+
return frame;
|
|
2092
|
+
};
|
|
2077
2093
|
var useIsInsideFreeze = () => {
|
|
2078
2094
|
return useTimelineContext().isInsideFreeze;
|
|
2079
2095
|
};
|
|
@@ -2096,7 +2112,7 @@ var useTimelineSeekFrame = () => {
|
|
|
2096
2112
|
|
|
2097
2113
|
// src/use-current-frame.ts
|
|
2098
2114
|
import { useContext as useContext15 } from "react";
|
|
2099
|
-
var
|
|
2115
|
+
var useCurrentFrameWithOptionalSubscription = (subscribe) => {
|
|
2100
2116
|
const canUseRemotionHooks = useContext15(CanUseRemotionHooks);
|
|
2101
2117
|
const env = useRemotionEnvironment();
|
|
2102
2118
|
if (!canUseRemotionHooks) {
|
|
@@ -2105,11 +2121,17 @@ var useCurrentFrame = () => {
|
|
|
2105
2121
|
}
|
|
2106
2122
|
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`);
|
|
2107
2123
|
}
|
|
2108
|
-
const frame =
|
|
2124
|
+
const frame = useTimelinePositionWithOptionalSubscription(subscribe);
|
|
2109
2125
|
const context = useContext15(SequenceContext);
|
|
2126
|
+
if (!subscribe) {
|
|
2127
|
+
return 0;
|
|
2128
|
+
}
|
|
2110
2129
|
const contextOffset = context ? context.cumulatedFrom + context.relativeFrom : 0;
|
|
2111
2130
|
return (frame - contextOffset) * (context?.playbackRate ?? 1);
|
|
2112
2131
|
};
|
|
2132
|
+
var useCurrentFrame = () => {
|
|
2133
|
+
return useCurrentFrameWithOptionalSubscription(true);
|
|
2134
|
+
};
|
|
2113
2135
|
|
|
2114
2136
|
// src/use-video-config.ts
|
|
2115
2137
|
import { useContext as useContext16 } from "react";
|
|
@@ -2135,7 +2157,7 @@ var useVideoConfig = () => {
|
|
|
2135
2157
|
|
|
2136
2158
|
// src/freeze.tsx
|
|
2137
2159
|
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
2138
|
-
var NonPremountFreezeContext =
|
|
2160
|
+
var NonPremountFreezeContext = createContext21(false);
|
|
2139
2161
|
var useIsInsideNonPremountFreeze = () => useContext17(NonPremountFreezeContext);
|
|
2140
2162
|
var Freeze = ({
|
|
2141
2163
|
frame: frameToFreeze,
|
|
@@ -2670,8 +2692,8 @@ var sequenceSchemaDefaultLayoutNone = {
|
|
|
2670
2692
|
};
|
|
2671
2693
|
|
|
2672
2694
|
// src/loop/loop-context.ts
|
|
2673
|
-
import { createContext as
|
|
2674
|
-
var LoopContext =
|
|
2695
|
+
import { createContext as createContext22 } from "react";
|
|
2696
|
+
var LoopContext = createContext22(null);
|
|
2675
2697
|
|
|
2676
2698
|
// src/resolve-sequence-duration.ts
|
|
2677
2699
|
var resolveSequenceContentDuration = ({
|
|
@@ -2840,7 +2862,7 @@ var SequenceActivityBoundary = ({ children, dormant, frame }) => {
|
|
|
2840
2862
|
};
|
|
2841
2863
|
|
|
2842
2864
|
// src/SequenceActivityBudget.tsx
|
|
2843
|
-
import React19, { createContext as
|
|
2865
|
+
import React19, { createContext as createContext23, useContext as useContext19, useMemo as useMemo13, useState as useState4 } from "react";
|
|
2844
2866
|
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
2845
2867
|
var useCommitEffect = React19.useInsertionEffect ?? React19.useLayoutEffect;
|
|
2846
2868
|
var createActivityBudget = () => {
|
|
@@ -2919,10 +2941,10 @@ var createActivityBudget = () => {
|
|
|
2919
2941
|
}
|
|
2920
2942
|
};
|
|
2921
2943
|
};
|
|
2922
|
-
var ActivityBudgetContext =
|
|
2923
|
-
var InactiveTimelineContext =
|
|
2944
|
+
var ActivityBudgetContext = createContext23(null);
|
|
2945
|
+
var InactiveTimelineContext = createContext23(null);
|
|
2924
2946
|
var emptySelection = new Set;
|
|
2925
|
-
var ActivitySelectionContext =
|
|
2947
|
+
var ActivitySelectionContext = createContext23(emptySelection);
|
|
2926
2948
|
var SequenceActivityBudgetProvider = ({ children }) => {
|
|
2927
2949
|
const enabled = useContext19(SequenceActivityContext);
|
|
2928
2950
|
const settings = useContext19(SequenceActivitySettingsContext);
|
|
@@ -3699,15 +3721,15 @@ var SequenceManagerProvider = ({ children }) => {
|
|
|
3699
3721
|
};
|
|
3700
3722
|
|
|
3701
3723
|
// src/timeline-track-context.ts
|
|
3702
|
-
import { createContext as
|
|
3703
|
-
var TimelineTrackContext =
|
|
3724
|
+
import { createContext as createContext24 } from "react";
|
|
3725
|
+
var TimelineTrackContext = createContext24(null);
|
|
3704
3726
|
|
|
3705
3727
|
// src/use-premounting.ts
|
|
3706
3728
|
import { useContext as useContext24, useMemo as useMemo16 } from "react";
|
|
3707
3729
|
|
|
3708
3730
|
// src/PremountContext.tsx
|
|
3709
|
-
import { createContext as
|
|
3710
|
-
var PremountContext =
|
|
3731
|
+
import { createContext as createContext25 } from "react";
|
|
3732
|
+
var PremountContext = createContext25({
|
|
3711
3733
|
premountFramesRemaining: 0
|
|
3712
3734
|
});
|
|
3713
3735
|
|
|
@@ -3822,11 +3844,11 @@ var useSequenceRegistration = ({
|
|
|
3822
3844
|
|
|
3823
3845
|
// src/with-interactivity-schema.ts
|
|
3824
3846
|
import React25, {
|
|
3825
|
-
createContext as
|
|
3847
|
+
createContext as createContext27,
|
|
3826
3848
|
forwardRef as forwardRef2,
|
|
3827
3849
|
useContext as useContext27,
|
|
3828
3850
|
useLayoutEffect as useLayoutEffect7,
|
|
3829
|
-
useMemo as
|
|
3851
|
+
useMemo as useMemo19,
|
|
3830
3852
|
useState as useState8
|
|
3831
3853
|
} from "react";
|
|
3832
3854
|
|
|
@@ -3864,7 +3886,7 @@ var deleteNestedKey = (obj, keysToRemove) => {
|
|
|
3864
3886
|
};
|
|
3865
3887
|
|
|
3866
3888
|
// src/effects/use-memoized-effects.ts
|
|
3867
|
-
import React24, { useContext as useContext26, useLayoutEffect as useLayoutEffect6, useRef as useRef7 } from "react";
|
|
3889
|
+
import React24, { useContext as useContext26, useLayoutEffect as useLayoutEffect6, useMemo as useMemo18, useRef as useRef7 } from "react";
|
|
3868
3890
|
|
|
3869
3891
|
// src/evaluate-source-expressions.ts
|
|
3870
3892
|
var evaluateSourceNumericValue = (expression, config) => {
|
|
@@ -5970,11 +5992,11 @@ var getEffectiveVisualModeValue = ({
|
|
|
5970
5992
|
};
|
|
5971
5993
|
|
|
5972
5994
|
// src/sequence-node-path.tsx
|
|
5973
|
-
import { createContext as
|
|
5974
|
-
var OverrideIdsToNodePathsGettersContext =
|
|
5995
|
+
import { createContext as createContext26 } from "react";
|
|
5996
|
+
var OverrideIdsToNodePathsGettersContext = createContext26({
|
|
5975
5997
|
overrideIdToNodePathMappings: {}
|
|
5976
5998
|
});
|
|
5977
|
-
var OverrideIdsToNodePathsSettersContext =
|
|
5999
|
+
var OverrideIdsToNodePathsSettersContext = createContext26({
|
|
5978
6000
|
setOverrideIdToNodePath: () => {
|
|
5979
6001
|
throw new Error("OverrideIdsToNodePathsSettersContext not initialized");
|
|
5980
6002
|
}
|
|
@@ -5983,6 +6005,15 @@ var OverrideIdsToNodePathsSettersContext = createContext25({
|
|
|
5983
6005
|
// src/effects/use-memoized-effects.ts
|
|
5984
6006
|
var emptyDragOverrides2 = {};
|
|
5985
6007
|
var useCacheCommitEffect = React24.useInsertionEffect ?? useLayoutEffect6;
|
|
6008
|
+
var areEffectParamsEqual = (previous, next) => {
|
|
6009
|
+
if (Object.is(previous, next)) {
|
|
6010
|
+
return true;
|
|
6011
|
+
}
|
|
6012
|
+
if (previous === null || next === null || typeof previous !== "object" || typeof next !== "object" || Object.getPrototypeOf(previous) !== Object.prototype || Object.getPrototypeOf(next) !== Object.prototype) {
|
|
6013
|
+
return false;
|
|
6014
|
+
}
|
|
6015
|
+
return areRegistryEntriesEqual(previous, next);
|
|
6016
|
+
};
|
|
5986
6017
|
var mergeOverrides = ({
|
|
5987
6018
|
descriptor,
|
|
5988
6019
|
propStatusOverrides,
|
|
@@ -6047,11 +6078,10 @@ var resolvePropStatusOverrides = (propStatus, frame) => {
|
|
|
6047
6078
|
var useMemoizedEffectDefinitions = (effects) => {
|
|
6048
6079
|
const activityDormant = useContext26(SequenceActivityDormantContext);
|
|
6049
6080
|
const previousRef = useRef7(null);
|
|
6050
|
-
const definitions = effects.map((descriptor) => descriptor.definition);
|
|
6051
6081
|
const previous = previousRef.current;
|
|
6052
|
-
const isSame = previous !== null && previous.definitions.length ===
|
|
6082
|
+
const isSame = previous !== null && previous.definitions.length === effects.length && previous.definitions.every((definition, i) => definition === effects[i].definition);
|
|
6053
6083
|
const controllers = isSame ? previous.controllers : effects.map((effect) => createRuntimeValueStore(effect.params));
|
|
6054
|
-
const stableDefinitions = isSame ? previous.definitions : Object.assign(
|
|
6084
|
+
const stableDefinitions = isSame ? previous.definitions : Object.assign(effects.map((descriptor) => descriptor.definition), {
|
|
6055
6085
|
runtimeValues: controllers.map((controller) => controller.store)
|
|
6056
6086
|
});
|
|
6057
6087
|
useCacheCommitEffect(() => {
|
|
@@ -6059,6 +6089,9 @@ var useMemoizedEffectDefinitions = (effects) => {
|
|
|
6059
6089
|
if (!activityDormant || controllers.length === 0) {
|
|
6060
6090
|
return;
|
|
6061
6091
|
}
|
|
6092
|
+
if (controllers.every((controller, index) => areEffectParamsEqual(controller.store.getSnapshot(), effects[index]?.params))) {
|
|
6093
|
+
return;
|
|
6094
|
+
}
|
|
6062
6095
|
let cancelled = false;
|
|
6063
6096
|
queueMicrotask(() => {
|
|
6064
6097
|
if (cancelled) {
|
|
@@ -6067,15 +6100,9 @@ var useMemoizedEffectDefinitions = (effects) => {
|
|
|
6067
6100
|
controllers.forEach((controller, index) => {
|
|
6068
6101
|
const snapshot = effects[index]?.params;
|
|
6069
6102
|
const currentSnapshot = controller.store.getSnapshot();
|
|
6070
|
-
if (
|
|
6103
|
+
if (areEffectParamsEqual(snapshot, currentSnapshot)) {
|
|
6071
6104
|
return;
|
|
6072
6105
|
}
|
|
6073
|
-
if (snapshot !== null && currentSnapshot !== null && typeof snapshot === "object" && typeof currentSnapshot === "object") {
|
|
6074
|
-
const keys = Object.keys(snapshot);
|
|
6075
|
-
if (keys.length === Object.keys(currentSnapshot).length && keys.every((key) => Object.prototype.hasOwnProperty.call(currentSnapshot, key) && Object.is(snapshot[key], currentSnapshot[key]))) {
|
|
6076
|
-
return;
|
|
6077
|
-
}
|
|
6078
|
-
}
|
|
6079
6106
|
controller.setSnapshot(snapshot);
|
|
6080
6107
|
});
|
|
6081
6108
|
});
|
|
@@ -6086,7 +6113,9 @@ var useMemoizedEffectDefinitions = (effects) => {
|
|
|
6086
6113
|
useLayoutEffect6(() => {
|
|
6087
6114
|
stableDefinitions.forEach((_definition, index) => {
|
|
6088
6115
|
const snapshot = effects[index]?.params;
|
|
6089
|
-
controllers[index].
|
|
6116
|
+
if (!areEffectParamsEqual(controllers[index].store.getSnapshot(), snapshot)) {
|
|
6117
|
+
controllers[index].setSnapshot(snapshot);
|
|
6118
|
+
}
|
|
6090
6119
|
});
|
|
6091
6120
|
}, [controllers, effects, stableDefinitions]);
|
|
6092
6121
|
return stableDefinitions;
|
|
@@ -6132,45 +6161,59 @@ var useMemoizedEffects = ({
|
|
|
6132
6161
|
}) => {
|
|
6133
6162
|
const previousRef = useRef7(null);
|
|
6134
6163
|
const { propStatuses } = useContext26(VisualModePropStatusesContext);
|
|
6135
|
-
const frame = useCurrentFrame();
|
|
6136
6164
|
const { overrideIdToNodePathMappings } = useContext26(OverrideIdsToNodePathsGettersContext);
|
|
6137
6165
|
const previous = previousRef.current;
|
|
6138
6166
|
const nodePath = overrideId ? overrideIdToNodePathMappings[overrideId] ?? null : null;
|
|
6139
6167
|
const effectDragOverrides = useEffectDragOverridesForNodePath(nodePath);
|
|
6140
|
-
const
|
|
6168
|
+
const effectPropStatuses = useMemo18(() => Array.from({ length: effects.length }, (_, effectIndex) => {
|
|
6141
6169
|
if (nodePath === null) {
|
|
6142
|
-
return
|
|
6143
|
-
descriptor,
|
|
6144
|
-
params: descriptor.params,
|
|
6145
|
-
effectKey: descriptor.effectKey
|
|
6146
|
-
};
|
|
6170
|
+
return null;
|
|
6147
6171
|
}
|
|
6148
|
-
const
|
|
6172
|
+
const status = getEffectPropStatusesCtx({
|
|
6149
6173
|
propStatuses,
|
|
6150
6174
|
nodePath: { ...nodePath, videoConfigValues },
|
|
6151
|
-
effectIndex
|
|
6175
|
+
effectIndex
|
|
6152
6176
|
});
|
|
6153
|
-
|
|
6177
|
+
return status.type === "can-update-effect" ? status.props : null;
|
|
6178
|
+
}), [effects.length, nodePath, propStatuses, videoConfigValues]);
|
|
6179
|
+
const animatedEffects = useMemo18(() => effectPropStatuses.map((status, index) => Object.values(status ?? {}).some((prop) => prop.status === "keyframed") || Object.values(effectDragOverrides[index] ?? emptyDragOverrides2).some((override) => override.type === "keyframed")), [effectDragOverrides, effectPropStatuses]);
|
|
6180
|
+
const frame = useCurrentFrameWithOptionalSubscription(animatedEffects.some(Boolean));
|
|
6181
|
+
const prepared = effects.map((descriptor, index) => {
|
|
6182
|
+
const propStatus = effectPropStatuses[index];
|
|
6154
6183
|
const dragOverridesMap = effectDragOverrides[index] ?? emptyDragOverrides2;
|
|
6155
6184
|
const dragOverrides = Object.keys(dragOverridesMap).length === 0 ? null : dragOverridesMap;
|
|
6185
|
+
const effectFrame = animatedEffects[index] ? frame : null;
|
|
6186
|
+
const cached = previous?.prepared[index];
|
|
6187
|
+
if (cached && cached.definition === descriptor.definition && cached.sourceKey === descriptor.effectKey && areEffectParamsEqual(cached.params, descriptor.params) && cached.propStatus === propStatus && cached.dragOverrides === dragOverrides && cached.frame === effectFrame) {
|
|
6188
|
+
return cached;
|
|
6189
|
+
}
|
|
6190
|
+
const propStatusOverrides = resolvePropStatusOverrides(propStatus ?? undefined, frame);
|
|
6156
6191
|
const { params, effectKey } = mergeOverrides({
|
|
6157
6192
|
descriptor,
|
|
6158
6193
|
propStatusOverrides,
|
|
6159
6194
|
dragOverrides,
|
|
6160
6195
|
frame
|
|
6161
6196
|
});
|
|
6162
|
-
return {
|
|
6197
|
+
return {
|
|
6198
|
+
definition: descriptor.definition,
|
|
6199
|
+
sourceKey: descriptor.effectKey,
|
|
6200
|
+
params: descriptor.params !== null && typeof descriptor.params === "object" && Object.getPrototypeOf(descriptor.params) === Object.prototype ? { ...descriptor.params } : descriptor.params,
|
|
6201
|
+
propStatus,
|
|
6202
|
+
dragOverrides,
|
|
6203
|
+
frame: effectFrame,
|
|
6204
|
+
value: cached?.value.definition === descriptor.definition && cached.value.effectKey === effectKey ? cached.value : {
|
|
6205
|
+
definition: descriptor.definition,
|
|
6206
|
+
effectKey,
|
|
6207
|
+
params,
|
|
6208
|
+
memoized: true
|
|
6209
|
+
}
|
|
6210
|
+
};
|
|
6163
6211
|
});
|
|
6164
|
-
const isSame = previous !== null && previous.length ===
|
|
6165
|
-
const next = isSame ? previous :
|
|
6166
|
-
definition: descriptor.definition,
|
|
6167
|
-
effectKey,
|
|
6168
|
-
params,
|
|
6169
|
-
memoized: true
|
|
6170
|
-
}));
|
|
6212
|
+
const isSame = previous !== null && previous.effects.length === prepared.length && previous.effects.every((effect, i) => effect === prepared[i].value);
|
|
6213
|
+
const next = isSame ? previous.effects : prepared.map((effect) => effect.value);
|
|
6171
6214
|
useCacheCommitEffect(() => {
|
|
6172
|
-
previousRef.current = next;
|
|
6173
|
-
}, [next]);
|
|
6215
|
+
previousRef.current = { prepared, effects: next };
|
|
6216
|
+
}, [next, prepared]);
|
|
6174
6217
|
return next;
|
|
6175
6218
|
};
|
|
6176
6219
|
|
|
@@ -6571,11 +6614,11 @@ var mergeValues = ({
|
|
|
6571
6614
|
deleteNestedKey(merged, propsToDeleteWithoutTextContent);
|
|
6572
6615
|
return merged;
|
|
6573
6616
|
};
|
|
6574
|
-
var DisableInteractivityContext =
|
|
6617
|
+
var DisableInteractivityContext = createContext27(false);
|
|
6575
6618
|
var DisableInteractivityProvider = ({ children }) => {
|
|
6576
6619
|
return React25.createElement(DisableInteractivityContext.Provider, { value: true }, children);
|
|
6577
6620
|
};
|
|
6578
|
-
var EnableInteractivityContext =
|
|
6621
|
+
var EnableInteractivityContext = createContext27(false);
|
|
6579
6622
|
var EnableInteractivityProvider = ({ children }) => {
|
|
6580
6623
|
return React25.createElement(EnableInteractivityContext.Provider, { value: true }, children);
|
|
6581
6624
|
};
|
|
@@ -6610,20 +6653,19 @@ var withInteractivitySchema = ({
|
|
|
6610
6653
|
}
|
|
6611
6654
|
const { propStatuses } = useContext27(VisualModePropStatusesContext);
|
|
6612
6655
|
const nodePathMapping = useContext27(OverrideIdsToNodePathsGettersContext);
|
|
6613
|
-
const frame = useCurrentFrame();
|
|
6614
6656
|
const videoConfig = useUnsafeVideoConfig();
|
|
6615
6657
|
const durationInFrames = videoConfig?.durationInFrames;
|
|
6616
6658
|
const fps = videoConfig?.fps;
|
|
6617
6659
|
const height = videoConfig?.height;
|
|
6618
6660
|
const width = videoConfig?.width;
|
|
6619
|
-
const videoConfigValues =
|
|
6661
|
+
const videoConfigValues = useMemo19(() => durationInFrames === undefined || fps === undefined || height === undefined || width === undefined ? null : {
|
|
6620
6662
|
durationInFrames,
|
|
6621
6663
|
fps,
|
|
6622
6664
|
height,
|
|
6623
6665
|
width
|
|
6624
6666
|
}, [durationInFrames, fps, height, width]);
|
|
6625
6667
|
const passedControls = cleanProps.controls;
|
|
6626
|
-
const resolvedPassedControls =
|
|
6668
|
+
const resolvedPassedControls = useMemo19(() => {
|
|
6627
6669
|
if (!passedControls || getStackForControls(passedControls) !== null || internalStack === undefined) {
|
|
6628
6670
|
return passedControls;
|
|
6629
6671
|
}
|
|
@@ -6652,17 +6694,23 @@ var withInteractivitySchema = ({
|
|
|
6652
6694
|
});
|
|
6653
6695
|
const nodePath = env.isReadOnlyStudio ? null : nodePathMapping.overrideIdToNodePathMappings[overrideId] ?? null;
|
|
6654
6696
|
const dragOverrides = useDragOverridesForNodePath(nodePath);
|
|
6697
|
+
const propStatus = useMemo19(() => nodePath === null ? undefined : getPropStatusesCtx(propStatuses, {
|
|
6698
|
+
...nodePath,
|
|
6699
|
+
videoConfigValues
|
|
6700
|
+
}), [nodePath, propStatuses, videoConfigValues]);
|
|
6701
|
+
const needsFrame = flatKeys.some((key) => propStatus?.[key]?.status === "keyframed" || dragOverrides[key]?.type === "keyframed");
|
|
6702
|
+
const frame = useCurrentFrameWithOptionalSubscription(needsFrame);
|
|
6655
6703
|
const runtimeValues = flatKeys.map((key) => getRuntimeValueForSchemaKey({
|
|
6656
6704
|
flatSchema,
|
|
6657
6705
|
key,
|
|
6658
6706
|
props: cleanProps
|
|
6659
6707
|
}));
|
|
6660
|
-
const currentRuntimeValueDotNotation =
|
|
6708
|
+
const currentRuntimeValueDotNotation = useMemo19(() => readValuesFromProps(cleanProps, flatKeys, flatSchema), runtimeValues);
|
|
6661
6709
|
const [runtimeValueStore] = useState8(() => createRuntimeValueStore(currentRuntimeValueDotNotation));
|
|
6662
6710
|
useLayoutEffect7(() => {
|
|
6663
6711
|
runtimeValueStore.setSnapshot(currentRuntimeValueDotNotation);
|
|
6664
6712
|
}, [currentRuntimeValueDotNotation, runtimeValueStore]);
|
|
6665
|
-
const controls =
|
|
6713
|
+
const controls = useMemo19(() => {
|
|
6666
6714
|
const controlsForRender = {
|
|
6667
6715
|
schema: schemaWithSequenceName,
|
|
6668
6716
|
currentRuntimeValueDotNotation,
|
|
@@ -6685,25 +6733,15 @@ var withInteractivitySchema = ({
|
|
|
6685
6733
|
useLayoutEffect7(() => {
|
|
6686
6734
|
OptimisticSequenceDeletion.register(internalStack ?? null, nodePath);
|
|
6687
6735
|
}, [internalStack, nodePath]);
|
|
6688
|
-
const { merged: valuesDotNotation, propsToDelete } =
|
|
6736
|
+
const { merged: valuesDotNotation, propsToDelete } = useMemo19(() => {
|
|
6689
6737
|
return computeEffectiveSchemaValuesDotNotation({
|
|
6690
6738
|
schema: schemaWithSequenceName,
|
|
6691
6739
|
currentValue: currentRuntimeValueDotNotation,
|
|
6692
6740
|
overrideValues: dragOverrides,
|
|
6693
|
-
propStatus
|
|
6694
|
-
...nodePath,
|
|
6695
|
-
videoConfigValues
|
|
6696
|
-
}),
|
|
6741
|
+
propStatus,
|
|
6697
6742
|
frame
|
|
6698
6743
|
});
|
|
6699
|
-
}, [
|
|
6700
|
-
currentRuntimeValueDotNotation,
|
|
6701
|
-
dragOverrides,
|
|
6702
|
-
nodePath,
|
|
6703
|
-
propStatuses,
|
|
6704
|
-
videoConfigValues,
|
|
6705
|
-
frame
|
|
6706
|
-
]);
|
|
6744
|
+
}, [currentRuntimeValueDotNotation, dragOverrides, propStatus, frame]);
|
|
6707
6745
|
const activeKeys = selectActiveKeys(schemaWithSequenceName, valuesDotNotation);
|
|
6708
6746
|
const mergedProps = mergeValues({
|
|
6709
6747
|
flatSchema,
|
|
@@ -6727,7 +6765,7 @@ var withInteractivitySchema = ({
|
|
|
6727
6765
|
|
|
6728
6766
|
// src/Sequence.tsx
|
|
6729
6767
|
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
6730
|
-
var SeriesContentVisibilityContext =
|
|
6768
|
+
var SeriesContentVisibilityContext = createContext28(true);
|
|
6731
6769
|
var SequenceContextProvider = withCommittedMetadata(SequenceContext.Provider);
|
|
6732
6770
|
var EMPTY_EFFECTS = [];
|
|
6733
6771
|
var RegularSequenceRefForwardingFunction = ({
|
|
@@ -6875,13 +6913,13 @@ var RegularSequenceRefForwardingFunction = ({
|
|
|
6875
6913
|
const sequenceRegistrationEnabled = useContext28(SequenceRegistrationContext);
|
|
6876
6914
|
const canvasOutlinesEnabled = useContext28(SequenceOutlineContext);
|
|
6877
6915
|
const shouldDiscoverOutline = env.isStudio || canvasOutlinesEnabled;
|
|
6878
|
-
const automaticOutlineRef =
|
|
6916
|
+
const automaticOutlineRef = useMemo20(() => shouldDiscoverOutline && layout === "none" ? SequenceOutlineInternals.createRef() : null, [shouldDiscoverOutline, layout]);
|
|
6879
6917
|
const wrapperRefForOutline = useRef8(null);
|
|
6880
6918
|
const refForOutline = layout === "none" ? automaticOutlineRef : wrapperRefForOutline;
|
|
6881
|
-
const premounting =
|
|
6919
|
+
const premounting = useMemo20(() => {
|
|
6882
6920
|
return parentSequence?.premounting || Boolean(other._remotionInternalIsPremounting);
|
|
6883
6921
|
}, [other._remotionInternalIsPremounting, parentSequence?.premounting]);
|
|
6884
|
-
const postmounting =
|
|
6922
|
+
const postmounting = useMemo20(() => {
|
|
6885
6923
|
return parentSequence?.postmounting || Boolean(other._remotionInternalIsPostmounting);
|
|
6886
6924
|
}, [other._remotionInternalIsPostmounting, parentSequence?.postmounting]);
|
|
6887
6925
|
const currentSequenceStart = cumulatedFrom + relativeFrom;
|
|
@@ -6889,7 +6927,7 @@ var RegularSequenceRefForwardingFunction = ({
|
|
|
6889
6927
|
const parentFirstFrame = parentSequence ? parentSequenceStart - parentSequence.cumulatedNegativeFrom / parentPlaybackRate : 0;
|
|
6890
6928
|
const firstFrame = Math.max(0, parentFirstFrame, cumulatedFrom + clockFrom / parentPlaybackRate);
|
|
6891
6929
|
const cumulatedNegativeFrom = (currentSequenceStart - firstFrame) * cumulativePlaybackRate;
|
|
6892
|
-
const contextValue =
|
|
6930
|
+
const contextValue = useMemo20(() => {
|
|
6893
6931
|
return {
|
|
6894
6932
|
playbackRate: cumulativePlaybackRate,
|
|
6895
6933
|
absoluteFrom,
|
|
@@ -6922,7 +6960,7 @@ var RegularSequenceRefForwardingFunction = ({
|
|
|
6922
6960
|
postmountDisplay,
|
|
6923
6961
|
cumulatedNegativeFrom
|
|
6924
6962
|
]);
|
|
6925
|
-
const loopContextValue =
|
|
6963
|
+
const loopContextValue = useMemo20(() => {
|
|
6926
6964
|
if (loopPeriod === null) {
|
|
6927
6965
|
return null;
|
|
6928
6966
|
}
|
|
@@ -6931,7 +6969,7 @@ var RegularSequenceRefForwardingFunction = ({
|
|
|
6931
6969
|
durationInFrames: contentDurationInFrames
|
|
6932
6970
|
};
|
|
6933
6971
|
}, [contentDurationInFrames, loopIteration, loopPeriod]);
|
|
6934
|
-
const resolvedLoopDisplay =
|
|
6972
|
+
const resolvedLoopDisplay = useMemo20(() => {
|
|
6935
6973
|
if (loopDisplay || loopPeriod === null) {
|
|
6936
6974
|
return loopDisplay;
|
|
6937
6975
|
}
|
|
@@ -6941,12 +6979,12 @@ var RegularSequenceRefForwardingFunction = ({
|
|
|
6941
6979
|
durationInFrames: loopPeriod
|
|
6942
6980
|
};
|
|
6943
6981
|
}, [actualDurationInFrames, loopDisplay, loopPeriod]);
|
|
6944
|
-
const timelineClipName =
|
|
6982
|
+
const timelineClipName = useMemo20(() => {
|
|
6945
6983
|
return name ?? "";
|
|
6946
6984
|
}, [name]);
|
|
6947
6985
|
const resolvedDocumentationLink = documentationLink ?? "https://www.remotion.dev/docs/sequence";
|
|
6948
6986
|
const isInsideSeries = useContext28(IsInsideSeriesContext);
|
|
6949
|
-
const singleChildComponent =
|
|
6987
|
+
const singleChildComponent = useMemo20(() => childComponentOverride === undefined ? getSingleChildComponent(children) : childComponentOverride, [children, childComponentOverride]);
|
|
6950
6988
|
const registrationStack = controls ? getStackForControls(controls) ?? stack ?? null : stack ?? null;
|
|
6951
6989
|
const getStack = useCallback7(() => registrationStack, [registrationStack]);
|
|
6952
6990
|
const registeredFrozenFrame = typeof freeze === "number" ? freeze : null;
|
|
@@ -6973,8 +7011,8 @@ var RegularSequenceRefForwardingFunction = ({
|
|
|
6973
7011
|
const autoDuration = canInferDuration && durationInFrames === undefined;
|
|
6974
7012
|
const isSeriesChild = controlsComponentIdentity === "dev.remotion.remotion.Series.Sequence" || controlsComponentIdentity === "dev.remotion.transitions.TransitionSeries.Sequence" || controlsComponentIdentity === "dev.remotion.transitions.TransitionSeries.Transition" || controlsComponentIdentity === "dev.remotion.transitions.TransitionSeries.Overlay";
|
|
6975
7013
|
const seriesContentVisible = useContext28(SeriesContentVisibilityContext);
|
|
6976
|
-
const effectRuntimeValues =
|
|
6977
|
-
const registrationControls =
|
|
7014
|
+
const effectRuntimeValues = useMemo20(() => _remotionInternalEffects?.runtimeValues ?? null, [_remotionInternalEffects]);
|
|
7015
|
+
const registrationControls = useMemo20(() => {
|
|
6978
7016
|
if (controlsSchema === undefined || controlsRuntimeValues === undefined || controlsOverrideId === undefined || controlsSupportsEffects === undefined || controlsComponentIdentity === undefined || controlsComponentName === undefined || controlsVideoConfigValues === undefined) {
|
|
6979
7017
|
return null;
|
|
6980
7018
|
}
|
|
@@ -7181,7 +7219,7 @@ var RegularSequenceRefForwardingFunction = ({
|
|
|
7181
7219
|
ref.current = node;
|
|
7182
7220
|
}
|
|
7183
7221
|
}, [ref]);
|
|
7184
|
-
const defaultStyle =
|
|
7222
|
+
const defaultStyle = useMemo20(() => {
|
|
7185
7223
|
return {
|
|
7186
7224
|
flexDirection: undefined,
|
|
7187
7225
|
...width ? { width } : {},
|
|
@@ -7195,7 +7233,7 @@ var RegularSequenceRefForwardingFunction = ({
|
|
|
7195
7233
|
if (ref !== null && layout === "none") {
|
|
7196
7234
|
throw new TypeError('It is not supported to pass both a `ref` and `layout="none"` to <Sequence />.');
|
|
7197
7235
|
}
|
|
7198
|
-
const metadata =
|
|
7236
|
+
const metadata = useMemo20(() => shouldDiscoverOutline || registration !== null ? {
|
|
7199
7237
|
type: "sequence",
|
|
7200
7238
|
id,
|
|
7201
7239
|
value: registration,
|
|
@@ -7483,7 +7521,6 @@ addSequenceStackTraces(AbsoluteFill);
|
|
|
7483
7521
|
// src/animated-image/AnimatedImage.tsx
|
|
7484
7522
|
import {
|
|
7485
7523
|
forwardRef as forwardRef4,
|
|
7486
|
-
useEffect as useEffect8,
|
|
7487
7524
|
useImperativeHandle as useImperativeHandle2,
|
|
7488
7525
|
useLayoutEffect as useLayoutEffect9,
|
|
7489
7526
|
useRef as useRef11,
|
|
@@ -7491,7 +7528,7 @@ import {
|
|
|
7491
7528
|
} from "react";
|
|
7492
7529
|
|
|
7493
7530
|
// src/use-crop-style.ts
|
|
7494
|
-
import { useMemo as
|
|
7531
|
+
import { useMemo as useMemo21 } from "react";
|
|
7495
7532
|
var useCropStyle = ({
|
|
7496
7533
|
cropLeft,
|
|
7497
7534
|
cropRight,
|
|
@@ -7501,7 +7538,7 @@ var useCropStyle = ({
|
|
|
7501
7538
|
componentName
|
|
7502
7539
|
}) => {
|
|
7503
7540
|
validateSequenceCrop({ cropLeft, cropRight, cropTop, cropBottom }, componentName);
|
|
7504
|
-
return
|
|
7541
|
+
return useMemo21(() => {
|
|
7505
7542
|
const cropClipPath = getSequenceCropClipPath({
|
|
7506
7543
|
...resolveSequenceCrop({ cropLeft, cropRight, cropTop, cropBottom }),
|
|
7507
7544
|
style
|
|
@@ -7514,7 +7551,7 @@ var useCropStyle = ({
|
|
|
7514
7551
|
};
|
|
7515
7552
|
|
|
7516
7553
|
// src/animated-image/canvas.tsx
|
|
7517
|
-
import React28, { useCallback as useCallback9, useImperativeHandle, useMemo as
|
|
7554
|
+
import React28, { useCallback as useCallback9, useImperativeHandle, useMemo as useMemo23, useRef as useRef10 } from "react";
|
|
7518
7555
|
|
|
7519
7556
|
// src/calculate-image-fit.ts
|
|
7520
7557
|
var calculateImageFit = (fit, imageSize, canvasSize) => {
|
|
@@ -7884,7 +7921,7 @@ var runEffectChain = async (options) => {
|
|
|
7884
7921
|
};
|
|
7885
7922
|
|
|
7886
7923
|
// src/effects/use-effect-chain-state.ts
|
|
7887
|
-
import { useEffect as useEffect7, useMemo as
|
|
7924
|
+
import { useEffect as useEffect7, useMemo as useMemo22, useRef as useRef9 } from "react";
|
|
7888
7925
|
var useEffectChainState = (effectsOutputSize = null) => {
|
|
7889
7926
|
const effectWidth = effectsOutputSize?.width;
|
|
7890
7927
|
const effectHeight = effectsOutputSize?.height;
|
|
@@ -7906,7 +7943,7 @@ var useEffectChainState = (effectsOutputSize = null) => {
|
|
|
7906
7943
|
}
|
|
7907
7944
|
};
|
|
7908
7945
|
}, []);
|
|
7909
|
-
return
|
|
7946
|
+
return useMemo22(() => ({
|
|
7910
7947
|
get: (width, height) => {
|
|
7911
7948
|
width = effectWidth ?? width;
|
|
7912
7949
|
height = effectHeight ?? height;
|
|
@@ -7930,7 +7967,7 @@ import { jsx as jsx19 } from "react/jsx-runtime";
|
|
|
7930
7967
|
var CanvasRefForwardingFunction = ({ width, height, fit, className, style, effects, effectsOutputSize, ...props }, ref) => {
|
|
7931
7968
|
const canvasRef = useRef10(null);
|
|
7932
7969
|
const chainState = useEffectChainState(effectsOutputSize);
|
|
7933
|
-
const sourceCanvas =
|
|
7970
|
+
const sourceCanvas = useMemo23(() => {
|
|
7934
7971
|
if (typeof document === "undefined") {
|
|
7935
7972
|
return null;
|
|
7936
7973
|
}
|
|
@@ -8273,6 +8310,7 @@ var AnimatedImageContent = forwardRef4(({
|
|
|
8273
8310
|
const resolvedSrc = resolveAnimatedImageSource(src);
|
|
8274
8311
|
const [decodedImage, setDecodedImage] = useState10(null);
|
|
8275
8312
|
const imageDecoder = decodedImage?.decoder ?? null;
|
|
8313
|
+
const activeDecoderRef = useRef11(null);
|
|
8276
8314
|
const { delayRender, continueRender, cancelRender } = useDelayRender();
|
|
8277
8315
|
const frame = useCurrentFrame();
|
|
8278
8316
|
const { fps } = useVideoConfig();
|
|
@@ -8301,6 +8339,7 @@ var AnimatedImageContent = forwardRef4(({
|
|
|
8301
8339
|
const controller = new AbortController;
|
|
8302
8340
|
let cancelled = false;
|
|
8303
8341
|
let continued = false;
|
|
8342
|
+
let decoder = null;
|
|
8304
8343
|
const continueRenderOnce = () => {
|
|
8305
8344
|
if (continued) {
|
|
8306
8345
|
return;
|
|
@@ -8319,6 +8358,8 @@ var AnimatedImageContent = forwardRef4(({
|
|
|
8319
8358
|
d.close();
|
|
8320
8359
|
return;
|
|
8321
8360
|
}
|
|
8361
|
+
decoder = d;
|
|
8362
|
+
activeDecoderRef.current = d;
|
|
8322
8363
|
setDecodedImage({ decoder: d, handle: decodeHandle });
|
|
8323
8364
|
}).catch((err) => {
|
|
8324
8365
|
if (cancelled) {
|
|
@@ -8337,6 +8378,8 @@ var AnimatedImageContent = forwardRef4(({
|
|
|
8337
8378
|
});
|
|
8338
8379
|
return () => {
|
|
8339
8380
|
cancelled = true;
|
|
8381
|
+
activeDecoderRef.current = null;
|
|
8382
|
+
decoder?.close();
|
|
8340
8383
|
controller.abort();
|
|
8341
8384
|
continueRenderOnce();
|
|
8342
8385
|
};
|
|
@@ -8349,13 +8392,8 @@ var AnimatedImageContent = forwardRef4(({
|
|
|
8349
8392
|
delayRender,
|
|
8350
8393
|
cancelRender
|
|
8351
8394
|
]);
|
|
8352
|
-
useEffect8(() => {
|
|
8353
|
-
return () => {
|
|
8354
|
-
imageDecoder?.close();
|
|
8355
|
-
};
|
|
8356
|
-
}, [imageDecoder]);
|
|
8357
8395
|
useLayoutEffect9(() => {
|
|
8358
|
-
if (!imageDecoder || !decodedImage) {
|
|
8396
|
+
if (!imageDecoder || !decodedImage || activeDecoderRef.current !== imageDecoder) {
|
|
8359
8397
|
return;
|
|
8360
8398
|
}
|
|
8361
8399
|
const delay = delayRender(`Rendering frame at ${currentTime} of <AnimatedImage src="${src}"/>`);
|
|
@@ -8641,11 +8679,11 @@ import { useContext as useContext29, useLayoutEffect as useLayoutEffect11, useSt
|
|
|
8641
8679
|
|
|
8642
8680
|
// src/RenderAssetManager.tsx
|
|
8643
8681
|
import {
|
|
8644
|
-
createContext as
|
|
8682
|
+
createContext as createContext29,
|
|
8645
8683
|
useCallback as useCallback10,
|
|
8646
8684
|
useImperativeHandle as useImperativeHandle3,
|
|
8647
8685
|
useLayoutEffect as useLayoutEffect10,
|
|
8648
|
-
useMemo as
|
|
8686
|
+
useMemo as useMemo24,
|
|
8649
8687
|
useRef as useRef12,
|
|
8650
8688
|
useState as useState11
|
|
8651
8689
|
} from "react";
|
|
@@ -8683,7 +8721,7 @@ var validateRenderAsset = (artifact) => {
|
|
|
8683
8721
|
|
|
8684
8722
|
// src/RenderAssetManager.tsx
|
|
8685
8723
|
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
8686
|
-
var RenderAssetManager =
|
|
8724
|
+
var RenderAssetManager = createContext29({
|
|
8687
8725
|
registerRenderAsset: () => {
|
|
8688
8726
|
return;
|
|
8689
8727
|
},
|
|
@@ -8726,7 +8764,7 @@ var RenderAssetManagerProvider = ({ children, collectAssets }) => {
|
|
|
8726
8764
|
};
|
|
8727
8765
|
}
|
|
8728
8766
|
}, []);
|
|
8729
|
-
const contextValue =
|
|
8767
|
+
const contextValue = useMemo24(() => {
|
|
8730
8768
|
return {
|
|
8731
8769
|
registerRenderAsset,
|
|
8732
8770
|
unregisterRenderAsset,
|
|
@@ -8841,9 +8879,9 @@ var getMediaTrimAfter = ({
|
|
|
8841
8879
|
};
|
|
8842
8880
|
|
|
8843
8881
|
// src/loop/index.tsx
|
|
8844
|
-
import React29, { createContext as
|
|
8882
|
+
import React29, { createContext as createContext30, useContext as useContext30, useMemo as useMemo25 } from "react";
|
|
8845
8883
|
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
8846
|
-
var LoopTimelineContext =
|
|
8884
|
+
var LoopTimelineContext = createContext30(null);
|
|
8847
8885
|
var useLoop = () => {
|
|
8848
8886
|
return React29.useContext(LoopContext);
|
|
8849
8887
|
};
|
|
@@ -8887,20 +8925,20 @@ var Loop = ({
|
|
|
8887
8925
|
const iteration = Math.max(0, Math.min(actualTimes - 1, isAtBoundary ? nearestIteration : Math.floor(loopsElapsed)));
|
|
8888
8926
|
const start = isAtBoundary ? currentFrame : iteration * iterationDurationInFrames;
|
|
8889
8927
|
const from = Math.max(0, Math.min(start, maxFrame));
|
|
8890
|
-
const loopDisplay =
|
|
8928
|
+
const loopDisplay = useMemo25(() => {
|
|
8891
8929
|
return {
|
|
8892
8930
|
numberOfTimes: Math.min(compDuration / iterationDurationInFrames, times),
|
|
8893
8931
|
startOffset: -from,
|
|
8894
8932
|
durationInFrames: iterationDurationInFrames
|
|
8895
8933
|
};
|
|
8896
8934
|
}, [compDuration, from, iterationDurationInFrames, times]);
|
|
8897
|
-
const loopContext =
|
|
8935
|
+
const loopContext = useMemo25(() => {
|
|
8898
8936
|
return {
|
|
8899
8937
|
iteration,
|
|
8900
8938
|
durationInFrames
|
|
8901
8939
|
};
|
|
8902
8940
|
}, [iteration, durationInFrames]);
|
|
8903
|
-
const timelineContext =
|
|
8941
|
+
const timelineContext = useMemo25(() => ({
|
|
8904
8942
|
startFrame: loopStartFrame,
|
|
8905
8943
|
firstVisibleFrame,
|
|
8906
8944
|
endFrame,
|
|
@@ -8944,9 +8982,9 @@ var playbackLogging = ({
|
|
|
8944
8982
|
};
|
|
8945
8983
|
|
|
8946
8984
|
// src/prefetch-state.tsx
|
|
8947
|
-
import { createContext as
|
|
8985
|
+
import { createContext as createContext31, useEffect as useEffect8, useState as useState13 } from "react";
|
|
8948
8986
|
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
8949
|
-
var PreloadContext =
|
|
8987
|
+
var PreloadContext = createContext31({});
|
|
8950
8988
|
var preloads = {};
|
|
8951
8989
|
var updaters = [];
|
|
8952
8990
|
var setPreloads = (updater) => {
|
|
@@ -8955,7 +8993,7 @@ var setPreloads = (updater) => {
|
|
|
8955
8993
|
};
|
|
8956
8994
|
var PrefetchProvider = ({ children }) => {
|
|
8957
8995
|
const [_preloads, _setPreloads] = useState13(() => preloads);
|
|
8958
|
-
|
|
8996
|
+
useEffect8(() => {
|
|
8959
8997
|
const updaterFunction = () => {
|
|
8960
8998
|
_setPreloads(preloads);
|
|
8961
8999
|
};
|
|
@@ -9271,7 +9309,7 @@ var resolveTrimProps = ({
|
|
|
9271
9309
|
};
|
|
9272
9310
|
|
|
9273
9311
|
// src/video/duration-state.tsx
|
|
9274
|
-
import { createContext as
|
|
9312
|
+
import { createContext as createContext32, useMemo as useMemo26, useReducer } from "react";
|
|
9275
9313
|
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
9276
9314
|
var durationReducer = (state, action) => {
|
|
9277
9315
|
switch (action.type) {
|
|
@@ -9289,7 +9327,7 @@ var durationReducer = (state, action) => {
|
|
|
9289
9327
|
return state;
|
|
9290
9328
|
}
|
|
9291
9329
|
};
|
|
9292
|
-
var DurationsContext =
|
|
9330
|
+
var DurationsContext = createContext32({
|
|
9293
9331
|
durations: {},
|
|
9294
9332
|
setDurations: () => {
|
|
9295
9333
|
throw new Error("context missing");
|
|
@@ -9297,7 +9335,7 @@ var DurationsContext = createContext31({
|
|
|
9297
9335
|
});
|
|
9298
9336
|
var DurationsContextProvider = ({ children }) => {
|
|
9299
9337
|
const [durations, setDurations] = useReducer(durationReducer, {});
|
|
9300
|
-
const value =
|
|
9338
|
+
const value = useMemo26(() => {
|
|
9301
9339
|
return {
|
|
9302
9340
|
durations,
|
|
9303
9341
|
setDurations
|
|
@@ -9314,9 +9352,9 @@ import { useCallback as useCallback16 } from "react";
|
|
|
9314
9352
|
import React35, {
|
|
9315
9353
|
forwardRef as forwardRef5,
|
|
9316
9354
|
useContext as useContext41,
|
|
9317
|
-
useEffect as
|
|
9355
|
+
useEffect as useEffect15,
|
|
9318
9356
|
useImperativeHandle as useImperativeHandle4,
|
|
9319
|
-
useMemo as
|
|
9357
|
+
useMemo as useMemo34,
|
|
9320
9358
|
useRef as useRef21,
|
|
9321
9359
|
useState as useState17
|
|
9322
9360
|
} from "react";
|
|
@@ -9378,12 +9416,12 @@ import { useContext as useContext33, useLayoutEffect as useLayoutEffect12, useRe
|
|
|
9378
9416
|
|
|
9379
9417
|
// src/audio/shared-audio-tags.tsx
|
|
9380
9418
|
import React32, {
|
|
9381
|
-
createContext as
|
|
9419
|
+
createContext as createContext33,
|
|
9382
9420
|
createRef as createRef2,
|
|
9383
9421
|
useCallback as useCallback11,
|
|
9384
9422
|
useContext as useContext32,
|
|
9385
|
-
useEffect as
|
|
9386
|
-
useMemo as
|
|
9423
|
+
useEffect as useEffect9,
|
|
9424
|
+
useMemo as useMemo28,
|
|
9387
9425
|
useRef as useRef14,
|
|
9388
9426
|
useState as useState14
|
|
9389
9427
|
} from "react";
|
|
@@ -9488,7 +9526,7 @@ var makeSharedElementSourceNode = ({
|
|
|
9488
9526
|
};
|
|
9489
9527
|
|
|
9490
9528
|
// src/audio/use-audio-context.ts
|
|
9491
|
-
import { useMemo as
|
|
9529
|
+
import { useMemo as useMemo27, useRef as useRef13 } from "react";
|
|
9492
9530
|
var warned = false;
|
|
9493
9531
|
var warnOnce = (logLevel) => {
|
|
9494
9532
|
if (warned) {
|
|
@@ -9510,7 +9548,7 @@ var useSingletonAudioContext = ({
|
|
|
9510
9548
|
if (sampleRate !== initialSampleRate.current) {
|
|
9511
9549
|
throw new Error(`Changing the AudioContext sample rate dynamically is not supported. The sample rate was initialized with ${initialSampleRate.current} Hz, but ${sampleRate} Hz was passed later.`);
|
|
9512
9550
|
}
|
|
9513
|
-
const context =
|
|
9551
|
+
const context = useMemo27(() => {
|
|
9514
9552
|
if (env.isRendering) {
|
|
9515
9553
|
return null;
|
|
9516
9554
|
}
|
|
@@ -9674,8 +9712,8 @@ var didPropChange = (key, newProp, prevProp) => {
|
|
|
9674
9712
|
}
|
|
9675
9713
|
return true;
|
|
9676
9714
|
};
|
|
9677
|
-
var SharedAudioContext =
|
|
9678
|
-
var SharedAudioTagsContext =
|
|
9715
|
+
var SharedAudioContext = createContext33(null);
|
|
9716
|
+
var SharedAudioTagsContext = createContext33(null);
|
|
9679
9717
|
var shouldSaveForLater = (state) => {
|
|
9680
9718
|
if (state === "suspended" || state === "running-to-suspended" || state === "interrupted") {
|
|
9681
9719
|
return true;
|
|
@@ -9708,9 +9746,9 @@ var SharedAudioContextProvider = ({
|
|
|
9708
9746
|
const isResuming = useRef14(null);
|
|
9709
9747
|
const nextResumeAttemptId = useRef14(0);
|
|
9710
9748
|
const nextResumeIsAutoPlayAttempt = useRef14(false);
|
|
9711
|
-
const audioSyncAnchor =
|
|
9749
|
+
const audioSyncAnchor = useMemo28(() => ({ value: 0 }), []);
|
|
9712
9750
|
const audioSyncAnchorListeners = useRef14([]);
|
|
9713
|
-
const audioSyncAnchorEmitter =
|
|
9751
|
+
const audioSyncAnchorEmitter = useMemo28(() => {
|
|
9714
9752
|
return {
|
|
9715
9753
|
dispatch: (event) => {
|
|
9716
9754
|
audioSyncAnchorListeners.current.forEach((l) => l(event));
|
|
@@ -9730,7 +9768,7 @@ var SharedAudioContextProvider = ({
|
|
|
9730
9768
|
const unscheduleAudioNode = useCallback11((node) => {
|
|
9731
9769
|
return nodesToResume.current.delete(node);
|
|
9732
9770
|
}, []);
|
|
9733
|
-
const scheduleAudioNode =
|
|
9771
|
+
const scheduleAudioNode = useMemo28(() => {
|
|
9734
9772
|
return ({
|
|
9735
9773
|
node,
|
|
9736
9774
|
mediaTimestamp,
|
|
@@ -9847,7 +9885,7 @@ var SharedAudioContextProvider = ({
|
|
|
9847
9885
|
}
|
|
9848
9886
|
return ctxAndGain.suspend();
|
|
9849
9887
|
}, [ctxAndGain, _experimentalKeepAudioContextAlive]);
|
|
9850
|
-
|
|
9888
|
+
useEffect9(() => {
|
|
9851
9889
|
if (!_experimentalKeepAudioContextAlive) {
|
|
9852
9890
|
return;
|
|
9853
9891
|
}
|
|
@@ -9875,7 +9913,7 @@ var SharedAudioContextProvider = ({
|
|
|
9875
9913
|
ctxAndGain.suspend().catch(() => {});
|
|
9876
9914
|
};
|
|
9877
9915
|
}, [ctxAndGain, _experimentalKeepAudioContextAlive]);
|
|
9878
|
-
const audioContextValue =
|
|
9916
|
+
const audioContextValue = useMemo28(() => {
|
|
9879
9917
|
return {
|
|
9880
9918
|
sampleRate,
|
|
9881
9919
|
audioContext: ctxAndGain?.audioContext ?? null,
|
|
@@ -10063,7 +10101,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
|
|
|
10063
10101
|
});
|
|
10064
10102
|
resume?.();
|
|
10065
10103
|
}, [logLevel, mountTime, refs, env.isPlayer, resume]);
|
|
10066
|
-
const audioTagsValue =
|
|
10104
|
+
const audioTagsValue = useMemo28(() => {
|
|
10067
10105
|
return {
|
|
10068
10106
|
registerAudio,
|
|
10069
10107
|
unregisterAudio,
|
|
@@ -10078,7 +10116,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
|
|
|
10078
10116
|
unregisterAudio,
|
|
10079
10117
|
updateAudio
|
|
10080
10118
|
]);
|
|
10081
|
-
const sharedAudioTagElements =
|
|
10119
|
+
const sharedAudioTagElements = useMemo28(() => {
|
|
10082
10120
|
return refs.map(({ id, ref }) => {
|
|
10083
10121
|
return /* @__PURE__ */ jsx25("audio", {
|
|
10084
10122
|
ref,
|
|
@@ -10357,11 +10395,11 @@ var useVolume = ({
|
|
|
10357
10395
|
};
|
|
10358
10396
|
|
|
10359
10397
|
// src/use-media-in-timeline.ts
|
|
10360
|
-
import { useCallback as useCallback12, useContext as useContext35, useMemo as
|
|
10398
|
+
import { useCallback as useCallback12, useContext as useContext35, useMemo as useMemo29 } from "react";
|
|
10361
10399
|
|
|
10362
10400
|
// src/audio/use-audio-frame.ts
|
|
10363
|
-
import { createContext as
|
|
10364
|
-
var Html5MediaTrimContext =
|
|
10401
|
+
import { createContext as createContext34, useContext as useContext34 } from "react";
|
|
10402
|
+
var Html5MediaTrimContext = createContext34(0);
|
|
10365
10403
|
var useMediaStartsAt = () => {
|
|
10366
10404
|
const parentSequence = useContext34(SequenceContext);
|
|
10367
10405
|
return parentSequence?.cumulatedNegativeFrom ?? 0;
|
|
@@ -10447,7 +10485,7 @@ var useBasicMediaInTimeline = ({
|
|
|
10447
10485
|
loop
|
|
10448
10486
|
});
|
|
10449
10487
|
const startMediaFrom = 0 - mediaStartsAt + (trimBefore ?? 0);
|
|
10450
|
-
const memoizedResult =
|
|
10488
|
+
const memoizedResult = useMemo29(() => {
|
|
10451
10489
|
return {
|
|
10452
10490
|
duration,
|
|
10453
10491
|
finalDisplayName: displayName ?? getAssetDisplayName(src),
|
|
@@ -10483,7 +10521,7 @@ var useMediaInTimelineRegistration = ({
|
|
|
10483
10521
|
const { isStudio } = useRemotionEnvironment();
|
|
10484
10522
|
const stack = getStack();
|
|
10485
10523
|
const getStackForRegistration = useCallback12(() => stack, [stack]);
|
|
10486
|
-
const automaticOutlineRef =
|
|
10524
|
+
const automaticOutlineRef = useMemo29(() => mediaType === "video" && (isStudio || canvasOutlinesEnabled) ? SequenceOutlineInternals.createRef() : null, [canvasOutlinesEnabled, isStudio, mediaType]);
|
|
10487
10525
|
const { duration, finalDisplayName } = useBasicMediaInTimeline({
|
|
10488
10526
|
src,
|
|
10489
10527
|
displayName,
|
|
@@ -10565,24 +10603,24 @@ var useMediaInTimelineRegistration = ({
|
|
|
10565
10603
|
import {
|
|
10566
10604
|
useCallback as useCallback15,
|
|
10567
10605
|
useContext as useContext38,
|
|
10568
|
-
useEffect as
|
|
10606
|
+
useEffect as useEffect13,
|
|
10569
10607
|
useLayoutEffect as useLayoutEffect14,
|
|
10570
10608
|
useRef as useRef19
|
|
10571
10609
|
} from "react";
|
|
10572
10610
|
|
|
10573
10611
|
// src/buffer-until-first-frame.ts
|
|
10574
|
-
import { useCallback as useCallback14, useMemo as
|
|
10612
|
+
import { useCallback as useCallback14, useMemo as useMemo32, useRef as useRef17 } from "react";
|
|
10575
10613
|
|
|
10576
10614
|
// src/use-buffer-state.ts
|
|
10577
|
-
import { useContext as useContext37, useMemo as
|
|
10615
|
+
import { useContext as useContext37, useMemo as useMemo31 } from "react";
|
|
10578
10616
|
|
|
10579
10617
|
// src/buffering.tsx
|
|
10580
10618
|
import React33, {
|
|
10581
10619
|
useCallback as useCallback13,
|
|
10582
10620
|
useContext as useContext36,
|
|
10583
|
-
useEffect as
|
|
10621
|
+
useEffect as useEffect10,
|
|
10584
10622
|
useLayoutEffect as useLayoutEffect13,
|
|
10585
|
-
useMemo as
|
|
10623
|
+
useMemo as useMemo30,
|
|
10586
10624
|
useState as useState15
|
|
10587
10625
|
} from "react";
|
|
10588
10626
|
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
@@ -10610,7 +10648,7 @@ var useBufferManager = (logLevel, mountTime, setBuffering, isBuffering) => {
|
|
|
10610
10648
|
}
|
|
10611
10649
|
};
|
|
10612
10650
|
}, [rendering]);
|
|
10613
|
-
|
|
10651
|
+
useEffect10(() => {
|
|
10614
10652
|
if (rendering) {
|
|
10615
10653
|
return;
|
|
10616
10654
|
}
|
|
@@ -10640,7 +10678,7 @@ var useBufferManager = (logLevel, mountTime, setBuffering, isBuffering) => {
|
|
|
10640
10678
|
}
|
|
10641
10679
|
}, [blockCount]);
|
|
10642
10680
|
}
|
|
10643
|
-
return
|
|
10681
|
+
return useMemo30(() => ({ addBlock }), [addBlock]);
|
|
10644
10682
|
};
|
|
10645
10683
|
var BufferingContextReact = React33.createContext(null);
|
|
10646
10684
|
var BufferingProvider = ({ children }) => {
|
|
@@ -10658,7 +10696,7 @@ var useBufferState = () => {
|
|
|
10658
10696
|
const buffer = useContext37(BufferingContextReact);
|
|
10659
10697
|
const logLevel = useLogLevel();
|
|
10660
10698
|
const addBlock = buffer ? buffer.addBlock : null;
|
|
10661
|
-
return
|
|
10699
|
+
return useMemo31(() => ({
|
|
10662
10700
|
delayPlayback: () => {
|
|
10663
10701
|
if (!addBlock) {
|
|
10664
10702
|
throw new Error("Tried to enable the buffering state, but a Remotion context was not found. This API can only be called in a component that was passed to the Remotion Player or a <Composition>. Or you might have experienced a version mismatch - run `npx remotion versions` and ensure all packages have the same version. This error is thrown by the buffer state https://remotion.dev/docs/player/buffer-state");
|
|
@@ -10766,7 +10804,7 @@ var useBufferUntilFirstFrame = ({
|
|
|
10766
10804
|
onVariableFpsVideoDetected,
|
|
10767
10805
|
pauseWhenBuffering
|
|
10768
10806
|
]);
|
|
10769
|
-
return
|
|
10807
|
+
return useMemo32(() => {
|
|
10770
10808
|
return {
|
|
10771
10809
|
isBuffering: () => bufferingRef.current,
|
|
10772
10810
|
bufferUntilFirstFrame
|
|
@@ -10879,7 +10917,7 @@ var seek = ({
|
|
|
10879
10917
|
};
|
|
10880
10918
|
|
|
10881
10919
|
// src/use-media-buffering.ts
|
|
10882
|
-
import { useEffect as
|
|
10920
|
+
import { useEffect as useEffect11, useState as useState16 } from "react";
|
|
10883
10921
|
var useMediaBuffering = ({
|
|
10884
10922
|
element,
|
|
10885
10923
|
shouldBuffer,
|
|
@@ -10891,7 +10929,7 @@ var useMediaBuffering = ({
|
|
|
10891
10929
|
}) => {
|
|
10892
10930
|
const buffer = useBufferState();
|
|
10893
10931
|
const [isBuffering, setIsBuffering] = useState16(false);
|
|
10894
|
-
|
|
10932
|
+
useEffect11(() => {
|
|
10895
10933
|
let cleanupFns = [];
|
|
10896
10934
|
const { current } = element;
|
|
10897
10935
|
if (!current) {
|
|
@@ -11019,7 +11057,7 @@ var useMediaBuffering = ({
|
|
|
11019
11057
|
};
|
|
11020
11058
|
|
|
11021
11059
|
// src/use-request-video-callback-time.ts
|
|
11022
|
-
import { useEffect as
|
|
11060
|
+
import { useEffect as useEffect12, useRef as useRef18 } from "react";
|
|
11023
11061
|
var useRequestVideoCallbackTime = ({
|
|
11024
11062
|
mediaRef,
|
|
11025
11063
|
mediaType,
|
|
@@ -11027,7 +11065,7 @@ var useRequestVideoCallbackTime = ({
|
|
|
11027
11065
|
onVariableFpsVideoDetected
|
|
11028
11066
|
}) => {
|
|
11029
11067
|
const currentTime = useRef18(null);
|
|
11030
|
-
|
|
11068
|
+
useEffect12(() => {
|
|
11031
11069
|
const { current } = mediaRef;
|
|
11032
11070
|
if (current) {
|
|
11033
11071
|
currentTime.current = {
|
|
@@ -11245,7 +11283,7 @@ var useMediaPlayback = ({
|
|
|
11245
11283
|
mediaRef.current.preservesPitch = preservePitch;
|
|
11246
11284
|
}
|
|
11247
11285
|
}, [mediaRef, playbackRate, preservePitch]);
|
|
11248
|
-
|
|
11286
|
+
useEffect13(() => {
|
|
11249
11287
|
const tagName = mediaType === "audio" ? "<Html5Audio>" : "<Html5Video>";
|
|
11250
11288
|
if (!mediaRef.current) {
|
|
11251
11289
|
throw new Error(`No ${mediaType} ref found`);
|
|
@@ -11388,7 +11426,7 @@ var useMediaPlayback = ({
|
|
|
11388
11426
|
};
|
|
11389
11427
|
|
|
11390
11428
|
// src/use-media-tag.ts
|
|
11391
|
-
import { useContext as useContext39, useEffect as
|
|
11429
|
+
import { useContext as useContext39, useEffect as useEffect14, useRef as useRef20 } from "react";
|
|
11392
11430
|
var useMediaTag = ({
|
|
11393
11431
|
mediaRef,
|
|
11394
11432
|
id,
|
|
@@ -11404,7 +11442,7 @@ var useMediaTag = ({
|
|
|
11404
11442
|
const logLevel = useLogLevel();
|
|
11405
11443
|
const mountTime = useMountTime();
|
|
11406
11444
|
const env = useRemotionEnvironment();
|
|
11407
|
-
|
|
11445
|
+
useEffect14(() => {
|
|
11408
11446
|
const tag = {
|
|
11409
11447
|
id,
|
|
11410
11448
|
play: (reason) => {
|
|
@@ -11462,12 +11500,12 @@ var useMediaTag = ({
|
|
|
11462
11500
|
};
|
|
11463
11501
|
|
|
11464
11502
|
// src/volume-position-state.ts
|
|
11465
|
-
import { createContext as
|
|
11466
|
-
var MediaVolumeContext =
|
|
11503
|
+
import { createContext as createContext35, useContext as useContext40, useMemo as useMemo33 } from "react";
|
|
11504
|
+
var MediaVolumeContext = createContext35({
|
|
11467
11505
|
playerMuted: false,
|
|
11468
11506
|
mediaVolume: 1
|
|
11469
11507
|
});
|
|
11470
|
-
var SetMediaVolumeContext =
|
|
11508
|
+
var SetMediaVolumeContext = createContext35({
|
|
11471
11509
|
setPlayerMuted: () => {
|
|
11472
11510
|
throw new Error("default");
|
|
11473
11511
|
},
|
|
@@ -11478,14 +11516,14 @@ var SetMediaVolumeContext = createContext34({
|
|
|
11478
11516
|
var useMediaVolumeState = () => {
|
|
11479
11517
|
const { mediaVolume } = useContext40(MediaVolumeContext);
|
|
11480
11518
|
const { setMediaVolume } = useContext40(SetMediaVolumeContext);
|
|
11481
|
-
return
|
|
11519
|
+
return useMemo33(() => {
|
|
11482
11520
|
return [mediaVolume, setMediaVolume];
|
|
11483
11521
|
}, [mediaVolume, setMediaVolume]);
|
|
11484
11522
|
};
|
|
11485
11523
|
var usePlayerMutedState = () => {
|
|
11486
11524
|
const { playerMuted } = useContext40(MediaVolumeContext);
|
|
11487
11525
|
const { setPlayerMuted } = useContext40(SetMediaVolumeContext);
|
|
11488
|
-
return
|
|
11526
|
+
return useMemo33(() => {
|
|
11489
11527
|
return [playerMuted, setPlayerMuted];
|
|
11490
11528
|
}, [playerMuted, setPlayerMuted]);
|
|
11491
11529
|
};
|
|
@@ -11607,7 +11645,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
|
|
|
11607
11645
|
requestsVideoFrame: false,
|
|
11608
11646
|
isClientSideRendering: false
|
|
11609
11647
|
});
|
|
11610
|
-
const propsToPass =
|
|
11648
|
+
const propsToPass = useMemo34(() => {
|
|
11611
11649
|
return {
|
|
11612
11650
|
muted: isMutedForPlayback,
|
|
11613
11651
|
src: preloadedSrc,
|
|
@@ -11622,7 +11660,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
|
|
|
11622
11660
|
preloadedSrc,
|
|
11623
11661
|
crossOriginValue
|
|
11624
11662
|
]);
|
|
11625
|
-
const id =
|
|
11663
|
+
const id = useMemo34(() => `audio-${random(src ?? "")}-${sequenceContext?.relativeFrom}-${sequenceContext?.cumulatedFrom}-${sequenceContext?.durationInFrames}-muted:${props.muted}-loop:${props.loop}`, [
|
|
11626
11664
|
src,
|
|
11627
11665
|
sequenceContext?.relativeFrom,
|
|
11628
11666
|
sequenceContext?.cumulatedFrom,
|
|
@@ -11681,7 +11719,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
|
|
|
11681
11719
|
}, [audioRef]);
|
|
11682
11720
|
const currentOnDurationCallback = useRef21(onDuration);
|
|
11683
11721
|
currentOnDurationCallback.current = onDuration;
|
|
11684
|
-
|
|
11722
|
+
useEffect15(() => {
|
|
11685
11723
|
const { current } = audioRef;
|
|
11686
11724
|
if (!current) {
|
|
11687
11725
|
return;
|
|
@@ -11753,7 +11791,7 @@ var AudioForPreviewRefForwardingFunction = (props, ref) => {
|
|
|
11753
11791
|
documentationLink: "https://www.remotion.dev/docs/html5-audio",
|
|
11754
11792
|
muted: isMutedForTimeline
|
|
11755
11793
|
});
|
|
11756
|
-
const metadata =
|
|
11794
|
+
const metadata = useMemo34(() => isStudio || registration !== null ? {
|
|
11757
11795
|
type: "sequence",
|
|
11758
11796
|
id: timelineId,
|
|
11759
11797
|
value: registration,
|
|
@@ -11779,17 +11817,17 @@ var AudioForPreview = forwardRef5(AudioForPreviewRefForwardingFunction);
|
|
|
11779
11817
|
import {
|
|
11780
11818
|
forwardRef as forwardRef6,
|
|
11781
11819
|
useContext as useContext43,
|
|
11782
|
-
useEffect as
|
|
11820
|
+
useEffect as useEffect16,
|
|
11783
11821
|
useImperativeHandle as useImperativeHandle5,
|
|
11784
11822
|
useLayoutEffect as useLayoutEffect15,
|
|
11785
|
-
useMemo as
|
|
11823
|
+
useMemo as useMemo36,
|
|
11786
11824
|
useRef as useRef22
|
|
11787
11825
|
} from "react";
|
|
11788
11826
|
|
|
11789
11827
|
// src/use-media-enabled.tsx
|
|
11790
|
-
import { createContext as
|
|
11828
|
+
import { createContext as createContext36, useContext as useContext42, useMemo as useMemo35 } from "react";
|
|
11791
11829
|
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
11792
|
-
var MediaEnabledContext =
|
|
11830
|
+
var MediaEnabledContext = createContext36(null);
|
|
11793
11831
|
var useVideoEnabled = () => {
|
|
11794
11832
|
const context = useContext42(MediaEnabledContext);
|
|
11795
11833
|
if (!context) {
|
|
@@ -11815,7 +11853,7 @@ var MediaEnabledProvider = ({
|
|
|
11815
11853
|
videoEnabled,
|
|
11816
11854
|
audioEnabled
|
|
11817
11855
|
}) => {
|
|
11818
|
-
const value =
|
|
11856
|
+
const value = useMemo35(() => ({ videoEnabled, audioEnabled }), [videoEnabled, audioEnabled]);
|
|
11819
11857
|
return /* @__PURE__ */ jsx28(MediaEnabledContext.Provider, {
|
|
11820
11858
|
value,
|
|
11821
11859
|
children
|
|
@@ -11853,7 +11891,7 @@ var AudioForRenderingRefForwardingFunction = (props, ref) => {
|
|
|
11853
11891
|
const audioStartFrame = useContext43(Html5MediaTrimContext);
|
|
11854
11892
|
const { registerRenderAsset, unregisterRenderAsset } = useContext43(RenderAssetManager);
|
|
11855
11893
|
const { delayRender, continueRender } = useDelayRender();
|
|
11856
|
-
const id =
|
|
11894
|
+
const id = useMemo36(() => `audio-${random(props.src ?? "")}-${sequenceContext?.relativeFrom}-${sequenceContext?.cumulatedFrom}-${sequenceContext?.durationInFrames}`, [
|
|
11857
11895
|
props.src,
|
|
11858
11896
|
sequenceContext?.relativeFrom,
|
|
11859
11897
|
sequenceContext?.cumulatedFrom,
|
|
@@ -11874,7 +11912,7 @@ var AudioForRenderingRefForwardingFunction = (props, ref) => {
|
|
|
11874
11912
|
useImperativeHandle5(ref, () => {
|
|
11875
11913
|
return audioRef.current;
|
|
11876
11914
|
}, []);
|
|
11877
|
-
|
|
11915
|
+
useEffect16(() => {
|
|
11878
11916
|
if (!props.src) {
|
|
11879
11917
|
throw new Error("No src passed");
|
|
11880
11918
|
}
|
|
@@ -12107,9 +12145,9 @@ var Audio = Html5Audio;
|
|
|
12107
12145
|
import {
|
|
12108
12146
|
forwardRef as forwardRef8,
|
|
12109
12147
|
useCallback as useCallback18,
|
|
12110
|
-
useEffect as
|
|
12148
|
+
useEffect as useEffect17,
|
|
12111
12149
|
useImperativeHandle as useImperativeHandle6,
|
|
12112
|
-
useMemo as
|
|
12150
|
+
useMemo as useMemo37,
|
|
12113
12151
|
useRef as useRef23,
|
|
12114
12152
|
useState as useState18
|
|
12115
12153
|
} from "react";
|
|
@@ -12185,7 +12223,7 @@ var SolidInner = ({
|
|
|
12185
12223
|
overrideId: overrideId ?? null,
|
|
12186
12224
|
videoConfigValues
|
|
12187
12225
|
});
|
|
12188
|
-
const sourceCanvas =
|
|
12226
|
+
const sourceCanvas = useMemo37(() => {
|
|
12189
12227
|
if (typeof document === "undefined") {
|
|
12190
12228
|
return null;
|
|
12191
12229
|
}
|
|
@@ -12203,7 +12241,7 @@ var SolidInner = ({
|
|
|
12203
12241
|
reference.current = canvas;
|
|
12204
12242
|
}
|
|
12205
12243
|
}, [reference]);
|
|
12206
|
-
|
|
12244
|
+
useEffect17(() => {
|
|
12207
12245
|
if (!outputCanvas || !sourceCanvas) {
|
|
12208
12246
|
return;
|
|
12209
12247
|
}
|
|
@@ -12253,7 +12291,7 @@ var SolidInner = ({
|
|
|
12253
12291
|
cancelRender,
|
|
12254
12292
|
memoizedEffects
|
|
12255
12293
|
]);
|
|
12256
|
-
const canvasStyle =
|
|
12294
|
+
const canvasStyle = useMemo37(() => {
|
|
12257
12295
|
return {
|
|
12258
12296
|
width,
|
|
12259
12297
|
height,
|
|
@@ -12384,12 +12422,12 @@ Solid.displayName = "Solid";
|
|
|
12384
12422
|
addSequenceStackTraces(Solid);
|
|
12385
12423
|
// src/HtmlInCanvas.tsx
|
|
12386
12424
|
import {
|
|
12387
|
-
createContext as
|
|
12425
|
+
createContext as createContext37,
|
|
12388
12426
|
forwardRef as forwardRef9,
|
|
12389
12427
|
useCallback as useCallback19,
|
|
12390
12428
|
useContext as useContext45,
|
|
12391
12429
|
useLayoutEffect as useLayoutEffect16,
|
|
12392
|
-
useMemo as
|
|
12430
|
+
useMemo as useMemo38,
|
|
12393
12431
|
useRef as useRef24
|
|
12394
12432
|
} from "react";
|
|
12395
12433
|
import { jsx as jsx32, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
@@ -12499,7 +12537,7 @@ var defaultOnPaint = ({
|
|
|
12499
12537
|
ctx.reset();
|
|
12500
12538
|
ctx.drawElementImage(elementImage, 0, 0);
|
|
12501
12539
|
};
|
|
12502
|
-
var HtmlInCanvasAncestorContext =
|
|
12540
|
+
var HtmlInCanvasAncestorContext = createContext37(null);
|
|
12503
12541
|
var HtmlInCanvasContent = forwardRef9(({
|
|
12504
12542
|
width,
|
|
12505
12543
|
height,
|
|
@@ -12526,7 +12564,7 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
12526
12564
|
const { isClientSideRendering, isRendering } = useRemotionEnvironment();
|
|
12527
12565
|
const canRetryMissingPaintRecord = !isRendering || isClientSideRendering;
|
|
12528
12566
|
const usesDirectLayoutCanvas = onPaint === undefined && onInit === undefined;
|
|
12529
|
-
const paintTargetMode = usesDirectLayoutCanvas ? "direct" : isRendering ? "copied" : "transferred";
|
|
12567
|
+
const paintTargetMode = ancestorPaintState ? "copied" : usesDirectLayoutCanvas ? "direct" : isRendering ? "copied" : "transferred";
|
|
12530
12568
|
if (!isHtmlInCanvasSupported()) {
|
|
12531
12569
|
cancelRender(new Error(getHtmlInCanvasUnsupportedMessage()));
|
|
12532
12570
|
}
|
|
@@ -12535,7 +12573,7 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
12535
12573
|
const paintTargetRef = useRef24(null);
|
|
12536
12574
|
const divRef = useRef24(null);
|
|
12537
12575
|
const canvasSizeKey = `${width}x${height}@${resolvedPixelDensity}-${paintTargetMode}`;
|
|
12538
|
-
const paintState =
|
|
12576
|
+
const paintState = useMemo38(() => {
|
|
12539
12577
|
const state = {
|
|
12540
12578
|
pendingChildren: 0,
|
|
12541
12579
|
generation: 0,
|
|
@@ -12593,6 +12631,7 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
12593
12631
|
const initializedRef = useRef24(false);
|
|
12594
12632
|
const onInitCleanupRef = useRef24(null);
|
|
12595
12633
|
const unmountedRef = useRef24(false);
|
|
12634
|
+
const effectScratchCanvasesRef = useRef24(null);
|
|
12596
12635
|
const paintingTargets = useRef24(new WeakMap);
|
|
12597
12636
|
const onPaintCb = useCallback19(async () => {
|
|
12598
12637
|
if (isRendering && paintState.pendingChildren > 0) {
|
|
@@ -12688,6 +12727,7 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
12688
12727
|
}
|
|
12689
12728
|
throw error;
|
|
12690
12729
|
}
|
|
12730
|
+
let effectSourceCanvas = null;
|
|
12691
12731
|
try {
|
|
12692
12732
|
const currentOnPaint = onPaintRef.current;
|
|
12693
12733
|
if (currentOnPaint) {
|
|
@@ -12703,6 +12743,41 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
12703
12743
|
if (paintResult) {
|
|
12704
12744
|
await paintResult;
|
|
12705
12745
|
}
|
|
12746
|
+
} else if (paintTarget instanceof HTMLCanvasElement && effectsRef.current.some((effect) => !effect.params.disabled)) {
|
|
12747
|
+
effectScratchCanvasesRef.current ??= {
|
|
12748
|
+
source: document.createElement("canvas"),
|
|
12749
|
+
previousOutput: document.createElement("canvas")
|
|
12750
|
+
};
|
|
12751
|
+
const { source: effectSource, previousOutput } = effectScratchCanvasesRef.current;
|
|
12752
|
+
resizePaintTarget({
|
|
12753
|
+
target: effectSource,
|
|
12754
|
+
width: canvasWidth,
|
|
12755
|
+
height: canvasHeight
|
|
12756
|
+
});
|
|
12757
|
+
resizePaintTarget({
|
|
12758
|
+
target: previousOutput,
|
|
12759
|
+
width: canvasWidth,
|
|
12760
|
+
height: canvasHeight
|
|
12761
|
+
});
|
|
12762
|
+
const effectSourceCtx = effectSource.getContext("2d");
|
|
12763
|
+
const previousOutputCtx = previousOutput.getContext("2d");
|
|
12764
|
+
const paintTargetCtx = paintTarget.getContext("2d");
|
|
12765
|
+
if (!effectSourceCtx || !previousOutputCtx || !paintTargetCtx) {
|
|
12766
|
+
throw new Error("Failed to acquire 2D context for <HtmlInCanvas> canvas");
|
|
12767
|
+
}
|
|
12768
|
+
previousOutputCtx.reset();
|
|
12769
|
+
previousOutputCtx.drawImage(paintTarget, 0, 0);
|
|
12770
|
+
defaultOnPaint({
|
|
12771
|
+
canvas: paintTarget,
|
|
12772
|
+
element,
|
|
12773
|
+
elementImage: elImage,
|
|
12774
|
+
pixelDensity: resolvedPixelDensity
|
|
12775
|
+
});
|
|
12776
|
+
effectSourceCtx.reset();
|
|
12777
|
+
effectSourceCtx.drawImage(paintTarget, 0, 0);
|
|
12778
|
+
paintTargetCtx.reset();
|
|
12779
|
+
paintTargetCtx.drawImage(previousOutput, 0, 0);
|
|
12780
|
+
effectSourceCanvas = effectSource;
|
|
12706
12781
|
} else {
|
|
12707
12782
|
defaultOnPaint({
|
|
12708
12783
|
canvas: paintTarget,
|
|
@@ -12715,7 +12790,7 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
12715
12790
|
if (state) {
|
|
12716
12791
|
await runEffectChain({
|
|
12717
12792
|
state,
|
|
12718
|
-
source: paintTarget,
|
|
12793
|
+
source: effectSourceCanvas ?? paintTarget,
|
|
12719
12794
|
effects: effectsRef.current,
|
|
12720
12795
|
output: paintTarget,
|
|
12721
12796
|
width: canvasWidth,
|
|
@@ -12835,13 +12910,13 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
12835
12910
|
isRendering,
|
|
12836
12911
|
ancestorPaintState
|
|
12837
12912
|
]);
|
|
12838
|
-
const innerStyle =
|
|
12913
|
+
const innerStyle = useMemo38(() => {
|
|
12839
12914
|
return {
|
|
12840
12915
|
width,
|
|
12841
12916
|
height
|
|
12842
12917
|
};
|
|
12843
12918
|
}, [width, height]);
|
|
12844
|
-
const canvasStyle =
|
|
12919
|
+
const canvasStyle = useMemo38(() => {
|
|
12845
12920
|
return {
|
|
12846
12921
|
width,
|
|
12847
12922
|
height,
|
|
@@ -12851,7 +12926,7 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
12851
12926
|
return /* @__PURE__ */ jsxs3(HtmlInCanvasAncestorContext.Provider, {
|
|
12852
12927
|
value: paintState,
|
|
12853
12928
|
children: [
|
|
12854
|
-
/* @__PURE__ */
|
|
12929
|
+
/* @__PURE__ */ jsx32("canvas", {
|
|
12855
12930
|
ref: paintTargetMode === "copied" ? canvas2dRef : setVisibleCanvasRef,
|
|
12856
12931
|
width: canvasWidth,
|
|
12857
12932
|
height: canvasHeight,
|
|
@@ -12861,14 +12936,17 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
12861
12936
|
visibility: "hidden",
|
|
12862
12937
|
pointerEvents: "none"
|
|
12863
12938
|
} : canvasStyle,
|
|
12864
|
-
children:
|
|
12865
|
-
|
|
12866
|
-
|
|
12867
|
-
|
|
12868
|
-
|
|
12869
|
-
|
|
12870
|
-
|
|
12871
|
-
|
|
12939
|
+
children: /* @__PURE__ */ jsxs3(DefaultPremountContext.Provider, {
|
|
12940
|
+
value: 0,
|
|
12941
|
+
children: [
|
|
12942
|
+
/* @__PURE__ */ jsx32("div", {
|
|
12943
|
+
ref: divRef,
|
|
12944
|
+
style: paintTargetMode === "copied" ? { ...innerStyle, visibility: "visible" } : innerStyle,
|
|
12945
|
+
children
|
|
12946
|
+
}),
|
|
12947
|
+
canvasSiblings
|
|
12948
|
+
]
|
|
12949
|
+
})
|
|
12872
12950
|
}, canvasSizeKey),
|
|
12873
12951
|
paintTargetMode === "copied" ? /* @__PURE__ */ jsx32("canvas", {
|
|
12874
12952
|
ref: setVisibleCanvasRef,
|
|
@@ -13028,7 +13106,7 @@ import {
|
|
|
13028
13106
|
useContext as useContext46,
|
|
13029
13107
|
useImperativeHandle as useImperativeHandle7,
|
|
13030
13108
|
useLayoutEffect as useLayoutEffect17,
|
|
13031
|
-
useMemo as
|
|
13109
|
+
useMemo as useMemo39,
|
|
13032
13110
|
useRef as useRef25,
|
|
13033
13111
|
useState as useState19
|
|
13034
13112
|
} from "react";
|
|
@@ -13190,7 +13268,7 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13190
13268
|
continueRender(pending.handle);
|
|
13191
13269
|
pendingLoadDelayRef.current = null;
|
|
13192
13270
|
}, [continueRender]);
|
|
13193
|
-
const sourceCanvas =
|
|
13271
|
+
const sourceCanvas = useMemo39(() => {
|
|
13194
13272
|
if (typeof document === "undefined") {
|
|
13195
13273
|
return null;
|
|
13196
13274
|
}
|
|
@@ -13417,7 +13495,7 @@ var CanvasImageInner = forwardRef10(({
|
|
|
13417
13495
|
if (!src) {
|
|
13418
13496
|
throw new Error('No "src" prop was passed to <CanvasImage>.');
|
|
13419
13497
|
}
|
|
13420
|
-
const isMedia =
|
|
13498
|
+
const isMedia = useMemo39(() => ({
|
|
13421
13499
|
type: "image",
|
|
13422
13500
|
src
|
|
13423
13501
|
}), [src]);
|
|
@@ -13613,7 +13691,7 @@ import {
|
|
|
13613
13691
|
useCallback as useCallback22,
|
|
13614
13692
|
useContext as useContext47,
|
|
13615
13693
|
useLayoutEffect as useLayoutEffect19,
|
|
13616
|
-
useMemo as
|
|
13694
|
+
useMemo as useMemo40,
|
|
13617
13695
|
useRef as useRef27,
|
|
13618
13696
|
useState as useState20
|
|
13619
13697
|
} from "react";
|
|
@@ -13804,7 +13882,7 @@ var NativeImgInner = ({
|
|
|
13804
13882
|
if (!src) {
|
|
13805
13883
|
throw new Error('No "src" prop was passed to <Img>.');
|
|
13806
13884
|
}
|
|
13807
|
-
const isMedia =
|
|
13885
|
+
const isMedia = useMemo40(() => ({
|
|
13808
13886
|
type: "image",
|
|
13809
13887
|
src
|
|
13810
13888
|
}), [src]);
|
|
@@ -14439,7 +14517,7 @@ var compositionsRef = React43.createRef();
|
|
|
14439
14517
|
import {
|
|
14440
14518
|
useCallback as useCallback25,
|
|
14441
14519
|
useImperativeHandle as useImperativeHandle9,
|
|
14442
|
-
useMemo as
|
|
14520
|
+
useMemo as useMemo42,
|
|
14443
14521
|
useRef as useRef29,
|
|
14444
14522
|
useState as useState22
|
|
14445
14523
|
} from "react";
|
|
@@ -14448,15 +14526,15 @@ import {
|
|
|
14448
14526
|
import {
|
|
14449
14527
|
forwardRef as forwardRef13,
|
|
14450
14528
|
useCallback as useCallback24,
|
|
14451
|
-
useEffect as
|
|
14529
|
+
useEffect as useEffect18,
|
|
14452
14530
|
useImperativeHandle as useImperativeHandle8,
|
|
14453
14531
|
useLayoutEffect as useLayoutEffect20,
|
|
14454
|
-
useMemo as
|
|
14532
|
+
useMemo as useMemo41,
|
|
14455
14533
|
useRef as useRef28,
|
|
14456
14534
|
useState as useState21
|
|
14457
14535
|
} from "react";
|
|
14458
14536
|
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
14459
|
-
var useIsomorphicLayoutEffect6 = typeof window === "undefined" ?
|
|
14537
|
+
var useIsomorphicLayoutEffect6 = typeof window === "undefined" ? useEffect18 : useLayoutEffect20;
|
|
14460
14538
|
var CompositionRegistryFallbackProvider = withCommittedMetadata(CompositionRegistryFallbackContext.Provider);
|
|
14461
14539
|
var CompositionRegistryProvider = forwardRef13(({ children, onSnapshot }, flushSnapshotRef) => {
|
|
14462
14540
|
const { isStudio } = useRemotionEnvironment();
|
|
@@ -14498,7 +14576,7 @@ var CompositionRegistryProvider = forwardRef13(({ children, onSnapshot }, flushS
|
|
|
14498
14576
|
observedCommitRef.current = true;
|
|
14499
14577
|
queueSnapshot(snapshot);
|
|
14500
14578
|
}, [queueSnapshot]);
|
|
14501
|
-
const fallbackRegistry =
|
|
14579
|
+
const fallbackRegistry = useMemo41(() => {
|
|
14502
14580
|
const entries = new Map;
|
|
14503
14581
|
const getSnapshot = () => {
|
|
14504
14582
|
const compositions = [];
|
|
@@ -14569,7 +14647,7 @@ var CompositionRegistryProvider = forwardRef13(({ children, onSnapshot }, flushS
|
|
|
14569
14647
|
}
|
|
14570
14648
|
};
|
|
14571
14649
|
}, [isStudio, useCommitObserver]);
|
|
14572
|
-
const metadata =
|
|
14650
|
+
const metadata = useMemo41(() => isStudio ? {
|
|
14573
14651
|
type: "composition-manager",
|
|
14574
14652
|
id: managerId,
|
|
14575
14653
|
onCommit: useCommitObserver ? onObservedSnapshot : null
|
|
@@ -14656,12 +14734,12 @@ var CompositionManagerProvider = ({
|
|
|
14656
14734
|
}
|
|
14657
14735
|
};
|
|
14658
14736
|
}, [registry]);
|
|
14659
|
-
const compositionManagerSetters =
|
|
14737
|
+
const compositionManagerSetters = useMemo42(() => ({
|
|
14660
14738
|
setCanvasContent,
|
|
14661
14739
|
setCurrentAssetMetadata,
|
|
14662
14740
|
onlyRenderComposition
|
|
14663
14741
|
}), [onlyRenderComposition]);
|
|
14664
|
-
const compositionManagerContextValue =
|
|
14742
|
+
const compositionManagerContextValue = useMemo42(() => {
|
|
14665
14743
|
return {
|
|
14666
14744
|
compositions,
|
|
14667
14745
|
folders,
|
|
@@ -14676,6 +14754,8 @@ var CompositionManagerProvider = ({
|
|
|
14676
14754
|
currentAssetMetadata,
|
|
14677
14755
|
canvasContent
|
|
14678
14756
|
]);
|
|
14757
|
+
const compositionManagerRef = useRef29(compositionManagerContextValue);
|
|
14758
|
+
compositionManagerRef.current = compositionManagerContextValue;
|
|
14679
14759
|
if (registrationError !== null) {
|
|
14680
14760
|
throw registrationError;
|
|
14681
14761
|
}
|
|
@@ -14684,9 +14764,12 @@ var CompositionManagerProvider = ({
|
|
|
14684
14764
|
onSnapshot: onCommitRegistrations,
|
|
14685
14765
|
children: /* @__PURE__ */ jsx38(CompositionManager.Provider, {
|
|
14686
14766
|
value: compositionManagerContextValue,
|
|
14687
|
-
children: /* @__PURE__ */ jsx38(
|
|
14688
|
-
value:
|
|
14689
|
-
children
|
|
14767
|
+
children: /* @__PURE__ */ jsx38(CompositionManagerRefContext.Provider, {
|
|
14768
|
+
value: compositionManagerRef,
|
|
14769
|
+
children: /* @__PURE__ */ jsx38(CompositionSetters.Provider, {
|
|
14770
|
+
value: compositionManagerSetters,
|
|
14771
|
+
children
|
|
14772
|
+
})
|
|
14690
14773
|
})
|
|
14691
14774
|
})
|
|
14692
14775
|
});
|
|
@@ -14935,7 +15018,7 @@ var waitForRoot = (fn) => {
|
|
|
14935
15018
|
};
|
|
14936
15019
|
|
|
14937
15020
|
// src/RemotionRoot.tsx
|
|
14938
|
-
import { useMemo as
|
|
15021
|
+
import { useMemo as useMemo43 } from "react";
|
|
14939
15022
|
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
14940
15023
|
var RemotionRootContexts = ({
|
|
14941
15024
|
children,
|
|
@@ -14948,7 +15031,7 @@ var RemotionRootContexts = ({
|
|
|
14948
15031
|
frameState,
|
|
14949
15032
|
_experimentalKeepAudioContextAlive
|
|
14950
15033
|
}) => {
|
|
14951
|
-
const logging =
|
|
15034
|
+
const logging = useMemo43(() => {
|
|
14952
15035
|
return { logLevel, mountTime: Date.now() };
|
|
14953
15036
|
}, [logLevel]);
|
|
14954
15037
|
return /* @__PURE__ */ jsx39(LogLevelContext.Provider, {
|
|
@@ -15249,7 +15332,7 @@ var setupEnvVariables = () => {
|
|
|
15249
15332
|
};
|
|
15250
15333
|
|
|
15251
15334
|
// src/Track.tsx
|
|
15252
|
-
import { useMemo as
|
|
15335
|
+
import { useMemo as useMemo44, useState as useState23 } from "react";
|
|
15253
15336
|
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
15254
15337
|
var {
|
|
15255
15338
|
freeze: _freeze,
|
|
@@ -15267,7 +15350,7 @@ var TrackWithoutSchema = ({
|
|
|
15267
15350
|
...props
|
|
15268
15351
|
}) => {
|
|
15269
15352
|
const [id] = useState23(() => String(Math.random()));
|
|
15270
|
-
const value =
|
|
15353
|
+
const value = useMemo44(() => ({ id, name }), [id, name]);
|
|
15271
15354
|
return /* @__PURE__ */ jsx40(TimelineTrackContext.Provider, {
|
|
15272
15355
|
value,
|
|
15273
15356
|
children: /* @__PURE__ */ jsx40(SequenceWithoutSchema, {
|
|
@@ -15326,9 +15409,9 @@ import { useCallback as useCallback28 } from "react";
|
|
|
15326
15409
|
import {
|
|
15327
15410
|
useCallback as useCallback26,
|
|
15328
15411
|
useContext as useContext50,
|
|
15329
|
-
useEffect as
|
|
15412
|
+
useEffect as useEffect19,
|
|
15330
15413
|
useLayoutEffect as useLayoutEffect21,
|
|
15331
|
-
useMemo as
|
|
15414
|
+
useMemo as useMemo45,
|
|
15332
15415
|
useState as useState24
|
|
15333
15416
|
} from "react";
|
|
15334
15417
|
|
|
@@ -15375,7 +15458,7 @@ var OffthreadVideoForRendering = ({
|
|
|
15375
15458
|
if (!src) {
|
|
15376
15459
|
throw new TypeError("No `src` was passed to <OffthreadVideo>.");
|
|
15377
15460
|
}
|
|
15378
|
-
const id =
|
|
15461
|
+
const id = useMemo45(() => `offthreadvideo-${random(src)}-${sequenceContext?.cumulatedFrom}-${sequenceContext?.relativeFrom}-${sequenceContext?.durationInFrames}`, [
|
|
15379
15462
|
src,
|
|
15380
15463
|
sequenceContext?.cumulatedFrom,
|
|
15381
15464
|
sequenceContext?.relativeFrom,
|
|
@@ -15396,7 +15479,7 @@ var OffthreadVideoForRendering = ({
|
|
|
15396
15479
|
if (!videoConfig) {
|
|
15397
15480
|
throw new Error("No video config found");
|
|
15398
15481
|
}
|
|
15399
|
-
|
|
15482
|
+
useEffect19(() => {
|
|
15400
15483
|
if (!src) {
|
|
15401
15484
|
throw new Error("No src passed");
|
|
15402
15485
|
}
|
|
@@ -15431,14 +15514,14 @@ var OffthreadVideoForRendering = ({
|
|
|
15431
15514
|
sequencePlaybackRate,
|
|
15432
15515
|
audioStreamIndex
|
|
15433
15516
|
]);
|
|
15434
|
-
const currentTime =
|
|
15517
|
+
const currentTime = useMemo45(() => {
|
|
15435
15518
|
return getExpectedMediaFrameUncorrected({
|
|
15436
15519
|
frame,
|
|
15437
15520
|
playbackRate: playbackRate || 1,
|
|
15438
15521
|
startFrom: audioStartFrame
|
|
15439
15522
|
}) / videoConfig.fps;
|
|
15440
15523
|
}, [frame, audioStartFrame, playbackRate, videoConfig.fps]);
|
|
15441
|
-
const actualSrc =
|
|
15524
|
+
const actualSrc = useMemo45(() => {
|
|
15442
15525
|
return getOffthreadVideoSource({
|
|
15443
15526
|
src,
|
|
15444
15527
|
currentTime,
|
|
@@ -15526,7 +15609,7 @@ var OffthreadVideoForRendering = ({
|
|
|
15526
15609
|
cancelRender("Failed to load image with src " + imageSrc);
|
|
15527
15610
|
}
|
|
15528
15611
|
}, [imageSrc, onError]);
|
|
15529
|
-
const className =
|
|
15612
|
+
const className = useMemo45(() => {
|
|
15530
15613
|
return [OBJECTFIT_CONTAIN_CLASS_NAME, props.className].filter(truthy).join(" ");
|
|
15531
15614
|
}, [props.className]);
|
|
15532
15615
|
const onImageFrame = useCallback26((img) => {
|
|
@@ -15554,20 +15637,20 @@ import React51, {
|
|
|
15554
15637
|
forwardRef as forwardRef14,
|
|
15555
15638
|
useCallback as useCallback27,
|
|
15556
15639
|
useContext as useContext51,
|
|
15557
|
-
useEffect as
|
|
15640
|
+
useEffect as useEffect21,
|
|
15558
15641
|
useImperativeHandle as useImperativeHandle10,
|
|
15559
|
-
useMemo as
|
|
15642
|
+
useMemo as useMemo46,
|
|
15560
15643
|
useRef as useRef30,
|
|
15561
15644
|
useState as useState25
|
|
15562
15645
|
} from "react";
|
|
15563
15646
|
|
|
15564
15647
|
// src/video/emit-video-frame.ts
|
|
15565
|
-
import { useEffect as
|
|
15648
|
+
import { useEffect as useEffect20 } from "react";
|
|
15566
15649
|
var useEmitVideoFrame = ({
|
|
15567
15650
|
ref,
|
|
15568
15651
|
onVideoFrame
|
|
15569
15652
|
}) => {
|
|
15570
|
-
|
|
15653
|
+
useEffect20(() => {
|
|
15571
15654
|
const { current } = ref;
|
|
15572
15655
|
if (!current) {
|
|
15573
15656
|
return;
|
|
@@ -15614,7 +15697,7 @@ var VideoForDevelopmentRefForwardingFunction = (props, ref) => {
|
|
|
15614
15697
|
throw new Error("SharedAudioContext not found");
|
|
15615
15698
|
}
|
|
15616
15699
|
const videoRef = useRef30(null);
|
|
15617
|
-
const sharedSource =
|
|
15700
|
+
const sharedSource = useMemo46(() => {
|
|
15618
15701
|
if (!context.audioContext) {
|
|
15619
15702
|
return null;
|
|
15620
15703
|
}
|
|
@@ -15721,7 +15804,7 @@ var VideoForDevelopmentRefForwardingFunction = (props, ref) => {
|
|
|
15721
15804
|
tag: "video",
|
|
15722
15805
|
mountTime
|
|
15723
15806
|
}));
|
|
15724
|
-
|
|
15807
|
+
useEffect21(() => {
|
|
15725
15808
|
const { current } = videoRef;
|
|
15726
15809
|
if (!current) {
|
|
15727
15810
|
return;
|
|
@@ -15764,7 +15847,7 @@ var VideoForDevelopmentRefForwardingFunction = (props, ref) => {
|
|
|
15764
15847
|
const currentOnDurationCallback = useRef30(onDuration);
|
|
15765
15848
|
currentOnDurationCallback.current = onDuration;
|
|
15766
15849
|
useEmitVideoFrame({ ref: videoRef, onVideoFrame });
|
|
15767
|
-
|
|
15850
|
+
useEffect21(() => {
|
|
15768
15851
|
const { current } = videoRef;
|
|
15769
15852
|
if (!current) {
|
|
15770
15853
|
return;
|
|
@@ -15781,7 +15864,7 @@ var VideoForDevelopmentRefForwardingFunction = (props, ref) => {
|
|
|
15781
15864
|
current.removeEventListener("loadedmetadata", onLoadedMetadata);
|
|
15782
15865
|
};
|
|
15783
15866
|
}, [src]);
|
|
15784
|
-
|
|
15867
|
+
useEffect21(() => {
|
|
15785
15868
|
const { current } = videoRef;
|
|
15786
15869
|
if (!current) {
|
|
15787
15870
|
return;
|
|
@@ -15792,7 +15875,7 @@ var VideoForDevelopmentRefForwardingFunction = (props, ref) => {
|
|
|
15792
15875
|
current.preload = "auto";
|
|
15793
15876
|
}
|
|
15794
15877
|
}, []);
|
|
15795
|
-
const actualStyle =
|
|
15878
|
+
const actualStyle = useMemo46(() => {
|
|
15796
15879
|
return {
|
|
15797
15880
|
...style
|
|
15798
15881
|
};
|
|
@@ -15861,7 +15944,7 @@ var VideoForPreviewRefForwardingFunction = (props, ref) => {
|
|
|
15861
15944
|
documentationLink: onlyWarnForMediaSeekingError ? "https://www.remotion.dev/docs/offthreadvideo" : "https://www.remotion.dev/docs/html5-video",
|
|
15862
15945
|
muted: isMutedForTimeline
|
|
15863
15946
|
});
|
|
15864
|
-
const metadata =
|
|
15947
|
+
const metadata = useMemo46(() => isStudio || automaticOutlineRef || registration !== null ? {
|
|
15865
15948
|
type: "sequence",
|
|
15866
15949
|
id: timelineId,
|
|
15867
15950
|
value: registration,
|
|
@@ -16100,7 +16183,7 @@ var watchStaticFile = (fileName, callback) => {
|
|
|
16100
16183
|
};
|
|
16101
16184
|
|
|
16102
16185
|
// src/wrap-remotion-context.tsx
|
|
16103
|
-
import React53, { useCallback as useCallback29, useMemo as
|
|
16186
|
+
import React53, { useCallback as useCallback29, useMemo as useMemo47, useRef as useRef31, useState as useState26 } from "react";
|
|
16104
16187
|
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
16105
16188
|
function useRemotionContexts() {
|
|
16106
16189
|
const compositionManagerCtx = React53.useContext(CompositionManager);
|
|
@@ -16124,7 +16207,7 @@ function useRemotionContexts() {
|
|
|
16124
16207
|
const visualModePropStatusesRefContext = React53.useContext(VisualModePropStatusesRefContext);
|
|
16125
16208
|
const bufferManagerContext = React53.useContext(BufferingContextReact);
|
|
16126
16209
|
const logLevelContext = React53.useContext(LogLevelContext);
|
|
16127
|
-
return
|
|
16210
|
+
return useMemo47(() => ({
|
|
16128
16211
|
compositionManagerCtx,
|
|
16129
16212
|
videoContext,
|
|
16130
16213
|
timelineContext,
|
|
@@ -16231,7 +16314,7 @@ var ForwardedSequenceRegistry = ({
|
|
|
16231
16314
|
});
|
|
16232
16315
|
};
|
|
16233
16316
|
}, [scope, scopeId, registry, commitRegistrationEnabled]);
|
|
16234
|
-
const metadata =
|
|
16317
|
+
const metadata = useMemo47(() => ({
|
|
16235
16318
|
type: "sequence-manager",
|
|
16236
16319
|
id: scopeId,
|
|
16237
16320
|
onCommit: commitRegistrationEnabled ? onCommitSequences : null
|
|
@@ -16350,6 +16433,7 @@ var Internals = {
|
|
|
16350
16433
|
resolveTrimProps,
|
|
16351
16434
|
VideoForPreview,
|
|
16352
16435
|
CompositionManager,
|
|
16436
|
+
CompositionManagerRefContext,
|
|
16353
16437
|
CompositionSetters,
|
|
16354
16438
|
VisualModePropStatusesContext,
|
|
16355
16439
|
VisualModePropStatusesRefContext,
|
|
@@ -16532,7 +16616,7 @@ var fontDataByUrl = new Map;
|
|
|
16532
16616
|
// src/series/index.tsx
|
|
16533
16617
|
import React55, {
|
|
16534
16618
|
forwardRef as forwardRef15,
|
|
16535
|
-
useMemo as
|
|
16619
|
+
useMemo as useMemo48
|
|
16536
16620
|
} from "react";
|
|
16537
16621
|
|
|
16538
16622
|
// src/series/flatten-children.tsx
|
|
@@ -16604,7 +16688,7 @@ var validateSeriesSequenceProps = ({
|
|
|
16604
16688
|
};
|
|
16605
16689
|
var SeriesInner = (props) => {
|
|
16606
16690
|
const pendingDeletions = usePendingSequenceDeletions();
|
|
16607
|
-
const childrenValue =
|
|
16691
|
+
const childrenValue = useMemo48(() => {
|
|
16608
16692
|
const flattenedChildren = flattenChildren(props.children).filter((child) => !OptimisticSequenceDeletion.isElementDeleted(child, pendingDeletions));
|
|
16609
16693
|
const renderChildren = (i, startFrame) => {
|
|
16610
16694
|
if (i === flattenedChildren.length) {
|
|
@@ -16814,10 +16898,10 @@ import { forwardRef as forwardRef17, useCallback as useCallback30, useContext as
|
|
|
16814
16898
|
import {
|
|
16815
16899
|
forwardRef as forwardRef16,
|
|
16816
16900
|
useContext as useContext52,
|
|
16817
|
-
useEffect as
|
|
16901
|
+
useEffect as useEffect22,
|
|
16818
16902
|
useImperativeHandle as useImperativeHandle11,
|
|
16819
16903
|
useLayoutEffect as useLayoutEffect22,
|
|
16820
|
-
useMemo as
|
|
16904
|
+
useMemo as useMemo49,
|
|
16821
16905
|
useRef as useRef32
|
|
16822
16906
|
} from "react";
|
|
16823
16907
|
|
|
@@ -16977,7 +17061,7 @@ var VideoForRenderingForwardFunction = ({
|
|
|
16977
17061
|
const mountTime = useMountTime();
|
|
16978
17062
|
const { delayRender, continueRender } = useDelayRender();
|
|
16979
17063
|
const { registerRenderAsset, unregisterRenderAsset } = useContext52(RenderAssetManager);
|
|
16980
|
-
const id =
|
|
17064
|
+
const id = useMemo49(() => `video-${random(props.src ?? "")}-${sequenceContext?.cumulatedFrom}-${sequenceContext?.relativeFrom}-${sequenceContext?.durationInFrames}`, [
|
|
16981
17065
|
props.src,
|
|
16982
17066
|
sequenceContext?.cumulatedFrom,
|
|
16983
17067
|
sequenceContext?.relativeFrom,
|
|
@@ -16998,7 +17082,7 @@ var VideoForRenderingForwardFunction = ({
|
|
|
16998
17082
|
if (!videoConfig) {
|
|
16999
17083
|
throw new Error("No video config found");
|
|
17000
17084
|
}
|
|
17001
|
-
|
|
17085
|
+
useEffect22(() => {
|
|
17002
17086
|
if (!props.src) {
|
|
17003
17087
|
throw new Error("No src passed");
|
|
17004
17088
|
}
|
|
@@ -17037,7 +17121,7 @@ var VideoForRenderingForwardFunction = ({
|
|
|
17037
17121
|
return videoRef.current;
|
|
17038
17122
|
}, []);
|
|
17039
17123
|
useEmitVideoFrame({ ref: videoRef, onVideoFrame });
|
|
17040
|
-
|
|
17124
|
+
useEffect22(() => {
|
|
17041
17125
|
if (!window.remotion_videoEnabled) {
|
|
17042
17126
|
return;
|
|
17043
17127
|
}
|