@remotion/promo-pages 4.0.489 → 4.0.491

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.
Files changed (29) hide show
  1. package/dist/Homepage.js +1018 -556
  2. package/dist/components/Homepage.js +5 -17
  3. package/dist/components/homepage/CommunityStatsItems.js +1 -1
  4. package/dist/components/homepage/Demo/Card.d.ts +3 -3
  5. package/dist/components/homepage/Demo/DemoRender.d.ts +1 -1
  6. package/dist/components/homepage/Demo/DisplayedEmoji.js +12 -4
  7. package/dist/components/homepage/Demo/math.d.ts +1 -1
  8. package/dist/components/homepage/GitHubButton.js +1 -1
  9. package/dist/components/homepage/MakeVideosAgentically.d.ts +1 -0
  10. package/dist/components/homepage/MakeVideosAgentically.js +4 -6
  11. package/dist/components/homepage/MakeVideosInteractively.d.ts +2 -0
  12. package/dist/components/homepage/MakeVideosInteractively.js +3 -6
  13. package/dist/components/homepage/MakeVideosLinks.js +1 -1
  14. package/dist/components/homepage/MakeVideosProgrammatically.d.ts +2 -0
  15. package/dist/components/homepage/MakeVideosProgrammatically.js +2 -5
  16. package/dist/components/homepage/Pricing.d.ts +6 -1
  17. package/dist/components/homepage/Pricing.js +12 -2
  18. package/dist/components/homepage/WriteInReact.js +1 -1
  19. package/dist/components/team/TrustSection.js +1 -1
  20. package/dist/design.js +355 -194
  21. package/dist/experts.js +340 -168
  22. package/dist/homepage/Pricing.js +372 -211
  23. package/dist/prompts/PromptsGallery.js +352 -191
  24. package/dist/prompts/PromptsShow.js +358 -197
  25. package/dist/prompts/PromptsSubmit.js +344 -183
  26. package/dist/team.js +329 -168
  27. package/dist/template-modal-content.js +372 -211
  28. package/dist/templates.js +373 -209
  29. package/package.json +13 -13
package/dist/team.js CHANGED
@@ -216,7 +216,7 @@ var TitleTeamCards = () => {
216
216
  // ../design/dist/esm/index.mjs
217
217
  import * as React23 from "react";
218
218
  import * as React3 from "react";
219
- import { Fragment as Fragment2, jsx as jsx44 } from "react/jsx-runtime";
219
+ import { Fragment as Fragment22, jsx as jsx44 } from "react/jsx-runtime";
220
220
  import React52, { useCallback as useCallback27, useRef as useRef210, useState as useState22 } from "react";
221
221
 
222
222
  // ../../node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
@@ -4564,13 +4564,12 @@ import { jsx as jsx34 } from "react/jsx-runtime";
4564
4564
  import { jsx as jsx35 } from "react/jsx-runtime";
4565
4565
  import React39, { useMemo as useMemo37 } from "react";
4566
4566
  import { jsx as jsx36 } from "react/jsx-runtime";
4567
- import {
4568
- Children,
4567
+ import React41, {
4569
4568
  forwardRef as forwardRef14,
4570
4569
  useMemo as useMemo38
4571
4570
  } from "react";
4572
4571
  import React40 from "react";
4573
- import { jsx as jsx37 } from "react/jsx-runtime";
4572
+ import { jsx as jsx37, jsxs as jsxs32, Fragment } from "react/jsx-runtime";
4574
4573
  import React42 from "react";
4575
4574
  import { forwardRef as forwardRef16, useCallback as useCallback25, useContext as useContext39 } from "react";
4576
4575
  import {
@@ -5460,26 +5459,20 @@ var continueRenderInternal = ({
5460
5459
  if (typeof handle !== "number") {
5461
5460
  throw new TypeError("The parameter passed into continueRender() must be the return value of delayRender() which is a number. Got: " + JSON.stringify(handle));
5462
5461
  }
5463
- scope.remotion_delayRenderHandles = scope.remotion_delayRenderHandles.filter((h) => {
5464
- if (h === handle) {
5465
- if (environment.isRendering && scope !== undefined) {
5466
- if (!scope.remotion_delayRenderTimeouts[handle]) {
5467
- return false;
5468
- }
5469
- const { label: label2, startTime, timeout } = scope.remotion_delayRenderTimeouts[handle];
5470
- clearTimeout(timeout);
5471
- const message = [
5472
- label2 ? `"${label2}"` : "A handle",
5473
- DELAY_RENDER_CLEAR_TOKEN,
5474
- `${Date.now() - startTime}ms`
5475
- ].filter(truthy).join(" ");
5476
- Log.verbose({ logLevel, tag: "delayRender()" }, message);
5477
- delete scope.remotion_delayRenderTimeouts[handle];
5478
- }
5479
- return false;
5480
- }
5481
- return true;
5482
- });
5462
+ const handleExists = scope.remotion_delayRenderHandles.includes(handle);
5463
+ const timeoutEntry = scope.remotion_delayRenderTimeouts[handle];
5464
+ if (handleExists && environment.isRendering && timeoutEntry) {
5465
+ const { label: label2, startTime, timeout } = timeoutEntry;
5466
+ clearTimeout(timeout);
5467
+ const message = [
5468
+ label2 ? `"${label2}"` : "A handle",
5469
+ DELAY_RENDER_CLEAR_TOKEN,
5470
+ `${Date.now() - startTime}ms`
5471
+ ].filter(truthy).join(" ");
5472
+ Log.verbose({ logLevel, tag: "delayRender()" }, message);
5473
+ delete scope.remotion_delayRenderTimeouts[handle];
5474
+ }
5475
+ scope.remotion_delayRenderHandles = scope.remotion_delayRenderHandles.filter((h) => h !== handle);
5483
5476
  if (scope.remotion_delayRenderHandles.length === 0) {
5484
5477
  scope.remotion_renderReady = true;
5485
5478
  }
@@ -5752,7 +5745,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
5752
5745
  var addSequenceStackTraces = (component) => {
5753
5746
  componentsToAddStacksTo.push(component);
5754
5747
  };
5755
- var VERSION = "4.0.489";
5748
+ var VERSION = "4.0.491";
5756
5749
  var checkMultipleRemotionVersions = () => {
5757
5750
  if (typeof globalThis === "undefined") {
5758
5751
  return;
@@ -6133,7 +6126,8 @@ var transformSchema = {
6133
6126
  max: 100,
6134
6127
  step: 0.01,
6135
6128
  default: 1,
6136
- description: "Scale"
6129
+ description: "Scale",
6130
+ defaultKeyframeOutput: "perceptual-scale"
6137
6131
  },
6138
6132
  "style.rotate": {
6139
6133
  type: "rotation-css",
@@ -6364,7 +6358,7 @@ var SequenceManagerRefContext = React11.createContext({
6364
6358
  current: []
6365
6359
  });
6366
6360
  var makeSequencePropsSubscriptionKey = (key) => {
6367
- return `${key.nodePath.join(".")}.${key.sequenceKeys.join(".")}.${key.effectKeys.map((keys) => keys.join(".")).join(".")}`;
6361
+ return `${key.absolutePath}\x00${key.nodePath.join(".")}\x00${key.sequenceKeys.join(".")}\x00${key.effectKeys.map((keys) => keys.join(".")).join(".")}`;
6368
6362
  };
6369
6363
  var VisualModePropStatusesContext = React11.createContext({
6370
6364
  propStatuses: {}
@@ -6937,8 +6931,20 @@ var serializeStringInterpolationValue = ({
6937
6931
  }
6938
6932
  return values.slice(0, dimensions).map((value, index) => `${stringifyNumber(value)}${units[index]}`).join(" ");
6939
6933
  };
6934
+ var toSignedArea = (scale) => {
6935
+ if (scale === 0) {
6936
+ return 0;
6937
+ }
6938
+ return Math.sign(scale) * scale * scale;
6939
+ };
6940
+ var fromSignedArea = (area) => {
6941
+ if (area === 0) {
6942
+ return 0;
6943
+ }
6944
+ return Math.sign(area) * Math.sqrt(Math.abs(area));
6945
+ };
6940
6946
  function interpolateFunction(input, inputRange, outputRange, options) {
6941
- const { extrapolateLeft, extrapolateRight, easing } = options;
6947
+ const { extrapolateLeft, extrapolateRight, easing, output } = options;
6942
6948
  let result = input;
6943
6949
  const [inputMin, inputMax] = inputRange;
6944
6950
  const [outputMin, outputMax] = outputRange;
@@ -6969,7 +6975,13 @@ function interpolateFunction(input, inputRange, outputRange, options) {
6969
6975
  }
6970
6976
  result = (result - inputMin) / (inputMax - inputMin);
6971
6977
  result = easing(result);
6972
- result = result * (outputMax - outputMin) + outputMin;
6978
+ if (output === "perceptual-scale") {
6979
+ const signedAreaMin = toSignedArea(outputMin);
6980
+ const signedAreaMax = toSignedArea(outputMax);
6981
+ result = fromSignedArea(result * (signedAreaMax - signedAreaMin) + signedAreaMin);
6982
+ } else {
6983
+ result = result * (outputMax - outputMin) + outputMin;
6984
+ }
6973
6985
  return result;
6974
6986
  }
6975
6987
  function findRange(input, inputRange) {
@@ -6982,6 +6994,9 @@ function findRange(input, inputRange) {
6982
6994
  return i - 1;
6983
6995
  }
6984
6996
  var defaultEasing = (num) => num;
6997
+ var resolveOutputOption = (output) => {
6998
+ return output ?? "linear";
6999
+ };
6985
7000
  var shouldExtendRightForEasing = (easing) => {
6986
7001
  return easing.remotionShouldExtendRight === true;
6987
7002
  };
@@ -7003,12 +7018,14 @@ var interpolateSegment = ({
7003
7018
  outputRange,
7004
7019
  easing,
7005
7020
  extrapolateLeft,
7006
- extrapolateRight
7021
+ extrapolateRight,
7022
+ output
7007
7023
  }) => {
7008
7024
  return interpolateFunction(input, inputRange, outputRange, {
7009
7025
  easing,
7010
7026
  extrapolateLeft,
7011
- extrapolateRight: input > inputRange[1] && extrapolateRight === "clamp" && shouldExtendRightForEasing(easing) ? "extend" : extrapolateRight
7027
+ extrapolateRight: input > inputRange[1] && extrapolateRight === "clamp" && shouldExtendRightForEasing(easing) ? "extend" : extrapolateRight,
7028
+ output
7012
7029
  });
7013
7030
  };
7014
7031
  var interpolateNumber = ({
@@ -7017,6 +7034,7 @@ var interpolateNumber = ({
7017
7034
  outputRange,
7018
7035
  options
7019
7036
  }) => {
7037
+ const output = resolveOutputOption(options?.output);
7020
7038
  if (inputRange.length === 1) {
7021
7039
  return outputRange[0];
7022
7040
  }
@@ -7041,7 +7059,8 @@ var interpolateNumber = ({
7041
7059
  outputRange: [outputRange[range], outputRange[range + 1]],
7042
7060
  easing,
7043
7061
  extrapolateLeft,
7044
- extrapolateRight
7062
+ extrapolateRight,
7063
+ output
7045
7064
  });
7046
7065
  for (let segmentIndex = 0;segmentIndex < range; segmentIndex++) {
7047
7066
  const previousEasing = resolveEasingForSegment({
@@ -7061,7 +7080,8 @@ var interpolateNumber = ({
7061
7080
  outputRange: [outputRange[segmentIndex], outputRange[segmentIndex + 1]],
7062
7081
  easing: previousEasing,
7063
7082
  extrapolateLeft,
7064
- extrapolateRight: "extend"
7083
+ extrapolateRight: "extend",
7084
+ output
7065
7085
  });
7066
7086
  result += continuedSegmentValue - outputRange[segmentIndex + 1];
7067
7087
  }
@@ -7109,14 +7129,18 @@ var interpolateString = ({
7109
7129
  }
7110
7130
  }
7111
7131
  }
7112
- return serializeStringInterpolationValue({
7113
- kind,
7114
- values: [0, 0, 0].map((_, axis) => interpolateNumber({
7132
+ const values = [0, 0, 0];
7133
+ for (let axis = 0;axis < dimensions; axis++) {
7134
+ values[axis] = interpolateNumber({
7115
7135
  input,
7116
7136
  inputRange,
7117
7137
  outputRange: parsedOutputRange.map((parsed) => parsed.values[axis]),
7118
7138
  options
7119
- })),
7139
+ });
7140
+ }
7141
+ return serializeStringInterpolationValue({
7142
+ kind,
7143
+ values,
7120
7144
  units,
7121
7145
  dimensions
7122
7146
  });
@@ -7200,6 +7224,12 @@ function assertValidInterpolatePosterizeOption(posterize) {
7200
7224
  throw new Error(`posterize must be a positive finite number, but got ${posterize}`);
7201
7225
  }
7202
7226
  }
7227
+ function assertValidInterpolateOutputOption(output) {
7228
+ if (output === undefined || output === "linear" || output === "perceptual-scale") {
7229
+ return;
7230
+ }
7231
+ throw new Error(`output must be "linear" or "perceptual-scale", but got ${String(output)}`);
7232
+ }
7203
7233
  function interpolate(input, inputRange, outputRange, options) {
7204
7234
  if (typeof input === "undefined") {
7205
7235
  throw new Error("input can not be undefined");
@@ -7217,6 +7247,7 @@ function interpolate(input, inputRange, outputRange, options) {
7217
7247
  checkValidInputRange(inputRange);
7218
7248
  assertValidInterpolateEasingOption(options?.easing, inputRange.length);
7219
7249
  assertValidInterpolatePosterizeOption(options?.posterize);
7250
+ assertValidInterpolateOutputOption(options?.output);
7220
7251
  if (typeof input !== "number") {
7221
7252
  throw new TypeError("Cannot interpolate an input which is not a number");
7222
7253
  }
@@ -8161,6 +8192,7 @@ var interpolateKeyframedStatus = ({
8161
8192
  easing: easing.map((e) => easingToFn({ easing: e, forceSpringAllowTail })),
8162
8193
  extrapolateLeft: clamping.left,
8163
8194
  extrapolateRight: clamping.right,
8195
+ output: status.output,
8164
8196
  posterize: status.posterize
8165
8197
  });
8166
8198
  } catch {
@@ -8401,7 +8433,7 @@ var getFlatSchemaWithAllKeys = (schema) => {
8401
8433
  const out = {};
8402
8434
  const addKey = (key, field) => {
8403
8435
  if (key in out) {
8404
- throw new Error(`Duplicate key "${key}" in schema: discriminated union variants must not share keys`);
8436
+ return;
8405
8437
  }
8406
8438
  out[key] = field;
8407
8439
  };
@@ -8939,6 +8971,7 @@ var RegularSequenceRefForwardingFunction = ({
8939
8971
  src: isMedia.data.src,
8940
8972
  getStack: () => stackRef.current,
8941
8973
  startMediaFrom: startMediaFrom ?? isMedia.data.startMediaFrom,
8974
+ mediaFrameAtSequenceZero,
8942
8975
  volume: isMedia.data.volumes,
8943
8976
  refForOutline: refForOutline ?? null,
8944
8977
  isInsideSeries,
@@ -9002,6 +9035,7 @@ var RegularSequenceRefForwardingFunction = ({
9002
9035
  isInsideSeries,
9003
9036
  registeredFrozenFrame,
9004
9037
  startMediaFrom,
9038
+ mediaFrameAtSequenceZero,
9005
9039
  frozenMediaFrame
9006
9040
  ]);
9007
9041
  const endThreshold = Math.ceil(cumulatedFrom + from + durationInFrames - 1);
@@ -10952,7 +10986,9 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
10952
10986
  return;
10953
10987
  }
10954
10988
  if (data === undefined) {
10955
- current.src = EMPTY_AUDIO;
10989
+ if (current.src !== EMPTY_AUDIO) {
10990
+ current.src = EMPTY_AUDIO;
10991
+ }
10956
10992
  return;
10957
10993
  }
10958
10994
  if (!data) {
@@ -11021,7 +11057,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
11021
11057
  if (prevA.id === id) {
11022
11058
  const isTheSame = compareProps(aud, prevA.props) && prevA.premounting === premounting && prevA.postmounting === postmounting;
11023
11059
  if (isTheSame) {
11024
- return prevA;
11060
+ return prevA.audioMounted === audioMounted ? prevA : { ...prevA, audioMounted };
11025
11061
  }
11026
11062
  changed = true;
11027
11063
  return {
@@ -11033,7 +11069,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
11033
11069
  audioMounted
11034
11070
  };
11035
11071
  }
11036
- return prevA;
11072
+ return prevA.audioMounted === audioMounted ? prevA : { ...prevA, audioMounted };
11037
11073
  });
11038
11074
  if (changed) {
11039
11075
  rerenderAudios();
@@ -11072,16 +11108,19 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
11072
11108
  unregisterAudio,
11073
11109
  updateAudio
11074
11110
  ]);
11111
+ const sharedAudioTagElements = useMemo21(() => {
11112
+ return refs.map(({ id, ref }) => {
11113
+ return /* @__PURE__ */ jsx19("audio", {
11114
+ ref,
11115
+ preload: "metadata",
11116
+ src: EMPTY_AUDIO
11117
+ }, id);
11118
+ });
11119
+ }, [refs]);
11075
11120
  return /* @__PURE__ */ jsxs22(SharedAudioTagsContext.Provider, {
11076
11121
  value: audioTagsValue,
11077
11122
  children: [
11078
- refs.map(({ id, ref }) => {
11079
- return /* @__PURE__ */ jsx19("audio", {
11080
- ref,
11081
- preload: "metadata",
11082
- src: EMPTY_AUDIO
11083
- }, id);
11084
- }),
11123
+ sharedAudioTagElements,
11085
11124
  children
11086
11125
  ]
11087
11126
  });
@@ -11542,6 +11581,7 @@ var useMediaInTimeline = ({
11542
11581
  showInTimeline: true,
11543
11582
  nonce: nonce.get(),
11544
11583
  startMediaFrom: 0 - startsAt,
11584
+ mediaFrameAtSequenceZero: null,
11545
11585
  doesVolumeChange,
11546
11586
  loopDisplay,
11547
11587
  playbackRate,
@@ -13175,16 +13215,16 @@ var isMissingPaintRecordError = (error2) => {
13175
13215
  return error2 instanceof DOMException && error2.name === "InvalidStateError";
13176
13216
  };
13177
13217
  var missingPaintRecordMessage = "HtmlInCanvas: Expected the element to be inside the viewport during rendering, but Chrome had no cached paint record for it.";
13178
- var resizeOffscreenCanvas = ({
13179
- offscreen,
13218
+ var resizePaintTarget = ({
13219
+ target,
13180
13220
  width,
13181
13221
  height
13182
13222
  }) => {
13183
- if (offscreen.width !== width) {
13184
- offscreen.width = width;
13223
+ if (target.width !== width) {
13224
+ target.width = width;
13185
13225
  }
13186
- if (offscreen.height !== height) {
13187
- offscreen.height = height;
13226
+ if (target.height !== height) {
13227
+ target.height = height;
13188
13228
  }
13189
13229
  };
13190
13230
  var defaultOnPaint = ({
@@ -13200,7 +13240,7 @@ var defaultOnPaint = ({
13200
13240
  const transform = ctx.drawElementImage(elementImage, 0, 0);
13201
13241
  element.style.transform = transform.toString();
13202
13242
  };
13203
- var HtmlInCanvasAncestorContext = createContext23(false);
13243
+ var HtmlInCanvasAncestorContext = createContext23(null);
13204
13244
  var HtmlInCanvasContent = forwardRef9(({
13205
13245
  width,
13206
13246
  height,
@@ -13212,20 +13252,22 @@ var HtmlInCanvasContent = forwardRef9(({
13212
13252
  controls,
13213
13253
  style
13214
13254
  }, ref) => {
13215
- const isInsideAncestorHtmlInCanvas = useContext31(HtmlInCanvasAncestorContext);
13255
+ const ancestor = useContext31(HtmlInCanvasAncestorContext);
13216
13256
  assertHtmlInCanvasDimensions(width, height);
13217
13257
  const resolvedPixelDensity = resolveHtmlInCanvasPixelDensity(pixelDensity);
13218
13258
  const canvasWidth = Math.ceil(width * resolvedPixelDensity);
13219
13259
  const canvasHeight = Math.ceil(height * resolvedPixelDensity);
13220
13260
  const { continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
13221
- const { isRendering } = useRemotionEnvironment();
13261
+ const { isClientSideRendering, isRendering } = useRemotionEnvironment();
13262
+ const canRetryMissingPaintRecord = !isRendering || isClientSideRendering;
13263
+ const usesDirectLayoutCanvas = onPaint === undefined && onInit === undefined;
13222
13264
  if (!isHtmlInCanvasSupported()) {
13223
13265
  cancelRender2(new Error(HTML_IN_CANVAS_UNSUPPORTED_MESSAGE));
13224
13266
  }
13225
13267
  const canvas2dRef = useRef22(null);
13226
- const offscreenRef = useRef22(null);
13268
+ const paintTargetRef = useRef22(null);
13227
13269
  const divRef = useRef22(null);
13228
- const canvasSizeKey = `${width}x${height}@${resolvedPixelDensity}`;
13270
+ const canvasSizeKey = `${width}x${height}@${resolvedPixelDensity}-${usesDirectLayoutCanvas ? "direct" : "offscreen"}`;
13229
13271
  const setLayoutCanvasRef = useCallback16((node) => {
13230
13272
  canvas2dRef.current = node;
13231
13273
  if (typeof ref === "function") {
@@ -13248,17 +13290,19 @@ var HtmlInCanvasContent = forwardRef9(({
13248
13290
  const initializedRef = useRef22(false);
13249
13291
  const onInitCleanupRef = useRef22(null);
13250
13292
  const unmountedRef = useRef22(false);
13293
+ const ancestorRef = useRef22(ancestor);
13294
+ ancestorRef.current = ancestor;
13251
13295
  const onPaintCb = useCallback16(async () => {
13252
13296
  const element = divRef.current;
13253
13297
  if (!element) {
13254
13298
  throw new Error("Canvas or scene element not found");
13255
13299
  }
13256
- const offscreen = offscreenRef.current;
13257
- if (!offscreen) {
13258
- throw new Error("HtmlInCanvas: offscreen canvas not ready (transferControlToOffscreen failed or canvas is remounting)");
13300
+ const paintTarget = paintTargetRef.current;
13301
+ if (!paintTarget) {
13302
+ throw new Error("HtmlInCanvas: paint target is not ready because the canvas is remounting");
13259
13303
  }
13260
- resizeOffscreenCanvas({
13261
- offscreen,
13304
+ resizePaintTarget({
13305
+ target: paintTarget,
13262
13306
  width: canvasWidth,
13263
13307
  height: canvasHeight
13264
13308
  });
@@ -13269,22 +13313,30 @@ var HtmlInCanvasContent = forwardRef9(({
13269
13313
  }
13270
13314
  const handle = delayRender("onPaint");
13271
13315
  if (!initializedRef.current) {
13272
- let initImage = null;
13273
- try {
13274
- initImage = placeholderCanvas.captureElementImage(element);
13275
- } catch (error2) {
13276
- if (isMissingPaintRecordError(error2) && !isRendering) {} else if (isMissingPaintRecordError(error2)) {
13277
- throw new Error(missingPaintRecordMessage);
13278
- } else {
13316
+ const currentOnInit = onInitRef.current;
13317
+ if (!currentOnInit) {
13318
+ initializedRef.current = true;
13319
+ } else {
13320
+ let initImage;
13321
+ try {
13322
+ initImage = placeholderCanvas.captureElementImage(element);
13323
+ } catch (error2) {
13324
+ if (isMissingPaintRecordError(error2) && canRetryMissingPaintRecord) {
13325
+ continueRender2(handle);
13326
+ return;
13327
+ }
13328
+ if (isMissingPaintRecordError(error2)) {
13329
+ throw new Error(missingPaintRecordMessage);
13330
+ }
13279
13331
  throw error2;
13280
13332
  }
13281
- }
13282
- if (initImage) {
13283
13333
  initializedRef.current = true;
13284
- const currentOnInit = onInitRef.current;
13285
- if (currentOnInit) {
13334
+ try {
13335
+ if (paintTarget instanceof HTMLCanvasElement) {
13336
+ throw new Error("HtmlInCanvas: onInit requires an OffscreenCanvas paint target");
13337
+ }
13286
13338
  const cleanup = await currentOnInit({
13287
- canvas: offscreen,
13339
+ canvas: paintTarget,
13288
13340
  element,
13289
13341
  elementImage: initImage,
13290
13342
  pixelDensity: resolvedPixelDensity
@@ -13297,15 +13349,16 @@ var HtmlInCanvasContent = forwardRef9(({
13297
13349
  } else {
13298
13350
  onInitCleanupRef.current = cleanup;
13299
13351
  }
13352
+ } finally {
13353
+ initImage.close();
13300
13354
  }
13301
13355
  }
13302
13356
  }
13303
- const handler = onPaintRef.current ?? defaultOnPaint;
13304
13357
  let elImage;
13305
13358
  try {
13306
13359
  elImage = placeholderCanvas.captureElementImage(element);
13307
13360
  } catch (error2) {
13308
- if (isMissingPaintRecordError(error2) && !isRendering) {
13361
+ if (isMissingPaintRecordError(error2) && canRetryMissingPaintRecord) {
13309
13362
  continueRender2(handle);
13310
13363
  return;
13311
13364
  }
@@ -13314,20 +13367,41 @@ var HtmlInCanvasContent = forwardRef9(({
13314
13367
  }
13315
13368
  throw error2;
13316
13369
  }
13317
- await handler({
13318
- canvas: offscreen,
13319
- element,
13320
- elementImage: elImage,
13321
- pixelDensity: resolvedPixelDensity
13322
- });
13323
- await runEffectChain({
13324
- state: chainState.get(canvasWidth, canvasHeight),
13325
- source: offscreen,
13326
- effects: effectsRef.current,
13327
- output: offscreen,
13328
- width: canvasWidth,
13329
- height: canvasHeight
13330
- });
13370
+ try {
13371
+ const currentOnPaint = onPaintRef.current;
13372
+ if (currentOnPaint) {
13373
+ if (paintTarget instanceof HTMLCanvasElement) {
13374
+ throw new Error("HtmlInCanvas: onPaint requires an OffscreenCanvas paint target");
13375
+ }
13376
+ const paintResult = currentOnPaint({
13377
+ canvas: paintTarget,
13378
+ element,
13379
+ elementImage: elImage,
13380
+ pixelDensity: resolvedPixelDensity
13381
+ });
13382
+ if (paintResult) {
13383
+ await paintResult;
13384
+ }
13385
+ } else {
13386
+ defaultOnPaint({
13387
+ canvas: paintTarget,
13388
+ element,
13389
+ elementImage: elImage,
13390
+ pixelDensity: resolvedPixelDensity
13391
+ });
13392
+ }
13393
+ await runEffectChain({
13394
+ state: chainState.get(canvasWidth, canvasHeight),
13395
+ source: paintTarget,
13396
+ effects: effectsRef.current,
13397
+ output: paintTarget,
13398
+ width: canvasWidth,
13399
+ height: canvasHeight
13400
+ });
13401
+ } finally {
13402
+ elImage.close();
13403
+ }
13404
+ ancestorRef.current?.requestParentPaint();
13331
13405
  continueRender2(handle);
13332
13406
  } catch (error2) {
13333
13407
  cancelRender2(error2);
@@ -13339,7 +13413,7 @@ var HtmlInCanvasContent = forwardRef9(({
13339
13413
  continueRender2,
13340
13414
  cancelRender2,
13341
13415
  resolvedPixelDensity,
13342
- isRendering
13416
+ canRetryMissingPaintRecord
13343
13417
  ]);
13344
13418
  useLayoutEffect9(() => {
13345
13419
  const placeholder = canvas2dRef.current;
@@ -13347,10 +13421,10 @@ var HtmlInCanvasContent = forwardRef9(({
13347
13421
  throw new Error("Canvas not found");
13348
13422
  }
13349
13423
  placeholder.layoutSubtree = true;
13350
- const offscreen = placeholder.transferControlToOffscreen();
13351
- offscreenRef.current = offscreen;
13352
- resizeOffscreenCanvas({
13353
- offscreen,
13424
+ const paintTarget = usesDirectLayoutCanvas ? placeholder : placeholder.transferControlToOffscreen();
13425
+ paintTargetRef.current = paintTarget;
13426
+ resizePaintTarget({
13427
+ target: paintTarget,
13354
13428
  width: canvasWidth,
13355
13429
  height: canvasHeight
13356
13430
  });
@@ -13359,13 +13433,19 @@ var HtmlInCanvasContent = forwardRef9(({
13359
13433
  placeholder.addEventListener("paint", onPaintCb);
13360
13434
  return () => {
13361
13435
  placeholder.removeEventListener("paint", onPaintCb);
13362
- offscreenRef.current = null;
13436
+ paintTargetRef.current = null;
13363
13437
  initializedRef.current = false;
13364
13438
  unmountedRef.current = true;
13365
13439
  onInitCleanupRef.current?.();
13366
13440
  onInitCleanupRef.current = null;
13367
13441
  };
13368
- }, [onPaintCb, cancelRender2, canvasWidth, canvasHeight]);
13442
+ }, [
13443
+ onPaintCb,
13444
+ cancelRender2,
13445
+ canvasWidth,
13446
+ canvasHeight,
13447
+ usesDirectLayoutCanvas
13448
+ ]);
13369
13449
  const onPaintChangedRef = useRef22(false);
13370
13450
  useLayoutEffect9(() => {
13371
13451
  if (!onPaintChangedRef.current) {
@@ -13404,11 +13484,15 @@ var HtmlInCanvasContent = forwardRef9(({
13404
13484
  ...style ?? {}
13405
13485
  };
13406
13486
  }, [height, style, width]);
13407
- if (isInsideAncestorHtmlInCanvas) {
13408
- throw new Error("<HtmlInCanvas> effects cannot be nested together. Chrome will only display the outer effect. Consider merging the effects into one if you can.");
13409
- }
13487
+ const ancestorValue = useMemo30(() => {
13488
+ return {
13489
+ requestParentPaint: () => {
13490
+ canvas2dRef.current?.requestPaint?.();
13491
+ }
13492
+ };
13493
+ }, []);
13410
13494
  return /* @__PURE__ */ jsx25(HtmlInCanvasAncestorContext.Provider, {
13411
- value: true,
13495
+ value: ancestorValue,
13412
13496
  children: /* @__PURE__ */ jsx25("canvas", {
13413
13497
  ref: setLayoutCanvasRef,
13414
13498
  width: canvasWidth,
@@ -14280,6 +14364,22 @@ var Img = withInteractivitySchema({
14280
14364
  supportsEffects: true
14281
14365
  });
14282
14366
  addSequenceStackTraces(Img);
14367
+ var sourcePathToIdentityPrefix = (packageName) => {
14368
+ if (packageName === "remotion") {
14369
+ return "dev.remotion.remotion";
14370
+ }
14371
+ if (packageName.startsWith("@remotion/")) {
14372
+ const normalizedPackageName = packageName.slice("@remotion/".length).replace(/-([a-z])/g, (_, char) => char.toUpperCase());
14373
+ return `dev.remotion.${normalizedPackageName}`;
14374
+ }
14375
+ throw new Error(`Unsupported Remotion package name: ${packageName}`);
14376
+ };
14377
+ var makeRemotionComponentIdentity = ({
14378
+ packageName,
14379
+ componentName
14380
+ }) => {
14381
+ return `${sourcePathToIdentityPrefix(packageName)}.${componentName}`;
14382
+ };
14283
14383
  var interactiveElementSchema = {
14284
14384
  ...baseSchema,
14285
14385
  ...transformSchema,
@@ -14293,6 +14393,11 @@ var setRef = (ref, value) => {
14293
14393
  ref.current = value;
14294
14394
  }
14295
14395
  };
14396
+ var withSchema = (options) => {
14397
+ const Wrapped = withInteractivitySchema(options);
14398
+ addSequenceStackTraces(Wrapped);
14399
+ return Wrapped;
14400
+ };
14296
14401
  var makeInteractiveElement = (tag, displayName) => {
14297
14402
  const Inner = forwardRef12((propsWithControls, ref) => {
14298
14403
  const {
@@ -14332,15 +14437,17 @@ var makeInteractiveElement = (tag, displayName) => {
14332
14437
  });
14333
14438
  });
14334
14439
  Inner.displayName = displayName;
14335
- const Wrapped = withInteractivitySchema({
14440
+ const Wrapped = withSchema({
14336
14441
  Component: Inner,
14337
14442
  componentName: displayName,
14338
- componentIdentity: `dev.remotion.remotion.${displayName.slice(1, -1)}`,
14443
+ componentIdentity: makeRemotionComponentIdentity({
14444
+ packageName: "remotion",
14445
+ componentName: displayName.slice(1, -1)
14446
+ }),
14339
14447
  schema: interactiveElementSchema,
14340
14448
  supportsEffects: false
14341
14449
  });
14342
14450
  Wrapped.displayName = displayName;
14343
- addSequenceStackTraces(Wrapped);
14344
14451
  return Wrapped;
14345
14452
  };
14346
14453
  var Interactive = {
@@ -14349,7 +14456,8 @@ var Interactive = {
14349
14456
  textSchema,
14350
14457
  premountSchema,
14351
14458
  sequenceSchema,
14352
- withSchema: withInteractivitySchema,
14459
+ withSchema,
14460
+ _internalMakeRemotionComponentIdentity: makeRemotionComponentIdentity,
14353
14461
  A: makeInteractiveElement("a", "<Interactive.A>"),
14354
14462
  Article: makeInteractiveElement("article", "<Interactive.Article>"),
14355
14463
  Aside: makeInteractiveElement("aside", "<Interactive.Aside>"),
@@ -15754,66 +15862,130 @@ var flattenChildren = (children) => {
15754
15862
  return flatChildren;
15755
15863
  }, []);
15756
15864
  };
15757
- var SeriesSequenceRefForwardingFunction = ({ children }, _ref) => {
15865
+ var seriesSequenceSchema = {
15866
+ durationInFrames: Interactive.baseSchema.durationInFrames,
15867
+ name: Interactive.sequenceSchema.name,
15868
+ hidden: Interactive.sequenceSchema.hidden,
15869
+ showInTimeline: Interactive.sequenceSchema.showInTimeline,
15870
+ freeze: Interactive.baseSchema.freeze,
15871
+ layout: Interactive.sequenceSchema.layout
15872
+ };
15873
+ var SeriesSequenceInner = forwardRef14(({
15874
+ offset = 0,
15875
+ className = "",
15876
+ stack = null,
15877
+ _remotionInternalRender = null,
15878
+ ...props2
15879
+ }, ref) => {
15758
15880
  useRequireToBeInsideSeries();
15881
+ if (_remotionInternalRender) {
15882
+ return _remotionInternalRender({ ...props2, offset, className: className || undefined, stack }, ref);
15883
+ }
15759
15884
  return /* @__PURE__ */ jsx37(IsNotInsideSeriesProvider, {
15760
- children
15885
+ children: props2.children
15761
15886
  });
15762
- };
15763
- var SeriesSequence = forwardRef14(SeriesSequenceRefForwardingFunction);
15887
+ });
15888
+ var SeriesSequence = Interactive.withSchema({
15889
+ Component: SeriesSequenceInner,
15890
+ componentName: "<Series.Sequence>",
15891
+ componentIdentity: "dev.remotion.remotion.Series.Sequence",
15892
+ schema: seriesSequenceSchema,
15893
+ supportsEffects: false
15894
+ });
15764
15895
  var SequenceWithoutSchemaWithRef = SequenceWithoutSchema;
15896
+ var validateSeriesSequenceProps = ({
15897
+ durationInFrames,
15898
+ offset: offsetProp,
15899
+ index,
15900
+ childrenLength
15901
+ }) => {
15902
+ const debugInfo = `index = ${index}, duration = ${durationInFrames}`;
15903
+ if (index !== childrenLength - 1 || durationInFrames !== Infinity) {
15904
+ validateDurationInFrames(durationInFrames, {
15905
+ component: `of a <Series.Sequence /> component`,
15906
+ allowFloats: true
15907
+ });
15908
+ }
15909
+ const offset = offsetProp ?? 0;
15910
+ if (Number.isNaN(offset)) {
15911
+ throw new TypeError(`The "offset" property of a <Series.Sequence /> must not be NaN, but got NaN (${debugInfo}).`);
15912
+ }
15913
+ if (!Number.isFinite(offset)) {
15914
+ throw new TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${offset} (${debugInfo}).`);
15915
+ }
15916
+ if (offset % 1 !== 0) {
15917
+ throw new TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${offset} (${debugInfo}).`);
15918
+ }
15919
+ return offset;
15920
+ };
15765
15921
  var SeriesInner = (props2) => {
15766
15922
  const childrenValue = useMemo38(() => {
15767
- let startFrame = 0;
15768
15923
  const flattenedChildren = flattenChildren(props2.children);
15769
- return Children.map(flattenedChildren, (child, i) => {
15924
+ const renderChildren = (i, startFrame) => {
15925
+ if (i === flattenedChildren.length) {
15926
+ return null;
15927
+ }
15928
+ const child = flattenedChildren[i];
15770
15929
  const castedChild = child;
15771
15930
  if (typeof castedChild === "string") {
15772
15931
  if (castedChild.trim() === "") {
15773
- return null;
15932
+ return renderChildren(i + 1, startFrame);
15774
15933
  }
15775
15934
  throw new TypeError(`The <Series /> component only accepts a list of <Series.Sequence /> components as its children, but you passed a string "${castedChild}"`);
15776
15935
  }
15777
15936
  if (castedChild.type !== SeriesSequence) {
15778
15937
  throw new TypeError(`The <Series /> component only accepts a list of <Series.Sequence /> components as its children, but got ${castedChild} instead`);
15779
15938
  }
15780
- const debugInfo = `index = ${i}, duration = ${castedChild.props.durationInFrames}`;
15781
- const durationInFramesProp = castedChild.props.durationInFrames;
15782
- const {
15783
- durationInFrames,
15784
- children: _children,
15785
- from,
15786
- name,
15787
- ...passedProps
15788
- } = castedChild.props;
15789
- if (i !== flattenedChildren.length - 1 || durationInFramesProp !== Infinity) {
15790
- validateDurationInFrames(durationInFramesProp, {
15791
- component: `of a <Series.Sequence /> component`,
15792
- allowFloats: true
15793
- });
15794
- }
15795
- const offset = castedChild.props.offset ?? 0;
15796
- if (Number.isNaN(offset)) {
15797
- throw new TypeError(`The "offset" property of a <Series.Sequence /> must not be NaN, but got NaN (${debugInfo}).`);
15798
- }
15799
- if (!Number.isFinite(offset)) {
15800
- throw new TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${offset} (${debugInfo}).`);
15801
- }
15802
- if (offset % 1 !== 0) {
15803
- throw new TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${offset} (${debugInfo}).`);
15804
- }
15805
- const currentStartFrame = startFrame + offset;
15806
- startFrame += durationInFramesProp + offset;
15807
- return /* @__PURE__ */ jsx37(SequenceWithoutSchemaWithRef, {
15808
- ref: castedChild.ref,
15809
- name: name || "<Series.Sequence>",
15810
- _remotionInternalDocumentationLink: name ? undefined : "https://www.remotion.dev/docs/series",
15811
- from: currentStartFrame,
15812
- durationInFrames: durationInFramesProp,
15813
- ...passedProps,
15814
- children: child
15939
+ const castedElement = castedChild;
15940
+ validateSeriesSequenceProps({
15941
+ durationInFrames: castedElement.props.durationInFrames,
15942
+ offset: castedElement.props.offset,
15943
+ index: i,
15944
+ childrenLength: flattenedChildren.length
15815
15945
  });
15816
- });
15946
+ return React41.cloneElement(castedElement, {
15947
+ _remotionInternalRender: (resolvedProps, ref) => {
15948
+ const durationInFramesProp = resolvedProps.durationInFrames;
15949
+ const {
15950
+ durationInFrames: _durationInFrames,
15951
+ children: sequenceChildren,
15952
+ offset: offsetProp,
15953
+ controls,
15954
+ stack,
15955
+ from: _from,
15956
+ name,
15957
+ ...passedProps
15958
+ } = resolvedProps;
15959
+ const offset = validateSeriesSequenceProps({
15960
+ durationInFrames: durationInFramesProp,
15961
+ offset: offsetProp,
15962
+ index: i,
15963
+ childrenLength: flattenedChildren.length
15964
+ });
15965
+ const currentStartFrame = startFrame + offset;
15966
+ const nextStartFrame = startFrame + durationInFramesProp + offset;
15967
+ return /* @__PURE__ */ jsxs32(Fragment, {
15968
+ children: [
15969
+ /* @__PURE__ */ jsx37(SequenceWithoutSchemaWithRef, {
15970
+ ref,
15971
+ name: name || "<Series.Sequence>",
15972
+ _remotionInternalDocumentationLink: name ? undefined : "https://www.remotion.dev/docs/series",
15973
+ _remotionInternalStack: stack ?? undefined,
15974
+ controls: controls ?? undefined,
15975
+ from: currentStartFrame,
15976
+ durationInFrames: durationInFramesProp,
15977
+ ...passedProps,
15978
+ children: /* @__PURE__ */ jsx37(IsNotInsideSeriesProvider, {
15979
+ children: sequenceChildren
15980
+ })
15981
+ }),
15982
+ renderChildren(i + 1, nextStartFrame)
15983
+ ]
15984
+ });
15985
+ }
15986
+ });
15987
+ };
15988
+ return renderChildren(0, 0);
15817
15989
  }, [props2.children]);
15818
15990
  return /* @__PURE__ */ jsx37(IsInsideSeriesContainer, {
15819
15991
  children: /* @__PURE__ */ jsx37(Sequence, {
@@ -16832,7 +17004,6 @@ var Arrow = Interactive.withSchema({
16832
17004
  schema: arrowSchema,
16833
17005
  supportsEffects: true
16834
17006
  });
16835
- Internals.addSequenceStackTraces(Arrow);
16836
17007
  var shortenVector = (vector, radius) => {
16837
17008
  const [x, y] = vector;
16838
17009
  const currentLength = Math.sqrt(x * x + y * y);
@@ -17257,7 +17428,6 @@ var Callout = Interactive.withSchema({
17257
17428
  schema: calloutSchema,
17258
17429
  supportsEffects: true
17259
17430
  });
17260
- Internals.addSequenceStackTraces(Callout);
17261
17431
  var makeCircle = ({ radius }) => {
17262
17432
  const instructions = [
17263
17433
  {
@@ -17320,7 +17490,6 @@ var Circle = Interactive.withSchema({
17320
17490
  schema: circleSchema,
17321
17491
  supportsEffects: true
17322
17492
  });
17323
- Internals.addSequenceStackTraces(Circle);
17324
17493
  var makeEllipse = ({ rx, ry }) => {
17325
17494
  const instructions = [
17326
17495
  {
@@ -17378,7 +17547,6 @@ var Ellipse = Interactive.withSchema({
17378
17547
  schema: ellipseSchema,
17379
17548
  supportsEffects: true
17380
17549
  });
17381
- Internals.addSequenceStackTraces(Ellipse);
17382
17550
  var makeHeart = ({
17383
17551
  height,
17384
17552
  aspectRatio = 1.1,
@@ -17517,7 +17685,6 @@ var Heart = Interactive.withSchema({
17517
17685
  schema: heartSchema,
17518
17686
  supportsEffects: true
17519
17687
  });
17520
- Internals.addSequenceStackTraces(Heart);
17521
17688
  var getCoord = ({
17522
17689
  counterClockwise,
17523
17690
  actualProgress,
@@ -17672,7 +17839,6 @@ var Pie = Interactive.withSchema({
17672
17839
  schema: pieSchema,
17673
17840
  supportsEffects: true
17674
17841
  });
17675
- Internals.addSequenceStackTraces(Pie);
17676
17842
  function polygon({
17677
17843
  points,
17678
17844
  radius,
@@ -17772,7 +17938,6 @@ var Polygon = Interactive.withSchema({
17772
17938
  schema: polygonSchema,
17773
17939
  supportsEffects: true
17774
17940
  });
17775
- Internals.addSequenceStackTraces(Polygon);
17776
17941
  var makeRect = ({
17777
17942
  width,
17778
17943
  height,
@@ -17839,7 +18004,6 @@ var Rect = Interactive.withSchema({
17839
18004
  schema: rectSchema,
17840
18005
  supportsEffects: true
17841
18006
  });
17842
- Internals.addSequenceStackTraces(Rect);
17843
18007
  var KAPPA = 0.5522847498307936;
17844
18008
  var CAP_HANDLE = 4 / 3;
17845
18009
  var curve = ({
@@ -18051,7 +18215,6 @@ var Spark = Interactive.withSchema({
18051
18215
  schema: sparkSchema,
18052
18216
  supportsEffects: true
18053
18217
  });
18054
- Internals.addSequenceStackTraces(Spark);
18055
18218
  var star = ({
18056
18219
  centerX,
18057
18220
  centerY,
@@ -18162,7 +18325,6 @@ var Star = Interactive.withSchema({
18162
18325
  schema: starSchema,
18163
18326
  supportsEffects: true
18164
18327
  });
18165
- Internals.addSequenceStackTraces(Star);
18166
18328
  var makeTriangle = ({
18167
18329
  length: length2,
18168
18330
  direction = "right",
@@ -18269,7 +18431,6 @@ var Triangle = Interactive.withSchema({
18269
18431
  schema: triangleSchema,
18270
18432
  supportsEffects: true
18271
18433
  });
18272
- Internals.addSequenceStackTraces(Triangle);
18273
18434
 
18274
18435
  // ../svg-3d-engine/dist/esm/index.mjs
18275
18436
  function truthy2(value) {
@@ -19342,7 +19503,7 @@ import { jsx as jsx53, jsxs as jsxs23 } from "react/jsx-runtime";
19342
19503
  import React62 from "react";
19343
19504
  import { jsx as jsx63 } from "react/jsx-runtime";
19344
19505
  import { jsx as jsx73 } from "react/jsx-runtime";
19345
- import { jsx as jsx83, jsxs as jsxs32 } from "react/jsx-runtime";
19506
+ import { jsx as jsx83, jsxs as jsxs33 } from "react/jsx-runtime";
19346
19507
  import { jsx as jsx93 } from "react/jsx-runtime";
19347
19508
  import React72 from "react";
19348
19509
  import { jsx as jsx103 } from "react/jsx-runtime";
@@ -19406,12 +19567,12 @@ import { jsx as jsx272 } from "react/jsx-runtime";
19406
19567
  import * as React47 from "react";
19407
19568
  import React402 from "react";
19408
19569
  import * as React392 from "react";
19409
- import { Fragment as Fragment22, jsx as jsx282 } from "react/jsx-runtime";
19570
+ import { Fragment as Fragment222, jsx as jsx282 } from "react/jsx-runtime";
19410
19571
  import { jsx as jsx292 } from "react/jsx-runtime";
19411
19572
  import React210 from "react";
19412
19573
  import { jsx as jsx2102 } from "react/jsx-runtime";
19413
19574
  import * as React422 from "react";
19414
- import * as React41 from "react";
19575
+ import * as React412 from "react";
19415
19576
  import * as React43 from "react";
19416
19577
  import * as ReactDOM5 from "react-dom";
19417
19578
  import { jsx as jsx302 } from "react/jsx-runtime";
@@ -19521,7 +19682,7 @@ function createSlotClone(ownerName) {
19521
19682
  var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
19522
19683
  function createSlottable(ownerName) {
19523
19684
  const Slottable2 = ({ children }) => {
19524
- return /* @__PURE__ */ jsx44(Fragment2, { children });
19685
+ return /* @__PURE__ */ jsx44(Fragment22, { children });
19525
19686
  };
19526
19687
  Slottable2.displayName = `${ownerName}.Slottable`;
19527
19688
  Slottable2.__radixId = SLOTTABLE_IDENTIFIER;
@@ -20082,7 +20243,7 @@ var Counter = ({
20082
20243
  setCount(Math.min(MAX_COUNT, roundedValue));
20083
20244
  };
20084
20245
  const shrink = String(count).length > 6;
20085
- return /* @__PURE__ */ jsxs32(Card, {
20246
+ return /* @__PURE__ */ jsxs33(Card, {
20086
20247
  style: container2,
20087
20248
  className: cn("w-[140px] flex flex-row overflow-hidden"),
20088
20249
  children: [
@@ -20106,7 +20267,7 @@ var Counter = ({
20106
20267
  }
20107
20268
  }
20108
20269
  }),
20109
- /* @__PURE__ */ jsxs32("div", {
20270
+ /* @__PURE__ */ jsxs33("div", {
20110
20271
  className: "flex flex-col h-full",
20111
20272
  children: [
20112
20273
  /* @__PURE__ */ jsx83("button", {
@@ -25420,7 +25581,7 @@ function toSafeIndex(array, index2) {
25420
25581
  function toSafeInteger(number) {
25421
25582
  return number !== number || number === 0 ? 0 : Math.trunc(number);
25422
25583
  }
25423
- var useLayoutEffect222 = globalThis?.document ? React41.useLayoutEffect : () => {};
25584
+ var useLayoutEffect222 = globalThis?.document ? React412.useLayoutEffect : () => {};
25424
25585
  var useReactId2 = React422[" useId ".trim().toString()] || (() => {
25425
25586
  return;
25426
25587
  });