@remotion/promo-pages 4.0.483 → 4.0.484

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.483";
2338
+ var VERSION = "4.0.484";
2339
2339
  var checkMultipleRemotionVersions = () => {
2340
2340
  if (typeof globalThis === "undefined") {
2341
2341
  return;
@@ -29466,7 +29466,7 @@ var PagesOfDocs = () => {
29466
29466
  width: "40px"
29467
29467
  }),
29468
29468
  /* @__PURE__ */ jsx57(StatItemContent, {
29469
- content: "900",
29469
+ content: "1000",
29470
29470
  width: "85px",
29471
29471
  maxWidth: "100px",
29472
29472
  fontSize: "2.5rem",
@@ -29698,8 +29698,8 @@ var CommunityStats_default = CommunityStats;
29698
29698
 
29699
29699
  // ../player/dist/esm/index.mjs
29700
29700
  import { createContext as createContext32 } from "react";
29701
- import { jsx as jsx59, jsxs as jsxs14 } from "react/jsx-runtime";
29702
- import { jsx as jsx214, jsxs as jsxs24, Fragment as Fragment12 } from "react/jsx-runtime";
29701
+ import { jsx as jsx59, jsxs as jsxs14, Fragment as Fragment12 } from "react/jsx-runtime";
29702
+ import { jsx as jsx214, jsxs as jsxs24, Fragment as Fragment23 } from "react/jsx-runtime";
29703
29703
  import React56 from "react";
29704
29704
  import { useContext as useContext210, useEffect as useEffect42, useState as useState38 } from "react";
29705
29705
  import { useContext as useContext46, useLayoutEffect as useLayoutEffect17 } from "react";
@@ -29749,10 +29749,10 @@ import { jsx as jsx104, jsxs as jsxs62 } from "react/jsx-runtime";
29749
29749
  import { useMemo as useMemo72 } from "react";
29750
29750
  import { jsxs as jsxs72 } from "react/jsx-runtime";
29751
29751
  import { useMemo as useMemo82 } from "react";
29752
- import { jsx as jsx114, jsxs as jsxs82, Fragment as Fragment23 } from "react/jsx-runtime";
29752
+ import { jsx as jsx114, jsxs as jsxs82, Fragment as Fragment32 } from "react/jsx-runtime";
29753
29753
  import { useCallback as useCallback92, useMemo as useMemo112 } from "react";
29754
29754
  import { useCallback as useCallback82, useMemo as useMemo102, useRef as useRef92 } from "react";
29755
- import { jsx as jsx124, jsxs as jsxs92, Fragment as Fragment32 } from "react/jsx-runtime";
29755
+ import { jsx as jsx124, jsxs as jsxs92, Fragment as Fragment42 } from "react/jsx-runtime";
29756
29756
  import { useCallback as useCallback112, useMemo as useMemo132, useState as useState122 } from "react";
29757
29757
  import { jsx as jsx133 } from "react/jsx-runtime";
29758
29758
 
@@ -31245,27 +31245,113 @@ if (typeof createContext32 !== "function") {
31245
31245
  }
31246
31246
  var ICON_SIZE2 = 25;
31247
31247
  var fullscreenIconSize = 16;
31248
- var PlayIcon = () => {
31249
- return /* @__PURE__ */ jsx59("svg", {
31248
+ var focusRingFallbackColor = "Highlight";
31249
+ var focusRingColor = "-webkit-focus-ring-color";
31250
+ var focusRingStyle = {
31251
+ stroke: focusRingColor
31252
+ };
31253
+ var playPath = "M8 6.375C7.40904 8.17576 7.06921 10.2486 7.01438 12.3871C6.95955 14.5255 7.19163 16.6547 7.6875 18.5625C9.95364 18.2995 12.116 17.6164 14.009 16.5655C15.902 15.5147 17.4755 14.124 18.6088 12.5C17.5158 10.8949 15.9949 9.51103 14.1585 8.45082C12.3222 7.3906 10.2174 6.68116 8 6.375Z";
31254
+ var playFocusPath = "M93.4691 0.0367432C84.4873 0.520935 77.2494 1.93634 69.9553 4.69266C66.3176 6.05219 60.3548 9.0134 57.0734 11.062C43.3476 19.6103 32.8846 32.4606 27.428 47.4154C26.3405 50.3766 23.3966 59.8188 21.5027 66.3185C8.88329 109.768 1.7204 157.277 0.182822 207.561C-0.0609408 215.569 -0.0609408 234.639 0.182822 242.517C1.21413 275.854 4.42055 305.949 10.2334 336.641C12.596 349.063 16.3837 365.75 18.5776 373.33C23.059 388.732 32.2095 401.843 45.2227 411.453C53.9419 417.896 63.8425 422.217 74.8118 424.34C80.0996 425.365 87.075 425.83 92.2127 425.495C99.3194 425.029 113.42 423.148 124.877 421.118C176.517 411.974 224.22 395.604 267.478 372.175C294.874 357.332 318.294 341.26 340.888 321.761C363.408 302.355 382.609 281.478 399.504 258.049C403.423 252.63 405.392 249.464 407.361 245.478C412.424 235.198 414.805 224.974 414.786 213.539C414.786 202.886 412.761 193.425 408.392 183.741C406.292 179.066 404.286 175.714 399.785 169.345C383.21 145.898 364.815 125.467 342.389 105.614C307.624 74.8481 266.335 49.613 220.226 30.9334C210.232 26.8921 200.387 23.335 188.537 19.4799C163.448 11.3413 132.396 4.28293 106.126 0.763062C102.001 0.204346 96.3942 -0.112244 93.4691 0.0367432Z";
31255
+ var playIconStrokeWidth = 6.25;
31256
+ var playFocusStrokeWidth = 1.5;
31257
+ var playFocusPadding = 2;
31258
+ var playPathBounds = {
31259
+ x1: 7.006500987565134,
31260
+ y1: 6.375,
31261
+ x2: 18.6088,
31262
+ y2: 18.5625
31263
+ };
31264
+ var playFocusPathBounds = {
31265
+ x1: -0.00000009999999999649709,
31266
+ y1: 0.000013203698169792638,
31267
+ x2: 414.7861127950162,
31268
+ y2: 425.60252460486765
31269
+ };
31270
+ var expandBounds = (bounds, padding) => {
31271
+ return {
31272
+ x1: bounds.x1 - padding,
31273
+ y1: bounds.y1 - padding,
31274
+ x2: bounds.x2 + padding,
31275
+ y2: bounds.y2 + padding
31276
+ };
31277
+ };
31278
+ var getBoundsWidth = (bounds) => bounds.x2 - bounds.x1;
31279
+ var getBoundsHeight = (bounds) => bounds.y2 - bounds.y1;
31280
+ var fitBoundsTransform = ({
31281
+ source,
31282
+ target
31283
+ }) => {
31284
+ const scale = Math.min(getBoundsWidth(target) / getBoundsWidth(source), getBoundsHeight(target) / getBoundsHeight(source));
31285
+ const x = target.x1 + (getBoundsWidth(target) - getBoundsWidth(source) * scale) / 2 - source.x1 * scale;
31286
+ const y = target.y1 + (getBoundsHeight(target) - getBoundsHeight(source) * scale) / 2 - source.y1 * scale;
31287
+ return `translate(${x.toFixed(4)} ${y.toFixed(4)}) scale(${scale.toFixed(5)})`;
31288
+ };
31289
+ var playFocusTransform = fitBoundsTransform({
31290
+ source: playFocusPathBounds,
31291
+ target: expandBounds(expandBounds(playPathBounds, playIconStrokeWidth / 2), playFocusPadding)
31292
+ });
31293
+ var PlayIcon = ({ focused }) => {
31294
+ return /* @__PURE__ */ jsxs14("svg", {
31250
31295
  width: ICON_SIZE2,
31251
31296
  height: ICON_SIZE2,
31252
31297
  viewBox: "0 0 25 25",
31253
31298
  fill: "none",
31254
- children: /* @__PURE__ */ jsx59("path", {
31255
- d: "M8 6.375C7.40904 8.17576 7.06921 10.2486 7.01438 12.3871C6.95955 14.5255 7.19163 16.6547 7.6875 18.5625C9.95364 18.2995 12.116 17.6164 14.009 16.5655C15.902 15.5147 17.4755 14.124 18.6088 12.5C17.5158 10.8949 15.9949 9.51103 14.1585 8.45082C12.3222 7.3906 10.2174 6.68116 8 6.375Z",
31256
- fill: "white",
31257
- stroke: "white",
31258
- strokeWidth: "6.25",
31259
- strokeLinejoin: "round"
31260
- })
31299
+ children: [
31300
+ focused ? /* @__PURE__ */ jsx59("path", {
31301
+ d: playFocusPath,
31302
+ fill: "none",
31303
+ stroke: focusRingFallbackColor,
31304
+ strokeWidth: playFocusStrokeWidth,
31305
+ style: focusRingStyle,
31306
+ transform: playFocusTransform,
31307
+ vectorEffect: "non-scaling-stroke"
31308
+ }) : null,
31309
+ /* @__PURE__ */ jsx59("path", {
31310
+ d: playPath,
31311
+ fill: "white",
31312
+ stroke: "white",
31313
+ strokeWidth: playIconStrokeWidth,
31314
+ strokeLinejoin: "round"
31315
+ })
31316
+ ]
31261
31317
  });
31262
31318
  };
31263
- var PauseIcon = () => {
31319
+ var PauseIcon = ({
31320
+ focused
31321
+ }) => {
31264
31322
  return /* @__PURE__ */ jsxs14("svg", {
31265
31323
  viewBox: "0 0 100 100",
31266
31324
  width: ICON_SIZE2,
31267
31325
  height: ICON_SIZE2,
31268
31326
  children: [
31327
+ focused ? /* @__PURE__ */ jsxs14(Fragment12, {
31328
+ children: [
31329
+ /* @__PURE__ */ jsx59("rect", {
31330
+ x: "21",
31331
+ y: "16",
31332
+ width: "28",
31333
+ height: "68",
31334
+ fill: "none",
31335
+ stroke: focusRingFallbackColor,
31336
+ strokeWidth: "4",
31337
+ ry: "9",
31338
+ rx: "9",
31339
+ style: focusRingStyle
31340
+ }),
31341
+ /* @__PURE__ */ jsx59("rect", {
31342
+ x: "51",
31343
+ y: "16",
31344
+ width: "28",
31345
+ height: "68",
31346
+ fill: "none",
31347
+ stroke: focusRingFallbackColor,
31348
+ strokeWidth: "4",
31349
+ ry: "9",
31350
+ rx: "9",
31351
+ style: focusRingStyle
31352
+ })
31353
+ ]
31354
+ }) : null,
31269
31355
  /* @__PURE__ */ jsx59("rect", {
31270
31356
  x: "25",
31271
31357
  y: "20",
@@ -31383,7 +31469,7 @@ var studioStyle = {
31383
31469
  };
31384
31470
  var BufferingIndicator = ({ type }) => {
31385
31471
  const style = type === "player" ? playerStyle : studioStyle;
31386
- return /* @__PURE__ */ jsxs24(Fragment12, {
31472
+ return /* @__PURE__ */ jsxs24(Fragment23, {
31387
31473
  children: [
31388
31474
  /* @__PURE__ */ jsx214("style", {
31389
31475
  type: "text/css",
@@ -32597,16 +32683,20 @@ var RenderWarningIfBlacklist = () => {
32597
32683
  })
32598
32684
  });
32599
32685
  };
32600
- var DefaultPlayPauseButton = ({ playing, buffering }) => {
32686
+ var DefaultPlayPauseButton = ({ playing, buffering, focused }) => {
32601
32687
  if (playing && buffering) {
32602
32688
  return /* @__PURE__ */ jsx64(BufferingIndicator, {
32603
32689
  type: "player"
32604
32690
  });
32605
32691
  }
32606
32692
  if (playing) {
32607
- return /* @__PURE__ */ jsx64(PauseIcon, {});
32693
+ return /* @__PURE__ */ jsx64(PauseIcon, {
32694
+ focused
32695
+ });
32608
32696
  }
32609
- return /* @__PURE__ */ jsx64(PlayIcon, {});
32697
+ return /* @__PURE__ */ jsx64(PlayIcon, {
32698
+ focused
32699
+ });
32610
32700
  };
32611
32701
  var KNOB_SIZE = 12;
32612
32702
  var BAR_HEIGHT = 5;
@@ -33330,6 +33420,7 @@ var Controls = ({
33330
33420
  renderCustomControls
33331
33421
  }) => {
33332
33422
  const playButtonRef = useRef82(null);
33423
+ const [playButtonFocused, setPlayButtonFocused] = useState102(false);
33333
33424
  const [supportsFullscreen, setSupportsFullscreen] = useState102(false);
33334
33425
  const hovered = useHoverState(containerRef, hideControlsWhenPointerDoesntMove);
33335
33426
  const { maxTimeLabelWidth, displayVerticalVolumeSlider } = useVideoControlsResize({
@@ -33364,6 +33455,15 @@ var Controls = ({
33364
33455
  opacity: Number(shouldShow)
33365
33456
  };
33366
33457
  }, [hovered, shouldShowInitially, playing, alwaysShowControls]);
33458
+ const playPauseButtonStyle = useMemo92(() => {
33459
+ if (renderPlayPauseButton !== null || playing && buffering) {
33460
+ return playerButtonStyle;
33461
+ }
33462
+ return {
33463
+ ...playerButtonStyle,
33464
+ outline: "none"
33465
+ };
33466
+ }, [buffering, playing, renderPlayPauseButton]);
33367
33467
  useEffect112(() => {
33368
33468
  if (playButtonRef.current && spaceKeyToPlayOrPause) {
33369
33469
  playButtonRef.current.focus({
@@ -33416,6 +33516,12 @@ var Controls = ({
33416
33516
  onDoubleClick?.(e);
33417
33517
  }
33418
33518
  }, [onDoubleClick]);
33519
+ const onPlayButtonFocus = useCallback72(() => {
33520
+ setPlayButtonFocused(true);
33521
+ }, []);
33522
+ const onPlayButtonBlur = useCallback72(() => {
33523
+ setPlayButtonFocused(false);
33524
+ }, []);
33419
33525
  return /* @__PURE__ */ jsxs82("div", {
33420
33526
  ref,
33421
33527
  style: containerCss,
@@ -33432,22 +33538,26 @@ var Controls = ({
33432
33538
  /* @__PURE__ */ jsx114("button", {
33433
33539
  ref: playButtonRef,
33434
33540
  type: "button",
33435
- style: playerButtonStyle,
33541
+ style: playPauseButtonStyle,
33436
33542
  onClick: toggle,
33543
+ onFocus: onPlayButtonFocus,
33544
+ onBlur: onPlayButtonBlur,
33437
33545
  "aria-label": playing ? "Pause video" : "Play video",
33438
33546
  title: playing ? "Pause video" : "Play video",
33439
33547
  children: renderPlayPauseButton === null ? /* @__PURE__ */ jsx114(DefaultPlayPauseButton, {
33440
33548
  buffering,
33549
+ focused: playButtonFocused,
33441
33550
  playing
33442
33551
  }) : renderPlayPauseButton({
33443
33552
  playing,
33444
33553
  isBuffering: buffering
33445
33554
  }) ?? /* @__PURE__ */ jsx114(DefaultPlayPauseButton, {
33446
33555
  buffering,
33556
+ focused: false,
33447
33557
  playing
33448
33558
  })
33449
33559
  }),
33450
- showVolumeControls ? /* @__PURE__ */ jsxs82(Fragment23, {
33560
+ showVolumeControls ? /* @__PURE__ */ jsxs82(Fragment32, {
33451
33561
  children: [
33452
33562
  /* @__PURE__ */ jsx114("div", {
33453
33563
  style: xSpacer
@@ -33984,7 +34094,7 @@ var PlayerUI = ({
33984
34094
  showPosterWhenBufferingAndPaused && showBufferIndicator && !player.isPlaying()
33985
34095
  ].some(Boolean);
33986
34096
  const { left, top, width, height, ...outerWithoutScale } = outer;
33987
- const content = /* @__PURE__ */ jsxs92(Fragment32, {
34097
+ const content = /* @__PURE__ */ jsxs92(Fragment42, {
33988
34098
  children: [
33989
34099
  /* @__PURE__ */ jsxs92("div", {
33990
34100
  style: outer,
@@ -40402,32 +40512,19 @@ var VideoForPreviewAssertedShowing = ({
40402
40512
  };
40403
40513
  }, [_experimentalInitiallyDrawCachedFrame, src]);
40404
40514
  useEffect212(() => {
40405
- if (!sharedAudioContext)
40406
- return;
40407
- if (!sharedAudioContext.audioContext)
40408
- return;
40409
- const {
40410
- audioContext,
40411
- gainNode,
40412
- audioSyncAnchor,
40413
- scheduleAudioNode,
40414
- unscheduleAudioNode
40415
- } = sharedAudioContext;
40416
- if (!gainNode) {
40417
- return;
40418
- }
40515
+ const sharedAudioContextForMediaPlayer = sharedAudioContext?.audioContext && sharedAudioContext.gainNode ? {
40516
+ audioContext: sharedAudioContext.audioContext,
40517
+ gainNode: sharedAudioContext.gainNode,
40518
+ audioSyncAnchor: sharedAudioContext.audioSyncAnchor,
40519
+ scheduleAudioNode: sharedAudioContext.scheduleAudioNode,
40520
+ unscheduleAudioNode: sharedAudioContext.unscheduleAudioNode
40521
+ } : null;
40419
40522
  try {
40420
40523
  const player = new MediaPlayer({
40421
40524
  canvas: canvasRef.current,
40422
40525
  src: preloadedSrc,
40423
40526
  logLevel,
40424
- sharedAudioContext: {
40425
- audioContext,
40426
- gainNode,
40427
- audioSyncAnchor,
40428
- scheduleAudioNode,
40429
- unscheduleAudioNode
40430
- },
40527
+ sharedAudioContext: sharedAudioContextForMediaPlayer,
40431
40528
  loop,
40432
40529
  trimAfter: initialTrimAfterRef.current,
40433
40530
  trimBefore: initialTrimBeforeRef.current,
@@ -42565,7 +42662,7 @@ import {
42565
42662
  import { BufferTarget, StreamTarget } from "mediabunny";
42566
42663
 
42567
42664
  // ../core/dist/esm/version.mjs
42568
- var VERSION2 = "4.0.483";
42665
+ var VERSION2 = "4.0.484";
42569
42666
 
42570
42667
  // ../web-renderer/dist/esm/index.mjs
42571
42668
  import { AudioSample, VideoSample } from "mediabunny";
@@ -46299,6 +46396,124 @@ var parsePaintOrder = (paintOrder) => {
46299
46396
  var parseTextShadow = (textShadowValue) => {
46300
46397
  return parseShadowValues(textShadowValue);
46301
46398
  };
46399
+ var textDecorationLines = [
46400
+ "underline",
46401
+ "overline",
46402
+ "line-through"
46403
+ ];
46404
+ var currentColorValues = new Set(["currentcolor", "currentColor"]);
46405
+ var getDefaultTextDecorationThickness = (fontSizePx) => {
46406
+ return Math.max(1, Number.isFinite(fontSizePx) ? fontSizePx / 16 : 1);
46407
+ };
46408
+ var parseTextDecoration = ({
46409
+ onlyBackgroundClipText,
46410
+ style: style2
46411
+ }) => {
46412
+ const textDecorationStyle = style2.getPropertyValue("text-decoration-style");
46413
+ if (textDecorationStyle && textDecorationStyle !== "solid") {
46414
+ return null;
46415
+ }
46416
+ const textDecorationLine = style2.getPropertyValue("text-decoration-line");
46417
+ const lineParts = textDecorationLine.split(/\s+/);
46418
+ const lines2 = textDecorationLines.filter((line) => lineParts.includes(line));
46419
+ if (lines2.length === 0) {
46420
+ return null;
46421
+ }
46422
+ const textDecorationThickness = style2.getPropertyValue("text-decoration-thickness");
46423
+ const thicknessValue = parseFloat(textDecorationThickness);
46424
+ const thickness = Number.isFinite(thicknessValue) ? thicknessValue : getDefaultTextDecorationThickness(parseFloat(style2.fontSize));
46425
+ if (thickness <= 0) {
46426
+ return null;
46427
+ }
46428
+ const textDecorationColor = style2.getPropertyValue("text-decoration-color");
46429
+ return {
46430
+ lines: lines2,
46431
+ color: onlyBackgroundClipText || !textDecorationColor || currentColorValues.has(textDecorationColor) ? onlyBackgroundClipText ? "black" : style2.color : textDecorationColor,
46432
+ thickness
46433
+ };
46434
+ };
46435
+ var getTextDecorations = ({
46436
+ computedStyle,
46437
+ onlyBackgroundClipText,
46438
+ span
46439
+ }) => {
46440
+ const decorations = [];
46441
+ const spanDecoration = parseTextDecoration({
46442
+ onlyBackgroundClipText,
46443
+ style: computedStyle
46444
+ });
46445
+ if (spanDecoration) {
46446
+ decorations.push(spanDecoration);
46447
+ }
46448
+ let parent = span.parentElement;
46449
+ while (parent) {
46450
+ const parentDecoration = parseTextDecoration({
46451
+ onlyBackgroundClipText,
46452
+ style: getComputedStyle(parent)
46453
+ });
46454
+ if (parentDecoration) {
46455
+ decorations.push(parentDecoration);
46456
+ }
46457
+ parent = parent.parentElement;
46458
+ }
46459
+ return decorations;
46460
+ };
46461
+ var getTextDecorationY = ({
46462
+ line,
46463
+ measurements,
46464
+ y,
46465
+ thickness,
46466
+ fontSizePx
46467
+ }) => {
46468
+ const fontAscent = measurements.fontBoundingBoxAscent || measurements.actualBoundingBoxAscent || fontSizePx;
46469
+ const fontDescent = measurements.fontBoundingBoxDescent || measurements.actualBoundingBoxDescent || fontSizePx * 0.2;
46470
+ const actualAscent = measurements.actualBoundingBoxAscent || fontAscent;
46471
+ if (line === "underline") {
46472
+ return y + Math.max(thickness, fontDescent * 0.4);
46473
+ }
46474
+ if (line === "overline") {
46475
+ return y - fontAscent + thickness / 2;
46476
+ }
46477
+ return y - actualAscent * 0.35;
46478
+ };
46479
+ var drawTextDecoration = ({
46480
+ contextToDraw,
46481
+ fontSizePx,
46482
+ measurements,
46483
+ parentRect,
46484
+ textDecorations,
46485
+ token,
46486
+ y
46487
+ }) => {
46488
+ if (textDecorations.length === 0) {
46489
+ return;
46490
+ }
46491
+ const startX = token.rect.left - parentRect.x;
46492
+ const endX = token.rect.right - parentRect.x;
46493
+ if (endX <= startX) {
46494
+ return;
46495
+ }
46496
+ contextToDraw.save();
46497
+ contextToDraw.lineCap = "butt";
46498
+ for (const textDecoration of textDecorations) {
46499
+ contextToDraw.strokeStyle = textDecoration.color;
46500
+ contextToDraw.lineWidth = textDecoration.thickness;
46501
+ for (const line of textDecoration.lines) {
46502
+ const lineY = getTextDecorationY({
46503
+ line,
46504
+ measurements,
46505
+ y,
46506
+ thickness: textDecoration.thickness,
46507
+ fontSizePx
46508
+ });
46509
+ contextToDraw.beginPath();
46510
+ contextToDraw.moveTo(startX, lineY);
46511
+ contextToDraw.lineTo(endX, lineY);
46512
+ contextToDraw.stroke();
46513
+ }
46514
+ }
46515
+ contextToDraw.restore();
46516
+ };
46302
46517
  var drawText = ({
46303
46518
  span,
46304
46519
  logLevel,
@@ -46349,6 +46564,11 @@ var drawText = ({
46349
46564
  contextToDraw.fillStyle = onlyBackgroundClipText ? "black" : webkitTextFillColor;
46350
46565
  contextToDraw.letterSpacing = letterSpacing;
46351
46566
  contextToDraw.wordSpacing = wordSpacing;
46567
+ const textDecorations = getTextDecorations({
46568
+ computedStyle,
46569
+ onlyBackgroundClipText,
46570
+ span
46571
+ });
46352
46572
  const strokeWidth2 = parseFloat(webkitTextStrokeWidth);
46353
46573
  const hasStroke = strokeWidth2 > 0;
46354
46574
  if (hasStroke) {
@@ -46399,6 +46619,15 @@ var drawText = ({
46399
46619
  drawFill();
46400
46620
  drawStroke();
46401
46621
  }
46622
+ drawTextDecoration({
46623
+ contextToDraw,
46624
+ fontSizePx,
46625
+ measurements,
46626
+ parentRect,
46627
+ textDecorations,
46628
+ token,
46629
+ y
46630
+ });
46402
46631
  }
46403
46632
  span.textContent = originalText;
46404
46633
  finishFilter();
@@ -49416,6 +49645,7 @@ var listOfRemotionPackages = [
49416
49645
  "@remotion/bugs",
49417
49646
  "@remotion/brand",
49418
49647
  "@remotion/bundler",
49648
+ "@remotion/browser-studio",
49419
49649
  "@remotion/canvas-capture",
49420
49650
  "@remotion/cli",
49421
49651
  "@remotion/cloudrun",
@@ -50830,32 +51060,6 @@ var GetStarted = () => {
50830
51060
  className: "w-full",
50831
51061
  children: /* @__PURE__ */ jsx168(GithubButton, {})
50832
51062
  })
50833
- }),
50834
- " ",
50835
- /* @__PURE__ */ jsx168("div", {
50836
- className: "w-2 h-2"
50837
- }),
50838
- /* @__PURE__ */ jsx168("div", {
50839
- className: "w-full lg:w-auto",
50840
- children: /* @__PURE__ */ jsxs66(Button, {
50841
- href: "/prompts",
50842
- className: "w-full",
50843
- children: [
50844
- /* @__PURE__ */ jsx168("svg", {
50845
- width: "20",
50846
- height: "20",
50847
- viewBox: "0 0 149 149",
50848
- fill: "none",
50849
- xmlns: "http://www.w3.org/2000/svg",
50850
- style: { marginRight: 8 },
50851
- children: /* @__PURE__ */ jsx168("path", {
50852
- d: "M29.05 98.54L58.19 82.19L58.68 80.77L58.19 79.98H56.77L51.9 79.68L35.25 79.23L20.81 78.63L6.82 77.88L3.3 77.13L0 72.78L0.340004 70.61L3.3 68.62L7.54 68.99L16.91 69.63L30.97 70.6L41.17 71.2L56.28 72.77H58.68L59.02 71.8L58.2 71.2L57.56 70.6L43.01 60.74L27.26 50.32L19.01 44.32L14.55 41.28L12.3 38.43L11.33 32.21L15.38 27.75L20.82 28.12L22.21 28.49L27.72 32.73L39.49 41.84L54.86 53.16L57.11 55.03L58.01 54.39L58.12 53.94L57.11 52.25L48.75 37.14L39.83 21.77L35.86 15.4L34.81 11.58C34.44 10.01 34.17 8.69 34.17 7.08L38.78 0.820007L41.33 0L47.48 0.820007L50.07 3.07001L53.89 11.81L60.08 25.57L69.68 44.28L72.49 49.83L73.99 54.97L74.55 56.54H75.52V55.64L76.31 45.1L77.77 32.16L79.19 15.51L79.68 10.82L82 5.2L86.61 2.16L90.21 3.88L93.17 8.12L92.76 10.86L91 22.3L87.55 40.22L85.3 52.22H86.61L88.11 50.72L94.18 42.66L104.38 29.91L108.88 24.85L114.13 19.26L117.5 16.6H123.87L128.56 23.57L126.46 30.77L119.9 39.09L114.46 46.14L106.66 56.64L101.79 65.04L102.24 65.71L103.4 65.6L121.02 61.85L130.54 60.13L141.9 58.18L147.04 60.58L147.6 63.02L145.58 68.01L133.43 71.01L119.18 73.86L97.96 78.88L97.7 79.07L98 79.44L107.56 80.34L111.65 80.56H121.66L140.3 81.95L145.17 85.17L148.09 89.11L147.6 92.11L140.1 95.93L129.98 93.53L106.36 87.91L98.26 85.89H97.14V86.56L103.89 93.16L116.26 104.33L131.75 118.73L132.54 122.29L130.55 125.1L128.45 124.8L114.84 114.56L109.59 109.95L97.7 99.94H96.91V100.99L99.65 105L114.12 126.75L114.87 133.42L113.82 135.59L110.07 136.9L105.95 136.15L97.48 124.26L88.74 110.87L81.69 98.87L80.83 99.36L76.67 144.17L74.72 146.46L70.22 148.18L66.47 145.33L64.48 140.72L66.47 131.61L68.87 119.72L70.82 110.27L72.58 98.53L73.63 94.63L73.56 94.37L72.7 94.48L63.85 106.63L50.39 124.82L39.74 136.22L37.19 137.23L32.77 134.94L33.18 130.85L35.65 127.21L50.39 108.46L59.28 96.84L65.02 90.13L64.98 89.16H64.64L25.49 114.58L18.52 115.48L15.52 112.67L15.89 108.06L17.31 106.56L29.08 98.46L29.04 98.5L29.05 98.54Z",
50853
- fill: "#D97757"
50854
- })
50855
- }),
50856
- "Prompt a video"
50857
- ]
50858
- })
50859
51063
  })
50860
51064
  ]
50861
51065
  });
package/dist/design.js CHANGED
@@ -5565,7 +5565,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
5565
5565
  var addSequenceStackTraces = (component) => {
5566
5566
  componentsToAddStacksTo.push(component);
5567
5567
  };
5568
- var VERSION = "4.0.483";
5568
+ var VERSION = "4.0.484";
5569
5569
  var checkMultipleRemotionVersions = () => {
5570
5570
  if (typeof globalThis === "undefined") {
5571
5571
  return;
package/dist/experts.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.483";
2338
+ var VERSION = "4.0.484";
2339
2339
  var checkMultipleRemotionVersions = () => {
2340
2340
  if (typeof globalThis === "undefined") {
2341
2341
  return;
@@ -5565,7 +5565,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
5565
5565
  var addSequenceStackTraces = (component) => {
5566
5566
  componentsToAddStacksTo.push(component);
5567
5567
  };
5568
- var VERSION = "4.0.483";
5568
+ var VERSION = "4.0.484";
5569
5569
  var checkMultipleRemotionVersions = () => {
5570
5570
  if (typeof globalThis === "undefined") {
5571
5571
  return;
@@ -5565,7 +5565,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
5565
5565
  var addSequenceStackTraces = (component) => {
5566
5566
  componentsToAddStacksTo.push(component);
5567
5567
  };
5568
- var VERSION = "4.0.483";
5568
+ var VERSION = "4.0.484";
5569
5569
  var checkMultipleRemotionVersions = () => {
5570
5570
  if (typeof globalThis === "undefined") {
5571
5571
  return;
@@ -26019,42 +26019,35 @@ var PromptsGalleryPage = ({ promptSubmissions, currentPage, totalPages }) => {
26019
26019
  children: "Remotion Skills"
26020
26020
  }),
26021
26021
  " ",
26022
- "and a coding agent like Claude Code, Codex, or OpenCode. Want to make your own?"
26022
+ "and coding agents like Claude Code, Codex, or OpenCode."
26023
26023
  ]
26024
26024
  })
26025
26025
  ]
26026
26026
  }),
26027
- /* @__PURE__ */ jsxs7("div", {
26027
+ /* @__PURE__ */ jsx47("div", {
26028
26028
  className: "flex items-center gap-2",
26029
- children: [
26030
- /* @__PURE__ */ jsxs7(Button, {
26031
- href: "/docs/ai/coding-agents",
26032
- className: "font-brand rounded-full bg-[#D97757] flex items-center text-white",
26033
- children: [
26034
- /* @__PURE__ */ jsx47("svg", {
26035
- width: "20",
26036
- height: "20",
26037
- viewBox: "0 0 149 149",
26038
- fill: "none",
26039
- xmlns: "http://www.w3.org/2000/svg",
26040
- style: { marginRight: 8 },
26041
- children: /* @__PURE__ */ jsx47("path", {
26042
- d: "M29.05 98.54L58.19 82.19L58.68 80.77L58.19 79.98H56.77L51.9 79.68L35.25 79.23L20.81 78.63L6.82 77.88L3.3 77.13L0 72.78L0.340004 70.61L3.3 68.62L7.54 68.99L16.91 69.63L30.97 70.6L41.17 71.2L56.28 72.77H58.68L59.02 71.8L58.2 71.2L57.56 70.6L43.01 60.74L27.26 50.32L19.01 44.32L14.55 41.28L12.3 38.43L11.33 32.21L15.38 27.75L20.82 28.12L22.21 28.49L27.72 32.73L39.49 41.84L54.86 53.16L57.11 55.03L58.01 54.39L58.12 53.94L57.11 52.25L48.75 37.14L39.83 21.77L35.86 15.4L34.81 11.58C34.44 10.01 34.17 8.69 34.17 7.08L38.78 0.820007L41.33 0L47.48 0.820007L50.07 3.07001L53.89 11.81L60.08 25.57L69.68 44.28L72.49 49.83L73.99 54.97L74.55 56.54H75.52V55.64L76.31 45.1L77.77 32.16L79.19 15.51L79.68 10.82L82 5.2L86.61 2.16L90.21 3.88L93.17 8.12L92.76 10.86L91 22.3L87.55 40.22L85.3 52.22H86.61L88.11 50.72L94.18 42.66L104.38 29.91L108.88 24.85L114.13 19.26L117.5 16.6H123.87L128.56 23.57L126.46 30.77L119.9 39.09L114.46 46.14L106.66 56.64L101.79 65.04L102.24 65.71L103.4 65.6L121.02 61.85L130.54 60.13L141.9 58.18L147.04 60.58L147.6 63.02L145.58 68.01L133.43 71.01L119.18 73.86L97.96 78.88L97.7 79.07L98 79.44L107.56 80.34L111.65 80.56H121.66L140.3 81.95L145.17 85.17L148.09 89.11L147.6 92.11L140.1 95.93L129.98 93.53L106.36 87.91L98.26 85.89H97.14V86.56L103.89 93.16L116.26 104.33L131.75 118.73L132.54 122.29L130.55 125.1L128.45 124.8L114.84 114.56L109.59 109.95L97.7 99.94H96.91V100.99L99.65 105L114.12 126.75L114.87 133.42L113.82 135.59L110.07 136.9L105.95 136.15L97.48 124.26L88.74 110.87L81.69 98.87L80.83 99.36L76.67 144.17L74.72 146.46L70.22 148.18L66.47 145.33L64.48 140.72L66.47 131.61L68.87 119.72L70.82 110.27L72.58 98.53L73.63 94.63L73.56 94.37L72.7 94.48L63.85 106.63L50.39 124.82L39.74 136.22L37.19 137.23L32.77 134.94L33.18 130.85L35.65 127.21L50.39 108.46L59.28 96.84L65.02 90.13L64.98 89.16H64.64L25.49 114.58L18.52 115.48L15.52 112.67L15.89 108.06L17.31 106.56L29.08 98.46L29.04 98.5L29.05 98.54Z",
26043
- fill: "#fff"
26044
- })
26045
- }),
26046
- /* @__PURE__ */ jsx47("div", {
26047
- className: "text-sm",
26048
- children: "Create your own video"
26029
+ children: /* @__PURE__ */ jsxs7(Button, {
26030
+ href: "/docs/ai/coding-agents",
26031
+ className: "font-brand rounded-full bg-[#D97757] flex items-center text-white",
26032
+ children: [
26033
+ /* @__PURE__ */ jsx47("svg", {
26034
+ width: "20",
26035
+ height: "20",
26036
+ viewBox: "0 0 149 149",
26037
+ fill: "none",
26038
+ xmlns: "http://www.w3.org/2000/svg",
26039
+ style: { marginRight: 8 },
26040
+ children: /* @__PURE__ */ jsx47("path", {
26041
+ d: "M29.05 98.54L58.19 82.19L58.68 80.77L58.19 79.98H56.77L51.9 79.68L35.25 79.23L20.81 78.63L6.82 77.88L3.3 77.13L0 72.78L0.340004 70.61L3.3 68.62L7.54 68.99L16.91 69.63L30.97 70.6L41.17 71.2L56.28 72.77H58.68L59.02 71.8L58.2 71.2L57.56 70.6L43.01 60.74L27.26 50.32L19.01 44.32L14.55 41.28L12.3 38.43L11.33 32.21L15.38 27.75L20.82 28.12L22.21 28.49L27.72 32.73L39.49 41.84L54.86 53.16L57.11 55.03L58.01 54.39L58.12 53.94L57.11 52.25L48.75 37.14L39.83 21.77L35.86 15.4L34.81 11.58C34.44 10.01 34.17 8.69 34.17 7.08L38.78 0.820007L41.33 0L47.48 0.820007L50.07 3.07001L53.89 11.81L60.08 25.57L69.68 44.28L72.49 49.83L73.99 54.97L74.55 56.54H75.52V55.64L76.31 45.1L77.77 32.16L79.19 15.51L79.68 10.82L82 5.2L86.61 2.16L90.21 3.88L93.17 8.12L92.76 10.86L91 22.3L87.55 40.22L85.3 52.22H86.61L88.11 50.72L94.18 42.66L104.38 29.91L108.88 24.85L114.13 19.26L117.5 16.6H123.87L128.56 23.57L126.46 30.77L119.9 39.09L114.46 46.14L106.66 56.64L101.79 65.04L102.24 65.71L103.4 65.6L121.02 61.85L130.54 60.13L141.9 58.18L147.04 60.58L147.6 63.02L145.58 68.01L133.43 71.01L119.18 73.86L97.96 78.88L97.7 79.07L98 79.44L107.56 80.34L111.65 80.56H121.66L140.3 81.95L145.17 85.17L148.09 89.11L147.6 92.11L140.1 95.93L129.98 93.53L106.36 87.91L98.26 85.89H97.14V86.56L103.89 93.16L116.26 104.33L131.75 118.73L132.54 122.29L130.55 125.1L128.45 124.8L114.84 114.56L109.59 109.95L97.7 99.94H96.91V100.99L99.65 105L114.12 126.75L114.87 133.42L113.82 135.59L110.07 136.9L105.95 136.15L97.48 124.26L88.74 110.87L81.69 98.87L80.83 99.36L76.67 144.17L74.72 146.46L70.22 148.18L66.47 145.33L64.48 140.72L66.47 131.61L68.87 119.72L70.82 110.27L72.58 98.53L73.63 94.63L73.56 94.37L72.7 94.48L63.85 106.63L50.39 124.82L39.74 136.22L37.19 137.23L32.77 134.94L33.18 130.85L35.65 127.21L50.39 108.46L59.28 96.84L65.02 90.13L64.98 89.16H64.64L25.49 114.58L18.52 115.48L15.52 112.67L15.89 108.06L17.31 106.56L29.08 98.46L29.04 98.5L29.05 98.54Z",
26042
+ fill: "#fff"
26049
26043
  })
26050
- ]
26051
- }),
26052
- /* @__PURE__ */ jsx47(Button, {
26053
- href: "/prompts/submit",
26054
- className: "font-brand rounded-full text-sm",
26055
- children: "Share your video"
26056
- })
26057
- ]
26044
+ }),
26045
+ /* @__PURE__ */ jsx47("div", {
26046
+ className: "text-sm",
26047
+ children: "Create your own video"
26048
+ })
26049
+ ]
26050
+ })
26058
26051
  }),
26059
26052
  /* @__PURE__ */ jsx47("div", {
26060
26053
  className: "h-12"
@@ -22899,7 +22899,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
22899
22899
  var addSequenceStackTraces = (component) => {
22900
22900
  componentsToAddStacksTo.push(component);
22901
22901
  };
22902
- var VERSION = "4.0.483";
22902
+ var VERSION = "4.0.484";
22903
22903
  var checkMultipleRemotionVersions = () => {
22904
22904
  if (typeof globalThis === "undefined") {
22905
22905
  return;