{"version":3,"file":"index.f55085f4.mjs","sources":["../../../../../../node_modules/svelte/store/index.mjs"],"sourcesContent":["import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n    return {\n        subscribe: writable(value, start).subscribe\n    };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n    let stop;\n    const subscribers = new Set();\n    function set(new_value) {\n        if (safe_not_equal(value, new_value)) {\n            value = new_value;\n            if (stop) { // store is ready\n                const run_queue = !subscriber_queue.length;\n                for (const subscriber of subscribers) {\n                    subscriber[1]();\n                    subscriber_queue.push(subscriber, value);\n                }\n                if (run_queue) {\n                    for (let i = 0; i < subscriber_queue.length; i += 2) {\n                        subscriber_queue[i][0](subscriber_queue[i + 1]);\n                    }\n                    subscriber_queue.length = 0;\n                }\n            }\n        }\n    }\n    function update(fn) {\n        set(fn(value));\n    }\n    function subscribe(run, invalidate = noop) {\n        const subscriber = [run, invalidate];\n        subscribers.add(subscriber);\n        if (subscribers.size === 1) {\n            stop = start(set) || noop;\n        }\n        run(value);\n        return () => {\n            subscribers.delete(subscriber);\n            if (subscribers.size === 0 && stop) {\n                stop();\n                stop = null;\n            }\n        };\n    }\n    return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n    const single = !Array.isArray(stores);\n    const stores_array = single\n        ? [stores]\n        : stores;\n    const auto = fn.length < 2;\n    return readable(initial_value, (set) => {\n        let started = false;\n        const values = [];\n        let pending = 0;\n        let cleanup = noop;\n        const sync = () => {\n            if (pending) {\n                return;\n            }\n            cleanup();\n            const result = fn(single ? values[0] : values, set);\n            if (auto) {\n                set(result);\n            }\n            else {\n                cleanup = is_function(result) ? result : noop;\n            }\n        };\n        const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n            values[i] = value;\n            pending &= ~(1 << i);\n            if (started) {\n                sync();\n            }\n        }, () => {\n            pending |= (1 << i);\n        }));\n        started = true;\n        sync();\n        return function stop() {\n            run_all(unsubscribers);\n            cleanup();\n            // We need to set this to false because callbacks can still happen despite having unsubscribed:\n            // Callbacks might already be placed in the queue which doesn't know it should no longer\n            // invoke this derived store.\n            started = false;\n        };\n    });\n}\n/**\n * Takes a store and returns a new one derived from the old one that is readable.\n *\n * @param store - store to make readonly\n */\nfunction readonly(store) {\n    return {\n        subscribe: store.subscribe.bind(store)\n    };\n}\n\nexport { derived, readable, readonly, writable };\n"],"names":["subscriber_queue","readable","value","start","writable","noop","stop","subscribers","set","new_value","safe_not_equal","run_queue","subscriber","i","update","fn","subscribe","run","invalidate","derived","stores","initial_value","single","stores_array","auto","started","values","pending","cleanup","sync","result","is_function","unsubscribers","store","run_all"],"mappings":"uEAGA,MAAMA,EAAmB,CAAA,EAMzB,SAASC,EAASC,EAAOC,EAAO,CAC5B,MAAO,CACH,UAAWC,EAASF,EAAOC,CAAK,EAAE,SAC1C,CACA,CAMA,SAASC,EAASF,EAAOC,EAAQE,EAAM,CACnC,IAAIC,EACJ,MAAMC,EAAc,IAAI,IACxB,SAASC,EAAIC,EAAW,CACpB,GAAIC,EAAeR,EAAOO,CAAS,IAC/BP,EAAQO,EACJH,GAAM,CACN,MAAMK,EAAY,CAACX,EAAiB,OACpC,UAAWY,KAAcL,EACrBK,EAAW,CAAC,IACZZ,EAAiB,KAAKY,EAAYV,CAAK,EAE3C,GAAIS,EAAW,CACX,QAASE,EAAI,EAAGA,EAAIb,EAAiB,OAAQa,GAAK,EAC9Cb,EAAiBa,CAAC,EAAE,CAAC,EAAEb,EAAiBa,EAAI,CAAC,CAAC,EAElDb,EAAiB,OAAS,GAIzC,CACD,SAASc,EAAOC,EAAI,CAChBP,EAAIO,EAAGb,CAAK,CAAC,CAChB,CACD,SAASc,EAAUC,EAAKC,EAAab,EAAM,CACvC,MAAMO,EAAa,CAACK,EAAKC,CAAU,EACnC,OAAAX,EAAY,IAAIK,CAAU,EACtBL,EAAY,OAAS,IACrBD,EAAOH,EAAMK,CAAG,GAAKH,GAEzBY,EAAIf,CAAK,EACF,IAAM,CACTK,EAAY,OAAOK,CAAU,EACzBL,EAAY,OAAS,GAAKD,IAC1BA,IACAA,EAAO,KAEvB,CACK,CACD,MAAO,CAAE,IAAAE,EAAK,OAAAM,EAAQ,UAAAE,EAC1B,CACA,SAASG,EAAQC,EAAQL,EAAIM,EAAe,CACxC,MAAMC,EAAS,CAAC,MAAM,QAAQF,CAAM,EAC9BG,EAAeD,EACf,CAACF,CAAM,EACPA,EACAI,EAAOT,EAAG,OAAS,EACzB,OAAOd,EAASoB,EAAgBb,GAAQ,CACpC,IAAIiB,EAAU,GACd,MAAMC,EAAS,CAAA,EACf,IAAIC,EAAU,EACVC,EAAUvB,EACd,MAAMwB,EAAO,IAAM,CACf,GAAIF,EACA,OAEJC,IACA,MAAME,EAASf,EAAGO,EAASI,EAAO,CAAC,EAAIA,EAAQlB,CAAG,EAC9CgB,EACAhB,EAAIsB,CAAM,EAGVF,EAAUG,EAAYD,CAAM,EAAIA,EAASzB,CAEzD,EACc2B,EAAgBT,EAAa,IAAI,CAACU,EAAOpB,IAAMG,EAAUiB,EAAQ/B,GAAU,CAC7EwB,EAAOb,CAAC,EAAIX,EACZyB,GAAW,EAAE,GAAKd,GACdY,GACAI,GAEhB,EAAW,IAAM,CACLF,GAAY,GAAKd,CACpB,CAAA,CAAC,EACF,OAAAY,EAAU,GACVI,IACO,UAAgB,CACnBK,EAAQF,CAAa,EACrBJ,IAIAH,EAAU,EACtB,CACA,CAAK,CACL","x_google_ignoreList":[0]}