@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,397 @@
1
+ import React from "react";
2
+ import { AbsoluteFill, Audio, OffthreadVideo, useVideoConfig, spring, useCurrentFrame, interpolate } from "remotion";
3
+ import StretchText from "../utils/StretchText";
4
+ import { loadFont } from "@remotion/google-fonts/Poppins";
5
+ import { useOrientationBased } from "../../hooks/useOrientationBased";
6
+ import { useTheme } from "../../theme/hooks/useTheme";
7
+ import { getBrighterColor } from "../../helpers/hexToRgb";
8
+ import FaceCenteredVideo from "../utils/FaceCenteredVideo";
9
+ import { BlurOverlay } from "../utils/BlurOverlay";
10
+ import { useVirtualBackground } from "../../hooks/useVirtualBackground";
11
+ import { VirtualBackground } from "../backgrounds/VirtualBackground";
12
+ var _loadFont = loadFont(),
13
+ fontFamily = _loadFont.fontFamily;
14
+ var KeyPointOverlayDepthComponent = function KeyPointOverlayDepthComponent(_ref) {
15
+ var children = _ref.children,
16
+ startVideoFrom = _ref.startVideoFrom,
17
+ videoUrl = _ref.videoUrl,
18
+ noBackgroundVideoUrl = _ref.noBackgroundVideoUrl,
19
+ _ref$words = _ref.words,
20
+ words = _ref$words === void 0 ? [] : _ref$words,
21
+ exitStartFrame = _ref.exitStartFrame,
22
+ durationInFrames = _ref.durationInFrames,
23
+ faceMetadata = _ref.faceMetadata,
24
+ noBackgroundVideoEffects = _ref.noBackgroundVideoEffects;
25
+ var _useVideoConfig = useVideoConfig(),
26
+ height = _useVideoConfig.height,
27
+ width = _useVideoConfig.width,
28
+ fps = _useVideoConfig.fps;
29
+ var frame = useCurrentFrame();
30
+ var _useVirtualBackground = useVirtualBackground(),
31
+ isVirtual = _useVirtualBackground.isVirtual,
32
+ virtualBgUrl = _useVirtualBackground.url;
33
+ var showVirtual = isVirtual && !!noBackgroundVideoUrl;
34
+ var textContainerStyle = {
35
+ width: "100%",
36
+ margin: "0 auto"
37
+ };
38
+ var landscapeContainerStyle = {
39
+ width: "90%",
40
+ margin: "0 auto"
41
+ };
42
+ var _useOrientationBased = useOrientationBased({
43
+ portrait: {
44
+ bottom: 800,
45
+ wordsContainerStyle: textContainerStyle,
46
+ justifyWords: "start"
47
+ },
48
+ landscape: {
49
+ bottom: 200,
50
+ wordsContainerStyle: landscapeContainerStyle,
51
+ justifyWords: "end"
52
+ },
53
+ square: {
54
+ bottom: 400,
55
+ wordsContainerStyle: textContainerStyle,
56
+ justifyWords: "start"
57
+ }
58
+ }),
59
+ orientation = _useOrientationBased.orientation,
60
+ bottom = _useOrientationBased.bottom,
61
+ wordsContainerStyle = _useOrientationBased.wordsContainerStyle,
62
+ justifyWords = _useOrientationBased.justifyWords;
63
+ var _useTheme = useTheme(),
64
+ primaryColor = _useTheme.primaryColor,
65
+ accentColor = _useTheme.accentColor;
66
+ var secondLineColor = getBrighterColor(primaryColor, accentColor);
67
+
68
+ // Calculate when text should disappear (half second before end)
69
+ var textDisappearFrame = durationInFrames - Math.floor(fps * 0.5);
70
+ return /*#__PURE__*/React.createElement(AbsoluteFill, {
71
+ style: {
72
+ backgroundColor: "transparent",
73
+ padding: 0,
74
+ isolation: "isolate",
75
+ zIndex: 0
76
+ }
77
+ }, /*#__PURE__*/React.createElement(AbsoluteFill, null, showVirtual && virtualBgUrl ? /*#__PURE__*/React.createElement(VirtualBackground, {
78
+ url: virtualBgUrl,
79
+ zIndex: 1
80
+ }) : null, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
81
+ startFrom: startVideoFrom,
82
+ src: videoUrl,
83
+ muted: true,
84
+ transparent: false,
85
+ faceMetadata: faceMetadata,
86
+ aspectRatio: orientation,
87
+ containerWidth: width,
88
+ containerHeight: height,
89
+ useAveragePosition: true,
90
+ centerHorizontally: false,
91
+ style: {
92
+ position: "relative",
93
+ zIndex: 0,
94
+ isolation: "isolate",
95
+ filter: !showVirtual && noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.backgroundDim && noBackgroundVideoUrl ? "brightness(0.7)" : undefined
96
+ }
97
+ }) : /*#__PURE__*/React.createElement("div", {
98
+ style: {
99
+ position: "absolute",
100
+ overflow: "hidden",
101
+ height: "100%",
102
+ width: "100%"
103
+ }
104
+ }, /*#__PURE__*/React.createElement(OffthreadVideo, {
105
+ startFrom: startVideoFrom,
106
+ src: videoUrl,
107
+ muted: true,
108
+ transparent: false,
109
+ style: {
110
+ height: "100%",
111
+ objectFit: "cover",
112
+ width: "100%",
113
+ filter: !showVirtual && noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.backgroundDim && noBackgroundVideoUrl ? "brightness(0.7)" : undefined
114
+ }
115
+ }))), /*#__PURE__*/React.createElement(BlurOverlay, {
116
+ show: !showVirtual && (noBackgroundVideoEffects === null || noBackgroundVideoEffects === void 0 ? void 0 : noBackgroundVideoEffects.backgroundBlur) && noBackgroundVideoUrl,
117
+ width: width,
118
+ height: height,
119
+ zIndex: 1
120
+ }), /*#__PURE__*/React.createElement(AbsoluteFill, {
121
+ style: {
122
+ zIndex: 3,
123
+ isolation: "isolate",
124
+ paddingBottom: bottom,
125
+ justifyContent: justifyWords
126
+ }
127
+ }, words.filter(function (word) {
128
+ return word !== undefined && word !== null;
129
+ }).map(function (word, index, array) {
130
+ // Create entrance animation with delay based on index
131
+ var entranceDelay = index * 15; // 15 frames delay between each word
132
+
133
+ // Drop from top animation
134
+ var dropFromTopDuration = 30; // One second pause at top (30 frames at 30fps)
135
+ var fallToBounceStart = entranceDelay + dropFromTopDuration;
136
+ var fallDuration = 8; // Fast fall
137
+ var bounceStart = fallToBounceStart + fallDuration;
138
+ var yPosition = 0;
139
+ var entranceSpring = 0;
140
+ if (frame < entranceDelay) {
141
+ // 1. Before animation starts - words are offscreen
142
+ yPosition = -height;
143
+ entranceSpring = 0;
144
+ } else if (frame < fallToBounceStart) {
145
+ // 2. Words fall to top edge and pause for 1 second - visible
146
+ yPosition = -(height - bottom); // Same absolute top edge position for all words
147
+ entranceSpring = 0.8;
148
+ } else if (frame < bounceStart) {
149
+ // 3. Words fall to final destination - fast fall
150
+ var fallProgress = (frame - fallToBounceStart) / fallDuration;
151
+ yPosition = interpolate(fallProgress, [0, 1], [-(height - bottom - 50), 0]);
152
+ entranceSpring = 0.3;
153
+ } else {
154
+ // 3. Words bounce into final position
155
+ var bounceSpring = spring({
156
+ frame: frame - bounceStart,
157
+ from: 0,
158
+ to: 0.9,
159
+ fps: fps,
160
+ config: {
161
+ damping: 8,
162
+ stiffness: 300
163
+ }
164
+ });
165
+ yPosition = 0;
166
+ entranceSpring = bounceSpring;
167
+ }
168
+
169
+ // Create exit animation
170
+ var isExiting = frame >= exitStartFrame;
171
+ var exitProgress = isExiting ? Math.max(0, (frame - exitStartFrame) / (textDisappearFrame - exitStartFrame)) : 0;
172
+
173
+ // Create flickering effect during exit
174
+ var flickerFrequency = 2; // Higher value = more frequent flickering
175
+ var flickerPhase = isExiting ? Math.sin(frame * flickerFrequency) : 1;
176
+ var flickerOpacity = isExiting ? interpolate(flickerPhase, [-1, 1], [0.3, 0.9]) : 0.9;
177
+
178
+ // Combine entrance and exit animations
179
+ var opacity = frame < entranceDelay ? 0 : frame > textDisappearFrame ? 0 : isExiting ? flickerOpacity * (1 - exitProgress) : entranceSpring;
180
+
181
+ // Scale animation
182
+ var scale = frame < entranceDelay ? 0.5 : isExiting ? 1 - exitProgress * 0.05 // Subtle scale down during exit
183
+ : interpolate(entranceSpring, [0, 1], [0.8, 1]); // Scale up during entrance
184
+
185
+ return /*#__PURE__*/React.createElement("div", {
186
+ style: wordsContainerStyle,
187
+ key: "word-layer1-".concat(index, "-").concat(word)
188
+ }, /*#__PURE__*/React.createElement(StretchText, {
189
+ text: word,
190
+ maxFontSize: (height - bottom) / array.length,
191
+ fontFamily: fontFamily,
192
+ color: index % 2 === 1 ? secondLineColor : "white",
193
+ minFontSize: 50,
194
+ style: {
195
+ fontStyle: "italic",
196
+ fontWeight: 800,
197
+ textShadow: index === 0 && "2px 2px 5px rgba(255, 255, 255, 0.5), 5px 5px 10px rgba(255, 255, 255, 0.5), 10px 10px 70px rgba(255, 255, 255, 0.5)",
198
+ textTransform: "uppercase",
199
+ opacity: opacity,
200
+ backdropFilter: "blur(10px)",
201
+ transition: "transform 0.1s ease-out",
202
+ transform: "translateY(".concat(yPosition, "px) scale(").concat(scale, ")")
203
+ }
204
+ }));
205
+ })), /*#__PURE__*/React.createElement(AbsoluteFill, {
206
+ style: {
207
+ zIndex: 3,
208
+ isolation: "isolate"
209
+ }
210
+ }, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
211
+ startFrom: startVideoFrom,
212
+ src: noBackgroundVideoUrl,
213
+ muted: false,
214
+ transparent: true,
215
+ faceMetadata: faceMetadata,
216
+ aspectRatio: orientation,
217
+ containerWidth: width,
218
+ containerHeight: height,
219
+ useAveragePosition: true,
220
+ centerHorizontally: false
221
+ }) : /*#__PURE__*/React.createElement("div", {
222
+ style: {
223
+ position: "absolute",
224
+ overflow: "hidden",
225
+ borderRadius: "20px",
226
+ zIndex: 2,
227
+ height: "100%",
228
+ width: "100%"
229
+ }
230
+ }, /*#__PURE__*/React.createElement(OffthreadVideo, {
231
+ startFrom: startVideoFrom,
232
+ src: noBackgroundVideoUrl,
233
+ muted: false,
234
+ transparent: true,
235
+ style: {
236
+ height: "100%",
237
+ objectFit: "cover",
238
+ width: "100%"
239
+ }
240
+ }))), noBackgroundVideoUrl && (showVirtual || (noBackgroundVideoEffects === null || noBackgroundVideoEffects === void 0 ? void 0 : noBackgroundVideoEffects.facePop) || (noBackgroundVideoEffects === null || noBackgroundVideoEffects === void 0 ? void 0 : noBackgroundVideoEffects.backgroundDim) || (noBackgroundVideoEffects === null || noBackgroundVideoEffects === void 0 ? void 0 : noBackgroundVideoEffects.backgroundBlur)) && /*#__PURE__*/React.createElement(AbsoluteFill, {
241
+ style: {
242
+ zIndex: 3,
243
+ isolation: "isolate"
244
+ }
245
+ }, faceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
246
+ startFrom: startVideoFrom,
247
+ src: noBackgroundVideoUrl,
248
+ muted: false,
249
+ transparent: true,
250
+ faceMetadata: faceMetadata,
251
+ aspectRatio: orientation,
252
+ containerWidth: width,
253
+ containerHeight: height,
254
+ useAveragePosition: true,
255
+ centerHorizontally: false,
256
+ noBackgroundVideoEffects: noBackgroundVideoEffects
257
+ }) : /*#__PURE__*/React.createElement("div", {
258
+ style: {
259
+ position: "absolute",
260
+ overflow: "hidden",
261
+ borderRadius: "20px",
262
+ zIndex: 2,
263
+ height: "100%",
264
+ width: "100%"
265
+ }
266
+ }, /*#__PURE__*/React.createElement(OffthreadVideo, {
267
+ startFrom: startVideoFrom,
268
+ src: noBackgroundVideoUrl,
269
+ muted: false,
270
+ transparent: true,
271
+ style: {
272
+ height: "100%",
273
+ objectFit: "cover",
274
+ width: "100%",
275
+ filter: noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.facePop ? "brightness(1.1) contrast(1.15) saturate(1.05)" : undefined
276
+ }
277
+ }))), /*#__PURE__*/React.createElement(AbsoluteFill, {
278
+ style: {
279
+ zIndex: 3,
280
+ paddingBottom: bottom,
281
+ justifyContent: justifyWords
282
+ }
283
+ }, words.filter(function (word) {
284
+ return word !== undefined && word !== null;
285
+ }).map(function (word, index, array) {
286
+ // Create entrance animation with delay based on index
287
+ var entranceDelay = index * 15; // 15 frames delay between each word
288
+
289
+ // Drop from top animation - same as first layer
290
+ var dropFromTopDuration = 10; // Brief pause at top
291
+ var fallToBounceStart = entranceDelay + dropFromTopDuration;
292
+ var fallDuration = 8; // Fast fall
293
+ var bounceStart = fallToBounceStart + fallDuration;
294
+ var yPosition = 0;
295
+ var entranceSpring = 0;
296
+ if (frame < entranceDelay) {
297
+ // 1. Before animation starts - words are offscreen
298
+ yPosition = -height;
299
+ entranceSpring = 0;
300
+ } else if (frame < fallToBounceStart) {
301
+ // 2. Words fall to top edge and pause for 1 second - visible
302
+ yPosition = -(height - bottom - 50); // Same absolute top edge position for all words
303
+ entranceSpring = 0.8;
304
+ } else if (frame < bounceStart) {
305
+ // Fast fall to position
306
+ var fallProgress = (frame - fallToBounceStart) / fallDuration;
307
+ yPosition = interpolate(fallProgress, [0, 1], [-(height - bottom - 50), 0]);
308
+ entranceSpring = 0.3;
309
+ } else {
310
+ // Bounce animation
311
+ var bounceSpring = spring({
312
+ frame: frame - bounceStart,
313
+ from: 0,
314
+ to: 1,
315
+ fps: fps,
316
+ config: {
317
+ damping: 8,
318
+ stiffness: 300
319
+ }
320
+ });
321
+ yPosition = 0;
322
+ entranceSpring = bounceSpring;
323
+ }
324
+
325
+ // Create exit animation
326
+ var isExiting = frame >= exitStartFrame;
327
+ var exitProgress = isExiting ? Math.max(0, (frame - exitStartFrame) / (textDisappearFrame - exitStartFrame)) : 0;
328
+
329
+ // Create flickering effect during exit
330
+ var flickerFrequency = 3; // Higher value = more frequent flickering
331
+ var flickerPhase = isExiting ? Math.sin(frame * flickerFrequency) : 1;
332
+ var flickerOpacity = isExiting ? interpolate(flickerPhase, [-1, 1], [0.3, 1]) : 1;
333
+
334
+ // Scale animation
335
+ var scale = frame < entranceDelay ? 0.5 : isExiting ? 1 - exitProgress * 0.05 // Subtle scale down during exit
336
+ : interpolate(entranceSpring, [0, 1], [0.8, 1]); // Scale up during entrance
337
+
338
+ return /*#__PURE__*/React.createElement("div", {
339
+ style: wordsContainerStyle,
340
+ key: "word-layer2-".concat(index, "-").concat(word)
341
+ }, /*#__PURE__*/React.createElement(StretchText, {
342
+ text: word,
343
+ maxFontSize: height / array.length,
344
+ color: "transparent",
345
+ textStrokeWidth: "2px",
346
+ textFillColor: "transparent",
347
+ textStrokeColor: index % 2 === 1 ? secondLineColor : "white",
348
+ minFontSize: 50,
349
+ fontFamily: fontFamily,
350
+ style: {
351
+ fontStyle: "italic",
352
+ fontWeight: 800,
353
+ textTransform: "uppercase",
354
+ opacity: 0,
355
+ transition: "transform 0.1s ease-out",
356
+ transform: "translateY(".concat(yPosition, "px) scale(").concat(scale, ")")
357
+ }
358
+ }));
359
+ })), /*#__PURE__*/React.createElement(AbsoluteFill, {
360
+ style: {
361
+ zIndex: 11
362
+ }
363
+ }, children));
364
+ };
365
+
366
+ // Configuration for different orientation split screens
367
+ var KeyPointOverlayDepth = function KeyPointOverlayDepth(_ref2) {
368
+ var videoUrl = _ref2.videoUrl,
369
+ startVideoFrom = _ref2.startVideoFrom,
370
+ children = _ref2.children,
371
+ sourceVideoOrientation = _ref2.sourceVideoOrientation,
372
+ _ref2$disableTransiti = _ref2.disableTransitionSounds,
373
+ disableTransitionSounds = _ref2$disableTransiti === void 0 ? false : _ref2$disableTransiti,
374
+ noBackgroundVideoUrl = _ref2.noBackgroundVideoUrl,
375
+ durationInFrames = _ref2.durationInFrames,
376
+ _ref2$words = _ref2.words,
377
+ words = _ref2$words === void 0 ? [] : _ref2$words,
378
+ noBackgroundVideoEffects = _ref2.noBackgroundVideoEffects,
379
+ faceMetadata = _ref2.faceMetadata;
380
+ // Calculate when exit animation should start (60 frames or 2 seconds before end)
381
+ var exitStartFrame = durationInFrames - 60;
382
+ return /*#__PURE__*/React.createElement(React.Fragment, null, !disableTransitionSounds && /*#__PURE__*/React.createElement(Audio, {
383
+ src: "https://cdn.zync.ai/assets/static/swoosh.mp3",
384
+ volume: 0.25
385
+ }), /*#__PURE__*/React.createElement(KeyPointOverlayDepthComponent, {
386
+ videoUrl: videoUrl,
387
+ startVideoFrom: startVideoFrom,
388
+ noBackgroundVideoUrl: noBackgroundVideoUrl,
389
+ sourceVideoOrientation: sourceVideoOrientation,
390
+ exitStartFrame: exitStartFrame,
391
+ durationInFrames: durationInFrames,
392
+ words: words,
393
+ faceMetadata: faceMetadata,
394
+ noBackgroundVideoEffects: noBackgroundVideoEffects
395
+ }, children));
396
+ };
397
+ export { KeyPointOverlayDepth };