{"version":3,"file":"index.cjs","names":["createSignal","lazy","render","ShadowDomTargetContext","AnyRouter","Signal","TanStackRouterDevtoolsCoreOptions","initialIsOpen","panelProps","ref","closeButtonProps","toggleButtonProps","position","containerElement","router","routerState","shadowDOMTarget","ShadowRoot","TanStackRouterDevtoolsCore","isMounted","Component","dispose","constructor","config","mount","HTMLElement","el","T","Error","Devtools","_$createComponent","Provider","value","children","unmount","setRouter","setRouterState","setOptions","options","Partial","undefined","render","createSignal","lazy","DevtoolsOnCloseContext","ShadowDomTargetContext","JSX","AnyRouter","TanStackRouterDevtoolsPanelCoreOptions","style","CSSProperties","className","isOpen","setIsOpen","handleDragStart","e","router","routerState","shadowDOMTarget","ShadowRoot","TanStackRouterDevtoolsPanelCore","isMounted","dispose","Component","constructor","config","mount","HTMLElement","el","T","Error","BaseTanStackRouterDevtoolsPanel","_$createComponent","Provider","value","children","onCloseClick","unmount","setRouter","setRouterState","setStyle","setClassName","setOptions","options","Partial","undefined"],"sources":["../../src/TanStackRouterDevtoolsCore.tsx","../../src/TanStackRouterDevtoolsPanelCore.tsx"],"sourcesContent":["import { createSignal, lazy } from 'solid-js'\nimport { render } from 'solid-js/web'\nimport { ShadowDomTargetContext } from './context'\nimport type { AnyRouter } from '@tanstack/router-core'\nimport type { Signal } from 'solid-js'\n\nexport interface TanStackRouterDevtoolsCoreOptions {\n  /**\n   * Set this true if you want the dev tools to default to being open\n   */\n  initialIsOpen?: boolean\n  /**\n   * Use this to add props to the panel. For example, you can add class, style (merge and override default style), etc.\n   */\n  panelProps?: any & {\n    ref?: any\n  }\n  /**\n   * Use this to add props to the close button. For example, you can add class, style (merge and override default style), onClick (extend default handler), etc.\n   */\n  closeButtonProps?: any & {\n    ref?: any\n  }\n  /**\n   * Use this to add props to the toggle button. For example, you can add class, style (merge and override default style), onClick (extend default handler), etc.\n   */\n  toggleButtonProps?: any & {\n    ref?: any\n  }\n  /**\n   * The position of the TanStack Router logo to open and close the devtools panel.\n   * Defaults to 'bottom-left'.\n   */\n  position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\n  /**\n   * Use this to render the devtools inside a different type of container element for a11y purposes.\n   * Any string which corresponds to a valid intrinsic JSX element is allowed.\n   * Defaults to 'footer'.\n   */\n  containerElement?: string | any\n  /**\n   * A boolean variable indicating if the \"lite\" version of the library is being used\n   */\n  router: AnyRouter\n  routerState: any\n  /**\n   * Use this to attach the devtool's styles to specific element in the DOM.\n   */\n  shadowDOMTarget?: ShadowRoot\n}\n\nexport class TanStackRouterDevtoolsCore {\n  #router: Signal<AnyRouter>\n  #routerState: Signal<any>\n  #position: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\n  #initialIsOpen: boolean\n  #shadowDOMTarget?: ShadowRoot\n\n  #panelProps: any\n  #closeButtonProps: any\n  #toggleButtonProps: any\n  #containerElement?: string | any\n\n  #isMounted = false\n  #Component: any\n  #dispose?: () => void\n\n  constructor(config: TanStackRouterDevtoolsCoreOptions) {\n    this.#router = createSignal(config.router)\n    this.#routerState = createSignal(config.routerState)\n    this.#position = config.position ?? 'bottom-left'\n    this.#initialIsOpen = config.initialIsOpen ?? false\n    this.#shadowDOMTarget = config.shadowDOMTarget\n\n    this.#panelProps = config.panelProps\n    this.#closeButtonProps = config.closeButtonProps\n    this.#toggleButtonProps = config.toggleButtonProps\n    this.#containerElement = config.containerElement\n  }\n\n  mount<T extends HTMLElement>(el: T) {\n    if (this.#isMounted) {\n      throw new Error('Devtools is already mounted')\n    }\n\n    const dispose = render(() => {\n      const [router] = this.#router\n      const [routerState] = this.#routerState\n      const position = this.#position\n      const initialIsOpen = this.#initialIsOpen\n      const shadowDOMTarget = this.#shadowDOMTarget\n\n      const panelProps = this.#panelProps\n      const closeButtonProps = this.#closeButtonProps\n      const toggleButtonProps = this.#toggleButtonProps\n      const containerElement = this.#containerElement\n\n      let Devtools\n\n      if (this.#Component) {\n        Devtools = this.#Component\n      } else {\n        Devtools = lazy(() => import('./FloatingTanStackRouterDevtools'))\n        this.#Component = Devtools\n      }\n\n      return (\n        <ShadowDomTargetContext.Provider value={shadowDOMTarget}>\n          <Devtools\n            position={position}\n            initialIsOpen={initialIsOpen}\n            router={router}\n            routerState={routerState}\n            shadowDOMTarget={shadowDOMTarget}\n            panelProps={panelProps}\n            closeButtonProps={closeButtonProps}\n            toggleButtonProps={toggleButtonProps}\n            containerElement={containerElement}\n          />\n        </ShadowDomTargetContext.Provider>\n      )\n    }, el)\n\n    this.#isMounted = true\n    this.#dispose = dispose\n  }\n\n  unmount() {\n    if (!this.#isMounted) {\n      throw new Error('Devtools is not mounted')\n    }\n    this.#dispose?.()\n    this.#isMounted = false\n  }\n\n  setRouter(router: AnyRouter) {\n    this.#router[1](router)\n  }\n\n  setRouterState(routerState: any) {\n    this.#routerState[1](routerState)\n  }\n\n  setOptions(options: Partial<TanStackRouterDevtoolsCoreOptions>) {\n    if (options.position !== undefined) {\n      this.#position = options.position\n    }\n\n    if (options.initialIsOpen !== undefined) {\n      this.#initialIsOpen = options.initialIsOpen\n    }\n\n    if (options.shadowDOMTarget !== undefined) {\n      this.#shadowDOMTarget = options.shadowDOMTarget\n    }\n\n    if (options.containerElement !== undefined) {\n      this.#containerElement = options.containerElement\n    }\n  }\n}\n","import { render } from 'solid-js/web'\nimport { createSignal, lazy } from 'solid-js'\nimport { DevtoolsOnCloseContext, ShadowDomTargetContext } from './context'\nimport type { JSX } from 'solid-js'\nimport type { AnyRouter } from '@tanstack/router-core'\n\nexport interface TanStackRouterDevtoolsPanelCoreOptions {\n  /**\n   * The standard React style object used to style a component with inline styles\n   */\n  style?: JSX.CSSProperties\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  routerState: any\n  /**\n   * Use this to attach the devtool's styles to specific element in the DOM.\n   */\n  shadowDOMTarget?: ShadowRoot\n}\n\nexport class TanStackRouterDevtoolsPanelCore {\n  #router: any\n  #routerState: any\n  #style: any\n  #className: any\n  #shadowDOMTarget?: ShadowRoot\n  #isMounted = false\n  #setIsOpen?: (isOpen: boolean) => void\n  #dispose?: () => void\n  #Component: any\n\n  constructor(config: TanStackRouterDevtoolsPanelCoreOptions) {\n    const {\n      router,\n      routerState,\n      shadowDOMTarget,\n      setIsOpen,\n      style,\n      className,\n    } = config\n\n    this.#router = createSignal(router)\n    this.#routerState = createSignal(routerState)\n    this.#style = createSignal(style)\n    this.#className = createSignal(className)\n    this.#shadowDOMTarget = shadowDOMTarget\n    this.#setIsOpen = setIsOpen\n  }\n\n  mount<T extends HTMLElement>(el: T) {\n    if (this.#isMounted) {\n      throw new Error('Devtools is already mounted')\n    }\n\n    const dispose = render(() => {\n      const [router] = this.#router\n      const [routerState] = this.#routerState\n      const [style] = this.#style\n      const [className] = this.#className\n      const shadowDOMTarget = this.#shadowDOMTarget\n      const setIsOpen = this.#setIsOpen\n\n      let BaseTanStackRouterDevtoolsPanel\n\n      if (this.#Component) {\n        BaseTanStackRouterDevtoolsPanel = this.#Component\n      } else {\n        BaseTanStackRouterDevtoolsPanel = lazy(\n          () => import('./BaseTanStackRouterDevtoolsPanel'),\n        )\n        this.#Component = BaseTanStackRouterDevtoolsPanel\n      }\n\n      return (\n        <ShadowDomTargetContext.Provider value={shadowDOMTarget}>\n          <DevtoolsOnCloseContext.Provider\n            value={{\n              onCloseClick: () => {},\n            }}\n          >\n            <BaseTanStackRouterDevtoolsPanel\n              router={router}\n              routerState={routerState}\n              shadowDOMTarget={shadowDOMTarget}\n              setIsOpen={setIsOpen}\n              style={style}\n              className={className}\n            />\n          </DevtoolsOnCloseContext.Provider>\n        </ShadowDomTargetContext.Provider>\n      )\n    }, el)\n\n    this.#isMounted = true\n    this.#dispose = dispose\n  }\n\n  unmount() {\n    if (!this.#isMounted) {\n      throw new Error('Devtools is not mounted')\n    }\n    this.#dispose?.()\n    this.#isMounted = false\n  }\n\n  setRouter(router: AnyRouter) {\n    this.#router[1](router)\n  }\n\n  setRouterState(routerState: any) {\n    this.#routerState[1](routerState)\n  }\n\n  setStyle(style: any) {\n    this.#style[1](style)\n  }\n\n  setClassName(className: any) {\n    this.#className[1](className)\n  }\n\n  setOptions(options: Partial<TanStackRouterDevtoolsPanelCoreOptions>) {\n    if (options.shadowDOMTarget !== undefined) {\n      this.#shadowDOMTarget = options.shadowDOMTarget\n    }\n    if (options.router !== undefined) {\n      this.setRouter(options.router)\n    }\n    if (options.routerState !== undefined) {\n      this.setRouterState(options.routerState)\n    }\n\n    if (options.style !== undefined) {\n      this.setStyle(options.style)\n    }\n\n    if (options.className !== undefined) {\n      this.setClassName(options.className)\n    }\n  }\n}\n"],"mappings":"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"}