diff --git a/package.json b/package.json index 96809c2..8d9926e 100644 --- a/package.json +++ b/package.json @@ -19,18 +19,15 @@ "@popperjs/core": "^2.11.8", "@types/chroma-js": "^3.1.1", "@types/node": "^24.0.6", - "@types/textfit": "^2.4.5", "@typescript-eslint/eslint-plugin": "5.29.0", "@typescript-eslint/parser": "5.29.0", "builtin-modules": "3.3.0", "dotenv": "^17.0.0", "dotenv-expand": "^12.0.2", - "esbuild": "0.17.3", + "esbuild": "0.25.5", "esbuild-svelte": "^0.9.3", "eslint": "^9.30.0", "globals": "^16.2.0", - "handlebars": "^4.7.8", - "lucide-svelte": "^0.525.0", "moment": "^2.30.1", "npm-run-all": "^4.1.5", "obsidian": "latest", @@ -44,14 +41,12 @@ "typescript": "5.0.4" }, "dependencies": { - "@humanspeak/svelte-virtual-list": "^0.2.6", - "@leveluptuts/svelte-fit": "^1.0.3", "chart.js": "^4.5.0", "chroma-js": "^3.1.2", "esbuild-sass-plugin": "^3.3.1", - "fitty": "^2.4.2", + "handlebars": "^4.7.8", "just-memoize": "^2.2.0", - "textfit": "^2.4.0", + "lucide-svelte": "^0.525.0", "uuid": "^11.1.0", "yaml": "^2.8.0", "zod": "^3.25.67" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index be5758f..c47d06f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,12 +8,6 @@ importers: .: dependencies: - '@humanspeak/svelte-virtual-list': - specifier: ^0.2.6 - version: 0.2.6(svelte@5.34.8) - '@leveluptuts/svelte-fit': - specifier: ^1.0.3 - version: 1.0.3 chart.js: specifier: ^4.5.0 version: 4.5.0 @@ -22,16 +16,16 @@ importers: version: 3.1.2 esbuild-sass-plugin: specifier: ^3.3.1 - version: 3.3.1(esbuild@0.17.3)(sass-embedded@1.89.2) - fitty: - specifier: ^2.4.2 - version: 2.4.2 + version: 3.3.1(esbuild@0.25.5)(sass-embedded@1.89.2) + handlebars: + specifier: ^4.7.8 + version: 4.7.8 just-memoize: specifier: ^2.2.0 version: 2.2.0 - textfit: - specifier: ^2.4.0 - version: 2.4.0 + lucide-svelte: + specifier: ^0.525.0 + version: 0.525.0(svelte@5.34.8) uuid: specifier: ^11.1.0 version: 11.1.0 @@ -57,9 +51,6 @@ importers: '@types/node': specifier: ^24.0.6 version: 24.0.6 - '@types/textfit': - specifier: ^2.4.5 - version: 2.4.5 '@typescript-eslint/eslint-plugin': specifier: 5.29.0 version: 5.29.0(@typescript-eslint/parser@5.29.0(eslint@9.30.0)(typescript@5.0.4))(eslint@9.30.0)(typescript@5.0.4) @@ -76,23 +67,17 @@ importers: specifier: ^12.0.2 version: 12.0.2 esbuild: - specifier: 0.17.3 - version: 0.17.3 + specifier: 0.25.5 + version: 0.25.5 esbuild-svelte: specifier: ^0.9.3 - version: 0.9.3(esbuild@0.17.3)(svelte@5.34.8) + version: 0.9.3(esbuild@0.25.5)(svelte@5.34.8) eslint: specifier: ^9.30.0 version: 9.30.0 globals: specifier: ^16.2.0 version: 16.2.0 - handlebars: - specifier: ^4.7.8 - version: 4.7.8 - lucide-svelte: - specifier: ^0.525.0 - version: 0.525.0(svelte@5.34.8) moment: specifier: ^2.30.1 version: 2.30.1 @@ -142,135 +127,153 @@ packages: '@codemirror/view@6.37.2': resolution: {integrity: sha512-XD3LdgQpxQs5jhOOZ2HRVT+Rj59O4Suc7g2ULvZ+Yi8eCkickrkZ5JFuoDhs2ST1mNI5zSsNYgR3NGa4OUrbnw==} - '@esbuild/android-arm64@0.17.3': - resolution: {integrity: sha512-XvJsYo3dO3Pi4kpalkyMvfQsjxPWHYjoX4MDiB/FUM4YMfWcXa5l4VCwFWVYI1+92yxqjuqrhNg0CZg3gSouyQ==} - engines: {node: '>=12'} + '@esbuild/aix-ppc64@0.25.5': + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.5': + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.17.3': - resolution: {integrity: sha512-1Mlz934GvbgdDmt26rTLmf03cAgLg5HyOgJN+ZGCeP3Q9ynYTNMn2/LQxIl7Uy+o4K6Rfi2OuLsr12JQQR8gNg==} - engines: {node: '>=12'} + '@esbuild/android-arm@0.25.5': + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.17.3': - resolution: {integrity: sha512-nuV2CmLS07Gqh5/GrZLuqkU9Bm6H6vcCspM+zjp9TdQlxJtIe+qqEXQChmfc7nWdyr/yz3h45Utk1tUn8Cz5+A==} - engines: {node: '>=12'} + '@esbuild/android-x64@0.25.5': + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.17.3': - resolution: {integrity: sha512-01Hxaaat6m0Xp9AXGM8mjFtqqwDjzlMP0eQq9zll9U85ttVALGCGDuEvra5Feu/NbP5AEP1MaopPwzsTcUq1cw==} - engines: {node: '>=12'} + '@esbuild/darwin-arm64@0.25.5': + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.17.3': - resolution: {integrity: sha512-Eo2gq0Q/er2muf8Z83X21UFoB7EU6/m3GNKvrhACJkjVThd0uA+8RfKpfNhuMCl1bKRfBzKOk6xaYKQZ4lZqvA==} - engines: {node: '>=12'} + '@esbuild/darwin-x64@0.25.5': + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.17.3': - resolution: {integrity: sha512-CN62ESxaquP61n1ZjQP/jZte8CE09M6kNn3baos2SeUfdVBkWN5n6vGp2iKyb/bm/x4JQzEvJgRHLGd5F5b81w==} - engines: {node: '>=12'} + '@esbuild/freebsd-arm64@0.25.5': + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.17.3': - resolution: {integrity: sha512-feq+K8TxIznZE+zhdVurF3WNJ/Sa35dQNYbaqM/wsCbWdzXr5lyq+AaTUSER2cUR+SXPnd/EY75EPRjf4s1SLg==} - engines: {node: '>=12'} + '@esbuild/freebsd-x64@0.25.5': + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.17.3': - resolution: {integrity: sha512-JHeZXD4auLYBnrKn6JYJ0o5nWJI9PhChA/Nt0G4MvLaMrvXuWnY93R3a7PiXeJQphpL1nYsaMcoV2QtuvRnF/g==} - engines: {node: '>=12'} + '@esbuild/linux-arm64@0.25.5': + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.17.3': - resolution: {integrity: sha512-CLP3EgyNuPcg2cshbwkqYy5bbAgK+VhyfMU7oIYyn+x4Y67xb5C5ylxsNUjRmr8BX+MW3YhVNm6Lq6FKtRTWHQ==} - engines: {node: '>=12'} + '@esbuild/linux-arm@0.25.5': + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.17.3': - resolution: {integrity: sha512-FyXlD2ZjZqTFh0sOQxFDiWG1uQUEOLbEh9gKN/7pFxck5Vw0qjWSDqbn6C10GAa1rXJpwsntHcmLqydY9ST9ZA==} - engines: {node: '>=12'} + '@esbuild/linux-ia32@0.25.5': + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.17.3': - resolution: {integrity: sha512-OrDGMvDBI2g7s04J8dh8/I7eSO+/E7nMDT2Z5IruBfUO/RiigF1OF6xoH33Dn4W/OwAWSUf1s2nXamb28ZklTA==} - engines: {node: '>=12'} + '@esbuild/linux-loong64@0.25.5': + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.17.3': - resolution: {integrity: sha512-DcnUpXnVCJvmv0TzuLwKBC2nsQHle8EIiAJiJ+PipEVC16wHXaPEKP0EqN8WnBe0TPvMITOUlP2aiL5YMld+CQ==} - engines: {node: '>=12'} + '@esbuild/linux-mips64el@0.25.5': + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.17.3': - resolution: {integrity: sha512-BDYf/l1WVhWE+FHAW3FzZPtVlk9QsrwsxGzABmN4g8bTjmhazsId3h127pliDRRu5674k1Y2RWejbpN46N9ZhQ==} - engines: {node: '>=12'} + '@esbuild/linux-ppc64@0.25.5': + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.17.3': - resolution: {integrity: sha512-WViAxWYMRIi+prTJTyV1wnqd2mS2cPqJlN85oscVhXdb/ZTFJdrpaqm/uDsZPGKHtbg5TuRX/ymKdOSk41YZow==} - engines: {node: '>=12'} + '@esbuild/linux-riscv64@0.25.5': + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.17.3': - resolution: {integrity: sha512-Iw8lkNHUC4oGP1O/KhumcVy77u2s6+KUjieUqzEU3XuWJqZ+AY7uVMrrCbAiwWTkpQHkr00BuXH5RpC6Sb/7Ug==} - engines: {node: '>=12'} + '@esbuild/linux-s390x@0.25.5': + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.17.3': - resolution: {integrity: sha512-0AGkWQMzeoeAtXQRNB3s4J1/T2XbigM2/Mn2yU1tQSmQRmHIZdkGbVq2A3aDdNslPyhb9/lH0S5GMTZ4xsjBqg==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.25.5': + resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.17.3': - resolution: {integrity: sha512-4+rR/WHOxIVh53UIQIICryjdoKdHsFZFD4zLSonJ9RRw7bhKzVyXbnRPsWSfwybYqw9sB7ots/SYyufL1mBpEg==} - engines: {node: '>=12'} + '@esbuild/netbsd-arm64@0.25.5': + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.5': + resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.17.3': - resolution: {integrity: sha512-cVpWnkx9IYg99EjGxa5Gc0XmqumtAwK3aoz7O4Dii2vko+qXbkHoujWA68cqXjhh6TsLaQelfDO4MVnyr+ODeA==} - engines: {node: '>=12'} + '@esbuild/openbsd-arm64@0.25.5': + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.5': + resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.17.3': - resolution: {integrity: sha512-RxmhKLbTCDAY2xOfrww6ieIZkZF+KBqG7S2Ako2SljKXRFi+0863PspK74QQ7JpmWwncChY25JTJSbVBYGQk2Q==} - engines: {node: '>=12'} + '@esbuild/sunos-x64@0.25.5': + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.17.3': - resolution: {integrity: sha512-0r36VeEJ4efwmofxVJRXDjVRP2jTmv877zc+i+Pc7MNsIr38NfsjkQj23AfF7l0WbB+RQ7VUb+LDiqC/KY/M/A==} - engines: {node: '>=12'} + '@esbuild/win32-arm64@0.25.5': + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.17.3': - resolution: {integrity: sha512-wgO6rc7uGStH22nur4aLFcq7Wh86bE9cOFmfTr/yxN3BXvDEdCSXyKkO+U5JIt53eTOgC47v9k/C1bITWL/Teg==} - engines: {node: '>=12'} + '@esbuild/win32-ia32@0.25.5': + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.17.3': - resolution: {integrity: sha512-FdVl64OIuiKjgXBjwZaJLKp0eaEckifbhn10dXWhysMJkWblg3OEEGKSIyhiD5RSgAya8WzP3DNkngtIg3Nt7g==} - engines: {node: '>=12'} + '@esbuild/win32-x64@0.25.5': + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -324,11 +327,6 @@ packages: resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} engines: {node: '>=18.18.0'} - '@humanspeak/svelte-virtual-list@0.2.6': - resolution: {integrity: sha512-nfD81b4LQw2bTSFYV/M0ky/pnUkfI0KYr5qCVJHZe6h3dUtXoNIhoxypI6JGBcpW3D8jN5Y53NOkfDggJNb5nA==} - peerDependencies: - svelte: ^5.0.0 - '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -362,9 +360,6 @@ packages: '@kurkle/color@0.3.4': resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} - '@leveluptuts/svelte-fit@1.0.3': - resolution: {integrity: sha512-Hg8Xz06Mf1pwI92cY60LdFKDjXUkix0KcNP5orgGjtV7ecfK4zZ8gwPHOSDioZt73/7Muj1O43QzvtK2oPwEfA==} - '@marijn/find-cluster-break@1.0.2': resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} @@ -479,24 +474,15 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/jquery@3.5.32': - resolution: {integrity: sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} '@types/node@24.0.6': resolution: {integrity: sha512-ZOyn+gOs749xU7ovp+Ibj0g1o3dFRqsfPnT22C2t5JzcRvgsEDpGawPbCISGKLudJk9Y0wiu9sYd6kUh0pc9TA==} - '@types/sizzle@2.3.9': - resolution: {integrity: sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==} - '@types/tern@0.23.9': resolution: {integrity: sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==} - '@types/textfit@2.4.5': - resolution: {integrity: sha512-C/1i+vGFD7xi1UZPePa6pNdoR0eGFCOe7QrZlTuPGPF+Y4JnFcp9cSJGZko+6tW8GmdDdKt7S9W6sCf3ncvk5g==} - '@typescript-eslint/eslint-plugin@5.29.0': resolution: {integrity: sha512-kgTsISt9pM53yRFQmLZ4npj99yGl3x3Pl7z4eA66OuTzAGC4bQB5H5fuLwPnqTKU3yyrrg4MIhjF17UYnL4c0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -790,9 +776,9 @@ packages: esbuild: '>=0.17.0' svelte: '>=4.2.1 <6' - esbuild@0.17.3: - resolution: {integrity: sha512-9n3AsBRe6sIyOc6kmoXg2ypCLgf3eZSraWFRpnkto+svt8cZNuKTkb1bhQcitBcvIqjNiK7K0J3KPmwGSfkA8g==} - engines: {node: '>=12'} + esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + engines: {node: '>=18'} hasBin: true escape-string-regexp@1.0.5: @@ -905,9 +891,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - fitty@2.4.2: - resolution: {integrity: sha512-GNhWgImK4+wEkgEZjBkQMyu5NLSmmryg/CaRP7zYby+TWzCrUou6BHL+iqbjKzJRXMyzuJkH+LBB1+lh4oO77g==} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -1717,9 +1700,6 @@ packages: resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==} engines: {node: '>=16.0.0'} - textfit@2.4.0: - resolution: {integrity: sha512-/x4aoY5+/tJmu+iwpBH1yw75TFp86M6X15SvaaY/Eep7YySQYtqdOifEtfvVyMwzl7SZ+G4RQw00FD9g5R6i1Q==} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -1856,70 +1836,79 @@ snapshots: style-mod: 4.1.2 w3c-keyname: 2.2.8 - '@esbuild/android-arm64@0.17.3': + '@esbuild/aix-ppc64@0.25.5': optional: true - '@esbuild/android-arm@0.17.3': + '@esbuild/android-arm64@0.25.5': optional: true - '@esbuild/android-x64@0.17.3': + '@esbuild/android-arm@0.25.5': optional: true - '@esbuild/darwin-arm64@0.17.3': + '@esbuild/android-x64@0.25.5': optional: true - '@esbuild/darwin-x64@0.17.3': + '@esbuild/darwin-arm64@0.25.5': optional: true - '@esbuild/freebsd-arm64@0.17.3': + '@esbuild/darwin-x64@0.25.5': optional: true - '@esbuild/freebsd-x64@0.17.3': + '@esbuild/freebsd-arm64@0.25.5': optional: true - '@esbuild/linux-arm64@0.17.3': + '@esbuild/freebsd-x64@0.25.5': optional: true - '@esbuild/linux-arm@0.17.3': + '@esbuild/linux-arm64@0.25.5': optional: true - '@esbuild/linux-ia32@0.17.3': + '@esbuild/linux-arm@0.25.5': optional: true - '@esbuild/linux-loong64@0.17.3': + '@esbuild/linux-ia32@0.25.5': optional: true - '@esbuild/linux-mips64el@0.17.3': + '@esbuild/linux-loong64@0.25.5': optional: true - '@esbuild/linux-ppc64@0.17.3': + '@esbuild/linux-mips64el@0.25.5': optional: true - '@esbuild/linux-riscv64@0.17.3': + '@esbuild/linux-ppc64@0.25.5': optional: true - '@esbuild/linux-s390x@0.17.3': + '@esbuild/linux-riscv64@0.25.5': optional: true - '@esbuild/linux-x64@0.17.3': + '@esbuild/linux-s390x@0.25.5': optional: true - '@esbuild/netbsd-x64@0.17.3': + '@esbuild/linux-x64@0.25.5': optional: true - '@esbuild/openbsd-x64@0.17.3': + '@esbuild/netbsd-arm64@0.25.5': optional: true - '@esbuild/sunos-x64@0.17.3': + '@esbuild/netbsd-x64@0.25.5': optional: true - '@esbuild/win32-arm64@0.17.3': + '@esbuild/openbsd-arm64@0.25.5': optional: true - '@esbuild/win32-ia32@0.17.3': + '@esbuild/openbsd-x64@0.25.5': optional: true - '@esbuild/win32-x64@0.17.3': + '@esbuild/sunos-x64@0.25.5': + optional: true + + '@esbuild/win32-arm64@0.25.5': + optional: true + + '@esbuild/win32-ia32@0.25.5': + optional: true + + '@esbuild/win32-x64@0.25.5': optional: true '@eslint-community/eslint-utils@4.7.0(eslint@9.30.0)': @@ -1977,11 +1966,6 @@ snapshots: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.3.1 - '@humanspeak/svelte-virtual-list@0.2.6(svelte@5.34.8)': - dependencies: - esm-env: 1.2.2 - svelte: 5.34.8 - '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.3.1': {} @@ -2007,8 +1991,6 @@ snapshots: '@kurkle/color@0.3.4': {} - '@leveluptuts/svelte-fit@1.0.3': {} - '@marijn/find-cluster-break@1.0.2': {} '@nodelib/fs.scandir@2.1.5': @@ -2098,26 +2080,16 @@ snapshots: '@types/estree@1.0.8': {} - '@types/jquery@3.5.32': - dependencies: - '@types/sizzle': 2.3.9 - '@types/json-schema@7.0.15': {} '@types/node@24.0.6': dependencies: undici-types: 7.8.0 - '@types/sizzle@2.3.9': {} - '@types/tern@0.23.9': dependencies: '@types/estree': 1.0.8 - '@types/textfit@2.4.5': - dependencies: - '@types/jquery': 3.5.32 - '@typescript-eslint/eslint-plugin@5.29.0(@typescript-eslint/parser@5.29.0(eslint@9.30.0)(typescript@5.0.4))(eslint@9.30.0)(typescript@5.0.4)': dependencies: '@typescript-eslint/parser': 5.29.0(eslint@9.30.0)(typescript@5.0.4) @@ -2476,44 +2448,47 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild-sass-plugin@3.3.1(esbuild@0.17.3)(sass-embedded@1.89.2): + esbuild-sass-plugin@3.3.1(esbuild@0.25.5)(sass-embedded@1.89.2): dependencies: - esbuild: 0.17.3 + esbuild: 0.25.5 resolve: 1.22.10 safe-identifier: 0.4.2 sass: 1.89.2 sass-embedded: 1.89.2 - esbuild-svelte@0.9.3(esbuild@0.17.3)(svelte@5.34.8): + esbuild-svelte@0.9.3(esbuild@0.25.5)(svelte@5.34.8): dependencies: '@jridgewell/trace-mapping': 0.3.25 - esbuild: 0.17.3 + esbuild: 0.25.5 svelte: 5.34.8 - esbuild@0.17.3: + esbuild@0.25.5: optionalDependencies: - '@esbuild/android-arm': 0.17.3 - '@esbuild/android-arm64': 0.17.3 - '@esbuild/android-x64': 0.17.3 - '@esbuild/darwin-arm64': 0.17.3 - '@esbuild/darwin-x64': 0.17.3 - '@esbuild/freebsd-arm64': 0.17.3 - '@esbuild/freebsd-x64': 0.17.3 - '@esbuild/linux-arm': 0.17.3 - '@esbuild/linux-arm64': 0.17.3 - '@esbuild/linux-ia32': 0.17.3 - '@esbuild/linux-loong64': 0.17.3 - '@esbuild/linux-mips64el': 0.17.3 - '@esbuild/linux-ppc64': 0.17.3 - '@esbuild/linux-riscv64': 0.17.3 - '@esbuild/linux-s390x': 0.17.3 - '@esbuild/linux-x64': 0.17.3 - '@esbuild/netbsd-x64': 0.17.3 - '@esbuild/openbsd-x64': 0.17.3 - '@esbuild/sunos-x64': 0.17.3 - '@esbuild/win32-arm64': 0.17.3 - '@esbuild/win32-ia32': 0.17.3 - '@esbuild/win32-x64': 0.17.3 + '@esbuild/aix-ppc64': 0.25.5 + '@esbuild/android-arm': 0.25.5 + '@esbuild/android-arm64': 0.25.5 + '@esbuild/android-x64': 0.25.5 + '@esbuild/darwin-arm64': 0.25.5 + '@esbuild/darwin-x64': 0.25.5 + '@esbuild/freebsd-arm64': 0.25.5 + '@esbuild/freebsd-x64': 0.25.5 + '@esbuild/linux-arm': 0.25.5 + '@esbuild/linux-arm64': 0.25.5 + '@esbuild/linux-ia32': 0.25.5 + '@esbuild/linux-loong64': 0.25.5 + '@esbuild/linux-mips64el': 0.25.5 + '@esbuild/linux-ppc64': 0.25.5 + '@esbuild/linux-riscv64': 0.25.5 + '@esbuild/linux-s390x': 0.25.5 + '@esbuild/linux-x64': 0.25.5 + '@esbuild/netbsd-arm64': 0.25.5 + '@esbuild/netbsd-x64': 0.25.5 + '@esbuild/openbsd-arm64': 0.25.5 + '@esbuild/openbsd-x64': 0.25.5 + '@esbuild/sunos-x64': 0.25.5 + '@esbuild/win32-arm64': 0.25.5 + '@esbuild/win32-ia32': 0.25.5 + '@esbuild/win32-x64': 0.25.5 escape-string-regexp@1.0.5: {} @@ -2641,8 +2616,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - fitty@2.4.2: {} - flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -3439,8 +3412,6 @@ snapshots: sync-message-port@1.1.3: {} - textfit@2.4.0: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 diff --git a/src/ui/code-blocks/ShelfCodeBlockView.svelte b/src/ui/code-blocks/ShelfCodeBlockView.svelte index 3651b95..a17c7dd 100644 --- a/src/ui/code-blocks/ShelfCodeBlockView.svelte +++ b/src/ui/code-blocks/ShelfCodeBlockView.svelte @@ -22,7 +22,6 @@ import Rating from "@ui/components/Rating.svelte"; import { v4 as uuidv4 } from "uuid"; import memoize from "just-memoize"; - import VirtualList from "@humanspeak/svelte-virtual-list"; interface Props { plugin: BookTrackerPlugin; diff --git a/src/ui/components/bookshelf/Book.svelte b/src/ui/components/bookshelf/Book.svelte index b068252..546c62a 100644 --- a/src/ui/components/bookshelf/Book.svelte +++ b/src/ui/components/bookshelf/Book.svelte @@ -3,7 +3,6 @@ import BookshelfItem from "./BookshelfItem.svelte"; import { Color, type ColorName } from "@utils/color"; import type { HTMLAttributes } from "svelte/elements"; - import { fit } from "@leveluptuts/svelte-fit"; interface Props { children?: Snippet; @@ -45,6 +44,23 @@ const color = $derived(Color.fromName(colorName)); const backgroundColor = $derived(color.chroma.css()); const textColor = $derived(color.contrastColor.chroma.css()); + + const titleFontSize = $derived( + orientation === "front" + ? 16 + : Math.min( + 16, + Math.max(8, (width + 120 - (title?.length ?? 0)) / 10), + ), + ); + const subtitleFontSize = $derived( + orientation === "front" + ? 12 + : Math.min( + 14, + Math.max(6, (width + 60 - (subtitle?.length ?? 0)) / 10), + ), + ); @@ -75,13 +91,16 @@ {/if}
{#if title} -

+

{title}

{#if subtitle} -

+

{subtitle} -

+

{/if} {/if} {#if authors && orientation === "front"} @@ -160,18 +179,14 @@ } .book-title { - font-size: 16px; - height: $content-height; + font-weight: var(--bold-weight); + max-height: $content-height; width: var(--book-content-width); - - &:has(+ .book-subtitle) { - height: calc(#{$content-height} / 2); - } } .book-subtitle { - font-size: 12px; - height: calc(#{$content-height} / 2); + font-weight: var(--font-weight); + max-height: calc(#{$content-height} / 2); width: var(--book-content-width); align-items: start; } @@ -249,14 +264,25 @@ padding-left: $padding-left; .book-title { - height: calc(var(--book-height) / 4); + max-height: unset; + height: calc(var(--book-height) / 2); + + &:has(+ .book-subtitle) { + height: calc(var(--book-height) / 3); + } } .book-subtitle { - height: calc(var(--book-height) / 4); + max-height: unset; + height: calc(var(--book-height) / 3); + + & + .book-authors { + height: calc(var(--book-height) / 3); + } } .book-authors { + max-height: unset; height: calc(var(--book-height) / 2); } } diff --git a/src/ui/components/bookshelf/Bookshelf.svelte b/src/ui/components/bookshelf/Bookshelf.svelte index fbd980d..5a7ff2c 100644 --- a/src/ui/components/bookshelf/Bookshelf.svelte +++ b/src/ui/components/bookshelf/Bookshelf.svelte @@ -1,45 +1,13 @@ -
+
{@render children?.()}