@remotion/promo-pages 4.0.481 → 4.0.482

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
@@ -2335,7 +2335,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
2335
2335
  var addSequenceStackTraces = (component) => {
2336
2336
  componentsToAddStacksTo.push(component);
2337
2337
  };
2338
- var VERSION = "4.0.481";
2338
+ var VERSION = "4.0.482";
2339
2339
  var checkMultipleRemotionVersions = () => {
2340
2340
  if (typeof globalThis === "undefined") {
2341
2341
  return;
@@ -2735,6 +2735,77 @@ var transformSchema = {
2735
2735
  }
2736
2736
  };
2737
2737
  var sequenceVisualStyleSchema = transformSchema;
2738
+ var textSchema = {
2739
+ "style.color": {
2740
+ type: "color",
2741
+ default: undefined,
2742
+ description: "Color"
2743
+ },
2744
+ "style.fontSize": {
2745
+ type: "number",
2746
+ default: undefined,
2747
+ min: 0,
2748
+ step: 1,
2749
+ description: "Font size",
2750
+ hiddenFromList: false
2751
+ },
2752
+ "style.lineHeight": {
2753
+ type: "number",
2754
+ default: undefined,
2755
+ min: 0,
2756
+ step: 0.05,
2757
+ description: "Line height",
2758
+ hiddenFromList: false
2759
+ },
2760
+ "style.fontWeight": {
2761
+ type: "enum",
2762
+ default: "400",
2763
+ description: "Font weight",
2764
+ variants: {
2765
+ "100": {},
2766
+ "200": {},
2767
+ "300": {},
2768
+ "400": {},
2769
+ "500": {},
2770
+ "600": {},
2771
+ "700": {},
2772
+ "800": {},
2773
+ "900": {},
2774
+ normal: {},
2775
+ bold: {}
2776
+ }
2777
+ },
2778
+ "style.fontStyle": {
2779
+ type: "enum",
2780
+ default: "normal",
2781
+ description: "Font style",
2782
+ variants: {
2783
+ normal: {},
2784
+ italic: {},
2785
+ oblique: {}
2786
+ }
2787
+ },
2788
+ "style.textAlign": {
2789
+ type: "enum",
2790
+ default: "left",
2791
+ description: "Text align",
2792
+ variants: {
2793
+ left: {},
2794
+ center: {},
2795
+ right: {},
2796
+ justify: {},
2797
+ start: {},
2798
+ end: {}
2799
+ }
2800
+ },
2801
+ "style.letterSpacing": {
2802
+ type: "number",
2803
+ default: undefined,
2804
+ step: 0.1,
2805
+ description: "Letter spacing",
2806
+ hiddenFromList: false
2807
+ }
2808
+ };
2738
2809
  var premountSchema = {
2739
2810
  premountFor: {
2740
2811
  type: "number",
@@ -2793,6 +2864,13 @@ var fromField = {
2793
2864
  step: 1,
2794
2865
  hiddenFromList: true
2795
2866
  };
2867
+ var trimBeforeField = {
2868
+ type: "number",
2869
+ default: 0,
2870
+ min: 0,
2871
+ step: 1,
2872
+ hiddenFromList: true
2873
+ };
2796
2874
  var freezeField = {
2797
2875
  type: "number",
2798
2876
  default: null,
@@ -2802,6 +2880,7 @@ var freezeField = {
2802
2880
  var baseSchema = {
2803
2881
  durationInFrames: durationInFramesField,
2804
2882
  from: fromField,
2883
+ trimBefore: trimBeforeField,
2805
2884
  freeze: freezeField,
2806
2885
  hidden: hiddenField,
2807
2886
  name: sequenceNameField,
@@ -2821,6 +2900,7 @@ var sequenceSchema = {
2821
2900
  };
2822
2901
  var baseSchemaWithoutFrom = {
2823
2902
  durationInFrames: durationInFramesField,
2903
+ trimBefore: trimBeforeField,
2824
2904
  freeze: freezeField,
2825
2905
  hidden: hiddenField,
2826
2906
  name: sequenceNameField,
@@ -5122,6 +5202,7 @@ var withInteractivitySchema = ({
5122
5202
  var EMPTY_EFFECTS = [];
5123
5203
  var RegularSequenceRefForwardingFunction = ({
5124
5204
  from = 0,
5205
+ trimBefore = 0,
5125
5206
  freeze,
5126
5207
  durationInFrames = Infinity,
5127
5208
  children,
@@ -5146,7 +5227,6 @@ var RegularSequenceRefForwardingFunction = ({
5146
5227
  const parentSequence = useContext17(SequenceContext);
5147
5228
  const { rootId } = useTimelineContext();
5148
5229
  const cumulatedFrom = parentSequence ? parentSequence.cumulatedFrom + parentSequence.relativeFrom : 0;
5149
- const absoluteFrom = (parentSequence?.absoluteFrom ?? 0) + from;
5150
5230
  const nonce = useNonce();
5151
5231
  if (layout !== "absolute-fill" && layout !== "none") {
5152
5232
  throw new TypeError(`The layout prop of <Sequence /> expects either "absolute-fill" or "none", but you passed: ${layout}`);
@@ -5166,6 +5246,18 @@ var RegularSequenceRefForwardingFunction = ({
5166
5246
  if (!Number.isFinite(from)) {
5167
5247
  throw new TypeError(`The "from" prop of a sequence must be finite, but got ${from}.`);
5168
5248
  }
5249
+ if (typeof trimBefore !== "number") {
5250
+ throw new TypeError(`You passed to the "trimBefore" prop of your <Sequence> an argument of type ${typeof trimBefore}, but it must be a number.`);
5251
+ }
5252
+ if (trimBefore < 0) {
5253
+ throw new TypeError(`The "trimBefore" prop of <Sequence /> must be greater than or equal to 0, but got ${trimBefore}.`);
5254
+ }
5255
+ if (Number.isNaN(trimBefore)) {
5256
+ throw new TypeError('The "trimBefore" prop of <Sequence /> must be a real number, but it is NaN.');
5257
+ }
5258
+ if (!Number.isFinite(trimBefore)) {
5259
+ throw new TypeError(`The "trimBefore" prop of <Sequence /> must be finite, but it is ${trimBefore}.`);
5260
+ }
5169
5261
  if (typeof freeze !== "undefined" && freeze !== null) {
5170
5262
  if (typeof freeze !== "number") {
5171
5263
  throw new TypeError(`The "freeze" prop of <Sequence /> must be a number, but is of type ${typeof freeze}.`);
@@ -5179,7 +5271,9 @@ var RegularSequenceRefForwardingFunction = ({
5179
5271
  }
5180
5272
  const absoluteFrame = useTimelinePosition();
5181
5273
  const videoConfig = useVideoConfig();
5182
- const parentSequenceDuration = parentSequence ? Math.min(parentSequence.durationInFrames - from, durationInFrames) : durationInFrames;
5274
+ const effectiveRelativeFrom = from - trimBefore;
5275
+ const absoluteFrom = (parentSequence?.absoluteFrom ?? 0) + effectiveRelativeFrom;
5276
+ const parentSequenceDuration = parentSequence ? Math.min(parentSequence.durationInFrames - effectiveRelativeFrom, durationInFrames) : durationInFrames;
5183
5277
  const actualDurationInFrames = Math.max(0, Math.min(videoConfig.durationInFrames - from, parentSequenceDuration));
5184
5278
  const { registerSequence, unregisterSequence } = useContext17(SequenceManager);
5185
5279
  const wrapperRefForOutline = useRef6(null);
@@ -5190,7 +5284,7 @@ var RegularSequenceRefForwardingFunction = ({
5190
5284
  const postmounting = useMemo14(() => {
5191
5285
  return parentSequence?.postmounting || Boolean(other._remotionInternalIsPostmounting);
5192
5286
  }, [other._remotionInternalIsPostmounting, parentSequence?.postmounting]);
5193
- const currentSequenceStart = cumulatedFrom + from;
5287
+ const currentSequenceStart = cumulatedFrom + effectiveRelativeFrom;
5194
5288
  const parentSequenceStart = parentSequence ? parentSequence.cumulatedFrom + parentSequence.relativeFrom : 0;
5195
5289
  const parentFirstFrame = parentSequence ? parentSequenceStart - parentSequence.cumulatedNegativeFrom : 0;
5196
5290
  const firstFrame = Math.max(0, parentFirstFrame, currentSequenceStart);
@@ -5199,7 +5293,7 @@ var RegularSequenceRefForwardingFunction = ({
5199
5293
  return {
5200
5294
  absoluteFrom,
5201
5295
  cumulatedFrom,
5202
- relativeFrom: from,
5296
+ relativeFrom: effectiveRelativeFrom,
5203
5297
  cumulatedNegativeFrom,
5204
5298
  durationInFrames: actualDurationInFrames,
5205
5299
  parentFrom: parentSequence?.relativeFrom ?? 0,
@@ -5214,7 +5308,7 @@ var RegularSequenceRefForwardingFunction = ({
5214
5308
  }, [
5215
5309
  cumulatedFrom,
5216
5310
  absoluteFrom,
5217
- from,
5311
+ effectiveRelativeFrom,
5218
5312
  actualDurationInFrames,
5219
5313
  parentSequence,
5220
5314
  id,
@@ -5236,6 +5330,7 @@ var RegularSequenceRefForwardingFunction = ({
5236
5330
  const stackRef = useRef6(null);
5237
5331
  stackRef.current = stack ?? inheritedStack;
5238
5332
  const registeredFrozenFrame = typeof freeze === "number" ? freeze : null;
5333
+ const registeredTrimBefore = trimBefore === 0 ? null : trimBefore;
5239
5334
  const parentCumulatedNegativeFrom = parentSequence?.cumulatedNegativeFrom ?? 0;
5240
5335
  const startMediaFrom = isMedia && isMedia.type !== "image" ? isMedia.data.startMediaFrom + parentCumulatedNegativeFrom - cumulatedNegativeFrom : null;
5241
5336
  const mediaFrameAtSequenceZero = isMedia && isMedia.type !== "image" ? isMedia.data.startMediaFrom + parentCumulatedNegativeFrom : null;
@@ -5254,6 +5349,7 @@ var RegularSequenceRefForwardingFunction = ({
5254
5349
  documentationLink: resolvedDocumentationLink,
5255
5350
  duration: actualDurationInFrames,
5256
5351
  from,
5352
+ trimBefore: registeredTrimBefore,
5257
5353
  id,
5258
5354
  loopDisplay,
5259
5355
  nonce: nonce.get(),
@@ -5278,6 +5374,7 @@ var RegularSequenceRefForwardingFunction = ({
5278
5374
  doesVolumeChange: isMedia.data.doesVolumeChange,
5279
5375
  duration: actualDurationInFrames,
5280
5376
  from,
5377
+ trimBefore: registeredTrimBefore,
5281
5378
  id,
5282
5379
  loopDisplay,
5283
5380
  nonce: nonce.get(),
@@ -5303,6 +5400,7 @@ var RegularSequenceRefForwardingFunction = ({
5303
5400
  }
5304
5401
  registerSequence({
5305
5402
  from,
5403
+ trimBefore: registeredTrimBefore,
5306
5404
  duration: actualDurationInFrames,
5307
5405
  id,
5308
5406
  displayName: timelineClipName,
@@ -5336,6 +5434,8 @@ var RegularSequenceRefForwardingFunction = ({
5336
5434
  actualDurationInFrames,
5337
5435
  rootId,
5338
5436
  from,
5437
+ trimBefore,
5438
+ registeredTrimBefore,
5339
5439
  showInTimeline,
5340
5440
  nonce,
5341
5441
  loopDisplay,
@@ -6603,13 +6703,15 @@ var prefetch = (src, options) => {
6603
6703
  resolve = res;
6604
6704
  reject = rej;
6605
6705
  });
6706
+ waitUntilDone.catch(() => {
6707
+ return;
6708
+ });
6606
6709
  const controller = new AbortController;
6607
- let canBeAborted = true;
6710
+ let reader = null;
6608
6711
  fetch(srcWithoutHash, {
6609
6712
  signal: controller.signal,
6610
6713
  credentials: options?.credentials ?? undefined
6611
6714
  }).then((res) => {
6612
- canBeAborted = false;
6613
6715
  if (canceled) {
6614
6716
  return null;
6615
6717
  }
@@ -6625,15 +6727,16 @@ var prefetch = (src, options) => {
6625
6727
  if (!res.body) {
6626
6728
  throw new Error(`HTTP response of ${srcWithoutHash} has no body`);
6627
6729
  }
6628
- const reader = res.body.getReader();
6730
+ const responseReader = res.body.getReader();
6731
+ reader = responseReader;
6629
6732
  return getBlobFromReader({
6630
- reader,
6733
+ reader: responseReader,
6631
6734
  contentType: options?.contentType ?? headerContentType ?? null,
6632
6735
  contentLength: res.headers.get("Content-Length") ? parseInt(res.headers.get("Content-Length"), 10) : null,
6633
6736
  onProgress: options?.onProgress
6634
6737
  });
6635
6738
  }).then((buf) => {
6636
- if (!buf) {
6739
+ if (!buf || canceled) {
6637
6740
  return;
6638
6741
  }
6639
6742
  const actualBlob = options?.contentType ? new Blob([buf], { type: options.contentType }) : buf;
@@ -6681,12 +6784,18 @@ var prefetch = (src, options) => {
6681
6784
  return copy;
6682
6785
  });
6683
6786
  } else {
6684
- canceled = true;
6685
- if (canBeAborted) {
6686
- try {
6687
- controller.abort(new Error("free() called"));
6688
- } catch {}
6787
+ if (canceled) {
6788
+ return;
6689
6789
  }
6790
+ canceled = true;
6791
+ const cancellationError = new Error("free() called");
6792
+ reject(cancellationError);
6793
+ try {
6794
+ controller.abort(cancellationError);
6795
+ } catch {}
6796
+ reader?.cancel(cancellationError).catch(() => {
6797
+ return;
6798
+ });
6690
6799
  }
6691
6800
  },
6692
6801
  waitUntilDone: () => {
@@ -7858,6 +7967,7 @@ var useMediaInTimeline = ({
7858
7967
  id,
7859
7968
  duration,
7860
7969
  from: 0,
7970
+ trimBefore: null,
7861
7971
  parent: parentSequence?.id ?? null,
7862
7972
  displayName: finalDisplayName,
7863
7973
  documentationLink,
@@ -8720,11 +8830,11 @@ var useMediaTag = ({
8720
8830
  ]);
8721
8831
  };
8722
8832
  var MediaVolumeContext = createContext22({
8723
- mediaMuted: false,
8833
+ playerMuted: false,
8724
8834
  mediaVolume: 1
8725
8835
  });
8726
8836
  var SetMediaVolumeContext = createContext22({
8727
- setMediaMuted: () => {
8837
+ setPlayerMuted: () => {
8728
8838
  throw new Error("default");
8729
8839
  },
8730
8840
  setMediaVolume: () => {
@@ -8738,12 +8848,12 @@ var useMediaVolumeState = () => {
8738
8848
  return [mediaVolume, setMediaVolume];
8739
8849
  }, [mediaVolume, setMediaVolume]);
8740
8850
  };
8741
- var useMediaMutedState = () => {
8742
- const { mediaMuted } = useContext27(MediaVolumeContext);
8743
- const { setMediaMuted } = useContext27(SetMediaVolumeContext);
8851
+ var usePlayerMutedState = () => {
8852
+ const { playerMuted } = useContext27(MediaVolumeContext);
8853
+ const { setPlayerMuted } = useContext27(SetMediaVolumeContext);
8744
8854
  return useMemo26(() => {
8745
- return [mediaMuted, setMediaMuted];
8746
- }, [mediaMuted, setMediaMuted]);
8855
+ return [playerMuted, setPlayerMuted];
8856
+ }, [playerMuted, setPlayerMuted]);
8747
8857
  };
8748
8858
  var warnAboutTooHighVolume = (volume) => {
8749
8859
  if (volume >= 100) {
@@ -8789,7 +8899,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
8789
8899
  throw new Error("typecheck error");
8790
8900
  }
8791
8901
  const [mediaVolume] = useMediaVolumeState();
8792
- const [mediaMuted] = useMediaMutedState();
8902
+ const [playerMuted] = usePlayerMutedState();
8793
8903
  const volumePropFrame = useFrameForVolumeProp(loopVolumeCurveBehavior ?? "repeat");
8794
8904
  if (!src) {
8795
8905
  throw new TypeError("No 'src' was passed to <Html5Audio>.");
@@ -8810,7 +8920,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
8810
8920
  });
8811
8921
  const propsToPass = useMemo27(() => {
8812
8922
  return {
8813
- muted: muted || mediaMuted || userPreferredVolume <= 0,
8923
+ muted: muted || playerMuted || userPreferredVolume <= 0,
8814
8924
  src: preloadedSrc,
8815
8925
  loop: _remotionInternalNativeLoopPassed,
8816
8926
  crossOrigin: crossOriginValue,
@@ -8818,7 +8928,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
8818
8928
  };
8819
8929
  }, [
8820
8930
  _remotionInternalNativeLoopPassed,
8821
- mediaMuted,
8931
+ playerMuted,
8822
8932
  muted,
8823
8933
  nativeProps,
8824
8934
  preloadedSrc,
@@ -9215,6 +9325,15 @@ var solidSchema = {
9215
9325
  description: "Height",
9216
9326
  hiddenFromList: false
9217
9327
  },
9328
+ pixelDensity: {
9329
+ type: "number",
9330
+ min: 1,
9331
+ max: 3,
9332
+ step: 0.1,
9333
+ default: 1,
9334
+ description: "Pixel density",
9335
+ hiddenFromList: false
9336
+ },
9218
9337
  ...transformSchema
9219
9338
  };
9220
9339
  var SolidInner = ({
@@ -9331,6 +9450,7 @@ var SolidOuter = forwardRef8(({
9331
9450
  style,
9332
9451
  name,
9333
9452
  from,
9453
+ trimBefore,
9334
9454
  freeze,
9335
9455
  hidden,
9336
9456
  showInTimeline,
@@ -9345,6 +9465,7 @@ var SolidOuter = forwardRef8(({
9345
9465
  return /* @__PURE__ */ jsx24(Sequence, {
9346
9466
  layout: "none",
9347
9467
  from,
9468
+ trimBefore,
9348
9469
  freeze,
9349
9470
  hidden,
9350
9471
  showInTimeline,
@@ -9502,10 +9623,6 @@ var HtmlInCanvasContent = forwardRef9(({
9502
9623
  if (!placeholderCanvas) {
9503
9624
  throw new Error("Canvas not found");
9504
9625
  }
9505
- const offscreen2d = offscreen.getContext("2d");
9506
- if (!offscreen2d) {
9507
- throw new Error("Failed to acquire 2D context for <HtmlInCanvas> offscreen canvas");
9508
- }
9509
9626
  const handle = delayRender("onPaint");
9510
9627
  if (!initializedRef.current) {
9511
9628
  initializedRef.current = true;
@@ -9690,6 +9807,15 @@ var HtmlInCanvasInner = forwardRef9(({
9690
9807
  HtmlInCanvasInner.displayName = "HtmlInCanvas";
9691
9808
  var htmlInCanvasSchema = {
9692
9809
  ...baseSchema,
9810
+ pixelDensity: {
9811
+ type: "number",
9812
+ min: 1,
9813
+ max: 3,
9814
+ step: 0.1,
9815
+ default: 1,
9816
+ description: "Pixel density",
9817
+ hiddenFromList: false
9818
+ },
9693
9819
  ...transformSchema
9694
9820
  };
9695
9821
  var HtmlInCanvasWrapped = withInteractivitySchema({
@@ -10007,6 +10133,7 @@ var CanvasImageInner = forwardRef10(({
10007
10133
  delayRenderTimeoutInMilliseconds,
10008
10134
  durationInFrames,
10009
10135
  from,
10136
+ trimBefore,
10010
10137
  freeze,
10011
10138
  hidden,
10012
10139
  name,
@@ -10028,6 +10155,7 @@ var CanvasImageInner = forwardRef10(({
10028
10155
  return /* @__PURE__ */ jsx26(Sequence, {
10029
10156
  layout: "none",
10030
10157
  from: from ?? 0,
10158
+ trimBefore,
10031
10159
  durationInFrames: durationInFrames ?? Infinity,
10032
10160
  freeze,
10033
10161
  hidden,
@@ -10264,6 +10392,7 @@ var NativeImgInner = ({
10264
10392
  showInTimeline,
10265
10393
  src,
10266
10394
  from,
10395
+ trimBefore,
10267
10396
  durationInFrames,
10268
10397
  freeze,
10269
10398
  controls,
@@ -10276,6 +10405,7 @@ var NativeImgInner = ({
10276
10405
  return /* @__PURE__ */ jsx28(Sequence, {
10277
10406
  layout: "none",
10278
10407
  from: from ?? 0,
10408
+ trimBefore,
10279
10409
  durationInFrames: durationInFrames ?? Infinity,
10280
10410
  freeze,
10281
10411
  _remotionInternalStack: stack,
@@ -10349,6 +10479,7 @@ var ImgInner = ({
10349
10479
  showInTimeline,
10350
10480
  src,
10351
10481
  from,
10482
+ trimBefore,
10352
10483
  durationInFrames,
10353
10484
  freeze,
10354
10485
  controls,
@@ -10374,6 +10505,7 @@ var ImgInner = ({
10374
10505
  showInTimeline,
10375
10506
  src,
10376
10507
  from,
10508
+ trimBefore,
10377
10509
  durationInFrames,
10378
10510
  freeze,
10379
10511
  controls,
@@ -10416,6 +10548,7 @@ var ImgInner = ({
10416
10548
  delayRenderRetries,
10417
10549
  delayRenderTimeoutInMilliseconds,
10418
10550
  from,
10551
+ trimBefore,
10419
10552
  durationInFrames,
10420
10553
  freeze,
10421
10554
  hidden,
@@ -10438,7 +10571,8 @@ var Img = withInteractivitySchema({
10438
10571
  addSequenceStackTraces(Img);
10439
10572
  var interactiveElementSchema = {
10440
10573
  ...baseSchema,
10441
- ...transformSchema
10574
+ ...transformSchema,
10575
+ ...textSchema
10442
10576
  };
10443
10577
  var setRef = (ref, value) => {
10444
10578
  if (typeof ref === "function") {
@@ -10452,6 +10586,7 @@ var makeInteractiveElement = (tag, displayName) => {
10452
10586
  const {
10453
10587
  durationInFrames,
10454
10588
  from,
10589
+ trimBefore,
10455
10590
  freeze,
10456
10591
  hidden,
10457
10592
  name,
@@ -10468,6 +10603,7 @@ var makeInteractiveElement = (tag, displayName) => {
10468
10603
  return /* @__PURE__ */ jsx29(Sequence, {
10469
10604
  layout: "none",
10470
10605
  from: from ?? 0,
10606
+ trimBefore,
10471
10607
  durationInFrames: durationInFrames ?? Infinity,
10472
10608
  freeze,
10473
10609
  hidden,
@@ -10498,6 +10634,7 @@ var makeInteractiveElement = (tag, displayName) => {
10498
10634
  var Interactive = {
10499
10635
  baseSchema,
10500
10636
  transformSchema,
10637
+ textSchema,
10501
10638
  premountSchema,
10502
10639
  sequenceSchema,
10503
10640
  withSchema: withInteractivitySchema,
@@ -11327,7 +11464,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
11327
11464
  throw new Error("acceptableTimeShift has been removed. Use acceptableTimeShiftInSeconds instead.");
11328
11465
  }
11329
11466
  const [mediaVolume] = useMediaVolumeState();
11330
- const [mediaMuted] = useMediaMutedState();
11467
+ const [playerMuted] = usePlayerMutedState();
11331
11468
  const userPreferredVolume = evaluateVolume({
11332
11469
  frame: volumePropFrame,
11333
11470
  volume,
@@ -11483,7 +11620,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
11483
11620
  return /* @__PURE__ */ jsx34("video", {
11484
11621
  ...nativeProps,
11485
11622
  ref: videoRef,
11486
- muted: muted || mediaMuted || userPreferredVolume <= 0,
11623
+ muted: muted || playerMuted || userPreferredVolume <= 0,
11487
11624
  playsInline: true,
11488
11625
  src: actualSrc,
11489
11626
  loop: _remotionInternalNativeLoopPassed,
@@ -11774,6 +11911,7 @@ var Internals = {
11774
11911
  sequenceStyleSchema,
11775
11912
  sequenceVisualStyleSchema,
11776
11913
  sequencePremountSchema,
11914
+ textSchema,
11777
11915
  transformSchema,
11778
11916
  premountSchema,
11779
11917
  flattenActiveSchema,
@@ -11783,7 +11921,7 @@ var Internals = {
11783
11921
  useVideo,
11784
11922
  getRoot,
11785
11923
  useMediaVolumeState,
11786
- useMediaMutedState,
11924
+ usePlayerMutedState,
11787
11925
  useMediaInTimeline,
11788
11926
  useLazyComponent,
11789
11927
  truthy,
@@ -17272,6 +17410,7 @@ var RenderSvg = ({
17272
17410
  pixelDensity,
17273
17411
  durationInFrames,
17274
17412
  from,
17413
+ trimBefore,
17275
17414
  freeze,
17276
17415
  hidden,
17277
17416
  name,
@@ -17381,6 +17520,7 @@ var RenderSvg = ({
17381
17520
  return /* @__PURE__ */ jsx44(Sequence, {
17382
17521
  layout: "none",
17383
17522
  from,
17523
+ trimBefore,
17384
17524
  freeze,
17385
17525
  hidden,
17386
17526
  showInTimeline,
@@ -30164,6 +30304,13 @@ var fromField2 = {
30164
30304
  step: 1,
30165
30305
  hiddenFromList: true
30166
30306
  };
30307
+ var trimBeforeField2 = {
30308
+ type: "number",
30309
+ default: 0,
30310
+ min: 0,
30311
+ step: 1,
30312
+ hiddenFromList: true
30313
+ };
30167
30314
  var freezeField2 = {
30168
30315
  type: "number",
30169
30316
  default: null,
@@ -30173,6 +30320,7 @@ var freezeField2 = {
30173
30320
  var baseSchema2 = {
30174
30321
  durationInFrames: durationInFramesField2,
30175
30322
  from: fromField2,
30323
+ trimBefore: trimBeforeField2,
30176
30324
  freeze: freezeField2,
30177
30325
  hidden: hiddenField2,
30178
30326
  name: sequenceNameField2,
@@ -30192,6 +30340,7 @@ var sequenceSchema2 = {
30192
30340
  };
30193
30341
  var baseSchemaWithoutFrom2 = {
30194
30342
  durationInFrames: durationInFramesField2,
30343
+ trimBefore: trimBeforeField2,
30195
30344
  freeze: freezeField2,
30196
30345
  hidden: hiddenField2,
30197
30346
  name: sequenceNameField2,
@@ -32380,7 +32529,7 @@ var renderDefaultVolumeSlider = (props) => {
32380
32529
  };
32381
32530
  var VOLUME_SLIDER_WIDTH = 100;
32382
32531
  var MediaVolumeSlider = ({ displayVerticalVolumeSlider, renderMuteButton, renderVolumeSlider }) => {
32383
- const [mediaMuted, setMediaMuted] = Internals.useMediaMutedState();
32532
+ const [playerMuted, setPlayerMuted] = Internals.usePlayerMutedState();
32384
32533
  const [mediaVolume, setMediaVolume] = Internals.useMediaVolumeState();
32385
32534
  const [focused, setFocused] = useState62(false);
32386
32535
  const parentDivRef = useRef52(null);
@@ -32397,11 +32546,11 @@ var MediaVolumeSlider = ({ displayVerticalVolumeSlider, renderMuteButton, render
32397
32546
  const onClick = useCallback42(() => {
32398
32547
  if (isVolume0) {
32399
32548
  setMediaVolume(1);
32400
- setMediaMuted(false);
32549
+ setPlayerMuted(false);
32401
32550
  return;
32402
32551
  }
32403
- setMediaMuted((mute) => !mute);
32404
- }, [isVolume0, setMediaMuted, setMediaVolume]);
32552
+ setPlayerMuted((mute) => !mute);
32553
+ }, [isVolume0, setPlayerMuted, setMediaVolume]);
32405
32554
  const parentDivStyle = useMemo410(() => {
32406
32555
  return {
32407
32556
  display: "inline-flex",
@@ -32439,10 +32588,10 @@ var MediaVolumeSlider = ({ displayVerticalVolumeSlider, renderMuteButton, render
32439
32588
  });
32440
32589
  }, [onBlur, onClick, volumeContainer]);
32441
32590
  const muteButton = useMemo410(() => {
32442
- return renderMuteButton ? renderMuteButton({ muted: mediaMuted, volume: mediaVolume }) : renderDefaultMuteButton({ muted: mediaMuted, volume: mediaVolume });
32443
- }, [mediaMuted, mediaVolume, renderDefaultMuteButton, renderMuteButton]);
32591
+ return renderMuteButton ? renderMuteButton({ muted: playerMuted, volume: mediaVolume }) : renderDefaultMuteButton({ muted: playerMuted, volume: mediaVolume });
32592
+ }, [playerMuted, mediaVolume, renderDefaultMuteButton, renderMuteButton]);
32444
32593
  const volumeSlider = useMemo410(() => {
32445
- return (focused || hover) && !mediaMuted && !Internals.isIosSafari() ? (renderVolumeSlider ?? renderDefaultVolumeSlider)({
32594
+ return (focused || hover) && !playerMuted && !Internals.isIosSafari() ? (renderVolumeSlider ?? renderDefaultVolumeSlider)({
32446
32595
  isVertical: displayVerticalVolumeSlider,
32447
32596
  volume: mediaVolume,
32448
32597
  onBlur: () => setFocused(false),
@@ -32453,7 +32602,7 @@ var MediaVolumeSlider = ({ displayVerticalVolumeSlider, renderMuteButton, render
32453
32602
  displayVerticalVolumeSlider,
32454
32603
  focused,
32455
32604
  hover,
32456
- mediaMuted,
32605
+ playerMuted,
32457
32606
  mediaVolume,
32458
32607
  renderVolumeSlider,
32459
32608
  setMediaVolume
@@ -33326,11 +33475,11 @@ var PlayerUI = ({
33326
33475
  }, []);
33327
33476
  const player = usePlayer();
33328
33477
  const playerToggle = player.toggle;
33329
- const { mediaMuted, mediaVolume } = useContext52(Internals.MediaVolumeContext);
33478
+ const { playerMuted, mediaVolume } = useContext52(Internals.MediaVolumeContext);
33330
33479
  useEffect122(() => {
33331
33480
  player.emitter.dispatchVolumeChange(mediaVolume);
33332
33481
  }, [player.emitter, mediaVolume]);
33333
- const isMuted = mediaMuted || mediaVolume === 0;
33482
+ const isMuted = playerMuted || mediaVolume === 0;
33334
33483
  useEffect122(() => {
33335
33484
  player.emitter.dispatchMuteChange({
33336
33485
  isMuted
@@ -33439,7 +33588,7 @@ var PlayerUI = ({
33439
33588
  }
33440
33589
  player.emitter.dispatchScaleChange(scale);
33441
33590
  }, [player.emitter, scale]);
33442
- const { setMediaVolume, setMediaMuted } = useContext52(Internals.SetMediaVolumeContext);
33591
+ const { setMediaVolume, setPlayerMuted } = useContext52(Internals.SetMediaVolumeContext);
33443
33592
  const [showBufferIndicator, setShowBufferState] = useState113(false);
33444
33593
  useEffect122(() => {
33445
33594
  let timeout = null;
@@ -33513,7 +33662,7 @@ var PlayerUI = ({
33513
33662
  requestFullscreen,
33514
33663
  exitFullscreen,
33515
33664
  getVolume: () => {
33516
- if (mediaMuted) {
33665
+ if (playerMuted) {
33517
33666
  return 0;
33518
33667
  }
33519
33668
  return mediaVolume;
@@ -33532,10 +33681,10 @@ var PlayerUI = ({
33532
33681
  },
33533
33682
  isMuted: () => isMuted,
33534
33683
  mute: () => {
33535
- setMediaMuted(true);
33684
+ setPlayerMuted(true);
33536
33685
  },
33537
33686
  unmute: () => {
33538
- setMediaMuted(false);
33687
+ setPlayerMuted(false);
33539
33688
  },
33540
33689
  getScale: () => scale,
33541
33690
  pauseAndReturnToPlayStart: () => {
@@ -33547,12 +33696,12 @@ var PlayerUI = ({
33547
33696
  durationInFrames,
33548
33697
  exitFullscreen,
33549
33698
  loop,
33550
- mediaMuted,
33699
+ playerMuted,
33551
33700
  isMuted,
33552
33701
  mediaVolume,
33553
33702
  player,
33554
33703
  requestFullscreen,
33555
- setMediaMuted,
33704
+ setPlayerMuted,
33556
33705
  setMediaVolume,
33557
33706
  toggle,
33558
33707
  scale
@@ -33831,14 +33980,15 @@ var SharedPlayerContexts = ({
33831
33980
  fps,
33832
33981
  inputProps
33833
33982
  ]);
33834
- const [mediaMuted, setMediaMuted] = useState122(() => initiallyMuted);
33983
+ const [playerMuted, setPlayerMuted] = useState122(() => initiallyMuted);
33835
33984
  const [mediaVolume, setMediaVolume] = useState122(() => persistVolumeToStorage ? getPreferredVolume(volumePersistenceKey ?? null) : initialVolume);
33836
33985
  const mediaVolumeContextValue = useMemo132(() => {
33837
33986
  return {
33838
- mediaMuted,
33987
+ playerMuted,
33839
33988
  mediaVolume
33840
33989
  };
33841
- }, [mediaMuted, mediaVolume]);
33990
+ }, [playerMuted, mediaVolume]);
33991
+ const shouldCreateAudioContext = audioEnabled && !playerMuted && mediaVolume > 0;
33842
33992
  const setMediaVolumeAndPersist = useCallback112((vol) => {
33843
33993
  setMediaVolume(vol);
33844
33994
  if (persistVolumeToStorage) {
@@ -33847,7 +33997,7 @@ var SharedPlayerContexts = ({
33847
33997
  }, [persistVolumeToStorage, logLevel, volumePersistenceKey]);
33848
33998
  const setMediaVolumeContextValue = useMemo132(() => {
33849
33999
  return {
33850
- setMediaMuted,
34000
+ setPlayerMuted,
33851
34001
  setMediaVolume: setMediaVolumeAndPersist
33852
34002
  };
33853
34003
  }, [setMediaVolumeAndPersist]);
@@ -33888,7 +34038,7 @@ var SharedPlayerContexts = ({
33888
34038
  children: /* @__PURE__ */ jsx133(Internals.BufferingProvider, {
33889
34039
  children: /* @__PURE__ */ jsx133(Internals.SharedAudioContextProvider, {
33890
34040
  audioLatencyHint,
33891
- audioEnabled,
34041
+ audioEnabled: shouldCreateAudioContext,
33892
34042
  previewSampleRate: sampleRate,
33893
34043
  children: /* @__PURE__ */ jsx133(Internals.SharedAudioTagsContextProvider, {
33894
34044
  numberOfAudioTags: numberOfSharedAudioTags,
@@ -37376,7 +37526,7 @@ var {
37376
37526
  useUnsafeVideoConfig: useUnsafeVideoConfig2,
37377
37527
  Timeline,
37378
37528
  SharedAudioContext: SharedAudioContext2,
37379
- useMediaMutedState: useMediaMutedState2,
37529
+ usePlayerMutedState: usePlayerMutedState2,
37380
37530
  useMediaVolumeState: useMediaVolumeState2,
37381
37531
  useFrameForVolumeProp: useFrameForVolumeProp2,
37382
37532
  evaluateVolume: evaluateVolume2,
@@ -37418,7 +37568,7 @@ var AudioForPreviewAssertedShowing = ({
37418
37568
  const { playbackRate: globalPlaybackRate } = Internals.usePlaybackRate();
37419
37569
  const sharedAudioContext = useContext212(SharedAudioContext2);
37420
37570
  const buffer = useBufferState();
37421
- const [mediaMuted] = useMediaMutedState2();
37571
+ const [playerMuted] = usePlayerMutedState2();
37422
37572
  const [mediaVolume] = useMediaVolumeState2();
37423
37573
  const volumePropFrame = useFrameForVolumeProp2(loopVolumeCurveBehavior ?? "repeat");
37424
37574
  const userPreferredVolume = evaluateVolume2({
@@ -37445,7 +37595,7 @@ var AudioForPreviewAssertedShowing = ({
37445
37595
  if (!bufferingContext) {
37446
37596
  throw new Error("useMediaPlayback must be used inside a <BufferingContext>");
37447
37597
  }
37448
- const effectiveMuted = muted || mediaMuted || userPreferredVolume <= 0;
37598
+ const effectiveMuted = muted || playerMuted || userPreferredVolume <= 0;
37449
37599
  const isPlayerBuffering = Internals.useIsPlayerBuffering(bufferingContext);
37450
37600
  const initialPlaying = useRef50(playing && !isPlayerBuffering);
37451
37601
  const initialIsPremounting = useRef50(isPremounting);
@@ -38818,7 +38968,7 @@ var getFormatOrNullOrNetworkError = async (input) => {
38818
38968
  return null;
38819
38969
  }
38820
38970
  };
38821
- var getSinks = async (src, credentials, requestInit) => {
38971
+ var getSinks = async (src, logLevel, credentials, requestInit) => {
38822
38972
  const resolvedRequestInit = resolveRequestInit({ credentials, requestInit });
38823
38973
  const input = new Input22({
38824
38974
  formats: ALL_FORMATS2,
@@ -38857,7 +39007,7 @@ var getSinks = async (src, credentials, requestInit) => {
38857
39007
  });
38858
39008
  const hasAlpha = startPacket?.sideData.alpha;
38859
39009
  if (hasAlpha && !canBrowserUseWebGl2()) {
38860
- return "cannot-decode-alpha";
39010
+ Internals.Log.warn({ logLevel, tag: "@remotion/media" }, `WebGL2 is not available, using the non-fast CPU path to decode alpha for ${src}.`);
38861
39011
  }
38862
39012
  return {
38863
39013
  sampleSink
@@ -38940,7 +39090,7 @@ var getSink = (src, logLevel, credentials, requestInit) => {
38940
39090
  logLevel,
38941
39091
  tag: "@remotion/media"
38942
39092
  }, `Sink for ${src} was not found, creating new sink`);
38943
- promise = getSinks(src, credentials, normalizedRequestInit);
39093
+ promise = getSinks(src, logLevel, credentials, normalizedRequestInit);
38944
39094
  sinkPromises[cacheKey] = promise;
38945
39095
  }
38946
39096
  return promise;
@@ -39898,7 +40048,7 @@ var {
39898
40048
  useUnsafeVideoConfig: useUnsafeVideoConfig22,
39899
40049
  Timeline: Timeline2,
39900
40050
  SharedAudioContext: SharedAudioContext22,
39901
- useMediaMutedState: useMediaMutedState22,
40051
+ usePlayerMutedState: usePlayerMutedState22,
39902
40052
  useMediaVolumeState: useMediaVolumeState22,
39903
40053
  useFrameForVolumeProp: useFrameForVolumeProp22,
39904
40054
  evaluateVolume: evaluateVolume22,
@@ -39959,7 +40109,7 @@ var VideoForPreviewAssertedShowing = ({
39959
40109
  const fallbackVideoRef = useCallback40((video) => {
39960
40110
  refForOutline.current = video;
39961
40111
  }, [refForOutline]);
39962
- const [mediaMuted] = useMediaMutedState22();
40112
+ const [playerMuted] = usePlayerMutedState22();
39963
40113
  const [mediaVolume] = useMediaVolumeState22();
39964
40114
  const volumePropFrame = useFrameForVolumeProp22(loopVolumeCurveBehavior);
39965
40115
  const userPreferredVolume = evaluateVolume22({
@@ -39988,7 +40138,7 @@ var VideoForPreviewAssertedShowing = ({
39988
40138
  if (!buffering) {
39989
40139
  throw new Error("useMediaPlayback must be used inside a <BufferingContext>");
39990
40140
  }
39991
- const effectiveMuted = muted || mediaMuted || userPreferredVolume <= 0;
40141
+ const effectiveMuted = muted || playerMuted || userPreferredVolume <= 0;
39992
40142
  const isPlayerBuffering = Internals.useIsPlayerBuffering(buffering);
39993
40143
  const initialPlaying = useRef213(playing && !isPlayerBuffering);
39994
40144
  const initialIsPremounting = useRef213(isPremounting);
@@ -42200,7 +42350,7 @@ import {
42200
42350
  import { BufferTarget, StreamTarget } from "mediabunny";
42201
42351
 
42202
42352
  // ../core/dist/esm/version.mjs
42203
- var VERSION2 = "4.0.481";
42353
+ var VERSION2 = "4.0.482";
42204
42354
 
42205
42355
  // ../web-renderer/dist/esm/index.mjs
42206
42356
  import { AudioSample, VideoSample } from "mediabunny";