aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatarLarge Libravatar memdmp <memdmpestrogenzone>2025-08-29 00:13:46 +0200
committerLibravatarLarge Libravatar memdmp <memdmpestrogenzone>2025-08-29 00:13:46 +0200
commiteb3e41175b3d0e27c3ba1c2a95387c73214cc058 (patch)
treea7a63d9a12d0903eb029d10ce8f8c783462c89a6
parent6e71808f30904c0bae101fb159a6a964860793ee (diff)
downloadvideotool-eb3e41175b3d0e27c3ba1c2a95387c73214cc058.tar.gz
videotool-eb3e41175b3d0e27c3ba1c2a95387c73214cc058.tar.bz2
videotool-eb3e41175b3d0e27c3ba1c2a95387c73214cc058.tar.lz
videotool-eb3e41175b3d0e27c3ba1c2a95387c73214cc058.zip

feat: more changes

-rw-r--r--deno.lock69
-rw-r--r--import_map.json5
-rw-r--r--package.json13
-rw-r--r--pnpm-lock.yaml16
-rw-r--r--src/lib/vendor/lazy-cell/index.ts2
-rw-r--r--src/user/index.ts26
6 files changed, 93 insertions, 38 deletions
diff --git a/deno.lock b/deno.lock
index b88a794..bbc611d 100644
--- a/deno.lock
+++ b/deno.lock
@@ -3,17 +3,23 @@
"specifiers": {
"jsr:@memdmp/keyframegen@*": "0.2.1",
"jsr:@memdmp/timelinecalc@0.1": "0.1.2",
+ "npm:@ffmpeg/ffmpeg@0.12.15": "0.12.15",
+ "npm:@ffmpeg/util@0.12.2": "0.12.2",
"npm:@sveltejs/adapter-static@3.0.8": "3.0.8_@sveltejs+kit@2.19.0__@sveltejs+vite-plugin-svelte@5.0.3___svelte@5.23.0____acorn@8.15.0___vite@6.2.1__svelte@5.23.0___acorn@8.15.0__vite@6.2.1_@sveltejs+vite-plugin-svelte@5.0.3__svelte@5.23.0___acorn@8.15.0__vite@6.2.1_svelte@5.23.0__acorn@8.15.0_vite@6.2.1",
"npm:@sveltejs/kit@2.19.0": "2.19.0_@sveltejs+vite-plugin-svelte@5.0.3__svelte@5.23.0___acorn@8.15.0__vite@6.2.1_svelte@5.23.0__acorn@8.15.0_vite@6.2.1",
"npm:@sveltejs/vite-plugin-svelte@5.0.3": "5.0.3_svelte@5.23.0__acorn@8.15.0_vite@6.2.1",
"npm:@tailwindcss/vite@*": "4.1.11_vite@6.2.1",
"npm:@tailwindcss/vite@4.1.11": "4.1.11_vite@6.2.1",
+ "npm:@types/three@0.178.1": "0.178.1",
"npm:esbuild@0.25.1": "0.25.1",
+ "npm:js-lazycell@*": "0.1.1",
+ "npm:js-lazycell@0.1.1": "0.1.1",
"npm:prettier-plugin-svelte@3.3.3": "3.3.3_prettier@3.5.3_svelte@5.23.0__acorn@8.15.0",
"npm:prettier@3.5.3": "3.5.3",
"npm:svelte-check@4.1.5": "4.1.5_svelte@5.23.0__acorn@8.15.0_typescript@5.8.2",
"npm:svelte@5.23.0": "5.23.0_acorn@8.15.0",
"npm:tailwindcss@4.0.13": "4.0.13",
+ "npm:three@0.178.0": "0.178.0",
"npm:typescript@5.8.2": "5.8.2",
"npm:vite@6.2.1": "6.2.1"
},
@@ -36,6 +42,9 @@
"@jridgewell/trace-mapping"
]
},
+ "@dimforge/rapier3d-compat@0.12.0": {
+ "integrity": "sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow=="
+ },
"@emnapi/core@1.4.5": {
"integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==",
"dependencies": [
@@ -310,6 +319,18 @@
"os": ["win32"],
"cpu": ["x64"]
},
+ "@ffmpeg/ffmpeg@0.12.15": {
+ "integrity": "sha512-1C8Obr4GsN3xw+/1Ww6PFM84wSQAGsdoTuTWPOj2OizsRDLT4CXTaVjPhkw6ARyDus1B9X/L2LiXHqYYsGnRFw==",
+ "dependencies": [
+ "@ffmpeg/types"
+ ]
+ },
+ "@ffmpeg/types@0.12.4": {
+ "integrity": "sha512-k9vJQNBGTxE5AhYDtOYR5rO5fKsspbg51gbcwtbkw2lCdoIILzklulcjJfIDwrtn7XhDeF2M+THwJ2FGrLeV6A=="
+ },
+ "@ffmpeg/util@0.12.2": {
+ "integrity": "sha512-ouyoW+4JB7WxjeZ2y6KpRvB+dLp7Cp4ro8z0HIVpZVCM7AwFlHa0c4R8Y/a4M3wMqATpYKhC7lSFHQ0T11MEDw=="
+ },
"@isaacs/fs-minipass@4.0.1": {
"integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
"dependencies": [
@@ -611,6 +632,9 @@
"vite"
]
},
+ "@tweenjs/tween.js@23.1.3": {
+ "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA=="
+ },
"@tybys/wasm-util@0.10.0": {
"integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==",
"dependencies": [
@@ -629,6 +653,27 @@
"@types/estree@1.0.8": {
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
},
+ "@types/stats.js@0.17.4": {
+ "integrity": "sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA=="
+ },
+ "@types/three@0.178.1": {
+ "integrity": "sha512-WSabew1mgWgRx2RfLfKY+9h4wyg6U94JfLbZEGU245j/WY2kXqU0MUfghS+3AYMV5ET1VlILAgpy77cB6a3Itw==",
+ "dependencies": [
+ "@dimforge/rapier3d-compat",
+ "@tweenjs/tween.js",
+ "@types/stats.js",
+ "@types/webxr",
+ "@webgpu/types",
+ "fflate",
+ "meshoptimizer"
+ ]
+ },
+ "@types/webxr@0.5.22": {
+ "integrity": "sha512-Vr6Stjv5jPRqH690f5I5GLjVk8GSsoQSYJ2FVd/3jJF7KaqfwPi3ehfBS96mlQ2kPCwZaX6U0rG2+NGHBKkA/A=="
+ },
+ "@webgpu/types@0.1.64": {
+ "integrity": "sha512-84kRIAGV46LJTlJZWxShiOrNL30A+9KokD7RB3dRCIqODFjodS5tCD5yyiZ8kIReGVZSDfA3XkkwyyOIF6K62A=="
+ },
"acorn@8.15.0": {
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"bin": true
@@ -720,6 +765,9 @@
"fdir@6.4.6": {
"integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w=="
},
+ "fflate@0.8.2": {
+ "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="
+ },
"fsevents@2.3.3": {
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"os": ["darwin"],
@@ -741,6 +789,9 @@
"integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==",
"bin": true
},
+ "js-lazycell@0.1.1": {
+ "integrity": "sha512-E/SV0AQpHuRjhQTvBqHCnv7Nv1bTRaeFDnbh+QEZnPphYh/W5pFA91pxw25LqyWcq+DzI/9m2T76FwI3v3AQWg=="
+ },
"kleur@4.1.5": {
"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="
},
@@ -821,6 +872,9 @@
"@jridgewell/sourcemap-codec"
]
},
+ "meshoptimizer@0.18.1": {
+ "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw=="
+ },
"minipass@7.1.2": {
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="
},
@@ -974,6 +1028,9 @@
"yallist"
]
},
+ "three@0.178.0": {
+ "integrity": "sha512-ybFIB0+x8mz0wnZgSGy2MO/WCO6xZhQSZnmfytSPyNpM0sBafGRVhdaj+erYh5U+RhQOAg/eXqw5uVDiM2BjhQ=="
+ },
"totalist@3.0.1": {
"integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ=="
},
@@ -1014,24 +1071,26 @@
},
"workspace": {
"dependencies": [
- "npm:@tailwindcss/vite@*"
+ "npm:@tailwindcss/vite@*",
+ "npm:js-lazycell@*"
],
"packageJson": {
"dependencies": [
- "npm:@ffmpeg/ffmpeg@~0.12.15",
- "npm:@ffmpeg/util@~0.12.2",
+ "npm:@ffmpeg/ffmpeg@0.12.15",
+ "npm:@ffmpeg/util@0.12.2",
"npm:@sveltejs/adapter-static@3.0.8",
"npm:@sveltejs/kit@2.19.0",
"npm:@sveltejs/vite-plugin-svelte@5.0.3",
"npm:@tailwindcss/vite@4.1.11",
- "npm:@types/three@~0.178.1",
+ "npm:@types/three@0.178.1",
"npm:esbuild@0.25.1",
+ "npm:js-lazycell@0.1.1",
"npm:prettier-plugin-svelte@3.3.3",
"npm:prettier@3.5.3",
"npm:svelte-check@4.1.5",
"npm:svelte@5.23.0",
"npm:tailwindcss@4.0.13",
- "npm:three@0.178",
+ "npm:three@0.178.0",
"npm:typescript@5.8.2",
"npm:vite@6.2.1"
]
diff --git a/import_map.json b/import_map.json
index 5a5ed87..34aa695 100644
--- a/import_map.json
+++ b/import_map.json
@@ -4,6 +4,7 @@
"$/": "./src/",
"$lib": "./src/lib",
"$lib/": "./src/lib/",
- "@tailwindcss/vite": "npm:@tailwindcss/vite"
+ "@tailwindcss/vite": "npm:@tailwindcss/vite",
+ "js-lazycell": "npm:js-lazycell"
}
-} \ No newline at end of file
+}
diff --git a/package.json b/package.json
index 1a48225..12b433c 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
"@sveltejs/kit": "2.19.0",
"@sveltejs/vite-plugin-svelte": "5.0.3",
"@tailwindcss/vite": "4.1.11",
- "@types/three": "^0.178.1",
+ "@types/three": "0.178.1",
"esbuild": "0.25.1",
"prettier": "3.5.3",
"prettier-plugin-svelte": "3.3.3",
@@ -16,11 +16,12 @@
"svelte-check": "4.1.5",
"tailwindcss": "4.0.13",
"typescript": "5.8.2",
- "vite": "6.2.1"
+ "vite": "6.2.1",
+ "js-lazycell": "0.1.1"
},
"dependencies": {
- "@ffmpeg/ffmpeg": "^0.12.15",
- "@ffmpeg/util": "^0.12.2",
- "three": "^0.178.0"
+ "@ffmpeg/ffmpeg": "0.12.15",
+ "@ffmpeg/util": "0.12.2",
+ "three": "0.178.0"
}
-} \ No newline at end of file
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7ca5702..9895f75 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9,13 +9,13 @@ importers:
.:
dependencies:
'@ffmpeg/ffmpeg':
- specifier: ^0.12.15
+ specifier: 0.12.15
version: 0.12.15
'@ffmpeg/util':
- specifier: ^0.12.2
+ specifier: 0.12.2
version: 0.12.2
three:
- specifier: ^0.178.0
+ specifier: 0.178.0
version: 0.178.0
devDependencies:
'@sveltejs/adapter-static':
@@ -31,11 +31,14 @@ importers:
specifier: 4.1.11
version: 4.1.11(vite@6.2.1(jiti@2.4.2)(lightningcss@1.30.1))
'@types/three':
- specifier: ^0.178.1
+ specifier: 0.178.1
version: 0.178.1
esbuild:
specifier: 0.25.1
version: 0.25.1
+ js-lazycell:
+ specifier: 0.1.1
+ version: 0.1.1
prettier:
specifier: 3.5.3
version: 3.5.3
@@ -587,6 +590,9 @@ packages:
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
hasBin: true
+ js-lazycell@0.1.1:
+ resolution: {integrity: sha512-E/SV0AQpHuRjhQTvBqHCnv7Nv1bTRaeFDnbh+QEZnPphYh/W5pFA91pxw25LqyWcq+DzI/9m2T76FwI3v3AQWg==}
+
kleur@4.1.5:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
@@ -1222,6 +1228,8 @@ snapshots:
jiti@2.4.2: {}
+ js-lazycell@0.1.1: {}
+
kleur@4.1.5: {}
lightningcss-darwin-arm64@1.30.1:
diff --git a/src/lib/vendor/lazy-cell/index.ts b/src/lib/vendor/lazy-cell/index.ts
index c38445c..2b081bf 100644
--- a/src/lib/vendor/lazy-cell/index.ts
+++ b/src/lib/vendor/lazy-cell/index.ts
@@ -1 +1 @@
-export * from 'https://codeberg.org/dmpmem/js-lazycell/raw/commit/1b68e36e5de94d6202eee41f9cf122bcee196a2e09d8b0cdaf82e1767b1d9328/mod.ts'
+export * from 'js-lazycell'
diff --git a/src/user/index.ts b/src/user/index.ts
index c6969c3..051939b 100644
--- a/src/user/index.ts
+++ b/src/user/index.ts
@@ -2,7 +2,7 @@ import { type FrameTime, type InitConfig } from '$/lib/Player/Video';
import ThreeVideo from './ThreeVideo';
import AudioURL from './03. Lemaitre, Jennie A. - Closer - 40sec version.flac?url'
import * as THREE from 'three';
-import { LazyCell } from '$/lib/vendor/lazy-cell';
+import { LazyCell } from '$/lib/vendor/lazy-cell/index.ts';
type FontInfo = {
family: string, size: number, weight?: number
@@ -47,20 +47,6 @@ export default class Video extends ThreeVideo {
})!
const threeInit = super.init(config).catch(e => ([1, e] as const))
- // const v = document.createElement('video')
- // v.load()
- // await new Promise((rs, rj) => {
- // let debounce = false;
- // const timeout = setTimeout(() => {
- // if (!debounce) rj('Failed to load video - timed out.')
- // }, 1000);
- // v.addEventListener('load', () => {
- // rs(void 0)
- // clearTimeout(timeout)
- // }, {
- // once: true
- // })
- // })
const rs = await threeInit
if (rs && rs[0] === 1) { console.error(rs[1]); throw new Error('Failed to initialize ThreeJS!'); }
}
@@ -130,8 +116,8 @@ export default class Video extends ThreeVideo {
break;
}
case beat >= 8.4 && beat < 13: {
- const text = `Like${beat >= 9 ? ` has a hyprminimal design` : ''}${beat >= 11 ? ' new' : ''}`;
- const longTextWidth = getTextSize(this.ctx, `Like has a hyprminimal design new`, AdDefault)
+ const text = `Like${beat >= 9 ? ` doesn't have a version number` : ''}${beat >= 11 ? ' new' : ''}`;
+ const longTextWidth = getTextSize(this.ctx, `Like doesn't have a version number new`, AdDefault)
renderText(this.ctx, text, '#646663', AdDefault, { x: center[0] - longTextWidth.width / 2, y: center[1] }, 'start')
break;
}
@@ -157,7 +143,7 @@ export default class Video extends ThreeVideo {
this.scene.add(this.lighting)
this.scene.add(this.uiDark);
- const progress = (beat - 15)
+ const progress = (beat - 15 - 1 / 30)
this.uiDark.rotation.x = bezier(progress, -0.5, -0.5, -0.5, -0.5);
this.uiDark.rotation.y = bezier(progress, 0.7, 0.6, 0.4, 0.4);
this.camera.position.z = bezier(progress, 4, 5, 5, 8);
@@ -206,8 +192,8 @@ export default class Video extends ThreeVideo {
this.ctx.fillRect(0, 0, this.w, this.h);
// renderText(this.ctx, `Need a new AI assistant?`, '#646663', AdDefault, { x: center[0], y: center[1] }, 'center')
}
- const text = `Accents ${beat >= 34.5 ? `so ` : ''}${beat >= 34.75 ? 'hyprblue, ' : ''}${beat >= 35.8 ? 'we created them' : ''}${beat >= 37 ? ' hypr' + (beat >= 38.1 ? 'new' : '') : ''}`;
- const longTextWidth = getTextSize(this.ctx, `Accents so hyprblue, we created them hyprnew`, AdDefault)
+ const text = `Responses ${beat >= 34.5 ? `so ` : ''}${beat >= 34.75 ? 'hyprblue, ' : ''}${beat >= 35.8 ? 'we created them' : ''}${beat >= 37 ? ' hypr' + (beat >= 38.1 ? 'new' : '') : ''}`;
+ const longTextWidth = getTextSize(this.ctx, `Responses so hyprblue, we created them hyprnew`, AdDefault)
renderText(this.ctx, text, beat >= 34.75 ? '#ffffff' : '#646663', AdDefault, { x: center[0] - longTextWidth.width / 2, y: center[1] }, 'start')
break;
}