@remotion/promo-pages 4.0.438 → 4.0.440

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
@@ -770,12 +770,7 @@ import { jsx as jsx3 } from "react/jsx-runtime";
770
770
  import { useContext as useContext6, useMemo as useMemo5 } from "react";
771
771
  import { createContext as createContext7 } from "react";
772
772
  import { createContext as createContext9, createRef, useContext as useContext5, useMemo as useMemo4 } from "react";
773
- import React5, {
774
- createContext as createContext8,
775
- useCallback as useCallback2,
776
- useImperativeHandle,
777
- useMemo as useMemo3
778
- } from "react";
773
+ import React5, { createContext as createContext8, useCallback as useCallback2, useMemo as useMemo3 } from "react";
779
774
  import { jsx as jsx4 } from "react/jsx-runtime";
780
775
  import { useContext as useContext8 } from "react";
781
776
  import { createContext as createContext10 } from "react";
@@ -791,19 +786,19 @@ import { jsx as jsx8 } from "react/jsx-runtime";
791
786
  import {
792
787
  forwardRef as forwardRef3,
793
788
  useEffect as useEffect2,
794
- useImperativeHandle as useImperativeHandle3,
789
+ useImperativeHandle as useImperativeHandle2,
795
790
  useLayoutEffect as useLayoutEffect2,
796
791
  useRef as useRef5,
797
792
  useState as useState5
798
793
  } from "react";
799
- import React10, { useCallback as useCallback5, useImperativeHandle as useImperativeHandle2, useRef as useRef4 } from "react";
794
+ import React10, { useCallback as useCallback5, useImperativeHandle, useRef as useRef4 } from "react";
800
795
  import { jsx as jsx9 } from "react/jsx-runtime";
801
796
  import { jsx as jsx10 } from "react/jsx-runtime";
802
797
  import { useContext as useContext14, useLayoutEffect as useLayoutEffect4, useState as useState7 } from "react";
803
798
  import {
804
799
  createContext as createContext13,
805
800
  useCallback as useCallback6,
806
- useImperativeHandle as useImperativeHandle4,
801
+ useImperativeHandle as useImperativeHandle3,
807
802
  useLayoutEffect as useLayoutEffect3,
808
803
  useMemo as useMemo12,
809
804
  useRef as useRef6,
@@ -822,7 +817,7 @@ import React17, {
822
817
  forwardRef as forwardRef4,
823
818
  useContext as useContext24,
824
819
  useEffect as useEffect10,
825
- useImperativeHandle as useImperativeHandle5,
820
+ useImperativeHandle as useImperativeHandle4,
826
821
  useMemo as useMemo22,
827
822
  useRef as useRef14,
828
823
  useState as useState13
@@ -871,7 +866,7 @@ import {
871
866
  forwardRef as forwardRef5,
872
867
  useContext as useContext25,
873
868
  useEffect as useEffect11,
874
- useImperativeHandle as useImperativeHandle6,
869
+ useImperativeHandle as useImperativeHandle5,
875
870
  useLayoutEffect as useLayoutEffect8,
876
871
  useMemo as useMemo23,
877
872
  useRef as useRef15
@@ -891,19 +886,20 @@ import {
891
886
  forwardRef as forwardRef8,
892
887
  useCallback as useCallback13,
893
888
  useContext as useContext29,
894
- useImperativeHandle as useImperativeHandle7,
889
+ useImperativeHandle as useImperativeHandle6,
895
890
  useLayoutEffect as useLayoutEffect9,
896
- useRef as useRef17
891
+ useRef as useRef17,
892
+ useState as useState15
897
893
  } from "react";
898
894
  import { jsx as jsx24 } from "react/jsx-runtime";
899
895
  import { createRef as createRef3 } from "react";
900
896
  import React24 from "react";
901
897
  import {
902
898
  useCallback as useCallback14,
903
- useImperativeHandle as useImperativeHandle8,
899
+ useImperativeHandle as useImperativeHandle7,
904
900
  useMemo as useMemo26,
905
901
  useRef as useRef18,
906
- useState as useState15
902
+ useState as useState16
907
903
  } from "react";
908
904
  import { jsx as jsx25 } from "react/jsx-runtime";
909
905
  import React25 from "react";
@@ -913,7 +909,7 @@ import { jsx as jsx26 } from "react/jsx-runtime";
913
909
  import { jsx as jsx27 } from "react/jsx-runtime";
914
910
  import React27 from "react";
915
911
  import React28, { createContext as createContext21 } from "react";
916
- import { useContext as useContext31, useMemo as useMemo29, useState as useState16 } from "react";
912
+ import { useContext as useContext31, useMemo as useMemo29, useState as useState17 } from "react";
917
913
  import { useContext as useContext32 } from "react";
918
914
  import { useCallback as useCallback16 } from "react";
919
915
  import {
@@ -922,17 +918,17 @@ import {
922
918
  useEffect as useEffect14,
923
919
  useLayoutEffect as useLayoutEffect10,
924
920
  useMemo as useMemo30,
925
- useState as useState17
921
+ useState as useState18
926
922
  } from "react";
927
923
  import { jsx as jsx28 } from "react/jsx-runtime";
928
924
  import React30, {
929
925
  forwardRef as forwardRef9,
930
926
  useContext as useContext34,
931
927
  useEffect as useEffect16,
932
- useImperativeHandle as useImperativeHandle9,
928
+ useImperativeHandle as useImperativeHandle8,
933
929
  useMemo as useMemo31,
934
930
  useRef as useRef19,
935
- useState as useState18
931
+ useState as useState19
936
932
  } from "react";
937
933
  import { useEffect as useEffect15 } from "react";
938
934
  import { jsx as jsx29 } from "react/jsx-runtime";
@@ -951,7 +947,7 @@ import {
951
947
  forwardRef as forwardRef12,
952
948
  useContext as useContext35,
953
949
  useEffect as useEffect17,
954
- useImperativeHandle as useImperativeHandle10,
950
+ useImperativeHandle as useImperativeHandle9,
955
951
  useLayoutEffect as useLayoutEffect11,
956
952
  useMemo as useMemo35,
957
953
  useRef as useRef20
@@ -1003,7 +999,7 @@ var useIsPlayer = () => {
1003
999
  function truthy(value) {
1004
1000
  return Boolean(value);
1005
1001
  }
1006
- var VERSION = "4.0.438";
1002
+ var VERSION = "4.0.440";
1007
1003
  var checkMultipleRemotionVersions = () => {
1008
1004
  if (typeof globalThis === "undefined") {
1009
1005
  return;
@@ -1524,9 +1520,6 @@ var CompositionSetters = createContext7({
1524
1520
  setCanvasContent: () => {
1525
1521
  return;
1526
1522
  },
1527
- updateCompositionDefaultProps: () => {
1528
- return;
1529
- },
1530
1523
  onlyRenderComposition: null
1531
1524
  });
1532
1525
  var getKey = () => {
@@ -1646,12 +1639,8 @@ var EditorPropsContext = createContext8({
1646
1639
  props: {},
1647
1640
  updateProps: () => {
1648
1641
  throw new Error("Not implemented");
1649
- },
1650
- resetUnsaved: () => {
1651
- throw new Error("Not implemented");
1652
1642
  }
1653
1643
  });
1654
- var editorPropsProviderRef = React5.createRef();
1655
1644
  var timeValueRef = React5.createRef();
1656
1645
  var EditorPropsProvider = ({ children }) => {
1657
1646
  const [props, setProps] = React5.useState({});
@@ -1667,25 +1656,9 @@ var EditorPropsProvider = ({ children }) => {
1667
1656
  };
1668
1657
  });
1669
1658
  }, []);
1670
- const resetUnsaved = useCallback2((compositionId) => {
1671
- setProps((prev) => {
1672
- if (prev[compositionId]) {
1673
- const newProps = { ...prev };
1674
- delete newProps[compositionId];
1675
- return newProps;
1676
- }
1677
- return prev;
1678
- });
1679
- }, []);
1680
- useImperativeHandle(editorPropsProviderRef, () => {
1681
- return {
1682
- getProps: () => props,
1683
- setProps
1684
- };
1685
- }, [props]);
1686
1659
  const ctx = useMemo3(() => {
1687
- return { props, updateProps, resetUnsaved };
1688
- }, [props, resetUnsaved, updateProps]);
1660
+ return { props, updateProps };
1661
+ }, [props, updateProps]);
1689
1662
  return /* @__PURE__ */ jsx4(EditorPropsContext.Provider, {
1690
1663
  value: ctx,
1691
1664
  children
@@ -1748,7 +1721,6 @@ var resolveCompositionsRef = createRef();
1748
1721
  var needsResolution = (composition) => {
1749
1722
  return Boolean(composition.calculateMetadata);
1750
1723
  };
1751
- var PROPS_UPDATED_EXTERNALLY = "remotion.propsUpdatedExternally";
1752
1724
  var useResolvedVideoConfig = (preferredCompositionId) => {
1753
1725
  const context = useContext5(ResolveCompositionContext);
1754
1726
  const { props: allEditorProps } = useContext5(EditorPropsContext);
@@ -2519,7 +2491,7 @@ var CanvasRefForwardingFunction = ({ width, height, fit, className, style }, ref
2519
2491
  height: canvasHeight
2520
2492
  }));
2521
2493
  }, [fit, height, width]);
2522
- useImperativeHandle2(ref, () => {
2494
+ useImperativeHandle(ref, () => {
2523
2495
  return {
2524
2496
  draw,
2525
2497
  getCanvas: () => {
@@ -2718,7 +2690,7 @@ var AnimatedImage = forwardRef3(({
2718
2690
  const currentTimeRef = useRef5(currentTime);
2719
2691
  currentTimeRef.current = currentTime;
2720
2692
  const ref = useRef5(null);
2721
- useImperativeHandle3(canvasRef, () => {
2693
+ useImperativeHandle2(canvasRef, () => {
2722
2694
  const c = ref.current?.getCanvas();
2723
2695
  if (!c) {
2724
2696
  throw new Error("Canvas ref is not set");
@@ -2844,7 +2816,7 @@ var RenderAssetManagerProvider = ({ children, collectAssets }) => {
2844
2816
  setRenderAssets(renderAssetsRef.current);
2845
2817
  }, []);
2846
2818
  if (collectAssets) {
2847
- useImperativeHandle4(collectAssets, () => {
2819
+ useImperativeHandle3(collectAssets, () => {
2848
2820
  return {
2849
2821
  collectAssets: () => {
2850
2822
  const assets = renderAssetsRef.current;
@@ -4118,6 +4090,76 @@ var useBasicMediaInTimeline = ({
4118
4090
  finalDisplayName: displayName ?? getAssetDisplayName(src)
4119
4091
  };
4120
4092
  };
4093
+ var useImageInTimeline = ({
4094
+ src,
4095
+ displayName,
4096
+ id,
4097
+ stack,
4098
+ showInTimeline,
4099
+ premountDisplay,
4100
+ postmountDisplay,
4101
+ loopDisplay
4102
+ }) => {
4103
+ const parentSequence = useContext19(SequenceContext);
4104
+ const { registerSequence, unregisterSequence } = useContext19(SequenceManager);
4105
+ const { duration, nonce, rootId, isStudio, finalDisplayName } = useBasicMediaInTimeline({
4106
+ volume: undefined,
4107
+ mediaVolume: 0,
4108
+ mediaType: "image",
4109
+ src,
4110
+ displayName,
4111
+ trimAfter: undefined,
4112
+ trimBefore: undefined,
4113
+ playbackRate: 1
4114
+ });
4115
+ useEffect4(() => {
4116
+ if (!src) {
4117
+ throw new Error("No src passed");
4118
+ }
4119
+ if (!isStudio && window.process?.env?.NODE_ENV !== "test") {
4120
+ return;
4121
+ }
4122
+ if (!showInTimeline) {
4123
+ return;
4124
+ }
4125
+ registerSequence({
4126
+ type: "image",
4127
+ src,
4128
+ id,
4129
+ duration,
4130
+ from: 0,
4131
+ parent: parentSequence?.id ?? null,
4132
+ displayName: finalDisplayName,
4133
+ rootId,
4134
+ showInTimeline: true,
4135
+ nonce: nonce.get(),
4136
+ loopDisplay,
4137
+ stack,
4138
+ premountDisplay,
4139
+ postmountDisplay,
4140
+ controls: null
4141
+ });
4142
+ return () => {
4143
+ unregisterSequence(id);
4144
+ };
4145
+ }, [
4146
+ duration,
4147
+ id,
4148
+ parentSequence,
4149
+ src,
4150
+ registerSequence,
4151
+ unregisterSequence,
4152
+ nonce,
4153
+ stack,
4154
+ showInTimeline,
4155
+ premountDisplay,
4156
+ postmountDisplay,
4157
+ isStudio,
4158
+ loopDisplay,
4159
+ rootId,
4160
+ finalDisplayName
4161
+ ]);
4162
+ };
4121
4163
  var useMediaInTimeline = ({
4122
4164
  volume,
4123
4165
  mediaVolume,
@@ -5275,7 +5317,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
5275
5317
  });
5276
5318
  };
5277
5319
  }, [cleanupOnMediaTagUnmount]);
5278
- useImperativeHandle5(ref, () => {
5320
+ useImperativeHandle4(ref, () => {
5279
5321
  return audioRef.current;
5280
5322
  }, [audioRef]);
5281
5323
  const currentOnDurationCallback = useRef14(onDuration);
@@ -5346,7 +5388,7 @@ var AudioForRenderingRefForwardingFunction = (props, ref) => {
5346
5388
  mediaVolume: 1
5347
5389
  });
5348
5390
  warnAboutTooHighVolume(volume);
5349
- useImperativeHandle6(ref, () => {
5391
+ useImperativeHandle5(ref, () => {
5350
5392
  return audioRef.current;
5351
5393
  }, []);
5352
5394
  useEffect11(() => {
@@ -5775,13 +5817,6 @@ var InnerComposition = ({
5775
5817
  registerComposition,
5776
5818
  unregisterComposition
5777
5819
  ]);
5778
- useEffect13(() => {
5779
- window.dispatchEvent(new CustomEvent(PROPS_UPDATED_EXTERNALLY, {
5780
- detail: {
5781
- resetUnsaved: id
5782
- }
5783
- }));
5784
- }, [defaultProps, id]);
5785
5820
  const resolved = useResolvedVideoConfig(id);
5786
5821
  if (environment.isStudio && video && video.component === lazy && video.id === id) {
5787
5822
  const Comp = lazy;
@@ -5869,12 +5904,16 @@ var ImgRefForwarding = ({
5869
5904
  delayRenderTimeoutInMilliseconds,
5870
5905
  onImageFrame,
5871
5906
  crossOrigin,
5907
+ showInTimeline,
5908
+ name,
5909
+ stack,
5872
5910
  ...props2
5873
5911
  }, ref) => {
5874
5912
  const imageRef = useRef17(null);
5875
5913
  const errors = useRef17({});
5876
5914
  const { delayPlayback } = useBufferState();
5877
5915
  const sequenceContext = useContext29(SequenceContext);
5916
+ const [timelineId] = useState15(() => String(Math.random()));
5878
5917
  if (!src) {
5879
5918
  throw new Error('No "src" prop was passed to <Img>.');
5880
5919
  }
@@ -5882,9 +5921,19 @@ var ImgRefForwarding = ({
5882
5921
  if (!_propsValid) {
5883
5922
  throw new Error("typecheck error");
5884
5923
  }
5885
- useImperativeHandle7(ref, () => {
5924
+ useImperativeHandle6(ref, () => {
5886
5925
  return imageRef.current;
5887
5926
  }, []);
5927
+ useImageInTimeline({
5928
+ src,
5929
+ displayName: name ?? null,
5930
+ id: timelineId,
5931
+ stack: stack ?? null,
5932
+ showInTimeline: showInTimeline ?? true,
5933
+ premountDisplay: sequenceContext?.premountDisplay ?? null,
5934
+ postmountDisplay: sequenceContext?.postmountDisplay ?? null,
5935
+ loopDisplay: undefined
5936
+ });
5888
5937
  const actualSrc = usePreload(src);
5889
5938
  const retryIn = useCallback13((timeout) => {
5890
5939
  if (!imageRef.current) {
@@ -6007,6 +6056,7 @@ var ImgRefForwarding = ({
6007
6056
  });
6008
6057
  };
6009
6058
  var Img = forwardRef8(ImgRefForwarding);
6059
+ addSequenceStackTraces(Img);
6010
6060
  var compositionsRef = React24.createRef();
6011
6061
  var CompositionManagerProvider = ({
6012
6062
  children,
@@ -6015,9 +6065,9 @@ var CompositionManagerProvider = ({
6015
6065
  initialCompositions,
6016
6066
  initialCanvasContent
6017
6067
  }) => {
6018
- const [folders, setFolders] = useState15([]);
6019
- const [canvasContent, setCanvasContent] = useState15(initialCanvasContent);
6020
- const [compositions, setCompositions] = useState15(initialCompositions);
6068
+ const [folders, setFolders] = useState16([]);
6069
+ const [canvasContent, setCanvasContent] = useState16(initialCanvasContent);
6070
+ const [compositions, setCompositions] = useState16(initialCompositions);
6021
6071
  const currentcompositionsRef = useRef18(compositions);
6022
6072
  const updateCompositions = useCallback14((updateComps) => {
6023
6073
  setCompositions((comps) => {
@@ -6056,25 +6106,11 @@ var CompositionManagerProvider = ({
6056
6106
  return prevFolders.filter((p) => !(p.name === name && p.parent === parent));
6057
6107
  });
6058
6108
  }, []);
6059
- useImperativeHandle8(compositionsRef, () => {
6109
+ useImperativeHandle7(compositionsRef, () => {
6060
6110
  return {
6061
6111
  getCompositions: () => currentcompositionsRef.current
6062
6112
  };
6063
6113
  }, []);
6064
- const updateCompositionDefaultProps = useCallback14((id, newDefaultProps) => {
6065
- setCompositions((comps) => {
6066
- const updated = comps.map((c2) => {
6067
- if (c2.id === id) {
6068
- return {
6069
- ...c2,
6070
- defaultProps: newDefaultProps
6071
- };
6072
- }
6073
- return c2;
6074
- });
6075
- return updated;
6076
- });
6077
- }, []);
6078
6114
  const compositionManagerSetters = useMemo26(() => {
6079
6115
  return {
6080
6116
  registerComposition,
@@ -6082,7 +6118,6 @@ var CompositionManagerProvider = ({
6082
6118
  registerFolder,
6083
6119
  unregisterFolder,
6084
6120
  setCanvasContent,
6085
- updateCompositionDefaultProps,
6086
6121
  onlyRenderComposition
6087
6122
  };
6088
6123
  }, [
@@ -6090,7 +6125,6 @@ var CompositionManagerProvider = ({
6090
6125
  registerFolder,
6091
6126
  unregisterComposition,
6092
6127
  unregisterFolder,
6093
- updateCompositionDefaultProps,
6094
6128
  onlyRenderComposition
6095
6129
  ]);
6096
6130
  const compositionManagerContextValue = useMemo26(() => {
@@ -6297,6 +6331,7 @@ var validCodecs = [
6297
6331
  "h265",
6298
6332
  "vp8",
6299
6333
  "vp9",
6334
+ "av1",
6300
6335
  "mp3",
6301
6336
  "aac",
6302
6337
  "wav",
@@ -6520,7 +6555,7 @@ var useSchema = (schema, currentValue) => {
6520
6555
  if (earlyReturn) {
6521
6556
  return earlyReturn;
6522
6557
  }
6523
- const [overrideId] = useState16(() => String(Math.random()));
6558
+ const [overrideId] = useState17(() => String(Math.random()));
6524
6559
  const {
6525
6560
  visualModeEnabled,
6526
6561
  dragOverrides: overrides,
@@ -6549,7 +6584,7 @@ var useSchema = (schema, currentValue) => {
6549
6584
  const overrideValues = overrides[overrideId] ?? {};
6550
6585
  const propStatus = codeValues[overrideId];
6551
6586
  const currentValueKeys = Object.keys(currentValue);
6552
- const keysToUpdate = new Set(currentValueKeys).values();
6587
+ const keysToUpdate = [...new Set(currentValueKeys)];
6553
6588
  const merged = {};
6554
6589
  for (const key of keysToUpdate) {
6555
6590
  const codeValueStatus = propStatus?.[key] ?? null;
@@ -6690,7 +6725,7 @@ var OffthreadVideoForRendering = ({
6690
6725
  toneMapped
6691
6726
  });
6692
6727
  }, [toneMapped, currentTime, src, transparent]);
6693
- const [imageSrc, setImageSrc] = useState17(null);
6728
+ const [imageSrc, setImageSrc] = useState18(null);
6694
6729
  const { delayRender: delayRender2, continueRender: continueRender2 } = useDelayRender();
6695
6730
  useLayoutEffect10(() => {
6696
6731
  if (!window.remotion_videoEnabled) {
@@ -6879,7 +6914,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
6879
6914
  const { hidden } = useContext34(SequenceVisibilityToggleContext);
6880
6915
  const logLevel = useLogLevel();
6881
6916
  const mountTime = useMountTime();
6882
- const [timelineId] = useState18(() => String(Math.random()));
6917
+ const [timelineId] = useState19(() => String(Math.random()));
6883
6918
  const isSequenceHidden = hidden[timelineId] ?? false;
6884
6919
  if (typeof acceptableTimeShift !== "undefined") {
6885
6920
  throw new Error("acceptableTimeShift has been removed. Use acceptableTimeShiftInSeconds instead.");
@@ -6942,10 +6977,10 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
6942
6977
  duration,
6943
6978
  fps
6944
6979
  });
6945
- useImperativeHandle9(ref, () => {
6980
+ useImperativeHandle8(ref, () => {
6946
6981
  return videoRef.current;
6947
6982
  }, []);
6948
- useState18(() => playbackLogging({
6983
+ useState19(() => playbackLogging({
6949
6984
  logLevel,
6950
6985
  message: `Mounting video with source = ${actualSrc}, v=${VERSION}, user agent=${typeof navigator === "undefined" ? "server" : navigator.userAgent}`,
6951
6986
  tag: "video",
@@ -7415,8 +7450,6 @@ var Internals = {
7415
7450
  CurrentScaleContext,
7416
7451
  PreviewSizeContext,
7417
7452
  calculateScale,
7418
- editorPropsProviderRef,
7419
- PROPS_UPDATED_EXTERNALLY,
7420
7453
  validateRenderAsset,
7421
7454
  Log,
7422
7455
  LogLevelContext,
@@ -8100,7 +8133,7 @@ var VideoForRenderingForwardFunction = ({
8100
8133
  sequenceContext?.relativeFrom,
8101
8134
  audioStreamIndex
8102
8135
  ]);
8103
- useImperativeHandle10(ref, () => {
8136
+ useImperativeHandle9(ref, () => {
8104
8137
  return videoRef.current;
8105
8138
  }, []);
8106
8139
  useEffect17(() => {
@@ -10115,7 +10148,7 @@ var getDefaultConfig = () => {
10115
10148
  var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
10116
10149
 
10117
10150
  // ../design/dist/esm/index.mjs
10118
- import React6, { useEffect as useEffect18, useMemo as useMemo39, useState as useState19 } from "react";
10151
+ import React6, { useEffect as useEffect18, useMemo as useMemo39, useState as useState20 } from "react";
10119
10152
 
10120
10153
  // ../paths/dist/esm/index.mjs
10121
10154
  var cutLInstruction = ({
@@ -14718,7 +14751,7 @@ var getAngle = (ref, coordinates) => {
14718
14751
  };
14719
14752
  var lastCoordinates = null;
14720
14753
  var useMousePosition = (ref) => {
14721
- const [angle, setAngle] = useState19(getAngle(ref.current, lastCoordinates));
14754
+ const [angle, setAngle] = useState20(getAngle(ref.current, lastCoordinates));
14722
14755
  useEffect18(() => {
14723
14756
  const element = ref.current;
14724
14757
  if (!element) {
@@ -22343,10 +22376,10 @@ function cn2(...inputs) {
22343
22376
  }
22344
22377
 
22345
22378
  // src/components/homepage/InfoTooltip.tsx
22346
- import { useState as useState38 } from "react";
22379
+ import { useState as useState39 } from "react";
22347
22380
  import { jsx as jsx44, jsxs as jsxs7 } from "react/jsx-runtime";
22348
22381
  var InfoTooltip = ({ children }) => {
22349
- const [isVisible, setIsVisible] = useState38(false);
22382
+ const [isVisible, setIsVisible] = useState39(false);
22350
22383
  return /* @__PURE__ */ jsxs7("span", {
22351
22384
  className: "relative inline-block ml-1 text-gray-600 cursor-default",
22352
22385
  onPointerEnter: () => setIsVisible(true),
@@ -23124,7 +23157,7 @@ var InstallsPerMonth = () => {
23124
23157
  },
23125
23158
  children: [
23126
23159
  /* @__PURE__ */ jsx50(StatItemContent, {
23127
- content: "900K",
23160
+ content: "1.4M",
23128
23161
  width: "100px",
23129
23162
  fontSize: "2.5rem",
23130
23163
  fontWeight: "bold"
@@ -23176,7 +23209,7 @@ var PagesOfDocs = () => {
23176
23209
  width: "40px"
23177
23210
  }),
23178
23211
  /* @__PURE__ */ jsx50(StatItemContent, {
23179
- content: "700",
23212
+ content: "800",
23180
23213
  width: "85px",
23181
23214
  maxWidth: "100px",
23182
23215
  fontSize: "2.5rem",
@@ -23232,7 +23265,7 @@ var GitHubStars = () => {
23232
23265
  width: "45px"
23233
23266
  }),
23234
23267
  /* @__PURE__ */ jsx50(StatItemContent, {
23235
- content: "39k",
23268
+ content: "40k",
23236
23269
  width: "80px",
23237
23270
  fontSize: "2.5rem",
23238
23271
  fontWeight: "bold"
@@ -23268,7 +23301,7 @@ var DiscordMembers = () => {
23268
23301
  },
23269
23302
  children: [
23270
23303
  /* @__PURE__ */ jsx50(StatItemContent, {
23271
- content: "6000+",
23304
+ content: "8000+",
23272
23305
  width: "142px",
23273
23306
  fontSize: "2.5rem",
23274
23307
  fontWeight: "bold"
@@ -23424,7 +23457,7 @@ var CommunityStats_default = CommunityStats;
23424
23457
  import { jsx as jsx56, jsxs as jsxs14 } from "react/jsx-runtime";
23425
23458
  import { jsx as jsx214, jsxs as jsxs24, Fragment as Fragment9 } from "react/jsx-runtime";
23426
23459
  import React55 from "react";
23427
- import { useContext as useContext210, useEffect as useEffect40, useState as useState39 } from "react";
23460
+ import { useContext as useContext210, useEffect as useEffect40, useState as useState40 } from "react";
23428
23461
  import { useContext as useContext43, useLayoutEffect as useLayoutEffect16 } from "react";
23429
23462
  import { jsx as jsx312 } from "react/jsx-runtime";
23430
23463
  import { useCallback as useCallback31, useRef as useRef38 } from "react";
@@ -23449,7 +23482,7 @@ import React103, {
23449
23482
  useCallback as useCallback112,
23450
23483
  useContext as useContext52,
23451
23484
  useEffect as useEffect122,
23452
- useImperativeHandle as useImperativeHandle11,
23485
+ useImperativeHandle as useImperativeHandle10,
23453
23486
  useMemo as useMemo122,
23454
23487
  useRef as useRef112,
23455
23488
  useState as useState113
@@ -23646,6 +23679,10 @@ var PERCENTAGE2 = NUMBER2 + "%";
23646
23679
  function call(...args) {
23647
23680
  return "\\(\\s*(" + args.join(")\\s*,\\s*(") + ")\\s*\\)";
23648
23681
  }
23682
+ var MODERN_VALUE = "(?:none|[-+]?\\d*\\.?\\d+(?:%|deg|rad|grad|turn)?)";
23683
+ function modernColorCall(name) {
23684
+ return new RegExp(name + "\\(\\s*(" + MODERN_VALUE + ")\\s+(" + MODERN_VALUE + ")\\s+(" + MODERN_VALUE + ")(?:\\s*\\/\\s*(" + MODERN_VALUE + "))?\\s*\\)");
23685
+ }
23649
23686
  function getMatchers() {
23650
23687
  const cachedMatchers = {
23651
23688
  rgb: undefined,
@@ -23656,7 +23693,12 @@ function getMatchers() {
23656
23693
  hex4: undefined,
23657
23694
  hex5: undefined,
23658
23695
  hex6: undefined,
23659
- hex8: undefined
23696
+ hex8: undefined,
23697
+ oklch: undefined,
23698
+ oklab: undefined,
23699
+ lab: undefined,
23700
+ lch: undefined,
23701
+ hwb: undefined
23660
23702
  };
23661
23703
  if (cachedMatchers.rgb === undefined) {
23662
23704
  cachedMatchers.rgb = new RegExp("rgb" + call(NUMBER2, NUMBER2, NUMBER2));
@@ -23667,6 +23709,11 @@ function getMatchers() {
23667
23709
  cachedMatchers.hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;
23668
23710
  cachedMatchers.hex6 = /^#([0-9a-fA-F]{6})$/;
23669
23711
  cachedMatchers.hex8 = /^#([0-9a-fA-F]{8})$/;
23712
+ cachedMatchers.oklch = modernColorCall("oklch");
23713
+ cachedMatchers.oklab = modernColorCall("oklab");
23714
+ cachedMatchers.lab = modernColorCall("lab");
23715
+ cachedMatchers.lch = modernColorCall("lch");
23716
+ cachedMatchers.hwb = modernColorCall("hwb");
23670
23717
  }
23671
23718
  return cachedMatchers;
23672
23719
  }
@@ -23730,6 +23777,96 @@ function parsePercentage(str) {
23730
23777
  }
23731
23778
  return int / 100;
23732
23779
  }
23780
+ function parseModernComponent(str, percentScale) {
23781
+ if (str === "none")
23782
+ return 0;
23783
+ if (str.endsWith("%")) {
23784
+ return Number.parseFloat(str) / 100 * percentScale;
23785
+ }
23786
+ return Number.parseFloat(str);
23787
+ }
23788
+ function parseHueAngle(str) {
23789
+ if (str === "none")
23790
+ return 0;
23791
+ if (str.endsWith("rad")) {
23792
+ return Number.parseFloat(str) * 180 / Math.PI;
23793
+ }
23794
+ if (str.endsWith("grad"))
23795
+ return Number.parseFloat(str) * 0.9;
23796
+ if (str.endsWith("turn"))
23797
+ return Number.parseFloat(str) * 360;
23798
+ return Number.parseFloat(str);
23799
+ }
23800
+ function parseModernAlpha(str) {
23801
+ if (str === undefined || str === "none")
23802
+ return 1;
23803
+ if (str.endsWith("%")) {
23804
+ return Math.max(0, Math.min(1, Number.parseFloat(str) / 100));
23805
+ }
23806
+ return Math.max(0, Math.min(1, Number.parseFloat(str)));
23807
+ }
23808
+ function linearToSrgb(c) {
23809
+ if (c <= 0.0031308)
23810
+ return 12.92 * c;
23811
+ return 1.055 * c ** (1 / 2.4) - 0.055;
23812
+ }
23813
+ function clamp01(v) {
23814
+ return Math.max(0, Math.min(1, v));
23815
+ }
23816
+ function rgbFloatToInt(r2, g, b, alpha) {
23817
+ const ri = Math.round(clamp01(r2) * 255);
23818
+ const gi = Math.round(clamp01(g) * 255);
23819
+ const bi = Math.round(clamp01(b) * 255);
23820
+ const ai = Math.round(clamp01(alpha) * 255);
23821
+ return (ri << 24 | gi << 16 | bi << 8 | ai) >>> 0;
23822
+ }
23823
+ function oklabToSrgb(L, a, b) {
23824
+ const l_ = L + 0.3963377774 * a + 0.2158037573 * b;
23825
+ const m_ = L - 0.1055613458 * a - 0.0638541728 * b;
23826
+ const s_ = L - 0.0894841775 * a - 1.291485548 * b;
23827
+ const l = l_ * l_ * l_;
23828
+ const m = m_ * m_ * m_;
23829
+ const s = s_ * s_ * s_;
23830
+ const rLin = 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s;
23831
+ const gLin = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s;
23832
+ const bLin = -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s;
23833
+ return [linearToSrgb(rLin), linearToSrgb(gLin), linearToSrgb(bLin)];
23834
+ }
23835
+ function labToSrgb(L, a, b) {
23836
+ const epsilon = 216 / 24389;
23837
+ const kappa = 24389 / 27;
23838
+ const Xn = 0.95047;
23839
+ const Yn = 1;
23840
+ const Zn = 1.08883;
23841
+ const fy = (L + 16) / 116;
23842
+ const fx = a / 500 + fy;
23843
+ const fz = fy - b / 200;
23844
+ const fx3 = fx * fx * fx;
23845
+ const fz3 = fz * fz * fz;
23846
+ const xr = fx3 > epsilon ? fx3 : (116 * fx - 16) / kappa;
23847
+ const yr = L > kappa * epsilon ? ((L + 16) / 116) ** 3 : L / kappa;
23848
+ const zr = fz3 > epsilon ? fz3 : (116 * fz - 16) / kappa;
23849
+ const X = xr * Xn;
23850
+ const Y = yr * Yn;
23851
+ const Z = zr * Zn;
23852
+ const rLin = 3.2404542 * X - 1.5371385 * Y - 0.4985314 * Z;
23853
+ const gLin = -0.969266 * X + 1.8760108 * Y + 0.041556 * Z;
23854
+ const bLin = 0.0556434 * X - 0.2040259 * Y + 1.0572252 * Z;
23855
+ return [linearToSrgb(rLin), linearToSrgb(gLin), linearToSrgb(bLin)];
23856
+ }
23857
+ function hwbToSrgb(h, w, bk) {
23858
+ if (w + bk >= 1) {
23859
+ const gray = w / (w + bk);
23860
+ return [gray, gray, gray];
23861
+ }
23862
+ const q = 1;
23863
+ const p = 0;
23864
+ const r2 = hue2rgb(p, q, h + 1 / 3);
23865
+ const g = hue2rgb(p, q, h);
23866
+ const bl = hue2rgb(p, q, h - 1 / 3);
23867
+ const factor = 1 - w - bk;
23868
+ return [r2 * factor + w, g * factor + w, bl * factor + w];
23869
+ }
23733
23870
  var colorNames = {
23734
23871
  transparent: 0,
23735
23872
  aliceblue: 4042850303,
@@ -23928,6 +24065,58 @@ function normalizeColor(color) {
23928
24065
  return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | parse1(match[4])) >>> 0;
23929
24066
  }
23930
24067
  }
24068
+ if (matchers.oklch) {
24069
+ if (match = matchers.oklch.exec(color)) {
24070
+ const L = parseModernComponent(match[1], 1);
24071
+ const C = parseModernComponent(match[2], 0.4);
24072
+ const H = parseHueAngle(match[3]);
24073
+ const alpha = parseModernAlpha(match[4]);
24074
+ const hRad = H * Math.PI / 180;
24075
+ const [r2, g, b] = oklabToSrgb(L, C * Math.cos(hRad), C * Math.sin(hRad));
24076
+ return rgbFloatToInt(r2, g, b, alpha);
24077
+ }
24078
+ }
24079
+ if (matchers.oklab) {
24080
+ if (match = matchers.oklab.exec(color)) {
24081
+ const L = parseModernComponent(match[1], 1);
24082
+ const a = parseModernComponent(match[2], 0.4);
24083
+ const b = parseModernComponent(match[3], 0.4);
24084
+ const alpha = parseModernAlpha(match[4]);
24085
+ const [r2, g, bl] = oklabToSrgb(L, a, b);
24086
+ return rgbFloatToInt(r2, g, bl, alpha);
24087
+ }
24088
+ }
24089
+ if (matchers.lab) {
24090
+ if (match = matchers.lab.exec(color)) {
24091
+ const L = parseModernComponent(match[1], 100);
24092
+ const a = parseModernComponent(match[2], 125);
24093
+ const b = parseModernComponent(match[3], 125);
24094
+ const alpha = parseModernAlpha(match[4]);
24095
+ const [r2, g, bl] = labToSrgb(L, a, b);
24096
+ return rgbFloatToInt(r2, g, bl, alpha);
24097
+ }
24098
+ }
24099
+ if (matchers.lch) {
24100
+ if (match = matchers.lch.exec(color)) {
24101
+ const L = parseModernComponent(match[1], 100);
24102
+ const C = parseModernComponent(match[2], 150);
24103
+ const H = parseHueAngle(match[3]);
24104
+ const alpha = parseModernAlpha(match[4]);
24105
+ const hRad = H * Math.PI / 180;
24106
+ const [r2, g, bl] = labToSrgb(L, C * Math.cos(hRad), C * Math.sin(hRad));
24107
+ return rgbFloatToInt(r2, g, bl, alpha);
24108
+ }
24109
+ }
24110
+ if (matchers.hwb) {
24111
+ if (match = matchers.hwb.exec(color)) {
24112
+ const H = parseHueAngle(match[1]);
24113
+ const W = parseModernComponent(match[2], 1);
24114
+ const B = parseModernComponent(match[3], 1);
24115
+ const alpha = parseModernAlpha(match[4]);
24116
+ const [r2, g, bl] = hwbToSrgb(H / 360, W, B);
24117
+ return rgbFloatToInt(r2, g, bl, alpha);
24118
+ }
24119
+ }
23931
24120
  throw new Error(`invalid color string ${color} provided`);
23932
24121
  }
23933
24122
  function processColor(color) {
@@ -23972,6 +24161,7 @@ var validCodecs2 = [
23972
24161
  "h265",
23973
24162
  "vp8",
23974
24163
  "vp9",
24164
+ "av1",
23975
24165
  "mp3",
23976
24166
  "aac",
23977
24167
  "wav",
@@ -24580,7 +24770,7 @@ var useBufferStateEmitter = (emitter) => {
24580
24770
  }, [bufferManager, emitter]);
24581
24771
  };
24582
24772
  var PlayerEmitterProvider = ({ children, currentPlaybackRate }) => {
24583
- const [emitter] = useState39(() => new PlayerEmitter);
24773
+ const [emitter] = useState40(() => new PlayerEmitter);
24584
24774
  const bufferManager = useContext210(Internals.BufferingContextReact);
24585
24775
  if (!bufferManager) {
24586
24776
  throw new Error("BufferingContextReact not found");
@@ -26557,7 +26747,7 @@ var PlayerUI = ({
26557
26747
  stopped = true;
26558
26748
  };
26559
26749
  }, [bufferStateDelayInMilliseconds, player.emitter]);
26560
- useImperativeHandle11(ref, () => {
26750
+ useImperativeHandle10(ref, () => {
26561
26751
  const methods = {
26562
26752
  play: player.play,
26563
26753
  pause: () => {
@@ -27538,7 +27728,7 @@ import {
27538
27728
  useEffect as useEffect56,
27539
27729
  useMemo as useMemo61,
27540
27730
  useRef as useRef50,
27541
- useState as useState54
27731
+ useState as useState56
27542
27732
  } from "react";
27543
27733
 
27544
27734
  // ../../node_modules/.bun/@babel+runtime@7.27.1/node_modules/@babel/runtime/helpers/esm/extends.js
@@ -28318,7 +28508,7 @@ import { AudioBufferSink, InputDisposedError } from "mediabunny";
28318
28508
  import { CanvasSink } from "mediabunny";
28319
28509
  import { useMemo as useMemo51 } from "react";
28320
28510
  import { useContext as useContext47, useLayoutEffect as useLayoutEffect17 } from "react";
28321
- import { useContext as useContext212, useState as useState40, useEffect as useEffect41 } from "react";
28511
+ import { useContext as useContext212, useState as useState41, useEffect as useEffect41 } from "react";
28322
28512
  import { jsx as jsx58 } from "react/jsx-runtime";
28323
28513
  import { useContext as useContext46, useLayoutEffect as useLayoutEffect24, useMemo as useMemo310, useState as useState312 } from "react";
28324
28514
  import React211 from "react";
@@ -30206,8 +30396,8 @@ var useMediaInTimeline2 = ({
30206
30396
  const parentSequence = useContext212(Internals.SequenceContext);
30207
30397
  const startsAt = Internals.useMediaStartsAt();
30208
30398
  const { registerSequence, unregisterSequence } = useContext212(Internals.SequenceManager);
30209
- const [sequenceId] = useState40(() => String(Math.random()));
30210
- const [mediaId] = useState40(() => String(Math.random()));
30399
+ const [sequenceId] = useState41(() => String(Math.random()));
30400
+ const [mediaId] = useState41(() => String(Math.random()));
30211
30401
  const frame = useCurrentFrame();
30212
30402
  const {
30213
30403
  volumes,
@@ -33518,7 +33708,7 @@ var Video = Internals.wrapInSchema(VideoInner, videoSchema);
33518
33708
  Internals.addSequenceStackTraces(Video);
33519
33709
 
33520
33710
  // src/components/homepage/Demo/Comp.tsx
33521
- import { useCallback as useCallback38, useEffect as useEffect48, useMemo as useMemo57, useState as useState47 } from "react";
33711
+ import { useCallback as useCallback38, useEffect as useEffect48, useMemo as useMemo57, useState as useState48 } from "react";
33522
33712
 
33523
33713
  // src/components/homepage/Demo/Cards.tsx
33524
33714
  import {
@@ -33526,7 +33716,7 @@ import {
33526
33716
  useCallback as useCallback37,
33527
33717
  useEffect as useEffect47,
33528
33718
  useRef as useRef47,
33529
- useState as useState46
33719
+ useState as useState47
33530
33720
  } from "react";
33531
33721
 
33532
33722
  // src/components/homepage/Demo/Card.tsx
@@ -33893,13 +34083,13 @@ import {
33893
34083
  forwardRef as forwardRef34,
33894
34084
  useCallback as useCallback36,
33895
34085
  useEffect as useEffect46,
33896
- useImperativeHandle as useImperativeHandle13,
34086
+ useImperativeHandle as useImperativeHandle12,
33897
34087
  useRef as useRef46
33898
34088
  } from "react";
33899
34089
 
33900
34090
  // ../lottie/dist/esm/index.mjs
33901
34091
  import lottie from "lottie-web";
33902
- import { useEffect as useEffect43, useRef as useRef45, useState as useState41 } from "react";
34092
+ import { useEffect as useEffect43, useRef as useRef45, useState as useState44 } from "react";
33903
34093
  import { jsx as jsx69 } from "react/jsx-runtime";
33904
34094
  var getLottieMetadata = (animationData) => {
33905
34095
  const width2 = animationData.w;
@@ -33974,7 +34164,7 @@ var Lottie = ({
33974
34164
  const onAnimationLoadedRef = useRef45(onAnimationLoaded);
33975
34165
  onAnimationLoadedRef.current = onAnimationLoaded;
33976
34166
  const { delayRender, continueRender } = useDelayRender();
33977
- const [handle] = useState41(() => delayRender("Waiting for Lottie animation to load"));
34167
+ const [handle] = useState44(() => delayRender("Waiting for Lottie animation to load"));
33978
34168
  useEffect43(() => {
33979
34169
  return () => {
33980
34170
  continueRender(handle);
@@ -34070,12 +34260,12 @@ var Lottie = ({
34070
34260
  };
34071
34261
 
34072
34262
  // src/components/homepage/Demo/DisplayedEmoji.tsx
34073
- import { useEffect as useEffect45, useMemo as useMemo54, useState as useState44 } from "react";
34263
+ import { useEffect as useEffect45, useMemo as useMemo54, useState as useState46 } from "react";
34074
34264
  import { jsx as jsx70 } from "react/jsx-runtime";
34075
34265
  var DisplayedEmoji = ({ emoji }) => {
34076
- const [data, setData] = useState44(null);
34266
+ const [data, setData] = useState46(null);
34077
34267
  const { durationInFrames, fps } = useVideoConfig();
34078
- const [browser, setBrowser] = useState44(typeof document !== "undefined");
34268
+ const [browser, setBrowser] = useState46(typeof document !== "undefined");
34079
34269
  const { delayRender, continueRender, cancelRender: cancelRender2 } = useDelayRender();
34080
34270
  const src = useMemo54(() => {
34081
34271
  if (emoji === "melting") {
@@ -34089,7 +34279,7 @@ var DisplayedEmoji = ({ emoji }) => {
34089
34279
  }
34090
34280
  throw new Error("Unknown emoji");
34091
34281
  }, [emoji]);
34092
- const [handle] = useState44(() => delayRender("Loading emojis!"));
34282
+ const [handle] = useState46(() => delayRender("Loading emojis!"));
34093
34283
  useEffect45(() => {
34094
34284
  fetch(src).then((res) => res.json()).then((json) => {
34095
34285
  setData({
@@ -34208,7 +34398,7 @@ var EmojiCardRefFn = ({ emojiIndex }, ref) => {
34208
34398
  transforms: transforms.current
34209
34399
  });
34210
34400
  }, []);
34211
- useImperativeHandle13(ref, () => {
34401
+ useImperativeHandle12(ref, () => {
34212
34402
  return {
34213
34403
  onLeft,
34214
34404
  onRight
@@ -34621,7 +34811,7 @@ var Cards = ({
34621
34811
  trending
34622
34812
  }) => {
34623
34813
  const container4 = useRef47(null);
34624
- const [refs] = useState46(() => {
34814
+ const [refs] = useState47(() => {
34625
34815
  return new Array(4).fill(true).map(() => {
34626
34816
  return createRef4();
34627
34817
  });
@@ -34719,7 +34909,7 @@ var HomepageVideoComp = ({
34719
34909
  onClickLeft,
34720
34910
  onClickRight
34721
34911
  }) => {
34722
- const [rerenders, setRerenders] = useState47(0);
34912
+ const [rerenders, setRerenders] = useState48(0);
34723
34913
  const onUpdate = useCallback38((newIndices) => {
34724
34914
  setRerenders(rerenders + 1);
34725
34915
  updateCardOrder(newIndices);
@@ -34818,7 +35008,7 @@ import {
34818
35008
  import { BufferTarget, StreamTarget } from "mediabunny";
34819
35009
 
34820
35010
  // ../core/dist/esm/version.mjs
34821
- var VERSION2 = "4.0.438";
35011
+ var VERSION2 = "4.0.440";
34822
35012
 
34823
35013
  // ../web-renderer/dist/esm/index.mjs
34824
35014
  import { AudioSample, VideoSample } from "mediabunny";
@@ -34826,7 +35016,7 @@ import { AudioSampleSource } from "mediabunny";
34826
35016
  import { createRef as createRef6 } from "react";
34827
35017
  import { flushSync as flushSync22 } from "react-dom";
34828
35018
  import ReactDOM6 from "react-dom/client";
34829
- import { useImperativeHandle as useImperativeHandle14, useState as useState48 } from "react";
35019
+ import { useImperativeHandle as useImperativeHandle13, useState as useState49 } from "react";
34830
35020
  import { flushSync as flushSync3 } from "react-dom";
34831
35021
  import { jsx as jsx88 } from "react/jsx-runtime";
34832
35022
  import { jsx as jsx217 } from "react/jsx-runtime";
@@ -35383,8 +35573,8 @@ var UpdateTime = ({
35383
35573
  initialFrame,
35384
35574
  timeUpdater
35385
35575
  }) => {
35386
- const [frame, setFrame] = useState48(initialFrame);
35387
- useImperativeHandle14(timeUpdater, () => ({
35576
+ const [frame, setFrame] = useState49(initialFrame);
35577
+ useImperativeHandle13(timeUpdater, () => ({
35388
35578
  update: (f) => {
35389
35579
  flushSync3(() => {
35390
35580
  setFrame(f);
@@ -36227,6 +36417,48 @@ var parseDirection = (directionStr) => {
36227
36417
  }
36228
36418
  return 180;
36229
36419
  };
36420
+ var cssColorToRgba = (color) => {
36421
+ try {
36422
+ const packed = NoReactInternals.processColor(color);
36423
+ const a = (packed >>> 24 & 255) / 255;
36424
+ const r2 = packed >>> 16 & 255;
36425
+ const g = packed >>> 8 & 255;
36426
+ const b = packed & 255;
36427
+ return { r: r2, g, b, a };
36428
+ } catch {
36429
+ return null;
36430
+ }
36431
+ };
36432
+ var isFullyTransparent = (color) => {
36433
+ const rgba2 = cssColorToRgba(color);
36434
+ return rgba2 !== null && rgba2.a === 0;
36435
+ };
36436
+ var findNearestNonTransparent = (stops, fromIndex, direction) => {
36437
+ let i = fromIndex + direction;
36438
+ while (i >= 0 && i < stops.length) {
36439
+ if (!isFullyTransparent(stops[i].color)) {
36440
+ return stops[i].color;
36441
+ }
36442
+ i += direction;
36443
+ }
36444
+ return null;
36445
+ };
36446
+ var resolveTransparentStops = (stops) => {
36447
+ for (let i = 0;i < stops.length; i++) {
36448
+ if (!isFullyTransparent(stops[i].color)) {
36449
+ continue;
36450
+ }
36451
+ const prev = findNearestNonTransparent(stops, i, -1);
36452
+ const next = findNearestNonTransparent(stops, i, 1);
36453
+ const neighbor = prev ?? next;
36454
+ if (neighbor) {
36455
+ const rgba2 = cssColorToRgba(neighbor);
36456
+ if (rgba2) {
36457
+ stops[i].color = `rgba(${rgba2.r}, ${rgba2.g}, ${rgba2.b}, 0)`;
36458
+ }
36459
+ }
36460
+ }
36461
+ };
36230
36462
  var parseColorStops = (colorStopsStr) => {
36231
36463
  const parts = colorStopsStr.split(/,(?![^(]*\))/);
36232
36464
  const stops = [];
@@ -36310,6 +36542,7 @@ var parseColorStops = (colorStopsStr) => {
36310
36542
  for (const stop of stops) {
36311
36543
  stop.position = Math.max(0, Math.min(1, stop.position));
36312
36544
  }
36545
+ resolveTransparentStops(stops);
36313
36546
  return stops;
36314
36547
  };
36315
36548
  var extractGradientContent = (backgroundImage) => {
@@ -39261,12 +39494,12 @@ var DragAndDropNudge = () => {
39261
39494
  };
39262
39495
 
39263
39496
  // src/components/homepage/Demo/PlayerSeekBar.tsx
39264
- import { useCallback as useCallback41, useEffect as useEffect50, useMemo as useMemo60, useRef as useRef48, useState as useState50 } from "react";
39497
+ import { useCallback as useCallback41, useEffect as useEffect50, useMemo as useMemo60, useRef as useRef48, useState as useState51 } from "react";
39265
39498
 
39266
39499
  // src/components/homepage/layout/use-el-size.ts
39267
- import { useCallback as useCallback40, useEffect as useEffect49, useMemo as useMemo59, useState as useState49 } from "react";
39500
+ import { useCallback as useCallback40, useEffect as useEffect49, useMemo as useMemo59, useState as useState50 } from "react";
39268
39501
  var useElementSize2 = (ref) => {
39269
- const [size4, setSize] = useState49(null);
39502
+ const [size4, setSize] = useState50(null);
39270
39503
  const observer = useMemo59(() => {
39271
39504
  if (typeof ResizeObserver === "undefined") {
39272
39505
  return;
@@ -39343,7 +39576,7 @@ var findBodyInWhichDivIsLocated2 = (div) => {
39343
39576
  return current;
39344
39577
  };
39345
39578
  var useHoverState2 = (ref, hideControlsWhenPointerDoesntMove) => {
39346
- const [hovered, setHovered] = useState50(false);
39579
+ const [hovered, setHovered] = useState51(false);
39347
39580
  useEffect50(() => {
39348
39581
  const { current } = ref;
39349
39582
  if (!current) {
@@ -39393,8 +39626,8 @@ var PlayerSeekBar2 = ({
39393
39626
  const containerRef = useRef48(null);
39394
39627
  const barHovered = useHoverState2(containerRef, false);
39395
39628
  const size4 = useElementSize2(containerRef.current);
39396
- const [playing, setPlaying] = useState50(false);
39397
- const [frame, setFrame] = useState50(0);
39629
+ const [playing, setPlaying] = useState51(false);
39630
+ const [frame, setFrame] = useState51(0);
39398
39631
  useEffect50(() => {
39399
39632
  const { current } = playerRef;
39400
39633
  if (!current) {
@@ -39426,7 +39659,7 @@ var PlayerSeekBar2 = ({
39426
39659
  current.removeEventListener("pause", onPause);
39427
39660
  };
39428
39661
  }, [playerRef]);
39429
- const [dragging, setDragging] = useState50({
39662
+ const [dragging, setDragging] = useState51({
39430
39663
  dragging: false
39431
39664
  });
39432
39665
  const width2 = size4?.width ?? 0;
@@ -39539,7 +39772,7 @@ var PlayerSeekBar2 = ({
39539
39772
  };
39540
39773
 
39541
39774
  // src/components/homepage/Demo/PlayerVolume.tsx
39542
- import { useCallback as useCallback43, useEffect as useEffect51, useRef as useRef49, useState as useState51 } from "react";
39775
+ import { useCallback as useCallback43, useEffect as useEffect51, useRef as useRef49, useState as useState54 } from "react";
39543
39776
 
39544
39777
  // src/components/homepage/Demo/icons.tsx
39545
39778
  import { jsx as jsx101 } from "react/jsx-runtime";
@@ -39597,8 +39830,8 @@ var IsMutedIcon = (props) => {
39597
39830
  // src/components/homepage/Demo/PlayerVolume.tsx
39598
39831
  import { jsx as jsx105 } from "react/jsx-runtime";
39599
39832
  var PlayerVolume = ({ playerRef }) => {
39600
- const [muted, setIsMuted] = useState51(() => playerRef.current?.isMuted() ?? true);
39601
- const [isHovered, setIsHovered] = useState51(false);
39833
+ const [muted, setIsMuted] = useState54(() => playerRef.current?.isMuted() ?? true);
39834
+ const [isHovered, setIsHovered] = useState54(false);
39602
39835
  const timerRef = useRef49(null);
39603
39836
  useEffect51(() => {
39604
39837
  const { current } = playerRef;
@@ -39887,12 +40120,12 @@ var playerWrapper = {
39887
40120
  };
39888
40121
  var Demo = () => {
39889
40122
  const { colorMode } = useColorMode();
39890
- const [data2, setData] = useState54(null);
40123
+ const [data2, setData] = useState56(null);
39891
40124
  const ref = useRef50(null);
39892
- const [isFullscreen, setIsFullscreen] = useState54(false);
39893
- const [cardOrder, setCardOrder] = useState54([0, 1, 2, 3]);
39894
- const [emojiIndex, setEmojiIndex] = useState54(0);
39895
- const [error2, setError] = useState54(false);
40125
+ const [isFullscreen, setIsFullscreen] = useState56(false);
40126
+ const [cardOrder, setCardOrder] = useState56([0, 1, 2, 3]);
40127
+ const [emojiIndex, setEmojiIndex] = useState56(0);
40128
+ const [error2, setError] = useState56(false);
39896
40129
  useEffect56(() => {
39897
40130
  getDataAndProps().then((d2) => {
39898
40131
  setData(d2);
@@ -40046,12 +40279,12 @@ var ClearButton = (props) => {
40046
40279
 
40047
40280
  // src/components/homepage/MuxVideo.tsx
40048
40281
  import Hls2 from "hls.js";
40049
- import { forwardRef as forwardRef37, useEffect as useEffect58, useImperativeHandle as useImperativeHandle15, useRef as useRef53 } from "react";
40282
+ import { forwardRef as forwardRef37, useEffect as useEffect58, useImperativeHandle as useImperativeHandle14, useRef as useRef53 } from "react";
40050
40283
 
40051
40284
  // src/components/homepage/VideoPlayerWithControls.tsx
40052
40285
  import Hls from "hls.js";
40053
40286
  import"plyr/dist/plyr.css";
40054
- import { forwardRef as forwardRef36, useCallback as useCallback47, useEffect as useEffect57, useRef as useRef51, useState as useState56 } from "react";
40287
+ import { forwardRef as forwardRef36, useCallback as useCallback47, useEffect as useEffect57, useRef as useRef51, useState as useState57 } from "react";
40055
40288
  import { jsx as jsx116 } from "react/jsx-runtime";
40056
40289
  var useCombinedRefs = function(...refs) {
40057
40290
  const targetRef = useRef51(null);
@@ -40072,7 +40305,7 @@ var VideoPlayerWithControls = forwardRef36(({ playbackId, poster, currentTime, o
40072
40305
  const videoRef = useRef51(null);
40073
40306
  const metaRef = useCombinedRefs(ref, videoRef);
40074
40307
  const playerRef = useRef51(null);
40075
- const [playerInitTime] = useState56(Date.now());
40308
+ const [playerInitTime] = useState57(Date.now());
40076
40309
  const videoError = useCallback47((event) => onError(event), [onError]);
40077
40310
  const onImageLoad = useCallback47((event) => {
40078
40311
  const [w, h] = [event.target.width, event.target.height];
@@ -40158,7 +40391,7 @@ var getVideoToPlayUrl = (muxId) => {
40158
40391
  var MuxVideoForward = ({ muxId, ...props }, ref) => {
40159
40392
  const videoRef = useRef53(null);
40160
40393
  const vidUrl = getVideoToPlayUrl(muxId);
40161
- useImperativeHandle15(ref, () => videoRef.current, []);
40394
+ useImperativeHandle14(ref, () => videoRef.current, []);
40162
40395
  useEffect58(() => {
40163
40396
  let hls;
40164
40397
  if (videoRef.current) {
@@ -40272,10 +40505,10 @@ var EditorStarterSection = () => {
40272
40505
  var EditorStarterSection_default = EditorStarterSection;
40273
40506
 
40274
40507
  // src/components/homepage/EvaluateRemotion.tsx
40275
- import { useEffect as useEffect59, useState as useState57 } from "react";
40508
+ import { useEffect as useEffect59, useState as useState58 } from "react";
40276
40509
  import { jsx as jsx119, jsxs as jsxs41 } from "react/jsx-runtime";
40277
40510
  var EvaluateRemotionSection = () => {
40278
- const [dailyAvatars, setDailyAvatars] = useState57([]);
40511
+ const [dailyAvatars, setDailyAvatars] = useState58([]);
40279
40512
  useEffect59(() => {
40280
40513
  const avatars = experts.map((expert) => expert.image);
40281
40514
  const selectedAvatars = [];
@@ -40373,7 +40606,7 @@ var EvaluateRemotionSection = () => {
40373
40606
  var EvaluateRemotion_default = EvaluateRemotionSection;
40374
40607
 
40375
40608
  // src/components/homepage/IfYouKnowReact.tsx
40376
- import { useEffect as useEffect60, useState as useState58 } from "react";
40609
+ import { useEffect as useEffect60, useState as useState59 } from "react";
40377
40610
  import { jsx as jsx120, jsxs as jsxs44 } from "react/jsx-runtime";
40378
40611
  var isWebkit = () => {
40379
40612
  if (typeof window === "undefined") {
@@ -40388,7 +40621,7 @@ var icon2 = {
40388
40621
  marginLeft: 10
40389
40622
  };
40390
40623
  var IfYouKnowReact = () => {
40391
- const [vid, setVid] = useState58("/img/compose.webm");
40624
+ const [vid, setVid] = useState59("/img/compose.webm");
40392
40625
  useEffect60(() => {
40393
40626
  if (isWebkit()) {
40394
40627
  setVid("/img/compose.mp4");
@@ -40448,12 +40681,12 @@ var IfYouKnowReact = () => {
40448
40681
  };
40449
40682
 
40450
40683
  // src/components/homepage/NewsletterButton.tsx
40451
- import { useCallback as useCallback48, useState as useState59 } from "react";
40684
+ import { useCallback as useCallback48, useState as useState60 } from "react";
40452
40685
  import { jsx as jsx121, jsxs as jsxs46 } from "react/jsx-runtime";
40453
40686
  var NewsletterButton = () => {
40454
- const [email, setEmail] = useState59("");
40455
- const [submitting, setSubmitting] = useState59(false);
40456
- const [subscribed, setSubscribed] = useState59(false);
40687
+ const [email, setEmail] = useState60("");
40688
+ const [submitting, setSubmitting] = useState60(false);
40689
+ const [subscribed, setSubscribed] = useState60(false);
40457
40690
  const handleSubmit = useCallback48(async (e) => {
40458
40691
  try {
40459
40692
  setSubmitting(true);
@@ -40536,7 +40769,7 @@ var NewsletterButton = () => {
40536
40769
  };
40537
40770
 
40538
40771
  // src/components/homepage/ParameterizeAndEdit.tsx
40539
- import { useEffect as useEffect61, useRef as useRef55, useState as useState60 } from "react";
40772
+ import { useEffect as useEffect61, useRef as useRef55, useState as useState61 } from "react";
40540
40773
  import { jsx as jsx124, jsxs as jsxs47 } from "react/jsx-runtime";
40541
40774
  var icon3 = {
40542
40775
  height: 16,
@@ -40544,7 +40777,7 @@ var icon3 = {
40544
40777
  };
40545
40778
  var ParameterizeAndEdit = () => {
40546
40779
  const ref = useRef55(null);
40547
- const [vid, setVid] = useState60("/img/editing-vp9-chrome.webm");
40780
+ const [vid, setVid] = useState61("/img/editing-vp9-chrome.webm");
40548
40781
  useEffect61(() => {
40549
40782
  if (isWebkit()) {
40550
40783
  setVid("/img/editing-safari.mp4");
@@ -40659,7 +40892,7 @@ var ParameterizeAndEdit = () => {
40659
40892
  };
40660
40893
 
40661
40894
  // src/components/homepage/RealMp4Videos.tsx
40662
- import { useEffect as useEffect63, useRef as useRef56, useState as useState61 } from "react";
40895
+ import { useEffect as useEffect63, useRef as useRef56, useState as useState63 } from "react";
40663
40896
  import { jsx as jsx126, jsxs as jsxs48 } from "react/jsx-runtime";
40664
40897
  var icon4 = {
40665
40898
  height: 16,
@@ -40668,7 +40901,7 @@ var icon4 = {
40668
40901
  var RealMP4Videos = () => {
40669
40902
  const ref = useRef56(null);
40670
40903
  const videoRef = useRef56(null);
40671
- const [vid, setVid] = useState61("/img/render-progress.webm");
40904
+ const [vid, setVid] = useState63("/img/render-progress.webm");
40672
40905
  useEffect63(() => {
40673
40906
  if (isWebkit()) {
40674
40907
  setVid("/img/render-progress.mp4");
@@ -40920,7 +41153,7 @@ var TrustedByBanner = () => {
40920
41153
  var TrustedByBanner_default = TrustedByBanner;
40921
41154
 
40922
41155
  // src/components/homepage/VideoAppsShowcase.tsx
40923
- import { useRef as useRef57, useState as useState63 } from "react";
41156
+ import { useRef as useRef57, useState as useState65 } from "react";
40924
41157
  import { jsx as jsx128, jsxs as jsxs50 } from "react/jsx-runtime";
40925
41158
  var tabs = [
40926
41159
  "Music visualization",
@@ -40973,10 +41206,10 @@ var icon5 = {
40973
41206
  marginLeft: 10
40974
41207
  };
40975
41208
  var VideoAppsShowcase = () => {
40976
- const [activeTab, setActiveTab] = useState63(0);
40977
- const [isMuted, setIsMuted] = useState63(true);
40978
- const [isPlaying, setIsPlaying] = useState63(false);
40979
- const [videoLoaded, setVideoLoaded] = useState63(false);
41209
+ const [activeTab, setActiveTab] = useState65(0);
41210
+ const [isMuted, setIsMuted] = useState65(true);
41211
+ const [isPlaying, setIsPlaying] = useState65(false);
41212
+ const [videoLoaded, setVideoLoaded] = useState65(false);
40980
41213
  const videoRef = useRef57(null);
40981
41214
  const containerRef = useRef57(null);
40982
41215
  const handleTabChange = (index2) => {
@@ -42489,7 +42722,7 @@ var ChooseTemplate = () => {
42489
42722
  };
42490
42723
 
42491
42724
  // src/components/homepage/GetStartedStrip.tsx
42492
- import { useState as useState65 } from "react";
42725
+ import { useState as useState66 } from "react";
42493
42726
 
42494
42727
  // src/components/homepage/GitHubButton.tsx
42495
42728
  import { jsx as jsx164, jsxs as jsxs66 } from "react/jsx-runtime";
@@ -42515,7 +42748,7 @@ var GithubButton = () => {
42515
42748
  " ",
42516
42749
  /* @__PURE__ */ jsx164("div", {
42517
42750
  className: "text-xs inline-block ml-2 leading-none mt-[3px] self-center",
42518
- children: "39k"
42751
+ children: "40k"
42519
42752
  })
42520
42753
  ]
42521
42754
  });
@@ -42524,7 +42757,7 @@ var GithubButton = () => {
42524
42757
  // src/components/homepage/GetStartedStrip.tsx
42525
42758
  import { jsx as jsx166, jsxs as jsxs67 } from "react/jsx-runtime";
42526
42759
  var GetStarted = () => {
42527
- const [clicked, setClicked] = useState65(null);
42760
+ const [clicked, setClicked] = useState66(null);
42528
42761
  return /* @__PURE__ */ jsxs67("div", {
42529
42762
  className: "flex flex-col lg:flex-row items-center justify-center text-center w-full",
42530
42763
  children: [