diff --git a/package.json b/package.json index c86b7f9..8b294ff 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "license": "MIT", "devDependencies": { "@iconify-json/mdi": "^1.1.66", + "@types/canvas-confetti": "^1.6.4", "solid-devtools": "^0.29.3", "typescript": "^5.4.5", "unocss": "^0.59.2", @@ -23,14 +24,16 @@ "dependencies": { "@ffmpeg/ffmpeg": "^0.12.10", "@ffmpeg/util": "^0.12.1", + "canvas-confetti": "^1.9.2", "modern-gif": "^2.0.3", + "mp4box": "^0.5.2", "sass": "^1.75.0", "solid-js": "^1.8.16", "yon-utils": "^0.1.20" }, "pnpm": { - "patchedDependencies111": { - "NOTE": "will make cached frames un-reusable", + "patchedDependencies": { + "@ffmpeg/ffmpeg@0.12.10": "patches/@ffmpeg__ffmpeg@0.12.10.patch", "modern-gif@2.0.3": "patches/modern-gif@2.0.3.patch" } } diff --git a/patches/@ffmpeg__ffmpeg@0.12.10.patch b/patches/@ffmpeg__ffmpeg@0.12.10.patch new file mode 100644 index 0000000..def8d52 --- /dev/null +++ b/patches/@ffmpeg__ffmpeg@0.12.10.patch @@ -0,0 +1,14 @@ +diff --git a/package.json b/package.json +index 8dbc8c0debb38f7031d03aadca1ce6429d51e207..65e5958d19311a998b0978578e9eaf28eb390718 100644 +--- a/package.json ++++ b/package.json +@@ -12,6 +12,9 @@ + "import": "./dist/esm/index.js", + "require": "./dist/umd/ffmpeg.js" + } ++ }, ++ "./worker": { ++ "import": "./dist/esm/worker.js" + } + }, + "scripts": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 78eadc4..17c6d61 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,16 +4,30 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +patchedDependencies: + '@ffmpeg/ffmpeg@0.12.10': + hash: rp32kszgnosraou7uzgtdqueci + path: patches/@ffmpeg__ffmpeg@0.12.10.patch + modern-gif@2.0.3: + hash: d3yjxwz7lxdlwgs7jan4epfyyy + path: patches/modern-gif@2.0.3.patch + dependencies: '@ffmpeg/ffmpeg': specifier: ^0.12.10 - version: 0.12.10 + version: 0.12.10(patch_hash=rp32kszgnosraou7uzgtdqueci) '@ffmpeg/util': specifier: ^0.12.1 version: 0.12.1 + canvas-confetti: + specifier: ^1.9.2 + version: 1.9.2 modern-gif: specifier: ^2.0.3 - version: 2.0.3 + version: 2.0.3(patch_hash=d3yjxwz7lxdlwgs7jan4epfyyy) + mp4box: + specifier: ^0.5.2 + version: 0.5.2 sass: specifier: ^1.75.0 version: 1.75.0 @@ -28,6 +42,9 @@ devDependencies: '@iconify-json/mdi': specifier: ^1.1.66 version: 1.1.66 + '@types/canvas-confetti': + specifier: ^1.6.4 + version: 1.6.4 solid-devtools: specifier: ^0.29.3 version: 0.29.3(solid-js@1.8.16)(vite@5.2.8) @@ -593,12 +610,13 @@ packages: dev: true optional: true - /@ffmpeg/ffmpeg@0.12.10: + /@ffmpeg/ffmpeg@0.12.10(patch_hash=rp32kszgnosraou7uzgtdqueci): resolution: {integrity: sha512-lVtk8PW8e+NUzGZhPTWj2P1J4/NyuCrbDD3O9IGpSeLYtUZKBqZO8CNj1WYGghep/MXoM8e1qVY1GztTkf8YYQ==} engines: {node: '>=18.x'} dependencies: '@ffmpeg/types': 0.12.2 dev: false + patched: true /@ffmpeg/types@0.12.2: resolution: {integrity: sha512-NJtxwPoLb60/z1Klv0ueshguWQ/7mNm106qdHkB4HL49LXszjhjCCiL+ldHJGQ9ai2Igx0s4F24ghigy//ERdA==} @@ -1037,6 +1055,10 @@ packages: '@babel/types': 7.24.0 dev: true + /@types/canvas-confetti@1.6.4: + resolution: {integrity: sha512-fNyZ/Fdw/Y92X0vv7B+BD6ysHL4xVU5dJcgzgxLdGbn8O3PezZNIJpml44lKM0nsGur+o/6+NZbZeNTt00U1uA==} + dev: true + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true @@ -1327,6 +1349,10 @@ packages: resolution: {integrity: sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==} dev: true + /canvas-confetti@1.9.2: + resolution: {integrity: sha512-6Xi7aHHzKwxZsem4mCKoqP6YwUG3HamaHHAlz1hTNQPCqXhARFpSXnkC9TWlahHY5CG6hSL5XexNjxK8irVErg==} + dev: false + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -1697,16 +1723,21 @@ packages: ufo: 1.5.3 dev: true - /modern-gif@2.0.3: + /modern-gif@2.0.3(patch_hash=d3yjxwz7lxdlwgs7jan4epfyyy): resolution: {integrity: sha512-3QXbWnVkrD1UgNqpaKopSDWlIvVyRC3m8yQdGFsi+xNk0ndnSTwj95MqhXcXv0FltJHq/BcwglTak42pfUf4IQ==} dependencies: modern-palette: 2.0.0 dev: false + patched: true /modern-palette@2.0.0: resolution: {integrity: sha512-wKZcom2QzK6sS6h5RLYHEkd3V3maQLzgkI+ekDCimlk7dfXa63aekZcy+7KS+8JEqIDeY/yV1CAvA7l+7u6QHA==} dev: false + /mp4box@0.5.2: + resolution: {integrity: sha512-zRmGlvxy+YdW3Dmt+TR4xPHynbxwXtAQDTN/Fo9N3LMxaUlB2C5KmZpzYyGKy4c7k4Jf3RCR0A2pm9SZELOLXw==} + dev: false + /mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} diff --git a/src/App.tsx b/src/App.tsx index ccbe3e9..1aa551a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,5 +1,5 @@ import { Show, createEffect, createMemo, createRoot, type Component } from 'solid-js'; -import { store } from './store'; +import { store, updateStore } from './store'; import { FileSelector } from './components/FileSelector'; import { OptionEditor } from './components/OptionEditor'; import { ProcessingBar } from './components/Processing'; @@ -25,13 +25,17 @@ const App: Component = () => {
-