@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/design.js CHANGED
@@ -1378,7 +1378,7 @@ var getDefaultConfig = () => {
1378
1378
  var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
1379
1379
 
1380
1380
  // ../design/dist/esm/index.mjs
1381
- import React33, { useEffect as useEffect20, useMemo as useMemo39, useState as useState21 } from "react";
1381
+ import React33, { useEffect as useEffect20, useMemo as useMemo39, useState as useState20 } from "react";
1382
1382
 
1383
1383
  // ../paths/dist/esm/index.mjs
1384
1384
  var cutLInstruction = ({
@@ -5890,8 +5890,7 @@ import {
5890
5890
  useContext as useContext32,
5891
5891
  useImperativeHandle as useImperativeHandle6,
5892
5892
  useLayoutEffect as useLayoutEffect10,
5893
- useRef as useRef21,
5894
- useState as useState17
5893
+ useRef as useRef21
5895
5894
  } from "react";
5896
5895
  import { jsx as jsx26 } from "react/jsx-runtime";
5897
5896
  import { createRef as createRef3 } from "react";
@@ -5901,7 +5900,7 @@ import {
5901
5900
  useImperativeHandle as useImperativeHandle7,
5902
5901
  useMemo as useMemo31,
5903
5902
  useRef as useRef22,
5904
- useState as useState18
5903
+ useState as useState17
5905
5904
  } from "react";
5906
5905
  import { jsx as jsx27 } from "react/jsx-runtime";
5907
5906
  import React29 from "react";
@@ -5918,7 +5917,7 @@ import {
5918
5917
  useEffect as useEffect16,
5919
5918
  useLayoutEffect as useLayoutEffect11,
5920
5919
  useMemo as useMemo34,
5921
- useState as useState19
5920
+ useState as useState18
5922
5921
  } from "react";
5923
5922
  import { jsx as jsx30 } from "react/jsx-runtime";
5924
5923
  import React34, {
@@ -5928,7 +5927,7 @@ import React34, {
5928
5927
  useImperativeHandle as useImperativeHandle8,
5929
5928
  useMemo as useMemo35,
5930
5929
  useRef as useRef23,
5931
- useState as useState20,
5930
+ useState as useState19,
5932
5931
  useCallback as useCallback20
5933
5932
  } from "react";
5934
5933
  import { useEffect as useEffect17 } from "react";
@@ -5990,20 +5989,70 @@ var CompositionRenderErrorContext = createContext3({
5990
5989
  setError: () => {},
5991
5990
  clearError: () => {}
5992
5991
  });
5992
+ var getHot = () => {
5993
+ try {
5994
+ if (typeof __webpack_module__ === "undefined") {
5995
+ return null;
5996
+ }
5997
+ return __webpack_module__.hot ?? null;
5998
+ } catch {
5999
+ return null;
6000
+ }
6001
+ };
5993
6002
 
5994
6003
  class CompositionErrorBoundary extends React2.Component {
5995
6004
  state = { hasError: false };
6005
+ hmrStatusHandler = null;
5996
6006
  static getDerivedStateFromError() {
5997
6007
  return { hasError: true };
5998
6008
  }
5999
6009
  componentDidCatch(error) {
6000
6010
  this.props.onError(error);
6011
+ this.subscribeToHmrReset();
6001
6012
  }
6002
- componentDidUpdate(_prevProps) {
6013
+ componentDidMount() {
6003
6014
  if (!this.state.hasError) {
6004
6015
  this.props.onClear();
6005
6016
  }
6006
6017
  }
6018
+ componentDidUpdate(_prevProps, prevState) {
6019
+ if (prevState.hasError && !this.state.hasError) {
6020
+ this.props.onClear();
6021
+ }
6022
+ }
6023
+ componentWillUnmount() {
6024
+ this.unsubscribeFromHmrReset();
6025
+ }
6026
+ subscribeToHmrReset() {
6027
+ if (this.hmrStatusHandler) {
6028
+ return;
6029
+ }
6030
+ const hot = getHot();
6031
+ if (!hot) {
6032
+ return;
6033
+ }
6034
+ const handler = (status) => {
6035
+ if (status !== "idle") {
6036
+ return;
6037
+ }
6038
+ this.unsubscribeFromHmrReset();
6039
+ this.setState({ hasError: false });
6040
+ };
6041
+ this.hmrStatusHandler = handler;
6042
+ hot.addStatusHandler(handler);
6043
+ }
6044
+ unsubscribeFromHmrReset() {
6045
+ const handler = this.hmrStatusHandler;
6046
+ if (!handler) {
6047
+ return;
6048
+ }
6049
+ this.hmrStatusHandler = null;
6050
+ const hot = getHot();
6051
+ if (!hot) {
6052
+ return;
6053
+ }
6054
+ hot.removeStatusHandler(handler);
6055
+ }
6007
6056
  render() {
6008
6057
  if (this.state.hasError) {
6009
6058
  return null;
@@ -7026,7 +7075,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
7026
7075
  var addSequenceStackTraces = (component) => {
7027
7076
  componentsToAddStacksTo.push(component);
7028
7077
  };
7029
- var VERSION = "4.0.464";
7078
+ var VERSION = "4.0.466";
7030
7079
  var checkMultipleRemotionVersions = () => {
7031
7080
  if (typeof globalThis === "undefined") {
7032
7081
  return;
@@ -8071,9 +8120,10 @@ var RegularSequenceRefForwardingFunction = ({
8071
8120
  showInTimeline = true,
8072
8121
  hidden = false,
8073
8122
  _experimentalControls: controls,
8074
- _experimentalEffects,
8123
+ _remotionInternalEffects,
8075
8124
  _remotionInternalLoopDisplay: loopDisplay,
8076
8125
  _remotionInternalStack: stack,
8126
+ _remotionInternalDocumentationLink: documentationLink,
8077
8127
  _remotionInternalPremountDisplay: premountDisplay,
8078
8128
  _remotionInternalPostmountDisplay: postmountDisplay,
8079
8129
  _remotionInternalIsMedia: isMedia,
@@ -8144,6 +8194,7 @@ var RegularSequenceRefForwardingFunction = ({
8144
8194
  const timelineClipName = useMemo14(() => {
8145
8195
  return name ?? "";
8146
8196
  }, [name]);
8197
+ const resolvedDocumentationLink = documentationLink ?? (name === undefined ? "https://www.remotion.dev/docs/sequence" : null);
8147
8198
  const env = useRemotionEnvironment();
8148
8199
  const inheritedStack = other?.stack ?? null;
8149
8200
  const stackRef = useRef6(null);
@@ -8153,28 +8204,51 @@ var RegularSequenceRefForwardingFunction = ({
8153
8204
  return;
8154
8205
  }
8155
8206
  if (isMedia) {
8156
- registerSequence({
8157
- type: isMedia.type,
8158
- controls: controls ?? null,
8159
- effects: _experimentalEffects ?? [],
8160
- displayName: timelineClipName,
8161
- doesVolumeChange: isMedia.data.doesVolumeChange,
8162
- duration: actualDurationInFrames,
8163
- from,
8164
- id,
8165
- loopDisplay,
8166
- nonce: nonce.get(),
8167
- parent: parentSequence?.id ?? null,
8168
- playbackRate: isMedia.data.playbackRate,
8169
- postmountDisplay: postmountDisplay ?? null,
8170
- premountDisplay: premountDisplay ?? null,
8171
- rootId,
8172
- showInTimeline,
8173
- src: isMedia.data.src,
8174
- getStack: () => stackRef.current,
8175
- startMediaFrom: isMedia.data.startMediaFrom,
8176
- volume: isMedia.data.volumes
8177
- });
8207
+ if (isMedia.type === "image") {
8208
+ registerSequence({
8209
+ type: "image",
8210
+ controls: controls ?? null,
8211
+ effects: _remotionInternalEffects ?? [],
8212
+ displayName: timelineClipName,
8213
+ documentationLink: resolvedDocumentationLink,
8214
+ duration: actualDurationInFrames,
8215
+ from,
8216
+ id,
8217
+ loopDisplay,
8218
+ nonce: nonce.get(),
8219
+ parent: parentSequence?.id ?? null,
8220
+ postmountDisplay: postmountDisplay ?? null,
8221
+ premountDisplay: premountDisplay ?? null,
8222
+ rootId,
8223
+ showInTimeline,
8224
+ src: isMedia.src,
8225
+ getStack: () => stackRef.current
8226
+ });
8227
+ } else {
8228
+ registerSequence({
8229
+ type: isMedia.type,
8230
+ controls: controls ?? null,
8231
+ effects: _remotionInternalEffects ?? [],
8232
+ displayName: timelineClipName,
8233
+ documentationLink: resolvedDocumentationLink,
8234
+ doesVolumeChange: isMedia.data.doesVolumeChange,
8235
+ duration: actualDurationInFrames,
8236
+ from,
8237
+ id,
8238
+ loopDisplay,
8239
+ nonce: nonce.get(),
8240
+ parent: parentSequence?.id ?? null,
8241
+ playbackRate: isMedia.data.playbackRate,
8242
+ postmountDisplay: postmountDisplay ?? null,
8243
+ premountDisplay: premountDisplay ?? null,
8244
+ rootId,
8245
+ showInTimeline,
8246
+ src: isMedia.data.src,
8247
+ getStack: () => stackRef.current,
8248
+ startMediaFrom: isMedia.data.startMediaFrom,
8249
+ volume: isMedia.data.volumes
8250
+ });
8251
+ }
8178
8252
  return () => {
8179
8253
  unregisterSequence(id);
8180
8254
  };
@@ -8184,6 +8258,7 @@ var RegularSequenceRefForwardingFunction = ({
8184
8258
  duration: actualDurationInFrames,
8185
8259
  id,
8186
8260
  displayName: timelineClipName,
8261
+ documentationLink: resolvedDocumentationLink,
8187
8262
  parent: parentSequence?.id ?? null,
8188
8263
  type: "sequence",
8189
8264
  rootId,
@@ -8194,7 +8269,7 @@ var RegularSequenceRefForwardingFunction = ({
8194
8269
  premountDisplay: premountDisplay ?? null,
8195
8270
  postmountDisplay: postmountDisplay ?? null,
8196
8271
  controls: controls ?? null,
8197
- effects: _experimentalEffects ?? []
8272
+ effects: _remotionInternalEffects ?? []
8198
8273
  });
8199
8274
  return () => {
8200
8275
  unregisterSequence(id);
@@ -8217,8 +8292,9 @@ var RegularSequenceRefForwardingFunction = ({
8217
8292
  postmountDisplay,
8218
8293
  env.isStudio,
8219
8294
  controls,
8220
- _experimentalEffects,
8221
- isMedia
8295
+ _remotionInternalEffects,
8296
+ isMedia,
8297
+ resolvedDocumentationLink
8222
8298
  ]);
8223
8299
  const endThreshold = Math.ceil(cumulatedFrom + from + durationInFrames - 1);
8224
8300
  const content = absoluteFrame < cumulatedFrom + from ? null : absoluteFrame > endThreshold ? null : children;
@@ -8495,6 +8571,7 @@ var runEffectChain = async ({
8495
8571
  if (isCancelled()) {
8496
8572
  return false;
8497
8573
  }
8574
+ let flipWebGLSourceY = true;
8498
8575
  for (let runIndex = 0;runIndex < runs.length; runIndex++) {
8499
8576
  const run = runs[runIndex];
8500
8577
  const [a, b] = state.pool.getPair(run.backend);
@@ -8509,9 +8586,11 @@ var runEffectChain = async ({
8509
8586
  params: eff.params,
8510
8587
  width,
8511
8588
  height,
8512
- gpuDevice
8589
+ gpuDevice,
8590
+ flipSourceY: run.backend === "webgl2" ? flipWebGLSourceY : false
8513
8591
  });
8514
8592
  if (run.backend === "webgl2") {
8593
+ flipWebGLSourceY = false;
8515
8594
  state.pool.assertContextNotLost(dst);
8516
8595
  }
8517
8596
  currentImage = dst;
@@ -8520,12 +8599,20 @@ var runEffectChain = async ({
8520
8599
  lastTarget = currentImage ?? lastTarget;
8521
8600
  const nextRun = runs[runIndex + 1];
8522
8601
  if (nextRun && nextRun.backend !== run.backend && lastTarget) {
8523
- const bitmap = await createImageBitmap(lastTarget);
8524
- if (isCancelled()) {
8525
- bitmap.close();
8526
- return false;
8602
+ if (run.backend === "2d" && nextRun.backend === "webgl2") {
8603
+ currentImage = lastTarget;
8604
+ flipWebGLSourceY = true;
8605
+ } else {
8606
+ const bitmap = await createImageBitmap(lastTarget);
8607
+ if (isCancelled()) {
8608
+ bitmap.close();
8609
+ return false;
8610
+ }
8611
+ currentImage = bitmap;
8612
+ if (nextRun.backend === "webgl2") {
8613
+ flipWebGLSourceY = false;
8614
+ }
8527
8615
  }
8528
- currentImage = bitmap;
8529
8616
  }
8530
8617
  }
8531
8618
  if (!lastTarget) {
@@ -8971,7 +9058,7 @@ var AnimatedImageInner = ({
8971
9058
  className,
8972
9059
  style,
8973
9060
  durationInFrames,
8974
- _experimentalEffects: effects = [],
9061
+ effects = [],
8975
9062
  _experimentalControls: controls,
8976
9063
  ref,
8977
9064
  ...sequenceProps
@@ -8995,8 +9082,9 @@ var AnimatedImageInner = ({
8995
9082
  layout: "none",
8996
9083
  durationInFrames: resolvedDuration,
8997
9084
  name: "<AnimatedImage>",
9085
+ _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/animatedimage",
8998
9086
  _experimentalControls: controls,
8999
- _experimentalEffects: memoizedEffectDefinitions,
9087
+ _remotionInternalEffects: memoizedEffectDefinitions,
9000
9088
  ...sequenceProps,
9001
9089
  children: /* @__PURE__ */ jsx13(AnimatedImageContent, {
9002
9090
  ...animatedImageProps,
@@ -9035,7 +9123,7 @@ var SolidInner = ({
9035
9123
  color,
9036
9124
  width,
9037
9125
  height,
9038
- _experimentalEffects: experimentalEffects = [],
9126
+ effects = [],
9039
9127
  className,
9040
9128
  style,
9041
9129
  overrideId,
@@ -9044,7 +9132,7 @@ var SolidInner = ({
9044
9132
  const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
9045
9133
  const [outputCanvas, setOutputCanvas] = useState7(null);
9046
9134
  const memoizedEffects = useMemoizedEffects({
9047
- effects: experimentalEffects,
9135
+ effects,
9048
9136
  overrideId: overrideId ?? null
9049
9137
  });
9050
9138
  const sourceCanvas = useMemo17(() => {
@@ -9124,7 +9212,7 @@ var SolidInner = ({
9124
9212
  });
9125
9213
  };
9126
9214
  var SolidOuter = forwardRef5(({
9127
- _experimentalEffects = [],
9215
+ effects = [],
9128
9216
  _experimentalControls: controls,
9129
9217
  color,
9130
9218
  height,
@@ -9138,16 +9226,17 @@ var SolidOuter = forwardRef5(({
9138
9226
  showInTimeline,
9139
9227
  ...props
9140
9228
  }, ref) => {
9141
- const memoizedEffectDefinitions = useMemoizedEffectDefinitions(_experimentalEffects);
9229
+ const memoizedEffectDefinitions = useMemoizedEffectDefinitions(effects);
9142
9230
  return /* @__PURE__ */ jsx14(Sequence, {
9143
9231
  layout: "none",
9144
9232
  from,
9145
9233
  hidden,
9146
9234
  showInTimeline,
9147
9235
  _experimentalControls: controls,
9148
- _experimentalEffects: memoizedEffectDefinitions,
9236
+ _remotionInternalEffects: memoizedEffectDefinitions,
9149
9237
  durationInFrames,
9150
9238
  name: name ?? "<Solid>",
9239
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/solid" : undefined,
9151
9240
  ...props,
9152
9241
  children: /* @__PURE__ */ jsx14(SolidInner, {
9153
9242
  ref,
@@ -9157,7 +9246,7 @@ var SolidOuter = forwardRef5(({
9157
9246
  width,
9158
9247
  className,
9159
9248
  style,
9160
- _experimentalEffects
9249
+ effects
9161
9250
  })
9162
9251
  });
9163
9252
  });
@@ -9372,7 +9461,7 @@ HtmlInCanvasContent.displayName = "HtmlInCanvasContent";
9372
9461
  var HtmlInCanvasInner = forwardRef6(({
9373
9462
  width,
9374
9463
  height,
9375
- _experimentalEffects: effects = [],
9464
+ effects = [],
9376
9465
  children,
9377
9466
  onPaint,
9378
9467
  onInit,
@@ -9388,8 +9477,9 @@ var HtmlInCanvasInner = forwardRef6(({
9388
9477
  return /* @__PURE__ */ jsx15(Sequence, {
9389
9478
  durationInFrames: resolvedDuration,
9390
9479
  name: name ?? "<HtmlInCanvas>",
9480
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/remotion/html-in-canvas" : undefined,
9391
9481
  _experimentalControls: controls,
9392
- _experimentalEffects: memoizedEffectDefinitions,
9482
+ _remotionInternalEffects: memoizedEffectDefinitions,
9393
9483
  layout: "none",
9394
9484
  ...sequenceProps,
9395
9485
  children: /* @__PURE__ */ jsx15(HtmlInCanvasContent, {
@@ -9636,6 +9726,7 @@ var Loop = ({
9636
9726
  durationInFrames,
9637
9727
  from,
9638
9728
  name: name ?? "<Loop>",
9729
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/loop" : undefined,
9639
9730
  _remotionInternalLoopDisplay: loopDisplay,
9640
9731
  layout: props.layout,
9641
9732
  style,
@@ -10911,85 +11002,6 @@ var useBasicMediaInTimeline = ({
10911
11002
  ]);
10912
11003
  return memoizedResult;
10913
11004
  };
10914
- var useImageInTimeline = ({
10915
- src,
10916
- displayName,
10917
- id,
10918
- getStack,
10919
- showInTimeline,
10920
- premountDisplay,
10921
- postmountDisplay,
10922
- loopDisplay,
10923
- controls
10924
- }) => {
10925
- const parentSequence = useContext24(SequenceContext);
10926
- const { registerSequence, unregisterSequence } = useContext24(SequenceManager);
10927
- const { durationInFrames } = useVideoConfig();
10928
- const mediaStartsAt = useMediaStartsAt();
10929
- const { duration, nonce, rootId, finalDisplayName } = useBasicMediaInTimeline({
10930
- volume: undefined,
10931
- mediaVolume: 0,
10932
- mediaType: "image",
10933
- src,
10934
- displayName,
10935
- trimAfter: undefined,
10936
- trimBefore: undefined,
10937
- playbackRate: 1,
10938
- sequenceDurationInFrames: durationInFrames,
10939
- mediaStartsAt,
10940
- loop: false
10941
- });
10942
- const { isStudio } = useRemotionEnvironment();
10943
- useEffect8(() => {
10944
- if (!src) {
10945
- throw new Error("No src passed");
10946
- }
10947
- if (!isStudio && window.process?.env?.NODE_ENV !== "test") {
10948
- return;
10949
- }
10950
- if (!showInTimeline) {
10951
- return;
10952
- }
10953
- registerSequence({
10954
- type: "image",
10955
- src,
10956
- id,
10957
- duration,
10958
- from: 0,
10959
- parent: parentSequence?.id ?? null,
10960
- displayName: finalDisplayName,
10961
- rootId,
10962
- showInTimeline: true,
10963
- nonce: nonce.get(),
10964
- loopDisplay,
10965
- getStack,
10966
- premountDisplay,
10967
- postmountDisplay,
10968
- controls,
10969
- effects: []
10970
- });
10971
- return () => {
10972
- unregisterSequence(id);
10973
- };
10974
- }, [
10975
- duration,
10976
- id,
10977
- parentSequence,
10978
- src,
10979
- registerSequence,
10980
- unregisterSequence,
10981
- nonce,
10982
- getStack,
10983
- showInTimeline,
10984
- premountDisplay,
10985
- postmountDisplay,
10986
- isStudio,
10987
- loopDisplay,
10988
- rootId,
10989
- finalDisplayName,
10990
- controls
10991
- ]);
10992
- };
10993
11005
  var useMediaInTimeline = ({
10994
11006
  volume,
10995
11007
  mediaVolume,
@@ -11002,7 +11014,8 @@ var useMediaInTimeline = ({
11002
11014
  showInTimeline,
11003
11015
  premountDisplay,
11004
11016
  postmountDisplay,
11005
- loopDisplay
11017
+ loopDisplay,
11018
+ documentationLink
11006
11019
  }) => {
11007
11020
  const parentSequence = useContext24(SequenceContext);
11008
11021
  const startsAt = useMediaStartsAt();
@@ -11041,6 +11054,7 @@ var useMediaInTimeline = ({
11041
11054
  from: 0,
11042
11055
  parent: parentSequence?.id ?? null,
11043
11056
  displayName: finalDisplayName,
11057
+ documentationLink,
11044
11058
  rootId,
11045
11059
  volume: volumes,
11046
11060
  showInTimeline: true,
@@ -11076,6 +11090,7 @@ var useMediaInTimeline = ({
11076
11090
  premountDisplay,
11077
11091
  postmountDisplay,
11078
11092
  loopDisplay,
11093
+ documentationLink,
11079
11094
  rootId,
11080
11095
  finalDisplayName,
11081
11096
  isStudio
@@ -12159,7 +12174,8 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
12159
12174
  showInTimeline,
12160
12175
  premountDisplay: sequenceContext?.premountDisplay ?? null,
12161
12176
  postmountDisplay: sequenceContext?.postmountDisplay ?? null,
12162
- loopDisplay: undefined
12177
+ loopDisplay: undefined,
12178
+ documentationLink: name === undefined ? "https://www.remotion.dev/docs/html5-audio" : null
12163
12179
  });
12164
12180
  useMediaPlayback({
12165
12181
  mediaRef: audioRef,
@@ -12676,34 +12692,29 @@ var ImgInner = ({
12676
12692
  stack,
12677
12693
  showInTimeline,
12678
12694
  src,
12695
+ from,
12696
+ durationInFrames,
12679
12697
  _experimentalControls: controls,
12680
12698
  ...props2
12681
12699
  }) => {
12682
- const sequenceContext = useContext32(SequenceContext);
12683
- const [timelineId] = useState17(() => String(Math.random()));
12684
12700
  if (!src) {
12685
12701
  throw new Error('No "src" prop was passed to <Img>.');
12686
12702
  }
12687
- const stackRef = useRef21(null);
12688
- stackRef.current = stack ?? null;
12689
- const getStack = useCallback17(() => stackRef.current, []);
12690
- useImageInTimeline({
12691
- src,
12692
- displayName: name ?? null,
12693
- id: timelineId,
12694
- getStack,
12703
+ return /* @__PURE__ */ jsx26(Sequence, {
12704
+ layout: "none",
12705
+ from: from ?? 0,
12706
+ durationInFrames: durationInFrames ?? Infinity,
12707
+ _remotionInternalStack: stack,
12708
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/img" : undefined,
12709
+ _remotionInternalIsMedia: { type: "image", src },
12710
+ name: name ?? "<Img>",
12711
+ _experimentalControls: controls,
12695
12712
  showInTimeline: showInTimeline ?? true,
12696
- premountDisplay: sequenceContext?.premountDisplay ?? null,
12697
- postmountDisplay: sequenceContext?.postmountDisplay ?? null,
12698
- loopDisplay: undefined,
12699
- controls: controls ?? null
12700
- });
12701
- if (hidden) {
12702
- return null;
12703
- }
12704
- return /* @__PURE__ */ jsx26(ImgContent, {
12705
- src,
12706
- ...props2
12713
+ hidden,
12714
+ children: /* @__PURE__ */ jsx26(ImgContent, {
12715
+ src,
12716
+ ...props2
12717
+ })
12707
12718
  });
12708
12719
  };
12709
12720
  var imgSchema = {
@@ -12720,9 +12731,9 @@ var CompositionManagerProvider = ({
12720
12731
  initialCompositions,
12721
12732
  initialCanvasContent
12722
12733
  }) => {
12723
- const [folders, setFolders] = useState18([]);
12724
- const [canvasContent, setCanvasContent] = useState18(initialCanvasContent);
12725
- const [compositions, setCompositions] = useState18(initialCompositions);
12734
+ const [folders, setFolders] = useState17([]);
12735
+ const [canvasContent, setCanvasContent] = useState17(initialCanvasContent);
12736
+ const [compositions, setCompositions] = useState17(initialCompositions);
12726
12737
  const currentcompositionsRef = useRef22(compositions);
12727
12738
  const updateCompositions = useCallback18((updateComps) => {
12728
12739
  setCompositions((comps) => {
@@ -12865,6 +12876,7 @@ var createEffect = (definition) => {
12865
12876
  const { calculateKey: userCalculateKey, validateParams } = definition;
12866
12877
  const widened = {
12867
12878
  ...definition,
12879
+ documentationLink: definition.documentationLink ?? null,
12868
12880
  calculateKey: (params) => {
12869
12881
  const disabled = params.disabled ?? false;
12870
12882
  return `${userCalculateKey(params)}-disabled-${disabled}`;
@@ -13318,7 +13330,7 @@ var OffthreadVideoForRendering = ({
13318
13330
  toneMapped
13319
13331
  });
13320
13332
  }, [toneMapped, currentTime, src, transparent]);
13321
- const [imageSrc, setImageSrc] = useState19(null);
13333
+ const [imageSrc, setImageSrc] = useState18(null);
13322
13334
  const { delayRender: delayRender2, continueRender: continueRender2 } = useDelayRender();
13323
13335
  useLayoutEffect11(() => {
13324
13336
  if (!window.remotion_videoEnabled) {
@@ -13516,7 +13528,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
13516
13528
  const parentSequence = useContext35(SequenceContext);
13517
13529
  const logLevel = useLogLevel();
13518
13530
  const mountTime = useMountTime();
13519
- const [timelineId] = useState20(() => String(Math.random()));
13531
+ const [timelineId] = useState19(() => String(Math.random()));
13520
13532
  if (typeof acceptableTimeShift !== "undefined") {
13521
13533
  throw new Error("acceptableTimeShift has been removed. Use acceptableTimeShiftInSeconds instead.");
13522
13534
  }
@@ -13543,7 +13555,8 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
13543
13555
  showInTimeline,
13544
13556
  premountDisplay: parentSequence?.premountDisplay ?? null,
13545
13557
  postmountDisplay: parentSequence?.postmountDisplay ?? null,
13546
- loopDisplay: undefined
13558
+ loopDisplay: undefined,
13559
+ documentationLink: name === undefined ? onlyWarnForMediaSeekingError ? "https://www.remotion.dev/docs/offthreadvideo" : "https://www.remotion.dev/docs/html5-video" : null
13547
13560
  });
13548
13561
  useMediaPlayback({
13549
13562
  mediaRef: videoRef,
@@ -13585,7 +13598,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
13585
13598
  useImperativeHandle8(ref, () => {
13586
13599
  return videoRef.current;
13587
13600
  }, []);
13588
- useState20(() => playbackLogging({
13601
+ useState19(() => playbackLogging({
13589
13602
  logLevel,
13590
13603
  message: `Mounting video with source = ${actualSrc}, v=${VERSION}, user agent=${typeof navigator === "undefined" ? "server" : navigator.userAgent}`,
13591
13604
  tag: "video",
@@ -14162,6 +14175,7 @@ var SeriesInner = (props2) => {
14162
14175
  startFrame += durationInFramesProp + offset;
14163
14176
  return /* @__PURE__ */ jsx35(Sequence, {
14164
14177
  name: name || "<Series.Sequence>",
14178
+ _remotionInternalDocumentationLink: name ? undefined : "https://www.remotion.dev/docs/series",
14165
14179
  from: currentStartFrame,
14166
14180
  durationInFrames: durationInFramesProp,
14167
14181
  ...passedProps,
@@ -14174,6 +14188,7 @@ var SeriesInner = (props2) => {
14174
14188
  children: /* @__PURE__ */ jsx35(Sequence, {
14175
14189
  layout: "none",
14176
14190
  name: "<Series>",
14191
+ _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/series",
14177
14192
  ...props2,
14178
14193
  children: childrenValue
14179
14194
  })
@@ -15386,7 +15401,7 @@ var getAngle = (ref, coordinates) => {
15386
15401
  };
15387
15402
  var lastCoordinates = null;
15388
15403
  var useMousePosition = (ref) => {
15389
- const [angle, setAngle] = useState21(getAngle(ref.current, lastCoordinates));
15404
+ const [angle, setAngle] = useState20(getAngle(ref.current, lastCoordinates));
15390
15405
  useEffect20(() => {
15391
15406
  const element = ref.current;
15392
15407
  if (!element) {
@@ -21686,10 +21701,10 @@ var Triangle2 = (props) => {
21686
21701
  };
21687
21702
 
21688
21703
  // src/components/design.tsx
21689
- import { useCallback as useCallback35, useState as useState39 } from "react";
21704
+ import { useCallback as useCallback35, useState as useState40 } from "react";
21690
21705
 
21691
21706
  // src/components/ManageTeamMembers.tsx
21692
- import React53, { useCallback as useCallback34, useState as useState38 } from "react";
21707
+ import React53, { useCallback as useCallback34, useState as useState39 } from "react";
21693
21708
  import { jsx as jsx40, jsxs as jsxs6, Fragment as Fragment9 } from "react/jsx-runtime";
21694
21709
  function generateId() {
21695
21710
  return Math.random().toString(36).substr(2, 9);
@@ -21733,7 +21748,7 @@ var Row = ({ value, onChange, onDelete, disableDelete }) => {
21733
21748
  });
21734
21749
  };
21735
21750
  var ManageTeamMembers = () => {
21736
- const [members, setMembers] = useState38(initialMembers);
21751
+ const [members, setMembers] = useState39(initialMembers);
21737
21752
  const displayedMembers = [...members, { id: "NEW", name: "" }];
21738
21753
  const updateMember = useCallback34((idx, value) => {
21739
21754
  if (idx === members.length) {
@@ -21747,7 +21762,7 @@ var ManageTeamMembers = () => {
21747
21762
  const deleteMember = useCallback34((idx) => {
21748
21763
  setMembers((prev) => prev.filter((_, i) => i !== idx));
21749
21764
  }, []);
21750
- const [loading, setLoading] = useState38(false);
21765
+ const [loading, setLoading] = useState39(false);
21751
21766
  const save = useCallback34(() => {
21752
21767
  setLoading(true);
21753
21768
  setTimeout(() => {
@@ -21803,10 +21818,10 @@ var Explainer = ({ children }) => {
21803
21818
  });
21804
21819
  };
21805
21820
  var DesignPage = () => {
21806
- const [count4, setCount] = useState39(10);
21807
- const [active, setActive] = useState39(false);
21808
- const [submitButtonActive, setSubmitButtonActive] = useState39(true);
21809
- const [submitButtonPrimaryActive, setSubmitButtonPrimaryActive] = useState39(true);
21821
+ const [count4, setCount] = useState40(10);
21822
+ const [active, setActive] = useState40(false);
21823
+ const [submitButtonActive, setSubmitButtonActive] = useState40(true);
21824
+ const [submitButtonPrimaryActive, setSubmitButtonPrimaryActive] = useState40(true);
21810
21825
  const onClick = useCallback35(() => {
21811
21826
  setSubmitButtonActive(false);
21812
21827
  setTimeout(() => {
@@ -21819,7 +21834,7 @@ var DesignPage = () => {
21819
21834
  setSubmitButtonPrimaryActive(true);
21820
21835
  }, 1000);
21821
21836
  }, []);
21822
- const [saving, setSaving] = useState39(false);
21837
+ const [saving, setSaving] = useState40(false);
21823
21838
  const save = useCallback35(() => {
21824
21839
  setSaving(true);
21825
21840
  setTimeout(() => {