@remotion/studio 4.0.436 → 4.0.438

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.
@@ -10108,15 +10108,20 @@ var MenuBuildIndicator = () => {
10108
10108
  import { useCallback as useCallback94, useContext as useContext61, useEffect as useEffect64 } from "react";
10109
10109
 
10110
10110
  // src/components/TopPanel.tsx
10111
- import { useCallback as useCallback93, useContext as useContext60, useEffect as useEffect63, useMemo as useMemo98 } from "react";
10111
+ import React126, { useCallback as useCallback93, useContext as useContext60, useEffect as useEffect63, useMemo as useMemo98 } from "react";
10112
10112
 
10113
10113
  // src/helpers/use-breakpoint.ts
10114
- import { useEffect as useEffect33, useState as useState38 } from "react";
10114
+ import { useEffect as useEffect33, useRef as useRef22, useState as useState38 } from "react";
10115
10115
  function useBreakpoint(breakpoint2) {
10116
10116
  const [compactUI, setCompactUI] = useState38(window.innerWidth < breakpoint2);
10117
+ const compactUIRef = useRef22(compactUI);
10117
10118
  useEffect33(() => {
10118
10119
  function handleResize() {
10119
- setCompactUI(window.innerWidth < breakpoint2);
10120
+ const newValue = window.innerWidth < breakpoint2;
10121
+ if (newValue !== compactUIRef.current) {
10122
+ setCompactUI(newValue);
10123
+ }
10124
+ compactUIRef.current = newValue;
10120
10125
  }
10121
10126
  window.addEventListener("resize", handleResize);
10122
10127
  handleResize();
@@ -10414,7 +10419,7 @@ import {
10414
10419
  useContext as useContext28,
10415
10420
  useEffect as useEffect35,
10416
10421
  useMemo as useMemo50,
10417
- useRef as useRef23
10422
+ useRef as useRef24
10418
10423
  } from "react";
10419
10424
 
10420
10425
  // src/helpers/editor-ruler.ts
@@ -10629,7 +10634,7 @@ import {
10629
10634
  useContext as useContext27,
10630
10635
  useEffect as useEffect34,
10631
10636
  useMemo as useMemo49,
10632
- useRef as useRef22,
10637
+ useRef as useRef23,
10633
10638
  useState as useState39
10634
10639
  } from "react";
10635
10640
  import { Internals as Internals22 } from "remotion";
@@ -10646,7 +10651,7 @@ var Ruler = ({
10646
10651
  markingGaps,
10647
10652
  orientation
10648
10653
  }) => {
10649
- const rulerCanvasRef = useRef22(null);
10654
+ const rulerCanvasRef = useRef23(null);
10650
10655
  const isVerticalRuler = orientation === "vertical";
10651
10656
  const {
10652
10657
  shouldCreateGuideRef,
@@ -10810,7 +10815,7 @@ var EditorRulers = ({ contentDimensions, canvasSize, assetMetadata, containerRef
10810
10815
  rulerMarkingGaps,
10811
10816
  scale
10812
10817
  }), [verticalRulerScaleRange, rulerMarkingGaps, scale]);
10813
- const requestAnimationFrameRef = useRef23(null);
10818
+ const requestAnimationFrameRef = useRef24(null);
10814
10819
  const onMouseMove = useCallback40((e) => {
10815
10820
  if (requestAnimationFrameRef.current) {
10816
10821
  cancelAnimationFrame(requestAnimationFrameRef.current);
@@ -11634,7 +11639,7 @@ import {
11634
11639
  useEffect as useEffect41,
11635
11640
  useImperativeHandle as useImperativeHandle11,
11636
11641
  useMemo as useMemo54,
11637
- useRef as useRef24,
11642
+ useRef as useRef25,
11638
11643
  useState as useState42
11639
11644
  } from "react";
11640
11645
  import { useRemotionEnvironment as useRemotionEnvironment2 } from "remotion";
@@ -11749,7 +11754,7 @@ var SetVisualControlsContext = createContext17({
11749
11754
  }
11750
11755
  });
11751
11756
  var VisualControlsProvider = ({ children }) => {
11752
- const imperativeHandles = useRef24({});
11757
+ const imperativeHandles = useRef25({});
11753
11758
  const [handles, setHandles] = useState42({});
11754
11759
  const state = useMemo54(() => {
11755
11760
  return {
@@ -11778,7 +11783,7 @@ var VisualControlsProvider = ({ children }) => {
11778
11783
  };
11779
11784
  }, []);
11780
11785
  const z = useZodIfPossible();
11781
- const changedRef = useRef24(false);
11786
+ const changedRef = useRef25(false);
11782
11787
  const env = useRemotionEnvironment2();
11783
11788
  const visualControl = useCallback43(function(key, value, schema) {
11784
11789
  if (handles && false) {}
@@ -12857,7 +12862,7 @@ import {
12857
12862
  useContext as useContext36,
12858
12863
  useEffect as useEffect43,
12859
12864
  useMemo as useMemo59,
12860
- useRef as useRef25,
12865
+ useRef as useRef26,
12861
12866
  useState as useState44
12862
12867
  } from "react";
12863
12868
  import { Internals as Internals31 } from "remotion";
@@ -12909,7 +12914,7 @@ var useLocalState = ({
12909
12914
  zodValidation: zodSafeParse(schema, savedValue)
12910
12915
  };
12911
12916
  }, [localUnsavedValue, savedValue, schema]);
12912
- const stateRef = useRef25(currentLocalValue);
12917
+ const stateRef = useRef26(currentLocalValue);
12913
12918
  stateRef.current = currentLocalValue;
12914
12919
  const onChange = useCallback49((updater, forceApply, increment) => {
12915
12920
  const newValue = updater(stateRef.current.value);
@@ -13842,7 +13847,7 @@ var ZodArrayItemEditor = ({
13842
13847
 
13843
13848
  // src/components/RenderModal/InfoBubble.tsx
13844
13849
  import { PlayerInternals as PlayerInternals11 } from "@remotion/player";
13845
- import { useCallback as useCallback54, useEffect as useEffect44, useMemo as useMemo66, useRef as useRef26, useState as useState47 } from "react";
13850
+ import { useCallback as useCallback54, useEffect as useEffect44, useMemo as useMemo66, useRef as useRef27, useState as useState47 } from "react";
13846
13851
  import ReactDOM8 from "react-dom";
13847
13852
 
13848
13853
  // src/components/RenderModal/InfoTooltip.tsx
@@ -13927,7 +13932,7 @@ var container29 = {
13927
13932
  var InfoBubble = ({ title: title4, children }) => {
13928
13933
  const [hovered, setIsHovered] = useState47(false);
13929
13934
  const [opened, setOpened] = useState47(false);
13930
- const ref = useRef26(null);
13935
+ const ref = useRef27(null);
13931
13936
  const { tabIndex, currentZIndex } = useZIndex();
13932
13937
  const size2 = PlayerInternals11.useElementSize(ref, {
13933
13938
  triggerOnWindowResize: true,
@@ -14220,7 +14225,7 @@ var ZodArrayEditor = ({
14220
14225
  import { useCallback as useCallback55 } from "react";
14221
14226
 
14222
14227
  // src/components/Checkbox.tsx
14223
- import { useEffect as useEffect45, useMemo as useMemo68, useRef as useRef27 } from "react";
14228
+ import { useEffect as useEffect45, useMemo as useMemo68, useRef as useRef28 } from "react";
14224
14229
  import { jsx as jsx120, jsxs as jsxs57 } from "react/jsx-runtime";
14225
14230
  var size2 = 20;
14226
14231
  var background = {
@@ -14247,7 +14252,7 @@ var box = {
14247
14252
  color: "white"
14248
14253
  };
14249
14254
  var Checkbox = ({ checked, onChange, disabled, name, rounded }) => {
14250
- const ref = useRef27(null);
14255
+ const ref = useRef28(null);
14251
14256
  const input2 = useMemo68(() => {
14252
14257
  return {
14253
14258
  appearance: "none",
@@ -14361,7 +14366,7 @@ var colorWithNewOpacity = (color, opacity, zodTypes) => {
14361
14366
  };
14362
14367
 
14363
14368
  // src/components/NewComposition/InputDragger.tsx
14364
- import React83, { useCallback as useCallback56, useEffect as useEffect46, useMemo as useMemo69, useRef as useRef28, useState as useState49 } from "react";
14369
+ import React83, { useCallback as useCallback56, useEffect as useEffect46, useMemo as useMemo69, useRef as useRef29, useState as useState49 } from "react";
14365
14370
  import { interpolate as interpolate2 } from "remotion";
14366
14371
  import { jsx as jsx122 } from "react/jsx-runtime";
14367
14372
  var isInt = (num) => {
@@ -14383,8 +14388,8 @@ var InputDraggerForwardRefFn = ({
14383
14388
  }, ref) => {
14384
14389
  const [inputFallback, setInputFallback] = useState49(false);
14385
14390
  const [dragging, setDragging] = useState49(false);
14386
- const fallbackRef = useRef28(null);
14387
- const pointerDownRef = useRef28(false);
14391
+ const fallbackRef = useRef29(null);
14392
+ const pointerDownRef = useRef29(false);
14388
14393
  const style8 = useMemo69(() => {
14389
14394
  return {
14390
14395
  ...inputBaseStyle,
@@ -14549,7 +14554,7 @@ import {
14549
14554
  useEffect as useEffect47,
14550
14555
  useImperativeHandle as useImperativeHandle12,
14551
14556
  useMemo as useMemo70,
14552
- useRef as useRef29,
14557
+ useRef as useRef30,
14553
14558
  useState as useState50
14554
14559
  } from "react";
14555
14560
  import { jsx as jsx123 } from "react/jsx-runtime";
@@ -14561,7 +14566,7 @@ var inputBaseStyle3 = {
14561
14566
  var RemInputTypeColorForwardRef = ({ status, ...props }, ref) => {
14562
14567
  const [isFocused, setIsFocused] = useState50(false);
14563
14568
  const [isHovered, setIsHovered] = useState50(false);
14564
- const inputRef = useRef29(null);
14569
+ const inputRef = useRef30(null);
14565
14570
  const { tabIndex } = useZIndex();
14566
14571
  const style8 = useMemo70(() => {
14567
14572
  return {
@@ -18897,7 +18902,7 @@ var OptionsPanel = ({ readOnlyStudio }) => {
18897
18902
  };
18898
18903
 
18899
18904
  // src/components/PreviewToolbar.tsx
18900
- import { useContext as useContext57, useEffect as useEffect61, useRef as useRef32, useState as useState64 } from "react";
18905
+ import { useContext as useContext57, useEffect as useEffect61, useRef as useRef33, useState as useState64 } from "react";
18901
18906
  import { Internals as Internals45 } from "remotion";
18902
18907
 
18903
18908
  // src/state/loop.ts
@@ -18952,7 +18957,7 @@ import {
18952
18957
  useEffect as useEffect56,
18953
18958
  useLayoutEffect,
18954
18959
  useMemo as useMemo93,
18955
- useRef as useRef30,
18960
+ useRef as useRef31,
18956
18961
  useState as useState61
18957
18962
  } from "react";
18958
18963
  import { Internals as Internals38 } from "remotion";
@@ -18973,9 +18978,9 @@ var FpsCounter = ({ playbackSpeed }) => {
18973
18978
  const frame2 = Internals38.Timeline.useTimelinePosition();
18974
18979
  const [marker, rerender] = useState61({});
18975
18980
  const [fps, setFps] = useState61(0);
18976
- const previousUpdates = useRef30([]);
18977
- const fpsRef = useRef30(0);
18978
- const playingRef = useRef30(playing);
18981
+ const previousUpdates = useRef31([]);
18982
+ const fpsRef = useRef31(0);
18983
+ const playingRef = useRef31(playing);
18979
18984
  useLayoutEffect(() => {
18980
18985
  fpsRef.current = 0;
18981
18986
  previousUpdates.current = [];
@@ -19706,7 +19711,7 @@ var PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds }) => {
19706
19711
 
19707
19712
  // src/components/RenderButton.tsx
19708
19713
  import { PlayerInternals as PlayerInternals14 } from "@remotion/player";
19709
- import { useCallback as useCallback91, useContext as useContext55, useMemo as useMemo95, useRef as useRef31, useState as useState63 } from "react";
19714
+ import { useCallback as useCallback91, useContext as useContext55, useMemo as useMemo95, useRef as useRef32, useState as useState63 } from "react";
19710
19715
  import ReactDOM9 from "react-dom";
19711
19716
  import { Internals as Internals43 } from "remotion";
19712
19717
  import { jsx as jsx180, jsxs as jsxs83, Fragment as Fragment23 } from "react/jsx-runtime";
@@ -19780,8 +19785,8 @@ var RenderButton = ({
19780
19785
  const { setSelectedModal } = useContext55(ModalsContext);
19781
19786
  const [preferredRenderType, setPreferredRenderType] = useState63(() => getInitialRenderType(readOnlyStudio));
19782
19787
  const [dropdownOpened, setDropdownOpened] = useState63(false);
19783
- const dropdownRef = useRef31(null);
19784
- const containerRef = useRef31(null);
19788
+ const dropdownRef = useRef32(null);
19789
+ const containerRef = useRef32(null);
19785
19790
  const { currentZIndex } = useZIndex();
19786
19791
  const size4 = PlayerInternals14.useElementSize(dropdownRef, {
19787
19792
  triggerOnWindowResize: true,
@@ -20330,9 +20335,9 @@ var PreviewToolbar = ({ readOnlyStudio, bufferStateDelayInMilliseconds }) => {
20330
20335
  const { setMediaMuted } = useContext57(Internals45.SetMediaVolumeContext);
20331
20336
  const { canvasContent } = useContext57(Internals45.CompositionManager);
20332
20337
  const isVideoComposition = useIsVideoComposition();
20333
- const previewToolbarRef = useRef32(null);
20334
- const leftScrollIndicatorRef = useRef32(null);
20335
- const rightScrollIndicatorRef = useRef32(null);
20338
+ const previewToolbarRef = useRef33(null);
20339
+ const leftScrollIndicatorRef = useRef33(null);
20340
+ const rightScrollIndicatorRef = useRef33(null);
20336
20341
  const isStill = useIsStill();
20337
20342
  const [loop, setLoop] = useState64(loadLoopOption());
20338
20343
  const isFullscreenSupported = checkFullscreenSupport();
@@ -20488,7 +20493,7 @@ var PreviewToolbar = ({ readOnlyStudio, bufferStateDelayInMilliseconds }) => {
20488
20493
  };
20489
20494
 
20490
20495
  // src/components/Splitter/SplitterContainer.tsx
20491
- import { useMemo as useMemo96, useRef as useRef33, useState as useState65 } from "react";
20496
+ import { useMemo as useMemo96, useRef as useRef34, useState as useState65 } from "react";
20492
20497
 
20493
20498
  // src/state/timeline.ts
20494
20499
  var localStorageKey4 = (id) => `remotion.editor.timelineFlex.${id}`;
@@ -20543,8 +20548,8 @@ var containerColumn = {
20543
20548
  var SplitterContainer = ({ orientation, children, defaultFlex, maxFlex, minFlex, id }) => {
20544
20549
  const [initialTimelineFlex, persistFlex] = useTimelineFlex(id);
20545
20550
  const [flexValue, setFlexValue] = useState65(initialTimelineFlex ?? defaultFlex);
20546
- const ref = useRef33(null);
20547
- const isDragging = useRef33(false);
20551
+ const ref = useRef34(null);
20552
+ const isDragging = useRef34(false);
20548
20553
  const value = useMemo96(() => {
20549
20554
  return {
20550
20555
  flexValue,
@@ -20617,7 +20622,7 @@ var SplitterElement = ({ children, type, sticky }) => {
20617
20622
 
20618
20623
  // src/components/Splitter/SplitterHandle.tsx
20619
20624
  import { PlayerInternals as PlayerInternals15 } from "@remotion/player";
20620
- import { useContext as useContext59, useEffect as useEffect62, useRef as useRef34, useState as useState66 } from "react";
20625
+ import { useContext as useContext59, useEffect as useEffect62, useRef as useRef35, useState as useState66 } from "react";
20621
20626
  import { jsx as jsx186 } from "react/jsx-runtime";
20622
20627
  var SPLITTER_HANDLE_SIZE = 3;
20623
20628
  var containerRow2 = {
@@ -20632,7 +20637,7 @@ var SplitterHandle = ({ allowToCollapse, onCollapse }) => {
20632
20637
  throw new Error("Cannot find splitter context");
20633
20638
  }
20634
20639
  const [lastPointerUp, setLastPointerUp] = useState66(() => Date.now());
20635
- const ref = useRef34(null);
20640
+ const ref = useRef35(null);
20636
20641
  useEffect62(() => {
20637
20642
  if (context.isDragging.current) {
20638
20643
  return;
@@ -20793,7 +20798,7 @@ var useResponsiveSidebarStatus = () => {
20793
20798
  }, [sidebarCollapsedStateLeft, responsiveLeftStatus]);
20794
20799
  return actualStateLeft;
20795
20800
  };
20796
- var TopPanel = ({ readOnlyStudio, onMounted, drawRef: drawRef2, bufferStateDelayInMilliseconds }) => {
20801
+ var TopPanelInner = ({ readOnlyStudio, onMounted, drawRef: drawRef2, bufferStateDelayInMilliseconds }) => {
20797
20802
  const { setSidebarCollapsedState, sidebarCollapsedStateRight } = useContext60(SidebarContext);
20798
20803
  const rulersAreVisible = useIsRulerVisible();
20799
20804
  const actualStateLeft = useResponsiveSidebarStatus();
@@ -20899,6 +20904,7 @@ var TopPanel = ({ readOnlyStudio, onMounted, drawRef: drawRef2, bufferStateDelay
20899
20904
  ]
20900
20905
  });
20901
20906
  };
20907
+ var TopPanel = React126.memo(TopPanelInner);
20902
20908
 
20903
20909
  // src/components/SidebarCollapserControls.tsx
20904
20910
  import { jsx as jsx188, jsxs as jsxs88, Fragment as Fragment26 } from "react/jsx-runtime";
@@ -21271,7 +21277,7 @@ var MenuToolbar = ({ readOnlyStudio }) => {
21271
21277
  };
21272
21278
 
21273
21279
  // src/components/Timeline/Timeline.tsx
21274
- import { useContext as useContext75, useMemo as useMemo118 } from "react";
21280
+ import React152, { useContext as useContext75, useMemo as useMemo118 } from "react";
21275
21281
  import { Internals as Internals57 } from "remotion";
21276
21282
 
21277
21283
  // src/helpers/get-sequence-visible-range.ts
@@ -21443,6 +21449,33 @@ var calculateTimeline = ({
21443
21449
  });
21444
21450
  };
21445
21451
 
21452
+ // src/components/ExpandedTracksProvider.tsx
21453
+ import { createContext as createContext21, useCallback as useCallback97, useMemo as useMemo101, useState as useState69 } from "react";
21454
+ import { jsx as jsx191 } from "react/jsx-runtime";
21455
+ var ExpandedTracksContext = createContext21({
21456
+ expandedTracks: {},
21457
+ toggleTrack: () => {
21458
+ throw new Error("ExpandedTracksContext not initialized");
21459
+ }
21460
+ });
21461
+ var ExpandedTracksProvider = ({ children }) => {
21462
+ const [expandedTracks, setExpandedTracks] = useState69({});
21463
+ const toggleTrack = useCallback97((id) => {
21464
+ setExpandedTracks((prev) => ({
21465
+ ...prev,
21466
+ [id]: !prev[id]
21467
+ }));
21468
+ }, []);
21469
+ const value = useMemo101(() => ({
21470
+ expandedTracks,
21471
+ toggleTrack
21472
+ }), [expandedTracks, toggleTrack]);
21473
+ return /* @__PURE__ */ jsx191(ExpandedTracksContext.Provider, {
21474
+ value,
21475
+ children
21476
+ });
21477
+ };
21478
+
21446
21479
  // src/components/Timeline/is-collapsed.ts
21447
21480
  var isTrackHidden = (track) => {
21448
21481
  if (!track.sequence.parent) {
@@ -21482,19 +21515,19 @@ var MaxTimelineTracksReached = () => {
21482
21515
  // src/components/Timeline/TimelineDragHandler.tsx
21483
21516
  import { PlayerInternals as PlayerInternals16 } from "@remotion/player";
21484
21517
  import {
21485
- useCallback as useCallback97,
21518
+ useCallback as useCallback98,
21486
21519
  useContext as useContext65,
21487
21520
  useEffect as useEffect66,
21488
- useMemo as useMemo102,
21489
- useRef as useRef35,
21490
- useState as useState69
21521
+ useMemo as useMemo103,
21522
+ useRef as useRef36,
21523
+ useState as useState70
21491
21524
  } from "react";
21492
21525
  import { Internals as Internals47, useVideoConfig as useVideoConfig4 } from "remotion";
21493
21526
 
21494
21527
  // src/components/Timeline/TimelineInOutPointer.tsx
21495
21528
  import { createRef as createRef11, useContext as useContext63 } from "react";
21496
21529
  import { Internals as Internals46 } from "remotion";
21497
- import { jsx as jsx191, jsxs as jsxs91, Fragment as Fragment27 } from "react/jsx-runtime";
21530
+ import { jsx as jsx192, jsxs as jsxs91, Fragment as Fragment27 } from "react/jsx-runtime";
21498
21531
  var areaHighlight = {
21499
21532
  position: "absolute",
21500
21533
  backgroundColor: "rgba(0, 0, 0, 0.5)",
@@ -21513,7 +21546,7 @@ var TimelineInOutPointer = () => {
21513
21546
  }
21514
21547
  return /* @__PURE__ */ jsxs91(Fragment27, {
21515
21548
  children: [
21516
- inFrame !== null && /* @__PURE__ */ jsx191("div", {
21549
+ inFrame !== null && /* @__PURE__ */ jsx192("div", {
21517
21550
  ref: inMarkerAreaRef,
21518
21551
  style: {
21519
21552
  ...areaHighlight,
@@ -21521,7 +21554,7 @@ var TimelineInOutPointer = () => {
21521
21554
  width: getXPositionOfItemInTimelineImperatively(inFrame, videoConfig.durationInFrames, timelineWidth)
21522
21555
  }
21523
21556
  }),
21524
- outFrame !== null && /* @__PURE__ */ jsx191("div", {
21557
+ outFrame !== null && /* @__PURE__ */ jsx192("div", {
21525
21558
  ref: outMarkerAreaRef,
21526
21559
  style: {
21527
21560
  ...areaHighlight,
@@ -21534,9 +21567,9 @@ var TimelineInOutPointer = () => {
21534
21567
  };
21535
21568
 
21536
21569
  // src/components/Timeline/TimelineInOutPointerHandle.tsx
21537
- import { createRef as createRef12, useContext as useContext64, useMemo as useMemo101 } from "react";
21570
+ import { createRef as createRef12, useContext as useContext64, useMemo as useMemo102 } from "react";
21538
21571
  import { useVideoConfig as useVideoConfig3 } from "remotion";
21539
- import { jsx as jsx192 } from "react/jsx-runtime";
21572
+ import { jsx as jsx193 } from "react/jsx-runtime";
21540
21573
  var line3 = {
21541
21574
  height: "100%",
21542
21575
  width: 1,
@@ -21550,14 +21583,14 @@ var inPointerHandle = createRef12();
21550
21583
  var outPointerHandle = createRef12();
21551
21584
  var InnerTimelineInOutPointerHandle = ({ atFrame, dragging, timelineWidth, type }) => {
21552
21585
  const videoConfig = useVideoConfig3();
21553
- const style10 = useMemo101(() => {
21586
+ const style10 = useMemo102(() => {
21554
21587
  return {
21555
21588
  ...line3,
21556
21589
  backgroundColor: dragging ? LIGHT_TRANSPARENT : "rgba(255, 255, 255, 0.1)",
21557
21590
  transform: `translateX(${getXPositionOfItemInTimelineImperatively(atFrame, videoConfig.durationInFrames, timelineWidth)}px)`
21558
21591
  };
21559
21592
  }, [atFrame, dragging, timelineWidth, videoConfig.durationInFrames]);
21560
- return /* @__PURE__ */ jsx192("div", {
21593
+ return /* @__PURE__ */ jsx193("div", {
21561
21594
  ref: type === "in" ? inPointerHandle : outPointerHandle,
21562
21595
  style: style10
21563
21596
  });
@@ -21571,7 +21604,7 @@ var TimelineInOutPointerHandle = ({
21571
21604
  if (timelineWidth === null) {
21572
21605
  return null;
21573
21606
  }
21574
- return /* @__PURE__ */ jsx192(InnerTimelineInOutPointerHandle, {
21607
+ return /* @__PURE__ */ jsx193(InnerTimelineInOutPointerHandle, {
21575
21608
  atFrame,
21576
21609
  dragging,
21577
21610
  timelineWidth,
@@ -21580,7 +21613,7 @@ var TimelineInOutPointerHandle = ({
21580
21613
  };
21581
21614
 
21582
21615
  // src/components/Timeline/TimelineDragHandler.tsx
21583
- import { jsx as jsx193, jsxs as jsxs92 } from "react/jsx-runtime";
21616
+ import { jsx as jsx194, jsxs as jsxs92 } from "react/jsx-runtime";
21584
21617
  var inner = {
21585
21618
  overflowY: "auto",
21586
21619
  overflowX: "hidden"
@@ -21605,7 +21638,7 @@ var TimelineDragHandler = () => {
21605
21638
  const video = Internals47.useUnsafeVideoConfig();
21606
21639
  const { zoom: zoomMap } = useContext65(TimelineZoomCtx);
21607
21640
  const { canvasContent } = useContext65(Internals47.CompositionManager);
21608
- const containerStyle3 = useMemo102(() => {
21641
+ const containerStyle3 = useMemo103(() => {
21609
21642
  if (!canvasContent || canvasContent.type !== "composition") {
21610
21643
  return {};
21611
21644
  }
@@ -21618,10 +21651,10 @@ var TimelineDragHandler = () => {
21618
21651
  if (!canvasContent || canvasContent.type !== "composition") {
21619
21652
  return null;
21620
21653
  }
21621
- return /* @__PURE__ */ jsx193("div", {
21654
+ return /* @__PURE__ */ jsx194("div", {
21622
21655
  ref: sliderAreaRef,
21623
21656
  style: containerStyle3,
21624
- children: video ? /* @__PURE__ */ jsx193(Inner2, {}) : null
21657
+ children: video ? /* @__PURE__ */ jsx194(Inner2, {}) : null
21625
21658
  });
21626
21659
  };
21627
21660
  var Inner2 = () => {
@@ -21632,11 +21665,11 @@ var Inner2 = () => {
21632
21665
  });
21633
21666
  const { isHighestContext } = useZIndex();
21634
21667
  const setFrame = Internals47.useTimelineSetFrame();
21635
- const [inOutDragging, setInOutDragging] = useState69({
21668
+ const [inOutDragging, setInOutDragging] = useState70({
21636
21669
  dragging: false
21637
21670
  });
21638
21671
  const timelineWidth = useContext65(TimelineWidthContext);
21639
- const get = useCallback97((frame2) => {
21672
+ const get = useCallback98((frame2) => {
21640
21673
  if (timelineWidth === null) {
21641
21674
  throw new Error("timeline width is not yet determined");
21642
21675
  }
@@ -21646,18 +21679,18 @@ var Inner2 = () => {
21646
21679
  const left3 = size4?.left ?? 0;
21647
21680
  const { inFrame, outFrame } = useTimelineInOutFramePosition();
21648
21681
  const { setInAndOutFrames } = useTimelineSetInOutFramePosition();
21649
- const [dragging, setDragging] = useState69({
21682
+ const [dragging, setDragging] = useState70({
21650
21683
  dragging: false
21651
21684
  });
21652
21685
  const { playing, play, pause, seek } = PlayerInternals16.usePlayer();
21653
- const scroller = useRef35(null);
21686
+ const scroller = useRef36(null);
21654
21687
  const stopInterval = () => {
21655
21688
  if (scroller.current) {
21656
21689
  clearInterval(scroller.current);
21657
21690
  scroller.current = null;
21658
21691
  }
21659
21692
  };
21660
- const onPointerDown = useCallback97((e) => {
21693
+ const onPointerDown = useCallback98((e) => {
21661
21694
  if (e.button !== 0) {
21662
21695
  return;
21663
21696
  }
@@ -21723,7 +21756,7 @@ var Inner2 = () => {
21723
21756
  get,
21724
21757
  outFrame
21725
21758
  ]);
21726
- const onPointerMoveScrubbing = useCallback97((e) => {
21759
+ const onPointerMoveScrubbing = useCallback98((e) => {
21727
21760
  if (!videoConfig) {
21728
21761
  return;
21729
21762
  }
@@ -21793,7 +21826,7 @@ var Inner2 = () => {
21793
21826
  seek(frame2);
21794
21827
  }
21795
21828
  }, [videoConfig, dragging.dragging, left3, width, seek]);
21796
- const onPointerMoveInOut = useCallback97((e) => {
21829
+ const onPointerMoveInOut = useCallback98((e) => {
21797
21830
  if (!videoConfig) {
21798
21831
  return;
21799
21832
  }
@@ -21829,7 +21862,7 @@ var Inner2 = () => {
21829
21862
  outMarkerAreaRef.current.style.width = String(width - get(outFrame) - offset) + "px";
21830
21863
  }
21831
21864
  }, [get, inFrame, inOutDragging, outFrame, videoConfig, width]);
21832
- const onPointerUpScrubbing = useCallback97((e) => {
21865
+ const onPointerUpScrubbing = useCallback98((e) => {
21833
21866
  stopInterval();
21834
21867
  document.body.style.userSelect = "";
21835
21868
  document.body.style.webkitUserSelect = "";
@@ -21857,7 +21890,7 @@ var Inner2 = () => {
21857
21890
  play();
21858
21891
  }
21859
21892
  }, [dragging, left3, play, videoConfig, setFrame, width]);
21860
- const onPointerUpInOut = useCallback97((e) => {
21893
+ const onPointerUpInOut = useCallback98((e) => {
21861
21894
  document.body.style.userSelect = "";
21862
21895
  document.body.style.webkitUserSelect = "";
21863
21896
  if (!videoConfig) {
@@ -21943,7 +21976,7 @@ var Inner2 = () => {
21943
21976
  window.removeEventListener("pointerup", onPointerUpInOut);
21944
21977
  };
21945
21978
  }, [inOutDragging.dragging, onPointerMoveInOut, onPointerUpInOut]);
21946
- const inContextMenu = useMemo102(() => {
21979
+ const inContextMenu = useMemo103(() => {
21947
21980
  return [
21948
21981
  {
21949
21982
  id: "hide-in",
@@ -21968,7 +22001,7 @@ var Inner2 = () => {
21968
22001
  }
21969
22002
  ];
21970
22003
  }, [setInAndOutFrames, videoConfig.id]);
21971
- const outContextMenu = useMemo102(() => {
22004
+ const outContextMenu = useMemo103(() => {
21972
22005
  return [
21973
22006
  {
21974
22007
  id: "hide-out",
@@ -21997,21 +22030,21 @@ var Inner2 = () => {
21997
22030
  style: style10,
21998
22031
  onPointerDown,
21999
22032
  children: [
22000
- /* @__PURE__ */ jsx193("div", {
22033
+ /* @__PURE__ */ jsx194("div", {
22001
22034
  style: inner,
22002
22035
  className: VERTICAL_SCROLLBAR_CLASSNAME
22003
22036
  }),
22004
- inFrame !== null && /* @__PURE__ */ jsx193(ContextMenu, {
22037
+ inFrame !== null && /* @__PURE__ */ jsx194(ContextMenu, {
22005
22038
  values: inContextMenu,
22006
- children: /* @__PURE__ */ jsx193(TimelineInOutPointerHandle, {
22039
+ children: /* @__PURE__ */ jsx194(TimelineInOutPointerHandle, {
22007
22040
  type: "in",
22008
22041
  atFrame: inFrame,
22009
22042
  dragging: inOutDragging.dragging === "in"
22010
22043
  })
22011
22044
  }),
22012
- outFrame !== null && /* @__PURE__ */ jsx193(ContextMenu, {
22045
+ outFrame !== null && /* @__PURE__ */ jsx194(ContextMenu, {
22013
22046
  values: outContextMenu,
22014
- children: /* @__PURE__ */ jsx193(TimelineInOutPointerHandle, {
22047
+ children: /* @__PURE__ */ jsx194(TimelineInOutPointerHandle, {
22015
22048
  type: "out",
22016
22049
  dragging: inOutDragging.dragging === "out",
22017
22050
  atFrame: outFrame
@@ -22023,39 +22056,12 @@ var Inner2 = () => {
22023
22056
 
22024
22057
  // src/components/Timeline/TimelineList.tsx
22025
22058
  import { PlayerInternals as PlayerInternals18 } from "@remotion/player";
22026
- import { useRef as useRef39 } from "react";
22059
+ import { useRef as useRef40 } from "react";
22027
22060
 
22028
22061
  // src/components/Timeline/TimelineListItem.tsx
22029
22062
  import { useCallback as useCallback107, useContext as useContext70, useMemo as useMemo111 } from "react";
22030
22063
  import { Internals as Internals51 } from "remotion";
22031
22064
 
22032
- // src/components/ExpandedTracksProvider.tsx
22033
- import { createContext as createContext21, useCallback as useCallback98, useMemo as useMemo103, useState as useState70 } from "react";
22034
- import { jsx as jsx194 } from "react/jsx-runtime";
22035
- var ExpandedTracksContext = createContext21({
22036
- expandedTracks: {},
22037
- toggleTrack: () => {
22038
- throw new Error("ExpandedTracksContext not initialized");
22039
- }
22040
- });
22041
- var ExpandedTracksProvider = ({ children }) => {
22042
- const [expandedTracks, setExpandedTracks] = useState70({});
22043
- const toggleTrack = useCallback98((id) => {
22044
- setExpandedTracks((prev) => ({
22045
- ...prev,
22046
- [id]: !prev[id]
22047
- }));
22048
- }, []);
22049
- const value = useMemo103(() => ({
22050
- expandedTracks,
22051
- toggleTrack
22052
- }), [expandedTracks, toggleTrack]);
22053
- return /* @__PURE__ */ jsx194(ExpandedTracksContext.Provider, {
22054
- value,
22055
- children
22056
- });
22057
- };
22058
-
22059
22065
  // src/components/Timeline/TimelineExpandedSection.tsx
22060
22066
  import React139, { useMemo as useMemo108 } from "react";
22061
22067
 
@@ -22935,7 +22941,7 @@ var useResolvedStack = (stack2) => {
22935
22941
  };
22936
22942
 
22937
22943
  // src/components/Timeline/use-sequence-props-subscription.ts
22938
- import { useCallback as useCallback106, useContext as useContext69, useEffect as useEffect71, useMemo as useMemo110, useRef as useRef36 } from "react";
22944
+ import { useCallback as useCallback106, useContext as useContext69, useEffect as useEffect71, useMemo as useMemo110, useRef as useRef37 } from "react";
22939
22945
  import { Internals as Internals50 } from "remotion";
22940
22946
  var useSequencePropsSubscription = (sequence, originalLocation) => {
22941
22947
  const { setCodeValues } = useContext69(Internals50.VisualModeOverridesContext);
@@ -22963,14 +22969,14 @@ var useSequencePropsSubscription = (sequence, originalLocation) => {
22963
22969
  const locationSource = validatedLocation?.source ?? null;
22964
22970
  const locationLine = validatedLocation?.line ?? null;
22965
22971
  const locationColumn = validatedLocation?.column ?? null;
22966
- const currentLocationSource = useRef36(locationSource);
22972
+ const currentLocationSource = useRef37(locationSource);
22967
22973
  currentLocationSource.current = locationSource;
22968
- const currentLocationLine = useRef36(locationLine);
22974
+ const currentLocationLine = useRef37(locationLine);
22969
22975
  currentLocationLine.current = locationLine;
22970
- const currentLocationColumn = useRef36(locationColumn);
22976
+ const currentLocationColumn = useRef37(locationColumn);
22971
22977
  currentLocationColumn.current = locationColumn;
22972
- const nodePathRef = useRef36(null);
22973
- const isMountedRef = useRef36(true);
22978
+ const nodePathRef = useRef37(null);
22979
+ const isMountedRef = useRef37(true);
22974
22980
  useEffect71(() => {
22975
22981
  isMountedRef.current = true;
22976
22982
  return () => {
@@ -23184,7 +23190,7 @@ var TimelineListItem = ({ nestedDepth, sequence, isCompact }) => {
23184
23190
  };
23185
23191
 
23186
23192
  // src/components/Timeline/TimelineTimeIndicators.tsx
23187
- import { useContext as useContext71, useEffect as useEffect73, useMemo as useMemo112, useRef as useRef38 } from "react";
23193
+ import { useContext as useContext71, useEffect as useEffect73, useMemo as useMemo112, useRef as useRef39 } from "react";
23188
23194
  import { Internals as Internals53 } from "remotion";
23189
23195
 
23190
23196
  // src/components/TimeValue.tsx
@@ -23193,7 +23199,7 @@ import {
23193
23199
  useCallback as useCallback108,
23194
23200
  useEffect as useEffect72,
23195
23201
  useImperativeHandle as useImperativeHandle14,
23196
- useRef as useRef37
23202
+ useRef as useRef38
23197
23203
  } from "react";
23198
23204
  import { Internals as Internals52, useCurrentFrame } from "remotion";
23199
23205
  import { jsx as jsx205, jsxs as jsxs98 } from "react/jsx-runtime";
@@ -23226,7 +23232,7 @@ var TimeValue = () => {
23226
23232
  const isStill = useIsStill();
23227
23233
  const { seek, play, pause, toggle } = PlayerInternals17.usePlayer();
23228
23234
  const keybindings = useKeybinding();
23229
- const ref = useRef37(null);
23235
+ const ref = useRef38(null);
23230
23236
  const onTextChange = useCallback108((newVal) => {
23231
23237
  seek(parseInt(newVal, 10));
23232
23238
  }, [seek]);
@@ -23354,7 +23360,7 @@ var TimelineTimeIndicators = () => {
23354
23360
  });
23355
23361
  };
23356
23362
  var Inner3 = ({ windowWidth, durationInFrames, fps }) => {
23357
- const ref = useRef38(null);
23363
+ const ref = useRef39(null);
23358
23364
  useEffect73(() => {
23359
23365
  const currentRef = ref.current;
23360
23366
  if (!currentRef) {
@@ -23437,7 +23443,7 @@ var container43 = {
23437
23443
  background: BACKGROUND
23438
23444
  };
23439
23445
  var TimelineList = ({ timeline }) => {
23440
- const ref = useRef39(null);
23446
+ const ref = useRef40(null);
23441
23447
  const size4 = PlayerInternals18.useElementSize(ref, {
23442
23448
  shouldApplyCssTransforms: false,
23443
23449
  triggerOnWindowResize: false
@@ -23678,7 +23684,7 @@ var useMaxMediaDuration = (s, fps) => {
23678
23684
 
23679
23685
  // src/components/AudioWaveform.tsx
23680
23686
  import { getAudioData, getWaveformPortion } from "@remotion/media-utils";
23681
- import { useEffect as useEffect76, useMemo as useMemo115, useRef as useRef40, useState as useState77 } from "react";
23687
+ import { useEffect as useEffect76, useMemo as useMemo115, useRef as useRef41, useState as useState77 } from "react";
23682
23688
  import { Internals as Internals55 } from "remotion";
23683
23689
 
23684
23690
  // src/components/AudioWaveformBar.tsx
@@ -23737,12 +23743,12 @@ var AudioWaveform = ({
23737
23743
  }) => {
23738
23744
  const [metadata, setMetadata] = useState77(null);
23739
23745
  const [error, setError] = useState77(null);
23740
- const mountState = useRef40({ isMounted: true });
23746
+ const mountState = useRef41({ isMounted: true });
23741
23747
  const vidConf = Internals55.useUnsafeVideoConfig();
23742
23748
  if (vidConf === null) {
23743
23749
  throw new Error("Expected video config");
23744
23750
  }
23745
- const canvas = useRef40(null);
23751
+ const canvas = useRef41(null);
23746
23752
  useEffect76(() => {
23747
23753
  const { current } = mountState;
23748
23754
  current.isMounted = true;
@@ -23953,7 +23959,7 @@ var TimelineSequenceFrame = ({ roundedFrame, premounted, postmounted }) => {
23953
23959
  };
23954
23960
 
23955
23961
  // src/components/Timeline/TimelineVideoInfo.tsx
23956
- import { useEffect as useEffect77, useRef as useRef41, useState as useState78 } from "react";
23962
+ import { useEffect as useEffect77, useRef as useRef42, useState as useState78 } from "react";
23957
23963
  import { useVideoConfig as useVideoConfig5 } from "remotion";
23958
23964
 
23959
23965
  // src/helpers/extract-frames.ts
@@ -24289,9 +24295,9 @@ var TimelineVideoInfo = ({
24289
24295
  playbackRate
24290
24296
  }) => {
24291
24297
  const { fps } = useVideoConfig5();
24292
- const ref = useRef41(null);
24298
+ const ref = useRef42(null);
24293
24299
  const [error, setError] = useState78(null);
24294
- const aspectRatio = useRef41(getAspectRatioFromCache(src));
24300
+ const aspectRatio = useRef42(getAspectRatioFromCache(src));
24295
24301
  useEffect77(() => {
24296
24302
  return () => {
24297
24303
  clearFramesForSrc(src);
@@ -24644,8 +24650,11 @@ var container46 = {
24644
24650
  var noop3 = () => {
24645
24651
  return;
24646
24652
  };
24647
- var Timeline = () => {
24653
+ var TimelineInner = () => {
24648
24654
  const { sequences } = useContext75(Internals57.SequenceManager);
24655
+ const { expandedTracks } = useContext75(ExpandedTracksContext);
24656
+ const { previewServerState } = useContext75(StudioServerConnectionCtx);
24657
+ const visualModeEnabled = Boolean(process.env.EXPERIMENTAL_VISUAL_MODE_ENABLED) && previewServerState.type === "connected";
24649
24658
  const videoConfig = Internals57.useUnsafeVideoConfig();
24650
24659
  const timeline = useMemo118(() => {
24651
24660
  if (!videoConfig) {
@@ -24669,14 +24678,15 @@ var Timeline = () => {
24669
24678
  const inner2 = useMemo118(() => {
24670
24679
  return {
24671
24680
  height: shown.reduce((acc, track) => {
24672
- return acc + getTimelineLayerHeight(track.sequence.type === "video" ? "video" : "other") + Number(TIMELINE_ITEM_BORDER_BOTTOM);
24681
+ const isExpanded = visualModeEnabled && (expandedTracks[track.sequence.id] ?? false);
24682
+ return acc + getTimelineLayerHeight(track.sequence.type === "video" ? "video" : "other") + Number(TIMELINE_ITEM_BORDER_BOTTOM) + (isExpanded ? getExpandedTrackHeight(track.sequence.controls) + TIMELINE_ITEM_BORDER_BOTTOM : 0);
24673
24683
  }, 0) + TIMELINE_ITEM_BORDER_BOTTOM + (hasBeenCut ? MAX_TIMELINE_TRACKS_NOTICE_HEIGHT : 0) + TIMELINE_TIME_INDICATOR_HEIGHT,
24674
24684
  display: "flex",
24675
24685
  flex: 1,
24676
24686
  minHeight: "100%",
24677
24687
  overflowX: "hidden"
24678
24688
  };
24679
- }, [hasBeenCut, shown]);
24689
+ }, [hasBeenCut, shown, expandedTracks, visualModeEnabled]);
24680
24690
  return /* @__PURE__ */ jsx217("div", {
24681
24691
  ref: timelineVerticalScroll,
24682
24692
  style: container46,
@@ -24725,6 +24735,7 @@ var Timeline = () => {
24725
24735
  })
24726
24736
  });
24727
24737
  };
24738
+ var Timeline = React152.memo(TimelineInner);
24728
24739
 
24729
24740
  // src/components/Timeline/TimelineEmptyState.tsx
24730
24741
  import { jsx as jsx218 } from "react/jsx-runtime";
@@ -26239,7 +26250,7 @@ import {
26239
26250
  useContext as useContext86,
26240
26251
  useEffect as useEffect83,
26241
26252
  useMemo as useMemo126,
26242
- useRef as useRef43,
26253
+ useRef as useRef44,
26243
26254
  useState as useState84
26244
26255
  } from "react";
26245
26256
  import { Internals as Internals64 } from "remotion";
@@ -27112,7 +27123,7 @@ var QuickSwitcherNoResults = ({ query, mode }) => {
27112
27123
  };
27113
27124
 
27114
27125
  // src/components/QuickSwitcher/QuickSwitcherResult.tsx
27115
- import { useEffect as useEffect82, useMemo as useMemo125, useRef as useRef42, useState as useState83 } from "react";
27126
+ import { useEffect as useEffect82, useMemo as useMemo125, useRef as useRef43, useState as useState83 } from "react";
27116
27127
  import { jsx as jsx236, jsxs as jsxs119, Fragment as Fragment35 } from "react/jsx-runtime";
27117
27128
  var container52 = {
27118
27129
  paddingLeft: 16,
@@ -27142,7 +27153,7 @@ var labelContainer = {
27142
27153
  };
27143
27154
  var QuickSwitcherResult = ({ result, selected }) => {
27144
27155
  const [hovered, setIsHovered] = useState83(false);
27145
- const ref = useRef42(null);
27156
+ const ref = useRef43(null);
27146
27157
  const keybindings = useKeybinding();
27147
27158
  useEffect82(() => {
27148
27159
  const { current } = ref;
@@ -27320,7 +27331,7 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
27320
27331
  selectedIndex: 0
27321
27332
  });
27322
27333
  }, [initialMode, invocationTimestamp]);
27323
- const inputRef = useRef43(null);
27334
+ const inputRef = useRef44(null);
27324
27335
  const selectComposition = useSelectComposition();
27325
27336
  const closeMenu = useCallback117(() => {
27326
27337
  return;
@@ -28096,7 +28107,7 @@ import {
28096
28107
  useEffect as useEffect86,
28097
28108
  useMemo as useMemo137,
28098
28109
  useReducer as useReducer2,
28099
- useRef as useRef45,
28110
+ useRef as useRef46,
28100
28111
  useState as useState90
28101
28112
  } from "react";
28102
28113
 
@@ -30085,12 +30096,12 @@ import { BrowserSafeApis as BrowserSafeApis7 } from "@remotion/renderer/client";
30085
30096
  import { useCallback as useCallback129, useMemo as useMemo132 } from "react";
30086
30097
 
30087
30098
  // src/helpers/use-file-existence.ts
30088
- import { useContext as useContext88, useEffect as useEffect85, useRef as useRef44, useState as useState89 } from "react";
30099
+ import { useContext as useContext88, useEffect as useEffect85, useRef as useRef45, useState as useState89 } from "react";
30089
30100
  var useFileExistence = (outName) => {
30090
30101
  const [exists, setExists] = useState89(false);
30091
30102
  const { previewServerState: state, subscribeToEvent } = useContext88(StudioServerConnectionCtx);
30092
30103
  const clientId = state.type === "connected" ? state.clientId : undefined;
30093
- const currentOutName = useRef44("");
30104
+ const currentOutName = useRef45("");
30094
30105
  currentOutName.current = outName;
30095
30106
  useEffect85(() => {
30096
30107
  if (!clientId) {
@@ -31480,7 +31491,7 @@ var RenderModal = ({
31480
31491
  resolved: { result: resolvedComposition },
31481
31492
  unresolved: unresolvedComposition
31482
31493
  } = context;
31483
- const isMounted = useRef45(true);
31494
+ const isMounted = useRef46(true);
31484
31495
  const [isVideo] = useState90(() => {
31485
31496
  return typeof resolvedComposition.durationInFrames === "undefined" ? true : resolvedComposition.durationInFrames > 1;
31486
31497
  });
@@ -32623,9 +32634,9 @@ import {
32623
32634
  getEncodableAudioCodecs,
32624
32635
  getSupportedAudioCodecsForContainer
32625
32636
  } from "@remotion/web-renderer";
32626
- import { useEffect as useEffect87, useRef as useRef46, useState as useState91 } from "react";
32637
+ import { useEffect as useEffect87, useRef as useRef47, useState as useState91 } from "react";
32627
32638
  var useEncodableAudioCodecs = (container63) => {
32628
- const cacheRef = useRef46({});
32639
+ const cacheRef = useRef47({});
32629
32640
  const [codecsByContainer, setCodecsByContainer] = useState91(() => {
32630
32641
  return {
32631
32642
  [container63]: getSupportedAudioCodecsForContainer(container63)
@@ -32665,9 +32676,9 @@ import {
32665
32676
  getEncodableVideoCodecs,
32666
32677
  getSupportedVideoCodecsForContainer
32667
32678
  } from "@remotion/web-renderer";
32668
- import { useEffect as useEffect88, useRef as useRef47, useState as useState92 } from "react";
32679
+ import { useEffect as useEffect88, useRef as useRef48, useState as useState92 } from "react";
32669
32680
  var useEncodableVideoCodecs = (container63) => {
32670
- const cacheRef = useRef47({});
32681
+ const cacheRef = useRef48({});
32671
32682
  const [codecsByContainer, setCodecsByContainer] = useState92(() => {
32672
32683
  return {
32673
32684
  [container63]: getSupportedVideoCodecsForContainer(container63)
@@ -35048,15 +35059,15 @@ var SetTimelineInOutProvider = ({ children }) => {
35048
35059
  };
35049
35060
 
35050
35061
  // src/components/ShowGuidesProvider.tsx
35051
- import { useCallback as useCallback148, useMemo as useMemo151, useRef as useRef48, useState as useState102 } from "react";
35062
+ import { useCallback as useCallback148, useMemo as useMemo151, useRef as useRef49, useState as useState102 } from "react";
35052
35063
  import { jsx as jsx295 } from "react/jsx-runtime";
35053
35064
  var ShowGuidesProvider = ({ children }) => {
35054
35065
  const [guidesList, setGuidesList] = useState102(() => loadGuidesList());
35055
35066
  const [selectedGuideId, setSelectedGuideId] = useState102(null);
35056
35067
  const [hoveredGuideId, setHoveredGuideId] = useState102(null);
35057
35068
  const [editorShowGuides, setEditorShowGuidesState] = useState102(() => loadEditorShowGuidesOption());
35058
- const shouldCreateGuideRef = useRef48(false);
35059
- const shouldDeleteGuideRef = useRef48(false);
35069
+ const shouldCreateGuideRef = useRef49(false);
35070
+ const shouldDeleteGuideRef = useRef49(false);
35060
35071
  const setEditorShowGuides = useCallback148((newValue) => {
35061
35072
  setEditorShowGuidesState((prevState) => {
35062
35073
  const newVal = newValue(prevState);