@zync/zync-screnplay-player 0.1.204 → 0.1.206

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