@evatril/video-templates 2.0.4 → 2.0.7
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.
- package/package.json +1 -1
- package/public/video-images/20012026-bg.png +0 -0
- package/public/video-images/20012026-bride.png +0 -0
- package/public/video-images/20012026-butterfly.png +0 -0
- package/public/video-images/20012026-couple-walk.png +0 -0
- package/public/video-images/20012026-floral-left.png +0 -0
- package/public/video-images/20012026-groom.png +0 -0
- package/public/video-images/20012026-peacock.png +0 -0
- package/public/video-images/20012026-wedding-gate.png +0 -0
- package/src/Invitations/Frames/F20012026_01.jsx +5 -15
- package/src/Invitations/Frames/F20012026_02.jsx +52 -159
- package/src/Invitations/Frames/F20012026_03.jsx +23 -58
- package/src/Invitations/Themes/T20012026_01.jsx +58 -38
- package/src/compositions.jsx +4 -5
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -9,17 +9,17 @@ import {
|
|
|
9
9
|
staticFile
|
|
10
10
|
} from "remotion";
|
|
11
11
|
|
|
12
|
-
import {
|
|
12
|
+
import { Butterflies20012026 } from "../Elements/Butterflies20012026.jsx";
|
|
13
13
|
import { OpeningGate20012026 } from "../Elements/OpeningGate20012026.jsx";
|
|
14
14
|
import { CoupleWalk20012026 } from "../Elements/CoupleWalk20012026.jsx";
|
|
15
|
-
import {FlowersSide20012026} from "../Elements/FlowersSide20012026.jsx";
|
|
15
|
+
import { FlowersSide20012026 } from "../Elements/FlowersSide20012026.jsx";
|
|
16
16
|
|
|
17
17
|
export const F20012026_01 = ({
|
|
18
18
|
firstName, secondName, welcomeMessage,
|
|
19
19
|
}) => {
|
|
20
20
|
/* -------------------- HOOKS (ONLY HERE) -------------------- */
|
|
21
21
|
const frame = useCurrentFrame();
|
|
22
|
-
const { fps, width, height
|
|
22
|
+
const { fps, width, height } = useVideoConfig();
|
|
23
23
|
|
|
24
24
|
/* -------------------- MESSAGE REVEAL -------------------- */
|
|
25
25
|
const messageStart = fps * 4;
|
|
@@ -58,16 +58,6 @@ export const F20012026_01 = ({
|
|
|
58
58
|
const groomAnim = reveal(groomStart);
|
|
59
59
|
return (
|
|
60
60
|
<AbsoluteFill style={{ overflow: "hidden" }}>
|
|
61
|
-
{/* ================= BACKGROUND ================= */}
|
|
62
|
-
<Img
|
|
63
|
-
src={staticFile("video-images/20012026-bg.png")}
|
|
64
|
-
style={{
|
|
65
|
-
position: "absolute",
|
|
66
|
-
width: "100%",
|
|
67
|
-
height: "100%",
|
|
68
|
-
objectFit: "cover",
|
|
69
|
-
}}
|
|
70
|
-
/>
|
|
71
61
|
|
|
72
62
|
{/* ================= VISUAL LAYERS ================= */}
|
|
73
63
|
<Butterflies20012026 frame={frame} fps={fps} width={width} height={height} />
|
|
@@ -154,7 +144,7 @@ export const F20012026_01 = ({
|
|
|
154
144
|
|
|
155
145
|
<h1
|
|
156
146
|
style={{
|
|
157
|
-
width: "100%",
|
|
147
|
+
width: "100%",
|
|
158
148
|
maxWidth: "80%",
|
|
159
149
|
fontFamily: "Playfair Display",
|
|
160
150
|
color: "#6B1E2E",
|
|
@@ -171,7 +161,7 @@ export const F20012026_01 = ({
|
|
|
171
161
|
|
|
172
162
|
}}
|
|
173
163
|
>
|
|
174
|
-
{secondName}
|
|
164
|
+
{secondName}
|
|
175
165
|
</h1>
|
|
176
166
|
</div>
|
|
177
167
|
</div>
|
|
@@ -13,93 +13,59 @@ import { SideTrees20012026 } from "../Elements/SideTrees20012026.jsx";
|
|
|
13
13
|
import { PeacockDance20012026 } from "../Elements/PeacockDance20012026.jsx";
|
|
14
14
|
import { SmoothRevealFromTop } from "../Elements/SmoothRevealFromTop.jsx";
|
|
15
15
|
|
|
16
|
-
export const F20012026_02 = ({
|
|
16
|
+
export const F20012026_02 = ({
|
|
17
|
+
firstName,
|
|
18
|
+
secondName,
|
|
19
|
+
firstSideNote,
|
|
20
|
+
secondSideNote,
|
|
21
|
+
invitationMessage,
|
|
22
|
+
occasionDate,
|
|
23
|
+
fadeInDuration = 30,
|
|
17
24
|
}) => {
|
|
18
25
|
const frame = useCurrentFrame();
|
|
19
26
|
const { fps } = useVideoConfig();
|
|
20
27
|
|
|
21
|
-
/* =================
|
|
22
|
-
const sceneOpacity = interpolate(
|
|
23
|
-
frame,
|
|
24
|
-
[0, fadeInDuration],
|
|
25
|
-
[0, 1],
|
|
26
|
-
{
|
|
27
|
-
extrapolateRight: "clamp",
|
|
28
|
-
easing: Easing.out(Easing.ease),
|
|
29
|
-
}
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
// 🎥 VERY SMOOTH CINEMATIC ZOOM
|
|
33
|
-
const sceneScale = interpolate(
|
|
34
|
-
frame,
|
|
35
|
-
[0, fadeInDuration * 2],
|
|
36
|
-
[1.20, 1],
|
|
37
|
-
{
|
|
38
|
-
extrapolateRight: "clamp",
|
|
39
|
-
easing: Easing.out(Easing.cubic),
|
|
40
|
-
}
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
/* ================= SAFE DATE FORMAT ================= */
|
|
28
|
+
/* ================= DATE FORMAT ================= */
|
|
44
29
|
const formatDate = (date) => {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
30
|
+
if (!date) return "";
|
|
31
|
+
const d = new Date(date);
|
|
32
|
+
if (isNaN(d.getTime())) return "";
|
|
48
33
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
};
|
|
34
|
+
return d.toLocaleDateString("en-IN", {
|
|
35
|
+
day: "numeric",
|
|
36
|
+
month: "long",
|
|
37
|
+
year: "numeric",
|
|
38
|
+
});
|
|
39
|
+
};
|
|
55
40
|
|
|
41
|
+
const DETAILS_START = fps * 3;
|
|
56
42
|
|
|
57
|
-
|
|
43
|
+
/* ================= CURTAIN ANIMATION ================= */
|
|
58
44
|
|
|
59
|
-
|
|
60
|
-
const showImageAfter = fadeInDuration * 1;
|
|
45
|
+
const showImageAfter = fadeInDuration;
|
|
61
46
|
|
|
62
47
|
const imageOpacity = interpolate(
|
|
63
48
|
frame,
|
|
64
49
|
[showImageAfter, showImageAfter + fps],
|
|
65
50
|
[0, 1],
|
|
66
|
-
{
|
|
67
|
-
extrapolateRight: "clamp",
|
|
68
|
-
easing: Easing.out(Easing.ease),
|
|
69
|
-
}
|
|
51
|
+
{ extrapolateRight: "clamp", easing: Easing.out(Easing.ease) }
|
|
70
52
|
);
|
|
71
53
|
|
|
72
54
|
const imageScale = interpolate(
|
|
73
55
|
frame,
|
|
74
56
|
[showImageAfter, showImageAfter + fps],
|
|
75
57
|
[0.92, 1],
|
|
76
|
-
{
|
|
77
|
-
extrapolateRight: "clamp",
|
|
78
|
-
easing: Easing.out(Easing.ease),
|
|
79
|
-
}
|
|
58
|
+
{ extrapolateRight: "clamp", easing: Easing.out(Easing.ease) }
|
|
80
59
|
);
|
|
81
60
|
|
|
82
61
|
return (
|
|
83
62
|
<AbsoluteFill
|
|
84
63
|
style={{
|
|
85
|
-
opacity: sceneOpacity,
|
|
86
|
-
transform: `scale(${sceneScale})`,
|
|
87
|
-
transformOrigin: "center center",
|
|
88
64
|
overflow: "hidden",
|
|
89
|
-
|
|
65
|
+
willChange: "transform",
|
|
90
66
|
}}
|
|
91
67
|
>
|
|
92
|
-
{/*
|
|
93
|
-
<Img
|
|
94
|
-
src={staticFile("video-images/20012026-bg.png")}
|
|
95
|
-
style={{
|
|
96
|
-
position: "absolute",
|
|
97
|
-
width: "100%",
|
|
98
|
-
height: "100%",
|
|
99
|
-
objectFit: "cover",
|
|
100
|
-
}}
|
|
101
|
-
/>
|
|
102
|
-
|
|
68
|
+
{/* Curtain */}
|
|
103
69
|
<Img
|
|
104
70
|
src={staticFile("video-images/20012026-curtain-floral.png")}
|
|
105
71
|
style={{
|
|
@@ -108,13 +74,15 @@ export const F20012026_02 = ({ firstName, secondName,firstSideNote,secondSideNot
|
|
|
108
74
|
width: "100%",
|
|
109
75
|
opacity: imageOpacity,
|
|
110
76
|
transform: `translateX(-50%) scale(${imageScale})`,
|
|
77
|
+
willChange: "transform, opacity",
|
|
111
78
|
}}
|
|
112
79
|
/>
|
|
113
80
|
|
|
114
|
-
{/*
|
|
81
|
+
{/* Decorations */}
|
|
115
82
|
<SideTrees20012026 startAfter={2} />
|
|
116
83
|
<PeacockDance20012026 startAfter={3} />
|
|
117
84
|
|
|
85
|
+
{/* Content */}
|
|
118
86
|
<div
|
|
119
87
|
style={{
|
|
120
88
|
position: "relative",
|
|
@@ -124,188 +92,113 @@ export const F20012026_02 = ({ firstName, secondName,firstSideNote,secondSideNot
|
|
|
124
92
|
flexDirection: "column",
|
|
125
93
|
alignItems: "center",
|
|
126
94
|
textAlign: "center",
|
|
127
|
-
gap:
|
|
95
|
+
gap: 15,
|
|
128
96
|
}}
|
|
129
97
|
>
|
|
130
|
-
{/* Invitation
|
|
98
|
+
{/* Invitation */}
|
|
131
99
|
<div
|
|
132
100
|
style={{
|
|
133
101
|
maxWidth: "50%",
|
|
134
102
|
fontFamily: "Dancing Script",
|
|
135
103
|
color: "#4A3A2A",
|
|
136
104
|
fontSize: 40,
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
letterSpacing: "2px",
|
|
140
|
-
...SmoothRevealFromTop({
|
|
141
|
-
frame,
|
|
142
|
-
startFrame: DETAILS_START,
|
|
143
|
-
delay: 0,
|
|
144
|
-
})
|
|
105
|
+
letterSpacing: 2,
|
|
106
|
+
...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 0 }),
|
|
145
107
|
}}
|
|
146
108
|
>
|
|
147
109
|
{invitationMessage}
|
|
148
110
|
</div>
|
|
149
111
|
|
|
150
|
-
{/* Bride Name */}
|
|
151
112
|
<h1
|
|
152
113
|
style={{
|
|
153
114
|
maxWidth: "70%",
|
|
154
115
|
fontFamily: "Playfair Display",
|
|
155
116
|
color: "#7A1E2E",
|
|
156
117
|
fontSize: 60,
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
letterSpacing: "3px",
|
|
160
|
-
whiteSpace: "normal",
|
|
161
|
-
wordBreak: "break-word",
|
|
162
|
-
overflowWrap: "break-word",
|
|
163
|
-
...SmoothRevealFromTop({
|
|
164
|
-
frame,
|
|
165
|
-
startFrame: DETAILS_START,
|
|
166
|
-
delay: 25,
|
|
167
|
-
})
|
|
118
|
+
letterSpacing: 3,
|
|
119
|
+
...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 25 }),
|
|
168
120
|
}}
|
|
169
121
|
>
|
|
170
122
|
{firstName}
|
|
171
123
|
</h1>
|
|
172
124
|
|
|
173
|
-
{/* Bride Side Note */}
|
|
174
125
|
<div
|
|
175
126
|
style={{
|
|
176
|
-
maxWidth: "60%",
|
|
177
127
|
fontFamily: "Dancing Script",
|
|
178
128
|
color: "#B87A6A",
|
|
179
|
-
fontSize:
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
letterSpacing: "2px",
|
|
183
|
-
whiteSpace: "normal",
|
|
184
|
-
wordBreak: "break-word",
|
|
185
|
-
overflowWrap: "break-word",
|
|
186
|
-
...SmoothRevealFromTop({
|
|
187
|
-
frame,
|
|
188
|
-
startFrame: DETAILS_START,
|
|
189
|
-
delay: 50,
|
|
190
|
-
})
|
|
129
|
+
fontSize: 35,
|
|
130
|
+
maxWidth:"70%",
|
|
131
|
+
...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 50 }),
|
|
191
132
|
}}
|
|
192
133
|
>
|
|
193
134
|
{firstSideNote}
|
|
194
135
|
</div>
|
|
195
136
|
|
|
196
|
-
{/* & Symbol */}
|
|
197
137
|
<div
|
|
198
138
|
style={{
|
|
199
139
|
fontSize: 40,
|
|
200
140
|
color: "#C9A24D",
|
|
201
|
-
letterSpacing:
|
|
202
|
-
...SmoothRevealFromTop({
|
|
203
|
-
frame,
|
|
204
|
-
startFrame: DETAILS_START,
|
|
205
|
-
delay: 70,
|
|
206
|
-
})
|
|
141
|
+
letterSpacing: 6,
|
|
142
|
+
...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 70 }),
|
|
207
143
|
}}
|
|
208
144
|
>
|
|
209
145
|
❁ ❁ ❁
|
|
210
146
|
</div>
|
|
211
147
|
|
|
212
|
-
|
|
213
|
-
{/* Groom Name */}
|
|
214
148
|
<h1
|
|
215
149
|
style={{
|
|
216
150
|
maxWidth: "70%",
|
|
217
151
|
fontFamily: "Playfair Display",
|
|
218
152
|
color: "#7A1E2E",
|
|
219
153
|
fontSize: 60,
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
letterSpacing: "3px",
|
|
223
|
-
whiteSpace: "normal",
|
|
224
|
-
wordBreak: "break-word",
|
|
225
|
-
overflowWrap: "break-word",
|
|
226
|
-
...SmoothRevealFromTop({
|
|
227
|
-
frame,
|
|
228
|
-
startFrame: DETAILS_START,
|
|
229
|
-
delay: 95,
|
|
230
|
-
})
|
|
154
|
+
letterSpacing: 3,
|
|
155
|
+
...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 95 }),
|
|
231
156
|
}}
|
|
232
157
|
>
|
|
233
|
-
{secondName}
|
|
158
|
+
{secondName}
|
|
234
159
|
</h1>
|
|
235
160
|
|
|
236
|
-
{/* Groom Side Note */}
|
|
237
161
|
<div
|
|
238
162
|
style={{
|
|
239
|
-
maxWidth: "70%",
|
|
240
163
|
fontFamily: "Dancing Script",
|
|
241
164
|
color: "#B87A6A",
|
|
242
|
-
fontSize:
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
letterSpacing: "2px",
|
|
246
|
-
whiteSpace: "normal",
|
|
247
|
-
wordBreak: "break-word",
|
|
248
|
-
overflowWrap: "break-word",
|
|
249
|
-
...SmoothRevealFromTop({
|
|
250
|
-
frame,
|
|
251
|
-
startFrame: DETAILS_START,
|
|
252
|
-
delay: 120,
|
|
253
|
-
})
|
|
165
|
+
fontSize: 35,
|
|
166
|
+
maxWidth:"70%",
|
|
167
|
+
...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 120 }),
|
|
254
168
|
}}
|
|
255
169
|
>
|
|
256
170
|
{secondSideNote}
|
|
257
171
|
</div>
|
|
258
172
|
|
|
259
|
-
{/* Date */}
|
|
260
173
|
<div
|
|
261
174
|
style={{
|
|
262
|
-
maxWidth: "70%",
|
|
263
|
-
marginTop: 20,
|
|
264
175
|
textAlign: "center",
|
|
265
|
-
...SmoothRevealFromTop({
|
|
266
|
-
frame,
|
|
267
|
-
startFrame: DETAILS_START,
|
|
268
|
-
delay: 145,
|
|
269
|
-
})
|
|
176
|
+
...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 145 }),
|
|
270
177
|
}}
|
|
271
178
|
>
|
|
272
|
-
{/* -------- Message Line -------- */}
|
|
273
179
|
<div
|
|
274
180
|
style={{
|
|
275
|
-
fontSize:
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
letterSpacing: "3px",
|
|
181
|
+
fontSize: 40,
|
|
182
|
+
fontWeight:"400",
|
|
183
|
+
fontFamily: "Great Vibes",
|
|
279
184
|
color: "#2F6B4F",
|
|
280
|
-
lineHeight: 1.2,
|
|
281
|
-
marginBottom: 8,
|
|
282
|
-
whiteSpace: "nowrap",
|
|
283
|
-
|
|
284
185
|
}}
|
|
285
186
|
>
|
|
286
187
|
– Join us on this auspicious day –
|
|
287
188
|
</div>
|
|
288
189
|
|
|
289
|
-
{/* -------- Date Line -------- */}
|
|
290
190
|
<div
|
|
291
191
|
style={{
|
|
292
|
-
fontSize:
|
|
293
|
-
fontFamily:"Playfair Display",
|
|
294
|
-
fontWeight: "400",
|
|
192
|
+
fontSize: 50,
|
|
193
|
+
fontFamily: "Playfair Display",
|
|
295
194
|
color: "#5A4632",
|
|
296
|
-
|
|
297
|
-
letterSpacing: "4px",
|
|
298
|
-
whiteSpace: "nowrap", // 🔥 force single line
|
|
195
|
+
letterSpacing: 4,
|
|
299
196
|
}}
|
|
300
197
|
>
|
|
301
198
|
{formatDate(occasionDate)}
|
|
302
199
|
</div>
|
|
303
200
|
</div>
|
|
304
|
-
|
|
305
|
-
|
|
306
201
|
</div>
|
|
307
|
-
|
|
308
|
-
|
|
309
202
|
</AbsoluteFill>
|
|
310
203
|
);
|
|
311
204
|
};
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
} from "remotion";
|
|
11
11
|
|
|
12
12
|
import { GroomBrideLoveScene20012026 } from "../Elements/GroomBrideLoveScene20012026.jsx";
|
|
13
|
-
import{ SmoothRevealFromTop} from "../Elements/SmoothRevealFromTop.jsx"
|
|
13
|
+
import { SmoothRevealFromTop } from "../Elements/SmoothRevealFromTop.jsx"
|
|
14
14
|
|
|
15
15
|
export const F20012026_03 = ({
|
|
16
16
|
eventDateTime,
|
|
@@ -22,28 +22,6 @@ export const F20012026_03 = ({
|
|
|
22
22
|
const frame = useCurrentFrame();
|
|
23
23
|
const { fps } = useVideoConfig();
|
|
24
24
|
|
|
25
|
-
/* ================= SCENE REVEAL (SMOKE FOLLOW-UP) ================= */
|
|
26
|
-
const sceneOpacity = interpolate(
|
|
27
|
-
frame,
|
|
28
|
-
[0, fadeInDuration],
|
|
29
|
-
[0, 1],
|
|
30
|
-
{
|
|
31
|
-
extrapolateRight: "clamp",
|
|
32
|
-
easing: Easing.out(Easing.ease),
|
|
33
|
-
}
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
// 🎥 VERY SMOOTH CINEMATIC ZOOM
|
|
37
|
-
const sceneScale = interpolate(
|
|
38
|
-
frame,
|
|
39
|
-
[0, fadeInDuration * 2],
|
|
40
|
-
[1.20, 1],
|
|
41
|
-
{
|
|
42
|
-
extrapolateRight: "clamp",
|
|
43
|
-
easing: Easing.out(Easing.cubic),
|
|
44
|
-
}
|
|
45
|
-
);
|
|
46
|
-
|
|
47
25
|
/* ---------------- DATE UTILS ---------------- */
|
|
48
26
|
const getDateParts = (iso) => {
|
|
49
27
|
if (!iso) return { day: "", month: "", year: "", time: "" };
|
|
@@ -68,7 +46,7 @@ export const F20012026_03 = ({
|
|
|
68
46
|
const { day, month, year, time } = getDateParts(eventDateTime);
|
|
69
47
|
|
|
70
48
|
const DETAILS_START = fps * 4;
|
|
71
|
-
|
|
49
|
+
|
|
72
50
|
/* ================= IMAGE ANIMATION ================= */
|
|
73
51
|
const showImageAfter = fadeInDuration * 2;
|
|
74
52
|
|
|
@@ -104,23 +82,10 @@ export const F20012026_03 = ({
|
|
|
104
82
|
return (
|
|
105
83
|
<AbsoluteFill
|
|
106
84
|
style={{
|
|
107
|
-
opacity: sceneOpacity,
|
|
108
|
-
transform: `scale(${sceneScale})`,
|
|
109
85
|
transformOrigin: "center center",
|
|
110
86
|
overflow: "hidden",
|
|
111
87
|
}}
|
|
112
88
|
>
|
|
113
|
-
{/* ================= BACKGROUND ================= */}
|
|
114
|
-
<Img
|
|
115
|
-
src={staticFile("video-images/20012026-bg.png")}
|
|
116
|
-
style={{
|
|
117
|
-
position: "absolute",
|
|
118
|
-
width: "100%",
|
|
119
|
-
height: "100%",
|
|
120
|
-
objectFit: "cover",
|
|
121
|
-
|
|
122
|
-
}}
|
|
123
|
-
/>
|
|
124
89
|
<Img
|
|
125
90
|
src={staticFile("video-images/20012026-wedding-gate.png")}
|
|
126
91
|
style={{
|
|
@@ -209,10 +174,10 @@ export const F20012026_03 = ({
|
|
|
209
174
|
wordBreak: "break-word",
|
|
210
175
|
overflowWrap: "break-word",
|
|
211
176
|
...SmoothRevealFromTop({
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
})
|
|
177
|
+
frame,
|
|
178
|
+
startFrame: DETAILS_START,
|
|
179
|
+
delay: 50,
|
|
180
|
+
})
|
|
216
181
|
|
|
217
182
|
}}
|
|
218
183
|
>
|
|
@@ -232,11 +197,11 @@ export const F20012026_03 = ({
|
|
|
232
197
|
whiteSpace: "normal",
|
|
233
198
|
wordBreak: "break-word",
|
|
234
199
|
overflowWrap: "break-word",
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
})
|
|
200
|
+
...SmoothRevealFromTop({
|
|
201
|
+
frame,
|
|
202
|
+
startFrame: DETAILS_START,
|
|
203
|
+
delay: 70,
|
|
204
|
+
})
|
|
240
205
|
|
|
241
206
|
}}
|
|
242
207
|
>
|
|
@@ -256,10 +221,10 @@ export const F20012026_03 = ({
|
|
|
256
221
|
wordBreak: "break-word",
|
|
257
222
|
overflowWrap: "break-word",
|
|
258
223
|
...SmoothRevealFromTop({
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
})
|
|
224
|
+
frame,
|
|
225
|
+
startFrame: DETAILS_START,
|
|
226
|
+
delay: 95,
|
|
227
|
+
})
|
|
263
228
|
|
|
264
229
|
}}
|
|
265
230
|
>
|
|
@@ -277,10 +242,10 @@ export const F20012026_03 = ({
|
|
|
277
242
|
wordBreak: "break-word",
|
|
278
243
|
overflowWrap: "break-word",
|
|
279
244
|
...SmoothRevealFromTop({
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
})
|
|
245
|
+
frame,
|
|
246
|
+
startFrame: DETAILS_START,
|
|
247
|
+
delay: 115,
|
|
248
|
+
})
|
|
284
249
|
|
|
285
250
|
}}
|
|
286
251
|
>
|
|
@@ -301,10 +266,10 @@ export const F20012026_03 = ({
|
|
|
301
266
|
wordBreak: "break-word",
|
|
302
267
|
overflowWrap: "break-word",
|
|
303
268
|
...SmoothRevealFromTop({
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
})
|
|
269
|
+
frame,
|
|
270
|
+
startFrame: DETAILS_START,
|
|
271
|
+
delay: 125,
|
|
272
|
+
})
|
|
308
273
|
|
|
309
274
|
}}
|
|
310
275
|
>
|
|
@@ -5,6 +5,8 @@ import {
|
|
|
5
5
|
Audio,
|
|
6
6
|
staticFile,
|
|
7
7
|
AbsoluteFill,
|
|
8
|
+
useCurrentFrame,
|
|
9
|
+
Img,
|
|
8
10
|
} from "remotion";
|
|
9
11
|
|
|
10
12
|
import { F20012026_01 } from "../Frames/F20012026_01.jsx";
|
|
@@ -24,6 +26,7 @@ export const T20012026_01 = ({
|
|
|
24
26
|
familyMember,
|
|
25
27
|
}) => {
|
|
26
28
|
const { durationInFrames } = useVideoConfig();
|
|
29
|
+
const frame = useCurrentFrame();
|
|
27
30
|
|
|
28
31
|
/* ---------------- SAFE DATA ---------------- */
|
|
29
32
|
|
|
@@ -68,7 +71,7 @@ export const T20012026_01 = ({
|
|
|
68
71
|
const framesPerPage = Math.floor(durationInFrames / 3);
|
|
69
72
|
const transitionDuration = Math.floor(framesPerPage * 0.25);
|
|
70
73
|
|
|
71
|
-
/* ---------------- PRELOAD IMAGES
|
|
74
|
+
/* ---------------- PRELOAD IMAGES ---------------- */
|
|
72
75
|
|
|
73
76
|
const imagesToPreload = useMemo(
|
|
74
77
|
() => [
|
|
@@ -94,66 +97,83 @@ export const T20012026_01 = ({
|
|
|
94
97
|
/* ---------------- RENDER ---------------- */
|
|
95
98
|
|
|
96
99
|
return (
|
|
97
|
-
<AbsoluteFill
|
|
98
|
-
|
|
100
|
+
<AbsoluteFill>
|
|
101
|
+
|
|
102
|
+
{/* 🎵 MUSIC */}
|
|
99
103
|
<Audio
|
|
100
104
|
src={staticFile("video-images/wedding.mp3")}
|
|
101
|
-
startFrom={
|
|
102
|
-
endAt={
|
|
105
|
+
startFrom={0}
|
|
106
|
+
endAt={durationInFrames}
|
|
103
107
|
volume={0.4}
|
|
104
108
|
/>
|
|
105
109
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
110
|
+
|
|
111
|
+
{/* ================= SCENE 1 ================= */}
|
|
112
|
+
<Sequence from={0} durationInFrames={framesPerPage + 2}>
|
|
113
|
+
<>
|
|
114
|
+
<Img
|
|
115
|
+
src={staticFile("video-images/20012026-bg.png")}
|
|
116
|
+
style={{ position: "absolute", width: "100%", height: "100%", objectFit: "cover" }}
|
|
117
|
+
/>
|
|
118
|
+
<F20012026_01
|
|
119
|
+
firstName={firstName}
|
|
120
|
+
secondName={secondName}
|
|
121
|
+
welcomeMessage={welcomeMessage}
|
|
122
|
+
/>
|
|
123
|
+
</>
|
|
114
124
|
</Sequence>
|
|
115
125
|
|
|
116
|
-
{/*
|
|
117
|
-
<Sequence from={framesPerPage} durationInFrames={framesPerPage +
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
126
|
+
{/* ================= SCENE 2 ================= */}
|
|
127
|
+
<Sequence from={framesPerPage - 2} durationInFrames={framesPerPage + 2}>
|
|
128
|
+
<>
|
|
129
|
+
<Img
|
|
130
|
+
src={staticFile("video-images/20012026-bg.png")}
|
|
131
|
+
style={{ position: "absolute", width: "100%", height: "100%", objectFit: "cover" }}
|
|
132
|
+
/>
|
|
133
|
+
<F20012026_02
|
|
134
|
+
firstName={firstName}
|
|
135
|
+
secondName={secondName}
|
|
136
|
+
firstSideNote={firstSideNote}
|
|
137
|
+
secondSideNote={secondSideNote}
|
|
138
|
+
invitationMessage={invitationMessage}
|
|
139
|
+
occasionDate={occasionDate}
|
|
140
|
+
fadeInDuration={transitionDuration}
|
|
141
|
+
/>
|
|
142
|
+
</>
|
|
127
143
|
</Sequence>
|
|
128
144
|
|
|
129
145
|
{/* ☁️ TRANSITION 1 → 2 */}
|
|
130
146
|
<Sequence
|
|
131
|
-
from={framesPerPage -
|
|
147
|
+
from={framesPerPage - 2}
|
|
132
148
|
durationInFrames={transitionDuration + 2}
|
|
133
149
|
>
|
|
134
150
|
<InkSmokeTransition20012026 />
|
|
135
151
|
</Sequence>
|
|
136
152
|
|
|
137
|
-
{/*
|
|
138
|
-
<Sequence
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
153
|
+
{/* ================= SCENE 3 ================= */}
|
|
154
|
+
<Sequence from={framesPerPage * 2 - 2} durationInFrames={framesPerPage + 2}>
|
|
155
|
+
<>
|
|
156
|
+
<Img
|
|
157
|
+
src={staticFile("video-images/20012026-bg.png")}
|
|
158
|
+
style={{ position: "absolute", width: "100%", height: "100%", objectFit: "cover" }}
|
|
159
|
+
/>
|
|
160
|
+
<F20012026_03
|
|
161
|
+
eventDateTime={eventDateTime}
|
|
162
|
+
venueName={venueName}
|
|
163
|
+
venueAddress={venueAddress}
|
|
164
|
+
familyMember={familyMember}
|
|
165
|
+
/>
|
|
166
|
+
</>
|
|
148
167
|
</Sequence>
|
|
149
168
|
|
|
150
169
|
{/* ☁️ TRANSITION 2 → 3 */}
|
|
151
170
|
<Sequence
|
|
152
|
-
from={framesPerPage * 2 -
|
|
171
|
+
from={framesPerPage * 2 - 2}
|
|
153
172
|
durationInFrames={transitionDuration + 2}
|
|
154
173
|
>
|
|
155
174
|
<InkSmokeTransition20012026 />
|
|
156
175
|
</Sequence>
|
|
176
|
+
|
|
157
177
|
</AbsoluteFill>
|
|
158
178
|
);
|
|
159
|
-
};
|
|
179
|
+
};
|
package/src/compositions.jsx
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Composition } from "remotion";
|
|
3
3
|
import { T20012026_01 } from "./Invitations/Themes/T20012026_01.jsx";
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
export const VideoCompositions = () => {
|
|
6
6
|
return (
|
|
7
7
|
<>
|
|
8
8
|
<Composition
|
|
9
9
|
id="T20012026-01"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
component={T20012026_01}
|
|
11
|
+
fps={24}
|
|
12
|
+
durationInFrames={24 * 30}
|
|
13
13
|
width={1080}
|
|
14
14
|
height={1920}
|
|
15
15
|
/>
|
|
16
16
|
</>
|
|
17
17
|
);
|
|
18
18
|
};
|
|
19
|
-
|