UNPKG

exome

Version:

State manager for deeply nested states

8 lines (7 loc) 1.49 kB
{ "version": 3, "sources": ["../src/solid.ts"], "sourcesContent": ["/**\n * @module exome/solid\n */\nimport { type Exome, subscribe } from \"exome\";\nimport { type Accessor, createSignal, onCleanup } from \"solid-js\";\n\n/**\n * Subscribes to store instance update events and trigger updates to component accordingly.\n *\n * @example:\n * ```ts\n * import { useStore } from \"exome/solid\"\n * import { counterStore } from \"./counter.store.ts\"\n *\n * function App() {\n * const { count, increment } = useStore(counterStore, s => s.count)\n *\n * return (\n * <button onClick={increment}>{count}</button>\n * );\n * }\n * ```\n */\nexport function useStore<T extends Exome, R = T>(\n\tstore: T,\n\tselector: (state: T) => R = (v) => v as any,\n): Accessor<R> {\n\tconst [value, setValue] = createSignal(selector(store));\n\n\tfunction render() {\n\t\tsetValue(() => selector(store));\n\t}\n\n\tconst unsubscribe = subscribe(store, render);\n\tonCleanup(() => unsubscribe);\n\n\treturn value;\n}\n"], "mappings": ";AAGA,SAAqB,aAAAA,SAAiB;AACtC,SAAwB,gBAAAC,GAAc,aAAAC,SAAiB;AAmBhD,SAASC,EACfC,GACAC,IAA4B,CAACC,MAAMA,GACrB;AACd,MAAM,CAACC,GAAOC,CAAQ,IAAIP,EAAaI,EAASD,CAAK,CAAC;AAEtD,WAASK,IAAS;AACjB,IAAAD,EAAS,MAAMH,EAASD,CAAK,CAAC;AAAA,EAC/B;AAEA,MAAMM,IAAcV,EAAUI,GAAOK,CAAM;AAC3C,SAAAP,EAAU,MAAMQ,CAAW,GAEpBH;AACR;", "names": ["subscribe", "createSignal", "onCleanup", "useStore", "store", "selector", "v", "value", "setValue", "render", "unsubscribe"] }