import { persisted } from 'svelte-local-storage-store'; import { writable } from 'svelte/store'; export enum SlideshowState { PlaySlideshow = 'play-slideshow', StopSlideshow = 'stop-slideshow', None = 'none', } export enum SlideshowNavigation { Shuffle = 'shuffle', AscendingOrder = 'ascending-order', DescendingOrder = 'descending-order', } function createSlideshowStore() { const restartState = writable(false); const stopState = writable(false); const slideshowNavigation = persisted( 'slideshow-navigation', SlideshowNavigation.DescendingOrder, ); const slideshowState = writable(SlideshowState.None); const showProgressBar = persisted('slideshow-show-progressbar', true); const slideshowDelay = persisted('slideshow-delay', 5, {}); return { restartProgress: { subscribe: restartState.subscribe, set: (value: boolean) => { // Trigger an action whenever the restartProgress is set to true. Automatically // reset the restart state after that if (value) { restartState.set(true); restartState.set(false); } }, }, stopProgress: { subscribe: stopState.subscribe, set: (value: boolean) => { // Trigger an action whenever the stopProgress is set to true. Automatically // reset the stop state after that if (value) { stopState.set(true); stopState.set(false); } }, }, slideshowNavigation, slideshowState, slideshowDelay, showProgressBar, }; } export const slideshowStore = createSlideshowStore();