@zync/zync-screnplay-player 0.1.187

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 (133) hide show
  1. package/dist/ZyncScreenplayPlayer.js +35 -0
  2. package/dist/bundle.js +2 -0
  3. package/dist/bundle.js.LICENSE.txt +54 -0
  4. package/dist/index.js +4 -0
  5. package/dist/screenplay/RemotionRenderer/RemotionRenderer.js +281 -0
  6. package/dist/screenplay/RemotionRenderer/Root.js +22 -0
  7. package/dist/screenplay/RemotionRenderer/components/LottieAnimationGlobal.js +116 -0
  8. package/dist/screenplay/RemotionRenderer/components/backgrounds/VirtualBackground.js +26 -0
  9. package/dist/screenplay/RemotionRenderer/components/backgrounds/VirtualBackgroundUnderlay.js +41 -0
  10. package/dist/screenplay/RemotionRenderer/components/captions/CaptionSimple.js +12 -0
  11. package/dist/screenplay/RemotionRenderer/components/effects/BrollFullscreen.js +27 -0
  12. package/dist/screenplay/RemotionRenderer/components/effects/GlitchText.js +22 -0
  13. package/dist/screenplay/RemotionRenderer/components/effects/HandoffNametag.js +7 -0
  14. package/dist/screenplay/RemotionRenderer/components/effects/LottieAnimation.js +64 -0
  15. package/dist/screenplay/RemotionRenderer/components/effects/Nametag.js +9 -0
  16. package/dist/screenplay/RemotionRenderer/components/effects/PhraseRainbowEffect.js +34 -0
  17. package/dist/screenplay/RemotionRenderer/components/effects/Sentence.js +50 -0
  18. package/dist/screenplay/RemotionRenderer/components/effects/Title.js +12 -0
  19. package/dist/screenplay/RemotionRenderer/components/layouts/BrollGreenScreen.js +742 -0
  20. package/dist/screenplay/RemotionRenderer/components/layouts/BrollSplitScreen.js +714 -0
  21. package/dist/screenplay/RemotionRenderer/components/layouts/BrollStudioBackdrop.js +620 -0
  22. package/dist/screenplay/RemotionRenderer/components/layouts/DynamicTriangle.js +618 -0
  23. package/dist/screenplay/RemotionRenderer/components/layouts/Handoff.js +161 -0
  24. package/dist/screenplay/RemotionRenderer/components/layouts/IntroVideo.js +1330 -0
  25. package/dist/screenplay/RemotionRenderer/components/layouts/KeyPointOverlayDepth.js +397 -0
  26. package/dist/screenplay/RemotionRenderer/components/layouts/Keyword.js +539 -0
  27. package/dist/screenplay/RemotionRenderer/components/layouts/KeywordStudioBackdrop.js +714 -0
  28. package/dist/screenplay/RemotionRenderer/components/layouts/MotionStill.js +381 -0
  29. package/dist/screenplay/RemotionRenderer/components/layouts/MotionStillFullScreen.js +178 -0
  30. package/dist/screenplay/RemotionRenderer/components/layouts/MotionStillGreenScreen.js +568 -0
  31. package/dist/screenplay/RemotionRenderer/components/layouts/MotionStillGreenScreenV2.js +731 -0
  32. package/dist/screenplay/RemotionRenderer/components/layouts/MotionStillStudioBackdrop.js +588 -0
  33. package/dist/screenplay/RemotionRenderer/components/layouts/SimpleFrame.js +183 -0
  34. package/dist/screenplay/RemotionRenderer/components/layouts/SimpleFrameBroll.js +181 -0
  35. package/dist/screenplay/RemotionRenderer/components/layouts/SimpleFrameSentence.js +17 -0
  36. package/dist/screenplay/RemotionRenderer/components/layouts/SimpleFrameZoomCut.js +13 -0
  37. package/dist/screenplay/RemotionRenderer/components/layouts/TextWithVideo.js +373 -0
  38. package/dist/screenplay/RemotionRenderer/components/layouts/quote-bubble-animation.json +1 -0
  39. package/dist/screenplay/RemotionRenderer/components/utils/BlurOverlay.js +19 -0
  40. package/dist/screenplay/RemotionRenderer/components/utils/ChromaKeyedVideo.js +59 -0
  41. package/dist/screenplay/RemotionRenderer/components/utils/FaceCenteredVideo.js +562 -0
  42. package/dist/screenplay/RemotionRenderer/components/utils/PausableImg.js +124 -0
  43. package/dist/screenplay/RemotionRenderer/components/utils/README.md +80 -0
  44. package/dist/screenplay/RemotionRenderer/components/utils/SafeZones.js +69 -0
  45. package/dist/screenplay/RemotionRenderer/components/utils/StretchText.js +124 -0
  46. package/dist/screenplay/RemotionRenderer/components/utils/StretchTextDemo.js +66 -0
  47. package/dist/screenplay/RemotionRenderer/config.js +8 -0
  48. package/dist/screenplay/RemotionRenderer/development.js +1370 -0
  49. package/dist/screenplay/RemotionRenderer/helpers/cleanFacemetadata.js +29 -0
  50. package/dist/screenplay/RemotionRenderer/helpers/convertToSeconds.js +14 -0
  51. package/dist/screenplay/RemotionRenderer/helpers/faceBasedVideoStyles.js +212 -0
  52. package/dist/screenplay/RemotionRenderer/helpers/faceCenteredVideoTransforms.js +468 -0
  53. package/dist/screenplay/RemotionRenderer/helpers/getContrastColor.js +15 -0
  54. package/dist/screenplay/RemotionRenderer/helpers/getVideoOrientation.js +21 -0
  55. package/dist/screenplay/RemotionRenderer/helpers/hexToRgb.js +48 -0
  56. package/dist/screenplay/RemotionRenderer/hooks/useLottieReplaceColor.js +45 -0
  57. package/dist/screenplay/RemotionRenderer/hooks/useOrientationBased.js +29 -0
  58. package/dist/screenplay/RemotionRenderer/hooks/useTimeInterpolate.js +54 -0
  59. package/dist/screenplay/RemotionRenderer/hooks/useVirtualBackground.js +38 -0
  60. package/dist/screenplay/RemotionRenderer/index.js +3 -0
  61. package/dist/screenplay/RemotionRenderer/main/lib/Sequence.js +76 -0
  62. package/dist/screenplay/RemotionRenderer/main/lib/layouts/DefaultLayout.js +72 -0
  63. package/dist/screenplay/RemotionRenderer/main/lib/layouts/DynamicTriangleLayout.js +54 -0
  64. package/dist/screenplay/RemotionRenderer/main/lib/layouts/HandoffLayout.js +50 -0
  65. package/dist/screenplay/RemotionRenderer/main/lib/layouts/IntroVideoLayout.js +33 -0
  66. package/dist/screenplay/RemotionRenderer/main/lib/layouts/KeywordLayout.js +36 -0
  67. package/dist/screenplay/RemotionRenderer/main/lib/layouts/LayoutFactory.js +68 -0
  68. package/dist/screenplay/RemotionRenderer/main/lib/layouts/MotionStillLayout.js +36 -0
  69. package/dist/screenplay/RemotionRenderer/main/lib/layouts/SimpleFrameLayout.js +43 -0
  70. package/dist/screenplay/RemotionRenderer/main/lib/layouts/TextWithVideoLayout.js +52 -0
  71. package/dist/screenplay/RemotionRenderer/main/screenplaySchema.js +92 -0
  72. package/dist/screenplay/RemotionRenderer/registeredComponents.js +91 -0
  73. package/dist/screenplay/RemotionRenderer/theme/config.js +8 -0
  74. package/dist/screenplay/RemotionRenderer/theme/hooks/useTheme.js +24 -0
  75. package/dist/screenplay/RemotionRenderer/theme/hooks/useThemedComponents.js +101 -0
  76. package/dist/screenplay/RemotionRenderer/theme/themes/bigbold/BigBoldNameTag.js +147 -0
  77. package/dist/screenplay/RemotionRenderer/theme/themes/bigbold/BigBoldSentence.js +138 -0
  78. package/dist/screenplay/RemotionRenderer/theme/themes/bigbold/BigBoldTitle.js +136 -0
  79. package/dist/screenplay/RemotionRenderer/theme/themes/default/CaptionColor.js +67 -0
  80. package/dist/screenplay/RemotionRenderer/theme/themes/default/CaptionColorInverse.js +67 -0
  81. package/dist/screenplay/RemotionRenderer/theme/themes/default/CaptionColorShadow.js +66 -0
  82. package/dist/screenplay/RemotionRenderer/theme/themes/default/CaptionElegant.js +134 -0
  83. package/dist/screenplay/RemotionRenderer/theme/themes/default/CaptionEmphasis.js +122 -0
  84. package/dist/screenplay/RemotionRenderer/theme/themes/default/CaptionPunctuated.js +84 -0
  85. package/dist/screenplay/RemotionRenderer/theme/themes/default/CaptionWordBoom.js +88 -0
  86. package/dist/screenplay/RemotionRenderer/theme/themes/default/CaptionWordBubble.js +91 -0
  87. package/dist/screenplay/RemotionRenderer/theme/themes/default/CaptionWordPopup.js +118 -0
  88. package/dist/screenplay/RemotionRenderer/theme/themes/default/DefaultCaption.js +62 -0
  89. package/dist/screenplay/RemotionRenderer/theme/themes/default/HandoffNametag/handoffNametagConfig.js +59 -0
  90. package/dist/screenplay/RemotionRenderer/theme/themes/default/HandoffNametag.js +173 -0
  91. package/dist/screenplay/RemotionRenderer/theme/themes/default/Nametag.js +129 -0
  92. package/dist/screenplay/RemotionRenderer/theme/themes/default/Sentence/AnimatedSentence.js +20 -0
  93. package/dist/screenplay/RemotionRenderer/theme/themes/default/Sentence/AnimatedSentenceDefault.js +29 -0
  94. package/dist/screenplay/RemotionRenderer/theme/themes/default/Sentence/SentenceSimple.helpers.js +61 -0
  95. package/dist/screenplay/RemotionRenderer/theme/themes/default/Sentence.js +86 -0
  96. package/dist/screenplay/RemotionRenderer/theme/themes/default/Title.js +112 -0
  97. package/dist/screenplay/RemotionRenderer/theme/themes/default/constants.js +1 -0
  98. package/dist/screenplay/RemotionRenderer/theme/themes/glassmorphism/Nametag.js +134 -0
  99. package/dist/screenplay/RemotionRenderer/theme/themes/glassmorphism/Sentence.js +49 -0
  100. package/dist/screenplay/RemotionRenderer/theme/themes/glassmorphism/Title.js +108 -0
  101. package/dist/screenplay/RemotionRenderer/theme/themes/glassmorphism/animations.js +30 -0
  102. package/dist/screenplay/RemotionRenderer/theme/themes/glassmorphism/config.js +9 -0
  103. package/dist/screenplay/RemotionRenderer/theme/themes/glitch/GlitchNametag.js +252 -0
  104. package/dist/screenplay/RemotionRenderer/theme/themes/glitch/GlitchSentence.js +156 -0
  105. package/dist/screenplay/RemotionRenderer/theme/themes/glitch/GlitchTitle.js +142 -0
  106. package/dist/screenplay/RemotionRenderer/theme/themes/glitch/components/DisplacedText.js +66 -0
  107. package/dist/screenplay/RemotionRenderer/theme/themes/glitch/components/GlitchAnimatedLine.js +38 -0
  108. package/dist/screenplay/RemotionRenderer/theme/themes/glitch/components/SplitSentence.js +80 -0
  109. package/dist/screenplay/RemotionRenderer/theme/themes/glitch/helpers.js +32 -0
  110. package/dist/screenplay/RemotionRenderer/theme/themes/none/Nametag.js +3 -0
  111. package/dist/screenplay/RemotionRenderer/theme/themes/none/Title.js +3 -0
  112. package/dist/screenplay/RemotionRenderer/theme/themes/pushpull/PushPullNametag.js +165 -0
  113. package/dist/screenplay/RemotionRenderer/theme/themes/pushpull/PushPullSentence.js +94 -0
  114. package/dist/screenplay/RemotionRenderer/theme/themes/pushpull/PushPullTitle.js +98 -0
  115. package/dist/screenplay/RemotionRenderer/theme/themes/pushpull/designs/sentence.js +92 -0
  116. package/dist/screenplay/RemotionRenderer/theme/themes/pushpull/designs/title.js +119 -0
  117. package/dist/screenplay/RemotionRenderer/theme/themes/sports/Nametag.js +122 -0
  118. package/dist/screenplay/RemotionRenderer/theme/themes/sports/SportsCaption.js +93 -0
  119. package/dist/screenplay/RemotionRenderer/theme/themes/sports/SportsSentence.js +76 -0
  120. package/dist/screenplay/RemotionRenderer/theme/themes/sports/Title.js +90 -0
  121. package/dist/screenplay/RemotionRenderer/theme/themes/sports/shared.js +62 -0
  122. package/dist/screenplay/RemotionRenderer/theme/themes/sportsbounce/Nametag.js +145 -0
  123. package/dist/screenplay/RemotionRenderer/theme/themes/sportsbounce/SportsBounceSentence.js +148 -0
  124. package/dist/screenplay/RemotionRenderer/theme/themes/sportsbounce/Title.js +160 -0
  125. package/dist/screenplay/RemotionRenderer/tracks/AudioTrack.js +23 -0
  126. package/dist/screenplay/RemotionRenderer/tracks/CaptionsVideoTrack.js +23 -0
  127. package/dist/screenplay/RemotionRenderer/tracks/DynamicVideoComposition.js +31 -0
  128. package/dist/screenplay/RemotionRenderer/tracks/EffectsVideoTrack.js +23 -0
  129. package/dist/screenplay/RemotionRenderer/tracks/LayoutVideoTrack.js +141 -0
  130. package/dist/screenplay/RemotionRenderer/tracks/Soundtrack.js +16 -0
  131. package/dist/screenplay/RemotionRenderer/tracks/Watermark.js +23 -0
  132. package/dist/screenplay/RemotionRenderer/tracks/transitions/GlitchOne.js +92 -0
  133. package/package.json +45 -0
@@ -0,0 +1,620 @@
1
+ import React from "react";
2
+ import { AbsoluteFill, Audio, OffthreadVideo, useVideoConfig, spring, useCurrentFrame } from "remotion";
3
+ import { useOrientationBased } from "../../hooks/useOrientationBased.js";
4
+ import { CHROME_PADDING } from "../../config.js";
5
+ import FaceCenteredVideo from "../utils/FaceCenteredVideo";
6
+ import PausableImg from "../utils/PausableImg";
7
+ import { BlurOverlay } from "../utils/BlurOverlay";
8
+ import { useVirtualBackground } from "../../hooks/useVirtualBackground";
9
+ import { VirtualBackground } from "../backgrounds/VirtualBackground";
10
+ var Square = function Square(_ref) {
11
+ var children = _ref.children,
12
+ brollUrl = _ref.brollUrl,
13
+ brollSpringProgress = _ref.brollSpringProgress,
14
+ width = _ref.width,
15
+ height = _ref.height,
16
+ logoUrl = _ref.logoUrl,
17
+ logoLeft = _ref.logoLeft,
18
+ logoTop = _ref.logoTop,
19
+ frameColor = _ref.frameColor,
20
+ startVideoFrom = _ref.startVideoFrom,
21
+ noBackgroundVideoUrl = _ref.noBackgroundVideoUrl,
22
+ sourceVideoOrientation = _ref.sourceVideoOrientation,
23
+ videoUrl = _ref.videoUrl,
24
+ faceMetadata = _ref.faceMetadata,
25
+ noBackgroundVideoEffects = _ref.noBackgroundVideoEffects,
26
+ showVirtual = _ref.showVirtual,
27
+ virtualBgUrl = _ref.virtualBgUrl;
28
+ // Calculate broll container dimensions with 2.5% left/right, 10% top/bottom margins
29
+ var brollContainerWidth = width * 0.95; // 95% of viewport (2.5% margin on each side)
30
+ var brollContainerHeight = height * 0.8; // 80% of viewport (10% margin on top/bottom)
31
+
32
+ // Assume 16:9 aspect ratio for broll video
33
+ var brollAspectRatio = 16 / 9;
34
+ var maxBrollWidth = Math.min(brollContainerWidth, brollContainerHeight * brollAspectRatio);
35
+ var finalBrollHeight = maxBrollWidth / brollAspectRatio;
36
+
37
+ // Start with full width, zero height, grow vertically from top with padding
38
+ var currentBrollHeight = finalBrollHeight * brollSpringProgress;
39
+ var brollTop = height * 0.1; // Align to top with 10% padding
40
+
41
+ return /*#__PURE__*/React.createElement(AbsoluteFill, {
42
+ style: {
43
+ backgroundColor: frameColor || "transparent",
44
+ padding: 0,
45
+ isolation: "isolate"
46
+ }
47
+ }, /*#__PURE__*/React.createElement("div", {
48
+ style: {
49
+ position: "absolute",
50
+ overflow: "hidden",
51
+ width: width,
52
+ height: height,
53
+ top: 0,
54
+ left: 0,
55
+ zIndex: 1
56
+ }
57
+ }, showVirtual && virtualBgUrl ? /*#__PURE__*/React.createElement(VirtualBackground, {
58
+ url: virtualBgUrl,
59
+ zIndex: 1
60
+ }) : null, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
61
+ startFrom: startVideoFrom,
62
+ src: videoUrl,
63
+ faceMetadata: faceMetadata,
64
+ containerWidth: width,
65
+ containerHeight: height,
66
+ useAveragePosition: true,
67
+ centerHorizontally: false,
68
+ muted: true,
69
+ style: {
70
+ filter: !showVirtual && noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.backgroundDim && noBackgroundVideoUrl ? "brightness(0.7)" : undefined
71
+ }
72
+ }) : /*#__PURE__*/React.createElement(OffthreadVideo, {
73
+ startFrom: startVideoFrom,
74
+ src: videoUrl,
75
+ muted: true,
76
+ style: {
77
+ height: "100%",
78
+ objectFit: "cover",
79
+ width: "100%",
80
+ objectPosition: sourceVideoOrientation === "portrait" ? "0% 30%" : undefined,
81
+ filter: !showVirtual && noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.backgroundDim && noBackgroundVideoUrl ? "brightness(0.7)" : undefined
82
+ }
83
+ })), /*#__PURE__*/React.createElement(BlurOverlay, {
84
+ show: !showVirtual && (noBackgroundVideoEffects === null || noBackgroundVideoEffects === void 0 ? void 0 : noBackgroundVideoEffects.backgroundBlur) && noBackgroundVideoUrl,
85
+ width: width,
86
+ height: height,
87
+ zIndex: 1
88
+ }), brollUrl && brollSpringProgress > 0 && /*#__PURE__*/React.createElement("div", {
89
+ style: {
90
+ position: "absolute",
91
+ overflow: "hidden",
92
+ inset: "".concat(height * 0.1, "px ").concat(width * 0.05, "px"),
93
+ height: currentBrollHeight,
94
+ top: brollTop,
95
+ left: width * 0.025 + (brollContainerWidth - maxBrollWidth) / 2,
96
+ width: maxBrollWidth,
97
+ zIndex: 2,
98
+ opacity: 0.85 * brollSpringProgress,
99
+ borderRadius: "12px",
100
+ border: "16px solid rgba(255, 255, 255, 0.2)",
101
+ boxShadow: "0 8px 32px rgba(0, 0, 0, 0.3)",
102
+ backdropFilter: "blur(1px)",
103
+ WebkitBackdropFilter: "blur(1px)"
104
+ }
105
+ }, /*#__PURE__*/React.createElement(OffthreadVideo, {
106
+ src: brollUrl,
107
+ style: {
108
+ height: "100%",
109
+ objectFit: "cover",
110
+ width: "100%",
111
+ opacity: 0.9
112
+ },
113
+ muted: true
114
+ }), /*#__PURE__*/React.createElement("div", {
115
+ style: {
116
+ position: "absolute",
117
+ top: 0,
118
+ left: 0,
119
+ right: 0,
120
+ bottom: 0,
121
+ background: "linear-gradient(45deg, rgba(255,255,255,0.1) 0%, rgba(0,0,0,0.1) 100%)",
122
+ mixBlendMode: "overlay"
123
+ }
124
+ })), /*#__PURE__*/React.createElement("div", {
125
+ style: {
126
+ position: "absolute",
127
+ overflow: "hidden",
128
+ width: width,
129
+ height: height,
130
+ top: 0,
131
+ left: 0,
132
+ zIndex: 3
133
+ }
134
+ }, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
135
+ startFrom: startVideoFrom,
136
+ src: noBackgroundVideoUrl,
137
+ faceMetadata: faceMetadata,
138
+ containerWidth: width,
139
+ containerHeight: height,
140
+ useAveragePosition: true,
141
+ centerHorizontally: false,
142
+ transparent: true,
143
+ muted: false,
144
+ noBackgroundVideoEffects: noBackgroundVideoEffects,
145
+ style: {
146
+ zIndex: 2
147
+ }
148
+ }) : /*#__PURE__*/React.createElement(OffthreadVideo, {
149
+ startFrom: startVideoFrom,
150
+ src: noBackgroundVideoUrl,
151
+ muted: false,
152
+ transparent: true,
153
+ style: {
154
+ filter: noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.facePop ? "brightness(1.1) contrast(1.15) saturate(1.05)" : undefined,
155
+ height: "100%",
156
+ objectFit: "cover",
157
+ width: "100%",
158
+ zIndex: 2,
159
+ objectPosition: sourceVideoOrientation === "portrait" ? "0% 30%" : undefined
160
+ }
161
+ })), /*#__PURE__*/React.createElement(AbsoluteFill, {
162
+ style: {
163
+ zIndex: 4
164
+ }
165
+ }, children), logoUrl ? /*#__PURE__*/React.createElement("div", {
166
+ style: {
167
+ position: "fixed",
168
+ left: logoLeft,
169
+ top: logoTop,
170
+ padding: 20,
171
+ zIndex: 10
172
+ }
173
+ }, /*#__PURE__*/React.createElement(PausableImg, {
174
+ delayRenderTimeoutInMilliseconds: 61000,
175
+ style: {
176
+ width: "225px",
177
+ maxHeight: "auto",
178
+ objectFit: "contain"
179
+ },
180
+ src: logoUrl
181
+ })) : null);
182
+ };
183
+ var Portrait = function Portrait(_ref2) {
184
+ var children = _ref2.children,
185
+ brollUrl = _ref2.brollUrl,
186
+ brollSpringProgress = _ref2.brollSpringProgress,
187
+ width = _ref2.width,
188
+ height = _ref2.height,
189
+ logoUrl = _ref2.logoUrl,
190
+ logoLeft = _ref2.logoLeft,
191
+ logoTop = _ref2.logoTop,
192
+ frameColor = _ref2.frameColor,
193
+ startVideoFrom = _ref2.startVideoFrom,
194
+ noBackgroundVideoUrl = _ref2.noBackgroundVideoUrl,
195
+ sourceVideoOrientation = _ref2.sourceVideoOrientation,
196
+ videoUrl = _ref2.videoUrl,
197
+ faceMetadata = _ref2.faceMetadata,
198
+ noBackgroundVideoEffects = _ref2.noBackgroundVideoEffects,
199
+ showVirtual = _ref2.showVirtual,
200
+ virtualBgUrl = _ref2.virtualBgUrl;
201
+ // Calculate broll container dimensions with 2.5% left/right, 10% top/bottom margins
202
+ var brollContainerWidth = width * 0.95; // 95% of viewport (2.5% margin on each side)
203
+ var brollContainerHeight = height * 0.8; // 80% of viewport (10% margin on top/bottom)
204
+
205
+ // Assume 16:9 aspect ratio for broll video
206
+ var brollAspectRatio = 16 / 9;
207
+ var maxBrollWidth = Math.min(brollContainerWidth, brollContainerHeight * brollAspectRatio);
208
+ var finalBrollHeight = maxBrollWidth / brollAspectRatio;
209
+
210
+ // Start with full width, zero height, grow vertically from top with padding
211
+ var currentBrollHeight = finalBrollHeight * brollSpringProgress;
212
+ var brollTop = height * 0.1; // Align to top with 10% padding
213
+ return /*#__PURE__*/React.createElement(AbsoluteFill, {
214
+ style: {
215
+ backgroundColor: frameColor || "transparent",
216
+ padding: 0,
217
+ isolation: "isolate"
218
+ }
219
+ }, /*#__PURE__*/React.createElement("div", {
220
+ style: {
221
+ position: "absolute",
222
+ overflow: "hidden",
223
+ width: width,
224
+ height: height,
225
+ top: 0,
226
+ left: 0,
227
+ zIndex: 1
228
+ }
229
+ }, showVirtual && virtualBgUrl ? /*#__PURE__*/React.createElement(VirtualBackground, {
230
+ url: virtualBgUrl,
231
+ zIndex: 1
232
+ }) : null, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
233
+ startFrom: startVideoFrom,
234
+ src: videoUrl,
235
+ faceMetadata: faceMetadata,
236
+ containerWidth: width,
237
+ containerHeight: height,
238
+ useAveragePosition: true,
239
+ centerHorizontally: false,
240
+ transparent: false,
241
+ muted: true,
242
+ noBackgroundVideoEffects: noBackgroundVideoEffects,
243
+ style: {
244
+ filter: !showVirtual && noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.backgroundDim && noBackgroundVideoUrl ? "brightness(0.7)" : undefined
245
+ }
246
+ }) : /*#__PURE__*/React.createElement(OffthreadVideo, {
247
+ startFrom: startVideoFrom,
248
+ src: videoUrl,
249
+ muted: true,
250
+ transparent: false,
251
+ style: {
252
+ height: "100%",
253
+ objectFit: "cover",
254
+ width: "100%",
255
+ objectPosition: sourceVideoOrientation === "portrait" ? "0% 30%" : undefined,
256
+ filter: !showVirtual && noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.backgroundDim && noBackgroundVideoUrl ? "brightness(0.7)" : undefined
257
+ }
258
+ })), /*#__PURE__*/React.createElement(BlurOverlay, {
259
+ show: !showVirtual && (noBackgroundVideoEffects === null || noBackgroundVideoEffects === void 0 ? void 0 : noBackgroundVideoEffects.backgroundBlur) && noBackgroundVideoUrl,
260
+ width: width,
261
+ height: height,
262
+ zIndex: 1
263
+ }), brollUrl && brollSpringProgress > 0 && /*#__PURE__*/React.createElement("div", {
264
+ style: {
265
+ position: "absolute",
266
+ overflow: "hidden",
267
+ borderRadius: "16px",
268
+ height: currentBrollHeight,
269
+ top: brollTop,
270
+ left: width * 0.025 + (brollContainerWidth - maxBrollWidth) / 2,
271
+ width: maxBrollWidth,
272
+ zIndex: 2,
273
+ opacity: 0.8 * brollSpringProgress,
274
+ border: "16px solid rgba(255, 255, 255, 0.25)",
275
+ boxShadow: "0 12px 40px rgba(0, 0, 0, 0.4)",
276
+ backdropFilter: "blur(2px) brightness(1.1)",
277
+ WebkitBackdropFilter: "blur(2px) brightness(1.1)"
278
+ }
279
+ }, /*#__PURE__*/React.createElement(OffthreadVideo, {
280
+ src: brollUrl,
281
+ style: {
282
+ height: "100%",
283
+ objectFit: "cover",
284
+ width: "100%",
285
+ opacity: 0.85
286
+ },
287
+ muted: true
288
+ }), /*#__PURE__*/React.createElement("div", {
289
+ style: {
290
+ position: "absolute",
291
+ top: 0,
292
+ left: 0,
293
+ right: 0,
294
+ bottom: 0,
295
+ background: "radial-gradient(circle at center, rgba(255,255,255,0.15) 0%, rgba(0,0,0,0.1) 70%)",
296
+ mixBlendMode: "soft-light"
297
+ }
298
+ })), /*#__PURE__*/React.createElement("div", {
299
+ style: {
300
+ position: "absolute",
301
+ overflow: "hidden",
302
+ width: width,
303
+ height: height,
304
+ top: 0,
305
+ left: 0,
306
+ zIndex: 3
307
+ }
308
+ }, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
309
+ startFrom: startVideoFrom,
310
+ src: noBackgroundVideoUrl,
311
+ faceMetadata: faceMetadata,
312
+ containerWidth: width,
313
+ containerHeight: height,
314
+ useAveragePosition: true,
315
+ centerHorizontally: false,
316
+ transparent: true,
317
+ muted: false,
318
+ noBackgroundVideoEffects: noBackgroundVideoEffects
319
+ }) : /*#__PURE__*/React.createElement(OffthreadVideo, {
320
+ startFrom: startVideoFrom,
321
+ src: noBackgroundVideoUrl,
322
+ muted: false,
323
+ transparent: true,
324
+ style: {
325
+ filter: noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.facePop ? "brightness(1.1) contrast(1.15) saturate(1.05)" : undefined,
326
+ height: "100%",
327
+ objectFit: "cover",
328
+ width: "100%",
329
+ objectPosition: sourceVideoOrientation === "portrait" ? "0% 30%" : undefined
330
+ }
331
+ })), /*#__PURE__*/React.createElement(AbsoluteFill, {
332
+ style: {
333
+ zIndex: 4
334
+ }
335
+ }, children), logoUrl ? /*#__PURE__*/React.createElement("div", {
336
+ style: {
337
+ position: "fixed",
338
+ left: logoLeft,
339
+ top: logoTop,
340
+ padding: 20,
341
+ zIndex: 10
342
+ }
343
+ }, /*#__PURE__*/React.createElement(PausableImg, {
344
+ delayRenderTimeoutInMilliseconds: 61000,
345
+ style: {
346
+ width: "225px",
347
+ maxHeight: "auto",
348
+ objectFit: "contain"
349
+ },
350
+ src: logoUrl
351
+ })) : null);
352
+ };
353
+ var Landscape = function Landscape(_ref3) {
354
+ var children = _ref3.children,
355
+ brollUrl = _ref3.brollUrl,
356
+ brollSpringProgress = _ref3.brollSpringProgress,
357
+ width = _ref3.width,
358
+ height = _ref3.height,
359
+ logoUrl = _ref3.logoUrl,
360
+ logoLeft = _ref3.logoLeft,
361
+ logoTop = _ref3.logoTop,
362
+ frameColor = _ref3.frameColor,
363
+ startVideoFrom = _ref3.startVideoFrom,
364
+ noBackgroundVideoUrl = _ref3.noBackgroundVideoUrl,
365
+ sourceVideoOrientation = _ref3.sourceVideoOrientation,
366
+ videoUrl = _ref3.videoUrl,
367
+ faceMetadata = _ref3.faceMetadata,
368
+ noBackgroundVideoEffects = _ref3.noBackgroundVideoEffects,
369
+ showVirtual = _ref3.showVirtual,
370
+ virtualBgUrl = _ref3.virtualBgUrl;
371
+ // Calculate broll container dimensions with 2.5% left/right, 10% top/bottom margins
372
+ var brollContainerWidth = width * 0.95; // 95% of viewport (2.5% margin on each side)
373
+ var brollContainerHeight = height * 0.8; // 80% of viewport (10% margin on top/bottom)
374
+
375
+ // Assume 16:9 aspect ratio for broll video
376
+ var brollAspectRatio = 16 / 9;
377
+ var maxBrollWidth = Math.min(brollContainerWidth, brollContainerHeight * brollAspectRatio);
378
+ var finalBrollHeight = maxBrollWidth / brollAspectRatio;
379
+
380
+ // Start with full width, zero height, grow vertically from center
381
+ var currentBrollHeight = finalBrollHeight * brollSpringProgress;
382
+ var brollTop = height * 0.1 + (brollContainerHeight - currentBrollHeight) / 2;
383
+ return /*#__PURE__*/React.createElement(AbsoluteFill, {
384
+ style: {
385
+ backgroundColor: frameColor || "transparent",
386
+ padding: 0,
387
+ isolation: "isolate"
388
+ }
389
+ }, /*#__PURE__*/React.createElement("div", {
390
+ style: {
391
+ position: "absolute",
392
+ overflow: "hidden",
393
+ width: width,
394
+ height: height,
395
+ top: 0,
396
+ left: 0,
397
+ zIndex: 1
398
+ }
399
+ }, showVirtual && virtualBgUrl ? /*#__PURE__*/React.createElement(VirtualBackground, {
400
+ url: virtualBgUrl,
401
+ zIndex: 1
402
+ }) : null, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
403
+ startFrom: startVideoFrom,
404
+ src: videoUrl,
405
+ faceMetadata: faceMetadata,
406
+ containerWidth: width,
407
+ containerHeight: height,
408
+ useAveragePosition: true,
409
+ centerHorizontally: false,
410
+ muted: true
411
+ }) : /*#__PURE__*/React.createElement(OffthreadVideo, {
412
+ startFrom: startVideoFrom,
413
+ src: videoUrl,
414
+ muted: true,
415
+ style: {
416
+ height: "100%",
417
+ objectFit: "cover",
418
+ width: "100%",
419
+ objectPosition: sourceVideoOrientation === "portrait" ? "0% 30%" : undefined,
420
+ filter: !showVirtual && noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.backgroundDim && noBackgroundVideoUrl ? "brightness(0.7)" : undefined
421
+ }
422
+ })), /*#__PURE__*/React.createElement(BlurOverlay, {
423
+ show: !showVirtual && (noBackgroundVideoEffects === null || noBackgroundVideoEffects === void 0 ? void 0 : noBackgroundVideoEffects.backgroundBlur) && noBackgroundVideoUrl,
424
+ width: width,
425
+ height: height,
426
+ zIndex: 1
427
+ }), brollUrl && brollSpringProgress > 0 && /*#__PURE__*/React.createElement("div", {
428
+ style: {
429
+ position: "absolute",
430
+ overflow: "hidden",
431
+ borderRadius: "20px",
432
+ height: currentBrollHeight,
433
+ top: brollTop,
434
+ left: width * 0.025 + (brollContainerWidth - maxBrollWidth) / 2,
435
+ width: maxBrollWidth,
436
+ zIndex: 2,
437
+ opacity: 0.75 * brollSpringProgress,
438
+ border: "48px solid rgba(255, 255, 255, 0.3)",
439
+ boxShadow: "0 16px 60px rgba(0, 0, 0, 0.5)",
440
+ backdropFilter: "blur(30px) contrast(1.1)",
441
+ WebkitBackdropFilter: "blur(3px) contrast(1.1)"
442
+ }
443
+ }, /*#__PURE__*/React.createElement(OffthreadVideo, {
444
+ src: brollUrl,
445
+ style: {
446
+ overflow: "hidden",
447
+ borderRadius: "20px",
448
+ height: "100%",
449
+ objectFit: "cover",
450
+ width: "100%",
451
+ opacity: 0.9
452
+ },
453
+ muted: true
454
+ }), /*#__PURE__*/React.createElement("div", {
455
+ style: {
456
+ borderRadius: "20px",
457
+ position: "absolute",
458
+ top: 0,
459
+ left: 0,
460
+ right: 0,
461
+ bottom: 0,
462
+ background: "linear-gradient(135deg, rgba(255,255,255,0.2) 0%, rgba(0,0,0,0.15) 100%)",
463
+ mixBlendMode: "overlay"
464
+ }
465
+ })), /*#__PURE__*/React.createElement("div", {
466
+ style: {
467
+ position: "absolute",
468
+ overflow: "hidden",
469
+ width: width,
470
+ height: height,
471
+ top: 0,
472
+ left: 0,
473
+ zIndex: 3
474
+ }
475
+ }, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
476
+ startFrom: startVideoFrom,
477
+ src: noBackgroundVideoUrl,
478
+ faceMetadata: faceMetadata,
479
+ containerWidth: width,
480
+ containerHeight: height,
481
+ useAveragePosition: true,
482
+ centerHorizontally: false,
483
+ transparent: true,
484
+ muted: false,
485
+ noBackgroundVideoEffects: noBackgroundVideoEffects
486
+ }) : /*#__PURE__*/React.createElement(OffthreadVideo, {
487
+ startFrom: startVideoFrom,
488
+ src: noBackgroundVideoUrl,
489
+ muted: false,
490
+ transparent: true,
491
+ style: {
492
+ filter: noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.facePop ? "brightness(1.1) contrast(1.15) saturate(1.05)" : undefined,
493
+ height: "100%",
494
+ objectFit: "cover",
495
+ width: "100%",
496
+ objectPosition: sourceVideoOrientation === "portrait" ? "0% 30%" : undefined
497
+ }
498
+ })), /*#__PURE__*/React.createElement(AbsoluteFill, {
499
+ style: {
500
+ zIndex: 14
501
+ }
502
+ }, children), logoUrl ? /*#__PURE__*/React.createElement("div", {
503
+ style: {
504
+ position: "fixed",
505
+ left: logoLeft,
506
+ top: logoTop,
507
+ padding: 20,
508
+ zIndex: 10
509
+ }
510
+ }, /*#__PURE__*/React.createElement(PausableImg, {
511
+ delayRenderTimeoutInMilliseconds: 61000,
512
+ style: {
513
+ width: "225px",
514
+ maxHeight: "auto",
515
+ objectFit: "contain"
516
+ },
517
+ src: logoUrl
518
+ })) : null);
519
+ };
520
+ var BrollStudioBackdrop = function BrollStudioBackdrop(_ref4) {
521
+ var videoUrl = _ref4.videoUrl,
522
+ startVideoFrom = _ref4.startVideoFrom,
523
+ brollUrl = _ref4.brollUrl,
524
+ frameColor = _ref4.frameColor,
525
+ logoUrl = _ref4.logoUrl,
526
+ children = _ref4.children,
527
+ sourceVideoOrientation = _ref4.sourceVideoOrientation,
528
+ _ref4$disableTransiti = _ref4.disableTransitionSounds,
529
+ disableTransitionSounds = _ref4$disableTransiti === void 0 ? false : _ref4$disableTransiti,
530
+ noBackgroundVideoUrl = _ref4.noBackgroundVideoUrl,
531
+ durationInFrames = _ref4.durationInFrames,
532
+ faceMetadata = _ref4.faceMetadata,
533
+ noBackgroundVideoEffects = _ref4.noBackgroundVideoEffects;
534
+ var _useVideoConfig = useVideoConfig(),
535
+ width = _useVideoConfig.width,
536
+ height = _useVideoConfig.height,
537
+ fps = _useVideoConfig.fps;
538
+ var frame = useCurrentFrame();
539
+ var _useVirtualBackground = useVirtualBackground(),
540
+ isVirtual = _useVirtualBackground.isVirtual,
541
+ virtualBgUrl = _useVirtualBackground.url;
542
+ var showVirtual = isVirtual && !!noBackgroundVideoUrl;
543
+ var durationInSeconds = durationInFrames / fps;
544
+ var _useOrientationBased = useOrientationBased({
545
+ portrait: {
546
+ logoTop: CHROME_PADDING * 2,
547
+ logoLeft: CHROME_PADDING * 2,
548
+ BrollStudioBackdropComponent: Portrait
549
+ },
550
+ landscape: {
551
+ logoTop: CHROME_PADDING * 2,
552
+ logoLeft: CHROME_PADDING * 2,
553
+ BrollStudioBackdropComponent: Landscape
554
+ },
555
+ square: {
556
+ logoTop: CHROME_PADDING * 2,
557
+ logoLeft: CHROME_PADDING * 2,
558
+ BrollStudioBackdropComponent: Square
559
+ }
560
+ }),
561
+ BrollStudioBackdropComponent = _useOrientationBased.BrollStudioBackdropComponent,
562
+ logoTop = _useOrientationBased.logoTop,
563
+ logoLeft = _useOrientationBased.logoLeft;
564
+
565
+ // Spring animation for broll entrance/exit - slow start, faster end
566
+ var entranceEndFrame = fps * 0.5; // 0.5 seconds for entrance
567
+ var exitStartFrame = durationInFrames - fps * 1.5; // 0.5 seconds before end for exit
568
+
569
+ var brollSpringProgress = 0;
570
+ if (frame <= entranceEndFrame) {
571
+ // Entrance animation - slow start, faster end
572
+ brollSpringProgress = spring({
573
+ frame: frame,
574
+ fps: fps,
575
+ config: {
576
+ damping: 100,
577
+ stiffness: 160,
578
+ mass: 1
579
+ }
580
+ });
581
+ } else if (frame >= exitStartFrame) {
582
+ // Exit animation - reverse spring
583
+ var exitFrame = frame - exitStartFrame;
584
+ var exitSpring = spring({
585
+ frame: exitFrame,
586
+ fps: fps,
587
+ config: {
588
+ damping: 300,
589
+ stiffness: 80,
590
+ mass: 4
591
+ }
592
+ });
593
+ brollSpringProgress = 1 - exitSpring;
594
+ } else {
595
+ // Middle section - fully visible
596
+ brollSpringProgress = 1;
597
+ }
598
+ return /*#__PURE__*/React.createElement(React.Fragment, null, !disableTransitionSounds && /*#__PURE__*/React.createElement(Audio, {
599
+ src: "https://cdn.zync.ai/assets/static/swoosh.mp3",
600
+ volume: 0.25
601
+ }), /*#__PURE__*/React.createElement(BrollStudioBackdropComponent, {
602
+ brollUrl: brollUrl,
603
+ brollSpringProgress: brollSpringProgress,
604
+ width: width,
605
+ height: height,
606
+ logoUrl: logoUrl,
607
+ frameColor: frameColor,
608
+ startVideoFrom: startVideoFrom,
609
+ noBackgroundVideoUrl: noBackgroundVideoUrl,
610
+ sourceVideoOrientation: sourceVideoOrientation,
611
+ logoLeft: logoLeft,
612
+ logoTop: logoTop,
613
+ videoUrl: videoUrl,
614
+ faceMetadata: faceMetadata,
615
+ noBackgroundVideoEffects: noBackgroundVideoEffects,
616
+ showVirtual: showVirtual,
617
+ virtualBgUrl: virtualBgUrl
618
+ }, children));
619
+ };
620
+ export { BrollStudioBackdrop };