diff --git a/bun.lock b/bun.lock index 4cfe8aed764..10fbf325382 100644 --- a/bun.lock +++ b/bun.lock @@ -23,7 +23,7 @@ }, "packages/animated-emoji": { "name": "@remotion/animated-emoji", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", }, @@ -35,7 +35,7 @@ }, "packages/animation-utils": { "name": "@remotion/animation-utils", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", }, @@ -51,7 +51,7 @@ }, "packages/astro-example": { "name": "@remotion/astro-example", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@astrojs/react": "4.0.0", "@remotion/gif": "workspace:*", @@ -70,7 +70,7 @@ }, "packages/babel-loader": { "name": "@remotion/babel-loader", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@babel/core": "7.23.2", "@babel/plugin-proposal-class-properties": "7.14.5", @@ -94,7 +94,7 @@ }, "packages/brand": { "name": "@remotion/brand", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/captions": "workspace:*", "@remotion/cli": "workspace:*", @@ -124,7 +124,7 @@ }, "packages/bundler": { "name": "@remotion/bundler", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/media-parser": "workspace:*", "@remotion/studio": "workspace:*", @@ -132,7 +132,7 @@ "@remotion/timeline-utils": "workspace:*", "@rspack/core": "1.7.6", "@rspack/plugin-react-refresh": "1.6.1", - "esbuild": "0.25.0", + "esbuild": "0.28.0", "loader-utils": "2.0.4", "postcss": "8.5.10", "postcss-value-parser": "4.2.0", @@ -155,7 +155,7 @@ }, "packages/captions": { "name": "@remotion/captions", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@typescript/native-preview": "catalog:", @@ -164,7 +164,7 @@ }, "packages/cli": { "name": "@remotion/cli", - "version": "4.0.461", + "version": "4.0.462", "bin": { "remotion": "remotion-cli.js", "remotionb": "remotionb-cli.js", @@ -206,7 +206,7 @@ }, "packages/cloudrun": { "name": "@remotion/cloudrun", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@google-cloud/artifact-registry": "3.5.1", "@google-cloud/functions-framework": "3.4.6", @@ -232,7 +232,7 @@ }, "packages/codex-plugin": { "name": "@remotion/codex-plugin", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@typescript/native-preview": "catalog:", @@ -241,39 +241,39 @@ }, "packages/compositor": { "name": "@remotion/compositor", - "version": "4.0.461", + "version": "4.0.462", }, "packages/compositor-darwin-arm64": { "name": "@remotion/compositor-darwin-arm64", - "version": "4.0.461", + "version": "4.0.462", }, "packages/compositor-darwin-x64": { "name": "@remotion/compositor-darwin-x64", - "version": "4.0.461", + "version": "4.0.462", }, "packages/compositor-linux-arm64-gnu": { "name": "@remotion/compositor-linux-arm64-gnu", - "version": "4.0.461", + "version": "4.0.462", }, "packages/compositor-linux-arm64-musl": { "name": "@remotion/compositor-linux-arm64-musl", - "version": "4.0.461", + "version": "4.0.462", }, "packages/compositor-linux-x64-gnu": { "name": "@remotion/compositor-linux-x64-gnu", - "version": "4.0.461", + "version": "4.0.462", }, "packages/compositor-linux-x64-musl": { "name": "@remotion/compositor-linux-x64-musl", - "version": "4.0.461", + "version": "4.0.462", }, "packages/compositor-win32-x64-msvc": { "name": "@remotion/compositor-win32-x64-msvc", - "version": "4.0.461", + "version": "4.0.462", }, "packages/convert": { "name": "@remotion/convert", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@mediabunny/aac-encoder": "catalog:", "@mediabunny/ac3": "catalog:", @@ -332,7 +332,7 @@ }, "packages/core": { "name": "remotion", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@happy-dom/global-registrator": "14.5.1", "@remotion/eslint-config-internal": "workspace:*", @@ -354,7 +354,7 @@ }, "packages/create-video": { "name": "create-video", - "version": "4.0.461", + "version": "4.0.462", "bin": { "create-video": "bin.js", }, @@ -377,7 +377,7 @@ }, "packages/design": { "name": "@remotion/design", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@radix-ui/react-select": "2.1.1", "@radix-ui/react-slot": "1.2.4", @@ -407,11 +407,11 @@ }, "packages/discord-poster": { "name": "@remotion/discord-poster", - "version": "4.0.461", + "version": "4.0.462", }, "packages/docs": { "name": "docs", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@aws-sdk/s3-request-presigner": "catalog:", "@babel/plugin-transform-modules-commonjs": "7.27.1", @@ -531,7 +531,7 @@ }, "packages/docusaurus-plugin": { "name": "@remotion/docusaurus-plugin", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@docusaurus/types": "3.6.0", "@shikijs/twoslash": "3.22.0", @@ -550,7 +550,7 @@ }, "packages/effects": { "name": "@remotion/effects", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", }, @@ -562,7 +562,7 @@ }, "packages/elevenlabs": { "name": "@remotion/elevenlabs", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/captions": "workspace:*", }, @@ -574,7 +574,7 @@ }, "packages/enable-scss": { "name": "@remotion/enable-scss", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "css-loader": "5.2.7", "sass-loader": "14.2.1", @@ -592,7 +592,7 @@ }, "packages/eslint-config": { "name": "@remotion/eslint-config", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@remotion/eslint-plugin": "workspace:*", @@ -609,7 +609,7 @@ }, "packages/eslint-config-flat": { "name": "@remotion/eslint-config-flat", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "typescript-eslint": "8.21.0", }, @@ -628,7 +628,7 @@ }, "packages/eslint-config-internal": { "name": "@remotion/eslint-config-internal", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@eslint/compat": "1.2.2", "@eslint/eslintrc": "3.1.0", @@ -647,7 +647,7 @@ }, "packages/eslint-plugin": { "name": "@remotion/eslint-plugin", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@typescript-eslint/utils": "5.19.0", }, @@ -662,7 +662,7 @@ }, "packages/example": { "name": "@remotion/example", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@mdx-js/loader": "2.3.0", "@mdx-js/react": "2.3.0", @@ -751,7 +751,7 @@ }, "packages/example-videos": { "name": "@remotion/example-videos", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@typescript/native-preview": "catalog:", @@ -762,7 +762,7 @@ }, "packages/example-without-zod": { "name": "@remotion/example-without-zod", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/cli": "workspace:*", "react": "catalog:", @@ -772,7 +772,7 @@ }, "packages/fonts": { "name": "@remotion/fonts", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", }, @@ -784,14 +784,14 @@ }, "packages/gif": { "name": "@remotion/gif", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", }, "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@typescript/native-preview": "catalog:", - "esbuild": "0.25.0", + "esbuild": "0.28.0", "eslint": "catalog:", "react": "catalog:", "react-dom": "catalog:", @@ -804,7 +804,7 @@ }, "packages/google-fonts": { "name": "@remotion/google-fonts", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", }, @@ -817,7 +817,7 @@ }, "packages/install-whisper-cpp": { "name": "@remotion/install-whisper-cpp", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/captions": "workspace:*", }, @@ -829,7 +829,7 @@ }, "packages/it-tests": { "name": "@remotion/it-tests", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/bundler": "workspace:*", "@remotion/captions": "workspace:*", @@ -871,7 +871,7 @@ }, "packages/lambda": { "name": "@remotion/lambda", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@aws-sdk/client-cloudwatch-logs": "catalog:", "@aws-sdk/client-iam": "catalog:", @@ -913,7 +913,7 @@ }, "packages/lambda-client": { "name": "@remotion/lambda-client", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@aws-sdk/client-cloudwatch-logs": "catalog:", "@aws-sdk/client-iam": "catalog:", @@ -937,25 +937,25 @@ }, "packages/lambda-go": { "name": "@remotion/lambda-go", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "remotion": "workspace:*", }, }, "packages/lambda-go-example": { "name": "@remotion/lambda-go-example", - "version": "4.0.461", + "version": "4.0.462", }, "packages/lambda-php": { "name": "@remotion/lambda-php", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "remotion": "workspace:*", }, }, "packages/lambda-python": { "name": "@remotion/lambda-python", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "dotenv": "17.3.1", }, @@ -965,14 +965,14 @@ }, "packages/lambda-ruby": { "name": "@remotion/lambda-ruby", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "remotion": "workspace:*", }, }, "packages/layout-utils": { "name": "@remotion/layout-utils", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@typescript/native-preview": "catalog:", @@ -981,7 +981,7 @@ }, "packages/licensing": { "name": "@remotion/licensing", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@typescript/native-preview": "catalog:", @@ -992,7 +992,7 @@ }, "packages/light-leaks": { "name": "@remotion/light-leaks", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", "zod": "catalog:", @@ -1011,7 +1011,7 @@ }, "packages/lottie": { "name": "@remotion/lottie", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", }, @@ -1031,7 +1031,7 @@ }, "packages/mcp": { "name": "@remotion/mcp", - "version": "4.0.461", + "version": "4.0.462", "bin": { "remotion-mcp": "./dist/esm/index.mjs", }, @@ -1048,7 +1048,7 @@ }, "packages/media": { "name": "@remotion/media", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "mediabunny": "catalog:", "remotion": "workspace:*", @@ -1071,7 +1071,7 @@ }, "packages/media-parser": { "name": "@remotion/media-parser", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@remotion/example-videos": "workspace:*", @@ -1084,7 +1084,7 @@ }, "packages/media-utils": { "name": "@remotion/media-utils", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "mediabunny": "catalog:", "remotion": "workspace:*", @@ -1101,7 +1101,7 @@ }, "packages/motion-blur": { "name": "@remotion/motion-blur", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", }, @@ -1120,7 +1120,7 @@ }, "packages/noise": { "name": "@remotion/noise", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", "simplex-noise": "4.0.1", @@ -1133,7 +1133,7 @@ }, "packages/openai-whisper": { "name": "@remotion/openai-whisper", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/captions": "workspace:*", }, @@ -1146,7 +1146,7 @@ }, "packages/paths": { "name": "@remotion/paths", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@typescript/native-preview": "catalog:", @@ -1155,7 +1155,7 @@ }, "packages/player": { "name": "@remotion/player", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", }, @@ -1178,7 +1178,7 @@ }, "packages/player-a11y": { "name": "@remotion/player-a11y", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/player": "workspace:*", "remotion": "workspace:*", @@ -1197,7 +1197,7 @@ }, "packages/player-example": { "name": "@remotion/player-example", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/bundler": "workspace:*", "@remotion/eslint-config-flat": "workspace:*", @@ -1219,7 +1219,7 @@ }, "packages/preload": { "name": "@remotion/preload", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@typescript/native-preview": "catalog:", @@ -1228,7 +1228,7 @@ }, "packages/promo-pages": { "name": "@remotion/promo-pages", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@mediabunny/aac-encoder": "catalog:", "@mediabunny/ac3": "catalog:", @@ -1271,7 +1271,7 @@ }, "packages/react18-tests": { "name": "@remotion/react18-tests", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/zod-types": "workspace:*", "@remotion/zod-types-v3": "workspace:*", @@ -1301,7 +1301,7 @@ }, "packages/renderer": { "name": "@remotion/renderer", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/licensing": "workspace:*", "@remotion/streaming": "workspace:*", @@ -1340,7 +1340,7 @@ }, "packages/rive": { "name": "@remotion/rive", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@rive-app/canvas-advanced": "2.31.5", "remotion": "workspace:*", @@ -1359,7 +1359,7 @@ }, "packages/rounded-text-box": { "name": "@remotion/rounded-text-box", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/layout-utils": "workspace:*", "@remotion/paths": "workspace:*", @@ -1372,7 +1372,7 @@ }, "packages/serverless": { "name": "@remotion/serverless", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/bundler": "workspace:*", "@remotion/licensing": "workspace:*", @@ -1387,7 +1387,7 @@ }, "packages/serverless-client": { "name": "@remotion/serverless-client", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@remotion/renderer": "workspace:*", @@ -1399,7 +1399,7 @@ }, "packages/sfx": { "name": "@remotion/sfx", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@typescript/native-preview": "catalog:", @@ -1408,7 +1408,7 @@ }, "packages/shapes": { "name": "@remotion/shapes", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/paths": "workspace:*", }, @@ -1428,7 +1428,7 @@ }, "packages/skia": { "name": "@remotion/skia", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", }, @@ -1452,7 +1452,7 @@ }, "packages/skills": { "name": "@remotion/skills", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/bundler": "workspace:*", "@remotion/cli": "workspace:*", @@ -1470,7 +1470,7 @@ }, "packages/skills-evals": { "name": "@remotion/skills-evals", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/skills": "workspace:*", "react": "catalog:", @@ -1487,7 +1487,7 @@ }, "packages/starburst": { "name": "@remotion/starburst", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", "zod": "catalog:", @@ -1506,7 +1506,7 @@ }, "packages/streaming": { "name": "@remotion/streaming", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@typescript/native-preview": "catalog:", @@ -1515,7 +1515,7 @@ }, "packages/studio": { "name": "@remotion/studio", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@jridgewell/trace-mapping": "0.3.31", "@remotion/media-utils": "workspace:*", @@ -1547,7 +1547,7 @@ }, "packages/studio-server": { "name": "@remotion/studio-server", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@babel/parser": "7.24.1", "@babel/types": "7.24.0", @@ -1573,7 +1573,7 @@ }, "packages/studio-shared": { "name": "@remotion/studio-shared", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", }, @@ -1586,7 +1586,7 @@ }, "packages/svg-3d-engine": { "name": "@remotion/svg-3d-engine", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/paths": "workspace:*", }, @@ -1598,7 +1598,7 @@ }, "packages/tailwind": { "name": "@remotion/tailwind", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "autoprefixer": "10.4.20", "postcss": "8.5.10", @@ -1620,7 +1620,7 @@ }, "packages/tailwind-v4": { "name": "@remotion/tailwind-v4", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@tailwindcss/webpack": "4.2.0", "style-loader": "4.0.0", @@ -2344,7 +2344,7 @@ }, "packages/test-utils": { "name": "@remotion/test-utils", - "version": "4.0.461", + "version": "4.0.462", "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", "@typescript/native-preview": "catalog:", @@ -2356,7 +2356,7 @@ }, "packages/three": { "name": "@remotion/three", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", }, @@ -2383,7 +2383,7 @@ }, "packages/timeline-utils": { "name": "@remotion/timeline-utils", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "mediabunny": "catalog:", }, @@ -2396,7 +2396,7 @@ }, "packages/transitions": { "name": "@remotion/transitions", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/paths": "workspace:*", "@remotion/shapes": "workspace:*", @@ -2420,7 +2420,7 @@ }, "packages/vercel": { "name": "@remotion/vercel", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/renderer": "workspace:*", "remotion": "workspace:*", @@ -2438,7 +2438,7 @@ }, "packages/web-renderer": { "name": "@remotion/web-renderer", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@mediabunny/aac-encoder": "catalog:", "@mediabunny/flac-encoder": "catalog:", @@ -2476,7 +2476,7 @@ }, "packages/webcodecs": { "name": "@remotion/webcodecs", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/media-parser": "workspace:*", }, @@ -2493,7 +2493,7 @@ }, "packages/whisper-web": { "name": "@remotion/whisper-web", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/captions": "workspace:*", }, @@ -2505,7 +2505,7 @@ }, "packages/zod-types": { "name": "@remotion/zod-types", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "remotion": "workspace:*", }, @@ -2521,7 +2521,7 @@ }, "packages/zod-types-v3": { "name": "@remotion/zod-types-v3", - "version": "4.0.461", + "version": "4.0.462", "dependencies": { "@remotion/zod-types": "workspace:*", "remotion": "workspace:*", @@ -3212,57 +3212,57 @@ "@emotion/unitless": ["@emotion/unitless@0.8.1", "", {}, "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="], - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA=="], - "@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + "@esbuild/android-arm": ["@esbuild/android-arm@0.28.0", "", { "os": "android", "cpu": "arm" }, "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ=="], - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.0", "", { "os": "android", "cpu": "arm64" }, "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw=="], - "@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + "@esbuild/android-x64": ["@esbuild/android-x64@0.28.0", "", { "os": "android", "cpu": "x64" }, "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA=="], - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q=="], - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ=="], - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q=="], - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw=="], - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.0", "", { "os": "linux", "cpu": "arm" }, "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw=="], - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A=="], - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ=="], - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg=="], - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w=="], - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg=="], - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ=="], - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q=="], - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.0", "", { "os": "linux", "cpu": "x64" }, "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ=="], - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="], + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw=="], - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.0", "", { "os": "none", "cpu": "x64" }, "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw=="], - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="], + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g=="], - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA=="], - "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.7", "", { "os": "none", "cpu": "arm64" }, "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw=="], + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w=="], - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw=="], - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA=="], - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA=="], - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.0", "", { "os": "win32", "cpu": "x64" }, "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw=="], "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.7.0", "", { "dependencies": { "eslint-visitor-keys": "3.4.3" }, "peerDependencies": { "eslint": "9.19.0" } }, "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw=="], @@ -5700,7 +5700,7 @@ "es6-weak-map": ["es6-weak-map@2.0.3", "", { "dependencies": { "d": "1.0.1", "es5-ext": "0.10.53", "es6-iterator": "2.0.3", "es6-symbol": "3.1.3" } }, "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA=="], - "esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + "esbuild": ["esbuild@0.28.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.0", "@esbuild/android-arm": "0.28.0", "@esbuild/android-arm64": "0.28.0", "@esbuild/android-x64": "0.28.0", "@esbuild/darwin-arm64": "0.28.0", "@esbuild/darwin-x64": "0.28.0", "@esbuild/freebsd-arm64": "0.28.0", "@esbuild/freebsd-x64": "0.28.0", "@esbuild/linux-arm": "0.28.0", "@esbuild/linux-arm64": "0.28.0", "@esbuild/linux-ia32": "0.28.0", "@esbuild/linux-loong64": "0.28.0", "@esbuild/linux-mips64el": "0.28.0", "@esbuild/linux-ppc64": "0.28.0", "@esbuild/linux-riscv64": "0.28.0", "@esbuild/linux-s390x": "0.28.0", "@esbuild/linux-x64": "0.28.0", "@esbuild/netbsd-arm64": "0.28.0", "@esbuild/netbsd-x64": "0.28.0", "@esbuild/openbsd-arm64": "0.28.0", "@esbuild/openbsd-x64": "0.28.0", "@esbuild/openharmony-arm64": "0.28.0", "@esbuild/sunos-x64": "0.28.0", "@esbuild/win32-arm64": "0.28.0", "@esbuild/win32-ia32": "0.28.0", "@esbuild/win32-x64": "0.28.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw=="], "esbuild-plugins-node-modules-polyfill": ["esbuild-plugins-node-modules-polyfill@1.6.6", "", { "dependencies": { "@jspm/core": "2.0.1", "local-pkg": "0.5.0", "resolve.exports": "2.0.2" }, "peerDependencies": { "esbuild": "0.17.6" } }, "sha512-0wDvliv65SCaaGtmoITnmXqqiUzU+ggFupnOgkEo2B9cQ+CUt58ql2+EY6dYoEsoqiHRu2NuTrFUJGMJEgMmLw=="], @@ -11240,6 +11240,8 @@ "tsutils/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], + "tsx/esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + "tsyringe/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], "tunnel-rat/zustand": ["zustand@4.5.5", "", { "dependencies": { "use-sync-external-store": "1.2.2" }, "peerDependencies": { "@types/react": "19.0.0", "react": "19.0.0" }, "optionalPeers": ["@types/react", "react"] }, "sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q=="], @@ -11318,6 +11320,8 @@ "vfile-message/unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "3.0.2" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], + "vite/esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + "vite/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], "vite/postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], @@ -13210,6 +13214,8 @@ "astro/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.7", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg=="], + "astro/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.7", "", { "os": "none", "cpu": "arm64" }, "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw=="], + "astro/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.7", "", { "os": "sunos", "cpu": "x64" }, "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA=="], "astro/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA=="], @@ -14362,6 +14368,8 @@ "template-prompt-to-motion-graphics/typescript-eslint/@typescript-eslint/utils": ["@typescript-eslint/utils@8.46.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.46.0", "@typescript-eslint/types": "8.46.0", "@typescript-eslint/typescript-estree": "8.46.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g=="], + "template-react-router/tsx/esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + "template-recorder/@radix-ui/react-dialog/@radix-ui/primitive": ["@radix-ui/primitive@1.1.2", "", {}, "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA=="], "template-recorder/@radix-ui/react-dialog/@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.2", "", { "peerDependencies": { "@types/react": "19.0.0", "react": "19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="], @@ -14474,6 +14482,8 @@ "template-render-server/express/type-is": ["type-is@2.0.1", "", { "dependencies": { "content-type": "1.0.5", "media-typer": "1.1.0", "mime-types": "3.0.1" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="], + "template-render-server/tsx/esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + "template-still/@types/express/@types/serve-static": ["@types/serve-static@1.13.10", "", { "dependencies": { "@types/mime": "1.3.2", "@types/node": "20.12.14" } }, "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ=="], "template-still/p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], @@ -14518,6 +14528,56 @@ "ts-unused-exports/tsconfig-paths/json5": ["json5@1.0.2", "", { "dependencies": { "minimist": "1.2.6" }, "bin": { "json5": "lib/cli.js" } }, "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA=="], + "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], + + "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + + "tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + + "tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + + "tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + + "tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + + "tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + + "tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + + "tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + + "tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + + "tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + + "tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + + "tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + + "tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + + "tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + + "tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + + "tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + + "tsx/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="], + + "tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + + "tsx/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="], + + "tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + + "tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + + "tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + + "tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + + "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + "tunnel-rat/zustand/react": ["react@19.0.0", "", {}, "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ=="], "tunnel-rat/zustand/use-sync-external-store": ["use-sync-external-store@1.2.2", "", { "peerDependencies": { "react": "19.0.0" } }, "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw=="], @@ -14592,6 +14652,8 @@ "username/execa/npm-run-path": ["npm-run-path@2.0.2", "", { "dependencies": { "path-key": "^2.0.0" } }, "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw=="], + "vite-node/vite/esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + "vite-node/vite/picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="], "vite-node/vite/postcss": ["postcss@8.5.5", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg=="], @@ -14602,6 +14664,58 @@ "vite-tsconfig-paths/vite/postcss": ["postcss@8.5.1", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ=="], + "vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], + + "vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + + "vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + + "vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + + "vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + + "vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + + "vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + + "vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + + "vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + + "vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + + "vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + + "vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + + "vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + + "vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + + "vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + + "vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + + "vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + + "vite/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="], + + "vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + + "vite/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="], + + "vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + + "vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + + "vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + + "vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + + "vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + + "vitest/vite/esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + "vitest/vite/picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="], "vitest/vite/postcss": ["postcss@8.5.5", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg=="], @@ -17850,6 +17964,56 @@ "template-prompt-to-motion-graphics/typescript-eslint/@typescript-eslint/utils/@typescript-eslint/types": ["@typescript-eslint/types@8.46.0", "", {}, "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA=="], + "template-react-router/tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], + + "template-react-router/tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + + "template-react-router/tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + + "template-react-router/tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + + "template-react-router/tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + + "template-react-router/tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + + "template-react-router/tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + + "template-react-router/tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + + "template-react-router/tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + + "template-react-router/tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + + "template-react-router/tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + + "template-react-router/tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + + "template-react-router/tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + + "template-react-router/tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + + "template-react-router/tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + + "template-react-router/tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + + "template-react-router/tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + + "template-react-router/tsx/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="], + + "template-react-router/tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + + "template-react-router/tsx/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="], + + "template-react-router/tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + + "template-react-router/tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + + "template-react-router/tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + + "template-react-router/tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + + "template-react-router/tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + "template-recorder/@radix-ui/react-dialog/@radix-ui/react-dismissable-layer/@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.1", "", { "peerDependencies": { "@types/react": "19.0.0", "react": "19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg=="], "template-recorder/@radix-ui/react-dialog/@radix-ui/react-presence/@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.1", "", { "peerDependencies": { "@types/react": "19.0.0", "react": "19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="], @@ -17910,6 +18074,56 @@ "template-render-server/express/type-is/media-typer": ["media-typer@1.1.0", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="], + "template-render-server/tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], + + "template-render-server/tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + + "template-render-server/tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + + "template-render-server/tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + + "template-render-server/tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + + "template-render-server/tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + + "template-render-server/tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + + "template-render-server/tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + + "template-render-server/tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + + "template-render-server/tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + + "template-render-server/tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + + "template-render-server/tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + + "template-render-server/tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + + "template-render-server/tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + + "template-render-server/tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + + "template-render-server/tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + + "template-render-server/tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + + "template-render-server/tsx/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="], + + "template-render-server/tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + + "template-render-server/tsx/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="], + + "template-render-server/tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + + "template-render-server/tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + + "template-render-server/tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + + "template-render-server/tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + + "template-render-server/tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + "template-vercel/@typescript-eslint/eslint-plugin/@typescript-eslint/scope-manager/@typescript-eslint/types": ["@typescript-eslint/types@8.46.0", "", {}, "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA=="], "template-vercel/@typescript-eslint/eslint-plugin/@typescript-eslint/type-utils/@typescript-eslint/types": ["@typescript-eslint/types@8.46.0", "", {}, "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA=="], @@ -18034,6 +18248,56 @@ "username/execa/npm-run-path/path-key": ["path-key@2.0.1", "", {}, "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw=="], + "vite-node/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], + + "vite-node/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + + "vite-node/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + + "vite-node/vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + + "vite-node/vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + + "vite-node/vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + + "vite-node/vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + + "vite-node/vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + + "vite-node/vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + + "vite-node/vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + + "vite-node/vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + + "vite-node/vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + + "vite-node/vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + + "vite-node/vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + + "vite-node/vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + + "vite-node/vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + + "vite-node/vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + + "vite-node/vite/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="], + + "vite-node/vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + + "vite-node/vite/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="], + + "vite-node/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + + "vite-node/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + + "vite-node/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + + "vite-node/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + + "vite-node/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + "vite-tsconfig-paths/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.21.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ=="], "vite-tsconfig-paths/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.21.5", "", { "os": "android", "cpu": "arm" }, "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg=="], @@ -18080,6 +18344,56 @@ "vite-tsconfig-paths/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.21.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw=="], + "vitest/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], + + "vitest/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + + "vitest/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + + "vitest/vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + + "vitest/vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + + "vitest/vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + + "vitest/vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + + "vitest/vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + + "vitest/vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + + "vitest/vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + + "vitest/vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + + "vitest/vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + + "vitest/vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + + "vitest/vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + + "vitest/vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + + "vitest/vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + + "vitest/vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + + "vitest/vite/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="], + + "vitest/vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + + "vitest/vite/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="], + + "vitest/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + + "vitest/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + + "vitest/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + + "vitest/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + + "vitest/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + "webpack-dev-middleware/schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], "webpack-dev-server/compression/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], diff --git a/packages/animated-emoji/package.json b/packages/animated-emoji/package.json index 3a849a5a9b1..8864de1d4d1 100644 --- a/packages/animated-emoji/package.json +++ b/packages/animated-emoji/package.json @@ -1,6 +1,6 @@ { "name": "@remotion/animated-emoji", - "version": "4.0.461", + "version": "4.0.462", "main": "dist/cjs/index.js", "types": "dist/cjs/index.d.ts", "module": "dist/esm/index.mjs", diff --git a/packages/animation-utils/package.json b/packages/animation-utils/package.json index 5d12b84a192..8ae81186e65 100644 --- a/packages/animation-utils/package.json +++ b/packages/animation-utils/package.json @@ -7,7 +7,7 @@ "name": "Chetan Karwa", "email": "cbkarwa@gmail.com" }, - "version": "4.0.461", + "version": "4.0.462", "description": "Helpers for animating CSS properties", "main": "./dist/index.js", "module": "./dist/index.mjs", diff --git a/packages/astro-example/package.json b/packages/astro-example/package.json index d65a3556b93..67c69300a4f 100644 --- a/packages/astro-example/package.json +++ b/packages/astro-example/package.json @@ -5,7 +5,7 @@ "name": "@remotion/astro-example", "private": true, "type": "module", - "version": "4.0.461", + "version": "4.0.462", "scripts": { "dev": "astro dev", "start": "astro dev", diff --git a/packages/babel-loader/package.json b/packages/babel-loader/package.json index 57f45a3033f..b6057a775cf 100644 --- a/packages/babel-loader/package.json +++ b/packages/babel-loader/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/babel-loader" }, "name": "@remotion/babel-loader", - "version": "4.0.461", + "version": "4.0.462", "description": "Babel loader for Remotion", "main": "dist/index.js", "scripts": { diff --git a/packages/brand/package.json b/packages/brand/package.json index 06ec5e00705..494dfad7983 100644 --- a/packages/brand/package.json +++ b/packages/brand/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/brand" }, "name": "@remotion/brand", - "version": "4.0.461", + "version": "4.0.462", "private": true, "sideEffects": [ "*.css" diff --git a/packages/bugs/package.json b/packages/bugs/package.json index 8773417986e..257651526e0 100644 --- a/packages/bugs/package.json +++ b/packages/bugs/package.json @@ -4,5 +4,5 @@ }, "name": "bugs", "private": true, - "version": "4.0.461" + "version": "4.0.462" } diff --git a/packages/bundler/package.json b/packages/bundler/package.json index 6f87ffc6d11..273ec400360 100644 --- a/packages/bundler/package.json +++ b/packages/bundler/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/bundler" }, "name": "@remotion/bundler", - "version": "4.0.461", + "version": "4.0.462", "description": "Bundle Remotion compositions using Webpack", "main": "dist/index.js", "bugs": { @@ -24,7 +24,7 @@ "loader-utils": "2.0.4", "postcss": "8.5.10", "postcss-value-parser": "4.2.0", - "esbuild": "0.25.0", + "esbuild": "0.28.0", "react-refresh": "0.18.0", "remotion": "workspace:*", "@remotion/studio": "workspace:*", diff --git a/packages/bundler/src/bundle.ts b/packages/bundler/src/bundle.ts index 10616c6eac7..799112a30ab 100644 --- a/packages/bundler/src/bundle.ts +++ b/packages/bundler/src/bundle.ts @@ -72,6 +72,13 @@ export type MandatoryLegacyBundleOptions = { keyboardShortcutsEnabled: boolean; askAIEnabled: boolean; rspack: boolean; + /** + * If true, the public directory is symlinked into the bundle output instead of copied. + * Safe for throwaway bundles (e.g. CLI render where the output folder is deleted after); + * do not use when the bundle must be self-contained for deployment. + * Has no effect on Windows, where the public directory is always copied. + */ + symlinkPublicDir: boolean; }; export type LegacyBundleOptions = Partial; @@ -360,16 +367,20 @@ export const internalBundle = async ( }; if (fs.existsSync(from)) { - await copyDir({ - src: from, - dest: to, - onSymlinkDetected: showSymlinkWarning, - onProgress: (prog) => { - return options.onPublicDirCopyProgress?.(prog); - }, - copiedBytes: 0, - lastReportedProgress: 0, - }); + if (actualArgs.symlinkPublicDir && process.platform !== 'win32') { + await fs.promises.symlink(from, to); + } else { + await copyDir({ + src: from, + dest: to, + onSymlinkDetected: showSymlinkWarning, + onProgress: (prog) => { + return options.onPublicDirCopyProgress?.(prog); + }, + copiedBytes: 0, + lastReportedProgress: 0, + }); + } } const html = indexHtml({ @@ -448,6 +459,7 @@ export async function bundle(...args: Arguments): Promise { askAIEnabled: actualArgs.askAIEnabled ?? true, keyboardShortcutsEnabled: actualArgs.keyboardShortcutsEnabled ?? true, rspack: actualArgs.rspack ?? false, + symlinkPublicDir: actualArgs.symlinkPublicDir ?? false, }); return result; } diff --git a/packages/captions/package.json b/packages/captions/package.json index 3dcf44f1a46..7e90d89def7 100644 --- a/packages/captions/package.json +++ b/packages/captions/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/captions" }, "name": "@remotion/captions", - "version": "4.0.461", + "version": "4.0.462", "description": "Primitives for dealing with captions", "main": "dist/index.js", "bugs": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 60895fc548a..92231091f66 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/cli" }, "name": "@remotion/cli", - "version": "4.0.461", + "version": "4.0.462", "description": "Control Remotion features using the `npx remotion` command", "main": "dist/index.js", "bin": { diff --git a/packages/cli/src/setup-cache.ts b/packages/cli/src/setup-cache.ts index 28c646ad49b..8db72a91195 100644 --- a/packages/cli/src/setup-cache.ts +++ b/packages/cli/src/setup-cache.ts @@ -223,6 +223,8 @@ export const bundleOnCli = async ({ askAIEnabled, keyboardShortcutsEnabled, rspack, + // Ephemeral CLI bundles (render/still/compositions/benchmark) use a temp dir; symlink avoids copying huge public folders. `npx remotion bundle` passes a fixed outDir and keeps deep copy for deployable output. + symlinkPublicDir: outDir === null, }; const [hash] = await BundlerInternals.getConfig({ diff --git a/packages/cloudrun/container/package.json b/packages/cloudrun/container/package.json index 29af6305053..206fe1c01d8 100644 --- a/packages/cloudrun/container/package.json +++ b/packages/cloudrun/container/package.json @@ -1,6 +1,6 @@ { "name": "cloud-run-render", - "version": "4.0.461", + "version": "4.0.462", "description": "Render media and stills on GCP Cloud Run", "main": "dist/index.js", "scripts": { diff --git a/packages/cloudrun/package.json b/packages/cloudrun/package.json index d615704ab82..c4587795e1b 100644 --- a/packages/cloudrun/package.json +++ b/packages/cloudrun/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/cloudrun" }, "name": "@remotion/cloudrun", - "version": "4.0.461", + "version": "4.0.462", "description": "Render Remotion videos on Google Cloud Run", "main": "dist/index.js", "scripts": { diff --git a/packages/cloudrun/src/api/deploy-site.ts b/packages/cloudrun/src/api/deploy-site.ts index 149f2c8b337..98678dd483a 100644 --- a/packages/cloudrun/src/api/deploy-site.ts +++ b/packages/cloudrun/src/api/deploy-site.ts @@ -112,6 +112,7 @@ export const internalDeploySiteRaw = async ({ askAIEnabled: options?.askAIEnabled ?? true, keyboardShortcutsEnabled: options?.keyboardShortcutsEnabled ?? true, rspack: options?.rspack ?? false, + symlinkPublicDir: false, }), ]); diff --git a/packages/codex-plugin/package.json b/packages/codex-plugin/package.json index dd048e167ce..6a039686831 100644 --- a/packages/codex-plugin/package.json +++ b/packages/codex-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@remotion/codex-plugin", - "version": "4.0.461", + "version": "4.0.462", "private": true, "type": "module", "repository": { diff --git a/packages/compositor-darwin-arm64/package.json b/packages/compositor-darwin-arm64/package.json index 38f054012a6..a6479ca6452 100644 --- a/packages/compositor-darwin-arm64/package.json +++ b/packages/compositor-darwin-arm64/package.json @@ -2,7 +2,7 @@ "repository": { "url": "https://github.com/remotion-dev/remotion/tree/main/packages/compositor-darwin-arm64" }, - "version": "4.0.461", + "version": "4.0.462", "name": "@remotion/compositor-darwin-arm64", "os": [ "darwin" diff --git a/packages/compositor-darwin-arm64/remotion b/packages/compositor-darwin-arm64/remotion index b9443aea743..a39ad8ae950 100755 Binary files a/packages/compositor-darwin-arm64/remotion and b/packages/compositor-darwin-arm64/remotion differ diff --git a/packages/compositor-darwin-x64/package.json b/packages/compositor-darwin-x64/package.json index c20ef114a22..de0efe58a34 100644 --- a/packages/compositor-darwin-x64/package.json +++ b/packages/compositor-darwin-x64/package.json @@ -2,7 +2,7 @@ "repository": { "url": "https://github.com/remotion-dev/remotion/tree/main/packages/compositor-darwin-x64" }, - "version": "4.0.461", + "version": "4.0.462", "name": "@remotion/compositor-darwin-x64", "os": [ "darwin" diff --git a/packages/compositor-darwin-x64/remotion b/packages/compositor-darwin-x64/remotion index 8dc22c5eecc..aa30f59fa1f 100755 Binary files a/packages/compositor-darwin-x64/remotion and b/packages/compositor-darwin-x64/remotion differ diff --git a/packages/compositor-linux-arm64-gnu/package.json b/packages/compositor-linux-arm64-gnu/package.json index 3bbcbd7fa1f..4fd2a54579c 100644 --- a/packages/compositor-linux-arm64-gnu/package.json +++ b/packages/compositor-linux-arm64-gnu/package.json @@ -2,7 +2,7 @@ "repository": { "url": "https://github.com/remotion-dev/remotion/tree/main/packages/compositor-linux-arm64-gnu" }, - "version": "4.0.461", + "version": "4.0.462", "name": "@remotion/compositor-linux-arm64-gnu", "os": [ "linux" diff --git a/packages/compositor-linux-arm64-gnu/remotion b/packages/compositor-linux-arm64-gnu/remotion index f3551ac4205..009c78e0cfd 100755 Binary files a/packages/compositor-linux-arm64-gnu/remotion and b/packages/compositor-linux-arm64-gnu/remotion differ diff --git a/packages/compositor-linux-arm64-musl/package.json b/packages/compositor-linux-arm64-musl/package.json index 3052190a7d5..c0d1428ad14 100644 --- a/packages/compositor-linux-arm64-musl/package.json +++ b/packages/compositor-linux-arm64-musl/package.json @@ -2,7 +2,7 @@ "repository": { "url": "https://github.com/remotion-dev/remotion/tree/main/packages/compositor-linux-arm64-musl" }, - "version": "4.0.461", + "version": "4.0.462", "name": "@remotion/compositor-linux-arm64-musl", "os": [ "linux" diff --git a/packages/compositor-linux-arm64-musl/remotion b/packages/compositor-linux-arm64-musl/remotion index ed79ad3ee7c..4a0ac5825bb 100755 Binary files a/packages/compositor-linux-arm64-musl/remotion and b/packages/compositor-linux-arm64-musl/remotion differ diff --git a/packages/compositor-linux-x64-gnu/package.json b/packages/compositor-linux-x64-gnu/package.json index afb3118675b..f1cc41e29db 100644 --- a/packages/compositor-linux-x64-gnu/package.json +++ b/packages/compositor-linux-x64-gnu/package.json @@ -2,7 +2,7 @@ "repository": { "url": "https://github.com/remotion-dev/remotion/tree/main/packages/compositor-linux-x64-gnu" }, - "version": "4.0.461", + "version": "4.0.462", "name": "@remotion/compositor-linux-x64-gnu", "os": [ "linux" diff --git a/packages/compositor-linux-x64-gnu/remotion b/packages/compositor-linux-x64-gnu/remotion index dd39f55a0e7..c27aea82305 100755 Binary files a/packages/compositor-linux-x64-gnu/remotion and b/packages/compositor-linux-x64-gnu/remotion differ diff --git a/packages/compositor-linux-x64-musl/package.json b/packages/compositor-linux-x64-musl/package.json index 5b754bc33b9..265afa70f48 100644 --- a/packages/compositor-linux-x64-musl/package.json +++ b/packages/compositor-linux-x64-musl/package.json @@ -2,7 +2,7 @@ "repository": { "url": "https://github.com/remotion-dev/remotion/tree/main/packages/compositor-linux-x64-musl" }, - "version": "4.0.461", + "version": "4.0.462", "name": "@remotion/compositor-linux-x64-musl", "os": [ "linux" diff --git a/packages/compositor-linux-x64-musl/remotion b/packages/compositor-linux-x64-musl/remotion index 980966703b9..927e628cf84 100755 Binary files a/packages/compositor-linux-x64-musl/remotion and b/packages/compositor-linux-x64-musl/remotion differ diff --git a/packages/compositor-win32-x64-msvc/package.json b/packages/compositor-win32-x64-msvc/package.json index 768b98ad209..cb22eb8fe0c 100644 --- a/packages/compositor-win32-x64-msvc/package.json +++ b/packages/compositor-win32-x64-msvc/package.json @@ -2,7 +2,7 @@ "repository": { "url": "https://github.com/remotion-dev/remotion/tree/main/packages/compositor-win32-x64-msvc" }, - "version": "4.0.461", + "version": "4.0.462", "name": "@remotion/compositor-win32-x64-msvc", "os": [ "win32" diff --git a/packages/compositor/package.json b/packages/compositor/package.json index da27e13e493..2cf05b44202 100644 --- a/packages/compositor/package.json +++ b/packages/compositor/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/compositor" }, "name": "@remotion/compositor", - "version": "4.0.461", + "version": "4.0.462", "description": "Rust binary for Remotion", "scripts": { "build-all": "bun build.ts --all" diff --git a/packages/convert/package.json b/packages/convert/package.json index 7d9874a3be0..0e102f69bcd 100644 --- a/packages/convert/package.json +++ b/packages/convert/package.json @@ -1,6 +1,6 @@ { "name": "@remotion/convert", - "version": "4.0.461", + "version": "4.0.462", "private": true, "type": "module", "author": "Jonny Burger , Hunain Ahmed ", diff --git a/packages/core/package.json b/packages/core/package.json index bd03d37fe07..ccb38a073e1 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/core" }, "name": "remotion", - "version": "4.0.461", + "version": "4.0.462", "description": "Make videos programmatically", "main": "dist/cjs/index.js", "types": "dist/cjs/index.d.ts", diff --git a/packages/core/src/CompositionManager.tsx b/packages/core/src/CompositionManager.tsx index 23a4430e4e9..5f5099a5bea 100644 --- a/packages/core/src/CompositionManager.tsx +++ b/packages/core/src/CompositionManager.tsx @@ -3,7 +3,7 @@ import React from 'react'; import type {AnyZodObject} from './any-zod-type.js'; import type {CalculateMetadataFunction} from './Composition.js'; import type {DownloadBehavior} from './download-behavior.js'; -import type {EffectDefinitionAndStack} from './effects/effect-types.js'; +import type {EffectDefinition} from './effects/effect-types.js'; import type {NonceHistory} from './nonce.js'; import type {InferProps, PropsIfHasProps} from './props-if-has-props.js'; import type {SequenceSchema} from './sequence-field-schema.js'; @@ -115,7 +115,7 @@ export type TSequence = { premountDisplay: number | null; postmountDisplay: number | null; controls: SequenceControls | null; - effects: EffectDefinitionAndStack[]; + effects: readonly EffectDefinition[]; } & EnhancedTSequenceData; export type AudioOrVideoAsset = { diff --git a/packages/core/src/HtmlInCanvas.tsx b/packages/core/src/HtmlInCanvas.tsx index 0a3d6ce94e4..368d743bc29 100644 --- a/packages/core/src/HtmlInCanvas.tsx +++ b/packages/core/src/HtmlInCanvas.tsx @@ -10,13 +10,15 @@ import React, { } from 'react'; import type {SequenceControls} from './CompositionManager.js'; import {delayRender} from './delay-render.js'; -import {flattenEffects} from './effects/effect-internals.js'; import type {EffectsProp} from './effects/effect-types.js'; import {runEffectChain} from './effects/run-effect-chain.js'; import {useEffectChainState} from './effects/use-effect-chain-state.js'; -import {useMemoizedEffects} from './effects/use-memoized-effects.js'; +import { + useMemoizedEffectDefinitions, + useMemoizedEffects, +} from './effects/use-memoized-effects.js'; import {addSequenceStackTraces} from './enable-sequence-stack-traces.js'; -import {sequenceStyleSchema} from './sequence-field-schema.js'; +import {hiddenField, sequenceStyleSchema} from './sequence-field-schema.js'; import type { AbsoluteFillLayout, LayoutAndStyle, @@ -274,25 +276,23 @@ export type HtmlInCanvasProps = Omit< const HtmlInCanvasAncestorContext = createContext(false); -const HtmlInCanvasInner = forwardRef< +type HtmlInCanvasContentProps = { + readonly width: number; + readonly height: number; + readonly effects: EffectsProp; + readonly children: React.ReactNode; + readonly onPaint: HtmlInCanvasOnPaint | undefined; + readonly onInit: HtmlInCanvasOnInit | undefined; + readonly controls: SequenceControls | undefined; + readonly style: React.CSSProperties | undefined; +}; + +const HtmlInCanvasContent = forwardRef< HTMLCanvasElement, - HtmlInCanvasProps & { - readonly _experimentalControls: SequenceControls | undefined; - } + HtmlInCanvasContentProps >( ( - { - width, - height, - _experimentalEffects: effects = [], - children, - onPaint, - onInit, - _experimentalControls: controls, - style, - durationInFrames, - ...sequenceProps - }, + {width, height, effects, children, onPaint, onInit, controls, style}, ref, ) => { const isInsideAncestorHtmlInCanvas = useContext( @@ -306,9 +306,6 @@ const HtmlInCanvasInner = forwardRef< cancelRender(new Error(HTML_IN_CANVAS_UNSUPPORTED_MESSAGE)); } - const {durationInFrames: videoDuration} = useVideoConfig(); - const resolvedDuration = durationInFrames ?? videoDuration; - const frame = useCurrentFrame(); const canvas2dRef = useRef(null); @@ -330,7 +327,10 @@ const HtmlInCanvasInner = forwardRef< const chainState = useEffectChainState(); - const memoizedEffects = useMemoizedEffects(flattenEffects(effects)); + const memoizedEffects = useMemoizedEffects({ + effects, + overrideId: controls?.overrideId ?? null, + }); // Refs so the paint handler always reads fresh values. const effectsRef = useRef(memoizedEffects); @@ -502,27 +502,72 @@ const HtmlInCanvasInner = forwardRef< ); } + return ( + + +
+ {children} +
+
+
+ ); + }, +); + +HtmlInCanvasContent.displayName = 'HtmlInCanvasContent'; + +const HtmlInCanvasInner = forwardRef< + HTMLCanvasElement, + HtmlInCanvasProps & { + readonly _experimentalControls: SequenceControls | undefined; + } +>( + ( + { + width, + height, + _experimentalEffects: effects = [], + children, + onPaint, + onInit, + _experimentalControls: controls, + style, + durationInFrames, + ...sequenceProps + }, + ref, + ) => { + const {durationInFrames: videoDuration} = useVideoConfig(); + const resolvedDuration = durationInFrames ?? videoDuration; + + const memoizedEffectDefinitions = useMemoizedEffectDefinitions(effects); + return ( - - -
- {children} -
-
-
+ + {children} +
); }, @@ -530,10 +575,12 @@ const HtmlInCanvasInner = forwardRef< HtmlInCanvasInner.displayName = 'HtmlInCanvas'; -const HtmlInCanvasWrapped = wrapInSchema( - HtmlInCanvasInner, - sequenceStyleSchema, -); +const htmlInCanvasSchema = { + ...sequenceStyleSchema, + hidden: hiddenField, +}; + +const HtmlInCanvasWrapped = wrapInSchema(HtmlInCanvasInner, htmlInCanvasSchema); export const HtmlInCanvas = Object.assign(HtmlInCanvasWrapped, { isSupported: isHtmlInCanvasSupported, diff --git a/packages/core/src/Img.tsx b/packages/core/src/Img.tsx index 998c6f9bf6c..365d8767a18 100644 --- a/packages/core/src/Img.tsx +++ b/packages/core/src/Img.tsx @@ -11,7 +11,7 @@ import type {SequenceControls} from './CompositionManager.js'; import {addSequenceStackTraces} from './enable-sequence-stack-traces.js'; import {getCrossOriginValue} from './get-cross-origin-value.js'; import {usePreload} from './prefetch.js'; -import {sequenceStyleSchema} from './sequence-field-schema.js'; +import {hiddenField, sequenceStyleSchema} from './sequence-field-schema.js'; import {SequenceContext} from './SequenceContext.js'; import {useBufferState} from './use-buffer-state.js'; import {useDelayRender} from './use-delay-render.js'; @@ -56,13 +56,17 @@ export type ImgProps = NativeImgProps & { readonly stack?: string; }; -type Expected = Omit; +type Expected = Omit< + NativeImgProps, + 'onError' | 'src' | 'crossOrigin' | 'ref' | 'hidden' +>; -const ImgInner: React.FC< - ImgProps & { - readonly _experimentalControls: SequenceControls | undefined; - } -> = ({ +type ImgContentProps = Omit< + ImgProps, + 'hidden' | 'name' | 'stack' | 'showInTimeline' +>; + +const ImgContent: React.FC = ({ onError, maxRetries = 2, src, @@ -71,22 +75,13 @@ const ImgInner: React.FC< delayRenderTimeoutInMilliseconds, onImageFrame, crossOrigin, - showInTimeline, - name, - stack, ref, - _experimentalControls: controls, ...props }) => { const imageRef = useRef(null); const errors = useRef>({}); const {delayPlayback} = useBufferState(); const sequenceContext = useContext(SequenceContext); - const [timelineId] = useState(() => String(Math.random())); - - if (!src) { - throw new Error('No "src" prop was passed to .'); - } const _propsValid: IsExact = true; @@ -98,18 +93,6 @@ const ImgInner: React.FC< return imageRef.current as HTMLImageElement; }, []); - useImageInTimeline({ - src, - displayName: name ?? null, - id: timelineId, - stack: stack ?? null, - showInTimeline: showInTimeline ?? true, - premountDisplay: sequenceContext?.premountDisplay ?? null, - postmountDisplay: sequenceContext?.postmountDisplay ?? null, - loopDisplay: undefined, - controls: controls ?? null, - }); - const actualSrc = usePreload(src as string); const retryIn = useCallback((timeout: number) => { @@ -309,9 +292,53 @@ const ImgInner: React.FC< ); }; +const ImgInner: React.FC< + ImgProps & { + readonly _experimentalControls: SequenceControls | undefined; + } +> = ({ + hidden, + name, + stack, + showInTimeline, + src, + _experimentalControls: controls, + ...props +}) => { + const sequenceContext = useContext(SequenceContext); + const [timelineId] = useState(() => String(Math.random())); + + if (!src) { + throw new Error('No "src" prop was passed to .'); + } + + useImageInTimeline({ + src, + displayName: name ?? null, + id: timelineId, + stack: stack ?? null, + showInTimeline: showInTimeline ?? true, + premountDisplay: sequenceContext?.premountDisplay ?? null, + postmountDisplay: sequenceContext?.postmountDisplay ?? null, + loopDisplay: undefined, + controls: controls ?? null, + }); + + if (hidden) { + return null; + } + + return ; +}; + +const imgSchema = { + ...sequenceStyleSchema, + hidden: hiddenField, +}; + /* * @description Works just like a regular HTML img tag. When you use the tag, Remotion will ensure that the image is loaded before rendering the frame. * @see [Documentation](https://remotion.dev/docs/img) */ -export const Img = wrapInSchema(ImgInner, sequenceStyleSchema); +export const Img = wrapInSchema(ImgInner, imgSchema); addSequenceStackTraces(Img); diff --git a/packages/core/src/Sequence.tsx b/packages/core/src/Sequence.tsx index 40edcbcfe2a..b332d285996 100644 --- a/packages/core/src/Sequence.tsx +++ b/packages/core/src/Sequence.tsx @@ -8,17 +8,14 @@ import React, { } from 'react'; import {AbsoluteFill} from './AbsoluteFill.js'; import type {LoopDisplay, SequenceControls} from './CompositionManager.js'; -import type {EffectDefinitionAndStack} from './effects/effect-types.js'; +import type {EffectDefinition} from './effects/effect-types.js'; import {Freeze} from './freeze.js'; import {useNonce} from './nonce.js'; import {PremountContext} from './PremountContext.js'; import {sequenceSchema} from './sequence-field-schema.js'; import type {SequenceContextType} from './SequenceContext.js'; import {SequenceContext} from './SequenceContext.js'; -import { - SequenceManager, - SequenceVisibilityToggleContext, -} from './SequenceManager.js'; +import {SequenceManager} from './SequenceManager.js'; import { useTimelineContext, useTimelinePosition, @@ -53,8 +50,9 @@ export type SequencePropsWithoutDuration = { readonly from?: number; readonly name?: string; readonly showInTimeline?: boolean; + readonly hidden?: boolean; readonly _experimentalControls?: SequenceControls; - readonly _experimentalEffects?: EffectDefinitionAndStack[]; + readonly _experimentalEffects?: readonly EffectDefinition[]; /** * @deprecated For internal use only. */ @@ -104,6 +102,7 @@ const RegularSequenceRefForwardingFunction: React.ForwardRefRenderFunction< height, width, showInTimeline = true, + hidden = false, _experimentalControls: controls, _experimentalEffects, _remotionInternalLoopDisplay: loopDisplay, @@ -175,7 +174,6 @@ const RegularSequenceRefForwardingFunction: React.ForwardRefRenderFunction< Math.min(videoConfig.durationInFrames - from, parentSequenceDuration), ); const {registerSequence, unregisterSequence} = useContext(SequenceManager); - const {hidden} = useContext(SequenceVisibilityToggleContext); const premounting = useMemo(() => { // || is intentional, ?? would not trigger on `false` @@ -228,6 +226,9 @@ const RegularSequenceRefForwardingFunction: React.ForwardRefRenderFunction< const env = useRemotionEnvironment(); const inheritedStack = (other as any)?.stack ?? null; + // Our assumption: Stack doesnt' change. After we symbolicate we assign it a nodePath + // and if it changes, it would lead to-remounting of the sequence. + const [stackDoesntChange] = useState(() => stack ?? inheritedStack); useEffect(() => { if (!env.isStudio) { @@ -253,7 +254,7 @@ const RegularSequenceRefForwardingFunction: React.ForwardRefRenderFunction< rootId, showInTimeline, src: isMedia.data.src, - stack: stack ?? inheritedStack, + stack: stackDoesntChange, startMediaFrom: isMedia.data.startMediaFrom, volume: isMedia.data.volumes, }); @@ -273,7 +274,7 @@ const RegularSequenceRefForwardingFunction: React.ForwardRefRenderFunction< showInTimeline, nonce: nonce.get(), loopDisplay, - stack: stack ?? inheritedStack, + stack: stackDoesntChange, premountDisplay: premountDisplay ?? null, postmountDisplay: postmountDisplay ?? null, controls: controls ?? null, @@ -296,11 +297,10 @@ const RegularSequenceRefForwardingFunction: React.ForwardRefRenderFunction< showInTimeline, nonce, loopDisplay, - stack, + stackDoesntChange, premountDisplay, postmountDisplay, env.isStudio, - inheritedStack, controls, _experimentalEffects, isMedia, @@ -333,9 +333,7 @@ const RegularSequenceRefForwardingFunction: React.ForwardRefRenderFunction< ); } - const isSequenceHidden = hidden[id] ?? false; - - if (isSequenceHidden) { + if (hidden) { return null; } diff --git a/packages/core/src/SequenceManager.tsx b/packages/core/src/SequenceManager.tsx index 40125ca3572..248676035b5 100644 --- a/packages/core/src/SequenceManager.tsx +++ b/packages/core/src/SequenceManager.tsx @@ -4,8 +4,9 @@ import type { CanUpdateSequencePropStatus, CodeValues, DragOverrides, - GetCodeValues, + EffectDragOverrides, GetDragOverrides, + GetEffectDragOverrides, } from './use-schema.js'; export type SequenceManagerContext = { @@ -16,10 +17,6 @@ export type SequenceManagerContext = { export type SequenceNodePath = Array; -const nodePathToString = (nodePath: SequenceNodePath): string => { - return nodePath.join('.'); -}; - export const SequenceManager = React.createContext({ registerSequence: () => { throw new Error('SequenceManagerContext not initialized'); @@ -30,79 +27,88 @@ export const SequenceManager = React.createContext({ sequences: [], }); -export type SequenceVisibilityToggleState = { - hidden: Record; - setHidden: React.Dispatch>>; -}; - -export const SequenceVisibilityToggleContext = - React.createContext({ - hidden: {}, - setHidden: () => { - throw new Error('SequenceVisibilityToggle not initialized'); - }, - }); - export type VisualModeCodeValues = { - getCodeValues: GetCodeValues; + codeValues: CodeValues; }; export type VisualModeDragOverrides = { getDragOverrides: GetDragOverrides; + getEffectDragOverrides: GetEffectDragOverrides; }; export type VisualModeSetters = { setDragOverrides: ( - nodePath: SequenceNodePath, + nodePath: SequencePropsSubscriptionKey, key: string, value: unknown, ) => void; - clearDragOverrides: (nodePath: SequenceNodePath) => void; + clearDragOverrides: (nodePath: SequencePropsSubscriptionKey) => void; + setEffectDragOverrides: ( + nodePath: SequencePropsSubscriptionKey, + effectIndex: number, + key: string, + value: unknown, + ) => void; + clearEffectDragOverrides: ( + nodePath: SequencePropsSubscriptionKey, + effectIndex: number, + ) => void; setCodeValues: ( - nodePath: SequenceNodePath, + nodePath: SequencePropsSubscriptionKey, values: ( prev: CanUpdateSequencePropsResponse, ) => CanUpdateSequencePropsResponse, ) => void; }; +export type CanUpdateEffectPropsResponseTrue = { + canUpdate: true; + callee: string; + effectIndex: number; + props: Record; +}; + +export type CannotUpdateEffectReason = + | 'not-found' + | 'computed' + | 'not-call-expression'; + +export type CannotUpdateSequenceReason = 'not-found' | 'error'; + +export type CanUpdateEffectPropsResponseFalse = { + canUpdate: false; + effectIndex: number; + reason: CannotUpdateEffectReason; +}; + +export type CanUpdateEffectPropsResponse = + | CanUpdateEffectPropsResponseTrue + | CanUpdateEffectPropsResponseFalse; + export type CanUpdateSequencePropsResponseTrue = { canUpdate: true; props: Record; + effects: CanUpdateEffectPropsResponse[]; }; export type CanUpdateSequencePropsResponseFalse = { canUpdate: false; - reason: string; + reason: CannotUpdateSequenceReason; }; export type CanUpdateSequencePropsResponse = | CanUpdateSequencePropsResponseTrue | CanUpdateSequencePropsResponseFalse; -const getCodeValuesCtx = ( - codeValues: CodeValues, - nodePath: SequenceNodePath, -) => { - const status = codeValues[nodePathToString(nodePath)]; - if (!status) { - return undefined; - } - - if (!status.canUpdate) { - return undefined; - } - - return status.props; +export const makeSequencePropsSubscriptionKey = ( + key: SequencePropsSubscriptionKey, +): string => { + return `${key.nodePath.join('.')}.${key.sequenceKeys.join('.')}.${key.effectKeys.map((keys) => keys.join('.')).join('.')}`; }; -export type GetCodeValuesType = typeof getCodeValuesCtx; - export const VisualModeCodeValuesContext = React.createContext({ - getCodeValues: () => { - throw new Error('VisualModeCodeValuesContext not initialized'); - }, + codeValues: {}, }); export const VisualModeDragOverridesContext = @@ -110,6 +116,9 @@ export const VisualModeDragOverridesContext = getDragOverrides: () => { throw new Error('VisualModeDragOverridesContext not initialized'); }, + getEffectDragOverrides: () => { + throw new Error('VisualModeDragOverridesContext not initialized'); + }, }); export const VisualModeSettersContext = React.createContext({ @@ -119,27 +128,47 @@ export const VisualModeSettersContext = React.createContext({ clearDragOverrides: () => { throw new Error('VisualModeSettersContext not initialized'); }, + setEffectDragOverrides: () => { + throw new Error('VisualModeSettersContext not initialized'); + }, + clearEffectDragOverrides: () => { + throw new Error('VisualModeSettersContext not initialized'); + }, setCodeValues: () => { throw new Error('VisualModeSettersContext not initialized'); }, }); +export type SequencePropsSubscriptionKey = { + absolutePath: string; + nodePath: SequenceNodePath; + sequenceKeys: string[]; + effectKeys: string[][]; +}; + +const effectDragOverridesKey = ( + nodePath: SequencePropsSubscriptionKey, + effectIndex: number, +): string => + `${makeSequencePropsSubscriptionKey(nodePath)}.effects.${effectIndex}`; + export const SequenceManagerProvider: React.FC<{ readonly children: React.ReactNode; }> = ({children}) => { const [sequences, setSequences] = useState([]); - const [hidden, setHidden] = useState>({}); const [dragOverrides, setControlOverrides] = useState({}); const controlOverridesRef = useRef(dragOverrides); controlOverridesRef.current = dragOverrides; + const [effectDragOverridesState, setEffectDragOverridesState] = + useState({}); const [codeValues, setCodeValuesMapState] = useState({}); const setDragOverrides = useCallback( - (nodePath: SequenceNodePath, key: string, value: unknown) => { + (nodePath: SequencePropsSubscriptionKey, key: string, value: unknown) => { setControlOverrides((prev) => ({ ...prev, - [nodePathToString(nodePath)]: { - ...prev[nodePathToString(nodePath)], + [makeSequencePropsSubscriptionKey(nodePath)]: { + ...prev[makeSequencePropsSubscriptionKey(nodePath)], [key]: value, }, })); @@ -147,28 +176,68 @@ export const SequenceManagerProvider: React.FC<{ [], ); - const clearDragOverrides = useCallback((nodePath: SequenceNodePath) => { - setControlOverrides((prev) => { - const key = nodePathToString(nodePath); - if (!prev[key]) { - return prev; - } + const clearDragOverrides = useCallback( + (nodePath: SequencePropsSubscriptionKey) => { + setControlOverrides((prev) => { + const key = makeSequencePropsSubscriptionKey(nodePath); + if (!prev[key]) { + return prev; + } - const next = {...prev}; - delete next[key]; - return next; - }); - }, []); + const next = {...prev}; + delete next[key]; + return next; + }); + }, + [], + ); + + const setEffectDragOverrides = useCallback( + ( + nodePath: SequencePropsSubscriptionKey, + effectIndex: number, + key: string, + value: unknown, + ) => { + setEffectDragOverridesState((prev) => { + const mapKey = effectDragOverridesKey(nodePath, effectIndex); + return { + ...prev, + [mapKey]: { + ...prev[mapKey], + [key]: value, + }, + }; + }); + }, + [], + ); + + const clearEffectDragOverrides = useCallback( + (nodePath: SequencePropsSubscriptionKey, effectIndex: number) => { + setEffectDragOverridesState((prev) => { + const mapKey = effectDragOverridesKey(nodePath, effectIndex); + if (!prev[mapKey]) { + return prev; + } + + const next = {...prev}; + delete next[mapKey]; + return next; + }); + }, + [], + ); const setCodeValues = useCallback( ( - nodePath: SequenceNodePath, + nodePath: SequencePropsSubscriptionKey, values: ( prev: CanUpdateSequencePropsResponse, ) => CanUpdateSequencePropsResponse, ) => { setCodeValuesMapState((prev) => { - const key = nodePathToString(nodePath); + const key = makeSequencePropsSubscriptionKey(nodePath); const prevKey = prev[key]; const newKey = values(prevKey); @@ -201,58 +270,62 @@ export const SequenceManagerProvider: React.FC<{ }; }, [registerSequence, sequences, unregisterSequence]); - const hiddenContext: SequenceVisibilityToggleState = useMemo(() => { - return { - hidden, - setHidden, - }; - }, [hidden]); - const getDragOverrides = useCallback( - (nodePath: SequenceNodePath) => { - return dragOverrides[nodePathToString(nodePath)] ?? {}; + (nodePath: SequencePropsSubscriptionKey) => { + return dragOverrides[makeSequencePropsSubscriptionKey(nodePath)] ?? {}; }, [dragOverrides], ); - const getCodeValues = useCallback( - (nodePath: SequenceNodePath) => { - return getCodeValuesCtx(codeValues, nodePath); + const getEffectDragOverrides = useCallback( + (nodePath: SequencePropsSubscriptionKey, effectIndex: number) => { + return ( + effectDragOverridesState[ + effectDragOverridesKey(nodePath, effectIndex) + ] ?? {} + ); }, - [codeValues], + [effectDragOverridesState], ); const codeValuesContext: VisualModeCodeValues = useMemo(() => { return { - getCodeValues, + codeValues, }; - }, [getCodeValues]); + }, [codeValues]); const dragOverridesContext: VisualModeDragOverrides = useMemo(() => { return { getDragOverrides, + getEffectDragOverrides, }; - }, [getDragOverrides]); + }, [getDragOverrides, getEffectDragOverrides]); const settersContext: VisualModeSetters = useMemo(() => { return { setDragOverrides, clearDragOverrides, + setEffectDragOverrides, + clearEffectDragOverrides, setCodeValues, }; - }, [setDragOverrides, clearDragOverrides, setCodeValues]); + }, [ + setDragOverrides, + clearDragOverrides, + setEffectDragOverrides, + clearEffectDragOverrides, + setCodeValues, + ]); return ( - - - - - {children} - - - - + + + + {children} + + + ); }; diff --git a/packages/core/src/audio/AudioForPreview.tsx b/packages/core/src/audio/AudioForPreview.tsx index f3216a60f9e..73a37bc55bf 100644 --- a/packages/core/src/audio/AudioForPreview.tsx +++ b/packages/core/src/audio/AudioForPreview.tsx @@ -13,7 +13,6 @@ import {useLogLevel} from '../log-level-context.js'; import {usePreload} from '../prefetch.js'; import {random} from '../random.js'; import {SequenceContext} from '../SequenceContext.js'; -import {SequenceVisibilityToggleContext} from '../SequenceManager.js'; import {useVolume} from '../use-amplification.js'; import {useMediaInTimeline} from '../use-media-in-timeline.js'; import {useMediaPlayback} from '../use-media-playback.js'; @@ -99,8 +98,6 @@ const AudioForDevelopmentForwardRefFunction: React.ForwardRefRenderFunction< loopVolumeCurveBehavior ?? 'repeat', ); - const {hidden} = useContext(SequenceVisibilityToggleContext); - if (!src) { throw new TypeError("No 'src' was passed to ."); } @@ -111,8 +108,6 @@ const AudioForDevelopmentForwardRefFunction: React.ForwardRefRenderFunction< const [timelineId] = useState(() => String(Math.random())); - const isSequenceHidden = hidden[timelineId] ?? false; - const userPreferredVolume = evaluateVolume({ frame: volumePropFrame, volume, @@ -129,8 +124,7 @@ const AudioForDevelopmentForwardRefFunction: React.ForwardRefRenderFunction< const propsToPass = useMemo((): AudioHTMLAttributes => { return { - muted: - muted || mediaMuted || isSequenceHidden || userPreferredVolume <= 0, + muted: muted || mediaMuted || userPreferredVolume <= 0, src: preloadedSrc, loop: _remotionInternalNativeLoopPassed, crossOrigin: crossOriginValue, @@ -138,7 +132,6 @@ const AudioForDevelopmentForwardRefFunction: React.ForwardRefRenderFunction< }; }, [ _remotionInternalNativeLoopPassed, - isSequenceHidden, mediaMuted, muted, nativeProps, diff --git a/packages/core/src/effects/Solid.tsx b/packages/core/src/effects/Solid.tsx index 3616ac1c0f0..ce8d987cf74 100644 --- a/packages/core/src/effects/Solid.tsx +++ b/packages/core/src/effects/Solid.tsx @@ -1,7 +1,6 @@ import React, {useEffect, useMemo, useState} from 'react'; import {useCurrentFrame} from '../use-current-frame.js'; import {useDelayRender} from '../use-delay-render.js'; -import {flattenEffects} from './effect-internals.js'; import type {EffectsProp} from './effect-types.js'; import {runEffectChain} from './run-effect-chain.js'; import {useEffectChainState} from './use-effect-chain-state.js'; @@ -33,9 +32,11 @@ export const Solid: React.FC = ({ null, ); - const memoizedEffects = useMemoizedEffects( - flattenEffects(experimentalEffects), - ); + const memoizedEffects = useMemoizedEffects({ + effects: experimentalEffects, + // TODO: Add schema to Solid + overrideId: null, + }); const sourceCanvas = useMemo(() => { if (typeof document === 'undefined') { diff --git a/packages/core/src/effects/create-effect.ts b/packages/core/src/effects/create-effect.ts index 516d9cbcb37..ffe1f3c35de 100644 --- a/packages/core/src/effects/create-effect.ts +++ b/packages/core/src/effects/create-effect.ts @@ -21,7 +21,6 @@ export const createEffect = ( const factory = (params: P = {} as P): EffectDescriptor => ({ definition: widened, params, - stack: new Error().stack!, effectKey: widened.calculateKey(params), memoized: false, }); diff --git a/packages/core/src/effects/effect-internals.ts b/packages/core/src/effects/effect-internals.ts index 260a3ca4a8f..c4c14161ed2 100644 --- a/packages/core/src/effects/effect-internals.ts +++ b/packages/core/src/effects/effect-internals.ts @@ -1,30 +1,8 @@ -import type { - Backend, - EffectDefinitionAndStack, - EffectDescriptor, - EffectsProp, -} from './effect-types.js'; +import type {Backend, EffectDefinitionAndStack} from './effect-types.js'; // Internal helpers for the chain runtime. Exported separately so they can be // unit-tested without spinning up the React lifecycle / canvas mocking. -export const flattenEffects = ( - effects: EffectsProp, -): EffectDescriptor[] => { - const out: EffectDescriptor[] = []; - for (const item of effects) { - if (Array.isArray(item)) { - for (const inner of item) { - out.push(inner); - } - } else { - out.push(item as EffectDescriptor); - } - } - - return out; -}; - export type Run = { readonly backend: Backend; readonly effects: EffectDefinitionAndStack[]; diff --git a/packages/core/src/effects/effect-types.ts b/packages/core/src/effects/effect-types.ts index aec317701d4..69461f76462 100644 --- a/packages/core/src/effects/effect-types.ts +++ b/packages/core/src/effects/effect-types.ts @@ -48,7 +48,6 @@ export type EffectDefinition = { type BaseEffectDescriptor

= { readonly definition: EffectDefinition; - readonly stack: string; readonly effectKey: string; readonly params: P; }; @@ -62,11 +61,4 @@ export type EffectDefinitionAndStack

= BaseEffectDescriptor

& { readonly memoized: true; }; -// Prop type for `effects`: callers may interleave single descriptors -// with arrays of descriptors. The runtime calls `.flat()` once before -// processing, which lets a single factory call (e.g. `blur(...)`) expand into -// multiple passes (e.g. horizontal + vertical) without leaking that detail to -// the call site. -export type EffectsProp = ReadonlyArray< - EffectDescriptor | ReadonlyArray> ->; +export type EffectsProp = ReadonlyArray>; diff --git a/packages/core/src/effects/index.ts b/packages/core/src/effects/index.ts index 681ac8c77bd..b4796bc7ef3 100644 --- a/packages/core/src/effects/index.ts +++ b/packages/core/src/effects/index.ts @@ -3,4 +3,5 @@ export type { EffectDefinitionAndStack, EffectDescriptor, EffectsProp, + EffectDefinition, } from './effect-types.js'; diff --git a/packages/core/src/effects/use-memoized-effects.ts b/packages/core/src/effects/use-memoized-effects.ts index 313537607f1..c14ec5371d5 100644 --- a/packages/core/src/effects/use-memoized-effects.ts +++ b/packages/core/src/effects/use-memoized-effects.ts @@ -1,37 +1,239 @@ -import {useRef} from 'react'; +import {useContext, useRef} from 'react'; +import {OverrideIdsToNodePathsGettersContext} from '../sequence-node-path.js'; import type { + CannotUpdateEffectReason, + CannotUpdateSequenceReason, +} from '../SequenceManager.js'; +import { + makeSequencePropsSubscriptionKey, + type SequencePropsSubscriptionKey, +} from '../SequenceManager.js'; +import { + VisualModeCodeValuesContext, + VisualModeDragOverridesContext, +} from '../SequenceManager.js'; +import type {CanUpdateSequencePropStatus, CodeValues} from '../use-schema.js'; +import type { + EffectDefinition, EffectDefinitionAndStack, EffectDescriptor, } from './effect-types.js'; -export const useMemoizedEffects = ( - effects: EffectDescriptor[], -): EffectDefinitionAndStack[] => { +const mergeOverrides = ({ + descriptor, + codeOverrides, + dragOverrides, +}: { + descriptor: EffectDescriptor; + codeOverrides: Record | null; + dragOverrides: Record | null; +}): {params: unknown; effectKey: string} => { + if (!codeOverrides && !dragOverrides) { + return {params: descriptor.params, effectKey: descriptor.effectKey}; + } + + const merged: Record = { + ...(descriptor.params as Record), + }; + + if (codeOverrides) { + for (const [key, value] of Object.entries(codeOverrides)) { + if (value !== undefined) { + merged[key] = value; + } + } + } + + if (dragOverrides) { + for (const [key, value] of Object.entries(dragOverrides)) { + merged[key] = value; + } + } + + return { + params: merged, + effectKey: descriptor.definition.calculateKey(merged), + }; +}; + +const extractCodeOverrides = ( + propStatus: + | Record + | undefined, +): Record | null => { + if (!propStatus) { + return null; + } + + const out: Record = {}; + let hasAny = false; + for (const [key, status] of Object.entries(propStatus)) { + if (status.canUpdate) { + out[key] = status.codeValue; + hasAny = true; + } + } + + return hasAny ? out : null; +}; + +export const useMemoizedEffectDefinitions = ( + effects: readonly EffectDescriptor[], +): readonly EffectDefinition[] => { + const previousRef = useRef[] | null>(null); + + const definitions = effects.map((descriptor) => descriptor.definition); + + const previous = previousRef.current; + const isSame = + previous !== null && + previous.length === definitions.length && + previous.every((def, i) => def === definitions[i]); + + if (isSame) { + return previous; + } + + previousRef.current = definitions; + return definitions; +}; + +type EffectStatus = + | { + type: 'cannot-update-sequence'; + reason: CannotUpdateSequenceReason; + } + | { + type: 'cannot-update-effect'; + reason: CannotUpdateEffectReason; + } + | { + type: 'can-update-effect'; + props: Record; + }; + +export const getEffectCodeValuesCtx = ({ + codeValues, + nodePath, + effectIndex, +}: { + codeValues: CodeValues; + nodePath: SequencePropsSubscriptionKey; + effectIndex: number; +}): EffectStatus => { + const status = codeValues[makeSequencePropsSubscriptionKey(nodePath)]; + if (!status) { + return {type: 'cannot-update-sequence', reason: 'not-found'}; + } + + if (!status.canUpdate) { + return {type: 'cannot-update-sequence', reason: status.reason}; + } + + const effect = status.effects.find((e) => e.effectIndex === effectIndex); + if (!effect) { + return {type: 'cannot-update-effect', reason: 'not-found'}; + } + + if (!effect.canUpdate) { + return {type: 'cannot-update-effect', reason: effect.reason}; + } + + return {type: 'can-update-effect', props: effect.props}; +}; + +export const getCodeValuesCtx = ( + codeValues: CodeValues, + nodePath: SequencePropsSubscriptionKey, +) => { + const status = codeValues[makeSequencePropsSubscriptionKey(nodePath)]; + if (!status) { + return undefined; + } + + if (!status.canUpdate) { + return undefined; + } + + return status.props; +}; + +export type GetCodeValuesType = typeof getCodeValuesCtx; + +export const useMemoizedEffects = ({ + effects, + overrideId, +}: { + effects: readonly EffectDescriptor[]; + readonly overrideId: string | null; +}): EffectDefinitionAndStack[] => { const previousRef = useRef[] | null>(null); + const {codeValues} = useContext(VisualModeCodeValuesContext); + const {getEffectDragOverrides} = useContext(VisualModeDragOverridesContext); + + const {overrideIdToNodePathMappings} = useContext( + OverrideIdsToNodePathsGettersContext, + ); + const previous = previousRef.current; + + const nodePath = overrideId + ? (overrideIdToNodePathMappings[overrideId] ?? null) + : null; + + const resolved = effects.map((descriptor, index) => { + if (nodePath === null) { + return { + descriptor, + params: descriptor.params, + effectKey: descriptor.effectKey, + }; + } + + const effectStatus = getEffectCodeValuesCtx({ + codeValues, + nodePath, + effectIndex: index, + }); + const codeOverrides = + effectStatus.type === 'can-update-effect' + ? extractCodeOverrides(effectStatus.props) + : null; + const dragOverridesMap = getEffectDragOverrides(nodePath, index); + const dragOverrides = + Object.keys(dragOverridesMap).length === 0 ? null : dragOverridesMap; + + const {params, effectKey} = mergeOverrides({ + descriptor, + codeOverrides, + dragOverrides, + }); + + return {descriptor, params, effectKey}; + }); + const isSame = previous !== null && - previous.length === effects.length && - // Note: If p.stack changes, we don't update. - // We hope this is fine because we assume we cannot fast refresh and change the nodePath + previous.length === resolved.length && previous.every( (p, i) => - p.definition === effects[i].definition && - p.effectKey === effects[i].effectKey, + p.definition === resolved[i].descriptor.definition && + p.effectKey === resolved[i].effectKey, ); if (isSame) { return previous; } - const next: EffectDefinitionAndStack[] = effects.map((e) => ({ - definition: e.definition, - stack: e.stack, - effectKey: e.effectKey, - params: e.params, - memoized: true, - })); + const next: EffectDefinitionAndStack[] = resolved.map( + ({descriptor, params, effectKey}) => ({ + definition: descriptor.definition, + effectKey, + params, + memoized: true, + }), + ); previousRef.current = next; return next; }; diff --git a/packages/core/src/get-effective-visual-mode-value.ts b/packages/core/src/get-effective-visual-mode-value.ts index f8fbc9006b2..30c7b96d2b2 100644 --- a/packages/core/src/get-effective-visual-mode-value.ts +++ b/packages/core/src/get-effective-visual-mode-value.ts @@ -1,14 +1,12 @@ -import type {CanUpdateSequencePropStatus} from './use-schema'; +import type {CanUpdateSequencePropStatusTrue} from './use-schema'; export const getEffectiveVisualModeValue = ({ codeValue, - runtimeValue, dragOverrideValue, defaultValue, shouldResortToDefaultValueIfUndefined = false, }: { - codeValue: CanUpdateSequencePropStatus | null; - runtimeValue: unknown; + codeValue: CanUpdateSequencePropStatusTrue; dragOverrideValue: unknown; defaultValue: unknown; shouldResortToDefaultValueIfUndefined: boolean; @@ -17,14 +15,6 @@ export const getEffectiveVisualModeValue = ({ return dragOverrideValue; } - if (!codeValue) { - return runtimeValue; - } - - if (!codeValue.canUpdate) { - return runtimeValue; - } - if ( codeValue.codeValue === undefined && shouldResortToDefaultValueIfUndefined diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index c4cfab3653d..2df639ba16d 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -135,6 +135,7 @@ export type { EffectDefinitionAndStack, EffectDescriptor, EffectsProp, + EffectDefinition, } from './effects/index.js'; export type {SolidProps} from './effects/Solid.js'; export { diff --git a/packages/core/src/internals.ts b/packages/core/src/internals.ts index 90f79050913..8fe1be8e351 100644 --- a/packages/core/src/internals.ts +++ b/packages/core/src/internals.ts @@ -46,10 +46,14 @@ import { timeValueRef, } from './EditorProps.js'; import {createEffect} from './effects/create-effect.js'; -import {flattenEffects} from './effects/effect-internals.js'; import {runEffectChain} from './effects/run-effect-chain.js'; import {useEffectChainState} from './effects/use-effect-chain-state.js'; -import {useMemoizedEffects} from './effects/use-memoized-effects.js'; +import { + getCodeValuesCtx, + getEffectCodeValuesCtx, + useMemoizedEffectDefinitions, + useMemoizedEffects, +} from './effects/use-memoized-effects.js'; import { addSequenceStackTraces, getComponentsToAddStacksTo, @@ -99,10 +103,11 @@ import { resolveCompositionsRef, useResolvedVideoConfig, } from './ResolveCompositionConfig.js'; -import type { - SequenceFieldSchema, - SequenceSchema, - VisibleFieldSchema, +import { + hiddenField, + type SequenceFieldSchema, + type SequenceSchema, + type VisibleFieldSchema, } from './sequence-field-schema.js'; import {sequenceSchema, sequenceStyleSchema} from './sequence-field-schema.js'; import type { @@ -115,18 +120,23 @@ import {OverrideIdsToNodePathsGettersContext} from './sequence-node-path.js'; import type {ResolvedStackLocation} from './sequence-stack-traces.js'; import {SequenceStackTracesUpdateContext} from './sequence-stack-traces.js'; import {SequenceContext} from './SequenceContext.js'; -import type { - CanUpdateSequencePropsResponse, - CanUpdateSequencePropsResponseTrue, - CanUpdateSequencePropsResponseFalse, - SequenceNodePath, +import type {CannotUpdateSequenceReason} from './SequenceManager.js'; +import { + type CanUpdateEffectPropsResponse, + type CanUpdateEffectPropsResponseFalse, + type CanUpdateEffectPropsResponseTrue, + type CanUpdateSequencePropsResponse, + type CanUpdateSequencePropsResponseTrue, + type CanUpdateSequencePropsResponseFalse, + type SequenceNodePath, + type SequencePropsSubscriptionKey, + makeSequencePropsSubscriptionKey, } from './SequenceManager.js'; import { VisualModeCodeValuesContext, VisualModeDragOverridesContext, VisualModeSettersContext, SequenceManager, - SequenceVisibilityToggleContext, } from './SequenceManager.js'; import {setupEnvVariables} from './setup-env-variables.js'; import * as TimelinePosition from './timeline-position-state.js'; @@ -158,12 +168,20 @@ import { useBasicMediaInTimeline, useMediaInTimeline, } from './use-media-in-timeline.js'; -import type {GetCodeValues, GetDragOverrides} from './use-schema.js'; +import type { + CanUpdateSequencePropStatusFalse, + CanUpdateSequencePropStatusTrue, + GetCodeValues, + GetDragOverrides, + GetEffectCodeValues, + GetEffectDragOverrides, +} from './use-schema.js'; import { computeEffectiveSchemaValuesDotNotation, type CanUpdateSequencePropStatus, type CodeValues, type DragOverrides, + type EffectDragOverrides, } from './use-schema.js'; import {useUnsafeVideoConfig} from './use-unsafe-video-config.js'; import {useVideo} from './use-video.js'; @@ -231,7 +249,6 @@ export const Internals = { VisualModeSettersContext, SequenceManager, SequenceStackTracesUpdateContext, - SequenceVisibilityToggleContext, wrapInSchema, sequenceSchema, sequenceStyleSchema, @@ -327,12 +344,16 @@ export const Internals = { useEffectChainState, runEffectChain, useMemoizedEffects, + useMemoizedEffectDefinitions, createEffect, computeEffectiveSchemaValuesDotNotation, OverrideIdsToNodePathsGettersContext, OverrideIdsToNodePathsSettersContext, findPropsToDelete, - flattenEffects, + makeSequencePropsSubscriptionKey, + getCodeValuesCtx, + getEffectCodeValuesCtx, + hiddenField, } as const; export type { @@ -359,17 +380,27 @@ export type { CanUpdateSequencePropStatus, CodeValues, GetCodeValues, + GetEffectCodeValues, DragOverrides, + EffectDragOverrides, ScheduleAudioNodeResult, GetDragOverrides, + GetEffectDragOverrides, NonceHistory, OverrideIdsToNodePathsGettersContext, OverrideIdsToNodePathsSettersContext, SequenceNodePath, + SequencePropsSubscriptionKey, OverrideIdToNodePaths, OverrideToNodeSetters, OverrideToNodePathGetters, + CanUpdateEffectPropsResponse, + CanUpdateEffectPropsResponseTrue, + CanUpdateEffectPropsResponseFalse, CanUpdateSequencePropsResponse, CanUpdateSequencePropsResponseTrue, CanUpdateSequencePropsResponseFalse, + CanUpdateSequencePropStatusTrue, + CanUpdateSequencePropStatusFalse, + CannotUpdateSequenceReason, }; diff --git a/packages/core/src/no-react.ts b/packages/core/src/no-react.ts index 0b694538791..3e689fc84fb 100644 --- a/packages/core/src/no-react.ts +++ b/packages/core/src/no-react.ts @@ -4,15 +4,15 @@ export type { InlineAudioAsset, TRenderAsset, } from './CompositionManager'; -export {DownloadBehavior} from './download-behavior'; -export { - assertValidInterpolateEasingOption, +export type {DownloadBehavior} from './download-behavior'; +export {assertValidInterpolateEasingOption, interpolate} from './interpolate'; +export type { EasingFunction, ExtrapolateType, - interpolate, InterpolateOptions, } from './interpolate'; -export {random, RandomSeed} from './random.js'; +export {random} from './random.js'; +export type {RandomSeed} from './random.js'; export type {VideoConfig} from './video-config'; import { @@ -29,6 +29,7 @@ import { import {DATE_TOKEN, FILE_TOKEN} from './input-props-serialization.js'; import {colorNames, processColor} from './interpolate-colors'; import {proResProfileOptions} from './prores-profile'; +import {sequenceSchema} from './sequence-field-schema'; import {truthy} from './truthy'; import {ENABLE_V5_BREAKING_CHANGES} from './v5-flag'; import {validateFrame} from './validate-frame'; @@ -67,4 +68,5 @@ export const NoReactInternals = { validateCodec, proResProfileOptions, findPropsToDelete, + sequenceSchema, }; diff --git a/packages/core/src/sequence-field-schema.ts b/packages/core/src/sequence-field-schema.ts index fcfcca78254..4291399b493 100644 --- a/packages/core/src/sequence-field-schema.ts +++ b/packages/core/src/sequence-field-schema.ts @@ -31,6 +31,12 @@ export type TranslateFieldSchema = { description?: string; }; +export type ColorFieldSchema = { + type: 'color'; + default: string; + description?: string; +}; + export type EnumFieldSchema = { type: 'enum'; default: string; @@ -43,6 +49,7 @@ export type VisibleFieldSchema = | BooleanFieldSchema | RotationFieldSchema | TranslateFieldSchema + | ColorFieldSchema | EnumFieldSchema; export type SequenceFieldSchema = VisibleFieldSchema | HiddenFieldSchema; @@ -101,7 +108,14 @@ export const sequenceStyleSchema = { }, } as const satisfies SequenceSchema; +export const hiddenField: SequenceFieldSchema = { + type: 'boolean', + default: false, + description: 'Hidden', +}; + export const sequenceSchema = { + hidden: hiddenField, layout: { type: 'enum', default: 'absolute-fill', diff --git a/packages/core/src/sequence-node-path.tsx b/packages/core/src/sequence-node-path.tsx index a0a41ab08d8..1999d7a5120 100644 --- a/packages/core/src/sequence-node-path.tsx +++ b/packages/core/src/sequence-node-path.tsx @@ -1,7 +1,10 @@ import {createContext} from 'react'; -import type {SequenceNodePath} from './SequenceManager'; +import type {SequencePropsSubscriptionKey} from './SequenceManager'; -export type OverrideIdToNodePaths = Record; +export type OverrideIdToNodePaths = Record< + string, + SequencePropsSubscriptionKey +>; export type OverrideToNodePathGetters = { overrideIdToNodePathMappings: OverrideIdToNodePaths; @@ -10,7 +13,7 @@ export type OverrideToNodePathGetters = { export type OverrideToNodeSetters = { setOverrideIdToNodePath: ( overrideId: string, - nodePath: SequenceNodePath, + nodePath: SequencePropsSubscriptionKey, ) => void; }; diff --git a/packages/core/src/series/index.tsx b/packages/core/src/series/index.tsx index e4dd2625c8d..e66f92ced9e 100644 --- a/packages/core/src/series/index.tsx +++ b/packages/core/src/series/index.tsx @@ -18,7 +18,7 @@ type SeriesSequenceProps = PropsWithChildren< readonly durationInFrames: number; readonly offset?: number; readonly className?: string; - } & Pick & + } & Pick & LayoutAndStyle >; diff --git a/packages/core/src/test/effect-internals.test.ts b/packages/core/src/test/effect-internals.test.ts index 0f3b6f3cba8..c8c7236db40 100644 --- a/packages/core/src/test/effect-internals.test.ts +++ b/packages/core/src/test/effect-internals.test.ts @@ -1,5 +1,5 @@ import {expect, test} from 'bun:test'; -import {flattenEffects, groupByBackend} from '../effects/effect-internals.js'; +import {groupByBackend} from '../effects/effect-internals.js'; import type { Backend, EffectDefinition, @@ -27,7 +27,6 @@ const makeDesc = ( ): EffectDescriptor => ({ definition: makeDef(type, backend), params: {}, - stack: new Error().stack!, effectKey: type, memoized: false, }); @@ -41,29 +40,6 @@ const memoizeEffects = ( })); }; -test('flattenEffects unwraps nested-array descriptors', () => { - const a = makeDesc('a', '2d'); - const b1 = makeDesc('b1', '2d'); - const b2 = makeDesc('b2', '2d'); - const c = makeDesc('c', 'webgl2'); - - const result = memoizeEffects(flattenEffects([a, [b1, b2], c])); - expect(result.map((d) => d.definition.type)).toEqual(['a', 'b1', 'b2', 'c']); -}); - -test('flattenEffects handles empty input', () => { - expect(flattenEffects([])).toEqual([]); -}); - -test('flattenEffects handles only-nested input', () => { - const a = makeDesc('a', '2d'); - const b = makeDesc('b', '2d'); - expect(flattenEffects([[a, b]]).map((d) => d.definition.type)).toEqual([ - 'a', - 'b', - ]); -}); - test('groupByBackend collapses adjacent same-backend effects', () => { const effects = [ makeDesc('a', '2d'), diff --git a/packages/core/src/test/find-props-to-delete.test.ts b/packages/core/src/test/find-props-to-delete.test.ts index 1f5239d0fe7..892d4876858 100644 --- a/packages/core/src/test/find-props-to-delete.test.ts +++ b/packages/core/src/test/find-props-to-delete.test.ts @@ -1,24 +1,25 @@ import {expect, test} from 'bun:test'; import {Internals} from '../internals'; +import {NoReactInternals} from '../no-react'; test('find right values to delete when upgrading a discriminated union', () => { expect(() => Internals.findPropsToDelete({ - schema: Internals.sequenceSchema, + schema: NoReactInternals.sequenceSchema, key: 'unknown', value: 'none', }), ).toThrow('Key "unknown" not found in schema'); expect(() => Internals.findPropsToDelete({ - schema: Internals.sequenceSchema, + schema: NoReactInternals.sequenceSchema, key: 'layout', value: 123, }), ).toThrow('Value must be a string, but is 123'); expect(() => Internals.findPropsToDelete({ - schema: Internals.sequenceSchema, + schema: NoReactInternals.sequenceSchema, key: 'layout', value: 'unknown', }), @@ -28,7 +29,7 @@ test('find right values to delete when upgrading a discriminated union', () => { expect( Internals.findPropsToDelete({ - schema: Internals.sequenceSchema, + schema: NoReactInternals.sequenceSchema, key: 'layout', value: 'none', }), @@ -45,7 +46,7 @@ test('find right values to delete when upgrading a discriminated union', () => { expect( Internals.findPropsToDelete({ - schema: Internals.sequenceSchema, + schema: NoReactInternals.sequenceSchema, key: 'layout', value: 'absolute-fill', }), diff --git a/packages/core/src/test/sequence-register-once.test.tsx b/packages/core/src/test/sequence-register-once.test.tsx index 6aa26504e7b..96ecd5856e3 100644 --- a/packages/core/src/test/sequence-register-once.test.tsx +++ b/packages/core/src/test/sequence-register-once.test.tsx @@ -39,9 +39,7 @@ test('Sequence calls registerSequence exactly once on mount', () => { const visualCodeValues = useMemo( () => ({ - getCodeValues: () => { - throw new Error('VisualModeCodeValuesContext not initialized'); - }, + codeValues: {}, }), [], ); @@ -51,6 +49,9 @@ test('Sequence calls registerSequence exactly once on mount', () => { getDragOverrides: () => { throw new Error('VisualModeDragOverridesContext not initialized'); }, + getEffectDragOverrides: () => { + throw new Error('VisualModeDragOverridesContext not initialized'); + }, }), [], ); @@ -59,6 +60,8 @@ test('Sequence calls registerSequence exactly once on mount', () => { () => ({ setDragOverrides: () => undefined, clearDragOverrides: () => undefined, + setEffectDragOverrides: () => undefined, + clearEffectDragOverrides: () => undefined, setCodeValues: () => undefined, }), [], diff --git a/packages/core/src/test/wrap-in-schema-helpers.test.ts b/packages/core/src/test/wrap-in-schema-helpers.test.ts index 8ebd3cf7977..78c419e7b2b 100644 --- a/packages/core/src/test/wrap-in-schema-helpers.test.ts +++ b/packages/core/src/test/wrap-in-schema-helpers.test.ts @@ -12,6 +12,7 @@ test('getFlatSchema(sequenceSchema) exposes every variant key', () => { const flat = getFlatSchemaWithAllKeys(sequenceSchema); expect(Object.keys(flat).sort()).toEqual( [ + 'hidden', 'layout', 'style.translate', 'style.scale', @@ -38,12 +39,14 @@ test('readValuesFromProps reads dot-notation keys via getNestedValue', () => { expect(values['style.rotate']).toBeUndefined(); }); -test('selectActiveKeys returns only the layout key when layout=none', () => { +test('selectActiveKeys returns only the hidden + layout keys when layout=none', () => { const values = { layout: 'none', 'style.scale': 2, }; - expect(selectActiveKeys(sequenceSchema, values)).toEqual(['layout']); + expect(selectActiveKeys(sequenceSchema, values).sort()).toEqual( + ['hidden', 'layout'].sort(), + ); }); test('selectActiveKeys exposes style.* keys when layout=absolute-fill', () => { @@ -53,6 +56,7 @@ test('selectActiveKeys exposes style.* keys when layout=absolute-fill', () => { }; expect(selectActiveKeys(sequenceSchema, values).sort()).toEqual( [ + 'hidden', 'layout', 'style.translate', 'style.scale', @@ -67,7 +71,7 @@ test('selectActiveKeys exposes style.* keys when layout=absolute-fill', () => { 'style.scale': 2, }; expect(selectActiveKeys(sequenceSchema, values2).sort()).toEqual( - ['layout'].sort(), + ['hidden', 'layout'].sort(), ); }); @@ -95,7 +99,7 @@ test('end-to-end: layout=none drops style.scale from active props', () => { schemaKeys: activeKeys, propsToDelete: new Set(), }); - expect(activeKeys).toEqual(['layout']); + expect(activeKeys.sort()).toEqual(['hidden', 'layout'].sort()); // style.scale was not in activeKeys → original style preserved, not overwritten expect((merged.style as {scale: number}).scale).toBe(2); }); diff --git a/packages/core/src/use-schema.ts b/packages/core/src/use-schema.ts index 797bb2f74d9..56c1d0b2fc8 100644 --- a/packages/core/src/use-schema.ts +++ b/packages/core/src/use-schema.ts @@ -6,24 +6,45 @@ import type { } from './sequence-field-schema.js'; import type { CanUpdateSequencePropsResponse, - SequenceNodePath, + SequencePropsSubscriptionKey, } from './SequenceManager.js'; +export type CanUpdateSequencePropStatusTrue = { + canUpdate: true; + codeValue: unknown; +}; + +export type CanUpdateSequencePropStatusFalse = { + canUpdate: false; + reason: 'computed'; +}; + export type CanUpdateSequencePropStatus = - | {canUpdate: true; codeValue: unknown} - | {canUpdate: false; reason: 'computed'}; + | CanUpdateSequencePropStatusTrue + | CanUpdateSequencePropStatusFalse; export type DragOverrides = Record>; +export type EffectDragOverrides = Record>; export type CodeValues = Record; export type GetCodeValues = ( - nodePath: SequenceNodePath, + nodePath: SequencePropsSubscriptionKey, +) => Record | undefined; + +export type GetEffectCodeValues = ( + nodePath: SequencePropsSubscriptionKey, + effectIndex: number, ) => Record | undefined; export type GetDragOverrides = ( - nodePath: SequenceNodePath, + nodePath: SequencePropsSubscriptionKey, ) => DragOverrides[string]; +export type GetEffectDragOverrides = ( + nodePath: SequencePropsSubscriptionKey, + effectIndex: number, +) => Record; + const findFieldInSchema = ( schema: SequenceSchema, key: string, @@ -69,13 +90,15 @@ export const computeEffectiveSchemaValuesDotNotation = ({ continue; } - const value = getEffectiveVisualModeValue({ - codeValue: codeValueStatus, - runtimeValue: currentValue[key], - dragOverrideValue: overrideValues[key], - defaultValue: field?.default, - shouldResortToDefaultValueIfUndefined: false, - }); + const value = + codeValueStatus === null || codeValueStatus.canUpdate === false + ? currentValue[key] + : getEffectiveVisualModeValue({ + codeValue: codeValueStatus, + dragOverrideValue: overrideValues[key], + defaultValue: field?.default, + shouldResortToDefaultValueIfUndefined: false, + }); if (value === undefined) { propsToDelete.add(key); } diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index 6788ce61315..44d1671c75a 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -5,4 +5,4 @@ * @see [Documentation](https://remotion.dev/docs/version) * @returns {string} The current version of the remotion package */ -export const VERSION = '4.0.461'; +export const VERSION = '4.0.462'; diff --git a/packages/core/src/video/VideoForPreview.tsx b/packages/core/src/video/VideoForPreview.tsx index db80e5cf785..9fe57550843 100644 --- a/packages/core/src/video/VideoForPreview.tsx +++ b/packages/core/src/video/VideoForPreview.tsx @@ -16,7 +16,6 @@ import {useLogLevel, useMountTime} from '../log-level-context.js'; import {playbackLogging} from '../playback-logging.js'; import {usePreload} from '../prefetch.js'; import {SequenceContext} from '../SequenceContext.js'; -import {SequenceVisibilityToggleContext} from '../SequenceManager.js'; import {useVolume} from '../use-amplification.js'; import {useMediaInTimeline} from '../use-media-in-timeline.js'; import {useMediaPlayback} from '../use-media-playback.js'; @@ -133,12 +132,10 @@ const VideoForDevelopmentRefForwardingFunction: React.ForwardRefRenderFunction< ); const {fps, durationInFrames} = useVideoConfig(); const parentSequence = useContext(SequenceContext); - const {hidden} = useContext(SequenceVisibilityToggleContext); const logLevel = useLogLevel(); const mountTime = useMountTime(); const [timelineId] = useState(() => String(Math.random())); - const isSequenceHidden = hidden[timelineId] ?? false; if (typeof acceptableTimeShift !== 'undefined') { throw new Error( @@ -333,9 +330,8 @@ const VideoForDevelopmentRefForwardingFunction: React.ForwardRefRenderFunction< const actualStyle: React.CSSProperties = useMemo(() => { return { ...style, - opacity: isSequenceHidden ? 0 : (style?.opacity ?? 1), }; - }, [isSequenceHidden, style]); + }, [style]); const crossOriginValue = getCrossOriginValue({ crossOrigin, @@ -346,9 +342,7 @@ const VideoForDevelopmentRefForwardingFunction: React.ForwardRefRenderFunction< return (

{ Html5Audio (no visual)
+ {' '} + + + + + + diff --git a/packages/fonts/package.json b/packages/fonts/package.json index 45a8071288c..196c6e4605b 100644 --- a/packages/fonts/package.json +++ b/packages/fonts/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/fonts" }, "name": "@remotion/fonts", - "version": "4.0.461", + "version": "4.0.462", "description": "Helpers for loading local fonts into Remotion", "main": "dist/cjs/index.js", "types": "dist/cjs/index.d.ts", diff --git a/packages/gif/package.json b/packages/gif/package.json index d39b15c1ea0..170d9170ce4 100644 --- a/packages/gif/package.json +++ b/packages/gif/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/gif" }, "name": "@remotion/gif", - "version": "4.0.461", + "version": "4.0.462", "description": "Embed GIFs in a Remotion video", "bugs": { "url": "https://github.com/remotion-dev/remotion/issues" @@ -32,7 +32,7 @@ "remotion": "workspace:*" }, "devDependencies": { - "esbuild": "0.25.0", + "esbuild": "0.28.0", "react": "catalog:", "react-dom": "catalog:", "webpack": "5.105.0", diff --git a/packages/gif/src/Gif.tsx b/packages/gif/src/Gif.tsx index 976bea117e6..14eea5cb199 100644 --- a/packages/gif/src/Gif.tsx +++ b/packages/gif/src/Gif.tsx @@ -34,6 +34,7 @@ const gifSchema = { description: 'Playback Rate', }, ...Internals.sequenceStyleSchema, + hidden: Internals.hiddenField, } as const satisfies SequenceSchema; const GifInner = ({ diff --git a/packages/google-fonts/package.json b/packages/google-fonts/package.json index 815f7446d9d..e6f13cf57ad 100644 --- a/packages/google-fonts/package.json +++ b/packages/google-fonts/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/google-fonts" }, "name": "@remotion/google-fonts", - "version": "4.0.461", + "version": "4.0.462", "description": "Use Google Fonts in Remotion", "main": "dist/cjs/index.js", "module": "dist/esm/index.mjs", @@ -1539,9 +1539,6 @@ "FingerPaint": [ "dist/cjs/FingerPaint.d.ts" ], - "Finlandica": [ - "dist/cjs/Finlandica.d.ts" - ], "FinlandicaHeadline": [ "dist/cjs/FinlandicaHeadline.d.ts" ], @@ -4554,9 +4551,6 @@ "SairaStencil": [ "dist/cjs/SairaStencil.d.ts" ], - "SairaStencilOne": [ - "dist/cjs/SairaStencilOne.d.ts" - ], "Salsa": [ "dist/cjs/Salsa.d.ts" ], diff --git a/packages/google-fonts/scripts/google-fonts.ts b/packages/google-fonts/scripts/google-fonts.ts index 134a19ba4dd..7f5d58981b0 100644 --- a/packages/google-fonts/scripts/google-fonts.ts +++ b/packages/google-fonts/scripts/google-fonts.ts @@ -11720,43 +11720,6 @@ export const googleFonts: Font[] = [ kind: 'webfonts#webfont', menu: 'https://fonts.gstatic.com/s/fingerpaint/v21/0QInMXVJ-o-oRn_7dron8YW-8pzT.woff2', }, - { - family: 'Finlandica', - variants: [ - 'regular', - '500', - '600', - '700', - 'italic', - '500italic', - '600italic', - '700italic', - ], - subsets: ['cyrillic', 'cyrillic-ext', 'latin', 'latin-ext'], - version: 'v10', - lastModified: '2025-09-08', - files: { - '500': - 'https://fonts.gstatic.com/s/finlandica/v10/-nFsOGk-8vAc7lEtg0aSyZCty9GSsPBE19AJrEj09i5ss3a3.woff2', - '600': - 'https://fonts.gstatic.com/s/finlandica/v10/-nFsOGk-8vAc7lEtg0aSyZCty9GSsPBE19Dlq0j09i5ss3a3.woff2', - '700': - 'https://fonts.gstatic.com/s/finlandica/v10/-nFsOGk-8vAc7lEtg0aSyZCty9GSsPBE19Dcq0j09i5ss3a3.woff2', - regular: - 'https://fonts.gstatic.com/s/finlandica/v10/-nFsOGk-8vAc7lEtg0aSyZCty9GSsPBE19A7rEj09i5ss3a3.woff2', - italic: - 'https://fonts.gstatic.com/s/finlandica/v10/-nFuOGk-8vAc7lEtg0aS45mfNAn722rq0MXz76Cy_C9Otma3uNQ.woff2', - '500italic': - 'https://fonts.gstatic.com/s/finlandica/v10/-nFuOGk-8vAc7lEtg0aS45mfNAn722rq0MXz75Ky_C9Otma3uNQ.woff2', - '600italic': - 'https://fonts.gstatic.com/s/finlandica/v10/-nFuOGk-8vAc7lEtg0aS45mfNAn722rq0MXz7361_C9Otma3uNQ.woff2', - '700italic': - 'https://fonts.gstatic.com/s/finlandica/v10/-nFuOGk-8vAc7lEtg0aS45mfNAn722rq0MXz70e1_C9Otma3uNQ.woff2', - }, - category: 'sans-serif', - kind: 'webfonts#webfont', - menu: 'https://fonts.gstatic.com/s/finlandica/v10/-nFsOGk-8vAc7lEtg0aSyZCty9GSsPBE19A7rHjw_C8.woff2', - }, { family: 'Finlandica Headline', variants: [ @@ -21965,105 +21928,105 @@ export const googleFonts: Font[] = [ family: 'Material Symbols', variants: ['100', '200', '300', 'regular', '500', '600', '700'], subsets: ['latin'], - version: 'v65', - lastModified: '2026-05-13', + version: 'v66', + lastModified: '2026-05-14', files: { '100': - 'https://fonts.gstatic.com/s/materialsymbols/v65/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVXEHuQLn3PT2vOA.woff2', + 'https://fonts.gstatic.com/s/materialsymbols/v66/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVXEHuQLn3PT2vOA.woff2', '200': - 'https://fonts.gstatic.com/s/materialsymbols/v65/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNV3EDuQLn3PT2vOA.woff2', + 'https://fonts.gstatic.com/s/materialsymbols/v66/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNV3EDuQLn3PT2vOA.woff2', '300': - 'https://fonts.gstatic.com/s/materialsymbols/v65/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVAkDuQLn3PT2vOA.woff2', + 'https://fonts.gstatic.com/s/materialsymbols/v66/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVAkDuQLn3PT2vOA.woff2', '500': - 'https://fonts.gstatic.com/s/materialsymbols/v65/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVbkDuQLn3PT2vOA.woff2', + 'https://fonts.gstatic.com/s/materialsymbols/v66/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVbkDuQLn3PT2vOA.woff2', '600': - 'https://fonts.gstatic.com/s/materialsymbols/v65/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVgkfuQLn3PT2vOA.woff2', + 'https://fonts.gstatic.com/s/materialsymbols/v66/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVgkfuQLn3PT2vOA.woff2', '700': - 'https://fonts.gstatic.com/s/materialsymbols/v65/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVu0fuQLn3PT2vOA.woff2', + 'https://fonts.gstatic.com/s/materialsymbols/v66/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVu0fuQLn3PT2vOA.woff2', regular: - 'https://fonts.gstatic.com/s/materialsymbols/v65/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVXEDuQLn3PT2vOA.woff2', + 'https://fonts.gstatic.com/s/materialsymbols/v66/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVXEDuQLn3PT2vOA.woff2', }, category: 'monospace', kind: 'webfonts#webfont', - menu: 'https://fonts.gstatic.com/s/materialsymbols/v65/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVXEDeRLP2.woff2', + menu: 'https://fonts.gstatic.com/s/materialsymbols/v66/d6kSkb-sS9m3-i1LgQNcsFOOuLQXvG559b5GLMxCWRtThFK5gn7xw7XblIl2peTfMb7ONaa2_wzcUHR1Ukiw2RYw2vadH3BFk0G4701x-cU0BaNVXEDeRLP2.woff2', }, { family: 'Material Symbols Outlined', variants: ['100', '200', '300', 'regular', '500', '600', '700'], subsets: ['latin'], - version: 'v337', - lastModified: '2026-05-13', + version: 'v338', + lastModified: '2026-05-14', files: { '100': - 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v337/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHeejbd5zrTgt.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v338/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHeejbd5zrTgt.woff2', '200': - 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v337/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDAvHOejbd5zrTgt.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v338/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDAvHOejbd5zrTgt.woff2', '300': - 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v337/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDDxHOejbd5zrTgt.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v338/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDDxHOejbd5zrTgt.woff2', '500': - 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v337/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCdHOejbd5zrTgt.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v338/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCdHOejbd5zrTgt.woff2', '600': - 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v337/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDBxG-ejbd5zrTgt.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v338/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDBxG-ejbd5zrTgt.woff2', '700': - 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v337/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDBIG-ejbd5zrTgt.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v338/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDBIG-ejbd5zrTgt.woff2', regular: - 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v337/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrTgt.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v338/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrTgt.woff2', }, category: 'monospace', kind: 'webfonts#webfont', - menu: 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v337/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHNenZ98.woff2', + menu: 'https://fonts.gstatic.com/s/materialsymbolsoutlined/v338/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHNenZ98.woff2', }, { family: 'Material Symbols Rounded', variants: ['100', '200', '300', 'regular', '500', '600', '700'], subsets: ['latin'], - version: 'v339', - lastModified: '2026-05-13', + version: 'v340', + lastModified: '2026-05-14', files: { '100': - 'https://fonts.gstatic.com/s/materialsymbolsrounded/v339/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rIekXxeJKJBjAa8.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsrounded/v340/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rIekXxeJKJBjAa8.woff2', '200': - 'https://fonts.gstatic.com/s/materialsymbolsrounded/v339/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rAelXxeJKJBjAa8.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsrounded/v340/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rAelXxeJKJBjAa8.woff2', '300': - 'https://fonts.gstatic.com/s/materialsymbolsrounded/v339/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rNmlXxeJKJBjAa8.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsrounded/v340/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rNmlXxeJKJBjAa8.woff2', '500': - 'https://fonts.gstatic.com/s/materialsymbolsrounded/v339/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rLWlXxeJKJBjAa8.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsrounded/v340/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rLWlXxeJKJBjAa8.woff2', '600': - 'https://fonts.gstatic.com/s/materialsymbolsrounded/v339/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rFmiXxeJKJBjAa8.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsrounded/v340/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rFmiXxeJKJBjAa8.woff2', '700': - 'https://fonts.gstatic.com/s/materialsymbolsrounded/v339/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rGCiXxeJKJBjAa8.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsrounded/v340/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rGCiXxeJKJBjAa8.woff2', regular: - 'https://fonts.gstatic.com/s/materialsymbolsrounded/v339/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rIelXxeJKJBjAa8.woff2', + 'https://fonts.gstatic.com/s/materialsymbolsrounded/v340/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rIelXxeJKJBjAa8.woff2', }, category: 'monospace', kind: 'webfonts#webfont', - menu: 'https://fonts.gstatic.com/s/materialsymbolsrounded/v339/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rIelbxODKQ.woff2', + menu: 'https://fonts.gstatic.com/s/materialsymbolsrounded/v340/syl0-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvDmUSVOK7BDB_Qb9vUSzq3wzLK-P0J-V_Zs-QtQth3-jOcbTCVpeRL2w5rwZu2rIelbxODKQ.woff2', }, { family: 'Material Symbols Sharp', variants: ['100', '200', '300', 'regular', '500', '600', '700'], subsets: ['latin'], - version: 'v335', - lastModified: '2026-05-13', + version: 'v336', + lastModified: '2026-05-14', files: { '100': - 'https://fonts.gstatic.com/s/materialsymbolssharp/v335/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxOLozCLJ1H7-knk.woff2', + 'https://fonts.gstatic.com/s/materialsymbolssharp/v336/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxOLozCLJ1H7-knk.woff2', '200': - 'https://fonts.gstatic.com/s/materialsymbolssharp/v335/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxMLojCLJ1H7-knk.woff2', + 'https://fonts.gstatic.com/s/materialsymbolssharp/v336/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxMLojCLJ1H7-knk.woff2', '300': - 'https://fonts.gstatic.com/s/materialsymbolssharp/v335/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxPVojCLJ1H7-knk.woff2', + 'https://fonts.gstatic.com/s/materialsymbolssharp/v336/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxPVojCLJ1H7-knk.woff2', '500': - 'https://fonts.gstatic.com/s/materialsymbolssharp/v335/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxO5ojCLJ1H7-knk.woff2', + 'https://fonts.gstatic.com/s/materialsymbolssharp/v336/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxO5ojCLJ1H7-knk.woff2', '600': - 'https://fonts.gstatic.com/s/materialsymbolssharp/v335/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxNVpTCLJ1H7-knk.woff2', + 'https://fonts.gstatic.com/s/materialsymbolssharp/v336/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxNVpTCLJ1H7-knk.woff2', '700': - 'https://fonts.gstatic.com/s/materialsymbolssharp/v335/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxNspTCLJ1H7-knk.woff2', + 'https://fonts.gstatic.com/s/materialsymbolssharp/v336/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxNspTCLJ1H7-knk.woff2', regular: - 'https://fonts.gstatic.com/s/materialsymbolssharp/v335/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxOLojCLJ1H7-knk.woff2', + 'https://fonts.gstatic.com/s/materialsymbolssharp/v336/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxOLojCLJ1H7-knk.woff2', }, category: 'monospace', kind: 'webfonts#webfont', - menu: 'https://fonts.gstatic.com/s/materialsymbolssharp/v335/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxOLogCPLVA.woff2', + menu: 'https://fonts.gstatic.com/s/materialsymbolssharp/v336/gNNBW2J8Roq16WD5tFNRaeLQk6-SHQ_R00k4c2_whPnoY9ruReaU4bHmz74m0ZkGH-VBYe1x0TV6x4yFH8F-H5OdzEL3sVTgJtfbYxOLogCPLVA.woff2', }, { family: 'Maven Pro', @@ -37395,20 +37358,6 @@ export const googleFonts: Font[] = [ kind: 'webfonts#webfont', menu: 'https://fonts.gstatic.com/s/sairastencil/v2/8AtJGsqgM5eNT0-b9cD0X9C_sxTQ79q9upASpLCMHu5jNWGXvaZKLoB0PzmYBkpB.woff2', }, - { - family: 'Saira Stencil One', - variants: ['regular'], - subsets: ['latin', 'latin-ext', 'vietnamese'], - version: 'v18', - lastModified: '2025-09-10', - files: { - regular: - 'https://fonts.gstatic.com/s/sairastencilone/v18/SLXSc03I6HkvZGJ1GvvipLoYSTEL9AsJawif2YQ2.woff2', - }, - category: 'display', - kind: 'webfonts#webfont', - menu: 'https://fonts.gstatic.com/s/sairastencilone/v18/SLXSc03I6HkvZGJ1GvvipLoYSTEL9DsNYQk.woff2', - }, { family: 'Salsa', variants: ['regular'], diff --git a/packages/google-fonts/scripts/incompatible-fonts.ts b/packages/google-fonts/scripts/incompatible-fonts.ts index 840292f7b28..321a98a237e 100644 --- a/packages/google-fonts/scripts/incompatible-fonts.ts +++ b/packages/google-fonts/scripts/incompatible-fonts.ts @@ -1,124 +1,124 @@ export const incompatibleFonts = [ "Allkin", "Chiron GoRound TC", - "Chiron Sung HK", "Chiron Hei HK", + "Chiron Sung HK", "Libertinus Math", "Linefont", + "Material Icons Outlined", "Material Icons", "Material Icons Round", "Material Icons Sharp", - "Material Icons Outlined", "Material Icons Two Tone", "Material Symbols", "Material Symbols Outlined", - "Material Symbols Sharp", "Material Symbols Rounded", + "Material Symbols Sharp", "Noto Sans Math", - "Playwrite AR Guides", - "Playwrite AT", "Playwrite AR", + "Playwrite AT", + "Playwrite AR Guides", "Playwrite AU NSW", - "Playwrite AU QLD Guides", - "Playwrite AT Guides", "Playwrite AU QLD", "Playwrite AU NSW Guides", - "Playwrite AU SA Guides", + "Playwrite AU QLD Guides", "Playwrite AU SA", "Playwrite AU TAS", - "Playwrite AU VIC Guides", - "Playwrite AU VIC", + "Playwrite AU SA Guides", "Playwrite AU TAS Guides", - "Playwrite BE VLG Guides", + "Playwrite AU VIC", + "Playwrite AU VIC Guides", "Playwrite BE VLG", - "Playwrite BE WAL Guides", "Playwrite BE WAL", + "Playwrite BE VLG Guides", + "Playwrite BE WAL Guides", "Playwrite BR", "Playwrite BR Guides", - "Playwrite CA Guides", "Playwrite CA", + "Playwrite CA Guides", "Playwrite CL", - "Playwrite CL Guides", - "Playwrite CU", - "Playwrite CO", "Playwrite CO Guides", + "Playwrite CU", "Playwrite CU Guides", "Playwrite CZ", "Playwrite CZ Guides", - "Playwrite DE SAS", "Playwrite DE Grund", "Playwrite DE Grund Guides", - "Playwrite DE LA Guides", "Playwrite DE LA", + "Playwrite DE LA Guides", + "Playwrite DE SAS", "Playwrite DE SAS Guides", - "Playwrite DE VA", "Playwrite DE VA Guides", "Playwrite DK Loopet", - "Playwrite DK Uloopet", "Playwrite DK Loopet Guides", "Playwrite DK Uloopet Guides", + "Playwrite DK Uloopet", "Playwrite ES", "Playwrite ES Deco", - "Playwrite ES Guides", "Playwrite ES Deco Guides", - "Playwrite FR Trad Guides", - "Playwrite FR Moderne", + "Playwrite ES Guides", "Playwrite FR Trad", + "Playwrite FR Moderne", "Playwrite FR Moderne Guides", + "Playwrite FR Trad Guides", "Playwrite GB J", + "Playwrite GB S Guides", "Playwrite GB S", + "Playwrite GB J Guides", "Playwrite HR", - "Playwrite GB S Guides", - "Playwrite HR Lijeva", "Playwrite HR Guides", "Playwrite HR Lijeva Guides", + "Playwrite HU Guides", + "Playwrite ID", + "Playwrite AT Guides", "Playwrite HU", - "Playwrite GB J Guides", - "Playwrite IE Guides", + "Playwrite HR Lijeva", "Playwrite IE", "Playwrite ID Guides", - "Playwrite HU Guides", "Playwrite IN", - "Playwrite ID", + "Playwrite IE Guides", "Playwrite IN Guides", "Playwrite IS", - "Playwrite IT Trad Guides", - "Playwrite IT Moderna Guides", - "Playwrite IT Moderna", "Playwrite IS Guides", + "Playwrite IT Moderna", + "Playwrite IT Moderna Guides", "Playwrite IT Trad", "Playwrite MX", "Playwrite MX Guides", "Playwrite NG Modern", - "Playwrite NL Guides", + "Playwrite IT Trad Guides", "Playwrite NG Modern Guides", + "Playwrite NL", + "Playwrite NL Guides", "Playwrite NO", - "Playwrite NZ", "Playwrite NO Guides", - "Playwrite NZ Basic", - "Playwrite NL", + "Playwrite NZ", "Playwrite NZ Basic Guides", - "Playwrite NZ Guides", + "Playwrite NZ Basic", "Playwrite PE", + "Playwrite NZ Guides", + "Playwrite PL Guides", "Playwrite PE Guides", - "Playwrite PT Guides", "Playwrite PL", + "Playwrite PT Guides", "Playwrite PT", - "Playwrite PL Guides", + "Playwrite SK", "Playwrite RO", "Playwrite RO Guides", "Playwrite SK Guides", - "Playwrite SK", "Playwrite TZ", - "Playwrite TZ Guides", "Playwrite US Modern Guides", + "Playwrite TZ Guides", + "Playwrite CO", "Playwrite US Modern", + "Playwrite CL Guides", + "Playwrite DE VA", "Playwrite US Trad", "Playwrite US Trad Guides", "Playwrite VN", - "Playwrite VN Guides", - "Playwrite ZA", "Playwrite ZA Guides", + "Playwrite ZA", + "Playwrite VN Guides", "STIX Two Math", "Wavefont" ]; \ No newline at end of file diff --git a/packages/google-fonts/src/index.ts b/packages/google-fonts/src/index.ts index 9a8e4400880..f77da66fd2e 100644 --- a/packages/google-fonts/src/index.ts +++ b/packages/google-fonts/src/index.ts @@ -2561,11 +2561,6 @@ export const getAvailableFonts = () => [ importName: 'FingerPaint', load: () => import('./FingerPaint') as Promise, }, - { - fontFamily: 'Finlandica', - importName: 'Finlandica', - load: () => import('./Finlandica') as Promise, - }, { fontFamily: 'Finlandica Headline', importName: 'FinlandicaHeadline', @@ -7587,11 +7582,6 @@ export const getAvailableFonts = () => [ importName: 'SairaStencil', load: () => import('./SairaStencil') as Promise, }, - { - fontFamily: 'Saira Stencil One', - importName: 'SairaStencilOne', - load: () => import('./SairaStencilOne') as Promise, - }, { fontFamily: 'Salsa', importName: 'Salsa', diff --git a/packages/install-whisper-cpp/package.json b/packages/install-whisper-cpp/package.json index 2848b1ec432..90b514f44cd 100644 --- a/packages/install-whisper-cpp/package.json +++ b/packages/install-whisper-cpp/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/install-whisper-cpp" }, "name": "@remotion/install-whisper-cpp", - "version": "4.0.461", + "version": "4.0.462", "description": "Helpers for installing and using Whisper.cpp", "main": "dist/index.js", "bugs": { diff --git a/packages/it-tests/package.json b/packages/it-tests/package.json index f5625f5d36c..58c25e40b5c 100644 --- a/packages/it-tests/package.json +++ b/packages/it-tests/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/it-tests" }, "name": "@remotion/it-tests", - "version": "4.0.461", + "version": "4.0.462", "license": "SEE LICENSE IN LICENSE.md", "scripts": { "test": " node --test src/node-version/media-parser.mjs && bun test src/rendering --run --timeout 60000", diff --git a/packages/lambda-client/package.json b/packages/lambda-client/package.json index 5f29029c095..976d1496208 100644 --- a/packages/lambda-client/package.json +++ b/packages/lambda-client/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/lambda-client" }, "name": "@remotion/lambda-client", - "version": "4.0.461", + "version": "4.0.462", "main": "dist/cjs/index.js", "scripts": { "formatting": "oxfmt src --check", diff --git a/packages/lambda-go-example/package.json b/packages/lambda-go-example/package.json index c442e1e837a..81c96f70337 100644 --- a/packages/lambda-go-example/package.json +++ b/packages/lambda-go-example/package.json @@ -4,6 +4,6 @@ }, "name": "@remotion/lambda-go-example", "private": true, - "version": "4.0.461", + "version": "4.0.462", "scripts": {} } diff --git a/packages/lambda-go/package.json b/packages/lambda-go/package.json index 8b5177e30db..65df0bb6c7c 100644 --- a/packages/lambda-go/package.json +++ b/packages/lambda-go/package.json @@ -4,7 +4,7 @@ }, "name": "@remotion/lambda-go", "private": true, - "version": "4.0.461", + "version": "4.0.462", "scripts": { "lint": "node build.mjs", "publishprivate": "node publish.mjs" diff --git a/packages/lambda-go/version.go b/packages/lambda-go/version.go index 6667e571ef6..856ef6129a8 100644 --- a/packages/lambda-go/version.go +++ b/packages/lambda-go/version.go @@ -1,3 +1,3 @@ package lambda_go_sdk; -const VERSION = "4.0.461" \ No newline at end of file +const VERSION = "4.0.462" \ No newline at end of file diff --git a/packages/lambda-php-example/composer.json b/packages/lambda-php-example/composer.json index 6121fd3f8b8..5ebd8859921 100644 --- a/packages/lambda-php-example/composer.json +++ b/packages/lambda-php-example/composer.json @@ -19,6 +19,6 @@ ], "require": { "vlucas/phpdotenv": "^5.5", - "remotion/lambda": "4.0.461" + "remotion/lambda": "4.0.462" } } diff --git a/packages/lambda-php/composer.json b/packages/lambda-php/composer.json index 7b04ad43cc6..862be01e256 100644 --- a/packages/lambda-php/composer.json +++ b/packages/lambda-php/composer.json @@ -1,7 +1,7 @@ { "name": "remotion/lambda", "type": "library", - "version": "4.0.461", + "version": "4.0.462", "description": "A PHP library for working with Remotion Lambda", "license": "proprietary", "autoload": { diff --git a/packages/lambda-php/composer.lock b/packages/lambda-php/composer.lock index 9e797a30646..f9fdfd02a2e 100644 --- a/packages/lambda-php/composer.lock +++ b/packages/lambda-php/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d5a1bdde9c359d88e07bc454a1e80059", + "content-hash": "627cde51adfbb8a3d819c213b814107b", "packages": [ { "name": "aws/aws-crt-php", diff --git a/packages/lambda-php/package.json b/packages/lambda-php/package.json index d0a4343dc4e..fc59e6974db 100644 --- a/packages/lambda-php/package.json +++ b/packages/lambda-php/package.json @@ -4,7 +4,7 @@ }, "name": "@remotion/lambda-php", "private": true, - "version": "4.0.461", + "version": "4.0.462", "scripts": { "lint": "node build.mjs", "publishprivate": "node publish.mjs" diff --git a/packages/lambda-php/src/Semantic.php b/packages/lambda-php/src/Semantic.php index 4fd4180430d..defdb8e969d 100644 --- a/packages/lambda-php/src/Semantic.php +++ b/packages/lambda-php/src/Semantic.php @@ -4,5 +4,5 @@ class Semantic { - public const VERSION = "4.0.461"; + public const VERSION = "4.0.462"; } \ No newline at end of file diff --git a/packages/lambda-python/package.json b/packages/lambda-python/package.json index b2577f019ed..8e2e5adc2c9 100644 --- a/packages/lambda-python/package.json +++ b/packages/lambda-python/package.json @@ -4,7 +4,7 @@ }, "name": "@remotion/lambda-python", "private": true, - "version": "4.0.461", + "version": "4.0.462", "scripts": { "publishprivate": "node publish.mjs" }, diff --git a/packages/lambda-python/remotion_lambda/version.py b/packages/lambda-python/remotion_lambda/version.py index 6191ee31af9..1b72ceaf231 100644 --- a/packages/lambda-python/remotion_lambda/version.py +++ b/packages/lambda-python/remotion_lambda/version.py @@ -1,2 +1,2 @@ # pylint: disable=missing-module-docstring, missing-final-newline -VERSION = "4.0.461" \ No newline at end of file +VERSION = "4.0.462" \ No newline at end of file diff --git a/packages/lambda-ruby/lib/remotion_lambda/version.rb b/packages/lambda-ruby/lib/remotion_lambda/version.rb index 83473216f6c..3c15dbbd037 100644 --- a/packages/lambda-ruby/lib/remotion_lambda/version.rb +++ b/packages/lambda-ruby/lib/remotion_lambda/version.rb @@ -1 +1 @@ -VERSION = "4.0.461" \ No newline at end of file +VERSION = "4.0.462" \ No newline at end of file diff --git a/packages/lambda-ruby/package.json b/packages/lambda-ruby/package.json index 909b479d470..293d3868ded 100644 --- a/packages/lambda-ruby/package.json +++ b/packages/lambda-ruby/package.json @@ -4,7 +4,7 @@ }, "name": "@remotion/lambda-ruby", "private": true, - "version": "4.0.461", + "version": "4.0.462", "scripts": { "publishprivate": "bun publish.ts" }, diff --git a/packages/lambda-ruby/remotion_lambda.gemspec b/packages/lambda-ruby/remotion_lambda.gemspec index c9628f98c07..7fef8ddc128 100644 --- a/packages/lambda-ruby/remotion_lambda.gemspec +++ b/packages/lambda-ruby/remotion_lambda.gemspec @@ -1,6 +1,6 @@ Gem::Specification.new do |s| s.name = "remotion_lambda" - s.version = "4.0.461" + s.version = "4.0.462" s.summary = "Remotion Lambda SDK" s.description = "A Ruby SDK for Remotion Lambda" s.authors = ["Jonny Burger"] diff --git a/packages/lambda/package.json b/packages/lambda/package.json index 249f37fc538..e421f2422a5 100644 --- a/packages/lambda/package.json +++ b/packages/lambda/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/lambda" }, "name": "@remotion/lambda", - "version": "4.0.461", + "version": "4.0.462", "description": "Render Remotion videos on AWS Lambda", "main": "dist/index.js", "scripts": { diff --git a/packages/lambda/src/api/deploy-site.ts b/packages/lambda/src/api/deploy-site.ts index 8445d846b11..e7d84581bee 100644 --- a/packages/lambda/src/api/deploy-site.ts +++ b/packages/lambda/src/api/deploy-site.ts @@ -139,6 +139,7 @@ const mandatoryDeploySite = async ({ keyboardShortcutsEnabled: options?.keyboardShortcutsEnabled ?? true, renderDefaults: null, rspack: options?.rspack ?? false, + symlinkPublicDir: false, }), ]); diff --git a/packages/layout-utils/package.json b/packages/layout-utils/package.json index f0aacbc0f29..56bc214a3c1 100644 --- a/packages/layout-utils/package.json +++ b/packages/layout-utils/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/layout-utils" }, "name": "@remotion/layout-utils", - "version": "4.0.461", + "version": "4.0.462", "description": "Utilities for working with layouts", "main": "dist/cjs/index.js", "types": "dist/cjs/index.d.ts", diff --git a/packages/licensing/package.json b/packages/licensing/package.json index e2fbdc651fb..a24a96b6735 100644 --- a/packages/licensing/package.json +++ b/packages/licensing/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/licensing" }, "name": "@remotion/licensing", - "version": "4.0.461", + "version": "4.0.462", "description": "Manage your Remotion.pro license", "main": "dist", "scripts": { diff --git a/packages/light-leaks/package.json b/packages/light-leaks/package.json index 57b0ccde580..aa658e5f6a2 100644 --- a/packages/light-leaks/package.json +++ b/packages/light-leaks/package.json @@ -1,6 +1,6 @@ { "name": "@remotion/light-leaks", - "version": "4.0.461", + "version": "4.0.462", "description": "Light leak effects for Remotion", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/light-leaks/src/LightLeak.tsx b/packages/light-leaks/src/LightLeak.tsx index f0168aea9d0..39160d98ef8 100644 --- a/packages/light-leaks/src/LightLeak.tsx +++ b/packages/light-leaks/src/LightLeak.tsx @@ -244,6 +244,7 @@ const lightLeakSchema = { description: 'Hue Shift', }, ...Internals.sequenceStyleSchema, + hidden: Internals.hiddenField, } as const satisfies SequenceSchema; const LightLeakInner: React.FC< diff --git a/packages/lottie/package.json b/packages/lottie/package.json index 5b96cacf666..6461ac4dcb5 100644 --- a/packages/lottie/package.json +++ b/packages/lottie/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/lottie" }, "name": "@remotion/lottie", - "version": "4.0.461", + "version": "4.0.462", "description": "Include Lottie animations in Remotion", "main": "dist/cjs/index.js", "types": "dist/cjs/index.d.ts", diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 94279473c01..620ed7c5e3e 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/mcp" }, "name": "@remotion/mcp", - "version": "4.0.461", + "version": "4.0.462", "description": "Remotion's Model Context Protocol", "main": "dist/esm/index.mjs", "type": "module", diff --git a/packages/media-parser/package.json b/packages/media-parser/package.json index 0483c340d2a..2b9b44e9c04 100644 --- a/packages/media-parser/package.json +++ b/packages/media-parser/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/media-parser" }, "name": "@remotion/media-parser", - "version": "4.0.461", + "version": "4.0.462", "main": "dist/index.js", "scripts": { "formatting": "oxfmt src --check", diff --git a/packages/media-parser/src/version.ts b/packages/media-parser/src/version.ts index 14114ac903c..e1ab064c37e 100644 --- a/packages/media-parser/src/version.ts +++ b/packages/media-parser/src/version.ts @@ -1,2 +1,2 @@ // Automatically generated on publish -export const VERSION = '4.0.461'; +export const VERSION = '4.0.462'; diff --git a/packages/media-utils/package.json b/packages/media-utils/package.json index ef8fedf05ca..454c6e95ede 100644 --- a/packages/media-utils/package.json +++ b/packages/media-utils/package.json @@ -3,7 +3,7 @@ "url": "https://github.com/remotion-dev/remotion/tree/main/packages/media-utils" }, "name": "@remotion/media-utils", - "version": "4.0.461", + "version": "4.0.462", "description": "Utilities for working with media files", "main": "dist/index.js", "scripts": { diff --git a/packages/media/package.json b/packages/media/package.json index cc5b964e764..23808249d96 100644 --- a/packages/media/package.json +++ b/packages/media/package.json @@ -1,6 +1,6 @@ { "name": "@remotion/media", - "version": "4.0.461", + "version": "4.0.462", "main": "dist/index.js", "types": "dist/index.d.ts", "module": "dist/esm/index.mjs", diff --git a/packages/media/src/audio/audio.tsx b/packages/media/src/audio/audio.tsx index e0aa2836530..9242d4e0559 100644 --- a/packages/media/src/audio/audio.tsx +++ b/packages/media/src/audio/audio.tsx @@ -31,6 +31,7 @@ const audioSchema = { description: 'Playback Rate', }, loop: {type: 'boolean', default: false, description: 'Loop'}, + hidden: Internals.hiddenField, } as const satisfies SequenceSchema; const AudioInner: React.FC< @@ -47,6 +48,7 @@ const AudioInner: React.FC< _experimentalControls: controls, from, durationInFrames, + hidden, ...otherProps } = props; const environment = useRemotionEnvironment(); @@ -136,6 +138,7 @@ const AudioInner: React.FC< _experimentalControls={controls} _remotionInternalLoopDisplay={loopDisplay} showInTimeline={showInTimeline ?? true} + hidden={hidden} > {environment.isRendering ? ( diff --git a/packages/media/src/audio/props.ts b/packages/media/src/audio/props.ts index 636a599397c..35383af7bbf 100644 --- a/packages/media/src/audio/props.ts +++ b/packages/media/src/audio/props.ts @@ -40,5 +40,5 @@ export type AudioProps = { credentials?: RequestCredentials; } & Pick< SequenceProps, - 'from' | 'durationInFrames' | 'name' | 'showInTimeline' + 'from' | 'durationInFrames' | 'name' | 'showInTimeline' | 'hidden' >; diff --git a/packages/media/src/video/props.ts b/packages/media/src/video/props.ts index dec8b0df1a2..546227c5aef 100644 --- a/packages/media/src/video/props.ts +++ b/packages/media/src/video/props.ts @@ -81,4 +81,4 @@ export type InnerVideoProps = MandatoryVideoProps & export type VideoProps = MandatoryVideoProps & Partial & Partial & - Pick; + Pick; diff --git a/packages/media/src/video/video.tsx b/packages/media/src/video/video.tsx index 016330d49c1..89d8fe59b15 100644 --- a/packages/media/src/video/video.tsx +++ b/packages/media/src/video/video.tsx @@ -30,6 +30,11 @@ const videoSchema = { default: 1, description: 'Playback Rate', }, + hidden: { + type: 'boolean', + default: false, + description: 'Hidden', + }, loop: {type: 'boolean', default: false, description: 'Loop'}, ...Internals.sequenceStyleSchema, } as const satisfies SequenceSchema; @@ -200,6 +205,7 @@ const VideoInner: React.FC< _experimentalEffects, durationInFrames, from, + hidden, }) => { const fallbackLogLevel = Internals.useLogLevel(); const [mediaVolume] = Internals.useMediaVolumeState(); @@ -259,8 +265,12 @@ const VideoInner: React.FC< [basicInfo], ); - const memoizedEffects = Internals.useMemoizedEffects( - Internals.flattenEffects(_experimentalEffects ?? []), + const memoizedEffects = Internals.useMemoizedEffects({ + effects: _experimentalEffects ?? [], + overrideId: controls?.overrideId ?? null, + }); + const memoizedEffectDefinitions = Internals.useMemoizedEffectDefinitions( + _experimentalEffects ?? [], ); if (sequenceDurationInFrames === 0) { @@ -277,8 +287,9 @@ const VideoInner: React.FC< name={name ?? '