{"version":3,"file":"createMicroStore.cjs","names":["reuseMicroStore"],"sources":["../../src/createMicroStore/createMicroStore.ts"],"sourcesContent":["import { createMicroStore as createToolsMicroStore } from '@pastweb/tools';\nimport { reuseMicroStore } from './reuseMicroStore';\nimport type {\n  MicroStoreActions,\n  ReactMicroStoreSelector,\n  Selector,\n} from './reuseMicroStore';\nimport type { MicroStoreConfig, ReactUseMicroStore } from './types';\n\n/**\n * Creates a tools micro-store and returns a React-ready hook for it.\n *\n * The parameters match `createMicroStore` from `@pastweb/tools`. The returned\n * hook uses {@link reuseMicroStore} internally, so React components re-render\n * when the selected micro-store state changes.\n *\n * @typeParam S - Micro-store state shape.\n * @typeParam A - Micro-store action shape.\n * @param name - Unique store name.\n * @param setup - Tools micro-store setup function.\n * @returns React hook for reading the micro-store.\n *\n * @example\n * ```tsx\n * const useCounterStore = createMicroStore('counter', () => ({\n *   state: { count: 0 },\n *   actions: {\n *     increment() {\n *       this.state.count += 1;\n *     },\n *   },\n * }));\n *\n * function Counter() {\n *   const counter = useCounterStore(state => state.count);\n *\n *   return <button onClick={counter.increment}>{counter.state}</button>;\n * }\n * ```\n */\nexport function createMicroStore<S extends Record<string, any>, A extends MicroStoreActions>(\n  name: string,\n  setup: (select: <T>(fn: Selector<T, S>) => T) => MicroStoreConfig<S, A>,\n): ReactUseMicroStore<S, A> {\n  const store = createToolsMicroStore(name, setup);\n\n  function useReactMicroStore<T>(selector?: ReactMicroStoreSelector<T, S>) {\n    return selector ? reuseMicroStore(store, selector) : reuseMicroStore(store);\n  }\n\n  return useReactMicroStore as ReactUseMicroStore<S, A>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,SAAgB,iBACd,MACA,OAC0B;CAC1B,MAAM,SAAA,GAAA,eAAA,iBAAA,CAA8B,MAAM,KAAK;CAE/C,SAAS,mBAAsB,UAA0C;EACvE,OAAO,WAAWA,yDAAAA,gBAAgB,OAAO,QAAQ,IAAIA,yDAAAA,gBAAgB,KAAK;CAC5E;CAEA,OAAO;AACT"}