{"version":3,"file":"inject-devtools-panel.mjs","sources":["../../src/devtools-panel/inject-devtools-panel.ts"],"sourcesContent":["import {\n  DestroyRef,\n  Injector,\n  PLATFORM_ID,\n  assertInInjectionContext,\n  computed,\n  effect,\n  inject,\n  runInInjectionContext,\n  untracked,\n} from '@angular/core'\nimport { QueryClient, onlineManager } from '@tanstack/query-core'\nimport { isPlatformBrowser } from '@angular/common'\nimport type { TanstackQueryDevtoolsPanel } from '@tanstack/query-devtools'\nimport type {\n  DevtoolsPanelOptions,\n  InjectDevtoolsPanel,\n  InjectDevtoolsPanelOptions,\n} from './types'\n\n/**\n * Inject a TanStack Query devtools panel and render it in the DOM.\n *\n * Devtools panel allows programmatic control over the devtools, for example if you want to render\n * the devtools as part of your own devtools.\n *\n * Consider `withDevtools` instead if you don't need this.\n * @param injectDevtoolsPanelFn - A function that returns devtools panel options.\n * @param options - Additional configuration\n * @returns DevtoolsPanelRef\n * @see https://tanstack.com/query/v5/docs/framework/angular/devtools\n */\nexport const injectDevtoolsPanel: InjectDevtoolsPanel = (\n  injectDevtoolsPanelFn: () => DevtoolsPanelOptions,\n  options?: InjectDevtoolsPanelOptions,\n) => {\n  !options?.injector && assertInInjectionContext(injectDevtoolsPanel)\n  const currentInjector = options?.injector ?? inject(Injector)\n\n  return runInInjectionContext(currentInjector, () => {\n    const destroyRef = inject(DestroyRef)\n    const isBrowser = isPlatformBrowser(inject(PLATFORM_ID))\n    const injectedClient = inject(QueryClient, { optional: true })\n\n    const queryOptions = computed(injectDevtoolsPanelFn)\n    let devtools: TanstackQueryDevtoolsPanel | null = null\n\n    const destroy = () => {\n      devtools?.unmount()\n      devtools = null\n    }\n\n    if (!isBrowser)\n      return {\n        destroy,\n      }\n\n    effect(() => {\n      const {\n        client = injectedClient,\n        errorTypes = [],\n        styleNonce,\n        shadowDOMTarget,\n        onClose,\n        hostElement,\n      } = queryOptions()\n\n      untracked(() => {\n        if (!client) throw new Error('No QueryClient found')\n        if (!devtools && hostElement) {\n          import('@tanstack/query-devtools')\n            .then((queryDevtools) => {\n              devtools = new queryDevtools.TanstackQueryDevtoolsPanel({\n                client,\n                queryFlavor: 'Angular Query',\n                version: '5',\n                buttonPosition: 'bottom-left',\n                position: 'bottom',\n                initialIsOpen: true,\n                errorTypes,\n                styleNonce,\n                shadowDOMTarget,\n                onClose,\n                onlineManager,\n              })\n              devtools.mount(hostElement.nativeElement)\n            })\n            .catch((error) => {\n              console.error(\n                'Install @tanstack/query-devtools or reinstall without --omit=optional.',\n                error,\n              )\n            })\n        } else if (devtools && hostElement) {\n          devtools.setClient(client)\n          devtools.setErrorTypes(errorTypes)\n          onClose && devtools.setOnClose(onClose)\n        } else if (devtools && !hostElement) {\n          destroy()\n        }\n      })\n    })\n\n    destroyRef.onDestroy(destroy)\n\n    return {\n      destroy,\n    }\n  })\n}\n"],"names":[],"mappings":";;;AAgCO,MAAM,sBAA2C,CACtD,uBACA,YACG;AACH,IAAC,mCAAS,aAAY,yBAAyB,mBAAmB;AAClE,QAAM,mBAAkB,mCAAS,aAAY,OAAO,QAAQ;AAE5D,SAAO,sBAAsB,iBAAiB,MAAM;AAClD,UAAM,aAAa,OAAO,UAAU;AACpC,UAAM,YAAY,kBAAkB,OAAO,WAAW,CAAC;AACvD,UAAM,iBAAiB,OAAO,aAAa,EAAE,UAAU,MAAM;AAE7D,UAAM,eAAe,SAAS,qBAAqB;AACnD,QAAI,WAA8C;AAElD,UAAM,UAAU,MAAM;AACpB,2CAAU;AACV,iBAAW;AAAA,IACb;AAEA,QAAI,CAAC;AACH,aAAO;AAAA,QACL;AAAA,MAAA;AAGJ,WAAO,MAAM;AACX,YAAM;AAAA,QACJ,SAAS;AAAA,QACT,aAAa,CAAA;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,IACE,aAAA;AAEJ,gBAAU,MAAM;AACd,YAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,sBAAsB;AACnD,YAAI,CAAC,YAAY,aAAa;AAC5B,iBAAO,0BAA0B,EAC9B,KAAK,CAAC,kBAAkB;AACvB,uBAAW,IAAI,cAAc,2BAA2B;AAAA,cACtD;AAAA,cACA,aAAa;AAAA,cACb,SAAS;AAAA,cACT,gBAAgB;AAAA,cAChB,UAAU;AAAA,cACV,eAAe;AAAA,cACf;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA,CACD;AACD,qBAAS,MAAM,YAAY,aAAa;AAAA,UAC1C,CAAC,EACA,MAAM,CAAC,UAAU;AAChB,oBAAQ;AAAA,cACN;AAAA,cACA;AAAA,YAAA;AAAA,UAEJ,CAAC;AAAA,QACL,WAAW,YAAY,aAAa;AAClC,mBAAS,UAAU,MAAM;AACzB,mBAAS,cAAc,UAAU;AACjC,qBAAW,SAAS,WAAW,OAAO;AAAA,QACxC,WAAW,YAAY,CAAC,aAAa;AACnC,kBAAA;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,eAAW,UAAU,OAAO;AAE5B,WAAO;AAAA,MACL;AAAA,IAAA;AAAA,EAEJ,CAAC;AACH;"}