@remotion/promo-pages 4.0.471 → 4.0.472

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 +1524 -725
  2. package/dist/design.js +1298 -798
  3. package/dist/experts.js +1291 -791
  4. package/dist/homepage/Pricing.js +1298 -798
  5. package/dist/prompts/PromptsGallery.js +1298 -798
  6. package/dist/prompts/PromptsShow.js +1145 -645
  7. package/dist/prompts/PromptsSubmit.js +1145 -645
  8. package/dist/team.js +1298 -798
  9. package/dist/template-modal-content.js +1298 -798
  10. package/dist/templates.js +1298 -798
  11. package/package.json +13 -13
  12. package/dist/cn.d.ts +0 -2
  13. package/dist/cn.js +0 -5
  14. package/dist/components/3DEngine/ButtonDemo.d.ts +0 -2
  15. package/dist/components/3DEngine/ButtonDemo.js +0 -43
  16. package/dist/components/3DEngine/Faces.d.ts +0 -5
  17. package/dist/components/3DEngine/Faces.js +0 -7
  18. package/dist/components/3DEngine/Outer.d.ts +0 -8
  19. package/dist/components/3DEngine/Outer.js +0 -56
  20. package/dist/components/3DEngine/Switch.d.ts +0 -4
  21. package/dist/components/3DEngine/Switch.js +0 -4
  22. package/dist/components/3DEngine/get-child-node-from.d.ts +0 -1
  23. package/dist/components/3DEngine/get-child-node-from.js +0 -14
  24. package/dist/components/3DEngine/hover-transforms.d.ts +0 -9
  25. package/dist/components/3DEngine/hover-transforms.js +0 -177
  26. package/dist/components/BackButton.d.ts +0 -6
  27. package/dist/components/BackButton.js +0 -9
  28. package/dist/components/CommandCopyButton.d.ts +0 -5
  29. package/dist/components/CommandCopyButton.js +0 -4
  30. package/dist/components/Homepage.d.ts +0 -6
  31. package/dist/components/Homepage.js +0 -20
  32. package/dist/components/ManageTeamMembers.d.ts +0 -2
  33. package/dist/components/ManageTeamMembers.js +0 -42
  34. package/dist/components/Spinner.d.ts +0 -3
  35. package/dist/components/Spinner.js +0 -4
  36. package/dist/components/TeamPicture.d.ts +0 -1
  37. package/dist/components/TeamPicture.js +0 -4
  38. package/dist/components/design.d.ts +0 -1
  39. package/dist/components/design.js +0 -33
  40. package/dist/components/experts/ExpertsPage.d.ts +0 -11
  41. package/dist/components/experts/ExpertsPage.js +0 -50
  42. package/dist/components/experts/experts-data.d.ts +0 -19
  43. package/dist/components/experts/experts-data.js +0 -391
  44. package/dist/components/experts/experts-icons.d.ts +0 -8
  45. package/dist/components/experts/experts-icons.js +0 -42
  46. package/dist/components/experts.d.ts +0 -3
  47. package/dist/components/experts.js +0 -2
  48. package/dist/components/homepage/BackgroundAnimation.d.ts +0 -2
  49. package/dist/components/homepage/BackgroundAnimation.js +0 -66
  50. package/dist/components/homepage/ChooseTemplate.d.ts +0 -2
  51. package/dist/components/homepage/ChooseTemplate.js +0 -25
  52. package/dist/components/homepage/CommunityStats.d.ts +0 -3
  53. package/dist/components/homepage/CommunityStats.js +0 -6
  54. package/dist/components/homepage/CommunityStatsItems.d.ts +0 -7
  55. package/dist/components/homepage/CommunityStatsItems.js +0 -58
  56. package/dist/components/homepage/Demo/Card.d.ts +0 -15
  57. package/dist/components/homepage/Demo/Card.js +0 -174
  58. package/dist/components/homepage/Demo/Cards.d.ts +0 -15
  59. package/dist/components/homepage/Demo/Cards.js +0 -57
  60. package/dist/components/homepage/Demo/Comp.d.ts +0 -38
  61. package/dist/components/homepage/Demo/Comp.js +0 -72
  62. package/dist/components/homepage/Demo/CurrentCountry.d.ts +0 -9
  63. package/dist/components/homepage/Demo/CurrentCountry.js +0 -48
  64. package/dist/components/homepage/Demo/DemoError.d.ts +0 -2
  65. package/dist/components/homepage/Demo/DemoError.js +0 -10
  66. package/dist/components/homepage/Demo/DemoErrorIcon.d.ts +0 -2
  67. package/dist/components/homepage/Demo/DemoErrorIcon.js +0 -16
  68. package/dist/components/homepage/Demo/DemoRender.d.ts +0 -33
  69. package/dist/components/homepage/Demo/DemoRender.js +0 -107
  70. package/dist/components/homepage/Demo/DigitWheel.d.ts +0 -9
  71. package/dist/components/homepage/Demo/DigitWheel.js +0 -94
  72. package/dist/components/homepage/Demo/DisplayedEmoji.d.ts +0 -5
  73. package/dist/components/homepage/Demo/DisplayedEmoji.js +0 -59
  74. package/dist/components/homepage/Demo/DoneCheckmark.d.ts +0 -2
  75. package/dist/components/homepage/Demo/DoneCheckmark.js +0 -20
  76. package/dist/components/homepage/Demo/DownloadNudge.d.ts +0 -2
  77. package/dist/components/homepage/Demo/DownloadNudge.js +0 -27
  78. package/dist/components/homepage/Demo/DragAndDropNudge.d.ts +0 -3
  79. package/dist/components/homepage/Demo/DragAndDropNudge.js +0 -26
  80. package/dist/components/homepage/Demo/EmojiCard.d.ts +0 -10
  81. package/dist/components/homepage/Demo/EmojiCard.js +0 -120
  82. package/dist/components/homepage/Demo/Minus.d.ts +0 -5
  83. package/dist/components/homepage/Demo/Minus.js +0 -11
  84. package/dist/components/homepage/Demo/PlayPauseButton.d.ts +0 -5
  85. package/dist/components/homepage/Demo/PlayPauseButton.js +0 -47
  86. package/dist/components/homepage/Demo/PlayerControls.d.ts +0 -8
  87. package/dist/components/homepage/Demo/PlayerControls.js +0 -15
  88. package/dist/components/homepage/Demo/PlayerSeekBar.d.ts +0 -11
  89. package/dist/components/homepage/Demo/PlayerSeekBar.js +0 -216
  90. package/dist/components/homepage/Demo/PlayerVolume.d.ts +0 -5
  91. package/dist/components/homepage/Demo/PlayerVolume.js +0 -53
  92. package/dist/components/homepage/Demo/Progress.d.ts +0 -4
  93. package/dist/components/homepage/Demo/Progress.js +0 -14
  94. package/dist/components/homepage/Demo/Spinner.d.ts +0 -5
  95. package/dist/components/homepage/Demo/Spinner.js +0 -37
  96. package/dist/components/homepage/Demo/Switcher.d.ts +0 -6
  97. package/dist/components/homepage/Demo/Switcher.js +0 -25
  98. package/dist/components/homepage/Demo/Temperature.d.ts +0 -6
  99. package/dist/components/homepage/Demo/Temperature.js +0 -21
  100. package/dist/components/homepage/Demo/TemperatureNumber.d.ts +0 -5
  101. package/dist/components/homepage/Demo/TemperatureNumber.js +0 -36
  102. package/dist/components/homepage/Demo/ThemeNudge.d.ts +0 -3
  103. package/dist/components/homepage/Demo/ThemeNudge.js +0 -35
  104. package/dist/components/homepage/Demo/TimeDisplay.d.ts +0 -6
  105. package/dist/components/homepage/Demo/TimeDisplay.js +0 -27
  106. package/dist/components/homepage/Demo/TrendingRepos.d.ts +0 -6
  107. package/dist/components/homepage/Demo/TrendingRepos.js +0 -65
  108. package/dist/components/homepage/Demo/icons.d.ts +0 -10
  109. package/dist/components/homepage/Demo/icons.js +0 -22
  110. package/dist/components/homepage/Demo/index.d.ts +0 -2
  111. package/dist/components/homepage/Demo/index.js +0 -95
  112. package/dist/components/homepage/Demo/math.d.ts +0 -10
  113. package/dist/components/homepage/Demo/math.js +0 -29
  114. package/dist/components/homepage/Demo/types.d.ts +0 -6
  115. package/dist/components/homepage/Demo/types.js +0 -0
  116. package/dist/components/homepage/EditorStarterSection.d.ts +0 -3
  117. package/dist/components/homepage/EditorStarterSection.js +0 -8
  118. package/dist/components/homepage/EvaluateRemotion.d.ts +0 -3
  119. package/dist/components/homepage/EvaluateRemotion.js +0 -21
  120. package/dist/components/homepage/FreePricing.d.ts +0 -4
  121. package/dist/components/homepage/FreePricing.js +0 -133
  122. package/dist/components/homepage/GetStartedStrip.d.ts +0 -2
  123. package/dist/components/homepage/GetStartedStrip.js +0 -14
  124. package/dist/components/homepage/GitHubButton.d.ts +0 -2
  125. package/dist/components/homepage/GitHubButton.js +0 -7
  126. package/dist/components/homepage/IconForTemplate.d.ts +0 -6
  127. package/dist/components/homepage/IconForTemplate.js +0 -105
  128. package/dist/components/homepage/IfYouKnowReact.d.ts +0 -3
  129. package/dist/components/homepage/IfYouKnowReact.js +0 -23
  130. package/dist/components/homepage/MoreTemplatesButton.d.ts +0 -2
  131. package/dist/components/homepage/MoreTemplatesButton.js +0 -11
  132. package/dist/components/homepage/MuxVideo.d.ts +0 -7
  133. package/dist/components/homepage/MuxVideo.js +0 -45
  134. package/dist/components/homepage/NewsletterButton.d.ts +0 -2
  135. package/dist/components/homepage/NewsletterButton.js +0 -38
  136. package/dist/components/homepage/ParameterizeAndEdit.d.ts +0 -2
  137. package/dist/components/homepage/ParameterizeAndEdit.js +0 -22
  138. package/dist/components/homepage/Pricing.d.ts +0 -2
  139. package/dist/components/homepage/Pricing.js +0 -15
  140. package/dist/components/homepage/PricingBulletPoint.d.ts +0 -6
  141. package/dist/components/homepage/PricingBulletPoint.js +0 -19
  142. package/dist/components/homepage/RealMp4Videos.d.ts +0 -2
  143. package/dist/components/homepage/RealMp4Videos.js +0 -41
  144. package/dist/components/homepage/Spacer.d.ts +0 -2
  145. package/dist/components/homepage/Spacer.js +0 -4
  146. package/dist/components/homepage/TemplateIcon.d.ts +0 -5
  147. package/dist/components/homepage/TemplateIcon.js +0 -24
  148. package/dist/components/homepage/TextInput.d.ts +0 -7
  149. package/dist/components/homepage/TextInput.js +0 -34
  150. package/dist/components/homepage/TrustedByBanner.d.ts +0 -2
  151. package/dist/components/homepage/TrustedByBanner.js +0 -27
  152. package/dist/components/homepage/VideoApps.d.ts +0 -4
  153. package/dist/components/homepage/VideoApps.js +0 -72
  154. package/dist/components/homepage/VideoAppsShowcase.d.ts +0 -3
  155. package/dist/components/homepage/VideoAppsShowcase.js +0 -139
  156. package/dist/components/homepage/VideoAppsTitle.d.ts +0 -4
  157. package/dist/components/homepage/VideoAppsTitle.js +0 -4
  158. package/dist/components/homepage/VideoPlayerWithControls.d.ts +0 -20
  159. package/dist/components/homepage/VideoPlayerWithControls.js +0 -105
  160. package/dist/components/homepage/WriteInReact.d.ts +0 -2
  161. package/dist/components/homepage/WriteInReact.js +0 -10
  162. package/dist/components/homepage/YouAreHere.d.ts +0 -2
  163. package/dist/components/homepage/YouAreHere.js +0 -23
  164. package/dist/components/homepage/layout/Button.d.ts +0 -22
  165. package/dist/components/homepage/layout/Button.js +0 -30
  166. package/dist/components/homepage/layout/colors.d.ts +0 -13
  167. package/dist/components/homepage/layout/colors.js +0 -14
  168. package/dist/components/homepage/layout/use-color-mode.d.ts +0 -21
  169. package/dist/components/homepage/layout/use-color-mode.js +0 -22
  170. package/dist/components/homepage/layout/use-el-size.d.ts +0 -5
  171. package/dist/components/homepage/layout/use-el-size.js +0 -40
  172. package/dist/components/homepage/layout/use-mobile-layout.d.ts +0 -1
  173. package/dist/components/homepage/layout/use-mobile-layout.js +0 -6
  174. package/dist/components/icons/blank.d.ts +0 -3
  175. package/dist/components/icons/blank.js +0 -4
  176. package/dist/components/icons/brain.d.ts +0 -2
  177. package/dist/components/icons/brain.js +0 -4
  178. package/dist/components/icons/clone.d.ts +0 -2
  179. package/dist/components/icons/clone.js +0 -2
  180. package/dist/components/icons/code-hike.d.ts +0 -3
  181. package/dist/components/icons/code-hike.js +0 -4
  182. package/dist/components/icons/cubes.d.ts +0 -3
  183. package/dist/components/icons/cubes.js +0 -4
  184. package/dist/components/icons/editor.d.ts +0 -3
  185. package/dist/components/icons/editor.js +0 -4
  186. package/dist/components/icons/electron.d.ts +0 -4
  187. package/dist/components/icons/electron.js +0 -4
  188. package/dist/components/icons/js.d.ts +0 -3
  189. package/dist/components/icons/js.js +0 -4
  190. package/dist/components/icons/music.d.ts +0 -2
  191. package/dist/components/icons/music.js +0 -4
  192. package/dist/components/icons/next.d.ts +0 -4
  193. package/dist/components/icons/next.js +0 -4
  194. package/dist/components/icons/overlay.d.ts +0 -3
  195. package/dist/components/icons/overlay.js +0 -4
  196. package/dist/components/icons/prompt-to-video.d.ts +0 -2
  197. package/dist/components/icons/prompt-to-video.js +0 -4
  198. package/dist/components/icons/recorder.d.ts +0 -3
  199. package/dist/components/icons/recorder.js +0 -4
  200. package/dist/components/icons/remix.d.ts +0 -3
  201. package/dist/components/icons/remix.js +0 -4
  202. package/dist/components/icons/render-server.d.ts +0 -3
  203. package/dist/components/icons/render-server.js +0 -4
  204. package/dist/components/icons/skia.d.ts +0 -3
  205. package/dist/components/icons/skia.js +0 -4
  206. package/dist/components/icons/stargazer.d.ts +0 -3
  207. package/dist/components/icons/stargazer.js +0 -4
  208. package/dist/components/icons/still.d.ts +0 -3
  209. package/dist/components/icons/still.js +0 -4
  210. package/dist/components/icons/tailwind.d.ts +0 -3
  211. package/dist/components/icons/tailwind.js +0 -4
  212. package/dist/components/icons/tiktok.d.ts +0 -3
  213. package/dist/components/icons/tiktok.js +0 -4
  214. package/dist/components/icons/timeline.d.ts +0 -3
  215. package/dist/components/icons/timeline.js +0 -4
  216. package/dist/components/icons/ts.d.ts +0 -3
  217. package/dist/components/icons/ts.js +0 -4
  218. package/dist/components/icons/undo.d.ts +0 -3
  219. package/dist/components/icons/undo.js +0 -2
  220. package/dist/components/icons/vercel.d.ts +0 -4
  221. package/dist/components/icons/vercel.js +0 -4
  222. package/dist/components/icons/waveform.d.ts +0 -3
  223. package/dist/components/icons/waveform.js +0 -4
  224. package/dist/components/prompts/CardLikeButton.d.ts +0 -5
  225. package/dist/components/prompts/CardLikeButton.js +0 -49
  226. package/dist/components/prompts/ClipboardIcon.d.ts +0 -5
  227. package/dist/components/prompts/ClipboardIcon.js +0 -4
  228. package/dist/components/prompts/CopyPromptButton.d.ts +0 -4
  229. package/dist/components/prompts/CopyPromptButton.js +0 -13
  230. package/dist/components/prompts/LikeButton.d.ts +0 -5
  231. package/dist/components/prompts/LikeButton.js +0 -49
  232. package/dist/components/prompts/MuxPlayer.d.ts +0 -8
  233. package/dist/components/prompts/MuxPlayer.js +0 -21
  234. package/dist/components/prompts/NewBackButton.d.ts +0 -5
  235. package/dist/components/prompts/NewBackButton.js +0 -8
  236. package/dist/components/prompts/Page.d.ts +0 -8
  237. package/dist/components/prompts/Page.js +0 -7
  238. package/dist/components/prompts/PromptsGallery.d.ts +0 -7
  239. package/dist/components/prompts/PromptsGallery.js +0 -60
  240. package/dist/components/prompts/PromptsShow.d.ts +0 -5
  241. package/dist/components/prompts/PromptsShow.js +0 -17
  242. package/dist/components/prompts/PromptsSubmit.d.ts +0 -2
  243. package/dist/components/prompts/PromptsSubmit.js +0 -173
  244. package/dist/components/prompts/config.d.ts +0 -1
  245. package/dist/components/prompts/config.js +0 -1
  246. package/dist/components/prompts/prompt-helpers.d.ts +0 -8
  247. package/dist/components/prompts/prompt-helpers.js +0 -76
  248. package/dist/components/prompts/prompt-types.d.ts +0 -14
  249. package/dist/components/prompts/prompt-types.js +0 -0
  250. package/dist/components/prompts/use-heart-animation.d.ts +0 -5
  251. package/dist/components/prompts/use-heart-animation.js +0 -29
  252. package/dist/components/team/TeamCards.d.ts +0 -6
  253. package/dist/components/team/TeamCards.js +0 -19
  254. package/dist/components/team/TitleTeamCards.d.ts +0 -2
  255. package/dist/components/team/TitleTeamCards.js +0 -6
  256. package/dist/components/team/TrustSection.d.ts +0 -2
  257. package/dist/components/team/TrustSection.js +0 -59
  258. package/dist/components/team.d.ts +0 -3
  259. package/dist/components/team.js +0 -15
  260. package/dist/components/template-modal-content.d.ts +0 -5
  261. package/dist/components/template-modal-content.js +0 -73
  262. package/dist/components/templates.d.ts +0 -2
  263. package/dist/components/templates.js +0 -27
  264. package/dist/helpers/mobile-layout.d.ts +0 -1
  265. package/dist/helpers/mobile-layout.js +0 -6
  266. package/dist/helpers/use-el-size.d.ts +0 -5
  267. package/dist/helpers/use-el-size.js +0 -40
  268. package/dist/main.d.ts +0 -1
  269. package/dist/main.js +0 -6
  270. package/dist/prompts-show.d.ts +0 -1
  271. package/dist/prompts-show.js +0 -20
  272. package/dist/prompts-submit.d.ts +0 -1
  273. package/dist/prompts-submit.js +0 -6
  274. package/dist/prompts.d.ts +0 -1
  275. package/dist/prompts.js +0 -6
  276. package/dist/team.d.ts +0 -1
package/dist/design.js CHANGED
@@ -33,7 +33,7 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
33
33
  });
34
34
 
35
35
  // ../design/dist/esm/index.mjs
36
- import * as React22 from "react";
36
+ import * as React23 from "react";
37
37
  import * as React3 from "react";
38
38
  import { Fragment as Fragment2, jsx as jsx39 } from "react/jsx-runtime";
39
39
  import React52, { useCallback as useCallback25, useRef as useRef28, useState as useState22 } from "react";
@@ -1378,7 +1378,7 @@ var getDefaultConfig = () => {
1378
1378
  var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
1379
1379
 
1380
1380
  // ../design/dist/esm/index.mjs
1381
- import React33, { useEffect as useEffect22, useMemo as useMemo40, useState as useState21 } from "react";
1381
+ import React35, { useEffect as useEffect22, useMemo as useMemo40, useState as useState21 } from "react";
1382
1382
 
1383
1383
  // ../paths/dist/esm/index.mjs
1384
1384
  var cutLInstruction = ({
@@ -5769,10 +5769,12 @@ import { jsx as jsx92 } from "react/jsx-runtime";
5769
5769
  import { createContext as createContext14 } from "react";
5770
5770
  import React11, { useCallback as useCallback5, useMemo as useMemo12, useRef as useRef4, useState as useState3 } from "react";
5771
5771
  import { jsx as jsx102 } from "react/jsx-runtime";
5772
- import React12, { forwardRef as forwardRef2, useContext as useContext16, useMemo as useMemo13, useState as useState4 } from "react";
5773
- import { useContext as useContext15, useRef as useRef5 } from "react";
5774
- import { createContext as createContext15 } from "react";
5772
+ import React12, { createContext as createContext15 } from "react";
5775
5773
  import { jsx as jsx112 } from "react/jsx-runtime";
5774
+ import React13, { forwardRef as forwardRef2, useContext as useContext16, useMemo as useMemo13, useState as useState4 } from "react";
5775
+ import { useContext as useContext15, useRef as useRef5 } from "react";
5776
+ import { createContext as createContext16 } from "react";
5777
+ import { jsx as jsx12 } from "react/jsx-runtime";
5776
5778
  import {
5777
5779
  forwardRef as forwardRef4,
5778
5780
  useEffect as useEffect5,
@@ -5781,13 +5783,13 @@ import {
5781
5783
  useRef as useRef9,
5782
5784
  useState as useState6
5783
5785
  } from "react";
5784
- import React14, { useCallback as useCallback6, useImperativeHandle, useMemo as useMemo16, useRef as useRef8 } from "react";
5786
+ import React15, { useCallback as useCallback6, useImperativeHandle, useMemo as useMemo16, useRef as useRef8 } from "react";
5785
5787
  import { useEffect as useEffect4, useMemo as useMemo15, useRef as useRef7 } from "react";
5786
- import { jsx as jsx12 } from "react/jsx-runtime";
5787
5788
  import { jsx as jsx13 } from "react/jsx-runtime";
5789
+ import { jsx as jsx14 } from "react/jsx-runtime";
5788
5790
  import { useContext as useContext18, useLayoutEffect as useLayoutEffect4, useState as useState8 } from "react";
5789
5791
  import {
5790
- createContext as createContext16,
5792
+ createContext as createContext17,
5791
5793
  useCallback as useCallback7,
5792
5794
  useImperativeHandle as useImperativeHandle3,
5793
5795
  useLayoutEffect as useLayoutEffect3,
@@ -5795,17 +5797,17 @@ import {
5795
5797
  useRef as useRef10,
5796
5798
  useState as useState7
5797
5799
  } from "react";
5798
- import { jsx as jsx14 } from "react/jsx-runtime";
5799
- import { forwardRef as forwardRef7, useCallback as useCallback13, useContext as useContext30 } from "react";
5800
- import React15, { createContext as createContext17, useMemo as useMemo18 } from "react";
5801
5800
  import { jsx as jsx15 } from "react/jsx-runtime";
5802
- import { useContext as useContext19 } from "react";
5803
- import { createContext as createContext18, useEffect as useEffect6, useState as useState9 } from "react";
5801
+ import { forwardRef as forwardRef7, useCallback as useCallback13, useContext as useContext30 } from "react";
5802
+ import React16, { createContext as createContext18, useMemo as useMemo18 } from "react";
5804
5803
  import { jsx as jsx16 } from "react/jsx-runtime";
5805
- import { createContext as createContext19, useMemo as useMemo19, useReducer } from "react";
5804
+ import { useContext as useContext19 } from "react";
5805
+ import { createContext as createContext19, useEffect as useEffect6, useState as useState9 } from "react";
5806
5806
  import { jsx as jsx17 } from "react/jsx-runtime";
5807
+ import { createContext as createContext20, useMemo as useMemo19, useReducer } from "react";
5808
+ import { jsx as jsx18 } from "react/jsx-runtime";
5807
5809
  import { useCallback as useCallback12 } from "react";
5808
- import React21, {
5810
+ import React22, {
5809
5811
  forwardRef as forwardRef5,
5810
5812
  useContext as useContext28,
5811
5813
  useEffect as useEffect14,
@@ -5815,8 +5817,8 @@ import React21, {
5815
5817
  useState as useState14
5816
5818
  } from "react";
5817
5819
  import { useContext as useContext21, useLayoutEffect as useLayoutEffect5, useRef as useRef14 } from "react";
5818
- import React18, {
5819
- createContext as createContext20,
5820
+ import React19, {
5821
+ createContext as createContext21,
5820
5822
  createRef as createRef2,
5821
5823
  useCallback as useCallback8,
5822
5824
  useContext as useContext20,
@@ -5826,7 +5828,7 @@ import React18, {
5826
5828
  useState as useState10
5827
5829
  } from "react";
5828
5830
  import { useMemo as useMemo20, useRef as useRef11 } from "react";
5829
- import { jsx as jsx18, jsxs as jsxs22 } from "react/jsx-runtime";
5831
+ import { jsx as jsx19, jsxs as jsxs22 } from "react/jsx-runtime";
5830
5832
  import { useRef as useRef13 } from "react";
5831
5833
  import { useContext as useContext23, useEffect as useEffect8, useMemo as useMemo22, useState as useState11 } from "react";
5832
5834
  import { useContext as useContext22 } from "react";
@@ -5839,7 +5841,7 @@ import {
5839
5841
  } from "react";
5840
5842
  import { useCallback as useCallback10, useMemo as useMemo25, useRef as useRef16 } from "react";
5841
5843
  import { useContext as useContext25, useMemo as useMemo24 } from "react";
5842
- import React19, {
5844
+ import React20, {
5843
5845
  useCallback as useCallback9,
5844
5846
  useContext as useContext24,
5845
5847
  useEffect as useEffect9,
@@ -5848,13 +5850,13 @@ import React19, {
5848
5850
  useRef as useRef15,
5849
5851
  useState as useState12
5850
5852
  } from "react";
5851
- import { jsx as jsx19 } from "react/jsx-runtime";
5852
- import React20 from "react";
5853
+ import { jsx as jsx20 } from "react/jsx-runtime";
5854
+ import React21 from "react";
5853
5855
  import { useEffect as useEffect10, useState as useState13 } from "react";
5854
5856
  import { useEffect as useEffect11, useRef as useRef17 } from "react";
5855
5857
  import { useEffect as useEffect13 } from "react";
5856
- import { createContext as createContext21, useContext as useContext27, useMemo as useMemo26 } from "react";
5857
- import { jsx as jsx20 } from "react/jsx-runtime";
5858
+ import { createContext as createContext22, useContext as useContext27, useMemo as useMemo26 } from "react";
5859
+ import { jsx as jsx21 } from "react/jsx-runtime";
5858
5860
  import {
5859
5861
  forwardRef as forwardRef6,
5860
5862
  useContext as useContext29,
@@ -5864,8 +5866,8 @@ import {
5864
5866
  useMemo as useMemo28,
5865
5867
  useRef as useRef20
5866
5868
  } from "react";
5867
- import { jsx as jsx21 } from "react/jsx-runtime";
5868
5869
  import { jsx as jsx222 } from "react/jsx-runtime";
5870
+ import { jsx as jsx23 } from "react/jsx-runtime";
5869
5871
  import {
5870
5872
  forwardRef as forwardRef8,
5871
5873
  useCallback as useCallback14,
@@ -5875,9 +5877,9 @@ import {
5875
5877
  useRef as useRef21,
5876
5878
  useState as useState15
5877
5879
  } from "react";
5878
- import { jsx as jsx23 } from "react/jsx-runtime";
5880
+ import { jsx as jsx24 } from "react/jsx-runtime";
5879
5881
  import {
5880
- createContext as createContext22,
5882
+ createContext as createContext23,
5881
5883
  forwardRef as forwardRef9,
5882
5884
  useCallback as useCallback15,
5883
5885
  useContext as useContext31,
@@ -5885,7 +5887,7 @@ import {
5885
5887
  useMemo as useMemo30,
5886
5888
  useRef as useRef22
5887
5889
  } from "react";
5888
- import { jsx as jsx24 } from "react/jsx-runtime";
5890
+ import { jsx as jsx25 } from "react/jsx-runtime";
5889
5891
  import {
5890
5892
  forwardRef as forwardRef10,
5891
5893
  useCallback as useCallback16,
@@ -5896,13 +5898,13 @@ import {
5896
5898
  useRef as useRef23,
5897
5899
  useState as useState16
5898
5900
  } from "react";
5899
- import { jsx as jsx25 } from "react/jsx-runtime";
5900
- import { forwardRef as forwardRef11, useCallback as useCallback17, useState as useState17 } from "react";
5901
5901
  import { jsx as jsx26 } from "react/jsx-runtime";
5902
- import { useCallback as useCallback18, useContext as useContext33, useLayoutEffect as useLayoutEffect10, useRef as useRef24 } from "react";
5902
+ import { forwardRef as forwardRef11, useCallback as useCallback17, useState as useState17 } from "react";
5903
5903
  import { jsx as jsx27 } from "react/jsx-runtime";
5904
+ import { useCallback as useCallback18, useContext as useContext33, useLayoutEffect as useLayoutEffect10, useRef as useRef24 } from "react";
5905
+ import { jsx as jsx28 } from "react/jsx-runtime";
5904
5906
  import { createRef as createRef3 } from "react";
5905
- import React28 from "react";
5907
+ import React29 from "react";
5906
5908
  import {
5907
5909
  useCallback as useCallback19,
5908
5910
  useImperativeHandle as useImperativeHandle8,
@@ -5910,49 +5912,52 @@ import {
5910
5912
  useRef as useRef25,
5911
5913
  useState as useState18
5912
5914
  } from "react";
5913
- import { jsx as jsx28 } from "react/jsx-runtime";
5914
- import React29 from "react";
5915
- import { useMemo as useMemo34 } from "react";
5916
- import { createContext as createContext23, useContext as useContext34, useMemo as useMemo33 } from "react";
5917
5915
  import { jsx as jsx29 } from "react/jsx-runtime";
5916
+ import React30 from "react";
5917
+ import { useMemo as useMemo34 } from "react";
5918
+ import { createContext as createContext24, useContext as useContext34, useMemo as useMemo33 } from "react";
5918
5919
  import { jsx as jsx30 } from "react/jsx-runtime";
5919
- import React31 from "react";
5920
- import React32, { createContext as createContext24 } from "react";
5920
+ import { jsx as jsx31 } from "react/jsx-runtime";
5921
+ import React32 from "react";
5922
+ import React33, { createContext as createContext25 } from "react";
5923
+ import React34, { useContext as useContext35 } from "react";
5921
5924
  import { useCallback as useCallback22 } from "react";
5922
5925
  import {
5923
5926
  useCallback as useCallback20,
5924
- useContext as useContext35,
5927
+ useContext as useContext36,
5925
5928
  useEffect as useEffect18,
5926
5929
  useLayoutEffect as useLayoutEffect11,
5927
5930
  useMemo as useMemo35,
5928
5931
  useState as useState19
5929
5932
  } from "react";
5930
- import { jsx as jsx31 } from "react/jsx-runtime";
5931
- import React34, {
5933
+ import { jsx as jsx322 } from "react/jsx-runtime";
5934
+ import React36, {
5932
5935
  forwardRef as forwardRef12,
5933
- useContext as useContext36,
5936
+ useCallback as useCallback21,
5937
+ useContext as useContext37,
5934
5938
  useEffect as useEffect20,
5935
5939
  useImperativeHandle as useImperativeHandle9,
5936
5940
  useMemo as useMemo36,
5937
5941
  useRef as useRef26,
5938
- useState as useState20,
5939
- useCallback as useCallback21
5942
+ useState as useState20
5940
5943
  } from "react";
5941
5944
  import { useEffect as useEffect19 } from "react";
5942
- import { jsx as jsx322 } from "react/jsx-runtime";
5943
5945
  import { jsx as jsx33 } from "react/jsx-runtime";
5944
- import React36, { useMemo as useMemo37 } from "react";
5945
5946
  import { jsx as jsx34 } from "react/jsx-runtime";
5946
- import { Children, forwardRef as forwardRef13, useMemo as useMemo38 } from "react";
5947
- import React37 from "react";
5948
- import React38, { createContext as createContext25 } from "react";
5947
+ import React38, { useMemo as useMemo37 } from "react";
5949
5948
  import { jsx as jsx35 } from "react/jsx-runtime";
5949
+ import {
5950
+ Children,
5951
+ forwardRef as forwardRef13,
5952
+ useMemo as useMemo38
5953
+ } from "react";
5954
+ import React39 from "react";
5950
5955
  import { jsx as jsx36 } from "react/jsx-runtime";
5951
- import React40 from "react";
5952
- import { forwardRef as forwardRef15, useCallback as useCallback23, useContext as useContext38 } from "react";
5956
+ import React41 from "react";
5957
+ import { forwardRef as forwardRef15, useCallback as useCallback23, useContext as useContext39 } from "react";
5953
5958
  import {
5954
5959
  forwardRef as forwardRef14,
5955
- useContext as useContext37,
5960
+ useContext as useContext38,
5956
5961
  useEffect as useEffect21,
5957
5962
  useImperativeHandle as useImperativeHandle10,
5958
5963
  useLayoutEffect as useLayoutEffect12,
@@ -6130,11 +6135,57 @@ function truthy2(value) {
6130
6135
  return Boolean(value);
6131
6136
  }
6132
6137
  var getRegex = () => /^([a-zA-Z0-9-\u4E00-\u9FFF])+$/g;
6138
+ var isFolderNameValid = (name) => name.match(getRegex());
6139
+ var validateFolderName = (name) => {
6140
+ if (name === undefined || name === null) {
6141
+ throw new TypeError("You must pass a name to a <Folder />.");
6142
+ }
6143
+ if (typeof name !== "string") {
6144
+ throw new TypeError(`The "name" you pass into <Folder /> must be a string. Got: ${typeof name}`);
6145
+ }
6146
+ if (!isFolderNameValid(name)) {
6147
+ throw new Error(`Folder name can only contain a-z, A-Z, 0-9 and -. You passed ${name}`);
6148
+ }
6149
+ };
6133
6150
  var invalidFolderNameErrorMessage = `Folder name must match ${String(getRegex())}`;
6134
6151
  var FolderContext = createContext6({
6135
6152
  folderName: null,
6136
6153
  parentName: null
6137
6154
  });
6155
+ var Folder = (props) => {
6156
+ const { name, children } = props;
6157
+ const parent = useContext2(FolderContext);
6158
+ const { registerFolder, unregisterFolder } = useContext2(CompositionSetters);
6159
+ const nonce = useNonce();
6160
+ const stack = props.stack ?? null;
6161
+ validateFolderName(name);
6162
+ const parentNameArr = [parent.parentName, parent.folderName].filter(truthy2);
6163
+ const parentName = parentNameArr.length === 0 ? null : parentNameArr.join("/");
6164
+ const value = useMemo2(() => {
6165
+ return {
6166
+ folderName: name,
6167
+ parentName
6168
+ };
6169
+ }, [name, parentName]);
6170
+ useEffect(() => {
6171
+ registerFolder(name, parentName, nonce.get(), stack);
6172
+ return () => {
6173
+ unregisterFolder(name, parentName);
6174
+ };
6175
+ }, [
6176
+ name,
6177
+ parent.folderName,
6178
+ parentName,
6179
+ registerFolder,
6180
+ unregisterFolder,
6181
+ nonce,
6182
+ stack
6183
+ ]);
6184
+ return /* @__PURE__ */ jsx22(FolderContext.Provider, {
6185
+ value,
6186
+ children
6187
+ });
6188
+ };
6138
6189
  function getNodeEnvString() {
6139
6190
  return ["NOD", "E_EN", "V"].join("");
6140
6191
  }
@@ -7083,7 +7134,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
7083
7134
  var addSequenceStackTraces = (component) => {
7084
7135
  componentsToAddStacksTo.push(component);
7085
7136
  };
7086
- var VERSION = "4.0.471";
7137
+ var VERSION = "4.0.472";
7087
7138
  var checkMultipleRemotionVersions = () => {
7088
7139
  if (typeof globalThis === "undefined") {
7089
7140
  return;
@@ -7453,7 +7504,7 @@ var sequenceVisualStyleSchema = {
7453
7504
  description: "Offset"
7454
7505
  },
7455
7506
  "style.scale": {
7456
- type: "number",
7507
+ type: "scale",
7457
7508
  min: 0.05,
7458
7509
  max: 100,
7459
7510
  step: 0.01,
@@ -7461,7 +7512,7 @@ var sequenceVisualStyleSchema = {
7461
7512
  description: "Scale"
7462
7513
  },
7463
7514
  "style.rotate": {
7464
- type: "rotation",
7515
+ type: "rotation-css",
7465
7516
  step: 1,
7466
7517
  default: "0deg",
7467
7518
  description: "Rotation"
@@ -7472,7 +7523,8 @@ var sequenceVisualStyleSchema = {
7472
7523
  max: 1,
7473
7524
  step: 0.01,
7474
7525
  default: 1,
7475
- description: "Opacity"
7526
+ description: "Opacity",
7527
+ hiddenFromList: false
7476
7528
  }
7477
7529
  };
7478
7530
  var sequencePremountSchema = {
@@ -7481,10 +7533,15 @@ var sequencePremountSchema = {
7481
7533
  default: 0,
7482
7534
  description: "Premount For",
7483
7535
  min: 0,
7484
- step: 1
7536
+ step: 1,
7537
+ hiddenFromList: false
7485
7538
  },
7486
7539
  postmountFor: {
7487
- type: "hidden"
7540
+ type: "number",
7541
+ default: 0,
7542
+ min: 0,
7543
+ step: 1,
7544
+ hiddenFromList: true
7488
7545
  },
7489
7546
  styleWhilePremounted: {
7490
7547
  type: "hidden"
@@ -7502,8 +7559,23 @@ var hiddenField = {
7502
7559
  default: false,
7503
7560
  description: "Hidden"
7504
7561
  };
7562
+ var durationInFramesField = {
7563
+ type: "number",
7564
+ default: undefined,
7565
+ min: 1,
7566
+ step: 1,
7567
+ hiddenFromList: true
7568
+ };
7569
+ var fromField = {
7570
+ type: "number",
7571
+ default: 0,
7572
+ step: 1,
7573
+ hiddenFromList: true
7574
+ };
7505
7575
  var sequenceSchema = {
7506
7576
  hidden: hiddenField,
7577
+ from: fromField,
7578
+ durationInFrames: durationInFramesField,
7507
7579
  layout: {
7508
7580
  type: "enum",
7509
7581
  default: "absolute-fill",
@@ -7684,6 +7756,25 @@ var SequenceManagerProvider = ({ children }) => {
7684
7756
  })
7685
7757
  });
7686
7758
  };
7759
+ var IsInsideSeriesContext = createContext15(false);
7760
+ var IsInsideSeriesContainer = ({ children }) => {
7761
+ return /* @__PURE__ */ jsx112(IsInsideSeriesContext.Provider, {
7762
+ value: true,
7763
+ children
7764
+ });
7765
+ };
7766
+ var IsNotInsideSeriesProvider = ({ children }) => {
7767
+ return /* @__PURE__ */ jsx112(IsInsideSeriesContext.Provider, {
7768
+ value: false,
7769
+ children
7770
+ });
7771
+ };
7772
+ var useRequireToBeInsideSeries = () => {
7773
+ const isInsideSeries = React12.useContext(IsInsideSeriesContext);
7774
+ if (!isInsideSeries) {
7775
+ throw new Error("This component must be inside a <Series /> component.");
7776
+ }
7777
+ };
7687
7778
  var ENABLE_V5_BREAKING_CHANGES = false;
7688
7779
  var deleteNestedKey = (obj, keysToRemove) => {
7689
7780
  for (const key of keysToRemove) {
@@ -7716,349 +7807,126 @@ var deleteNestedKey = (obj, keysToRemove) => {
7716
7807
  }
7717
7808
  return obj;
7718
7809
  };
7719
- var OverrideIdsToNodePathsGettersContext = createContext15({
7720
- overrideIdToNodePathMappings: {}
7721
- });
7722
- var OverrideIdsToNodePathsSettersContext = createContext15({
7723
- setOverrideIdToNodePath: () => {
7724
- throw new Error("OverrideIdsToNodePathsSettersContext not initialized");
7810
+ var NEWTON_ITERATIONS = 4;
7811
+ var NEWTON_MIN_SLOPE = 0.001;
7812
+ var SUBDIVISION_PRECISION = 0.0000001;
7813
+ var SUBDIVISION_MAX_ITERATIONS = 10;
7814
+ var kSplineTableSize = 11;
7815
+ var kSampleStepSize = 1 / (kSplineTableSize - 1);
7816
+ var float32ArraySupported = typeof Float32Array === "function";
7817
+ function a(aA1, aA2) {
7818
+ return 1 - 3 * aA2 + 3 * aA1;
7819
+ }
7820
+ function b(aA1, aA2) {
7821
+ return 3 * aA2 - 6 * aA1;
7822
+ }
7823
+ function c(aA1) {
7824
+ return 3 * aA1;
7825
+ }
7826
+ function calcBezier(aT, aA1, aA2) {
7827
+ return ((a(aA1, aA2) * aT + b(aA1, aA2)) * aT + c(aA1)) * aT;
7828
+ }
7829
+ function getSlope(aT, aA1, aA2) {
7830
+ return 3 * a(aA1, aA2) * aT * aT + 2 * b(aA1, aA2) * aT + c(aA1);
7831
+ }
7832
+ function binarySubdivide({
7833
+ aX,
7834
+ _aA,
7835
+ _aB,
7836
+ mX1,
7837
+ mX2
7838
+ }) {
7839
+ let currentX;
7840
+ let currentT;
7841
+ let i = 0;
7842
+ let aA = _aA;
7843
+ let aB = _aB;
7844
+ do {
7845
+ currentT = aA + (aB - aA) / 2;
7846
+ currentX = calcBezier(currentT, mX1, mX2) - aX;
7847
+ if (currentX > 0) {
7848
+ aB = currentT;
7849
+ } else {
7850
+ aA = currentT;
7851
+ }
7852
+ } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
7853
+ return currentT;
7854
+ }
7855
+ function newtonRaphsonIterate(aX, _aGuessT, mX1, mX2) {
7856
+ let aGuessT = _aGuessT;
7857
+ for (let i = 0;i < NEWTON_ITERATIONS; ++i) {
7858
+ const currentSlope = getSlope(aGuessT, mX1, mX2);
7859
+ if (currentSlope === 0) {
7860
+ return aGuessT;
7861
+ }
7862
+ const currentX = calcBezier(aGuessT, mX1, mX2) - aX;
7863
+ aGuessT -= currentX / currentSlope;
7725
7864
  }
7726
- });
7727
- var mergeOverrides = ({
7728
- descriptor,
7729
- codeOverrides,
7730
- dragOverrides
7731
- }) => {
7732
- if (!codeOverrides && !dragOverrides) {
7733
- return { params: descriptor.params, effectKey: descriptor.effectKey };
7865
+ return aGuessT;
7866
+ }
7867
+ function bezier(mX1, mY1, mX2, mY2) {
7868
+ if (!(mX1 >= 0 && mX1 <= 1 && mX2 >= 0 && mX2 <= 1)) {
7869
+ throw new Error("bezier x values must be in [0, 1] range");
7734
7870
  }
7735
- const merged = {
7736
- ...descriptor.params
7737
- };
7738
- if (codeOverrides) {
7739
- for (const [key, value] of Object.entries(codeOverrides)) {
7740
- if (value !== undefined) {
7741
- merged[key] = value;
7742
- }
7871
+ const sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
7872
+ if (mX1 !== mY1 || mX2 !== mY2) {
7873
+ for (let i = 0;i < kSplineTableSize; ++i) {
7874
+ sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
7743
7875
  }
7744
7876
  }
7745
- if (dragOverrides) {
7746
- for (const [key, value] of Object.entries(dragOverrides)) {
7747
- merged[key] = value;
7877
+ function getTForX(aX) {
7878
+ let intervalStart = 0;
7879
+ let currentSample = 1;
7880
+ const lastSample = kSplineTableSize - 1;
7881
+ for (;currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
7882
+ intervalStart += kSampleStepSize;
7748
7883
  }
7884
+ --currentSample;
7885
+ const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
7886
+ const guessForT = intervalStart + dist * kSampleStepSize;
7887
+ const initialSlope = getSlope(guessForT, mX1, mX2);
7888
+ if (initialSlope >= NEWTON_MIN_SLOPE) {
7889
+ return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
7890
+ }
7891
+ if (initialSlope === 0) {
7892
+ return guessForT;
7893
+ }
7894
+ return binarySubdivide({
7895
+ aX,
7896
+ _aA: intervalStart,
7897
+ _aB: intervalStart + kSampleStepSize,
7898
+ mX1,
7899
+ mX2
7900
+ });
7749
7901
  }
7750
- return {
7751
- params: merged,
7752
- effectKey: descriptor.definition.calculateKey(merged)
7753
- };
7754
- };
7755
- var extractCodeOverrides = (propStatus) => {
7756
- if (!propStatus) {
7757
- return null;
7758
- }
7759
- const out = {};
7760
- let hasAny = false;
7761
- for (const [key, status] of Object.entries(propStatus)) {
7762
- if (status.canUpdate) {
7763
- out[key] = status.codeValue;
7764
- hasAny = true;
7902
+ return function(x) {
7903
+ const clampedX = Math.min(1, Math.max(0, x));
7904
+ if (mX1 === mY1 && mX2 === mY2) {
7905
+ return clampedX;
7906
+ }
7907
+ if (clampedX === 0) {
7908
+ return 0;
7909
+ }
7910
+ if (clampedX === 1) {
7911
+ return 1;
7765
7912
  }
7913
+ return calcBezier(getTForX(clampedX), mY1, mY2);
7914
+ };
7915
+ }
7916
+ var clampUnit = (t) => Math.min(1, Math.max(0, t));
7917
+
7918
+ class Easing {
7919
+ static step0(n) {
7920
+ return n > 0 ? 1 : 0;
7766
7921
  }
7767
- return hasAny ? out : null;
7768
- };
7769
- var useMemoizedEffectDefinitions = (effects) => {
7770
- const previousRef = useRef5(null);
7771
- const definitions = effects.map((descriptor) => descriptor.definition);
7772
- const previous = previousRef.current;
7773
- const isSame = previous !== null && previous.length === definitions.length && previous.every((def, i) => def === definitions[i]);
7774
- if (isSame) {
7775
- return previous;
7922
+ static step1(n) {
7923
+ return n >= 1 ? 1 : 0;
7776
7924
  }
7777
- previousRef.current = definitions;
7778
- return definitions;
7779
- };
7780
- var getEffectCodeValuesCtx = ({
7781
- codeValues,
7782
- nodePath,
7783
- effectIndex
7784
- }) => {
7785
- const status = codeValues[makeSequencePropsSubscriptionKey(nodePath)];
7786
- if (!status) {
7787
- return { type: "cannot-update-sequence", reason: "not-found" };
7925
+ static linear(t) {
7926
+ return t;
7788
7927
  }
7789
- if (!status.canUpdate) {
7790
- return { type: "cannot-update-sequence", reason: status.reason };
7791
- }
7792
- const effect = status.effects.find((e) => e.effectIndex === effectIndex);
7793
- if (!effect) {
7794
- return { type: "cannot-update-effect", reason: "not-found" };
7795
- }
7796
- if (!effect.canUpdate) {
7797
- return { type: "cannot-update-effect", reason: effect.reason };
7798
- }
7799
- return { type: "can-update-effect", props: effect.props };
7800
- };
7801
- var getCodeValuesCtx = (codeValues, nodePath) => {
7802
- const status = codeValues[makeSequencePropsSubscriptionKey(nodePath)];
7803
- if (!status) {
7804
- return;
7805
- }
7806
- if (!status.canUpdate) {
7807
- return;
7808
- }
7809
- return status.props;
7810
- };
7811
- var useMemoizedEffects = ({
7812
- effects,
7813
- overrideId
7814
- }) => {
7815
- const previousRef = useRef5(null);
7816
- const { codeValues } = useContext15(VisualModeCodeValuesContext);
7817
- const { getEffectDragOverrides } = useContext15(VisualModeDragOverridesContext);
7818
- const { overrideIdToNodePathMappings } = useContext15(OverrideIdsToNodePathsGettersContext);
7819
- const previous = previousRef.current;
7820
- const nodePath = overrideId ? overrideIdToNodePathMappings[overrideId] ?? null : null;
7821
- const resolved = effects.map((descriptor, index) => {
7822
- if (nodePath === null) {
7823
- return {
7824
- descriptor,
7825
- params: descriptor.params,
7826
- effectKey: descriptor.effectKey
7827
- };
7828
- }
7829
- const effectStatus = getEffectCodeValuesCtx({
7830
- codeValues,
7831
- nodePath,
7832
- effectIndex: index
7833
- });
7834
- const codeOverrides = effectStatus.type === "can-update-effect" ? extractCodeOverrides(effectStatus.props) : null;
7835
- const dragOverridesMap = getEffectDragOverrides(nodePath, index);
7836
- const dragOverrides = Object.keys(dragOverridesMap).length === 0 ? null : dragOverridesMap;
7837
- const { params, effectKey } = mergeOverrides({
7838
- descriptor,
7839
- codeOverrides,
7840
- dragOverrides
7841
- });
7842
- return { descriptor, params, effectKey };
7843
- });
7844
- const isSame = previous !== null && previous.length === resolved.length && previous.every((p, i) => p.definition === resolved[i].descriptor.definition && p.effectKey === resolved[i].effectKey);
7845
- if (isSame) {
7846
- return previous;
7847
- }
7848
- const next = resolved.map(({ descriptor, params, effectKey }) => ({
7849
- definition: descriptor.definition,
7850
- effectKey,
7851
- params,
7852
- memoized: true
7853
- }));
7854
- previousRef.current = next;
7855
- return next;
7856
- };
7857
- var flattenActiveSchema = (schema, resolve) => {
7858
- const out = {};
7859
- for (const key of Object.keys(schema)) {
7860
- const field = schema[key];
7861
- if (field.type === "hidden") {
7862
- continue;
7863
- } else if (field.type === "enum") {
7864
- out[key] = field;
7865
- const current = resolve(key) ?? field.default;
7866
- const variant = field.variants[current];
7867
- if (variant) {
7868
- Object.assign(out, flattenActiveSchema(variant, resolve));
7869
- }
7870
- } else {
7871
- out[key] = field;
7872
- }
7873
- }
7874
- return out;
7875
- };
7876
- var getFlatSchemaWithAllKeys = (schema) => {
7877
- const out = {};
7878
- const addKey = (key, field) => {
7879
- if (key in out) {
7880
- throw new Error(`Duplicate key "${key}" in schema: discriminated union variants must not share keys`);
7881
- }
7882
- out[key] = field;
7883
- };
7884
- for (const key of Object.keys(schema)) {
7885
- const field = schema[key];
7886
- addKey(key, field);
7887
- if (field.type === "enum") {
7888
- for (const variant of Object.values(field.variants)) {
7889
- const flatVariant = getFlatSchemaWithAllKeys(variant);
7890
- for (const variantKey of Object.keys(flatVariant)) {
7891
- addKey(variantKey, flatVariant[variantKey]);
7892
- }
7893
- }
7894
- }
7895
- }
7896
- return out;
7897
- };
7898
- var findPropsToDelete = ({
7899
- schema,
7900
- key,
7901
- value
7902
- }) => {
7903
- const fieldSchema = schema[key];
7904
- if (!fieldSchema) {
7905
- throw new Error("Key " + JSON.stringify(key) + " not found in schema");
7906
- }
7907
- if (typeof value !== "string") {
7908
- throw new Error("Value must be a string, but is " + JSON.stringify(value));
7909
- }
7910
- if (fieldSchema.type !== "enum") {
7911
- throw new Error("Key " + JSON.stringify(key) + " is not an enum");
7912
- }
7913
- const currentVariant = fieldSchema.variants[value];
7914
- if (!currentVariant) {
7915
- throw new Error("Value for " + JSON.stringify(key) + " must be one of " + Object.keys(fieldSchema.variants).map((v) => JSON.stringify(v)).join(", ") + ", got " + JSON.stringify(value));
7916
- }
7917
- const otherVariants = Object.keys(fieldSchema.variants).filter((v) => v !== value);
7918
- const otherKeys = new Set;
7919
- for (const variant of otherVariants) {
7920
- const otherVariant = fieldSchema.variants[variant];
7921
- const keys = Object.keys(otherVariant);
7922
- for (const k of keys) {
7923
- otherKeys.add(k);
7924
- }
7925
- }
7926
- return [...otherKeys];
7927
- };
7928
- var getEffectiveVisualModeValue = ({
7929
- codeValue,
7930
- dragOverrideValue,
7931
- defaultValue,
7932
- shouldResortToDefaultValueIfUndefined = false
7933
- }) => {
7934
- if (dragOverrideValue !== undefined) {
7935
- return dragOverrideValue;
7936
- }
7937
- if (codeValue.codeValue === undefined && shouldResortToDefaultValueIfUndefined) {
7938
- return defaultValue;
7939
- }
7940
- return codeValue.codeValue;
7941
- };
7942
- var NEWTON_ITERATIONS = 4;
7943
- var NEWTON_MIN_SLOPE = 0.001;
7944
- var SUBDIVISION_PRECISION = 0.0000001;
7945
- var SUBDIVISION_MAX_ITERATIONS = 10;
7946
- var kSplineTableSize = 11;
7947
- var kSampleStepSize = 1 / (kSplineTableSize - 1);
7948
- var float32ArraySupported = typeof Float32Array === "function";
7949
- function a(aA1, aA2) {
7950
- return 1 - 3 * aA2 + 3 * aA1;
7951
- }
7952
- function b(aA1, aA2) {
7953
- return 3 * aA2 - 6 * aA1;
7954
- }
7955
- function c(aA1) {
7956
- return 3 * aA1;
7957
- }
7958
- function calcBezier(aT, aA1, aA2) {
7959
- return ((a(aA1, aA2) * aT + b(aA1, aA2)) * aT + c(aA1)) * aT;
7960
- }
7961
- function getSlope(aT, aA1, aA2) {
7962
- return 3 * a(aA1, aA2) * aT * aT + 2 * b(aA1, aA2) * aT + c(aA1);
7963
- }
7964
- function binarySubdivide({
7965
- aX,
7966
- _aA,
7967
- _aB,
7968
- mX1,
7969
- mX2
7970
- }) {
7971
- let currentX;
7972
- let currentT;
7973
- let i = 0;
7974
- let aA = _aA;
7975
- let aB = _aB;
7976
- do {
7977
- currentT = aA + (aB - aA) / 2;
7978
- currentX = calcBezier(currentT, mX1, mX2) - aX;
7979
- if (currentX > 0) {
7980
- aB = currentT;
7981
- } else {
7982
- aA = currentT;
7983
- }
7984
- } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
7985
- return currentT;
7986
- }
7987
- function newtonRaphsonIterate(aX, _aGuessT, mX1, mX2) {
7988
- let aGuessT = _aGuessT;
7989
- for (let i = 0;i < NEWTON_ITERATIONS; ++i) {
7990
- const currentSlope = getSlope(aGuessT, mX1, mX2);
7991
- if (currentSlope === 0) {
7992
- return aGuessT;
7993
- }
7994
- const currentX = calcBezier(aGuessT, mX1, mX2) - aX;
7995
- aGuessT -= currentX / currentSlope;
7996
- }
7997
- return aGuessT;
7998
- }
7999
- function bezier(mX1, mY1, mX2, mY2) {
8000
- if (!(mX1 >= 0 && mX1 <= 1 && mX2 >= 0 && mX2 <= 1)) {
8001
- throw new Error("bezier x values must be in [0, 1] range");
8002
- }
8003
- const sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
8004
- if (mX1 !== mY1 || mX2 !== mY2) {
8005
- for (let i = 0;i < kSplineTableSize; ++i) {
8006
- sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
8007
- }
8008
- }
8009
- function getTForX(aX) {
8010
- let intervalStart = 0;
8011
- let currentSample = 1;
8012
- const lastSample = kSplineTableSize - 1;
8013
- for (;currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
8014
- intervalStart += kSampleStepSize;
8015
- }
8016
- --currentSample;
8017
- const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
8018
- const guessForT = intervalStart + dist * kSampleStepSize;
8019
- const initialSlope = getSlope(guessForT, mX1, mX2);
8020
- if (initialSlope >= NEWTON_MIN_SLOPE) {
8021
- return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
8022
- }
8023
- if (initialSlope === 0) {
8024
- return guessForT;
8025
- }
8026
- return binarySubdivide({
8027
- aX,
8028
- _aA: intervalStart,
8029
- _aB: intervalStart + kSampleStepSize,
8030
- mX1,
8031
- mX2
8032
- });
8033
- }
8034
- return function(x) {
8035
- const clampedX = Math.min(1, Math.max(0, x));
8036
- if (mX1 === mY1 && mX2 === mY2) {
8037
- return clampedX;
8038
- }
8039
- if (clampedX === 0) {
8040
- return 0;
8041
- }
8042
- if (clampedX === 1) {
8043
- return 1;
8044
- }
8045
- return calcBezier(getTForX(clampedX), mY1, mY2);
8046
- };
8047
- }
8048
- var clampUnit = (t) => Math.min(1, Math.max(0, t));
8049
-
8050
- class Easing {
8051
- static step0(n) {
8052
- return n > 0 ? 1 : 0;
8053
- }
8054
- static step1(n) {
8055
- return n >= 1 ? 1 : 0;
8056
- }
8057
- static linear(t) {
8058
- return t;
8059
- }
8060
- static ease(t) {
8061
- return Easing.bezier(0.42, 0, 1, 1)(t);
7928
+ static ease(t) {
7929
+ return Easing.bezier(0.42, 0, 1, 1)(t);
8062
7930
  }
8063
7931
  static quad(t) {
8064
7932
  return t * t;
@@ -8120,6 +7988,123 @@ class Easing {
8120
7988
  };
8121
7989
  }
8122
7990
  }
7991
+ var normalizeNumber = (value) => {
7992
+ return Math.round(value * 1e6) / 1e6;
7993
+ };
7994
+ var angleUnits = new Set(["deg", "rad", "grad", "turn"]);
7995
+ var lengthUnits = new Set([
7996
+ "%",
7997
+ "cap",
7998
+ "ch",
7999
+ "cm",
8000
+ "cqb",
8001
+ "cqh",
8002
+ "cqi",
8003
+ "cqmax",
8004
+ "cqmin",
8005
+ "cqw",
8006
+ "dvh",
8007
+ "dvw",
8008
+ "em",
8009
+ "ex",
8010
+ "ic",
8011
+ "in",
8012
+ "lh",
8013
+ "lvh",
8014
+ "lvw",
8015
+ "mm",
8016
+ "pc",
8017
+ "pt",
8018
+ "px",
8019
+ "q",
8020
+ "rem",
8021
+ "rlh",
8022
+ "svh",
8023
+ "svw",
8024
+ "vb",
8025
+ "vh",
8026
+ "vi",
8027
+ "vmax",
8028
+ "vmin",
8029
+ "vw"
8030
+ ]);
8031
+ var cssNumberRegex = /^([+-]?(?:\d+\.?\d*|\.\d+))([a-zA-Z%]+)?$/;
8032
+ var stringifyNumber = (value) => {
8033
+ return String(normalizeNumber(value));
8034
+ };
8035
+ var parseStringInterpolationComponent = (component, value) => {
8036
+ const match = cssNumberRegex.exec(component);
8037
+ if (match === null) {
8038
+ throw new TypeError(`Cannot interpolate "${value}" because "${component}" is not a supported scale, translate, or rotate value`);
8039
+ }
8040
+ const unit = match[2] ?? null;
8041
+ const numberValue = Number(match[1]);
8042
+ if (!Number.isFinite(numberValue)) {
8043
+ throw new TypeError(`Cannot interpolate "${value}" because "${component}" is not finite`);
8044
+ }
8045
+ if (unit === null) {
8046
+ return { kind: "scale", value: numberValue, unit: null };
8047
+ }
8048
+ if (angleUnits.has(unit)) {
8049
+ return { kind: "rotate", value: numberValue, unit };
8050
+ }
8051
+ if (lengthUnits.has(unit)) {
8052
+ return { kind: "translate", value: numberValue, unit };
8053
+ }
8054
+ throw new TypeError(`Cannot interpolate "${value}" because "${unit}" is not a supported translate or rotate unit`);
8055
+ };
8056
+ var parseStringInterpolationValue = (output) => {
8057
+ if (typeof output === "number") {
8058
+ if (!Number.isFinite(output)) {
8059
+ throw new Error(`outputRange must contain only finite numbers, but got [${output}]`);
8060
+ }
8061
+ return {
8062
+ kind: "scale",
8063
+ values: [output, output, 1],
8064
+ units: [null, null, null],
8065
+ dimensions: 1
8066
+ };
8067
+ }
8068
+ const parts = output.trim().split(/\s+/);
8069
+ if (parts.length < 1 || parts.length > 3 || parts[0] === "") {
8070
+ throw new TypeError(`String outputRange values must contain 1 to 3 components, but got "${output}"`);
8071
+ }
8072
+ const parsed = parts.map((part) => parseStringInterpolationComponent(part, output));
8073
+ const [{ kind }] = parsed;
8074
+ for (const part of parsed) {
8075
+ if (part.kind !== kind) {
8076
+ throw new TypeError(`Cannot interpolate "${output}" because it mixes ${kind} and ${part.kind} values`);
8077
+ }
8078
+ }
8079
+ if (kind === "scale") {
8080
+ const x = parsed[0].value;
8081
+ const y = parsed[1]?.value ?? x;
8082
+ const z = parsed[2]?.value ?? 1;
8083
+ return {
8084
+ kind,
8085
+ values: [x, y, z],
8086
+ units: [null, null, null],
8087
+ dimensions: parsed.length
8088
+ };
8089
+ }
8090
+ return {
8091
+ kind,
8092
+ values: [parsed[0].value, parsed[1]?.value ?? 0, parsed[2]?.value ?? 0],
8093
+ units: [parsed[0].unit, parsed[1]?.unit ?? null, parsed[2]?.unit ?? null],
8094
+ dimensions: parsed.length
8095
+ };
8096
+ };
8097
+ var serializeStringInterpolationValue = ({
8098
+ kind,
8099
+ values,
8100
+ units,
8101
+ dimensions
8102
+ }) => {
8103
+ if (kind === "scale") {
8104
+ return values.slice(0, dimensions).map((value) => stringifyNumber(value)).join(" ");
8105
+ }
8106
+ return values.slice(0, dimensions).map((value, index) => `${stringifyNumber(value)}${units[index]}`).join(" ");
8107
+ };
8123
8108
  function interpolateFunction(input, inputRange, outputRange, options) {
8124
8109
  const { extrapolateLeft, extrapolateRight, easing } = options;
8125
8110
  let result = input;
@@ -8164,6 +8149,96 @@ function findRange(input, inputRange) {
8164
8149
  }
8165
8150
  return i - 1;
8166
8151
  }
8152
+ var defaultEasing = (num) => num;
8153
+ var interpolateNumber = ({
8154
+ input,
8155
+ inputRange,
8156
+ outputRange,
8157
+ options
8158
+ }) => {
8159
+ if (inputRange.length === 1) {
8160
+ return outputRange[0];
8161
+ }
8162
+ const easingOption = options?.easing;
8163
+ const resolveEasingForSegment = (segmentIndex) => {
8164
+ if (easingOption === undefined) {
8165
+ return defaultEasing;
8166
+ }
8167
+ if (typeof easingOption === "function") {
8168
+ return easingOption;
8169
+ }
8170
+ return easingOption[segmentIndex];
8171
+ };
8172
+ let extrapolateLeft = "extend";
8173
+ if (options?.extrapolateLeft !== undefined) {
8174
+ extrapolateLeft = options.extrapolateLeft;
8175
+ }
8176
+ let extrapolateRight = "extend";
8177
+ if (options?.extrapolateRight !== undefined) {
8178
+ extrapolateRight = options.extrapolateRight;
8179
+ }
8180
+ const posterizedInput = options?.posterize === undefined ? input : Math.floor(input / options.posterize) * options.posterize;
8181
+ const range = findRange(posterizedInput, inputRange);
8182
+ return interpolateFunction(posterizedInput, [inputRange[range], inputRange[range + 1]], [outputRange[range], outputRange[range + 1]], {
8183
+ easing: resolveEasingForSegment(range),
8184
+ extrapolateLeft,
8185
+ extrapolateRight
8186
+ });
8187
+ };
8188
+ var interpolateString = ({
8189
+ input,
8190
+ inputRange,
8191
+ outputRange,
8192
+ options
8193
+ }) => {
8194
+ const parsedOutputRange = outputRange.map(parseStringInterpolationValue);
8195
+ const kind = parsedOutputRange[0]?.kind;
8196
+ if (kind === undefined) {
8197
+ throw new Error("outputRange must have at least 1 element");
8198
+ }
8199
+ for (const parsed of parsedOutputRange) {
8200
+ if (parsed.kind !== kind) {
8201
+ throw new TypeError(`Cannot interpolate ${kind} values with ${parsed.kind} values`);
8202
+ }
8203
+ }
8204
+ const dimensions = Math.max(...parsedOutputRange.map((parsed) => parsed.dimensions));
8205
+ const units = [
8206
+ null,
8207
+ null,
8208
+ null
8209
+ ];
8210
+ if (kind !== "scale") {
8211
+ for (let axis = 0;axis < dimensions; axis++) {
8212
+ for (const parsed of parsedOutputRange) {
8213
+ const unit = parsed.units[axis];
8214
+ if (unit === null) {
8215
+ continue;
8216
+ }
8217
+ if (units[axis] === null) {
8218
+ units[axis] = unit;
8219
+ continue;
8220
+ }
8221
+ if (units[axis] !== unit) {
8222
+ throw new TypeError(`Cannot interpolate ${kind} values with different units on axis ${axis + 1}: ${units[axis]} and ${unit}`);
8223
+ }
8224
+ }
8225
+ if (units[axis] === null) {
8226
+ throw new TypeError(`Cannot interpolate ${kind} values because axis ${axis + 1} has no unit`);
8227
+ }
8228
+ }
8229
+ }
8230
+ return serializeStringInterpolationValue({
8231
+ kind,
8232
+ values: [0, 0, 0].map((_, axis) => interpolateNumber({
8233
+ input,
8234
+ inputRange,
8235
+ outputRange: parsedOutputRange.map((parsed) => parsed.values[axis]),
8236
+ options
8237
+ })),
8238
+ units,
8239
+ dimensions
8240
+ });
8241
+ };
8167
8242
  function checkValidInputRange(arr) {
8168
8243
  for (let i = 1;i < arr.length; ++i) {
8169
8244
  if (!(arr[i] > arr[i - 1])) {
@@ -8223,42 +8298,27 @@ function interpolate2(input, inputRange, outputRange, options) {
8223
8298
  throw new Error("inputRange (" + inputRange.length + ") and outputRange (" + outputRange.length + ") must have the same length");
8224
8299
  }
8225
8300
  checkInfiniteRange("inputRange", inputRange);
8226
- checkInfiniteRange("outputRange", outputRange);
8227
8301
  checkValidInputRange(inputRange);
8228
8302
  assertValidInterpolateEasingOption(options?.easing, inputRange.length);
8229
8303
  assertValidInterpolatePosterizeOption(options?.posterize);
8230
- const easingOption = options?.easing;
8231
- const defaultEasing = (num) => num;
8232
- const resolveEasingForSegment = (segmentIndex) => {
8233
- if (easingOption === undefined) {
8234
- return defaultEasing;
8235
- }
8236
- if (typeof easingOption === "function") {
8237
- return easingOption;
8238
- }
8239
- return easingOption[segmentIndex];
8240
- };
8241
- let extrapolateLeft = "extend";
8242
- if (options?.extrapolateLeft !== undefined) {
8243
- extrapolateLeft = options.extrapolateLeft;
8244
- }
8245
- let extrapolateRight = "extend";
8246
- if (options?.extrapolateRight !== undefined) {
8247
- extrapolateRight = options.extrapolateRight;
8248
- }
8249
8304
  if (typeof input !== "number") {
8250
8305
  throw new TypeError("Cannot interpolate an input which is not a number");
8251
- }
8252
- if (inputRange.length === 1) {
8253
- return outputRange[0];
8254
- }
8255
- const posterizedInput = options?.posterize === undefined ? input : Math.floor(input / options.posterize) * options.posterize;
8256
- const range = findRange(posterizedInput, inputRange);
8257
- return interpolateFunction(posterizedInput, [inputRange[range], inputRange[range + 1]], [outputRange[range], outputRange[range + 1]], {
8258
- easing: resolveEasingForSegment(range),
8259
- extrapolateLeft,
8260
- extrapolateRight
8261
- });
8306
+ }
8307
+ if (!Array.isArray(outputRange)) {
8308
+ throw new Error("outputRange must contain only numbers");
8309
+ }
8310
+ const hasStringOutput = outputRange.some((output) => typeof output === "string");
8311
+ if (hasStringOutput) {
8312
+ if (!outputRange.every((output) => typeof output === "string" || typeof output === "number")) {
8313
+ throw new TypeError("outputRange must contain only numbers, or supported scale, translate, and rotate strings");
8314
+ }
8315
+ return interpolateString({ input, inputRange, outputRange, options });
8316
+ }
8317
+ if (!outputRange.every((output) => typeof output === "number")) {
8318
+ throw new TypeError("outputRange must contain only numbers, or supported scale, translate, and rotate strings");
8319
+ }
8320
+ checkInfiniteRange("outputRange", outputRange);
8321
+ return interpolateNumber({ input, inputRange, outputRange, options });
8262
8322
  }
8263
8323
  var NUMBER = "[-+]?\\d*\\.?\\d+";
8264
8324
  var PERCENTAGE = NUMBER + "%";
@@ -8720,90 +8780,384 @@ var blue = (c2) => {
8720
8780
  var rgbaColor = (r2, g, b2, alpha) => {
8721
8781
  return `rgba(${r2}, ${g}, ${b2}, ${alpha})`;
8722
8782
  };
8723
- function processColor(color) {
8724
- const normalizedColor = normalizeColor(color);
8725
- return (normalizedColor << 24 | normalizedColor >>> 8) >>> 0;
8726
- }
8727
- var interpolateColorsRGB = (value, inputRange, colors, options) => {
8728
- const [r2, g, b2, a2] = [red, green, blue, opacity].map((f) => {
8729
- const unrounded = interpolate2(value, inputRange, colors.map((c2) => f(c2)), {
8730
- extrapolateLeft: "clamp",
8731
- extrapolateRight: "clamp",
8732
- posterize: options?.posterize
8733
- });
8734
- if (f === opacity) {
8735
- return Number(unrounded.toFixed(3));
8783
+ function processColor(color) {
8784
+ const normalizedColor = normalizeColor(color);
8785
+ return (normalizedColor << 24 | normalizedColor >>> 8) >>> 0;
8786
+ }
8787
+ var interpolateColorsRGB = (value, inputRange, colors, options) => {
8788
+ const [r2, g, b2, a2] = [red, green, blue, opacity].map((f) => {
8789
+ const unrounded = interpolate2(value, inputRange, colors.map((c2) => f(c2)), {
8790
+ extrapolateLeft: "clamp",
8791
+ extrapolateRight: "clamp",
8792
+ posterize: options?.posterize
8793
+ });
8794
+ if (f === opacity) {
8795
+ return Number(unrounded.toFixed(3));
8796
+ }
8797
+ return Math.round(unrounded);
8798
+ });
8799
+ return rgbaColor(r2, g, b2, a2);
8800
+ };
8801
+ var interpolateColors = (input, inputRange, outputRange, options) => {
8802
+ if (typeof input === "undefined") {
8803
+ throw new TypeError("input can not be undefined");
8804
+ }
8805
+ if (typeof inputRange === "undefined") {
8806
+ throw new TypeError("inputRange can not be undefined");
8807
+ }
8808
+ if (typeof outputRange === "undefined") {
8809
+ throw new TypeError("outputRange can not be undefined");
8810
+ }
8811
+ if (inputRange.length !== outputRange.length) {
8812
+ throw new TypeError("inputRange (" + inputRange.length + " values provided) and outputRange (" + outputRange.length + " values provided) must have the same length");
8813
+ }
8814
+ const processedOutputRange = outputRange.map((c2) => processColor(c2));
8815
+ return interpolateColorsRGB(input, inputRange, processedOutputRange, options);
8816
+ };
8817
+ var easingToFn = (e) => {
8818
+ if (e === "linear") {
8819
+ return Easing.linear;
8820
+ }
8821
+ return bezier(e[0], e[1], e[2], e[3]);
8822
+ };
8823
+ var interpolateKeyframedStatus = ({
8824
+ frame,
8825
+ status
8826
+ }) => {
8827
+ const { keyframes, easing, clamping, interpolationFunction } = status;
8828
+ if (keyframes.length === 0) {
8829
+ return null;
8830
+ }
8831
+ const inputRange = keyframes.map((k) => k.frame);
8832
+ const outputs = keyframes.map((k) => k.value);
8833
+ if (interpolationFunction === "interpolateColors") {
8834
+ if (!outputs.every((v) => typeof v === "string")) {
8835
+ return null;
8836
+ }
8837
+ if (keyframes.length === 1) {
8838
+ return outputs[0];
8839
+ }
8840
+ try {
8841
+ return interpolateColors(frame, inputRange, outputs, {
8842
+ posterize: status.posterize
8843
+ });
8844
+ } catch {
8845
+ return null;
8846
+ }
8847
+ }
8848
+ if (interpolationFunction !== "interpolate") {
8849
+ return null;
8850
+ }
8851
+ try {
8852
+ return interpolate2(frame, inputRange, outputs, {
8853
+ easing: easing.map(easingToFn),
8854
+ extrapolateLeft: clamping.left,
8855
+ extrapolateRight: clamping.right,
8856
+ posterize: status.posterize
8857
+ });
8858
+ } catch {
8859
+ return null;
8860
+ }
8861
+ };
8862
+ var resolveDragOverrideValue = ({
8863
+ dragOverrideValue,
8864
+ frame
8865
+ }) => {
8866
+ if (dragOverrideValue === undefined) {
8867
+ return { type: "none" };
8868
+ }
8869
+ if (dragOverrideValue.type === "static") {
8870
+ return { type: "resolved", value: dragOverrideValue.value };
8871
+ }
8872
+ if (frame === null) {
8873
+ return { type: "none" };
8874
+ }
8875
+ const interpolated = interpolateKeyframedStatus({
8876
+ frame,
8877
+ status: dragOverrideValue.status
8878
+ });
8879
+ if (interpolated === null) {
8880
+ return { type: "none" };
8881
+ }
8882
+ return { type: "resolved", value: interpolated };
8883
+ };
8884
+ var getEffectiveVisualModeValue = ({
8885
+ codeValue,
8886
+ dragOverrideValue,
8887
+ defaultValue,
8888
+ frame = null,
8889
+ shouldResortToDefaultValueIfUndefined = false
8890
+ }) => {
8891
+ const dragOverride = resolveDragOverrideValue({
8892
+ dragOverrideValue,
8893
+ frame
8894
+ });
8895
+ if (dragOverride.type === "resolved" && dragOverride.value !== undefined) {
8896
+ return dragOverride.value;
8897
+ }
8898
+ if (codeValue.status === "keyframed" && frame !== null) {
8899
+ return interpolateKeyframedStatus({
8900
+ frame,
8901
+ status: codeValue
8902
+ });
8903
+ }
8904
+ if (codeValue.codeValue === undefined && shouldResortToDefaultValueIfUndefined) {
8905
+ return defaultValue;
8906
+ }
8907
+ return codeValue.codeValue;
8908
+ };
8909
+ var OverrideIdsToNodePathsGettersContext = createContext16({
8910
+ overrideIdToNodePathMappings: {}
8911
+ });
8912
+ var OverrideIdsToNodePathsSettersContext = createContext16({
8913
+ setOverrideIdToNodePath: () => {
8914
+ throw new Error("OverrideIdsToNodePathsSettersContext not initialized");
8915
+ }
8916
+ });
8917
+ var mergeOverrides = ({
8918
+ descriptor,
8919
+ codeOverrides,
8920
+ dragOverrides,
8921
+ frame
8922
+ }) => {
8923
+ if (!codeOverrides && !dragOverrides) {
8924
+ return { params: descriptor.params, effectKey: descriptor.effectKey };
8925
+ }
8926
+ const merged = {
8927
+ ...descriptor.params
8928
+ };
8929
+ if (codeOverrides) {
8930
+ for (const [key, value] of Object.entries(codeOverrides)) {
8931
+ if (value !== undefined) {
8932
+ merged[key] = value;
8933
+ }
8934
+ }
8935
+ }
8936
+ if (dragOverrides) {
8937
+ for (const [key, value] of Object.entries(dragOverrides)) {
8938
+ const resolved = resolveDragOverrideValue({
8939
+ dragOverrideValue: value,
8940
+ frame
8941
+ });
8942
+ if (resolved.type === "resolved") {
8943
+ merged[key] = resolved.value;
8944
+ }
8945
+ }
8946
+ }
8947
+ return {
8948
+ params: merged,
8949
+ effectKey: descriptor.definition.calculateKey(merged)
8950
+ };
8951
+ };
8952
+ var extractCodeOverrides = (propStatus) => {
8953
+ if (!propStatus) {
8954
+ return null;
8955
+ }
8956
+ const out = {};
8957
+ let hasAny = false;
8958
+ for (const [key, status] of Object.entries(propStatus)) {
8959
+ if (status.status !== "computed") {
8960
+ out[key] = status.codeValue;
8961
+ hasAny = true;
8962
+ }
8963
+ }
8964
+ return hasAny ? out : null;
8965
+ };
8966
+ var useMemoizedEffectDefinitions = (effects) => {
8967
+ const previousRef = useRef5(null);
8968
+ const definitions = effects.map((descriptor) => descriptor.definition);
8969
+ const previous = previousRef.current;
8970
+ const isSame = previous !== null && previous.length === definitions.length && previous.every((def, i) => def === definitions[i]);
8971
+ if (isSame) {
8972
+ return previous;
8973
+ }
8974
+ previousRef.current = definitions;
8975
+ return definitions;
8976
+ };
8977
+ var getEffectCodeValuesCtx = ({
8978
+ codeValues,
8979
+ nodePath,
8980
+ effectIndex
8981
+ }) => {
8982
+ const status = codeValues[makeSequencePropsSubscriptionKey(nodePath)];
8983
+ if (!status) {
8984
+ return { type: "cannot-update-sequence", reason: "not-found" };
8985
+ }
8986
+ if (!status.canUpdate) {
8987
+ return { type: "cannot-update-sequence", reason: status.reason };
8988
+ }
8989
+ const effect = status.effects.find((e) => e.effectIndex === effectIndex);
8990
+ if (!effect) {
8991
+ return { type: "cannot-update-effect", reason: "not-found" };
8992
+ }
8993
+ if (!effect.canUpdate) {
8994
+ return { type: "cannot-update-effect", reason: effect.reason };
8995
+ }
8996
+ return { type: "can-update-effect", props: effect.props };
8997
+ };
8998
+ var getCodeValuesCtx = (codeValues, nodePath) => {
8999
+ const status = codeValues[makeSequencePropsSubscriptionKey(nodePath)];
9000
+ if (!status) {
9001
+ return;
9002
+ }
9003
+ if (!status.canUpdate) {
9004
+ return;
9005
+ }
9006
+ return status.props;
9007
+ };
9008
+ var useMemoizedEffects = ({
9009
+ effects,
9010
+ overrideId
9011
+ }) => {
9012
+ const previousRef = useRef5(null);
9013
+ const { codeValues } = useContext15(VisualModeCodeValuesContext);
9014
+ const { getEffectDragOverrides } = useContext15(VisualModeDragOverridesContext);
9015
+ const frame = useCurrentFrame();
9016
+ const { overrideIdToNodePathMappings } = useContext15(OverrideIdsToNodePathsGettersContext);
9017
+ const previous = previousRef.current;
9018
+ const nodePath = overrideId ? overrideIdToNodePathMappings[overrideId] ?? null : null;
9019
+ const resolved = effects.map((descriptor, index) => {
9020
+ if (nodePath === null) {
9021
+ return {
9022
+ descriptor,
9023
+ params: descriptor.params,
9024
+ effectKey: descriptor.effectKey
9025
+ };
9026
+ }
9027
+ const effectStatus = getEffectCodeValuesCtx({
9028
+ codeValues,
9029
+ nodePath,
9030
+ effectIndex: index
9031
+ });
9032
+ const codeOverrides = effectStatus.type === "can-update-effect" ? extractCodeOverrides(effectStatus.props) : null;
9033
+ const dragOverridesMap = getEffectDragOverrides(nodePath, index);
9034
+ const dragOverrides = Object.keys(dragOverridesMap).length === 0 ? null : dragOverridesMap;
9035
+ const { params, effectKey } = mergeOverrides({
9036
+ descriptor,
9037
+ codeOverrides,
9038
+ dragOverrides,
9039
+ frame
9040
+ });
9041
+ return { descriptor, params, effectKey };
9042
+ });
9043
+ const isSame = previous !== null && previous.length === resolved.length && previous.every((p, i) => p.definition === resolved[i].descriptor.definition && p.effectKey === resolved[i].effectKey);
9044
+ if (isSame) {
9045
+ return previous;
9046
+ }
9047
+ const next = resolved.map(({ descriptor, params, effectKey }) => ({
9048
+ definition: descriptor.definition,
9049
+ effectKey,
9050
+ params,
9051
+ memoized: true
9052
+ }));
9053
+ previousRef.current = next;
9054
+ return next;
9055
+ };
9056
+ var flattenActiveSchema = (schema, resolve) => {
9057
+ const out = {};
9058
+ for (const key of Object.keys(schema)) {
9059
+ const field = schema[key];
9060
+ if (field.type === "hidden") {
9061
+ continue;
9062
+ } else if (field.type === "enum") {
9063
+ out[key] = field;
9064
+ const current = resolve(key) ?? field.default;
9065
+ const variant = field.variants[current];
9066
+ if (variant) {
9067
+ Object.assign(out, flattenActiveSchema(variant, resolve));
9068
+ }
9069
+ } else {
9070
+ out[key] = field;
9071
+ }
9072
+ }
9073
+ return out;
9074
+ };
9075
+ var getFlatSchemaWithAllKeys = (schema) => {
9076
+ const out = {};
9077
+ const addKey = (key, field) => {
9078
+ if (key in out) {
9079
+ throw new Error(`Duplicate key "${key}" in schema: discriminated union variants must not share keys`);
8736
9080
  }
8737
- return Math.round(unrounded);
8738
- });
8739
- return rgbaColor(r2, g, b2, a2);
9081
+ out[key] = field;
9082
+ };
9083
+ for (const key of Object.keys(schema)) {
9084
+ const field = schema[key];
9085
+ addKey(key, field);
9086
+ if (field.type === "enum") {
9087
+ for (const variant of Object.values(field.variants)) {
9088
+ const flatVariant = getFlatSchemaWithAllKeys(variant);
9089
+ for (const variantKey of Object.keys(flatVariant)) {
9090
+ addKey(variantKey, flatVariant[variantKey]);
9091
+ }
9092
+ }
9093
+ }
9094
+ }
9095
+ return out;
8740
9096
  };
8741
- var interpolateColors = (input, inputRange, outputRange, options) => {
8742
- if (typeof input === "undefined") {
8743
- throw new TypeError("input can not be undefined");
9097
+ var findPropsToDelete = ({
9098
+ schema,
9099
+ key,
9100
+ value
9101
+ }) => {
9102
+ const fieldSchema = schema[key];
9103
+ if (!fieldSchema) {
9104
+ throw new Error("Key " + JSON.stringify(key) + " not found in schema");
8744
9105
  }
8745
- if (typeof inputRange === "undefined") {
8746
- throw new TypeError("inputRange can not be undefined");
9106
+ if (typeof value !== "string") {
9107
+ throw new Error("Value must be a string, but is " + JSON.stringify(value));
8747
9108
  }
8748
- if (typeof outputRange === "undefined") {
8749
- throw new TypeError("outputRange can not be undefined");
9109
+ if (fieldSchema.type !== "enum") {
9110
+ throw new Error("Key " + JSON.stringify(key) + " is not an enum");
8750
9111
  }
8751
- if (inputRange.length !== outputRange.length) {
8752
- throw new TypeError("inputRange (" + inputRange.length + " values provided) and outputRange (" + outputRange.length + " values provided) must have the same length");
9112
+ const currentVariant = fieldSchema.variants[value];
9113
+ if (!currentVariant) {
9114
+ throw new Error("Value for " + JSON.stringify(key) + " must be one of " + Object.keys(fieldSchema.variants).map((v) => JSON.stringify(v)).join(", ") + ", got " + JSON.stringify(value));
8753
9115
  }
8754
- const processedOutputRange = outputRange.map((c2) => processColor(c2));
8755
- return interpolateColorsRGB(input, inputRange, processedOutputRange, options);
8756
- };
8757
- var easingToFn = (e) => {
8758
- if (e === "linear") {
8759
- return Easing.linear;
9116
+ const otherVariants = Object.keys(fieldSchema.variants).filter((v) => v !== value);
9117
+ const otherKeys = new Set;
9118
+ for (const variant of otherVariants) {
9119
+ const otherVariant = fieldSchema.variants[variant];
9120
+ const keys = Object.keys(otherVariant);
9121
+ for (const k of keys) {
9122
+ otherKeys.add(k);
9123
+ }
8760
9124
  }
8761
- return bezier(e[0], e[1], e[2], e[3]);
9125
+ return [...otherKeys];
8762
9126
  };
8763
- var interpolateKeyframedStatus = ({
9127
+ var makeStaticDragOverride = (value) => {
9128
+ return { type: "static", value };
9129
+ };
9130
+ var makeKeyframedDragOverride = ({
9131
+ status,
8764
9132
  frame,
8765
- status
9133
+ value
8766
9134
  }) => {
8767
- const { keyframes, easing, clamping, interpolationFunction } = status;
8768
- if (keyframes.length === 0) {
8769
- return null;
8770
- }
8771
- const inputRange = keyframes.map((k) => k.frame);
8772
- const outputs = keyframes.map((k) => k.value);
8773
- if (interpolationFunction === "interpolateColors") {
8774
- if (!outputs.every((v) => typeof v === "string")) {
8775
- return null;
8776
- }
8777
- if (keyframes.length === 1) {
8778
- return outputs[0];
8779
- }
8780
- try {
8781
- return interpolateColors(frame, inputRange, outputs, {
8782
- posterize: status.posterize
8783
- });
8784
- } catch {
8785
- return null;
8786
- }
9135
+ const existingIndex = status.keyframes.findIndex((keyframe) => keyframe.frame === frame);
9136
+ const keyframes = existingIndex === -1 ? [...status.keyframes, { frame, value }].sort((first, second) => first.frame - second.frame) : status.keyframes.map((keyframe, index) => index === existingIndex ? { frame, value } : keyframe);
9137
+ const easing = [...status.easing];
9138
+ while (easing.length < keyframes.length - 1) {
9139
+ easing.push("linear");
8787
9140
  }
8788
- if (interpolationFunction !== "interpolate") {
8789
- return null;
8790
- }
8791
- if (!outputs.every((v) => typeof v === "number")) {
8792
- return null;
9141
+ if (easing.length > keyframes.length - 1) {
9142
+ easing.length = keyframes.length - 1;
8793
9143
  }
8794
- if (keyframes.length === 1) {
8795
- return outputs[0];
8796
- }
8797
- try {
8798
- return interpolate2(frame, inputRange, outputs, {
8799
- easing: easing.map(easingToFn),
8800
- extrapolateLeft: clamping.left,
8801
- extrapolateRight: clamping.right,
8802
- posterize: status.posterize
8803
- });
8804
- } catch {
8805
- return null;
9144
+ return {
9145
+ type: "keyframed",
9146
+ status: {
9147
+ ...status,
9148
+ keyframes,
9149
+ easing
9150
+ }
9151
+ };
9152
+ };
9153
+ var getStaticDragOverrideValue = (dragOverrideValue) => {
9154
+ if (dragOverrideValue?.type !== "static") {
9155
+ return;
8806
9156
  }
9157
+ return dragOverrideValue.value;
9158
+ };
9159
+ var isKeyframedStatus = (status) => {
9160
+ return status !== null && status.status === "keyframed";
8807
9161
  };
8808
9162
  var findFieldInSchema = (schema, key) => {
8809
9163
  if (key in schema) {
@@ -8840,21 +9194,34 @@ var computeEffectiveSchemaValuesDotNotation = ({
8840
9194
  let value;
8841
9195
  if (codeValueStatus === null) {
8842
9196
  value = currentValue[key];
8843
- } else if (codeValueStatus.canUpdate === false) {
8844
- if (codeValueStatus.reason === "keyframed" && frame !== null) {
8845
- const interpolated = interpolateKeyframedStatus({
8846
- frame,
8847
- status: codeValueStatus
8848
- });
8849
- value = interpolated ?? currentValue[key];
8850
- } else {
9197
+ } else if (isKeyframedStatus(codeValueStatus)) {
9198
+ if (field?.type === "array" || field?.keyframable === false) {
8851
9199
  value = currentValue[key];
9200
+ } else {
9201
+ const dragOverride = resolveDragOverrideValue({
9202
+ dragOverrideValue: overrideValues[key],
9203
+ frame
9204
+ });
9205
+ if (dragOverride.type === "resolved") {
9206
+ value = dragOverride.value;
9207
+ } else if (frame !== null) {
9208
+ const interpolated = interpolateKeyframedStatus({
9209
+ frame,
9210
+ status: codeValueStatus
9211
+ });
9212
+ value = interpolated ?? currentValue[key];
9213
+ } else {
9214
+ value = currentValue[key];
9215
+ }
8852
9216
  }
9217
+ } else if (codeValueStatus.status === "computed") {
9218
+ value = currentValue[key];
8853
9219
  } else {
8854
9220
  value = getEffectiveVisualModeValue({
8855
9221
  codeValue: codeValueStatus,
8856
9222
  dragOverrideValue: overrideValues[key],
8857
9223
  defaultValue: field?.default,
9224
+ frame,
8858
9225
  shouldResortToDefaultValueIfUndefined: false
8859
9226
  });
8860
9227
  }
@@ -8927,13 +9294,17 @@ var mergeValues = ({
8927
9294
  return merged;
8928
9295
  };
8929
9296
  var stackToOverrideMap = {};
8930
- var wrapInSchema = (Component, schema) => {
9297
+ var wrapInSchema = ({
9298
+ Component,
9299
+ schema,
9300
+ supportsEffects
9301
+ }) => {
8931
9302
  const flatSchema = getFlatSchemaWithAllKeys(schema);
8932
9303
  const flatKeys = Object.keys(flatSchema);
8933
9304
  const Wrapped = forwardRef2((props, ref) => {
8934
9305
  const env = useRemotionEnvironment();
8935
9306
  if (!env.isStudio || env.isReadOnlyStudio || env.isRendering) {
8936
- return React12.createElement(Component, {
9307
+ return React13.createElement(Component, {
8937
9308
  ...props,
8938
9309
  _experimentalControls: null,
8939
9310
  ref
@@ -8944,7 +9315,7 @@ var wrapInSchema = (Component, schema) => {
8944
9315
  const nodePathMapping = useContext16(OverrideIdsToNodePathsGettersContext);
8945
9316
  const frame = useCurrentFrame();
8946
9317
  if (props._experimentalControls) {
8947
- return React12.createElement(Component, {
9318
+ return React13.createElement(Component, {
8948
9319
  ...props,
8949
9320
  ref
8950
9321
  });
@@ -8969,7 +9340,8 @@ var wrapInSchema = (Component, schema) => {
8969
9340
  return {
8970
9341
  schema,
8971
9342
  currentRuntimeValueDotNotation,
8972
- overrideId
9343
+ overrideId,
9344
+ supportsEffects
8973
9345
  };
8974
9346
  }, [currentRuntimeValueDotNotation, overrideId]);
8975
9347
  const { merged: valuesDotNotation, propsToDelete } = useMemo13(() => {
@@ -8994,7 +9366,7 @@ var wrapInSchema = (Component, schema) => {
8994
9366
  schemaKeys: activeKeys,
8995
9367
  propsToDelete
8996
9368
  });
8997
- return React12.createElement(Component, {
9369
+ return React13.createElement(Component, {
8998
9370
  ...mergedProps,
8999
9371
  _experimentalControls: controls,
9000
9372
  ref
@@ -9003,6 +9375,7 @@ var wrapInSchema = (Component, schema) => {
9003
9375
  Wrapped.displayName = `wrapInSchema(${Component.displayName || Component.name || "Component"})`;
9004
9376
  return Wrapped;
9005
9377
  };
9378
+ var EMPTY_EFFECTS = [];
9006
9379
  var RegularSequenceRefForwardingFunction = ({
9007
9380
  from = 0,
9008
9381
  durationInFrames = Infinity,
@@ -9097,6 +9470,7 @@ var RegularSequenceRefForwardingFunction = ({
9097
9470
  }, [name]);
9098
9471
  const resolvedDocumentationLink = documentationLink ?? (name === undefined ? "https://www.remotion.dev/docs/sequence" : null);
9099
9472
  const env = useRemotionEnvironment();
9473
+ const isInsideSeries = useContext17(IsInsideSeriesContext);
9100
9474
  const inheritedStack = other?.stack ?? null;
9101
9475
  const stackRef = useRef6(null);
9102
9476
  stackRef.current = stack ?? inheritedStack;
@@ -9109,7 +9483,7 @@ var RegularSequenceRefForwardingFunction = ({
9109
9483
  registerSequence({
9110
9484
  type: "image",
9111
9485
  controls: controls ?? null,
9112
- effects: _remotionInternalEffects ?? [],
9486
+ effects: _remotionInternalEffects ?? EMPTY_EFFECTS,
9113
9487
  displayName: timelineClipName,
9114
9488
  documentationLink: resolvedDocumentationLink,
9115
9489
  duration: actualDurationInFrames,
@@ -9124,13 +9498,14 @@ var RegularSequenceRefForwardingFunction = ({
9124
9498
  showInTimeline,
9125
9499
  src: isMedia.src,
9126
9500
  getStack: () => stackRef.current,
9127
- refForOutline: refForOutline ?? null
9501
+ refForOutline: refForOutline ?? null,
9502
+ isInsideSeries
9128
9503
  });
9129
9504
  } else {
9130
9505
  registerSequence({
9131
9506
  type: isMedia.type,
9132
9507
  controls: controls ?? null,
9133
- effects: _remotionInternalEffects ?? [],
9508
+ effects: _remotionInternalEffects ?? EMPTY_EFFECTS,
9134
9509
  displayName: timelineClipName,
9135
9510
  documentationLink: resolvedDocumentationLink,
9136
9511
  doesVolumeChange: isMedia.data.doesVolumeChange,
@@ -9149,7 +9524,8 @@ var RegularSequenceRefForwardingFunction = ({
9149
9524
  getStack: () => stackRef.current,
9150
9525
  startMediaFrom: isMedia.data.startMediaFrom,
9151
9526
  volume: isMedia.data.volumes,
9152
- refForOutline: refForOutline ?? null
9527
+ refForOutline: refForOutline ?? null,
9528
+ isInsideSeries
9153
9529
  });
9154
9530
  }
9155
9531
  return () => {
@@ -9172,8 +9548,9 @@ var RegularSequenceRefForwardingFunction = ({
9172
9548
  premountDisplay: premountDisplay ?? null,
9173
9549
  postmountDisplay: postmountDisplay ?? null,
9174
9550
  controls: controls ?? null,
9175
- effects: _remotionInternalEffects ?? [],
9176
- refForOutline: refForOutline ?? null
9551
+ effects: _remotionInternalEffects ?? EMPTY_EFFECTS,
9552
+ refForOutline: refForOutline ?? null,
9553
+ isInsideSeries
9177
9554
  });
9178
9555
  return () => {
9179
9556
  unregisterSequence(id);
@@ -9199,7 +9576,8 @@ var RegularSequenceRefForwardingFunction = ({
9199
9576
  _remotionInternalEffects,
9200
9577
  isMedia,
9201
9578
  resolvedDocumentationLink,
9202
- refForOutline
9579
+ refForOutline,
9580
+ isInsideSeries
9203
9581
  ]);
9204
9582
  const endThreshold = Math.ceil(cumulatedFrom + from + durationInFrames - 1);
9205
9583
  const content = absoluteFrame < cumulatedFrom + from ? null : absoluteFrame > endThreshold ? null : children;
@@ -9218,9 +9596,9 @@ var RegularSequenceRefForwardingFunction = ({
9218
9596
  if (hidden) {
9219
9597
  return null;
9220
9598
  }
9221
- return /* @__PURE__ */ jsx112(SequenceContext.Provider, {
9599
+ return /* @__PURE__ */ jsx12(SequenceContext.Provider, {
9222
9600
  value: contextValue,
9223
- children: content === null ? null : other.layout === "none" ? content : /* @__PURE__ */ jsx112(AbsoluteFill, {
9601
+ children: content === null ? null : other.layout === "none" ? content : /* @__PURE__ */ jsx12(AbsoluteFill, {
9224
9602
  ref,
9225
9603
  style: defaultStyle,
9226
9604
  className: other.className,
@@ -9265,10 +9643,10 @@ var PremountedPostmountedSequenceRefForwardingFunction = (props, ref) => {
9265
9643
  styleWhilePremounted,
9266
9644
  styleWhilePostmounted
9267
9645
  ]);
9268
- return /* @__PURE__ */ jsx112(Freeze, {
9646
+ return /* @__PURE__ */ jsx12(Freeze, {
9269
9647
  frame: freezeFrame,
9270
9648
  active: isFreezingActive,
9271
- children: /* @__PURE__ */ jsx112(SequenceInner, {
9649
+ children: /* @__PURE__ */ jsx12(SequenceInner, {
9272
9650
  ref,
9273
9651
  from,
9274
9652
  durationInFrames,
@@ -9288,20 +9666,24 @@ var SequenceRefForwardingFunction = (props, ref) => {
9288
9666
  if (props.layout !== "none" && !env.isRendering) {
9289
9667
  const effectivePremountFor = ENABLE_V5_BREAKING_CHANGES ? props.premountFor ?? fps : props.premountFor;
9290
9668
  if (effectivePremountFor || props.postmountFor) {
9291
- return /* @__PURE__ */ jsx112(PremountedPostmountedSequence, {
9669
+ return /* @__PURE__ */ jsx12(PremountedPostmountedSequence, {
9292
9670
  ref,
9293
9671
  ...props,
9294
9672
  premountFor: effectivePremountFor
9295
9673
  });
9296
9674
  }
9297
9675
  }
9298
- return /* @__PURE__ */ jsx112(RegularSequence, {
9676
+ return /* @__PURE__ */ jsx12(RegularSequence, {
9299
9677
  ...props,
9300
9678
  ref
9301
9679
  });
9302
9680
  };
9303
9681
  var SequenceInner = forwardRef3(SequenceRefForwardingFunction);
9304
- var Sequence = wrapInSchema(SequenceInner, sequenceSchema);
9682
+ var Sequence = wrapInSchema({
9683
+ Component: SequenceInner,
9684
+ schema: sequenceSchema,
9685
+ supportsEffects: false
9686
+ });
9305
9687
  var calculateImageFit = (fit, imageSize, canvasSize) => {
9306
9688
  switch (fit) {
9307
9689
  case "fill": {
@@ -9668,13 +10050,13 @@ var CanvasRefForwardingFunction = ({ width, height, fit, className, style, effec
9668
10050
  }
9669
10051
  };
9670
10052
  }, [draw]);
9671
- return /* @__PURE__ */ jsx12("canvas", {
10053
+ return /* @__PURE__ */ jsx13("canvas", {
9672
10054
  ref: canvasRef,
9673
10055
  className,
9674
10056
  style
9675
10057
  });
9676
10058
  };
9677
- var Canvas = React14.forwardRef(CanvasRefForwardingFunction);
10059
+ var Canvas = React15.forwardRef(CanvasRefForwardingFunction);
9678
10060
  var CACHE_SIZE = 5;
9679
10061
  var getActualTime = ({
9680
10062
  loopBehavior,
@@ -9835,13 +10217,17 @@ var resolveAnimatedImageSource = (src) => {
9835
10217
  return new URL(src, window.origin).href;
9836
10218
  };
9837
10219
  var animatedImageSchema = {
10220
+ durationInFrames: durationInFramesField,
10221
+ from: fromField,
9838
10222
  playbackRate: {
9839
10223
  type: "number",
9840
10224
  min: 0,
9841
10225
  max: 10,
9842
10226
  step: 0.1,
9843
10227
  default: 1,
9844
- description: "Playback Rate"
10228
+ description: "Playback Rate",
10229
+ hiddenFromList: false,
10230
+ keyframable: false
9845
10231
  },
9846
10232
  ...sequenceVisualStyleSchema,
9847
10233
  hidden: hiddenField
@@ -9965,7 +10351,7 @@ var AnimatedImageContent = forwardRef4(({
9965
10351
  width,
9966
10352
  height
9967
10353
  ]);
9968
- return /* @__PURE__ */ jsx13(Canvas, {
10354
+ return /* @__PURE__ */ jsx14(Canvas, {
9969
10355
  ref,
9970
10356
  width,
9971
10357
  height,
@@ -10013,7 +10399,7 @@ var AnimatedImageInner = ({
10013
10399
  style,
10014
10400
  requestInit
10015
10401
  };
10016
- return /* @__PURE__ */ jsx13(Sequence, {
10402
+ return /* @__PURE__ */ jsx14(Sequence, {
10017
10403
  layout: "none",
10018
10404
  durationInFrames: resolvedDuration,
10019
10405
  name: "<AnimatedImage>",
@@ -10022,7 +10408,7 @@ var AnimatedImageInner = ({
10022
10408
  _remotionInternalEffects: memoizedEffectDefinitions,
10023
10409
  ...sequenceProps,
10024
10410
  _remotionInternalRefForOutline: actualRef,
10025
- children: /* @__PURE__ */ jsx13(AnimatedImageContent, {
10411
+ children: /* @__PURE__ */ jsx14(AnimatedImageContent, {
10026
10412
  ...animatedImageProps,
10027
10413
  ref: actualRef,
10028
10414
  effects,
@@ -10030,7 +10416,11 @@ var AnimatedImageInner = ({
10030
10416
  })
10031
10417
  });
10032
10418
  };
10033
- var AnimatedImage = wrapInSchema(AnimatedImageInner, animatedImageSchema);
10419
+ var AnimatedImage = wrapInSchema({
10420
+ Component: AnimatedImageInner,
10421
+ schema: animatedImageSchema,
10422
+ supportsEffects: true
10423
+ });
10034
10424
  AnimatedImage.displayName = "AnimatedImage";
10035
10425
  addSequenceStackTraces(AnimatedImage);
10036
10426
  var validateArtifactFilename = (filename) => {
@@ -10062,7 +10452,7 @@ var validateRenderAsset = (artifact) => {
10062
10452
  }
10063
10453
  validateContent(artifact.content);
10064
10454
  };
10065
- var RenderAssetManager = createContext16({
10455
+ var RenderAssetManager = createContext17({
10066
10456
  registerRenderAsset: () => {
10067
10457
  return;
10068
10458
  },
@@ -10112,7 +10502,7 @@ var RenderAssetManagerProvider = ({ children, collectAssets }) => {
10112
10502
  renderAssets
10113
10503
  };
10114
10504
  }, [renderAssets, registerRenderAsset, unregisterRenderAsset]);
10115
- return /* @__PURE__ */ jsx14(RenderAssetManager.Provider, {
10505
+ return /* @__PURE__ */ jsx15(RenderAssetManager.Provider, {
10116
10506
  value: contextValue,
10117
10507
  children
10118
10508
  });
@@ -10200,9 +10590,9 @@ var calculateMediaDuration = ({
10200
10590
  const actualDuration = duration / playbackRate;
10201
10591
  return Math.floor(actualDuration);
10202
10592
  };
10203
- var LoopContext = createContext17(null);
10593
+ var LoopContext = createContext18(null);
10204
10594
  var useLoop = () => {
10205
- return React15.useContext(LoopContext);
10595
+ return React16.useContext(LoopContext);
10206
10596
  };
10207
10597
  var Loop = ({
10208
10598
  durationInFrames,
@@ -10247,9 +10637,9 @@ var Loop = ({
10247
10637
  durationInFrames
10248
10638
  };
10249
10639
  }, [currentFrame, durationInFrames]);
10250
- return /* @__PURE__ */ jsx15(LoopContext.Provider, {
10640
+ return /* @__PURE__ */ jsx16(LoopContext.Provider, {
10251
10641
  value: loopContext,
10252
- children: /* @__PURE__ */ jsx15(Sequence, {
10642
+ children: /* @__PURE__ */ jsx16(Sequence, {
10253
10643
  durationInFrames,
10254
10644
  from,
10255
10645
  name: name ?? "<Loop>",
@@ -10272,7 +10662,7 @@ var playbackLogging = ({
10272
10662
  const tags = [mountTime ? Date.now() - mountTime + "ms " : null, tag].filter(Boolean).join(" ");
10273
10663
  Log.trace({ logLevel, tag: null }, `[${tags}]`, message);
10274
10664
  };
10275
- var PreloadContext = createContext18({});
10665
+ var PreloadContext = createContext19({});
10276
10666
  var preloads = {};
10277
10667
  var updaters = [];
10278
10668
  var setPreloads = (updater) => {
@@ -10290,7 +10680,7 @@ var PrefetchProvider = ({ children }) => {
10290
10680
  updaters = updaters.filter((u) => u !== updaterFunction);
10291
10681
  };
10292
10682
  }, []);
10293
- return /* @__PURE__ */ jsx16(PreloadContext.Provider, {
10683
+ return /* @__PURE__ */ jsx17(PreloadContext.Provider, {
10294
10684
  value: _preloads,
10295
10685
  children
10296
10686
  });
@@ -10596,7 +10986,7 @@ var durationReducer = (state, action) => {
10596
10986
  return state;
10597
10987
  }
10598
10988
  };
10599
- var DurationsContext = createContext19({
10989
+ var DurationsContext = createContext20({
10600
10990
  durations: {},
10601
10991
  setDurations: () => {
10602
10992
  throw new Error("context missing");
@@ -10610,7 +11000,7 @@ var DurationsContextProvider = ({ children }) => {
10610
11000
  setDurations
10611
11001
  };
10612
11002
  }, [durations]);
10613
- return /* @__PURE__ */ jsx17(DurationsContext.Provider, {
11003
+ return /* @__PURE__ */ jsx18(DurationsContext.Provider, {
10614
11004
  value,
10615
11005
  children
10616
11006
  });
@@ -10849,8 +11239,8 @@ var didPropChange = (key, newProp, prevProp) => {
10849
11239
  }
10850
11240
  return true;
10851
11241
  };
10852
- var SharedAudioContext = createContext20(null);
10853
- var SharedAudioTagsContext = createContext20(null);
11242
+ var SharedAudioContext = createContext21(null);
11243
+ var SharedAudioTagsContext = createContext21(null);
10854
11244
  var shouldSaveForLater = (state) => {
10855
11245
  if (state === "suspended" || state === "running-to-suspended" || state === "interrupted") {
10856
11246
  return true;
@@ -11013,7 +11403,7 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled, pr
11013
11403
  getIsResumingAudioContext,
11014
11404
  unscheduleAudioNode
11015
11405
  ]);
11016
- return /* @__PURE__ */ jsx18(SharedAudioContext.Provider, {
11406
+ return /* @__PURE__ */ jsx19(SharedAudioContext.Provider, {
11017
11407
  value: audioContextValue,
11018
11408
  children
11019
11409
  });
@@ -11043,7 +11433,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
11043
11433
  };
11044
11434
  });
11045
11435
  }, [audioContext, numberOfAudioTags]);
11046
- const effectToUse = React18.useInsertionEffect ?? React18.useLayoutEffect;
11436
+ const effectToUse = React19.useInsertionEffect ?? React19.useLayoutEffect;
11047
11437
  effectToUse(() => {
11048
11438
  return () => {
11049
11439
  requestAnimationFrame(() => {
@@ -11186,7 +11576,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
11186
11576
  value: audioTagsValue,
11187
11577
  children: [
11188
11578
  refs.map(({ id, ref }) => {
11189
- return /* @__PURE__ */ jsx18("audio", {
11579
+ return /* @__PURE__ */ jsx19("audio", {
11190
11580
  ref,
11191
11581
  preload: "metadata",
11192
11582
  src: EMPTY_AUDIO
@@ -11208,7 +11598,7 @@ var useSharedAudio = ({
11208
11598
  if (tagsCtx && tagsCtx.numberOfAudioTags > 0) {
11209
11599
  return tagsCtx.registerAudio({ aud, audioId, premounting, postmounting });
11210
11600
  }
11211
- const el = React18.createRef();
11601
+ const el = React19.createRef();
11212
11602
  const mediaElementSourceNode = audioCtx?.audioContext ? makeSharedElementSourceNode({
11213
11603
  audioContext: audioCtx.audioContext,
11214
11604
  ref: el
@@ -11227,7 +11617,7 @@ var useSharedAudio = ({
11227
11617
  }
11228
11618
  };
11229
11619
  });
11230
- const effectToUse = React18.useInsertionEffect ?? React18.useLayoutEffect;
11620
+ const effectToUse = React19.useInsertionEffect ?? React19.useLayoutEffect;
11231
11621
  if (typeof document !== "undefined") {
11232
11622
  effectToUse(() => {
11233
11623
  if (tagsCtx && tagsCtx.numberOfAudioTags > 0) {
@@ -11659,7 +12049,8 @@ var useMediaInTimeline = ({
11659
12049
  postmountDisplay,
11660
12050
  controls: null,
11661
12051
  effects: [],
11662
- refForOutline
12052
+ refForOutline,
12053
+ isInsideSeries: false
11663
12054
  });
11664
12055
  return () => {
11665
12056
  unregisterSequence(id);
@@ -11772,11 +12163,11 @@ var useBufferManager = (logLevel, mountTime) => {
11772
12163
  return { addBlock, listenForBuffering, listenForResume, buffering };
11773
12164
  }, [addBlock, buffering, listenForBuffering, listenForResume]);
11774
12165
  };
11775
- var BufferingContextReact = React19.createContext(null);
12166
+ var BufferingContextReact = React20.createContext(null);
11776
12167
  var BufferingProvider = ({ children }) => {
11777
12168
  const { logLevel, mountTime } = useContext24(LogLevelContext);
11778
12169
  const bufferManager = useBufferManager(logLevel ?? "info", mountTime);
11779
- return /* @__PURE__ */ jsx19(BufferingContextReact.Provider, {
12170
+ return /* @__PURE__ */ jsx20(BufferingContextReact.Provider, {
11780
12171
  value: bufferManager,
11781
12172
  children
11782
12173
  });
@@ -11923,7 +12314,7 @@ var useBufferUntilFirstFrame = ({
11923
12314
  }, [bufferUntilFirstFrame]);
11924
12315
  };
11925
12316
  var useCurrentTimeOfMediaTagWithUpdateTimeStamp = (mediaRef) => {
11926
- const lastUpdate = React20.useRef({
12317
+ const lastUpdate = React21.useRef({
11927
12318
  time: mediaRef.current?.currentTime ?? 0,
11928
12319
  lastUpdate: performance.now()
11929
12320
  });
@@ -12501,11 +12892,11 @@ var useMediaTag = ({
12501
12892
  env.isPlayer
12502
12893
  ]);
12503
12894
  };
12504
- var MediaVolumeContext = createContext21({
12895
+ var MediaVolumeContext = createContext22({
12505
12896
  mediaMuted: false,
12506
12897
  mediaVolume: 1
12507
12898
  });
12508
- var SetMediaVolumeContext = createContext21({
12899
+ var SetMediaVolumeContext = createContext22({
12509
12900
  setMediaMuted: () => {
12510
12901
  throw new Error("default");
12511
12902
  },
@@ -12672,7 +13063,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
12672
13063
  volume: userPreferredVolume,
12673
13064
  shouldUseWebAudioApi: useWebAudioApi ?? false
12674
13065
  });
12675
- const effectToUse = React21.useInsertionEffect ?? React21.useLayoutEffect;
13066
+ const effectToUse = React22.useInsertionEffect ?? React22.useLayoutEffect;
12676
13067
  effectToUse(() => {
12677
13068
  return () => {
12678
13069
  requestAnimationFrame(() => {
@@ -12705,7 +13096,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
12705
13096
  if (initialShouldPreMountAudioElements) {
12706
13097
  return null;
12707
13098
  }
12708
- return /* @__PURE__ */ jsx20("audio", {
13099
+ return /* @__PURE__ */ jsx21("audio", {
12709
13100
  ref: audioRef,
12710
13101
  preload: "metadata",
12711
13102
  crossOrigin: crossOriginValue,
@@ -12839,7 +13230,7 @@ var AudioForRenderingRefForwardingFunction = (props, ref) => {
12839
13230
  if (!needsToRenderAudioTag) {
12840
13231
  return null;
12841
13232
  }
12842
- return /* @__PURE__ */ jsx21("audio", {
13233
+ return /* @__PURE__ */ jsx222("audio", {
12843
13234
  ref: audioRef,
12844
13235
  ...nativeProps,
12845
13236
  onError: onNativeError
@@ -12898,14 +13289,14 @@ var AudioRefForwardingFunction = (props, ref) => {
12898
13289
  });
12899
13290
  if (loop && durationFetched !== undefined) {
12900
13291
  if (!Number.isFinite(durationFetched)) {
12901
- return /* @__PURE__ */ jsx222(Html5Audio, {
13292
+ return /* @__PURE__ */ jsx23(Html5Audio, {
12902
13293
  ...propsOtherThanLoop,
12903
13294
  ref,
12904
13295
  _remotionInternalNativeLoopPassed: true
12905
13296
  });
12906
13297
  }
12907
13298
  const duration = durationFetched * fps;
12908
- return /* @__PURE__ */ jsx222(Loop, {
13299
+ return /* @__PURE__ */ jsx23(Loop, {
12909
13300
  layout: "none",
12910
13301
  durationInFrames: calculateMediaDuration({
12911
13302
  trimAfter: trimAfterValue,
@@ -12913,7 +13304,7 @@ var AudioRefForwardingFunction = (props, ref) => {
12913
13304
  playbackRate: props.playbackRate ?? 1,
12914
13305
  trimBefore: trimBeforeValue
12915
13306
  }),
12916
- children: /* @__PURE__ */ jsx222(Html5Audio, {
13307
+ children: /* @__PURE__ */ jsx23(Html5Audio, {
12917
13308
  ...propsOtherThanLoop,
12918
13309
  ref,
12919
13310
  _remotionInternalNativeLoopPassed: true
@@ -12921,13 +13312,13 @@ var AudioRefForwardingFunction = (props, ref) => {
12921
13312
  });
12922
13313
  }
12923
13314
  if (typeof trimBeforeValue !== "undefined" || typeof trimAfterValue !== "undefined") {
12924
- return /* @__PURE__ */ jsx222(Sequence, {
13315
+ return /* @__PURE__ */ jsx23(Sequence, {
12925
13316
  layout: "none",
12926
13317
  from: 0 - (trimBeforeValue ?? 0),
12927
13318
  showInTimeline: false,
12928
13319
  durationInFrames: trimAfterValue,
12929
13320
  name,
12930
- children: /* @__PURE__ */ jsx222(Html5Audio, {
13321
+ children: /* @__PURE__ */ jsx23(Html5Audio, {
12931
13322
  _remotionInternalNeedsDurationCalculation: Boolean(loop),
12932
13323
  pauseWhenBuffering: pauseWhenBuffering ?? false,
12933
13324
  ...otherProps,
@@ -12941,7 +13332,7 @@ var AudioRefForwardingFunction = (props, ref) => {
12941
13332
  volume: props.volume
12942
13333
  }, "Html5Audio");
12943
13334
  if (environment.isRendering) {
12944
- return /* @__PURE__ */ jsx222(AudioForRendering, {
13335
+ return /* @__PURE__ */ jsx23(AudioForRendering, {
12945
13336
  onDuration,
12946
13337
  ...props,
12947
13338
  ref,
@@ -12949,7 +13340,7 @@ var AudioRefForwardingFunction = (props, ref) => {
12949
13340
  _remotionInternalNeedsDurationCalculation: Boolean(loop)
12950
13341
  });
12951
13342
  }
12952
- return /* @__PURE__ */ jsx222(AudioForPreview, {
13343
+ return /* @__PURE__ */ jsx23(AudioForPreview, {
12953
13344
  _remotionInternalNativeLoopPassed: props._remotionInternalNativeLoopPassed ?? false,
12954
13345
  _remotionInternalStack: stack ?? null,
12955
13346
  shouldPreMountAudioTags: audioTagsContext !== null && audioTagsContext.numberOfAudioTags > 0,
@@ -12965,7 +13356,18 @@ var AudioRefForwardingFunction = (props, ref) => {
12965
13356
  var Html5Audio = forwardRef7(AudioRefForwardingFunction);
12966
13357
  addSequenceStackTraces(Html5Audio);
12967
13358
  var Audio = Html5Audio;
13359
+ var resolveSolidPixelDensity = (pixelDensity) => {
13360
+ if (pixelDensity === undefined) {
13361
+ return 1;
13362
+ }
13363
+ if (typeof pixelDensity !== "number" || !Number.isFinite(pixelDensity) || pixelDensity <= 0) {
13364
+ throw new Error(`<Solid>: \`pixelDensity\` must be a positive finite number. Received: ${String(pixelDensity)}.`);
13365
+ }
13366
+ return pixelDensity;
13367
+ };
12968
13368
  var solidSchema = {
13369
+ durationInFrames: durationInFramesField,
13370
+ from: fromField,
12969
13371
  color: {
12970
13372
  type: "color",
12971
13373
  default: "transparent",
@@ -12976,14 +13378,16 @@ var solidSchema = {
12976
13378
  min: 1,
12977
13379
  step: 1,
12978
13380
  default: 1920,
12979
- description: "Width"
13381
+ description: "Width",
13382
+ hiddenFromList: false
12980
13383
  },
12981
13384
  height: {
12982
13385
  type: "number",
12983
13386
  min: 1,
12984
13387
  step: 1,
12985
13388
  default: 1080,
12986
- description: "Height"
13389
+ description: "Height",
13390
+ hiddenFromList: false
12987
13391
  },
12988
13392
  ...sequenceVisualStyleSchema,
12989
13393
  hidden: hiddenField
@@ -12995,10 +13399,14 @@ var SolidInner = ({
12995
13399
  effects = [],
12996
13400
  className,
12997
13401
  style,
13402
+ pixelDensity,
12998
13403
  overrideId,
12999
13404
  reference
13000
13405
  }) => {
13001
13406
  const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
13407
+ const resolvedPixelDensity = resolveSolidPixelDensity(pixelDensity);
13408
+ const canvasWidth = Math.ceil(width * resolvedPixelDensity);
13409
+ const canvasHeight = Math.ceil(height * resolvedPixelDensity);
13002
13410
  const [outputCanvas, setOutputCanvas] = useState15(null);
13003
13411
  const memoizedEffects = useMemoizedEffects({
13004
13412
  effects,
@@ -13044,12 +13452,12 @@ var SolidInner = ({
13044
13452
  ctx.fillRect(0, 0, 1, 1);
13045
13453
  }
13046
13454
  runEffectChain({
13047
- state: chainState.get(width, height),
13455
+ state: chainState.get(canvasWidth, canvasHeight),
13048
13456
  source: sourceCanvas,
13049
13457
  effects: memoizedEffects,
13050
13458
  output: outputCanvas,
13051
- width,
13052
- height
13459
+ width: canvasWidth,
13460
+ height: canvasHeight
13053
13461
  }).then((completed) => {
13054
13462
  if (completed) {
13055
13463
  continueRender2(handle);
@@ -13065,19 +13473,26 @@ var SolidInner = ({
13065
13473
  outputCanvas,
13066
13474
  sourceCanvas,
13067
13475
  chainState,
13068
- width,
13069
- height,
13476
+ canvasWidth,
13477
+ canvasHeight,
13070
13478
  delayRender2,
13071
13479
  continueRender2,
13072
13480
  cancelRender2,
13073
13481
  memoizedEffects
13074
13482
  ]);
13075
- return /* @__PURE__ */ jsx23("canvas", {
13483
+ const canvasStyle = useMemo29(() => {
13484
+ return {
13485
+ width,
13486
+ height,
13487
+ ...style ?? {}
13488
+ };
13489
+ }, [height, style, width]);
13490
+ return /* @__PURE__ */ jsx24("canvas", {
13076
13491
  ref: canvasRef,
13077
- width,
13078
- height,
13492
+ width: canvasWidth,
13493
+ height: canvasHeight,
13079
13494
  className,
13080
- style
13495
+ style: canvasStyle
13081
13496
  });
13082
13497
  };
13083
13498
  var SolidOuter = forwardRef8(({
@@ -13093,6 +13508,7 @@ var SolidOuter = forwardRef8(({
13093
13508
  from,
13094
13509
  hidden,
13095
13510
  showInTimeline,
13511
+ pixelDensity,
13096
13512
  ...props2
13097
13513
  }, ref) => {
13098
13514
  const memoizedEffectDefinitions = useMemoizedEffectDefinitions(effects);
@@ -13100,7 +13516,7 @@ var SolidOuter = forwardRef8(({
13100
13516
  useImperativeHandle6(ref, () => {
13101
13517
  return actualRef.current;
13102
13518
  }, []);
13103
- return /* @__PURE__ */ jsx23(Sequence, {
13519
+ return /* @__PURE__ */ jsx24(Sequence, {
13104
13520
  layout: "none",
13105
13521
  from,
13106
13522
  hidden,
@@ -13112,7 +13528,7 @@ var SolidOuter = forwardRef8(({
13112
13528
  _remotionInternalRefForOutline: actualRef,
13113
13529
  _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/solid" : undefined,
13114
13530
  ...props2,
13115
- children: /* @__PURE__ */ jsx23(SolidInner, {
13531
+ children: /* @__PURE__ */ jsx24(SolidInner, {
13116
13532
  reference: actualRef,
13117
13533
  overrideId: controls?.overrideId ?? null,
13118
13534
  color,
@@ -13120,11 +13536,16 @@ var SolidOuter = forwardRef8(({
13120
13536
  width,
13121
13537
  className,
13122
13538
  style,
13123
- effects
13539
+ effects,
13540
+ pixelDensity
13124
13541
  })
13125
13542
  });
13126
13543
  });
13127
- var Solid = wrapInSchema(SolidOuter, solidSchema);
13544
+ var Solid = wrapInSchema({
13545
+ Component: SolidOuter,
13546
+ schema: solidSchema,
13547
+ supportsEffects: true
13548
+ });
13128
13549
  Solid.displayName = "Solid";
13129
13550
  addSequenceStackTraces(Solid);
13130
13551
  var cachedSupport = null;
@@ -13152,6 +13573,27 @@ function assertHtmlInCanvasDimensions(width, height) {
13152
13573
  throw new Error(`HtmlInCanvas: \`height\` must be a positive integer. Received: ${String(height)}.`);
13153
13574
  }
13154
13575
  }
13576
+ function resolveHtmlInCanvasPixelDensity(pixelDensity) {
13577
+ if (pixelDensity === undefined) {
13578
+ return 1;
13579
+ }
13580
+ if (typeof pixelDensity !== "number" || !Number.isFinite(pixelDensity) || pixelDensity <= 0) {
13581
+ throw new Error(`HtmlInCanvas: \`pixelDensity\` must be a positive finite number. Received: ${String(pixelDensity)}.`);
13582
+ }
13583
+ return pixelDensity;
13584
+ }
13585
+ var resizeOffscreenCanvas = ({
13586
+ offscreen,
13587
+ width,
13588
+ height
13589
+ }) => {
13590
+ if (offscreen.width !== width) {
13591
+ offscreen.width = width;
13592
+ }
13593
+ if (offscreen.height !== height) {
13594
+ offscreen.height = height;
13595
+ }
13596
+ };
13155
13597
  var defaultOnPaint = ({
13156
13598
  canvas,
13157
13599
  element,
@@ -13165,10 +13607,23 @@ var defaultOnPaint = ({
13165
13607
  const transform = ctx.drawElementImage(elementImage, 0, 0);
13166
13608
  element.style.transform = transform.toString();
13167
13609
  };
13168
- var HtmlInCanvasAncestorContext = createContext22(false);
13169
- var HtmlInCanvasContent = forwardRef9(({ width, height, effects, children, onPaint, onInit, controls, style }, ref) => {
13610
+ var HtmlInCanvasAncestorContext = createContext23(false);
13611
+ var HtmlInCanvasContent = forwardRef9(({
13612
+ width,
13613
+ height,
13614
+ effects,
13615
+ children,
13616
+ onPaint,
13617
+ onInit,
13618
+ pixelDensity,
13619
+ controls,
13620
+ style
13621
+ }, ref) => {
13170
13622
  const isInsideAncestorHtmlInCanvas = useContext31(HtmlInCanvasAncestorContext);
13171
13623
  assertHtmlInCanvasDimensions(width, height);
13624
+ const resolvedPixelDensity = resolveHtmlInCanvasPixelDensity(pixelDensity);
13625
+ const canvasWidth = Math.ceil(width * resolvedPixelDensity);
13626
+ const canvasHeight = Math.ceil(height * resolvedPixelDensity);
13172
13627
  const { continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
13173
13628
  if (!isHtmlInCanvasSupported()) {
13174
13629
  cancelRender2(new Error(HTML_IN_CANVAS_UNSUPPORTED_MESSAGE));
@@ -13176,7 +13631,7 @@ var HtmlInCanvasContent = forwardRef9(({ width, height, effects, children, onPai
13176
13631
  const canvas2dRef = useRef22(null);
13177
13632
  const offscreenRef = useRef22(null);
13178
13633
  const divRef = useRef22(null);
13179
- const canvasSizeKey = `${width}x${height}`;
13634
+ const canvasSizeKey = `${width}x${height}@${resolvedPixelDensity}`;
13180
13635
  const setLayoutCanvasRef = useCallback15((node) => {
13181
13636
  canvas2dRef.current = node;
13182
13637
  if (typeof ref === "function") {
@@ -13208,8 +13663,11 @@ var HtmlInCanvasContent = forwardRef9(({ width, height, effects, children, onPai
13208
13663
  if (!offscreen) {
13209
13664
  throw new Error("HtmlInCanvas: offscreen canvas not ready (transferControlToOffscreen failed or canvas is remounting)");
13210
13665
  }
13211
- offscreen.width = width;
13212
- offscreen.height = height;
13666
+ resizeOffscreenCanvas({
13667
+ offscreen,
13668
+ width: canvasWidth,
13669
+ height: canvasHeight
13670
+ });
13213
13671
  try {
13214
13672
  const placeholderCanvas = canvas2dRef.current;
13215
13673
  if (!placeholderCanvas) {
@@ -13228,7 +13686,8 @@ var HtmlInCanvasContent = forwardRef9(({ width, height, effects, children, onPai
13228
13686
  const cleanup = await currentOnInit({
13229
13687
  canvas: offscreen,
13230
13688
  element,
13231
- elementImage: initImage
13689
+ elementImage: initImage,
13690
+ pixelDensity: resolvedPixelDensity
13232
13691
  });
13233
13692
  if (typeof cleanup !== "function") {
13234
13693
  throw new Error("HtmlInCanvas: when `onInit` is provided, it must return a cleanup function, or a Promise that resolves to one.");
@@ -13245,21 +13704,29 @@ var HtmlInCanvasContent = forwardRef9(({ width, height, effects, children, onPai
13245
13704
  await handler({
13246
13705
  canvas: offscreen,
13247
13706
  element,
13248
- elementImage: elImage
13707
+ elementImage: elImage,
13708
+ pixelDensity: resolvedPixelDensity
13249
13709
  });
13250
13710
  await runEffectChain({
13251
- state: chainState.get(width, height),
13711
+ state: chainState.get(canvasWidth, canvasHeight),
13252
13712
  source: offscreen,
13253
13713
  effects: effectsRef.current,
13254
13714
  output: offscreen,
13255
- width,
13256
- height
13715
+ width: canvasWidth,
13716
+ height: canvasHeight
13257
13717
  });
13258
13718
  continueRender2(handle);
13259
13719
  } catch (error2) {
13260
13720
  cancelRender2(error2);
13261
13721
  }
13262
- }, [chainState, continueRender2, cancelRender2, width, height]);
13722
+ }, [
13723
+ canvasHeight,
13724
+ canvasWidth,
13725
+ chainState,
13726
+ continueRender2,
13727
+ cancelRender2,
13728
+ resolvedPixelDensity
13729
+ ]);
13263
13730
  useLayoutEffect9(() => {
13264
13731
  const placeholder = canvas2dRef.current;
13265
13732
  if (!placeholder) {
@@ -13268,8 +13735,11 @@ var HtmlInCanvasContent = forwardRef9(({ width, height, effects, children, onPai
13268
13735
  placeholder.layoutSubtree = true;
13269
13736
  const offscreen = placeholder.transferControlToOffscreen();
13270
13737
  offscreenRef.current = offscreen;
13271
- offscreen.width = width;
13272
- offscreen.height = height;
13738
+ resizeOffscreenCanvas({
13739
+ offscreen,
13740
+ width: canvasWidth,
13741
+ height: canvasHeight
13742
+ });
13273
13743
  initializedRef.current = false;
13274
13744
  unmountedRef.current = false;
13275
13745
  placeholder.addEventListener("paint", onPaintCb);
@@ -13281,7 +13751,7 @@ var HtmlInCanvasContent = forwardRef9(({ width, height, effects, children, onPai
13281
13751
  onInitCleanupRef.current?.();
13282
13752
  onInitCleanupRef.current = null;
13283
13753
  };
13284
- }, [onPaintCb, cancelRender2, width, height]);
13754
+ }, [onPaintCb, cancelRender2, canvasWidth, canvasHeight]);
13285
13755
  const onPaintChangedRef = useRef22(false);
13286
13756
  useLayoutEffect9(() => {
13287
13757
  if (!onPaintChangedRef.current) {
@@ -13313,17 +13783,24 @@ var HtmlInCanvasContent = forwardRef9(({ width, height, effects, children, onPai
13313
13783
  height
13314
13784
  };
13315
13785
  }, [width, height]);
13786
+ const canvasStyle = useMemo30(() => {
13787
+ return {
13788
+ width,
13789
+ height,
13790
+ ...style ?? {}
13791
+ };
13792
+ }, [height, style, width]);
13316
13793
  if (isInsideAncestorHtmlInCanvas) {
13317
13794
  throw new Error("<HtmlInCanvas> effects cannot be nested together. Chrome will only display the outer effect. Consider merging the effects into one if you can.");
13318
13795
  }
13319
- return /* @__PURE__ */ jsx24(HtmlInCanvasAncestorContext.Provider, {
13796
+ return /* @__PURE__ */ jsx25(HtmlInCanvasAncestorContext.Provider, {
13320
13797
  value: true,
13321
- children: /* @__PURE__ */ jsx24("canvas", {
13798
+ children: /* @__PURE__ */ jsx25("canvas", {
13322
13799
  ref: setLayoutCanvasRef,
13323
- width,
13324
- height,
13325
- style,
13326
- children: /* @__PURE__ */ jsx24("div", {
13800
+ width: canvasWidth,
13801
+ height: canvasHeight,
13802
+ style: canvasStyle,
13803
+ children: /* @__PURE__ */ jsx25("div", {
13327
13804
  ref: divRef,
13328
13805
  style: innerStyle,
13329
13806
  children
@@ -13339,6 +13816,7 @@ var HtmlInCanvasInner = forwardRef9(({
13339
13816
  children,
13340
13817
  onPaint,
13341
13818
  onInit,
13819
+ pixelDensity,
13342
13820
  _experimentalControls: controls,
13343
13821
  style,
13344
13822
  durationInFrames,
@@ -13357,7 +13835,7 @@ var HtmlInCanvasInner = forwardRef9(({
13357
13835
  ref.current = node;
13358
13836
  }
13359
13837
  }, [ref]);
13360
- return /* @__PURE__ */ jsx24(Sequence, {
13838
+ return /* @__PURE__ */ jsx25(Sequence, {
13361
13839
  durationInFrames: resolvedDuration,
13362
13840
  name: name ?? "<HtmlInCanvas>",
13363
13841
  _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/remotion/html-in-canvas" : undefined,
@@ -13366,13 +13844,14 @@ var HtmlInCanvasInner = forwardRef9(({
13366
13844
  _remotionInternalRefForOutline: actualRef,
13367
13845
  layout: "none",
13368
13846
  ...sequenceProps,
13369
- children: /* @__PURE__ */ jsx24(HtmlInCanvasContent, {
13847
+ children: /* @__PURE__ */ jsx25(HtmlInCanvasContent, {
13370
13848
  ref: setCanvasRef,
13371
13849
  width,
13372
13850
  height,
13373
13851
  effects,
13374
13852
  onPaint,
13375
13853
  onInit,
13854
+ pixelDensity,
13376
13855
  controls,
13377
13856
  style,
13378
13857
  children
@@ -13381,10 +13860,16 @@ var HtmlInCanvasInner = forwardRef9(({
13381
13860
  });
13382
13861
  HtmlInCanvasInner.displayName = "HtmlInCanvas";
13383
13862
  var htmlInCanvasSchema = {
13863
+ durationInFrames: durationInFramesField,
13864
+ from: fromField,
13384
13865
  ...sequenceVisualStyleSchema,
13385
13866
  hidden: hiddenField
13386
13867
  };
13387
- var HtmlInCanvasWrapped = wrapInSchema(HtmlInCanvasInner, htmlInCanvasSchema);
13868
+ var HtmlInCanvasWrapped = wrapInSchema({
13869
+ Component: HtmlInCanvasInner,
13870
+ schema: htmlInCanvasSchema,
13871
+ supportsEffects: true
13872
+ });
13388
13873
  var HtmlInCanvas = Object.assign(HtmlInCanvasWrapped, {
13389
13874
  isSupported: isHtmlInCanvasSupported
13390
13875
  });
@@ -13397,6 +13882,8 @@ function truncateSrcForLabel(src) {
13397
13882
  return src;
13398
13883
  }
13399
13884
  var canvasImageSchema = {
13885
+ durationInFrames: durationInFramesField,
13886
+ from: fromField,
13400
13887
  fit: {
13401
13888
  type: "enum",
13402
13889
  default: "fill",
@@ -13622,7 +14109,7 @@ var CanvasImageContent = forwardRef10(({
13622
14109
  sourceCanvas,
13623
14110
  width
13624
14111
  ]);
13625
- return /* @__PURE__ */ jsx25("canvas", {
14112
+ return /* @__PURE__ */ jsx26("canvas", {
13626
14113
  ...canvasProps,
13627
14114
  ref: canvasRef,
13628
14115
  width,
@@ -13666,7 +14153,7 @@ var CanvasImageInner = forwardRef10(({
13666
14153
  useImperativeHandle7(ref, () => {
13667
14154
  return actualRef.current;
13668
14155
  }, []);
13669
- return /* @__PURE__ */ jsx25(Sequence, {
14156
+ return /* @__PURE__ */ jsx26(Sequence, {
13670
14157
  layout: "none",
13671
14158
  from: from ?? 0,
13672
14159
  durationInFrames: durationInFrames ?? Infinity,
@@ -13679,7 +14166,7 @@ var CanvasImageInner = forwardRef10(({
13679
14166
  _remotionInternalIsMedia: { type: "image", src },
13680
14167
  _remotionInternalStack: stack,
13681
14168
  _remotionInternalRefForOutline: _remotionInternalRefForOutline ?? actualRef,
13682
- children: /* @__PURE__ */ jsx25(CanvasImageContent, {
14169
+ children: /* @__PURE__ */ jsx26(CanvasImageContent, {
13683
14170
  ref: actualRef,
13684
14171
  src,
13685
14172
  width,
@@ -13700,7 +14187,11 @@ var CanvasImageInner = forwardRef10(({
13700
14187
  })
13701
14188
  });
13702
14189
  });
13703
- var CanvasImage = wrapInSchema(CanvasImageInner, canvasImageSchema);
14190
+ var CanvasImage = wrapInSchema({
14191
+ Component: CanvasImageInner,
14192
+ schema: canvasImageSchema,
14193
+ supportsEffects: true
14194
+ });
13704
14195
  CanvasImage.displayName = "CanvasImage";
13705
14196
  addSequenceStackTraces(CanvasImage);
13706
14197
  var IFrameRefForwarding = ({
@@ -13727,7 +14218,7 @@ var IFrameRefForwarding = ({
13727
14218
  console.error("Error loading iframe:", e, "Handle the event using the onError() prop to make this message disappear.");
13728
14219
  }
13729
14220
  }, [handle, onError, continueRender2]);
13730
- return /* @__PURE__ */ jsx26("iframe", {
14221
+ return /* @__PURE__ */ jsx27("iframe", {
13731
14222
  referrerPolicy: "strict-origin-when-cross-origin",
13732
14223
  ...props2,
13733
14224
  ref,
@@ -13883,7 +14374,7 @@ var ImgContent = ({
13883
14374
  requestsVideoFrame: false,
13884
14375
  isClientSideRendering
13885
14376
  });
13886
- return /* @__PURE__ */ jsx27("img", {
14377
+ return /* @__PURE__ */ jsx28("img", {
13887
14378
  ...props2,
13888
14379
  ref: imageCallbackRef,
13889
14380
  crossOrigin: crossOriginValue,
@@ -13906,7 +14397,7 @@ var NativeImgInner = ({
13906
14397
  if (!src) {
13907
14398
  throw new Error('No "src" prop was passed to <Img>.');
13908
14399
  }
13909
- return /* @__PURE__ */ jsx27(Sequence, {
14400
+ return /* @__PURE__ */ jsx28(Sequence, {
13910
14401
  layout: "none",
13911
14402
  from: from ?? 0,
13912
14403
  durationInFrames: durationInFrames ?? Infinity,
@@ -13918,7 +14409,7 @@ var NativeImgInner = ({
13918
14409
  showInTimeline: showInTimeline ?? true,
13919
14410
  hidden,
13920
14411
  _remotionInternalRefForOutline: refForOutline,
13921
- children: /* @__PURE__ */ jsx27(ImgContent, {
14412
+ children: /* @__PURE__ */ jsx28(ImgContent, {
13922
14413
  src,
13923
14414
  refForOutline,
13924
14415
  ...props2
@@ -13927,6 +14418,8 @@ var NativeImgInner = ({
13927
14418
  };
13928
14419
  var CanvasImageWithPrivateProps = CanvasImage;
13929
14420
  var imgSchema = {
14421
+ durationInFrames: durationInFramesField,
14422
+ from: fromField,
13930
14423
  ...sequenceVisualStyleSchema,
13931
14424
  hidden: hiddenField
13932
14425
  };
@@ -13996,7 +14489,7 @@ var ImgInner = ({
13996
14489
  }) => {
13997
14490
  const refForOutline = useRef24(null);
13998
14491
  if (effects.length === 0) {
13999
- return /* @__PURE__ */ jsx27(NativeImgInner, {
14492
+ return /* @__PURE__ */ jsx28(NativeImgInner, {
14000
14493
  ...props2,
14001
14494
  ref,
14002
14495
  hidden,
@@ -14032,7 +14525,7 @@ var ImgInner = ({
14032
14525
  const canvasHeight = typeof height === "number" ? height : undefined;
14033
14526
  const canvasProps = props2;
14034
14527
  const canvasFit = getFitFromObjectFit(style) ?? "fill";
14035
- return /* @__PURE__ */ jsx27(CanvasImageWithPrivateProps, {
14528
+ return /* @__PURE__ */ jsx28(CanvasImageWithPrivateProps, {
14036
14529
  src,
14037
14530
  width: canvasWidth,
14038
14531
  height: canvasHeight,
@@ -14057,9 +14550,13 @@ var ImgInner = ({
14057
14550
  ...canvasProps
14058
14551
  });
14059
14552
  };
14060
- var Img = wrapInSchema(ImgInner, imgSchema);
14553
+ var Img = wrapInSchema({
14554
+ Component: ImgInner,
14555
+ schema: imgSchema,
14556
+ supportsEffects: true
14557
+ });
14061
14558
  addSequenceStackTraces(Img);
14062
- var compositionsRef = React28.createRef();
14559
+ var compositionsRef = React29.createRef();
14063
14560
  var CompositionManagerProvider = ({
14064
14561
  children,
14065
14562
  onlyRenderComposition,
@@ -14091,14 +14588,15 @@ var CompositionManagerProvider = ({
14091
14588
  return comps.filter((c2) => c2.id !== id);
14092
14589
  });
14093
14590
  }, []);
14094
- const registerFolder = useCallback19((name, parent, nonce) => {
14591
+ const registerFolder = useCallback19((name, parent, nonce, stack) => {
14095
14592
  setFolders((prevFolders) => {
14096
14593
  return [
14097
14594
  ...prevFolders,
14098
14595
  {
14099
14596
  name,
14100
14597
  parent,
14101
- nonce
14598
+ nonce,
14599
+ stack
14102
14600
  }
14103
14601
  ];
14104
14602
  });
@@ -14137,9 +14635,9 @@ var CompositionManagerProvider = ({
14137
14635
  canvasContent
14138
14636
  };
14139
14637
  }, [compositions, folders, currentCompositionMetadata, canvasContent]);
14140
- return /* @__PURE__ */ jsx28(CompositionManager.Provider, {
14638
+ return /* @__PURE__ */ jsx29(CompositionManager.Provider, {
14141
14639
  value: compositionManagerContextValue,
14142
- children: /* @__PURE__ */ jsx28(CompositionSetters.Provider, {
14640
+ children: /* @__PURE__ */ jsx29(CompositionSetters.Provider, {
14143
14641
  value: compositionManagerSetters,
14144
14642
  children
14145
14643
  })
@@ -14237,7 +14735,7 @@ var REMOTION_STUDIO_CONTAINER_ELEMENT = "__remotion-studio-container";
14237
14735
  var getPreviewDomElement = () => {
14238
14736
  return document.getElementById(REMOTION_STUDIO_CONTAINER_ELEMENT);
14239
14737
  };
14240
- var MaxMediaCacheSizeContext = React29.createContext(null);
14738
+ var MaxMediaCacheSizeContext = React30.createContext(null);
14241
14739
  var Root = null;
14242
14740
  var listeners = [];
14243
14741
  var getRoot = () => {
@@ -14255,7 +14753,7 @@ var waitForRoot = (fn) => {
14255
14753
  listeners = listeners.filter((l) => l !== fn);
14256
14754
  };
14257
14755
  };
14258
- var MediaEnabledContext = createContext23(null);
14756
+ var MediaEnabledContext = createContext24(null);
14259
14757
  var useVideoEnabled = () => {
14260
14758
  const context = useContext34(MediaEnabledContext);
14261
14759
  if (!context) {
@@ -14282,7 +14780,7 @@ var MediaEnabledProvider = ({
14282
14780
  audioEnabled
14283
14781
  }) => {
14284
14782
  const value = useMemo33(() => ({ videoEnabled, audioEnabled }), [videoEnabled, audioEnabled]);
14285
- return /* @__PURE__ */ jsx29(MediaEnabledContext.Provider, {
14783
+ return /* @__PURE__ */ jsx30(MediaEnabledContext.Provider, {
14286
14784
  value,
14287
14785
  children
14288
14786
  });
@@ -14306,25 +14804,25 @@ var RemotionRootContexts = ({
14306
14804
  const logging = useMemo34(() => {
14307
14805
  return { logLevel, mountTime: Date.now() };
14308
14806
  }, [logLevel]);
14309
- return /* @__PURE__ */ jsx30(LogLevelContext.Provider, {
14807
+ return /* @__PURE__ */ jsx31(LogLevelContext.Provider, {
14310
14808
  value: logging,
14311
- children: /* @__PURE__ */ jsx30(NonceContext.Provider, {
14809
+ children: /* @__PURE__ */ jsx31(NonceContext.Provider, {
14312
14810
  value: nonceContext,
14313
- children: /* @__PURE__ */ jsx30(TimelineContextProvider, {
14811
+ children: /* @__PURE__ */ jsx31(TimelineContextProvider, {
14314
14812
  frameState,
14315
- children: /* @__PURE__ */ jsx30(MediaEnabledProvider, {
14813
+ children: /* @__PURE__ */ jsx31(MediaEnabledProvider, {
14316
14814
  videoEnabled,
14317
14815
  audioEnabled,
14318
- children: /* @__PURE__ */ jsx30(EditorPropsProvider, {
14319
- children: /* @__PURE__ */ jsx30(PrefetchProvider, {
14320
- children: /* @__PURE__ */ jsx30(SequenceManagerProvider, {
14321
- children: /* @__PURE__ */ jsx30(DurationsContextProvider, {
14322
- children: /* @__PURE__ */ jsx30(BufferingProvider, {
14323
- children: /* @__PURE__ */ jsx30(SharedAudioContextProvider, {
14816
+ children: /* @__PURE__ */ jsx31(EditorPropsProvider, {
14817
+ children: /* @__PURE__ */ jsx31(PrefetchProvider, {
14818
+ children: /* @__PURE__ */ jsx31(SequenceManagerProvider, {
14819
+ children: /* @__PURE__ */ jsx31(DurationsContextProvider, {
14820
+ children: /* @__PURE__ */ jsx31(BufferingProvider, {
14821
+ children: /* @__PURE__ */ jsx31(SharedAudioContextProvider, {
14324
14822
  audioLatencyHint,
14325
14823
  audioEnabled,
14326
14824
  previewSampleRate,
14327
- children: /* @__PURE__ */ jsx30(SharedAudioTagsContextProvider, {
14825
+ children: /* @__PURE__ */ jsx31(SharedAudioTagsContextProvider, {
14328
14826
  numberOfAudioTags,
14329
14827
  children
14330
14828
  })
@@ -14510,7 +15008,7 @@ var resolveVideoConfigOrCatch = (params) => {
14510
15008
  };
14511
15009
  }
14512
15010
  };
14513
- var SequenceStackTracesUpdateContext = React31.createContext(() => {});
15011
+ var SequenceStackTracesUpdateContext = React32.createContext(() => {});
14514
15012
  var getEnvVariables = () => {
14515
15013
  if (getRemotionEnvironment().isRendering) {
14516
15014
  const param = window.remotion_envVariables;
@@ -14536,8 +15034,8 @@ var setupEnvVariables = () => {
14536
15034
  window.process.env[key] = env[key];
14537
15035
  });
14538
15036
  };
14539
- var CurrentScaleContext = React32.createContext(null);
14540
- var PreviewSizeContext = createContext24({
15037
+ var CurrentScaleContext = React33.createContext(null);
15038
+ var PreviewSizeContext = createContext25({
14541
15039
  setSize: () => {
14542
15040
  return;
14543
15041
  },
@@ -14560,6 +15058,7 @@ var calculateScale = ({
14560
15058
  }
14561
15059
  return Number(previewSize);
14562
15060
  };
15061
+ var PixelDensityContext = React34.createContext(null);
14563
15062
  var getOffthreadVideoSource = ({
14564
15063
  src,
14565
15064
  transparent,
@@ -14592,9 +15091,9 @@ var OffthreadVideoForRendering = ({
14592
15091
  const frame = useCurrentFrame();
14593
15092
  const volumePropsFrame = useFrameForVolumeProp(loopVolumeCurveBehavior);
14594
15093
  const videoConfig = useUnsafeVideoConfig();
14595
- const sequenceContext = useContext35(SequenceContext);
15094
+ const sequenceContext = useContext36(SequenceContext);
14596
15095
  const mediaStartsAt = useMediaStartsAt();
14597
- const { registerRenderAsset, unregisterRenderAsset } = useContext35(RenderAssetManager);
15096
+ const { registerRenderAsset, unregisterRenderAsset } = useContext36(RenderAssetManager);
14598
15097
  if (!src) {
14599
15098
  throw new TypeError("No `src` was passed to <OffthreadVideo>.");
14600
15099
  }
@@ -14760,7 +15259,7 @@ var OffthreadVideoForRendering = ({
14760
15259
  return null;
14761
15260
  }
14762
15261
  continueRender2(imageSrc.handle);
14763
- return /* @__PURE__ */ jsx31(Img, {
15262
+ return /* @__PURE__ */ jsx322(Img, {
14764
15263
  src: imageSrc.src,
14765
15264
  delayRenderRetries,
14766
15265
  delayRenderTimeoutInMilliseconds,
@@ -14783,16 +15282,22 @@ var useEmitVideoFrame = ({
14783
15282
  return;
14784
15283
  }
14785
15284
  let handle = 0;
14786
- const callback = () => {
15285
+ const callback = (_now, metadata) => {
14787
15286
  if (!ref.current) {
14788
15287
  return;
14789
15288
  }
14790
- onVideoFrame(ref.current);
15289
+ onVideoFrame(ref.current, _now, metadata);
14791
15290
  handle = ref.current.requestVideoFrameCallback(callback);
14792
15291
  };
14793
- callback();
15292
+ onVideoFrame(current);
15293
+ if (!current.requestVideoFrameCallback) {
15294
+ return;
15295
+ }
15296
+ handle = current.requestVideoFrameCallback(callback);
14794
15297
  return () => {
14795
- current.cancelVideoFrameCallback(handle);
15298
+ if (handle) {
15299
+ current.cancelVideoFrameCallback(handle);
15300
+ }
14796
15301
  };
14797
15302
  }, [onVideoFrame, ref]);
14798
15303
  };
@@ -14806,7 +15311,7 @@ class MediaPlaybackError extends Error {
14806
15311
  }
14807
15312
  }
14808
15313
  var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
14809
- const context = useContext36(SharedAudioContext);
15314
+ const context = useContext37(SharedAudioContext);
14810
15315
  if (!context) {
14811
15316
  throw new Error("SharedAudioContext not found");
14812
15317
  }
@@ -14820,7 +15325,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
14820
15325
  ref: videoRef
14821
15326
  });
14822
15327
  }, [context.audioContext]);
14823
- const effectToUse = React34.useInsertionEffect ?? React34.useLayoutEffect;
15328
+ const effectToUse = React36.useInsertionEffect ?? React36.useLayoutEffect;
14824
15329
  effectToUse(() => {
14825
15330
  return () => {
14826
15331
  requestAnimationFrame(() => {
@@ -14863,7 +15368,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
14863
15368
  }
14864
15369
  const volumePropFrame = useFrameForVolumeProp(loopVolumeCurveBehavior ?? "repeat");
14865
15370
  const { fps, durationInFrames } = useVideoConfig();
14866
- const parentSequence = useContext36(SequenceContext);
15371
+ const parentSequence = useContext37(SequenceContext);
14867
15372
  const logLevel = useLogLevel();
14868
15373
  const mountTime = useMountTime();
14869
15374
  const [timelineId] = useState20(() => String(Math.random()));
@@ -15024,7 +15529,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
15024
15529
  requestsVideoFrame: Boolean(onVideoFrame),
15025
15530
  isClientSideRendering: false
15026
15531
  });
15027
- return /* @__PURE__ */ jsx322("video", {
15532
+ return /* @__PURE__ */ jsx33("video", {
15028
15533
  ref: videoRef,
15029
15534
  muted: muted || mediaMuted || userPreferredVolume <= 0,
15030
15535
  playsInline: true,
@@ -15067,13 +15572,13 @@ var InnerOffthreadVideo = (props2) => {
15067
15572
  trimAfter
15068
15573
  });
15069
15574
  if (typeof trimBeforeValue !== "undefined" || typeof trimAfterValue !== "undefined") {
15070
- return /* @__PURE__ */ jsx33(Sequence, {
15575
+ return /* @__PURE__ */ jsx34(Sequence, {
15071
15576
  layout: "none",
15072
15577
  from: 0 - (trimBeforeValue ?? 0),
15073
15578
  showInTimeline: false,
15074
15579
  durationInFrames: trimAfterValue,
15075
15580
  name,
15076
- children: /* @__PURE__ */ jsx33(InnerOffthreadVideo, {
15581
+ children: /* @__PURE__ */ jsx34(InnerOffthreadVideo, {
15077
15582
  pauseWhenBuffering: pauseWhenBuffering ?? false,
15078
15583
  ...otherProps,
15079
15584
  trimAfter: undefined,
@@ -15088,7 +15593,7 @@ var InnerOffthreadVideo = (props2) => {
15088
15593
  }
15089
15594
  validateMediaProps(props2, "Video");
15090
15595
  if (environment.isRendering) {
15091
- return /* @__PURE__ */ jsx33(OffthreadVideoForRendering, {
15596
+ return /* @__PURE__ */ jsx34(OffthreadVideoForRendering, {
15092
15597
  pauseWhenBuffering: pauseWhenBuffering ?? false,
15093
15598
  ...otherProps,
15094
15599
  trimAfter: undefined,
@@ -15110,7 +15615,7 @@ var InnerOffthreadVideo = (props2) => {
15110
15615
  delayRenderTimeoutInMilliseconds,
15111
15616
  ...propsForPreview
15112
15617
  } = otherProps;
15113
- return /* @__PURE__ */ jsx33(VideoForPreview, {
15618
+ return /* @__PURE__ */ jsx34(VideoForPreview, {
15114
15619
  _remotionInternalStack: stack ?? null,
15115
15620
  onDuration,
15116
15621
  onlyWarnForMediaSeekingError: true,
@@ -15128,11 +15633,9 @@ var OffthreadVideo = ({
15128
15633
  acceptableTimeShiftInSeconds,
15129
15634
  allowAmplificationDuringRender,
15130
15635
  audioStreamIndex,
15131
- className,
15132
15636
  crossOrigin,
15133
15637
  delayRenderRetries,
15134
15638
  delayRenderTimeoutInMilliseconds,
15135
- id,
15136
15639
  loopVolumeCurveBehavior,
15137
15640
  muted,
15138
15641
  name,
@@ -15155,20 +15658,19 @@ var OffthreadVideo = ({
15155
15658
  endAt,
15156
15659
  stack,
15157
15660
  startFrom,
15158
- imageFormat
15661
+ imageFormat,
15662
+ ...props2
15159
15663
  }) => {
15160
15664
  if (imageFormat) {
15161
15665
  throw new TypeError(`The \`<OffthreadVideo>\` tag does no longer accept \`imageFormat\`. Use the \`transparent\` prop if you want to render a transparent video.`);
15162
15666
  }
15163
- return /* @__PURE__ */ jsx33(InnerOffthreadVideo, {
15667
+ return /* @__PURE__ */ jsx34(InnerOffthreadVideo, {
15164
15668
  acceptableTimeShiftInSeconds,
15165
15669
  allowAmplificationDuringRender: allowAmplificationDuringRender ?? true,
15166
15670
  audioStreamIndex: audioStreamIndex ?? 0,
15167
- className,
15168
15671
  crossOrigin,
15169
15672
  delayRenderRetries,
15170
15673
  delayRenderTimeoutInMilliseconds,
15171
- id,
15172
15674
  loopVolumeCurveBehavior: loopVolumeCurveBehavior ?? "repeat",
15173
15675
  muted: muted ?? false,
15174
15676
  name,
@@ -15191,24 +15693,25 @@ var OffthreadVideo = ({
15191
15693
  trimAfter,
15192
15694
  trimBefore,
15193
15695
  useWebAudioApi: useWebAudioApi ?? false,
15194
- volume
15696
+ volume,
15697
+ ...props2
15195
15698
  });
15196
15699
  };
15197
15700
  addSequenceStackTraces(OffthreadVideo);
15198
15701
  var WATCH_REMOTION_STATIC_FILES = "remotion_staticFilesChanged";
15199
15702
  function useRemotionContexts() {
15200
- const compositionManagerCtx = React36.useContext(CompositionManager);
15201
- const timelineContext = React36.useContext(TimelineContext);
15202
- const setTimelineContext = React36.useContext(SetTimelineContext);
15203
- const sequenceContext = React36.useContext(SequenceContext);
15204
- const nonceContext = React36.useContext(NonceContext);
15205
- const canUseRemotionHooksContext = React36.useContext(CanUseRemotionHooks);
15206
- const preloadContext = React36.useContext(PreloadContext);
15207
- const resolveCompositionContext = React36.useContext(ResolveCompositionContext);
15208
- const renderAssetManagerContext = React36.useContext(RenderAssetManager);
15209
- const sequenceManagerContext = React36.useContext(SequenceManager);
15210
- const bufferManagerContext = React36.useContext(BufferingContextReact);
15211
- const logLevelContext = React36.useContext(LogLevelContext);
15703
+ const compositionManagerCtx = React38.useContext(CompositionManager);
15704
+ const timelineContext = React38.useContext(TimelineContext);
15705
+ const setTimelineContext = React38.useContext(SetTimelineContext);
15706
+ const sequenceContext = React38.useContext(SequenceContext);
15707
+ const nonceContext = React38.useContext(NonceContext);
15708
+ const canUseRemotionHooksContext = React38.useContext(CanUseRemotionHooks);
15709
+ const preloadContext = React38.useContext(PreloadContext);
15710
+ const resolveCompositionContext = React38.useContext(ResolveCompositionContext);
15711
+ const renderAssetManagerContext = React38.useContext(RenderAssetManager);
15712
+ const sequenceManagerContext = React38.useContext(SequenceManager);
15713
+ const bufferManagerContext = React38.useContext(BufferingContextReact);
15714
+ const logLevelContext = React38.useContext(LogLevelContext);
15212
15715
  return useMemo37(() => ({
15213
15716
  compositionManagerCtx,
15214
15717
  timelineContext,
@@ -15239,29 +15742,29 @@ function useRemotionContexts() {
15239
15742
  }
15240
15743
  var RemotionContextProvider = (props2) => {
15241
15744
  const { children, contexts } = props2;
15242
- return /* @__PURE__ */ jsx34(LogLevelContext.Provider, {
15745
+ return /* @__PURE__ */ jsx35(LogLevelContext.Provider, {
15243
15746
  value: contexts.logLevelContext,
15244
- children: /* @__PURE__ */ jsx34(CanUseRemotionHooks.Provider, {
15747
+ children: /* @__PURE__ */ jsx35(CanUseRemotionHooks.Provider, {
15245
15748
  value: contexts.canUseRemotionHooksContext,
15246
- children: /* @__PURE__ */ jsx34(NonceContext.Provider, {
15749
+ children: /* @__PURE__ */ jsx35(NonceContext.Provider, {
15247
15750
  value: contexts.nonceContext,
15248
- children: /* @__PURE__ */ jsx34(PreloadContext.Provider, {
15751
+ children: /* @__PURE__ */ jsx35(PreloadContext.Provider, {
15249
15752
  value: contexts.preloadContext,
15250
- children: /* @__PURE__ */ jsx34(CompositionManager.Provider, {
15753
+ children: /* @__PURE__ */ jsx35(CompositionManager.Provider, {
15251
15754
  value: contexts.compositionManagerCtx,
15252
- children: /* @__PURE__ */ jsx34(SequenceManager.Provider, {
15755
+ children: /* @__PURE__ */ jsx35(SequenceManager.Provider, {
15253
15756
  value: contexts.sequenceManagerContext,
15254
- children: /* @__PURE__ */ jsx34(RenderAssetManager.Provider, {
15757
+ children: /* @__PURE__ */ jsx35(RenderAssetManager.Provider, {
15255
15758
  value: contexts.renderAssetManagerContext,
15256
- children: /* @__PURE__ */ jsx34(ResolveCompositionContext.Provider, {
15759
+ children: /* @__PURE__ */ jsx35(ResolveCompositionContext.Provider, {
15257
15760
  value: contexts.resolveCompositionContext,
15258
- children: /* @__PURE__ */ jsx34(TimelineContext.Provider, {
15761
+ children: /* @__PURE__ */ jsx35(TimelineContext.Provider, {
15259
15762
  value: contexts.timelineContext,
15260
- children: /* @__PURE__ */ jsx34(SetTimelineContext.Provider, {
15763
+ children: /* @__PURE__ */ jsx35(SetTimelineContext.Provider, {
15261
15764
  value: contexts.setTimelineContext,
15262
- children: /* @__PURE__ */ jsx34(SequenceContext.Provider, {
15765
+ children: /* @__PURE__ */ jsx35(SequenceContext.Provider, {
15263
15766
  value: contexts.sequenceContext,
15264
- children: /* @__PURE__ */ jsx34(BufferingContextReact.Provider, {
15767
+ children: /* @__PURE__ */ jsx35(BufferingContextReact.Provider, {
15265
15768
  value: contexts.bufferManagerContext,
15266
15769
  children
15267
15770
  })
@@ -15329,8 +15832,10 @@ var Internals = {
15329
15832
  SharedAudioTagsContext,
15330
15833
  SharedAudioTagsContextProvider,
15331
15834
  invalidCompositionErrorMessage,
15835
+ invalidFolderNameErrorMessage,
15332
15836
  calculateMediaDuration,
15333
15837
  isCompositionIdValid,
15838
+ isFolderNameValid,
15334
15839
  getPreviewDomElement,
15335
15840
  compositionsRef,
15336
15841
  portalNode,
@@ -15365,6 +15870,7 @@ var Internals = {
15365
15870
  BufferingContextReact,
15366
15871
  getComponentsToAddStacksTo,
15367
15872
  CurrentScaleContext,
15873
+ PixelDensityContext,
15368
15874
  PreviewSizeContext,
15369
15875
  calculateScale,
15370
15876
  validateRenderAsset,
@@ -15404,13 +15910,19 @@ var Internals = {
15404
15910
  createWebGL2ContextError,
15405
15911
  computeEffectiveSchemaValuesDotNotation,
15406
15912
  interpolateKeyframedStatus,
15913
+ makeStaticDragOverride,
15914
+ makeKeyframedDragOverride,
15915
+ resolveDragOverrideValue,
15916
+ getStaticDragOverrideValue,
15407
15917
  OverrideIdsToNodePathsGettersContext,
15408
15918
  OverrideIdsToNodePathsSettersContext,
15409
15919
  findPropsToDelete,
15410
15920
  makeSequencePropsSubscriptionKey,
15411
15921
  getCodeValuesCtx,
15412
15922
  getEffectCodeValuesCtx,
15413
- hiddenField
15923
+ hiddenField,
15924
+ durationInFramesField,
15925
+ fromField
15414
15926
  };
15415
15927
  var validateFrame = ({
15416
15928
  allowFloats,
@@ -15437,34 +15949,15 @@ var validateFrame = ({
15437
15949
  }
15438
15950
  };
15439
15951
  var flattenChildren = (children) => {
15440
- const childrenArray = React37.Children.toArray(children);
15952
+ const childrenArray = React39.Children.toArray(children);
15441
15953
  return childrenArray.reduce((flatChildren, child) => {
15442
- if (child.type === React37.Fragment) {
15954
+ if (child.type === React39.Fragment) {
15443
15955
  return flatChildren.concat(flattenChildren(child.props.children));
15444
15956
  }
15445
15957
  flatChildren.push(child);
15446
15958
  return flatChildren;
15447
15959
  }, []);
15448
15960
  };
15449
- var IsInsideSeriesContext = createContext25(false);
15450
- var IsInsideSeriesContainer = ({ children }) => {
15451
- return /* @__PURE__ */ jsx35(IsInsideSeriesContext.Provider, {
15452
- value: true,
15453
- children
15454
- });
15455
- };
15456
- var IsNotInsideSeriesProvider = ({ children }) => {
15457
- return /* @__PURE__ */ jsx35(IsInsideSeriesContext.Provider, {
15458
- value: false,
15459
- children
15460
- });
15461
- };
15462
- var useRequireToBeInsideSeries = () => {
15463
- const isInsideSeries = React38.useContext(IsInsideSeriesContext);
15464
- if (!isInsideSeries) {
15465
- throw new Error("This component must be inside a <Series /> component.");
15466
- }
15467
- };
15468
15961
  var SeriesSequenceRefForwardingFunction = ({ children }, _ref) => {
15469
15962
  useRequireToBeInsideSeries();
15470
15963
  return /* @__PURE__ */ jsx36(IsNotInsideSeriesProvider, {
@@ -15535,7 +16028,11 @@ var SeriesInner = (props2) => {
15535
16028
  })
15536
16029
  });
15537
16030
  };
15538
- var Series = Object.assign(wrapInSchema(SeriesInner, sequenceSchemaDefaultLayoutNone), {
16031
+ var Series = Object.assign(wrapInSchema({
16032
+ Component: SeriesInner,
16033
+ schema: sequenceSchemaDefaultLayoutNone,
16034
+ supportsEffects: false
16035
+ }), {
15539
16036
  Sequence: SeriesSequence
15540
16037
  });
15541
16038
  addSequenceStackTraces(Series);
@@ -16006,13 +16503,13 @@ var VideoForRenderingForwardFunction = ({
16006
16503
  const volumePropsFrame = useFrameForVolumeProp(loopVolumeCurveBehavior ?? "repeat");
16007
16504
  const videoConfig = useUnsafeVideoConfig();
16008
16505
  const videoRef = useRef27(null);
16009
- const sequenceContext = useContext37(SequenceContext);
16506
+ const sequenceContext = useContext38(SequenceContext);
16010
16507
  const mediaStartsAt = useMediaStartsAt();
16011
16508
  const environment = useRemotionEnvironment();
16012
16509
  const logLevel = useLogLevel();
16013
16510
  const mountTime = useMountTime();
16014
16511
  const { delayRender: delayRender2, continueRender: continueRender2 } = useDelayRender();
16015
- const { registerRenderAsset, unregisterRenderAsset } = useContext37(RenderAssetManager);
16512
+ const { registerRenderAsset, unregisterRenderAsset } = useContext38(RenderAssetManager);
16016
16513
  const id = useMemo39(() => `video-${random(props2.src ?? "")}-${sequenceContext?.cumulatedFrom}-${sequenceContext?.relativeFrom}-${sequenceContext?.durationInFrames}`, [
16017
16514
  props2.src,
16018
16515
  sequenceContext?.cumulatedFrom,
@@ -16071,6 +16568,7 @@ var VideoForRenderingForwardFunction = ({
16071
16568
  useImperativeHandle10(ref, () => {
16072
16569
  return videoRef.current;
16073
16570
  }, []);
16571
+ useEmitVideoFrame({ ref: videoRef, onVideoFrame });
16074
16572
  useEffect21(() => {
16075
16573
  if (!window.remotion_videoEnabled) {
16076
16574
  return;
@@ -16214,6 +16712,7 @@ var VideoForwardingFunction = (props2, ref) => {
16214
16712
  _remotionInternalNativeLoopPassed,
16215
16713
  showInTimeline,
16216
16714
  onAutoPlayError,
16715
+ onVideoFrame,
16217
16716
  ...otherProps
16218
16717
  } = props2;
16219
16718
  const { loop, ...propsOtherThanLoop } = props2;
@@ -16222,7 +16721,7 @@ var VideoForwardingFunction = (props2, ref) => {
16222
16721
  if (environment.isClientSideRendering) {
16223
16722
  throw new Error("<Html5Video> is not supported in @remotion/web-renderer. Use <Video> from @remotion/media instead. See https://remotion.dev/docs/client-side-rendering/limitations");
16224
16723
  }
16225
- const { durations, setDurations } = useContext38(DurationsContext);
16724
+ const { durations, setDurations } = useContext39(DurationsContext);
16226
16725
  if (typeof ref === "string") {
16227
16726
  throw new Error("string refs are not supported");
16228
16727
  }
@@ -16233,7 +16732,6 @@ var VideoForwardingFunction = (props2, ref) => {
16233
16732
  const onDuration = useCallback23((src, durationInSeconds) => {
16234
16733
  setDurations({ type: "got-duration", durationInSeconds, src });
16235
16734
  }, [setDurations]);
16236
- const onVideoFrame = useCallback23(() => {}, []);
16237
16735
  const durationFetched = durations[getAbsoluteSrc(preloadedSrc)] ?? durations[getAbsoluteSrc(props2.src)];
16238
16736
  validateMediaTrimProps({ startFrom, endAt, trimBefore, trimAfter });
16239
16737
  const { trimBeforeValue, trimAfterValue } = resolveTrimProps({
@@ -16279,6 +16777,7 @@ var VideoForwardingFunction = (props2, ref) => {
16279
16777
  name,
16280
16778
  children: /* @__PURE__ */ jsx38(Html5Video, {
16281
16779
  pauseWhenBuffering: pauseWhenBuffering ?? false,
16780
+ onVideoFrame,
16282
16781
  ...otherProps,
16283
16782
  ref,
16284
16783
  stack
@@ -16302,7 +16801,7 @@ var VideoForwardingFunction = (props2, ref) => {
16302
16801
  onlyWarnForMediaSeekingError: false,
16303
16802
  ...otherProps,
16304
16803
  ref,
16305
- onVideoFrame: null,
16804
+ onVideoFrame: onVideoFrame ?? null,
16306
16805
  pauseWhenBuffering: pauseWhenBuffering ?? false,
16307
16806
  onDuration,
16308
16807
  _remotionInternalStack: stack ?? null,
@@ -16337,6 +16836,7 @@ var Config = new Proxy(proxyObj, {
16337
16836
  Sequence.displayName = "Sequence";
16338
16837
  addSequenceStackTraces(Sequence);
16339
16838
  addSequenceStackTraces(Composition);
16839
+ addSequenceStackTraces(Folder);
16340
16840
 
16341
16841
  // ../design/dist/esm/index.mjs
16342
16842
  import { jsx as jsx210, Fragment as Fragment3 } from "react/jsx-runtime";
@@ -16364,15 +16864,15 @@ import { Fragment as Fragment5, jsx as jsx142 } from "react/jsx-runtime";
16364
16864
  import { jsx as jsx152 } from "react/jsx-runtime";
16365
16865
  import * as React122 from "react";
16366
16866
  import { jsx as jsx162 } from "react/jsx-runtime";
16367
- import * as React16 from "react";
16368
- import * as React13 from "react";
16867
+ import * as React162 from "react";
16868
+ import * as React132 from "react";
16369
16869
  import * as ReactDOM from "react-dom";
16370
16870
  import { jsx as jsx172 } from "react/jsx-runtime";
16371
- import * as React142 from "react";
16871
+ import * as React14 from "react";
16372
16872
  import * as React152 from "react";
16373
16873
  import { jsx as jsx182 } from "react/jsx-runtime";
16374
16874
  import * as React17 from "react";
16375
- import * as React182 from "react";
16875
+ import * as React18 from "react";
16376
16876
  import { jsx as jsx192 } from "react/jsx-runtime";
16377
16877
  import * as React202 from "react";
16378
16878
  import * as React192 from "react";
@@ -16382,41 +16882,41 @@ import { useLayoutEffect as useLayoutEffect32, useEffect as useEffect82 } from "
16382
16882
  import * as ReactDOM2 from "react-dom";
16383
16883
  import * as React222 from "react";
16384
16884
  import { jsx as jsx202 } from "react/jsx-runtime";
16385
- import * as React23 from "react";
16885
+ import * as React232 from "react";
16386
16886
  import { jsx as jsx212 } from "react/jsx-runtime";
16387
16887
  import * as React25 from "react";
16388
16888
  import ReactDOM3 from "react-dom";
16389
16889
  import { jsx as jsx223 } from "react/jsx-runtime";
16390
16890
  import * as React26 from "react";
16391
16891
  import * as React27 from "react";
16392
- import * as React282 from "react";
16892
+ import * as React28 from "react";
16393
16893
  import { jsx as jsx232 } from "react/jsx-runtime";
16394
- import * as React35 from "react";
16395
- import * as React312 from "react";
16894
+ import * as React352 from "react";
16895
+ import * as React31 from "react";
16396
16896
  import { useState as useState112 } from "react";
16397
16897
  import * as React292 from "react";
16398
- import * as React30 from "react";
16898
+ import * as React302 from "react";
16399
16899
  import * as React342 from "react";
16400
16900
  import * as React332 from "react";
16401
16901
  import * as React322 from "react";
16402
16902
  import { Fragment as Fragment8, jsx as jsx242, jsxs as jsxs4 } from "react/jsx-runtime";
16403
16903
  import { forwardRef as forwardRef142, createElement as createElement7 } from "react";
16404
16904
  import { forwardRef as forwardRef132, createElement as createElement6 } from "react";
16405
- import * as React372 from "react";
16905
+ import * as React37 from "react";
16406
16906
  import { jsx as jsx252, jsxs as jsxs5 } from "react/jsx-runtime";
16407
16907
  import { jsx as jsx262 } from "react/jsx-runtime";
16408
16908
  import * as React49 from "react";
16409
16909
  import * as React382 from "react";
16410
16910
  import { jsx as jsx272 } from "react/jsx-runtime";
16411
16911
  import * as React47 from "react";
16412
- import React402 from "react";
16413
- import * as React39 from "react";
16912
+ import React40 from "react";
16913
+ import * as React392 from "react";
16414
16914
  import { Fragment as Fragment22, jsx as jsx282 } from "react/jsx-runtime";
16415
16915
  import { jsx as jsx292 } from "react/jsx-runtime";
16416
16916
  import React210 from "react";
16417
16917
  import { jsx as jsx2102 } from "react/jsx-runtime";
16418
16918
  import * as React42 from "react";
16419
- import * as React41 from "react";
16919
+ import * as React412 from "react";
16420
16920
  import * as React43 from "react";
16421
16921
  import * as ReactDOM5 from "react-dom";
16422
16922
  import { jsx as jsx302 } from "react/jsx-runtime";
@@ -16469,7 +16969,7 @@ function useComposedRefs(...refs) {
16469
16969
  return React3.useCallback(composeRefs(...refs), refs);
16470
16970
  }
16471
16971
  var REACT_LAZY_TYPE = Symbol.for("react.lazy");
16472
- var use = React22[" use ".trim().toString()];
16972
+ var use = React23[" use ".trim().toString()];
16473
16973
  function isPromiseLike(value) {
16474
16974
  return typeof value === "object" && value !== null && "then" in value;
16475
16975
  }
@@ -16478,25 +16978,25 @@ function isLazyComponent(element) {
16478
16978
  }
16479
16979
  function createSlot(ownerName) {
16480
16980
  const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);
16481
- const Slot2 = React22.forwardRef((props, forwardedRef) => {
16981
+ const Slot2 = React23.forwardRef((props, forwardedRef) => {
16482
16982
  let { children, ...slotProps } = props;
16483
16983
  if (isLazyComponent(children) && typeof use === "function") {
16484
16984
  children = use(children._payload);
16485
16985
  }
16486
- const childrenArray = React22.Children.toArray(children);
16986
+ const childrenArray = React23.Children.toArray(children);
16487
16987
  const slottable = childrenArray.find(isSlottable);
16488
16988
  if (slottable) {
16489
16989
  const newElement = slottable.props.children;
16490
16990
  const newChildren = childrenArray.map((child) => {
16491
16991
  if (child === slottable) {
16492
- if (React22.Children.count(newElement) > 1)
16493
- return React22.Children.only(null);
16494
- return React22.isValidElement(newElement) ? newElement.props.children : null;
16992
+ if (React23.Children.count(newElement) > 1)
16993
+ return React23.Children.only(null);
16994
+ return React23.isValidElement(newElement) ? newElement.props.children : null;
16495
16995
  } else {
16496
16996
  return child;
16497
16997
  }
16498
16998
  });
16499
- return /* @__PURE__ */ jsx39(SlotClone, { ...slotProps, ref: forwardedRef, children: React22.isValidElement(newElement) ? React22.cloneElement(newElement, undefined, newChildren) : null });
16999
+ return /* @__PURE__ */ jsx39(SlotClone, { ...slotProps, ref: forwardedRef, children: React23.isValidElement(newElement) ? React23.cloneElement(newElement, undefined, newChildren) : null });
16500
17000
  }
16501
17001
  return /* @__PURE__ */ jsx39(SlotClone, { ...slotProps, ref: forwardedRef, children });
16502
17002
  });
@@ -16505,20 +17005,20 @@ function createSlot(ownerName) {
16505
17005
  }
16506
17006
  var Slot = /* @__PURE__ */ createSlot("Slot");
16507
17007
  function createSlotClone(ownerName) {
16508
- const SlotClone = React22.forwardRef((props, forwardedRef) => {
17008
+ const SlotClone = React23.forwardRef((props, forwardedRef) => {
16509
17009
  let { children, ...slotProps } = props;
16510
17010
  if (isLazyComponent(children) && typeof use === "function") {
16511
17011
  children = use(children._payload);
16512
17012
  }
16513
- if (React22.isValidElement(children)) {
17013
+ if (React23.isValidElement(children)) {
16514
17014
  const childrenRef = getElementRef(children);
16515
17015
  const props2 = mergeProps(slotProps, children.props);
16516
- if (children.type !== React22.Fragment) {
17016
+ if (children.type !== React23.Fragment) {
16517
17017
  props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;
16518
17018
  }
16519
- return React22.cloneElement(children, props2);
17019
+ return React23.cloneElement(children, props2);
16520
17020
  }
16521
- return React22.Children.count(children) > 1 ? React22.Children.only(null) : null;
17021
+ return React23.Children.count(children) > 1 ? React23.Children.only(null) : null;
16522
17022
  });
16523
17023
  SlotClone.displayName = `${ownerName}.SlotClone`;
16524
17024
  return SlotClone;
@@ -16534,7 +17034,7 @@ function createSlottable(ownerName) {
16534
17034
  }
16535
17035
  var Slottable = /* @__PURE__ */ createSlottable("Slottable");
16536
17036
  function isSlottable(child) {
16537
- return React22.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
17037
+ return React23.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
16538
17038
  }
16539
17039
  function mergeProps(slotProps, childProps) {
16540
17040
  const overrideProps = { ...childProps };
@@ -16591,7 +17091,7 @@ var getChildNodeFrom = (htmlElement) => {
16591
17091
  return childNode;
16592
17092
  };
16593
17093
  var useHoverTransforms = (ref, disabled) => {
16594
- const [state, setState] = React33.useState({
17094
+ const [state, setState] = React35.useState({
16595
17095
  progress: 0,
16596
17096
  isActive: false
16597
17097
  });
@@ -16603,7 +17103,7 @@ var useHoverTransforms = (ref, disabled) => {
16603
17103
  eventTarget.dispatchEvent(new Event("enabled"));
16604
17104
  }
16605
17105
  }, [disabled, eventTarget]);
16606
- React33.useEffect(() => {
17106
+ React35.useEffect(() => {
16607
17107
  const element = ref.current;
16608
17108
  if (!element)
16609
17109
  return;
@@ -16678,8 +17178,8 @@ var useHoverTransforms = (ref, disabled) => {
16678
17178
  return state;
16679
17179
  };
16680
17180
  var useClickTransforms = (ref) => {
16681
- const [hoverProgress, setHoverProgress] = React33.useState(0);
16682
- React33.useEffect(() => {
17181
+ const [hoverProgress, setHoverProgress] = React35.useState(0);
17182
+ React35.useEffect(() => {
16683
17183
  const element = getChildNodeFrom(ref.current);
16684
17184
  if (!element) {
16685
17185
  return;
@@ -17407,7 +17907,7 @@ var NODES = [
17407
17907
  "ul"
17408
17908
  ];
17409
17909
  var Primitive = NODES.reduce((primitive, node) => {
17410
- const Node2 = React13.forwardRef((props, forwardedRef) => {
17910
+ const Node2 = React132.forwardRef((props, forwardedRef) => {
17411
17911
  const { asChild, ...primitiveProps } = props;
17412
17912
  const Comp = asChild ? Slot2 : node;
17413
17913
  if (typeof window !== "undefined") {
@@ -17423,11 +17923,11 @@ function dispatchDiscreteCustomEvent(target, event) {
17423
17923
  ReactDOM.flushSync(() => target.dispatchEvent(event));
17424
17924
  }
17425
17925
  function useCallbackRef(callback) {
17426
- const callbackRef = React142.useRef(callback);
17427
- React142.useEffect(() => {
17926
+ const callbackRef = React14.useRef(callback);
17927
+ React14.useEffect(() => {
17428
17928
  callbackRef.current = callback;
17429
17929
  });
17430
- return React142.useMemo(() => (...args) => callbackRef.current?.(...args), []);
17930
+ return React14.useMemo(() => (...args) => callbackRef.current?.(...args), []);
17431
17931
  }
17432
17932
  function useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {
17433
17933
  const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);
@@ -17446,12 +17946,12 @@ var CONTEXT_UPDATE = "dismissableLayer.update";
17446
17946
  var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
17447
17947
  var FOCUS_OUTSIDE = "dismissableLayer.focusOutside";
17448
17948
  var originalBodyPointerEvents;
17449
- var DismissableLayerContext = React16.createContext({
17949
+ var DismissableLayerContext = React162.createContext({
17450
17950
  layers: /* @__PURE__ */ new Set,
17451
17951
  layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set,
17452
17952
  branches: /* @__PURE__ */ new Set
17453
17953
  });
17454
- var DismissableLayer = React16.forwardRef((props, forwardedRef) => {
17954
+ var DismissableLayer = React162.forwardRef((props, forwardedRef) => {
17455
17955
  const {
17456
17956
  disableOutsidePointerEvents = false,
17457
17957
  onEscapeKeyDown,
@@ -17461,10 +17961,10 @@ var DismissableLayer = React16.forwardRef((props, forwardedRef) => {
17461
17961
  onDismiss,
17462
17962
  ...layerProps
17463
17963
  } = props;
17464
- const context = React16.useContext(DismissableLayerContext);
17465
- const [node, setNode] = React16.useState(null);
17964
+ const context = React162.useContext(DismissableLayerContext);
17965
+ const [node, setNode] = React162.useState(null);
17466
17966
  const ownerDocument = node?.ownerDocument ?? globalThis?.document;
17467
- const [, force] = React16.useState({});
17967
+ const [, force] = React162.useState({});
17468
17968
  const composedRefs = useComposedRefs2(forwardedRef, (node2) => setNode(node2));
17469
17969
  const layers = Array.from(context.layers);
17470
17970
  const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);
@@ -17502,7 +18002,7 @@ var DismissableLayer = React16.forwardRef((props, forwardedRef) => {
17502
18002
  onDismiss();
17503
18003
  }
17504
18004
  }, ownerDocument);
17505
- React16.useEffect(() => {
18005
+ React162.useEffect(() => {
17506
18006
  if (!node)
17507
18007
  return;
17508
18008
  if (disableOutsidePointerEvents) {
@@ -17520,7 +18020,7 @@ var DismissableLayer = React16.forwardRef((props, forwardedRef) => {
17520
18020
  }
17521
18021
  };
17522
18022
  }, [node, ownerDocument, disableOutsidePointerEvents, context]);
17523
- React16.useEffect(() => {
18023
+ React162.useEffect(() => {
17524
18024
  return () => {
17525
18025
  if (!node)
17526
18026
  return;
@@ -17529,7 +18029,7 @@ var DismissableLayer = React16.forwardRef((props, forwardedRef) => {
17529
18029
  dispatchUpdate();
17530
18030
  };
17531
18031
  }, [node, context]);
17532
- React16.useEffect(() => {
18032
+ React162.useEffect(() => {
17533
18033
  const handleUpdate = () => force({});
17534
18034
  document.addEventListener(CONTEXT_UPDATE, handleUpdate);
17535
18035
  return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
@@ -17548,11 +18048,11 @@ var DismissableLayer = React16.forwardRef((props, forwardedRef) => {
17548
18048
  });
17549
18049
  DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
17550
18050
  var BRANCH_NAME = "DismissableLayerBranch";
17551
- var DismissableLayerBranch = React16.forwardRef((props, forwardedRef) => {
17552
- const context = React16.useContext(DismissableLayerContext);
17553
- const ref = React16.useRef(null);
18051
+ var DismissableLayerBranch = React162.forwardRef((props, forwardedRef) => {
18052
+ const context = React162.useContext(DismissableLayerContext);
18053
+ const ref = React162.useRef(null);
17554
18054
  const composedRefs = useComposedRefs2(forwardedRef, ref);
17555
- React16.useEffect(() => {
18055
+ React162.useEffect(() => {
17556
18056
  const node = ref.current;
17557
18057
  if (node) {
17558
18058
  context.branches.add(node);
@@ -17566,9 +18066,9 @@ var DismissableLayerBranch = React16.forwardRef((props, forwardedRef) => {
17566
18066
  DismissableLayerBranch.displayName = BRANCH_NAME;
17567
18067
  function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {
17568
18068
  const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);
17569
- const isPointerInsideReactTreeRef = React16.useRef(false);
17570
- const handleClickRef = React16.useRef(() => {});
17571
- React16.useEffect(() => {
18069
+ const isPointerInsideReactTreeRef = React162.useRef(false);
18070
+ const handleClickRef = React162.useRef(() => {});
18071
+ React162.useEffect(() => {
17572
18072
  const handlePointerDown = (event) => {
17573
18073
  if (event.target && !isPointerInsideReactTreeRef.current) {
17574
18074
  let handleAndDispatchPointerDownOutsideEvent2 = function() {
@@ -17603,8 +18103,8 @@ function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?
17603
18103
  }
17604
18104
  function useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {
17605
18105
  const handleFocusOutside = useCallbackRef(onFocusOutside);
17606
- const isFocusInsideReactTreeRef = React16.useRef(false);
17607
- React16.useEffect(() => {
18106
+ const isFocusInsideReactTreeRef = React162.useRef(false);
18107
+ React162.useEffect(() => {
17608
18108
  const handleFocus = (event) => {
17609
18109
  if (event.target && !isFocusInsideReactTreeRef.current) {
17610
18110
  const eventDetail = { originalEvent: event };
@@ -17662,7 +18162,7 @@ var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
17662
18162
  var AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount";
17663
18163
  var EVENT_OPTIONS = { bubbles: false, cancelable: true };
17664
18164
  var FOCUS_SCOPE_NAME = "FocusScope";
17665
- var FocusScope = React182.forwardRef((props, forwardedRef) => {
18165
+ var FocusScope = React18.forwardRef((props, forwardedRef) => {
17666
18166
  const {
17667
18167
  loop = false,
17668
18168
  trapped = false,
@@ -17670,12 +18170,12 @@ var FocusScope = React182.forwardRef((props, forwardedRef) => {
17670
18170
  onUnmountAutoFocus: onUnmountAutoFocusProp,
17671
18171
  ...scopeProps
17672
18172
  } = props;
17673
- const [container22, setContainer] = React182.useState(null);
18173
+ const [container22, setContainer] = React18.useState(null);
17674
18174
  const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);
17675
18175
  const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);
17676
- const lastFocusedElementRef = React182.useRef(null);
18176
+ const lastFocusedElementRef = React18.useRef(null);
17677
18177
  const composedRefs = useComposedRefs2(forwardedRef, (node) => setContainer(node));
17678
- const focusScope = React182.useRef({
18178
+ const focusScope = React18.useRef({
17679
18179
  paused: false,
17680
18180
  pause() {
17681
18181
  this.paused = true;
@@ -17684,7 +18184,7 @@ var FocusScope = React182.forwardRef((props, forwardedRef) => {
17684
18184
  this.paused = false;
17685
18185
  }
17686
18186
  }).current;
17687
- React182.useEffect(() => {
18187
+ React18.useEffect(() => {
17688
18188
  if (trapped) {
17689
18189
  let handleFocusIn2 = function(event) {
17690
18190
  if (focusScope.paused || !container22)
@@ -17726,7 +18226,7 @@ var FocusScope = React182.forwardRef((props, forwardedRef) => {
17726
18226
  };
17727
18227
  }
17728
18228
  }, [trapped, container22, focusScope.paused]);
17729
- React182.useEffect(() => {
18229
+ React18.useEffect(() => {
17730
18230
  if (container22) {
17731
18231
  focusScopesStack.add(focusScope);
17732
18232
  const previouslyFocusedElement = document.activeElement;
@@ -17757,7 +18257,7 @@ var FocusScope = React182.forwardRef((props, forwardedRef) => {
17757
18257
  };
17758
18258
  }
17759
18259
  }, [container22, onMountAutoFocus, onUnmountAutoFocus, focusScope]);
17760
- const handleKeyDown = React182.useCallback((event) => {
18260
+ const handleKeyDown = React18.useCallback((event) => {
17761
18261
  if (!loop && !trapped)
17762
18262
  return;
17763
18263
  if (focusScope.paused)
@@ -19687,7 +20187,7 @@ var Arrow = React222.forwardRef((props, forwardedRef) => {
19687
20187
  Arrow.displayName = NAME;
19688
20188
  var Root2 = Arrow;
19689
20189
  function useSize(element) {
19690
- const [size4, setSize] = React23.useState(undefined);
20190
+ const [size4, setSize] = React232.useState(undefined);
19691
20191
  useLayoutEffect22(() => {
19692
20192
  if (element) {
19693
20193
  setSize({ width: element.offsetWidth, height: element.offsetHeight });
@@ -20009,7 +20509,7 @@ function usePrevious(value) {
20009
20509
  }, [value]);
20010
20510
  }
20011
20511
  var NAME2 = "VisuallyHidden";
20012
- var VisuallyHidden = React282.forwardRef((props, forwardedRef) => {
20512
+ var VisuallyHidden = React28.forwardRef((props, forwardedRef) => {
20013
20513
  return /* @__PURE__ */ jsx232(Primitive.span, {
20014
20514
  ...props,
20015
20515
  ref: forwardedRef,
@@ -20339,7 +20839,7 @@ var SideCar = function(_a) {
20339
20839
  if (!Target) {
20340
20840
  throw new Error("Sidecar medium not found");
20341
20841
  }
20342
- return React30.createElement(Target, __assign({}, rest));
20842
+ return React302.createElement(Target, __assign({}, rest));
20343
20843
  };
20344
20844
  SideCar.isSideCarExport = true;
20345
20845
  function exportSidecar(medium, exported) {
@@ -20350,9 +20850,9 @@ var effectCar = createSidecarMedium();
20350
20850
  var nothing = function() {
20351
20851
  return;
20352
20852
  };
20353
- var RemoveScroll = React312.forwardRef(function(props, parentRef) {
20354
- var ref = React312.useRef(null);
20355
- var _a = React312.useState({
20853
+ var RemoveScroll = React31.forwardRef(function(props, parentRef) {
20854
+ var ref = React31.useRef(null);
20855
+ var _a = React31.useState({
20356
20856
  onScrollCapture: nothing,
20357
20857
  onWheelCapture: nothing,
20358
20858
  onTouchMoveCapture: nothing
@@ -20361,7 +20861,7 @@ var RemoveScroll = React312.forwardRef(function(props, parentRef) {
20361
20861
  var SideCar2 = sideCar;
20362
20862
  var containerRef = useMergeRefs([ref, parentRef]);
20363
20863
  var containerProps = __assign(__assign({}, rest), callbacks);
20364
- 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));
20864
+ 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));
20365
20865
  });
20366
20866
  RemoveScroll.defaultProps = {
20367
20867
  enabled: true,
@@ -20820,8 +21320,8 @@ function getOutermostShadowParent(node) {
20820
21320
  return shadowParent;
20821
21321
  }
20822
21322
  var sidecar_default = exportSidecar(effectCar, RemoveScrollSideCar);
20823
- var ReactRemoveScroll = React35.forwardRef(function(props, ref) {
20824
- return React35.createElement(RemoveScroll, __assign({}, props, { ref, sideCar: sidecar_default }));
21323
+ var ReactRemoveScroll = React352.forwardRef(function(props, ref) {
21324
+ return React352.createElement(RemoveScroll, __assign({}, props, { ref, sideCar: sidecar_default }));
20825
21325
  });
20826
21326
  ReactRemoveScroll.classNames = RemoveScroll.classNames;
20827
21327
  var Combination_default = ReactRemoveScroll;
@@ -21827,7 +22327,7 @@ var ChevronDown = createLucideIcon("ChevronDown", [
21827
22327
  var ChevronUp = createLucideIcon("ChevronUp", [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]]);
21828
22328
  var Select2 = Root222;
21829
22329
  var SelectValue2 = Value;
21830
- var SelectTrigger2 = React372.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs5(Trigger, {
22330
+ var SelectTrigger2 = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs5(Trigger, {
21831
22331
  ref,
21832
22332
  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),
21833
22333
  ...props,
@@ -21842,7 +22342,7 @@ var SelectTrigger2 = React372.forwardRef(({ className, children, ...props }, ref
21842
22342
  ]
21843
22343
  }));
21844
22344
  SelectTrigger2.displayName = Trigger.displayName;
21845
- var SelectScrollUpButton2 = React372.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(ScrollUpButton, {
22345
+ var SelectScrollUpButton2 = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(ScrollUpButton, {
21846
22346
  ref,
21847
22347
  className: cn("flex cursor-default items-center justify-center py-1", className),
21848
22348
  ...props,
@@ -21851,7 +22351,7 @@ var SelectScrollUpButton2 = React372.forwardRef(({ className, ...props }, ref) =
21851
22351
  })
21852
22352
  }));
21853
22353
  SelectScrollUpButton2.displayName = ScrollUpButton.displayName;
21854
- var SelectScrollDownButton2 = React372.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(ScrollDownButton, {
22354
+ var SelectScrollDownButton2 = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(ScrollDownButton, {
21855
22355
  ref,
21856
22356
  className: cn("flex cursor-default items-center justify-center py-1", className),
21857
22357
  ...props,
@@ -21860,7 +22360,7 @@ var SelectScrollDownButton2 = React372.forwardRef(({ className, ...props }, ref)
21860
22360
  })
21861
22361
  }));
21862
22362
  SelectScrollDownButton2.displayName = ScrollDownButton.displayName;
21863
- var SelectContent2 = React372.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx252(Portal2, {
22363
+ var SelectContent2 = React37.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx252(Portal2, {
21864
22364
  children: /* @__PURE__ */ jsxs5(Content2, {
21865
22365
  ref,
21866
22366
  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),
@@ -21877,13 +22377,13 @@ var SelectContent2 = React372.forwardRef(({ className, children, position = "pop
21877
22377
  })
21878
22378
  }));
21879
22379
  SelectContent2.displayName = Content2.displayName;
21880
- var SelectLabel2 = React372.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(Label, {
22380
+ var SelectLabel2 = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(Label, {
21881
22381
  ref,
21882
22382
  className: cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className),
21883
22383
  ...props
21884
22384
  }));
21885
22385
  SelectLabel2.displayName = Label.displayName;
21886
- var SelectItem2 = React372.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs5(Item, {
22386
+ var SelectItem2 = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs5(Item, {
21887
22387
  ref,
21888
22388
  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),
21889
22389
  ...props,
@@ -21902,7 +22402,7 @@ var SelectItem2 = React372.forwardRef(({ className, children, ...props }, ref) =
21902
22402
  ]
21903
22403
  }));
21904
22404
  SelectItem2.displayName = Item.displayName;
21905
- var SelectSeparator2 = React372.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(Separator, {
22405
+ var SelectSeparator2 = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx252(Separator, {
21906
22406
  ref,
21907
22407
  className: cn("-mx-1 my-1 h-px bg-muted", className),
21908
22408
  ...props
@@ -21991,22 +22491,22 @@ function composeContextScopes2(...scopes) {
21991
22491
  }
21992
22492
  function createSlot2(ownerName) {
21993
22493
  const SlotClone2 = /* @__PURE__ */ createSlotClone2(ownerName);
21994
- const Slot22 = React39.forwardRef((props, forwardedRef) => {
22494
+ const Slot22 = React392.forwardRef((props, forwardedRef) => {
21995
22495
  const { children, ...slotProps } = props;
21996
- const childrenArray = React39.Children.toArray(children);
22496
+ const childrenArray = React392.Children.toArray(children);
21997
22497
  const slottable = childrenArray.find(isSlottable3);
21998
22498
  if (slottable) {
21999
22499
  const newElement = slottable.props.children;
22000
22500
  const newChildren = childrenArray.map((child) => {
22001
22501
  if (child === slottable) {
22002
- if (React39.Children.count(newElement) > 1)
22003
- return React39.Children.only(null);
22004
- return React39.isValidElement(newElement) ? newElement.props.children : null;
22502
+ if (React392.Children.count(newElement) > 1)
22503
+ return React392.Children.only(null);
22504
+ return React392.isValidElement(newElement) ? newElement.props.children : null;
22005
22505
  } else {
22006
22506
  return child;
22007
22507
  }
22008
22508
  });
22009
- return /* @__PURE__ */ jsx282(SlotClone2, { ...slotProps, ref: forwardedRef, children: React39.isValidElement(newElement) ? React39.cloneElement(newElement, undefined, newChildren) : null });
22509
+ return /* @__PURE__ */ jsx282(SlotClone2, { ...slotProps, ref: forwardedRef, children: React392.isValidElement(newElement) ? React392.cloneElement(newElement, undefined, newChildren) : null });
22010
22510
  }
22011
22511
  return /* @__PURE__ */ jsx282(SlotClone2, { ...slotProps, ref: forwardedRef, children });
22012
22512
  });
@@ -22014,24 +22514,24 @@ function createSlot2(ownerName) {
22014
22514
  return Slot22;
22015
22515
  }
22016
22516
  function createSlotClone2(ownerName) {
22017
- const SlotClone2 = React39.forwardRef((props, forwardedRef) => {
22517
+ const SlotClone2 = React392.forwardRef((props, forwardedRef) => {
22018
22518
  const { children, ...slotProps } = props;
22019
- if (React39.isValidElement(children)) {
22519
+ if (React392.isValidElement(children)) {
22020
22520
  const childrenRef = getElementRef3(children);
22021
22521
  const props2 = mergeProps3(slotProps, children.props);
22022
- if (children.type !== React39.Fragment) {
22522
+ if (children.type !== React392.Fragment) {
22023
22523
  props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;
22024
22524
  }
22025
- return React39.cloneElement(children, props2);
22525
+ return React392.cloneElement(children, props2);
22026
22526
  }
22027
- return React39.Children.count(children) > 1 ? React39.Children.only(null) : null;
22527
+ return React392.Children.count(children) > 1 ? React392.Children.only(null) : null;
22028
22528
  });
22029
22529
  SlotClone2.displayName = `${ownerName}.SlotClone`;
22030
22530
  return SlotClone2;
22031
22531
  }
22032
22532
  var SLOTTABLE_IDENTIFIER2 = Symbol("radix.slottable");
22033
22533
  function isSlottable3(child) {
22034
- return React39.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER2;
22534
+ return React392.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER2;
22035
22535
  }
22036
22536
  function mergeProps3(slotProps, childProps) {
22037
22537
  const overrideProps = { ...childProps };
@@ -22076,14 +22576,14 @@ function createCollection2(name) {
22076
22576
  const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(PROVIDER_NAME, { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map });
22077
22577
  const CollectionProvider = (props) => {
22078
22578
  const { scope, children } = props;
22079
- const ref = React402.useRef(null);
22080
- const itemMap = React402.useRef(/* @__PURE__ */ new Map).current;
22579
+ const ref = React40.useRef(null);
22580
+ const itemMap = React40.useRef(/* @__PURE__ */ new Map).current;
22081
22581
  return /* @__PURE__ */ jsx292(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });
22082
22582
  };
22083
22583
  CollectionProvider.displayName = PROVIDER_NAME;
22084
22584
  const COLLECTION_SLOT_NAME = name + "CollectionSlot";
22085
22585
  const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);
22086
- const CollectionSlot = React402.forwardRef((props, forwardedRef) => {
22586
+ const CollectionSlot = React40.forwardRef((props, forwardedRef) => {
22087
22587
  const { scope, children } = props;
22088
22588
  const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
22089
22589
  const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);
@@ -22093,12 +22593,12 @@ function createCollection2(name) {
22093
22593
  const ITEM_SLOT_NAME = name + "CollectionItemSlot";
22094
22594
  const ITEM_DATA_ATTR = "data-radix-collection-item";
22095
22595
  const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);
22096
- const CollectionItemSlot = React402.forwardRef((props, forwardedRef) => {
22596
+ const CollectionItemSlot = React40.forwardRef((props, forwardedRef) => {
22097
22597
  const { scope, children, ...itemData } = props;
22098
- const ref = React402.useRef(null);
22598
+ const ref = React40.useRef(null);
22099
22599
  const composedRefs = useComposedRefs(forwardedRef, ref);
22100
22600
  const context = useCollectionContext(ITEM_SLOT_NAME, scope);
22101
- React402.useEffect(() => {
22601
+ React40.useEffect(() => {
22102
22602
  context.itemMap.set(ref, { ref, ...itemData });
22103
22603
  return () => void context.itemMap.delete(ref);
22104
22604
  });
@@ -22107,7 +22607,7 @@ function createCollection2(name) {
22107
22607
  CollectionItemSlot.displayName = ITEM_SLOT_NAME;
22108
22608
  function useCollection2(scope) {
22109
22609
  const context = useCollectionContext(name + "CollectionConsumer", scope);
22110
- const getItems = React402.useCallback(() => {
22610
+ const getItems = React40.useCallback(() => {
22111
22611
  const collectionNode = context.collectionRef.current;
22112
22612
  if (!collectionNode)
22113
22613
  return [];
@@ -22425,7 +22925,7 @@ function toSafeIndex(array, index2) {
22425
22925
  function toSafeInteger(number) {
22426
22926
  return number !== number || number === 0 ? 0 : Math.trunc(number);
22427
22927
  }
22428
- var useLayoutEffect222 = globalThis?.document ? React41.useLayoutEffect : () => {};
22928
+ var useLayoutEffect222 = globalThis?.document ? React412.useLayoutEffect : () => {};
22429
22929
  var useReactId2 = React42[" useId ".trim().toString()] || (() => {
22430
22930
  return;
22431
22931
  });