@remotion/promo-pages 4.0.472 → 4.0.474

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/experts.js CHANGED
@@ -2332,7 +2332,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
2332
2332
  var addSequenceStackTraces = (component) => {
2333
2333
  componentsToAddStacksTo.push(component);
2334
2334
  };
2335
- var VERSION = "4.0.472";
2335
+ var VERSION = "4.0.474";
2336
2336
  var checkMultipleRemotionVersions = () => {
2337
2337
  if (typeof globalThis === "undefined") {
2338
2338
  return;
@@ -2371,7 +2371,8 @@ __export2(exports_timeline_position_state, {
2371
2371
  useAbsoluteTimelinePosition: () => useAbsoluteTimelinePosition,
2372
2372
  persistCurrentFrame: () => persistCurrentFrame,
2373
2373
  getInitialFrameState: () => getInitialFrameState,
2374
- getFrameForComposition: () => getFrameForComposition
2374
+ getFrameForComposition: () => getFrameForComposition,
2375
+ clampFrameToCompositionRange: () => clampFrameToCompositionRange
2375
2376
  });
2376
2377
  function mulberry32(a) {
2377
2378
  let t = a + 1831565813;
@@ -2508,6 +2509,9 @@ var getFrameForComposition = (composition) => {
2508
2509
  }
2509
2510
  return window.remotion_initialFrame ?? 0;
2510
2511
  };
2512
+ var clampFrameToCompositionRange = (frame, durationInFrames) => {
2513
+ return Math.max(0, Math.min(Math.max(0, durationInFrames - 1), frame));
2514
+ };
2511
2515
  var useTimelinePositionFromContext = (state) => {
2512
2516
  const videoConfig = useVideo();
2513
2517
  const env = useRemotionEnvironment();
@@ -2515,7 +2519,7 @@ var useTimelinePositionFromContext = (state) => {
2515
2519
  return typeof window === "undefined" ? 0 : window.remotion_initialFrame ?? 0;
2516
2520
  }
2517
2521
  const unclamped = state.frame[videoConfig.id] ?? (env.isPlayer ? 0 : getFrameForComposition(videoConfig.id));
2518
- return Math.min(videoConfig.durationInFrames - 1, unclamped);
2522
+ return clampFrameToCompositionRange(unclamped, videoConfig.durationInFrames);
2519
2523
  };
2520
2524
  var useTimelineContext = () => {
2521
2525
  const state = useContext10(TimelineContext);
@@ -2703,7 +2707,6 @@ var sequenceVisualStyleSchema = {
2703
2707
  },
2704
2708
  "style.scale": {
2705
2709
  type: "scale",
2706
- min: 0.05,
2707
2710
  max: 100,
2708
2711
  step: 0.01,
2709
2712
  default: 1,
@@ -2784,6 +2787,11 @@ var sequenceSchema = {
2784
2787
  }
2785
2788
  }
2786
2789
  };
2790
+ var sequenceSchemaWithoutFrom = {
2791
+ hidden: hiddenField,
2792
+ durationInFrames: durationInFramesField,
2793
+ layout: sequenceSchema.layout
2794
+ };
2787
2795
  var sequenceSchemaDefaultLayoutNone = {
2788
2796
  ...sequenceSchema,
2789
2797
  layout: {
@@ -2800,11 +2808,17 @@ var SequenceManager = React11.createContext({
2800
2808
  },
2801
2809
  sequences: []
2802
2810
  });
2811
+ var SequenceManagerRefContext = React11.createContext({
2812
+ current: []
2813
+ });
2803
2814
  var makeSequencePropsSubscriptionKey = (key) => {
2804
2815
  return `${key.nodePath.join(".")}.${key.sequenceKeys.join(".")}.${key.effectKeys.map((keys) => keys.join(".")).join(".")}`;
2805
2816
  };
2806
- var VisualModeCodeValuesContext = React11.createContext({
2807
- codeValues: {}
2817
+ var VisualModePropStatusesContext = React11.createContext({
2818
+ propStatuses: {}
2819
+ });
2820
+ var VisualModePropStatusesRefContext = React11.createContext({
2821
+ current: {}
2808
2822
  });
2809
2823
  var VisualModeDragOverridesContext = React11.createContext({
2810
2824
  getDragOverrides: () => {
@@ -2827,18 +2841,22 @@ var VisualModeSettersContext = React11.createContext({
2827
2841
  clearEffectDragOverrides: () => {
2828
2842
  throw new Error("VisualModeSettersContext not initialized");
2829
2843
  },
2830
- setCodeValues: () => {
2844
+ setPropStatuses: () => {
2831
2845
  throw new Error("VisualModeSettersContext not initialized");
2832
2846
  }
2833
2847
  });
2834
2848
  var effectDragOverridesKey = (nodePath, effectIndex) => `${makeSequencePropsSubscriptionKey(nodePath)}.effects.${effectIndex}`;
2835
2849
  var SequenceManagerProvider = ({ children }) => {
2836
2850
  const [sequences, setSequences] = useState3([]);
2851
+ const sequencesRef = useRef4(sequences);
2852
+ sequencesRef.current = sequences;
2837
2853
  const [dragOverrides, setControlOverrides] = useState3({});
2838
2854
  const controlOverridesRef = useRef4(dragOverrides);
2839
2855
  controlOverridesRef.current = dragOverrides;
2840
2856
  const [effectDragOverridesState, setEffectDragOverridesState] = useState3({});
2841
- const [codeValues, setCodeValuesMapState] = useState3({});
2857
+ const [propStatuses, setPropStatusesMapState] = useState3({});
2858
+ const propStatusesRef = useRef4(propStatuses);
2859
+ propStatusesRef.current = propStatuses;
2842
2860
  const setDragOverrides = useCallback5((nodePath, key, value) => {
2843
2861
  setControlOverrides((prev) => ({
2844
2862
  ...prev,
@@ -2882,8 +2900,8 @@ var SequenceManagerProvider = ({ children }) => {
2882
2900
  return next;
2883
2901
  });
2884
2902
  }, []);
2885
- const setCodeValues = useCallback5((nodePath, values) => {
2886
- setCodeValuesMapState((prev) => {
2903
+ const setPropStatuses = useCallback5((nodePath, values) => {
2904
+ setPropStatusesMapState((prev) => {
2887
2905
  const key = makeSequencePropsSubscriptionKey(nodePath);
2888
2906
  const prevKey = prev[key];
2889
2907
  const newKey = values(prevKey);
@@ -2914,11 +2932,11 @@ var SequenceManagerProvider = ({ children }) => {
2914
2932
  const getEffectDragOverrides = useCallback5((nodePath, effectIndex) => {
2915
2933
  return effectDragOverridesState[effectDragOverridesKey(nodePath, effectIndex)] ?? {};
2916
2934
  }, [effectDragOverridesState]);
2917
- const codeValuesContext = useMemo12(() => {
2935
+ const propStatusesContext = useMemo12(() => {
2918
2936
  return {
2919
- codeValues
2937
+ propStatuses
2920
2938
  };
2921
- }, [codeValues]);
2939
+ }, [propStatuses]);
2922
2940
  const dragOverridesContext = useMemo12(() => {
2923
2941
  return {
2924
2942
  getDragOverrides,
@@ -2931,24 +2949,30 @@ var SequenceManagerProvider = ({ children }) => {
2931
2949
  clearDragOverrides,
2932
2950
  setEffectDragOverrides,
2933
2951
  clearEffectDragOverrides,
2934
- setCodeValues
2952
+ setPropStatuses
2935
2953
  };
2936
2954
  }, [
2937
2955
  setDragOverrides,
2938
2956
  clearDragOverrides,
2939
2957
  setEffectDragOverrides,
2940
2958
  clearEffectDragOverrides,
2941
- setCodeValues
2959
+ setPropStatuses
2942
2960
  ]);
2943
- return /* @__PURE__ */ jsx10(SequenceManager.Provider, {
2944
- value: sequenceContext,
2945
- children: /* @__PURE__ */ jsx10(VisualModeCodeValuesContext.Provider, {
2946
- value: codeValuesContext,
2947
- children: /* @__PURE__ */ jsx10(VisualModeDragOverridesContext.Provider, {
2948
- value: dragOverridesContext,
2949
- children: /* @__PURE__ */ jsx10(VisualModeSettersContext.Provider, {
2950
- value: settersContext,
2951
- children
2961
+ return /* @__PURE__ */ jsx10(SequenceManagerRefContext.Provider, {
2962
+ value: sequencesRef,
2963
+ children: /* @__PURE__ */ jsx10(SequenceManager.Provider, {
2964
+ value: sequenceContext,
2965
+ children: /* @__PURE__ */ jsx10(VisualModePropStatusesRefContext.Provider, {
2966
+ value: propStatusesRef,
2967
+ children: /* @__PURE__ */ jsx10(VisualModePropStatusesContext.Provider, {
2968
+ value: propStatusesContext,
2969
+ children: /* @__PURE__ */ jsx10(VisualModeDragOverridesContext.Provider, {
2970
+ value: dragOverridesContext,
2971
+ children: /* @__PURE__ */ jsx10(VisualModeSettersContext.Provider, {
2972
+ value: settersContext,
2973
+ children
2974
+ })
2975
+ })
2952
2976
  })
2953
2977
  })
2954
2978
  })
@@ -3437,6 +3461,40 @@ var interpolateString = ({
3437
3461
  dimensions
3438
3462
  });
3439
3463
  };
3464
+ var validateTupleOutputRange = (outputRange) => {
3465
+ const dimensions = outputRange[0]?.length;
3466
+ if (dimensions === undefined) {
3467
+ throw new Error("outputRange must have at least 1 element");
3468
+ }
3469
+ if (dimensions === 0) {
3470
+ throw new TypeError("outputRange tuples must contain at least 1 number");
3471
+ }
3472
+ for (const output of outputRange) {
3473
+ if (output.length !== dimensions) {
3474
+ throw new TypeError(`outputRange tuples must all have the same length, but got ${dimensions} and ${output.length}`);
3475
+ }
3476
+ for (const value of output) {
3477
+ if (typeof value !== "number" || !Number.isFinite(value)) {
3478
+ throw new TypeError(`outputRange tuples must contain only finite numbers, but got [${output.join(",")}]`);
3479
+ }
3480
+ }
3481
+ }
3482
+ return dimensions;
3483
+ };
3484
+ var interpolateTuple = ({
3485
+ input,
3486
+ inputRange,
3487
+ outputRange,
3488
+ options
3489
+ }) => {
3490
+ const dimensions = validateTupleOutputRange(outputRange);
3491
+ return new Array(dimensions).fill(true).map((_, axis) => interpolateNumber({
3492
+ input,
3493
+ inputRange,
3494
+ outputRange: outputRange.map((output) => output[axis]),
3495
+ options
3496
+ }));
3497
+ };
3440
3498
  function checkValidInputRange(arr) {
3441
3499
  for (let i = 1;i < arr.length; ++i) {
3442
3500
  if (!(arr[i] > arr[i - 1])) {
@@ -3512,8 +3570,11 @@ function interpolate(input, inputRange, outputRange, options) {
3512
3570
  }
3513
3571
  return interpolateString({ input, inputRange, outputRange, options });
3514
3572
  }
3573
+ if (outputRange.every((output) => Array.isArray(output))) {
3574
+ return interpolateTuple({ input, inputRange, outputRange, options });
3575
+ }
3515
3576
  if (!outputRange.every((output) => typeof output === "number")) {
3516
- throw new TypeError("outputRange must contain only numbers, or supported scale, translate, and rotate strings");
3577
+ throw new TypeError("outputRange must contain only numbers, numeric tuples, or supported scale, translate, and rotate strings");
3517
3578
  }
3518
3579
  checkInfiniteRange("outputRange", outputRange);
3519
3580
  return interpolateNumber({ input, inputRange, outputRange, options });
@@ -4026,8 +4087,9 @@ var interpolateKeyframedStatus = ({
4026
4087
  if (keyframes.length === 0) {
4027
4088
  return null;
4028
4089
  }
4029
- const inputRange = keyframes.map((k) => k.frame);
4030
- const outputs = keyframes.map((k) => k.value);
4090
+ const sortedKeyframes = [...keyframes].sort((a2, b2) => a2.frame - b2.frame);
4091
+ const inputRange = sortedKeyframes.map((k) => k.frame);
4092
+ const outputs = sortedKeyframes.map((k) => k.value);
4031
4093
  if (interpolationFunction === "interpolateColors") {
4032
4094
  if (!outputs.every((v) => typeof v === "string")) {
4033
4095
  return null;
@@ -4080,7 +4142,7 @@ var resolveDragOverrideValue = ({
4080
4142
  return { type: "resolved", value: interpolated };
4081
4143
  };
4082
4144
  var getEffectiveVisualModeValue = ({
4083
- codeValue,
4145
+ propStatus,
4084
4146
  dragOverrideValue,
4085
4147
  defaultValue,
4086
4148
  frame = null,
@@ -4093,16 +4155,19 @@ var getEffectiveVisualModeValue = ({
4093
4155
  if (dragOverride.type === "resolved" && dragOverride.value !== undefined) {
4094
4156
  return dragOverride.value;
4095
4157
  }
4096
- if (codeValue.status === "keyframed" && frame !== null) {
4097
- return interpolateKeyframedStatus({
4098
- frame,
4099
- status: codeValue
4100
- });
4158
+ if (propStatus.status === "keyframed") {
4159
+ if (frame !== null) {
4160
+ return interpolateKeyframedStatus({
4161
+ frame,
4162
+ status: propStatus
4163
+ });
4164
+ }
4165
+ return shouldResortToDefaultValueIfUndefined ? defaultValue : undefined;
4101
4166
  }
4102
- if (codeValue.codeValue === undefined && shouldResortToDefaultValueIfUndefined) {
4167
+ if (propStatus.codeValue === undefined && shouldResortToDefaultValueIfUndefined) {
4103
4168
  return defaultValue;
4104
4169
  }
4105
- return codeValue.codeValue;
4170
+ return propStatus.codeValue;
4106
4171
  };
4107
4172
  var OverrideIdsToNodePathsGettersContext = createContext16({
4108
4173
  overrideIdToNodePathMappings: {}
@@ -4114,18 +4179,18 @@ var OverrideIdsToNodePathsSettersContext = createContext16({
4114
4179
  });
4115
4180
  var mergeOverrides = ({
4116
4181
  descriptor,
4117
- codeOverrides,
4182
+ propStatusOverrides,
4118
4183
  dragOverrides,
4119
4184
  frame
4120
4185
  }) => {
4121
- if (!codeOverrides && !dragOverrides) {
4186
+ if (!propStatusOverrides && !dragOverrides) {
4122
4187
  return { params: descriptor.params, effectKey: descriptor.effectKey };
4123
4188
  }
4124
4189
  const merged = {
4125
4190
  ...descriptor.params
4126
4191
  };
4127
- if (codeOverrides) {
4128
- for (const [key, value] of Object.entries(codeOverrides)) {
4192
+ if (propStatusOverrides) {
4193
+ for (const [key, value] of Object.entries(propStatusOverrides)) {
4129
4194
  if (value !== undefined) {
4130
4195
  merged[key] = value;
4131
4196
  }
@@ -4147,16 +4212,27 @@ var mergeOverrides = ({
4147
4212
  effectKey: descriptor.definition.calculateKey(merged)
4148
4213
  };
4149
4214
  };
4150
- var extractCodeOverrides = (propStatus) => {
4215
+ var resolvePropStatusOverrides = (propStatus, frame) => {
4151
4216
  if (!propStatus) {
4152
4217
  return null;
4153
4218
  }
4154
4219
  const out = {};
4155
4220
  let hasAny = false;
4156
4221
  for (const [key, status] of Object.entries(propStatus)) {
4157
- if (status.status !== "computed") {
4222
+ if (status.status === "static") {
4158
4223
  out[key] = status.codeValue;
4159
4224
  hasAny = true;
4225
+ continue;
4226
+ }
4227
+ if (status.status === "keyframed") {
4228
+ const value = interpolateKeyframedStatus({
4229
+ frame,
4230
+ status
4231
+ });
4232
+ if (value !== null) {
4233
+ out[key] = value;
4234
+ hasAny = true;
4235
+ }
4160
4236
  }
4161
4237
  }
4162
4238
  return hasAny ? out : null;
@@ -4172,12 +4248,12 @@ var useMemoizedEffectDefinitions = (effects) => {
4172
4248
  previousRef.current = definitions;
4173
4249
  return definitions;
4174
4250
  };
4175
- var getEffectCodeValuesCtx = ({
4176
- codeValues,
4251
+ var getEffectPropStatusesCtx = ({
4252
+ propStatuses,
4177
4253
  nodePath,
4178
4254
  effectIndex
4179
4255
  }) => {
4180
- const status = codeValues[makeSequencePropsSubscriptionKey(nodePath)];
4256
+ const status = propStatuses[makeSequencePropsSubscriptionKey(nodePath)];
4181
4257
  if (!status) {
4182
4258
  return { type: "cannot-update-sequence", reason: "not-found" };
4183
4259
  }
@@ -4193,8 +4269,8 @@ var getEffectCodeValuesCtx = ({
4193
4269
  }
4194
4270
  return { type: "can-update-effect", props: effect.props };
4195
4271
  };
4196
- var getCodeValuesCtx = (codeValues, nodePath) => {
4197
- const status = codeValues[makeSequencePropsSubscriptionKey(nodePath)];
4272
+ var getPropStatusesCtx = (propStatuses, nodePath) => {
4273
+ const status = propStatuses[makeSequencePropsSubscriptionKey(nodePath)];
4198
4274
  if (!status) {
4199
4275
  return;
4200
4276
  }
@@ -4208,7 +4284,7 @@ var useMemoizedEffects = ({
4208
4284
  overrideId
4209
4285
  }) => {
4210
4286
  const previousRef = useRef5(null);
4211
- const { codeValues } = useContext15(VisualModeCodeValuesContext);
4287
+ const { propStatuses } = useContext15(VisualModePropStatusesContext);
4212
4288
  const { getEffectDragOverrides } = useContext15(VisualModeDragOverridesContext);
4213
4289
  const frame = useCurrentFrame();
4214
4290
  const { overrideIdToNodePathMappings } = useContext15(OverrideIdsToNodePathsGettersContext);
@@ -4222,17 +4298,17 @@ var useMemoizedEffects = ({
4222
4298
  effectKey: descriptor.effectKey
4223
4299
  };
4224
4300
  }
4225
- const effectStatus = getEffectCodeValuesCtx({
4226
- codeValues,
4301
+ const effectStatus = getEffectPropStatusesCtx({
4302
+ propStatuses,
4227
4303
  nodePath,
4228
4304
  effectIndex: index
4229
4305
  });
4230
- const codeOverrides = effectStatus.type === "can-update-effect" ? extractCodeOverrides(effectStatus.props) : null;
4306
+ const propStatusOverrides = effectStatus.type === "can-update-effect" ? resolvePropStatusOverrides(effectStatus.props, frame) : null;
4231
4307
  const dragOverridesMap = getEffectDragOverrides(nodePath, index);
4232
4308
  const dragOverrides = Object.keys(dragOverridesMap).length === 0 ? null : dragOverridesMap;
4233
4309
  const { params, effectKey } = mergeOverrides({
4234
4310
  descriptor,
4235
- codeOverrides,
4311
+ propStatusOverrides,
4236
4312
  dragOverrides,
4237
4313
  frame
4238
4314
  });
@@ -4384,15 +4460,15 @@ var computeEffectiveSchemaValuesDotNotation = ({
4384
4460
  const merged = {};
4385
4461
  const propsToDelete = new Set;
4386
4462
  for (const key of Object.keys(currentValue)) {
4387
- const codeValueStatus = propStatus?.[key] ?? null;
4463
+ const status = propStatus?.[key] ?? null;
4388
4464
  const field = findFieldInSchema(schema, key);
4389
4465
  if (field?.type === "hidden") {
4390
4466
  continue;
4391
4467
  }
4392
4468
  let value;
4393
- if (codeValueStatus === null) {
4469
+ if (status === null) {
4394
4470
  value = currentValue[key];
4395
- } else if (isKeyframedStatus(codeValueStatus)) {
4471
+ } else if (isKeyframedStatus(status)) {
4396
4472
  if (field?.type === "array" || field?.keyframable === false) {
4397
4473
  value = currentValue[key];
4398
4474
  } else {
@@ -4405,18 +4481,18 @@ var computeEffectiveSchemaValuesDotNotation = ({
4405
4481
  } else if (frame !== null) {
4406
4482
  const interpolated = interpolateKeyframedStatus({
4407
4483
  frame,
4408
- status: codeValueStatus
4484
+ status
4409
4485
  });
4410
4486
  value = interpolated ?? currentValue[key];
4411
4487
  } else {
4412
4488
  value = currentValue[key];
4413
4489
  }
4414
4490
  }
4415
- } else if (codeValueStatus.status === "computed") {
4491
+ } else if (status.status === "computed") {
4416
4492
  value = currentValue[key];
4417
4493
  } else {
4418
4494
  value = getEffectiveVisualModeValue({
4419
- codeValue: codeValueStatus,
4495
+ propStatus: status,
4420
4496
  dragOverrideValue: overrideValues[key],
4421
4497
  defaultValue: field?.default,
4422
4498
  frame,
@@ -4508,7 +4584,7 @@ var wrapInSchema = ({
4508
4584
  ref
4509
4585
  });
4510
4586
  }
4511
- const { codeValues } = useContext16(VisualModeCodeValuesContext);
4587
+ const { propStatuses } = useContext16(VisualModePropStatusesContext);
4512
4588
  const { getDragOverrides } = useContext16(VisualModeDragOverridesContext);
4513
4589
  const nodePathMapping = useContext16(OverrideIdsToNodePathsGettersContext);
4514
4590
  const frame = useCurrentFrame();
@@ -4547,14 +4623,14 @@ var wrapInSchema = ({
4547
4623
  schema,
4548
4624
  currentValue: currentRuntimeValueDotNotation,
4549
4625
  overrideValues: nodePath === null ? {} : getDragOverrides(nodePath),
4550
- propStatus: nodePath === null ? undefined : getCodeValuesCtx(codeValues, nodePath),
4626
+ propStatus: nodePath === null ? undefined : getPropStatusesCtx(propStatuses, nodePath),
4551
4627
  frame
4552
4628
  });
4553
4629
  }, [
4554
4630
  currentRuntimeValueDotNotation,
4555
4631
  getDragOverrides,
4556
4632
  nodePath,
4557
- codeValues,
4633
+ propStatuses,
4558
4634
  frame
4559
4635
  ]);
4560
4636
  const activeKeys = selectActiveKeys(schema, valuesDotNotation);
@@ -4877,11 +4953,17 @@ var SequenceRefForwardingFunction = (props, ref) => {
4877
4953
  });
4878
4954
  };
4879
4955
  var SequenceInner = forwardRef3(SequenceRefForwardingFunction);
4956
+ var SequenceWithoutSchema = SequenceInner;
4880
4957
  var Sequence = wrapInSchema({
4881
4958
  Component: SequenceInner,
4882
4959
  schema: sequenceSchema,
4883
4960
  supportsEffects: false
4884
4961
  });
4962
+ var SequenceWithoutFrom = wrapInSchema({
4963
+ Component: SequenceInner,
4964
+ schema: sequenceSchemaWithoutFrom,
4965
+ supportsEffects: false
4966
+ });
4885
4967
  var calculateImageFit = (fit, imageSize, canvasSize) => {
4886
4968
  switch (fit) {
4887
4969
  case "fill": {
@@ -5786,7 +5868,7 @@ var calculateMediaDuration = ({
5786
5868
  duration -= trimBefore;
5787
5869
  }
5788
5870
  const actualDuration = duration / playbackRate;
5789
- return Math.floor(actualDuration);
5871
+ return Number(actualDuration.toFixed(10));
5790
5872
  };
5791
5873
  var LoopContext = createContext18(null);
5792
5874
  var useLoop = () => {
@@ -10908,6 +10990,8 @@ function useRemotionContexts() {
10908
10990
  const resolveCompositionContext = React38.useContext(ResolveCompositionContext);
10909
10991
  const renderAssetManagerContext = React38.useContext(RenderAssetManager);
10910
10992
  const sequenceManagerContext = React38.useContext(SequenceManager);
10993
+ const sequenceManagerRefContext = React38.useContext(SequenceManagerRefContext);
10994
+ const visualModePropStatusesRefContext = React38.useContext(VisualModePropStatusesRefContext);
10911
10995
  const bufferManagerContext = React38.useContext(BufferingContextReact);
10912
10996
  const logLevelContext = React38.useContext(LogLevelContext);
10913
10997
  return useMemo37(() => ({
@@ -10921,6 +11005,8 @@ function useRemotionContexts() {
10921
11005
  resolveCompositionContext,
10922
11006
  renderAssetManagerContext,
10923
11007
  sequenceManagerContext,
11008
+ sequenceManagerRefContext,
11009
+ visualModePropStatusesRefContext,
10924
11010
  bufferManagerContext,
10925
11011
  logLevelContext
10926
11012
  }), [
@@ -10934,6 +11020,8 @@ function useRemotionContexts() {
10934
11020
  resolveCompositionContext,
10935
11021
  renderAssetManagerContext,
10936
11022
  sequenceManagerContext,
11023
+ sequenceManagerRefContext,
11024
+ visualModePropStatusesRefContext,
10937
11025
  bufferManagerContext,
10938
11026
  logLevelContext
10939
11027
  ]);
@@ -10950,21 +11038,27 @@ var RemotionContextProvider = (props2) => {
10950
11038
  value: contexts.preloadContext,
10951
11039
  children: /* @__PURE__ */ jsx35(CompositionManager.Provider, {
10952
11040
  value: contexts.compositionManagerCtx,
10953
- children: /* @__PURE__ */ jsx35(SequenceManager.Provider, {
10954
- value: contexts.sequenceManagerContext,
10955
- children: /* @__PURE__ */ jsx35(RenderAssetManager.Provider, {
10956
- value: contexts.renderAssetManagerContext,
10957
- children: /* @__PURE__ */ jsx35(ResolveCompositionContext.Provider, {
10958
- value: contexts.resolveCompositionContext,
10959
- children: /* @__PURE__ */ jsx35(TimelineContext.Provider, {
10960
- value: contexts.timelineContext,
10961
- children: /* @__PURE__ */ jsx35(SetTimelineContext.Provider, {
10962
- value: contexts.setTimelineContext,
10963
- children: /* @__PURE__ */ jsx35(SequenceContext.Provider, {
10964
- value: contexts.sequenceContext,
10965
- children: /* @__PURE__ */ jsx35(BufferingContextReact.Provider, {
10966
- value: contexts.bufferManagerContext,
10967
- children
11041
+ children: /* @__PURE__ */ jsx35(SequenceManagerRefContext.Provider, {
11042
+ value: contexts.sequenceManagerRefContext,
11043
+ children: /* @__PURE__ */ jsx35(SequenceManager.Provider, {
11044
+ value: contexts.sequenceManagerContext,
11045
+ children: /* @__PURE__ */ jsx35(VisualModePropStatusesRefContext.Provider, {
11046
+ value: contexts.visualModePropStatusesRefContext,
11047
+ children: /* @__PURE__ */ jsx35(RenderAssetManager.Provider, {
11048
+ value: contexts.renderAssetManagerContext,
11049
+ children: /* @__PURE__ */ jsx35(ResolveCompositionContext.Provider, {
11050
+ value: contexts.resolveCompositionContext,
11051
+ children: /* @__PURE__ */ jsx35(TimelineContext.Provider, {
11052
+ value: contexts.timelineContext,
11053
+ children: /* @__PURE__ */ jsx35(SetTimelineContext.Provider, {
11054
+ value: contexts.setTimelineContext,
11055
+ children: /* @__PURE__ */ jsx35(SequenceContext.Provider, {
11056
+ value: contexts.sequenceContext,
11057
+ children: /* @__PURE__ */ jsx35(BufferingContextReact.Provider, {
11058
+ value: contexts.bufferManagerContext,
11059
+ children
11060
+ })
11061
+ })
10968
11062
  })
10969
11063
  })
10970
11064
  })
@@ -10995,13 +11089,16 @@ var Internals = {
10995
11089
  VideoForPreview,
10996
11090
  CompositionManager,
10997
11091
  CompositionSetters,
10998
- VisualModeCodeValuesContext,
11092
+ VisualModePropStatusesContext,
11093
+ VisualModePropStatusesRefContext,
10999
11094
  VisualModeDragOverridesContext,
11000
11095
  VisualModeSettersContext,
11001
11096
  SequenceManager,
11097
+ SequenceManagerRefContext,
11002
11098
  SequenceStackTracesUpdateContext,
11003
11099
  wrapInSchema,
11004
11100
  sequenceSchema,
11101
+ SequenceWithoutSchema,
11005
11102
  sequenceStyleSchema,
11006
11103
  sequenceVisualStyleSchema,
11007
11104
  sequencePremountSchema,
@@ -11116,8 +11213,8 @@ var Internals = {
11116
11213
  OverrideIdsToNodePathsSettersContext,
11117
11214
  findPropsToDelete,
11118
11215
  makeSequencePropsSubscriptionKey,
11119
- getCodeValuesCtx,
11120
- getEffectCodeValuesCtx,
11216
+ getPropStatusesCtx,
11217
+ getEffectPropStatusesCtx,
11121
11218
  hiddenField,
11122
11219
  durationInFramesField,
11123
11220
  fromField
@@ -11163,6 +11260,7 @@ var SeriesSequenceRefForwardingFunction = ({ children }, _ref) => {
11163
11260
  });
11164
11261
  };
11165
11262
  var SeriesSequence = forwardRef13(SeriesSequenceRefForwardingFunction);
11263
+ var SequenceWithoutSchemaWithRef = SequenceWithoutSchema;
11166
11264
  var SeriesInner = (props2) => {
11167
11265
  const childrenValue = useMemo38(() => {
11168
11266
  let startFrame = 0;
@@ -11205,13 +11303,13 @@ var SeriesInner = (props2) => {
11205
11303
  }
11206
11304
  const currentStartFrame = startFrame + offset;
11207
11305
  startFrame += durationInFramesProp + offset;
11208
- return /* @__PURE__ */ jsx36(Sequence, {
11306
+ return /* @__PURE__ */ jsx36(SequenceWithoutSchemaWithRef, {
11307
+ ref: castedChild.ref,
11209
11308
  name: name || "<Series.Sequence>",
11210
11309
  _remotionInternalDocumentationLink: name ? undefined : "https://www.remotion.dev/docs/series",
11211
11310
  from: currentStartFrame,
11212
11311
  durationInFrames: durationInFramesProp,
11213
11312
  ...passedProps,
11214
- ref: castedChild.ref,
11215
11313
  children: child
11216
11314
  });
11217
11315
  });
@@ -11234,7 +11332,6 @@ var Series = Object.assign(wrapInSchema({
11234
11332
  Sequence: SeriesSequence
11235
11333
  });
11236
11334
  addSequenceStackTraces(Series);
11237
- addSequenceStackTraces(SeriesSequence);
11238
11335
  var validateSpringDuration = (dur) => {
11239
11336
  if (typeof dur === "undefined") {
11240
11337
  return;