{
  "version": 3,
  "sources": ["../src/vue.ts"],
  "sourcesContent": ["/**\n * @module exome/vue\n */\nimport { Exome, subscribe } from \"exome\";\nimport { type Ref, ref, watchEffect } from \"vue\";\n\n/**\n * Subscribes to store instance update events and trigger updates to component accordingly.\n *\n * @example:\n * ```html\n * <script lang=\"ts\" setup>\n *   import { useStore } from \"exome/vue\"\n *   import { counterStore } from \"./counter.store.ts\"\n *\n *   const { count, increment } = useStore(counterStore)\n * </script>\n *\n * <template>\n *   <button @click=\"increment()\">{{ count }}</button>\n * </template>\n * ```\n */\nexport function useStore<T extends Exome>(store: T): Readonly<T> {\n\tconst refs: Record<string, Ref<any>> = {};\n\n\tfunction render() {\n\t\tObject.keys(refs).forEach((key) => {\n\t\t\trefs[key].value = (store as any)[key];\n\t\t});\n\t}\n\n\twatchEffect(() => subscribe(store, render), {\n\t\tflush: \"pre\",\n\t});\n\n\treturn new Proxy(store, {\n\t\tget(target: any, key: string) {\n\t\t\tif (target === store && typeof target[key] === \"function\") {\n\t\t\t\treturn target[key];\n\t\t\t}\n\n\t\t\tif (target && target[key] instanceof Exome) {\n\t\t\t\treturn target[key];\n\t\t\t}\n\n\t\t\treturn refs[key] || (refs[key] = ref(target[key]));\n\t\t},\n\t});\n}\n"],
  "mappings": ";AAGA,SAAS,SAAAA,GAAO,aAAAC,SAAiB;AACjC,SAAmB,OAAAC,GAAK,eAAAC,SAAmB;AAmBpC,SAASC,EAA0BC,GAAuB;AAChE,MAAMC,IAAiC,CAAC;AAExC,WAASC,IAAS;AACjB,WAAO,KAAKD,CAAI,EAAE,QAAQ,CAACE,MAAQ;AAClC,MAAAF,EAAKE,CAAG,EAAE,QAASH,EAAcG,CAAG;AAAA,IACrC,CAAC;AAAA,EACF;AAEA,SAAAL,EAAY,MAAMF,EAAUI,GAAOE,CAAM,GAAG;AAAA,IAC3C,OAAO;AAAA,EACR,CAAC,GAEM,IAAI,MAAMF,GAAO;AAAA,IACvB,IAAII,GAAaD,GAAa;AAK7B,aAJIC,MAAWJ,KAAS,OAAOI,EAAOD,CAAG,KAAM,cAI3CC,KAAUA,EAAOD,CAAG,aAAaR,IAC7BS,EAAOD,CAAG,IAGXF,EAAKE,CAAG,MAAMF,EAAKE,CAAG,IAAIN,EAAIO,EAAOD,CAAG,CAAC;AAAA,IACjD;AAAA,EACD,CAAC;AACF;",
  "names": ["Exome", "subscribe", "ref", "watchEffect", "useStore", "store", "refs", "render", "key", "target"]
}
