@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,568 @@
1
+ import React from "react";
2
+ import { AbsoluteFill, Audio, Easing, Img, OffthreadVideo, useVideoConfig } from "remotion";
3
+ import { useOrientationBased } from "../../hooks/useOrientationBased.js";
4
+ import { useTimeInterpolate } from "../../hooks/useTimeInterpolate.js";
5
+ import { CHROME_PADDING } from "../../config.js";
6
+ import { PanningImage } from "./MotionStill";
7
+ import FaceCenteredVideo from "../utils/FaceCenteredVideo";
8
+ import PausableImg from "../utils/PausableImg";
9
+ import { BlurOverlay } from "../utils/BlurOverlay";
10
+ import { useVirtualBackground } from "../../hooks/useVirtualBackground";
11
+ import { VirtualBackgroundUnderlay } from "../backgrounds/VirtualBackgroundUnderlay";
12
+ var Square = function Square(_ref) {
13
+ var children = _ref.children,
14
+ imageUrl = _ref.imageUrl,
15
+ brollVideoWidthTransition = _ref.brollVideoWidthTransition,
16
+ brollVideoHeightTransition = _ref.brollVideoHeightTransition,
17
+ brollVideoTopTransition = _ref.brollVideoTopTransition,
18
+ brollVideoLeftTransition = _ref.brollVideoLeftTransition,
19
+ mainVideoWidthTransition = _ref.mainVideoWidthTransition,
20
+ mainVideoHeightTransition = _ref.mainVideoHeightTransition,
21
+ mainVideoTopTransition = _ref.mainVideoTopTransition,
22
+ mainVideoLeftTransition = _ref.mainVideoLeftTransition,
23
+ logoUrl = _ref.logoUrl,
24
+ logoLeft = _ref.logoLeft,
25
+ logoTop = _ref.logoTop,
26
+ frameColor = _ref.frameColor,
27
+ startVideoFrom = _ref.startVideoFrom,
28
+ noBackgroundVideoUrl = _ref.noBackgroundVideoUrl,
29
+ sourceVideoOrientation = _ref.sourceVideoOrientation,
30
+ videoUrl = _ref.videoUrl,
31
+ faceMetadata = _ref.faceMetadata,
32
+ muted = _ref.muted,
33
+ noBackgroundVideoEffects = _ref.noBackgroundVideoEffects,
34
+ showVirtual = _ref.showVirtual,
35
+ virtualBgUrl = _ref.virtualBgUrl;
36
+ var _useVideoConfig = useVideoConfig(),
37
+ width = _useVideoConfig.width,
38
+ height = _useVideoConfig.height;
39
+ return /*#__PURE__*/React.createElement(AbsoluteFill, {
40
+ style: {
41
+ backgroundColor: frameColor || "transparent",
42
+ padding: 0,
43
+ isolation: "isolate"
44
+ }
45
+ }, imageUrl && /*#__PURE__*/React.createElement("div", {
46
+ style: {
47
+ position: "absolute",
48
+ overflow: "hidden",
49
+ width: "100%",
50
+ height: brollVideoHeightTransition,
51
+ transform: "translateX(-50%) scale(1.25)",
52
+ transformOrigin: "center center",
53
+ left: "50%",
54
+ zIndex: 3,
55
+ // Add gradient mask for fade to transparent effect in square
56
+ mask: "linear-gradient(to bottom, black 0%, black 60%, transparent 100%)",
57
+ WebkitMask: "linear-gradient(to bottom, black 0%, black 60%, transparent 100%)"
58
+ }
59
+ }, /*#__PURE__*/React.createElement(PanningImage, {
60
+ imageUrl: imageUrl
61
+ })), showVirtual && virtualBgUrl ? /*#__PURE__*/React.createElement(VirtualBackgroundUnderlay, {
62
+ url: virtualBgUrl,
63
+ top: 0,
64
+ left: 0,
65
+ width: "100%",
66
+ height: "100%",
67
+ zIndex: 2
68
+ }) : null, /*#__PURE__*/React.createElement("div", {
69
+ style: {
70
+ position: "absolute",
71
+ overflow: "hidden",
72
+ width: mainVideoWidthTransition,
73
+ height: mainVideoHeightTransition,
74
+ top: mainVideoTopTransition,
75
+ left: mainVideoLeftTransition,
76
+ zIndex: 3
77
+ }
78
+ }, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
79
+ transparent: true,
80
+ startFrom: startVideoFrom,
81
+ muted: muted,
82
+ src: noBackgroundVideoUrl,
83
+ faceMetadata: faceMetadata,
84
+ containerWidth: 1080,
85
+ containerHeight: 1080,
86
+ useAveragePosition: true,
87
+ centerHorizontally: false,
88
+ noBackgroundVideoEffects: noBackgroundVideoEffects
89
+ }) : /*#__PURE__*/React.createElement(OffthreadVideo, {
90
+ startFrom: startVideoFrom,
91
+ src: noBackgroundVideoUrl,
92
+ muted: muted,
93
+ transparent: true,
94
+ style: {
95
+ height: "100%",
96
+ objectFit: "cover",
97
+ width: "100%",
98
+ filter: noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.facePop ? "brightness(1.1) contrast(1.15) saturate(1.05)" : undefined
99
+ }
100
+ })), /*#__PURE__*/React.createElement("div", {
101
+ style: {
102
+ position: "absolute",
103
+ overflow: "hidden",
104
+ width: mainVideoWidthTransition,
105
+ height: mainVideoHeightTransition,
106
+ top: mainVideoTopTransition,
107
+ left: mainVideoLeftTransition,
108
+ zIndex: 0
109
+ }
110
+ }, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
111
+ transparent: false,
112
+ startFrom: startVideoFrom,
113
+ muted: true,
114
+ src: videoUrl,
115
+ faceMetadata: faceMetadata,
116
+ containerWidth: 1080,
117
+ containerHeight: 1080,
118
+ useAveragePosition: true,
119
+ centerHorizontally: false
120
+ }) : /*#__PURE__*/React.createElement(OffthreadVideo, {
121
+ startFrom: startVideoFrom,
122
+ src: videoUrl,
123
+ muted: true,
124
+ transparent: false,
125
+ style: {
126
+ zIndex: 0,
127
+ height: "100%",
128
+ objectFit: "cover",
129
+ width: "100%"
130
+ }
131
+ })), /*#__PURE__*/React.createElement(BlurOverlay, {
132
+ show: !showVirtual && (noBackgroundVideoEffects === null || noBackgroundVideoEffects === void 0 ? void 0 : noBackgroundVideoEffects.backgroundBlur) && noBackgroundVideoUrl,
133
+ width: width,
134
+ height: height,
135
+ zIndex: 1
136
+ }), /*#__PURE__*/React.createElement(AbsoluteFill, {
137
+ style: {
138
+ zIndex: 13
139
+ }
140
+ }, children), logoUrl ? /*#__PURE__*/React.createElement("div", {
141
+ style: {
142
+ position: "fixed",
143
+ left: logoLeft,
144
+ top: logoTop,
145
+ padding: 20,
146
+ zIndex: 100
147
+ }
148
+ }, /*#__PURE__*/React.createElement(PausableImg, {
149
+ delayRenderTimeoutInMilliseconds: 61000,
150
+ style: {
151
+ width: "225px",
152
+ maxHeight: "auto",
153
+ objectFit: "contain"
154
+ },
155
+ src: logoUrl
156
+ })) : null);
157
+ };
158
+ var Portrait = function Portrait(_ref2) {
159
+ var children = _ref2.children,
160
+ imageUrl = _ref2.imageUrl,
161
+ brollVideoWidthTransition = _ref2.brollVideoWidthTransition,
162
+ brollVideoHeightTransition = _ref2.brollVideoHeightTransition,
163
+ brollVideoTopTransition = _ref2.brollVideoTopTransition,
164
+ brollVideoLeftTransition = _ref2.brollVideoLeftTransition,
165
+ mainVideoWidthTransition = _ref2.mainVideoWidthTransition,
166
+ mainVideoHeightTransition = _ref2.mainVideoHeightTransition,
167
+ mainVideoTopTransition = _ref2.mainVideoTopTransition,
168
+ mainVideoLeftTransition = _ref2.mainVideoLeftTransition,
169
+ logoUrl = _ref2.logoUrl,
170
+ logoLeft = _ref2.logoLeft,
171
+ logoTop = _ref2.logoTop,
172
+ frameColor = _ref2.frameColor,
173
+ orientation = _ref2.orientation,
174
+ startVideoFrom = _ref2.startVideoFrom,
175
+ noBackgroundVideoUrl = _ref2.noBackgroundVideoUrl,
176
+ sourceVideoOrientation = _ref2.sourceVideoOrientation,
177
+ videoUrl = _ref2.videoUrl,
178
+ faceMetadata = _ref2.faceMetadata,
179
+ muted = _ref2.muted,
180
+ noBackgroundVideoEffects = _ref2.noBackgroundVideoEffects,
181
+ showVirtual = _ref2.showVirtual,
182
+ virtualBgUrl = _ref2.virtualBgUrl;
183
+ var _useVideoConfig2 = useVideoConfig(),
184
+ width = _useVideoConfig2.width,
185
+ height = _useVideoConfig2.height;
186
+ return /*#__PURE__*/React.createElement(AbsoluteFill, {
187
+ style: {
188
+ backgroundColor: frameColor || "transparent",
189
+ padding: 0,
190
+ isolation: "isolate"
191
+ }
192
+ }, imageUrl && /*#__PURE__*/React.createElement("div", {
193
+ style: {
194
+ position: "absolute",
195
+ overflow: "hidden",
196
+ borderRadius: orientation === "landscape" ? "0px" : "20px",
197
+ width: "100%",
198
+ height: brollVideoHeightTransition,
199
+ top: brollVideoTopTransition,
200
+ left: brollVideoLeftTransition,
201
+ zIndex: 3,
202
+ transformOrigin: "center center",
203
+ transform: "scale(1.1)",
204
+ // Add gradient mask for fade to transparent effect in portrait
205
+ mask: "linear-gradient(to bottom, black 0%, black 60%, transparent 100%)",
206
+ WebkitMask: "linear-gradient(to bottom, black 0%, black 60%, transparent 100%)"
207
+ }
208
+ }, /*#__PURE__*/React.createElement(PanningImage, {
209
+ imageUrl: imageUrl
210
+ })), showVirtual && virtualBgUrl ? /*#__PURE__*/React.createElement(VirtualBackgroundUnderlay, {
211
+ url: virtualBgUrl,
212
+ top: 0,
213
+ left: 0,
214
+ width: "100%",
215
+ height: "100%",
216
+ borderRadius: "20px",
217
+ zIndex: 1
218
+ }) : null, /*#__PURE__*/React.createElement("div", {
219
+ style: {
220
+ position: "absolute",
221
+ overflow: "hidden",
222
+ borderRadius: "20px",
223
+ width: mainVideoWidthTransition,
224
+ height: mainVideoHeightTransition,
225
+ top: mainVideoTopTransition,
226
+ left: mainVideoLeftTransition,
227
+ zIndex: 3,
228
+ transform: "scale(1)"
229
+ }
230
+ }, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
231
+ startFrom: startVideoFrom,
232
+ muted: muted,
233
+ transparent: true,
234
+ src: noBackgroundVideoUrl,
235
+ faceMetadata: faceMetadata,
236
+ containerWidth: 1080,
237
+ containerHeight: 1920,
238
+ useAveragePosition: true,
239
+ centerHorizontally: false,
240
+ noBackgroundVideoEffects: noBackgroundVideoEffects
241
+ }) : /*#__PURE__*/React.createElement(OffthreadVideo, {
242
+ startFrom: startVideoFrom,
243
+ src: noBackgroundVideoUrl,
244
+ muted: muted,
245
+ transparent: true,
246
+ style: {
247
+ height: "100%",
248
+ objectFit: "cover",
249
+ width: "100%",
250
+ filter: noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.facePop ? "brightness(1.1) contrast(1.15) saturate(1.05)" : undefined,
251
+ objectPosition: "0% 30%"
252
+ }
253
+ })), /*#__PURE__*/React.createElement("div", {
254
+ style: {
255
+ position: "absolute",
256
+ overflow: "hidden",
257
+ borderRadius: "20px",
258
+ width: mainVideoWidthTransition,
259
+ height: mainVideoHeightTransition,
260
+ top: mainVideoTopTransition,
261
+ left: mainVideoLeftTransition,
262
+ zIndex: 0,
263
+ transform: "scale(1)"
264
+ }
265
+ }, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
266
+ startFrom: startVideoFrom,
267
+ muted: true,
268
+ src: videoUrl,
269
+ faceMetadata: faceMetadata,
270
+ containerWidth: 1080,
271
+ containerHeight: 1920,
272
+ useAveragePosition: true,
273
+ centerHorizontally: false
274
+ }) : /*#__PURE__*/React.createElement(OffthreadVideo, {
275
+ startFrom: startVideoFrom,
276
+ src: videoUrl,
277
+ muted: true,
278
+ transparent: false,
279
+ style: {
280
+ zIndex: 0,
281
+ height: "100%",
282
+ objectFit: "cover",
283
+ width: "100%",
284
+ objectPosition: "0% 30%"
285
+ }
286
+ })), /*#__PURE__*/React.createElement(BlurOverlay, {
287
+ show: !showVirtual && (noBackgroundVideoEffects === null || noBackgroundVideoEffects === void 0 ? void 0 : noBackgroundVideoEffects.backgroundBlur) && noBackgroundVideoUrl,
288
+ width: width,
289
+ height: height,
290
+ zIndex: 1
291
+ }), /*#__PURE__*/React.createElement(AbsoluteFill, {
292
+ style: {
293
+ zIndex: 3
294
+ }
295
+ }, children), logoUrl ? /*#__PURE__*/React.createElement("div", {
296
+ style: {
297
+ position: "fixed",
298
+ left: logoLeft,
299
+ top: logoTop,
300
+ padding: 20,
301
+ zIndex: 10
302
+ }
303
+ }, /*#__PURE__*/React.createElement(PausableImg, {
304
+ delayRenderTimeoutInMilliseconds: 61000,
305
+ style: {
306
+ width: "225px",
307
+ maxHeight: "auto",
308
+ objectFit: "contain"
309
+ },
310
+ src: logoUrl
311
+ })) : null);
312
+ };
313
+ var Landscape = function Landscape(_ref3) {
314
+ var children = _ref3.children,
315
+ imageUrl = _ref3.imageUrl,
316
+ brollVideoWidthTransition = _ref3.brollVideoWidthTransition,
317
+ brollVideoHeightTransition = _ref3.brollVideoHeightTransition,
318
+ mainVideoWidthTransition = _ref3.mainVideoWidthTransition,
319
+ mainVideoHeightTransition = _ref3.mainVideoHeightTransition,
320
+ mainVideoTopTransition = _ref3.mainVideoTopTransition,
321
+ mainVideoLeftTransition = _ref3.mainVideoLeftTransition,
322
+ logoUrl = _ref3.logoUrl,
323
+ logoLeft = _ref3.logoLeft,
324
+ logoTop = _ref3.logoTop,
325
+ frameColor = _ref3.frameColor,
326
+ orientation = _ref3.orientation,
327
+ startVideoFrom = _ref3.startVideoFrom,
328
+ noBackgroundVideoUrl = _ref3.noBackgroundVideoUrl,
329
+ sourceVideoOrientation = _ref3.sourceVideoOrientation,
330
+ videoUrl = _ref3.videoUrl,
331
+ faceMetadata = _ref3.faceMetadata,
332
+ muted = _ref3.muted,
333
+ noBackgroundVideoEffects = _ref3.noBackgroundVideoEffects;
334
+ var _useVideoConfig3 = useVideoConfig(),
335
+ width = _useVideoConfig3.width,
336
+ height = _useVideoConfig3.height;
337
+ return /*#__PURE__*/React.createElement(AbsoluteFill, {
338
+ style: {
339
+ backgroundColor: frameColor || "transparent",
340
+ padding: 0,
341
+ isolation: "isolate"
342
+ }
343
+ }, imageUrl && /*#__PURE__*/React.createElement("div", {
344
+ style: {
345
+ position: "absolute",
346
+ overflow: "hidden",
347
+ transformOrigin: "center center",
348
+ transform: "translate(-50%, -50%)",
349
+ borderRadius: orientation === "landscape" ? "0px" : "20px",
350
+ width: brollVideoWidthTransition,
351
+ height: brollVideoHeightTransition,
352
+ top: "50%",
353
+ left: "50%",
354
+ zIndex: orientation === "landscape" ? 1 : 2
355
+ }
356
+ }, /*#__PURE__*/React.createElement(PanningImage, {
357
+ imageUrl: imageUrl
358
+ })), /*#__PURE__*/React.createElement("div", {
359
+ style: {
360
+ position: "absolute",
361
+ overflow: "hidden",
362
+ borderRadius: "20px",
363
+ width: mainVideoWidthTransition,
364
+ height: mainVideoHeightTransition,
365
+ top: mainVideoTopTransition,
366
+ left: mainVideoLeftTransition,
367
+ zIndex: orientation === "landscape" ? 2 : 1
368
+ }
369
+ }, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
370
+ startFrom: startVideoFrom,
371
+ muted: muted,
372
+ src: noBackgroundVideoUrl,
373
+ faceMetadata: faceMetadata,
374
+ containerWidth: mainVideoWidthTransition,
375
+ containerHeight: mainVideoHeightTransition,
376
+ noBackgroundVideoEffects: noBackgroundVideoEffects,
377
+ useAveragePosition: true,
378
+ centerHorizontally: false,
379
+ transparent: true
380
+ }) : /*#__PURE__*/React.createElement(OffthreadVideo, {
381
+ startFrom: startVideoFrom,
382
+ src: noBackgroundVideoUrl,
383
+ muted: muted,
384
+ transparent: true,
385
+ style: {
386
+ height: "100%",
387
+ objectFit: "cover",
388
+ width: "100%",
389
+ filter: noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.facePop ? "brightness(1.1) contrast(1.15) saturate(1.05)" : undefined
390
+ }
391
+ })), /*#__PURE__*/React.createElement(AbsoluteFill, {
392
+ style: {
393
+ zIndex: 3
394
+ }
395
+ }, children), logoUrl ? /*#__PURE__*/React.createElement("div", {
396
+ style: {
397
+ position: "fixed",
398
+ left: logoLeft,
399
+ top: logoTop,
400
+ padding: 20,
401
+ zIndex: 10
402
+ }
403
+ }, /*#__PURE__*/React.createElement(PausableImg, {
404
+ delayRenderTimeoutInMilliseconds: 61000,
405
+ style: {
406
+ width: "225px",
407
+ maxHeight: "auto",
408
+ objectFit: "contain"
409
+ },
410
+ src: logoUrl
411
+ })) : null);
412
+ };
413
+
414
+ // Configuration for different orientation split screens
415
+ var MotionStillGreenScreen = function MotionStillGreenScreen(_ref4) {
416
+ var videoUrl = _ref4.videoUrl,
417
+ startVideoFrom = _ref4.startVideoFrom,
418
+ imageUrl = _ref4.imageUrl,
419
+ frameColor = _ref4.frameColor,
420
+ logoUrl = _ref4.logoUrl,
421
+ children = _ref4.children,
422
+ sourceVideoOrientation = _ref4.sourceVideoOrientation,
423
+ _ref4$disableTransiti = _ref4.disableTransitionSounds,
424
+ disableTransitionSounds = _ref4$disableTransiti === void 0 ? false : _ref4$disableTransiti,
425
+ noBackgroundVideoUrl = _ref4.noBackgroundVideoUrl,
426
+ durationInFrames = _ref4.durationInFrames,
427
+ faceMetadata = _ref4.faceMetadata,
428
+ muted = _ref4.muted,
429
+ noBackgroundVideoEffects = _ref4.noBackgroundVideoEffects;
430
+ var _useVideoConfig4 = useVideoConfig(),
431
+ width = _useVideoConfig4.width,
432
+ height = _useVideoConfig4.height;
433
+ var _useVirtualBackground = useVirtualBackground(),
434
+ isVirtual = _useVirtualBackground.isVirtual,
435
+ virtualBgUrl = _useVirtualBackground.url;
436
+ var showVirtual = isVirtual && !!noBackgroundVideoUrl;
437
+
438
+ // Convert duration from frames to seconds (assuming 30 fps)
439
+ var durationInSeconds = durationInFrames / 30;
440
+
441
+ // Configure orientation-specific layouts
442
+ var _useOrientationBased = useOrientationBased({
443
+ portrait: {
444
+ // Portrait: Broll on top, main video on bottom (swapped positions)
445
+ mainVideoWidth: width,
446
+ mainVideoHeight: height * 0.8,
447
+ mainVideoTop: height * 0.2,
448
+ mainVideoLeft: 0,
449
+ brollVideoWidth: width,
450
+ brollVideoHeight: height * 0.6,
451
+ brollVideoTop: CHROME_PADDING,
452
+ brollVideoLeft: CHROME_PADDING,
453
+ logoTop: CHROME_PADDING * 2,
454
+ logoLeft: CHROME_PADDING * 2,
455
+ BrollGreenScreenComponent: Portrait
456
+ },
457
+ landscape: {
458
+ // Landscape: Broll fullscreen with portrait video (3:4 aspect ratio) aligned to the right
459
+ mainVideoWidth: (height - 2 * CHROME_PADDING) * (3 / 4),
460
+ // 3:4 aspect ratio based on max height
461
+ mainVideoHeight: height - 2 * CHROME_PADDING,
462
+ mainVideoTop: CHROME_PADDING,
463
+ mainVideoLeft: width - CHROME_PADDING - (height - 2 * CHROME_PADDING) * (3 / 4),
464
+ // Align to right
465
+ brollVideoWidth: width,
466
+ brollVideoHeight: height,
467
+ brollVideoTop: 0,
468
+ brollVideoLeft: 0,
469
+ logoTop: CHROME_PADDING * 2,
470
+ logoLeft: CHROME_PADDING * 2,
471
+ BrollGreenScreenComponent: Landscape
472
+ },
473
+ square: {
474
+ // Square: Main video on top, broll on bottom
475
+ mainVideoWidth: width,
476
+ mainVideoHeight: height * 0.86,
477
+ mainVideoTop: CHROME_PADDING + height * 0.14,
478
+ mainVideoLeft: 0,
479
+ brollVideoWidth: width,
480
+ brollVideoHeight: height * 0.5,
481
+ brollVideoTop: 0,
482
+ brollVideoLeft: 0,
483
+ logoTop: CHROME_PADDING * 2,
484
+ logoLeft: CHROME_PADDING * 2,
485
+ BrollGreenScreenComponent: Square
486
+ }
487
+ }),
488
+ BrollGreenScreenComponent = _useOrientationBased.BrollGreenScreenComponent,
489
+ mainVideoWidth = _useOrientationBased.mainVideoWidth,
490
+ mainVideoHeight = _useOrientationBased.mainVideoHeight,
491
+ mainVideoTop = _useOrientationBased.mainVideoTop,
492
+ mainVideoLeft = _useOrientationBased.mainVideoLeft,
493
+ brollVideoWidth = _useOrientationBased.brollVideoWidth,
494
+ brollVideoHeight = _useOrientationBased.brollVideoHeight,
495
+ brollVideoTop = _useOrientationBased.brollVideoTop,
496
+ brollVideoLeft = _useOrientationBased.brollVideoLeft,
497
+ logoTop = _useOrientationBased.logoTop,
498
+ logoLeft = _useOrientationBased.logoLeft,
499
+ orientation = _useOrientationBased.orientation;
500
+
501
+ // Transition timing - starting full screen, transitioning to split screen, then back to full screen
502
+ var transitionTimings = [0, 0.5, durationInSeconds - 0.5, durationInSeconds]; // Start at 0, split at 0.5, return to original at 1.0
503
+
504
+ // Main video transitions
505
+ var mainVideoWidthTransition = useTimeInterpolate(transitionTimings, [width, mainVideoWidth, mainVideoWidth, width], {
506
+ extrapolateRight: "clamp",
507
+ easing: Easing["in"](Easing.quad)
508
+ });
509
+ var mainVideoHeightTransition = useTimeInterpolate(transitionTimings, [height, mainVideoHeight, mainVideoHeight, height], {
510
+ extrapolateRight: "clamp",
511
+ easing: Easing["in"](Easing.quad)
512
+ });
513
+ var mainVideoTopTransition = useTimeInterpolate(transitionTimings, [0, mainVideoTop, mainVideoTop, 0], {
514
+ extrapolateRight: "clamp",
515
+ easing: Easing["in"](Easing.quad)
516
+ });
517
+ var mainVideoLeftTransition = useTimeInterpolate(transitionTimings, [0, mainVideoLeft, mainVideoLeft, 0], {
518
+ extrapolateRight: "clamp",
519
+ easing: Easing["in"](Easing.quad)
520
+ });
521
+
522
+ // Broll video transitions (start offscreen and move into position)
523
+ var brollVideoWidthTransition = useTimeInterpolate(transitionTimings, [0, brollVideoWidth, brollVideoWidth, 0], {
524
+ extrapolateRight: "clamp",
525
+ easing: Easing["in"](Easing.quad)
526
+ });
527
+ var brollVideoHeightTransition = useTimeInterpolate(transitionTimings, [0, brollVideoHeight, brollVideoHeight, 0], {
528
+ extrapolateRight: "clamp",
529
+ easing: Easing["in"](Easing.quad)
530
+ });
531
+ var brollVideoTopTransition = useTimeInterpolate(transitionTimings, orientation === "portrait" ? [-brollVideoHeight, brollVideoTop, brollVideoTop, -brollVideoHeight] : [0, brollVideoTop, brollVideoTop, 0], {
532
+ extrapolateRight: "clamp",
533
+ easing: Easing["in"](Easing.quad)
534
+ });
535
+ var brollVideoLeftTransition = useTimeInterpolate(transitionTimings, orientation === "portrait" ? [width / 2 - brollVideoWidth / 2, brollVideoLeft, brollVideoLeft, width / 2 - brollVideoWidth / 2] : [0, brollVideoLeft, brollVideoLeft, 0], {
536
+ extrapolateRight: "clamp",
537
+ easing: Easing["in"](Easing.quad)
538
+ });
539
+ return /*#__PURE__*/React.createElement(React.Fragment, null, !disableTransitionSounds && /*#__PURE__*/React.createElement(Audio, {
540
+ src: "https://cdn.zync.ai/assets/static/swoosh.mp3",
541
+ volume: 0.25
542
+ }), /*#__PURE__*/React.createElement(BrollGreenScreenComponent, {
543
+ imageUrl: imageUrl,
544
+ brollVideoWidthTransition: brollVideoWidthTransition,
545
+ brollVideoHeightTransition: brollVideoHeightTransition,
546
+ brollVideoTopTransition: brollVideoTopTransition,
547
+ brollVideoLeftTransition: brollVideoLeftTransition,
548
+ mainVideoWidthTransition: mainVideoWidthTransition,
549
+ mainVideoHeightTransition: mainVideoHeightTransition,
550
+ mainVideoTopTransition: mainVideoTopTransition,
551
+ mainVideoLeftTransition: mainVideoLeftTransition,
552
+ logoUrl: logoUrl,
553
+ frameColor: frameColor,
554
+ orientation: orientation,
555
+ startVideoFrom: startVideoFrom,
556
+ noBackgroundVideoUrl: noBackgroundVideoUrl,
557
+ sourceVideoOrientation: sourceVideoOrientation,
558
+ logoLeft: logoLeft,
559
+ logoTop: logoTop,
560
+ videoUrl: videoUrl,
561
+ faceMetadata: faceMetadata,
562
+ muted: muted,
563
+ noBackgroundVideoEffects: noBackgroundVideoEffects,
564
+ showVirtual: showVirtual,
565
+ virtualBgUrl: virtualBgUrl
566
+ }, children));
567
+ };
568
+ export { MotionStillGreenScreen };