diff --git a/src/lib/components/AnimateScale.svelte b/src/lib/components/AnimateScale.svelte
index 6cfcd41..a1a799a 100644
--- a/src/lib/components/AnimateScale.svelte
+++ b/src/lib/components/AnimateScale.svelte
@@ -1,18 +1,22 @@
diff --git a/src/lib/components/Card/Card.svelte b/src/lib/components/Card/Card.svelte
index 42f757d..e4baa8d 100644
--- a/src/lib/components/Card/Card.svelte
+++ b/src/lib/components/Card/Card.svelte
@@ -43,7 +43,7 @@
on:enter
class={classNames(
'relative flex flex-shrink-0 rounded-xl group hover:text-inherit overflow-hidden text-left cursor-pointer',
- 'transition-transform selectable',
+ 'selectable',
{
'aspect-video': orientation === 'landscape',
'aspect-[2/3]': orientation === 'portrait',
@@ -63,54 +63,51 @@
src={backdropUrl}
class="absolute inset-0 group-hover:scale-105 transition-transform"
/>
-
-
-
-
-
-
-
-
-
-
{title}
- {subtitle}
-
-
-
-
-
-
-
-
-
- {#if rating}
-
- {rating.toFixed(1)}
-
- {/if}
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{#if jellyfinId}
+ import Container from '../../Container.svelte';
+ import { createEventDispatcher } from 'svelte';
+
+ const dispatch = createEventDispatcher<{
+ change: boolean;
+ }>();
+
+ export let checked: boolean;
+ let input: HTMLInputElement;
+
+ const handleChange = (e: Event) => {
+ checked = e.target?.checked;
+ dispatch('change', e.target?.checked);
+ };
+
+
+ {
+ e.detail.options.setFocusedElement = input;
+ }}
+ on:clickOrSelect={() => input?.click()}
+>
+
+
+
diff --git a/src/lib/pages/ManagePage.svelte b/src/lib/pages/ManagePage.svelte
index e591521..fa0e36d 100644
--- a/src/lib/pages/ManagePage.svelte
+++ b/src/lib/pages/ManagePage.svelte
@@ -4,34 +4,50 @@
import Button from '../components/Button.svelte';
import { onMount } from 'svelte';
import { isTizen } from '../utils/browser-detection';
+ import Toggle from '../components/Toggle.svelte';
+ import { localSettings } from '../stores/localstorage.store';
let lastKeyCode = 0;
let lastKey = '';
let tizenMediaKey = '';
- onMount(() => {
- if (isTizen()) {
- var myMediaKeyChangeListener = {
- onpressed: function (key: string) {
- console.log('Pressed key: ' + key);
- tizenMediaKey = key;
- }
- };
-
- // eslint-disable-next-line no-undef
- tizen.tvinputdevice.registerKey('MediaPlayPause');
- (tizen as any).mediakey.setMediaKeyEventListener(myMediaKeyChangeListener);
- }
- });
+ // onMount(() => {
+ // if (isTizen()) {
+ // const myMediaKeyChangeListener = {
+ // onpressed: function (key: string) {
+ // console.log('Pressed key: ' + key);
+ // tizenMediaKey = key;
+ // }
+ // };
+ //
+ // // eslint-disable-next-line no-undef
+ // tizen?.tvinputdevice?.registerKey?.('MediaPlayPause');
+ // (tizen as any)?.mediakey?.setMediaKeyEventListener?.(myMediaKeyChangeListener);
+ // }
+ // });
- User agent: {window.navigator.userAgent}
+ User agent: {window?.navigator?.userAgent}
Last key code: {lastKeyCode}
Last key: {lastKey}
{#if tizenMediaKey}
Tizen media key: {tizenMediaKey}
{/if}
+
+
+ localSettings.update((p) => ({ ...p, animateScrolling: detail }))}
+ />
+
+
+
+ localSettings.update((p) => ({ ...p, useCssTransitions: detail }))}
+ />
+
diff --git a/src/lib/selectable.ts b/src/lib/selectable.ts
index ae0c4eb..e11872c 100644
--- a/src/lib/selectable.ts
+++ b/src/lib/selectable.ts
@@ -1,5 +1,6 @@
import { derived, get, type Readable, type Writable, writable } from 'svelte/store';
import { getScrollParent } from './utils';
+import { localSettings } from './stores/localstorage.store';
export type Registerer = (htmlElement: HTMLElement) => { destroy: () => void };
export type Registrar = (e: CustomEvent) => () => void;
@@ -727,6 +728,8 @@ export const scrollElementIntoView = (htmlElement: HTMLElement, offsets: Offsets
offsets.right = offsets.all;
}
+ const scrollBehavior: ScrollBehavior = get(localSettings).animateScrolling ? 'smooth' : 'instant';
+
const boundingRect = htmlElement.getBoundingClientRect();
const verticalParent = getScrollParent(htmlElement, 'vertical');
const horizontalParent = getScrollParent(htmlElement, 'horizontal');
@@ -763,7 +766,7 @@ export const scrollElementIntoView = (htmlElement: HTMLElement, offsets: Offsets
if (top !== -1) {
verticalParent.scrollTo({
- behavior: 'smooth',
+ behavior: scrollBehavior,
top
});
}
@@ -800,7 +803,7 @@ export const scrollElementIntoView = (htmlElement: HTMLElement, offsets: Offsets
if (left !== -1) {
horizontalParent.scrollTo({
- behavior: 'smooth',
+ behavior: scrollBehavior,
left
});
}
diff --git a/src/lib/stores/localstorage.store.ts b/src/lib/stores/localstorage.store.ts
index 2e95474..6e03f8d 100644
--- a/src/lib/stores/localstorage.store.ts
+++ b/src/lib/stores/localstorage.store.ts
@@ -29,3 +29,10 @@ export const videoPlayerSettings = createLocalStorageStore<{
muted: false,
volume: 1
});
+export const localSettings = createLocalStorageStore<{
+ animateScrolling: boolean;
+ useCssTransitions: boolean;
+}>('settings', {
+ animateScrolling: true,
+ useCssTransitions: true
+});