{"version":3,"file":"TanStackRouterDevtoolsPanel.cjs","names":[],"sources":["../../src/TanStackRouterDevtoolsPanel.tsx"],"sourcesContent":["'use client'\n\nimport { useRouter, useRouterState } from '@tanstack/react-router'\nimport { TanStackRouterDevtoolsPanelCore } from '@tanstack/router-devtools-core'\nimport React, { useEffect, useRef, useState } from 'react'\nimport type { AnyRouter } from '@tanstack/react-router'\n\nexport interface TanStackRouterDevtoolsPanelOptions {\n  /**\n   * The standard React style object used to style a component with inline styles\n   */\n  style?: any\n  /**\n   * The standard React class property used to style a component with classes\n   */\n  className?: string\n  /**\n   * A boolean variable indicating whether the panel is open or closed\n   */\n  isOpen?: boolean\n  /**\n   * A function that toggles the open and close state of the panel\n   */\n  setIsOpen?: (isOpen: boolean) => void\n  /**\n   * Handles the opening and closing the devtools panel\n   */\n  handleDragStart?: (e: any) => void\n  /**\n   * A boolean variable indicating if the \"lite\" version of the library is being used\n   */\n  router?: AnyRouter\n  /**\n   * Use this to attach the devtool's styles to specific element in the DOM.\n   */\n  shadowDOMTarget?: ShadowRoot\n}\n\nexport const TanStackRouterDevtoolsPanel: React.FC<\n  TanStackRouterDevtoolsPanelOptions\n> = (props): React.ReactElement | null => {\n  const { router: propsRouter, ...rest } = props\n  const hookRouter = useRouter({ warn: false })\n  const activeRouter = propsRouter ?? hookRouter\n  const activeRouterState = useRouterState({ router: activeRouter })\n\n  const devToolRef = useRef<HTMLDivElement>(null)\n  const [devtools] = useState(\n    () =>\n      new TanStackRouterDevtoolsPanelCore({\n        ...rest,\n        router: activeRouter,\n        routerState: activeRouterState,\n      }),\n  )\n\n  // Update devtools when props change\n  useEffect(() => {\n    devtools.setRouter(activeRouter)\n  }, [devtools, activeRouter])\n\n  useEffect(() => {\n    devtools.setRouterState(activeRouterState)\n  }, [devtools, activeRouterState])\n\n  useEffect(() => {\n    devtools.setOptions({\n      className: props.className,\n      style: props.style,\n      shadowDOMTarget: props.shadowDOMTarget,\n    })\n  }, [devtools, props.className, props.style, props.shadowDOMTarget])\n\n  useEffect(() => {\n    if (devToolRef.current) {\n      devtools.mount(devToolRef.current)\n    }\n\n    return () => {\n      devtools.unmount()\n    }\n  }, [devtools])\n\n  return (\n    <>\n      <div ref={devToolRef} />\n    </>\n  )\n}\n"],"mappings":";;;;;;;;AAsCA,IAAa,+BAER,UAAqC;CACxC,MAAM,EAAE,QAAQ,aAAa,GAAG,SAAS;CACzC,MAAM,cAAA,GAAA,uBAAA,WAAuB,EAAE,MAAM,MAAM,CAAC;CAC5C,MAAM,eAAe,eAAe;CACpC,MAAM,qBAAA,GAAA,uBAAA,gBAAmC,EAAE,QAAQ,aAAa,CAAC;CAEjE,MAAM,cAAA,GAAA,MAAA,QAAoC,IAAI;CAC9C,MAAM,CAAC,aAAA,GAAA,MAAA,gBAEH,IAAI,+BAAA,gCAAgC;EAClC,GAAG;EACH,QAAQ;EACR,aAAa;CACf,CAAC,CACL;CAGA,CAAA,GAAA,MAAA,iBAAgB;EACd,SAAS,UAAU,YAAY;CACjC,GAAG,CAAC,UAAU,YAAY,CAAC;CAE3B,CAAA,GAAA,MAAA,iBAAgB;EACd,SAAS,eAAe,iBAAiB;CAC3C,GAAG,CAAC,UAAU,iBAAiB,CAAC;CAEhC,CAAA,GAAA,MAAA,iBAAgB;EACd,SAAS,WAAW;GAClB,WAAW,MAAM;GACjB,OAAO,MAAM;GACb,iBAAiB,MAAM;EACzB,CAAC;CACH,GAAG;EAAC;EAAU,MAAM;EAAW,MAAM;EAAO,MAAM;CAAe,CAAC;CAElE,CAAA,GAAA,MAAA,iBAAgB;EACd,IAAI,WAAW,SACb,SAAS,MAAM,WAAW,OAAO;EAGnC,aAAa;GACX,SAAS,QAAQ;EACnB;CACF,GAAG,CAAC,QAAQ,CAAC;CAEb,OACE,iBAAA,GAAA,kBAAA,KAAA,kBAAA,UAAA,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,KAAK,WAAa,CAAA,EACvB,CAAA;AAEN"}