@remotion/promo-pages 4.0.464 → 4.0.466

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/Homepage.js CHANGED
@@ -1088,8 +1088,7 @@ import {
1088
1088
  useContext as useContext32,
1089
1089
  useImperativeHandle as useImperativeHandle6,
1090
1090
  useLayoutEffect as useLayoutEffect10,
1091
- useRef as useRef21,
1092
- useState as useState17
1091
+ useRef as useRef21
1093
1092
  } from "react";
1094
1093
  import { jsx as jsx26 } from "react/jsx-runtime";
1095
1094
  import { createRef as createRef3 } from "react";
@@ -1099,7 +1098,7 @@ import {
1099
1098
  useImperativeHandle as useImperativeHandle7,
1100
1099
  useMemo as useMemo31,
1101
1100
  useRef as useRef22,
1102
- useState as useState18
1101
+ useState as useState17
1103
1102
  } from "react";
1104
1103
  import { jsx as jsx27 } from "react/jsx-runtime";
1105
1104
  import React29 from "react";
@@ -1116,7 +1115,7 @@ import {
1116
1115
  useEffect as useEffect16,
1117
1116
  useLayoutEffect as useLayoutEffect11,
1118
1117
  useMemo as useMemo34,
1119
- useState as useState19
1118
+ useState as useState18
1120
1119
  } from "react";
1121
1120
  import { jsx as jsx30 } from "react/jsx-runtime";
1122
1121
  import React34, {
@@ -1126,7 +1125,7 @@ import React34, {
1126
1125
  useImperativeHandle as useImperativeHandle8,
1127
1126
  useMemo as useMemo35,
1128
1127
  useRef as useRef23,
1129
- useState as useState20,
1128
+ useState as useState19,
1130
1129
  useCallback as useCallback20
1131
1130
  } from "react";
1132
1131
  import { useEffect as useEffect17 } from "react";
@@ -1188,20 +1187,70 @@ var CompositionRenderErrorContext = createContext3({
1188
1187
  setError: () => {},
1189
1188
  clearError: () => {}
1190
1189
  });
1190
+ var getHot = () => {
1191
+ try {
1192
+ if (typeof __webpack_module__ === "undefined") {
1193
+ return null;
1194
+ }
1195
+ return __webpack_module__.hot ?? null;
1196
+ } catch {
1197
+ return null;
1198
+ }
1199
+ };
1191
1200
 
1192
1201
  class CompositionErrorBoundary extends React2.Component {
1193
1202
  state = { hasError: false };
1203
+ hmrStatusHandler = null;
1194
1204
  static getDerivedStateFromError() {
1195
1205
  return { hasError: true };
1196
1206
  }
1197
1207
  componentDidCatch(error) {
1198
1208
  this.props.onError(error);
1209
+ this.subscribeToHmrReset();
1199
1210
  }
1200
- componentDidUpdate(_prevProps) {
1211
+ componentDidMount() {
1201
1212
  if (!this.state.hasError) {
1202
1213
  this.props.onClear();
1203
1214
  }
1204
1215
  }
1216
+ componentDidUpdate(_prevProps, prevState) {
1217
+ if (prevState.hasError && !this.state.hasError) {
1218
+ this.props.onClear();
1219
+ }
1220
+ }
1221
+ componentWillUnmount() {
1222
+ this.unsubscribeFromHmrReset();
1223
+ }
1224
+ subscribeToHmrReset() {
1225
+ if (this.hmrStatusHandler) {
1226
+ return;
1227
+ }
1228
+ const hot = getHot();
1229
+ if (!hot) {
1230
+ return;
1231
+ }
1232
+ const handler = (status) => {
1233
+ if (status !== "idle") {
1234
+ return;
1235
+ }
1236
+ this.unsubscribeFromHmrReset();
1237
+ this.setState({ hasError: false });
1238
+ };
1239
+ this.hmrStatusHandler = handler;
1240
+ hot.addStatusHandler(handler);
1241
+ }
1242
+ unsubscribeFromHmrReset() {
1243
+ const handler = this.hmrStatusHandler;
1244
+ if (!handler) {
1245
+ return;
1246
+ }
1247
+ this.hmrStatusHandler = null;
1248
+ const hot = getHot();
1249
+ if (!hot) {
1250
+ return;
1251
+ }
1252
+ hot.removeStatusHandler(handler);
1253
+ }
1205
1254
  render() {
1206
1255
  if (this.state.hasError) {
1207
1256
  return null;
@@ -2224,7 +2273,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
2224
2273
  var addSequenceStackTraces = (component) => {
2225
2274
  componentsToAddStacksTo.push(component);
2226
2275
  };
2227
- var VERSION = "4.0.464";
2276
+ var VERSION = "4.0.466";
2228
2277
  var checkMultipleRemotionVersions = () => {
2229
2278
  if (typeof globalThis === "undefined") {
2230
2279
  return;
@@ -3269,9 +3318,10 @@ var RegularSequenceRefForwardingFunction = ({
3269
3318
  showInTimeline = true,
3270
3319
  hidden = false,
3271
3320
  _experimentalControls: controls,
3272
- _experimentalEffects,
3321
+ _remotionInternalEffects,
3273
3322
  _remotionInternalLoopDisplay: loopDisplay,
3274
3323
  _remotionInternalStack: stack,
3324
+ _remotionInternalDocumentationLink: documentationLink,
3275
3325
  _remotionInternalPremountDisplay: premountDisplay,
3276
3326
  _remotionInternalPostmountDisplay: postmountDisplay,
3277
3327
  _remotionInternalIsMedia: isMedia,
@@ -3342,6 +3392,7 @@ var RegularSequenceRefForwardingFunction = ({
3342
3392
  const timelineClipName = useMemo14(() => {
3343
3393
  return name ?? "";
3344
3394
  }, [name]);
3395
+ const resolvedDocumentationLink = documentationLink ?? (name === undefined ? "https://www.remotion.dev/docs/sequence" : null);
3345
3396
  const env = useRemotionEnvironment();
3346
3397
  const inheritedStack = other?.stack ?? null;
3347
3398
  const stackRef = useRef6(null);
@@ -3351,28 +3402,51 @@ var RegularSequenceRefForwardingFunction = ({
3351
3402
  return;
3352
3403
  }
3353
3404
  if (isMedia) {
3354
- registerSequence({
3355
- type: isMedia.type,
3356
- controls: controls ?? null,
3357
- effects: _experimentalEffects ?? [],
3358
- displayName: timelineClipName,
3359
- doesVolumeChange: isMedia.data.doesVolumeChange,
3360
- duration: actualDurationInFrames,
3361
- from,
3362
- id,
3363
- loopDisplay,
3364
- nonce: nonce.get(),
3365
- parent: parentSequence?.id ?? null,
3366
- playbackRate: isMedia.data.playbackRate,
3367
- postmountDisplay: postmountDisplay ?? null,
3368
- premountDisplay: premountDisplay ?? null,
3369
- rootId,
3370
- showInTimeline,
3371
- src: isMedia.data.src,
3372
- getStack: () => stackRef.current,
3373
- startMediaFrom: isMedia.data.startMediaFrom,
3374
- volume: isMedia.data.volumes
3375
- });
3405
+ if (isMedia.type === "image") {
3406
+ registerSequence({
3407
+ type: "image",
3408
+ controls: controls ?? null,
3409
+ effects: _remotionInternalEffects ?? [],
3410
+ displayName: timelineClipName,
3411
+ documentationLink: resolvedDocumentationLink,
3412
+ duration: actualDurationInFrames,
3413
+ from,
3414
+ id,
3415
+ loopDisplay,
3416
+ nonce: nonce.get(),
3417
+ parent: parentSequence?.id ?? null,
3418
+ postmountDisplay: postmountDisplay ?? null,
3419
+ premountDisplay: premountDisplay ?? null,
3420
+ rootId,
3421
+ showInTimeline,
3422
+ src: isMedia.src,
3423
+ getStack: () => stackRef.current
3424
+ });
3425
+ } else {
3426
+ registerSequence({
3427
+ type: isMedia.type,
3428
+ controls: controls ?? null,
3429
+ effects: _remotionInternalEffects ?? [],
3430
+ displayName: timelineClipName,
3431
+ documentationLink: resolvedDocumentationLink,
3432
+ doesVolumeChange: isMedia.data.doesVolumeChange,
3433
+ duration: actualDurationInFrames,
3434
+ from,
3435
+ id,
3436
+ loopDisplay,
3437
+ nonce: nonce.get(),
3438
+ parent: parentSequence?.id ?? null,
3439
+ playbackRate: isMedia.data.playbackRate,
3440
+ postmountDisplay: postmountDisplay ?? null,
3441
+ premountDisplay: premountDisplay ?? null,
3442
+ rootId,
3443
+ showInTimeline,
3444
+ src: isMedia.data.src,
3445
+ getStack: () => stackRef.current,
3446
+ startMediaFrom: isMedia.data.startMediaFrom,
3447
+ volume: isMedia.data.volumes
3448
+ });
3449
+ }
3376
3450
  return () => {
3377
3451
  unregisterSequence(id);
3378
3452
  };
@@ -3382,6 +3456,7 @@ var RegularSequenceRefForwardingFunction = ({
3382
3456
  duration: actualDurationInFrames,
3383
3457
  id,
3384
3458
  displayName: timelineClipName,
3459
+ documentationLink: resolvedDocumentationLink,
3385
3460
  parent: parentSequence?.id ?? null,
3386
3461
  type: "sequence",
3387
3462
  rootId,
@@ -3392,7 +3467,7 @@ var RegularSequenceRefForwardingFunction = ({
3392
3467
  premountDisplay: premountDisplay ?? null,
3393
3468
  postmountDisplay: postmountDisplay ?? null,
3394
3469
  controls: controls ?? null,
3395
- effects: _experimentalEffects ?? []
3470
+ effects: _remotionInternalEffects ?? []
3396
3471
  });
3397
3472
  return () => {
3398
3473
  unregisterSequence(id);
@@ -3415,8 +3490,9 @@ var RegularSequenceRefForwardingFunction = ({
3415
3490
  postmountDisplay,
3416
3491
  env.isStudio,
3417
3492
  controls,
3418
- _experimentalEffects,
3419
- isMedia
3493
+ _remotionInternalEffects,
3494
+ isMedia,
3495
+ resolvedDocumentationLink
3420
3496
  ]);
3421
3497
  const endThreshold = Math.ceil(cumulatedFrom + from + durationInFrames - 1);
3422
3498
  const content = absoluteFrame < cumulatedFrom + from ? null : absoluteFrame > endThreshold ? null : children;
@@ -3693,6 +3769,7 @@ var runEffectChain = async ({
3693
3769
  if (isCancelled()) {
3694
3770
  return false;
3695
3771
  }
3772
+ let flipWebGLSourceY = true;
3696
3773
  for (let runIndex = 0;runIndex < runs.length; runIndex++) {
3697
3774
  const run = runs[runIndex];
3698
3775
  const [a, b] = state.pool.getPair(run.backend);
@@ -3707,9 +3784,11 @@ var runEffectChain = async ({
3707
3784
  params: eff.params,
3708
3785
  width,
3709
3786
  height,
3710
- gpuDevice
3787
+ gpuDevice,
3788
+ flipSourceY: run.backend === "webgl2" ? flipWebGLSourceY : false
3711
3789
  });
3712
3790
  if (run.backend === "webgl2") {
3791
+ flipWebGLSourceY = false;
3713
3792
  state.pool.assertContextNotLost(dst);
3714
3793
  }
3715
3794
  currentImage = dst;
@@ -3718,12 +3797,20 @@ var runEffectChain = async ({
3718
3797
  lastTarget = currentImage ?? lastTarget;
3719
3798
  const nextRun = runs[runIndex + 1];
3720
3799
  if (nextRun && nextRun.backend !== run.backend && lastTarget) {
3721
- const bitmap = await createImageBitmap(lastTarget);
3722
- if (isCancelled()) {
3723
- bitmap.close();
3724
- return false;
3800
+ if (run.backend === "2d" && nextRun.backend === "webgl2") {
3801
+ currentImage = lastTarget;
3802
+ flipWebGLSourceY = true;
3803
+ } else {
3804
+ const bitmap = await createImageBitmap(lastTarget);
3805
+ if (isCancelled()) {
3806
+ bitmap.close();
3807
+ return false;
3808
+ }
3809
+ currentImage = bitmap;
3810
+ if (nextRun.backend === "webgl2") {
3811
+ flipWebGLSourceY = false;
3812
+ }
3725
3813
  }
3726
- currentImage = bitmap;
3727
3814
  }
3728
3815
  }
3729
3816
  if (!lastTarget) {
@@ -4169,7 +4256,7 @@ var AnimatedImageInner = ({
4169
4256
  className,
4170
4257
  style,
4171
4258
  durationInFrames,
4172
- _experimentalEffects: effects = [],
4259
+ effects = [],
4173
4260
  _experimentalControls: controls,
4174
4261
  ref,
4175
4262
  ...sequenceProps
@@ -4193,8 +4280,9 @@ var AnimatedImageInner = ({
4193
4280
  layout: "none",
4194
4281
  durationInFrames: resolvedDuration,
4195
4282
  name: "<AnimatedImage>",
4283
+ _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/animatedimage",
4196
4284
  _experimentalControls: controls,
4197
- _experimentalEffects: memoizedEffectDefinitions,
4285
+ _remotionInternalEffects: memoizedEffectDefinitions,
4198
4286
  ...sequenceProps,
4199
4287
  children: /* @__PURE__ */ jsx13(AnimatedImageContent, {
4200
4288
  ...animatedImageProps,
@@ -4233,7 +4321,7 @@ var SolidInner = ({
4233
4321
  color,
4234
4322
  width,
4235
4323
  height,
4236
- _experimentalEffects: experimentalEffects = [],
4324
+ effects = [],
4237
4325
  className,
4238
4326
  style,
4239
4327
  overrideId,
@@ -4242,7 +4330,7 @@ var SolidInner = ({
4242
4330
  const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
4243
4331
  const [outputCanvas, setOutputCanvas] = useState7(null);
4244
4332
  const memoizedEffects = useMemoizedEffects({
4245
- effects: experimentalEffects,
4333
+ effects,
4246
4334
  overrideId: overrideId ?? null
4247
4335
  });
4248
4336
  const sourceCanvas = useMemo17(() => {
@@ -4322,7 +4410,7 @@ var SolidInner = ({
4322
4410
  });
4323
4411
  };
4324
4412
  var SolidOuter = forwardRef5(({
4325
- _experimentalEffects = [],
4413
+ effects = [],
4326
4414
  _experimentalControls: controls,
4327
4415
  color,
4328
4416
  height,
@@ -4336,16 +4424,17 @@ var SolidOuter = forwardRef5(({
4336
4424
  showInTimeline,
4337
4425
  ...props
4338
4426
  }, ref) => {
4339
- const memoizedEffectDefinitions = useMemoizedEffectDefinitions(_experimentalEffects);
4427
+ const memoizedEffectDefinitions = useMemoizedEffectDefinitions(effects);
4340
4428
  return /* @__PURE__ */ jsx14(Sequence, {
4341
4429
  layout: "none",
4342
4430
  from,
4343
4431
  hidden,
4344
4432
  showInTimeline,
4345
4433
  _experimentalControls: controls,
4346
- _experimentalEffects: memoizedEffectDefinitions,
4434
+ _remotionInternalEffects: memoizedEffectDefinitions,
4347
4435
  durationInFrames,
4348
4436
  name: name ?? "<Solid>",
4437
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/solid" : undefined,
4349
4438
  ...props,
4350
4439
  children: /* @__PURE__ */ jsx14(SolidInner, {
4351
4440
  ref,
@@ -4355,7 +4444,7 @@ var SolidOuter = forwardRef5(({
4355
4444
  width,
4356
4445
  className,
4357
4446
  style,
4358
- _experimentalEffects
4447
+ effects
4359
4448
  })
4360
4449
  });
4361
4450
  });
@@ -4570,7 +4659,7 @@ HtmlInCanvasContent.displayName = "HtmlInCanvasContent";
4570
4659
  var HtmlInCanvasInner = forwardRef6(({
4571
4660
  width,
4572
4661
  height,
4573
- _experimentalEffects: effects = [],
4662
+ effects = [],
4574
4663
  children,
4575
4664
  onPaint,
4576
4665
  onInit,
@@ -4586,8 +4675,9 @@ var HtmlInCanvasInner = forwardRef6(({
4586
4675
  return /* @__PURE__ */ jsx15(Sequence, {
4587
4676
  durationInFrames: resolvedDuration,
4588
4677
  name: name ?? "<HtmlInCanvas>",
4678
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/remotion/html-in-canvas" : undefined,
4589
4679
  _experimentalControls: controls,
4590
- _experimentalEffects: memoizedEffectDefinitions,
4680
+ _remotionInternalEffects: memoizedEffectDefinitions,
4591
4681
  layout: "none",
4592
4682
  ...sequenceProps,
4593
4683
  children: /* @__PURE__ */ jsx15(HtmlInCanvasContent, {
@@ -4834,6 +4924,7 @@ var Loop = ({
4834
4924
  durationInFrames,
4835
4925
  from,
4836
4926
  name: name ?? "<Loop>",
4927
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/loop" : undefined,
4837
4928
  _remotionInternalLoopDisplay: loopDisplay,
4838
4929
  layout: props.layout,
4839
4930
  style,
@@ -6109,85 +6200,6 @@ var useBasicMediaInTimeline = ({
6109
6200
  ]);
6110
6201
  return memoizedResult;
6111
6202
  };
6112
- var useImageInTimeline = ({
6113
- src,
6114
- displayName,
6115
- id,
6116
- getStack,
6117
- showInTimeline,
6118
- premountDisplay,
6119
- postmountDisplay,
6120
- loopDisplay,
6121
- controls
6122
- }) => {
6123
- const parentSequence = useContext24(SequenceContext);
6124
- const { registerSequence, unregisterSequence } = useContext24(SequenceManager);
6125
- const { durationInFrames } = useVideoConfig();
6126
- const mediaStartsAt = useMediaStartsAt();
6127
- const { duration, nonce, rootId, finalDisplayName } = useBasicMediaInTimeline({
6128
- volume: undefined,
6129
- mediaVolume: 0,
6130
- mediaType: "image",
6131
- src,
6132
- displayName,
6133
- trimAfter: undefined,
6134
- trimBefore: undefined,
6135
- playbackRate: 1,
6136
- sequenceDurationInFrames: durationInFrames,
6137
- mediaStartsAt,
6138
- loop: false
6139
- });
6140
- const { isStudio } = useRemotionEnvironment();
6141
- useEffect8(() => {
6142
- if (!src) {
6143
- throw new Error("No src passed");
6144
- }
6145
- if (!isStudio && window.process?.env?.NODE_ENV !== "test") {
6146
- return;
6147
- }
6148
- if (!showInTimeline) {
6149
- return;
6150
- }
6151
- registerSequence({
6152
- type: "image",
6153
- src,
6154
- id,
6155
- duration,
6156
- from: 0,
6157
- parent: parentSequence?.id ?? null,
6158
- displayName: finalDisplayName,
6159
- rootId,
6160
- showInTimeline: true,
6161
- nonce: nonce.get(),
6162
- loopDisplay,
6163
- getStack,
6164
- premountDisplay,
6165
- postmountDisplay,
6166
- controls,
6167
- effects: []
6168
- });
6169
- return () => {
6170
- unregisterSequence(id);
6171
- };
6172
- }, [
6173
- duration,
6174
- id,
6175
- parentSequence,
6176
- src,
6177
- registerSequence,
6178
- unregisterSequence,
6179
- nonce,
6180
- getStack,
6181
- showInTimeline,
6182
- premountDisplay,
6183
- postmountDisplay,
6184
- isStudio,
6185
- loopDisplay,
6186
- rootId,
6187
- finalDisplayName,
6188
- controls
6189
- ]);
6190
- };
6191
6203
  var useMediaInTimeline = ({
6192
6204
  volume,
6193
6205
  mediaVolume,
@@ -6200,7 +6212,8 @@ var useMediaInTimeline = ({
6200
6212
  showInTimeline,
6201
6213
  premountDisplay,
6202
6214
  postmountDisplay,
6203
- loopDisplay
6215
+ loopDisplay,
6216
+ documentationLink
6204
6217
  }) => {
6205
6218
  const parentSequence = useContext24(SequenceContext);
6206
6219
  const startsAt = useMediaStartsAt();
@@ -6239,6 +6252,7 @@ var useMediaInTimeline = ({
6239
6252
  from: 0,
6240
6253
  parent: parentSequence?.id ?? null,
6241
6254
  displayName: finalDisplayName,
6255
+ documentationLink,
6242
6256
  rootId,
6243
6257
  volume: volumes,
6244
6258
  showInTimeline: true,
@@ -6274,6 +6288,7 @@ var useMediaInTimeline = ({
6274
6288
  premountDisplay,
6275
6289
  postmountDisplay,
6276
6290
  loopDisplay,
6291
+ documentationLink,
6277
6292
  rootId,
6278
6293
  finalDisplayName,
6279
6294
  isStudio
@@ -7357,7 +7372,8 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
7357
7372
  showInTimeline,
7358
7373
  premountDisplay: sequenceContext?.premountDisplay ?? null,
7359
7374
  postmountDisplay: sequenceContext?.postmountDisplay ?? null,
7360
- loopDisplay: undefined
7375
+ loopDisplay: undefined,
7376
+ documentationLink: name === undefined ? "https://www.remotion.dev/docs/html5-audio" : null
7361
7377
  });
7362
7378
  useMediaPlayback({
7363
7379
  mediaRef: audioRef,
@@ -7874,34 +7890,29 @@ var ImgInner = ({
7874
7890
  stack,
7875
7891
  showInTimeline,
7876
7892
  src,
7893
+ from,
7894
+ durationInFrames,
7877
7895
  _experimentalControls: controls,
7878
7896
  ...props2
7879
7897
  }) => {
7880
- const sequenceContext = useContext32(SequenceContext);
7881
- const [timelineId] = useState17(() => String(Math.random()));
7882
7898
  if (!src) {
7883
7899
  throw new Error('No "src" prop was passed to <Img>.');
7884
7900
  }
7885
- const stackRef = useRef21(null);
7886
- stackRef.current = stack ?? null;
7887
- const getStack = useCallback17(() => stackRef.current, []);
7888
- useImageInTimeline({
7889
- src,
7890
- displayName: name ?? null,
7891
- id: timelineId,
7892
- getStack,
7901
+ return /* @__PURE__ */ jsx26(Sequence, {
7902
+ layout: "none",
7903
+ from: from ?? 0,
7904
+ durationInFrames: durationInFrames ?? Infinity,
7905
+ _remotionInternalStack: stack,
7906
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/img" : undefined,
7907
+ _remotionInternalIsMedia: { type: "image", src },
7908
+ name: name ?? "<Img>",
7909
+ _experimentalControls: controls,
7893
7910
  showInTimeline: showInTimeline ?? true,
7894
- premountDisplay: sequenceContext?.premountDisplay ?? null,
7895
- postmountDisplay: sequenceContext?.postmountDisplay ?? null,
7896
- loopDisplay: undefined,
7897
- controls: controls ?? null
7898
- });
7899
- if (hidden) {
7900
- return null;
7901
- }
7902
- return /* @__PURE__ */ jsx26(ImgContent, {
7903
- src,
7904
- ...props2
7911
+ hidden,
7912
+ children: /* @__PURE__ */ jsx26(ImgContent, {
7913
+ src,
7914
+ ...props2
7915
+ })
7905
7916
  });
7906
7917
  };
7907
7918
  var imgSchema = {
@@ -7918,9 +7929,9 @@ var CompositionManagerProvider = ({
7918
7929
  initialCompositions,
7919
7930
  initialCanvasContent
7920
7931
  }) => {
7921
- const [folders, setFolders] = useState18([]);
7922
- const [canvasContent, setCanvasContent] = useState18(initialCanvasContent);
7923
- const [compositions, setCompositions] = useState18(initialCompositions);
7932
+ const [folders, setFolders] = useState17([]);
7933
+ const [canvasContent, setCanvasContent] = useState17(initialCanvasContent);
7934
+ const [compositions, setCompositions] = useState17(initialCompositions);
7924
7935
  const currentcompositionsRef = useRef22(compositions);
7925
7936
  const updateCompositions = useCallback18((updateComps) => {
7926
7937
  setCompositions((comps) => {
@@ -8063,6 +8074,7 @@ var createEffect = (definition) => {
8063
8074
  const { calculateKey: userCalculateKey, validateParams } = definition;
8064
8075
  const widened = {
8065
8076
  ...definition,
8077
+ documentationLink: definition.documentationLink ?? null,
8066
8078
  calculateKey: (params) => {
8067
8079
  const disabled = params.disabled ?? false;
8068
8080
  return `${userCalculateKey(params)}-disabled-${disabled}`;
@@ -8516,7 +8528,7 @@ var OffthreadVideoForRendering = ({
8516
8528
  toneMapped
8517
8529
  });
8518
8530
  }, [toneMapped, currentTime, src, transparent]);
8519
- const [imageSrc, setImageSrc] = useState19(null);
8531
+ const [imageSrc, setImageSrc] = useState18(null);
8520
8532
  const { delayRender: delayRender2, continueRender: continueRender2 } = useDelayRender();
8521
8533
  useLayoutEffect11(() => {
8522
8534
  if (!window.remotion_videoEnabled) {
@@ -8714,7 +8726,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
8714
8726
  const parentSequence = useContext35(SequenceContext);
8715
8727
  const logLevel = useLogLevel();
8716
8728
  const mountTime = useMountTime();
8717
- const [timelineId] = useState20(() => String(Math.random()));
8729
+ const [timelineId] = useState19(() => String(Math.random()));
8718
8730
  if (typeof acceptableTimeShift !== "undefined") {
8719
8731
  throw new Error("acceptableTimeShift has been removed. Use acceptableTimeShiftInSeconds instead.");
8720
8732
  }
@@ -8741,7 +8753,8 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
8741
8753
  showInTimeline,
8742
8754
  premountDisplay: parentSequence?.premountDisplay ?? null,
8743
8755
  postmountDisplay: parentSequence?.postmountDisplay ?? null,
8744
- loopDisplay: undefined
8756
+ loopDisplay: undefined,
8757
+ documentationLink: name === undefined ? onlyWarnForMediaSeekingError ? "https://www.remotion.dev/docs/offthreadvideo" : "https://www.remotion.dev/docs/html5-video" : null
8745
8758
  });
8746
8759
  useMediaPlayback({
8747
8760
  mediaRef: videoRef,
@@ -8783,7 +8796,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
8783
8796
  useImperativeHandle8(ref, () => {
8784
8797
  return videoRef.current;
8785
8798
  }, []);
8786
- useState20(() => playbackLogging({
8799
+ useState19(() => playbackLogging({
8787
8800
  logLevel,
8788
8801
  message: `Mounting video with source = ${actualSrc}, v=${VERSION}, user agent=${typeof navigator === "undefined" ? "server" : navigator.userAgent}`,
8789
8802
  tag: "video",
@@ -9360,6 +9373,7 @@ var SeriesInner = (props2) => {
9360
9373
  startFrame += durationInFramesProp + offset;
9361
9374
  return /* @__PURE__ */ jsx35(Sequence, {
9362
9375
  name: name || "<Series.Sequence>",
9376
+ _remotionInternalDocumentationLink: name ? undefined : "https://www.remotion.dev/docs/series",
9363
9377
  from: currentStartFrame,
9364
9378
  durationInFrames: durationInFramesProp,
9365
9379
  ...passedProps,
@@ -9372,6 +9386,7 @@ var SeriesInner = (props2) => {
9372
9386
  children: /* @__PURE__ */ jsx35(Sequence, {
9373
9387
  layout: "none",
9374
9388
  name: "<Series>",
9389
+ _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/series",
9375
9390
  ...props2,
9376
9391
  children: childrenValue
9377
9392
  })
@@ -11961,7 +11976,7 @@ var getDefaultConfig = () => {
11961
11976
  var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
11962
11977
 
11963
11978
  // ../design/dist/esm/index.mjs
11964
- import React33, { useEffect as useEffect20, useMemo as useMemo42, useState as useState21 } from "react";
11979
+ import React33, { useEffect as useEffect20, useMemo as useMemo42, useState as useState20 } from "react";
11965
11980
 
11966
11981
  // ../paths/dist/esm/index.mjs
11967
11982
  var cutLInstruction = ({
@@ -16702,7 +16717,7 @@ var getAngle = (ref, coordinates) => {
16702
16717
  };
16703
16718
  var lastCoordinates = null;
16704
16719
  var useMousePosition = (ref) => {
16705
- const [angle, setAngle] = useState21(getAngle(ref.current, lastCoordinates));
16720
+ const [angle, setAngle] = useState20(getAngle(ref.current, lastCoordinates));
16706
16721
  useEffect20(() => {
16707
16722
  const element = ref.current;
16708
16723
  if (!element) {
@@ -25372,14 +25387,14 @@ import { createContext as createContext32 } from "react";
25372
25387
  import { jsx as jsx56, jsxs as jsxs13 } from "react/jsx-runtime";
25373
25388
  import { jsx as jsx214, jsxs as jsxs24, Fragment as Fragment11 } from "react/jsx-runtime";
25374
25389
  import React56 from "react";
25375
- import { useContext as useContext210, useEffect as useEffect42, useState as useState38 } from "react";
25390
+ import { useContext as useContext210, useEffect as useEffect42, useState as useState39 } from "react";
25376
25391
  import { useContext as useContext44, useLayoutEffect as useLayoutEffect17 } from "react";
25377
25392
  import { jsx as jsx313 } from "react/jsx-runtime";
25378
- import { useEffect as useEffect24, useState as useState210 } from "react";
25393
+ import { useEffect as useEffect24, useState as useState24 } from "react";
25379
25394
  import { useLayoutEffect as useLayoutEffect23 } from "react";
25380
25395
  import { useContext as useContext45, useEffect as useEffect52, useRef as useRef43 } from "react";
25381
25396
  import { useEffect as useEffect310, useRef as useRef27 } from "react";
25382
- import { useCallback as useCallback35, useContext as useContext39, useMemo as useMemo52, useRef as useRef44, useState as useState39 } from "react";
25397
+ import { useCallback as useCallback35, useContext as useContext39, useMemo as useMemo52, useRef as useRef44, useState as useState310 } from "react";
25383
25398
  import { useEffect as useEffect43, useRef as useRef310 } from "react";
25384
25399
  import { useCallback as useCallback210, useEffect as useEffect62, useMemo as useMemo212, useState as useState42 } from "react";
25385
25400
  import {
@@ -26836,7 +26851,7 @@ var useBufferStateEmitter = (emitter) => {
26836
26851
  }, [bufferManager, emitter]);
26837
26852
  };
26838
26853
  var PlayerEmitterProvider = ({ children, currentPlaybackRate }) => {
26839
- const [emitter] = useState38(() => new PlayerEmitter);
26854
+ const [emitter] = useState39(() => new PlayerEmitter);
26840
26855
  const bufferManager = useContext210(Internals.BufferingContextReact);
26841
26856
  if (!bufferManager) {
26842
26857
  throw new Error("BufferingContextReact not found");
@@ -26853,7 +26868,7 @@ var PlayerEmitterProvider = ({ children, currentPlaybackRate }) => {
26853
26868
  });
26854
26869
  };
26855
26870
  var useHoverState = (ref, hideControlsWhenPointerDoesntMove) => {
26856
- const [hovered, setHovered] = useState210(false);
26871
+ const [hovered, setHovered] = useState24(false);
26857
26872
  useEffect24(() => {
26858
26873
  const { current } = ref;
26859
26874
  if (!current) {
@@ -26894,7 +26909,7 @@ var useHoverState = (ref, hideControlsWhenPointerDoesntMove) => {
26894
26909
  };
26895
26910
  var usePlayer = () => {
26896
26911
  const [playing, setPlaying, imperativePlaying] = Internals.Timeline.usePlayingState();
26897
- const [hasPlayed, setHasPlayed] = useState39(false);
26912
+ const [hasPlayed, setHasPlayed] = useState310(false);
26898
26913
  const frame = Internals.Timeline.useTimelinePosition();
26899
26914
  const playStart = useRef44(frame);
26900
26915
  const setFrame = Internals.Timeline.useTimelineSetFrame();
@@ -29934,7 +29949,7 @@ import {
29934
29949
  useEffect as useEffect58,
29935
29950
  useMemo as useMemo66,
29936
29951
  useRef as useRef55,
29937
- useState as useState56
29952
+ useState as useState54
29938
29953
  } from "react";
29939
29954
 
29940
29955
  // ../../node_modules/.bun/@babel+runtime@7.27.1/node_modules/@babel/runtime/helpers/esm/extends.js
@@ -30708,7 +30723,7 @@ function useColorMode() {
30708
30723
  }
30709
30724
 
30710
30725
  // ../media/dist/esm/index.mjs
30711
- import { useState as useState311 } from "react";
30726
+ import { useState as useState312 } from "react";
30712
30727
  import { useMemo as useMemo312 } from "react";
30713
30728
  import { useContext as useContext212, useEffect as useEffect44, useMemo as useMemo56, useRef as useRef46, useState as useState40 } from "react";
30714
30729
  import { ALL_FORMATS, Input as Input2, UrlSource } from "mediabunny";
@@ -30716,7 +30731,7 @@ import { AudioBufferSink, InputDisposedError } from "mediabunny";
30716
30731
  import { CanvasSink } from "mediabunny";
30717
30732
  import { useContext as useContext48, useLayoutEffect as useLayoutEffect18 } from "react";
30718
30733
  import { jsx as jsx58 } from "react/jsx-runtime";
30719
- import { useContext as useContext311, useLayoutEffect as useLayoutEffect24, useMemo as useMemo213, useState as useState212 } from "react";
30734
+ import { useContext as useContext311, useLayoutEffect as useLayoutEffect24, useMemo as useMemo213, useState as useState210 } from "react";
30720
30735
  import React211 from "react";
30721
30736
  import {
30722
30737
  ALL_FORMATS as ALL_FORMATS2,
@@ -31552,6 +31567,83 @@ var makeNonceManager = () => {
31552
31567
  createAsyncOperation
31553
31568
  };
31554
31569
  };
31570
+
31571
+ class PremountAwareDelayPlayback {
31572
+ isPremounting;
31573
+ isPostmounting;
31574
+ activeHandles = new Set;
31575
+ delayPlayback;
31576
+ constructor({
31577
+ bufferState,
31578
+ isPremounting,
31579
+ isPostmounting
31580
+ }) {
31581
+ this.delayPlayback = bufferState.delayPlayback;
31582
+ this.isPremounting = isPremounting;
31583
+ this.isPostmounting = isPostmounting;
31584
+ }
31585
+ shouldDelayPlayback() {
31586
+ return !this.isPremounting && !this.isPostmounting;
31587
+ }
31588
+ syncHandles() {
31589
+ for (const handle of this.activeHandles) {
31590
+ if (this.shouldDelayPlayback()) {
31591
+ handle.arm();
31592
+ } else {
31593
+ handle.disarm();
31594
+ }
31595
+ }
31596
+ }
31597
+ setIsPremounting(isPremounting) {
31598
+ this.isPremounting = isPremounting;
31599
+ this.syncHandles();
31600
+ }
31601
+ setIsPostmounting(isPostmounting) {
31602
+ this.isPostmounting = isPostmounting;
31603
+ this.syncHandles();
31604
+ }
31605
+ createHandle() {
31606
+ let armed = false;
31607
+ let unblock = null;
31608
+ let disposed = false;
31609
+ const arm = () => {
31610
+ if (armed || disposed) {
31611
+ return;
31612
+ }
31613
+ unblock = this.delayPlayback().unblock;
31614
+ armed = true;
31615
+ };
31616
+ const disarm = () => {
31617
+ if (!armed) {
31618
+ return;
31619
+ }
31620
+ unblock?.();
31621
+ unblock = null;
31622
+ armed = false;
31623
+ };
31624
+ const entry = {
31625
+ arm,
31626
+ disarm,
31627
+ dispose: () => {}
31628
+ };
31629
+ entry.dispose = () => {
31630
+ if (disposed) {
31631
+ return;
31632
+ }
31633
+ disposed = true;
31634
+ disarm();
31635
+ this.activeHandles.delete(entry);
31636
+ };
31637
+ this.activeHandles.add(entry);
31638
+ if (this.shouldDelayPlayback()) {
31639
+ arm();
31640
+ }
31641
+ return {
31642
+ unblock: entry.dispose,
31643
+ [Symbol.dispose]: entry.dispose
31644
+ };
31645
+ }
31646
+ }
31555
31647
  var BUFFER_SIZE = 3;
31556
31648
  var canvasesAheadOfTime = (videoSink, startTimestamp) => {
31557
31649
  const iterator = videoSink.canvases(startTimestamp);
@@ -31972,9 +32064,7 @@ class MediaPlayer {
31972
32064
  getEffects;
31973
32065
  getEffectChainState;
31974
32066
  initializationPromise = null;
31975
- bufferState;
31976
- isPremounting;
31977
- isPostmounting;
32067
+ premountAwareDelayPlayback;
31978
32068
  seekPromiseChain = Promise.resolve();
31979
32069
  constructor({
31980
32070
  canvas,
@@ -32013,9 +32103,11 @@ class MediaPlayer {
32013
32103
  this.audioStreamIndex = audioStreamIndex;
32014
32104
  this.fps = fps;
32015
32105
  this.debugOverlay = debugOverlay;
32016
- this.bufferState = bufferState;
32017
- this.isPremounting = isPremounting;
32018
- this.isPostmounting = isPostmounting;
32106
+ this.premountAwareDelayPlayback = new PremountAwareDelayPlayback({
32107
+ bufferState,
32108
+ isPremounting,
32109
+ isPostmounting
32110
+ });
32019
32111
  this.sequenceDurationInFrames = durationInFrames;
32020
32112
  this.nonceManager = makeNonceManager();
32021
32113
  this.onVideoFrameCallback = onVideoFrameCallback;
@@ -32271,19 +32363,7 @@ class MediaPlayer {
32271
32363
  this.drawDebugOverlay();
32272
32364
  }
32273
32365
  delayPlaybackHandleIfNotPremounting = () => {
32274
- if (this.isPremounting || this.isPostmounting) {
32275
- return {
32276
- unblock: () => {},
32277
- [Symbol.dispose]: () => {}
32278
- };
32279
- }
32280
- const { unblock } = this.bufferState.delayPlayback();
32281
- return {
32282
- unblock,
32283
- [Symbol.dispose]: () => {
32284
- unblock();
32285
- }
32286
- };
32366
+ return this.premountAwareDelayPlayback.createHandle();
32287
32367
  };
32288
32368
  pause() {
32289
32369
  if (!this.playing) {
@@ -32356,10 +32436,10 @@ class MediaPlayer {
32356
32436
  }
32357
32437
  }
32358
32438
  setIsPremounting(isPremounting) {
32359
- this.isPremounting = isPremounting;
32439
+ this.premountAwareDelayPlayback.setIsPremounting(isPremounting);
32360
32440
  }
32361
32441
  setIsPostmounting(isPostmounting) {
32362
- this.isPostmounting = isPostmounting;
32442
+ this.premountAwareDelayPlayback.setIsPostmounting(isPostmounting);
32363
32443
  }
32364
32444
  async setLoop(loop, unloopedTimeInSeconds) {
32365
32445
  const previousLoop = this.loop;
@@ -34805,7 +34885,7 @@ var AudioForRendering2 = ({
34805
34885
  }
34806
34886
  const { fps } = videoConfig;
34807
34887
  const { delayRender: delayRender2, continueRender } = useDelayRender();
34808
- const [replaceWithHtml5Audio, setReplaceWithHtml5Audio] = useState212(false);
34888
+ const [replaceWithHtml5Audio, setReplaceWithHtml5Audio] = useState210(false);
34809
34889
  const sequenceContext = useContext311(Internals.SequenceContext);
34810
34890
  const id = useMemo213(() => `media-audio-${random(src)}-${sequenceContext?.cumulatedFrom}-${sequenceContext?.relativeFrom}-${sequenceContext?.durationInFrames}`, [
34811
34891
  src,
@@ -35021,7 +35101,7 @@ var AudioInner = (props) => {
35021
35101
  mediaStartsAt,
35022
35102
  loop: props.loop ?? false
35023
35103
  });
35024
- const [mediaDurationInSeconds, setMediaDurationInSeconds] = useState311(null);
35104
+ const [mediaDurationInSeconds, setMediaDurationInSeconds] = useState312(null);
35025
35105
  const loopDisplay = useMemo312(() => getLoopDisplay({
35026
35106
  loop: props.loop ?? false,
35027
35107
  mediaDurationInSeconds,
@@ -35057,6 +35137,7 @@ var AudioInner = (props) => {
35057
35137
  _remotionInternalStack: stack,
35058
35138
  _remotionInternalIsMedia: isMedia,
35059
35139
  name: name ?? "<Audio>",
35140
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/media/audio" : undefined,
35060
35141
  _experimentalControls: controls,
35061
35142
  _remotionInternalLoopDisplay: loopDisplay,
35062
35143
  showInTimeline: showInTimeline ?? true,
@@ -35148,7 +35229,7 @@ var VideoForPreviewAssertedShowing = ({
35148
35229
  credentials,
35149
35230
  objectFit: objectFitProp,
35150
35231
  _experimentalInitiallyDrawCachedFrame,
35151
- _experimentalEffects,
35232
+ effects,
35152
35233
  setMediaDurationInSeconds
35153
35234
  }) => {
35154
35235
  const src = usePreload22(unpreloadedSrc);
@@ -35178,8 +35259,8 @@ var VideoForPreviewAssertedShowing = ({
35178
35259
  }
35179
35260
  warnAboutTooHighVolume22(userPreferredVolume);
35180
35261
  const effectChainState = useEffectChainState2();
35181
- const experimentalEffectsRef = useRef210(_experimentalEffects);
35182
- experimentalEffectsRef.current = _experimentalEffects;
35262
+ const effectsRef = useRef210(effects);
35263
+ effectsRef.current = effects;
35183
35264
  const effectChainStateRef = useRef210(effectChainState);
35184
35265
  effectChainStateRef.current = effectChainState;
35185
35266
  const parentSequence = useContext47(SequenceContext22);
@@ -35286,7 +35367,7 @@ var VideoForPreviewAssertedShowing = ({
35286
35367
  sequenceOffset: initialSequenceOffset.current,
35287
35368
  credentials,
35288
35369
  tagType: "video",
35289
- getEffects: () => experimentalEffectsRef.current,
35370
+ getEffects: () => effectsRef.current,
35290
35371
  getEffectChainState: (width, height) => effectChainStateRef.current?.get(width, height)
35291
35372
  });
35292
35373
  mediaPlayerRef.current = player;
@@ -35428,7 +35509,7 @@ var VideoForPreviewAssertedShowing = ({
35428
35509
  return;
35429
35510
  }
35430
35511
  mediaPlayer.redrawVideoEffects().catch(() => {});
35431
- }, [_experimentalEffects, mediaPlayerReady, mediaPlayerRef]);
35512
+ }, [effects, mediaPlayerReady, mediaPlayerRef]);
35432
35513
  const actualStyle = useMemo412(() => {
35433
35514
  return {
35434
35515
  ...style2,
@@ -35845,7 +35926,7 @@ var InnerVideo = ({
35845
35926
  _experimentalControls: controls,
35846
35927
  objectFit,
35847
35928
  _experimentalInitiallyDrawCachedFrame,
35848
- _experimentalEffects,
35929
+ effects,
35849
35930
  setMediaDurationInSeconds
35850
35931
  }) => {
35851
35932
  const environment = useRemotionEnvironment();
@@ -35917,7 +35998,7 @@ var InnerVideo = ({
35917
35998
  credentials,
35918
35999
  controls,
35919
36000
  objectFit,
35920
- _experimentalEffects,
36001
+ effects,
35921
36002
  _experimentalInitiallyDrawCachedFrame
35922
36003
  });
35923
36004
  };
@@ -35950,7 +36031,7 @@ var VideoInner = ({
35950
36031
  _experimentalControls: controls,
35951
36032
  objectFit,
35952
36033
  _experimentalInitiallyDrawCachedFrame,
35953
- _experimentalEffects,
36034
+ effects,
35954
36035
  durationInFrames,
35955
36036
  from,
35956
36037
  hidden
@@ -35996,10 +36077,10 @@ var VideoInner = ({
35996
36077
  data: basicInfo
35997
36078
  }), [basicInfo]);
35998
36079
  const memoizedEffects = Internals.useMemoizedEffects({
35999
- effects: _experimentalEffects ?? [],
36080
+ effects: effects ?? [],
36000
36081
  overrideId: controls?.overrideId ?? null
36001
36082
  });
36002
- const memoizedEffectDefinitions = Internals.useMemoizedEffectDefinitions(_experimentalEffects ?? []);
36083
+ const memoizedEffectDefinitions = Internals.useMemoizedEffectDefinitions(effects ?? []);
36003
36084
  if (sequenceDurationInFrames === 0) {
36004
36085
  return null;
36005
36086
  }
@@ -36010,9 +36091,10 @@ var VideoInner = ({
36010
36091
  _remotionInternalStack: stack,
36011
36092
  _remotionInternalIsMedia: isMedia,
36012
36093
  name: name ?? "<Video>",
36094
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/media/video" : undefined,
36013
36095
  _experimentalControls: controls,
36014
36096
  _remotionInternalLoopDisplay: loopDisplay,
36015
- _experimentalEffects: memoizedEffectDefinitions,
36097
+ _remotionInternalEffects: memoizedEffectDefinitions,
36016
36098
  showInTimeline: showInTimeline ?? true,
36017
36099
  hidden,
36018
36100
  children: /* @__PURE__ */ jsx65(InnerVideo, {
@@ -36043,7 +36125,7 @@ var VideoInner = ({
36043
36125
  _experimentalControls: controls,
36044
36126
  objectFit: objectFit ?? "contain",
36045
36127
  _experimentalInitiallyDrawCachedFrame: _experimentalInitiallyDrawCachedFrame ?? false,
36046
- _experimentalEffects: memoizedEffects,
36128
+ effects: memoizedEffects,
36047
36129
  setMediaDurationInSeconds
36048
36130
  })
36049
36131
  });
@@ -36052,7 +36134,7 @@ var Video = Internals.wrapInSchema(VideoInner, videoSchema);
36052
36134
  Internals.addSequenceStackTraces(Video);
36053
36135
 
36054
36136
  // src/components/homepage/Demo/Comp.tsx
36055
- import { useCallback as useCallback43, useEffect as useEffect50, useMemo as useMemo59, useState as useState48 } from "react";
36137
+ import { useCallback as useCallback43, useEffect as useEffect50, useMemo as useMemo59, useState as useState47 } from "react";
36056
36138
 
36057
36139
  // src/components/homepage/Demo/Cards.tsx
36058
36140
  import {
@@ -36060,7 +36142,7 @@ import {
36060
36142
  useCallback as useCallback41,
36061
36143
  useEffect as useEffect49,
36062
36144
  useRef as useRef50,
36063
- useState as useState47
36145
+ useState as useState46
36064
36146
  } from "react";
36065
36147
 
36066
36148
  // src/components/homepage/Demo/Card.tsx
@@ -36433,7 +36515,7 @@ import {
36433
36515
 
36434
36516
  // ../lottie/dist/esm/index.mjs
36435
36517
  import lottie from "lottie-web";
36436
- import { useEffect as useEffect46, useRef as useRef48, useState as useState44 } from "react";
36518
+ import { useEffect as useEffect46, useRef as useRef48, useState as useState41 } from "react";
36437
36519
  import { jsx as jsx69 } from "react/jsx-runtime";
36438
36520
  var getLottieMetadata = (animationData) => {
36439
36521
  const width2 = animationData.w;
@@ -36508,7 +36590,7 @@ var Lottie = ({
36508
36590
  const onAnimationLoadedRef = useRef48(onAnimationLoaded);
36509
36591
  onAnimationLoadedRef.current = onAnimationLoaded;
36510
36592
  const { delayRender: delayRender2, continueRender } = useDelayRender();
36511
- const [handle] = useState44(() => delayRender2("Waiting for Lottie animation to load"));
36593
+ const [handle] = useState41(() => delayRender2("Waiting for Lottie animation to load"));
36512
36594
  useEffect46(() => {
36513
36595
  return () => {
36514
36596
  continueRender(handle);
@@ -36604,12 +36686,12 @@ var Lottie = ({
36604
36686
  };
36605
36687
 
36606
36688
  // src/components/homepage/Demo/DisplayedEmoji.tsx
36607
- import { useEffect as useEffect47, useMemo as useMemo57, useState as useState46 } from "react";
36689
+ import { useEffect as useEffect47, useMemo as useMemo57, useState as useState44 } from "react";
36608
36690
  import { jsx as jsx70 } from "react/jsx-runtime";
36609
36691
  var DisplayedEmoji = ({ emoji }) => {
36610
- const [data, setData] = useState46(null);
36692
+ const [data, setData] = useState44(null);
36611
36693
  const { durationInFrames, fps } = useVideoConfig();
36612
- const [browser, setBrowser] = useState46(typeof document !== "undefined");
36694
+ const [browser, setBrowser] = useState44(typeof document !== "undefined");
36613
36695
  const { delayRender: delayRender2, continueRender, cancelRender: cancelRender2 } = useDelayRender();
36614
36696
  const src = useMemo57(() => {
36615
36697
  if (emoji === "melting") {
@@ -36623,7 +36705,7 @@ var DisplayedEmoji = ({ emoji }) => {
36623
36705
  }
36624
36706
  throw new Error("Unknown emoji");
36625
36707
  }, [emoji]);
36626
- const [handle] = useState46(() => delayRender2("Loading emojis!"));
36708
+ const [handle] = useState44(() => delayRender2("Loading emojis!"));
36627
36709
  useEffect47(() => {
36628
36710
  fetch(src).then((res) => res.json()).then((json) => {
36629
36711
  setData({
@@ -37155,7 +37237,7 @@ var Cards = ({
37155
37237
  trending
37156
37238
  }) => {
37157
37239
  const container4 = useRef50(null);
37158
- const [refs] = useState47(() => {
37240
+ const [refs] = useState46(() => {
37159
37241
  return new Array(4).fill(true).map(() => {
37160
37242
  return createRef4();
37161
37243
  });
@@ -37253,7 +37335,7 @@ var HomepageVideoComp = ({
37253
37335
  onClickLeft,
37254
37336
  onClickRight
37255
37337
  }) => {
37256
- const [rerenders, setRerenders] = useState48(0);
37338
+ const [rerenders, setRerenders] = useState47(0);
37257
37339
  const onUpdate = useCallback43((newIndices) => {
37258
37340
  setRerenders(rerenders + 1);
37259
37341
  updateCardOrder(newIndices);
@@ -37352,7 +37434,7 @@ import {
37352
37434
  import { BufferTarget, StreamTarget } from "mediabunny";
37353
37435
 
37354
37436
  // ../core/dist/esm/version.mjs
37355
- var VERSION2 = "4.0.464";
37437
+ var VERSION2 = "4.0.466";
37356
37438
 
37357
37439
  // ../web-renderer/dist/esm/index.mjs
37358
37440
  import { AudioSample, VideoSample } from "mediabunny";
@@ -37360,7 +37442,7 @@ import { AudioSampleSource } from "mediabunny";
37360
37442
  import { createRef as createRef6 } from "react";
37361
37443
  import { flushSync as flushSync22 } from "react-dom";
37362
37444
  import ReactDOM6 from "react-dom/client";
37363
- import { useImperativeHandle as useImperativeHandle13, useState as useState49 } from "react";
37445
+ import { useImperativeHandle as useImperativeHandle13, useState as useState48 } from "react";
37364
37446
  import { flushSync as flushSync3 } from "react-dom";
37365
37447
  import { jsx as jsx88 } from "react/jsx-runtime";
37366
37448
  import { jsx as jsx217 } from "react/jsx-runtime";
@@ -37991,7 +38073,7 @@ var UpdateTime = ({
37991
38073
  initialFrame,
37992
38074
  timeUpdater
37993
38075
  }) => {
37994
- const [frame, setFrame] = useState49(initialFrame);
38076
+ const [frame, setFrame] = useState48(initialFrame);
37995
38077
  useImperativeHandle13(timeUpdater, () => ({
37996
38078
  update: (f) => {
37997
38079
  flushSync3(() => {
@@ -42357,12 +42439,12 @@ var DragAndDropNudge = () => {
42357
42439
  };
42358
42440
 
42359
42441
  // src/components/homepage/Demo/PlayerSeekBar.tsx
42360
- import { useCallback as useCallback47, useEffect as useEffect53, useMemo as useMemo64, useRef as useRef51, useState as useState51 } from "react";
42442
+ import { useCallback as useCallback47, useEffect as useEffect53, useMemo as useMemo64, useRef as useRef51, useState as useState50 } from "react";
42361
42443
 
42362
42444
  // src/components/homepage/layout/use-el-size.ts
42363
- import { useCallback as useCallback46, useEffect as useEffect51, useMemo as useMemo61, useState as useState50 } from "react";
42445
+ import { useCallback as useCallback46, useEffect as useEffect51, useMemo as useMemo61, useState as useState49 } from "react";
42364
42446
  var useElementSize2 = (ref) => {
42365
- const [size4, setSize] = useState50(null);
42447
+ const [size4, setSize] = useState49(null);
42366
42448
  const observer = useMemo61(() => {
42367
42449
  if (typeof ResizeObserver === "undefined") {
42368
42450
  return;
@@ -42439,7 +42521,7 @@ var findBodyInWhichDivIsLocated2 = (div) => {
42439
42521
  return current;
42440
42522
  };
42441
42523
  var useHoverState2 = (ref, hideControlsWhenPointerDoesntMove) => {
42442
- const [hovered, setHovered] = useState51(false);
42524
+ const [hovered, setHovered] = useState50(false);
42443
42525
  useEffect53(() => {
42444
42526
  const { current } = ref;
42445
42527
  if (!current) {
@@ -42489,8 +42571,8 @@ var PlayerSeekBar2 = ({
42489
42571
  const containerRef = useRef51(null);
42490
42572
  const barHovered = useHoverState2(containerRef, false);
42491
42573
  const size4 = useElementSize2(containerRef.current);
42492
- const [playing, setPlaying] = useState51(false);
42493
- const [frame, setFrame] = useState51(0);
42574
+ const [playing, setPlaying] = useState50(false);
42575
+ const [frame, setFrame] = useState50(0);
42494
42576
  useEffect53(() => {
42495
42577
  const { current } = playerRef;
42496
42578
  if (!current) {
@@ -42522,7 +42604,7 @@ var PlayerSeekBar2 = ({
42522
42604
  current.removeEventListener("pause", onPause);
42523
42605
  };
42524
42606
  }, [playerRef]);
42525
- const [dragging, setDragging] = useState51({
42607
+ const [dragging, setDragging] = useState50({
42526
42608
  dragging: false
42527
42609
  });
42528
42610
  const width2 = size4?.width ?? 0;
@@ -42635,7 +42717,7 @@ var PlayerSeekBar2 = ({
42635
42717
  };
42636
42718
 
42637
42719
  // src/components/homepage/Demo/PlayerVolume.tsx
42638
- import { useCallback as useCallback48, useEffect as useEffect55, useRef as useRef53, useState as useState54 } from "react";
42720
+ import { useCallback as useCallback48, useEffect as useEffect55, useRef as useRef53, useState as useState51 } from "react";
42639
42721
 
42640
42722
  // src/components/homepage/Demo/icons.tsx
42641
42723
  import { jsx as jsx101 } from "react/jsx-runtime";
@@ -42693,8 +42775,8 @@ var IsMutedIcon = (props) => {
42693
42775
  // src/components/homepage/Demo/PlayerVolume.tsx
42694
42776
  import { jsx as jsx105 } from "react/jsx-runtime";
42695
42777
  var PlayerVolume = ({ playerRef }) => {
42696
- const [muted, setIsMuted] = useState54(() => playerRef.current?.isMuted() ?? true);
42697
- const [isHovered, setIsHovered] = useState54(false);
42778
+ const [muted, setIsMuted] = useState51(() => playerRef.current?.isMuted() ?? true);
42779
+ const [isHovered, setIsHovered] = useState51(false);
42698
42780
  const timerRef = useRef53(null);
42699
42781
  useEffect55(() => {
42700
42782
  const { current } = playerRef;
@@ -42983,12 +43065,12 @@ var playerWrapper = {
42983
43065
  };
42984
43066
  var Demo = () => {
42985
43067
  const { colorMode } = useColorMode();
42986
- const [data2, setData] = useState56(null);
43068
+ const [data2, setData] = useState54(null);
42987
43069
  const ref = useRef55(null);
42988
- const [isFullscreen, setIsFullscreen] = useState56(false);
42989
- const [cardOrder, setCardOrder] = useState56([0, 1, 2, 3]);
42990
- const [emojiIndex, setEmojiIndex] = useState56(0);
42991
- const [error2, setError] = useState56(false);
43070
+ const [isFullscreen, setIsFullscreen] = useState54(false);
43071
+ const [cardOrder, setCardOrder] = useState54([0, 1, 2, 3]);
43072
+ const [emojiIndex, setEmojiIndex] = useState54(0);
43073
+ const [error2, setError] = useState54(false);
42992
43074
  useEffect58(() => {
42993
43075
  getDataAndProps().then((d2) => {
42994
43076
  setData(d2);
@@ -43147,7 +43229,7 @@ import { forwardRef as forwardRef39, useEffect as useEffect60, useImperativeHand
43147
43229
  // src/components/homepage/VideoPlayerWithControls.tsx
43148
43230
  import Hls from "hls.js";
43149
43231
  import"plyr/dist/plyr.css";
43150
- import { forwardRef as forwardRef38, useCallback as useCallback51, useEffect as useEffect59, useRef as useRef56, useState as useState57 } from "react";
43232
+ import { forwardRef as forwardRef38, useCallback as useCallback51, useEffect as useEffect59, useRef as useRef56, useState as useState56 } from "react";
43151
43233
  import { jsx as jsx116 } from "react/jsx-runtime";
43152
43234
  var useCombinedRefs = function(...refs) {
43153
43235
  const targetRef = useRef56(null);
@@ -43168,7 +43250,7 @@ var VideoPlayerWithControls = forwardRef38(({ playbackId, poster, currentTime, o
43168
43250
  const videoRef = useRef56(null);
43169
43251
  const metaRef = useCombinedRefs(ref, videoRef);
43170
43252
  const playerRef = useRef56(null);
43171
- const [playerInitTime] = useState57(Date.now());
43253
+ const [playerInitTime] = useState56(Date.now());
43172
43254
  const videoError = useCallback51((event) => onError(event), [onError]);
43173
43255
  const onImageLoad = useCallback51((event) => {
43174
43256
  const [w, h] = [event.target.width, event.target.height];
@@ -43368,10 +43450,10 @@ var EditorStarterSection = () => {
43368
43450
  var EditorStarterSection_default = EditorStarterSection;
43369
43451
 
43370
43452
  // src/components/homepage/EvaluateRemotion.tsx
43371
- import { useEffect as useEffect61, useState as useState58 } from "react";
43453
+ import { useEffect as useEffect61, useState as useState57 } from "react";
43372
43454
  import { jsx as jsx119, jsxs as jsxs40 } from "react/jsx-runtime";
43373
43455
  var EvaluateRemotionSection = () => {
43374
- const [dailyAvatars, setDailyAvatars] = useState58([]);
43456
+ const [dailyAvatars, setDailyAvatars] = useState57([]);
43375
43457
  useEffect61(() => {
43376
43458
  const avatars = experts.map((expert) => expert.image);
43377
43459
  const selectedAvatars = [];
@@ -43469,7 +43551,7 @@ var EvaluateRemotionSection = () => {
43469
43551
  var EvaluateRemotion_default = EvaluateRemotionSection;
43470
43552
 
43471
43553
  // src/components/homepage/IfYouKnowReact.tsx
43472
- import { useEffect as useEffect63, useState as useState59 } from "react";
43554
+ import { useEffect as useEffect63, useState as useState58 } from "react";
43473
43555
  import { jsx as jsx120, jsxs as jsxs41 } from "react/jsx-runtime";
43474
43556
  var isWebkit = () => {
43475
43557
  if (typeof window === "undefined") {
@@ -43484,7 +43566,7 @@ var icon2 = {
43484
43566
  marginLeft: 10
43485
43567
  };
43486
43568
  var IfYouKnowReact = () => {
43487
- const [vid, setVid] = useState59("/img/compose.webm");
43569
+ const [vid, setVid] = useState58("/img/compose.webm");
43488
43570
  useEffect63(() => {
43489
43571
  if (isWebkit()) {
43490
43572
  setVid("/img/compose.mp4");
@@ -43544,12 +43626,12 @@ var IfYouKnowReact = () => {
43544
43626
  };
43545
43627
 
43546
43628
  // src/components/homepage/NewsletterButton.tsx
43547
- import { useCallback as useCallback53, useState as useState60 } from "react";
43629
+ import { useCallback as useCallback53, useState as useState59 } from "react";
43548
43630
  import { jsx as jsx121, jsxs as jsxs44 } from "react/jsx-runtime";
43549
43631
  var NewsletterButton = () => {
43550
- const [email, setEmail] = useState60("");
43551
- const [submitting, setSubmitting] = useState60(false);
43552
- const [subscribed, setSubscribed] = useState60(false);
43632
+ const [email, setEmail] = useState59("");
43633
+ const [submitting, setSubmitting] = useState59(false);
43634
+ const [subscribed, setSubscribed] = useState59(false);
43553
43635
  const handleSubmit = useCallback53(async (e) => {
43554
43636
  try {
43555
43637
  setSubmitting(true);
@@ -43632,7 +43714,7 @@ var NewsletterButton = () => {
43632
43714
  };
43633
43715
 
43634
43716
  // src/components/homepage/ParameterizeAndEdit.tsx
43635
- import { useEffect as useEffect65, useRef as useRef58, useState as useState61 } from "react";
43717
+ import { useEffect as useEffect65, useRef as useRef58, useState as useState60 } from "react";
43636
43718
  import { jsx as jsx124, jsxs as jsxs46 } from "react/jsx-runtime";
43637
43719
  var icon3 = {
43638
43720
  height: 16,
@@ -43640,7 +43722,7 @@ var icon3 = {
43640
43722
  };
43641
43723
  var ParameterizeAndEdit = () => {
43642
43724
  const ref = useRef58(null);
43643
- const [vid, setVid] = useState61("/img/editing-vp9-chrome.webm");
43725
+ const [vid, setVid] = useState60("/img/editing-vp9-chrome.webm");
43644
43726
  useEffect65(() => {
43645
43727
  if (isWebkit()) {
43646
43728
  setVid("/img/editing-safari.mp4");
@@ -43755,7 +43837,7 @@ var ParameterizeAndEdit = () => {
43755
43837
  };
43756
43838
 
43757
43839
  // src/components/homepage/RealMp4Videos.tsx
43758
- import { useEffect as useEffect66, useRef as useRef59, useState as useState64 } from "react";
43840
+ import { useEffect as useEffect66, useRef as useRef59, useState as useState61 } from "react";
43759
43841
  import { jsx as jsx126, jsxs as jsxs47 } from "react/jsx-runtime";
43760
43842
  var icon4 = {
43761
43843
  height: 16,
@@ -43764,7 +43846,7 @@ var icon4 = {
43764
43846
  var RealMP4Videos = () => {
43765
43847
  const ref = useRef59(null);
43766
43848
  const videoRef = useRef59(null);
43767
- const [vid, setVid] = useState64("/img/render-progress.webm");
43849
+ const [vid, setVid] = useState61("/img/render-progress.webm");
43768
43850
  useEffect66(() => {
43769
43851
  if (isWebkit()) {
43770
43852
  setVid("/img/render-progress.mp4");
@@ -44016,7 +44098,7 @@ var TrustedByBanner = () => {
44016
44098
  var TrustedByBanner_default = TrustedByBanner;
44017
44099
 
44018
44100
  // src/components/homepage/VideoAppsShowcase.tsx
44019
- import { useRef as useRef60, useState as useState66 } from "react";
44101
+ import { useRef as useRef60, useState as useState64 } from "react";
44020
44102
  import { jsx as jsx128, jsxs as jsxs49 } from "react/jsx-runtime";
44021
44103
  var tabs = [
44022
44104
  "Music visualization",
@@ -44069,10 +44151,10 @@ var icon5 = {
44069
44151
  marginLeft: 10
44070
44152
  };
44071
44153
  var VideoAppsShowcase = () => {
44072
- const [activeTab, setActiveTab] = useState66(0);
44073
- const [isMuted, setIsMuted] = useState66(true);
44074
- const [isPlaying, setIsPlaying] = useState66(false);
44075
- const [videoLoaded, setVideoLoaded] = useState66(false);
44154
+ const [activeTab, setActiveTab] = useState64(0);
44155
+ const [isMuted, setIsMuted] = useState64(true);
44156
+ const [isPlaying, setIsPlaying] = useState64(false);
44157
+ const [videoLoaded, setVideoLoaded] = useState64(false);
44076
44158
  const videoRef = useRef60(null);
44077
44159
  const containerRef = useRef60(null);
44078
44160
  const handleTabChange = (index2) => {
@@ -45592,7 +45674,7 @@ var ChooseTemplate = () => {
45592
45674
  };
45593
45675
 
45594
45676
  // src/components/homepage/GetStartedStrip.tsx
45595
- import { useState as useState67 } from "react";
45677
+ import { useState as useState66 } from "react";
45596
45678
 
45597
45679
  // src/components/homepage/GitHubButton.tsx
45598
45680
  import { jsx as jsx164, jsxs as jsxs65 } from "react/jsx-runtime";
@@ -45627,7 +45709,7 @@ var GithubButton = () => {
45627
45709
  // src/components/homepage/GetStartedStrip.tsx
45628
45710
  import { jsx as jsx166, jsxs as jsxs66 } from "react/jsx-runtime";
45629
45711
  var GetStarted = () => {
45630
- const [clicked, setClicked] = useState67(null);
45712
+ const [clicked, setClicked] = useState66(null);
45631
45713
  return /* @__PURE__ */ jsxs66("div", {
45632
45714
  className: "flex flex-col lg:flex-row items-center justify-center text-center w-full",
45633
45715
  children: [