mirror of
https://github.com/ThaUnknown/miru.git
synced 2026-03-11 20:45:33 +00:00
feat: add partial support for ancient browsers
Some checks failed
Check / check (push) Has been cancelled
Some checks failed
Check / check (push) Has been cancelled
This commit is contained in:
parent
7ff57561c2
commit
7f84100c22
11 changed files with 108 additions and 46 deletions
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "ui",
|
||||
"version": "6.4.84",
|
||||
"version": "6.4.85",
|
||||
"license": "BUSL-1.1",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@9.15.5",
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ importers:
|
|||
version: 5.2.6
|
||||
'@prgm/sveltekit-progress-bar':
|
||||
specifier: 2.0.0
|
||||
version: 2.0.0(@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))(svelte@4.2.19)
|
||||
version: 2.0.0(@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))(svelte@4.2.19)
|
||||
'@thaunknown/web-irc':
|
||||
specifier: ^1.0.3
|
||||
version: 1.0.3
|
||||
|
|
@ -143,13 +143,13 @@ importers:
|
|||
version: 1.0.1(svelte@4.2.19)(typescript@5.8.3)
|
||||
'@sveltejs/adapter-static':
|
||||
specifier: ^3.0.8
|
||||
version: 3.0.8(@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))
|
||||
version: 3.0.8(@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))
|
||||
'@sveltejs/kit':
|
||||
specifier: ^2.21.0
|
||||
version: 2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))(svelte@4.2.19)(vite@5.4.19(terser@5.39.0))
|
||||
version: 2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))(svelte@4.2.19)(vite@5.4.19(terser@5.43.1))
|
||||
'@sveltejs/vite-plugin-svelte':
|
||||
specifier: ^3.1.2
|
||||
version: 3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0))
|
||||
version: 3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1))
|
||||
'@types/debug':
|
||||
specifier: ^4.1.12
|
||||
version: 4.1.12
|
||||
|
|
@ -176,7 +176,7 @@ importers:
|
|||
version: 1.8.10(@gql.tada/svelte-support@1.0.1(svelte@4.2.19)(typescript@5.8.3))(graphql@16.10.0)(typescript@5.8.3)
|
||||
hayase-extensions:
|
||||
specifier: github:hayase-app/extensions
|
||||
version: https://codeload.github.com/hayase-app/extensions/tar.gz/a9415c297a899459be34a135a9adbcd72115e019
|
||||
version: https://codeload.github.com/hayase-app/extensions/tar.gz/675c4a7cfa1e2b4e88c2d11c4c195c33c68116e0
|
||||
jassub:
|
||||
specifier: ^1.8.6
|
||||
version: 1.8.6
|
||||
|
|
@ -212,10 +212,10 @@ importers:
|
|||
version: 0.3.2(svelte@4.2.19)
|
||||
vite:
|
||||
specifier: ^5.4.11
|
||||
version: 5.4.19(terser@5.39.0)
|
||||
version: 5.4.19(terser@5.43.1)
|
||||
vite-plugin-static-copy:
|
||||
specifier: ^3.0.2
|
||||
version: 3.0.2(vite@5.4.19(terser@5.39.0))
|
||||
version: 3.0.2(vite@5.4.19(terser@5.43.1))
|
||||
|
||||
packages:
|
||||
|
||||
|
|
@ -488,6 +488,9 @@ packages:
|
|||
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
'@jridgewell/gen-mapping@0.3.12':
|
||||
resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==}
|
||||
|
||||
'@jridgewell/gen-mapping@0.3.8':
|
||||
resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
|
|
@ -509,6 +512,9 @@ packages:
|
|||
'@jridgewell/trace-mapping@0.3.25':
|
||||
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
|
||||
|
||||
'@jridgewell/trace-mapping@0.3.29':
|
||||
resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==}
|
||||
|
||||
'@melt-ui/svelte@0.76.2':
|
||||
resolution: {integrity: sha512-7SbOa11tXUS95T3fReL+dwDs5FyJtCEqrqG3inRziDws346SYLsxOQ6HmX+4BkIsQh1R8U3XNa+EMmdMt38lMA==}
|
||||
peerDependencies:
|
||||
|
|
@ -1574,8 +1580,8 @@ packages:
|
|||
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
hayase-extensions@https://codeload.github.com/hayase-app/extensions/tar.gz/a9415c297a899459be34a135a9adbcd72115e019:
|
||||
resolution: {tarball: https://codeload.github.com/hayase-app/extensions/tar.gz/a9415c297a899459be34a135a9adbcd72115e019}
|
||||
hayase-extensions@https://codeload.github.com/hayase-app/extensions/tar.gz/675c4a7cfa1e2b4e88c2d11c4c195c33c68116e0:
|
||||
resolution: {tarball: https://codeload.github.com/hayase-app/extensions/tar.gz/675c4a7cfa1e2b4e88c2d11c4c195c33c68116e0}
|
||||
version: 1.0.6
|
||||
|
||||
idb-keyval@6.2.2:
|
||||
|
|
@ -2482,8 +2488,8 @@ packages:
|
|||
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
terser@5.39.0:
|
||||
resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==}
|
||||
terser@5.43.1:
|
||||
resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==}
|
||||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
|
||||
|
|
@ -2957,6 +2963,12 @@ snapshots:
|
|||
wrap-ansi: 8.1.0
|
||||
wrap-ansi-cjs: wrap-ansi@7.0.0
|
||||
|
||||
'@jridgewell/gen-mapping@0.3.12':
|
||||
dependencies:
|
||||
'@jridgewell/sourcemap-codec': 1.5.0
|
||||
'@jridgewell/trace-mapping': 0.3.29
|
||||
optional: true
|
||||
|
||||
'@jridgewell/gen-mapping@0.3.8':
|
||||
dependencies:
|
||||
'@jridgewell/set-array': 1.2.1
|
||||
|
|
@ -2969,8 +2981,8 @@ snapshots:
|
|||
|
||||
'@jridgewell/source-map@0.3.6':
|
||||
dependencies:
|
||||
'@jridgewell/gen-mapping': 0.3.8
|
||||
'@jridgewell/trace-mapping': 0.3.25
|
||||
'@jridgewell/gen-mapping': 0.3.12
|
||||
'@jridgewell/trace-mapping': 0.3.29
|
||||
optional: true
|
||||
|
||||
'@jridgewell/sourcemap-codec@1.5.0': {}
|
||||
|
|
@ -2980,6 +2992,12 @@ snapshots:
|
|||
'@jridgewell/resolve-uri': 3.1.2
|
||||
'@jridgewell/sourcemap-codec': 1.5.0
|
||||
|
||||
'@jridgewell/trace-mapping@0.3.29':
|
||||
dependencies:
|
||||
'@jridgewell/resolve-uri': 3.1.2
|
||||
'@jridgewell/sourcemap-codec': 1.5.0
|
||||
optional: true
|
||||
|
||||
'@melt-ui/svelte@0.76.2(svelte@4.2.19)':
|
||||
dependencies:
|
||||
'@floating-ui/core': 1.7.0
|
||||
|
|
@ -3007,9 +3025,9 @@ snapshots:
|
|||
|
||||
'@polka/url@1.0.0-next.29': {}
|
||||
|
||||
'@prgm/sveltekit-progress-bar@2.0.0(@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))(svelte@4.2.19)':
|
||||
'@prgm/sveltekit-progress-bar@2.0.0(@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))(svelte@4.2.19)':
|
||||
dependencies:
|
||||
'@sveltejs/kit': 2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))(svelte@4.2.19)(vite@5.4.19(terser@5.39.0))
|
||||
'@sveltejs/kit': 2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))(svelte@4.2.19)(vite@5.4.19(terser@5.43.1))
|
||||
svelte: 4.2.19
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.40.2':
|
||||
|
|
@ -3090,14 +3108,14 @@ snapshots:
|
|||
dependencies:
|
||||
acorn: 8.14.1
|
||||
|
||||
'@sveltejs/adapter-static@3.0.8(@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))':
|
||||
'@sveltejs/adapter-static@3.0.8(@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))':
|
||||
dependencies:
|
||||
'@sveltejs/kit': 2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))(svelte@4.2.19)(vite@5.4.19(terser@5.39.0))
|
||||
'@sveltejs/kit': 2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))(svelte@4.2.19)(vite@5.4.19(terser@5.43.1))
|
||||
|
||||
'@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))(svelte@4.2.19)(vite@5.4.19(terser@5.39.0))':
|
||||
'@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))(svelte@4.2.19)(vite@5.4.19(terser@5.43.1))':
|
||||
dependencies:
|
||||
'@sveltejs/acorn-typescript': 1.0.5(acorn@8.14.1)
|
||||
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0))
|
||||
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1))
|
||||
'@types/cookie': 0.6.0
|
||||
acorn: 8.14.1
|
||||
cookie: 0.6.0
|
||||
|
|
@ -3110,28 +3128,28 @@ snapshots:
|
|||
set-cookie-parser: 2.7.1
|
||||
sirv: 3.0.1
|
||||
svelte: 4.2.19
|
||||
vite: 5.4.19(terser@5.39.0)
|
||||
vite: 5.4.19(terser@5.43.1)
|
||||
|
||||
'@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))(svelte@4.2.19)(vite@5.4.19(terser@5.39.0))':
|
||||
'@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))(svelte@4.2.19)(vite@5.4.19(terser@5.43.1))':
|
||||
dependencies:
|
||||
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0))
|
||||
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1))
|
||||
debug: 4.4.1
|
||||
svelte: 4.2.19
|
||||
vite: 5.4.19(terser@5.39.0)
|
||||
vite: 5.4.19(terser@5.43.1)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0))':
|
||||
'@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1))':
|
||||
dependencies:
|
||||
'@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.39.0)))(svelte@4.2.19)(vite@5.4.19(terser@5.39.0))
|
||||
'@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(terser@5.43.1)))(svelte@4.2.19)(vite@5.4.19(terser@5.43.1))
|
||||
debug: 4.4.1
|
||||
deepmerge: 4.3.1
|
||||
kleur: 4.1.5
|
||||
magic-string: 0.30.17
|
||||
svelte: 4.2.19
|
||||
svelte-hmr: 0.16.0(svelte@4.2.19)
|
||||
vite: 5.4.19(terser@5.39.0)
|
||||
vitefu: 0.2.5(vite@5.4.19(terser@5.39.0))
|
||||
vite: 5.4.19(terser@5.43.1)
|
||||
vitefu: 0.2.5(vite@5.4.19(terser@5.43.1))
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
|
|
@ -4255,7 +4273,7 @@ snapshots:
|
|||
dependencies:
|
||||
function-bind: 1.1.2
|
||||
|
||||
hayase-extensions@https://codeload.github.com/hayase-app/extensions/tar.gz/a9415c297a899459be34a135a9adbcd72115e019: {}
|
||||
hayase-extensions@https://codeload.github.com/hayase-app/extensions/tar.gz/675c4a7cfa1e2b4e88c2d11c4c195c33c68116e0: {}
|
||||
|
||||
idb-keyval@6.2.2: {}
|
||||
|
||||
|
|
@ -5211,7 +5229,7 @@ snapshots:
|
|||
|
||||
tapable@2.2.1: {}
|
||||
|
||||
terser@5.39.0:
|
||||
terser@5.43.1:
|
||||
dependencies:
|
||||
'@jridgewell/source-map': 0.3.6
|
||||
acorn: 8.14.1
|
||||
|
|
@ -5360,27 +5378,27 @@ snapshots:
|
|||
rvfc-polyfill: 1.0.7
|
||||
twgl.js: 5.5.4
|
||||
|
||||
vite-plugin-static-copy@3.0.2(vite@5.4.19(terser@5.39.0)):
|
||||
vite-plugin-static-copy@3.0.2(vite@5.4.19(terser@5.43.1)):
|
||||
dependencies:
|
||||
chokidar: 3.6.0
|
||||
fs-extra: 11.3.0
|
||||
p-map: 7.0.3
|
||||
picocolors: 1.1.1
|
||||
tinyglobby: 0.2.14
|
||||
vite: 5.4.19(terser@5.39.0)
|
||||
vite: 5.4.19(terser@5.43.1)
|
||||
|
||||
vite@5.4.19(terser@5.39.0):
|
||||
vite@5.4.19(terser@5.43.1):
|
||||
dependencies:
|
||||
esbuild: 0.21.5
|
||||
postcss: 8.5.3
|
||||
rollup: 4.40.2
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.3
|
||||
terser: 5.39.0
|
||||
terser: 5.43.1
|
||||
|
||||
vitefu@0.2.5(vite@5.4.19(terser@5.39.0)):
|
||||
vitefu@0.2.5(vite@5.4.19(terser@5.43.1)):
|
||||
optionalDependencies:
|
||||
vite: 5.4.19(terser@5.39.0)
|
||||
vite: 5.4.19(terser@5.43.1)
|
||||
|
||||
vscode-languageserver-textdocument@1.0.12: {}
|
||||
|
||||
|
|
|
|||
14
src/app.css
14
src/app.css
|
|
@ -34,6 +34,20 @@
|
|||
animation-duration: 0s !important;
|
||||
}
|
||||
|
||||
@supports not (overflow: clip) {
|
||||
.overflow-clip {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.overflow-x-clip {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.overflow-y-clip {
|
||||
overflow-y: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
:root {
|
||||
--background: 0 0% 100%;
|
||||
--foreground: 240 10% 3.9%;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import Root from './button.svelte'
|
|||
import type { Button as ButtonPrimitive } from 'bits-ui'
|
||||
|
||||
const buttonVariants = tv({
|
||||
base: 'focus-visible:ring-ring inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 disabled:pointer-events-none disabled:opacity-50',
|
||||
base: 'bg-transparent focus-visible:ring-ring inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 disabled:pointer-events-none disabled:opacity-50',
|
||||
variants: {
|
||||
variant: {
|
||||
default: 'bg-primary text-primary-foreground select:bg-neutral-500 shadow',
|
||||
|
|
|
|||
|
|
@ -904,7 +904,7 @@
|
|||
<div class='flex flex-col gap-2 text-left cursor-pointer'>
|
||||
<a class='text-white text-lg font-normal leading-none line-clamp-1 hover:text-neutral-300 hover:underline' href='/app/anime/{mediaInfo.media.id}' data-up='#player-options-button-top'>{mediaInfo.session.title}</a>
|
||||
<Sheet.Root portal={wrapper} bind:open={episodeListOpen}>
|
||||
<Sheet.Trigger id='episode-list-button' data-down='#player-seekbar' class='text-[rgba(217,217,217,0.6)] hover:text-neutral-500 text-sm leading-none font-light line-clamp-1 text-left hover:underline'>{mediaInfo.session.description}</Sheet.Trigger>
|
||||
<Sheet.Trigger id='episode-list-button' data-down='#player-seekbar' class='text-[rgba(217,217,217,0.6)] hover:text-neutral-500 text-sm leading-none font-light line-clamp-1 text-left hover:underline bg-transparent'>{mediaInfo.session.description}</Sheet.Trigger>
|
||||
<Sheet.Content class='w-full sm:w-[550px] p-3 sm:p-6 max-w-full sm:max-w-full h-full overflow-y-scroll flex flex-col pb-0 shrink-0 gap-0 bg-black justify-between overflow-x-clip'>
|
||||
{#if mediaInfo.media}
|
||||
{#await Promise.all([episodes(mediaInfo.media.id), client.single(mediaInfo.media.id)]) then [eps, media]}
|
||||
|
|
|
|||
|
|
@ -518,10 +518,6 @@ class AnilistClient {
|
|||
// sveltekit/vite does the funny and evaluates at compile, this is a hack to fix development mode
|
||||
const client = (typeof indexedDB !== 'undefined' && new AnilistClient()) as AnilistClient
|
||||
|
||||
// hydrating the cache re-starts all queries, it's better to wait for cache to hydrate, than waste rate limit on requests which are dumped anyways
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
await client.storagePromise?.promise
|
||||
|
||||
export default client
|
||||
|
||||
export function asyncStore<Result, Variables = AnyVariables> (query: TypedDocumentNode<Result, Variables>, variables: AnyVariables, context?: Partial<OperationContext>): Promise<Writable<Result>> {
|
||||
|
|
|
|||
|
|
@ -18,10 +18,11 @@ export const activityState = readable<'active' | 'inactive'>(document.hasFocus()
|
|||
})
|
||||
|
||||
// @ts-expect-error non-standard API
|
||||
const idleDetector = new IdleDetector()
|
||||
idleDetector.start({ threshold: 60_000 })
|
||||
const idleDetector = typeof IdleDetector !== 'undefined' && new IdleDetector()
|
||||
if (idleDetector) idleDetector.start({ threshold: 60_000 })
|
||||
|
||||
export const idleState = readable<'active' | 'idle'>(idleDetector.userState, set => {
|
||||
if (!idleDetector) return set('active')
|
||||
set(idleDetector.userState)
|
||||
const ctrl = new AbortController()
|
||||
|
||||
|
|
@ -32,6 +33,7 @@ export const idleState = readable<'active' | 'idle'>(idleDetector.userState, set
|
|||
})
|
||||
|
||||
export const lockedState = readable<'locked' | 'unlocked'>(idleDetector.screenState, set => {
|
||||
if (!idleDetector) return set('unlocked')
|
||||
set(idleDetector.screenState)
|
||||
const ctrl = new AbortController()
|
||||
|
||||
|
|
|
|||
|
|
@ -195,7 +195,12 @@ function getElementPosition (element: HTMLElement): ElementPosition {
|
|||
*/
|
||||
function getFocusableElementPositions (): ElementPosition[] {
|
||||
const elements = []
|
||||
for (const element of getKeyboardFocusableElements(document.querySelector('[role="dialog"]') ?? document.querySelector('[role="application"]') ?? document.querySelector(':has(> [role="listbox"])') ?? document.body)) {
|
||||
let listbox: Element | null = null
|
||||
try {
|
||||
// support for :has() pseudo-class, which is not widely supported yet
|
||||
listbox = document.querySelector(':has(> [role="listbox"])')
|
||||
} catch {}
|
||||
for (const element of getKeyboardFocusableElements(document.querySelector('[role="dialog"]') ?? document.querySelector('[role="application"]') ?? listbox ?? document.body)) {
|
||||
const position = getElementPosition(element)
|
||||
elements.push(position)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,3 +26,24 @@ if (typeof Object.groupBy === 'undefined') {
|
|||
}, {})
|
||||
}
|
||||
}
|
||||
|
||||
if (!Array.prototype.at) {
|
||||
// eslint-disable-next-line no-extend-native
|
||||
Array.prototype.at = function <T> (this: T[], index: number): T | undefined {
|
||||
const len = this.length
|
||||
const relativeIndex = Math.trunc(index) || 0
|
||||
const k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex
|
||||
if (k < 0 || k >= len) return undefined
|
||||
return this[k]
|
||||
}
|
||||
}
|
||||
// randomUUID
|
||||
if (typeof crypto.randomUUID === 'undefined') {
|
||||
crypto.randomUUID = () => {
|
||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
|
||||
const r = Math.random() * 16 | 0
|
||||
const v = c === 'x' ? r : (r & 0x3 | 0x8)
|
||||
return v.toString(16)
|
||||
}) as `${string}-${string}-${string}-${string}-${string}`
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import { error, redirect } from '@sveltejs/kit'
|
|||
|
||||
import { dev } from '$app/environment'
|
||||
import { SETUP_VERSION } from '$lib'
|
||||
import { client } from '$lib/modules/anilist'
|
||||
import native from '$lib/modules/native'
|
||||
import { outdatedComponent } from '$lib/modules/update'
|
||||
|
||||
|
|
@ -10,4 +11,9 @@ export async function load () {
|
|||
if (Number(localStorage.getItem('setup-finished')) < SETUP_VERSION) redirect(307, '/setup')
|
||||
|
||||
if (await outdatedComponent) redirect(307, '/update/')
|
||||
|
||||
// hydrating the cache re-starts all queries, it's better to wait for cache to hydrate, than waste rate limit on requests which are dumped anyways
|
||||
// this was previously in anilist/client but it was a top level await, which isn't a great solution, this *should* be better?
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
await client.storagePromise?.promise
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ export default defineConfig({
|
|||
},
|
||||
server: { port: 7344 },
|
||||
build: {
|
||||
target: 'esnext',
|
||||
target: 'es2020',
|
||||
sourcemap: true
|
||||
},
|
||||
ssr: {
|
||||
|
|
|
|||
Loading…
Reference in a new issue