@remotion/vercel 4.0.474 → 4.0.475
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/dist/esm/index.mjs +278 -0
- package/package.json +4 -4
package/dist/esm/index.mjs
CHANGED
|
@@ -156,6 +156,32 @@ var lengthUnits = new Set([
|
|
|
156
156
|
"vw"
|
|
157
157
|
]);
|
|
158
158
|
var cssNumberRegex = /^([+-]?(?:\\d+\\.?\\d*|\\.\\d+))([a-zA-Z%]+)?$/;
|
|
159
|
+
var transformOriginKeywords = new Set([
|
|
160
|
+
"left",
|
|
161
|
+
"center",
|
|
162
|
+
"right",
|
|
163
|
+
"top",
|
|
164
|
+
"bottom"
|
|
165
|
+
]);
|
|
166
|
+
var transformOriginKeywordOptions = (keyword) => {
|
|
167
|
+
if (keyword === "left") {
|
|
168
|
+
return [{ axis: "x", value: { value: 0, unit: "%" } }];
|
|
169
|
+
}
|
|
170
|
+
if (keyword === "right") {
|
|
171
|
+
return [{ axis: "x", value: { value: 100, unit: "%" } }];
|
|
172
|
+
}
|
|
173
|
+
if (keyword === "top") {
|
|
174
|
+
return [{ axis: "y", value: { value: 0, unit: "%" } }];
|
|
175
|
+
}
|
|
176
|
+
if (keyword === "bottom") {
|
|
177
|
+
return [{ axis: "y", value: { value: 100, unit: "%" } }];
|
|
178
|
+
}
|
|
179
|
+
return [
|
|
180
|
+
{ axis: "x", value: { value: 50, unit: "%" } },
|
|
181
|
+
{ axis: "y", value: { value: 50, unit: "%" } }
|
|
182
|
+
];
|
|
183
|
+
};
|
|
184
|
+
var transformOriginCenter = { value: 50, unit: "%" };
|
|
159
185
|
var stringifyNumber = (value) => {
|
|
160
186
|
return String(normalizeNumber(value));
|
|
161
187
|
};
|
|
@@ -180,6 +206,110 @@ var parseStringInterpolationComponent = (component, value) => {
|
|
|
180
206
|
}
|
|
181
207
|
throw new TypeError(\`Cannot interpolate "\${value}" because "\${unit}" is not a supported translate or rotate unit\`);
|
|
182
208
|
};
|
|
209
|
+
var parseTransformOriginLengthPercentage = ({
|
|
210
|
+
component,
|
|
211
|
+
value,
|
|
212
|
+
allowPercentage
|
|
213
|
+
}) => {
|
|
214
|
+
const match = cssNumberRegex.exec(component);
|
|
215
|
+
if (match === null) {
|
|
216
|
+
throw new TypeError(\`Cannot interpolate "\${value}" because "\${component}" is not a supported transform-origin \${allowPercentage ? "length-percentage" : "z length"}\`);
|
|
217
|
+
}
|
|
218
|
+
const unit = match[2] ?? null;
|
|
219
|
+
const numberValue = Number(match[1]);
|
|
220
|
+
if (!Number.isFinite(numberValue)) {
|
|
221
|
+
throw new TypeError(\`Cannot interpolate "\${value}" because "\${component}" is not finite\`);
|
|
222
|
+
}
|
|
223
|
+
if (unit === null || !lengthUnits.has(unit) || !allowPercentage && unit === "%") {
|
|
224
|
+
throw new TypeError(\`Cannot interpolate "\${value}" because "\${component}" is not a supported transform-origin \${allowPercentage ? "length-percentage" : "z length"}\`);
|
|
225
|
+
}
|
|
226
|
+
return { value: numberValue, unit };
|
|
227
|
+
};
|
|
228
|
+
var parseTransformOriginToken = (component, value) => {
|
|
229
|
+
const lower = component.toLowerCase();
|
|
230
|
+
if (transformOriginKeywords.has(lower)) {
|
|
231
|
+
return { type: "keyword", keyword: lower };
|
|
232
|
+
}
|
|
233
|
+
return {
|
|
234
|
+
type: "length-percentage",
|
|
235
|
+
parsed: parseTransformOriginLengthPercentage({
|
|
236
|
+
component,
|
|
237
|
+
value,
|
|
238
|
+
allowPercentage: true
|
|
239
|
+
})
|
|
240
|
+
};
|
|
241
|
+
};
|
|
242
|
+
var parseTwoTransformOriginKeywords = (first, second, value) => {
|
|
243
|
+
const candidates = [];
|
|
244
|
+
for (const firstOption of transformOriginKeywordOptions(first)) {
|
|
245
|
+
for (const secondOption of transformOriginKeywordOptions(second)) {
|
|
246
|
+
if (firstOption.axis === secondOption.axis) {
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
candidates.push(firstOption.axis === "x" ? [firstOption.value, secondOption.value] : [secondOption.value, firstOption.value]);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (candidates.length === 0) {
|
|
253
|
+
throw new TypeError(\`Cannot interpolate "\${value}" because "\${first} \${second}" is not a valid transform-origin keyword pair\`);
|
|
254
|
+
}
|
|
255
|
+
return candidates[0];
|
|
256
|
+
};
|
|
257
|
+
var parseTransformOriginXY = (parts, value) => {
|
|
258
|
+
if (parts.length === 1) {
|
|
259
|
+
const token = parseTransformOriginToken(parts[0], value);
|
|
260
|
+
if (token.type === "length-percentage") {
|
|
261
|
+
return [token.parsed, transformOriginCenter];
|
|
262
|
+
}
|
|
263
|
+
if (token.keyword === "top" || token.keyword === "bottom") {
|
|
264
|
+
return [
|
|
265
|
+
transformOriginCenter,
|
|
266
|
+
transformOriginKeywordOptions(token.keyword)[0].value
|
|
267
|
+
];
|
|
268
|
+
}
|
|
269
|
+
return [
|
|
270
|
+
transformOriginKeywordOptions(token.keyword)[0].value,
|
|
271
|
+
transformOriginCenter
|
|
272
|
+
];
|
|
273
|
+
}
|
|
274
|
+
const first = parseTransformOriginToken(parts[0], value);
|
|
275
|
+
const second = parseTransformOriginToken(parts[1], value);
|
|
276
|
+
if (first.type === "length-percentage" && second.type === "length-percentage") {
|
|
277
|
+
return [first.parsed, second.parsed];
|
|
278
|
+
}
|
|
279
|
+
if (first.type === "keyword" && second.type === "keyword") {
|
|
280
|
+
return parseTwoTransformOriginKeywords(first.keyword, second.keyword, value);
|
|
281
|
+
}
|
|
282
|
+
const keyword = first.type === "keyword" ? first : second.type === "keyword" ? second : null;
|
|
283
|
+
const length = first.type === "length-percentage" ? first.parsed : second.type === "length-percentage" ? second.parsed : null;
|
|
284
|
+
if (keyword === null || length === null) {
|
|
285
|
+
throw new Error("Expected a keyword and a length-percentage value");
|
|
286
|
+
}
|
|
287
|
+
const keywordIsFirst = first.type === "keyword";
|
|
288
|
+
if (keyword.keyword === "left" || keyword.keyword === "right") {
|
|
289
|
+
if (!keywordIsFirst) {
|
|
290
|
+
throw new TypeError(\`Cannot interpolate "\${value}" because horizontal transform-origin keywords must come before a length-percentage value\`);
|
|
291
|
+
}
|
|
292
|
+
return [transformOriginKeywordOptions(keyword.keyword)[0].value, length];
|
|
293
|
+
}
|
|
294
|
+
if (keyword.keyword === "top" || keyword.keyword === "bottom") {
|
|
295
|
+
return [length, transformOriginKeywordOptions(keyword.keyword)[0].value];
|
|
296
|
+
}
|
|
297
|
+
return keywordIsFirst ? [transformOriginCenter, length] : [length, transformOriginCenter];
|
|
298
|
+
};
|
|
299
|
+
var parseTransformOriginValue = (output, parts) => {
|
|
300
|
+
const [x, y] = parseTransformOriginXY(parts.slice(0, 2), output);
|
|
301
|
+
const z = parts[2] === undefined ? { value: 0, unit: null } : parseTransformOriginLengthPercentage({
|
|
302
|
+
component: parts[2],
|
|
303
|
+
value: output,
|
|
304
|
+
allowPercentage: false
|
|
305
|
+
});
|
|
306
|
+
return {
|
|
307
|
+
kind: "translate",
|
|
308
|
+
values: [x.value, y.value, z.value],
|
|
309
|
+
units: [x.unit, y.unit, z.unit],
|
|
310
|
+
dimensions: parts[2] === undefined ? 2 : 3
|
|
311
|
+
};
|
|
312
|
+
};
|
|
183
313
|
var parseStringInterpolationValue = (output) => {
|
|
184
314
|
if (typeof output === "number") {
|
|
185
315
|
if (!Number.isFinite(output)) {
|
|
@@ -196,6 +326,9 @@ var parseStringInterpolationValue = (output) => {
|
|
|
196
326
|
if (parts.length < 1 || parts.length > 3 || parts[0] === "") {
|
|
197
327
|
throw new TypeError(\`String outputRange values must contain 1 to 3 components, but got "\${output}"\`);
|
|
198
328
|
}
|
|
329
|
+
if (parts.some((part) => transformOriginKeywords.has(part.toLowerCase()))) {
|
|
330
|
+
return parseTransformOriginValue(output, parts);
|
|
331
|
+
}
|
|
199
332
|
const parsed = parts.map((part) => parseStringInterpolationComponent(part, output));
|
|
200
333
|
const [{ kind }] = parsed;
|
|
201
334
|
for (const part of parsed) {
|
|
@@ -1073,6 +1206,12 @@ var serializeScaleValue = ([x, y, z]) => {
|
|
|
1073
1206
|
return \`\${normalizedX} \${normalizedY} \${normalizedZ}\`;
|
|
1074
1207
|
};
|
|
1075
1208
|
var sequenceVisualStyleSchema = {
|
|
1209
|
+
"style.transformOrigin": {
|
|
1210
|
+
type: "transform-origin",
|
|
1211
|
+
step: 1,
|
|
1212
|
+
default: "50% 50%",
|
|
1213
|
+
description: "Transform origin"
|
|
1214
|
+
},
|
|
1076
1215
|
"style.translate": {
|
|
1077
1216
|
type: "translate",
|
|
1078
1217
|
step: 1,
|
|
@@ -1495,6 +1634,32 @@ var lengthUnits = new Set([
|
|
|
1495
1634
|
"vw"
|
|
1496
1635
|
]);
|
|
1497
1636
|
var cssNumberRegex = /^([+-]?(?:\\d+\\.?\\d*|\\.\\d+))([a-zA-Z%]+)?$/;
|
|
1637
|
+
var transformOriginKeywords = new Set([
|
|
1638
|
+
"left",
|
|
1639
|
+
"center",
|
|
1640
|
+
"right",
|
|
1641
|
+
"top",
|
|
1642
|
+
"bottom"
|
|
1643
|
+
]);
|
|
1644
|
+
var transformOriginKeywordOptions = (keyword) => {
|
|
1645
|
+
if (keyword === "left") {
|
|
1646
|
+
return [{ axis: "x", value: { value: 0, unit: "%" } }];
|
|
1647
|
+
}
|
|
1648
|
+
if (keyword === "right") {
|
|
1649
|
+
return [{ axis: "x", value: { value: 100, unit: "%" } }];
|
|
1650
|
+
}
|
|
1651
|
+
if (keyword === "top") {
|
|
1652
|
+
return [{ axis: "y", value: { value: 0, unit: "%" } }];
|
|
1653
|
+
}
|
|
1654
|
+
if (keyword === "bottom") {
|
|
1655
|
+
return [{ axis: "y", value: { value: 100, unit: "%" } }];
|
|
1656
|
+
}
|
|
1657
|
+
return [
|
|
1658
|
+
{ axis: "x", value: { value: 50, unit: "%" } },
|
|
1659
|
+
{ axis: "y", value: { value: 50, unit: "%" } }
|
|
1660
|
+
];
|
|
1661
|
+
};
|
|
1662
|
+
var transformOriginCenter = { value: 50, unit: "%" };
|
|
1498
1663
|
var stringifyNumber = (value) => {
|
|
1499
1664
|
return String(normalizeNumber(value));
|
|
1500
1665
|
};
|
|
@@ -1519,6 +1684,110 @@ var parseStringInterpolationComponent = (component, value) => {
|
|
|
1519
1684
|
}
|
|
1520
1685
|
throw new TypeError(\`Cannot interpolate "\${value}" because "\${unit}" is not a supported translate or rotate unit\`);
|
|
1521
1686
|
};
|
|
1687
|
+
var parseTransformOriginLengthPercentage = ({
|
|
1688
|
+
component,
|
|
1689
|
+
value,
|
|
1690
|
+
allowPercentage
|
|
1691
|
+
}) => {
|
|
1692
|
+
const match = cssNumberRegex.exec(component);
|
|
1693
|
+
if (match === null) {
|
|
1694
|
+
throw new TypeError(\`Cannot interpolate "\${value}" because "\${component}" is not a supported transform-origin \${allowPercentage ? "length-percentage" : "z length"}\`);
|
|
1695
|
+
}
|
|
1696
|
+
const unit = match[2] ?? null;
|
|
1697
|
+
const numberValue = Number(match[1]);
|
|
1698
|
+
if (!Number.isFinite(numberValue)) {
|
|
1699
|
+
throw new TypeError(\`Cannot interpolate "\${value}" because "\${component}" is not finite\`);
|
|
1700
|
+
}
|
|
1701
|
+
if (unit === null || !lengthUnits.has(unit) || !allowPercentage && unit === "%") {
|
|
1702
|
+
throw new TypeError(\`Cannot interpolate "\${value}" because "\${component}" is not a supported transform-origin \${allowPercentage ? "length-percentage" : "z length"}\`);
|
|
1703
|
+
}
|
|
1704
|
+
return { value: numberValue, unit };
|
|
1705
|
+
};
|
|
1706
|
+
var parseTransformOriginToken = (component, value) => {
|
|
1707
|
+
const lower = component.toLowerCase();
|
|
1708
|
+
if (transformOriginKeywords.has(lower)) {
|
|
1709
|
+
return { type: "keyword", keyword: lower };
|
|
1710
|
+
}
|
|
1711
|
+
return {
|
|
1712
|
+
type: "length-percentage",
|
|
1713
|
+
parsed: parseTransformOriginLengthPercentage({
|
|
1714
|
+
component,
|
|
1715
|
+
value,
|
|
1716
|
+
allowPercentage: true
|
|
1717
|
+
})
|
|
1718
|
+
};
|
|
1719
|
+
};
|
|
1720
|
+
var parseTwoTransformOriginKeywords = (first, second, value) => {
|
|
1721
|
+
const candidates = [];
|
|
1722
|
+
for (const firstOption of transformOriginKeywordOptions(first)) {
|
|
1723
|
+
for (const secondOption of transformOriginKeywordOptions(second)) {
|
|
1724
|
+
if (firstOption.axis === secondOption.axis) {
|
|
1725
|
+
continue;
|
|
1726
|
+
}
|
|
1727
|
+
candidates.push(firstOption.axis === "x" ? [firstOption.value, secondOption.value] : [secondOption.value, firstOption.value]);
|
|
1728
|
+
}
|
|
1729
|
+
}
|
|
1730
|
+
if (candidates.length === 0) {
|
|
1731
|
+
throw new TypeError(\`Cannot interpolate "\${value}" because "\${first} \${second}" is not a valid transform-origin keyword pair\`);
|
|
1732
|
+
}
|
|
1733
|
+
return candidates[0];
|
|
1734
|
+
};
|
|
1735
|
+
var parseTransformOriginXY = (parts, value) => {
|
|
1736
|
+
if (parts.length === 1) {
|
|
1737
|
+
const token = parseTransformOriginToken(parts[0], value);
|
|
1738
|
+
if (token.type === "length-percentage") {
|
|
1739
|
+
return [token.parsed, transformOriginCenter];
|
|
1740
|
+
}
|
|
1741
|
+
if (token.keyword === "top" || token.keyword === "bottom") {
|
|
1742
|
+
return [
|
|
1743
|
+
transformOriginCenter,
|
|
1744
|
+
transformOriginKeywordOptions(token.keyword)[0].value
|
|
1745
|
+
];
|
|
1746
|
+
}
|
|
1747
|
+
return [
|
|
1748
|
+
transformOriginKeywordOptions(token.keyword)[0].value,
|
|
1749
|
+
transformOriginCenter
|
|
1750
|
+
];
|
|
1751
|
+
}
|
|
1752
|
+
const first = parseTransformOriginToken(parts[0], value);
|
|
1753
|
+
const second = parseTransformOriginToken(parts[1], value);
|
|
1754
|
+
if (first.type === "length-percentage" && second.type === "length-percentage") {
|
|
1755
|
+
return [first.parsed, second.parsed];
|
|
1756
|
+
}
|
|
1757
|
+
if (first.type === "keyword" && second.type === "keyword") {
|
|
1758
|
+
return parseTwoTransformOriginKeywords(first.keyword, second.keyword, value);
|
|
1759
|
+
}
|
|
1760
|
+
const keyword = first.type === "keyword" ? first : second.type === "keyword" ? second : null;
|
|
1761
|
+
const length = first.type === "length-percentage" ? first.parsed : second.type === "length-percentage" ? second.parsed : null;
|
|
1762
|
+
if (keyword === null || length === null) {
|
|
1763
|
+
throw new Error("Expected a keyword and a length-percentage value");
|
|
1764
|
+
}
|
|
1765
|
+
const keywordIsFirst = first.type === "keyword";
|
|
1766
|
+
if (keyword.keyword === "left" || keyword.keyword === "right") {
|
|
1767
|
+
if (!keywordIsFirst) {
|
|
1768
|
+
throw new TypeError(\`Cannot interpolate "\${value}" because horizontal transform-origin keywords must come before a length-percentage value\`);
|
|
1769
|
+
}
|
|
1770
|
+
return [transformOriginKeywordOptions(keyword.keyword)[0].value, length];
|
|
1771
|
+
}
|
|
1772
|
+
if (keyword.keyword === "top" || keyword.keyword === "bottom") {
|
|
1773
|
+
return [length, transformOriginKeywordOptions(keyword.keyword)[0].value];
|
|
1774
|
+
}
|
|
1775
|
+
return keywordIsFirst ? [transformOriginCenter, length] : [length, transformOriginCenter];
|
|
1776
|
+
};
|
|
1777
|
+
var parseTransformOriginValue = (output, parts) => {
|
|
1778
|
+
const [x, y] = parseTransformOriginXY(parts.slice(0, 2), output);
|
|
1779
|
+
const z = parts[2] === undefined ? { value: 0, unit: null } : parseTransformOriginLengthPercentage({
|
|
1780
|
+
component: parts[2],
|
|
1781
|
+
value: output,
|
|
1782
|
+
allowPercentage: false
|
|
1783
|
+
});
|
|
1784
|
+
return {
|
|
1785
|
+
kind: "translate",
|
|
1786
|
+
values: [x.value, y.value, z.value],
|
|
1787
|
+
units: [x.unit, y.unit, z.unit],
|
|
1788
|
+
dimensions: parts[2] === undefined ? 2 : 3
|
|
1789
|
+
};
|
|
1790
|
+
};
|
|
1522
1791
|
var parseStringInterpolationValue = (output) => {
|
|
1523
1792
|
if (typeof output === "number") {
|
|
1524
1793
|
if (!Number.isFinite(output)) {
|
|
@@ -1535,6 +1804,9 @@ var parseStringInterpolationValue = (output) => {
|
|
|
1535
1804
|
if (parts.length < 1 || parts.length > 3 || parts[0] === "") {
|
|
1536
1805
|
throw new TypeError(\`String outputRange values must contain 1 to 3 components, but got "\${output}"\`);
|
|
1537
1806
|
}
|
|
1807
|
+
if (parts.some((part) => transformOriginKeywords.has(part.toLowerCase()))) {
|
|
1808
|
+
return parseTransformOriginValue(output, parts);
|
|
1809
|
+
}
|
|
1538
1810
|
const parsed = parts.map((part) => parseStringInterpolationComponent(part, output));
|
|
1539
1811
|
const [{ kind }] = parsed;
|
|
1540
1812
|
for (const part of parsed) {
|
|
@@ -2412,6 +2684,12 @@ var serializeScaleValue = ([x, y, z]) => {
|
|
|
2412
2684
|
return \`\${normalizedX} \${normalizedY} \${normalizedZ}\`;
|
|
2413
2685
|
};
|
|
2414
2686
|
var sequenceVisualStyleSchema = {
|
|
2687
|
+
"style.transformOrigin": {
|
|
2688
|
+
type: "transform-origin",
|
|
2689
|
+
step: 1,
|
|
2690
|
+
default: "50% 50%",
|
|
2691
|
+
description: "Transform origin"
|
|
2692
|
+
},
|
|
2415
2693
|
"style.translate": {
|
|
2416
2694
|
type: "translate",
|
|
2417
2695
|
step: 1,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/vercel",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.475",
|
|
4
4
|
"description": "Render Remotion videos on Vercel Sandbox",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"url": "https://github.com/remotion-dev/remotion/issues"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@remotion/renderer": "4.0.
|
|
27
|
-
"remotion": "4.0.
|
|
26
|
+
"@remotion/renderer": "4.0.475",
|
|
27
|
+
"remotion": "4.0.475"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"@vercel/sandbox": ">=1.0.0"
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"./package.json": "./package.json"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
41
|
+
"@remotion/eslint-config-internal": "4.0.475",
|
|
42
42
|
"@vercel/blob": "2.3.0",
|
|
43
43
|
"@vercel/sandbox": "1.6.0",
|
|
44
44
|
"eslint": "9.19.0",
|