feat: docker compose maybe
This commit is contained in:
12
node_modules/@skeletonlabs/skeleton/dist/utilities/LocalStorageStore/LocalStorageStore.d.ts
generated
vendored
Normal file
12
node_modules/@skeletonlabs/skeleton/dist/utilities/LocalStorageStore/LocalStorageStore.d.ts
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
import { type Writable } from 'svelte/store';
|
||||
interface Serializer<T> {
|
||||
parse(text: string): T;
|
||||
stringify(object: T): string;
|
||||
}
|
||||
type StorageType = 'local' | 'session';
|
||||
interface Options<T> {
|
||||
serializer?: Serializer<T>;
|
||||
storage?: StorageType;
|
||||
}
|
||||
export declare function localStorageStore<T>(key: string, initialValue: T, options?: Options<T>): Writable<T>;
|
||||
export {};
|
49
node_modules/@skeletonlabs/skeleton/dist/utilities/LocalStorageStore/LocalStorageStore.js
generated
vendored
Normal file
49
node_modules/@skeletonlabs/skeleton/dist/utilities/LocalStorageStore/LocalStorageStore.js
generated
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
// Source: https://github.com/joshnuss/svelte-local-storage-store
|
||||
// https://github.com/joshnuss/svelte-local-storage-store/blob/master/index.ts
|
||||
// Represents version v0.4.0 (2023-01-18)
|
||||
import { BROWSER } from 'esm-env';
|
||||
import { writable as internal, get } from 'svelte/store';
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
const stores = {};
|
||||
function getStorage(type) {
|
||||
return type === 'local' ? localStorage : sessionStorage;
|
||||
}
|
||||
export function localStorageStore(key, initialValue, options) {
|
||||
const serializer = options?.serializer ?? JSON;
|
||||
const storageType = options?.storage ?? 'local';
|
||||
function updateStorage(key, value) {
|
||||
if (!BROWSER)
|
||||
return;
|
||||
getStorage(storageType).setItem(key, serializer.stringify(value));
|
||||
}
|
||||
if (!stores[key]) {
|
||||
const store = internal(initialValue, (set) => {
|
||||
const json = BROWSER ? getStorage(storageType).getItem(key) : null;
|
||||
if (json) {
|
||||
set(serializer.parse(json));
|
||||
}
|
||||
if (BROWSER) {
|
||||
const handleStorage = (event) => {
|
||||
if (event.key === key)
|
||||
set(event.newValue ? serializer.parse(event.newValue) : null);
|
||||
};
|
||||
window.addEventListener('storage', handleStorage);
|
||||
return () => window.removeEventListener('storage', handleStorage);
|
||||
}
|
||||
});
|
||||
const { subscribe, set } = store;
|
||||
stores[key] = {
|
||||
set(value) {
|
||||
updateStorage(key, value);
|
||||
set(value);
|
||||
},
|
||||
update(updater) {
|
||||
const value = updater(get(store));
|
||||
updateStorage(key, value);
|
||||
set(value);
|
||||
},
|
||||
subscribe
|
||||
};
|
||||
}
|
||||
return stores[key];
|
||||
}
|
Reference in New Issue
Block a user