{"version":3,"file":"useRouterState.cjs","names":[],"sources":["../../src/useRouterState.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { replaceEqualDeep } from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport type {\n  AnyRouter,\n  RegisteredRouter,\n  RouterState,\n} from '@tanstack/router-core'\nimport type { Accessor } from 'solid-js'\n\nexport type UseRouterStateOptions<TRouter extends AnyRouter, TSelected> = {\n  router?: TRouter\n  select?: (state: RouterState<TRouter['routeTree']>) => TSelected\n}\n\nexport type UseRouterStateResult<\n  TRouter extends AnyRouter,\n  TSelected,\n> = unknown extends TSelected ? RouterState<TRouter['routeTree']> : TSelected\n\nexport function useRouterState<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>(\n  opts?: UseRouterStateOptions<TRouter, TSelected>,\n): Accessor<UseRouterStateResult<TRouter, TSelected>> {\n  const contextRouter = useRouter<TRouter>({\n    warn: opts?.router === undefined,\n  })\n  const router = opts?.router || contextRouter\n\n  if (!opts?.select) {\n    return (() => router.stores.__store.get()) as Accessor<\n      UseRouterStateResult<TRouter, TSelected>\n    >\n  }\n\n  const select = opts.select\n\n  return Solid.createMemo(\n    (prev: TSelected | undefined) => {\n      const res = select(router.stores.__store.get())\n      if (prev === undefined) return res\n      return replaceEqualDeep(prev, res)\n    },\n    { transparent: true } as Solid.MemoOptions<TSelected> & {\n      ssrSource?: 'server' | 'hybrid'\n    },\n  ) as Accessor<UseRouterStateResult<TRouter, TSelected>>\n}\n"],"mappings":";;;;;;AAoBA,SAAgB,eAId,MACoD;CACpD,MAAM,gBAAgB,kBAAA,UAAmB,EACvC,MAAM,MAAM,WAAW,KAAA,EACzB,CAAC;CACD,MAAM,SAAS,MAAM,UAAU;CAE/B,IAAI,CAAC,MAAM,QACT,cAAc,OAAO,OAAO,QAAQ,IAAI;CAK1C,MAAM,SAAS,KAAK;CAEpB,OAAO,SAAM,YACV,SAAgC;EAC/B,MAAM,MAAM,OAAO,OAAO,OAAO,QAAQ,IAAI,CAAC;EAC9C,IAAI,SAAS,KAAA,GAAW,OAAO;EAC/B,QAAA,GAAA,sBAAA,kBAAwB,MAAM,GAAG;CACnC,GACA,EAAE,aAAa,KAAK,CAGtB;AACF"}