@zync/zync-screnplay-player 0.1.209 → 0.1.211

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.
@@ -0,0 +1,786 @@
1
+ import React from 'react';
2
+ import { AbsoluteFill, Easing, interpolate, OffthreadVideo, useCurrentFrame, useVideoConfig } from 'remotion';
3
+ import { loadFont as loadHeadlineFont } from '@remotion/google-fonts/Oswald';
4
+ import { loadFont as loadBodyFont } from '@remotion/google-fonts/Poppins';
5
+ import { useOrientationBased } from '../../hooks/useOrientationBased.js';
6
+ import { useTheme } from '../../theme/hooks/useTheme.js';
7
+ import { distributeTextToFit } from '../../theme/themes/default/Sentence/SentenceSimple.helpers.js';
8
+ import FaceCenteredVideo from '../utils/FaceCenteredVideo';
9
+ import { BlurOverlay } from '../utils/BlurOverlay';
10
+ import { CHROME_PADDING } from '../../config.js';
11
+ import { useVirtualBackground } from '../../hooks/useVirtualBackground';
12
+ import { VirtualBackgroundUnderlay } from '../backgrounds/VirtualBackgroundUnderlay';
13
+ import { useSafeZoneInsets } from '../utils/SafeZones';
14
+ var _loadHeadlineFont = loadHeadlineFont(),
15
+ headlineFontFamily = _loadHeadlineFont.fontFamily;
16
+ var _loadBodyFont = loadBodyFont(),
17
+ bodyFontFamily = _loadBodyFont.fontFamily;
18
+ var withAlpha = function withAlpha(color, alpha) {
19
+ if (!color || typeof color !== 'string' || !color.startsWith('#')) {
20
+ return color;
21
+ }
22
+ var hex = color.replace('#', '');
23
+ if (![3, 6].includes(hex.length)) {
24
+ return color;
25
+ }
26
+ var normalizedHex = hex.length === 3 ? hex.split('').map(function (_char) {
27
+ return _char + _char;
28
+ }).join('') : hex;
29
+ var intValue = Number.parseInt(normalizedHex, 16);
30
+ if (Number.isNaN(intValue)) {
31
+ return color;
32
+ }
33
+ var r = intValue >> 16 & 255;
34
+ var g = intValue >> 8 & 255;
35
+ var b = intValue & 255;
36
+ return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(alpha, ")");
37
+ };
38
+ var sanitizeText = function sanitizeText(value) {
39
+ return typeof value === 'string' ? value.trim() : '';
40
+ };
41
+ var clampLines = function clampLines() {
42
+ var lines = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
43
+ var maxLines = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
44
+ if (lines.length <= maxLines) return lines;
45
+ var trimmed = lines.slice(0, maxLines);
46
+ var last = trimmed[maxLines - 1].trimEnd();
47
+ var shortened = last.length > 3 ? last.slice(0, -3).trimEnd() : last;
48
+ trimmed[maxLines - 1] = "".concat(shortened, "...");
49
+ return trimmed;
50
+ };
51
+ var mergeFilters = function mergeFilters() {
52
+ for (var _len = arguments.length, filters = new Array(_len), _key = 0; _key < _len; _key++) {
53
+ filters[_key] = arguments[_key];
54
+ }
55
+ var merged = filters.filter(Boolean);
56
+ return merged.length ? merged.join(' ') : undefined;
57
+ };
58
+ var interpolateWithClamp = function interpolateWithClamp(frame, inputRange, outputRange) {
59
+ var easing = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Easing.out(Easing.ease);
60
+ return interpolate(frame, inputRange, outputRange, {
61
+ easing: easing,
62
+ extrapolateLeft: 'clamp',
63
+ extrapolateRight: 'clamp'
64
+ });
65
+ };
66
+ export var CreatorCollabColdOpenVisual = function CreatorCollabColdOpenVisual(_ref) {
67
+ var children = _ref.children,
68
+ _ref$renderChildren = _ref.renderChildren,
69
+ renderChildren = _ref$renderChildren === void 0 ? false : _ref$renderChildren,
70
+ _ref$showBackground = _ref.showBackground,
71
+ showBackground = _ref$showBackground === void 0 ? true : _ref$showBackground,
72
+ _ref$showCreatorVideo = _ref.showCreatorVideo,
73
+ showCreatorVideo = _ref$showCreatorVideo === void 0 ? showBackground : _ref$showCreatorVideo,
74
+ _ref$showBackdropOver = _ref.showBackdropOverlays,
75
+ showBackdropOverlays = _ref$showBackdropOver === void 0 ? showBackground : _ref$showBackdropOver,
76
+ _ref$showTitleElement = _ref.showTitleElements,
77
+ showTitleElements = _ref$showTitleElement === void 0 ? true : _ref$showTitleElement,
78
+ _ref$showPreview = _ref.showPreview,
79
+ showPreview = _ref$showPreview === void 0 ? true : _ref$showPreview,
80
+ _ref$showLowerThird = _ref.showLowerThird,
81
+ showLowerThird = _ref$showLowerThird === void 0 ? true : _ref$showLowerThird,
82
+ _ref$showChrome = _ref.showChrome,
83
+ showChrome = _ref$showChrome === void 0 ? true : _ref$showChrome,
84
+ _ref$lowerThirdEnterS = _ref.lowerThirdEnterStartSeconds,
85
+ lowerThirdEnterStartSeconds = _ref$lowerThirdEnterS === void 0 ? 1.1 : _ref$lowerThirdEnterS,
86
+ _ref$lowerThirdEnterE = _ref.lowerThirdEnterEndSeconds,
87
+ lowerThirdEnterEndSeconds = _ref$lowerThirdEnterE === void 0 ? 1.85 : _ref$lowerThirdEnterE,
88
+ _ref$previewEnterStar = _ref.previewEnterStartSeconds,
89
+ previewEnterStartSeconds = _ref$previewEnterStar === void 0 ? 1.8 : _ref$previewEnterStar,
90
+ _ref$previewEnterEndS = _ref.previewEnterEndSeconds,
91
+ previewEnterEndSeconds = _ref$previewEnterEndS === void 0 ? 2.9 : _ref$previewEnterEndS,
92
+ compactTitleEnterStartSeconds = _ref.compactTitleEnterStartSeconds,
93
+ text = _ref.text,
94
+ fullName = _ref.fullName,
95
+ title = _ref.title,
96
+ collaboratorName = _ref.collaboratorName,
97
+ collaboratorTitle = _ref.collaboratorTitle,
98
+ topicLabel = _ref.topicLabel,
99
+ activeSpeaker = _ref.activeSpeaker,
100
+ _ref$startVideoFrom = _ref.startVideoFrom,
101
+ startVideoFrom = _ref$startVideoFrom === void 0 ? 0 : _ref$startVideoFrom,
102
+ firstVideoFile = _ref.firstVideoFile,
103
+ _ref$startSecondVideo = _ref.startSecondVideoFrom,
104
+ startSecondVideoFrom = _ref$startSecondVideo === void 0 ? 0 : _ref$startSecondVideo,
105
+ secondVideoFile = _ref.secondVideoFile,
106
+ firstNoBackgroundVideoUrl = _ref.firstNoBackgroundVideoUrl,
107
+ firstNoBackgroundFaceMetadata = _ref.firstNoBackgroundFaceMetadata,
108
+ noBackgroundVideoEffects = _ref.noBackgroundVideoEffects;
109
+ var _useVideoConfig = useVideoConfig(),
110
+ width = _useVideoConfig.width,
111
+ height = _useVideoConfig.height,
112
+ fps = _useVideoConfig.fps,
113
+ durationInFrames = _useVideoConfig.durationInFrames;
114
+ var frame = useCurrentFrame();
115
+ var _useTheme = useTheme(),
116
+ primaryColor = _useTheme.primaryColor,
117
+ primaryContrast = _useTheme.primaryContrast,
118
+ accentColor = _useTheme.accentColor;
119
+ var _useVirtualBackground = useVirtualBackground(),
120
+ isVirtual = _useVirtualBackground.isVirtual,
121
+ virtualBgUrl = _useVirtualBackground.url;
122
+ var _useSafeZoneInsets = useSafeZoneInsets(),
123
+ insetTop = _useSafeZoneInsets.insetTop,
124
+ insetLeft = _useSafeZoneInsets.insetLeft,
125
+ insetRight = _useSafeZoneInsets.insetRight,
126
+ insetBottom = _useSafeZoneInsets.insetBottom;
127
+ var showVirtual = isVirtual && !!firstNoBackgroundVideoUrl;
128
+ var safeText = sanitizeText(text);
129
+ var safeFullName = sanitizeText(fullName);
130
+ var safeTitle = sanitizeText(title);
131
+ var safeCollaboratorName = sanitizeText(collaboratorName);
132
+ var safeCollaboratorTitle = sanitizeText(collaboratorTitle);
133
+ var safeTopicLabel = sanitizeText(topicLabel);
134
+ var speaker = sanitizeText(activeSpeaker).toLowerCase();
135
+ var creatorActive = speaker !== 'collaborator';
136
+ var collaboratorActive = speaker === 'collaborator';
137
+ var hasTitle = Boolean(safeText);
138
+ var hasCreatorInfo = Boolean(safeFullName || safeTitle);
139
+ var hasCollaboratorText = Boolean(safeCollaboratorName || safeCollaboratorTitle);
140
+ var showCollaboratorVideo = Boolean(secondVideoFile);
141
+ var shouldShowResponderTease = Boolean(showCollaboratorVideo || hasCollaboratorText);
142
+ var _useOrientationBased = useOrientationBased({
143
+ landscape: {
144
+ padding: CHROME_PADDING + 12,
145
+ introTitleMaxWidth: Math.min(width * 0.56, 820),
146
+ introTitleMaxHeight: height * 0.32,
147
+ introTitleMaxFontSize: 98,
148
+ introTitleTop: height * 0.23,
149
+ introTitleLeft: CHROME_PADDING + 12,
150
+ introTitleCentered: false,
151
+ introTitleMaxLines: 3,
152
+ compactTitleMaxWidth: Math.min(width * 0.36, 560),
153
+ compactTitleMaxHeight: 120,
154
+ compactTitleMaxFontSize: 38,
155
+ compactTitleTop: CHROME_PADDING + 12,
156
+ compactTitleLeft: CHROME_PADDING + 12,
157
+ compactTitleCentered: false,
158
+ compactTitleMaxLines: 2,
159
+ topicFontSize: 13,
160
+ lowerThirdLeft: CHROME_PADDING + 12,
161
+ lowerThirdBottom: 118,
162
+ lowerThirdMaxWidth: Math.min(width * 0.34, 520),
163
+ lowerThirdNameMaxFontSize: 34,
164
+ lowerThirdRoleMaxFontSize: 20,
165
+ previewWidth: Math.min(width * 0.264, 352),
166
+ previewHeight: Math.min(width * 0.264, 352) * 16 / 9,
167
+ previewTop: height * 0.14,
168
+ previewRight: 0,
169
+ previewBleed: 0,
170
+ previewRadius: 32,
171
+ previewPadding: 22,
172
+ previewLabelFontSize: 13,
173
+ previewNameMaxFontSize: 30,
174
+ previewRoleMaxFontSize: 16,
175
+ previewTitleMaxLines: 2
176
+ },
177
+ portrait: {
178
+ padding: CHROME_PADDING + 4,
179
+ introTitleMaxWidth: Math.min(width * 0.82, 680),
180
+ introTitleMaxHeight: height * 0.23,
181
+ introTitleMaxFontSize: 68,
182
+ introTitleTop: height * 0.18,
183
+ introTitleLeft: width / 2,
184
+ introTitleCentered: true,
185
+ introTitleMaxLines: 3,
186
+ compactTitleMaxWidth: Math.min(width * 0.76, 620),
187
+ compactTitleMaxHeight: 130,
188
+ compactTitleMaxFontSize: 44,
189
+ compactTitleTop: CHROME_PADDING + 18,
190
+ compactTitleLeft: CHROME_PADDING + 6,
191
+ compactTitleCentered: false,
192
+ compactTitleMaxLines: 2,
193
+ topicFontSize: 17,
194
+ lowerThirdLeft: CHROME_PADDING + 6,
195
+ lowerThirdBottom: 342,
196
+ lowerThirdMaxWidth: Math.min(width * 0.7, 620),
197
+ lowerThirdNameMaxFontSize: 48,
198
+ lowerThirdRoleMaxFontSize: 28,
199
+ previewWidth: Math.min(width * 0.44, 320),
200
+ previewHeight: Math.min(height * 0.44, 460),
201
+ previewTop: CHROME_PADDING + 72,
202
+ previewRight: 0,
203
+ previewBleed: Math.min(14, width * 0.02),
204
+ previewRadius: 28,
205
+ previewPadding: 20,
206
+ previewLabelFontSize: 14,
207
+ previewNameMaxFontSize: 37,
208
+ previewRoleMaxFontSize: 18,
209
+ previewTitleMaxLines: 2
210
+ },
211
+ square: {
212
+ padding: CHROME_PADDING + 4,
213
+ introTitleMaxWidth: Math.min(width * 0.78, 620),
214
+ introTitleMaxHeight: height * 0.22,
215
+ introTitleMaxFontSize: 60,
216
+ introTitleTop: height * 0.19,
217
+ introTitleLeft: width / 2,
218
+ introTitleCentered: true,
219
+ introTitleMaxLines: 2,
220
+ compactTitleMaxWidth: Math.min(width * 0.74, 540),
221
+ compactTitleMaxHeight: 108,
222
+ compactTitleMaxFontSize: 36,
223
+ compactTitleTop: CHROME_PADDING + 12,
224
+ compactTitleLeft: CHROME_PADDING + 4,
225
+ compactTitleCentered: false,
226
+ compactTitleMaxLines: 2,
227
+ topicFontSize: 13,
228
+ lowerThirdLeft: CHROME_PADDING + 4,
229
+ lowerThirdBottom: 210,
230
+ lowerThirdMaxWidth: Math.min(width * 0.62, 440),
231
+ lowerThirdNameMaxFontSize: 34,
232
+ lowerThirdRoleMaxFontSize: 20,
233
+ previewWidth: Math.min(width * 0.34, 230),
234
+ previewHeight: Math.min(height * 0.37, 270),
235
+ previewTop: CHROME_PADDING + 64,
236
+ previewRight: 0,
237
+ previewBleed: Math.min(12, width * 0.02),
238
+ previewRadius: 24,
239
+ previewPadding: 18,
240
+ previewLabelFontSize: 13,
241
+ previewNameMaxFontSize: 24,
242
+ previewRoleMaxFontSize: 14,
243
+ previewTitleMaxLines: 1
244
+ }
245
+ }),
246
+ orientation = _useOrientationBased.orientation,
247
+ padding = _useOrientationBased.padding,
248
+ introTitleMaxWidth = _useOrientationBased.introTitleMaxWidth,
249
+ introTitleMaxHeight = _useOrientationBased.introTitleMaxHeight,
250
+ introTitleMaxFontSize = _useOrientationBased.introTitleMaxFontSize,
251
+ introTitleTop = _useOrientationBased.introTitleTop,
252
+ introTitleLeft = _useOrientationBased.introTitleLeft,
253
+ introTitleCentered = _useOrientationBased.introTitleCentered,
254
+ introTitleMaxLines = _useOrientationBased.introTitleMaxLines,
255
+ compactTitleMaxWidth = _useOrientationBased.compactTitleMaxWidth,
256
+ compactTitleMaxHeight = _useOrientationBased.compactTitleMaxHeight,
257
+ compactTitleMaxFontSize = _useOrientationBased.compactTitleMaxFontSize,
258
+ compactTitleTop = _useOrientationBased.compactTitleTop,
259
+ compactTitleLeft = _useOrientationBased.compactTitleLeft,
260
+ compactTitleCentered = _useOrientationBased.compactTitleCentered,
261
+ compactTitleMaxLines = _useOrientationBased.compactTitleMaxLines,
262
+ topicFontSize = _useOrientationBased.topicFontSize,
263
+ lowerThirdLeft = _useOrientationBased.lowerThirdLeft,
264
+ lowerThirdBottom = _useOrientationBased.lowerThirdBottom,
265
+ lowerThirdMaxWidth = _useOrientationBased.lowerThirdMaxWidth,
266
+ lowerThirdNameMaxFontSize = _useOrientationBased.lowerThirdNameMaxFontSize,
267
+ lowerThirdRoleMaxFontSize = _useOrientationBased.lowerThirdRoleMaxFontSize,
268
+ previewWidth = _useOrientationBased.previewWidth,
269
+ previewHeight = _useOrientationBased.previewHeight,
270
+ previewTop = _useOrientationBased.previewTop,
271
+ previewRight = _useOrientationBased.previewRight,
272
+ previewBleed = _useOrientationBased.previewBleed,
273
+ previewRadius = _useOrientationBased.previewRadius,
274
+ previewPadding = _useOrientationBased.previewPadding,
275
+ previewLabelFontSize = _useOrientationBased.previewLabelFontSize,
276
+ previewNameMaxFontSize = _useOrientationBased.previewNameMaxFontSize,
277
+ previewRoleMaxFontSize = _useOrientationBased.previewRoleMaxFontSize,
278
+ previewTitleMaxLines = _useOrientationBased.previewTitleMaxLines;
279
+ var isLandscape = orientation === 'landscape';
280
+ var isPortrait = orientation === 'portrait';
281
+ var isSquare = orientation === 'square';
282
+ var lowerThirdEnterStart = fps * lowerThirdEnterStartSeconds;
283
+ var lowerThirdEnterEnd = fps * lowerThirdEnterEndSeconds;
284
+ var previewEnterStart = fps * previewEnterStartSeconds;
285
+ var previewEnterEnd = fps * previewEnterEndSeconds;
286
+ var resolvedCompactTitleEnterStartSeconds = compactTitleEnterStartSeconds !== null && compactTitleEnterStartSeconds !== void 0 ? compactTitleEnterStartSeconds : isSquare ? 0 : 2.1;
287
+ var compactTitleEnterStart = fps * resolvedCompactTitleEnterStartSeconds;
288
+ var longHoldFadeStart = Math.min(durationInFrames - fps * 1.5, fps * 6);
289
+ var longHoldFadeEnd = Math.min(durationInFrames - fps * 0.6, fps * 7.4);
290
+ var textColor = primaryContrast || '#ffffff';
291
+ var accent = accentColor || '#f7d774';
292
+ var softTextColor = withAlpha(textColor, 0.78) || textColor;
293
+ var subtleTextColor = withAlpha(textColor, 0.58) || textColor;
294
+ var titleShadow = '0 18px 48px rgba(0, 0, 0, 0.38)';
295
+ var lowerThirdShadow = '0 14px 32px rgba(0, 0, 0, 0.28)';
296
+ var previewShadow = '0 22px 48px rgba(0, 0, 0, 0.34)';
297
+ var _distributeTextToFit = distributeTextToFit(safeText, introTitleMaxWidth, introTitleMaxHeight, introTitleMaxFontSize),
298
+ introTitleLinesRaw = _distributeTextToFit.lines,
299
+ introTitleFontSize = _distributeTextToFit.fontSize;
300
+ var introTitleLines = clampLines(introTitleLinesRaw, introTitleMaxLines);
301
+ var introTitleLineMaskHeight = Math.ceil(introTitleFontSize * 1.12);
302
+ var _distributeTextToFit2 = distributeTextToFit(safeText, compactTitleMaxWidth, compactTitleMaxHeight, compactTitleMaxFontSize),
303
+ compactTitleLinesRaw = _distributeTextToFit2.lines,
304
+ compactTitleFontSize = _distributeTextToFit2.fontSize;
305
+ var compactTitleLines = clampLines(compactTitleLinesRaw, compactTitleMaxLines);
306
+ var _distributeTextToFit3 = distributeTextToFit(safeFullName, lowerThirdMaxWidth, isLandscape ? 78 : 94, lowerThirdNameMaxFontSize),
307
+ hostNameLines = _distributeTextToFit3.lines,
308
+ hostNameFontSize = _distributeTextToFit3.fontSize;
309
+ var _distributeTextToFit4 = distributeTextToFit(safeTitle, lowerThirdMaxWidth, isLandscape ? 48 : 64, lowerThirdRoleMaxFontSize),
310
+ hostRoleLines = _distributeTextToFit4.lines,
311
+ hostRoleFontSize = _distributeTextToFit4.fontSize;
312
+ var previewTextWidth = Math.max(previewWidth - previewPadding * 2, 0);
313
+ var _distributeTextToFit5 = distributeTextToFit(safeCollaboratorName, previewTextWidth, isLandscape ? 64 : 58, previewNameMaxFontSize),
314
+ collaboratorNameLinesRaw = _distributeTextToFit5.lines,
315
+ collaboratorNameFontSize = _distributeTextToFit5.fontSize;
316
+ var collaboratorNameLines = clampLines(collaboratorNameLinesRaw, 2);
317
+ var _distributeTextToFit6 = distributeTextToFit(safeCollaboratorTitle, previewTextWidth, isLandscape ? 48 : 42, previewRoleMaxFontSize),
318
+ collaboratorRoleLinesRaw = _distributeTextToFit6.lines,
319
+ collaboratorRoleFontSize = _distributeTextToFit6.fontSize;
320
+ var collaboratorRoleLines = clampLines(collaboratorRoleLinesRaw, previewTitleMaxLines);
321
+ var introTitleOpacity = isLandscape ? 1 : 0;
322
+ var holdOpacity = durationInFrames > fps * 8 ? interpolateWithClamp(frame, [longHoldFadeStart, longHoldFadeEnd], [1, 0.72]) : 1;
323
+ var compactOpacity = isLandscape ? 0 : holdOpacity;
324
+ var compactPlateRightInset = interpolateWithClamp(frame, [compactTitleEnterStart, compactTitleEnterStart + 5, compactTitleEnterStart + 9], [100, -4, 0], Easing.out(Easing.cubic));
325
+ var compactTopicEnterStart = compactTitleEnterStart + 3;
326
+ var compactTopicOpacity = interpolateWithClamp(frame, [compactTopicEnterStart, compactTopicEnterStart + 4], [0, 1]);
327
+ var compactTopicTranslateY = interpolateWithClamp(frame, [compactTopicEnterStart, compactTopicEnterStart + 4, compactTopicEnterStart + 8], [10, -2, 0], Easing.out(Easing.cubic));
328
+ var compactTopicScale = interpolateWithClamp(frame, [compactTopicEnterStart, compactTopicEnterStart + 4, compactTopicEnterStart + 8], [0.96, 1.03, 1], Easing.out(Easing.cubic));
329
+ var lowerThirdSustain = durationInFrames > fps * 8 ? interpolateWithClamp(frame, [fps * 5.4, fps * 7.4], [1, 0.45]) : 1;
330
+ var lowerThirdRuleScaleX = interpolateWithClamp(frame, [lowerThirdEnterStart, lowerThirdEnterStart + 5, lowerThirdEnterStart + 9], [0, 1.08, 1], Easing.out(Easing.cubic));
331
+ var lowerThirdRuleOpacity = interpolateWithClamp(frame, [lowerThirdEnterStart, lowerThirdEnterStart + 4], [0, 1]) * lowerThirdSustain;
332
+ var lowerThirdNameOpacity = interpolateWithClamp(frame, [lowerThirdEnterStart + 3, lowerThirdEnterEnd], [0, 1]) * lowerThirdSustain;
333
+ var lowerThirdNameTranslateY = interpolateWithClamp(frame, [lowerThirdEnterStart + 3, lowerThirdEnterStart + 9, lowerThirdEnterEnd], [18, -4, 0], Easing.out(Easing.cubic));
334
+ var lowerThirdRoleOpacity = interpolateWithClamp(frame, [lowerThirdEnterStart + 7, lowerThirdEnterEnd + 2], [0, 1]) * lowerThirdSustain;
335
+ var lowerThirdRoleTranslateY = interpolateWithClamp(frame, [lowerThirdEnterStart + 7, lowerThirdEnterStart + 12, lowerThirdEnterEnd + 2], [14, -2, 0], Easing.out(Easing.cubic));
336
+ var previewReveal = interpolateWithClamp(frame, [previewEnterStart, previewEnterEnd], [0, 1]);
337
+ var previewTranslateX = interpolateWithClamp(frame, [previewEnterStart, previewEnterEnd], [26, 0], Easing.out(Easing.cubic));
338
+ var previewScaleIn = interpolateWithClamp(frame, [previewEnterStart, previewEnterStart + 7, previewEnterEnd], [0.94, 1.03, 1], Easing.out(Easing.cubic));
339
+ var previewRevealWidth = interpolateWithClamp(frame, [previewEnterStart, previewEnterStart + 10], [0, previewWidth], Easing.out(Easing.cubic));
340
+ var previewLabelEnterStart = previewEnterStart + 3;
341
+ var previewLabelOpacity = interpolateWithClamp(frame, [previewLabelEnterStart, previewLabelEnterStart + 4], [0, 1]);
342
+ var previewLabelTranslateY = interpolateWithClamp(frame, [previewLabelEnterStart, previewLabelEnterStart + 4, previewLabelEnterStart + 10], [-10, 2, 0], Easing.out(Easing.cubic));
343
+ var previewLabelScale = interpolateWithClamp(frame, [previewLabelEnterStart, previewLabelEnterStart + 4, previewLabelEnterStart + 10], [0.9, 1.08, 1], Easing.out(Easing.cubic));
344
+ var slowPreviewDrift = Math.sin(frame / 30) * (isLandscape ? 4 : 3);
345
+ var slowHostScale = 1.02 + interpolateWithClamp(frame, [0, durationInFrames], [0, 0.025]);
346
+ var backgroundOverlayOpacity = collaboratorActive ? 0.72 : 0.62;
347
+ var previewVisualScale = previewScaleIn * (collaboratorActive ? 1.03 : 0.99);
348
+ var previewOpacity = previewReveal * (collaboratorActive ? 1 : 0.92);
349
+ var previewLabel = collaboratorActive ? 'RESPONDING' : 'NEXT UP';
350
+ var previewLabelDisplayFontSize = Math.round(previewLabelFontSize * 2.3);
351
+ var previewEnterOvershoot = 28;
352
+ var previewFilter = collaboratorActive ? 'brightness(1.03) saturate(1.06)' : isLandscape ? 'brightness(1) saturate(1)' : 'brightness(0.84) saturate(0.88)';
353
+ var creatorFrameFilter = creatorActive ? 'saturate(1.03)' : 'brightness(0.92) saturate(0.92)';
354
+ var previewRadiusValue = isLandscape ? "".concat(previewRadius, "px 0 0 ").concat(previewRadius, "px") : "".concat(previewRadius, "px");
355
+ var showHostRole = Boolean(safeTitle && !isPortrait);
356
+ var showCollaboratorRole = Boolean(safeCollaboratorTitle && !isPortrait);
357
+ var settledTitleNeedsPlate = !isLandscape;
358
+ var compactPlateRadius = settledTitleNeedsPlate ? isPortrait ? 8 : 6 : 0;
359
+ var compactPlatePadding = settledTitleNeedsPlate ? isPortrait ? '24px 24px 20px' : '22px 22px 18px' : 0;
360
+ var compactPlateRuleWidth = isPortrait ? 56 : 44;
361
+ var introTitleSafeTop = Math.max(introTitleTop, insetTop + 16);
362
+ var introTitleSafeLeft = introTitleCentered ? '50%' : Math.max(introTitleLeft, insetLeft + 12);
363
+ var compactTitleSafeTop = Math.max(compactTitleTop, insetTop + (isPortrait ? 18 : isLandscape ? 12 : 12));
364
+ var compactTitleSafeLeft = compactTitleCentered ? '50%' : Math.max(compactTitleLeft, insetLeft + (isPortrait ? 8 : isLandscape ? 12 : 6));
365
+ var lowerThirdSafeLeft = Math.max(lowerThirdLeft, insetLeft + (isPortrait ? 8 : isLandscape ? 12 : 6));
366
+ var lowerThirdSafeBottom = Math.max(lowerThirdBottom, insetBottom + (isPortrait ? 24 : 18));
367
+ var previewSafeTop = Math.max(previewTop, insetTop + previewLabelDisplayFontSize + 22);
368
+ var previewSafeRight = Math.max(previewRight - previewBleed, insetRight) + previewEnterOvershoot;
369
+ var chromeInsets = {
370
+ top: Math.max(padding, insetTop),
371
+ left: Math.max(padding, insetLeft),
372
+ right: Math.max(padding, insetRight),
373
+ bottom: Math.max(padding, insetBottom)
374
+ };
375
+ var shouldRenderIntroTitle = showTitleElements && hasTitle;
376
+ var shouldRenderCompactTitle = showTitleElements && !isLandscape && (safeTopicLabel || hasTitle);
377
+ var shouldRenderLowerThird = showLowerThird && hasCreatorInfo;
378
+ var shouldRenderPreview = showPreview && shouldShowResponderTease;
379
+ var renderCreatorVideo = function renderCreatorVideo(containerWidth, containerHeight, radius) {
380
+ return /*#__PURE__*/React.createElement(React.Fragment, null, showVirtual && virtualBgUrl ? /*#__PURE__*/React.createElement(VirtualBackgroundUnderlay, {
381
+ url: virtualBgUrl,
382
+ width: "100%",
383
+ height: "100%",
384
+ borderRadius: radius,
385
+ zIndex: 1
386
+ }) : null, firstNoBackgroundFaceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
387
+ startFrom: startVideoFrom,
388
+ src: firstVideoFile,
389
+ faceMetadata: firstNoBackgroundFaceMetadata,
390
+ containerWidth: containerWidth,
391
+ containerHeight: containerHeight,
392
+ useAveragePosition: true,
393
+ muted: false,
394
+ style: {
395
+ filter: mergeFilters(!showVirtual && noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.backgroundDim && firstNoBackgroundVideoUrl ? 'brightness(0.7)' : undefined)
396
+ }
397
+ }) : /*#__PURE__*/React.createElement(OffthreadVideo, {
398
+ startFrom: startVideoFrom,
399
+ src: firstVideoFile,
400
+ muted: false,
401
+ style: {
402
+ width: '100%',
403
+ height: '100%',
404
+ objectFit: 'cover',
405
+ filter: mergeFilters(!showVirtual && noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.backgroundDim && firstNoBackgroundVideoUrl ? 'brightness(0.7)' : undefined)
406
+ }
407
+ }), /*#__PURE__*/React.createElement(BlurOverlay, {
408
+ show: !showVirtual && (noBackgroundVideoEffects === null || noBackgroundVideoEffects === void 0 ? void 0 : noBackgroundVideoEffects.backgroundBlur) && firstNoBackgroundVideoUrl,
409
+ width: containerWidth,
410
+ height: containerHeight,
411
+ zIndex: 2
412
+ }), firstNoBackgroundVideoUrl && (showVirtual || noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.facePop || noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.backgroundDim || noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.backgroundBlur) ? /*#__PURE__*/React.createElement(AbsoluteFill, {
413
+ style: {
414
+ position: 'absolute',
415
+ inset: 0,
416
+ zIndex: 4
417
+ }
418
+ }, firstNoBackgroundFaceMetadata ? /*#__PURE__*/React.createElement(FaceCenteredVideo, {
419
+ startFrom: startVideoFrom,
420
+ src: firstNoBackgroundVideoUrl,
421
+ faceMetadata: firstNoBackgroundFaceMetadata,
422
+ containerWidth: containerWidth,
423
+ containerHeight: containerHeight,
424
+ useAveragePosition: true,
425
+ muted: true,
426
+ transparent: true,
427
+ noBackgroundVideoEffects: noBackgroundVideoEffects
428
+ }) : /*#__PURE__*/React.createElement(OffthreadVideo, {
429
+ startFrom: startVideoFrom,
430
+ src: firstNoBackgroundVideoUrl,
431
+ muted: true,
432
+ transparent: true,
433
+ style: {
434
+ width: '100%',
435
+ height: '100%',
436
+ objectFit: 'cover',
437
+ filter: noBackgroundVideoEffects !== null && noBackgroundVideoEffects !== void 0 && noBackgroundVideoEffects.facePop ? 'brightness(1.1) contrast(1.15) saturate(1.05)' : undefined
438
+ }
439
+ })) : null);
440
+ };
441
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(AbsoluteFill, {
442
+ style: {
443
+ width: width,
444
+ height: height,
445
+ backgroundColor: showBackground ? primaryColor || '#0f172a' : 'transparent',
446
+ color: textColor,
447
+ fontFamily: bodyFontFamily,
448
+ overflow: 'hidden'
449
+ }
450
+ }, showCreatorVideo && /*#__PURE__*/React.createElement("div", {
451
+ style: {
452
+ position: 'absolute',
453
+ inset: 0,
454
+ transform: "scale(".concat(slowHostScale, ")"),
455
+ transformOrigin: 'center',
456
+ filter: creatorFrameFilter,
457
+ opacity: creatorActive ? 1 : 0.96
458
+ }
459
+ }, renderCreatorVideo(width, height, 0)), showBackdropOverlays && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
460
+ style: {
461
+ position: 'absolute',
462
+ inset: 0,
463
+ background: isLandscape ? "linear-gradient(90deg, ".concat(withAlpha('#000000', 0.78), " 0%, ").concat(withAlpha('#000000', 0.5), " 28%, ").concat(withAlpha('#000000', 0.18), " 58%, ").concat(withAlpha('#000000', 0.58), " 100%)") : "linear-gradient(90deg, ".concat(withAlpha('#000000', 0.34), " 0%, ").concat(withAlpha('#000000', 0.16), " 24%, ").concat(withAlpha('#000000', 0), " 46%), linear-gradient(180deg, ").concat(withAlpha('#000000', 0.52), " 0%, ").concat(withAlpha('#000000', 0.2), " 24%, ").concat(withAlpha('#000000', 0.26), " 58%, ").concat(withAlpha('#000000', 0.82), " 100%)"),
464
+ opacity: backgroundOverlayOpacity,
465
+ zIndex: 2
466
+ }
467
+ }), /*#__PURE__*/React.createElement("div", {
468
+ style: {
469
+ position: 'absolute',
470
+ inset: 0,
471
+ background: isLandscape ? "linear-gradient(105deg, ".concat(withAlpha('#000000', collaboratorActive ? 0.22 : 0.12), " 0%, ").concat(withAlpha('#000000', 0), " 42%, ").concat(withAlpha('#000000', collaboratorActive ? 0.32 : 0.2), " 100%)") : "radial-gradient(circle at 82% 24%, ".concat(withAlpha('#000000', collaboratorActive ? 0.26 : 0.16), " 0%, ").concat(withAlpha('#000000', 0), " 38%)"),
472
+ zIndex: 3
473
+ }
474
+ })), shouldRenderIntroTitle && /*#__PURE__*/React.createElement("div", {
475
+ style: {
476
+ position: 'absolute',
477
+ top: introTitleSafeTop,
478
+ left: introTitleSafeLeft,
479
+ width: introTitleMaxWidth,
480
+ opacity: introTitleOpacity,
481
+ transform: "".concat(introTitleCentered ? 'translateX(-50%) ' : '', "translateY(0px) scale(1)"),
482
+ textAlign: introTitleCentered ? 'center' : 'left',
483
+ zIndex: 7
484
+ }
485
+ }, safeTopicLabel && /*#__PURE__*/React.createElement("div", {
486
+ style: {
487
+ fontSize: topicFontSize,
488
+ letterSpacing: '0.28em',
489
+ textTransform: 'uppercase',
490
+ color: withAlpha(textColor, 0.72),
491
+ marginBottom: 12,
492
+ fontWeight: 600,
493
+ opacity: interpolateWithClamp(frame, [0, 6], [0, 1]),
494
+ transform: "translateY(".concat(interpolateWithClamp(frame, [0, 8], [10, 0]), "px)")
495
+ }
496
+ }, safeTopicLabel), introTitleLines.map(function (line, index) {
497
+ return /*#__PURE__*/React.createElement("div", {
498
+ key: "intro-title-line-".concat(index),
499
+ style: {
500
+ height: introTitleLineMaskHeight,
501
+ overflow: 'hidden',
502
+ marginBottom: index === introTitleLines.length - 1 ? 0 : 6
503
+ }
504
+ }, /*#__PURE__*/React.createElement("div", {
505
+ style: {
506
+ fontFamily: headlineFontFamily,
507
+ fontSize: introTitleFontSize,
508
+ lineHeight: 0.97,
509
+ fontWeight: 500,
510
+ letterSpacing: '-0.03em',
511
+ textShadow: titleShadow,
512
+ opacity: interpolateWithClamp(frame, [index * 3, index * 3 + 4], [0, 1]),
513
+ transform: "translateY(".concat(interpolateWithClamp(frame, [index * 3, index * 3 + 7, index * 3 + 12], [Math.round(introTitleFontSize * 0.62), -4, 0], Easing.out(Easing.cubic)), "px) scale(").concat(interpolateWithClamp(frame, [index * 3, index * 3 + 7, index * 3 + 12], [0.98, 1.02, 1], Easing.out(Easing.cubic)), ")"),
514
+ transformOrigin: 'left center'
515
+ }
516
+ }, line));
517
+ })), shouldRenderCompactTitle && /*#__PURE__*/React.createElement("div", {
518
+ style: {
519
+ position: 'absolute',
520
+ top: compactTitleSafeTop,
521
+ left: compactTitleSafeLeft,
522
+ width: compactTitleMaxWidth,
523
+ opacity: compactOpacity,
524
+ transform: "".concat(compactTitleCentered ? 'translateX(-50%) ' : '', "translateY(0px)"),
525
+ textAlign: compactTitleCentered ? 'center' : 'left',
526
+ zIndex: 8
527
+ }
528
+ }, /*#__PURE__*/React.createElement("div", {
529
+ style: {
530
+ position: 'relative',
531
+ display: 'inline-flex',
532
+ flexDirection: 'column',
533
+ alignItems: compactTitleCentered ? 'center' : 'flex-start',
534
+ width: settledTitleNeedsPlate ? 'fit-content' : '100%',
535
+ maxWidth: '100%',
536
+ padding: compactPlatePadding,
537
+ borderRadius: compactPlateRadius,
538
+ background: settledTitleNeedsPlate ? "linear-gradient(180deg, ".concat(withAlpha('#000000', 0.7), " 0%, ").concat(withAlpha('#000000', 0.42), " 100%)") : 'transparent',
539
+ boxShadow: settledTitleNeedsPlate ? '0 18px 36px rgba(0, 0, 0, 0.22)' : undefined,
540
+ backdropFilter: settledTitleNeedsPlate ? 'blur(14px)' : undefined,
541
+ border: settledTitleNeedsPlate ? "1px solid ".concat(withAlpha(textColor, 0.08)) : undefined,
542
+ clipPath: settledTitleNeedsPlate ? "inset(0 ".concat(compactPlateRightInset, "% 0 0 round ").concat(compactPlateRadius, "px)") : undefined
543
+ }
544
+ }, settledTitleNeedsPlate && /*#__PURE__*/React.createElement("div", {
545
+ style: {
546
+ position: 'absolute',
547
+ top: 12,
548
+ left: 18,
549
+ width: compactPlateRuleWidth,
550
+ height: 3,
551
+ backgroundColor: accent
552
+ }
553
+ }), safeTopicLabel && /*#__PURE__*/React.createElement("div", {
554
+ style: {
555
+ fontSize: topicFontSize,
556
+ letterSpacing: '0.3em',
557
+ textTransform: 'uppercase',
558
+ color: subtleTextColor,
559
+ fontWeight: 600,
560
+ marginBottom: hasTitle ? 12 : 0,
561
+ marginTop: settledTitleNeedsPlate ? 8 : 0,
562
+ opacity: compactTopicOpacity,
563
+ transform: "translateY(".concat(compactTopicTranslateY, "px) scale(").concat(compactTopicScale, ")"),
564
+ transformOrigin: 'left center'
565
+ }
566
+ }, safeTopicLabel), compactTitleLines.map(function (line, index) {
567
+ return /*#__PURE__*/React.createElement("div", {
568
+ key: "compact-title-line-".concat(index),
569
+ style: {
570
+ height: Math.ceil(compactTitleFontSize * 1.02),
571
+ overflow: 'hidden',
572
+ marginBottom: index === compactTitleLines.length - 1 ? 0 : 2
573
+ }
574
+ }, /*#__PURE__*/React.createElement("div", {
575
+ style: {
576
+ fontFamily: headlineFontFamily,
577
+ fontSize: compactTitleFontSize,
578
+ lineHeight: 1,
579
+ fontWeight: 500,
580
+ letterSpacing: '-0.025em',
581
+ textShadow: '0 10px 24px rgba(0, 0, 0, 0.28)',
582
+ color: textColor,
583
+ opacity: interpolateWithClamp(frame, [compactTitleEnterStart + 5 + index * 2, compactTitleEnterStart + 9 + index * 2], [0, 0.94]),
584
+ transform: "translateY(".concat(interpolateWithClamp(frame, [compactTitleEnterStart + 5 + index * 2, compactTitleEnterStart + 9 + index * 2, compactTitleEnterStart + 13 + index * 2], [Math.round(compactTitleFontSize * 0.5), -3, 0], Easing.out(Easing.cubic)), "px) scale(").concat(interpolateWithClamp(frame, [compactTitleEnterStart + 5 + index * 2, compactTitleEnterStart + 9 + index * 2, compactTitleEnterStart + 13 + index * 2], [0.98, 1.02, 1], Easing.out(Easing.cubic)), ")"),
585
+ transformOrigin: 'left center'
586
+ }
587
+ }, line));
588
+ }))), shouldRenderLowerThird && /*#__PURE__*/React.createElement("div", {
589
+ style: {
590
+ position: 'absolute',
591
+ left: lowerThirdSafeLeft,
592
+ bottom: lowerThirdSafeBottom,
593
+ width: lowerThirdMaxWidth,
594
+ zIndex: 7
595
+ }
596
+ }, /*#__PURE__*/React.createElement("div", {
597
+ style: {
598
+ width: isPortrait ? 52 : 44,
599
+ height: 2,
600
+ backgroundColor: accent,
601
+ marginBottom: 14,
602
+ boxShadow: "0 0 20px ".concat(withAlpha(accent, 0.34)),
603
+ opacity: lowerThirdRuleOpacity,
604
+ transform: "scaleX(".concat(lowerThirdRuleScaleX, ")"),
605
+ transformOrigin: 'left center'
606
+ }
607
+ }), /*#__PURE__*/React.createElement("div", {
608
+ style: {
609
+ opacity: lowerThirdNameOpacity,
610
+ transform: "translateY(".concat(lowerThirdNameTranslateY, "px)")
611
+ }
612
+ }, hostNameLines.map(function (line, index) {
613
+ return /*#__PURE__*/React.createElement("div", {
614
+ key: "host-name-".concat(index),
615
+ style: {
616
+ fontFamily: headlineFontFamily,
617
+ fontSize: hostNameFontSize,
618
+ lineHeight: 0.98,
619
+ fontWeight: 500,
620
+ letterSpacing: '-0.02em',
621
+ textShadow: lowerThirdShadow,
622
+ marginBottom: index === hostNameLines.length - 1 && !showHostRole ? 0 : 2
623
+ }
624
+ }, line);
625
+ })), showHostRole && /*#__PURE__*/React.createElement("div", {
626
+ style: {
627
+ marginTop: safeFullName ? 6 : 0,
628
+ opacity: lowerThirdRoleOpacity,
629
+ transform: "translateY(".concat(lowerThirdRoleTranslateY, "px)")
630
+ }
631
+ }, hostRoleLines.map(function (line, index) {
632
+ return /*#__PURE__*/React.createElement("div", {
633
+ key: "host-role-".concat(index),
634
+ style: {
635
+ fontSize: hostRoleFontSize,
636
+ lineHeight: 1.18,
637
+ fontWeight: 500,
638
+ color: softTextColor,
639
+ textShadow: lowerThirdShadow,
640
+ marginBottom: index === hostRoleLines.length - 1 ? 0 : 2
641
+ }
642
+ }, line);
643
+ }))), shouldRenderPreview && /*#__PURE__*/React.createElement("div", {
644
+ style: {
645
+ position: 'absolute',
646
+ top: previewSafeTop,
647
+ right: previewSafeRight,
648
+ width: previewWidth,
649
+ height: previewHeight,
650
+ opacity: previewOpacity,
651
+ transform: "translateX(".concat(previewTranslateX, "px) translateY(").concat(slowPreviewDrift, "px) scale(").concat(previewVisualScale, ")"),
652
+ transformOrigin: isLandscape ? 'center right' : 'top right',
653
+ zIndex: 7
654
+ }
655
+ }, /*#__PURE__*/React.createElement("div", {
656
+ style: {
657
+ position: 'absolute',
658
+ top: -(previewLabelDisplayFontSize + 12),
659
+ left: previewPadding,
660
+ zIndex: 3,
661
+ opacity: previewLabelOpacity,
662
+ transform: "translateY(".concat(previewLabelTranslateY, "px) scale(").concat(previewLabelScale, ")"),
663
+ transformOrigin: 'left bottom'
664
+ }
665
+ }, /*#__PURE__*/React.createElement("div", {
666
+ style: {
667
+ fontSize: previewLabelDisplayFontSize,
668
+ fontWeight: 700,
669
+ letterSpacing: '0.18em',
670
+ textTransform: 'uppercase',
671
+ color: accent,
672
+ textShadow: '0 10px 20px rgba(0, 0, 0, 0.45)',
673
+ lineHeight: 1
674
+ }
675
+ }, previewLabel)), /*#__PURE__*/React.createElement("div", {
676
+ style: {
677
+ position: 'absolute',
678
+ top: 0,
679
+ right: 0,
680
+ bottom: 0,
681
+ width: previewRevealWidth,
682
+ borderRadius: previewRadiusValue,
683
+ overflow: 'hidden'
684
+ }
685
+ }, /*#__PURE__*/React.createElement("div", {
686
+ style: {
687
+ position: 'absolute',
688
+ top: 0,
689
+ right: 0,
690
+ bottom: 0,
691
+ width: previewWidth,
692
+ borderRadius: previewRadiusValue,
693
+ overflow: 'hidden',
694
+ boxShadow: previewShadow,
695
+ backgroundColor: withAlpha(primaryColor || '#0f172a', 0.62)
696
+ }
697
+ }, showCollaboratorVideo ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(OffthreadVideo, {
698
+ startFrom: startSecondVideoFrom,
699
+ src: secondVideoFile,
700
+ muted: true,
701
+ style: {
702
+ width: '100%',
703
+ height: '100%',
704
+ objectFit: 'cover',
705
+ objectPosition: '50% 20%',
706
+ filter: previewFilter,
707
+ transform: "scale(".concat(collaboratorActive ? 1.06 : 1.02, ")")
708
+ }
709
+ }), /*#__PURE__*/React.createElement("div", {
710
+ style: {
711
+ position: 'absolute',
712
+ inset: 0,
713
+ background: "linear-gradient(180deg, ".concat(withAlpha('#000000', 0), " 0%, ").concat(withAlpha('#000000', 0.08), " 42%, ").concat(withAlpha('#000000', 0.8), " 100%)")
714
+ }
715
+ })) : /*#__PURE__*/React.createElement("div", {
716
+ style: {
717
+ position: 'absolute',
718
+ inset: 0,
719
+ background: "linear-gradient(180deg, ".concat(withAlpha('#000000', 0.18), " 0%, ").concat(withAlpha('#0f172a', 0.92), " 100%)")
720
+ }
721
+ }), /*#__PURE__*/React.createElement("div", {
722
+ style: {
723
+ position: 'absolute',
724
+ top: 0,
725
+ left: 0,
726
+ bottom: 0,
727
+ width: 4,
728
+ backgroundColor: accent,
729
+ opacity: collaboratorActive ? 1 : 0.72,
730
+ borderTopLeftRadius: previewRadius,
731
+ borderBottomLeftRadius: previewRadius
732
+ }
733
+ }), /*#__PURE__*/React.createElement("div", {
734
+ style: {
735
+ position: 'absolute',
736
+ left: previewPadding,
737
+ right: previewPadding,
738
+ bottom: previewPadding
739
+ }
740
+ }, collaboratorNameLines.map(function (line, index) {
741
+ return /*#__PURE__*/React.createElement("div", {
742
+ key: "collaborator-name-".concat(index),
743
+ style: {
744
+ fontFamily: headlineFontFamily,
745
+ fontSize: collaboratorNameFontSize,
746
+ lineHeight: 0.98,
747
+ fontWeight: 500,
748
+ letterSpacing: '-0.02em',
749
+ color: textColor,
750
+ textShadow: '0 12px 26px rgba(0, 0, 0, 0.42)',
751
+ marginBottom: index === collaboratorNameLines.length - 1 && !showCollaboratorRole ? 0 : 2
752
+ }
753
+ }, line);
754
+ }), showCollaboratorRole && /*#__PURE__*/React.createElement("div", {
755
+ style: {
756
+ marginTop: safeCollaboratorName ? 6 : 0
757
+ }
758
+ }, collaboratorRoleLines.map(function (line, index) {
759
+ return /*#__PURE__*/React.createElement("div", {
760
+ key: "collaborator-role-".concat(index),
761
+ style: {
762
+ fontSize: collaboratorRoleFontSize,
763
+ lineHeight: 1.2,
764
+ fontWeight: 500,
765
+ color: withAlpha(textColor, 0.8),
766
+ marginBottom: index === collaboratorRoleLines.length - 1 ? 0 : 2
767
+ }
768
+ }, line);
769
+ })))))), showChrome && /*#__PURE__*/React.createElement("div", {
770
+ style: {
771
+ position: 'absolute',
772
+ top: chromeInsets.top,
773
+ left: chromeInsets.left,
774
+ right: chromeInsets.right,
775
+ bottom: chromeInsets.bottom,
776
+ border: "1px solid ".concat(withAlpha(collaboratorActive ? accent : textColor, collaboratorActive ? 0.22 : 0.08)),
777
+ pointerEvents: 'none',
778
+ zIndex: 6,
779
+ opacity: isPortrait ? 0.4 : 0.32
780
+ }
781
+ })), renderChildren ? /*#__PURE__*/React.createElement(AbsoluteFill, {
782
+ style: {
783
+ zIndex: 100
784
+ }
785
+ }, children) : null);
786
+ };