{"version":3,"file":"useNavigate.cjs","sources":["../../src/useNavigate.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useRouter } from './useRouter'\nimport { useMatch } from './useMatch'\nimport type {\n  AnyRouter,\n  FromPathOption,\n  NavigateOptions,\n  RegisteredRouter,\n  UseNavigateResult,\n} from '@tanstack/router-core'\n\nexport function useNavigate<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TDefaultFrom extends string = string,\n>(_defaultOpts?: {\n  from?: FromPathOption<TRouter, TDefaultFrom>\n}): UseNavigateResult<TDefaultFrom> {\n  const { navigate, state } = useRouter()\n\n  // Just get the index of the current match to avoid rerenders\n  // as much as possible\n  const matchIndex = useMatch({\n    strict: false,\n    select: (match) => match.index,\n  })\n\n  return React.useCallback(\n    (options: NavigateOptions) => {\n      const from =\n        options.from ??\n        _defaultOpts?.from ??\n        state.matches[matchIndex]!.fullPath\n\n      return navigate({\n        ...options,\n        from,\n      })\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [_defaultOpts?.from, navigate],\n  ) as UseNavigateResult<TDefaultFrom>\n}\n\nexport function Navigate<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string = string,\n  const TTo extends string | undefined = undefined,\n  const TMaskFrom extends string = TFrom,\n  const TMaskTo extends string = '',\n>(props: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): null {\n  const router = useRouter()\n  const navigate = useNavigate()\n\n  const previousPropsRef = React.useRef<NavigateOptions<\n    TRouter,\n    TFrom,\n    TTo,\n    TMaskFrom,\n    TMaskTo\n  > | null>(null)\n  React.useEffect(() => {\n    if (previousPropsRef.current !== props) {\n      navigate(props)\n      previousPropsRef.current = props\n    }\n  }, [router, props, navigate])\n  return null\n}\n"],"names":["useRouter","useMatch","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAWO,SAAS,YAGd,cAEkC;AAClC,QAAM,EAAE,UAAU,MAAM,IAAIA,oBAAU;AAItC,QAAM,aAAaC,SAAAA,SAAS;AAAA,IAC1B,QAAQ;AAAA,IACR,QAAQ,CAAC,UAAU,MAAM;AAAA,EAAA,CAC1B;AAED,SAAOC,iBAAM;AAAA,IACX,CAAC,YAA6B;AACtB,YAAA,OACJ,QAAQ,SACR,6CAAc,SACd,MAAM,QAAQ,UAAU,EAAG;AAE7B,aAAO,SAAS;AAAA,QACd,GAAG;AAAA,QACH;AAAA,MAAA,CACD;AAAA,IACH;AAAA;AAAA,IAEA,CAAC,6CAAc,MAAM,QAAQ;AAAA,EAC/B;AACF;AAEO,SAAS,SAMd,OAAuE;AACvE,QAAM,SAASF,UAAAA,UAAU;AACzB,QAAM,WAAW,YAAY;AAEvB,QAAA,mBAAmBE,iBAAM,OAMrB,IAAI;AACdA,mBAAM,UAAU,MAAM;AAChB,QAAA,iBAAiB,YAAY,OAAO;AACtC,eAAS,KAAK;AACd,uBAAiB,UAAU;AAAA,IAAA;AAAA,EAE5B,GAAA,CAAC,QAAQ,OAAO,QAAQ,CAAC;AACrB,SAAA;AACT;;;"}