@remotion/promo-pages 4.0.474 → 4.0.476

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 (276) hide show
  1. package/dist/Homepage.js +1941 -1480
  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/AutomationsSection.d.ts +3 -0
  39. package/dist/components/homepage/AutomationsSection.js +85 -0
  40. package/dist/components/homepage/BackgroundAnimation.d.ts +2 -0
  41. package/dist/components/homepage/BackgroundAnimation.js +66 -0
  42. package/dist/components/homepage/ChooseTemplate.d.ts +2 -0
  43. package/dist/components/homepage/ChooseTemplate.js +25 -0
  44. package/dist/components/homepage/CommunityStats.d.ts +3 -0
  45. package/dist/components/homepage/CommunityStats.js +6 -0
  46. package/dist/components/homepage/CommunityStatsItems.d.ts +7 -0
  47. package/dist/components/homepage/CommunityStatsItems.js +58 -0
  48. package/dist/components/homepage/Demo/Card.d.ts +15 -0
  49. package/dist/components/homepage/Demo/Card.js +174 -0
  50. package/dist/components/homepage/Demo/Cards.d.ts +15 -0
  51. package/dist/components/homepage/Demo/Cards.js +57 -0
  52. package/dist/components/homepage/Demo/Comp.d.ts +38 -0
  53. package/dist/components/homepage/Demo/Comp.js +72 -0
  54. package/dist/components/homepage/Demo/CurrentCountry.d.ts +9 -0
  55. package/dist/components/homepage/Demo/CurrentCountry.js +48 -0
  56. package/dist/components/homepage/Demo/DemoError.d.ts +2 -0
  57. package/dist/components/homepage/Demo/DemoError.js +10 -0
  58. package/dist/components/homepage/Demo/DemoErrorIcon.d.ts +2 -0
  59. package/dist/components/homepage/Demo/DemoErrorIcon.js +16 -0
  60. package/dist/components/homepage/Demo/DemoRender.d.ts +33 -0
  61. package/dist/components/homepage/Demo/DemoRender.js +107 -0
  62. package/dist/components/homepage/Demo/DigitWheel.d.ts +9 -0
  63. package/dist/components/homepage/Demo/DigitWheel.js +94 -0
  64. package/dist/components/homepage/Demo/DisplayedEmoji.d.ts +5 -0
  65. package/dist/components/homepage/Demo/DisplayedEmoji.js +59 -0
  66. package/dist/components/homepage/Demo/DoneCheckmark.d.ts +2 -0
  67. package/dist/components/homepage/Demo/DoneCheckmark.js +20 -0
  68. package/dist/components/homepage/Demo/DownloadNudge.d.ts +2 -0
  69. package/dist/components/homepage/Demo/DownloadNudge.js +27 -0
  70. package/dist/components/homepage/Demo/DragAndDropNudge.d.ts +3 -0
  71. package/dist/components/homepage/Demo/DragAndDropNudge.js +26 -0
  72. package/dist/components/homepage/Demo/EmojiCard.d.ts +10 -0
  73. package/dist/components/homepage/Demo/EmojiCard.js +120 -0
  74. package/dist/components/homepage/Demo/Minus.d.ts +5 -0
  75. package/dist/components/homepage/Demo/Minus.js +11 -0
  76. package/dist/components/homepage/Demo/PlayPauseButton.d.ts +5 -0
  77. package/dist/components/homepage/Demo/PlayPauseButton.js +47 -0
  78. package/dist/components/homepage/Demo/PlayerControls.d.ts +8 -0
  79. package/dist/components/homepage/Demo/PlayerControls.js +15 -0
  80. package/dist/components/homepage/Demo/PlayerSeekBar.d.ts +11 -0
  81. package/dist/components/homepage/Demo/PlayerSeekBar.js +216 -0
  82. package/dist/components/homepage/Demo/PlayerVolume.d.ts +5 -0
  83. package/dist/components/homepage/Demo/PlayerVolume.js +53 -0
  84. package/dist/components/homepage/Demo/Progress.d.ts +4 -0
  85. package/dist/components/homepage/Demo/Progress.js +14 -0
  86. package/dist/components/homepage/Demo/Spinner.d.ts +5 -0
  87. package/dist/components/homepage/Demo/Spinner.js +37 -0
  88. package/dist/components/homepage/Demo/Switcher.d.ts +6 -0
  89. package/dist/components/homepage/Demo/Switcher.js +25 -0
  90. package/dist/components/homepage/Demo/Temperature.d.ts +6 -0
  91. package/dist/components/homepage/Demo/Temperature.js +21 -0
  92. package/dist/components/homepage/Demo/TemperatureNumber.d.ts +5 -0
  93. package/dist/components/homepage/Demo/TemperatureNumber.js +36 -0
  94. package/dist/components/homepage/Demo/ThemeNudge.d.ts +3 -0
  95. package/dist/components/homepage/Demo/ThemeNudge.js +35 -0
  96. package/dist/components/homepage/Demo/TimeDisplay.d.ts +6 -0
  97. package/dist/components/homepage/Demo/TimeDisplay.js +27 -0
  98. package/dist/components/homepage/Demo/TrendingRepos.d.ts +6 -0
  99. package/dist/components/homepage/Demo/TrendingRepos.js +65 -0
  100. package/dist/components/homepage/Demo/icons.d.ts +10 -0
  101. package/dist/components/homepage/Demo/icons.js +22 -0
  102. package/dist/components/homepage/Demo/index.d.ts +2 -0
  103. package/dist/components/homepage/Demo/index.js +95 -0
  104. package/dist/components/homepage/Demo/math.d.ts +10 -0
  105. package/dist/components/homepage/Demo/math.js +29 -0
  106. package/dist/components/homepage/Demo/types.d.ts +6 -0
  107. package/dist/components/homepage/Demo/types.js +0 -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 +2 -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 +973 -700
  255. package/dist/experts.js +911 -638
  256. package/dist/helpers/mobile-layout.d.ts +1 -0
  257. package/dist/helpers/mobile-layout.js +6 -0
  258. package/dist/helpers/use-el-size.d.ts +5 -0
  259. package/dist/helpers/use-el-size.js +40 -0
  260. package/dist/homepage/Pricing.js +961 -688
  261. package/dist/main.d.ts +1 -0
  262. package/dist/main.js +6 -0
  263. package/dist/prompts/PromptsGallery.js +965 -692
  264. package/dist/prompts/PromptsShow.js +1008 -735
  265. package/dist/prompts/PromptsSubmit.js +1011 -738
  266. package/dist/prompts-show.d.ts +1 -0
  267. package/dist/prompts-show.js +20 -0
  268. package/dist/prompts-submit.d.ts +1 -0
  269. package/dist/prompts-submit.js +6 -0
  270. package/dist/prompts.d.ts +1 -0
  271. package/dist/prompts.js +6 -0
  272. package/dist/team.d.ts +1 -0
  273. package/dist/team.js +1001 -728
  274. package/dist/template-modal-content.js +972 -699
  275. package/dist/templates.js +955 -681
  276. package/package.json +13 -13
@@ -35,8 +35,8 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
35
35
  // ../design/dist/esm/index.mjs
36
36
  import * as React23 from "react";
37
37
  import * as React3 from "react";
38
- import { Fragment as Fragment2, jsx as jsx41 } from "react/jsx-runtime";
39
- import React52, { useCallback as useCallback25, useRef as useRef29, useState as useState22 } from "react";
38
+ import { Fragment as Fragment2, jsx as jsx43 } from "react/jsx-runtime";
39
+ import React52, { useCallback as useCallback26, useRef as useRef210, useState as useState22 } from "react";
40
40
 
41
41
  // ../../node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
42
42
  function r(e) {
@@ -1378,7 +1378,7 @@ var getDefaultConfig = () => {
1378
1378
  var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
1379
1379
 
1380
1380
  // ../design/dist/esm/index.mjs
1381
- import React35, { useEffect as useEffect22, useMemo as useMemo42, useState as useState21 } from "react";
1381
+ import React32, { useEffect as useEffect22, useMemo as useMemo42, useState as useState21 } from "react";
1382
1382
 
1383
1383
  // ../paths/dist/esm/index.mjs
1384
1384
  var cutLInstruction = ({
@@ -4331,69 +4331,71 @@ import { forwardRef as forwardRef11, useCallback as useCallback17, useState as u
4331
4331
  import { jsx as jsx27 } from "react/jsx-runtime";
4332
4332
  import { useCallback as useCallback18, useContext as useContext33, useLayoutEffect as useLayoutEffect10, useRef as useRef24 } from "react";
4333
4333
  import { jsx as jsx28 } from "react/jsx-runtime";
4334
+ import React29, { forwardRef as forwardRef12, useCallback as useCallback19, useRef as useRef25 } from "react";
4335
+ import { jsx as jsx29 } from "react/jsx-runtime";
4334
4336
  import { createRef as createRef3 } from "react";
4335
- import React29 from "react";
4337
+ import React30 from "react";
4336
4338
  import {
4337
- useCallback as useCallback19,
4339
+ useCallback as useCallback20,
4338
4340
  useImperativeHandle as useImperativeHandle8,
4339
4341
  useMemo as useMemo32,
4340
- useRef as useRef25,
4342
+ useRef as useRef26,
4341
4343
  useState as useState18
4342
4344
  } from "react";
4343
- import { jsx as jsx29 } from "react/jsx-runtime";
4344
- import React30 from "react";
4345
+ import { jsx as jsx30 } from "react/jsx-runtime";
4346
+ import React31 from "react";
4345
4347
  import { useMemo as useMemo34 } from "react";
4346
4348
  import { createContext as createContext24, useContext as useContext34, useMemo as useMemo33 } from "react";
4347
- import { jsx as jsx30 } from "react/jsx-runtime";
4348
4349
  import { jsx as jsx31 } from "react/jsx-runtime";
4349
- import React32 from "react";
4350
- import React33, { createContext as createContext25 } from "react";
4351
- import React34, { useContext as useContext35 } from "react";
4352
- import { useCallback as useCallback22 } from "react";
4350
+ import { jsx as jsx32 } from "react/jsx-runtime";
4351
+ import React33 from "react";
4352
+ import React34, { createContext as createContext25 } from "react";
4353
+ import React35, { useContext as useContext35 } from "react";
4354
+ import { useCallback as useCallback23 } from "react";
4353
4355
  import {
4354
- useCallback as useCallback20,
4356
+ useCallback as useCallback21,
4355
4357
  useContext as useContext36,
4356
4358
  useEffect as useEffect18,
4357
4359
  useLayoutEffect as useLayoutEffect11,
4358
4360
  useMemo as useMemo35,
4359
4361
  useState as useState19
4360
4362
  } from "react";
4361
- import { jsx as jsx32 } from "react/jsx-runtime";
4362
- import React36, {
4363
- forwardRef as forwardRef12,
4364
- useCallback as useCallback21,
4363
+ import { jsx as jsx33 } from "react/jsx-runtime";
4364
+ import React37, {
4365
+ forwardRef as forwardRef13,
4366
+ useCallback as useCallback22,
4365
4367
  useContext as useContext37,
4366
4368
  useEffect as useEffect20,
4367
4369
  useImperativeHandle as useImperativeHandle9,
4368
4370
  useMemo as useMemo36,
4369
- useRef as useRef26,
4371
+ useRef as useRef27,
4370
4372
  useState as useState20
4371
4373
  } from "react";
4372
4374
  import { useEffect as useEffect19 } from "react";
4373
- import { jsx as jsx33 } from "react/jsx-runtime";
4374
4375
  import { jsx as jsx34 } from "react/jsx-runtime";
4375
- import React38, { useMemo as useMemo37 } from "react";
4376
4376
  import { jsx as jsx35 } from "react/jsx-runtime";
4377
+ import React39, { useMemo as useMemo37 } from "react";
4378
+ import { jsx as jsx36 } from "react/jsx-runtime";
4377
4379
  import {
4378
4380
  Children,
4379
- forwardRef as forwardRef13,
4381
+ forwardRef as forwardRef14,
4380
4382
  useMemo as useMemo38
4381
4383
  } from "react";
4382
- import React39 from "react";
4383
- import { jsx as jsx36 } from "react/jsx-runtime";
4384
- import React41 from "react";
4385
- import { forwardRef as forwardRef15, useCallback as useCallback23, useContext as useContext39 } from "react";
4384
+ import React40 from "react";
4385
+ import { jsx as jsx37 } from "react/jsx-runtime";
4386
+ import React42 from "react";
4387
+ import { forwardRef as forwardRef16, useCallback as useCallback24, useContext as useContext39 } from "react";
4386
4388
  import {
4387
- forwardRef as forwardRef14,
4389
+ forwardRef as forwardRef15,
4388
4390
  useContext as useContext38,
4389
4391
  useEffect as useEffect21,
4390
4392
  useImperativeHandle as useImperativeHandle10,
4391
4393
  useLayoutEffect as useLayoutEffect12,
4392
4394
  useMemo as useMemo39,
4393
- useRef as useRef27
4395
+ useRef as useRef28
4394
4396
  } from "react";
4395
- import { jsx as jsx37 } from "react/jsx-runtime";
4396
4397
  import { jsx as jsx38 } from "react/jsx-runtime";
4398
+ import { jsx as jsx39 } from "react/jsx-runtime";
4397
4399
  var __defProp2 = Object.defineProperty;
4398
4400
  var __export2 = (target, all) => {
4399
4401
  for (var name in all)
@@ -5562,7 +5564,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
5562
5564
  var addSequenceStackTraces = (component) => {
5563
5565
  componentsToAddStacksTo.push(component);
5564
5566
  };
5565
- var VERSION = "4.0.474";
5567
+ var VERSION = "4.0.476";
5566
5568
  var checkMultipleRemotionVersions = () => {
5567
5569
  if (typeof globalThis === "undefined") {
5568
5570
  return;
@@ -5929,6 +5931,12 @@ var PremountContext = createContext14({
5929
5931
  premountFramesRemaining: 0
5930
5932
  });
5931
5933
  var sequenceVisualStyleSchema = {
5934
+ "style.transformOrigin": {
5935
+ type: "transform-origin",
5936
+ step: 1,
5937
+ default: "50% 50%",
5938
+ description: "Transform origin"
5939
+ },
5932
5940
  "style.translate": {
5933
5941
  type: "translate",
5934
5942
  step: 1,
@@ -5990,6 +5998,18 @@ var hiddenField = {
5990
5998
  default: false,
5991
5999
  description: "Hidden"
5992
6000
  };
6001
+ var showInTimelineField = {
6002
+ type: "hidden"
6003
+ };
6004
+ var sequenceNameField = {
6005
+ type: "hidden"
6006
+ };
6007
+ var extendSchemaWithSequenceName = (schema) => {
6008
+ return {
6009
+ name: sequenceNameField,
6010
+ ...schema
6011
+ };
6012
+ };
5993
6013
  var durationInFramesField = {
5994
6014
  type: "number",
5995
6015
  default: undefined,
@@ -6003,8 +6023,9 @@ var fromField = {
6003
6023
  step: 1,
6004
6024
  hiddenFromList: true
6005
6025
  };
6006
- var sequenceSchema = {
6026
+ var sequenceSchema = extendSchemaWithSequenceName({
6007
6027
  hidden: hiddenField,
6028
+ showInTimeline: showInTimelineField,
6008
6029
  from: fromField,
6009
6030
  durationInFrames: durationInFramesField,
6010
6031
  layout: {
@@ -6016,12 +6037,13 @@ var sequenceSchema = {
6016
6037
  none: {}
6017
6038
  }
6018
6039
  }
6019
- };
6020
- var sequenceSchemaWithoutFrom = {
6040
+ });
6041
+ var sequenceSchemaWithoutFrom = extendSchemaWithSequenceName({
6021
6042
  hidden: hiddenField,
6043
+ showInTimeline: showInTimelineField,
6022
6044
  durationInFrames: durationInFramesField,
6023
6045
  layout: sequenceSchema.layout
6024
- };
6046
+ });
6025
6047
  var sequenceSchemaDefaultLayoutNone = {
6026
6048
  ...sequenceSchema,
6027
6049
  layout: {
@@ -6365,81 +6387,6 @@ function bezier(mX1, mY1, mX2, mY2) {
6365
6387
  return calcBezier(getTForX(clampedX), mY1, mY2);
6366
6388
  };
6367
6389
  }
6368
- var clampUnit = (t) => Math.min(1, Math.max(0, t));
6369
-
6370
- class Easing {
6371
- static step0(n) {
6372
- return n > 0 ? 1 : 0;
6373
- }
6374
- static step1(n) {
6375
- return n >= 1 ? 1 : 0;
6376
- }
6377
- static linear(t) {
6378
- return t;
6379
- }
6380
- static ease(t) {
6381
- return Easing.bezier(0.42, 0, 1, 1)(t);
6382
- }
6383
- static quad(t) {
6384
- return t * t;
6385
- }
6386
- static cubic(t) {
6387
- return t * t * t;
6388
- }
6389
- static poly(n) {
6390
- return (t) => t ** n;
6391
- }
6392
- static sin(t) {
6393
- return 1 - Math.cos(t * Math.PI / 2);
6394
- }
6395
- static circle(t) {
6396
- const u = clampUnit(t);
6397
- return 1 - Math.sqrt(1 - u * u);
6398
- }
6399
- static exp(t) {
6400
- return 2 ** (10 * (t - 1));
6401
- }
6402
- static elastic(bounciness = 1) {
6403
- const p = bounciness * Math.PI;
6404
- return (t) => 1 - Math.cos(t * Math.PI / 2) ** 3 * Math.cos(t * p);
6405
- }
6406
- static back(s = 1.70158) {
6407
- return (t) => t * t * ((s + 1) * t - s);
6408
- }
6409
- static bounce(t) {
6410
- const u = clampUnit(t);
6411
- if (u < 1 / 2.75) {
6412
- return 7.5625 * u * u;
6413
- }
6414
- if (u < 2 / 2.75) {
6415
- const t2_ = u - 1.5 / 2.75;
6416
- return 7.5625 * t2_ * t2_ + 0.75;
6417
- }
6418
- if (u < 2.5 / 2.75) {
6419
- const t2_ = u - 2.25 / 2.75;
6420
- return 7.5625 * t2_ * t2_ + 0.9375;
6421
- }
6422
- const t2 = u - 2.625 / 2.75;
6423
- return 7.5625 * t2 * t2 + 0.984375;
6424
- }
6425
- static bezier(x1, y1, x2, y2) {
6426
- return bezier(x1, y1, x2, y2);
6427
- }
6428
- static in(easing) {
6429
- return easing;
6430
- }
6431
- static out(easing) {
6432
- return (t) => 1 - easing(1 - t);
6433
- }
6434
- static inOut(easing) {
6435
- return (t) => {
6436
- if (t < 0.5) {
6437
- return easing(t * 2) / 2;
6438
- }
6439
- return 1 - easing((1 - t) * 2) / 2;
6440
- };
6441
- }
6442
- }
6443
6390
  var normalizeNumber = (value) => {
6444
6391
  return Math.round(value * 1e6) / 1e6;
6445
6392
  };
@@ -6481,6 +6428,32 @@ var lengthUnits = new Set([
6481
6428
  "vw"
6482
6429
  ]);
6483
6430
  var cssNumberRegex = /^([+-]?(?:\d+\.?\d*|\.\d+))([a-zA-Z%]+)?$/;
6431
+ var transformOriginKeywords = new Set([
6432
+ "left",
6433
+ "center",
6434
+ "right",
6435
+ "top",
6436
+ "bottom"
6437
+ ]);
6438
+ var transformOriginKeywordOptions = (keyword) => {
6439
+ if (keyword === "left") {
6440
+ return [{ axis: "x", value: { value: 0, unit: "%" } }];
6441
+ }
6442
+ if (keyword === "right") {
6443
+ return [{ axis: "x", value: { value: 100, unit: "%" } }];
6444
+ }
6445
+ if (keyword === "top") {
6446
+ return [{ axis: "y", value: { value: 0, unit: "%" } }];
6447
+ }
6448
+ if (keyword === "bottom") {
6449
+ return [{ axis: "y", value: { value: 100, unit: "%" } }];
6450
+ }
6451
+ return [
6452
+ { axis: "x", value: { value: 50, unit: "%" } },
6453
+ { axis: "y", value: { value: 50, unit: "%" } }
6454
+ ];
6455
+ };
6456
+ var transformOriginCenter = { value: 50, unit: "%" };
6484
6457
  var stringifyNumber = (value) => {
6485
6458
  return String(normalizeNumber(value));
6486
6459
  };
@@ -6505,6 +6478,110 @@ var parseStringInterpolationComponent = (component, value) => {
6505
6478
  }
6506
6479
  throw new TypeError(`Cannot interpolate "${value}" because "${unit}" is not a supported translate or rotate unit`);
6507
6480
  };
6481
+ var parseTransformOriginLengthPercentage = ({
6482
+ component,
6483
+ value,
6484
+ allowPercentage
6485
+ }) => {
6486
+ const match = cssNumberRegex.exec(component);
6487
+ if (match === null) {
6488
+ throw new TypeError(`Cannot interpolate "${value}" because "${component}" is not a supported transform-origin ${allowPercentage ? "length-percentage" : "z length"}`);
6489
+ }
6490
+ const unit = match[2] ?? null;
6491
+ const numberValue = Number(match[1]);
6492
+ if (!Number.isFinite(numberValue)) {
6493
+ throw new TypeError(`Cannot interpolate "${value}" because "${component}" is not finite`);
6494
+ }
6495
+ if (unit === null || !lengthUnits.has(unit) || !allowPercentage && unit === "%") {
6496
+ throw new TypeError(`Cannot interpolate "${value}" because "${component}" is not a supported transform-origin ${allowPercentage ? "length-percentage" : "z length"}`);
6497
+ }
6498
+ return { value: numberValue, unit };
6499
+ };
6500
+ var parseTransformOriginToken = (component, value) => {
6501
+ const lower = component.toLowerCase();
6502
+ if (transformOriginKeywords.has(lower)) {
6503
+ return { type: "keyword", keyword: lower };
6504
+ }
6505
+ return {
6506
+ type: "length-percentage",
6507
+ parsed: parseTransformOriginLengthPercentage({
6508
+ component,
6509
+ value,
6510
+ allowPercentage: true
6511
+ })
6512
+ };
6513
+ };
6514
+ var parseTwoTransformOriginKeywords = (first, second, value) => {
6515
+ const candidates = [];
6516
+ for (const firstOption of transformOriginKeywordOptions(first)) {
6517
+ for (const secondOption of transformOriginKeywordOptions(second)) {
6518
+ if (firstOption.axis === secondOption.axis) {
6519
+ continue;
6520
+ }
6521
+ candidates.push(firstOption.axis === "x" ? [firstOption.value, secondOption.value] : [secondOption.value, firstOption.value]);
6522
+ }
6523
+ }
6524
+ if (candidates.length === 0) {
6525
+ throw new TypeError(`Cannot interpolate "${value}" because "${first} ${second}" is not a valid transform-origin keyword pair`);
6526
+ }
6527
+ return candidates[0];
6528
+ };
6529
+ var parseTransformOriginXY = (parts, value) => {
6530
+ if (parts.length === 1) {
6531
+ const token = parseTransformOriginToken(parts[0], value);
6532
+ if (token.type === "length-percentage") {
6533
+ return [token.parsed, transformOriginCenter];
6534
+ }
6535
+ if (token.keyword === "top" || token.keyword === "bottom") {
6536
+ return [
6537
+ transformOriginCenter,
6538
+ transformOriginKeywordOptions(token.keyword)[0].value
6539
+ ];
6540
+ }
6541
+ return [
6542
+ transformOriginKeywordOptions(token.keyword)[0].value,
6543
+ transformOriginCenter
6544
+ ];
6545
+ }
6546
+ const first = parseTransformOriginToken(parts[0], value);
6547
+ const second = parseTransformOriginToken(parts[1], value);
6548
+ if (first.type === "length-percentage" && second.type === "length-percentage") {
6549
+ return [first.parsed, second.parsed];
6550
+ }
6551
+ if (first.type === "keyword" && second.type === "keyword") {
6552
+ return parseTwoTransformOriginKeywords(first.keyword, second.keyword, value);
6553
+ }
6554
+ const keyword = first.type === "keyword" ? first : second.type === "keyword" ? second : null;
6555
+ const length2 = first.type === "length-percentage" ? first.parsed : second.type === "length-percentage" ? second.parsed : null;
6556
+ if (keyword === null || length2 === null) {
6557
+ throw new Error("Expected a keyword and a length-percentage value");
6558
+ }
6559
+ const keywordIsFirst = first.type === "keyword";
6560
+ if (keyword.keyword === "left" || keyword.keyword === "right") {
6561
+ if (!keywordIsFirst) {
6562
+ throw new TypeError(`Cannot interpolate "${value}" because horizontal transform-origin keywords must come before a length-percentage value`);
6563
+ }
6564
+ return [transformOriginKeywordOptions(keyword.keyword)[0].value, length2];
6565
+ }
6566
+ if (keyword.keyword === "top" || keyword.keyword === "bottom") {
6567
+ return [length2, transformOriginKeywordOptions(keyword.keyword)[0].value];
6568
+ }
6569
+ return keywordIsFirst ? [transformOriginCenter, length2] : [length2, transformOriginCenter];
6570
+ };
6571
+ var parseTransformOriginValue = (output, parts) => {
6572
+ const [x, y] = parseTransformOriginXY(parts.slice(0, 2), output);
6573
+ const z = parts[2] === undefined ? { value: 0, unit: null } : parseTransformOriginLengthPercentage({
6574
+ component: parts[2],
6575
+ value: output,
6576
+ allowPercentage: false
6577
+ });
6578
+ return {
6579
+ kind: "translate",
6580
+ values: [x.value, y.value, z.value],
6581
+ units: [x.unit, y.unit, z.unit],
6582
+ dimensions: parts[2] === undefined ? 2 : 3
6583
+ };
6584
+ };
6508
6585
  var parseStringInterpolationValue = (output) => {
6509
6586
  if (typeof output === "number") {
6510
6587
  if (!Number.isFinite(output)) {
@@ -6521,6 +6598,9 @@ var parseStringInterpolationValue = (output) => {
6521
6598
  if (parts.length < 1 || parts.length > 3 || parts[0] === "") {
6522
6599
  throw new TypeError(`String outputRange values must contain 1 to 3 components, but got "${output}"`);
6523
6600
  }
6601
+ if (parts.some((part) => transformOriginKeywords.has(part.toLowerCase()))) {
6602
+ return parseTransformOriginValue(output, parts);
6603
+ }
6524
6604
  const parsed = parts.map((part) => parseStringInterpolationComponent(part, output));
6525
6605
  const [{ kind }] = parsed;
6526
6606
  for (const part of parsed) {
@@ -6732,82 +6812,432 @@ function checkValidInputRange(arr) {
6732
6812
  }
6733
6813
  }
6734
6814
  }
6735
- function checkInfiniteRange(name, arr) {
6736
- if (arr.length < 1) {
6737
- throw new Error(name + " must have at least 1 element");
6738
- }
6739
- for (const element of arr) {
6740
- if (typeof element !== "number") {
6741
- throw new Error(`${name} must contain only numbers`);
6742
- }
6743
- if (!Number.isFinite(element)) {
6744
- throw new Error(`${name} must contain only finite numbers, but got [${arr.join(",")}]`);
6815
+ function checkInfiniteRange(name, arr) {
6816
+ if (arr.length < 1) {
6817
+ throw new Error(name + " must have at least 1 element");
6818
+ }
6819
+ for (const element of arr) {
6820
+ if (typeof element !== "number") {
6821
+ throw new Error(`${name} must contain only numbers`);
6822
+ }
6823
+ if (!Number.isFinite(element)) {
6824
+ throw new Error(`${name} must contain only finite numbers, but got [${arr.join(",")}]`);
6825
+ }
6826
+ }
6827
+ }
6828
+ function assertValidInterpolateEasingOption(easing, inputRangeLength) {
6829
+ if (easing === undefined) {
6830
+ return;
6831
+ }
6832
+ if (typeof easing === "function") {
6833
+ return;
6834
+ }
6835
+ const expectedLength = inputRangeLength - 1;
6836
+ if (easing.length !== expectedLength) {
6837
+ throw new Error(`When easing is an array, it must have one entry per segment between keyframes (length inputRange.length - 1 = ${expectedLength}), but got length ${easing.length}`);
6838
+ }
6839
+ for (let i = 0;i < easing.length; i++) {
6840
+ if (typeof easing[i] !== "function") {
6841
+ throw new Error(`easing[${i}] must be a function`);
6842
+ }
6843
+ }
6844
+ }
6845
+ function assertValidInterpolatePosterizeOption(posterize) {
6846
+ if (posterize === undefined) {
6847
+ return;
6848
+ }
6849
+ if (typeof posterize !== "number" || !Number.isFinite(posterize) || posterize <= 0) {
6850
+ throw new Error(`posterize must be a positive finite number, but got ${posterize}`);
6851
+ }
6852
+ }
6853
+ function interpolate(input, inputRange, outputRange, options) {
6854
+ if (typeof input === "undefined") {
6855
+ throw new Error("input can not be undefined");
6856
+ }
6857
+ if (typeof inputRange === "undefined") {
6858
+ throw new Error("inputRange can not be undefined");
6859
+ }
6860
+ if (typeof outputRange === "undefined") {
6861
+ throw new Error("outputRange can not be undefined");
6862
+ }
6863
+ if (inputRange.length !== outputRange.length) {
6864
+ throw new Error("inputRange (" + inputRange.length + ") and outputRange (" + outputRange.length + ") must have the same length");
6865
+ }
6866
+ checkInfiniteRange("inputRange", inputRange);
6867
+ checkValidInputRange(inputRange);
6868
+ assertValidInterpolateEasingOption(options?.easing, inputRange.length);
6869
+ assertValidInterpolatePosterizeOption(options?.posterize);
6870
+ if (typeof input !== "number") {
6871
+ throw new TypeError("Cannot interpolate an input which is not a number");
6872
+ }
6873
+ if (!Array.isArray(outputRange)) {
6874
+ throw new Error("outputRange must contain only numbers");
6875
+ }
6876
+ const hasStringOutput = outputRange.some((output) => typeof output === "string");
6877
+ if (hasStringOutput) {
6878
+ if (!outputRange.every((output) => typeof output === "string" || typeof output === "number")) {
6879
+ throw new TypeError("outputRange must contain only numbers, or supported scale, translate, and rotate strings");
6880
+ }
6881
+ return interpolateString({ input, inputRange, outputRange, options });
6882
+ }
6883
+ if (outputRange.every((output) => Array.isArray(output))) {
6884
+ return interpolateTuple({ input, inputRange, outputRange, options });
6885
+ }
6886
+ if (!outputRange.every((output) => typeof output === "number")) {
6887
+ throw new TypeError("outputRange must contain only numbers, numeric tuples, or supported scale, translate, and rotate strings");
6888
+ }
6889
+ checkInfiniteRange("outputRange", outputRange);
6890
+ return interpolateNumber({ input, inputRange, outputRange, options });
6891
+ }
6892
+ var validateFrame = ({
6893
+ allowFloats,
6894
+ durationInFrames,
6895
+ frame
6896
+ }) => {
6897
+ if (typeof frame === "undefined") {
6898
+ throw new TypeError(`Argument missing for parameter "frame"`);
6899
+ }
6900
+ if (typeof frame !== "number") {
6901
+ throw new TypeError(`Argument passed for "frame" is not a number: ${frame}`);
6902
+ }
6903
+ if (!Number.isFinite(frame)) {
6904
+ throw new RangeError(`Frame ${frame} is not finite`);
6905
+ }
6906
+ if (frame % 1 !== 0 && !allowFloats) {
6907
+ throw new RangeError(`Argument for frame must be an integer, but got ${frame}`);
6908
+ }
6909
+ if (frame < 0 && frame < -durationInFrames) {
6910
+ throw new RangeError(`Cannot use frame ${frame}: Duration of composition is ${durationInFrames}, therefore the lowest frame that can be rendered is ${-durationInFrames}`);
6911
+ }
6912
+ if (frame > durationInFrames - 1) {
6913
+ throw new RangeError(`Cannot use frame ${frame}: Duration of composition is ${durationInFrames}, therefore the highest frame that can be rendered is ${durationInFrames - 1}`);
6914
+ }
6915
+ };
6916
+ var validateSpringDuration = (dur) => {
6917
+ if (typeof dur === "undefined") {
6918
+ return;
6919
+ }
6920
+ if (typeof dur !== "number") {
6921
+ throw new TypeError(`A "duration" of a spring must be a "number" but is "${typeof dur}"`);
6922
+ }
6923
+ if (Number.isNaN(dur)) {
6924
+ throw new TypeError('A "duration" of a spring is NaN, which it must not be');
6925
+ }
6926
+ if (!Number.isFinite(dur)) {
6927
+ throw new TypeError('A "duration" of a spring must be finite, but is ' + dur);
6928
+ }
6929
+ if (dur <= 0) {
6930
+ throw new TypeError('A "duration" of a spring must be positive, but is ' + dur);
6931
+ }
6932
+ };
6933
+ var defaultSpringConfig = {
6934
+ damping: 10,
6935
+ mass: 1,
6936
+ stiffness: 100,
6937
+ overshootClamping: false
6938
+ };
6939
+ var advanceCache = {};
6940
+ function advance({
6941
+ animation,
6942
+ now,
6943
+ config
6944
+ }) {
6945
+ const { toValue: toValue2, lastTimestamp, current, velocity } = animation;
6946
+ const deltaTime = Math.min(now - lastTimestamp, 64);
6947
+ if (config.damping <= 0) {
6948
+ throw new Error("Spring damping must be greater than 0, otherwise the spring() animation will never end, causing an infinite loop.");
6949
+ }
6950
+ const c2 = config.damping;
6951
+ const m = config.mass;
6952
+ const k = config.stiffness;
6953
+ const cacheKey = [
6954
+ toValue2,
6955
+ lastTimestamp,
6956
+ current,
6957
+ velocity,
6958
+ c2,
6959
+ m,
6960
+ k,
6961
+ now
6962
+ ].join("-");
6963
+ if (advanceCache[cacheKey]) {
6964
+ return advanceCache[cacheKey];
6965
+ }
6966
+ const v0 = -velocity;
6967
+ const x0 = toValue2 - current;
6968
+ const zeta = c2 / (2 * Math.sqrt(k * m));
6969
+ const omega0 = Math.sqrt(k / m);
6970
+ const omega1 = omega0 * Math.sqrt(1 - zeta ** 2);
6971
+ const t = deltaTime / 1000;
6972
+ const sin1 = Math.sin(omega1 * t);
6973
+ const cos1 = Math.cos(omega1 * t);
6974
+ const underDampedEnvelope = Math.exp(-zeta * omega0 * t);
6975
+ const underDampedFrag1 = underDampedEnvelope * (sin1 * ((v0 + zeta * omega0 * x0) / omega1) + x0 * cos1);
6976
+ const underDampedPosition = toValue2 - underDampedFrag1;
6977
+ const underDampedVelocity = zeta * omega0 * underDampedFrag1 - underDampedEnvelope * (cos1 * (v0 + zeta * omega0 * x0) - omega1 * x0 * sin1);
6978
+ const criticallyDampedEnvelope = Math.exp(-omega0 * t);
6979
+ const criticallyDampedPosition = toValue2 - criticallyDampedEnvelope * (x0 + (v0 + omega0 * x0) * t);
6980
+ const criticallyDampedVelocity = criticallyDampedEnvelope * (v0 * (t * omega0 - 1) + t * x0 * omega0 * omega0);
6981
+ const animationNode = {
6982
+ toValue: toValue2,
6983
+ prevPosition: current,
6984
+ lastTimestamp: now,
6985
+ current: zeta < 1 ? underDampedPosition : criticallyDampedPosition,
6986
+ velocity: zeta < 1 ? underDampedVelocity : criticallyDampedVelocity
6987
+ };
6988
+ advanceCache[cacheKey] = animationNode;
6989
+ return animationNode;
6990
+ }
6991
+ var calculationCache = {};
6992
+ function springCalculation({
6993
+ frame,
6994
+ fps,
6995
+ config = {}
6996
+ }) {
6997
+ const from = 0;
6998
+ const to = 1;
6999
+ const cacheKey = [
7000
+ frame,
7001
+ fps,
7002
+ config.damping,
7003
+ config.mass,
7004
+ config.overshootClamping,
7005
+ config.stiffness
7006
+ ].join("-");
7007
+ if (calculationCache[cacheKey]) {
7008
+ return calculationCache[cacheKey];
7009
+ }
7010
+ let animation = {
7011
+ lastTimestamp: 0,
7012
+ current: from,
7013
+ toValue: to,
7014
+ velocity: 0,
7015
+ prevPosition: 0
7016
+ };
7017
+ const frameClamped = Math.max(0, frame);
7018
+ const unevenRest = frameClamped % 1;
7019
+ for (let f = 0;f <= Math.floor(frameClamped); f++) {
7020
+ if (f === Math.floor(frameClamped)) {
7021
+ f += unevenRest;
7022
+ }
7023
+ const time = f / fps * 1000;
7024
+ animation = advance({
7025
+ animation,
7026
+ now: time,
7027
+ config: {
7028
+ ...defaultSpringConfig,
7029
+ ...config
7030
+ }
7031
+ });
7032
+ }
7033
+ calculationCache[cacheKey] = animation;
7034
+ return animation;
7035
+ }
7036
+ var cache = new Map;
7037
+ function measureSpring({
7038
+ fps,
7039
+ config = {},
7040
+ threshold = 0.005
7041
+ }) {
7042
+ if (typeof threshold !== "number") {
7043
+ throw new TypeError(`threshold must be a number, got ${threshold} of type ${typeof threshold}`);
7044
+ }
7045
+ if (threshold === 0) {
7046
+ return Infinity;
7047
+ }
7048
+ if (threshold === 1) {
7049
+ return 0;
7050
+ }
7051
+ if (isNaN(threshold)) {
7052
+ throw new TypeError("Threshold is NaN");
7053
+ }
7054
+ if (!Number.isFinite(threshold)) {
7055
+ throw new TypeError("Threshold is not finite");
7056
+ }
7057
+ if (threshold < 0) {
7058
+ throw new TypeError("Threshold is below 0");
7059
+ }
7060
+ const cacheKey = [
7061
+ fps,
7062
+ config.damping,
7063
+ config.mass,
7064
+ config.overshootClamping,
7065
+ config.stiffness,
7066
+ threshold
7067
+ ].join("-");
7068
+ if (cache.has(cacheKey)) {
7069
+ return cache.get(cacheKey);
7070
+ }
7071
+ validateFps(fps, "to the measureSpring() function", false);
7072
+ let frame = 0;
7073
+ let finishedFrame = 0;
7074
+ const calc = () => {
7075
+ return springCalculation({
7076
+ fps,
7077
+ frame,
7078
+ config
7079
+ });
7080
+ };
7081
+ let animation = calc();
7082
+ const calcDifference = () => {
7083
+ return Math.abs(animation.current - animation.toValue);
7084
+ };
7085
+ let difference = calcDifference();
7086
+ while (difference >= threshold) {
7087
+ frame++;
7088
+ animation = calc();
7089
+ difference = calcDifference();
7090
+ }
7091
+ finishedFrame = frame;
7092
+ for (let i = 0;i < 20; i++) {
7093
+ frame++;
7094
+ animation = calc();
7095
+ difference = calcDifference();
7096
+ if (difference >= threshold) {
7097
+ i = 0;
7098
+ finishedFrame = frame + 1;
7099
+ }
7100
+ }
7101
+ cache.set(cacheKey, finishedFrame);
7102
+ return finishedFrame;
7103
+ }
7104
+ function spring({
7105
+ frame: passedFrame,
7106
+ fps,
7107
+ config = {},
7108
+ from = 0,
7109
+ to = 1,
7110
+ durationInFrames: passedDurationInFrames,
7111
+ durationRestThreshold,
7112
+ delay = 0,
7113
+ reverse = false
7114
+ }) {
7115
+ validateSpringDuration(passedDurationInFrames);
7116
+ validateFrame({
7117
+ frame: passedFrame,
7118
+ durationInFrames: Infinity,
7119
+ allowFloats: true
7120
+ });
7121
+ validateFps(fps, "to spring()", false);
7122
+ const needsToCalculateNaturalDuration = reverse || typeof passedDurationInFrames !== "undefined";
7123
+ const naturalDuration = needsToCalculateNaturalDuration ? measureSpring({
7124
+ fps,
7125
+ config,
7126
+ threshold: durationRestThreshold
7127
+ }) : undefined;
7128
+ const naturalDurationGetter = needsToCalculateNaturalDuration ? {
7129
+ get: () => naturalDuration
7130
+ } : {
7131
+ get: () => {
7132
+ throw new Error("did not calculate natural duration, this is an error with Remotion. Please report");
6745
7133
  }
7134
+ };
7135
+ const reverseProcessed = reverse ? (passedDurationInFrames ?? naturalDurationGetter.get()) - passedFrame : passedFrame;
7136
+ const delayProcessed = reverseProcessed + (reverse ? delay : -delay);
7137
+ const durationProcessed = passedDurationInFrames === undefined ? delayProcessed : delayProcessed / (passedDurationInFrames / naturalDurationGetter.get());
7138
+ if (passedDurationInFrames && delayProcessed > passedDurationInFrames) {
7139
+ return to;
6746
7140
  }
7141
+ const spr = springCalculation({
7142
+ fps,
7143
+ frame: durationProcessed,
7144
+ config
7145
+ });
7146
+ const inner = config.overshootClamping ? to >= from ? Math.min(spr.current, to) : Math.max(spr.current, to) : spr.current;
7147
+ const interpolated = from === 0 && to === 1 ? inner : interpolate(inner, [0, 1], [from, to]);
7148
+ return interpolated;
6747
7149
  }
6748
- function assertValidInterpolateEasingOption(easing, inputRangeLength) {
6749
- if (easing === undefined) {
6750
- return;
7150
+ var clampUnit = (t) => Math.min(1, Math.max(0, t));
7151
+ var springEasingDurationInFrames = 30;
7152
+
7153
+ class Easing {
7154
+ static step0(n) {
7155
+ return n > 0 ? 1 : 0;
6751
7156
  }
6752
- if (typeof easing === "function") {
6753
- return;
7157
+ static step1(n) {
7158
+ return n >= 1 ? 1 : 0;
6754
7159
  }
6755
- const expectedLength = inputRangeLength - 1;
6756
- if (easing.length !== expectedLength) {
6757
- throw new Error(`When easing is an array, it must have one entry per segment between keyframes (length inputRange.length - 1 = ${expectedLength}), but got length ${easing.length}`);
7160
+ static linear(t) {
7161
+ return t;
6758
7162
  }
6759
- for (let i = 0;i < easing.length; i++) {
6760
- if (typeof easing[i] !== "function") {
6761
- throw new Error(`easing[${i}] must be a function`);
6762
- }
7163
+ static ease(t) {
7164
+ return Easing.bezier(0.42, 0, 1, 1)(t);
6763
7165
  }
6764
- }
6765
- function assertValidInterpolatePosterizeOption(posterize) {
6766
- if (posterize === undefined) {
6767
- return;
7166
+ static quad(t) {
7167
+ return t * t;
6768
7168
  }
6769
- if (typeof posterize !== "number" || !Number.isFinite(posterize) || posterize <= 0) {
6770
- throw new Error(`posterize must be a positive finite number, but got ${posterize}`);
7169
+ static cubic(t) {
7170
+ return t * t * t;
6771
7171
  }
6772
- }
6773
- function interpolate(input, inputRange, outputRange, options) {
6774
- if (typeof input === "undefined") {
6775
- throw new Error("input can not be undefined");
7172
+ static poly(n) {
7173
+ return (t) => t ** n;
6776
7174
  }
6777
- if (typeof inputRange === "undefined") {
6778
- throw new Error("inputRange can not be undefined");
7175
+ static sin(t) {
7176
+ return 1 - Math.cos(t * Math.PI / 2);
6779
7177
  }
6780
- if (typeof outputRange === "undefined") {
6781
- throw new Error("outputRange can not be undefined");
7178
+ static circle(t) {
7179
+ const u = clampUnit(t);
7180
+ return 1 - Math.sqrt(1 - u * u);
6782
7181
  }
6783
- if (inputRange.length !== outputRange.length) {
6784
- throw new Error("inputRange (" + inputRange.length + ") and outputRange (" + outputRange.length + ") must have the same length");
7182
+ static exp(t) {
7183
+ return 2 ** (10 * (t - 1));
6785
7184
  }
6786
- checkInfiniteRange("inputRange", inputRange);
6787
- checkValidInputRange(inputRange);
6788
- assertValidInterpolateEasingOption(options?.easing, inputRange.length);
6789
- assertValidInterpolatePosterizeOption(options?.posterize);
6790
- if (typeof input !== "number") {
6791
- throw new TypeError("Cannot interpolate an input which is not a number");
7185
+ static elastic(bounciness = 1) {
7186
+ const p = bounciness * Math.PI;
7187
+ return (t) => 1 - Math.cos(t * Math.PI / 2) ** 3 * Math.cos(t * p);
6792
7188
  }
6793
- if (!Array.isArray(outputRange)) {
6794
- throw new Error("outputRange must contain only numbers");
7189
+ static back(s = 1.70158) {
7190
+ return (t) => t * t * ((s + 1) * t - s);
6795
7191
  }
6796
- const hasStringOutput = outputRange.some((output) => typeof output === "string");
6797
- if (hasStringOutput) {
6798
- if (!outputRange.every((output) => typeof output === "string" || typeof output === "number")) {
6799
- throw new TypeError("outputRange must contain only numbers, or supported scale, translate, and rotate strings");
7192
+ static spring(config = {}) {
7193
+ return (t) => {
7194
+ if (t <= 0) {
7195
+ return 0;
7196
+ }
7197
+ if (t >= 1) {
7198
+ return 1;
7199
+ }
7200
+ return spring({
7201
+ fps: springEasingDurationInFrames,
7202
+ frame: t * springEasingDurationInFrames,
7203
+ config,
7204
+ durationInFrames: springEasingDurationInFrames
7205
+ });
7206
+ };
7207
+ }
7208
+ static bounce(t) {
7209
+ const u = clampUnit(t);
7210
+ if (u < 1 / 2.75) {
7211
+ return 7.5625 * u * u;
6800
7212
  }
6801
- return interpolateString({ input, inputRange, outputRange, options });
7213
+ if (u < 2 / 2.75) {
7214
+ const t2_ = u - 1.5 / 2.75;
7215
+ return 7.5625 * t2_ * t2_ + 0.75;
7216
+ }
7217
+ if (u < 2.5 / 2.75) {
7218
+ const t2_ = u - 2.25 / 2.75;
7219
+ return 7.5625 * t2_ * t2_ + 0.9375;
7220
+ }
7221
+ const t2 = u - 2.625 / 2.75;
7222
+ return 7.5625 * t2 * t2 + 0.984375;
6802
7223
  }
6803
- if (outputRange.every((output) => Array.isArray(output))) {
6804
- return interpolateTuple({ input, inputRange, outputRange, options });
7224
+ static bezier(x1, y1, x2, y2) {
7225
+ return bezier(x1, y1, x2, y2);
6805
7226
  }
6806
- if (!outputRange.every((output) => typeof output === "number")) {
6807
- throw new TypeError("outputRange must contain only numbers, numeric tuples, or supported scale, translate, and rotate strings");
7227
+ static in(easing) {
7228
+ return easing;
7229
+ }
7230
+ static out(easing) {
7231
+ return (t) => 1 - easing(1 - t);
7232
+ }
7233
+ static inOut(easing) {
7234
+ return (t) => {
7235
+ if (t < 0.5) {
7236
+ return easing(t * 2) / 2;
7237
+ }
7238
+ return 1 - easing((1 - t) * 2) / 2;
7239
+ };
6808
7240
  }
6809
- checkInfiniteRange("outputRange", outputRange);
6810
- return interpolateNumber({ input, inputRange, outputRange, options });
6811
7241
  }
6812
7242
  var NUMBER = "[-+]?\\d*\\.?\\d+";
6813
7243
  var PERCENTAGE = NUMBER + "%";
@@ -7276,6 +7706,7 @@ function processColor(color) {
7276
7706
  var interpolateColorsRGB = (value, inputRange, colors, options) => {
7277
7707
  const [r2, g, b2, a2] = [red, green, blue, opacity].map((f) => {
7278
7708
  const unrounded = interpolate(value, inputRange, colors.map((c2) => f(c2)), {
7709
+ easing: options?.easing,
7279
7710
  extrapolateLeft: "clamp",
7280
7711
  extrapolateRight: "clamp",
7281
7712
  posterize: options?.posterize
@@ -7329,6 +7760,7 @@ var interpolateKeyframedStatus = ({
7329
7760
  }
7330
7761
  try {
7331
7762
  return interpolateColors(frame, inputRange, outputs, {
7763
+ easing: easing.map(easingToFn),
7332
7764
  posterize: status.posterize
7333
7765
  });
7334
7766
  } catch {
@@ -7803,7 +8235,8 @@ var wrapInSchema = ({
7803
8235
  schema,
7804
8236
  supportsEffects
7805
8237
  }) => {
7806
- const flatSchema = getFlatSchemaWithAllKeys(schema);
8238
+ const schemaWithSequenceName = extendSchemaWithSequenceName(schema);
8239
+ const flatSchema = getFlatSchemaWithAllKeys(schemaWithSequenceName);
7807
8240
  const flatKeys = Object.keys(flatSchema);
7808
8241
  const Wrapped = forwardRef2((props, ref) => {
7809
8242
  const env = useRemotionEnvironment();
@@ -7842,7 +8275,7 @@ var wrapInSchema = ({
7842
8275
  const currentRuntimeValueDotNotation = useMemo13(() => readValuesFromProps(props, flatKeys), runtimeValues);
7843
8276
  const controls = useMemo13(() => {
7844
8277
  return {
7845
- schema,
8278
+ schema: schemaWithSequenceName,
7846
8279
  currentRuntimeValueDotNotation,
7847
8280
  overrideId,
7848
8281
  supportsEffects
@@ -7850,7 +8283,7 @@ var wrapInSchema = ({
7850
8283
  }, [currentRuntimeValueDotNotation, overrideId]);
7851
8284
  const { merged: valuesDotNotation, propsToDelete } = useMemo13(() => {
7852
8285
  return computeEffectiveSchemaValuesDotNotation({
7853
- schema,
8286
+ schema: schemaWithSequenceName,
7854
8287
  currentValue: currentRuntimeValueDotNotation,
7855
8288
  overrideValues: nodePath === null ? {} : getDragOverrides(nodePath),
7856
8289
  propStatus: nodePath === null ? undefined : getPropStatusesCtx(propStatuses, nodePath),
@@ -7863,7 +8296,7 @@ var wrapInSchema = ({
7863
8296
  propStatuses,
7864
8297
  frame
7865
8298
  ]);
7866
- const activeKeys = selectActiveKeys(schema, valuesDotNotation);
8299
+ const activeKeys = selectActiveKeys(schemaWithSequenceName, valuesDotNotation);
7867
8300
  const mergedProps = mergeValues({
7868
8301
  props,
7869
8302
  valuesDotNotation,
@@ -7905,6 +8338,7 @@ var RegularSequenceRefForwardingFunction = ({
7905
8338
  const parentSequence = useContext17(SequenceContext);
7906
8339
  const { rootId } = useTimelineContext();
7907
8340
  const cumulatedFrom = parentSequence ? parentSequence.cumulatedFrom + parentSequence.relativeFrom : 0;
8341
+ const absoluteFrom = (parentSequence?.absoluteFrom ?? 0) + from;
7908
8342
  const nonce = useNonce();
7909
8343
  if (layout !== "absolute-fill" && layout !== "none") {
7910
8344
  throw new TypeError(`The layout prop of <Sequence /> expects either "absolute-fill" or "none", but you passed: ${layout}`);
@@ -7942,6 +8376,7 @@ var RegularSequenceRefForwardingFunction = ({
7942
8376
  const cumulatedNegativeFrom = currentSequenceStart - firstFrame;
7943
8377
  const contextValue = useMemo14(() => {
7944
8378
  return {
8379
+ absoluteFrom,
7945
8380
  cumulatedFrom,
7946
8381
  relativeFrom: from,
7947
8382
  cumulatedNegativeFrom,
@@ -7957,6 +8392,7 @@ var RegularSequenceRefForwardingFunction = ({
7957
8392
  };
7958
8393
  }, [
7959
8394
  cumulatedFrom,
8395
+ absoluteFrom,
7960
8396
  from,
7961
8397
  actualDurationInFrames,
7962
8398
  parentSequence,
@@ -7972,7 +8408,7 @@ var RegularSequenceRefForwardingFunction = ({
7972
8408
  const timelineClipName = useMemo14(() => {
7973
8409
  return name ?? "";
7974
8410
  }, [name]);
7975
- const resolvedDocumentationLink = documentationLink ?? (name === undefined ? "https://www.remotion.dev/docs/sequence" : null);
8411
+ const resolvedDocumentationLink = documentationLink ?? "https://www.remotion.dev/docs/sequence";
7976
8412
  const env = useRemotionEnvironment();
7977
8413
  const isInsideSeries = useContext17(IsInsideSeriesContext);
7978
8414
  const inheritedStack = other?.stack ?? null;
@@ -8599,10 +9035,10 @@ var decodeImage = async ({
8599
9035
  if (!selectedTrack) {
8600
9036
  throw new Error("No selected track");
8601
9037
  }
8602
- const cache = [];
9038
+ const cache2 = [];
8603
9039
  let durationFound = null;
8604
9040
  const getFrameByIndex = async (frameIndex) => {
8605
- const foundInCache = cache.find((c2) => c2.frameIndex === frameIndex);
9041
+ const foundInCache = cache2.find((c2) => c2.frameIndex === frameIndex);
8606
9042
  if (foundInCache && foundInCache.frame) {
8607
9043
  return foundInCache;
8608
9044
  }
@@ -8613,7 +9049,7 @@ var decodeImage = async ({
8613
9049
  if (foundInCache) {
8614
9050
  foundInCache.frame = frame.image;
8615
9051
  } else {
8616
- cache.push({
9052
+ cache2.push({
8617
9053
  frame: frame.image,
8618
9054
  frameIndex,
8619
9055
  timeInSeconds: frame.image.timestamp / 1e6
@@ -8626,7 +9062,7 @@ var decodeImage = async ({
8626
9062
  };
8627
9063
  };
8628
9064
  const clearCache = (closeToTimeInSec) => {
8629
- const itemsInCache = cache.filter((c2) => c2.frame);
9065
+ const itemsInCache = cache2.filter((c2) => c2.frame);
8630
9066
  const sortByClosestToCurrentTime = itemsInCache.sort((a2, b2) => {
8631
9067
  const aDiff = Math.abs(a2.timeInSeconds - closeToTimeInSec);
8632
9068
  const bDiff = Math.abs(b2.timeInSeconds - closeToTimeInSec);
@@ -8649,7 +9085,7 @@ var decodeImage = async ({
8649
9085
  loopBehavior,
8650
9086
  timeInSec
8651
9087
  });
8652
- const framesBefore = cache.filter((c2) => c2.timeInSeconds <= actualTimeInSec);
9088
+ const framesBefore = cache2.filter((c2) => c2.timeInSeconds <= actualTimeInSec);
8653
9089
  const biggestIndex = framesBefore.map((c2) => c2.frameIndex).reduce((a2, b2) => Math.max(a2, b2), 0);
8654
9090
  let i = biggestIndex;
8655
9091
  while (true) {
@@ -8692,7 +9128,7 @@ var decodeImage = async ({
8692
9128
  timeInSec
8693
9129
  });
8694
9130
  await ensureFrameBeforeAndAfter({ timeInSec: actualTimeInSec, loopBehavior });
8695
- const itemsInCache = cache.filter((c2) => c2.frame);
9131
+ const itemsInCache = cache2.filter((c2) => c2.frame);
8696
9132
  const closest = itemsInCache.reduce((a2, b2) => {
8697
9133
  const aDiff = Math.abs(a2.timeInSeconds - actualTimeInSec);
8698
9134
  const bDiff = Math.abs(b2.timeInSeconds - actualTimeInSec);
@@ -8735,7 +9171,7 @@ var animatedImageSchema = {
8735
9171
  max: 10,
8736
9172
  step: 0.1,
8737
9173
  default: 1,
8738
- description: "Playback Rate",
9174
+ description: "Playback rate",
8739
9175
  hiddenFromList: false,
8740
9176
  keyframable: false
8741
9177
  },
@@ -9153,7 +9589,7 @@ var Loop = ({
9153
9589
  durationInFrames,
9154
9590
  from,
9155
9591
  name: name ?? "<Loop>",
9156
- _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/loop" : undefined,
9592
+ _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/loop",
9157
9593
  _remotionInternalLoopDisplay: loopDisplay,
9158
9594
  layout: props.layout,
9159
9595
  style,
@@ -11542,7 +11978,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
11542
11978
  premountDisplay: sequenceContext?.premountDisplay ?? null,
11543
11979
  postmountDisplay: sequenceContext?.postmountDisplay ?? null,
11544
11980
  loopDisplay: undefined,
11545
- documentationLink: name === undefined ? "https://www.remotion.dev/docs/html5-audio" : null,
11981
+ documentationLink: "https://www.remotion.dev/docs/html5-audio",
11546
11982
  refForOutline: null
11547
11983
  });
11548
11984
  useMediaPlayback({
@@ -12036,7 +12472,7 @@ var SolidOuter = forwardRef8(({
12036
12472
  durationInFrames,
12037
12473
  name: name ?? "<Solid>",
12038
12474
  _remotionInternalRefForOutline: actualRef,
12039
- _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/solid" : undefined,
12475
+ _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/solid",
12040
12476
  ...props2,
12041
12477
  children: /* @__PURE__ */ jsx24(SolidInner, {
12042
12478
  reference: actualRef,
@@ -12348,7 +12784,7 @@ var HtmlInCanvasInner = forwardRef9(({
12348
12784
  return /* @__PURE__ */ jsx25(Sequence, {
12349
12785
  durationInFrames: resolvedDuration,
12350
12786
  name: name ?? "<HtmlInCanvas>",
12351
- _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/remotion/html-in-canvas" : undefined,
12787
+ _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/remotion/html-in-canvas",
12352
12788
  _experimentalControls: controls,
12353
12789
  _remotionInternalEffects: memoizedEffectDefinitions,
12354
12790
  _remotionInternalRefForOutline: actualRef,
@@ -12912,7 +13348,7 @@ var NativeImgInner = ({
12912
13348
  from: from ?? 0,
12913
13349
  durationInFrames: durationInFrames ?? Infinity,
12914
13350
  _remotionInternalStack: stack,
12915
- _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/img" : undefined,
13351
+ _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/img",
12916
13352
  _remotionInternalIsMedia: { type: "image", src },
12917
13353
  name: name ?? "<Img>",
12918
13354
  _experimentalControls: controls,
@@ -13054,7 +13490,7 @@ var ImgInner = ({
13054
13490
  name: name ?? "<Img>",
13055
13491
  showInTimeline,
13056
13492
  stack,
13057
- _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/img" : undefined,
13493
+ _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/img",
13058
13494
  _experimentalControls: controls,
13059
13495
  _remotionInternalRefForOutline: refForOutline,
13060
13496
  ...canvasProps
@@ -13066,7 +13502,101 @@ var Img = wrapInSchema({
13066
13502
  supportsEffects: true
13067
13503
  });
13068
13504
  addSequenceStackTraces(Img);
13069
- var compositionsRef = React29.createRef();
13505
+ var interactiveElementSchema = {
13506
+ durationInFrames: durationInFramesField,
13507
+ from: fromField,
13508
+ ...sequenceVisualStyleSchema,
13509
+ hidden: hiddenField
13510
+ };
13511
+ var setRef = (ref, value) => {
13512
+ if (typeof ref === "function") {
13513
+ ref(value);
13514
+ } else if (ref) {
13515
+ ref.current = value;
13516
+ }
13517
+ };
13518
+ var makeInteractiveElement = (tag, displayName) => {
13519
+ const Inner = forwardRef12((propsWithControls, ref) => {
13520
+ const {
13521
+ durationInFrames,
13522
+ from,
13523
+ hidden,
13524
+ name,
13525
+ showInTimeline,
13526
+ stack,
13527
+ _experimentalControls,
13528
+ ...props2
13529
+ } = propsWithControls;
13530
+ const refForOutline = useRef25(null);
13531
+ const callbackRef = useCallback19((element) => {
13532
+ refForOutline.current = element;
13533
+ setRef(ref, element);
13534
+ }, [ref]);
13535
+ return /* @__PURE__ */ jsx29(Sequence, {
13536
+ layout: "none",
13537
+ from: from ?? 0,
13538
+ durationInFrames: durationInFrames ?? Infinity,
13539
+ hidden,
13540
+ name: name ?? displayName,
13541
+ showInTimeline: showInTimeline ?? true,
13542
+ _experimentalControls,
13543
+ _remotionInternalStack: stack,
13544
+ _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/interactive",
13545
+ _remotionInternalRefForOutline: refForOutline,
13546
+ children: React29.createElement(tag, {
13547
+ ...props2,
13548
+ ref: callbackRef
13549
+ })
13550
+ });
13551
+ });
13552
+ Inner.displayName = displayName;
13553
+ const Wrapped = wrapInSchema({
13554
+ Component: Inner,
13555
+ schema: interactiveElementSchema,
13556
+ supportsEffects: false
13557
+ });
13558
+ Wrapped.displayName = displayName;
13559
+ addSequenceStackTraces(Wrapped);
13560
+ return Wrapped;
13561
+ };
13562
+ var Interactive = {
13563
+ A: makeInteractiveElement("a", "<Interactive.A>"),
13564
+ Article: makeInteractiveElement("article", "<Interactive.Article>"),
13565
+ Aside: makeInteractiveElement("aside", "<Interactive.Aside>"),
13566
+ Button: makeInteractiveElement("button", "<Interactive.Button>"),
13567
+ Circle: makeInteractiveElement("circle", "<Interactive.Circle>"),
13568
+ Code: makeInteractiveElement("code", "<Interactive.Code>"),
13569
+ Div: makeInteractiveElement("div", "<Interactive.Div>"),
13570
+ Ellipse: makeInteractiveElement("ellipse", "<Interactive.Ellipse>"),
13571
+ Em: makeInteractiveElement("em", "<Interactive.Em>"),
13572
+ Footer: makeInteractiveElement("footer", "<Interactive.Footer>"),
13573
+ G: makeInteractiveElement("g", "<Interactive.G>"),
13574
+ H1: makeInteractiveElement("h1", "<Interactive.H1>"),
13575
+ H2: makeInteractiveElement("h2", "<Interactive.H2>"),
13576
+ H3: makeInteractiveElement("h3", "<Interactive.H3>"),
13577
+ H4: makeInteractiveElement("h4", "<Interactive.H4>"),
13578
+ H5: makeInteractiveElement("h5", "<Interactive.H5>"),
13579
+ H6: makeInteractiveElement("h6", "<Interactive.H6>"),
13580
+ Header: makeInteractiveElement("header", "<Interactive.Header>"),
13581
+ Label: makeInteractiveElement("label", "<Interactive.Label>"),
13582
+ Li: makeInteractiveElement("li", "<Interactive.Li>"),
13583
+ Line: makeInteractiveElement("line", "<Interactive.Line>"),
13584
+ Main: makeInteractiveElement("main", "<Interactive.Main>"),
13585
+ Nav: makeInteractiveElement("nav", "<Interactive.Nav>"),
13586
+ Ol: makeInteractiveElement("ol", "<Interactive.Ol>"),
13587
+ P: makeInteractiveElement("p", "<Interactive.P>"),
13588
+ Path: makeInteractiveElement("path", "<Interactive.Path>"),
13589
+ Pre: makeInteractiveElement("pre", "<Interactive.Pre>"),
13590
+ Rect: makeInteractiveElement("rect", "<Interactive.Rect>"),
13591
+ Section: makeInteractiveElement("section", "<Interactive.Section>"),
13592
+ Small: makeInteractiveElement("small", "<Interactive.Small>"),
13593
+ Span: makeInteractiveElement("span", "<Interactive.Span>"),
13594
+ Strong: makeInteractiveElement("strong", "<Interactive.Strong>"),
13595
+ Svg: makeInteractiveElement("svg", "<Interactive.Svg>"),
13596
+ Text: makeInteractiveElement("text", "<Interactive.Text>"),
13597
+ Ul: makeInteractiveElement("ul", "<Interactive.Ul>")
13598
+ };
13599
+ var compositionsRef = React30.createRef();
13070
13600
  var CompositionManagerProvider = ({
13071
13601
  children,
13072
13602
  onlyRenderComposition,
@@ -13077,15 +13607,15 @@ var CompositionManagerProvider = ({
13077
13607
  const [folders, setFolders] = useState18([]);
13078
13608
  const [canvasContent, setCanvasContent] = useState18(initialCanvasContent);
13079
13609
  const [compositions, setCompositions] = useState18(initialCompositions);
13080
- const currentcompositionsRef = useRef25(compositions);
13081
- const updateCompositions = useCallback19((updateComps) => {
13610
+ const currentcompositionsRef = useRef26(compositions);
13611
+ const updateCompositions = useCallback20((updateComps) => {
13082
13612
  setCompositions((comps) => {
13083
13613
  const updated = updateComps(comps);
13084
13614
  currentcompositionsRef.current = updated;
13085
13615
  return updated;
13086
13616
  });
13087
13617
  }, []);
13088
- const registerComposition = useCallback19((comp) => {
13618
+ const registerComposition = useCallback20((comp) => {
13089
13619
  updateCompositions((comps) => {
13090
13620
  if (comps.find((c2) => c2.id === comp.id)) {
13091
13621
  throw new Error(`Multiple composition with id ${comp.id} are registered.`);
@@ -13093,12 +13623,12 @@ var CompositionManagerProvider = ({
13093
13623
  return [...comps, comp];
13094
13624
  });
13095
13625
  }, [updateCompositions]);
13096
- const unregisterComposition = useCallback19((id) => {
13626
+ const unregisterComposition = useCallback20((id) => {
13097
13627
  setCompositions((comps) => {
13098
13628
  return comps.filter((c2) => c2.id !== id);
13099
13629
  });
13100
13630
  }, []);
13101
- const registerFolder = useCallback19((name, parent, nonce, stack) => {
13631
+ const registerFolder = useCallback20((name, parent, nonce, stack) => {
13102
13632
  setFolders((prevFolders) => {
13103
13633
  return [
13104
13634
  ...prevFolders,
@@ -13111,7 +13641,7 @@ var CompositionManagerProvider = ({
13111
13641
  ];
13112
13642
  });
13113
13643
  }, []);
13114
- const unregisterFolder = useCallback19((name, parent) => {
13644
+ const unregisterFolder = useCallback20((name, parent) => {
13115
13645
  setFolders((prevFolders) => {
13116
13646
  return prevFolders.filter((p) => !(p.name === name && p.parent === parent));
13117
13647
  });
@@ -13145,9 +13675,9 @@ var CompositionManagerProvider = ({
13145
13675
  canvasContent
13146
13676
  };
13147
13677
  }, [compositions, folders, currentCompositionMetadata, canvasContent]);
13148
- return /* @__PURE__ */ jsx29(CompositionManager.Provider, {
13678
+ return /* @__PURE__ */ jsx30(CompositionManager.Provider, {
13149
13679
  value: compositionManagerContextValue,
13150
- children: /* @__PURE__ */ jsx29(CompositionSetters.Provider, {
13680
+ children: /* @__PURE__ */ jsx30(CompositionSetters.Provider, {
13151
13681
  value: compositionManagerSetters,
13152
13682
  children
13153
13683
  })
@@ -13245,7 +13775,7 @@ var REMOTION_STUDIO_CONTAINER_ELEMENT = "__remotion-studio-container";
13245
13775
  var getPreviewDomElement = () => {
13246
13776
  return document.getElementById(REMOTION_STUDIO_CONTAINER_ELEMENT);
13247
13777
  };
13248
- var MaxMediaCacheSizeContext = React30.createContext(null);
13778
+ var MaxMediaCacheSizeContext = React31.createContext(null);
13249
13779
  var Root = null;
13250
13780
  var listeners = [];
13251
13781
  var getRoot = () => {
@@ -13290,7 +13820,7 @@ var MediaEnabledProvider = ({
13290
13820
  audioEnabled
13291
13821
  }) => {
13292
13822
  const value = useMemo33(() => ({ videoEnabled, audioEnabled }), [videoEnabled, audioEnabled]);
13293
- return /* @__PURE__ */ jsx30(MediaEnabledContext.Provider, {
13823
+ return /* @__PURE__ */ jsx31(MediaEnabledContext.Provider, {
13294
13824
  value,
13295
13825
  children
13296
13826
  });
@@ -13314,25 +13844,25 @@ var RemotionRootContexts = ({
13314
13844
  const logging = useMemo34(() => {
13315
13845
  return { logLevel, mountTime: Date.now() };
13316
13846
  }, [logLevel]);
13317
- return /* @__PURE__ */ jsx31(LogLevelContext.Provider, {
13847
+ return /* @__PURE__ */ jsx32(LogLevelContext.Provider, {
13318
13848
  value: logging,
13319
- children: /* @__PURE__ */ jsx31(NonceContext.Provider, {
13849
+ children: /* @__PURE__ */ jsx32(NonceContext.Provider, {
13320
13850
  value: nonceContext,
13321
- children: /* @__PURE__ */ jsx31(TimelineContextProvider, {
13851
+ children: /* @__PURE__ */ jsx32(TimelineContextProvider, {
13322
13852
  frameState,
13323
- children: /* @__PURE__ */ jsx31(MediaEnabledProvider, {
13853
+ children: /* @__PURE__ */ jsx32(MediaEnabledProvider, {
13324
13854
  videoEnabled,
13325
13855
  audioEnabled,
13326
- children: /* @__PURE__ */ jsx31(EditorPropsProvider, {
13327
- children: /* @__PURE__ */ jsx31(PrefetchProvider, {
13328
- children: /* @__PURE__ */ jsx31(SequenceManagerProvider, {
13329
- children: /* @__PURE__ */ jsx31(DurationsContextProvider, {
13330
- children: /* @__PURE__ */ jsx31(BufferingProvider, {
13331
- children: /* @__PURE__ */ jsx31(SharedAudioContextProvider, {
13856
+ children: /* @__PURE__ */ jsx32(EditorPropsProvider, {
13857
+ children: /* @__PURE__ */ jsx32(PrefetchProvider, {
13858
+ children: /* @__PURE__ */ jsx32(SequenceManagerProvider, {
13859
+ children: /* @__PURE__ */ jsx32(DurationsContextProvider, {
13860
+ children: /* @__PURE__ */ jsx32(BufferingProvider, {
13861
+ children: /* @__PURE__ */ jsx32(SharedAudioContextProvider, {
13332
13862
  audioLatencyHint,
13333
13863
  audioEnabled,
13334
13864
  previewSampleRate,
13335
- children: /* @__PURE__ */ jsx31(SharedAudioTagsContextProvider, {
13865
+ children: /* @__PURE__ */ jsx32(SharedAudioTagsContextProvider, {
13336
13866
  numberOfAudioTags,
13337
13867
  children
13338
13868
  })
@@ -13518,7 +14048,7 @@ var resolveVideoConfigOrCatch = (params) => {
13518
14048
  };
13519
14049
  }
13520
14050
  };
13521
- var SequenceStackTracesUpdateContext = React32.createContext(() => {});
14051
+ var SequenceStackTracesUpdateContext = React33.createContext(() => {});
13522
14052
  var getEnvVariables = () => {
13523
14053
  if (getRemotionEnvironment().isRendering) {
13524
14054
  const param = window.remotion_envVariables;
@@ -13544,7 +14074,7 @@ var setupEnvVariables = () => {
13544
14074
  window.process.env[key] = env[key];
13545
14075
  });
13546
14076
  };
13547
- var CurrentScaleContext = React33.createContext(null);
14077
+ var CurrentScaleContext = React34.createContext(null);
13548
14078
  var PreviewSizeContext = createContext25({
13549
14079
  setSize: () => {
13550
14080
  return;
@@ -13568,7 +14098,7 @@ var calculateScale = ({
13568
14098
  }
13569
14099
  return Number(previewSize);
13570
14100
  };
13571
- var PixelDensityContext = React34.createContext(null);
14101
+ var PixelDensityContext = React35.createContext(null);
13572
14102
  var getOffthreadVideoSource = ({
13573
14103
  src,
13574
14104
  transparent,
@@ -13750,7 +14280,7 @@ var OffthreadVideoForRendering = ({
13750
14280
  continueRender2,
13751
14281
  delayRender2
13752
14282
  ]);
13753
- const onErr = useCallback20(() => {
14283
+ const onErr = useCallback21(() => {
13754
14284
  if (onError) {
13755
14285
  onError?.(new Error("Failed to load image with src " + imageSrc));
13756
14286
  } else {
@@ -13760,7 +14290,7 @@ var OffthreadVideoForRendering = ({
13760
14290
  const className = useMemo35(() => {
13761
14291
  return [OBJECTFIT_CONTAIN_CLASS_NAME, props2.className].filter(truthy).join(" ");
13762
14292
  }, [props2.className]);
13763
- const onImageFrame = useCallback20((img) => {
14293
+ const onImageFrame = useCallback21((img) => {
13764
14294
  if (onVideoFrame) {
13765
14295
  onVideoFrame(img);
13766
14296
  }
@@ -13769,7 +14299,7 @@ var OffthreadVideoForRendering = ({
13769
14299
  return null;
13770
14300
  }
13771
14301
  continueRender2(imageSrc.handle);
13772
- return /* @__PURE__ */ jsx32(Img, {
14302
+ return /* @__PURE__ */ jsx33(Img, {
13773
14303
  src: imageSrc.src,
13774
14304
  delayRenderRetries,
13775
14305
  delayRenderTimeoutInMilliseconds,
@@ -13825,7 +14355,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
13825
14355
  if (!context) {
13826
14356
  throw new Error("SharedAudioContext not found");
13827
14357
  }
13828
- const videoRef = useRef26(null);
14358
+ const videoRef = useRef27(null);
13829
14359
  const sharedSource = useMemo36(() => {
13830
14360
  if (!context.audioContext) {
13831
14361
  return null;
@@ -13835,7 +14365,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
13835
14365
  ref: videoRef
13836
14366
  });
13837
14367
  }, [context.audioContext]);
13838
- const effectToUse = React36.useInsertionEffect ?? React36.useLayoutEffect;
14368
+ const effectToUse = React37.useInsertionEffect ?? React37.useLayoutEffect;
13839
14369
  effectToUse(() => {
13840
14370
  return () => {
13841
14371
  requestAnimationFrame(() => {
@@ -13893,7 +14423,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
13893
14423
  mediaVolume
13894
14424
  });
13895
14425
  warnAboutTooHighVolume(userPreferredVolume);
13896
- const getStack = useCallback21(() => {
14426
+ const getStack = useCallback22(() => {
13897
14427
  return _remotionInternalStack ?? null;
13898
14428
  }, [_remotionInternalStack]);
13899
14429
  useMediaInTimeline({
@@ -13909,7 +14439,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
13909
14439
  premountDisplay: parentSequence?.premountDisplay ?? null,
13910
14440
  postmountDisplay: parentSequence?.postmountDisplay ?? null,
13911
14441
  loopDisplay: undefined,
13912
- documentationLink: name === undefined ? onlyWarnForMediaSeekingError ? "https://www.remotion.dev/docs/offthreadvideo" : "https://www.remotion.dev/docs/html5-video" : null,
14442
+ documentationLink: onlyWarnForMediaSeekingError ? "https://www.remotion.dev/docs/offthreadvideo" : "https://www.remotion.dev/docs/html5-video",
13913
14443
  refForOutline: videoRef
13914
14444
  });
13915
14445
  useMediaPlayback({
@@ -13998,7 +14528,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
13998
14528
  current.removeEventListener("error", errorHandler);
13999
14529
  };
14000
14530
  }, [onError, src]);
14001
- const currentOnDurationCallback = useRef26(onDuration);
14531
+ const currentOnDurationCallback = useRef27(onDuration);
14002
14532
  currentOnDurationCallback.current = onDuration;
14003
14533
  useEmitVideoFrame({ ref: videoRef, onVideoFrame });
14004
14534
  useEffect20(() => {
@@ -14039,7 +14569,8 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
14039
14569
  requestsVideoFrame: Boolean(onVideoFrame),
14040
14570
  isClientSideRendering: false
14041
14571
  });
14042
- return /* @__PURE__ */ jsx33("video", {
14572
+ return /* @__PURE__ */ jsx34("video", {
14573
+ ...nativeProps,
14043
14574
  ref: videoRef,
14044
14575
  muted: muted || mediaMuted || userPreferredVolume <= 0,
14045
14576
  playsInline: true,
@@ -14048,10 +14579,10 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
14048
14579
  style: actualStyle,
14049
14580
  disableRemotePlayback: true,
14050
14581
  crossOrigin: crossOriginValue,
14051
- ...nativeProps
14582
+ controls: false
14052
14583
  });
14053
14584
  };
14054
- var VideoForPreview = forwardRef12(VideoForDevelopmentRefForwardingFunction);
14585
+ var VideoForPreview = forwardRef13(VideoForDevelopmentRefForwardingFunction);
14055
14586
  var InnerOffthreadVideo = (props2) => {
14056
14587
  const {
14057
14588
  startFrom,
@@ -14068,7 +14599,7 @@ var InnerOffthreadVideo = (props2) => {
14068
14599
  if (environment.isClientSideRendering) {
14069
14600
  throw new Error("<OffthreadVideo> is not supported in @remotion/web-renderer. Use <Video> from @remotion/media instead. See https://remotion.dev/docs/client-side-rendering/limitations");
14070
14601
  }
14071
- const onDuration = useCallback22(() => {
14602
+ const onDuration = useCallback23(() => {
14072
14603
  return;
14073
14604
  }, []);
14074
14605
  if (typeof props2.src !== "string") {
@@ -14082,13 +14613,13 @@ var InnerOffthreadVideo = (props2) => {
14082
14613
  trimAfter
14083
14614
  });
14084
14615
  if (typeof trimBeforeValue !== "undefined" || typeof trimAfterValue !== "undefined") {
14085
- return /* @__PURE__ */ jsx34(Sequence, {
14616
+ return /* @__PURE__ */ jsx35(Sequence, {
14086
14617
  layout: "none",
14087
14618
  from: 0 - (trimBeforeValue ?? 0),
14088
14619
  showInTimeline: false,
14089
14620
  durationInFrames: trimAfterValue,
14090
14621
  name,
14091
- children: /* @__PURE__ */ jsx34(InnerOffthreadVideo, {
14622
+ children: /* @__PURE__ */ jsx35(InnerOffthreadVideo, {
14092
14623
  pauseWhenBuffering: pauseWhenBuffering ?? false,
14093
14624
  ...otherProps,
14094
14625
  trimAfter: undefined,
@@ -14103,7 +14634,7 @@ var InnerOffthreadVideo = (props2) => {
14103
14634
  }
14104
14635
  validateMediaProps(props2, "Video");
14105
14636
  if (environment.isRendering) {
14106
- return /* @__PURE__ */ jsx34(OffthreadVideoForRendering, {
14637
+ return /* @__PURE__ */ jsx35(OffthreadVideoForRendering, {
14107
14638
  pauseWhenBuffering: pauseWhenBuffering ?? false,
14108
14639
  ...otherProps,
14109
14640
  trimAfter: undefined,
@@ -14125,7 +14656,7 @@ var InnerOffthreadVideo = (props2) => {
14125
14656
  delayRenderTimeoutInMilliseconds,
14126
14657
  ...propsForPreview
14127
14658
  } = otherProps;
14128
- return /* @__PURE__ */ jsx34(VideoForPreview, {
14659
+ return /* @__PURE__ */ jsx35(VideoForPreview, {
14129
14660
  _remotionInternalStack: stack ?? null,
14130
14661
  onDuration,
14131
14662
  onlyWarnForMediaSeekingError: true,
@@ -14174,7 +14705,7 @@ var OffthreadVideo = ({
14174
14705
  if (imageFormat) {
14175
14706
  throw new TypeError(`The \`<OffthreadVideo>\` tag does no longer accept \`imageFormat\`. Use the \`transparent\` prop if you want to render a transparent video.`);
14176
14707
  }
14177
- return /* @__PURE__ */ jsx34(InnerOffthreadVideo, {
14708
+ return /* @__PURE__ */ jsx35(InnerOffthreadVideo, {
14178
14709
  acceptableTimeShiftInSeconds,
14179
14710
  allowAmplificationDuringRender: allowAmplificationDuringRender ?? true,
14180
14711
  audioStreamIndex: audioStreamIndex ?? 0,
@@ -14210,20 +14741,20 @@ var OffthreadVideo = ({
14210
14741
  addSequenceStackTraces(OffthreadVideo);
14211
14742
  var WATCH_REMOTION_STATIC_FILES = "remotion_staticFilesChanged";
14212
14743
  function useRemotionContexts() {
14213
- const compositionManagerCtx = React38.useContext(CompositionManager);
14214
- const timelineContext = React38.useContext(TimelineContext);
14215
- const setTimelineContext = React38.useContext(SetTimelineContext);
14216
- const sequenceContext = React38.useContext(SequenceContext);
14217
- const nonceContext = React38.useContext(NonceContext);
14218
- const canUseRemotionHooksContext = React38.useContext(CanUseRemotionHooks);
14219
- const preloadContext = React38.useContext(PreloadContext);
14220
- const resolveCompositionContext = React38.useContext(ResolveCompositionContext);
14221
- const renderAssetManagerContext = React38.useContext(RenderAssetManager);
14222
- const sequenceManagerContext = React38.useContext(SequenceManager);
14223
- const sequenceManagerRefContext = React38.useContext(SequenceManagerRefContext);
14224
- const visualModePropStatusesRefContext = React38.useContext(VisualModePropStatusesRefContext);
14225
- const bufferManagerContext = React38.useContext(BufferingContextReact);
14226
- const logLevelContext = React38.useContext(LogLevelContext);
14744
+ const compositionManagerCtx = React39.useContext(CompositionManager);
14745
+ const timelineContext = React39.useContext(TimelineContext);
14746
+ const setTimelineContext = React39.useContext(SetTimelineContext);
14747
+ const sequenceContext = React39.useContext(SequenceContext);
14748
+ const nonceContext = React39.useContext(NonceContext);
14749
+ const canUseRemotionHooksContext = React39.useContext(CanUseRemotionHooks);
14750
+ const preloadContext = React39.useContext(PreloadContext);
14751
+ const resolveCompositionContext = React39.useContext(ResolveCompositionContext);
14752
+ const renderAssetManagerContext = React39.useContext(RenderAssetManager);
14753
+ const sequenceManagerContext = React39.useContext(SequenceManager);
14754
+ const sequenceManagerRefContext = React39.useContext(SequenceManagerRefContext);
14755
+ const visualModePropStatusesRefContext = React39.useContext(VisualModePropStatusesRefContext);
14756
+ const bufferManagerContext = React39.useContext(BufferingContextReact);
14757
+ const logLevelContext = React39.useContext(LogLevelContext);
14227
14758
  return useMemo37(() => ({
14228
14759
  compositionManagerCtx,
14229
14760
  timelineContext,
@@ -14258,33 +14789,33 @@ function useRemotionContexts() {
14258
14789
  }
14259
14790
  var RemotionContextProvider = (props2) => {
14260
14791
  const { children, contexts } = props2;
14261
- return /* @__PURE__ */ jsx35(LogLevelContext.Provider, {
14792
+ return /* @__PURE__ */ jsx36(LogLevelContext.Provider, {
14262
14793
  value: contexts.logLevelContext,
14263
- children: /* @__PURE__ */ jsx35(CanUseRemotionHooks.Provider, {
14794
+ children: /* @__PURE__ */ jsx36(CanUseRemotionHooks.Provider, {
14264
14795
  value: contexts.canUseRemotionHooksContext,
14265
- children: /* @__PURE__ */ jsx35(NonceContext.Provider, {
14796
+ children: /* @__PURE__ */ jsx36(NonceContext.Provider, {
14266
14797
  value: contexts.nonceContext,
14267
- children: /* @__PURE__ */ jsx35(PreloadContext.Provider, {
14798
+ children: /* @__PURE__ */ jsx36(PreloadContext.Provider, {
14268
14799
  value: contexts.preloadContext,
14269
- children: /* @__PURE__ */ jsx35(CompositionManager.Provider, {
14800
+ children: /* @__PURE__ */ jsx36(CompositionManager.Provider, {
14270
14801
  value: contexts.compositionManagerCtx,
14271
- children: /* @__PURE__ */ jsx35(SequenceManagerRefContext.Provider, {
14802
+ children: /* @__PURE__ */ jsx36(SequenceManagerRefContext.Provider, {
14272
14803
  value: contexts.sequenceManagerRefContext,
14273
- children: /* @__PURE__ */ jsx35(SequenceManager.Provider, {
14804
+ children: /* @__PURE__ */ jsx36(SequenceManager.Provider, {
14274
14805
  value: contexts.sequenceManagerContext,
14275
- children: /* @__PURE__ */ jsx35(VisualModePropStatusesRefContext.Provider, {
14806
+ children: /* @__PURE__ */ jsx36(VisualModePropStatusesRefContext.Provider, {
14276
14807
  value: contexts.visualModePropStatusesRefContext,
14277
- children: /* @__PURE__ */ jsx35(RenderAssetManager.Provider, {
14808
+ children: /* @__PURE__ */ jsx36(RenderAssetManager.Provider, {
14278
14809
  value: contexts.renderAssetManagerContext,
14279
- children: /* @__PURE__ */ jsx35(ResolveCompositionContext.Provider, {
14810
+ children: /* @__PURE__ */ jsx36(ResolveCompositionContext.Provider, {
14280
14811
  value: contexts.resolveCompositionContext,
14281
- children: /* @__PURE__ */ jsx35(TimelineContext.Provider, {
14812
+ children: /* @__PURE__ */ jsx36(TimelineContext.Provider, {
14282
14813
  value: contexts.timelineContext,
14283
- children: /* @__PURE__ */ jsx35(SetTimelineContext.Provider, {
14814
+ children: /* @__PURE__ */ jsx36(SetTimelineContext.Provider, {
14284
14815
  value: contexts.setTimelineContext,
14285
- children: /* @__PURE__ */ jsx35(SequenceContext.Provider, {
14816
+ children: /* @__PURE__ */ jsx36(SequenceContext.Provider, {
14286
14817
  value: contexts.sequenceContext,
14287
- children: /* @__PURE__ */ jsx35(BufferingContextReact.Provider, {
14818
+ children: /* @__PURE__ */ jsx36(BufferingContextReact.Provider, {
14288
14819
  value: contexts.bufferManagerContext,
14289
14820
  children
14290
14821
  })
@@ -14432,51 +14963,27 @@ var Internals = {
14432
14963
  useMemoizedEffectDefinitions,
14433
14964
  createEffect,
14434
14965
  createWebGLContextError,
14435
- createWebGL2ContextError,
14436
- computeEffectiveSchemaValuesDotNotation,
14437
- interpolateKeyframedStatus,
14438
- makeStaticDragOverride,
14439
- makeKeyframedDragOverride,
14440
- resolveDragOverrideValue,
14441
- getStaticDragOverrideValue,
14442
- OverrideIdsToNodePathsGettersContext,
14443
- OverrideIdsToNodePathsSettersContext,
14444
- findPropsToDelete,
14445
- makeSequencePropsSubscriptionKey,
14446
- getPropStatusesCtx,
14447
- getEffectPropStatusesCtx,
14448
- hiddenField,
14449
- durationInFramesField,
14450
- fromField
14451
- };
14452
- var validateFrame = ({
14453
- allowFloats,
14454
- durationInFrames,
14455
- frame
14456
- }) => {
14457
- if (typeof frame === "undefined") {
14458
- throw new TypeError(`Argument missing for parameter "frame"`);
14459
- }
14460
- if (typeof frame !== "number") {
14461
- throw new TypeError(`Argument passed for "frame" is not a number: ${frame}`);
14462
- }
14463
- if (!Number.isFinite(frame)) {
14464
- throw new RangeError(`Frame ${frame} is not finite`);
14465
- }
14466
- if (frame % 1 !== 0 && !allowFloats) {
14467
- throw new RangeError(`Argument for frame must be an integer, but got ${frame}`);
14468
- }
14469
- if (frame < 0 && frame < -durationInFrames) {
14470
- throw new RangeError(`Cannot use frame ${frame}: Duration of composition is ${durationInFrames}, therefore the lowest frame that can be rendered is ${-durationInFrames}`);
14471
- }
14472
- if (frame > durationInFrames - 1) {
14473
- throw new RangeError(`Cannot use frame ${frame}: Duration of composition is ${durationInFrames}, therefore the highest frame that can be rendered is ${durationInFrames - 1}`);
14474
- }
14966
+ createWebGL2ContextError,
14967
+ computeEffectiveSchemaValuesDotNotation,
14968
+ interpolateKeyframedStatus,
14969
+ makeStaticDragOverride,
14970
+ makeKeyframedDragOverride,
14971
+ resolveDragOverrideValue,
14972
+ getStaticDragOverrideValue,
14973
+ OverrideIdsToNodePathsGettersContext,
14974
+ OverrideIdsToNodePathsSettersContext,
14975
+ findPropsToDelete,
14976
+ makeSequencePropsSubscriptionKey,
14977
+ getPropStatusesCtx,
14978
+ getEffectPropStatusesCtx,
14979
+ hiddenField,
14980
+ durationInFramesField,
14981
+ fromField
14475
14982
  };
14476
14983
  var flattenChildren = (children) => {
14477
- const childrenArray = React39.Children.toArray(children);
14984
+ const childrenArray = React40.Children.toArray(children);
14478
14985
  return childrenArray.reduce((flatChildren, child) => {
14479
- if (child.type === React39.Fragment) {
14986
+ if (child.type === React40.Fragment) {
14480
14987
  return flatChildren.concat(flattenChildren(child.props.children));
14481
14988
  }
14482
14989
  flatChildren.push(child);
@@ -14485,11 +14992,11 @@ var flattenChildren = (children) => {
14485
14992
  };
14486
14993
  var SeriesSequenceRefForwardingFunction = ({ children }, _ref) => {
14487
14994
  useRequireToBeInsideSeries();
14488
- return /* @__PURE__ */ jsx36(IsNotInsideSeriesProvider, {
14995
+ return /* @__PURE__ */ jsx37(IsNotInsideSeriesProvider, {
14489
14996
  children
14490
14997
  });
14491
14998
  };
14492
- var SeriesSequence = forwardRef13(SeriesSequenceRefForwardingFunction);
14999
+ var SeriesSequence = forwardRef14(SeriesSequenceRefForwardingFunction);
14493
15000
  var SequenceWithoutSchemaWithRef = SequenceWithoutSchema;
14494
15001
  var SeriesInner = (props2) => {
14495
15002
  const childrenValue = useMemo38(() => {
@@ -14533,7 +15040,7 @@ var SeriesInner = (props2) => {
14533
15040
  }
14534
15041
  const currentStartFrame = startFrame + offset;
14535
15042
  startFrame += durationInFramesProp + offset;
14536
- return /* @__PURE__ */ jsx36(SequenceWithoutSchemaWithRef, {
15043
+ return /* @__PURE__ */ jsx37(SequenceWithoutSchemaWithRef, {
14537
15044
  ref: castedChild.ref,
14538
15045
  name: name || "<Series.Sequence>",
14539
15046
  _remotionInternalDocumentationLink: name ? undefined : "https://www.remotion.dev/docs/series",
@@ -14544,8 +15051,8 @@ var SeriesInner = (props2) => {
14544
15051
  });
14545
15052
  });
14546
15053
  }, [props2.children]);
14547
- return /* @__PURE__ */ jsx36(IsInsideSeriesContainer, {
14548
- children: /* @__PURE__ */ jsx36(Sequence, {
15054
+ return /* @__PURE__ */ jsx37(IsInsideSeriesContainer, {
15055
+ children: /* @__PURE__ */ jsx37(Sequence, {
14549
15056
  layout: "none",
14550
15057
  name: "<Series>",
14551
15058
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/series",
@@ -14562,240 +15069,6 @@ var Series = Object.assign(wrapInSchema({
14562
15069
  Sequence: SeriesSequence
14563
15070
  });
14564
15071
  addSequenceStackTraces(Series);
14565
- var validateSpringDuration = (dur) => {
14566
- if (typeof dur === "undefined") {
14567
- return;
14568
- }
14569
- if (typeof dur !== "number") {
14570
- throw new TypeError(`A "duration" of a spring must be a "number" but is "${typeof dur}"`);
14571
- }
14572
- if (Number.isNaN(dur)) {
14573
- throw new TypeError('A "duration" of a spring is NaN, which it must not be');
14574
- }
14575
- if (!Number.isFinite(dur)) {
14576
- throw new TypeError('A "duration" of a spring must be finite, but is ' + dur);
14577
- }
14578
- if (dur <= 0) {
14579
- throw new TypeError('A "duration" of a spring must be positive, but is ' + dur);
14580
- }
14581
- };
14582
- var defaultSpringConfig = {
14583
- damping: 10,
14584
- mass: 1,
14585
- stiffness: 100,
14586
- overshootClamping: false
14587
- };
14588
- var advanceCache = {};
14589
- function advance({
14590
- animation,
14591
- now,
14592
- config
14593
- }) {
14594
- const { toValue: toValue2, lastTimestamp, current, velocity } = animation;
14595
- const deltaTime = Math.min(now - lastTimestamp, 64);
14596
- if (config.damping <= 0) {
14597
- throw new Error("Spring damping must be greater than 0, otherwise the spring() animation will never end, causing an infinite loop.");
14598
- }
14599
- const c2 = config.damping;
14600
- const m = config.mass;
14601
- const k = config.stiffness;
14602
- const cacheKey = [
14603
- toValue2,
14604
- lastTimestamp,
14605
- current,
14606
- velocity,
14607
- c2,
14608
- m,
14609
- k,
14610
- now
14611
- ].join("-");
14612
- if (advanceCache[cacheKey]) {
14613
- return advanceCache[cacheKey];
14614
- }
14615
- const v0 = -velocity;
14616
- const x0 = toValue2 - current;
14617
- const zeta = c2 / (2 * Math.sqrt(k * m));
14618
- const omega0 = Math.sqrt(k / m);
14619
- const omega1 = omega0 * Math.sqrt(1 - zeta ** 2);
14620
- const t = deltaTime / 1000;
14621
- const sin1 = Math.sin(omega1 * t);
14622
- const cos1 = Math.cos(omega1 * t);
14623
- const underDampedEnvelope = Math.exp(-zeta * omega0 * t);
14624
- const underDampedFrag1 = underDampedEnvelope * (sin1 * ((v0 + zeta * omega0 * x0) / omega1) + x0 * cos1);
14625
- const underDampedPosition = toValue2 - underDampedFrag1;
14626
- const underDampedVelocity = zeta * omega0 * underDampedFrag1 - underDampedEnvelope * (cos1 * (v0 + zeta * omega0 * x0) - omega1 * x0 * sin1);
14627
- const criticallyDampedEnvelope = Math.exp(-omega0 * t);
14628
- const criticallyDampedPosition = toValue2 - criticallyDampedEnvelope * (x0 + (v0 + omega0 * x0) * t);
14629
- const criticallyDampedVelocity = criticallyDampedEnvelope * (v0 * (t * omega0 - 1) + t * x0 * omega0 * omega0);
14630
- const animationNode = {
14631
- toValue: toValue2,
14632
- prevPosition: current,
14633
- lastTimestamp: now,
14634
- current: zeta < 1 ? underDampedPosition : criticallyDampedPosition,
14635
- velocity: zeta < 1 ? underDampedVelocity : criticallyDampedVelocity
14636
- };
14637
- advanceCache[cacheKey] = animationNode;
14638
- return animationNode;
14639
- }
14640
- var calculationCache = {};
14641
- function springCalculation({
14642
- frame,
14643
- fps,
14644
- config = {}
14645
- }) {
14646
- const from = 0;
14647
- const to = 1;
14648
- const cacheKey = [
14649
- frame,
14650
- fps,
14651
- config.damping,
14652
- config.mass,
14653
- config.overshootClamping,
14654
- config.stiffness
14655
- ].join("-");
14656
- if (calculationCache[cacheKey]) {
14657
- return calculationCache[cacheKey];
14658
- }
14659
- let animation = {
14660
- lastTimestamp: 0,
14661
- current: from,
14662
- toValue: to,
14663
- velocity: 0,
14664
- prevPosition: 0
14665
- };
14666
- const frameClamped = Math.max(0, frame);
14667
- const unevenRest = frameClamped % 1;
14668
- for (let f = 0;f <= Math.floor(frameClamped); f++) {
14669
- if (f === Math.floor(frameClamped)) {
14670
- f += unevenRest;
14671
- }
14672
- const time = f / fps * 1000;
14673
- animation = advance({
14674
- animation,
14675
- now: time,
14676
- config: {
14677
- ...defaultSpringConfig,
14678
- ...config
14679
- }
14680
- });
14681
- }
14682
- calculationCache[cacheKey] = animation;
14683
- return animation;
14684
- }
14685
- var cache = new Map;
14686
- function measureSpring({
14687
- fps,
14688
- config = {},
14689
- threshold = 0.005
14690
- }) {
14691
- if (typeof threshold !== "number") {
14692
- throw new TypeError(`threshold must be a number, got ${threshold} of type ${typeof threshold}`);
14693
- }
14694
- if (threshold === 0) {
14695
- return Infinity;
14696
- }
14697
- if (threshold === 1) {
14698
- return 0;
14699
- }
14700
- if (isNaN(threshold)) {
14701
- throw new TypeError("Threshold is NaN");
14702
- }
14703
- if (!Number.isFinite(threshold)) {
14704
- throw new TypeError("Threshold is not finite");
14705
- }
14706
- if (threshold < 0) {
14707
- throw new TypeError("Threshold is below 0");
14708
- }
14709
- const cacheKey = [
14710
- fps,
14711
- config.damping,
14712
- config.mass,
14713
- config.overshootClamping,
14714
- config.stiffness,
14715
- threshold
14716
- ].join("-");
14717
- if (cache.has(cacheKey)) {
14718
- return cache.get(cacheKey);
14719
- }
14720
- validateFps(fps, "to the measureSpring() function", false);
14721
- let frame = 0;
14722
- let finishedFrame = 0;
14723
- const calc = () => {
14724
- return springCalculation({
14725
- fps,
14726
- frame,
14727
- config
14728
- });
14729
- };
14730
- let animation = calc();
14731
- const calcDifference = () => {
14732
- return Math.abs(animation.current - animation.toValue);
14733
- };
14734
- let difference = calcDifference();
14735
- while (difference >= threshold) {
14736
- frame++;
14737
- animation = calc();
14738
- difference = calcDifference();
14739
- }
14740
- finishedFrame = frame;
14741
- for (let i = 0;i < 20; i++) {
14742
- frame++;
14743
- animation = calc();
14744
- difference = calcDifference();
14745
- if (difference >= threshold) {
14746
- i = 0;
14747
- finishedFrame = frame + 1;
14748
- }
14749
- }
14750
- cache.set(cacheKey, finishedFrame);
14751
- return finishedFrame;
14752
- }
14753
- function spring({
14754
- frame: passedFrame,
14755
- fps,
14756
- config = {},
14757
- from = 0,
14758
- to = 1,
14759
- durationInFrames: passedDurationInFrames,
14760
- durationRestThreshold,
14761
- delay = 0,
14762
- reverse = false
14763
- }) {
14764
- validateSpringDuration(passedDurationInFrames);
14765
- validateFrame({
14766
- frame: passedFrame,
14767
- durationInFrames: Infinity,
14768
- allowFloats: true
14769
- });
14770
- validateFps(fps, "to spring()", false);
14771
- const needsToCalculateNaturalDuration = reverse || typeof passedDurationInFrames !== "undefined";
14772
- const naturalDuration = needsToCalculateNaturalDuration ? measureSpring({
14773
- fps,
14774
- config,
14775
- threshold: durationRestThreshold
14776
- }) : undefined;
14777
- const naturalDurationGetter = needsToCalculateNaturalDuration ? {
14778
- get: () => naturalDuration
14779
- } : {
14780
- get: () => {
14781
- throw new Error("did not calculate natural duration, this is an error with Remotion. Please report");
14782
- }
14783
- };
14784
- const reverseProcessed = reverse ? (passedDurationInFrames ?? naturalDurationGetter.get()) - passedFrame : passedFrame;
14785
- const delayProcessed = reverseProcessed + (reverse ? delay : -delay);
14786
- const durationProcessed = passedDurationInFrames === undefined ? delayProcessed : delayProcessed / (passedDurationInFrames / naturalDurationGetter.get());
14787
- if (passedDurationInFrames && delayProcessed > passedDurationInFrames) {
14788
- return to;
14789
- }
14790
- const spr = springCalculation({
14791
- fps,
14792
- frame: durationProcessed,
14793
- config
14794
- });
14795
- const inner = config.overshootClamping ? to >= from ? Math.min(spr.current, to) : Math.max(spr.current, to) : spr.current;
14796
- const interpolated = from === 0 && to === 1 ? inner : interpolate(inner, [0, 1], [from, to]);
14797
- return interpolated;
14798
- }
14799
15072
  var problematicCharacters = {
14800
15073
  "%3A": ":",
14801
15074
  "%2F": "/",
@@ -15027,7 +15300,7 @@ var VideoForRenderingForwardFunction = ({
15027
15300
  const frame = useCurrentFrame();
15028
15301
  const volumePropsFrame = useFrameForVolumeProp(loopVolumeCurveBehavior ?? "repeat");
15029
15302
  const videoConfig = useUnsafeVideoConfig();
15030
- const videoRef = useRef27(null);
15303
+ const videoRef = useRef28(null);
15031
15304
  const sequenceContext = useContext38(SequenceContext);
15032
15305
  const mediaStartsAt = useMediaStartsAt();
15033
15306
  const environment = useRemotionEnvironment();
@@ -15218,13 +15491,13 @@ var VideoForRenderingForwardFunction = ({
15218
15491
  delayRender2
15219
15492
  ]);
15220
15493
  }
15221
- return /* @__PURE__ */ jsx37("video", {
15494
+ return /* @__PURE__ */ jsx38("video", {
15222
15495
  ref: videoRef,
15223
15496
  disableRemotePlayback: true,
15224
15497
  ...props2
15225
15498
  });
15226
15499
  };
15227
- var VideoForRendering = forwardRef14(VideoForRenderingForwardFunction);
15500
+ var VideoForRendering = forwardRef15(VideoForRenderingForwardFunction);
15228
15501
  var VideoForwardingFunction = (props2, ref) => {
15229
15502
  const {
15230
15503
  startFrom,
@@ -15254,7 +15527,7 @@ var VideoForwardingFunction = (props2, ref) => {
15254
15527
  throw new TypeError(`The \`<Html5Video>\` tag requires a string for \`src\`, but got ${JSON.stringify(props2.src)} instead.`);
15255
15528
  }
15256
15529
  const preloadedSrc = usePreload(props2.src);
15257
- const onDuration = useCallback23((src, durationInSeconds) => {
15530
+ const onDuration = useCallback24((src, durationInSeconds) => {
15258
15531
  setDurations({ type: "got-duration", durationInSeconds, src });
15259
15532
  }, [setDurations]);
15260
15533
  const durationFetched = durations[getAbsoluteSrc(preloadedSrc)] ?? durations[getAbsoluteSrc(props2.src)];
@@ -15267,7 +15540,7 @@ var VideoForwardingFunction = (props2, ref) => {
15267
15540
  });
15268
15541
  if (loop && durationFetched !== undefined) {
15269
15542
  if (!Number.isFinite(durationFetched)) {
15270
- return /* @__PURE__ */ jsx38(Html5Video, {
15543
+ return /* @__PURE__ */ jsx39(Html5Video, {
15271
15544
  ...propsOtherThanLoop,
15272
15545
  ref,
15273
15546
  stack,
@@ -15275,7 +15548,7 @@ var VideoForwardingFunction = (props2, ref) => {
15275
15548
  });
15276
15549
  }
15277
15550
  const mediaDuration = durationFetched * fps;
15278
- return /* @__PURE__ */ jsx38(Loop, {
15551
+ return /* @__PURE__ */ jsx39(Loop, {
15279
15552
  durationInFrames: calculateMediaDuration({
15280
15553
  trimAfter: trimAfterValue,
15281
15554
  mediaDurationInFrames: mediaDuration,
@@ -15285,7 +15558,7 @@ var VideoForwardingFunction = (props2, ref) => {
15285
15558
  layout: "none",
15286
15559
  name,
15287
15560
  showInTimeline: false,
15288
- children: /* @__PURE__ */ jsx38(Html5Video, {
15561
+ children: /* @__PURE__ */ jsx39(Html5Video, {
15289
15562
  ...propsOtherThanLoop,
15290
15563
  ref,
15291
15564
  stack,
@@ -15294,13 +15567,13 @@ var VideoForwardingFunction = (props2, ref) => {
15294
15567
  });
15295
15568
  }
15296
15569
  if (typeof trimBeforeValue !== "undefined" || typeof trimAfterValue !== "undefined") {
15297
- return /* @__PURE__ */ jsx38(Sequence, {
15570
+ return /* @__PURE__ */ jsx39(Sequence, {
15298
15571
  layout: "none",
15299
15572
  from: 0 - (trimBeforeValue ?? 0),
15300
15573
  showInTimeline: false,
15301
15574
  durationInFrames: trimAfterValue === undefined ? undefined : trimAfterValue / (props2.playbackRate ?? 1),
15302
15575
  name,
15303
- children: /* @__PURE__ */ jsx38(Html5Video, {
15576
+ children: /* @__PURE__ */ jsx39(Html5Video, {
15304
15577
  pauseWhenBuffering: pauseWhenBuffering ?? false,
15305
15578
  onVideoFrame,
15306
15579
  ...otherProps,
@@ -15315,14 +15588,14 @@ var VideoForwardingFunction = (props2, ref) => {
15315
15588
  volume: props2.volume
15316
15589
  }, "Html5Video");
15317
15590
  if (environment.isRendering) {
15318
- return /* @__PURE__ */ jsx38(VideoForRendering, {
15591
+ return /* @__PURE__ */ jsx39(VideoForRendering, {
15319
15592
  onDuration,
15320
15593
  onVideoFrame: onVideoFrame ?? null,
15321
15594
  ...otherProps,
15322
15595
  ref
15323
15596
  });
15324
15597
  }
15325
- return /* @__PURE__ */ jsx38(VideoForPreview, {
15598
+ return /* @__PURE__ */ jsx39(VideoForPreview, {
15326
15599
  onlyWarnForMediaSeekingError: false,
15327
15600
  ...otherProps,
15328
15601
  ref,
@@ -15335,7 +15608,7 @@ var VideoForwardingFunction = (props2, ref) => {
15335
15608
  onAutoPlayError: onAutoPlayError ?? undefined
15336
15609
  });
15337
15610
  };
15338
- var Html5Video = forwardRef15(VideoForwardingFunction);
15611
+ var Html5Video = forwardRef16(VideoForwardingFunction);
15339
15612
  addSequenceStackTraces(Html5Video);
15340
15613
  checkMultipleRemotionVersions();
15341
15614
  var proxyObj = {};
@@ -15364,9 +15637,9 @@ addSequenceStackTraces(Composition);
15364
15637
  addSequenceStackTraces(Folder);
15365
15638
 
15366
15639
  // ../shapes/dist/esm/index.mjs
15367
- import React, { useCallback as useCallback24, useMemo as useMemo40, useRef as useRef28 } from "react";
15640
+ import React, { useCallback as useCallback25, useMemo as useMemo40, useRef as useRef29 } from "react";
15368
15641
  import { version } from "react-dom";
15369
- import { jsx as jsx39, jsxs as jsxs3 } from "react/jsx-runtime";
15642
+ import { jsx as jsx40, jsxs as jsxs3 } from "react/jsx-runtime";
15370
15643
  import { jsx as jsx210 } from "react/jsx-runtime";
15371
15644
  import { jsx as jsx310 } from "react/jsx-runtime";
15372
15645
  import { jsx as jsx42 } from "react/jsx-runtime";
@@ -15553,11 +15826,11 @@ var RenderSvg = ({
15553
15826
  ...pathStyle ?? {}
15554
15827
  };
15555
15828
  }, [pathStyle]);
15556
- const outlineRef = useRef28(null);
15557
- const setSvgRef = useCallback24((node) => {
15829
+ const outlineRef = useRef29(null);
15830
+ const setSvgRef = useCallback25((node) => {
15558
15831
  outlineRef.current = node;
15559
15832
  }, []);
15560
- const setCanvasRef = useCallback24((canvas) => {
15833
+ const setCanvasRef = useCallback25((canvas) => {
15561
15834
  outlineRef.current = canvas;
15562
15835
  }, []);
15563
15836
  const memoizedEffectDefinitions = Internals.useMemoizedEffectDefinitions(effects);
@@ -15571,7 +15844,7 @@ var RenderSvg = ({
15571
15844
  xmlns: "http://www.w3.org/2000/svg",
15572
15845
  style: effects.length === 0 || !videoConfig ? actualStyle : { overflow: "visible" },
15573
15846
  children: [
15574
- /* @__PURE__ */ jsx39("path", {
15847
+ /* @__PURE__ */ jsx40("path", {
15575
15848
  ...reactSupportsTransformOrigin ? {
15576
15849
  transformOrigin
15577
15850
  } : {
@@ -15591,17 +15864,17 @@ var RenderSvg = ({
15591
15864
  const prevY = prevInstruction.y;
15592
15865
  return /* @__PURE__ */ jsxs3(React.Fragment, {
15593
15866
  children: [
15594
- /* @__PURE__ */ jsx39("path", {
15867
+ /* @__PURE__ */ jsx40("path", {
15595
15868
  d: `M ${prevX} ${prevY} ${i.cp1x} ${i.cp1y}`,
15596
15869
  strokeWidth: 2,
15597
15870
  stroke: "rgba(0, 0, 0, 0.4)"
15598
15871
  }),
15599
- /* @__PURE__ */ jsx39("path", {
15872
+ /* @__PURE__ */ jsx40("path", {
15600
15873
  d: `M ${i.x} ${i.y} ${i.cp2x} ${i.cp2y}`,
15601
15874
  strokeWidth: 2,
15602
15875
  stroke: "rgba(0, 0, 0, 0.4)"
15603
15876
  }),
15604
- /* @__PURE__ */ jsx39("circle", {
15877
+ /* @__PURE__ */ jsx40("circle", {
15605
15878
  cx: i.cp1x,
15606
15879
  cy: i.cp1y,
15607
15880
  r: 3,
@@ -15609,7 +15882,7 @@ var RenderSvg = ({
15609
15882
  strokeWidth: 2,
15610
15883
  stroke: "black"
15611
15884
  }),
15612
- /* @__PURE__ */ jsx39("circle", {
15885
+ /* @__PURE__ */ jsx40("circle", {
15613
15886
  cx: i.cp2x,
15614
15887
  cy: i.cp2y,
15615
15888
  r: 3,
@@ -15624,7 +15897,7 @@ var RenderSvg = ({
15624
15897
  }) : null
15625
15898
  ]
15626
15899
  });
15627
- const content = effects.length === 0 ? svg : /* @__PURE__ */ jsx39(HtmlInCanvas, {
15900
+ const content = effects.length === 0 ? svg : /* @__PURE__ */ jsx40(HtmlInCanvas, {
15628
15901
  ref: setCanvasRef,
15629
15902
  width: Math.ceil(width),
15630
15903
  height: Math.ceil(height),
@@ -15639,7 +15912,7 @@ var RenderSvg = ({
15639
15912
  if (!videoConfig) {
15640
15913
  return svg;
15641
15914
  }
15642
- return /* @__PURE__ */ jsx39(Sequence, {
15915
+ return /* @__PURE__ */ jsx40(Sequence, {
15643
15916
  layout: "none",
15644
15917
  from,
15645
15918
  hidden,
@@ -17752,8 +18025,8 @@ var extrudeAndTransformElement = (options) => {
17752
18025
  // ../design/dist/esm/index.mjs
17753
18026
  import { jsx as jsx212, Fragment as Fragment3 } from "react/jsx-runtime";
17754
18027
  import { jsx as jsx312, jsxs as jsxs5 } from "react/jsx-runtime";
17755
- import { useEffect as useEffect23, useMemo as useMemo210, useRef as useRef30 } from "react";
17756
- import { jsx as jsx43 } from "react/jsx-runtime";
18028
+ import { useEffect as useEffect23, useMemo as useMemo210, useRef as useRef31 } from "react";
18029
+ import { jsx as jsx44 } from "react/jsx-runtime";
17757
18030
  import { jsx as jsx53, jsxs as jsxs22 } from "react/jsx-runtime";
17758
18031
  import React62 from "react";
17759
18032
  import { jsx as jsx63 } from "react/jsx-runtime";
@@ -17764,7 +18037,7 @@ import React72 from "react";
17764
18037
  import { jsx as jsx103 } from "react/jsx-runtime";
17765
18038
  import { jsx as jsx112 } from "react/jsx-runtime";
17766
18039
  import { jsx as jsx122 } from "react/jsx-runtime";
17767
- import * as React362 from "react";
18040
+ import * as React36 from "react";
17768
18041
  import * as ReactDOM4 from "react-dom";
17769
18042
  import React112 from "react";
17770
18043
  import * as React8 from "react";
@@ -17803,7 +18076,7 @@ import * as React27 from "react";
17803
18076
  import * as React28 from "react";
17804
18077
  import { jsx as jsx232 } from "react/jsx-runtime";
17805
18078
  import * as React352 from "react";
17806
- import * as React31 from "react";
18079
+ import * as React312 from "react";
17807
18080
  import { useState as useState112 } from "react";
17808
18081
  import * as React292 from "react";
17809
18082
  import * as React302 from "react";
@@ -17813,21 +18086,21 @@ import * as React322 from "react";
17813
18086
  import { Fragment as Fragment8, jsx as jsx242, jsxs as jsxs4 } from "react/jsx-runtime";
17814
18087
  import { forwardRef as forwardRef142, createElement as createElement7 } from "react";
17815
18088
  import { forwardRef as forwardRef132, createElement as createElement6 } from "react";
17816
- import * as React37 from "react";
18089
+ import * as React372 from "react";
17817
18090
  import { jsx as jsx252, jsxs as jsxs52 } from "react/jsx-runtime";
17818
18091
  import { jsx as jsx262 } from "react/jsx-runtime";
17819
18092
  import * as React49 from "react";
17820
- import * as React382 from "react";
18093
+ import * as React38 from "react";
17821
18094
  import { jsx as jsx272 } from "react/jsx-runtime";
17822
18095
  import * as React47 from "react";
17823
- import React40 from "react";
18096
+ import React402 from "react";
17824
18097
  import * as React392 from "react";
17825
18098
  import { Fragment as Fragment22, jsx as jsx282 } from "react/jsx-runtime";
17826
18099
  import { jsx as jsx292 } from "react/jsx-runtime";
17827
18100
  import React210 from "react";
17828
18101
  import { jsx as jsx2102 } from "react/jsx-runtime";
17829
- import * as React42 from "react";
17830
- import * as React412 from "react";
18102
+ import * as React422 from "react";
18103
+ import * as React41 from "react";
17831
18104
  import * as React43 from "react";
17832
18105
  import * as ReactDOM5 from "react-dom";
17833
18106
  import { jsx as jsx302 } from "react/jsx-runtime";
@@ -17845,7 +18118,7 @@ import { jsx as jsx342 } from "react/jsx-runtime";
17845
18118
  import React51 from "react";
17846
18119
  import { jsx as jsx352 } from "react/jsx-runtime";
17847
18120
  import { jsx as jsx362 } from "react/jsx-runtime";
17848
- function setRef(ref, value) {
18121
+ function setRef2(ref, value) {
17849
18122
  if (typeof ref === "function") {
17850
18123
  return ref(value);
17851
18124
  } else if (ref !== null && ref !== undefined) {
@@ -17856,7 +18129,7 @@ function composeRefs(...refs) {
17856
18129
  return (node) => {
17857
18130
  let hasCleanup = false;
17858
18131
  const cleanups = refs.map((ref) => {
17859
- const cleanup = setRef(ref, node);
18132
+ const cleanup = setRef2(ref, node);
17860
18133
  if (!hasCleanup && typeof cleanup == "function") {
17861
18134
  hasCleanup = true;
17862
18135
  }
@@ -17869,7 +18142,7 @@ function composeRefs(...refs) {
17869
18142
  if (typeof cleanup == "function") {
17870
18143
  cleanup();
17871
18144
  } else {
17872
- setRef(refs[i], null);
18145
+ setRef2(refs[i], null);
17873
18146
  }
17874
18147
  }
17875
18148
  };
@@ -17907,9 +18180,9 @@ function createSlot(ownerName) {
17907
18180
  return child;
17908
18181
  }
17909
18182
  });
17910
- return /* @__PURE__ */ jsx41(SlotClone, { ...slotProps, ref: forwardedRef, children: React23.isValidElement(newElement) ? React23.cloneElement(newElement, undefined, newChildren) : null });
18183
+ return /* @__PURE__ */ jsx43(SlotClone, { ...slotProps, ref: forwardedRef, children: React23.isValidElement(newElement) ? React23.cloneElement(newElement, undefined, newChildren) : null });
17911
18184
  }
17912
- return /* @__PURE__ */ jsx41(SlotClone, { ...slotProps, ref: forwardedRef, children });
18185
+ return /* @__PURE__ */ jsx43(SlotClone, { ...slotProps, ref: forwardedRef, children });
17913
18186
  });
17914
18187
  Slot2.displayName = `${ownerName}.Slot`;
17915
18188
  return Slot2;
@@ -17937,7 +18210,7 @@ function createSlotClone(ownerName) {
17937
18210
  var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
17938
18211
  function createSlottable(ownerName) {
17939
18212
  const Slottable2 = ({ children }) => {
17940
- return /* @__PURE__ */ jsx41(Fragment2, { children });
18213
+ return /* @__PURE__ */ jsx43(Fragment2, { children });
17941
18214
  };
17942
18215
  Slottable2.displayName = `${ownerName}.Slottable`;
17943
18216
  Slottable2.__radixId = SLOTTABLE_IDENTIFIER;
@@ -18002,7 +18275,7 @@ var getChildNodeFrom = (htmlElement) => {
18002
18275
  return childNode;
18003
18276
  };
18004
18277
  var useHoverTransforms = (ref, disabled) => {
18005
- const [state, setState] = React35.useState({
18278
+ const [state, setState] = React32.useState({
18006
18279
  progress: 0,
18007
18280
  isActive: false
18008
18281
  });
@@ -18014,7 +18287,7 @@ var useHoverTransforms = (ref, disabled) => {
18014
18287
  eventTarget.dispatchEvent(new Event("enabled"));
18015
18288
  }
18016
18289
  }, [disabled, eventTarget]);
18017
- React35.useEffect(() => {
18290
+ React32.useEffect(() => {
18018
18291
  const element = ref.current;
18019
18292
  if (!element)
18020
18293
  return;
@@ -18089,8 +18362,8 @@ var useHoverTransforms = (ref, disabled) => {
18089
18362
  return state;
18090
18363
  };
18091
18364
  var useClickTransforms = (ref) => {
18092
- const [hoverProgress, setHoverProgress] = React35.useState(0);
18093
- React35.useEffect(() => {
18365
+ const [hoverProgress, setHoverProgress] = React32.useState(0);
18366
+ React32.useEffect(() => {
18094
18367
  const element = getChildNodeFrom(ref.current);
18095
18368
  if (!element) {
18096
18369
  return;
@@ -18274,7 +18547,7 @@ var Spinner = ({ size, duration }) => {
18274
18547
  height: size
18275
18548
  };
18276
18549
  }, [size]);
18277
- const pathsRef = useRef30([]);
18550
+ const pathsRef = useRef31([]);
18278
18551
  useEffect23(() => {
18279
18552
  const animate = () => {
18280
18553
  const now = performance.now();
@@ -18293,11 +18566,11 @@ var Spinner = ({ size, duration }) => {
18293
18566
  cancelAnimationFrame(id);
18294
18567
  };
18295
18568
  }, [duration]);
18296
- return /* @__PURE__ */ jsx43("svg", {
18569
+ return /* @__PURE__ */ jsx44("svg", {
18297
18570
  style,
18298
18571
  viewBox: `0 0 ${viewBox} ${viewBox}`,
18299
18572
  children: new Array(lines).fill(true).map((_, index) => {
18300
- return /* @__PURE__ */ jsx43("path", {
18573
+ return /* @__PURE__ */ jsx44("path", {
18301
18574
  ref: (el) => pathsRef.current[index] = el,
18302
18575
  style: {
18303
18576
  rotate: `${index * Math.PI * 2 / lines}rad`,
@@ -18320,9 +18593,9 @@ var Button = ({
18320
18593
  ...rest
18321
18594
  }) => {
18322
18595
  const [dimensions, setDimensions] = useState22(null);
18323
- const ref = useRef29(null);
18596
+ const ref = useRef210(null);
18324
18597
  const { isActive, progress } = useHoverTransforms(ref, Boolean(disabled || loading));
18325
- const onPointerEnter = useCallback25((e) => {
18598
+ const onPointerEnter = useCallback26((e) => {
18326
18599
  if (e.pointerType !== "mouse") {
18327
18600
  return;
18328
18601
  }
@@ -18359,7 +18632,7 @@ var Button = ({
18359
18632
  const isDisabled = disabled || loading;
18360
18633
  const isAnchor = !asChild && "href" in rest && rest.href !== undefined;
18361
18634
  const sharedClasses = cn("text-text", "inline-flex", "justify-center", "bg-button-bg", "items-center", "font-brand", "border-solid", "text-[1em]", "rounded-lg", "border-black", "border-2", "border-b-4", "cursor-pointer", "px-4", "h-12", "flex-row", "items-center", "relative", "overflow-hidden", isDisabled && "cursor-default opacity-50", className);
18362
- const preventInteraction = useCallback25((e) => {
18635
+ const preventInteraction = useCallback26((e) => {
18363
18636
  e.preventDefault();
18364
18637
  e.stopPropagation();
18365
18638
  }, []);
@@ -18655,7 +18928,7 @@ function composeContextScopes(...scopes) {
18655
18928
  createScope.scopeName = baseScope.scopeName;
18656
18929
  return createScope;
18657
18930
  }
18658
- function setRef2(ref, value) {
18931
+ function setRef22(ref, value) {
18659
18932
  if (typeof ref === "function") {
18660
18933
  ref(value);
18661
18934
  } else if (ref !== null && ref !== undefined) {
@@ -18663,7 +18936,7 @@ function setRef2(ref, value) {
18663
18936
  }
18664
18937
  }
18665
18938
  function composeRefs2(...refs) {
18666
- return (node) => refs.forEach((ref) => setRef2(ref, node));
18939
+ return (node) => refs.forEach((ref) => setRef22(ref, node));
18667
18940
  }
18668
18941
  function useComposedRefs2(...refs) {
18669
18942
  return React9.useCallback(composeRefs2(...refs), refs);
@@ -21761,9 +22034,9 @@ var effectCar = createSidecarMedium();
21761
22034
  var nothing = function() {
21762
22035
  return;
21763
22036
  };
21764
- var RemoveScroll = React31.forwardRef(function(props, parentRef) {
21765
- var ref = React31.useRef(null);
21766
- var _a = React31.useState({
22037
+ var RemoveScroll = React312.forwardRef(function(props, parentRef) {
22038
+ var ref = React312.useRef(null);
22039
+ var _a = React312.useState({
21767
22040
  onScrollCapture: nothing,
21768
22041
  onWheelCapture: nothing,
21769
22042
  onTouchMoveCapture: nothing
@@ -21772,7 +22045,7 @@ var RemoveScroll = React31.forwardRef(function(props, parentRef) {
21772
22045
  var SideCar2 = sideCar;
21773
22046
  var containerRef = useMergeRefs([ref, parentRef]);
21774
22047
  var containerProps = __assign(__assign({}, rest), callbacks);
21775
- return React31.createElement(React31.Fragment, null, enabled && React31.createElement(SideCar2, { sideCar: effectCar, removeScrollBar, shards, noIsolation, inert, setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode }), forwardProps ? React31.cloneElement(React31.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef })) : React31.createElement(Container, __assign({}, containerProps, { className, ref: containerRef }), children));
22048
+ return React312.createElement(React312.Fragment, null, enabled && React312.createElement(SideCar2, { sideCar: effectCar, removeScrollBar, shards, noIsolation, inert, setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode }), forwardProps ? React312.cloneElement(React312.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef })) : React312.createElement(Container, __assign({}, containerProps, { className, ref: containerRef }), children));
21776
22049
  });
21777
22050
  RemoveScroll.defaultProps = {
21778
22051
  enabled: true,
@@ -22264,9 +22537,9 @@ var Select = (props) => {
22264
22537
  required
22265
22538
  } = props;
22266
22539
  const popperScope = usePopperScope(__scopeSelect);
22267
- const [trigger, setTrigger] = React362.useState(null);
22268
- const [valueNode, setValueNode] = React362.useState(null);
22269
- const [valueNodeHasChildren, setValueNodeHasChildren] = React362.useState(false);
22540
+ const [trigger, setTrigger] = React36.useState(null);
22541
+ const [valueNode, setValueNode] = React36.useState(null);
22542
+ const [valueNodeHasChildren, setValueNodeHasChildren] = React36.useState(false);
22270
22543
  const direction = useDirection(dir);
22271
22544
  const [open = false, setOpen] = useControllableState({
22272
22545
  prop: openProp,
@@ -22278,9 +22551,9 @@ var Select = (props) => {
22278
22551
  defaultProp: defaultValue,
22279
22552
  onChange: onValueChange
22280
22553
  });
22281
- const triggerPointerDownPosRef = React362.useRef(null);
22554
+ const triggerPointerDownPosRef = React36.useRef(null);
22282
22555
  const isFormControl = trigger ? Boolean(trigger.closest("form")) : true;
22283
- const [nativeOptionsSet, setNativeOptionsSet] = React362.useState(/* @__PURE__ */ new Set);
22556
+ const [nativeOptionsSet, setNativeOptionsSet] = React36.useState(/* @__PURE__ */ new Set);
22284
22557
  const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(";");
22285
22558
  return /* @__PURE__ */ jsx242(Root22, { ...popperScope, children: /* @__PURE__ */ jsxs4(SelectProvider, {
22286
22559
  required,
@@ -22302,10 +22575,10 @@ var Select = (props) => {
22302
22575
  children: [
22303
22576
  /* @__PURE__ */ jsx242(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx242(SelectNativeOptionsProvider, {
22304
22577
  scope: props.__scopeSelect,
22305
- onNativeOptionAdd: React362.useCallback((option) => {
22578
+ onNativeOptionAdd: React36.useCallback((option) => {
22306
22579
  setNativeOptionsSet((prev) => new Set(prev).add(option));
22307
22580
  }, []),
22308
- onNativeOptionRemove: React362.useCallback((option) => {
22581
+ onNativeOptionRemove: React36.useCallback((option) => {
22309
22582
  setNativeOptionsSet((prev) => {
22310
22583
  const optionsSet = new Set(prev);
22311
22584
  optionsSet.delete(option);
@@ -22333,7 +22606,7 @@ var Select = (props) => {
22333
22606
  };
22334
22607
  Select.displayName = SELECT_NAME;
22335
22608
  var TRIGGER_NAME = "SelectTrigger";
22336
- var SelectTrigger = React362.forwardRef((props, forwardedRef) => {
22609
+ var SelectTrigger = React36.forwardRef((props, forwardedRef) => {
22337
22610
  const { __scopeSelect, disabled = false, ...triggerProps } = props;
22338
22611
  const popperScope = usePopperScope(__scopeSelect);
22339
22612
  const context = useSelectContext(TRIGGER_NAME, __scopeSelect);
@@ -22401,7 +22674,7 @@ var SelectTrigger = React362.forwardRef((props, forwardedRef) => {
22401
22674
  });
22402
22675
  SelectTrigger.displayName = TRIGGER_NAME;
22403
22676
  var VALUE_NAME = "SelectValue";
22404
- var SelectValue = React362.forwardRef((props, forwardedRef) => {
22677
+ var SelectValue = React36.forwardRef((props, forwardedRef) => {
22405
22678
  const { __scopeSelect, className, style, children, placeholder = "", ...valueProps } = props;
22406
22679
  const context = useSelectContext(VALUE_NAME, __scopeSelect);
22407
22680
  const { onValueNodeHasChildrenChange } = context;
@@ -22419,7 +22692,7 @@ var SelectValue = React362.forwardRef((props, forwardedRef) => {
22419
22692
  });
22420
22693
  SelectValue.displayName = VALUE_NAME;
22421
22694
  var ICON_NAME = "SelectIcon";
22422
- var SelectIcon = React362.forwardRef((props, forwardedRef) => {
22695
+ var SelectIcon = React36.forwardRef((props, forwardedRef) => {
22423
22696
  const { __scopeSelect, children, ...iconProps } = props;
22424
22697
  return /* @__PURE__ */ jsx242(Primitive.span, { "aria-hidden": true, ...iconProps, ref: forwardedRef, children: children || "▼" });
22425
22698
  });
@@ -22430,9 +22703,9 @@ var SelectPortal = (props) => {
22430
22703
  };
22431
22704
  SelectPortal.displayName = PORTAL_NAME2;
22432
22705
  var CONTENT_NAME2 = "SelectContent";
22433
- var SelectContent = React362.forwardRef((props, forwardedRef) => {
22706
+ var SelectContent = React36.forwardRef((props, forwardedRef) => {
22434
22707
  const context = useSelectContext(CONTENT_NAME2, props.__scopeSelect);
22435
- const [fragment, setFragment] = React362.useState();
22708
+ const [fragment, setFragment] = React36.useState();
22436
22709
  useLayoutEffect22(() => {
22437
22710
  setFragment(new DocumentFragment);
22438
22711
  }, []);
@@ -22446,7 +22719,7 @@ SelectContent.displayName = CONTENT_NAME2;
22446
22719
  var CONTENT_MARGIN = 10;
22447
22720
  var [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME2);
22448
22721
  var CONTENT_IMPL_NAME = "SelectContentImpl";
22449
- var SelectContentImpl = React362.forwardRef((props, forwardedRef) => {
22722
+ var SelectContentImpl = React36.forwardRef((props, forwardedRef) => {
22450
22723
  const {
22451
22724
  __scopeSelect,
22452
22725
  position = "item-aligned",
@@ -22466,20 +22739,20 @@ var SelectContentImpl = React362.forwardRef((props, forwardedRef) => {
22466
22739
  ...contentProps
22467
22740
  } = props;
22468
22741
  const context = useSelectContext(CONTENT_NAME2, __scopeSelect);
22469
- const [content, setContent] = React362.useState(null);
22470
- const [viewport, setViewport] = React362.useState(null);
22742
+ const [content, setContent] = React36.useState(null);
22743
+ const [viewport, setViewport] = React36.useState(null);
22471
22744
  const composedRefs = useComposedRefs2(forwardedRef, (node) => setContent(node));
22472
- const [selectedItem, setSelectedItem] = React362.useState(null);
22473
- const [selectedItemText, setSelectedItemText] = React362.useState(null);
22745
+ const [selectedItem, setSelectedItem] = React36.useState(null);
22746
+ const [selectedItemText, setSelectedItemText] = React36.useState(null);
22474
22747
  const getItems = useCollection(__scopeSelect);
22475
- const [isPositioned, setIsPositioned] = React362.useState(false);
22476
- const firstValidItemFoundRef = React362.useRef(false);
22477
- React362.useEffect(() => {
22748
+ const [isPositioned, setIsPositioned] = React36.useState(false);
22749
+ const firstValidItemFoundRef = React36.useRef(false);
22750
+ React36.useEffect(() => {
22478
22751
  if (content)
22479
22752
  return hideOthers(content);
22480
22753
  }, [content]);
22481
22754
  useFocusGuards();
22482
- const focusFirst2 = React362.useCallback((candidates) => {
22755
+ const focusFirst2 = React36.useCallback((candidates) => {
22483
22756
  const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);
22484
22757
  const [lastItem] = restItems.slice(-1);
22485
22758
  const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;
@@ -22496,14 +22769,14 @@ var SelectContentImpl = React362.forwardRef((props, forwardedRef) => {
22496
22769
  return;
22497
22770
  }
22498
22771
  }, [getItems, viewport]);
22499
- const focusSelectedItem = React362.useCallback(() => focusFirst2([selectedItem, content]), [focusFirst2, selectedItem, content]);
22500
- React362.useEffect(() => {
22772
+ const focusSelectedItem = React36.useCallback(() => focusFirst2([selectedItem, content]), [focusFirst2, selectedItem, content]);
22773
+ React36.useEffect(() => {
22501
22774
  if (isPositioned) {
22502
22775
  focusSelectedItem();
22503
22776
  }
22504
22777
  }, [isPositioned, focusSelectedItem]);
22505
22778
  const { onOpenChange, triggerPointerDownPosRef } = context;
22506
- React362.useEffect(() => {
22779
+ React36.useEffect(() => {
22507
22780
  if (content) {
22508
22781
  let pointerMoveDelta = { x: 0, y: 0 };
22509
22782
  const handlePointerMove = (event) => {
@@ -22533,7 +22806,7 @@ var SelectContentImpl = React362.forwardRef((props, forwardedRef) => {
22533
22806
  };
22534
22807
  }
22535
22808
  }, [content, onOpenChange, triggerPointerDownPosRef]);
22536
- React362.useEffect(() => {
22809
+ React36.useEffect(() => {
22537
22810
  const close = () => onOpenChange(false);
22538
22811
  window.addEventListener("blur", close);
22539
22812
  window.addEventListener("resize", close);
@@ -22550,7 +22823,7 @@ var SelectContentImpl = React362.forwardRef((props, forwardedRef) => {
22550
22823
  setTimeout(() => nextItem.ref.current.focus());
22551
22824
  }
22552
22825
  });
22553
- const itemRefCallback = React362.useCallback((node, value, disabled) => {
22826
+ const itemRefCallback = React36.useCallback((node, value, disabled) => {
22554
22827
  const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;
22555
22828
  const isSelectedItem = context.value !== undefined && context.value === value;
22556
22829
  if (isSelectedItem || isFirstValidItem) {
@@ -22559,8 +22832,8 @@ var SelectContentImpl = React362.forwardRef((props, forwardedRef) => {
22559
22832
  firstValidItemFoundRef.current = true;
22560
22833
  }
22561
22834
  }, [context.value]);
22562
- const handleItemLeave = React362.useCallback(() => content?.focus(), [content]);
22563
- const itemTextRefCallback = React362.useCallback((node, value, disabled) => {
22835
+ const handleItemLeave = React36.useCallback(() => content?.focus(), [content]);
22836
+ const itemTextRefCallback = React36.useCallback((node, value, disabled) => {
22564
22837
  const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;
22565
22838
  const isSelectedItem = context.value !== undefined && context.value === value;
22566
22839
  if (isSelectedItem || isFirstValidItem) {
@@ -22655,18 +22928,18 @@ var SelectContentImpl = React362.forwardRef((props, forwardedRef) => {
22655
22928
  });
22656
22929
  SelectContentImpl.displayName = CONTENT_IMPL_NAME;
22657
22930
  var ITEM_ALIGNED_POSITION_NAME = "SelectItemAlignedPosition";
22658
- var SelectItemAlignedPosition = React362.forwardRef((props, forwardedRef) => {
22931
+ var SelectItemAlignedPosition = React36.forwardRef((props, forwardedRef) => {
22659
22932
  const { __scopeSelect, onPlaced, ...popperProps } = props;
22660
22933
  const context = useSelectContext(CONTENT_NAME2, __scopeSelect);
22661
22934
  const contentContext = useSelectContentContext(CONTENT_NAME2, __scopeSelect);
22662
- const [contentWrapper, setContentWrapper] = React362.useState(null);
22663
- const [content, setContent] = React362.useState(null);
22935
+ const [contentWrapper, setContentWrapper] = React36.useState(null);
22936
+ const [content, setContent] = React36.useState(null);
22664
22937
  const composedRefs = useComposedRefs2(forwardedRef, (node) => setContent(node));
22665
22938
  const getItems = useCollection(__scopeSelect);
22666
- const shouldExpandOnScrollRef = React362.useRef(false);
22667
- const shouldRepositionRef = React362.useRef(true);
22939
+ const shouldExpandOnScrollRef = React36.useRef(false);
22940
+ const shouldRepositionRef = React36.useRef(true);
22668
22941
  const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;
22669
- const position = React362.useCallback(() => {
22942
+ const position = React36.useCallback(() => {
22670
22943
  if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {
22671
22944
  const triggerRect = context.trigger.getBoundingClientRect();
22672
22945
  const contentRect = content.getBoundingClientRect();
@@ -22747,12 +23020,12 @@ var SelectItemAlignedPosition = React362.forwardRef((props, forwardedRef) => {
22747
23020
  onPlaced
22748
23021
  ]);
22749
23022
  useLayoutEffect22(() => position(), [position]);
22750
- const [contentZIndex, setContentZIndex] = React362.useState();
23023
+ const [contentZIndex, setContentZIndex] = React36.useState();
22751
23024
  useLayoutEffect22(() => {
22752
23025
  if (content)
22753
23026
  setContentZIndex(window.getComputedStyle(content).zIndex);
22754
23027
  }, [content]);
22755
- const handleScrollButtonChange = React362.useCallback((node) => {
23028
+ const handleScrollButtonChange = React36.useCallback((node) => {
22756
23029
  if (node && shouldRepositionRef.current === true) {
22757
23030
  position();
22758
23031
  focusSelectedItem?.();
@@ -22786,7 +23059,7 @@ var SelectItemAlignedPosition = React362.forwardRef((props, forwardedRef) => {
22786
23059
  });
22787
23060
  SelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;
22788
23061
  var POPPER_POSITION_NAME = "SelectPopperPosition";
22789
- var SelectPopperPosition = React362.forwardRef((props, forwardedRef) => {
23062
+ var SelectPopperPosition = React36.forwardRef((props, forwardedRef) => {
22790
23063
  const {
22791
23064
  __scopeSelect,
22792
23065
  align = "start",
@@ -22816,12 +23089,12 @@ var SelectPopperPosition = React362.forwardRef((props, forwardedRef) => {
22816
23089
  SelectPopperPosition.displayName = POPPER_POSITION_NAME;
22817
23090
  var [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME2, {});
22818
23091
  var VIEWPORT_NAME = "SelectViewport";
22819
- var SelectViewport = React362.forwardRef((props, forwardedRef) => {
23092
+ var SelectViewport = React36.forwardRef((props, forwardedRef) => {
22820
23093
  const { __scopeSelect, nonce, ...viewportProps } = props;
22821
23094
  const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);
22822
23095
  const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);
22823
23096
  const composedRefs = useComposedRefs2(forwardedRef, contentContext.onViewportChange);
22824
- const prevScrollTopRef = React362.useRef(0);
23097
+ const prevScrollTopRef = React36.useRef(0);
22825
23098
  return /* @__PURE__ */ jsxs4(Fragment8, { children: [
22826
23099
  /* @__PURE__ */ jsx242("style", {
22827
23100
  dangerouslySetInnerHTML: {
@@ -22870,14 +23143,14 @@ var SelectViewport = React362.forwardRef((props, forwardedRef) => {
22870
23143
  SelectViewport.displayName = VIEWPORT_NAME;
22871
23144
  var GROUP_NAME = "SelectGroup";
22872
23145
  var [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);
22873
- var SelectGroup = React362.forwardRef((props, forwardedRef) => {
23146
+ var SelectGroup = React36.forwardRef((props, forwardedRef) => {
22874
23147
  const { __scopeSelect, ...groupProps } = props;
22875
23148
  const groupId = useId();
22876
23149
  return /* @__PURE__ */ jsx242(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsx242(Primitive.div, { role: "group", "aria-labelledby": groupId, ...groupProps, ref: forwardedRef }) });
22877
23150
  });
22878
23151
  SelectGroup.displayName = GROUP_NAME;
22879
23152
  var LABEL_NAME = "SelectLabel";
22880
- var SelectLabel = React362.forwardRef((props, forwardedRef) => {
23153
+ var SelectLabel = React36.forwardRef((props, forwardedRef) => {
22881
23154
  const { __scopeSelect, ...labelProps } = props;
22882
23155
  const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);
22883
23156
  return /* @__PURE__ */ jsx242(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });
@@ -22885,7 +23158,7 @@ var SelectLabel = React362.forwardRef((props, forwardedRef) => {
22885
23158
  SelectLabel.displayName = LABEL_NAME;
22886
23159
  var ITEM_NAME = "SelectItem";
22887
23160
  var [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);
22888
- var SelectItem = React362.forwardRef((props, forwardedRef) => {
23161
+ var SelectItem = React36.forwardRef((props, forwardedRef) => {
22889
23162
  const {
22890
23163
  __scopeSelect,
22891
23164
  value,
@@ -22896,8 +23169,8 @@ var SelectItem = React362.forwardRef((props, forwardedRef) => {
22896
23169
  const context = useSelectContext(ITEM_NAME, __scopeSelect);
22897
23170
  const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);
22898
23171
  const isSelected = context.value === value;
22899
- const [textValue, setTextValue] = React362.useState(textValueProp ?? "");
22900
- const [isFocused, setIsFocused] = React362.useState(false);
23172
+ const [textValue, setTextValue] = React36.useState(textValueProp ?? "");
23173
+ const [isFocused, setIsFocused] = React36.useState(false);
22901
23174
  const composedRefs = useComposedRefs2(forwardedRef, (node) => contentContext.itemRefCallback?.(node, value, disabled));
22902
23175
  const textId = useId();
22903
23176
  const handleSelect = () => {
@@ -22915,7 +23188,7 @@ var SelectItem = React362.forwardRef((props, forwardedRef) => {
22915
23188
  disabled,
22916
23189
  textId,
22917
23190
  isSelected,
22918
- onItemTextChange: React362.useCallback((node) => {
23191
+ onItemTextChange: React36.useCallback((node) => {
22919
23192
  setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? "").trim());
22920
23193
  }, []),
22921
23194
  children: /* @__PURE__ */ jsx242(Collection.ItemSlot, {
@@ -22964,16 +23237,16 @@ var SelectItem = React362.forwardRef((props, forwardedRef) => {
22964
23237
  });
22965
23238
  SelectItem.displayName = ITEM_NAME;
22966
23239
  var ITEM_TEXT_NAME = "SelectItemText";
22967
- var SelectItemText = React362.forwardRef((props, forwardedRef) => {
23240
+ var SelectItemText = React36.forwardRef((props, forwardedRef) => {
22968
23241
  const { __scopeSelect, className, style, ...itemTextProps } = props;
22969
23242
  const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);
22970
23243
  const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);
22971
23244
  const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);
22972
23245
  const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);
22973
- const [itemTextNode, setItemTextNode] = React362.useState(null);
23246
+ const [itemTextNode, setItemTextNode] = React36.useState(null);
22974
23247
  const composedRefs = useComposedRefs2(forwardedRef, (node) => setItemTextNode(node), itemContext.onItemTextChange, (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled));
22975
23248
  const textContent = itemTextNode?.textContent;
22976
- const nativeOption = React362.useMemo(() => /* @__PURE__ */ jsx242("option", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value), [itemContext.disabled, itemContext.value, textContent]);
23249
+ const nativeOption = React36.useMemo(() => /* @__PURE__ */ jsx242("option", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value), [itemContext.disabled, itemContext.value, textContent]);
22977
23250
  const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;
22978
23251
  useLayoutEffect22(() => {
22979
23252
  onNativeOptionAdd(nativeOption);
@@ -22986,17 +23259,17 @@ var SelectItemText = React362.forwardRef((props, forwardedRef) => {
22986
23259
  });
22987
23260
  SelectItemText.displayName = ITEM_TEXT_NAME;
22988
23261
  var ITEM_INDICATOR_NAME = "SelectItemIndicator";
22989
- var SelectItemIndicator = React362.forwardRef((props, forwardedRef) => {
23262
+ var SelectItemIndicator = React36.forwardRef((props, forwardedRef) => {
22990
23263
  const { __scopeSelect, ...itemIndicatorProps } = props;
22991
23264
  const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);
22992
23265
  return itemContext.isSelected ? /* @__PURE__ */ jsx242(Primitive.span, { "aria-hidden": true, ...itemIndicatorProps, ref: forwardedRef }) : null;
22993
23266
  });
22994
23267
  SelectItemIndicator.displayName = ITEM_INDICATOR_NAME;
22995
23268
  var SCROLL_UP_BUTTON_NAME = "SelectScrollUpButton";
22996
- var SelectScrollUpButton = React362.forwardRef((props, forwardedRef) => {
23269
+ var SelectScrollUpButton = React36.forwardRef((props, forwardedRef) => {
22997
23270
  const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);
22998
23271
  const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);
22999
- const [canScrollUp, setCanScrollUp] = React362.useState(false);
23272
+ const [canScrollUp, setCanScrollUp] = React36.useState(false);
23000
23273
  const composedRefs = useComposedRefs2(forwardedRef, viewportContext.onScrollButtonChange);
23001
23274
  useLayoutEffect22(() => {
23002
23275
  if (contentContext.viewport && contentContext.isPositioned) {
@@ -23024,10 +23297,10 @@ var SelectScrollUpButton = React362.forwardRef((props, forwardedRef) => {
23024
23297
  });
23025
23298
  SelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;
23026
23299
  var SCROLL_DOWN_BUTTON_NAME = "SelectScrollDownButton";
23027
- var SelectScrollDownButton = React362.forwardRef((props, forwardedRef) => {
23300
+ var SelectScrollDownButton = React36.forwardRef((props, forwardedRef) => {
23028
23301
  const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);
23029
23302
  const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);
23030
- const [canScrollDown, setCanScrollDown] = React362.useState(false);
23303
+ const [canScrollDown, setCanScrollDown] = React36.useState(false);
23031
23304
  const composedRefs = useComposedRefs2(forwardedRef, viewportContext.onScrollButtonChange);
23032
23305
  useLayoutEffect22(() => {
23033
23306
  if (contentContext.viewport && contentContext.isPositioned) {
@@ -23055,18 +23328,18 @@ var SelectScrollDownButton = React362.forwardRef((props, forwardedRef) => {
23055
23328
  }) : null;
23056
23329
  });
23057
23330
  SelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
23058
- var SelectScrollButtonImpl = React362.forwardRef((props, forwardedRef) => {
23331
+ var SelectScrollButtonImpl = React36.forwardRef((props, forwardedRef) => {
23059
23332
  const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;
23060
23333
  const contentContext = useSelectContentContext("SelectScrollButton", __scopeSelect);
23061
- const autoScrollTimerRef = React362.useRef(null);
23334
+ const autoScrollTimerRef = React36.useRef(null);
23062
23335
  const getItems = useCollection(__scopeSelect);
23063
- const clearAutoScrollTimer = React362.useCallback(() => {
23336
+ const clearAutoScrollTimer = React36.useCallback(() => {
23064
23337
  if (autoScrollTimerRef.current !== null) {
23065
23338
  window.clearInterval(autoScrollTimerRef.current);
23066
23339
  autoScrollTimerRef.current = null;
23067
23340
  }
23068
23341
  }, []);
23069
- React362.useEffect(() => {
23342
+ React36.useEffect(() => {
23070
23343
  return () => clearAutoScrollTimer();
23071
23344
  }, [clearAutoScrollTimer]);
23072
23345
  useLayoutEffect22(() => {
@@ -23095,13 +23368,13 @@ var SelectScrollButtonImpl = React362.forwardRef((props, forwardedRef) => {
23095
23368
  });
23096
23369
  });
23097
23370
  var SEPARATOR_NAME = "SelectSeparator";
23098
- var SelectSeparator = React362.forwardRef((props, forwardedRef) => {
23371
+ var SelectSeparator = React36.forwardRef((props, forwardedRef) => {
23099
23372
  const { __scopeSelect, ...separatorProps } = props;
23100
23373
  return /* @__PURE__ */ jsx242(Primitive.div, { "aria-hidden": true, ...separatorProps, ref: forwardedRef });
23101
23374
  });
23102
23375
  SelectSeparator.displayName = SEPARATOR_NAME;
23103
23376
  var ARROW_NAME2 = "SelectArrow";
23104
- var SelectArrow = React362.forwardRef((props, forwardedRef) => {
23377
+ var SelectArrow = React36.forwardRef((props, forwardedRef) => {
23105
23378
  const { __scopeSelect, ...arrowProps } = props;
23106
23379
  const popperScope = usePopperScope(__scopeSelect);
23107
23380
  const context = useSelectContext(ARROW_NAME2, __scopeSelect);
@@ -23112,12 +23385,12 @@ SelectArrow.displayName = ARROW_NAME2;
23112
23385
  function shouldShowPlaceholder(value) {
23113
23386
  return value === "" || value === undefined;
23114
23387
  }
23115
- var BubbleSelect = React362.forwardRef((props, forwardedRef) => {
23388
+ var BubbleSelect = React36.forwardRef((props, forwardedRef) => {
23116
23389
  const { value, ...selectProps } = props;
23117
- const ref = React362.useRef(null);
23390
+ const ref = React36.useRef(null);
23118
23391
  const composedRefs = useComposedRefs2(forwardedRef, ref);
23119
23392
  const prevValue = usePrevious(value);
23120
- React362.useEffect(() => {
23393
+ React36.useEffect(() => {
23121
23394
  const select = ref.current;
23122
23395
  const selectProto = window.HTMLSelectElement.prototype;
23123
23396
  const descriptor = Object.getOwnPropertyDescriptor(selectProto, "value");
@@ -23133,9 +23406,9 @@ var BubbleSelect = React362.forwardRef((props, forwardedRef) => {
23133
23406
  BubbleSelect.displayName = "BubbleSelect";
23134
23407
  function useTypeaheadSearch(onSearchChange) {
23135
23408
  const handleSearchChange = useCallbackRef(onSearchChange);
23136
- const searchRef = React362.useRef("");
23137
- const timerRef = React362.useRef(0);
23138
- const handleTypeaheadSearch = React362.useCallback((key) => {
23409
+ const searchRef = React36.useRef("");
23410
+ const timerRef = React36.useRef(0);
23411
+ const handleTypeaheadSearch = React36.useCallback((key) => {
23139
23412
  const search = searchRef.current + key;
23140
23413
  handleSearchChange(search);
23141
23414
  (function updateSearch(value) {
@@ -23145,11 +23418,11 @@ function useTypeaheadSearch(onSearchChange) {
23145
23418
  timerRef.current = window.setTimeout(() => updateSearch(""), 1000);
23146
23419
  })(search);
23147
23420
  }, [handleSearchChange]);
23148
- const resetTypeahead = React362.useCallback(() => {
23421
+ const resetTypeahead = React36.useCallback(() => {
23149
23422
  searchRef.current = "";
23150
23423
  window.clearTimeout(timerRef.current);
23151
23424
  }, []);
23152
- React362.useEffect(() => {
23425
+ React36.useEffect(() => {
23153
23426
  return () => window.clearTimeout(timerRef.current);
23154
23427
  }, []);
23155
23428
  return [searchRef, handleTypeaheadSearch, resetTypeahead];
@@ -23238,7 +23511,7 @@ var ChevronDown = createLucideIcon("ChevronDown", [
23238
23511
  var ChevronUp = createLucideIcon("ChevronUp", [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]]);
23239
23512
  var Select2 = Root222;
23240
23513
  var SelectValue2 = Value;
23241
- var SelectTrigger2 = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs52(Trigger, {
23514
+ var SelectTrigger2 = React372.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs52(Trigger, {
23242
23515
  ref,
23243
23516
  className: cn("flex h-10 w-full items-center justify-between rounded-md border-black border-2 border-b-4 bg-card-bg px-3 py-5 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 font-brand", className),
23244
23517
  ...props,
@@ -23253,7 +23526,7 @@ var SelectTrigger2 = React37.forwardRef(({ className, children, ...props }, ref)
23253
23526
  ]
23254
23527
  }));
23255
23528
  SelectTrigger2.displayName = Trigger.displayName;
23256
- var SelectScrollUpButton2 = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(ScrollUpButton, {
23529
+ var SelectScrollUpButton2 = React372.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(ScrollUpButton, {
23257
23530
  ref,
23258
23531
  className: cn("flex cursor-default items-center justify-center py-1", className),
23259
23532
  ...props,
@@ -23262,7 +23535,7 @@ var SelectScrollUpButton2 = React37.forwardRef(({ className, ...props }, ref) =>
23262
23535
  })
23263
23536
  }));
23264
23537
  SelectScrollUpButton2.displayName = ScrollUpButton.displayName;
23265
- var SelectScrollDownButton2 = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(ScrollDownButton, {
23538
+ var SelectScrollDownButton2 = React372.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(ScrollDownButton, {
23266
23539
  ref,
23267
23540
  className: cn("flex cursor-default items-center justify-center py-1", className),
23268
23541
  ...props,
@@ -23271,7 +23544,7 @@ var SelectScrollDownButton2 = React37.forwardRef(({ className, ...props }, ref)
23271
23544
  })
23272
23545
  }));
23273
23546
  SelectScrollDownButton2.displayName = ScrollDownButton.displayName;
23274
- var SelectContent2 = React37.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx252(Portal2, {
23547
+ var SelectContent2 = React372.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx252(Portal2, {
23275
23548
  children: /* @__PURE__ */ jsxs52(Content2, {
23276
23549
  ref,
23277
23550
  className: cn(" border-2 border-black relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md font-brand bg-card-bg text-text shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className),
@@ -23288,13 +23561,13 @@ var SelectContent2 = React37.forwardRef(({ className, children, position = "popp
23288
23561
  })
23289
23562
  }));
23290
23563
  SelectContent2.displayName = Content2.displayName;
23291
- var SelectLabel2 = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(Label, {
23564
+ var SelectLabel2 = React372.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(Label, {
23292
23565
  ref,
23293
23566
  className: cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className),
23294
23567
  ...props
23295
23568
  }));
23296
23569
  SelectLabel2.displayName = Label.displayName;
23297
- var SelectItem2 = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs52(Item, {
23570
+ var SelectItem2 = React372.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs52(Item, {
23298
23571
  ref,
23299
23572
  className: cn("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden focus:bg-slate-200 dark:focus:bg-white/10 data-disabled:pointer-events-none data-disabled:opacity-50 font-brand", className),
23300
23573
  ...props,
@@ -23313,7 +23586,7 @@ var SelectItem2 = React37.forwardRef(({ className, children, ...props }, ref) =>
23313
23586
  ]
23314
23587
  }));
23315
23588
  SelectItem2.displayName = Item.displayName;
23316
- var SelectSeparator2 = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(Separator, {
23589
+ var SelectSeparator2 = React372.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(Separator, {
23317
23590
  ref,
23318
23591
  className: cn("-mx-1 my-1 h-px bg-muted", className),
23319
23592
  ...props
@@ -23346,19 +23619,19 @@ function composeEventHandlers2(originalEventHandler, ourEventHandler, { checkFor
23346
23619
  function createContextScope2(scopeName, createContextScopeDeps = []) {
23347
23620
  let defaultContexts = [];
23348
23621
  function createContext32(rootComponentName, defaultContext) {
23349
- const BaseContext = React382.createContext(defaultContext);
23622
+ const BaseContext = React38.createContext(defaultContext);
23350
23623
  const index2 = defaultContexts.length;
23351
23624
  defaultContexts = [...defaultContexts, defaultContext];
23352
23625
  const Provider = (props) => {
23353
23626
  const { scope, children, ...context } = props;
23354
23627
  const Context = scope?.[scopeName]?.[index2] || BaseContext;
23355
- const value = React382.useMemo(() => context, Object.values(context));
23628
+ const value = React38.useMemo(() => context, Object.values(context));
23356
23629
  return /* @__PURE__ */ jsx272(Context.Provider, { value, children });
23357
23630
  };
23358
23631
  Provider.displayName = rootComponentName + "Provider";
23359
23632
  function useContext222(consumerName, scope) {
23360
23633
  const Context = scope?.[scopeName]?.[index2] || BaseContext;
23361
- const context = React382.useContext(Context);
23634
+ const context = React38.useContext(Context);
23362
23635
  if (context)
23363
23636
  return context;
23364
23637
  if (defaultContext !== undefined)
@@ -23369,11 +23642,11 @@ function createContextScope2(scopeName, createContextScopeDeps = []) {
23369
23642
  }
23370
23643
  const createScope = () => {
23371
23644
  const scopeContexts = defaultContexts.map((defaultContext) => {
23372
- return React382.createContext(defaultContext);
23645
+ return React38.createContext(defaultContext);
23373
23646
  });
23374
23647
  return function useScope(scope) {
23375
23648
  const contexts = scope?.[scopeName] || scopeContexts;
23376
- return React382.useMemo(() => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }), [scope, contexts]);
23649
+ return React38.useMemo(() => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }), [scope, contexts]);
23377
23650
  };
23378
23651
  };
23379
23652
  createScope.scopeName = scopeName;
@@ -23394,7 +23667,7 @@ function composeContextScopes2(...scopes) {
23394
23667
  const currentScope = scopeProps[`__scope${scopeName}`];
23395
23668
  return { ...nextScopes2, ...currentScope };
23396
23669
  }, {});
23397
- return React382.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);
23670
+ return React38.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);
23398
23671
  };
23399
23672
  };
23400
23673
  createScope.scopeName = baseScope.scopeName;
@@ -23487,14 +23760,14 @@ function createCollection2(name) {
23487
23760
  const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(PROVIDER_NAME, { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map });
23488
23761
  const CollectionProvider = (props) => {
23489
23762
  const { scope, children } = props;
23490
- const ref = React40.useRef(null);
23491
- const itemMap = React40.useRef(/* @__PURE__ */ new Map).current;
23763
+ const ref = React402.useRef(null);
23764
+ const itemMap = React402.useRef(/* @__PURE__ */ new Map).current;
23492
23765
  return /* @__PURE__ */ jsx292(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });
23493
23766
  };
23494
23767
  CollectionProvider.displayName = PROVIDER_NAME;
23495
23768
  const COLLECTION_SLOT_NAME = name + "CollectionSlot";
23496
23769
  const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);
23497
- const CollectionSlot = React40.forwardRef((props, forwardedRef) => {
23770
+ const CollectionSlot = React402.forwardRef((props, forwardedRef) => {
23498
23771
  const { scope, children } = props;
23499
23772
  const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
23500
23773
  const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);
@@ -23504,12 +23777,12 @@ function createCollection2(name) {
23504
23777
  const ITEM_SLOT_NAME = name + "CollectionItemSlot";
23505
23778
  const ITEM_DATA_ATTR = "data-radix-collection-item";
23506
23779
  const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);
23507
- const CollectionItemSlot = React40.forwardRef((props, forwardedRef) => {
23780
+ const CollectionItemSlot = React402.forwardRef((props, forwardedRef) => {
23508
23781
  const { scope, children, ...itemData } = props;
23509
- const ref = React40.useRef(null);
23782
+ const ref = React402.useRef(null);
23510
23783
  const composedRefs = useComposedRefs(forwardedRef, ref);
23511
23784
  const context = useCollectionContext(ITEM_SLOT_NAME, scope);
23512
- React40.useEffect(() => {
23785
+ React402.useEffect(() => {
23513
23786
  context.itemMap.set(ref, { ref, ...itemData });
23514
23787
  return () => void context.itemMap.delete(ref);
23515
23788
  });
@@ -23518,7 +23791,7 @@ function createCollection2(name) {
23518
23791
  CollectionItemSlot.displayName = ITEM_SLOT_NAME;
23519
23792
  function useCollection2(scope) {
23520
23793
  const context = useCollectionContext(name + "CollectionConsumer", scope);
23521
- const getItems = React40.useCallback(() => {
23794
+ const getItems = React402.useCallback(() => {
23522
23795
  const collectionNode = context.collectionRef.current;
23523
23796
  if (!collectionNode)
23524
23797
  return [];
@@ -23836,13 +24109,13 @@ function toSafeIndex(array, index2) {
23836
24109
  function toSafeInteger(number) {
23837
24110
  return number !== number || number === 0 ? 0 : Math.trunc(number);
23838
24111
  }
23839
- var useLayoutEffect222 = globalThis?.document ? React412.useLayoutEffect : () => {};
23840
- var useReactId2 = React42[" useId ".trim().toString()] || (() => {
24112
+ var useLayoutEffect222 = globalThis?.document ? React41.useLayoutEffect : () => {};
24113
+ var useReactId2 = React422[" useId ".trim().toString()] || (() => {
23841
24114
  return;
23842
24115
  });
23843
24116
  var count3 = 0;
23844
24117
  function useId2(deterministicId) {
23845
- const [id, setId] = React42.useState(useReactId2());
24118
+ const [id, setId] = React422.useState(useReactId2());
23846
24119
  useLayoutEffect222(() => {
23847
24120
  if (!deterministicId)
23848
24121
  setId((reactId) => reactId ?? String(count3++));
@@ -24453,7 +24726,7 @@ var Triangle22 = (props) => {
24453
24726
  };
24454
24727
 
24455
24728
  // src/components/template-modal-content.tsx
24456
- import { useCallback as useCallback38, useState as useState40 } from "react";
24729
+ import { useCallback as useCallback39, useState as useState40 } from "react";
24457
24730
 
24458
24731
  // ../../node_modules/.bun/tailwind-merge@2.5.2/node_modules/tailwind-merge/dist/bundle-mjs.mjs
24459
24732
  var CLASS_PART_SEPARATOR2 = "-";
@@ -25772,7 +26045,7 @@ function cn2(...inputs) {
25772
26045
  }
25773
26046
 
25774
26047
  // src/helpers/use-el-size.ts
25775
- import { useCallback as useCallback36, useEffect as useEffect41, useMemo as useMemo51, useState as useState38 } from "react";
26048
+ import { useCallback as useCallback37, useEffect as useEffect41, useMemo as useMemo51, useState as useState38 } from "react";
25776
26049
  var useElementSize = (ref) => {
25777
26050
  const [size4, setSize] = useState38(null);
25778
26051
  const observer = useMemo51(() => {
@@ -25786,7 +26059,7 @@ var useElementSize = (ref) => {
25786
26059
  });
25787
26060
  });
25788
26061
  }, []);
25789
- const updateSize = useCallback36(() => {
26062
+ const updateSize = useCallback37(() => {
25790
26063
  if (ref === null) {
25791
26064
  return;
25792
26065
  }
@@ -25820,27 +26093,27 @@ var useMobileLayout = () => {
25820
26093
  };
25821
26094
 
25822
26095
  // src/components/BackButton.tsx
25823
- import { jsx as jsx44, jsxs as jsxs6 } from "react/jsx-runtime";
26096
+ import { jsx as jsx45, jsxs as jsxs6 } from "react/jsx-runtime";
25824
26097
  var BackButton = ({ color, text, link }) => {
25825
- return /* @__PURE__ */ jsx44("div", {
26098
+ return /* @__PURE__ */ jsx45("div", {
25826
26099
  className: "justify-center items-center font-medium mb-4 block",
25827
26100
  style: {
25828
26101
  fontFamily: "GTPlanar",
25829
26102
  fontWeight: 500,
25830
26103
  color
25831
26104
  },
25832
- children: /* @__PURE__ */ jsx44(Button, {
26105
+ children: /* @__PURE__ */ jsx45(Button, {
25833
26106
  href: link,
25834
26107
  className: "px-4 rounded-full text-sm h-10",
25835
26108
  children: /* @__PURE__ */ jsxs6("div", {
25836
26109
  className: "flex row items-center justify-center px-4",
25837
26110
  children: [
25838
- /* @__PURE__ */ jsx44("svg", {
26111
+ /* @__PURE__ */ jsx45("svg", {
25839
26112
  className: "h-4 mr-[15px] inline-block",
25840
26113
  style: { color },
25841
26114
  xmlns: "http://www.w3.org/2000/svg",
25842
26115
  viewBox: "0 0 448 512",
25843
- children: /* @__PURE__ */ jsx44("path", {
26116
+ children: /* @__PURE__ */ jsx45("path", {
25844
26117
  fill: "currentcolor",
25845
26118
  d: "M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"
25846
26119
  })
@@ -25876,15 +26149,15 @@ var CommandCopyButton = ({ copied, customSvg }) => {
25876
26149
 
25877
26150
  // src/components/homepage/MuxVideo.tsx
25878
26151
  import Hls2 from "hls.js";
25879
- import { forwardRef as forwardRef36, useEffect as useEffect43, useImperativeHandle as useImperativeHandle11, useRef as useRef47 } from "react";
26152
+ import { forwardRef as forwardRef37, useEffect as useEffect43, useImperativeHandle as useImperativeHandle11, useRef as useRef48 } from "react";
25880
26153
 
25881
26154
  // src/components/homepage/VideoPlayerWithControls.tsx
25882
26155
  import Hls from "hls.js";
25883
26156
  import"plyr/dist/plyr.css";
25884
- import { forwardRef as forwardRef35, useCallback as useCallback37, useEffect as useEffect42, useRef as useRef46, useState as useState39 } from "react";
26157
+ import { forwardRef as forwardRef36, useCallback as useCallback38, useEffect as useEffect42, useRef as useRef47, useState as useState39 } from "react";
25885
26158
  import { jsx as jsx47 } from "react/jsx-runtime";
25886
26159
  var useCombinedRefs = function(...refs) {
25887
- const targetRef = useRef46(null);
26160
+ const targetRef = useRef47(null);
25888
26161
  useEffect42(() => {
25889
26162
  refs.forEach((ref) => {
25890
26163
  if (!ref)
@@ -25898,13 +26171,13 @@ var useCombinedRefs = function(...refs) {
25898
26171
  }, [refs]);
25899
26172
  return targetRef;
25900
26173
  };
25901
- var VideoPlayerWithControls = forwardRef35(({ playbackId, poster, currentTime, onLoaded, onError, onSize, autoPlay }, ref) => {
25902
- const videoRef = useRef46(null);
26174
+ var VideoPlayerWithControls = forwardRef36(({ playbackId, poster, currentTime, onLoaded, onError, onSize, autoPlay }, ref) => {
26175
+ const videoRef = useRef47(null);
25903
26176
  const metaRef = useCombinedRefs(ref, videoRef);
25904
- const playerRef = useRef46(null);
26177
+ const playerRef = useRef47(null);
25905
26178
  const [playerInitTime] = useState39(Date.now());
25906
- const videoError = useCallback37((event) => onError(event), [onError]);
25907
- const onImageLoad = useCallback37((event) => {
26179
+ const videoError = useCallback38((event) => onError(event), [onError]);
26180
+ const onImageLoad = useCallback38((event) => {
25908
26181
  const [w, h] = [event.target.width, event.target.height];
25909
26182
  if (w && h) {
25910
26183
  onSize({ width: w, height: h });
@@ -25986,7 +26259,7 @@ var getVideoToPlayUrl = (muxId) => {
25986
26259
  return `https://stream.mux.com/${muxId}.m3u8`;
25987
26260
  };
25988
26261
  var MuxVideoForward = ({ muxId, ...props }, ref) => {
25989
- const videoRef = useRef47(null);
26262
+ const videoRef = useRef48(null);
25990
26263
  const vidUrl = getVideoToPlayUrl(muxId);
25991
26264
  useImperativeHandle11(ref, () => videoRef.current, []);
25992
26265
  useEffect43(() => {
@@ -26014,7 +26287,7 @@ var MuxVideoForward = ({ muxId, ...props }, ref) => {
26014
26287
  ...props
26015
26288
  });
26016
26289
  };
26017
- var MuxVideo = forwardRef36(MuxVideoForward);
26290
+ var MuxVideo = forwardRef37(MuxVideoForward);
26018
26291
 
26019
26292
  // src/components/icons/tailwind.tsx
26020
26293
  import { jsx as jsx49, jsxs as jsxs7 } from "react/jsx-runtime";
@@ -26079,7 +26352,7 @@ var copyTimeout = null;
26079
26352
  var TemplateModalContent = ({ template }) => {
26080
26353
  const [copied, setCopied] = useState40(false);
26081
26354
  const mobileLayout = useMobileLayout();
26082
- const copyCommand = useCallback38(async (command) => {
26355
+ const copyCommand = useCallback39(async (command) => {
26083
26356
  clearTimeout(copyTimeout);
26084
26357
  const permissionName = "clipboard-write";
26085
26358
  try {