@remotion/promo-pages 4.0.467 → 4.0.469

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/dist/Homepage.js +626 -458
  2. package/dist/cn.d.ts +2 -0
  3. package/dist/cn.js +5 -0
  4. package/dist/components/3DEngine/ButtonDemo.d.ts +2 -0
  5. package/dist/components/3DEngine/ButtonDemo.js +43 -0
  6. package/dist/components/3DEngine/Faces.d.ts +5 -0
  7. package/dist/components/3DEngine/Faces.js +7 -0
  8. package/dist/components/3DEngine/Outer.d.ts +8 -0
  9. package/dist/components/3DEngine/Outer.js +56 -0
  10. package/dist/components/3DEngine/Switch.d.ts +4 -0
  11. package/dist/components/3DEngine/Switch.js +4 -0
  12. package/dist/components/3DEngine/get-child-node-from.d.ts +1 -0
  13. package/dist/components/3DEngine/get-child-node-from.js +14 -0
  14. package/dist/components/3DEngine/hover-transforms.d.ts +9 -0
  15. package/dist/components/3DEngine/hover-transforms.js +177 -0
  16. package/dist/components/BackButton.d.ts +6 -0
  17. package/dist/components/BackButton.js +9 -0
  18. package/dist/components/CommandCopyButton.d.ts +5 -0
  19. package/dist/components/CommandCopyButton.js +4 -0
  20. package/dist/components/Homepage.d.ts +6 -0
  21. package/dist/components/Homepage.js +20 -0
  22. package/dist/components/ManageTeamMembers.d.ts +2 -0
  23. package/dist/components/ManageTeamMembers.js +42 -0
  24. package/dist/components/Spinner.d.ts +3 -0
  25. package/dist/components/Spinner.js +4 -0
  26. package/dist/components/TeamPicture.d.ts +1 -0
  27. package/dist/components/TeamPicture.js +4 -0
  28. package/dist/components/design.d.ts +1 -0
  29. package/dist/components/design.js +33 -0
  30. package/dist/components/experts/ExpertsPage.d.ts +11 -0
  31. package/dist/components/experts/ExpertsPage.js +50 -0
  32. package/dist/components/experts/experts-data.d.ts +19 -0
  33. package/dist/components/experts/experts-data.js +391 -0
  34. package/dist/components/experts/experts-icons.d.ts +8 -0
  35. package/dist/components/experts/experts-icons.js +42 -0
  36. package/dist/components/experts.d.ts +3 -0
  37. package/dist/components/experts.js +2 -0
  38. package/dist/components/homepage/BackgroundAnimation.d.ts +2 -0
  39. package/dist/components/homepage/BackgroundAnimation.js +66 -0
  40. package/dist/components/homepage/ChooseTemplate.d.ts +2 -0
  41. package/dist/components/homepage/ChooseTemplate.js +25 -0
  42. package/dist/components/homepage/CommunityStats.d.ts +3 -0
  43. package/dist/components/homepage/CommunityStats.js +6 -0
  44. package/dist/components/homepage/CommunityStatsItems.d.ts +7 -0
  45. package/dist/components/homepage/CommunityStatsItems.js +58 -0
  46. package/dist/components/homepage/Demo/Card.d.ts +15 -0
  47. package/dist/components/homepage/Demo/Card.js +174 -0
  48. package/dist/components/homepage/Demo/Cards.d.ts +15 -0
  49. package/dist/components/homepage/Demo/Cards.js +57 -0
  50. package/dist/components/homepage/Demo/Comp.d.ts +38 -0
  51. package/dist/components/homepage/Demo/Comp.js +72 -0
  52. package/dist/components/homepage/Demo/CurrentCountry.d.ts +9 -0
  53. package/dist/components/homepage/Demo/CurrentCountry.js +48 -0
  54. package/dist/components/homepage/Demo/DemoError.d.ts +2 -0
  55. package/dist/components/homepage/Demo/DemoError.js +10 -0
  56. package/dist/components/homepage/Demo/DemoErrorIcon.d.ts +2 -0
  57. package/dist/components/homepage/Demo/DemoErrorIcon.js +16 -0
  58. package/dist/components/homepage/Demo/DemoRender.d.ts +33 -0
  59. package/dist/components/homepage/Demo/DemoRender.js +107 -0
  60. package/dist/components/homepage/Demo/DigitWheel.d.ts +9 -0
  61. package/dist/components/homepage/Demo/DigitWheel.js +94 -0
  62. package/dist/components/homepage/Demo/DisplayedEmoji.d.ts +5 -0
  63. package/dist/components/homepage/Demo/DisplayedEmoji.js +59 -0
  64. package/dist/components/homepage/Demo/DoneCheckmark.d.ts +2 -0
  65. package/dist/components/homepage/Demo/DoneCheckmark.js +20 -0
  66. package/dist/components/homepage/Demo/DownloadNudge.d.ts +2 -0
  67. package/dist/components/homepage/Demo/DownloadNudge.js +27 -0
  68. package/dist/components/homepage/Demo/DragAndDropNudge.d.ts +3 -0
  69. package/dist/components/homepage/Demo/DragAndDropNudge.js +26 -0
  70. package/dist/components/homepage/Demo/EmojiCard.d.ts +10 -0
  71. package/dist/components/homepage/Demo/EmojiCard.js +120 -0
  72. package/dist/components/homepage/Demo/Minus.d.ts +5 -0
  73. package/dist/components/homepage/Demo/Minus.js +11 -0
  74. package/dist/components/homepage/Demo/PlayPauseButton.d.ts +5 -0
  75. package/dist/components/homepage/Demo/PlayPauseButton.js +47 -0
  76. package/dist/components/homepage/Demo/PlayerControls.d.ts +8 -0
  77. package/dist/components/homepage/Demo/PlayerControls.js +15 -0
  78. package/dist/components/homepage/Demo/PlayerSeekBar.d.ts +11 -0
  79. package/dist/components/homepage/Demo/PlayerSeekBar.js +216 -0
  80. package/dist/components/homepage/Demo/PlayerVolume.d.ts +5 -0
  81. package/dist/components/homepage/Demo/PlayerVolume.js +53 -0
  82. package/dist/components/homepage/Demo/Progress.d.ts +4 -0
  83. package/dist/components/homepage/Demo/Progress.js +14 -0
  84. package/dist/components/homepage/Demo/Spinner.d.ts +5 -0
  85. package/dist/components/homepage/Demo/Spinner.js +37 -0
  86. package/dist/components/homepage/Demo/Switcher.d.ts +6 -0
  87. package/dist/components/homepage/Demo/Switcher.js +25 -0
  88. package/dist/components/homepage/Demo/Temperature.d.ts +6 -0
  89. package/dist/components/homepage/Demo/Temperature.js +21 -0
  90. package/dist/components/homepage/Demo/TemperatureNumber.d.ts +5 -0
  91. package/dist/components/homepage/Demo/TemperatureNumber.js +36 -0
  92. package/dist/components/homepage/Demo/ThemeNudge.d.ts +3 -0
  93. package/dist/components/homepage/Demo/ThemeNudge.js +35 -0
  94. package/dist/components/homepage/Demo/TimeDisplay.d.ts +6 -0
  95. package/dist/components/homepage/Demo/TimeDisplay.js +27 -0
  96. package/dist/components/homepage/Demo/TrendingRepos.d.ts +6 -0
  97. package/dist/components/homepage/Demo/TrendingRepos.js +65 -0
  98. package/dist/components/homepage/Demo/icons.d.ts +10 -0
  99. package/dist/components/homepage/Demo/icons.js +22 -0
  100. package/dist/components/homepage/Demo/index.d.ts +2 -0
  101. package/dist/components/homepage/Demo/index.js +95 -0
  102. package/dist/components/homepage/Demo/math.d.ts +10 -0
  103. package/dist/components/homepage/Demo/math.js +29 -0
  104. package/dist/components/homepage/Demo/types.d.ts +6 -0
  105. package/dist/components/homepage/Demo/types.js +0 -0
  106. package/dist/components/homepage/EditorStarterSection.d.ts +3 -0
  107. package/dist/components/homepage/EditorStarterSection.js +8 -0
  108. package/dist/components/homepage/EvaluateRemotion.d.ts +3 -0
  109. package/dist/components/homepage/EvaluateRemotion.js +21 -0
  110. package/dist/components/homepage/FreePricing.d.ts +4 -0
  111. package/dist/components/homepage/FreePricing.js +133 -0
  112. package/dist/components/homepage/GetStartedStrip.d.ts +2 -0
  113. package/dist/components/homepage/GetStartedStrip.js +14 -0
  114. package/dist/components/homepage/GitHubButton.d.ts +2 -0
  115. package/dist/components/homepage/GitHubButton.js +7 -0
  116. package/dist/components/homepage/IconForTemplate.d.ts +6 -0
  117. package/dist/components/homepage/IconForTemplate.js +105 -0
  118. package/dist/components/homepage/IfYouKnowReact.d.ts +3 -0
  119. package/dist/components/homepage/IfYouKnowReact.js +23 -0
  120. package/dist/components/homepage/MoreTemplatesButton.d.ts +2 -0
  121. package/dist/components/homepage/MoreTemplatesButton.js +11 -0
  122. package/dist/components/homepage/MuxVideo.d.ts +7 -0
  123. package/dist/components/homepage/MuxVideo.js +45 -0
  124. package/dist/components/homepage/NewsletterButton.d.ts +2 -0
  125. package/dist/components/homepage/NewsletterButton.js +38 -0
  126. package/dist/components/homepage/ParameterizeAndEdit.d.ts +2 -0
  127. package/dist/components/homepage/ParameterizeAndEdit.js +22 -0
  128. package/dist/components/homepage/Pricing.d.ts +2 -0
  129. package/dist/components/homepage/Pricing.js +15 -0
  130. package/dist/components/homepage/PricingBulletPoint.d.ts +6 -0
  131. package/dist/components/homepage/PricingBulletPoint.js +19 -0
  132. package/dist/components/homepage/RealMp4Videos.d.ts +2 -0
  133. package/dist/components/homepage/RealMp4Videos.js +41 -0
  134. package/dist/components/homepage/Spacer.d.ts +2 -0
  135. package/dist/components/homepage/Spacer.js +4 -0
  136. package/dist/components/homepage/TemplateIcon.d.ts +5 -0
  137. package/dist/components/homepage/TemplateIcon.js +24 -0
  138. package/dist/components/homepage/TextInput.d.ts +7 -0
  139. package/dist/components/homepage/TextInput.js +34 -0
  140. package/dist/components/homepage/TrustedByBanner.d.ts +2 -0
  141. package/dist/components/homepage/TrustedByBanner.js +27 -0
  142. package/dist/components/homepage/VideoApps.d.ts +4 -0
  143. package/dist/components/homepage/VideoApps.js +72 -0
  144. package/dist/components/homepage/VideoAppsShowcase.d.ts +3 -0
  145. package/dist/components/homepage/VideoAppsShowcase.js +139 -0
  146. package/dist/components/homepage/VideoAppsTitle.d.ts +4 -0
  147. package/dist/components/homepage/VideoAppsTitle.js +4 -0
  148. package/dist/components/homepage/VideoPlayerWithControls.d.ts +20 -0
  149. package/dist/components/homepage/VideoPlayerWithControls.js +105 -0
  150. package/dist/components/homepage/WriteInReact.d.ts +2 -0
  151. package/dist/components/homepage/WriteInReact.js +10 -0
  152. package/dist/components/homepage/YouAreHere.d.ts +2 -0
  153. package/dist/components/homepage/YouAreHere.js +23 -0
  154. package/dist/components/homepage/layout/Button.d.ts +22 -0
  155. package/dist/components/homepage/layout/Button.js +30 -0
  156. package/dist/components/homepage/layout/colors.d.ts +13 -0
  157. package/dist/components/homepage/layout/colors.js +14 -0
  158. package/dist/components/homepage/layout/use-color-mode.d.ts +21 -0
  159. package/dist/components/homepage/layout/use-color-mode.js +22 -0
  160. package/dist/components/homepage/layout/use-el-size.d.ts +5 -0
  161. package/dist/components/homepage/layout/use-el-size.js +40 -0
  162. package/dist/components/homepage/layout/use-mobile-layout.d.ts +1 -0
  163. package/dist/components/homepage/layout/use-mobile-layout.js +6 -0
  164. package/dist/components/icons/blank.d.ts +3 -0
  165. package/dist/components/icons/blank.js +4 -0
  166. package/dist/components/icons/brain.d.ts +2 -0
  167. package/dist/components/icons/brain.js +4 -0
  168. package/dist/components/icons/clone.d.ts +2 -0
  169. package/dist/components/icons/clone.js +2 -0
  170. package/dist/components/icons/code-hike.d.ts +3 -0
  171. package/dist/components/icons/code-hike.js +4 -0
  172. package/dist/components/icons/cubes.d.ts +3 -0
  173. package/dist/components/icons/cubes.js +4 -0
  174. package/dist/components/icons/editor.d.ts +3 -0
  175. package/dist/components/icons/editor.js +4 -0
  176. package/dist/components/icons/electron.d.ts +4 -0
  177. package/dist/components/icons/electron.js +4 -0
  178. package/dist/components/icons/js.d.ts +3 -0
  179. package/dist/components/icons/js.js +4 -0
  180. package/dist/components/icons/music.d.ts +2 -0
  181. package/dist/components/icons/music.js +4 -0
  182. package/dist/components/icons/next.d.ts +4 -0
  183. package/dist/components/icons/next.js +4 -0
  184. package/dist/components/icons/overlay.d.ts +3 -0
  185. package/dist/components/icons/overlay.js +4 -0
  186. package/dist/components/icons/prompt-to-video.d.ts +2 -0
  187. package/dist/components/icons/prompt-to-video.js +4 -0
  188. package/dist/components/icons/recorder.d.ts +3 -0
  189. package/dist/components/icons/recorder.js +4 -0
  190. package/dist/components/icons/remix.d.ts +3 -0
  191. package/dist/components/icons/remix.js +4 -0
  192. package/dist/components/icons/render-server.d.ts +3 -0
  193. package/dist/components/icons/render-server.js +4 -0
  194. package/dist/components/icons/skia.d.ts +3 -0
  195. package/dist/components/icons/skia.js +4 -0
  196. package/dist/components/icons/stargazer.d.ts +3 -0
  197. package/dist/components/icons/stargazer.js +4 -0
  198. package/dist/components/icons/still.d.ts +3 -0
  199. package/dist/components/icons/still.js +4 -0
  200. package/dist/components/icons/tailwind.d.ts +3 -0
  201. package/dist/components/icons/tailwind.js +4 -0
  202. package/dist/components/icons/tiktok.d.ts +3 -0
  203. package/dist/components/icons/tiktok.js +4 -0
  204. package/dist/components/icons/timeline.d.ts +3 -0
  205. package/dist/components/icons/timeline.js +4 -0
  206. package/dist/components/icons/ts.d.ts +3 -0
  207. package/dist/components/icons/ts.js +4 -0
  208. package/dist/components/icons/undo.d.ts +3 -0
  209. package/dist/components/icons/undo.js +2 -0
  210. package/dist/components/icons/vercel.d.ts +4 -0
  211. package/dist/components/icons/vercel.js +4 -0
  212. package/dist/components/icons/waveform.d.ts +3 -0
  213. package/dist/components/icons/waveform.js +4 -0
  214. package/dist/components/prompts/CardLikeButton.d.ts +5 -0
  215. package/dist/components/prompts/CardLikeButton.js +49 -0
  216. package/dist/components/prompts/ClipboardIcon.d.ts +5 -0
  217. package/dist/components/prompts/ClipboardIcon.js +4 -0
  218. package/dist/components/prompts/CopyPromptButton.d.ts +4 -0
  219. package/dist/components/prompts/CopyPromptButton.js +13 -0
  220. package/dist/components/prompts/LikeButton.d.ts +5 -0
  221. package/dist/components/prompts/LikeButton.js +49 -0
  222. package/dist/components/prompts/MuxPlayer.d.ts +8 -0
  223. package/dist/components/prompts/MuxPlayer.js +21 -0
  224. package/dist/components/prompts/NewBackButton.d.ts +5 -0
  225. package/dist/components/prompts/NewBackButton.js +8 -0
  226. package/dist/components/prompts/Page.d.ts +8 -0
  227. package/dist/components/prompts/Page.js +7 -0
  228. package/dist/components/prompts/PromptsGallery.d.ts +7 -0
  229. package/dist/components/prompts/PromptsGallery.js +60 -0
  230. package/dist/components/prompts/PromptsShow.d.ts +5 -0
  231. package/dist/components/prompts/PromptsShow.js +17 -0
  232. package/dist/components/prompts/PromptsSubmit.d.ts +2 -0
  233. package/dist/components/prompts/PromptsSubmit.js +173 -0
  234. package/dist/components/prompts/config.d.ts +1 -0
  235. package/dist/components/prompts/config.js +1 -0
  236. package/dist/components/prompts/prompt-helpers.d.ts +8 -0
  237. package/dist/components/prompts/prompt-helpers.js +76 -0
  238. package/dist/components/prompts/prompt-types.d.ts +14 -0
  239. package/dist/components/prompts/prompt-types.js +0 -0
  240. package/dist/components/prompts/use-heart-animation.d.ts +5 -0
  241. package/dist/components/prompts/use-heart-animation.js +29 -0
  242. package/dist/components/team/TeamCards.d.ts +6 -0
  243. package/dist/components/team/TeamCards.js +19 -0
  244. package/dist/components/team/TitleTeamCards.d.ts +2 -0
  245. package/dist/components/team/TitleTeamCards.js +6 -0
  246. package/dist/components/team/TrustSection.d.ts +2 -0
  247. package/dist/components/team/TrustSection.js +59 -0
  248. package/dist/components/team.d.ts +3 -0
  249. package/dist/components/team.js +15 -0
  250. package/dist/components/template-modal-content.d.ts +5 -0
  251. package/dist/components/template-modal-content.js +73 -0
  252. package/dist/components/templates.d.ts +2 -0
  253. package/dist/components/templates.js +27 -0
  254. package/dist/design.js +552 -387
  255. package/dist/experts/experts-data.js +16 -5
  256. package/dist/experts.js +473 -308
  257. package/dist/helpers/mobile-layout.d.ts +1 -0
  258. package/dist/helpers/mobile-layout.js +6 -0
  259. package/dist/helpers/use-el-size.d.ts +5 -0
  260. package/dist/helpers/use-el-size.js +40 -0
  261. package/dist/homepage/Pricing.js +552 -387
  262. package/dist/main.d.ts +1 -0
  263. package/dist/main.js +6 -0
  264. package/dist/prompts/PromptsGallery.js +556 -391
  265. package/dist/prompts/PromptsShow.css +2578 -0
  266. package/dist/prompts/PromptsShow.js +554 -389
  267. package/dist/prompts/PromptsSubmit.js +555 -390
  268. package/dist/prompts-show.d.ts +1 -0
  269. package/dist/prompts-show.js +20 -0
  270. package/dist/prompts-submit.d.ts +1 -0
  271. package/dist/prompts-submit.js +6 -0
  272. package/dist/prompts.d.ts +1 -0
  273. package/dist/prompts.js +6 -0
  274. package/dist/team.d.ts +1 -0
  275. package/dist/team.js +552 -387
  276. package/dist/template-modal-content.css +35 -0
  277. package/dist/template-modal-content.js +559 -394
  278. package/dist/templates.js +552 -387
  279. package/package.json +13 -13
package/dist/Homepage.js CHANGED
@@ -1,15 +1,26 @@
1
+ var __create = Object.create;
2
+ var __getProtoOf = Object.getPrototypeOf;
1
3
  var __defProp = Object.defineProperty;
2
- var __returnValue = (v) => v;
3
- function __exportSetter(name, newValue) {
4
- this[name] = __returnValue.bind(null, newValue);
5
- }
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __toESM = (mod, isNodeMode, target) => {
7
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
8
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
9
+ for (let key of __getOwnPropNames(mod))
10
+ if (!__hasOwnProp.call(to, key))
11
+ __defProp(to, key, {
12
+ get: () => mod[key],
13
+ enumerable: true
14
+ });
15
+ return to;
16
+ };
6
17
  var __export = (target, all) => {
7
18
  for (var name in all)
8
19
  __defProp(target, name, {
9
20
  get: all[name],
10
21
  enumerable: true,
11
22
  configurable: true,
12
- set: __exportSetter.bind(all, name)
23
+ set: (newValue) => all[name] = () => newValue
13
24
  });
14
25
  };
15
26
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
@@ -935,9 +946,9 @@ import {
935
946
  useContext as useContext17,
936
947
  useEffect as useEffect3,
937
948
  useMemo as useMemo14,
949
+ useRef as useRef6,
938
950
  useState as useState5
939
951
  } from "react";
940
- import { useRef as useRef6 } from "react";
941
952
  import { useContext as useContext14, useMemo as useMemo11 } from "react";
942
953
  import { createContext as createContext12 } from "react";
943
954
  import { useContext as useContext10, useMemo as useMemo9 } from "react";
@@ -976,7 +987,9 @@ import {
976
987
  forwardRef as forwardRef5,
977
988
  useCallback as useCallback7,
978
989
  useEffect as useEffect6,
990
+ useImperativeHandle as useImperativeHandle3,
979
991
  useMemo as useMemo17,
992
+ useRef as useRef10,
980
993
  useState as useState7
981
994
  } from "react";
982
995
  import { jsx as jsx14 } from "react/jsx-runtime";
@@ -987,17 +1000,17 @@ import {
987
1000
  useContext as useContext18,
988
1001
  useLayoutEffect as useLayoutEffect3,
989
1002
  useMemo as useMemo18,
990
- useRef as useRef10
1003
+ useRef as useRef11
991
1004
  } from "react";
992
1005
  import { jsx as jsx15 } from "react/jsx-runtime";
993
1006
  import { useContext as useContext19, useLayoutEffect as useLayoutEffect5, useState as useState9 } from "react";
994
1007
  import {
995
1008
  createContext as createContext17,
996
1009
  useCallback as useCallback9,
997
- useImperativeHandle as useImperativeHandle3,
1010
+ useImperativeHandle as useImperativeHandle4,
998
1011
  useLayoutEffect as useLayoutEffect4,
999
1012
  useMemo as useMemo19,
1000
- useRef as useRef11,
1013
+ useRef as useRef12,
1001
1014
  useState as useState8
1002
1015
  } from "react";
1003
1016
  import { jsx as jsx16 } from "react/jsx-runtime";
@@ -1014,24 +1027,24 @@ import React23, {
1014
1027
  forwardRef as forwardRef7,
1015
1028
  useContext as useContext29,
1016
1029
  useEffect as useEffect14,
1017
- useImperativeHandle as useImperativeHandle4,
1030
+ useImperativeHandle as useImperativeHandle5,
1018
1031
  useMemo as useMemo29,
1019
- useRef as useRef19,
1032
+ useRef as useRef20,
1020
1033
  useState as useState15
1021
1034
  } from "react";
1022
- import { useContext as useContext22, useLayoutEffect as useLayoutEffect6, useRef as useRef14 } from "react";
1035
+ import { useContext as useContext22, useLayoutEffect as useLayoutEffect6, useRef as useRef15 } from "react";
1023
1036
  import React20, {
1024
1037
  createContext as createContext21,
1025
1038
  createRef as createRef2,
1026
1039
  useCallback as useCallback10,
1027
1040
  useContext as useContext21,
1028
1041
  useMemo as useMemo23,
1029
- useRef as useRef12,
1042
+ useRef as useRef13,
1030
1043
  useState as useState11
1031
1044
  } from "react";
1032
1045
  import { useMemo as useMemo22 } from "react";
1033
1046
  import { jsx as jsx20, jsxs as jsxs22 } from "react/jsx-runtime";
1034
- import { useRef as useRef13 } from "react";
1047
+ import { useRef as useRef14 } from "react";
1035
1048
  import { useContext as useContext24, useEffect as useEffect8, useMemo as useMemo24, useState as useState12 } from "react";
1036
1049
  import { useContext as useContext23 } from "react";
1037
1050
  import {
@@ -1039,9 +1052,9 @@ import {
1039
1052
  useContext as useContext27,
1040
1053
  useEffect as useEffect12,
1041
1054
  useLayoutEffect as useLayoutEffect8,
1042
- useRef as useRef18
1055
+ useRef as useRef19
1043
1056
  } from "react";
1044
- import { useCallback as useCallback12, useMemo as useMemo27, useRef as useRef16 } from "react";
1057
+ import { useCallback as useCallback12, useMemo as useMemo27, useRef as useRef17 } from "react";
1045
1058
  import { useContext as useContext26, useMemo as useMemo26 } from "react";
1046
1059
  import React21, {
1047
1060
  useCallback as useCallback11,
@@ -1049,13 +1062,13 @@ import React21, {
1049
1062
  useEffect as useEffect9,
1050
1063
  useLayoutEffect as useLayoutEffect7,
1051
1064
  useMemo as useMemo25,
1052
- useRef as useRef15,
1065
+ useRef as useRef16,
1053
1066
  useState as useState13
1054
1067
  } from "react";
1055
1068
  import { jsx as jsx21 } from "react/jsx-runtime";
1056
1069
  import React22 from "react";
1057
1070
  import { useEffect as useEffect10, useState as useState14 } from "react";
1058
- import { useEffect as useEffect11, useRef as useRef17 } from "react";
1071
+ import { useEffect as useEffect11, useRef as useRef18 } from "react";
1059
1072
  import { useEffect as useEffect13 } from "react";
1060
1073
  import { createContext as createContext22, useContext as useContext28, useMemo as useMemo28 } from "react";
1061
1074
  import { jsx as jsx222 } from "react/jsx-runtime";
@@ -1063,39 +1076,39 @@ import {
1063
1076
  forwardRef as forwardRef8,
1064
1077
  useContext as useContext30,
1065
1078
  useEffect as useEffect15,
1066
- useImperativeHandle as useImperativeHandle5,
1079
+ useImperativeHandle as useImperativeHandle6,
1067
1080
  useLayoutEffect as useLayoutEffect9,
1068
1081
  useMemo as useMemo30,
1069
- useRef as useRef20
1082
+ useRef as useRef21
1070
1083
  } from "react";
1071
1084
  import { jsx as jsx23 } from "react/jsx-runtime";
1072
1085
  import { jsx as jsx24 } from "react/jsx-runtime";
1073
1086
  import {
1074
1087
  forwardRef as forwardRef10,
1075
- useCallback as useCallback17,
1076
- useContext as useContext33,
1088
+ useCallback as useCallback16,
1089
+ useContext as useContext32,
1077
1090
  useEffect as useEffect16,
1078
1091
  useMemo as useMemo31,
1079
1092
  useState as useState16
1080
1093
  } from "react";
1094
+ import { jsx as jsx25 } from "react/jsx-runtime";
1095
+ import { forwardRef as forwardRef11, useCallback as useCallback17, useState as useState17 } from "react";
1096
+ import { jsx as jsx26 } from "react/jsx-runtime";
1081
1097
  import {
1082
- useCallback as useCallback16,
1083
- useContext as useContext32,
1084
- useImperativeHandle as useImperativeHandle6,
1098
+ useCallback as useCallback18,
1099
+ useContext as useContext33,
1100
+ useImperativeHandle as useImperativeHandle7,
1085
1101
  useLayoutEffect as useLayoutEffect10,
1086
- useRef as useRef21
1102
+ useRef as useRef22
1087
1103
  } from "react";
1088
- import { jsx as jsx25 } from "react/jsx-runtime";
1089
- import { jsx as jsx26 } from "react/jsx-runtime";
1090
- import { forwardRef as forwardRef11, useCallback as useCallback18, useState as useState17 } from "react";
1091
1104
  import { jsx as jsx27 } from "react/jsx-runtime";
1092
1105
  import { createRef as createRef3 } from "react";
1093
1106
  import React28 from "react";
1094
1107
  import {
1095
1108
  useCallback as useCallback19,
1096
- useImperativeHandle as useImperativeHandle7,
1109
+ useImperativeHandle as useImperativeHandle8,
1097
1110
  useMemo as useMemo32,
1098
- useRef as useRef22,
1111
+ useRef as useRef23,
1099
1112
  useState as useState18
1100
1113
  } from "react";
1101
1114
  import { jsx as jsx28 } from "react/jsx-runtime";
@@ -1120,9 +1133,9 @@ import React34, {
1120
1133
  forwardRef as forwardRef12,
1121
1134
  useContext as useContext36,
1122
1135
  useEffect as useEffect19,
1123
- useImperativeHandle as useImperativeHandle8,
1136
+ useImperativeHandle as useImperativeHandle9,
1124
1137
  useMemo as useMemo36,
1125
- useRef as useRef23,
1138
+ useRef as useRef24,
1126
1139
  useState as useState20,
1127
1140
  useCallback as useCallback21
1128
1141
  } from "react";
@@ -1142,25 +1155,21 @@ import {
1142
1155
  forwardRef as forwardRef14,
1143
1156
  useContext as useContext37,
1144
1157
  useEffect as useEffect20,
1145
- useImperativeHandle as useImperativeHandle9,
1158
+ useImperativeHandle as useImperativeHandle10,
1146
1159
  useLayoutEffect as useLayoutEffect12,
1147
1160
  useMemo as useMemo39,
1148
- useRef as useRef24
1161
+ useRef as useRef25
1149
1162
  } from "react";
1150
1163
  import { jsx as jsx37 } from "react/jsx-runtime";
1151
1164
  import { jsx as jsx38 } from "react/jsx-runtime";
1152
1165
  var __defProp2 = Object.defineProperty;
1153
- var __returnValue2 = (v) => v;
1154
- function __exportSetter2(name, newValue) {
1155
- this[name] = __returnValue2.bind(null, newValue);
1156
- }
1157
1166
  var __export2 = (target, all) => {
1158
1167
  for (var name in all)
1159
1168
  __defProp2(target, name, {
1160
1169
  get: all[name],
1161
1170
  enumerable: true,
1162
1171
  configurable: true,
1163
- set: __exportSetter2.bind(all, name)
1172
+ set: (newValue) => all[name] = () => newValue
1164
1173
  });
1165
1174
  };
1166
1175
  if (typeof createContext !== "function") {
@@ -2275,7 +2284,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
2275
2284
  var addSequenceStackTraces = (component) => {
2276
2285
  componentsToAddStacksTo.push(component);
2277
2286
  };
2278
- var VERSION = "4.0.467";
2287
+ var VERSION = "4.0.469";
2279
2288
  var checkMultipleRemotionVersions = () => {
2280
2289
  if (typeof globalThis === "undefined") {
2281
2290
  return;
@@ -3327,6 +3336,7 @@ var RegularSequenceRefForwardingFunction = ({
3327
3336
  _remotionInternalPremountDisplay: premountDisplay,
3328
3337
  _remotionInternalPostmountDisplay: postmountDisplay,
3329
3338
  _remotionInternalIsMedia: isMedia,
3339
+ _remotionInternalRefForOutline: refForOutline,
3330
3340
  ...other
3331
3341
  }, ref) => {
3332
3342
  const { layout = "absolute-fill" } = other;
@@ -3364,10 +3374,16 @@ var RegularSequenceRefForwardingFunction = ({
3364
3374
  const postmounting = useMemo14(() => {
3365
3375
  return parentSequence?.postmounting || Boolean(other._remotionInternalIsPostmounting);
3366
3376
  }, [other._remotionInternalIsPostmounting, parentSequence?.postmounting]);
3377
+ const currentSequenceStart = cumulatedFrom + from;
3378
+ const parentSequenceStart = parentSequence ? parentSequence.cumulatedFrom + parentSequence.relativeFrom : 0;
3379
+ const parentFirstFrame = parentSequence ? parentSequenceStart - parentSequence.cumulatedNegativeFrom : 0;
3380
+ const firstFrame = Math.max(0, parentFirstFrame, currentSequenceStart);
3381
+ const cumulatedNegativeFrom = currentSequenceStart - firstFrame;
3367
3382
  const contextValue = useMemo14(() => {
3368
3383
  return {
3369
3384
  cumulatedFrom,
3370
3385
  relativeFrom: from,
3386
+ cumulatedNegativeFrom,
3371
3387
  durationInFrames: actualDurationInFrames,
3372
3388
  parentFrom: parentSequence?.relativeFrom ?? 0,
3373
3389
  id,
@@ -3389,7 +3405,8 @@ var RegularSequenceRefForwardingFunction = ({
3389
3405
  premounting,
3390
3406
  postmounting,
3391
3407
  premountDisplay,
3392
- postmountDisplay
3408
+ postmountDisplay,
3409
+ cumulatedNegativeFrom
3393
3410
  ]);
3394
3411
  const timelineClipName = useMemo14(() => {
3395
3412
  return name ?? "";
@@ -3422,7 +3439,8 @@ var RegularSequenceRefForwardingFunction = ({
3422
3439
  rootId,
3423
3440
  showInTimeline,
3424
3441
  src: isMedia.src,
3425
- getStack: () => stackRef.current
3442
+ getStack: () => stackRef.current,
3443
+ refForOutline: refForOutline ?? null
3426
3444
  });
3427
3445
  } else {
3428
3446
  registerSequence({
@@ -3446,7 +3464,8 @@ var RegularSequenceRefForwardingFunction = ({
3446
3464
  src: isMedia.data.src,
3447
3465
  getStack: () => stackRef.current,
3448
3466
  startMediaFrom: isMedia.data.startMediaFrom,
3449
- volume: isMedia.data.volumes
3467
+ volume: isMedia.data.volumes,
3468
+ refForOutline: refForOutline ?? null
3450
3469
  });
3451
3470
  }
3452
3471
  return () => {
@@ -3469,7 +3488,8 @@ var RegularSequenceRefForwardingFunction = ({
3469
3488
  premountDisplay: premountDisplay ?? null,
3470
3489
  postmountDisplay: postmountDisplay ?? null,
3471
3490
  controls: controls ?? null,
3472
- effects: _remotionInternalEffects ?? []
3491
+ effects: _remotionInternalEffects ?? [],
3492
+ refForOutline: refForOutline ?? null
3473
3493
  });
3474
3494
  return () => {
3475
3495
  unregisterSequence(id);
@@ -3494,7 +3514,8 @@ var RegularSequenceRefForwardingFunction = ({
3494
3514
  controls,
3495
3515
  _remotionInternalEffects,
3496
3516
  isMedia,
3497
- resolvedDocumentationLink
3517
+ resolvedDocumentationLink,
3518
+ refForOutline
3498
3519
  ]);
3499
3520
  const endThreshold = Math.ceil(cumulatedFrom + from + durationInFrames - 1);
3500
3521
  const content = absoluteFrame < cumulatedFrom + from ? null : absoluteFrame > endThreshold ? null : children;
@@ -4317,7 +4338,8 @@ var solidSchema = {
4317
4338
  default: 1080,
4318
4339
  description: "Height"
4319
4340
  },
4320
- ...sequenceVisualStyleSchema
4341
+ ...sequenceVisualStyleSchema,
4342
+ hidden: hiddenField
4321
4343
  };
4322
4344
  var SolidInner = ({
4323
4345
  color,
@@ -4327,7 +4349,7 @@ var SolidInner = ({
4327
4349
  className,
4328
4350
  style,
4329
4351
  overrideId,
4330
- ref
4352
+ reference
4331
4353
  }) => {
4332
4354
  const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
4333
4355
  const [outputCanvas, setOutputCanvas] = useState7(null);
@@ -4347,12 +4369,12 @@ var SolidInner = ({
4347
4369
  const chainState = useEffectChainState();
4348
4370
  const canvasRef = useCallback7((canvas) => {
4349
4371
  setOutputCanvas(canvas);
4350
- if (typeof ref === "function") {
4351
- ref(canvas);
4352
- } else if (ref) {
4353
- ref.current = canvas;
4372
+ if (typeof reference === "function") {
4373
+ reference(canvas);
4374
+ } else if (reference) {
4375
+ reference.current = canvas;
4354
4376
  }
4355
- }, [ref]);
4377
+ }, [reference]);
4356
4378
  useEffect6(() => {
4357
4379
  if (!outputCanvas || !sourceCanvas) {
4358
4380
  return;
@@ -4427,6 +4449,10 @@ var SolidOuter = forwardRef5(({
4427
4449
  ...props
4428
4450
  }, ref) => {
4429
4451
  const memoizedEffectDefinitions = useMemoizedEffectDefinitions(effects);
4452
+ const actualRef = useRef10(null);
4453
+ useImperativeHandle3(ref, () => {
4454
+ return actualRef.current;
4455
+ }, []);
4430
4456
  return /* @__PURE__ */ jsx14(Sequence, {
4431
4457
  layout: "none",
4432
4458
  from,
@@ -4436,10 +4462,11 @@ var SolidOuter = forwardRef5(({
4436
4462
  _remotionInternalEffects: memoizedEffectDefinitions,
4437
4463
  durationInFrames,
4438
4464
  name: name ?? "<Solid>",
4465
+ _remotionInternalRefForOutline: actualRef,
4439
4466
  _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/solid" : undefined,
4440
4467
  ...props,
4441
4468
  children: /* @__PURE__ */ jsx14(SolidInner, {
4442
- ref,
4469
+ reference: actualRef,
4443
4470
  overrideId: controls?.overrideId ?? null,
4444
4471
  color,
4445
4472
  height,
@@ -4499,9 +4526,9 @@ var HtmlInCanvasContent = forwardRef6(({ width, height, effects, children, onPai
4499
4526
  if (!isHtmlInCanvasSupported()) {
4500
4527
  cancelRender2(new Error(HTML_IN_CANVAS_UNSUPPORTED_MESSAGE));
4501
4528
  }
4502
- const canvas2dRef = useRef10(null);
4503
- const offscreenRef = useRef10(null);
4504
- const divRef = useRef10(null);
4529
+ const canvas2dRef = useRef11(null);
4530
+ const offscreenRef = useRef11(null);
4531
+ const divRef = useRef11(null);
4505
4532
  const canvasSizeKey = `${width}x${height}`;
4506
4533
  const setLayoutCanvasRef = useCallback8((node) => {
4507
4534
  canvas2dRef.current = node;
@@ -4516,15 +4543,15 @@ var HtmlInCanvasContent = forwardRef6(({ width, height, effects, children, onPai
4516
4543
  effects,
4517
4544
  overrideId: controls?.overrideId ?? null
4518
4545
  });
4519
- const effectsRef = useRef10(memoizedEffects);
4546
+ const effectsRef = useRef11(memoizedEffects);
4520
4547
  effectsRef.current = memoizedEffects;
4521
- const onPaintRef = useRef10(onPaint);
4548
+ const onPaintRef = useRef11(onPaint);
4522
4549
  onPaintRef.current = onPaint;
4523
- const onInitRef = useRef10(onInit);
4550
+ const onInitRef = useRef11(onInit);
4524
4551
  onInitRef.current = onInit;
4525
- const initializedRef = useRef10(false);
4526
- const onInitCleanupRef = useRef10(null);
4527
- const unmountedRef = useRef10(false);
4552
+ const initializedRef = useRef11(false);
4553
+ const onInitCleanupRef = useRef11(null);
4554
+ const unmountedRef = useRef11(false);
4528
4555
  const onPaintCb = useCallback8(async () => {
4529
4556
  const element = divRef.current;
4530
4557
  if (!element) {
@@ -4608,7 +4635,7 @@ var HtmlInCanvasContent = forwardRef6(({ width, height, effects, children, onPai
4608
4635
  onInitCleanupRef.current = null;
4609
4636
  };
4610
4637
  }, [onPaintCb, cancelRender2, width, height]);
4611
- const onPaintChangedRef = useRef10(false);
4638
+ const onPaintChangedRef = useRef11(false);
4612
4639
  useLayoutEffect3(() => {
4613
4640
  if (!onPaintChangedRef.current) {
4614
4641
  onPaintChangedRef.current = true;
@@ -4746,14 +4773,14 @@ var RenderAssetManager = createContext17({
4746
4773
  });
4747
4774
  var RenderAssetManagerProvider = ({ children, collectAssets }) => {
4748
4775
  const [renderAssets, setRenderAssets] = useState8([]);
4749
- const renderAssetsRef = useRef11([]);
4776
+ const renderAssetsRef = useRef12([]);
4750
4777
  const registerRenderAsset = useCallback9((renderAsset) => {
4751
4778
  validateRenderAsset(renderAsset);
4752
4779
  renderAssetsRef.current = [...renderAssetsRef.current, renderAsset];
4753
4780
  setRenderAssets(renderAssetsRef.current);
4754
4781
  }, []);
4755
4782
  if (collectAssets) {
4756
- useImperativeHandle3(collectAssets, () => {
4783
+ useImperativeHandle4(collectAssets, () => {
4757
4784
  return {
4758
4785
  collectAssets: () => {
4759
4786
  const assets = renderAssetsRef.current;
@@ -5535,10 +5562,10 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled })
5535
5562
  latencyHint: audioLatencyHint,
5536
5563
  audioEnabled
5537
5564
  });
5538
- const audioContextIsPlayingEventually = useRef12(false);
5539
- const isResuming = useRef12(null);
5565
+ const audioContextIsPlayingEventually = useRef13(false);
5566
+ const isResuming = useRef13(null);
5540
5567
  const audioSyncAnchor = useMemo23(() => ({ value: 0 }), []);
5541
- const audioSyncAnchorListeners = useRef12([]);
5568
+ const audioSyncAnchorListeners = useRef13([]);
5542
5569
  const audioSyncAnchorEmitter = useMemo23(() => {
5543
5570
  return {
5544
5571
  dispatch: (event) => {
@@ -5554,8 +5581,8 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled })
5554
5581
  }
5555
5582
  };
5556
5583
  }, []);
5557
- const prevEndTimes = useRef12({ scheduledEndTime: null, mediaEndTime: null });
5558
- const nodesToResume = useRef12(new Map);
5584
+ const prevEndTimes = useRef13({ scheduledEndTime: null, mediaEndTime: null });
5585
+ const nodesToResume = useRef13(new Map);
5559
5586
  const unscheduleAudioNode = useCallback10((node) => {
5560
5587
  nodesToResume.current.delete(node);
5561
5588
  }, []);
@@ -5679,7 +5706,7 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled })
5679
5706
  });
5680
5707
  };
5681
5708
  var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
5682
- const audios = useRef12([]);
5709
+ const audios = useRef13([]);
5683
5710
  const [initialNumberOfAudioTags] = useState11(numberOfAudioTags);
5684
5711
  if (numberOfAudioTags !== initialNumberOfAudioTags) {
5685
5712
  throw new Error("The number of shared audio tags has changed dynamically. Once you have set this property, you cannot change it afterwards.");
@@ -5713,7 +5740,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
5713
5740
  });
5714
5741
  };
5715
5742
  }, [refs]);
5716
- const takenAudios = useRef12(new Array(numberOfAudioTags).fill(false));
5743
+ const takenAudios = useRef13(new Array(numberOfAudioTags).fill(false));
5717
5744
  const rerenderAudios = useCallback10(() => {
5718
5745
  refs.forEach(({ ref, id }) => {
5719
5746
  const data = audios.current?.find((a) => a.id === id);
@@ -6000,9 +6027,9 @@ var useAppendVideoFragment = ({
6000
6027
  duration: initialDuration,
6001
6028
  fps
6002
6029
  }) => {
6003
- const actualFromRef = useRef13(initialActualFrom);
6004
- const actualDuration = useRef13(initialDuration);
6005
- const actualSrc = useRef13(initialActualSrc);
6030
+ const actualFromRef = useRef14(initialActualFrom);
6031
+ const actualDuration = useRef14(initialDuration);
6032
+ const actualSrc = useRef14(initialActualSrc);
6006
6033
  if (!isSubsetOfDuration({
6007
6034
  prevStartFrom: actualFromRef.current,
6008
6035
  newStartFrom: initialActualFrom,
@@ -6039,8 +6066,8 @@ var useVolume = ({
6039
6066
  source,
6040
6067
  shouldUseWebAudioApi
6041
6068
  }) => {
6042
- const audioStuffRef = useRef14(null);
6043
- const currentVolumeRef = useRef14(volume);
6069
+ const audioStuffRef = useRef15(null);
6070
+ const currentVolumeRef = useRef15(volume);
6044
6071
  currentVolumeRef.current = volume;
6045
6072
  const sharedAudioContext = useContext22(SharedAudioContext);
6046
6073
  if (!sharedAudioContext) {
@@ -6108,8 +6135,7 @@ var useVolume = ({
6108
6135
  };
6109
6136
  var useMediaStartsAt = () => {
6110
6137
  const parentSequence = useContext23(SequenceContext);
6111
- const startsAt = Math.min(0, parentSequence?.relativeFrom ?? 0);
6112
- return startsAt;
6138
+ return parentSequence?.cumulatedNegativeFrom ?? 0;
6113
6139
  };
6114
6140
  var useFrameForVolumeProp = (behavior) => {
6115
6141
  const loop = Loop.useLoop();
@@ -6266,7 +6292,8 @@ var useMediaInTimeline = ({
6266
6292
  premountDisplay,
6267
6293
  postmountDisplay,
6268
6294
  loopDisplay,
6269
- documentationLink
6295
+ documentationLink,
6296
+ refForOutline
6270
6297
  }) => {
6271
6298
  const parentSequence = useContext24(SequenceContext);
6272
6299
  const startsAt = useMediaStartsAt();
@@ -6318,7 +6345,8 @@ var useMediaInTimeline = ({
6318
6345
  premountDisplay,
6319
6346
  postmountDisplay,
6320
6347
  controls: null,
6321
- effects: []
6348
+ effects: [],
6349
+ refForOutline
6322
6350
  });
6323
6351
  return () => {
6324
6352
  unregisterSequence(id);
@@ -6344,7 +6372,8 @@ var useMediaInTimeline = ({
6344
6372
  documentationLink,
6345
6373
  rootId,
6346
6374
  finalDisplayName,
6347
- isStudio
6375
+ isStudio,
6376
+ refForOutline
6348
6377
  ]);
6349
6378
  };
6350
6379
  var useBufferManager = (logLevel, mountTime) => {
@@ -6353,7 +6382,7 @@ var useBufferManager = (logLevel, mountTime) => {
6353
6382
  const [onResumeCallbacks, setOnResumeCallbacks] = useState13([]);
6354
6383
  const env = useRemotionEnvironment();
6355
6384
  const rendering = env.isRendering;
6356
- const buffering = useRef15(false);
6385
+ const buffering = useRef16(false);
6357
6386
  const addBlock = useCallback11((block) => {
6358
6387
  if (rendering) {
6359
6388
  return {
@@ -6500,7 +6529,7 @@ var useBufferUntilFirstFrame = ({
6500
6529
  logLevel,
6501
6530
  mountTime
6502
6531
  }) => {
6503
- const bufferingRef = useRef16(false);
6532
+ const bufferingRef = useRef17(false);
6504
6533
  const { delayPlayback } = useBufferState();
6505
6534
  const bufferUntilFirstFrame = useCallback12((requestedTime) => {
6506
6535
  if (mediaType !== "video") {
@@ -6754,7 +6783,7 @@ var useRequestVideoCallbackTime = ({
6754
6783
  lastSeek,
6755
6784
  onVariableFpsVideoDetected
6756
6785
  }) => {
6757
- const currentTime = useRef17(null);
6786
+ const currentTime = useRef18(null);
6758
6787
  useEffect11(() => {
6759
6788
  const { current } = mediaRef;
6760
6789
  if (current) {
@@ -6861,8 +6890,8 @@ function checkValidInputRange(arr) {
6861
6890
  }
6862
6891
  }
6863
6892
  function checkInfiniteRange(name, arr) {
6864
- if (arr.length < 2) {
6865
- throw new Error(name + " must have at least 2 elements");
6893
+ if (arr.length < 1) {
6894
+ throw new Error(name + " must have at least 1 element");
6866
6895
  }
6867
6896
  for (const element of arr) {
6868
6897
  if (typeof element !== "number") {
@@ -6929,6 +6958,9 @@ function interpolate(input, inputRange, outputRange, options) {
6929
6958
  if (typeof input !== "number") {
6930
6959
  throw new TypeError("Cannot interpolate an input which is not a number");
6931
6960
  }
6961
+ if (inputRange.length === 1) {
6962
+ return outputRange[0];
6963
+ }
6932
6964
  const range = findRange(input, inputRange);
6933
6965
  return interpolateFunction(input, [inputRange[range], inputRange[range + 1]], [outputRange[range], outputRange[range + 1]], {
6934
6966
  easing: resolveEasingForSegment(range),
@@ -7011,14 +7043,14 @@ var useMediaPlayback = ({
7011
7043
  const buffering = useContext27(BufferingContextReact);
7012
7044
  const { fps } = useVideoConfig();
7013
7045
  const mediaStartsAt = useMediaStartsAt();
7014
- const lastSeekDueToShift = useRef18(null);
7015
- const lastSeek = useRef18(null);
7046
+ const lastSeekDueToShift = useRef19(null);
7047
+ const lastSeek = useRef19(null);
7016
7048
  const logLevel = useLogLevel();
7017
7049
  const mountTime = useMountTime();
7018
7050
  if (!buffering) {
7019
7051
  throw new Error("useMediaPlayback must be used inside a <BufferingContext>");
7020
7052
  }
7021
- const isVariableFpsVideoMap = useRef18({});
7053
+ const isVariableFpsVideoMap = useRef19({});
7022
7054
  const onVariableFpsVideoDetected = useCallback13(() => {
7023
7055
  if (!src) {
7024
7056
  return;
@@ -7426,7 +7458,8 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
7426
7458
  premountDisplay: sequenceContext?.premountDisplay ?? null,
7427
7459
  postmountDisplay: sequenceContext?.postmountDisplay ?? null,
7428
7460
  loopDisplay: undefined,
7429
- documentationLink: name === undefined ? "https://www.remotion.dev/docs/html5-audio" : null
7461
+ documentationLink: name === undefined ? "https://www.remotion.dev/docs/html5-audio" : null,
7462
+ refForOutline: null
7430
7463
  });
7431
7464
  useMediaPlayback({
7432
7465
  mediaRef: audioRef,
@@ -7464,10 +7497,10 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
7464
7497
  });
7465
7498
  };
7466
7499
  }, [cleanupOnMediaTagUnmount]);
7467
- useImperativeHandle4(ref, () => {
7500
+ useImperativeHandle5(ref, () => {
7468
7501
  return audioRef.current;
7469
7502
  }, [audioRef]);
7470
- const currentOnDurationCallback = useRef19(onDuration);
7503
+ const currentOnDurationCallback = useRef20(onDuration);
7471
7504
  currentOnDurationCallback.current = onDuration;
7472
7505
  useEffect14(() => {
7473
7506
  const { current } = audioRef;
@@ -7498,7 +7531,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
7498
7531
  };
7499
7532
  var AudioForPreview = forwardRef7(AudioForDevelopmentForwardRefFunction);
7500
7533
  var AudioForRenderingRefForwardingFunction = (props, ref) => {
7501
- const audioRef = useRef20(null);
7534
+ const audioRef = useRef21(null);
7502
7535
  const {
7503
7536
  volume: volumeProp,
7504
7537
  playbackRate,
@@ -7536,7 +7569,7 @@ var AudioForRenderingRefForwardingFunction = (props, ref) => {
7536
7569
  mediaVolume: 1
7537
7570
  });
7538
7571
  warnAboutTooHighVolume(volume);
7539
- useImperativeHandle5(ref, () => {
7572
+ useImperativeHandle6(ref, () => {
7540
7573
  return audioRef.current;
7541
7574
  }, []);
7542
7575
  useEffect15(() => {
@@ -7561,7 +7594,7 @@ var AudioForRenderingRefForwardingFunction = (props, ref) => {
7561
7594
  mediaFrame: frame,
7562
7595
  playbackRate: props.playbackRate ?? 1,
7563
7596
  toneFrequency: toneFrequency ?? 1,
7564
- audioStartFrame: Math.max(0, -(sequenceContext?.relativeFrom ?? 0)),
7597
+ audioStartFrame: Math.max(0, -(sequenceContext?.cumulatedNegativeFrom ?? 0)),
7565
7598
  audioStreamIndex: audioStreamIndex ?? 0
7566
7599
  });
7567
7600
  return () => unregisterRenderAsset(id);
@@ -7578,7 +7611,7 @@ var AudioForRenderingRefForwardingFunction = (props, ref) => {
7578
7611
  playbackRate,
7579
7612
  props.playbackRate,
7580
7613
  toneFrequency,
7581
- sequenceContext?.relativeFrom,
7614
+ sequenceContext?.cumulatedNegativeFrom,
7582
7615
  audioStreamIndex
7583
7616
  ]);
7584
7617
  const { src } = props;
@@ -7749,197 +7782,12 @@ var AudioRefForwardingFunction = (props, ref) => {
7749
7782
  var Html5Audio = forwardRef9(AudioRefForwardingFunction);
7750
7783
  addSequenceStackTraces(Html5Audio);
7751
7784
  var Audio = Html5Audio;
7752
- function exponentialBackoff(errorCount) {
7753
- return 1000 * 2 ** (errorCount - 1);
7754
- }
7755
7785
  function truncateSrcForLabel(src) {
7756
7786
  if (src.startsWith("data:") && src.length > 100) {
7757
7787
  return src.slice(0, 60) + "...[" + src.length + " chars total]";
7758
7788
  }
7759
7789
  return src;
7760
7790
  }
7761
- var ImgContent = ({
7762
- onError,
7763
- maxRetries = 2,
7764
- src,
7765
- pauseWhenLoading,
7766
- delayRenderRetries,
7767
- delayRenderTimeoutInMilliseconds,
7768
- onImageFrame,
7769
- crossOrigin,
7770
- decoding,
7771
- ref,
7772
- ...props2
7773
- }) => {
7774
- const imageRef = useRef21(null);
7775
- const errors = useRef21({});
7776
- const { delayPlayback } = useBufferState();
7777
- const sequenceContext = useContext32(SequenceContext);
7778
- const _propsValid = true;
7779
- if (!_propsValid) {
7780
- throw new Error("typecheck error");
7781
- }
7782
- useImperativeHandle6(ref, () => {
7783
- return imageRef.current;
7784
- }, []);
7785
- const actualSrc = usePreload(src);
7786
- const retryIn = useCallback16((timeout) => {
7787
- if (!imageRef.current) {
7788
- return;
7789
- }
7790
- const currentSrc = imageRef.current.src;
7791
- setTimeout(() => {
7792
- if (!imageRef.current) {
7793
- return;
7794
- }
7795
- const newSrc = imageRef.current?.src;
7796
- if (newSrc !== currentSrc) {
7797
- return;
7798
- }
7799
- imageRef.current.removeAttribute("src");
7800
- imageRef.current.setAttribute("src", newSrc);
7801
- }, timeout);
7802
- }, []);
7803
- const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
7804
- const didGetError = useCallback16((e) => {
7805
- if (!errors.current) {
7806
- return;
7807
- }
7808
- errors.current[imageRef.current?.src] = (errors.current[imageRef.current?.src] ?? 0) + 1;
7809
- if (onError && (errors.current[imageRef.current?.src] ?? 0) > maxRetries) {
7810
- onError(e);
7811
- return;
7812
- }
7813
- if ((errors.current[imageRef.current?.src] ?? 0) <= maxRetries) {
7814
- const backoff = exponentialBackoff(errors.current[imageRef.current?.src] ?? 0);
7815
- console.warn(`Could not load image with source ${truncateSrcForLabel(imageRef.current?.src)}, retrying again in ${backoff}ms`);
7816
- retryIn(backoff);
7817
- return;
7818
- }
7819
- try {
7820
- cancelRender2("Error loading image with src: " + truncateSrcForLabel(imageRef.current?.src));
7821
- } catch {}
7822
- }, [cancelRender2, maxRetries, onError, retryIn]);
7823
- if (typeof window !== "undefined") {
7824
- const isPremounting = Boolean(sequenceContext?.premounting);
7825
- const isPostmounting = Boolean(sequenceContext?.postmounting);
7826
- useLayoutEffect10(() => {
7827
- if (window.process?.env?.NODE_ENV === "test") {
7828
- if (imageRef.current) {
7829
- imageRef.current.src = actualSrc;
7830
- }
7831
- return;
7832
- }
7833
- const { current } = imageRef;
7834
- if (!current) {
7835
- return;
7836
- }
7837
- const newHandle = delayRender2("Loading <Img> with src=" + truncateSrcForLabel(actualSrc), {
7838
- retries: delayRenderRetries ?? undefined,
7839
- timeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? undefined
7840
- });
7841
- const unblock = pauseWhenLoading && !isPremounting && !isPostmounting ? delayPlayback().unblock : () => {
7842
- return;
7843
- };
7844
- let unmounted = false;
7845
- const onComplete = () => {
7846
- if (unmounted) {
7847
- continueRender2(newHandle);
7848
- return;
7849
- }
7850
- if ((errors.current[imageRef.current?.src] ?? 0) > 0) {
7851
- delete errors.current[imageRef.current?.src];
7852
- console.info(`Retry successful - ${truncateSrcForLabel(imageRef.current?.src)} is now loaded`);
7853
- }
7854
- if (current) {
7855
- onImageFrame?.(current);
7856
- }
7857
- unblock();
7858
- continueRender2(newHandle);
7859
- };
7860
- if (!imageRef.current) {
7861
- onComplete();
7862
- return;
7863
- }
7864
- current.src = actualSrc;
7865
- current.decode().then(onComplete).catch((err) => {
7866
- console.warn(err);
7867
- if (current.complete && current.naturalWidth > 0 && current.naturalHeight > 0) {
7868
- onComplete();
7869
- } else {
7870
- current.addEventListener("load", onComplete);
7871
- }
7872
- });
7873
- return () => {
7874
- unmounted = true;
7875
- current.removeEventListener("load", onComplete);
7876
- unblock();
7877
- continueRender2(newHandle);
7878
- };
7879
- }, [
7880
- actualSrc,
7881
- delayPlayback,
7882
- delayRenderRetries,
7883
- delayRenderTimeoutInMilliseconds,
7884
- pauseWhenLoading,
7885
- isPremounting,
7886
- isPostmounting,
7887
- onImageFrame,
7888
- continueRender2,
7889
- delayRender2
7890
- ]);
7891
- }
7892
- const { isClientSideRendering, isRendering } = useRemotionEnvironment();
7893
- const crossOriginValue = getCrossOriginValue({
7894
- crossOrigin,
7895
- requestsVideoFrame: false,
7896
- isClientSideRendering
7897
- });
7898
- return /* @__PURE__ */ jsx25("img", {
7899
- ...props2,
7900
- ref: imageRef,
7901
- crossOrigin: crossOriginValue,
7902
- onError: didGetError,
7903
- decoding: isRendering ? "sync" : decoding
7904
- });
7905
- };
7906
- var ImgInner = ({
7907
- hidden,
7908
- name,
7909
- stack,
7910
- showInTimeline,
7911
- src,
7912
- from,
7913
- durationInFrames,
7914
- _experimentalControls: controls,
7915
- ...props2
7916
- }) => {
7917
- if (!src) {
7918
- throw new Error('No "src" prop was passed to <Img>.');
7919
- }
7920
- return /* @__PURE__ */ jsx25(Sequence, {
7921
- layout: "none",
7922
- from: from ?? 0,
7923
- durationInFrames: durationInFrames ?? Infinity,
7924
- _remotionInternalStack: stack,
7925
- _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/img" : undefined,
7926
- _remotionInternalIsMedia: { type: "image", src },
7927
- name: name ?? "<Img>",
7928
- _experimentalControls: controls,
7929
- showInTimeline: showInTimeline ?? true,
7930
- hidden,
7931
- children: /* @__PURE__ */ jsx25(ImgContent, {
7932
- src,
7933
- ...props2
7934
- })
7935
- });
7936
- };
7937
- var imgSchema = {
7938
- ...sequenceVisualStyleSchema,
7939
- hidden: hiddenField
7940
- };
7941
- var Img = wrapInSchema(ImgInner, imgSchema);
7942
- addSequenceStackTraces(Img);
7943
7791
  var canvasImageSchema = {
7944
7792
  fit: {
7945
7793
  type: "enum",
@@ -8009,7 +7857,7 @@ var loadImage = ({
8009
7857
  image.src = src;
8010
7858
  });
8011
7859
  };
8012
- function exponentialBackoff2(errorCount) {
7860
+ function exponentialBackoff(errorCount) {
8013
7861
  return 1000 * 2 ** (errorCount - 1);
8014
7862
  }
8015
7863
  var CanvasImageContent = forwardRef10(({
@@ -8026,7 +7874,8 @@ var CanvasImageContent = forwardRef10(({
8026
7874
  pauseWhenLoading,
8027
7875
  maxRetries = 2,
8028
7876
  delayRenderRetries,
8029
- delayRenderTimeoutInMilliseconds
7877
+ delayRenderTimeoutInMilliseconds,
7878
+ ...canvasProps
8030
7879
  }, ref) => {
8031
7880
  const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
8032
7881
  const { delayPlayback } = useBufferState();
@@ -8037,14 +7886,14 @@ var CanvasImageContent = forwardRef10(({
8037
7886
  effects,
8038
7887
  overrideId: controls?.overrideId ?? null
8039
7888
  });
8040
- const sequenceContext = useContext33(SequenceContext);
7889
+ const sequenceContext = useContext32(SequenceContext);
8041
7890
  const sourceCanvas = useMemo31(() => {
8042
7891
  if (typeof document === "undefined") {
8043
7892
  return null;
8044
7893
  }
8045
7894
  return document.createElement("canvas");
8046
7895
  }, []);
8047
- const canvasRef = useCallback17((canvas) => {
7896
+ const canvasRef = useCallback16((canvas) => {
8048
7897
  setOutputCanvas(canvas);
8049
7898
  if (typeof ref === "function") {
8050
7899
  ref(canvas);
@@ -8116,7 +7965,7 @@ var CanvasImageContent = forwardRef10(({
8116
7965
  }
8117
7966
  errorCount++;
8118
7967
  if (errorCount <= maxRetries) {
8119
- const backoff = exponentialBackoff2(errorCount);
7968
+ const backoff = exponentialBackoff(errorCount);
8120
7969
  console.warn(`Could not load <CanvasImage> with src="${truncateSrcForLabel(actualSrc)}", retrying in ${backoff}ms`);
8121
7970
  timeoutId = setTimeout(() => {
8122
7971
  if (!cancelled) {
@@ -8161,7 +8010,8 @@ var CanvasImageContent = forwardRef10(({
8161
8010
  sourceCanvas,
8162
8011
  width
8163
8012
  ]);
8164
- return /* @__PURE__ */ jsx26("canvas", {
8013
+ return /* @__PURE__ */ jsx25("canvas", {
8014
+ ...canvasProps,
8165
8015
  ref: canvasRef,
8166
8016
  width,
8167
8017
  height,
@@ -8191,24 +8041,27 @@ var CanvasImageInner = forwardRef10(({
8191
8041
  name,
8192
8042
  showInTimeline,
8193
8043
  stack,
8194
- _experimentalControls: controls
8044
+ _experimentalControls: controls,
8045
+ _remotionInternalDocumentationLink,
8046
+ ...canvasProps
8195
8047
  }, ref) => {
8196
8048
  if (!src) {
8197
8049
  throw new Error('No "src" prop was passed to <CanvasImage>.');
8198
8050
  }
8199
8051
  const memoizedEffectDefinitions = useMemoizedEffectDefinitions(effects);
8200
- return /* @__PURE__ */ jsx26(Sequence, {
8052
+ return /* @__PURE__ */ jsx25(Sequence, {
8201
8053
  layout: "none",
8202
8054
  from: from ?? 0,
8203
8055
  durationInFrames: durationInFrames ?? Infinity,
8204
8056
  hidden,
8205
8057
  showInTimeline: showInTimeline ?? true,
8206
8058
  name: name ?? "<CanvasImage>",
8059
+ _remotionInternalDocumentationLink: _remotionInternalDocumentationLink ?? "https://www.remotion.dev/docs/canvasimage",
8207
8060
  _experimentalControls: controls,
8208
8061
  _remotionInternalEffects: memoizedEffectDefinitions,
8209
8062
  _remotionInternalIsMedia: { type: "image", src },
8210
8063
  _remotionInternalStack: stack,
8211
- children: /* @__PURE__ */ jsx26(CanvasImageContent, {
8064
+ children: /* @__PURE__ */ jsx25(CanvasImageContent, {
8212
8065
  ref,
8213
8066
  src,
8214
8067
  width,
@@ -8223,7 +8076,8 @@ var CanvasImageInner = forwardRef10(({
8223
8076
  pauseWhenLoading,
8224
8077
  maxRetries,
8225
8078
  delayRenderRetries,
8226
- delayRenderTimeoutInMilliseconds
8079
+ delayRenderTimeoutInMilliseconds,
8080
+ ...canvasProps
8227
8081
  })
8228
8082
  });
8229
8083
  });
@@ -8244,11 +8098,11 @@ var IFrameRefForwarding = ({
8244
8098
  retries: delayRenderRetries ?? undefined,
8245
8099
  timeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? undefined
8246
8100
  }));
8247
- const didLoad = useCallback18((e) => {
8101
+ const didLoad = useCallback17((e) => {
8248
8102
  continueRender2(handle);
8249
8103
  onLoad?.(e);
8250
8104
  }, [handle, onLoad, continueRender2]);
8251
- const didGetError = useCallback18((e) => {
8105
+ const didGetError = useCallback17((e) => {
8252
8106
  continueRender2(handle);
8253
8107
  if (onError) {
8254
8108
  onError(e);
@@ -8256,7 +8110,7 @@ var IFrameRefForwarding = ({
8256
8110
  console.error("Error loading iframe:", e, "Handle the event using the onError() prop to make this message disappear.");
8257
8111
  }
8258
8112
  }, [handle, onError, continueRender2]);
8259
- return /* @__PURE__ */ jsx27("iframe", {
8113
+ return /* @__PURE__ */ jsx26("iframe", {
8260
8114
  referrerPolicy: "strict-origin-when-cross-origin",
8261
8115
  ...props2,
8262
8116
  ref,
@@ -8265,6 +8119,316 @@ var IFrameRefForwarding = ({
8265
8119
  });
8266
8120
  };
8267
8121
  var IFrame = forwardRef11(IFrameRefForwarding);
8122
+ function exponentialBackoff2(errorCount) {
8123
+ return 1000 * 2 ** (errorCount - 1);
8124
+ }
8125
+ var ImgContent = ({
8126
+ onError,
8127
+ maxRetries = 2,
8128
+ src,
8129
+ pauseWhenLoading,
8130
+ delayRenderRetries,
8131
+ delayRenderTimeoutInMilliseconds,
8132
+ onImageFrame,
8133
+ crossOrigin,
8134
+ decoding,
8135
+ ref,
8136
+ ...props2
8137
+ }) => {
8138
+ const imageRef = useRef22(null);
8139
+ const errors = useRef22({});
8140
+ const { delayPlayback } = useBufferState();
8141
+ const sequenceContext = useContext33(SequenceContext);
8142
+ const _propsValid = true;
8143
+ if (!_propsValid) {
8144
+ throw new Error("typecheck error");
8145
+ }
8146
+ useImperativeHandle7(ref, () => {
8147
+ return imageRef.current;
8148
+ }, []);
8149
+ const actualSrc = usePreload(src);
8150
+ const retryIn = useCallback18((timeout) => {
8151
+ if (!imageRef.current) {
8152
+ return;
8153
+ }
8154
+ const currentSrc = imageRef.current.src;
8155
+ setTimeout(() => {
8156
+ if (!imageRef.current) {
8157
+ return;
8158
+ }
8159
+ const newSrc = imageRef.current?.src;
8160
+ if (newSrc !== currentSrc) {
8161
+ return;
8162
+ }
8163
+ imageRef.current.removeAttribute("src");
8164
+ imageRef.current.setAttribute("src", newSrc);
8165
+ }, timeout);
8166
+ }, []);
8167
+ const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
8168
+ const didGetError = useCallback18((e) => {
8169
+ if (!errors.current) {
8170
+ return;
8171
+ }
8172
+ errors.current[imageRef.current?.src] = (errors.current[imageRef.current?.src] ?? 0) + 1;
8173
+ if (onError && (errors.current[imageRef.current?.src] ?? 0) > maxRetries) {
8174
+ onError(e);
8175
+ return;
8176
+ }
8177
+ if ((errors.current[imageRef.current?.src] ?? 0) <= maxRetries) {
8178
+ const backoff = exponentialBackoff2(errors.current[imageRef.current?.src] ?? 0);
8179
+ console.warn(`Could not load image with source ${truncateSrcForLabel(imageRef.current?.src)}, retrying again in ${backoff}ms`);
8180
+ retryIn(backoff);
8181
+ return;
8182
+ }
8183
+ try {
8184
+ cancelRender2("Error loading image with src: " + truncateSrcForLabel(imageRef.current?.src));
8185
+ } catch {}
8186
+ }, [cancelRender2, maxRetries, onError, retryIn]);
8187
+ if (typeof window !== "undefined") {
8188
+ const isPremounting = Boolean(sequenceContext?.premounting);
8189
+ const isPostmounting = Boolean(sequenceContext?.postmounting);
8190
+ useLayoutEffect10(() => {
8191
+ if (window.process?.env?.NODE_ENV === "test") {
8192
+ if (imageRef.current) {
8193
+ imageRef.current.src = actualSrc;
8194
+ }
8195
+ return;
8196
+ }
8197
+ const { current } = imageRef;
8198
+ if (!current) {
8199
+ return;
8200
+ }
8201
+ const newHandle = delayRender2("Loading <Img> with src=" + truncateSrcForLabel(actualSrc), {
8202
+ retries: delayRenderRetries ?? undefined,
8203
+ timeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? undefined
8204
+ });
8205
+ const unblock = pauseWhenLoading && !isPremounting && !isPostmounting ? delayPlayback().unblock : () => {
8206
+ return;
8207
+ };
8208
+ let unmounted = false;
8209
+ const onComplete = () => {
8210
+ if (unmounted) {
8211
+ continueRender2(newHandle);
8212
+ return;
8213
+ }
8214
+ if ((errors.current[imageRef.current?.src] ?? 0) > 0) {
8215
+ delete errors.current[imageRef.current?.src];
8216
+ console.info(`Retry successful - ${truncateSrcForLabel(imageRef.current?.src)} is now loaded`);
8217
+ }
8218
+ if (current) {
8219
+ onImageFrame?.(current);
8220
+ }
8221
+ unblock();
8222
+ continueRender2(newHandle);
8223
+ };
8224
+ if (!imageRef.current) {
8225
+ onComplete();
8226
+ return;
8227
+ }
8228
+ current.src = actualSrc;
8229
+ current.decode().then(onComplete).catch((err) => {
8230
+ console.warn(err);
8231
+ if (current.complete && current.naturalWidth > 0 && current.naturalHeight > 0) {
8232
+ onComplete();
8233
+ } else {
8234
+ current.addEventListener("load", onComplete);
8235
+ }
8236
+ });
8237
+ return () => {
8238
+ unmounted = true;
8239
+ current.removeEventListener("load", onComplete);
8240
+ unblock();
8241
+ continueRender2(newHandle);
8242
+ };
8243
+ }, [
8244
+ actualSrc,
8245
+ delayPlayback,
8246
+ delayRenderRetries,
8247
+ delayRenderTimeoutInMilliseconds,
8248
+ pauseWhenLoading,
8249
+ isPremounting,
8250
+ isPostmounting,
8251
+ onImageFrame,
8252
+ continueRender2,
8253
+ delayRender2
8254
+ ]);
8255
+ }
8256
+ const { isClientSideRendering, isRendering } = useRemotionEnvironment();
8257
+ const crossOriginValue = getCrossOriginValue({
8258
+ crossOrigin,
8259
+ requestsVideoFrame: false,
8260
+ isClientSideRendering
8261
+ });
8262
+ return /* @__PURE__ */ jsx27("img", {
8263
+ ...props2,
8264
+ ref: imageRef,
8265
+ crossOrigin: crossOriginValue,
8266
+ onError: didGetError,
8267
+ decoding: isRendering ? "sync" : decoding
8268
+ });
8269
+ };
8270
+ var NativeImgInner = ({
8271
+ hidden,
8272
+ name,
8273
+ stack,
8274
+ showInTimeline,
8275
+ src,
8276
+ from,
8277
+ durationInFrames,
8278
+ _experimentalControls: controls,
8279
+ ...props2
8280
+ }) => {
8281
+ if (!src) {
8282
+ throw new Error('No "src" prop was passed to <Img>.');
8283
+ }
8284
+ return /* @__PURE__ */ jsx27(Sequence, {
8285
+ layout: "none",
8286
+ from: from ?? 0,
8287
+ durationInFrames: durationInFrames ?? Infinity,
8288
+ _remotionInternalStack: stack,
8289
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/img" : undefined,
8290
+ _remotionInternalIsMedia: { type: "image", src },
8291
+ name: name ?? "<Img>",
8292
+ _experimentalControls: controls,
8293
+ showInTimeline: showInTimeline ?? true,
8294
+ hidden,
8295
+ children: /* @__PURE__ */ jsx27(ImgContent, {
8296
+ src,
8297
+ ...props2
8298
+ })
8299
+ });
8300
+ };
8301
+ var CanvasImageWithPrivateProps = CanvasImage;
8302
+ var imgSchema = {
8303
+ ...sequenceVisualStyleSchema,
8304
+ hidden: hiddenField
8305
+ };
8306
+ var imgCanvasFallbackIncompatibleProps = new Set([
8307
+ "alt",
8308
+ "crossOrigin",
8309
+ "decoding",
8310
+ "fetchPriority",
8311
+ "loading",
8312
+ "onError",
8313
+ "onImageFrame",
8314
+ "onLoad",
8315
+ "sizes",
8316
+ "srcSet",
8317
+ "useMap"
8318
+ ]);
8319
+ var getIncompatiblePropNames = (props2) => Object.keys(props2).filter((key) => props2[key] !== undefined && imgCanvasFallbackIncompatibleProps.has(key));
8320
+ var formatPropList = (props2) => {
8321
+ return props2.map((prop) => `"${prop}"`).join(", ");
8322
+ };
8323
+ var validateCanvasImageFallbackProps = ({
8324
+ props: props2,
8325
+ ref,
8326
+ width,
8327
+ height
8328
+ }) => {
8329
+ if (typeof width === "string" || typeof height === "string") {
8330
+ throw new Error('The "width" and "height" props must be numbers on <Img> when effects are passed, because <Img> renders a <CanvasImage>. Use numeric props or CSS dimensions in "style".');
8331
+ }
8332
+ const conflictingProps = getIncompatiblePropNames(props2);
8333
+ if (ref !== null && ref !== undefined) {
8334
+ conflictingProps.unshift("ref");
8335
+ }
8336
+ if (conflictingProps.length === 0) {
8337
+ return;
8338
+ }
8339
+ throw new Error(`The ${formatPropList(conflictingProps)} prop${conflictingProps.length === 1 ? "" : "s"} cannot be used on <Img> when effects are passed, because <Img> renders a <canvas> instead of a native <img>. Remove ${conflictingProps.length === 1 ? "this prop" : "these props"}.`);
8340
+ };
8341
+ var getFitFromObjectFit = (style) => {
8342
+ const objectFit = style?.objectFit;
8343
+ if (objectFit === "fill" || objectFit === "contain" || objectFit === "cover") {
8344
+ return objectFit;
8345
+ }
8346
+ return;
8347
+ };
8348
+ var ImgInner = ({
8349
+ effects = [],
8350
+ ref,
8351
+ hidden,
8352
+ name,
8353
+ stack,
8354
+ showInTimeline,
8355
+ src,
8356
+ from,
8357
+ durationInFrames,
8358
+ _experimentalControls: controls,
8359
+ width,
8360
+ height,
8361
+ className,
8362
+ style,
8363
+ id,
8364
+ pauseWhenLoading,
8365
+ maxRetries,
8366
+ delayRenderRetries,
8367
+ delayRenderTimeoutInMilliseconds,
8368
+ ...props2
8369
+ }) => {
8370
+ if (effects.length === 0) {
8371
+ return /* @__PURE__ */ jsx27(NativeImgInner, {
8372
+ ...props2,
8373
+ ref,
8374
+ hidden,
8375
+ name,
8376
+ stack,
8377
+ showInTimeline,
8378
+ src,
8379
+ from,
8380
+ durationInFrames,
8381
+ _experimentalControls: controls,
8382
+ width,
8383
+ height,
8384
+ className,
8385
+ style,
8386
+ id,
8387
+ pauseWhenLoading,
8388
+ maxRetries,
8389
+ delayRenderRetries,
8390
+ delayRenderTimeoutInMilliseconds
8391
+ });
8392
+ }
8393
+ if (!src) {
8394
+ throw new Error('No "src" prop was passed to <Img>.');
8395
+ }
8396
+ validateCanvasImageFallbackProps({
8397
+ props: props2,
8398
+ ref,
8399
+ width,
8400
+ height
8401
+ });
8402
+ const canvasWidth = typeof width === "number" ? width : undefined;
8403
+ const canvasHeight = typeof height === "number" ? height : undefined;
8404
+ const canvasProps = props2;
8405
+ const canvasFit = getFitFromObjectFit(style) ?? "fill";
8406
+ return /* @__PURE__ */ jsx27(CanvasImageWithPrivateProps, {
8407
+ src,
8408
+ width: canvasWidth,
8409
+ height: canvasHeight,
8410
+ fit: canvasFit,
8411
+ effects,
8412
+ className,
8413
+ style,
8414
+ id,
8415
+ pauseWhenLoading,
8416
+ maxRetries,
8417
+ delayRenderRetries,
8418
+ delayRenderTimeoutInMilliseconds,
8419
+ from,
8420
+ durationInFrames,
8421
+ hidden,
8422
+ name: name ?? "<Img>",
8423
+ showInTimeline,
8424
+ stack,
8425
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/img" : undefined,
8426
+ _experimentalControls: controls,
8427
+ ...canvasProps
8428
+ });
8429
+ };
8430
+ var Img = wrapInSchema(ImgInner, imgSchema);
8431
+ addSequenceStackTraces(Img);
8268
8432
  var compositionsRef = React28.createRef();
8269
8433
  var CompositionManagerProvider = ({
8270
8434
  children,
@@ -8276,7 +8440,7 @@ var CompositionManagerProvider = ({
8276
8440
  const [folders, setFolders] = useState18([]);
8277
8441
  const [canvasContent, setCanvasContent] = useState18(initialCanvasContent);
8278
8442
  const [compositions, setCompositions] = useState18(initialCompositions);
8279
- const currentcompositionsRef = useRef22(compositions);
8443
+ const currentcompositionsRef = useRef23(compositions);
8280
8444
  const updateCompositions = useCallback19((updateComps) => {
8281
8445
  setCompositions((comps) => {
8282
8446
  const updated = updateComps(comps);
@@ -8314,7 +8478,7 @@ var CompositionManagerProvider = ({
8314
8478
  return prevFolders.filter((p) => !(p.name === name && p.parent === parent));
8315
8479
  });
8316
8480
  }, []);
8317
- useImperativeHandle7(compositionsRef, () => {
8481
+ useImperativeHandle8(compositionsRef, () => {
8318
8482
  return {
8319
8483
  getCompositions: () => currentcompositionsRef.current
8320
8484
  };
@@ -8839,7 +9003,7 @@ var OffthreadVideoForRendering = ({
8839
9003
  mediaFrame: frame,
8840
9004
  playbackRate,
8841
9005
  toneFrequency,
8842
- audioStartFrame: Math.max(0, -(sequenceContext?.relativeFrom ?? 0)),
9006
+ audioStartFrame: Math.max(0, -(sequenceContext?.cumulatedNegativeFrom ?? 0)),
8843
9007
  audioStreamIndex
8844
9008
  });
8845
9009
  return () => unregisterRenderAsset(id);
@@ -8854,7 +9018,7 @@ var OffthreadVideoForRendering = ({
8854
9018
  absoluteFrame,
8855
9019
  playbackRate,
8856
9020
  toneFrequency,
8857
- sequenceContext?.relativeFrom,
9021
+ sequenceContext?.cumulatedNegativeFrom,
8858
9022
  audioStreamIndex
8859
9023
  ]);
8860
9024
  const currentTime = useMemo35(() => {
@@ -9014,7 +9178,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
9014
9178
  if (!context) {
9015
9179
  throw new Error("SharedAudioContext not found");
9016
9180
  }
9017
- const videoRef = useRef23(null);
9181
+ const videoRef = useRef24(null);
9018
9182
  const sharedSource = useMemo36(() => {
9019
9183
  if (!context.audioContext) {
9020
9184
  return null;
@@ -9098,7 +9262,8 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
9098
9262
  premountDisplay: parentSequence?.premountDisplay ?? null,
9099
9263
  postmountDisplay: parentSequence?.postmountDisplay ?? null,
9100
9264
  loopDisplay: undefined,
9101
- documentationLink: name === undefined ? onlyWarnForMediaSeekingError ? "https://www.remotion.dev/docs/offthreadvideo" : "https://www.remotion.dev/docs/html5-video" : null
9265
+ documentationLink: name === undefined ? onlyWarnForMediaSeekingError ? "https://www.remotion.dev/docs/offthreadvideo" : "https://www.remotion.dev/docs/html5-video" : null,
9266
+ refForOutline: videoRef
9102
9267
  });
9103
9268
  useMediaPlayback({
9104
9269
  mediaRef: videoRef,
@@ -9137,7 +9302,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
9137
9302
  duration,
9138
9303
  fps
9139
9304
  });
9140
- useImperativeHandle8(ref, () => {
9305
+ useImperativeHandle9(ref, () => {
9141
9306
  return videoRef.current;
9142
9307
  }, []);
9143
9308
  useState20(() => playbackLogging({
@@ -9186,7 +9351,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
9186
9351
  current.removeEventListener("error", errorHandler);
9187
9352
  };
9188
9353
  }, [onError, src]);
9189
- const currentOnDurationCallback = useRef23(onDuration);
9354
+ const currentOnDurationCallback = useRef24(onDuration);
9190
9355
  currentOnDurationCallback.current = onDuration;
9191
9356
  useEmitVideoFrame({ ref: videoRef, onVideoFrame });
9192
9357
  useEffect19(() => {
@@ -10207,7 +10372,7 @@ var VideoForRenderingForwardFunction = ({
10207
10372
  const frame = useCurrentFrame();
10208
10373
  const volumePropsFrame = useFrameForVolumeProp(loopVolumeCurveBehavior ?? "repeat");
10209
10374
  const videoConfig = useUnsafeVideoConfig();
10210
- const videoRef = useRef24(null);
10375
+ const videoRef = useRef25(null);
10211
10376
  const sequenceContext = useContext37(SequenceContext);
10212
10377
  const mediaStartsAt = useMediaStartsAt();
10213
10378
  const environment = useRemotionEnvironment();
@@ -10252,7 +10417,7 @@ var VideoForRenderingForwardFunction = ({
10252
10417
  mediaFrame: frame,
10253
10418
  playbackRate: playbackRate ?? 1,
10254
10419
  toneFrequency: toneFrequency ?? 1,
10255
- audioStartFrame: Math.max(0, -(sequenceContext?.relativeFrom ?? 0)),
10420
+ audioStartFrame: Math.max(0, -(sequenceContext?.cumulatedNegativeFrom ?? 0)),
10256
10421
  audioStreamIndex: audioStreamIndex ?? 0
10257
10422
  });
10258
10423
  return () => unregisterRenderAsset(id);
@@ -10267,10 +10432,10 @@ var VideoForRenderingForwardFunction = ({
10267
10432
  absoluteFrame,
10268
10433
  playbackRate,
10269
10434
  toneFrequency,
10270
- sequenceContext?.relativeFrom,
10435
+ sequenceContext?.cumulatedNegativeFrom,
10271
10436
  audioStreamIndex
10272
10437
  ]);
10273
- useImperativeHandle9(ref, () => {
10438
+ useImperativeHandle10(ref, () => {
10274
10439
  return videoRef.current;
10275
10440
  }, []);
10276
10441
  useEffect20(() => {
@@ -10979,7 +11144,7 @@ var ExpertsPageContent = ({ Link }) => {
10979
11144
  import * as React24 from "react";
10980
11145
  import * as React8 from "react";
10981
11146
  import { Fragment as Fragment22, jsx as jsx45 } from "react/jsx-runtime";
10982
- import React52, { useCallback as useCallback25, useRef as useRef25, useState as useState22 } from "react";
11147
+ import React52, { useCallback as useCallback25, useRef as useRef26, useState as useState22 } from "react";
10983
11148
 
10984
11149
  // ../../node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
10985
11150
  function r(e) {
@@ -16661,7 +16826,7 @@ var extrudeAndTransformElement = (options) => {
16661
16826
  // ../design/dist/esm/index.mjs
16662
16827
  import { jsx as jsx212, Fragment as Fragment3 } from "react/jsx-runtime";
16663
16828
  import { jsx as jsx312, jsxs as jsxs6 } from "react/jsx-runtime";
16664
- import { useEffect as useEffect22, useMemo as useMemo210, useRef as useRef26 } from "react";
16829
+ import { useEffect as useEffect22, useMemo as useMemo210, useRef as useRef27 } from "react";
16665
16830
  import { jsx as jsx46 } from "react/jsx-runtime";
16666
16831
  import { jsx as jsx53, jsxs as jsxs23 } from "react/jsx-runtime";
16667
16832
  import React62 from "react";
@@ -16713,8 +16878,8 @@ import * as React282 from "react";
16713
16878
  import { jsx as jsx232 } from "react/jsx-runtime";
16714
16879
  import * as React35 from "react";
16715
16880
  import * as React312 from "react";
16716
- import * as React292 from "react";
16717
16881
  import { useState as useState112 } from "react";
16882
+ import * as React292 from "react";
16718
16883
  import * as React30 from "react";
16719
16884
  import * as React342 from "react";
16720
16885
  import * as React332 from "react";
@@ -17183,7 +17348,7 @@ var Spinner = ({ size, duration }) => {
17183
17348
  height: size
17184
17349
  };
17185
17350
  }, [size]);
17186
- const pathsRef = useRef26([]);
17351
+ const pathsRef = useRef27([]);
17187
17352
  useEffect22(() => {
17188
17353
  const animate = () => {
17189
17354
  const now = performance.now();
@@ -17229,7 +17394,7 @@ var Button = ({
17229
17394
  ...rest
17230
17395
  }) => {
17231
17396
  const [dimensions, setDimensions] = useState22(null);
17232
- const ref = useRef25(null);
17397
+ const ref = useRef26(null);
17233
17398
  const { isActive, progress } = useHoverTransforms(ref, Boolean(disabled || loading));
17234
17399
  const onPointerEnter = useCallback25((e) => {
17235
17400
  if (e.pointerType !== "mouse") {
@@ -20469,7 +20634,7 @@ var hideOthers = function(originalTarget, parentNode, markerName) {
20469
20634
  return applyAttributeToOthers(targets, activeParentNode, markerName, "aria-hidden");
20470
20635
  };
20471
20636
  var __assign = function() {
20472
- __assign = Object.assign || function __assign2(t) {
20637
+ __assign = Object.assign || function __assign(t) {
20473
20638
  for (var s, i = 1, n = arguments.length;i < n; i++) {
20474
20639
  s = arguments[i];
20475
20640
  for (var p in s)
@@ -22256,17 +22421,17 @@ function createContextScope2(scopeName, createContextScopeDeps = []) {
22256
22421
  let defaultContexts = [];
22257
22422
  function createContext32(rootComponentName, defaultContext) {
22258
22423
  const BaseContext = React382.createContext(defaultContext);
22259
- const index3 = defaultContexts.length;
22424
+ const index2 = defaultContexts.length;
22260
22425
  defaultContexts = [...defaultContexts, defaultContext];
22261
22426
  const Provider = (props) => {
22262
22427
  const { scope, children, ...context } = props;
22263
- const Context = scope?.[scopeName]?.[index3] || BaseContext;
22428
+ const Context = scope?.[scopeName]?.[index2] || BaseContext;
22264
22429
  const value = React382.useMemo(() => context, Object.values(context));
22265
22430
  return /* @__PURE__ */ jsx272(Context.Provider, { value, children });
22266
22431
  };
22267
22432
  Provider.displayName = rootComponentName + "Provider";
22268
22433
  function useContext222(consumerName, scope) {
22269
- const Context = scope?.[scopeName]?.[index3] || BaseContext;
22434
+ const Context = scope?.[scopeName]?.[index2] || BaseContext;
22270
22435
  const context = React382.useContext(Context);
22271
22436
  if (context)
22272
22437
  return context;
@@ -22463,10 +22628,10 @@ var OrderedDict = class _OrderedDict extends Map {
22463
22628
  super.set(key, value);
22464
22629
  return this;
22465
22630
  }
22466
- insert(index3, key, value) {
22631
+ insert(index2, key, value) {
22467
22632
  const has = this.has(key);
22468
22633
  const length2 = this.#keys.length;
22469
- const relativeIndex = toSafeInteger(index3);
22634
+ const relativeIndex = toSafeInteger(index2);
22470
22635
  let actualIndex = relativeIndex >= 0 ? relativeIndex : length2 + relativeIndex;
22471
22636
  const safeIndex = actualIndex < 0 || actualIndex >= length2 ? -1 : actualIndex;
22472
22637
  if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {
@@ -22504,39 +22669,39 @@ var OrderedDict = class _OrderedDict extends Map {
22504
22669
  }
22505
22670
  return this;
22506
22671
  }
22507
- with(index3, key, value) {
22672
+ with(index2, key, value) {
22508
22673
  const copy = new _OrderedDict(this);
22509
- copy.insert(index3, key, value);
22674
+ copy.insert(index2, key, value);
22510
22675
  return copy;
22511
22676
  }
22512
22677
  before(key) {
22513
- const index3 = this.#keys.indexOf(key) - 1;
22514
- if (index3 < 0) {
22678
+ const index2 = this.#keys.indexOf(key) - 1;
22679
+ if (index2 < 0) {
22515
22680
  return;
22516
22681
  }
22517
- return this.entryAt(index3);
22682
+ return this.entryAt(index2);
22518
22683
  }
22519
22684
  setBefore(key, newKey, value) {
22520
- const index3 = this.#keys.indexOf(key);
22521
- if (index3 === -1) {
22685
+ const index2 = this.#keys.indexOf(key);
22686
+ if (index2 === -1) {
22522
22687
  return this;
22523
22688
  }
22524
- return this.insert(index3, newKey, value);
22689
+ return this.insert(index2, newKey, value);
22525
22690
  }
22526
22691
  after(key) {
22527
- let index3 = this.#keys.indexOf(key);
22528
- index3 = index3 === -1 || index3 === this.size - 1 ? -1 : index3 + 1;
22529
- if (index3 === -1) {
22692
+ let index2 = this.#keys.indexOf(key);
22693
+ index2 = index2 === -1 || index2 === this.size - 1 ? -1 : index2 + 1;
22694
+ if (index2 === -1) {
22530
22695
  return;
22531
22696
  }
22532
- return this.entryAt(index3);
22697
+ return this.entryAt(index2);
22533
22698
  }
22534
22699
  setAfter(key, newKey, value) {
22535
- const index3 = this.#keys.indexOf(key);
22536
- if (index3 === -1) {
22700
+ const index2 = this.#keys.indexOf(key);
22701
+ if (index2 === -1) {
22537
22702
  return this;
22538
22703
  }
22539
- return this.insert(index3 + 1, newKey, value);
22704
+ return this.insert(index2 + 1, newKey, value);
22540
22705
  }
22541
22706
  first() {
22542
22707
  return this.entryAt(0);
@@ -22555,21 +22720,21 @@ var OrderedDict = class _OrderedDict extends Map {
22555
22720
  }
22556
22721
  return deleted;
22557
22722
  }
22558
- deleteAt(index3) {
22559
- const key = this.keyAt(index3);
22723
+ deleteAt(index2) {
22724
+ const key = this.keyAt(index2);
22560
22725
  if (key !== undefined) {
22561
22726
  return this.delete(key);
22562
22727
  }
22563
22728
  return false;
22564
22729
  }
22565
- at(index3) {
22566
- const key = at(this.#keys, index3);
22730
+ at(index2) {
22731
+ const key = at(this.#keys, index2);
22567
22732
  if (key !== undefined) {
22568
22733
  return this.get(key);
22569
22734
  }
22570
22735
  }
22571
- entryAt(index3) {
22572
- const key = at(this.#keys, index3);
22736
+ entryAt(index2) {
22737
+ const key = at(this.#keys, index2);
22573
22738
  if (key !== undefined) {
22574
22739
  return [key, this.get(key)];
22575
22740
  }
@@ -22577,15 +22742,15 @@ var OrderedDict = class _OrderedDict extends Map {
22577
22742
  indexOf(key) {
22578
22743
  return this.#keys.indexOf(key);
22579
22744
  }
22580
- keyAt(index3) {
22581
- return at(this.#keys, index3);
22745
+ keyAt(index2) {
22746
+ return at(this.#keys, index2);
22582
22747
  }
22583
22748
  from(key, offset4) {
22584
- const index3 = this.indexOf(key);
22585
- if (index3 === -1) {
22749
+ const index2 = this.indexOf(key);
22750
+ if (index2 === -1) {
22586
22751
  return;
22587
22752
  }
22588
- let dest = index3 + offset4;
22753
+ let dest = index2 + offset4;
22589
22754
  if (dest < 0)
22590
22755
  dest = 0;
22591
22756
  if (dest >= this.size)
@@ -22593,11 +22758,11 @@ var OrderedDict = class _OrderedDict extends Map {
22593
22758
  return this.at(dest);
22594
22759
  }
22595
22760
  keyFrom(key, offset4) {
22596
- const index3 = this.indexOf(key);
22597
- if (index3 === -1) {
22761
+ const index2 = this.indexOf(key);
22762
+ if (index2 === -1) {
22598
22763
  return;
22599
22764
  }
22600
- let dest = index3 + offset4;
22765
+ let dest = index2 + offset4;
22601
22766
  if (dest < 0)
22602
22767
  dest = 0;
22603
22768
  if (dest >= this.size)
@@ -22605,68 +22770,68 @@ var OrderedDict = class _OrderedDict extends Map {
22605
22770
  return this.keyAt(dest);
22606
22771
  }
22607
22772
  find(predicate, thisArg) {
22608
- let index3 = 0;
22773
+ let index2 = 0;
22609
22774
  for (const entry of this) {
22610
- if (Reflect.apply(predicate, thisArg, [entry, index3, this])) {
22775
+ if (Reflect.apply(predicate, thisArg, [entry, index2, this])) {
22611
22776
  return entry;
22612
22777
  }
22613
- index3++;
22778
+ index2++;
22614
22779
  }
22615
22780
  return;
22616
22781
  }
22617
22782
  findIndex(predicate, thisArg) {
22618
- let index3 = 0;
22783
+ let index2 = 0;
22619
22784
  for (const entry of this) {
22620
- if (Reflect.apply(predicate, thisArg, [entry, index3, this])) {
22621
- return index3;
22785
+ if (Reflect.apply(predicate, thisArg, [entry, index2, this])) {
22786
+ return index2;
22622
22787
  }
22623
- index3++;
22788
+ index2++;
22624
22789
  }
22625
22790
  return -1;
22626
22791
  }
22627
22792
  filter(predicate, thisArg) {
22628
22793
  const entries = [];
22629
- let index3 = 0;
22794
+ let index2 = 0;
22630
22795
  for (const entry of this) {
22631
- if (Reflect.apply(predicate, thisArg, [entry, index3, this])) {
22796
+ if (Reflect.apply(predicate, thisArg, [entry, index2, this])) {
22632
22797
  entries.push(entry);
22633
22798
  }
22634
- index3++;
22799
+ index2++;
22635
22800
  }
22636
22801
  return new _OrderedDict(entries);
22637
22802
  }
22638
22803
  map(callbackfn, thisArg) {
22639
22804
  const entries = [];
22640
- let index3 = 0;
22805
+ let index2 = 0;
22641
22806
  for (const entry of this) {
22642
- entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index3, this])]);
22643
- index3++;
22807
+ entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index2, this])]);
22808
+ index2++;
22644
22809
  }
22645
22810
  return new _OrderedDict(entries);
22646
22811
  }
22647
22812
  reduce(...args) {
22648
22813
  const [callbackfn, initialValue] = args;
22649
- let index3 = 0;
22814
+ let index2 = 0;
22650
22815
  let accumulator = initialValue ?? this.at(0);
22651
22816
  for (const entry of this) {
22652
- if (index3 === 0 && args.length === 1) {
22817
+ if (index2 === 0 && args.length === 1) {
22653
22818
  accumulator = entry;
22654
22819
  } else {
22655
- accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index3, this]);
22820
+ accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index2, this]);
22656
22821
  }
22657
- index3++;
22822
+ index2++;
22658
22823
  }
22659
22824
  return accumulator;
22660
22825
  }
22661
22826
  reduceRight(...args) {
22662
22827
  const [callbackfn, initialValue] = args;
22663
22828
  let accumulator = initialValue ?? this.at(-1);
22664
- for (let index3 = this.size - 1;index3 >= 0; index3--) {
22665
- const entry = this.at(index3);
22666
- if (index3 === this.size - 1 && args.length === 1) {
22829
+ for (let index2 = this.size - 1;index2 >= 0; index2--) {
22830
+ const entry = this.at(index2);
22831
+ if (index2 === this.size - 1 && args.length === 1) {
22667
22832
  accumulator = entry;
22668
22833
  } else {
22669
- accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index3, this]);
22834
+ accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index2, this]);
22670
22835
  }
22671
22836
  }
22672
22837
  return accumulator;
@@ -22677,8 +22842,8 @@ var OrderedDict = class _OrderedDict extends Map {
22677
22842
  }
22678
22843
  toReversed() {
22679
22844
  const reversed = new _OrderedDict;
22680
- for (let index3 = this.size - 1;index3 >= 0; index3--) {
22681
- const key = this.keyAt(index3);
22845
+ for (let index2 = this.size - 1;index2 >= 0; index2--) {
22846
+ const key = this.keyAt(index2);
22682
22847
  const element = this.get(key);
22683
22848
  reversed.set(key, element);
22684
22849
  }
@@ -22701,44 +22866,44 @@ var OrderedDict = class _OrderedDict extends Map {
22701
22866
  if (end !== undefined && end > 0) {
22702
22867
  stop = end - 1;
22703
22868
  }
22704
- for (let index3 = start;index3 <= stop; index3++) {
22705
- const key = this.keyAt(index3);
22869
+ for (let index2 = start;index2 <= stop; index2++) {
22870
+ const key = this.keyAt(index2);
22706
22871
  const element = this.get(key);
22707
22872
  result.set(key, element);
22708
22873
  }
22709
22874
  return result;
22710
22875
  }
22711
22876
  every(predicate, thisArg) {
22712
- let index3 = 0;
22877
+ let index2 = 0;
22713
22878
  for (const entry of this) {
22714
- if (!Reflect.apply(predicate, thisArg, [entry, index3, this])) {
22879
+ if (!Reflect.apply(predicate, thisArg, [entry, index2, this])) {
22715
22880
  return false;
22716
22881
  }
22717
- index3++;
22882
+ index2++;
22718
22883
  }
22719
22884
  return true;
22720
22885
  }
22721
22886
  some(predicate, thisArg) {
22722
- let index3 = 0;
22887
+ let index2 = 0;
22723
22888
  for (const entry of this) {
22724
- if (Reflect.apply(predicate, thisArg, [entry, index3, this])) {
22889
+ if (Reflect.apply(predicate, thisArg, [entry, index2, this])) {
22725
22890
  return true;
22726
22891
  }
22727
- index3++;
22892
+ index2++;
22728
22893
  }
22729
22894
  return false;
22730
22895
  }
22731
22896
  };
22732
- function at(array, index3) {
22897
+ function at(array, index2) {
22733
22898
  if ("at" in Array.prototype) {
22734
- return Array.prototype.at.call(array, index3);
22899
+ return Array.prototype.at.call(array, index2);
22735
22900
  }
22736
- const actualIndex = toSafeIndex(array, index3);
22901
+ const actualIndex = toSafeIndex(array, index2);
22737
22902
  return actualIndex === -1 ? undefined : array[actualIndex];
22738
22903
  }
22739
- function toSafeIndex(array, index3) {
22904
+ function toSafeIndex(array, index2) {
22740
22905
  const length2 = array.length;
22741
- const relativeIndex = toSafeInteger(index3);
22906
+ const relativeIndex = toSafeInteger(index2);
22742
22907
  const actualIndex = relativeIndex >= 0 ? relativeIndex : length2 + relativeIndex;
22743
22908
  return actualIndex < 0 || actualIndex >= length2 ? -1 : actualIndex;
22744
22909
  }
@@ -22790,7 +22955,7 @@ var Primitive2 = NODES2.reduce((primitive, node) => {
22790
22955
  Node2.displayName = `Primitive.${node}`;
22791
22956
  return { ...primitive, [node]: Node2 };
22792
22957
  }, {});
22793
- function useCallbackRef4(callback) {
22958
+ function useCallbackRef3(callback) {
22794
22959
  const callbackRef = React44.useRef(callback);
22795
22960
  React44.useEffect(() => {
22796
22961
  callbackRef.current = callback;
@@ -22894,7 +23059,7 @@ var RovingFocusGroupImpl = React47.forwardRef((props, forwardedRef) => {
22894
23059
  caller: GROUP_NAME2
22895
23060
  });
22896
23061
  const [isTabbingBackOut, setIsTabbingBackOut] = React47.useState(false);
22897
- const handleEntryFocus = useCallbackRef4(onEntryFocus);
23062
+ const handleEntryFocus = useCallbackRef3(onEntryFocus);
22898
23063
  const getItems = useCollection2(__scopeRovingFocusGroup);
22899
23064
  const isClickFocusRef = React47.useRef(false);
22900
23065
  const [focusableItemsCount, setFocusableItemsCount] = React47.useState(0);
@@ -23047,7 +23212,7 @@ function focusFirst2(candidates, preventScroll = false) {
23047
23212
  }
23048
23213
  }
23049
23214
  function wrapArray2(array, startIndex) {
23050
- return array.map((_, index3) => array[(startIndex + index3) % array.length]);
23215
+ return array.map((_, index2) => array[(startIndex + index2) % array.length]);
23051
23216
  }
23052
23217
  var Root3 = RovingFocusGroup;
23053
23218
  var Item2 = RovingFocusGroupItem;
@@ -25539,7 +25704,7 @@ var GitHubStars = () => {
25539
25704
  width: "45px"
25540
25705
  }),
25541
25706
  /* @__PURE__ */ jsx51(StatItemContent, {
25542
- content: "47k",
25707
+ content: "48k",
25543
25708
  width: "80px",
25544
25709
  fontSize: "2.5rem",
25545
25710
  fontWeight: "bold"
@@ -25737,9 +25902,9 @@ import { useContext as useContext45, useLayoutEffect as useLayoutEffect17 } from
25737
25902
  import { jsx as jsx314 } from "react/jsx-runtime";
25738
25903
  import { useEffect as useEffect210, useState as useState210 } from "react";
25739
25904
  import { useLayoutEffect as useLayoutEffect23 } from "react";
25740
- import { useContext as useContext46, useEffect as useEffect52, useRef as useRef43 } from "react";
25741
- import { useEffect as useEffect310, useRef as useRef27 } from "react";
25742
- import { useCallback as useCallback36, useContext as useContext310, useMemo as useMemo53, useRef as useRef44, useState as useState39 } from "react";
25905
+ import { useContext as useContext46, useEffect as useEffect52, useRef as useRef44 } from "react";
25906
+ import { useEffect as useEffect310, useRef as useRef28 } from "react";
25907
+ import { useCallback as useCallback36, useContext as useContext310, useMemo as useMemo53, useRef as useRef45, useState as useState39 } from "react";
25743
25908
  import { useEffect as useEffect42, useRef as useRef310 } from "react";
25744
25909
  import { useCallback as useCallback210, useEffect as useEffect62, useMemo as useMemo212, useState as useState42 } from "react";
25745
25910
  import {
@@ -25757,7 +25922,7 @@ import React102, {
25757
25922
  useCallback as useCallback102,
25758
25923
  useContext as useContext52,
25759
25924
  useEffect as useEffect122,
25760
- useImperativeHandle as useImperativeHandle10,
25925
+ useImperativeHandle as useImperativeHandle11,
25761
25926
  useMemo as useMemo122,
25762
25927
  useRef as useRef102,
25763
25928
  useState as useState113
@@ -25840,8 +26005,8 @@ function checkValidInputRange2(arr) {
25840
26005
  }
25841
26006
  }
25842
26007
  function checkInfiniteRange2(name, arr) {
25843
- if (arr.length < 2) {
25844
- throw new Error(name + " must have at least 2 elements");
26008
+ if (arr.length < 1) {
26009
+ throw new Error(name + " must have at least 1 element");
25845
26010
  }
25846
26011
  for (const element of arr) {
25847
26012
  if (typeof element !== "number") {
@@ -25908,6 +26073,9 @@ function interpolate3(input, inputRange, outputRange, options2) {
25908
26073
  if (typeof input !== "number") {
25909
26074
  throw new TypeError("Cannot interpolate an input which is not a number");
25910
26075
  }
26076
+ if (inputRange.length === 1) {
26077
+ return outputRange[0];
26078
+ }
25911
26079
  const range = findRange2(input, inputRange);
25912
26080
  return interpolateFunction2(input, [inputRange[range], inputRange[range + 1]], [outputRange[range], outputRange[range + 1]], {
25913
26081
  easing: resolveEasingForSegment(range),
@@ -27256,13 +27424,13 @@ var usePlayer = () => {
27256
27424
  const [playing, setPlaying, imperativePlaying] = Internals.Timeline.usePlayingState();
27257
27425
  const [hasPlayed, setHasPlayed] = useState39(false);
27258
27426
  const frame = Internals.Timeline.useTimelinePosition();
27259
- const playStart = useRef44(frame);
27427
+ const playStart = useRef45(frame);
27260
27428
  const setFrame = Internals.Timeline.useTimelineSetFrame();
27261
27429
  const setTimelinePosition = Internals.Timeline.useTimelineSetFrame();
27262
27430
  const audioContext = useContext310(Internals.SharedAudioContext);
27263
27431
  const audioTagsContext = useContext310(Internals.SharedAudioTagsContext);
27264
27432
  const { audioAndVideoTags } = Internals.useTimelineContext();
27265
- const frameRef = useRef44(frame);
27433
+ const frameRef = useRef45(frame);
27266
27434
  frameRef.current = frame;
27267
27435
  const video = Internals.useVideo();
27268
27436
  const config = Internals.useUnsafeVideoConfig();
@@ -27432,7 +27600,7 @@ var useBrowserMediaSession = ({
27432
27600
  playbackRate
27433
27601
  }) => {
27434
27602
  const { playing, pause, play, emitter, getCurrentFrame, seek: seek2 } = usePlayer();
27435
- const hasEverPlayed = useRef27(false);
27603
+ const hasEverPlayed = useRef28(false);
27436
27604
  useEffect310(() => {
27437
27605
  if (playing) {
27438
27606
  hasEverPlayed.current = true;
@@ -27636,7 +27804,7 @@ var usePlayback = ({
27636
27804
  const sharedAudioContext = useContext46(Internals.SharedAudioContext);
27637
27805
  const logLevel = Internals.useLogLevel();
27638
27806
  const isBackgroundedRef = useIsBackgrounded();
27639
- const lastTimeUpdateTimestamp = useRef43(0);
27807
+ const lastTimeUpdateTimestamp = useRef44(0);
27640
27808
  const context = useContext46(Internals.BufferingContextReact);
27641
27809
  if (!context) {
27642
27810
  throw new Error("Missing the buffering context. Most likely you have a Remotion version mismatch.");
@@ -29298,7 +29466,7 @@ var PlayerUI = ({
29298
29466
  stopped = true;
29299
29467
  };
29300
29468
  }, [bufferStateDelayInMilliseconds, player.emitter]);
29301
- useImperativeHandle10(ref, () => {
29469
+ useImperativeHandle11(ref, () => {
29302
29470
  const methods = {
29303
29471
  play: player.play,
29304
29472
  pause: () => {
@@ -30306,7 +30474,7 @@ import {
30306
30474
  useCallback as useCallback51,
30307
30475
  useEffect as useEffect57,
30308
30476
  useMemo as useMemo67,
30309
- useRef as useRef55,
30477
+ useRef as useRef56,
30310
30478
  useState as useState56
30311
30479
  } from "react";
30312
30480
 
@@ -30362,7 +30530,7 @@ function _isNativeReflectConstruct() {
30362
30530
  try {
30363
30531
  var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
30364
30532
  } catch (t2) {}
30365
- return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() {
30533
+ return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {
30366
30534
  return !!t;
30367
30535
  })();
30368
30536
  }
@@ -30380,7 +30548,7 @@ function _construct(t, e, r2) {
30380
30548
  // ../../node_modules/.bun/@babel+runtime@7.27.1/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js
30381
30549
  function _wrapNativeSuper(t) {
30382
30550
  var r2 = typeof Map == "function" ? new Map : undefined;
30383
- return _wrapNativeSuper = function _wrapNativeSuper2(t2) {
30551
+ return _wrapNativeSuper = function _wrapNativeSuper(t2) {
30384
30552
  if (t2 === null || !_isNativeFunction(t2))
30385
30553
  return t2;
30386
30554
  if (typeof t2 != "function")
@@ -31083,7 +31251,7 @@ function useColorMode() {
31083
31251
  // ../media/dist/esm/index.mjs
31084
31252
  import { useState as useState311 } from "react";
31085
31253
  import { useMemo as useMemo312 } from "react";
31086
- import { useContext as useContext212, useEffect as useEffect43, useMemo as useMemo57, useRef as useRef46, useState as useState40 } from "react";
31254
+ import { useContext as useContext212, useEffect as useEffect43, useMemo as useMemo57, useRef as useRef47, useState as useState40 } from "react";
31087
31255
  import { ALL_FORMATS, Input as Input2, UrlSource } from "mediabunny";
31088
31256
  import { AudioBufferSink, InputDisposedError } from "mediabunny";
31089
31257
  import { CanvasSink } from "mediabunny";
@@ -33179,9 +33347,9 @@ var AudioForPreviewAssertedShowing = ({
33179
33347
  }) => {
33180
33348
  const videoConfig = useUnsafeVideoConfig2();
33181
33349
  const frame = useCurrentFrame();
33182
- const mediaPlayerRef = useRef46(null);
33183
- const initialTrimBeforeRef = useRef46(trimBefore);
33184
- const initialTrimAfterRef = useRef46(trimAfter);
33350
+ const mediaPlayerRef = useRef47(null);
33351
+ const initialTrimBeforeRef = useRef47(trimBefore);
33352
+ const initialTrimAfterRef = useRef47(trimAfter);
33185
33353
  const [initialRequestInit] = useState40(requestInit);
33186
33354
  const [mediaPlayerReady, setMediaPlayerReady] = useState40(false);
33187
33355
  const [shouldFallbackToNativeAudio, setShouldFallbackToNativeAudio] = useState40(false);
@@ -33205,7 +33373,7 @@ var AudioForPreviewAssertedShowing = ({
33205
33373
  throw new TypeError("No `src` was passed to <NewAudioForPreview>.");
33206
33374
  }
33207
33375
  const currentTime = frame / videoConfig.fps;
33208
- const currentTimeRef = useRef46(currentTime);
33376
+ const currentTimeRef = useRef47(currentTime);
33209
33377
  currentTimeRef.current = currentTime;
33210
33378
  const preloadedSrc = usePreload2(src);
33211
33379
  const parentSequence = useContext212(SequenceContext2);
@@ -33218,14 +33386,14 @@ var AudioForPreviewAssertedShowing = ({
33218
33386
  }
33219
33387
  const effectiveMuted = muted || mediaMuted || userPreferredVolume <= 0;
33220
33388
  const isPlayerBuffering = Internals.useIsPlayerBuffering(bufferingContext);
33221
- const initialPlaying = useRef46(playing && !isPlayerBuffering);
33222
- const initialIsPremounting = useRef46(isPremounting);
33223
- const initialIsPostmounting = useRef46(isPostmounting);
33224
- const initialGlobalPlaybackRate = useRef46(globalPlaybackRate);
33225
- const initialPlaybackRate = useRef46(playbackRate);
33226
- const initialMuted = useRef46(effectiveMuted);
33227
- const initialDurationInFrames = useRef46(videoConfig.durationInFrames);
33228
- const initialSequenceOffset = useRef46(sequenceOffset);
33389
+ const initialPlaying = useRef47(playing && !isPlayerBuffering);
33390
+ const initialIsPremounting = useRef47(isPremounting);
33391
+ const initialIsPostmounting = useRef47(isPostmounting);
33392
+ const initialGlobalPlaybackRate = useRef47(globalPlaybackRate);
33393
+ const initialPlaybackRate = useRef47(playbackRate);
33394
+ const initialMuted = useRef47(effectiveMuted);
33395
+ const initialDurationInFrames = useRef47(videoConfig.durationInFrames);
33396
+ const initialSequenceOffset = useRef47(sequenceOffset);
33229
33397
  useCommonEffects({
33230
33398
  mediaPlayerRef,
33231
33399
  mediaPlayerReady,
@@ -36611,12 +36779,12 @@ import {
36611
36779
  createRef as createRef4,
36612
36780
  useCallback as useCallback43,
36613
36781
  useEffect as useEffect48,
36614
- useRef as useRef50,
36782
+ useRef as useRef51,
36615
36783
  useState as useState47
36616
36784
  } from "react";
36617
36785
 
36618
36786
  // src/components/homepage/Demo/Card.tsx
36619
- import { useCallback as useCallback40, useRef as useRef47 } from "react";
36787
+ import { useCallback as useCallback40, useRef as useRef48 } from "react";
36620
36788
 
36621
36789
  // src/components/homepage/Demo/math.ts
36622
36790
  var paddingAndMargin = 20;
@@ -36714,7 +36882,7 @@ var Card2 = ({
36714
36882
  onClickRight
36715
36883
  }) => {
36716
36884
  const refToUse = refsToUse[index2];
36717
- const stopPrevious = useRef47([]);
36885
+ const stopPrevious = useRef48([]);
36718
36886
  let newIndices = [...indices];
36719
36887
  const applyPositions = useCallback40((except) => {
36720
36888
  let stopped = false;
@@ -36979,13 +37147,13 @@ import {
36979
37147
  forwardRef as forwardRef37,
36980
37148
  useCallback as useCallback41,
36981
37149
  useEffect as useEffect47,
36982
- useImperativeHandle as useImperativeHandle12,
36983
- useRef as useRef49
37150
+ useImperativeHandle as useImperativeHandle13,
37151
+ useRef as useRef50
36984
37152
  } from "react";
36985
37153
 
36986
37154
  // ../lottie/dist/esm/index.mjs
36987
37155
  import lottie from "lottie-web";
36988
- import { useEffect as useEffect45, useRef as useRef48, useState as useState44 } from "react";
37156
+ import { useEffect as useEffect45, useRef as useRef49, useState as useState44 } from "react";
36989
37157
  import { jsx as jsx68 } from "react/jsx-runtime";
36990
37158
  var getLottieMetadata = (animationData) => {
36991
37159
  const width2 = animationData.w;
@@ -37054,10 +37222,10 @@ var Lottie = ({
37054
37222
  }
37055
37223
  validatePlaybackRate2(playbackRate);
37056
37224
  validateLoop(loop);
37057
- const animationRef = useRef48(null);
37058
- const currentFrameRef = useRef48(null);
37059
- const containerRef = useRef48(null);
37060
- const onAnimationLoadedRef = useRef48(onAnimationLoaded);
37225
+ const animationRef = useRef49(null);
37226
+ const currentFrameRef = useRef49(null);
37227
+ const containerRef = useRef49(null);
37228
+ const onAnimationLoadedRef = useRef49(onAnimationLoaded);
37061
37229
  onAnimationLoadedRef.current = onAnimationLoaded;
37062
37230
  const { delayRender: delayRender2, continueRender } = useDelayRender();
37063
37231
  const [handle] = useState44(() => delayRender2("Waiting for Lottie animation to load"));
@@ -37257,10 +37425,10 @@ var emojiStyle = {
37257
37425
  top: "calc(50% - 50px)"
37258
37426
  };
37259
37427
  var EmojiCardRefFn = ({ emojiIndex }, ref) => {
37260
- const ref1 = useRef49(null);
37261
- const ref2 = useRef49(null);
37262
- const ref3 = useRef49(null);
37263
- const transforms = useRef49([-100, 0, 100]);
37428
+ const ref1 = useRef50(null);
37429
+ const ref2 = useRef50(null);
37430
+ const ref3 = useRef50(null);
37431
+ const transforms = useRef50([-100, 0, 100]);
37264
37432
  const onLeft = useCallback41(() => {
37265
37433
  if (!ref1.current || !ref2.current || !ref3.current) {
37266
37434
  return;
@@ -37294,7 +37462,7 @@ var EmojiCardRefFn = ({ emojiIndex }, ref) => {
37294
37462
  transforms: transforms.current
37295
37463
  });
37296
37464
  }, []);
37297
- useImperativeHandle12(ref, () => {
37465
+ useImperativeHandle13(ref, () => {
37298
37466
  return {
37299
37467
  onLeft,
37300
37468
  onRight
@@ -37706,14 +37874,14 @@ var Cards = ({
37706
37874
  location,
37707
37875
  trending
37708
37876
  }) => {
37709
- const container4 = useRef50(null);
37877
+ const container4 = useRef51(null);
37710
37878
  const [refs] = useState47(() => {
37711
37879
  return new Array(4).fill(true).map(() => {
37712
37880
  return createRef4();
37713
37881
  });
37714
37882
  });
37715
- const positions = useRef50(getInitialPositions());
37716
- const shouldBePositions = useRef50(getInitialPositions());
37883
+ const positions = useRef51(getInitialPositions());
37884
+ const shouldBePositions = useRef51(getInitialPositions());
37717
37885
  const { isRendering } = useRemotionEnvironment();
37718
37886
  useEffect48(() => {
37719
37887
  const { current } = container4;
@@ -37731,7 +37899,7 @@ var Cards = ({
37731
37899
  current.removeEventListener("click", onClick);
37732
37900
  };
37733
37901
  }, [onToggle]);
37734
- const ref = useRef50(null);
37902
+ const ref = useRef51(null);
37735
37903
  const onLeft = useCallback43(() => {
37736
37904
  ref.current?.onRight();
37737
37905
  onRightPress();
@@ -37904,7 +38072,7 @@ import {
37904
38072
  import { BufferTarget, StreamTarget } from "mediabunny";
37905
38073
 
37906
38074
  // ../core/dist/esm/version.mjs
37907
- var VERSION2 = "4.0.467";
38075
+ var VERSION2 = "4.0.469";
37908
38076
 
37909
38077
  // ../web-renderer/dist/esm/index.mjs
37910
38078
  import { AudioSample, VideoSample } from "mediabunny";
@@ -37912,7 +38080,7 @@ import { AudioSampleSource } from "mediabunny";
37912
38080
  import { createRef as createRef6 } from "react";
37913
38081
  import { flushSync as flushSync22 } from "react-dom";
37914
38082
  import ReactDOM6 from "react-dom/client";
37915
- import { useImperativeHandle as useImperativeHandle13, useState as useState49 } from "react";
38083
+ import { useImperativeHandle as useImperativeHandle14, useState as useState49 } from "react";
37916
38084
  import { flushSync as flushSync3 } from "react-dom";
37917
38085
  import { jsx as jsx87 } from "react/jsx-runtime";
37918
38086
  import { jsx as jsx217 } from "react/jsx-runtime";
@@ -38544,7 +38712,7 @@ var UpdateTime = ({
38544
38712
  timeUpdater
38545
38713
  }) => {
38546
38714
  const [frame, setFrame] = useState49(initialFrame);
38547
- useImperativeHandle13(timeUpdater, () => ({
38715
+ useImperativeHandle14(timeUpdater, () => ({
38548
38716
  update: (f) => {
38549
38717
  flushSync3(() => {
38550
38718
  setFrame(f);
@@ -42909,7 +43077,7 @@ var DragAndDropNudge = () => {
42909
43077
  };
42910
43078
 
42911
43079
  // src/components/homepage/Demo/PlayerSeekBar.tsx
42912
- import { useCallback as useCallback48, useEffect as useEffect51, useMemo as useMemo66, useRef as useRef51, useState as useState51 } from "react";
43080
+ import { useCallback as useCallback48, useEffect as useEffect51, useMemo as useMemo66, useRef as useRef53, useState as useState51 } from "react";
42913
43081
 
42914
43082
  // src/components/homepage/layout/use-el-size.ts
42915
43083
  import { useCallback as useCallback47, useEffect as useEffect50, useMemo as useMemo64, useState as useState50 } from "react";
@@ -43038,7 +43206,7 @@ var PlayerSeekBar2 = ({
43038
43206
  outFrame,
43039
43207
  playerRef
43040
43208
  }) => {
43041
- const containerRef = useRef51(null);
43209
+ const containerRef = useRef53(null);
43042
43210
  const barHovered = useHoverState2(containerRef, false);
43043
43211
  const size4 = useElementSize2(containerRef.current);
43044
43212
  const [playing, setPlaying] = useState51(false);
@@ -43187,7 +43355,7 @@ var PlayerSeekBar2 = ({
43187
43355
  };
43188
43356
 
43189
43357
  // src/components/homepage/Demo/PlayerVolume.tsx
43190
- import { useCallback as useCallback49, useEffect as useEffect53, useRef as useRef53, useState as useState54 } from "react";
43358
+ import { useCallback as useCallback49, useEffect as useEffect53, useRef as useRef55, useState as useState54 } from "react";
43191
43359
 
43192
43360
  // src/components/homepage/Demo/icons.tsx
43193
43361
  import { jsx as jsx100 } from "react/jsx-runtime";
@@ -43247,7 +43415,7 @@ import { jsx as jsx101 } from "react/jsx-runtime";
43247
43415
  var PlayerVolume = ({ playerRef }) => {
43248
43416
  const [muted, setIsMuted] = useState54(() => playerRef.current?.isMuted() ?? true);
43249
43417
  const [isHovered, setIsHovered] = useState54(false);
43250
- const timerRef = useRef53(null);
43418
+ const timerRef = useRef55(null);
43251
43419
  useEffect53(() => {
43252
43420
  const { current } = playerRef;
43253
43421
  if (!current) {
@@ -43536,7 +43704,7 @@ var playerWrapper = {
43536
43704
  var Demo = () => {
43537
43705
  const { colorMode } = useColorMode();
43538
43706
  const [data2, setData] = useState56(null);
43539
- const ref = useRef55(null);
43707
+ const ref = useRef56(null);
43540
43708
  const [isFullscreen, setIsFullscreen] = useState56(false);
43541
43709
  const [cardOrder, setCardOrder] = useState56([0, 1, 2, 3]);
43542
43710
  const [emojiIndex, setEmojiIndex] = useState56(0);
@@ -43694,15 +43862,15 @@ var ClearButton = (props) => {
43694
43862
 
43695
43863
  // src/components/homepage/MuxVideo.tsx
43696
43864
  import Hls2 from "hls.js";
43697
- import { forwardRef as forwardRef40, useEffect as useEffect59, useImperativeHandle as useImperativeHandle14, useRef as useRef57 } from "react";
43865
+ import { forwardRef as forwardRef40, useEffect as useEffect59, useImperativeHandle as useImperativeHandle15, useRef as useRef58 } from "react";
43698
43866
 
43699
43867
  // src/components/homepage/VideoPlayerWithControls.tsx
43700
43868
  import Hls from "hls.js";
43701
43869
  import"plyr/dist/plyr.css";
43702
- import { forwardRef as forwardRef39, useCallback as useCallback53, useEffect as useEffect58, useRef as useRef56, useState as useState57 } from "react";
43870
+ import { forwardRef as forwardRef39, useCallback as useCallback53, useEffect as useEffect58, useRef as useRef57, useState as useState57 } from "react";
43703
43871
  import { jsx as jsx114 } from "react/jsx-runtime";
43704
43872
  var useCombinedRefs = function(...refs) {
43705
- const targetRef = useRef56(null);
43873
+ const targetRef = useRef57(null);
43706
43874
  useEffect58(() => {
43707
43875
  refs.forEach((ref) => {
43708
43876
  if (!ref)
@@ -43717,9 +43885,9 @@ var useCombinedRefs = function(...refs) {
43717
43885
  return targetRef;
43718
43886
  };
43719
43887
  var VideoPlayerWithControls = forwardRef39(({ playbackId, poster, currentTime, onLoaded, onError, onSize, autoPlay }, ref) => {
43720
- const videoRef = useRef56(null);
43888
+ const videoRef = useRef57(null);
43721
43889
  const metaRef = useCombinedRefs(ref, videoRef);
43722
- const playerRef = useRef56(null);
43890
+ const playerRef = useRef57(null);
43723
43891
  const [playerInitTime] = useState57(Date.now());
43724
43892
  const videoError = useCallback53((event) => onError(event), [onError]);
43725
43893
  const onImageLoad = useCallback53((event) => {
@@ -43804,9 +43972,9 @@ var getVideoToPlayUrl = (muxId) => {
43804
43972
  return `https://stream.mux.com/${muxId}.m3u8`;
43805
43973
  };
43806
43974
  var MuxVideoForward = ({ muxId, ...props }, ref) => {
43807
- const videoRef = useRef57(null);
43975
+ const videoRef = useRef58(null);
43808
43976
  const vidUrl = getVideoToPlayUrl(muxId);
43809
- useImperativeHandle14(ref, () => videoRef.current, []);
43977
+ useImperativeHandle15(ref, () => videoRef.current, []);
43810
43978
  useEffect59(() => {
43811
43979
  let hls;
43812
43980
  if (videoRef.current) {
@@ -44184,14 +44352,14 @@ var NewsletterButton = () => {
44184
44352
  };
44185
44353
 
44186
44354
  // src/components/homepage/ParameterizeAndEdit.tsx
44187
- import { useEffect as useEffect63, useRef as useRef58, useState as useState61 } from "react";
44355
+ import { useEffect as useEffect63, useRef as useRef59, useState as useState61 } from "react";
44188
44356
  import { jsx as jsx121, jsxs as jsxs46 } from "react/jsx-runtime";
44189
44357
  var icon3 = {
44190
44358
  height: 16,
44191
44359
  marginLeft: 10
44192
44360
  };
44193
44361
  var ParameterizeAndEdit = () => {
44194
- const ref = useRef58(null);
44362
+ const ref = useRef59(null);
44195
44363
  const [vid, setVid] = useState61("/img/editing-vp9-chrome.webm");
44196
44364
  useEffect63(() => {
44197
44365
  if (isWebkit()) {
@@ -44307,15 +44475,15 @@ var ParameterizeAndEdit = () => {
44307
44475
  };
44308
44476
 
44309
44477
  // src/components/homepage/RealMp4Videos.tsx
44310
- import { useEffect as useEffect65, useRef as useRef59, useState as useState64 } from "react";
44478
+ import { useEffect as useEffect65, useRef as useRef60, useState as useState64 } from "react";
44311
44479
  import { jsx as jsx124, jsxs as jsxs47 } from "react/jsx-runtime";
44312
44480
  var icon4 = {
44313
44481
  height: 16,
44314
44482
  marginLeft: 10
44315
44483
  };
44316
44484
  var RealMP4Videos = () => {
44317
- const ref = useRef59(null);
44318
- const videoRef = useRef59(null);
44485
+ const ref = useRef60(null);
44486
+ const videoRef = useRef60(null);
44319
44487
  const [vid, setVid] = useState64("/img/render-progress.webm");
44320
44488
  useEffect65(() => {
44321
44489
  if (isWebkit()) {
@@ -44568,7 +44736,7 @@ var TrustedByBanner = () => {
44568
44736
  var TrustedByBanner_default = TrustedByBanner;
44569
44737
 
44570
44738
  // src/components/homepage/VideoAppsShowcase.tsx
44571
- import { useRef as useRef60, useState as useState66 } from "react";
44739
+ import { useRef as useRef61, useState as useState66 } from "react";
44572
44740
  import { jsx as jsx127, jsxs as jsxs49 } from "react/jsx-runtime";
44573
44741
  var tabs = [
44574
44742
  "Music visualization",
@@ -44625,8 +44793,8 @@ var VideoAppsShowcase = () => {
44625
44793
  const [isMuted, setIsMuted] = useState66(true);
44626
44794
  const [isPlaying, setIsPlaying] = useState66(false);
44627
44795
  const [videoLoaded, setVideoLoaded] = useState66(false);
44628
- const videoRef = useRef60(null);
44629
- const containerRef = useRef60(null);
44796
+ const videoRef = useRef61(null);
44797
+ const containerRef = useRef61(null);
44630
44798
  const handleTabChange = (index2) => {
44631
44799
  const video = videoRef.current;
44632
44800
  if (video) {
@@ -46170,7 +46338,7 @@ var GithubButton = () => {
46170
46338
  " ",
46171
46339
  /* @__PURE__ */ jsx161("div", {
46172
46340
  className: "text-xs inline-block ml-2 leading-none mt-[3px] self-center",
46173
- children: "47k"
46341
+ children: "48k"
46174
46342
  })
46175
46343
  ]
46176
46344
  });