UNPKG

exome

Version:

State manager for deeply nested states

8 lines (7 loc) 1.27 kB
{ "version": 3, "sources": ["../src/svelte.ts"], "sourcesContent": ["/**\n * @module exome/svelte\n */\nimport { type Exome, subscribe } from \"exome\";\n\n/**\n * Subscribes to store instance update events and trigger updates to component accordingly.\n *\n * @example:\n * ```html\n * <script lang=\"ts\">\n * import { useStore } from \"exome/svelte\"\n * import { counterStore } from \"./counter.store.ts\"\n *\n * const { increment } = counterStore\n * const count = useStore(counterStore, s => s.count)\n * </script>\n *\n * <main>\n * <button on:click={increment}>{$count}</button>\n * </main>\n * ```\n */\nexport function useStore<T extends Exome, R = T>(\n\tstore: T,\n\tselector: (state: T) => R = (v) => v as any,\n): {\n\tsubscribe(cb: (value: R) => void): () => void;\n} {\n\treturn {\n\t\tsubscribe(cb: (value: R) => void) {\n\t\t\tcb(selector(store));\n\t\t\treturn subscribe(store, () => cb(selector(store)));\n\t\t},\n\t};\n}\n"], "mappings": ";AAGA,SAAqB,aAAAA,SAAiB;AAoB/B,SAASC,EACfC,GACAC,IAA4B,CAACC,MAAMA,GAGlC;AACD,SAAO;AAAA,IACN,UAAUC,GAAwB;AACjC,aAAAA,EAAGF,EAASD,CAAK,CAAC,GACXF,EAAUE,GAAO,MAAMG,EAAGF,EAASD,CAAK,CAAC,CAAC;AAAA,IAClD;AAAA,EACD;AACD;", "names": ["subscribe", "useStore", "store", "selector", "v", "cb"] }