From b61bd9428617ea03a6965d1bfd28433a99726b71 Mon Sep 17 00:00:00 2001 From: erKam Date: Sun, 11 Oct 2026 03:26:46 +0000 Subject: [PATCH 1/2] feat(pipes): select a pipe from its lint finding A lint finding showed the pipe name as plain text, so reading its details meant typing the name into the search. The name is now a "Show pipe " button when the pipe is in the list. It clears the search or Show pipes filter only when that filter hides the pipe, selects it, scrolls its row into view and moves focus to the detail heading. Findings for pipes that are not listed stay plain text. Updates the Lint section of the Pipes docs page and rebuilds extension/ui. --- app/src/__tests__/pipes-lint-show.test.ts | 160 ++++++++++++++++++ app/src/pages/pipes-inspector.ts | 109 ++++++++++-- apps/docs/src/content/inspectors/pipes.md | 2 + ...=> browser-agent-rpc-BXhoSh1z-DlWvzvAg.js} | 2 +- .../{index-CgvJVwtz.js => index-MIHPPrL0.js} | 49 +++++- extension/ui/index.html | 2 +- 6 files changed, 299 insertions(+), 25 deletions(-) create mode 100644 app/src/__tests__/pipes-lint-show.test.ts rename extension/ui/assets/{browser-agent-rpc-BXhoSh1z-CQUbrXfP.js => browser-agent-rpc-BXhoSh1z-DlWvzvAg.js} (93%) rename extension/ui/assets/{index-CgvJVwtz.js => index-MIHPPrL0.js} (95%) diff --git a/app/src/__tests__/pipes-lint-show.test.ts b/app/src/__tests__/pipes-lint-show.test.ts new file mode 100644 index 00000000..cbef1e36 --- /dev/null +++ b/app/src/__tests__/pipes-lint-show.test.ts @@ -0,0 +1,160 @@ +import { TestBed } from '@angular/core/testing'; +import type { DevframeRpcClient } from 'devframe/client'; +import { afterEach, describe, expect, it } from 'vitest'; +import { PipesInspector } from '../pages/pipes-inspector'; + +const PIPES = [ + { + name: 'currencyFormat', + className: 'CurrencyFormatPipe', + file: 'src/app/currency-format.pipe.ts', + line: 4, + isStandalone: true, + isPure: true, + }, + { + name: 'filterBy', + className: 'FilterByPipe', + file: 'src/app/filter-by.pipe.ts', + line: 3, + isStandalone: true, + isPure: false, + }, +]; + +const LINT = [ + { + rule: 'impure-pipe-in-for', + severity: 'warning', + pipe: 'filterBy', + file: 'src/app/list.html', + line: 12, + message: 'Impure pipe inside @for.', + fix: 'Use a pure pipe.', + }, + { + rule: 'signal-read-in-pure-pipe', + severity: 'warning', + pipe: 'currencyFormat', + file: 'src/app/currency-format.pipe.ts', + line: 9, + message: 'Reads a signal.', + fix: 'Pass the value in.', + }, + { + rule: 'impure-pipe-in-for', + severity: 'warning', + pipe: 'libraryPipe', + file: 'src/app/list.html', + line: 20, + message: 'Impure pipe inside @for.', + fix: 'Use a pure pipe.', + }, +]; + +function client() { + const rpc = { + call: (name: string) => { + if (name === 'get-pipes') return Promise.resolve(PIPES); + if (name === 'pipe-lint') return Promise.resolve(LINT); + return Promise.resolve(null); + }, + callEvent: () => Promise.resolve(), + sharedState: () => + Promise.resolve({ + value: () => ({ pipes: [], async: [], instrumented: [] }), + on: () => () => {}, + }), + }; + return { connectionMeta: {}, scope: () => ({ rpc }) } as unknown as DevframeRpcClient; +} + +async function settle(fixture: { whenStable(): Promise }) { + for (let i = 0; i < 4; i++) { + await new Promise((resolve) => setTimeout(resolve)); + await fixture.whenStable(); + } +} + +async function render() { + const fixture = TestBed.createComponent(PipesInspector); + document.body.appendChild(fixture.nativeElement); + fixture.componentRef.setInput('rpc', client()); + await settle(fixture); + return fixture; +} + +function showButtons(host: HTMLElement) { + return Array.from(host.querySelectorAll('.findings button.pipe-link')); +} + +function names(host: HTMLElement) { + return Array.from(host.querySelectorAll('[data-pipe-row] .name')).map((n) => n.textContent); +} + +describe('pipes lint show pipe', () => { + afterEach(() => { + document.body.innerHTML = ''; + }); + + it('gives findings with a listed pipe a Show pipe button, and none to the rest', async () => { + const fixture = await render(); + const host = fixture.nativeElement as HTMLElement; + const buttons = showButtons(host); + expect(buttons.map((b) => b.textContent?.trim())).toEqual([ + 'Show pipe filterBy', + 'Show pipe currencyFormat', + ]); + const findings = host.querySelectorAll('.findings .finding'); + expect(findings).toHaveLength(3); + expect(findings[2].querySelector('button')).toBeNull(); + expect(findings[2].querySelector('.where')?.textContent).toContain('libraryPipe'); + }); + + it('selects the pipe and moves focus to its detail heading', async () => { + const fixture = await render(); + const host = fixture.nativeElement as HTMLElement; + showButtons(host)[0].click(); + await settle(fixture); + expect(fixture.componentInstance.selected()?.name).toBe('filterBy'); + expect(host.querySelector('.row.selected .name')?.textContent).toBe('filterBy'); + const heading = host.querySelector('#pipe-detail-title'); + expect(heading?.textContent).toBe('filterBy'); + expect(document.activeElement).toBe(heading); + }); + + it('clears a search and a kind filter that hide the pipe', async () => { + const fixture = await render(); + const host = fixture.nativeElement as HTMLElement; + const page = fixture.componentInstance; + page.filter.set('currency'); + page.kind.set('custom'); + await settle(fixture); + expect(names(host)).toEqual(['currencyFormat']); + showButtons(host)[0].click(); + await settle(fixture); + expect(page.filter()).toBe(''); + expect(page.kind()).toBe('custom'); + expect(names(host)).toContain('filterBy'); + + page.kind.set('builtin'); + await settle(fixture); + showButtons(host)[1].click(); + await settle(fixture); + expect(page.kind()).toBe('all'); + expect(page.selected()?.name).toBe('currencyFormat'); + }); + + it('keeps filters that do not hide the pipe', async () => { + const fixture = await render(); + const page = fixture.componentInstance; + page.filter.set('pipe.ts'); + page.kind.set('impure'); + await settle(fixture); + showButtons(fixture.nativeElement)[0].click(); + await settle(fixture); + expect(page.filter()).toBe('pipe.ts'); + expect(page.kind()).toBe('impure'); + expect(page.selected()?.name).toBe('filterBy'); + }); +}); diff --git a/app/src/pages/pipes-inspector.ts b/app/src/pages/pipes-inspector.ts index 100c716d..815b1fae 100644 --- a/app/src/pages/pipes-inspector.ts +++ b/app/src/pages/pipes-inspector.ts @@ -2,6 +2,8 @@ import { Component, DestroyRef, ElementRef, + Injector, + afterNextRender, computed, effect, inject, @@ -264,7 +266,7 @@ const KIND_OPTIONS: readonly SelectOption[] = [
@if (selected(); as p) {
-

{{ p.name }}

+

{{ p.name }}

{{ p.isPure ? 'pure' : 'impure' }} @@ -466,7 +468,17 @@ const KIND_OPTIONS: readonly SelectOption[] = [
{{ f.severity }} {{ f.rule }} - {{ f.pipe }} · {{ f.file }}:{{ f.line }} + @let target = pipeFor(f); + + @if (target) { + + } @else { + {{ f.pipe }} + } + · {{ f.file }}:{{ f.line }} +

{{ f.message }}

Fix {{ f.fix }}

@@ -781,6 +793,13 @@ const KIND_OPTIONS: readonly SelectOption[] = [ font-size: 15px; font-weight: 600; overflow-wrap: anywhere; + border-radius: 4px; + } + .detail-head h2:focus { + outline: none; + } + .detail-head h2:focus-visible { + @include m.focus-ring; } .block { padding: 14px 16px; @@ -988,6 +1007,27 @@ const KIND_OPTIONS: readonly SelectOption[] = [ font-size: 11px; overflow-wrap: anywhere; } + button.pipe-link { + display: inline; + height: auto; + padding: 0; + border: 0; + border-radius: 4px; + background: none; + color: var(--accent); + font: inherit; + text-decoration: underline; + text-underline-offset: 3px; + white-space: normal; + } + button.pipe-link:hover:not(:disabled) { + border-color: transparent; + background: none; + color: var(--accent-hover); + } + button.pipe-link:focus-visible { + @include m.focus-ring; + } .finding-message { margin: 6px 0 0; color: var(--text); @@ -1055,6 +1095,7 @@ const KIND_OPTIONS: readonly SelectOption[] = [ export class PipesInspector { private readonly destroyRef = inject(DestroyRef); private readonly host = inject>(ElementRef); + private readonly injector = inject(Injector); rpc = input(null); @@ -1085,21 +1126,15 @@ export class PipesInspector { private readonly liveByName = computed(() => new Map(this.live().map((p) => [p.name, p]))); filtered = computed(() => { - const q = this.filter().trim().toLowerCase(); + const q = this.filter(); const kind = this.kind() ?? 'all'; - const live = this.liveByName(); - return this.pipes().filter((p) => { - if (kind === 'custom' && p.builtin) return false; - if (kind === 'builtin' && !p.builtin) return false; - if (kind === 'impure' && p.isPure) return false; - if (kind === 'live' && !live.has(p.name)) return false; - return ( - !q || - p.name.toLowerCase().includes(q) || - p.className.toLowerCase().includes(q) || - p.file.toLowerCase().includes(q) - ); - }); + return this.pipes().filter((p) => this.fitsKind(p, kind) && this.fitsQuery(p, q)); + }); + + private readonly pipesByName = computed(() => { + const byName = new Map(); + for (const p of this.pipes()) byName.set(p.name, [...(byName.get(p.name) ?? []), p]); + return byName; }); private unsubscribe?: () => void; @@ -1236,6 +1271,48 @@ export class PipesInspector { this.selected.set(this.isSelected(pipe) ? null : pipe); } + /** The listed pipe a lint finding is about: the one declared in the finding's file, or else + * the first pipe with that name. Null when the pipe is not in the list. */ + pipeFor(finding: PipeLintFinding): PipeInfo | null { + const matches = this.pipesByName().get(finding.pipe); + if (!matches?.length) return null; + return matches.find((p) => p.file === finding.file) ?? matches[0]; + } + + /** Selects a pipe from a lint finding, clearing only the filters that hide it, then scrolls + * its row into view and moves focus to the detail heading. */ + showPipe(pipe: PipeInfo) { + if (!this.fitsQuery(pipe, this.filter())) this.filter.set(''); + if (!this.fitsKind(pipe, this.kind() ?? 'all')) this.kind.set('all'); + this.selected.set(pipe); + afterNextRender( + () => { + const host = this.host.nativeElement; + host.querySelector('.row.selected')?.scrollIntoView?.({ block: 'nearest' }); + host.querySelector('#pipe-detail-title')?.focus(); + }, + { injector: this.injector }, + ); + } + + private fitsKind(p: PipeInfo, kind: PipeKind): boolean { + if (kind === 'custom') return !p.builtin; + if (kind === 'builtin') return !!p.builtin; + if (kind === 'impure') return !p.isPure; + if (kind === 'live') return this.liveByName().has(p.name); + return true; + } + + private fitsQuery(p: PipeInfo, filter: string): boolean { + const q = filter.trim().toLowerCase(); + return ( + !q || + p.name.toLowerCase().includes(q) || + p.className.toLowerCase().includes(q) || + p.file.toLowerCase().includes(q) + ); + } + clearFilters() { this.filter.set(''); this.kind.set('all'); diff --git a/apps/docs/src/content/inspectors/pipes.md b/apps/docs/src/content/inspectors/pipes.md index 825ed814..d2dbd6c2 100644 --- a/apps/docs/src/content/inspectors/pipes.md +++ b/apps/docs/src/content/inspectors/pipes.md @@ -53,6 +53,8 @@ A source that changes on three reports in a row, like `getData() | async` return | `signal-read-in-pure-pipe` | warning, info | A pure pipe whose `transform()` reads a `signal`, `input`, `computed`, `linkedSignal`, `toSignal` or `model` field of the pipe (warning). A call with no arguments on an injected service, like `this.rates.current()`, might be a signal read (info). | | `async-on-call` | info | A method call piped to `\| async`, like `getUsers() \| async`. If the method builds a new Observable each time, `AsyncPipe` resubscribes on every check. Signal, `input`, `computed` and `toSignal` fields of the component are skipped. | +If the pipe in a finding is in the pipe list, its name is a button. Click it to select that pipe and open its details. A search or **Show pipes** filter that hides the pipe is cleared first; filters that already show it stay. A pipe that is not in the list, like one from a library, stays plain text. + ## Where the data comes from diff --git a/extension/ui/assets/browser-agent-rpc-BXhoSh1z-CQUbrXfP.js b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-DlWvzvAg.js similarity index 93% rename from extension/ui/assets/browser-agent-rpc-BXhoSh1z-CQUbrXfP.js rename to extension/ui/assets/browser-agent-rpc-BXhoSh1z-DlWvzvAg.js index eb4e093e..2de90352 100644 --- a/extension/ui/assets/browser-agent-rpc-BXhoSh1z-CQUbrXfP.js +++ b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-DlWvzvAg.js @@ -1 +1 @@ -import{t as e}from"./index-CgvJVwtz.js";var t=Symbol.for(`devframe:browser-agent-registry`),{tools:n,listeners:r}=globalThis[t]??={tools:new Map,listeners:new Set};function i(){return[...n.values()]}function a(e){return r.add(e),()=>r.delete(e)}var o=`devframe:client-id`,s;function c(t=globalThis.window){try{let n=t?.sessionStorage;if(n){let t=n.getItem(o);return t||(t=e(),n.setItem(o,t)),t}}catch{}return s??=e(),s}function l(e){e.client.register({name:`devframe:agent:invoke-client-tool`,type:`action`,jsonSerializable:!0,handler:async(e,t)=>{let n=i().find(t=>t.id===e);if(!n)throw Error(`[devframe/agent] browser tool "${e}" not found`);return await n.invoke(t)}});let t=!1,n=!1,r=0,o=()=>{t||n||(t=!0,queueMicrotask(async()=>{if(t=!1,n)return;let a=i().map(({invoke:e,...t})=>t);(a.length!==0||r!==0)&&(r=a.length,await e.callOptional(`devframe:agent:sync-client-tools`,c(),a).catch(()=>{}))}))},s=a(o),l=e.events.on(`connection:status`,e=>{e===`connected`&&o()});return o(),()=>{n=!0,s(),l()}}export{l as setupBrowserAgentRpcBridge}; \ No newline at end of file +import{t as e}from"./index-MIHPPrL0.js";var t=Symbol.for(`devframe:browser-agent-registry`),{tools:n,listeners:r}=globalThis[t]??={tools:new Map,listeners:new Set};function i(){return[...n.values()]}function a(e){return r.add(e),()=>r.delete(e)}var o=`devframe:client-id`,s;function c(t=globalThis.window){try{let n=t?.sessionStorage;if(n){let t=n.getItem(o);return t||(t=e(),n.setItem(o,t)),t}}catch{}return s??=e(),s}function l(e){e.client.register({name:`devframe:agent:invoke-client-tool`,type:`action`,jsonSerializable:!0,handler:async(e,t)=>{let n=i().find(t=>t.id===e);if(!n)throw Error(`[devframe/agent] browser tool "${e}" not found`);return await n.invoke(t)}});let t=!1,n=!1,r=0,o=()=>{t||n||(t=!0,queueMicrotask(async()=>{if(t=!1,n)return;let a=i().map(({invoke:e,...t})=>t);(a.length!==0||r!==0)&&(r=a.length,await e.callOptional(`devframe:agent:sync-client-tools`,c(),a).catch(()=>{}))}))},s=a(o),l=e.events.on(`connection:status`,e=>{e===`connected`&&o()});return o(),()=>{n=!0,s(),l()}}export{l as setupBrowserAgentRpcBridge}; \ No newline at end of file diff --git a/extension/ui/assets/index-CgvJVwtz.js b/extension/ui/assets/index-MIHPPrL0.js similarity index 95% rename from extension/ui/assets/index-CgvJVwtz.js rename to extension/ui/assets/index-MIHPPrL0.js index 6143f997..df8719ee 100644 --- a/extension/ui/assets/index-CgvJVwtz.js +++ b/extension/ui/assets/index-MIHPPrL0.js @@ -5,7 +5,7 @@ `):``,this.name=`UnsubscriptionError`,this.errors=t}});function mr(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var hr=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,n,r,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a){if(this._parentage=null,Array.isArray(a))try{for(var o=cr(a),s=o.next();!s.done;s=o.next())s.value.remove(this)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else a.remove(this)}var c=this.initialTeardown;if(dr(c))try{c()}catch(e){i=e instanceof pr?e.errors:[e]}var l=this._finalizers;if(l){this._finalizers=null;try{for(var u=cr(l),d=u.next();!d.done;d=u.next()){var f=d.value;try{vr(f)}catch(e){i??=[],e instanceof pr?i=ur(ur([],lr(i)),lr(e.errors)):i.push(e)}}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(i)throw new pr(i)}},e.prototype.add=function(t){if(t&&t!==this){if(this.closed)vr(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=this._finalizers??[]).push(t)}}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&mr(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&mr(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=(function(){var t=new e;return t.closed=!0,t})(),e}(),gr=hr.EMPTY;function _r(e){return e instanceof hr||e&&`closed`in e&&dr(e.remove)&&dr(e.add)&&dr(e.unsubscribe)}function vr(e){dr(e)?e():e.unsubscribe()}var yr={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},br={setTimeout:function(e,t){var n=[...arguments].slice(2),r=br.delegate;return r?.setTimeout?r.setTimeout.apply(r,ur([e,t],lr(n))):setTimeout.apply(void 0,ur([e,t],lr(n)))},clearTimeout:function(e){return(br.delegate?.clearTimeout||clearTimeout)(e)},delegate:void 0};function xr(e){br.setTimeout(function(){var t=yr.onUnhandledError;if(t)t(e);else throw e})}function Sr(){}var Cr=(function(){return Er(`C`,void 0,void 0)})();function wr(e){return Er(`E`,void 0,e)}function Tr(e){return Er(`N`,e,void 0)}function Er(e,t,n){return{kind:e,value:t,error:n}}var Dr=null;function Or(e){if(yr.useDeprecatedSynchronousErrorHandling){var t=!Dr;if(t&&(Dr={errorThrown:!1,error:null}),e(),t){var n=Dr,r=n.errorThrown,i=n.error;if(Dr=null,r)throw i}}else e()}function kr(e){yr.useDeprecatedSynchronousErrorHandling&&Dr&&(Dr.errorThrown=!0,Dr.error=e)}var Ar=function(e){sr(t,e);function t(t){var n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,_r(t)&&t.add(n)):n.destination=Rr,n}return t.create=function(e,t,n){return new Pr(e,t,n)},t.prototype.next=function(e){this.isStopped?Lr(Tr(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?Lr(wr(e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?Lr(Cr,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(hr),jr=Function.prototype.bind;function Mr(e,t){return jr.call(e,t)}var Nr=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){Fr(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){Fr(e)}else Fr(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){Fr(e)}},e}(),Pr=function(e){sr(t,e);function t(t,n,r){var i=e.call(this)||this,a;if(dr(t)||!t)a={next:t??void 0,error:n??void 0,complete:r??void 0};else{var o;i&&yr.useDeprecatedNextContext?(o=Object.create(t),o.unsubscribe=function(){return i.unsubscribe()},a={next:t.next&&Mr(t.next,o),error:t.error&&Mr(t.error,o),complete:t.complete&&Mr(t.complete,o)}):a=t}return i.destination=new Nr(a),i}return t}(Ar);function Fr(e){yr.useDeprecatedSynchronousErrorHandling?kr(e):xr(e)}function Ir(e){throw e}function Lr(e,t){var n=yr.onStoppedNotification;n&&br.setTimeout(function(){return n(e,t)})}var Rr={closed:!0,next:Sr,error:Ir,complete:Sr},zr=(function(){return typeof Symbol==`function`&&Symbol.observable||`@@observable`})();function Br(e){return e}function Vr(e){return e.length===0?Br:e.length===1?e[0]:function(t){return e.reduce(function(e,t){return t(e)},t)}}var Hr=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var r=this,i=Gr(e)?e:new Pr(e,t,n);return Or(function(){var e=r,t=e.operator,n=e.source;i.add(t?t.call(i,n):n?r._subscribe(i):r._trySubscribe(i))}),i},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var n=this;return t=Ur(t),new t(function(t,r){var i=new Pr({next:function(t){try{e(t)}catch(e){r(e),i.unsubscribe()}},error:r,complete:t});n.subscribe(i)})},e.prototype._subscribe=function(e){return this.source?.subscribe(e)},e.prototype[zr]=function(){return this},e.prototype.pipe=function(){return Vr([...arguments])(this)},e.prototype.toPromise=function(e){var t=this;return e=Ur(e),new e(function(e,n){var r;t.subscribe(function(e){return r=e},function(e){return n(e)},function(){return e(r)})})},e.create=function(t){return new e(t)},e}();function Ur(e){return e??yr.Promise??Promise}function Wr(e){return e&&dr(e.next)&&dr(e.error)&&dr(e.complete)}function Gr(e){return e&&e instanceof Ar||Wr(e)&&_r(e)}function Kr(e){return dr(e?.lift)}function qr(e){return function(t){if(Kr(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw TypeError(`Unable to lift unknown Observable type`)}}function Jr(e,t,n,r,i){return new Yr(e,t,n,r,i)}var Yr=function(e){sr(t,e);function t(t,n,r,i,a,o){var s=e.call(this,t)||this;return s.onFinalize=a,s.shouldUnsubscribe=o,s._next=n?function(e){try{n(e)}catch(e){t.error(e)}}:e.prototype._next,s._error=i?function(e){try{i(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,s._complete=r?function(){try{r()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,s}return t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&((t=this.onFinalize)==null||t.call(this))}},t}(Ar),Xr=fr(function(e){return function(){e(this),this.name=`ObjectUnsubscribedError`,this.message=`object unsubscribed`}}),Zr=function(e){sr(t,e);function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return t.prototype.lift=function(e){var t=new Qr(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new Xr},t.prototype.next=function(e){var t=this;Or(function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||=Array.from(t.observers);try{for(var i=cr(t.currentObservers),a=i.next();!a.done;a=i.next())a.value.next(e)}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}})},t.prototype.error=function(e){var t=this;Or(function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}})},t.prototype.complete=function(){var e=this;Or(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){return this.observers?.length>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,i=n.isStopped,a=n.observers;return r||i?gr:(this.currentObservers=null,a.push(e),new hr(function(){t.currentObservers=null,mr(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,i=t.isStopped;n?e.error(r):i&&e.complete()},t.prototype.asObservable=function(){var e=new Hr;return e.source=this,e},t.create=function(e,t){return new Qr(e,t)},t}(Hr),Qr=function(e){sr(t,e);function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return t.prototype.next=function(e){var t,n;(n=(t=this.destination)?.next)==null||n.call(t,e)},t.prototype.error=function(e){var t,n;(n=(t=this.destination)?.error)==null||n.call(t,e)},t.prototype.complete=function(){var e,t;(t=(e=this.destination)?.complete)==null||t.call(e)},t.prototype._subscribe=function(e){return this.source?.subscribe(e)??gr},t}(Zr),$r=function(e){sr(t,e);function t(t){var n=e.call(this)||this;return n._value=t,n}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(t){var n=e.prototype._subscribe.call(this,t);return!n.closed&&t.next(this._value),n},t.prototype.getValue=function(){var e=this,t=e.hasError,n=e.thrownError,r=e._value;if(t)throw n;return this._throwIfClosed(),r},t.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},t}(Zr);function ei(e,t){return qr(function(n,r){var i=0;n.subscribe(Jr(r,function(n){r.next(e.call(t,n,i++))}))})}var ti=`https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss`,T=class extends Error{code;constructor(e,t){super(ri(e,t)),this.code=e}};function ni(e){return`NG0${Math.abs(e)}`}function ri(e,t){return`${ni(e)}${t?`: `+t:``}`}function ii(e){for(let t in e)if(e[t]===ii)return t;throw Error(``)}function ai(e){if(typeof e==`string`)return e;if(Array.isArray(e))return`[${e.map(ai).join(`, `)}]`;if(e==null)return``+e;let t=e.overriddenName||e.name;if(t)return`${t}`;let n=e.toString();if(n==null)return``+n;let r=n.indexOf(` `);return r>=0?n.slice(0,r):n}function oi(e,t){return e?t?`${e} ${t}`:e:t||``}var si=ii({__forward_ref__:ii});function ci(e){return e.__forward_ref__=ci,e}function li(e){return ui(e)?e():e}function ui(e){return typeof e==`function`&&Object.hasOwn(e,si)&&e.__forward_ref__===ci}function di(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function fi(e){return pi(e,gi)}function pi(e,t){return Object.hasOwn(e,t)&&e[t]||null}function mi(e){return(e?.[gi]??null)||null}function hi(e){return e&&Object.hasOwn(e,_i)?e[_i]:null}var gi=ii({ɵprov:ii}),_i=ii({ɵinj:ii}),vi=class{_desc;ngMetadataName=`InjectionToken`;ɵprov;constructor(e,t){this._desc=e,this.ɵprov=void 0,typeof t==`number`?this.__NG_ELEMENT_ID__=t:t!==void 0&&(this.ɵprov=di({token:this,providedIn:t.providedIn||`root`,factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function yi(e){return e&&!!e.ɵproviders}var bi=ii({ɵcmp:ii}),xi=ii({ɵdir:ii}),Si=ii({ɵpipe:ii}),Ci=ii({ɵfac:ii}),wi=ii({__NG_ELEMENT_ID__:ii}),Ti=ii({__NG_ENV_ID__:ii});function Ei(e){return ki(e,`@Component`),e[bi]||null}function Di(e){return ki(e,`@Directive`),e[xi]||null}function Oi(e){return ki(e,`@Pipe`),e[Si]||null}function ki(e,t){if(e==null)throw new T(-919,!1)}function Ai(e){return typeof e==`string`?e:e==null?``:String(e)}var ji=ii({ngErrorCode:ii}),Mi=ii({ngErrorMessage:ii}),Ni=ii({ngTokenPath:ii});function Pi(e,t){return Ii(``,-200,t)}function Fi(e,t){throw new T(-201,!1)}function Ii(e,t,n){let r=new T(t,e);return r[ji]=t,r[Mi]=e,n&&(r[Ni]=n),r}function Li(e){return e[ji]}var Ri;function zi(){return Ri}function Bi(e){let t=Ri;return Ri=e,t}function Vi(e,t,n){let r=fi(e);if(r&&r.providedIn==`root`)return r.value===void 0?r.value=r.factory():r.value;if(n&8)return null;if(t!==void 0)return t;Fi(e,``)}var Hi=globalThis,Ui={},Wi=`__NG_DI_FLAG__`,Gi=class{injector;constructor(e){this.injector=e}retrieve(e,t){let n=Ji(t)||0;try{return this.injector.get(e,n&8?null:Ui,n)}catch(e){if(er(e))return e;throw e}}};function Ki(e,t=0){let n=Zn();if(n===void 0)throw new T(-203,!1);if(n===null)return Vi(e,void 0,t);{let r=Yi(t),i=n.retrieve(e,r);if(er(i)){if(r.optional)return null;throw i}return i}}function qi(e,t=0){return(zi()||Ki)(li(e),t)}function E(e,t){return qi(e,Ji(t))}function Ji(e){return e===void 0||typeof e==`number`?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Yi(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function Xi(e){let t=[];for(let n=0;nArray.isArray(e)?ta(e,t):t(e))}function na(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function ra(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function ia(e,t,n,r){let i=e.length;if(i==t)e.push(n,r);else if(i===1)e.push(r,e[0]),e[0]=n;else{for(i--,e.push(e[i-1],e[i]);i>t;){let t=i-2;e[i]=e[t],i--}e[t]=n,e[t+1]=r}}function aa(e,t,n){let r=sa(e,t);return r>=0?e[r|1]=n:(r=~r,ia(e,r,t,n)),r}function oa(e,t){let n=sa(e,t);if(n>=0)return e[n|1]}function sa(e,t){return ca(e,t,1)}function ca(e,t,n){let r=0,i=e.length>>n;for(;i!==r;){let a=r+(i-r>>1),o=e[a<t?i=a:r=a+1}return~(i<{n.push(e)};return ta(t,e=>{let t=e;va(t,a,[],r)&&(i||=[],i.push(t))}),i!==void 0&&_a(i,a),n}function _a(e,t){for(let n=0;n{t(e,r)})}}function va(e,t,n,r){if(e=li(e),!e)return!1;let i=null,a=hi(e),o=!a&&Ei(e);if(!a&&!o){let t=e.ngModule;if(a=hi(t),a)i=t;else return!1}else if(o&&!o.standalone)return!1;else i=e;let s=r.has(i);if(o){if(s)return!1;if(r.add(i),o.dependencies){let e=typeof o.dependencies==`function`?o.dependencies():o.dependencies;for(let i of e)va(i,t,n,r)}}else if(a){if(a.imports!=null&&!s){r.add(i);let e;try{ta(a.imports,i=>{va(i,t,n,r)&&(e||=[],e.push(i))})}finally{}e!==void 0&&_a(e,t)}if(!s){let e=Qi(i)||(()=>new i);t({provide:i,useFactory:e,deps:ua},i),t({provide:pa,useValue:i,multi:!0},i),t({provide:da,useValue:()=>qi(i),multi:!0},i)}let o=a.providers;if(o!=null&&!s){let n=e;ya(o,e=>{t(e,n)})}}else return!1;return i!==e&&e.providers!==void 0}function ya(e,t){for(let n of e)yi(n)&&(n=n.ɵproviders),Array.isArray(n)?ya(n,t):t(n)}var ba=ii({provide:String,useValue:ii});function xa(e){return typeof e==`object`&&!!e&&ba in e}function Sa(e){return!!(e&&e.useExisting)}function Ca(e){return!!(e&&e.useFactory)}function wa(e){return typeof e==`function`}var Ta=new vi(``),Ea={},Da={},Oa=void 0;function ka(){return Oa===void 0&&(Oa=new ma),Oa}var Aa=class{},ja=class extends Aa{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(e,t,n,r){super(),this.parent=t,this.source=n,this.scopes=r,Va(e,e=>this.processProvider(e)),this.records.set(fa,La(void 0,this)),r.has(`environment`)&&this.records.set(Aa,La(void 0,this));let i=this.records.get(Ta);i!=null&&typeof i.value==`string`&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(pa,ua,{self:!0}))}retrieve(e,t){let n=Ji(t)||0;try{return this.get(e,Ui,n)}catch(e){if(er(e))return e;throw e}}destroy(){Ia(this),this._destroyed=!0;let e=w(null);try{for(let e of this._ngOnDestroyHooks)e.ngOnDestroy();let e=this._onDestroyHooks;this._onDestroyHooks=[];for(let t of e)t()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),w(e)}}onDestroy(e){return Ia(this),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){Ia(this);let t=Qn(this),n=Bi(void 0);try{return e()}finally{Qn(t),Bi(n)}}get(e,t=Ui,n){if(Ia(this),Object.hasOwn(e,Ti))return e[Ti](this);let r=Ji(n),i=Qn(this),a=Bi(void 0);try{if(!(r&4)){let t=this.records.get(e);if(t===void 0){let n=Ba(e)&&fi(e);t=n&&this.injectableDefInScope(n)?La(Ma(e),Ea):null,this.records.set(e,t)}if(t!=null)return this.hydrate(e,t,r)}let n=r&2?ka():this.parent;return t=r&8&&t===Ui?null:t,n.get(e,t)}catch(e){let t=Li(e);throw t===-200||t===-201?new T(t,null):e}finally{Bi(a),Qn(i)}}resolveInjectorInitializers(){let e=w(null),t=Qn(this),n=Bi(void 0);try{let e=this.get(da,ua,{self:!0});for(let t of e)t()}finally{Qn(t),Bi(n),w(e)}}toString(){return`R3Injector[...]`}processProvider(e){e=li(e);let t=wa(e)?e:li(e&&e.provide),n=Pa(e);if(!wa(e)&&e.multi===!0){let n=this.records.get(t);n||(n=La(void 0,Ea,!0),n.factory=()=>Xi(n.multi),this.records.set(t,n)),t=e,n.multi.push(e)}this.records.set(t,n)}hydrate(e,t,n){let r=w(null);try{if(t.value===Da)throw Pi(``);return t.value===Ea&&(t.value=Da,t.value=t.factory(void 0,n)),typeof t.value==`object`&&t.value&&za(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{w(r)}}injectableDefInScope(e){if(!e.providedIn)return!1;let t=li(e.providedIn);return typeof t==`string`?t===`any`||this.scopes.has(t):this.injectorDefTypes.has(t)}removeOnDestroy(e){let t=this._onDestroyHooks.indexOf(e);t!==-1&&this._onDestroyHooks.splice(t,1)}};function Ma(e){let t=fi(e),n=t===null?Qi(e):t.factory;if(n!==null)return n;if(e instanceof vi)throw new T(-204,!1);if(e instanceof Function)return Na(e);throw new T(-204,!1)}function Na(e){if(e.length>0)throw new T(-204,!1);let t=mi(e);return t===null?()=>new e:()=>t.factory(e)}function Pa(e){return xa(e)?La(void 0,e.useValue):La(Fa(e),Ea)}function Fa(e,t,n){let r;if(wa(e)){let t=li(e);return Qi(t)||Ma(t)}if(xa(e))r=()=>li(e.useValue);else if(Ca(e))r=()=>e.useFactory(...Xi(e.deps||[]));else if(Sa(e))r=(t,n)=>qi(li(e.useExisting),n!==void 0&&n&8?8:void 0);else{let t=li(e&&(e.useClass||e.provide));if(Ra(e))r=()=>new t(...Xi(e.deps));else return Qi(t)||Ma(t)}return r}function Ia(e){if(e.destroyed)throw new T(-205,!1)}function La(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Ra(e){return!!e.deps}function za(e){return typeof e==`object`&&!!e&&typeof e.ngOnDestroy==`function`}function Ba(e){return typeof e==`function`||typeof e==`object`&&e.ngMetadataName===`InjectionToken`}function Va(e,t){for(let n of e)Array.isArray(n)?Va(n,t):n&&yi(n)?Va(n.ɵproviders,t):t(n)}function Ha(e,t){let n;e instanceof ja?(Ia(e),n=e):n=new Gi(e);let r=Qn(n),i=Bi(void 0);try{return t()}finally{Qn(r),Bi(i)}}function Ua(){return zi()!==void 0||Zn()!=null}var Wa=1;function Ga(e){return Array.isArray(e)&&typeof e[Wa]==`object`}function Ka(e){return Array.isArray(e)&&e[Wa]===!0}function qa(e){return!!(e.flags&4)}function Ja(e){return e.componentOffset>-1}function Ya(e){return(e.flags&1)==1}function Xa(e){return!!e.template}function Za(e){return!!(e[2]&512)}function Qa(e){return(e[2]&256)==256}var $a=(function(e){return e[e.NONE=0]=`NONE`,e[e.HTML=1]=`HTML`,e[e.STYLE=2]=`STYLE`,e[e.SCRIPT=3]=`SCRIPT`,e[e.URL=4]=`URL`,e[e.RESOURCE_URL=5]=`RESOURCE_URL`,e[e.ATTRIBUTE_NO_BINDING=6]=`ATTRIBUTE_NO_BINDING`,e})($a||{}),eo=`math`;function to(e){for(;Array.isArray(e);)e=e[0];return e}function no(e,t){return to(t[e])}function ro(e,t){return to(t[e.index])}function io(e,t){return e.data[t]}function ao(e,t){return e[t]}function oo(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function so(e,t){let n=t[e];return Ga(n)?n:n[0]}function co(e){return(e[2]&128)==128}function lo(e){return Ka(e[3])}function uo(e,t){return t==null?null:e[t]}function fo(e){e[17]=0}function po(e){e[2]&1024||(e[2]|=1024,co(e)&&_o(e))}function mo(e,t){for(;e>0;)t=t[14],e--;return t}function ho(e){return!!(e[2]&9216||e[24]?.dirty)}function go(e){e[10].changeDetectionScheduler?.notify(8),e[2]&64&&(e[2]|=1024),ho(e)&&_o(e)}function _o(e){e[10].changeDetectionScheduler?.notify(0);let t=bo(e);for(;t!==null&&!(t[2]&8192||(t[2]|=8192,!co(t)));)t=bo(t)}function vo(e,t){if(Qa(e))throw new T(911,!1);e[21]===null&&(e[21]=[]),e[21].push(t)}function yo(e,t){if(e[21]===null)return;let n=e[21].indexOf(t);n!==-1&&e[21].splice(n,1)}function bo(e){let t=e[3];return Ka(t)?t[3]:t}function xo(e){return e[7]??=[]}function So(e){return e.cleanup??=[]}function Co(e,t,n,r){let i=xo(t);i.push(n),e.firstCreatePass&&So(e).push(r,i.length-1)}var wo={lFrame:as(null),bindingsEnabled:!0,skipHydrationRootTNode:null},To=!1;function Eo(){return wo.lFrame.elementDepthCount}function Do(){wo.lFrame.elementDepthCount++}function Oo(){wo.lFrame.elementDepthCount--}function ko(){return wo.bindingsEnabled}function Ao(){return wo.skipHydrationRootTNode!==null}function jo(e){return wo.skipHydrationRootTNode===e}function Mo(){wo.skipHydrationRootTNode=null}function D(){return wo.lFrame.lView}function No(){return wo.lFrame.tView}function O(e){return wo.lFrame.contextLView=e,e[8]}function k(e){return wo.lFrame.contextLView=null,e}function Po(){let e=Fo();for(;e!==null&&e.type===64;)e=e.parent;return e}function Fo(){return wo.lFrame.currentTNode}function Io(){let e=wo.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function Lo(e,t){let n=wo.lFrame;n.currentTNode=e,n.isParent=t}function Ro(){return wo.lFrame.isParent}function zo(){wo.lFrame.isParent=!1}function Bo(){return wo.lFrame.contextLView}function Vo(){return To}function Ho(e){let t=To;return To=e,t}function Uo(){let e=wo.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function Wo(){return wo.lFrame.bindingIndex}function Go(e){return wo.lFrame.bindingIndex=e}function Ko(){return wo.lFrame.bindingIndex++}function qo(e){let t=wo.lFrame,n=t.bindingIndex;return t.bindingIndex+=e,n}function Jo(){return wo.lFrame.inI18n}function Yo(e,t){let n=wo.lFrame;n.bindingIndex=n.bindingRootIndex=e,Zo(t)}function Xo(){return wo.lFrame.currentDirectiveIndex}function Zo(e){wo.lFrame.currentDirectiveIndex=e}function Qo(e){let t=wo.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function $o(){return wo.lFrame.currentQueryIndex}function es(e){wo.lFrame.currentQueryIndex=e}function ts(e){let t=e[1];return t.type===2?t.declTNode:t.type===1?e[5]:null}function ns(e,t,n){if(n&4){let r=t,i=e;for(;r=r.parent,r===null&&!(n&1)&&(r=ts(i),!(r===null||(i=i[14],r.type&10))););if(r===null)return!1;t=r,e=i}let r=wo.lFrame=is();return r.currentTNode=t,r.lView=e,!0}function rs(e){let t=is(),n=e[1];wo.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function is(){let e=wo.lFrame,t=e===null?null:e.child;return t===null?as(e):t}function as(e){let t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return e!==null&&(e.child=t),t}function os(){let e=wo.lFrame;return wo.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var ss=os;function cs(){let e=os();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function ls(e){return(wo.lFrame.contextLView=mo(e,wo.lFrame.contextLView))[8]}function us(){return wo.lFrame.selectedIndex}function ds(e){wo.lFrame.selectedIndex=e}function fs(){let e=wo.lFrame;return io(e.tView,e.selectedIndex)}function A(){wo.lFrame.currentNamespace=`svg`}function ps(){ms()}function ms(){wo.lFrame.currentNamespace=null}function hs(){return wo.lFrame.currentNamespace}var gs=!0;function _s(){return gs}function vs(e){gs=e}function ys(e,t=null,n=null,r){let i=bs(e,t,n,r);return i.resolveInjectorInitializers(),i}function bs(e,t=null,n=null,r,i=new Set){return new ja([n||ua,ha(e)],t||ka(),null,i)}var xs=class e{static THROW_IF_NOT_FOUND=Ui;static NULL=new ma;static create(e,t){if(Array.isArray(e))return ys({name:``},t,e,``);{let t=e.name??``;return ys({name:t},e.parent,e.providers,t)}}static ɵprov=di({token:e,providedIn:`any`,factory:()=>qi(fa)});static __NG_ELEMENT_ID__=-1},Ss=new vi(``),Cs=class{static __NG_ELEMENT_ID__=Ts;static __NG_ENV_ID__=e=>e},ws=class extends Cs{_lView;constructor(e){super(),this._lView=e}get destroyed(){return Qa(this._lView)}onDestroy(e){let t=this._lView;return vo(t,e),()=>yo(t,e)}};function Ts(){return new ws(D())}var Es=new vi(``),Ds=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new $r(!1);debugTaskTracker=E(Es,{optional:!0});get hasPendingTasks(){return!this.destroyed&&this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new Hr(e=>{e.next(!1),e.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let e=this.taskId++;return this.pendingTasks.add(e),this.debugTaskTracker?.add(e),e}has(e){return this.pendingTasks.has(e)}remove(e){this.pendingTasks.delete(e),this.debugTaskTracker?.remove(e),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static ɵprov=di({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Os=class extends Zr{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(e=!1){super(),this.__isAsync=e,Ua()&&(this.destroyRef=E(Cs,{optional:!0})??void 0,this.pendingTasks=E(Ds,{optional:!0})??void 0)}emit(e){let t=w(null);try{super.next(e)}finally{w(t)}}subscribe(e,t,n){let r=e,i=t||(()=>null),a=n;if(e&&typeof e==`object`){let t=e;r=t.next?.bind(t),i=t.error?.bind(t),a=t.complete?.bind(t)}this.__isAsync&&(i=this.wrapInTimeout(i),r&&=this.wrapInTimeout(r),a&&=this.wrapInTimeout(a));let o=super.subscribe({next:r,error:i,complete:a});return e instanceof hr&&e.add(o),o}wrapInTimeout(e){return t=>{let n=this.pendingTasks?.add();setTimeout(()=>{try{e(t)}finally{n!==void 0&&this.pendingTasks?.remove(n)}})}}};function ks(...e){}function As(e){let t,n;function r(){e=ks;try{n!==void 0&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(n),t!==void 0&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame==`function`&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function js(e){return queueMicrotask(()=>e()),()=>{e=ks}}var Ms=`isAngularZone`,Ns=`isAngularZone_ID`,Ps=0,Fs=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new Os(!1);onMicrotaskEmpty=new Os(!1);onStable=new Os(!1);onError=new Os(!1);constructor(e){let{enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1,scheduleInRootZone:i=!1}=e;if(typeof Zone>`u`)throw new T(908,!1);Zone.assertZonePatched();let a=this;a._nesting=0,a._outer=a._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(a._inner=a._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(a._inner=a._inner.fork(Zone.longStackTraceZoneSpec)),a.shouldCoalesceEventChangeDetection=!r&&n,a.shouldCoalesceRunChangeDetection=r,a.callbackScheduled=!1,a.scheduleInRootZone=i,zs(a)}static isInAngularZone(){return typeof Zone<`u`&&Zone.current.get(Ms)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new T(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new T(909,!1)}run(e,t,n){return this._inner.run(e,t,n)}runTask(e,t,n,r){let i=this._inner,a=i.scheduleEventTask(`NgZoneEvent: `+r,e,Is,ks,ks);try{return i.runTask(a,t,n)}finally{i.cancelTask(a)}}runGuarded(e,t,n){return this._inner.runGuarded(e,t,n)}runOutsideAngular(e){return this._outer.run(e)}},Is={};function Ls(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Rs(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){As(()=>{e.callbackScheduled=!1,Bs(e),e.isCheckStableRunning=!0,Ls(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Bs(e)}function zs(e){let t=()=>{Rs(e)},n=Ps++;e._inner=e._inner.fork({name:`angular`,properties:{[Ms]:!0,[Ns]:n,[Ns+n]:!0},onInvokeTask:(n,r,i,a,o,s)=>{if(Ws(s))return n.invokeTask(i,a,o,s);try{return Vs(e),n.invokeTask(i,a,o,s)}finally{(e.shouldCoalesceEventChangeDetection&&a.type===`eventTask`||e.shouldCoalesceRunChangeDetection)&&t(),Hs(e)}},onInvoke:(n,r,i,a,o,s,c)=>{try{return Vs(e),n.invoke(i,a,o,s,c)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!Gs(s)&&t(),Hs(e)}},onHasTask:(t,n,r,i)=>{t.hasTask(r,i),n===r&&(i.change==`microTask`?(e._hasPendingMicrotasks=i.microTask,Bs(e),Ls(e)):i.change==`macroTask`&&(e.hasPendingMacrotasks=i.macroTask))},onHandleError:(t,n,r,i)=>(t.handleError(r,i),e.runOutsideAngular(()=>e.onError.emit(i)),!1)})}function Bs(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0)}function Vs(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Hs(e){e._nesting--,Ls(e)}var Us=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new Os;onMicrotaskEmpty=new Os;onStable=new Os;onError=new Os;run(e,t,n){return e.apply(t,n)}runGuarded(e,t,n){return e.apply(t,n)}runOutsideAngular(e){return e()}runTask(e,t,n,r){return e.apply(t,n)}};function Ws(e){return Ks(e,`__ignore_ng_zone__`)}function Gs(e){return Ks(e,`__scheduler_tick__`)}function Ks(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var qs=class{_console=console;handleError(e){this._console.error(`ERROR`,e)}},Js=new vi(``,{factory:()=>{let e=E(Fs),t=E(Aa),n;return r=>{e.runOutsideAngular(()=>{t.destroyed&&!n?setTimeout(()=>{throw r}):(n??=t.get(qs),n.handleError(r))})}}}),Ys={provide:da,useValue:()=>{E(qs,{optional:!0})},multi:!0};function j(e,t){let[n,r,i]=Hn(e,t?.equal),a=n;return a[dn],a.set=r,a.update=i,a.asReadonly=Xs.bind(a),a}function Xs(){let e=this[dn];if(e.readonlyFn===void 0){let t=()=>this();t[dn]=e,e.readonlyFn=t}return e.readonlyFn}var Zs=new vi(``,{factory:()=>Qs}),Qs=`ng`,$s=new vi(``),ec=new vi(``,{providedIn:`platform`,factory:()=>`unknown`}),tc=new vi(``,{factory:()=>E(Ss).body?.querySelector(`[ngCspNonce]`)?.getAttribute(`ngCspNonce`)||null}),nc=(()=>{class e{view;node;constructor(e,t){this.view=e,this.node=t}static __NG_ELEMENT_ID__=rc}return e})();function rc(){return new nc(D(),Po())}var ic=class{},ac=new vi(``,{factory:()=>!0}),oc=new vi(``),sc=(()=>{class e{static ɵprov=di({token:e,providedIn:`root`,factory:()=>new cc})}return e})(),cc=class{dirtyEffectCount=0;queues=new Map;add(e){this.enqueue(e),this.schedule(e)}schedule(e){e.dirty&&this.dirtyEffectCount++}remove(e){let t=e.zone,n=this.queues.get(t);n.has(e)&&(n.delete(e),e.dirty&&this.dirtyEffectCount--)}enqueue(e){let t=e.zone;this.queues.has(t)||this.queues.set(t,new Set);let n=this.queues.get(t);n.has(e)||n.add(e)}flush(){for(;this.dirtyEffectCount>0;){let e=!1;for(let[t,n]of this.queues)e||=t===null?this.flushQueue(n):t.run(()=>this.flushQueue(n));e||(this.dirtyEffectCount=0)}}flushQueue(e){let t=!1;for(let n of e)n.dirty&&(this.dirtyEffectCount--,t=!0,n.run());return t}},lc=class{[dn];constructor(e){this[dn]=e}destroy(){this[dn].destroy()}};function uc(e,t){let n=t?.injector??E(xs),r=t?.manualCleanup===!0?null:n.get(Cs),i,a=n.get(nc,null,{optional:!0}),o=n.get(ic);return a===null?i=hc(e,n.get(sc),o):(i=mc(a.view,o,e),r instanceof ws&&r._lView===a.view&&(r=null)),i.injector=n,r!==null&&(i.onDestroyFns=[r.onDestroy(()=>i.destroy())]),new lc(i)}var dc={...Jn,cleanupFns:void 0,zone:null,onDestroyFns:null,run(){let e=Ho(!1);try{Yn(this)}finally{Ho(e)}},cleanup(){if(!this.cleanupFns?.length)return;let e=w(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],w(e)}}},fc={...dc,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(En(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.scheduler.remove(this)}},pc={...dc,consumerMarkedDirty(){this.view[2]|=8192,_o(this.view),this.notifier.notify(13)},destroy(){if(En(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.view[23]?.delete(this)}};function mc(e,t,n){let r=Object.create(pc);return r.view=e,r.zone=typeof Zone<`u`?Zone.current:null,r.notifier=t,r.fn=gc(r,n),e[23]??=new Set,e[23].add(r),r.consumerMarkedDirty(r),r}function hc(e,t,n){let r=Object.create(fc);return r.fn=gc(r,e),r.scheduler=t,r.notifier=n,r.zone=typeof Zone<`u`?Zone.current:null,r.scheduler.add(r),r.notifier.notify(12),r}function gc(e,t){return()=>{t(t=>(e.cleanupFns??=[]).push(t))}}function _c(e){return typeof e==`function`&&e[dn]!==void 0}function vc(e){return _c(e)&&typeof e.set==`function`}var yc=Symbol(`InputSignalNode#UNSET`),bc={...Kn,transformFn:void 0,applyValueToInputSignal(e,t){Wn(e,t)}};function xc(e){return{toString:e}.toString()}var Sc=(function(e){return e[e.TemplateCreateStart=0]=`TemplateCreateStart`,e[e.TemplateCreateEnd=1]=`TemplateCreateEnd`,e[e.TemplateUpdateStart=2]=`TemplateUpdateStart`,e[e.TemplateUpdateEnd=3]=`TemplateUpdateEnd`,e[e.LifecycleHookStart=4]=`LifecycleHookStart`,e[e.LifecycleHookEnd=5]=`LifecycleHookEnd`,e[e.OutputStart=6]=`OutputStart`,e[e.OutputEnd=7]=`OutputEnd`,e[e.BootstrapApplicationStart=8]=`BootstrapApplicationStart`,e[e.BootstrapApplicationEnd=9]=`BootstrapApplicationEnd`,e[e.BootstrapComponentStart=10]=`BootstrapComponentStart`,e[e.BootstrapComponentEnd=11]=`BootstrapComponentEnd`,e[e.ChangeDetectionStart=12]=`ChangeDetectionStart`,e[e.ChangeDetectionEnd=13]=`ChangeDetectionEnd`,e[e.ChangeDetectionSyncStart=14]=`ChangeDetectionSyncStart`,e[e.ChangeDetectionSyncEnd=15]=`ChangeDetectionSyncEnd`,e[e.AfterRenderHooksStart=16]=`AfterRenderHooksStart`,e[e.AfterRenderHooksEnd=17]=`AfterRenderHooksEnd`,e[e.ComponentStart=18]=`ComponentStart`,e[e.ComponentEnd=19]=`ComponentEnd`,e[e.DeferBlockStateStart=20]=`DeferBlockStateStart`,e[e.DeferBlockStateEnd=21]=`DeferBlockStateEnd`,e[e.DynamicComponentStart=22]=`DynamicComponentStart`,e[e.DynamicComponentEnd=23]=`DynamicComponentEnd`,e[e.HostBindingsUpdateStart=24]=`HostBindingsUpdateStart`,e[e.HostBindingsUpdateEnd=25]=`HostBindingsUpdateEnd`,e})(Sc||{}),Cc=class{previousValue;currentValue;firstChange;constructor(e,t,n){this.previousValue=e,this.currentValue=t,this.firstChange=n}isFirstChange(){return this.firstChange}};function wc(e,t,n,r){t===null?e[n]=r:t.applyValueToInputSignal(t,r)}var Tc=null,Ec=(()=>{Tc=Oc;let e=()=>Oc;return e.ngInherit=!0,e})();function Dc(){return Tc}function Oc(e){return e.type.prototype.ngOnChanges&&(e.setInput=Ac),kc}function kc(){let e=Mc(this),t=e?.current;if(t){let n=e.previous;if(n===la)e.previous=t;else for(let e in t)n[e]=t[e];e.current=null,this.ngOnChanges(t)}}function Ac(e,t,n,r,i){let a=this.declaredInputs[r],o=Mc(e)||Nc(e,{previous:la,current:null}),s=o.current||={},c=o.previous,l=c[a];s[a]=new Cc(l&&l.currentValue,n,c===la),wc(e,t,i,n)}var jc=`__ngSimpleChanges__`;function Mc(e){return Object.hasOwn(e,jc)&&e[jc]||null}function Nc(e,t){return e[jc]=t}var Pc=[],Fc=function(e,t=null,n){for(let r=0;r=r)break}else t[c]<0&&(e[17]+=65536),(s>14>16&&(e[2]&3)===t&&(e[2]+=16384,Hc(o,a)):Hc(o,a)}var Wc=-1,Gc=class{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(e,t,n,r){this.factory=e,this.name=r,this.canSeeViewProviders=t,this.injectImpl=n}};function Kc(e){return!!(e.flags&8)}function qc(e){return!!(e.flags&16)}function Jc(e,t,n){let r=0;for(;rt){o=a-1;break}}}for(;a>16}function nl(e,t){let n=tl(e),r=t;for(;n>0;)r=r[14],n--;return r}var rl=!0;function il(e){let t=rl;return rl=e,t}var al=255,ol=5,sl=0,cl={};function ll(e,t,n){let r;typeof n==`string`?r=n.charCodeAt(0)||0:Object.hasOwn(n,wi)&&(r=n[wi]),r??=n[wi]=sl++;let i=r&al,a=1<>ol)]|=a}function ul(e,t){let n=fl(e,t);if(n!==-1)return n;let r=t[1];r.firstCreatePass&&(e.injectorIndex=t.length,dl(r.data,e),dl(t,null),dl(r.blueprint,null));let i=pl(e,t),a=e.injectorIndex;if($c(i)){let e=el(i),n=nl(i,t),r=n[1].data;for(let i=0;i<8;i++)t[a+i]=n[e+i]|r[e+i]}return t[a+8]=i,a}function dl(e,t){e.push(0,0,0,0,0,0,0,0,t)}function fl(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function pl(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,i=t;for(;i!==null;){if(r=Ol(i),r===null)return Wc;if(n++,i=i[14],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return Wc}function ml(e,t,n){ll(e,t,n)}function hl(e,t,n){if(n&8||e!==void 0)return e;Fi(t,`NodeInjector`)}function gl(e,t,n,r){if(n&8&&r===void 0&&(r=null),!(n&3)){let i=e[9],a=Bi(void 0);try{return i?i.get(t,r,n&8):Vi(t,r,n&8)}finally{Bi(a)}}return hl(r,t,n)}function _l(e,t,n,r=0,i){if(e!==null){if(t[2]&2048&&!(r&2)){let i=Dl(e,t,n,r,cl);if(i!==cl)return i}let i=vl(e,t,n,r,cl);if(i!==cl)return i}return gl(t,n,r,i)}function vl(e,t,n,r,i){let a=Sl(n);if(typeof a==`function`){if(!ns(t,e,r))return r&1?hl(i,n,r):gl(t,n,r,i);try{let e;if(e=a(r),e==null&&!(r&8))Fi(n);else return e}finally{ss()}}else if(typeof a==`number`){let i=null,o=fl(e,t),s=Wc,c=r&1?t[15][5]:null;for((o===-1||r&4)&&(s=o===-1?pl(e,t):t[o+8],s===Wc||!wl(r,!1)?o=-1:(i=t[1],o=el(s),t=nl(s,t)));o!==-1;){let e=t[1];if(Cl(a,o,e.data)){let e=yl(o,t,n,i,r,c);if(e!==cl)return e}s=t[o+8],s!==Wc&&wl(r,t[1].data[o+8]===c)&&Cl(a,o,t)?(i=e,o=el(s),t=nl(s,t)):o=-1}}return i}function yl(e,t,n,r,i,a){let o=t[1],s=o.data[e+8],c=bl(s,o,n,r==null?Ja(s)&&rl:r!=o&&!!(s.type&3),i&1&&a===s);return c===null?cl:xl(t,o,c,s,i)}function bl(e,t,n,r,i){let a=e.providerIndexes,o=t.data,s=a&1048575,c=e.directiveStart,l=e.directiveEnd,u=a>>20,d=r?s:s+u,f=i?s+u:l;for(let e=d;e=c&&t.type===n)return e}if(i){let e=o[c];if(e&&Xa(e)&&e.type===n)return c}return null}function xl(e,t,n,r,i){let a=e[n],o=t.data;if(a instanceof Gc){let s=a;if(s.resolving)throw Pi(``);let c=il(s.canSeeViewProviders);s.resolving=!0,o[n].type||o[n];let l=s.injectImpl?Bi(s.injectImpl):null;ns(e,r,0);try{a=e[n]=s.factory(void 0,i,o,e,r),t.firstCreatePass&&n>=r.directiveStart&&Ic(n,o[n],t)}finally{l!==null&&Bi(l),il(c),s.resolving=!1,ss()}}return a}function Sl(e){if(typeof e==`string`)return e.charCodeAt(0)||0;let t=Object.hasOwn(e,wi)?e[wi]:void 0;return typeof t==`number`?t>=0?t&al:El:t}function Cl(e,t,n){let r=1<>ol)]&r)}function wl(e,t){return!(e&2)&&!(e&1&&t)}var Tl=class{_tNode;_lView;constructor(e,t){this._tNode=e,this._lView=t}get(e,t,n){return _l(this._tNode,this._lView,e,Ji(n),t)}};function El(){return new Tl(Po(),D())}function Dl(e,t,n,r,i){let a=e,o=t;for(;a!==null&&o!==null&&o[2]&2048&&!Za(o);){let e=vl(a,o,n,r|2,cl);if(e!==cl)return e;r&=-5;let t=a.parent;if(!t){let e=o[20];if(e){let t=e.get(n,cl,r);if(t!==cl)return t}t=Ol(o),o=o[14]}a=t}return i}function Ol(e){let t=e[1],n=t.type;return n===2?t.declTNode:n===1?e[5]:null}function kl(e){return{token:e.token,providedIn:e.autoProvided===!1?null:`root`,factory:e.factory,value:void 0}}function Al(){return jl(Po(),D())}function jl(e,t){return new Ml(ro(e,t))}var Ml=(()=>{class e{nativeElement;constructor(e){this.nativeElement=e}static __NG_ELEMENT_ID__=Al}return e})();function Nl(e){return e instanceof Ml?e.nativeElement:e}function Pl(){return this._results[Symbol.iterator]()}var Fl=class{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new Zr}constructor(e=!1){this._emitDistinctChangesOnly=e}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,t){return this._results.reduce(e,t)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,t){this.dirty=!1;let n=ea(e);(this._changesDetected=!$i(this._results,n,t))&&(this._results=n,this.length=n.length,this.last=n[this.length-1],this.first=n[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.next(this)}onDirty(e){this._onDirty=e}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}[Symbol.iterator]=Pl};function Il(e){return(e.flags&128)==128}var Ll=(function(e){return e[e.OnPush=0]=`OnPush`,e[e.Eager=1]=`Eager`,e[e.Default=1]=`Default`,e})(Ll||{}),Rl=new Map,zl=0;function Bl(){return zl++}function Vl(e){Rl.set(e[19],e)}function Hl(e){Rl.delete(e[19])}var Ul=`__ngContext__`;function Wl(e,t){Ga(t)?(e[Ul]=t[19],Vl(t)):e[Ul]=t}function Gl(e){return ql(e[12])}function Kl(e){return ql(e[4])}function ql(e){for(;e!==null&&!Ka(e);)e=e[4];return e}var Jl=void 0;function Yl(e){Jl=e}function Xl(){if(Jl!==void 0)return Jl;if(typeof document<`u`)return document;throw new T(210,!1)}var Zl=!1,Ql=new vi(``,{factory:()=>Zl}),$l=new WeakMap;function eu(e,t){if(typeof e!=`object`||!e)return;let n=$l.get(e);n||(n=new WeakSet,$l.set(e,n)),n.add(t)}function tu(e){return(e.flags&32)==32}var nu=()=>null;function ru(e,t,n=!1){return nu(e,t,n)}function iu(e,t){let n=e.contentQueries;if(n!==null){let r=w(null);try{for(let r=0;r|^->||--!>|)/g,gu=`​$1​`;function _u(e){return e.replace(mu,e=>e.replace(hu,gu))}function vu(e,t){return e.createText(t)}function yu(e,t,n){e.setValue(t,n)}function bu(e,t){return e.createComment(_u(t))}function xu(e,t,n){return e.createElement(t,n)}function Su(e,t,n,r,i){e.insertBefore(t,n,r,i)}function Cu(e,t,n){e.appendChild(t,n)}function wu(e,t,n,r,i){r===null?Cu(e,t,n):Su(e,t,n,r,i)}function Tu(e,t,n,r){e.removeChild(null,t,n,r)}function Eu(e,t,n){e.setAttribute(t,`style`,n)}function Du(e,t,n){n===``?e.removeAttribute(t,`class`):e.setAttribute(t,`class`,n)}function Ou(e,t,n){let{mergedAttrs:r,classes:i,styles:a}=n;r!==null&&Jc(e,t,r),i!==null&&Du(e,t,i),a!==null&&Eu(e,t,a)}function ku(e){let t=Au();return t?t.sanitize($a.URL,e)||``:uu(e,`URL`)?lu(e):pu(Ai(e))}function Au(){let e=D();return e&&e[10].sanitizer}function ju(e){return e.ownerDocument.defaultView}function Mu(e){return e.ownerDocument}function Nu(e,t,n){let r=e.length;for(;;){let i=e.indexOf(t,n);if(i===-1)return i;if(i===0||e.charCodeAt(i-1)<=32){let n=t.length;if(i+n===r||e.charCodeAt(i+n)<=32)return i}n=i+1}}var Pu=`ng-template`;function Fu(e,t,n,r){let i=0;if(r){for(;i-1){let e;for(;++ia?``:i[u+1].toLowerCase(),r&2&&l!==e){if(zu(r))return!1;o=!0}}}}}return zu(r)||o}function zu(e){return!(e&1)}function Bu(e,t,n,r){if(t===null)return-1;let i=0;if(r||!n){let n=!1;for(;i-1)for(n++;n0?`="`+t+`"`:``)+`]`}else r&8?i+=`.`+o:r&4&&(i+=` `+o)}else i!==``&&!zu(o)&&(t+=Wu(a,i),i=``),r=o,a||=!zu(r);n++}return i!==``&&(t+=Wu(a,i)),t}function Ku(e){return e.map(Gu).join(`,`)}function qu(e){let t=[],n=[],r=1,i=2;for(;r!1});function $u(e){if(!e)return 0;let t=e.toLowerCase().indexOf(`ms`)>-1?1:1e3;return parseFloat(e)*t}function ed(e,t){return e.getPropertyValue(t).split(`,`).map(e=>e.trim())}function td(e){let t=ed(e,`transition-property`),n=ed(e,`transition-duration`),r=ed(e,`transition-delay`),i={propertyName:``,duration:0,animationName:void 0};for(let e=0;ei.duration&&(i.propertyName=t[e],i.duration=a)}return i}function nd(e){let t=ed(e,`animation-name`),n=ed(e,`animation-delay`),r=ed(e,`animation-duration`),i=ed(e,`animation-iteration-count`),a={animationName:``,propertyName:void 0,duration:0};for(let e=0;ea.duration&&s!==`infinite`&&(a.animationName=t[e],a.duration=o)}return a}function rd(e,t){return e!==void 0&&e.duration>t.duration}function id(e){return(e.animationName!=null||e.propertyName!=null)&&e.duration>0}function ad(e){let t=e.effect?.getTiming();if(t===void 0)return;let n=typeof t.duration==`number`?t.duration:0,r=(t.delay??0)+n,i=e.playbackRate;return i!==void 0&&i!==0&&i!==1&&(r/=Math.abs(i)),r}function od(e,t){let n=getComputedStyle(e),r=nd(n),i=td(n),a=r.duration>i.duration?r:i;rd(t.get(e),a)||id(a)&&t.set(e,a)}function sd(e,t,n){if(!n)return;let r=e.getAnimations();return r.length===0?od(e,t):cd(e,t,r)}function cd(e,t,n){let r={animationName:void 0,propertyName:void 0,duration:0};for(let e of n){if(e.effect?.getTiming()?.iterations===1/0)continue;let t=ad(e)??0,n,i;e.animationName?i=e.animationName:n=e.transitionProperty,t>=r.duration&&(r={animationName:i,propertyName:n,duration:t})}rd(t.get(e),r)||id(r)&&t.set(e,r)}var ld=new Set,ud=!1,dd=1,fd=typeof document<`u`&&typeof document?.documentElement?.getAnimations==`function`;function pd(e){return e[9].get(Qu,ud)}function md(e,t,n){let r=gd.get(e);if(r){for(let e of t)r.classList.push(e);for(let e of n)r.cleanupFns.push(e)}else gd.set(e,{classList:t,cleanupFns:n})}function hd(e){let t=gd.get(e);if(t){for(let e of t.cleanupFns)e();gd.delete(e)}_d.delete(e)}var gd=new WeakMap,_d=new WeakMap,vd=new WeakMap;function yd(e){return e?e[14]??e:null}var bd=new WeakSet;function xd(e,t,n){let r=vd.get(e);if(!r||r.length===0)return;let i=t.parentNode,a=t.previousSibling,o=yd(n);for(let e=r.length-1;e>=0;e--){let{el:n,declarationView:s}=r[e],c=n.parentNode;n===t?(r.splice(e,1),bd.add(n),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}}))):(a&&n===a||c&&i&&c!==i&&(o===null||s===null||o===s))&&(r.splice(e,1),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}})),n.parentNode?.removeChild(n))}}function Sd(e,t,n){let r=yd(n),i=vd.get(e);i?i.some(e=>e.el===t)||i.push({el:t,declarationView:r}):vd.set(e,[{el:t,declarationView:r}])}function Cd(e){let t=e[26]??={};return t.enter??=new Map}function wd(e){let t=typeof e==`function`?e():e,n=Array.isArray(t)?t:null;return typeof t==`string`&&(n=t.trim().split(/\s+/).filter(e=>e)),n}function Td(e){return e.composedPath?e.composedPath()[0]:e.target}function Ed(e,t){let n=_d.get(t);if(n===void 0)return!0;if(t!==Td(e))return!1;let r=e.animation;if(r){let e=ad(r);if(e!==void 0&&e+dd{class e{impl=null;execute(){this.impl?.execute()}static ɵprov=di({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Nd=[0,1,2,3],Pd=(()=>{class e{ngZone=E(Fs);scheduler=E(ic);errorHandler=E(qs,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){E(kd,{optional:!0})}execute(){let e=this.sequences.size>0;e&&Fc(Sc.AfterRenderHooksStart),this.executing=!0;for(let e of Nd)for(let t of this.sequences)if(!t.erroredOrDestroyed&&t.hooks[e])try{t.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>{let n=t.hooks[e];return n(t.pipelinedValue)},t.snapshot))}catch(e){t.erroredOrDestroyed=!0,this.errorHandler?.handleError(e)}this.executing=!1;for(let e of this.sequences)e.afterRun(),e.once&&(this.sequences.delete(e),e.destroy());for(let e of this.deferredRegistrations)this.sequences.add(e);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),e&&Fc(Sc.AfterRenderHooksEnd)}register(e){let{view:t}=e;t===void 0?this.executing?this.deferredRegistrations.add(e):this.addSequence(e):((t[25]??=[]).push(e),_o(t),t[2]|=8192)}addSequence(e){this.sequences.add(e),this.scheduler.notify(7)}unregister(e){this.executing&&this.sequences.has(e)?(e.erroredOrDestroyed=!0,e.pipelinedValue=void 0,e.once=!0):(this.sequences.delete(e),this.deferredRegistrations.delete(e))}maybeTrace(e,t){return t?t.run(Od.AFTER_NEXT_RENDER,e):e()}static ɵprov=di({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Fd=class{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(e,t,n,r,i,a=null){this.impl=e,this.hooks=t,this.view=n,this.once=r,this.snapshot=a,this.unregisterOnDestroy=i?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();let e=this.view?.[25];e&&(this.view[25]=e.filter(e=>e!==this))}};function Id(e,t){let n=t?.injector??E(xs);return jd(`NgAfterNextRender`),Rd(e,n,t,!0)}function Ld(e){return e instanceof Function?[void 0,void 0,e,void 0]:[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function Rd(e,t,n,r){let i=t.get(Md);i.impl??=t.get(Pd);let a=t.get(kd,null,{optional:!0}),o=n?.manualCleanup===!0?null:t.get(Cs),s=t.get(nc,null,{optional:!0}),c=new Fd(i.impl,Ld(e),s?.view,r,o,a?.snapshot(null));return i.impl.register(c),c}var zd=new vi(``,{factory:()=>{let e=E(Aa),t=new Set;return e.onDestroy(()=>t.clear()),{queue:t,isScheduled:!1,scheduler:null,injector:e}}});function Bd(e,t,n){let r=e.get(zd);if(Array.isArray(t))for(let e of t)r.queue.add(e),n?.detachedLeaveAnimationFns?.push(e);else r.queue.add(t),n?.detachedLeaveAnimationFns?.push(t);r.scheduler&&r.scheduler(e)}function Vd(e,t){let n=e.get(zd);if(Array.isArray(t))for(let e of t)n.queue.delete(e);else n.queue.delete(t)}function Hd(e,t){let n=e.get(zd);if(t.detachedLeaveAnimationFns){for(let e of t.detachedLeaveAnimationFns)n.queue.delete(e);t.detachedLeaveAnimationFns=void 0}}function Ud(e){let t=e.get(zd);t.isScheduled||=(Id(()=>{t.isScheduled=!1;for(let e of t.queue)e();t.queue.clear()},{injector:t.injector}),!0)}function Wd(e){let t=e.get(zd);t.scheduler=Ud,t.scheduler(e)}function Gd(e,t){for(let[n,r]of t)Bd(e,r.animateFns)}function Kd(e,t,n,r){let i=e?.[26]?.enter;t!==null&&i&&i.has(n.index)&&Gd(r,i)}function qd(e,t,n,r){try{n.get(fa)}catch{return r(!1)}let i=e?.[26];i?.enter?.has(t.index)&&Vd(n,i.enter.get(t.index).animateFns);let a=Jd(e,t,i);if(a.size===0){let n=!1;if(e){let r=[];Xd(e,t,r),n=r.length>0}if(!n)return r(!1)}e&&ld.add(e[19]),Bd(n,()=>Yd(e,t,i||void 0,a,r),i||void 0)}function Jd(e,t,n){let r=new Map,i=n?.leave;if(i&&i.has(t.index)&&r.set(t.index,i.get(t.index)),e&&i)for(let[n,a]of i){if(r.has(n))continue;let i=e[1].data[n].parent;for(;i;){if(i===t){r.set(n,a);break}i=i.parent}}return r}function Yd(e,t,n,r,i){let a=[];if(n&&n.leave)for(let[e]of r){if(!n.leave.has(e))continue;let t=n.leave.get(e);for(let e of t.animateFns){let{promise:t}=e();a.push(t)}n.detachedLeaveAnimationFns=void 0}if(e&&Xd(e,t,a),a.length>0){let t=n||e?.[26];if(t){let n=t.running;n&&a.push(n),t.running=Promise.allSettled(a),Qd(e,t.running,i)}else Promise.allSettled(a).then(()=>{e&&ld.delete(e[19]),i(!0)})}else e&&ld.delete(e[19]),i(!1)}function Xd(e,t,n){if(t.type&12){let r=e[t.index];if(Ka(r))for(let e=10;e{e[26]?.running===t&&(e[26].running=void 0,ld.delete(e[19])),n(!0)})}function $d(e,t,n,r,i,a,o,s){if(i!=null){let c,l=!1;Ka(i)?c=i:Ga(i)&&(l=!0,i=i[0]);let u=to(i);e===0&&r!==null?(Kd(s,r,a,n),o==null?Cu(t,r,u):Su(t,r,u,o||null,!0)):e===1&&r!==null?(Kd(s,r,a,n),Su(t,r,u,o||null,!0),xd(a,u,s)):e===2?(s?.[26]?.leave?.has(a.index)&&Sd(a,u,s),bd.delete(u),qd(s,a,n,e=>{if(bd.has(u)){bd.delete(u);return}Tu(t,u,l,e)})):e===3&&(bd.delete(u),qd(s,a,n,()=>{t.destroyNode(u)})),c!=null&&Cf(t,e,n,c,a,r,o)}}function ef(e,t){nf(e,t),t[0]=null,t[5]=null}function tf(e,t,n,r,i,a){r[0]=i,r[5]=t,bf(e,r,n,1,i,a)}function nf(e,t){t[10].changeDetectionScheduler?.notify(9),bf(e,t,t[11],2,null,null)}function rf(e){let t=e[12];if(!t)return sf(e[1],e);for(;t;){let n=null;if(Ga(t))n=t[12];else{let e=t[10];e&&(n=e)}if(!n){for(;t&&!t[4]&&t!==e;)Ga(t)&&sf(t[1],t),t=t[3];t===null&&(t=e),Ga(t)&&sf(t[1],t),n=t&&t[4]}t=n}}function af(e,t){let n=e[9],r=n.indexOf(t);n.splice(r,1)}function of(e,t){if(Qa(t))return;let n=t[11];n.destroyNode&&bf(e,t,n,3,null,null),rf(t)}function sf(e,t){if(Qa(t))return;let n=w(null);try{t[2]&=-129,t[2]|=256,t[24]&&En(t[24]),lf(e,t),cf(e,t),t[1].type===1&&t[11].destroy();let n=t[16];if(n!==null&&Ka(t[3])){n!==t[3]&&af(n,t);let r=t[18];r!==null&&r.detachView(e)}Hl(t)}finally{w(n)}}function cf(e,t){let n=e.cleanup,r=t[7];if(n!==null)for(let e=0;e=0?r[t]():r[-t].unsubscribe(),e+=2}else{let t=r[n[e+1]];n[e].call(t)}r!==null&&(t[7]=null);let i=t[21];if(i!==null){t[21]=null;for(let e=0;e27&&Nf(e,t,27,!1),Fc(o?Sc.TemplateUpdateStart:Sc.TemplateCreateStart,i,n),n(r,i)}finally{ds(a),Fc(o?Sc.TemplateUpdateEnd:Sc.TemplateCreateEnd,i,n)}}function Lf(e,t,n){Wf(e,t,n),(n.flags&64)==64&&Gf(e,t,n)}function Rf(e,t,n=ro){let r=t.localNames;if(r!==null){let i=t.index+1;for(let a=0;a{_o(e.lView)},consumerOnSignalRead(){this.lView[24]=this}};function hp(e){let t=e[24]??Object.create(gp);return t.lView=e,t}var gp={...pn,consumerIsAlwaysLive:!0,kind:`template`,consumerMarkedDirty:e=>{let t=bo(e.lView);for(;t&&!_p(t[1]);)t=bo(t);t&&po(t)},consumerOnSignalRead(){this.lView[24]=this}};function _p(e){return e.type!==2}function vp(e){if(e[23]===null)return;let t=!0;for(;t;){let n=!1;for(let t of e[23])if(t.dirty&&(n=!0,t.zone===null||Zone.current===t.zone?t.run():t.zone.run(()=>t.run()),e[23]===null))return;t=n&&!!(e[2]&8192)}}var yp=100;function bp(e,t=0){let n=e[10].rendererFactory;n.begin?.();try{xp(e,t)}finally{n.end?.()}}function xp(e,t){let n=Vo();try{Ho(!0),Dp(e,t);let n=0;for(;ho(e);){if(n===yp)throw new T(103,!1);n++,Dp(e,1)}}finally{Ho(n)}}function Sp(e,t,n,r){if(Qa(t))return;let i=t[2];rs(t);let a=!0,o=null,s=null;_p(e)?(s=dp(t),o=xn(s)):fn()===null?(a=!1,s=hp(t),o=xn(s)):t[24]&&=(En(t[24]),null);try{fo(t),Go(e.bindingStartIndex),n!==null&&If(e,t,n,2,r);let a=(i&3)==3;if(a){let n=e.preOrderCheckHooks;n!==null&&Rc(t,n,null)}else{let n=e.preOrderHooks;n!==null&&zc(t,n,0,null),Bc(t,0)}if(wp(t),vp(t),Cp(t,0),e.contentQueries!==null&&iu(e,t),a){let n=e.contentCheckHooks;n!==null&&Rc(t,n)}else{let n=e.contentHooks;n!==null&&zc(t,n,1),Bc(t,1)}kp(e,t);let o=e.components;o!==null&&Op(t,o,0);let s=e.viewQuery;if(s!==null&&au(2,s,r),a){let n=e.viewCheckHooks;n!==null&&Rc(t,n)}else{let n=e.viewHooks;n!==null&&zc(t,n,2),Bc(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[22]){for(let e of t[22])e();t[22]=null}lp(t),t[2]&=-73}catch(e){throw _o(t),e}finally{s!==null&&(Cn(s,o),a&&pp(s)),cs()}}function Cp(e,t){for(let n=Gl(e);n!==null;n=Kl(n))for(let e=10;e0&&(e[n-1][4]=r[4]);let a=ra(e,10+t);ef(r[1],r);let o=a[18];o!==null&&o.detachView(a[1]),r[3]=null,r[4]=null,r[2]&=-129}return r}function Ip(e,t,n,r){let i=10+r,a=n.length;r>0&&(n[i-1][4]=t),r-1&&(Fp(e,n),ra(t,n))}this._attachedToViewContainer=!1}of(this._lView[1],this._lView)}onDestroy(e){vo(this._lView,e)}markForCheck(){Ap(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[2]&=-129}reattach(){go(this._lView),this._lView[2]|=128}detectChanges(){this._lView[2]|=1024,bp(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new T(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let e=Za(this._lView),t=this._lView[16];t!==null&&!e&&af(t,this._lView),nf(this._lView[1],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new T(902,!1);this._appRef=e;let t=Za(this._lView),n=this._lView[16];n!==null&&!t&&Lp(n,this._lView),go(this._lView)}},zp=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=Bp;constructor(e,t,n){this._declarationLView=e,this._declarationTContainer=t,this.elementRef=n}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,t){return this.createEmbeddedViewImpl(e,t)}createEmbeddedViewImpl(e,t,n){return new Rp(ap(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:t,dehydratedView:n}))}}return e})();function Bp(){return Vp(Po(),D())}function Vp(e,t){return e.type&4?new zp(t,e,jl(e,t)):null}function Hp(e,t,n,r,i){let a=e.data[t];if(a===null)a=Up(e,t,n,r,i),Jo()&&(a.flags|=32);else if(a.type&64){a.type=n,a.value=r,a.attrs=i;let e=Io();a.injectorIndex=e===null?-1:e.injectorIndex}return Lo(a,!0),a}function Up(e,t,n,r,i){let a=Fo(),o=Ro(),s=o?a:a&&a.parent,c=e.data[t]=Gp(e,s,n,t,r,i);return Wp(e,c,a,o),c}function Wp(e,t,n,r){e.firstChild===null&&(e.firstChild=t),n!==null&&(r?n.child==null&&t.parent!==null&&(n.child=t):n.next===null&&(n.next=t,t.prev=n))}function Gp(e,t,n,r,i,a){let o=t?t.injectorIndex:-1,s=0;return Ao()&&(s|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:o,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:s,providerIndexes:0,value:i,namespace:hs(),attrs:a,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function Kp(e){let t=e[6]??[],n=e[3][11],r=[];for(let e of t)e.data.di===void 0?qp(e,n):r.push(e);e[6]=r}function qp(e,t){let n=0,r=e.firstChild;if(r){let i=e.data.r;for(;nnull,Yp=()=>null;function Xp(e,t){return Jp(e,t)}function Zp(e,t,n){return Yp(e,t,n)}var Qp=class{},$p=class{},em=(()=>{class e{static ɵprov=di({token:e,providedIn:`root`,factory:()=>null})}return e})();function tm(e){return e.debugInfo?.className||e.type.name||null}var nm={},rm=class{injector;parentInjector;constructor(e,t){this.injector=e,this.parentInjector=t}get(e,t,n){let r=this.injector.get(e,nm,n);return r!==nm||t===nm?r:this.parentInjector.get(e,t,n)}};function im(e,t,n){return e[t]=n}function am(e,t){return e[t]}function om(e,t,n){if(n===Ju)return!1;let r=e[t];return!Object.is(r,n)&&(e[t]=n,!0)}function sm(e,t,n,r){let i=om(e,t,n);return om(e,t+1,r)||i}function cm(e,t,n,r,i){let a=sm(e,t,n,r);return om(e,t+2,i)||a}function lm(e,t,n,r,i,a){let o=sm(e,t,n,r);return sm(e,t+2,i,a)||o}function um(e,t,n){return function r(i){let a=r.__ngNativeEl__;a!==void 0&&eu(i,a),Ap(Ja(e)?so(e.index,t):t,5);let o=t[8],s=dm(t,o,n,i),c=r.__ngNextListenerFn__;for(;c;)s=dm(t,o,c,i)&&s,c=c.__ngNextListenerFn__;return s}}function dm(e,t,n,r){let i=w(null);try{return Fc(Sc.OutputStart,t,n),n(r)!==!1}catch(t){return $f(e,t),!1}finally{Fc(Sc.OutputEnd,t,n),w(i)}}function fm(e,t,n,r,i,a,o,s){let c=Ya(e),l=!1,u=null;if(!r&&c&&(u=mm(t,n,a,e.index)),u!==null){let e=u.__ngLastListenerFn__||u;e.__ngNextListenerFn__=o,u.__ngLastListenerFn__=o,l=!0}else{let o=ro(e,n),c=r?r(o):o;r||(s.__ngNativeEl__=o);let l=i.listen(c,a,s);pm(a)||hm(r?t=>r(to(t[e.index])):e.index,t,n,a,s,l,!1)}return l}function pm(e){return e.startsWith(`animation`)||e.startsWith(`transition`)}function mm(e,t,n,r){let i=e.cleanup;if(i!=null)for(let e=0;er?n[r]:null}typeof a==`string`&&(e+=2)}return null}function hm(e,t,n,r,i,a,o){let s=t.firstCreatePass?So(t):null,c=xo(n),l=c.length;c.push(i,a),s&&s.push(r,e,l,(l+1)*(o?-1:1))}function gm(e,t,n,r,i,a){let o=t[n],s=t[1],c=o[s.data[n].outputs[r]].subscribe(a);hm(e.index,s,t,i,a,c,!0)}var _m=Symbol(`BINDING`),vm=new vi(``);function ym(e,t,n){let r=n?e.styles:null,i=n?e.classes:null,a=0;if(t!==null)for(let e=0;e0&&(n.directiveToIndex=new Map);for(let c=0;c0;){let n=e[--t];if(typeof n==`number`&&n<0)return n}return 0}function Nm(e,t,n){if(n){if(t.exportAs)for(let r=0;r{let[n,r,i]=e[t],a={propName:n,templateName:t,isSignal:(r&Pf.SignalBased)!==0};return i&&(a.transform=i),a})}function Vm(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function Hm(e,t,n){let r=t instanceof Aa?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new rm(n,r):n}function Um(e){let t=e.get($p,null);if(t===null)throw new T(407,!1);return{rendererFactory:t,sanitizer:e.get(em,null),changeDetectionScheduler:e.get(ic,null),ngReflect:!1,tracingService:e.get(kd,null,{optional:!0})}}function Wm(e,t,n){let r=Km(e);return xu(t,r,r===`svg`?`svg`:r===`math`?eo:n)}function Gm(e){if((e&&`localName`in e&&typeof e.localName==`string`?e.localName:e?.tagName)?.toLowerCase()===`script`)throw new T(905,!1)}function Km(e){return(e.selectors[0][0]||`div`).toLowerCase()}var qm=class{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=Bm(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=Vm(this.componentDef.outputs),this.cachedOutputs}constructor(e,t){this.componentDef=e,this.ngModule=t,this.componentType=e.type,this.selector=Ku(e.selectors),this.ngContentSelectors=e.ngContentSelectors??[],this.isBoundToModule=!!t}create(e,t,n,r,i,a,o){Fc(Sc.DynamicComponentStart);let s=w(null);try{let s=this.componentDef,c=Hm(s,r||this.ngModule,e),l=Um(c),u=l.tracingService;return u&&u.componentCreate?u.componentCreate(tm(s),()=>this.createComponentRef(l,c,t,n,i,a,o)):this.createComponentRef(l,c,t,n,i,a,o)}finally{w(s)}}createComponentRef(e,t,n,r,i,a,o){let s=this.componentDef,c=Jm(r,s,a,i),l=e.rendererFactory.createRenderer(null,s),u=r?zf(l,r,s.encapsulation,t):Wm(s,l,o??null);Gm(u);let d=t.get(vm,null),f=Ym(u,()=>t.get(Ss,null)??Xl());d&&d.addHost(f);let p=a?.some(Zm)||i?.some(e=>typeof e!=`function`&&e.bindings.some(Zm)),m=Of(null,c,null,512|Af(s),null,null,e,l,t,null,ru(u,t,!0));d&&Rm&&f instanceof ShadowRoot&&vo(m,()=>{d.removeHost(f)}),m[27]=u,rs(m);let h=null;try{let e=Fm(27,m,2,`#host`,()=>c.directiveRegistry,!0,0);Ou(l,u,e),Wl(u,m),Lf(c,m,e),ou(c,e,m),Im(c,e),n!==void 0&&$m(e,this.ngContentSelectors,n),h=so(e.index,m),m[8]=h[8],rp(c,m,null)}catch(e){throw h!==null&&Hl(h),Hl(m),e}finally{Fc(Sc.DynamicComponentEnd),cs()}return new Qm(this.componentType,m,!!p)}};function Jm(e,t,n,r){let i=e?[`ng-version`,`22.1.7`]:qu(t.selectors[0]),a=null,o=null,s=0;if(n)for(let e of n)s+=e[_m].requiredVars,e.create&&(e.targetIdx=0,(a??=[]).push(e)),e.update&&(e.targetIdx=0,(o??=[]).push(e));if(r)for(let e=0;e{if(n&1&&e)for(let t of e)t.create();if(n&2&&t)for(let e of t)e.update()}}function Zm(e){let t=e[_m].kind;return t===`input`||t===`twoWay`}var Qm=class extends Qp{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(e,t,n){super(),this._rootLView=t,this._hasInputBindings=n,this._tNode=io(t[1],27),this.location=jl(this._tNode,t),this.instance=so(this._tNode.index,t)[8],this.hostView=this.changeDetectorRef=new Rp(t,void 0),this.componentType=e}setInput(e,t){this._hasInputBindings;let n=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(e)&&Object.is(this.previousInputValues.get(e),t))return;let r=this._rootLView;ep(n,r[1],r,e,t),this.previousInputValues.set(e,t),Ap(so(n.index,r),1)}get injector(){return new Tl(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(e){this.hostView.onDestroy(e)}};function $m(e,t,n){let r=e.projection=[];for(let e=0;e{class e{static __NG_ELEMENT_ID__=th}return e})();function th(){return ah(Po(),D())}var nh=class e extends eh{_lContainer;_hostTNode;_hostLView;constructor(e,t,n){super(),this._lContainer=e,this._hostTNode=t,this._hostLView=n}get element(){return jl(this._hostTNode,this._hostLView)}get injector(){return new Tl(this._hostTNode,this._hostLView)}get parentInjector(){let e=pl(this._hostTNode,this._hostLView);if($c(e)){let t=nl(e,this._hostLView),n=el(e),r=t[1].data[n+8];return new Tl(r,t)}return new Tl(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let t=rh(this._lContainer);return t!==null&&t[e]||null}get length(){return this._lContainer.length-10}createEmbeddedView(e,t,n){let r,i;typeof n==`number`?r=n:n!=null&&(r=n.index,i=n.injector);let a=Xp(this._lContainer,e.ssrId),o=e.createEmbeddedViewImpl(t||{},i,a);return this.insertImpl(o,r,op(this._hostTNode,a)),o}createComponent(e,t,n,r,i,a,o){let s,c=t||{};s=c.index,n=c.injector,r=c.projectableNodes,i=c.environmentInjector||c.ngModuleRef,a=c.directives,o=c.bindings;let l=new qm(Ei(e)),u=n||this.parentInjector;if(!i&&l.ngModule==null){let e=this.parentInjector.get(Aa,null);e&&(i=e)}let d=Ei(l.componentType??{}),f=Xp(this._lContainer,d?.id??null),p=f?.firstChild??null,m=l.create(u,r,p,i,a,o,this._getHostElementNamespace());return this.insertImpl(m.hostView,s,op(this._hostTNode,f)),m}_getHostElementNamespace(){if(this._hostTNode.type&2){let e=this._hostTNode.parent??this._hostLView[5];return e!==null&&e.type&2&&typeof e.value==`string`&&e.value.toLowerCase()===`foreignobject`?null:e?.namespace??null}return this._hostTNode.namespace}insert(e,t){return this.insertImpl(e,t,!0)}insertImpl(t,n,r){let i=t._lView;if(lo(i)){let n=this.indexOf(t);if(n!==-1)this.detach(n);else{let n=i[3],r=new e(n,n[5],n[3]);r.detach(r.indexOf(t))}}let a=this._adjustIndex(n),o=this._lContainer;return Np(o,i,a,r),t.attachToViewContainerRef(),na(ih(o),a,t),t}move(e,t){return this.insert(e,t)}indexOf(e){let t=rh(this._lContainer);return t===null?-1:t.indexOf(e)}remove(e){let t=this._adjustIndex(e,-1),n=Fp(this._lContainer,t);n&&(ra(ih(this._lContainer),t),of(n[1],n))}detach(e){let t=this._adjustIndex(e,-1),n=Fp(this._lContainer,t);return n&&ra(ih(this._lContainer),t)!=null?new Rp(n):null}_adjustIndex(e,t=0){return e??this.length+t}};function rh(e){return e[8]}function ih(e){return e[8]||=[]}function ah(e,t){let n,r=t[e.index];return Ka(r)?n=r:(n=jp(r,t,null,e),t[e.index]=n,Mf(t,n)),sh(n,t,e,r),new nh(n,e,t)}function oh(e,t){let n=e[11],r=n.createComment(``),i=ro(t,e);return Su(n,n.parentNode(i),r,n.nextSibling(i),!1),r}var sh=uh,ch=()=>!1;function lh(e,t,n){return ch(e,t,n)}function uh(e,t,n,r){if(e[7])return;let i;i=n.type&8?to(r):oh(t,n),e[7]=i}var dh=class e{queryList;matches=null;constructor(e){this.queryList=e}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},fh=class e{queries;constructor(e=[]){this.queries=e}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries===null?n.length:t.contentQueries[0],i=[];for(let e=0;e0)r.push(o[e/2]);else{let i=a[e+1],o=t[-n];for(let e=10;ee.trim())}function Eh(e,t,n){e.queries===null&&(e.queries=new mh),e.queries.track(new hh(t,n))}function Dh(e,t){return e.queries.getByIndex(t)}function Oh(e,t){let n=e[1],r=Dh(n,t);return r.crossesNgTemplate?xh(n,e,t,[]):bh(n,e,r,t)}function kh(e,t,n){let r,i=Mn(()=>{r._dirtyCounter();let n=Nh(r,e);if(t&&n===void 0)throw new T(-951,!1);return n});return r=i[dn],r._dirtyCounter=j(0),r._flatValue=void 0,i}function Ah(e){return kh(!0,!1,e)}function jh(e){return kh(!0,!0,e)}function Mh(e,t){let n=e[dn];n._lView=D(),n._queryIndex=t,n._queryList=Sh(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(e=>e+1))}function Nh(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[2]&4)return t?void 0:ua;let i=Sh(n,r),a=Oh(n,r);return i.reset(a,Nl),t?i.first:i._changesDetected||e._flatValue===void 0?e._flatValue=i.toArray():e._flatValue}function Ph(e){return!!e&&typeof e.then==`function`}function Fh(e){return!!e&&typeof e.subscribe==`function`}var Ih=class{},Lh=class extends Ih{injector;instance=null;constructor(e){super();let t=new ja([...e.providers,{provide:Ih,useValue:this}],e.parent||ka(),e.debugName,new Set([`environment`]));this.injector=t,e.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function Rh(e,t,n=null){return new Lh({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var zh=(()=>{class e{_injector;cachedInjectors=new Map;constructor(e){this._injector=e}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){let t=ga(!1,e.type),n=t.length>0?Rh([t],this._injector,``):null;this.cachedInjectors.set(e,n)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(let e of this.cachedInjectors.values())e!==null&&e.destroy()}finally{this.cachedInjectors.clear()}}static ɵprov=di({token:e,providedIn:`environment`,factory:()=>new e(qi(Aa))})}return e})();function Bh(e){return xc(()=>{let t=Kh(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection!==Ll.Eager,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?e=>e.get(zh).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||su.Emulated,styles:e.styles||ua,_:null,schemas:e.schemas||null,tView:null,id:``};t.standalone&&jd(`NgStandalone`),qh(n);let r=e.dependencies;return n.directiveDefs=Jh(r,Vh),n.pipeDefs=Jh(r,Oi),n.id=Yh(n),n})}function Vh(e){return Ei(e)||Di(e)}function Hh(e,t){if(e==null)return la;let n={};for(let r in e)if(Object.hasOwn(e,r)){let i=e[r],a,o,s,c;Array.isArray(i)?(s=i[0],a=i[1],o=i[2]??a,c=i[3]||null):(a=i,o=i,s=Pf.None,c=null),n[a]=[r,s,c],t[a]=o}return n}function Uh(e){if(e==null)return la;let t={};for(let n in e)Object.hasOwn(e,n)&&(t[e[n]]=n);return t}function Wh(e){return xc(()=>{let t=Kh(e);return qh(t),t})}function Gh(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function Kh(e){let t={};return{type:e.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputConfig:e.inputs||la,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||ua,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,signalFormsInputPresence:null,inputs:Hh(e.inputs,t),outputs:Uh(e.outputs),debugInfo:null}}function qh(e){e.features?.forEach(t=>t(e))}function Jh(e,t){return e?()=>{let n=typeof e==`function`?e():e,r=[];for(let e of n){let n=t(e);n!==null&&r.push(n)}return r}:null}function Yh(e){let t=0,n=typeof e.consts==`function`?``:e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,n,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(let e of r.join(`|`))t=Math.imul(31,t)+e.charCodeAt(0)<<0;return t+=2147483648,`c`+t}var Xh=new vi(``),Zh=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((e,t)=>{this.resolve=e,this.reject=t});appInits=E(Xh,{optional:!0})??[];injector=E(xs);constructor(){}runInitializers(){if(this.initialized)return;let e=[];for(let t of this.appInits){let n=Ha(this.injector,t);if(Ph(n))e.push(n);else if(Fh(n)){let t=new Promise((e,t)=>{n.subscribe({complete:e,error:t})});e.push(t)}}let t=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{t()}).catch(e=>{this.reject(e)}),e.length===0&&t(),this.initialized=!0}static ɵfac=function(t){return new(t||e)};static ɵprov=kl({token:e,factory:e.ɵfac})}return e})();function Qh(e,t,n,r,i,a,o,s){if(n.firstCreatePass){e.mergedAttrs=Zc(e.mergedAttrs,e.attrs);let t=e.tView=Tf(2,e,i,a,o,n.directiveRegistry,n.pipeRegistry,null,n.schemas,n.consts,null);n.queries!==null&&(n.queries.template(n,e),t.queries=n.queries.embeddedTView(e))}s&&(e.flags|=s),Lo(e,!1);let c=ng(n,t,e,r);_s()&&hf(n,t,c,e),Wl(c,t);let l=jp(c,t,c,e);t[r+27]=l,Mf(t,l),lh(l,e,t)}function $h(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;return t.firstCreatePass?(f=Hp(t,d,4,o||null,s||null),ko()&&xm(t,e,f,uo(t.consts,l),qf),Lc(t,f)):f=t.data[d],Qh(f,e,t,n,r,i,a,c),Ya(f)&&Lf(t,e,f),l!=null&&Rf(e,f,u),f}function eg(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;if(t.firstCreatePass){if(f=Hp(t,d,4,o||null,s||null),l!=null){let e=uo(t.consts,l);f.localNames=[];for(let t=0;t{throw new T(600,``)})}var sg=10,cg=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=E(Js);afterRenderManager=E(Md);zonelessEnabled=E(ac);rootEffectScheduler=E(sc);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new Zr;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=E(Ds);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(ei(e=>!e))}constructor(){E(kd,{optional:!0})}whenStable(){let e;return new Promise(t=>{e=this.isStable.subscribe({next:e=>{e&&t()}})}).finally(()=>{e.unsubscribe()})}_injector=E(Aa);_rendererFactory=null;get injector(){return this._injector}bootstrap(e,t){return this.bootstrapImpl(e,t)}bootstrapImpl(e,t,n=xs.NULL){return this._injector.get(Fs).run(()=>{if(Fc(Sc.BootstrapComponentStart),!this._injector.get(Zh).done)throw new T(405,``);let r=Ei(e),i=this._injector.get(Ih),a=new qm(r,i);this.componentTypes.push(e);let{hostElement:o,directives:s,bindings:c}=lg(t),l=o||a.selector,u=a.create(n,[],l,i.injector,s,c),d=u.location.nativeElement,f=u.injector.get(ig,null);return f?.registerApplication(d),u.onDestroy(()=>{this.detachView(u.hostView),ug(this.components,u),f?.unregisterApplication(d)}),this._loadComponent(u),Fc(Sc.BootstrapComponentEnd,u),u})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){Fc(Sc.ChangeDetectionStart),this.tracingSnapshot===null?this.tickImpl():this.tracingSnapshot.run(Od.CHANGE_DETECTION,this.tickImpl)}tickImpl=()=>{if(this._runningTick)throw Fc(Sc.ChangeDetectionEnd),new T(101,!1);let e=w(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,w(e),this.afterTick.next(),Fc(Sc.ChangeDetectionEnd)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get($p,null,{optional:!0}));let e=0;for(;this.dirtyFlags!==0&&e++ho(e))){this.dirtyFlags|=2;return}this.dirtyFlags&=-8}attachView(e){let t=e;this._views.push(t),t.attachToAppRef(this)}detachView(e){let t=e;ug(this._views,t),t.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView);try{this.tick()}catch(e){this.internalErrorHandler(e)}this.components.push(e),this._injector.get(ag,[]).forEach(t=>t(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>ug(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new T(406,!1);let e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}static ɵfac=function(t){return new(t||e)};static ɵprov=kl({token:e,factory:e.ɵfac})}return e})();function lg(e){return e===void 0||typeof e==`string`||e instanceof Element?{hostElement:e}:e}function ug(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function N(e,t,n,r){let i=D();return om(i,Ko(),t)&&(No(),Jf(fs(),i,e,t,n,r)),N}function dg(e){if(jd(`NgAnimateEnter`),!fd)return dg;let t=D();if(pd(t))return dg;let n=Po(),r=t[9].get(Fs);return Dd(Cd(t),n,()=>fg(t,n,e,r)),Wd(t[9]),Gd(t[9],Cd(t)),dg}function fg(e,t,n,r){let i=ro(t,e),a=e[11],o=wd(n),s=[],c=!1,l=e=>{if(Td(e)!==i)return;let t=e instanceof AnimationEvent?`animationend`:`transitionend`;r.runOutsideAngular(()=>{a.listen(i,t,u)})},u=e=>{Td(e)===i&&(Ed(e,i)&&(c=!0),pg(e,i,a))};if(o&&o.length>0){r.runOutsideAngular(()=>{s.push(a.listen(i,`animationstart`,l)),s.push(a.listen(i,`transitionstart`,l))}),md(i,o,s);for(let e of o)a.addClass(i,e);r.runOutsideAngular(()=>{requestAnimationFrame(()=>{if(!c&&(sd(i,_d,fd),!_d.has(i))){for(let e of o)a.removeClass(i,e);hd(i)}})})}}function pg(e,t,n){let r=gd.get(t);if(Td(e)===t&&r&&Ed(e,t)){e.stopPropagation();for(let e of r.classList)n.removeClass(t,e);hd(t)}}var mg=class{destroy(e){}updateValue(e,t){}swap(e,t){let n=Math.min(e,t),r=Math.max(e,t),i=this.detach(r);if(r-n>1){let e=this.detach(n);this.attach(n,i),this.attach(r,e)}else this.attach(n,i)}move(e,t){this.attach(t,this.detach(e))}};function hg(e,t,n,r,i){return e===n&&Object.is(t,r)?1:Object.is(i(e,t),i(n,r))?-1:0}function gg(e,t,n,r){let i,a,o=0,s=e.length-1;if(Array.isArray(t)){w(r);let c=t.length-1;for(w(null);o<=s&&o<=c;){let r=e.at(o),l=t[o],u=hg(o,r,o,l,n);if(u!==0){u<0&&e.updateValue(o,l),o++;continue}let d=e.at(s),f=t[c],p=hg(s,d,c,f,n);if(p!==0){p<0&&e.updateValue(s,f),s--,c--;continue}let m=n(o,r),h=n(s,d),g=n(o,l);if(Object.is(g,h)){let t=n(c,f);Object.is(t,m)?(e.swap(o,s),e.updateValue(s,f),c--,s--):e.move(s,o),e.updateValue(o,l),o++;continue}if(i??=new bg,a??=yg(e,o,s,n),_g(e,i,o,g))e.updateValue(o,l),o++,s++;else if(a.has(g))i.set(m,e.detach(o)),s--;else{let n=e.create(o,t[o]);e.attach(o,n),o++,s++}}for(;o<=c;)vg(e,i,n,o,t[o]),o++}else if(t!=null){w(r);let c=t[Symbol.iterator]();w(null);let l=c.next();for(;!l.done&&o<=s;){let t=e.at(o),r=l.value,u=hg(o,t,o,r,n);if(u!==0)u<0&&e.updateValue(o,r),o++,l=c.next();else{i??=new bg,a??=yg(e,o,s,n);let u=n(o,r);if(_g(e,i,o,u))e.updateValue(o,r),o++,s++,l=c.next();else if(!a.has(u))e.attach(o,e.create(o,r)),o++,s++,l=c.next();else{let r=n(o,t);i.set(r,e.detach(o)),s--}}}for(;!l.done;)vg(e,i,n,e.length,l.value),l=c.next()}for(;o<=s;)e.destroy(e.detach(s--));i?.forEach(t=>{e.destroy(t)})}function _g(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function vg(e,t,n,r,i){if(_g(e,t,r,n(r,i)))e.updateValue(r,i);else{let t=e.create(r,i);e.attach(r,t)}}function yg(e,t,n,r){let i=new Set;for(let a=t;a<=n;a++)i.add(r(a,e.at(a)));return i}var bg=class{kvMap=new Map;_vMap=void 0;has(e){return this.kvMap.has(e)}delete(e){if(!this.has(e))return!1;let t=this.kvMap.get(e);return this._vMap!==void 0&&this._vMap.has(t)?(this.kvMap.set(e,this._vMap.get(t)),this._vMap.delete(t)):this.kvMap.delete(e),!0}get(e){return this.kvMap.get(e)}set(e,t){if(this.kvMap.has(e)){let n=this.kvMap.get(e);this._vMap===void 0&&(this._vMap=new Map);let r=this._vMap;for(;r.has(n);)n=r.get(n);r.set(n,t)}else this.kvMap.set(e,t)}forEach(e){for(let[t,n]of this.kvMap)if(e(n,t),this._vMap!==void 0){let r=this._vMap;for(;r.has(n);)n=r.get(n),e(n,t)}}};function P(e,t,n,r,i,a,o,s){jd(`NgControlFlow`);let c=D(),l=No();return eg(c,l,e,t,n,r,i,uo(l.consts,a),256,o,s),xg}function xg(e,t,n,r,i,a,o,s){jd(`NgControlFlow`);let c=D(),l=No();return eg(c,l,e,t,n,r,i,uo(l.consts,a),512,o,s),xg}function F(e,t){jd(`NgControlFlow`);let n=D(),r=Ko(),i=n[r]===Ju?-1:n[r],a=i===-1?void 0:Dg(n,27+i);if(om(n,r,e)){let r=w(null);try{if(a!==void 0&&Pp(a,0),e!==-1){let r=27+e,i=Dg(n,r),a=Mg(n[1],r),o=Zp(i,a,n);Np(i,ap(n,a,t,{dehydratedView:o}),0,op(a,o))}}finally{w(r)}}else if(a!==void 0){let e=Mp(a,0);e!==void 0&&(e[8]=t)}}var Sg=class{lContainer;$implicit;$index;constructor(e,t,n){this.lContainer=e,this.$implicit=t,this.$index=n}get $count(){return this.lContainer.length-10}};function Cg(e){return e}function wg(e,t){return t}var Tg=class{hasEmptyBlock;trackByFn;liveCollection;constructor(e,t,n){this.hasEmptyBlock=e,this.trackByFn=t,this.liveCollection=n}};function I(e,t,n,r,i,a,o,s,c,l,u,d,f){jd(`NgControlFlow`);let p=D(),m=No(),h=c!==void 0,g=D(),_=new Tg(h,s?o.bind(g[15][8]):o);g[27+e]=_,eg(p,m,e+1,t,n,r,i,uo(m.consts,a),256),h&&eg(p,m,e+2,c,l,u,d,uo(m.consts,f),512)}var Eg=class extends mg{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(e,t,n){super(),this.lContainer=e,this.hostLView=t,this.templateTNode=n}get length(){return this.lContainer.length-10}at(e){return this.getLView(e)[8].$implicit}attach(e,t){let n=t[6];this.needsIndexUpdate||=e!==this.length,Np(this.lContainer,t,e,op(this.templateTNode,n)),Og(this.lContainer,e)}detach(e){return this.needsIndexUpdate||=e!==this.length-1,kg(this.lContainer,e),Ag(this.lContainer,e)}create(e,t){let n=Xp(this.lContainer,this.templateTNode.tView.ssrId);return ap(this.hostLView,this.templateTNode,new Sg(this.lContainer,t,e),{dehydratedView:n})}destroy(e){of(e[1],e)}updateValue(e,t){this.getLView(e)[8].$implicit=t}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let e=0;e0){let e=n[9];Hd(e,r),ld.delete(n[19]),r.detachedLeaveAnimationFns=void 0}}function kg(e,t){if(e.length<=10)return;let n=e[10+t],r=n?n[26]:void 0;r&&r.leave&&r.leave.size>0&&(r.detachedLeaveAnimationFns=[])}function Ag(e,t){return Fp(e,t)}function jg(e,t){return Mp(e,t)}function Mg(e,t){return io(e,t)}function R(e,t,n){let r=D();return om(r,Ko(),t)&&(No(),Vf(fs(),r,e,t,r[11],n)),R}function Ng(e,t,n,r,i){ep(t,e,n,i?`class`:`style`,r)}function z(e,t,n,r){let i=D(),a=i[1],o=e+27,s=a.firstCreatePass?Fm(o,i,2,t,qf,ko(),n,r):a.data[o];if(Ja(s)){let n=i[10].tracingService;if(n&&n.componentCreate){let o=a.data[s.directiveStart+s.componentOffset];return n.componentCreate(tm(o),()=>(Pg(e,t,i,s,r),z))}}return Pg(e,t,i,s,r),z}function Pg(e,t,n,r,i){if(Zf(r,n,e,t,Ig),Ya(r)){let e=n[1];Lf(e,n,r),ou(e,r,n)}i!=null&&Rf(n,r)}function B(){let e=No(),t=Qf(Po());return e.firstCreatePass&&Im(e,t),jo(t)&&Mo(),Oo(),t.classesWithoutHost!=null&&Kc(t)&&Ng(e,t,D(),t.classesWithoutHost,!0),t.stylesWithoutHost!=null&&qc(t)&&Ng(e,t,D(),t.stylesWithoutHost,!1),B}function V(e,t,n,r){return z(e,t,n,r),B(),V}function H(e,t,n,r){let i=D(),a=i[1],o=e+27,s=a.firstCreatePass?Lm(o,a,2,t,n,r):a.data[o];return Zf(s,i,e,t,Ig),r!=null&&Rf(i,s),H}function U(){return jo(Qf(Po()))&&Mo(),Oo(),U}function Fg(e,t,n,r){return H(e,t,n,r),U(),Fg}var Ig=(e,t,n,r,i)=>(vs(!0),xu(t[11],r,hs()));function Lg(e,t,n){let r=D(),i=r[1],a=e+27,o=i.firstCreatePass?Fm(a,r,8,`ng-container`,qf,ko(),t,n):i.data[a];if(Zf(o,r,e,`ng-container`,Bg),Ya(o)){let e=r[1];Lf(e,r,o),ou(e,o,r)}return n!=null&&Rf(r,o),Lg}function Rg(){let e=No(),t=Qf(Po());return e.firstCreatePass&&Im(e,t),Rg}function zg(e,t,n){return Lg(e,t,n),Rg(),zg}var Bg=(e,t,n,r,i)=>(vs(!0),bu(t[11],``));function W(){return D()}function Vg(e,t,n){let r=D();return om(r,Ko(),t)&&(No(),Hf(fs(),r,e,t,r[11],n)),Vg}var Hg=void 0;function Ug(e){let t=Math.floor(Math.abs(e)),n=e.toString().replace(/^[^.]*\.?/,``).length;return t===1&&n===0?1:5}var Wg=[`en`,[[`a`,`p`],[`AM`,`PM`]],[[`AM`,`PM`]],[[`S`,`M`,`T`,`W`,`T`,`F`,`S`],[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`]],Hg,[[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]],Hg,[[`B`,`A`],[`BC`,`AD`],[`Before Christ`,`Anno Domini`]],0,[6,0],[`M/d/yy`,`MMM d, y`,`MMMM d, y`,`EEEE, MMMM d, y`],[`h:mm a`,`h:mm:ss a`,`h:mm:ss a z`,`h:mm:ss a zzzz`],[`{1}, {0}`,Hg,Hg,Hg],[`.`,`,`,`;`,`%`,`+`,`-`,`E`,`×`,`‰`,`∞`,`NaN`,`:`],[`#,##0.###`,`#,##0%`,`¤#,##0.00`,`#E0`],`USD`,`$`,`US Dollar`,{},`ltr`,Ug],Gg=Object.create(null);function Kg(e){let t=Yg(e),n=qg(t);if(n)return n;let r=t.split(`-`)[0];if(n=qg(r),n)return n;if(r===`en`)return Wg;throw new T(701,!1)}function qg(e){if(!(e in Gg)){let t=Hi.ng&&Hi.ng.common&&Hi.ng.common.locales&&Hi.ng.common.locales[e];return t!==void 0&&(Gg[e]=t),t}return Gg[e]}var Jg={LocaleId:0,DayPeriodsFormat:1,DayPeriodsStandalone:2,DaysFormat:3,DaysStandalone:4,MonthsFormat:5,MonthsStandalone:6,Eras:7,FirstDayOfWeek:8,WeekendRange:9,DateFormat:10,TimeFormat:11,DateTimeFormat:12,NumberSymbols:13,NumberFormats:14,CurrencyCode:15,CurrencySymbol:16,CurrencyName:17,Currencies:18,Directionality:19,PluralCase:20,ExtraData:21};function Yg(e){return e.toLowerCase().replace(/_/g,`-`)}var Xg=`en-US`;function Zg(e){typeof e==`string`&&e.toLowerCase().replace(/_/g,`-`)}function G(e,t,n){let r=D(),i=No(),a=Po();return $g(i,r,r[11],a,e,t,n),G}function Qg(e,t,n){let r=D(),i=No(),a=Po();return(a.type&3||n)&&fm(a,i,r,n,r[11],e,t,um(a,r,t)),Qg}function $g(e,t,n,r,i,a,o){let s=!0,c=null;if((r.type&3||o)&&(c??=um(r,t,a),fm(r,e,t,o,n,i,a,c)&&(s=!1)),s){let e=r.outputs?.[i],n=r.hostDirectiveOutputs?.[i];if(n&&n.length)for(let e=0;e>17&32767}function a_(e){return(e&2)==2}function o_(e,t){return e&131071|t<<17}function s_(e){return e|2}function c_(e){return(e&131068)>>2}function l_(e,t){return e&-131069|t<<2}function u_(e){return(e&1)==1}function d_(e){return e|1}function f_(e,t,n,r,i,a){let o=a?t.classBindings:t.styleBindings,s=i_(o),c=c_(o);e[r]=n;let l=!1,u;if(Array.isArray(n)){let e=n;u=e[1],(u===null||sa(e,u)>0)&&(l=!0)}else u=n;if(i){if(c!==0){let t=i_(e[s+1]);e[r+1]=r_(t,s),t!==0&&(e[t+1]=l_(e[t+1],r)),e[s+1]=o_(e[s+1],r)}else e[r+1]=r_(s,0),s!==0&&(e[s+1]=l_(e[s+1],r)),s=r}else e[r+1]=r_(c,0),s===0?s=r:e[c+1]=l_(e[c+1],r),c=r;l&&(e[r+1]=s_(e[r+1])),m_(e,u,r,!0),m_(e,u,r,!1),p_(t,u,e,r,a),o=r_(s,c),a?t.classBindings=o:t.styleBindings=o}function p_(e,t,n,r,i){let a=i?e.residualClasses:e.residualStyles;a!=null&&typeof t==`string`&&sa(a,t)>=0&&(n[r+1]=d_(n[r+1]))}function m_(e,t,n,r){let i=e[n+1],a=t===null,o=r?i_(i):c_(i),s=!1;for(;o!==0&&(s===!1||a);){let n=e[o],i=e[o+1];h_(n,t)&&(s=!0,e[o+1]=r?d_(i):s_(i)),o=r?i_(i):c_(i)}s&&(e[n+1]=r?s_(i):d_(i))}function h_(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t==`string`?sa(e,t)>=0:!1}var g_={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function __(e){return e.substring(g_.key,g_.keyEnd)}function v_(e){return b_(e),y_(e,x_(e,0,g_.textEnd))}function y_(e,t){let n=g_.textEnd;return n===t?-1:(t=g_.keyEnd=S_(e,g_.key=t,n),x_(e,t,n))}function b_(e){g_.key=0,g_.keyEnd=0,g_.value=0,g_.valueEnd=0,g_.textEnd=e.length}function x_(e,t,n){for(;t32;)t++;return t}function C_(e,t,n){return E_(e,t,n,!1),C_}function q(e,t){return E_(e,t,null,!0),q}function w_(e){D_(L_,T_,e,!0)}function T_(e,t){for(let n=v_(t);n>=0;n=y_(t,n))aa(e,__(t),!0)}function E_(e,t,n,r){let i=D(),a=No(),o=qo(2);if(a.firstUpdatePass&&k_(a,e,o,r),t!==Ju&&om(i,o,t)){let s=a.data[us()];z_(a,s,i,i[11],e,i[o+1]=H_(t,n),r,o)}}function D_(e,t,n,r){let i=No(),a=qo(2);i.firstUpdatePass&&k_(i,null,a,r);let o=D();if(n!==Ju&&om(o,a,n)){let s=i.data[us()];if(U_(s,r)&&!O_(i,a)){let e=r?s.classesWithoutHost:s.stylesWithoutHost;e!==null&&(n=oi(e,n||``)),Ng(i,s,o,n,r)}else R_(i,s,o,o[11],o[a+1],o[a+1]=I_(e,t,n),r,a)}}function O_(e,t){return t>=e.expandoStartIndex}function k_(e,t,n,r){let i=e.data;if(i[n+1]===null){let a=i[us()],o=O_(e,n);U_(a,r)&&t===null&&!o&&(t=!1),t=A_(i,a,t,r),f_(i,a,t,n,o,r)}}function A_(e,t,n,r){let i=Qo(e),a=r?t.residualClasses:t.residualStyles;if(i===null)(r?t.classBindings:t.styleBindings)===0&&(n=P_(null,e,t,n,r),n=F_(n,t.attrs,r),a=null);else{let o=t.directiveStylingLast;if(o===-1||e[o]!==i){if(n=P_(i,e,t,n,r),a===null){let n=j_(e,t,r);n!==void 0&&Array.isArray(n)&&(n=P_(null,e,t,n[1],r),n=F_(n,t.attrs,r),M_(e,t,r,n))}else a=N_(e,t,r)}}return a!==void 0&&(r?t.residualClasses=a:t.residualStyles=a),n}function j_(e,t,n){let r=n?t.classBindings:t.styleBindings;if(c_(r)!==0)return e[i_(r)]}function M_(e,t,n,r){let i=n?t.classBindings:t.styleBindings;e[i_(i)]=r}function N_(e,t,n){let r,i=t.directiveEnd;for(let a=1+t.directiveStylingLast;a0;){let t=e[i],a=Array.isArray(t),c=a?t[1]:t,l=c===null,u=n[i+1];u===Ju&&(u=l?ua:void 0);let d=l?oa(u,r):c===r?u:void 0;if(a&&!V_(d)&&(d=oa(t,r)),V_(d)&&(s=d,o))return s;let f=e[i+1];i=o?i_(f):c_(f)}if(t!==null){let e=a?t.residualClasses:t.residualStyles;e!=null&&(s=oa(e,r))}return s}function V_(e){return e!==void 0}function H_(e,t){return e==null||e===``||(typeof t==`string`?e=lu(e)+t:typeof e==`object`&&(e=ai(lu(e)))),e}function U_(e,t){return!!(e.flags&(t?8:16))}function J(e,t=``){let n=D(),r=No(),i=e+27,a=r.firstCreatePass?Hp(r,i,1,t,null):r.data[i],o=W_(r,n,a,t);n[i]=o,_s()&&hf(r,n,o,a),Lo(a,!1)}var W_=(e,t,n,r)=>(vs(!0),vu(t[11],r));function G_(e,t,n,r=``){return om(e,Ko(),n)?t+Ai(n)+r:Ju}function K_(e,t,n,r,i,a=``){let o=sm(e,Wo(),n,i);return qo(2),o?t+Ai(n)+r+Ai(i)+a:Ju}function q_(e,t,n,r,i,a,o,s=``){let c=cm(e,Wo(),n,i,o);return qo(3),c?t+Ai(n)+r+Ai(i)+a+Ai(o)+s:Ju}function J_(e,t,n,r,i,a,o,s,c,l=``){let u=lm(e,Wo(),n,i,o,c);return qo(4),u?t+Ai(n)+r+Ai(i)+a+Ai(o)+s+Ai(c)+l:Ju}function Y(e){return X(``,e),Y}function X(e,t,n){let r=D(),i=G_(r,e,t,n);return i!==Ju&&Z_(r,us(),i),X}function Z(e,t,n,r,i){let a=D(),o=K_(a,e,t,n,r,i);return o!==Ju&&Z_(a,us(),o),Z}function Y_(e,t,n,r,i,a,o){let s=D(),c=q_(s,e,t,n,r,i,a,o);return c!==Ju&&Z_(s,us(),c),Y_}function X_(e,t,n,r,i,a,o,s,c){let l=D(),u=J_(l,e,t,n,r,i,a,o,s,c);return u!==Ju&&Z_(l,us(),u),X_}function Z_(e,t,n){let r=no(t,e);yu(e[11],r,n)}function Q_(e,t,n){vc(t)&&(t=t());let r=D();return om(r,Ko(),t)&&(No(),Vf(fs(),r,e,t,r[11],n)),Q_}function $_(e,t){let n=vc(e);return n&&e.set(t),n}function ev(e,t){let n=D(),r=No(),i=Po();return $g(r,n,n[11],i,e,t),ev}var tv={};function nv(e){jd(`NgLet`);let t=No(),n=D(),r=e+27;return Lo(Hp(t,r,128,null,null),!1),oo(t,n,r,tv),nv}function rv(e){return oo(No(),D(),us(),e),e}function iv(e){let t=ao(Bo(),27+e);if(t===tv)throw new T(314,!1);return t}function av(e,t,n=``){return G_(D(),e,t,n)}function ov(e,t){let n=Uo()+e,r=D();return r[n]===Ju?im(r,n,t()):am(r,n)}function sv(e,t,n){return lv(D(),Uo(),e,t,n)}function cv(e,t){let n=e[t];return n===Ju?void 0:n}function lv(e,t,n,r,i,a){let o=t+n;return om(e,o,i)?im(e,o+1,a?r.call(a,i):r(i)):cv(e,o+1)}function uv(e,t,n,r,i,a,o){let s=t+n;return sm(e,s,i,a)?im(e,s+2,o?r.call(o,i,a):r(i,a)):cv(e,s+2)}function dv(e,t){let n=No(),r,i=e+27;n.firstCreatePass?(r=fv(t,n.pipeRegistry),n.data[i]=r,r.onDestroy&&(n.destroyHooks??=[]).push(i,r.onDestroy)):r=n.data[i];let a=r.factory||(r.factory=Qi(r.type,!0)),o=Bi(bm);try{let e=il(!1),t=a();return il(e),oo(n,D(),i,t),t}finally{Bi(o)}}function fv(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function pv(e,t,n){let r=e+27,i=D(),a=ao(i,r);return hv(i,r)?lv(i,Uo(),t,a.transform,n,a):a.transform(n)}function mv(e,t,n,r){let i=e+27,a=D(),o=ao(a,i);return hv(a,i)?uv(a,Uo(),t,o.transform,n,r,o):o.transform(n,r)}function hv(e,t){return e[1].data[t].pure}function gv(e,t){return Vp(e,t)}var _v=(()=>{class e{applicationErrorHandler=E(Js);appRef=E(cg);taskService=E(Ds);ngZone=E(Fs);zonelessEnabled=E(ac);tracing=E(kd,{optional:!0});zoneIsDefined=typeof Zone<`u`&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new hr;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Ns):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(E(oc,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{let e=this.taskService.add();if(!this.runningTick&&(this.cleanup(),!this.zonelessEnabled||this.appRef.includeAllTestViews)){this.taskService.remove(e);return}this.switchToMicrotaskScheduler(),this.taskService.remove(e)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{let e=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(e)})})}notify(e){if(!this.zonelessEnabled&&e===5)return;switch(e){case 0:case 2:this.appRef.dirtyFlags|=2;break;case 3:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 6:this.appRef.dirtyFlags|=2;break;case 12:this.appRef.dirtyFlags|=16;break;case 13:this.appRef.dirtyFlags|=2;break;case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;let t=this.useMicrotaskScheduler?js:As;this.pendingRenderTaskId=this.taskService.add(),this.cancelScheduledCallback=this.scheduleInRootZone?Zone.root.run(()=>t(()=>this.tick())):this.ngZone.runOutsideAngular(()=>t(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(`isAngularZone_ID`+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRef.dirtyFlags===0){this.cleanup();return}!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let e=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(e){this.applicationErrorHandler(e)}finally{this.taskService.remove(e),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let e=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(e)}}static ɵfac=function(t){return new(t||e)};static ɵprov=kl({token:e,factory:e.ɵfac})}return e})();function vv(){return[{provide:ic,useExisting:_v},{provide:Fs,useClass:Us},{provide:ac,useValue:!0}]}function yv(){return typeof $localize<`u`&&$localize.locale||`en-US`}var bv=new vi(``,{factory:()=>E(bv,{optional:!0,skipSelf:!0})||yv()}),xv=class{destroyed=!1;listeners=null;errorHandler=E(qs,{optional:!0});isEmitting=!1;hasNullListeners=!1;destroyRef=E(Cs);constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(e){if(this.destroyed)throw new T(953,!1);return(this.listeners??=[]).push(e),{unsubscribe:()=>{let t=this.listeners?this.listeners.indexOf(e):-1;t>-1&&(this.isEmitting?(this.hasNullListeners=!0,this.listeners[t]=null):this.listeners.splice(t,1))}}}emit(e){if(this.destroyed){console.warn(ri(953,!1));return}if(this.listeners===null)return;this.isEmitting=!0;let t=w(null);try{for(let t of this.listeners)try{t!==null&&t(e)}catch(e){this.errorHandler?.handleError(e)}}finally{this.hasNullListeners&&(this.hasNullListeners=!1,this.listeners&&Sv(this.listeners)),w(t),this.isEmitting=!1}}};function Sv(e){let t=e.length-1;for(;t>-1;)e[t]===null&&e.splice(t,1),t--}function Q(e,t){return Mn(e,t?.equal)}function Cv(e){return ar(e)}(class e extends Error{_brand;constructor(e){super(e)}static IDLE=new e(`IDLE`);static LOADING=new e(`LOADING`)});var wv=e=>e;function Tv(e,t){return typeof e==`function`?Ev(tr(e,wv,t?.equal),t?.debugName,t?.set):Ev(tr(e.source,e.computation,e.equal),e.debugName,e.set)}function Ev(e,t,n){let r=e[dn],i=e;if(n!==void 0){let t=e=>nr(r,e);i.set=e=>n(e,t),i.update=r=>n(r(Cv(e)),t)}else i.set=e=>nr(r,e),i.update=e=>rr(r,e);return i.asReadonly=Xs.bind(e),i}function Dv(e,t){let n=Object.create(bc);n.value=e,n.transformFn=t?.transform;function r(){if(mn(n),n.value===yc)throw new T(-950,null);return n.value}return r[dn]=n,r}function Ov(e){return new xv}function kv(e,t){return Dv(e,t)}function Av(e){return Dv(yc,e)}var $=(kv.required=Av,kv);function jv(e,t){let n=Object.create(bc),r=new xv;n.value=e;function i(){return mn(n),Mv(n.value),n.value}return i[dn]=n,i.asReadonly=Xs.bind(i),i.set=e=>{n.equal(n.value,e)||(Wn(n,e),r.emit(e))},i.update=e=>{Mv(n.value),i.set(e(n.value))},i.subscribe=r.subscribe.bind(r),i.destroyRef=r.destroyRef,i}function Mv(e){if(e===yc)throw new T(952,!1)}function Nv(e,t){return jv(e,t)}function Pv(e){return jv(yc,e)}var Fv=(Nv.required=Pv,Nv);function Iv(e,t){return Ah(t)}function Lv(e,t){return jh(t)}var Rv=(Iv.required=Lv,Iv),zv=new vi(``),Bv=new vi(``);function Vv(e){return!e.moduleRef}function Hv(e){let t=Vv(e)?e.r3Injector:e.moduleRef.injector,n=t.get(Fs);return n.run(()=>{Vv(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(Js),i;if(n.runOutsideAngular(()=>{i=n.onError.subscribe({next:r})}),Vv(e)){let n=()=>t.destroy(),r=e.platformInjector.get(zv);r.add(n),t.onDestroy(()=>{i.unsubscribe(),r.delete(n)})}else{let t=()=>e.moduleRef.destroy(),n=e.platformInjector.get(zv);n.add(t),e.moduleRef.onDestroy(()=>{ug(e.allPlatformModules,e.moduleRef),i.unsubscribe(),n.delete(t)})}return Wv(r,n,()=>{let n=t.get(Ds),r=n.add(),i=t.get(Zh);return i.runInitializers(),i.donePromise.then(()=>{if(Zg(t.get(bv,Xg)||`en-US`),!t.get(Bv,!0))return Vv(e)?t.get(cg):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(Vv(e)){let n=t.get(cg);return e.rootComponent!==void 0&&n.bootstrap(e.rootComponent),n}return Uv?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>void n.remove(r))})})}var Uv;function Wv(e,t,n){try{let r=n();return Ph(r)?r.catch(n=>{throw t.runOutsideAngular(()=>e(n)),n}):r}catch(n){throw t.runOutsideAngular(()=>e(n)),n}}var Gv=null;function Kv(e=[],t){return xs.create({name:t,providers:[{provide:Ta,useValue:`platform`},{provide:zv,useValue:new Set([()=>Gv=null])},...e]})}function qv(e=[]){if(Gv)return Gv;let t=Kv(e);return Gv=t,og(),Jv(t),t}function Jv(e){let t=e.get($s,null);Ha(e,()=>{t?.forEach(e=>e())})}function Yv(e){let{rootComponent:t,appProviders:n,platformProviders:r,platformRef:i}=e;Fc(Sc.BootstrapApplicationStart);try{let e=i?.injector??qv(r);return Hv({r3Injector:new Lh({providers:[vv(),Ys,...n||[]],parent:e,debugName:``,runEnvironmentInitializers:!1}).injector,platformInjector:e,rootComponent:t})}catch(e){return Promise.reject(e)}finally{Fc(Sc.BootstrapApplicationEnd)}}var Xv=Symbol(`NOT_SET`),Zv=new Set,Qv={...Kn,kind:`afterRenderEffectPhase`,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:Xv,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(this.sequence.lastPhase===null||this.sequence.lastPhase(mn(r),r.value),r.signal[dn]=r,r.registerCleanupFn=e=>(r.cleanup??=new Set).add(e),this.nodes[e]=r,this.hooks[e]=e=>r.phaseFn(e)}}afterRun(){super.afterRun(),this.lastPhase=null}destroy(){if(this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();super.destroy();for(let e of this.nodes)if(e)try{for(let t of e.cleanup??Zv)t()}finally{En(e)}}};function ey(e,t){let n=t?.injector??E(xs),r=n.get(ic),i=n.get(Md),a=n.get(kd,null,{optional:!0});i.impl??=n.get(Pd);let o=e;typeof o==`function`&&(o={mixedReadWrite:e});let s=n.get(nc,null,{optional:!0}),c=new $v(i.impl,[o.earlyRead,o.write,o.mixedReadWrite,o.read],s?.view,r,n,a?.snapshot(null));return i.impl.register(c),c}var ty=null;function ny(){return ty}function ry(e){ty??=e}var iy=class{},ay=(function(e){return e[e.Format=0]=`Format`,e[e.Standalone=1]=`Standalone`,e})(ay||{}),oy=(function(e){return e[e.Narrow=0]=`Narrow`,e[e.Abbreviated=1]=`Abbreviated`,e[e.Wide=2]=`Wide`,e[e.Short=3]=`Short`,e})(oy||{}),sy=(function(e){return e[e.Short=0]=`Short`,e[e.Medium=1]=`Medium`,e[e.Long=2]=`Long`,e[e.Full=3]=`Full`,e})(sy||{}),cy={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function ly(e){return Kg(e)[Jg.LocaleId]}function uy(e,t,n){let r=Kg(e);return xy(xy([r[Jg.DayPeriodsFormat],r[Jg.DayPeriodsStandalone]],t),n)}function dy(e,t,n){let r=Kg(e);return xy(xy([r[Jg.DaysFormat],r[Jg.DaysStandalone]],t),n)}function fy(e,t,n){let r=Kg(e);return xy(xy([r[Jg.MonthsFormat],r[Jg.MonthsStandalone]],t),n)}function py(e,t){let n=Kg(e)[Jg.Eras];return xy(n,t)}function my(e,t){return xy(Kg(e)[Jg.DateFormat],t)}function hy(e,t){return xy(Kg(e)[Jg.TimeFormat],t)}function gy(e,t){let n=Kg(e)[Jg.DateTimeFormat];return xy(n,t)}function _y(e,t){let n=Kg(e),r=n[Jg.NumberSymbols][t];if(r===void 0){if(t===cy.CurrencyDecimal)return n[Jg.NumberSymbols][cy.Decimal];if(t===cy.CurrencyGroup)return n[Jg.NumberSymbols][cy.Group]}return r}function vy(e){if(!e[Jg.ExtraData])throw new T(2303,!1)}function yy(e){let t=Kg(e);return vy(t),(t[Jg.ExtraData][2]||[]).map(e=>typeof e==`string`?Sy(e):[Sy(e[0]),Sy(e[1])])}function by(e,t,n){let r=Kg(e);return vy(r),xy(xy([r[Jg.ExtraData][0],r[Jg.ExtraData][1]],t)||[],n)||[]}function xy(e,t){for(let n=t;n>-1;n--)if(e[n]!==void 0)return e[n];throw new T(2304,!1)}function Sy(e){let[t,n]=e.split(`:`);return{hours:+t,minutes:+n}}var Cy=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,wy=Object.create(null),Ty=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,Ey=256;function Dy(e,t,n,r){let i=Xy(e);Oy(t),t=Ay(n,t)||t;let a=[],o;for(;t;)if(o=Ty.exec(t),o){a=a.concat(o.slice(1));let e=a.pop();if(!e)break;t=e}else{a.push(t);break}let s=i.getTimezoneOffset();r&&(s=qy(r,s),i=Yy(i,r));let c=``;return a.forEach(e=>{let t=Ky(e);c+=t?t(i,n,s):e===`''`?`'`:e.replace(/(^'|'$)/g,``).replace(/''/g,`'`)}),c}function Oy(e){if(e.length>Ey)throw new T(2300,!1)}function ky(e,t,n){let r=new Date(0);return r.setFullYear(e,t,n),r.setHours(0,0,0),r}function Ay(e,t){let n=ly(e);if(wy[n]??=Object.create(null),wy[n][t])return wy[n][t];let r=``;switch(t){case`shortDate`:r=my(e,sy.Short);break;case`mediumDate`:r=my(e,sy.Medium);break;case`longDate`:r=my(e,sy.Long);break;case`fullDate`:r=my(e,sy.Full);break;case`shortTime`:r=hy(e,sy.Short);break;case`mediumTime`:r=hy(e,sy.Medium);break;case`longTime`:r=hy(e,sy.Long);break;case`fullTime`:r=hy(e,sy.Full);break;case`short`:let t=Ay(e,`shortTime`),n=Ay(e,`shortDate`);r=jy(gy(e,sy.Short),[t,n]);break;case`medium`:let i=Ay(e,`mediumTime`),a=Ay(e,`mediumDate`);r=jy(gy(e,sy.Medium),[i,a]);break;case`long`:let o=Ay(e,`longTime`),s=Ay(e,`longDate`);r=jy(gy(e,sy.Long),[o,s]);break;case`full`:let c=Ay(e,`fullTime`),l=Ay(e,`fullDate`);r=jy(gy(e,sy.Full),[c,l])}return r&&(wy[n][t]=r),r}function jy(e,t){return t&&(e=e.replace(/\{([^}]+)}/g,function(e,n){return Object.hasOwn(t,n)?t[n]:e})),e}function My(e,t,n=`-`,r,i){let a=``;(e<0||i&&e<=0)&&(i?e=-e+1:(e=-e,a=n));let o=String(e);for(;o.length0||s>-n)&&(s+=n),e===3)s===0&&n===-12&&(s=12);else if(e===6)return Ny(s,t);let c=_y(o,cy.MinusSign);return My(s,t,c,r,i)}}function Fy(e,t){switch(e){case 0:return t.getFullYear();case 1:return t.getMonth();case 2:return t.getDate();case 3:return t.getHours();case 4:return t.getMinutes();case 5:return t.getSeconds();case 6:return t.getMilliseconds();case 7:return t.getDay();default:throw new T(2301,!1)}}function Iy(e,t,n=ay.Format,r=!1){return function(i,a){return Ly(i,a,e,t,n,r)}}function Ly(e,t,n,r,i,a){switch(n){case 2:return fy(t,i,r)[e.getMonth()];case 1:return dy(t,i,r)[e.getDay()];case 0:let n=e.getHours(),o=e.getMinutes();if(a){let e=yy(t),a=by(t,i,r),s=e.findIndex(e=>{if(Array.isArray(e)){let[t,r]=e,i=n>=t.hours&&o>=t.minutes,a=n0?Math.floor(i/60):Math.ceil(i/60);switch(e){case 0:return(i>=0?`+`:``)+My(o,2,a)+My(Math.abs(i%60),2,a);case 1:return`GMT`+(i>=0?`+`:``)+My(o,1,a);case 2:return`GMT`+(i>=0?`+`:``)+My(o,2,a)+`:`+My(Math.abs(i%60),2,a);case 3:return r===0?`Z`:(i>=0?`+`:``)+My(o,2,a)+`:`+My(Math.abs(i%60),2,a);default:throw new T(2310,!1)}}}var zy=0,By=4;function Vy(e){let t=ky(e,zy,1).getDay();return ky(e,0,1+(t<=By?By:11)-t)}function Hy(e){let t=e.getDay(),n=t===0?-3:By-t;return ky(e.getFullYear(),e.getMonth(),e.getDate()+n)}function Uy(e,t=!1){return function(n,r){let i;if(t){let e=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,t=n.getDate();i=1+Math.floor((t+e)/7)}else{let e=Hy(n),t=Vy(e.getFullYear()),r=e.getTime()-t.getTime();i=1+Math.round(r/6048e5)}return My(i,e,_y(r,cy.MinusSign))}}function Wy(e,t=!1){return function(n,r){return My(Hy(n).getFullYear(),e,_y(r,cy.MinusSign),t)}}var Gy=Object.create(null);function Ky(e){if(Gy[e])return Gy[e];let t;switch(e){case`G`:case`GG`:case`GGG`:t=Iy(3,oy.Abbreviated);break;case`GGGG`:t=Iy(3,oy.Wide);break;case`GGGGG`:t=Iy(3,oy.Narrow);break;case`y`:t=Py(0,1,0,!1,!0);break;case`yy`:t=Py(0,2,0,!0,!0);break;case`yyy`:t=Py(0,3,0,!1,!0);break;case`yyyy`:t=Py(0,4,0,!1,!0);break;case`Y`:t=Wy(1);break;case`YY`:t=Wy(2,!0);break;case`YYY`:t=Wy(3);break;case`YYYY`:t=Wy(4);break;case`M`:case`L`:t=Py(1,1,1);break;case`MM`:case`LL`:t=Py(1,2,1);break;case`MMM`:t=Iy(2,oy.Abbreviated);break;case`MMMM`:t=Iy(2,oy.Wide);break;case`MMMMM`:t=Iy(2,oy.Narrow);break;case`LLL`:t=Iy(2,oy.Abbreviated,ay.Standalone);break;case`LLLL`:t=Iy(2,oy.Wide,ay.Standalone);break;case`LLLLL`:t=Iy(2,oy.Narrow,ay.Standalone);break;case`w`:t=Uy(1);break;case`ww`:t=Uy(2);break;case`W`:t=Uy(1,!0);break;case`d`:t=Py(2,1);break;case`dd`:t=Py(2,2);break;case`c`:case`cc`:t=Py(7,1);break;case`ccc`:t=Iy(1,oy.Abbreviated,ay.Standalone);break;case`cccc`:t=Iy(1,oy.Wide,ay.Standalone);break;case`ccccc`:t=Iy(1,oy.Narrow,ay.Standalone);break;case`cccccc`:t=Iy(1,oy.Short,ay.Standalone);break;case`E`:case`EE`:case`EEE`:t=Iy(1,oy.Abbreviated);break;case`EEEE`:t=Iy(1,oy.Wide);break;case`EEEEE`:t=Iy(1,oy.Narrow);break;case`EEEEEE`:t=Iy(1,oy.Short);break;case`a`:case`aa`:case`aaa`:t=Iy(0,oy.Abbreviated);break;case`aaaa`:t=Iy(0,oy.Wide);break;case`aaaaa`:t=Iy(0,oy.Narrow);break;case`b`:case`bb`:case`bbb`:t=Iy(0,oy.Abbreviated,ay.Standalone,!0);break;case`bbbb`:t=Iy(0,oy.Wide,ay.Standalone,!0);break;case`bbbbb`:t=Iy(0,oy.Narrow,ay.Standalone,!0);break;case`B`:case`BB`:case`BBB`:t=Iy(0,oy.Abbreviated,ay.Format,!0);break;case`BBBB`:t=Iy(0,oy.Wide,ay.Format,!0);break;case`BBBBB`:t=Iy(0,oy.Narrow,ay.Format,!0);break;case`h`:t=Py(3,1,-12);break;case`hh`:t=Py(3,2,-12);break;case`H`:t=Py(3,1);break;case`HH`:t=Py(3,2);break;case`m`:t=Py(4,1);break;case`mm`:t=Py(4,2);break;case`s`:t=Py(5,1);break;case`ss`:t=Py(5,2);break;case`S`:t=Py(6,1);break;case`SS`:t=Py(6,2);break;case`SSS`:t=Py(6,3);break;case`Z`:case`ZZ`:case`ZZZ`:t=Ry(0);break;case`ZZZZZ`:t=Ry(3);break;case`O`:case`OO`:case`OOO`:case`z`:case`zz`:case`zzz`:t=Ry(1);break;case`OOOO`:case`ZZZZ`:case`zzzz`:t=Ry(2);break;default:return null}return Gy[e]=t,t}function qy(e,t){e=e.replace(/:/g,``);let n=Date.parse(`Jan 01, 1970 00:00:00 `+e)/6e4;return isNaN(n)?t:n}function Jy(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function Yy(e,t,n){let r=e.getTimezoneOffset();return Jy(e,-1*(qy(t,r)-r))}function Xy(e){if(Qy(e))return e;if(typeof e==`number`&&!isNaN(e))return new Date(e);if(typeof e==`string`){if(e=e.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(e)){let[t,n=1,r=1]=e.split(`-`).map(e=>+e);return ky(t,n-1,r)}let t=parseFloat(e);if(!isNaN(e-t))return new Date(t);let n;if(n=e.match(Cy))return Zy(n)}let t=new Date(e);if(!Qy(t))throw new T(2311,!1);return t}function Zy(e){let t=new Date(0),n=0,r=0,i=e[8]?t.setUTCFullYear:t.setFullYear,a=e[8]?t.setUTCHours:t.setHours;e[9]&&(n=Number(e[9]+e[10]),r=Number(e[9]+e[11])),i.call(t,Number(e[1]),Number(e[2])-1,Number(e[3]));let o=Number(e[4]||0)-n,s=Number(e[5]||0)-r,c=Number(e[6]||0),l=Math.floor(parseFloat(`0.`+(e[7]||0))*1e3);return a.call(t,o,s,c,l),t}function Qy(e){return e instanceof Date&&!isNaN(e.valueOf())}var $y=(()=>{class e{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=E(xs);constructor(e){this._viewContainerRef=e}ngOnChanges(e){if(this._shouldRecreateView(e)){let e=this._viewContainerRef;if(this._viewRef&&e.remove(e.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let t=this._createContextForwardProxy();this._viewRef=e.createEmbeddedView(this.ngTemplateOutlet,t,{injector:this._getInjector()})}}_getInjector(){return this.ngTemplateOutletInjector===`outlet`?this.injector:this.ngTemplateOutletInjector??void 0}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,t,n)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,t,n):!1,get:(e,t,n)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,t,n)}})}static ɵfac=function(t){return new(t||e)(bm(eh))};static ɵdir=Wh({type:e,selectors:[[``,`ngTemplateOutlet`,``]],inputs:{ngTemplateOutletContext:`ngTemplateOutletContext`,ngTemplateOutlet:`ngTemplateOutlet`,ngTemplateOutletInjector:`ngTemplateOutletInjector`},features:[Ec]})}return e})();function eb(e,t){return new T(2100,!1)}var tb=`mediumDate`,nb=new vi(``),rb=new vi(``),ib=(()=>{class e{locale;defaultTimezone;defaultOptions;constructor(e,t,n){this.locale=e,this.defaultTimezone=t,this.defaultOptions=n}transform(t,n,r,i){if(t==null||t===``||t!==t)return null;try{let e=n??this.defaultOptions?.dateFormat??tb,a=r??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return Dy(t,e,i||this.locale,a)}catch(t){throw eb(e,t.message)}}static ɵfac=function(t){return new(t||e)(bm(bv,16),bm(nb,24),bm(rb,24))};static ɵpipe=Gh({name:`date`,type:e,pure:!0})}return e})(),ab=(()=>{class e{transform(e){return JSON.stringify(e,null,2)}static ɵfac=function(t){return new(t||e)};static ɵpipe=Gh({name:`json`,type:e,pure:!1})}return e})();function ob(e,t){t=encodeURIComponent(t);for(let n of e.split(`;`)){let e=n.indexOf(`=`),[r,i]=e==-1?[n,``]:[n.slice(0,e),n.slice(e+1)];if(r.trim()!==t)continue;let a=i;try{a=decodeURIComponent(i)}catch{}return a.length>1&&a[0]===`"`&&a[a.length-1]===`"`&&(a=a.slice(1,-1)),a}return null}var sb=`browser`,cb=class{_doc;constructor(e){this._doc=e}manager},lb=(()=>{class e extends cb{constructor(e){super(e)}supports(e){return!0}addEventListener(e,t,n,r){return e.addEventListener(t,n,r),()=>this.removeEventListener(e,t,n,r)}removeEventListener(e,t,n,r){return e.removeEventListener(t,n,r)}static ɵfac=function(t){return new(t||e)(qi(Ss))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),ub=new vi(``),db=(()=>{class e{_zone;_plugins;_eventNameToPlugin=new Map;constructor(e,t){this._zone=t,e.forEach(e=>{e.manager=this});let n=e.filter(e=>!(e instanceof lb));this._plugins=n.slice().reverse();let r=e.find(e=>e instanceof lb);r&&this._plugins.push(r)}addEventListener(e,t,n,r){return this._findPluginFor(t).addEventListener(e,t,n,r)}getZone(){return this._zone}_findPluginFor(e){let t=this._eventNameToPlugin.get(e);if(t)return t;if(t=this._plugins.find(t=>t.supports(e)),!t)throw new T(-5101,!1);return this._eventNameToPlugin.set(e,t),t}static ɵfac=function(t){return new(t||e)(qi(ub),qi(Fs))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),fb=`ng-app-id`;function pb(e){for(let t of e)t.remove()}function mb(e,t){let n=t.createElement(`style`);return n.textContent=e,n}function hb(e,t,n,r){let i=e.head?.querySelectorAll(`style[${fb}="${t}"],link[${fb}="${t}"]`);if(!i||i.length===0)return!1;for(let e of i)e.removeAttribute(fb),e instanceof HTMLLinkElement?r.set(e.href.slice(e.href.lastIndexOf(`/`)+1),{usage:0,elements:[e]}):e.textContent&&n.set(e.textContent,{usage:0,elements:[e]});return!0}function gb(e,t){let n=t.createElement(`link`);return n.setAttribute(`rel`,`stylesheet`),n.setAttribute(`href`,e),n}var _b=(()=>{class e{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(e,t,n,r={}){this.doc=e,this.appId=t,this.nonce=n,hb(e,t,this.inline,this.external)&&this.hosts.add(e.head)}addStyles(e,t){for(let t of e)this.addUsage(t,this.inline,mb);t?.forEach(e=>this.addUsage(e,this.external,gb))}removeStyles(e,t){for(let t of e)this.removeUsage(t,this.inline);t?.forEach(e=>this.removeUsage(e,this.external))}addUsage(e,t,n){let r=t.get(e);r?r.usage++:t.set(e,{usage:1,elements:[...this.hosts].map(t=>this.addElement(t,n(e,this.doc)))})}removeUsage(e,t){let n=t.get(e);n&&(n.usage--,n.usage<=0&&(pb(n.elements),t.delete(e)))}ngOnDestroy(){for(let[,{elements:e}]of[...this.inline,...this.external])pb(e);this.hosts.clear()}addHost(e){if(!this.hosts.has(e)){this.hosts.add(e);for(let[t,{elements:n}]of this.inline)n.push(this.addElement(e,mb(t,this.doc)));for(let[t,{elements:n}]of this.external)n.push(this.addElement(e,gb(t,this.doc)))}}removeHost(e){this.hosts.delete(e);for(let t of[...this.inline.values(),...this.external.values()]){let n=[];for(let r of t.elements)r.parentNode===e?r.remove():n.push(r);t.elements=n}}addElement(e,t){return this.nonce&&t.setAttribute(`nonce`,this.nonce),e.appendChild(t)}static ɵfac=function(t){return new(t||e)(qi(Ss),qi(Zs),qi(tc,8),qi(ec))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),vb={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`,math:`http://www.w3.org/1998/Math/MathML`},yb=/%COMP%/g,bb=`%COMP%`,xb=`_nghost-${bb}`,Sb=`_ngcontent-${bb}`,Cb=!0,wb=new vi(``,{factory:()=>Cb}),Tb=new vi(``);function Eb(e){return Sb.replace(yb,e)}function Db(e){return xb.replace(yb,e)}function Ob(e,t){return t.map(t=>t.replace(yb,e))}var kb=(()=>{class e{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;cssVarNamespace;constructor(e,t,n,r,i,a,o=null,s=null,c=null){this.eventManager=e,this.sharedStylesHost=t,this.appId=n,this.removeStylesOnCompDestroy=r,this.doc=i,this.ngZone=a,this.nonce=o,this.tracingService=s,this.cssVarNamespace=c??``,this.defaultRenderer=new Ab(e,i,a,this.tracingService,this.cssVarNamespace)}createRenderer(e,t){if(!e||!t)return this.defaultRenderer;let n=this.getOrCreateRenderer(e,t);return n instanceof Pb?n.applyToHost(e):n instanceof Nb&&n.applyStyles(),n}getOrCreateRenderer(e,t){let n=this.rendererByCompId,r=n.get(t.id);if(!r){let i=this.doc,a=this.ngZone,o=this.eventManager,s=this.sharedStylesHost,c=this.removeStylesOnCompDestroy,l=this.tracingService;switch(t.encapsulation){case su.Emulated:r=new Pb(o,s,t,this.appId,c,i,a,l,this.cssVarNamespace);break;case su.ShadowDom:return new Mb(o,e,t,i,a,this.nonce,l,this.cssVarNamespace,s);case su.ExperimentalIsolatedShadowDom:return new Mb(o,e,t,i,a,this.nonce,l,this.cssVarNamespace);default:r=new Nb(o,s,t,c,i,a,l,this.cssVarNamespace)}n.set(t.id,r)}return r}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(e){this.rendererByCompId.delete(e)}static ɵfac=function(t){return new(t||e)(qi(db),qi(vm),qi(Zs),qi(wb),qi(Ss),qi(Fs),qi(tc),qi(kd,8),qi(Tb,8))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),Ab=class{eventManager;doc;ngZone;tracingService;cssVarNamespace;data=Object.create(null);throwOnSyntheticProps=!0;constructor(e,t,n,r,i=``){this.eventManager=e,this.doc=t,this.ngZone=n,this.tracingService=r,this.cssVarNamespace=i}destroy(){}destroyNode=null;createElement(e,t){return t?this.doc.createElementNS(vb[t]||t,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,t){(jb(e)?e.content:e).appendChild(t)}insertBefore(e,t,n){if(e){let r=jb(e)?e.content:e;if(n!=null&&n.parentNode!==r)throw new T(-5106,!1);r.insertBefore(t,n)}}removeChild(e,t){t.remove()}selectRootElement(e,t){let n=typeof e==`string`?this.doc.querySelector(e):e;if(!n)throw new T(-5104,!1);return t||(n.textContent=``),n}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,t,n,r){if(r){t=r+`:`+t;let i=vb[r];i?e.setAttributeNS(i,t,n):e.setAttribute(t,n)}else e.setAttribute(t,n)}removeAttribute(e,t,n){if(n){let r=vb[n];r?e.removeAttributeNS(r,t):e.removeAttribute(`${n}:${t}`)}else e.removeAttribute(t)}addClass(e,t){e.classList.add(t)}removeClass(e,t){e.classList.remove(t)}setStyle(e,t,n,r){let i=t.startsWith(`--`);i&&(t=t.replace(`%NS%`,this.cssVarNamespace)),i||r&(Yu.DashCase|Yu.Important)?e.style.setProperty(t,n,r&Yu.Important?`important`:``):e.style[t]=n}removeStyle(e,t,n){let r=t.startsWith(`--`);r&&(t=t.replace(`%NS%`,this.cssVarNamespace)),r||n&Yu.DashCase?e.style.removeProperty(t):e.style[t]=``}setProperty(e,t,n){e!=null&&(e[t]=n)}setValue(e,t){e.nodeValue=t}listen(e,t,n,r){if(typeof e==`string`&&(e=ny().getGlobalEventTarget(this.doc,e),!e))throw new T(-5102,!1);let i=this.decoratePreventDefault(n);return this.tracingService?.wrapEventListener&&(i=this.tracingService.wrapEventListener(e,t,i)),this.eventManager.addEventListener(e,t,i,r)}decoratePreventDefault(e){return t=>{if(t===`__ngUnwrap__`)return e;e(t)===!1&&t.preventDefault()}}};function jb(e){return e.tagName===`TEMPLATE`&&e.content!==void 0}var Mb=class extends Ab{hostEl;sharedStylesHost;shadowRoot;constructor(e,t,n,r,i,a,o,s,c){super(e,r,i,o,s),this.hostEl=t,this.sharedStylesHost=c,this.shadowRoot=t.attachShadow({mode:`open`}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let l=n.styles;l=Ob(n.id,l).map(e=>e.replace(/%NS%/g,s));for(let e of l){let t=document.createElement(`style`);a&&t.setAttribute(`nonce`,a),t.textContent=e,this.shadowRoot.appendChild(t)}let u=n.getExternalStyles?.();if(u)for(let e of u){let t=gb(e,r);a&&t.setAttribute(`nonce`,a),this.shadowRoot.appendChild(t)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,t){return super.appendChild(this.nodeOrShadowRoot(e),t)}insertBefore(e,t,n){return super.insertBefore(this.nodeOrShadowRoot(e),t,n)}removeChild(e,t){return super.removeChild(null,t)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}},Nb=class extends Ab{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(e,t,n,r,i,a,o,s,c){super(e,i,a,o,s),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=r;let l=n.styles,u=c?Ob(c,l):l;this.styles=u.map(e=>e.replace(/%NS%/g,s)),this.styleUrls=n.getExternalStyles?.(c)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&ld.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},Pb=class extends Nb{contentAttr;hostAttr;constructor(e,t,n,r,i,a,o,s,c){let l=r+`-`+n.id;super(e,t,n,i,a,o,s,c,l),this.contentAttr=Eb(l),this.hostAttr=Db(l)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,``)}createElement(e,t){let n=super.createElement(e,t);return super.setAttribute(n,this.contentAttr,``),n}},Fb=class e extends iy{supportsDOMEvents=!0;static makeCurrent(){ry(new e)}onAndCancel(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}dispatchEvent(e,t){e.dispatchEvent(t)}remove(e){e.remove()}createElement(e,t){return t||=this.getDefaultDocument(),t.createElement(e)}createHtmlDocument(){return document.implementation.createHTMLDocument(`fakeTitle`)}getDefaultDocument(){return document}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}isShadowRoot(e){return e instanceof DocumentFragment}getGlobalEventTarget(e,t){return t===`window`?window:t===`document`?e:t===`body`?e.body:null}getBaseHref(e){let t=Lb();return t==null?null:Rb(t)}resetBaseElement(){Ib=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return ob(document.cookie,e)}},Ib=null;function Lb(){return Ib||=document.head.querySelector(`base`),Ib?Ib.getAttribute(`href`):null}function Rb(e){return new URL(e,document.baseURI).pathname}var zb=[`alt`,`control`,`meta`,`shift`],Bb={"\b":`Backspace`," ":`Tab`,"":`Delete`,"\x1B":`Escape`,Del:`Delete`,Esc:`Escape`,Left:`ArrowLeft`,Right:`ArrowRight`,Up:`ArrowUp`,Down:`ArrowDown`,Menu:`ContextMenu`,Scroll:`ScrollLock`,Win:`OS`},Vb={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},Hb=(()=>{class e extends cb{constructor(e){super(e)}supports(t){return e.parseEventName(t)!=null}addEventListener(t,n,r,i){let a=e.parseEventName(n),o=e.eventCallback(a.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>ny().onAndCancel(t,a.domEventName,o,i))}static parseEventName(t){let n=t.toLowerCase().split(`.`),r=n.shift();if(n.length===0||r!==`keydown`&&r!==`keyup`)return null;let i=e._normalizeKey(n.pop()),a=``,o=n.indexOf(`code`);if(o>-1&&(n.splice(o,1),a=`code.`),zb.forEach(e=>{let t=n.indexOf(e);t>-1&&(n.splice(t,1),a+=e+`.`)}),a+=i,n.length!=0||i.length===0)return null;let s={};return s.domEventName=r,s.fullKey=a,s}static matchEventFullKeyCode(e,t){let n=Bb[e.key]||e.key,r=``;return t.indexOf(`code.`)>-1&&(n=e.code,r=`code.`),n==null||!n?!1:(n=n.toLowerCase(),n===` `?n=`space`:n===`.`&&(n=`dot`),zb.forEach(t=>{if(t!==n){let n=Vb[t];n(e)&&(r+=t+`.`)}}),r+=n,r===t)}static eventCallback(t,n,r){return i=>{e.matchEventFullKeyCode(i,t)&&r.runGuarded(()=>n(i))}}static _normalizeKey(e){return e===`esc`?`escape`:e}static ɵfac=function(t){return new(t||e)(qi(Ss))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})();async function Ub(e,t,n){return Yv({rootComponent:e,...Wb(t,n)})}function Wb(e,t){return{platformRef:t?.platformRef,appProviders:[...Yb,...e?.providers??[]],platformProviders:Jb}}function Gb(){Fb.makeCurrent()}function Kb(){return new qs}function qb(){return Yl(document),document}var Jb=[{provide:ec,useValue:sb},{provide:$s,useValue:Gb,multi:!0},{provide:Ss,useFactory:qb}],Yb=[{provide:Ta,useValue:`root`},{provide:qs,useFactory:Kb},{provide:ub,useClass:lb,multi:!0},{provide:ub,useClass:Hb,multi:!0},kb,{provide:vm,useClass:_b},{provide:_b,useExisting:vm},db,{provide:$p,useExisting:kb},[]];function Xb(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e{let r=new ex({code:i,why:Qb(a.why,e),fix:Qb(a.fix,e),docs:o,cause:e.cause,sources:e.sources,data:Qb(a.data,e)},s);for(let e of t)e(r,n);return r};n[i]=s}return n}function rx(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n{e=n,t=r}),resolve:e,reject:t}}var lx=Math.random.bind(Math),ux=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function dx(e=21){let t=``,n=e;for(;n--;)t+=ux[lx()*64|0];return t}var fx=6e4,px=e=>e,mx=px,{clearTimeout:hx,setTimeout:gx}=globalThis;function _x(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=px,deserialize:s=mx,resolver:c,bind:l=`rpc`,timeout:u=fx,proxify:d=!0}=t,f=!1,p=new Map,m,h;async function g(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:g}=cx(),_=dx();s.i=_;let ee;async function v(n=s){return u>=0&&(ee=gx(()=>{try{if(t.onTimeoutError?.call(h,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){g(e)}p.delete(_)},u),typeof ee==`object`&&(ee=ee.unref?.())),p.set(_,{resolve:d,reject:g,timeoutId:ee,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(h,s,v,d):await v()}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}finally{hx(ee),p.delete(_)}return l}let _={$call:(e,...t)=>g(e,t,!1),$callOptional:(e,...t)=>g(e,t,!1,!0),$callEvent:(e,...t)=>g(e,t,!0),$callRaw:e=>g(e.method,e.args,e.event,e.optional),$rejectPendingCalls:v,get $closed(){return f},get $meta(){return t.meta},$close:ee,$functions:e};h=d?new Proxy({},{get(t,n){if(Object.hasOwn(_,n))return _[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>g(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>g(n,e,!1);return i.asEvent=r,i}}):_;function ee(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(te)}function v(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function te(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(h,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?h:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(h,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(h,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(h,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(hx(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(te),h}function vx(e,t){return t.safety?t.safety:e===`static`||e===`query`||e==null?`read`:`action`}var yx=Object.freeze({type:`object`,additionalProperties:!0});function bx(e){let t=e[`~standard`];if(t.jsonSchema)try{return t.jsonSchema.input({target:`draft-2020-12`})}catch{return yx}return yx}function xx(e){if(!e||e.length===0)return{type:`object`,properties:{}};let t={},n=[];for(let r=0;rn[`arg${t}`]);if(`arg0`in n){let e=[];for(;`arg${e.length}`in n;)e.push(n[`arg${e.length}`]);return e}return Object.keys(n).length===0?[]:void 0}function Cx(e,t){return Sx(e,t)??[e]}function wx(e){return typeof e==`string`?`'${e}'`:new Ox().serialize(e)}var Tx=` _-,;:!?.'"()[]{}@*/\\&#%\`^+<=>|~$0123456789abcdefghijklmnopqrstuvwxyz`,Ex=(function(){let e=new Uint8Array(128);for(let t=0;t<69;t++)e[Tx.charCodeAt(t)]=t+1;for(let t=65;t<=90;t++)e[t]=e[t+32];return e})();function Dx(e,t){if(e===t)return 0;let n=Math.min(e.length,t.length),r=0;for(let i=0;ia?-1:1)}return e.length===t.length?r:e.lengththis.compare(e[0],t[0])),r=`${e}{`;for(let e=0;ethis.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e})(),kx=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],Ax=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],jx=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,Mx=[],Nx=class{_data=new Px;_hash=new Px([...kx]);_nDataBytes=0;_minBufferSize=0;finalize(e){e&&this._append(e);let t=this._nDataBytes*8,n=this._data.sigBytes*8;return this._data.words[n>>>5]|=128<<24-n%32,this._data.words[(n+64>>>9<<4)+14]=Math.floor(t/4294967296),this._data.words[(n+64>>>9<<4)+15]=t,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(e,t){let n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],u=n[7];for(let n=0;n<64;n++){if(n<16)Mx[n]=e[t+n]|0;else{let e=Mx[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=Mx[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;Mx[n]=t+Mx[n-7]+i+Mx[n-16]}let d=s&c^~s&l,f=r&i^r&a^i&a,p=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),m=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),h=u+m+d+Ax[n]+Mx[n],g=p+f;u=l,l=c,c=s,s=o+h|0,o=a,a=i,i=r,r=h+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+u|0}_append(e){typeof e==`string`&&(e=Px.fromUtf8(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_process(e){let t,n=this._data.sigBytes/64;n=e?Math.ceil(n):Math.max((n|0)-this._minBufferSize,0);let r=n*16,i=Math.min(r*4,this._data.sigBytes);if(r){for(let e=0;e>>2]|=(n.charCodeAt(e)&255)<<24-e%4*8;return new e(i,r)}toBase64(){let e=[];for(let t=0;t>>2]>>>24-t%4*8&255,r=this.words[t+1>>>2]>>>24-(t+1)%4*8&255,i=this.words[t+2>>>2]>>>24-(t+2)%4*8&255,a=n<<16|r<<8|i;for(let n=0;n<4&&t*8+n*6>>6*(3-n)&63))}return e.join(``)}concat(e){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let t=0;t>>2]>>>24-t%4*8&255;this.words[this.sigBytes+t>>>2]|=n<<24-(this.sigBytes+t)%4*8}else for(let t=0;t>>2]=e.words[t>>>2];this.sigBytes+=e.sigBytes}};function Fx(e){return new Nx().finalize(e).toBase64()}function Ix(e){return Fx(wx(e))}function Lx(e){return Ix(e)}function Rx(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}var zx=/^[\w+.-]{2,}:\/\//;function Bx(e){return e.endsWith(`/`)?e:`${e}/`}function Vx(e){return(e.endsWith(`/`)?e.slice(0,-1):e)||`/`}function Hx(e,...t){let n=e;for(let e of t)e&&e!==`/`&&(n=n?Bx(n)+e.replace(/^\.?\//,``):e);return n}function Ux(e,t){if(!t||t===`/`||zx.test(e))return e;let n=Vx(t);return e.startsWith(n)?e:Hx(n,e)}function Wx(e,t){let n=e.match(zx);return t+(n?e.slice(n[0].length):e)}var Gx=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function Kx(e=21){let t=``,n=e;for(;n--;)t+=Gx[Math.random()*64|0];return t}var qx=Symbol.for(`immer-nothing`),Jx=Symbol.for(`immer-draftable`),Yx=Symbol.for(`immer-state`),Xx=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function Zx(e,...t){{let n=Xx[e],r=xS(n)?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}}var Qx=Object,$x=Qx.getPrototypeOf,eS=`constructor`,tS=`prototype`,nS=`configurable`,rS=`enumerable`,iS=`writable`,aS=`value`,oS=e=>!!e&&!!e[Yx];function sS(e){return e?uS(e)||_S(e)||!!e[Jx]||!!e[eS]?.[Jx]||vS(e)||yS(e):!1}var cS=Qx[tS][eS].toString(),lS=new WeakMap;function uS(e){if(!e||!bS(e))return!1;let t=$x(e);if(t===null||t===Qx[tS])return!0;let n=Qx.hasOwnProperty.call(t,eS)&&t[eS];if(n===Object)return!0;if(!xS(n))return!1;let r=lS.get(n);return r===void 0&&(r=Function.toString.call(n),lS.set(n,r)),r===cS}function dS(e,t,n=!0){fS(e)===0?(n?Reflect.ownKeys(e):Qx.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function fS(e){let t=e[Yx];return t?t.type_:_S(e)?1:vS(e)?2:yS(e)?3:0}var pS=(e,t,n=fS(e))=>n===2?e.has(t):Qx[tS].hasOwnProperty.call(e,t),mS=(e,t,n=fS(e))=>n===2?e.get(t):e[t],hS=(e,t,n,r=fS(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function gS(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var _S=Array.isArray,vS=e=>e instanceof Map,yS=e=>e instanceof Set,bS=e=>typeof e==`object`,xS=e=>typeof e==`function`,SS=e=>typeof e==`boolean`;function CS(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var wS=e=>bS(e)?e?.[Yx]:null,TS=e=>e.copy_||e.base_,ES=e=>e.modified_?e.copy_:e.base_;function DS(e,t){if(vS(e))return new Map(e);if(yS(e))return new Set(e);if(_S(e))return Array[tS].slice.call(e);let n=uS(e);if(t===!0||t===`class_only`&&!n){let t=Qx.getOwnPropertyDescriptors(e);delete t[Yx];let n=Reflect.ownKeys(t);for(let r=0;r1&&Qx.defineProperties(e,{set:AS,add:AS,clear:AS,delete:AS}),Qx.freeze(e),t&&dS(e,(e,t)=>{OS(t,!0)},!1),e)}function kS(){Zx(2)}var AS={[aS]:kS};function jS(e){return e===null||!bS(e)||Qx.isFrozen(e)}var MS=`MapSet`,NS=`Patches`,PS=`ArrayMethods`,FS={};function IS(e){let t=FS[e];return t||Zx(0,e),t}var LS=e=>!!FS[e];function RS(e,t){FS[e]||(FS[e]=t)}var zS,BS=()=>zS,VS=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:LS(MS)?IS(MS):void 0,arrayMethodsPlugin_:LS(PS)?IS(PS):void 0});function HS(e,t){t&&(e.patchPlugin_=IS(NS),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function US(e){WS(e),e.drafts_.forEach(KS),e.drafts_=null}function WS(e){e===zS&&(zS=e.parent_)}var GS=e=>zS=VS(zS,e);function KS(e){let t=e[Yx];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function qS(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[Yx].modified_&&(US(t),Zx(4)),sS(e)&&(e=JS(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[Yx].base_,e,t)}else e=JS(t,n);return YS(t,e,!0),US(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===qx?void 0:e}function JS(e,t){if(jS(t))return t;let n=t[Yx];if(!n)return rC(t,e.handledSet_,e);if(!ZS(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);tC(n,e)}return n.copy_}function YS(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&OS(t,n)}function XS(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var ZS=(e,t)=>e.scope_===t,QS=[];function $S(e,t,n,r){let i=TS(e),a=e.type_;if(r!==void 0&&mS(i,r,a)===t){hS(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;dS(i,(e,n)=>{if(oS(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??QS;for(let e of o)hS(i,e,n,a)}function eC(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!ZS(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=ES(i);$S(e,i.draft_??i,a,n),tC(i,r)})}function tC(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}XS(e)}}function nC(e,t,n){let{scope_:r}=e;if(oS(n)){let i=n[Yx];ZS(i,r)&&i.callbacks_.push(function(){fC(e),$S(e,n,ES(i),t)})}else sS(n)&&e.callbacks_.push(function(){let i=TS(e);e.type_===3?i.has(n)&&rC(n,r.handledSet_,r):mS(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&rC(mS(e.copy_,t,e.type_),r.handledSet_,r)})}function rC(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||oS(e)||t.has(e)||!sS(e)||jS(e)?e:(t.add(e),dS(e,(r,i)=>{if(oS(i)){let t=i[Yx];ZS(t,n)&&(hS(e,r,ES(t),e.type_),XS(t))}else sS(i)&&rC(i,t,n)}),e)}function iC(e,t){let n=_S(e),r={type_:+!!n,scope_:t?t.scope_:BS(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=aC;n&&(i=[r],a=oC);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var aC={get(e,t){if(t===Yx)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=TS(e);if(!pS(i,t,e.type_))return lC(e,i,t);let a=i[t];if(e.finalized_||!sS(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&CS(t))return a;if(a===sC(e.base_,t)||cC(e,t,a)){fC(e);let n=e.type_===1?+t:t,r=mC(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in TS(e)},ownKeys(e){return Reflect.ownKeys(TS(e))},set(e,t,n){let r=uC(TS(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=sC(TS(e),t),i=r?.[Yx];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.delete(t),!0;if(gS(n,r)&&(n!==void 0||pS(e.base_,t,e.type_)))return!0;fC(e),dC(e)}return e.copy_[t]===n&&(n!==void 0||pS(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),nC(e,t,n),!0)},deleteProperty(e,t){return fC(e),sC(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),dC(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=TS(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[iS]:!0,[nS]:e.type_!==1||t!==`length`,[rS]:r[rS],[aS]:n[t]}},defineProperty(){Zx(11)},getPrototypeOf(e){return $x(e.base_)},setPrototypeOf(){Zx(12)}},oC={};for(let e in aC){let t=aC[e];oC[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}oC.deleteProperty=function(e,t){return isNaN(parseInt(t))&&Zx(13),oC.set.call(this,e,t,void 0)},oC.set=function(e,t,n){return t!==`length`&&isNaN(parseInt(t))&&Zx(14),aC.set.call(this,e[0],t,n,e[0])};function sC(e,t){let n=e[Yx];return(n?TS(n):e)[t]}function cC(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!sS(n)||n[Yx]?!1:e.baseRefs_.has(n)}function lC(e,t,n){let r=uC(t,n);return r?aS in r?r[aS]:r.get?.call(e.draft_):void 0}function uC(e,t){if(!(t in e))return;let n=$x(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=$x(n)}}function dC(e){e.modified_||(e.modified_=!0,e.parent_&&dC(e.parent_))}function fC(e){e.copy_||=(e.assigned_=new Map,DS(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var pC=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(xS(e)&&!xS(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}xS(t)||Zx(6),n!==void 0&&!xS(n)&&Zx(7);let r;if(sS(e)){let i=GS(this),a=mC(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?US(i):WS(i)}return HS(i,n),qS(r,i)}if(!e||!bS(e)){if(r=t(e),r===void 0&&(r=e),r===qx&&(r=void 0),this.autoFreeze_&&OS(r,!0),n){let t=[],i=[];IS(NS).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}Zx(1,e)},this.produceWithPatches=(e,t)=>{if(xS(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},SS(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),SS(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),SS(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){sS(e)||Zx(8),oS(e)&&(e=hC(e));let t=GS(this),n=mC(t,e,void 0);return n[Yx].isManual_=!0,WS(t),n}finishDraft(e,t){let n=e&&e[Yx];(!n||!n.isManual_)&&Zx(9);let{scope_:r}=n;return HS(r,t),qS(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=IS(NS).applyPatches_;return oS(e)?r(e,t):this.produce(e,e=>r(e,t))}};function mC(e,t,n,r){let[i,a]=vS(t)?IS(MS).proxyMap_(t,n):yS(t)?IS(MS).proxySet_(t,n):iC(t,n);return(n?.scope_??BS()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?eC(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function hC(e){return oS(e)||Zx(10,e),gC(e)}function gC(e){if(!sS(e)||jS(e))return e;let t=e[Yx],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=DS(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=DS(e,!0);return dS(n,(e,t)=>{hS(n,e,gC(t))},r),t&&(t.finalized_=!1),n}function _C(){Xx.push(`Sets cannot have "replace" patches.`,function(e){return`Unsupported patch operation: `+e},function(e){return`Cannot apply patch, path doesn't resolve: `+e},`Patching reserved attributes like __proto__, prototype and constructor is not allowed`);function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=wS(mS(e,n.key_)),i=mS(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||pS(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e{let u=mS(o,e,c),f=mS(s,e,c),p=l?pS(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===qx?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e[e,u(t)]));if(yS(e))return new Set(Array.from(e).map(u));let t=Object.create($x(e));for(let n in e)t[n]=u(e[n]);return pS(e,Jx)&&(t[Jx]=e[Jx]),t}function d(e){return oS(e)?u(e):e}RS(NS,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var vC=new pC,yC=vC.produce,bC=vC.produceWithPatches.bind(vC),xC=vC.applyPatches.bind(vC),SC=1e3;function CC(e,t){if(e.add(t),e.size>SC){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function wC(e){let{enablePatches:t=!1}=e;t&&_C();let n=Rx(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=Kx())=>{i.has(t)||(_C(),r=xC(r,e),CC(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=Kx())=>{if(!i.has(a)){if(CC(i,a),t){let[t,i]=bC(r,e);if(t===r)return;r=t,n.emit(`updated`,r,i,a)}else{let t=yC(r,e);if(t===r)return;r=t,n.emit(`updated`,r,void 0,a)}}},syncIds:i}}var TC=typeof self==`object`?self:globalThis,EC=new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),DC=new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function OC(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o,r=EC.has(e)?TC[e]:void 0;return n(new(r??TC.Error)(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}if(typeof a==`string`&&DC.has(a))return n(new TC[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function kC(e){return OC(new Map,e)(0)}var AC=``,{toString:jC}={},{keys:MC}=Object;function NC(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=jC.call(e).slice(8,-1);switch(n){case`Array`:return[1,AC];case`Object`:return[2,AC];case`Date`:return[3,AC];case`RegExp`:return[4,AC];case`Map`:return[5,AC];case`Set`:return[6,AC];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function PC([e,t]){return e===0&&(t===`function`||t===`symbol`)}function FC(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=NC(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of MC(r))(e||!PC(NC(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(PC(NC(n))||PC(NC(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!PC(NC(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function IC(e,t={}){let n=[];return FC(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:LC,stringify:RC}=JSON,zC={json:!0,lossy:!0};function BC(e){return kC(LC(e))}function VC(e){return RC(IC(e,zC))}function HC(e){return kC(e)}function UC(e){return VC(e)}function WC(e){return BC(e)}var GC=256,KC=class extends Error{name=`StreamClosedError`};function qC(e={}){let t=e.id??Kx(),n=Math.max(0,e.replayWindow??0),r=Rx(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new KC(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&(a.length-n===1?a.shift():a.splice(0,a.length-n))),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=YC(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function JC(e={}){let t=e.id??Kx(),n=Math.max(1,e.highWaterMark??GC),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function YC(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}var XC=128;function ZC(e){return e.replace(/[^\w-]+/g,`_`).slice(0,XC)}var QC=`modulepreload`,$C=function(e,t){return new URL(e,t).href},ew={},tw=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=$C(t,n),t=s(t),t in ew)return;ew[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:QC,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},nw=`__connection.json`,rw=`__DEVFRAME_CONNECTION__`,iw=`x-birpc-session`,aw=`__rpc-dump/index.json`,ow=`devframe:services`,sw=`devframe_otp`,cw=`devframe_auth_token`;ix.postMessage.remoteAssetsError;var lw=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>Lx(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}},uw=sx({docsBase:`https://devfra.me/errors`,codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is \`false\`; MCP requires JSON-serializable data.`,fix:"Remove `jsonSerializable: false`, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."},DF0043:{why:e=>`RPC function "${e.name}" received an invalid argument at position ${e.index}: ${e.issues}`,fix:"Pass a value that satisfies the `args` schema declared for this function."},DF0044:{why:e=>`RPC function "${e.name}" returned a value that failed its \`returns\` schema: ${e.issues}`,fix:"Make the handler return a value that satisfies the `returns` schema, or relax the schema."}}});function dw(e){if(e.agent&&e.jsonSerializable===!1)throw uw.DF0019({name:e.name});e.agent&&!e.jsonSerializable&&(e.jsonSerializable=!0)}async function fw(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function pw(e){return e.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `)}async function mw(e,t,n){let r=n.slice();if(!t||t.length===0)return r;for(let r=0;r{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function _w(e,t){let n=e.handler;if(!n){let r=await gw(e,t);if(!r.handler)throw uw.DF0024({name:e.name});n=r.handler}let r=e.args,i=e.returns;if(!r&&!i)return n;let a=n;return async(...t)=>{let n=await mw(e.name,r,t),o=await a(...n);return await hw(e.name,i,o)}}var vw=class{context;definitions=new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return _w(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw uw.DF0021({name:e.name});dw(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw uw.DF0022({name:e.name});dw(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await _w(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw uw.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function yw(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw xw(t,`undefined`,r,e);return n}return i!==null&&bw(i,r,e,t),n})}function bw(e,t,n,r){if(typeof e==`bigint`)throw xw(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw xw(r,`Map`,t,n);if(e instanceof Set)throw xw(r,`Set`,t,n);if(e instanceof Date)throw xw(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw xw(r,e.constructor?.name??`class instance`,t,n)}function xw(e,t,n,r){let i=Sw(n,r);return uw.DF0020({name:e||``,type:t,path:i})}function Sw(e,t){return Array.isArray(e)?`[${t}]`:t===``?``:t}var Cw=`__DEVFRAME_CONNECTION_META__`,ww=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function Tw(e){let t=[()=>window?.[e],()=>globalThis?.[e],()=>parent.window?.[e]];for(let e of t)try{let t=e();if(t)return t}catch{}}function Ew(){return Tw(rw)}function Dw(){return Tw(Cw)}function Ow(e){if(e)return e;try{let e=localStorage.getItem(ww);if(e)return e}catch{}return Tw(ww)}function kw(e){globalThis[rw]=e,globalThis[Cw]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&Aw(e.authToken)}function Aw(e){try{localStorage.setItem(ww,e)}catch{}globalThis[ww]=e;let t=Ew();t&&(globalThis[rw]={...t,authToken:e})}function jw(e){let t=Ux(nw,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function Mw(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function Nw(){let e=Ew();if(e)return Mw(e,Ow()??e.authToken??e.connectionMeta.authToken);let t=Dw();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??jw(`./`),authToken:Ow(t.authToken)}}async function Pw(e={}){if(e.connection){let t=Mw(e.connection,Ow(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return kw(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:jw(t[0]??`./`),authToken:Ow(e.authToken??e.connectionMeta.authToken)};return kw(n),n}let n=Nw();if(n){let t=Mw(n,Ow(e.authToken??n.authToken??n.connectionMeta.authToken));return kw(t),t}let r=[];for(let n of t){let t=Ux(nw,n),i=jw(n);try{let n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch connection meta from ${i}: ${n.status}`);let r=await n.json(),a=n.url||i,o={connectionMeta:r,metaBaseUrl:r.baseUrl?new URL(r.baseUrl,a).href:a,authToken:Ow(e.authToken??r.authToken)};return kw(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var Fw=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function Iw(e=sw){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function Lw(e){try{let t=new URL(globalThis.location.href),n=new URLSearchParams(t.hash.replace(/^#/,``));if(!n.has(e))return;n.delete(e),t.hash=n.toString(),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function Rw(e=sw){let t=Iw(e);return t&&Lw(e),t}async function zw(e,t={}){let n=Rw(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function Bw(e){let t={},n=new WeakMap,r,i=()=>(r??=e.sharedState.get(ow,{initialValue:{}}).then(e=>(t=e.value(),e.on(`updated`,e=>{t=e}),e)),r);return i(),{state:i,has:e=>e in t,keys:()=>Object.keys(t),get:r=>{let i=t[r];if(!i)return;let a=n.get(i);return a||(a={...i,rpc:e.scope(i.scope).rpc},n.set(i,a)),a}}}function Vw(e){let t=new Map,n=new Map,r=new Map,i=new Set,a=e.connectionMeta.backend===`static`;function o(e,t){let n=r.get(e);return n&&typeof n==`object`&&!Array.isArray(n)&&typeof t==`object`&&!Array.isArray(t)?{...n,...t}:t}e.client.register({name:ix.broadcast.clientStateUpdated,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.mutate(()=>o(e,n),r)}}),e.client.register({name:ix.broadcast.clientStatePatch,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.patch(n,r)}});function s(t,n){let r=[];return r.push(n.on(`updated`,(n,r,i)=>{a||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,i):e.callEvent(`devframe:rpc:server-state:set`,t,n,i))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return i.add(e),()=>{i.delete(e)}},delete(e){let i=n.get(e);n.delete(e);let a=t.delete(e);return r.delete(e),i?.(),a},get:async(c,l)=>{if(l?.initialValue!==void 0&&r.set(c,l.initialValue),t.has(c))return t.get(c);let u=wC({initialValue:l?.initialValue,enablePatches:!1});async function d(){if(a||e.callEvent(`devframe:rpc:server-state:subscribe`,c),l?.initialValue!==void 0){t.set(c,u);for(let e of i)e(c);return e.call(`devframe:rpc:server-state:get`,c).then(e=>{e!==void 0&&u.mutate(()=>o(c,e))}).catch(e=>{console.error(`Error getting server state`,e)}),n.set(c,s(c,u)),u}{let r=await e.call(`devframe:rpc:server-state:get`,c);u.mutate(()=>o(c,r)),t.set(c,u);for(let e of i)e(c);return n.set(c,s(c,u)),u}}return new Promise(t=>{if(e.isTrusted)d().then(t);else{t(u);let n=!1;e.events.on(ix.client.isTrustedUpdated,e=>{e&&!n&&(n=!0,d())})}})}}}var Hw=new Map;function Uw(e=Hw){let t=new Map;return{serialize:n=>{let r;return n.t===`q`?r=n.m:(r=t.get(n.i),t.delete(n.i)),!(n.t===`s`&&`e`in n)&&r&&e.get(r)?.jsonSerializable===!0?yw(n,r??``):`s:${UC(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?WC(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function Ww(){}function Gw(e){let t=e.search(/\n\n|\r\n\r\n/);if(!(t<0))return{frame:e.slice(0,t),rest:e.slice(t+(e[t]===`\r`?4:2))}}function Kw(e){let t=`message`,n=[];for(let r of e.split(/\r?\n/))r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trimStart():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));return{event:t,data:n}}function qw(e){let{onConnected:t=Ww,onError:n=Ww,onDisconnected:r=Ww,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${cw}=${encodeURIComponent(e.authToken)}`);let s=Uw(i),c=new AbortController,l=!1,u,d,f,p,m=new Promise((e,t)=>{f=e,p=t});m.catch(()=>{});function h(e){l||(l=!0,p(e),n(e),r())}function g(){l||(l=!0,p(Error(`Devframe SSE stream closed`)),r())}function _(e,n){if(e===`session`){f(n),t();return}u?.(n)}async function ee(e){let t=e.getReader();d=t;let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;for(r+=n.decode(i,{stream:!0});;){let e=Gw(r);if(!e)break;r=e.rest;let{event:t,data:n}=Kw(e.frame);n.length>0&&_(t,n.join(` -`))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await ee(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[iw]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function Jw(e,t){let{channel:n,rpcOptions:r={}}=t;return _x(e,{...n,timeout:-1,...r,proxify:!1})}function Yw(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(ix.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new Fw(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new Fw(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(ix.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new Fw(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(ix.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let ee=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(ix.client.connectionError,e),m(new Fw(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new Fw(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),v=Jw(a.functions,{channel:ee,rpcOptions:o});a.register({name:ix.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new Fw(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e),m(e),i.emit(ix.client.isTrustedUpdated,!1)}});let te=n;async function ne(e){te=e;let t=await v.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new Fw(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e)}return i.emit(ix.client.isTrustedUpdated,c),t.isTrusted}async function re(e){let t=(await v.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(te=t,c=!0,d.resolve(!0),f(`connected`),i.emit(ix.client.isTrustedUpdated,!0)),t}async function ie(e={}){await v.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function ae(){return c?!0:ne(te??``)}async function oe(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t;try{return await Promise.race([d.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),c}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:ae,requestTrustWithToken:ne,requestTrustWithCode:re,requestAuthCode:ie,ensureTrusted:oe,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(ix.client.error,t,String(e[0]));return}return v.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$callOptional(...e),t)},close:()=>{ee.close()}}}function Xw(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Zw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Xw(n.sse,r??`./`,location);return Yw({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>qw({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Qw(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:$w(r)?Qw(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function $w(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function eT(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function tT(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function nT(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function rT(e){if(e.error)throw Qw(e.error);return e.output}function iT(e){return e.some(e=>e!=null)}function aT(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function oT(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?HC(e):e}function a(e,t){return i(aT(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return nT(r)?rT(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(eT(r)){if(iT(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(tT(r)){let e=Lx(n),i=r.records[e];if(i)return rT(await s(i,r.serialization));if(r.fallback)return rT(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!iT(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function sT(e){let t=oT(await e.fetchJsonFromBases(aw),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var cT=``;function lT(e,t){return`${e}${cT}${t}`}function uT(e){let t=new Map,n=new Map;e.client.register({name:ix.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(lT(e,n))?._push(r,i)}}),e.client.register({name:ix.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=lT(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:ix.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=lT(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(ix.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(cT);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=lT(n,r),o=t.get(a);if(o)return o;let s=JC({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(ix.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=lT(t,r),a=n.get(i);if(a)return a;let o=qC({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function dT(){}var fT=new Map;function pT(e){let t=e.url;e.authToken&&(t=`${t}?${cw}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=dT,onError:i=dT,onDisconnected:a=dT,definitions:o=fT}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Uw(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function mT(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Wx(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function hT(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=mT(n.websocket,r??`./`,location);return Yw({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>pT({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function gT(e){return e.includes(`:`)}function _T(e,t){return gT(t)?t:`${e}:${t}`}function vT(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function yT(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return vT(a)}function bT(e,t){return{global:yT(e,t,`global`),project:yT(e,t,`project`)}}function xT(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(gT(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(_T(t,n),...r)),callEvent:((n,...r)=>e.callEvent(_T(t,n),...r)),callOptional:((n,...r)=>e.callOptional(_T(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(_T(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(_T(t,n),r,i),upload:(n,r)=>e.streaming.upload(_T(t,n),r)}},settings:bT(e,t),scope:e.scope}}function ST(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function CT(e,t={}){let n=t.modelContext??ST();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=ZC(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=vx(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:xx(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>wT(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function wT(e,t,n){try{let r=Cx(n,e.args?.length);return{content:[{type:`text`,text:TT(await(await _w(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:ET(e)}]}}}function TT(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function ET(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function DT(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function OT(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=Rx(),a=Array.isArray(t)?t:[t],o=await Pw(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new lw({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new vw(f),m=e.webmcp===!1?void 0:CT(p),h,g=!1;async function _(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Ux(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let ee={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},v=DT(e.transport??`auto`,s),te=v===`static`?await sT({fetchJsonFromBases:_}):v===`sse`?Zw({...ee,sseOptions:e.sseOptions}):hT({...ee,wsOptions:e.wsOptions}),ne;try{ne=new BroadcastChannel(`devframe-auth`)}catch{}let re,ie=!1;function ae(e){return((...t)=>ie||!re?e(...t):re.then(()=>e(...t)))}function oe(){g=!0;try{h?.(),m?.()}finally{try{ne?.close()}finally{te.close?.()}}}let se={events:i,get isTrusted(){return te.isTrusted},get status(){return te.status},get connectionError(){return te.connectionError},get transport(){return te.transport??v},get connection(){return o},connectionMeta:s,ensureTrusted:te.ensureTrusted,requestTrust:te.requestTrust,requestTrustWithToken:async e=>(Aw(e),o={...o,authToken:e},te.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await te.requestTrustWithCode(e);if(!t)return!1;Aw(t),o={...o,authToken:t};try{ne?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>te.requestAuthCode(e),call:ae(te.call),callEvent:ae(te.callEvent),callOptional:ae(te.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:oe};se.sharedState=Vw(se),se.streaming=uT(se),se.services=Bw(se);let ce=new Map;se.scope=(e=>{if(!e)return se;let t=ce.get(e);return t||(t=xT(se,e),ce.set(e,t)),t}),f.rpc=se;function le(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ue(){if(e.simpleAuth!==!1&&le()&&typeof globalThis.prompt==`function`)for(await se.requestAuthCode().catch(()=>{});!se.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await se.requestTrustWithCode(t))return}}async function de(){let t=await te.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await zw(se,{param:n}):!1;t||r||se.isTrusted||await ue()}return re=de().then(()=>{ie=!0},()=>{ie=!0}),s.mcp&&tw(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-BXhoSh1z-CQUbrXfP.js`);return{setupBrowserAgentRpcBridge:e}},[],import.meta.url).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(se))}).catch(()=>{}),ne&&(ne.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&se.requestTrustWithToken(e.data.authToken)}),se}var kT=OT,AT=[`components`,`injectors`,`signals`,`ngrx`,`forms`,`router`,`pipes`,`http`,`analog`],jT=[`forms`,`router`,`ngrx`,`http`,`analog`],MT={refreshMs:{default:3e3,min:500,max:8e3},navigations:{default:50,min:5,max:500},formTimeline:{default:200,min:10,max:2e3},httpCalls:{default:200,min:10,max:2e3},changeLog:{default:200,min:10,max:2e3},cdCycles:{default:200,min:10,max:2e3}},NT={"opted-out":`the request sets transferCache: false`,post:`POST requests are left out unless includePostRequests is set`,method:`only GET, HEAD and POST requests are cached`,"auth-headers":`it sends an Authorization, Proxy-Authorization or Cookie header`,credentials:`it sends credentials (withCredentials or credentials: include/same-origin)`,"no-cache-request":`the request asks for no-store, no-cache or private`,"no-cache-response":`the response has Cache-Control no-store, no-cache or private`,"set-cookie":`the response sets a cookie`,error:`failed responses are not stored`,mocked:`a fault rule answered before the transfer cache ran`,"cache-off-or-filter":`the transfer cache is off, or its filter (or another withHttpTransferCacheOptions setting) left it out`},PT=[[200,`OK`],[201,`Created`],[202,`Accepted`],[203,`Non-Authoritative Information`],[204,`No Content`],[205,`Reset Content`],[206,`Partial Content`],[207,`Multi-Status`],[208,`Already Reported`],[226,`IM Used`],[300,`Multiple Choices`],[301,`Moved Permanently`],[302,`Found`],[303,`See Other`],[304,`Not Modified`],[307,`Temporary Redirect`],[308,`Permanent Redirect`],[400,`Bad Request`],[401,`Unauthorized`],[402,`Payment Required`],[403,`Forbidden`],[404,`Not Found`],[405,`Method Not Allowed`],[406,`Not Acceptable`],[407,`Proxy Authentication Required`],[408,`Request Timeout`],[409,`Conflict`],[410,`Gone`],[411,`Length Required`],[412,`Precondition Failed`],[413,`Content Too Large`],[414,`URI Too Long`],[415,`Unsupported Media Type`],[416,`Range Not Satisfiable`],[417,`Expectation Failed`],[418,`I'm a Teapot`],[421,`Misdirected Request`],[422,`Unprocessable Content`],[423,`Locked`],[424,`Failed Dependency`],[425,`Too Early`],[426,`Upgrade Required`],[428,`Precondition Required`],[429,`Too Many Requests`],[431,`Request Header Fields Too Large`],[451,`Unavailable For Legal Reasons`],[499,`Client Closed Request`],[500,`Internal Server Error`],[501,`Not Implemented`],[502,`Bad Gateway`],[503,`Service Unavailable`],[504,`Gateway Timeout`],[505,`HTTP Version Not Supported`],[506,`Variant Also Negotiates`],[507,`Insufficient Storage`],[508,`Loop Detected`],[510,`Not Extended`],[511,`Network Authentication Required`],[520,`Web Server Returned an Unknown Error`],[521,`Web Server Is Down`],[522,`Connection Timed Out`],[523,`Origin Is Unreachable`],[524,`A Timeout Occurred`]];function FT(e){return PT.some(([t])=>t===e)}var IT=`pangular`;function LT(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function RT(e,t){return typeof e==`boolean`?e:t}var zT=100,BT=100;function VT(e){if(!Array.isArray(e))return[];let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e&&e.length<=BT);return[...new Set(t)].slice(0,zT)}function HT(e,t){let{default:n,min:r,max:i}=MT[t];return typeof e!=`number`||!Number.isFinite(e)?n:Math.min(i,Math.max(r,Math.round(e)))}function UT(e,t){return Object.fromEntries(e.map(e=>[e,t(e)]))}function WT(e){let t=LT(e),n=LT(t.agent),r=LT(t.inspectors),i=LT(n.tools),a=LT(t.actions),o=RT(t.actions,!0),s=LT(t.redaction),c=LT(t.limits),l=UT(AT,e=>RT(r[e],!0));return{inspectors:l,agent:{readOnly:RT(n.readOnly,!1),tools:UT(AT,e=>l[e]&&RT(i[e],!0))},actions:UT(jT,e=>l[e]&&RT(a[e],o)),redaction:{secretNames:VT(s.secretNames),unmask:VT(s.unmask)},limits:Object.fromEntries(Object.keys(MT).map(e=>[e,HT(c[e],e)]))}}function GT(e){let t=e?.configs;return WT(t?.[IT])}function KT(e){return`${{forms:`Writing to forms`,router:`Navigating`,ngrx:`Restoring NgRx state and dispatching actions`,http:`Changing HTTP mock rules and clearing HTTP calls`,analog:`Calling API routes`}[e]} is turned off in the devtools config (actions.${e}).`}var qT={components:`Components`,injectors:`Injectors`,signals:`Signals`,ngrx:`NgRx`,forms:`Forms`,router:`Router`,pipes:`Pipes`,http:`HTTP`,analog:`Analog`},JT={forms:`Form writes`,router:`Navigation`,ngrx:`NgRx restore and dispatch`,http:`HTTP mocking`,analog:`Analog API calls`},YT={refreshMs:e=>`poll every ${e} ms`,navigations:e=>`${e} navigations`,formTimeline:e=>`${e} form events`,httpCalls:e=>`${e} HTTP calls`,changeLog:e=>`${e} NgRx changes`,cdCycles:e=>`${e} change detection cycles`};function XT(e){let t=[],n=(e,n)=>{n.length&&t.push({label:e,value:n.join(`, `)})},r=AT.filter(t=>e.inspectors[t]);return n(`Inspectors off`,AT.filter(t=>!e.inspectors[t]).map(e=>qT[e])),n(`Agent`,e.agent.readOnly?[`Read-only`]:[]),n(`Hidden from the agent`,r.filter(t=>!e.agent.tools[t]).map(e=>qT[e])),n(`Blocked actions`,jT.filter(t=>e.inspectors[t]&&!e.actions[t]).map(e=>JT[e])),n(`Extra secret names`,e.redaction.secretNames),n(`Unmasked names`,e.redaction.unmask),n(`Limits`,Object.keys(MT).filter(t=>e.limits[t]!==MT[t].default).map(t=>YT[t](e.limits[t]))),t}var ZT=`pangular-page-id`,QT=null;function $T(e){QT=e}function eE(){if(QT)return QT;try{return new URLSearchParams(location.search).get(`pageId`)||(window.top===window?null:sessionStorage.getItem(ZT)||null)}catch{return null}}function tE(e,t){if(t.chosen&&e[t.chosen])return t.chosen;if(t.host)return t.host;if(t.previous&&e[t.previous])return t.previous;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n?.pageId??null}function nE(e,t){return e?t?e.pages?.[t]??null:e:null}function rE(e,t){return e?t?e.pages?.[t]??null:e.graph??null:null}function iE(e,t,n){return e?e.scope(`pangular`).rpc.call(t,...n===void 0?[]:[n]):Promise.resolve(null)}function aE(e,t,n){return iE(e,t,n).then(e=>e,()=>null)}function oE(e){return e?.connectionMeta.backend===`static`}function sE(e){let t=()=>{let t=e()?.scope(`pangular`).rpc;t&&(t.callEvent(`request-page-highlight`,null),t.callEvent(`request-form-highlight`,null))};return addEventListener(`pagehide`,t),()=>{removeEventListener(`pagehide`,t),t()}}function cE(e){return e.split(`@`)[1]??``}var lE={signal:`Signal Forms`,reactive:`Reactive`,template:`Template-driven`},uE={own:`validator`,directive:`template attribute`,tree:`cross-field rule`,async:`async`,parse:`parse`,submission:`server`,schema:`schema`,manual:`setErrors`},dE=aE,fE={key:`name looks secret`,"input-type":`password input`,autocomplete:`autocomplete is a secret kind`,marker:`marked as mask`,parent:`inside a secret group`,config:`listed in mask`};function pE(e){return fE[e]??e}var mE=`https://pangular-inspector.dev/security/#opt-fields-in-or-out`;async function hE(e,t){return await dE(e,`request-form-action`,t)??{ok:!1,error:`The devtools server did not answer.`}}function gE(e){return`${e.ok?e.message??`Done.`:e.error??`Failed.`}${e.skipped?.length?` Skipped: ${e.skipped.map(e=>`${e.path} (${e.reason})`).join(`, `)}.`:``}${e.status?` Status: ${e.status}.`:``}`}var _E=/"(?:[^"\\\n]|\\.)*"|`([^`\n]*)`|\*\*/g;function vE(e){return(e??``).replace(/^_Labels, paths.*_\n\n/,``).replace(_E,(e,t)=>t??(e===`**`?``:e))}function yE(e){return GT(e?.connectionMeta)}function bE(e,t){return yE(e).actions[t]}var xE={components:`components`,routes:`router`,signals:`signals`,injectors:`injectors`,store:`ngrx`,forms:`forms`,pipes:`pipes`,network:`http`,analog:`analog`};function SE(e,t){let n=xE[e];return!n||t.inspectors[n]}function CE(e,t){e&1&&(A(),Fg(0,`rect`,3)(1,`rect`,4)(2,`rect`,5)(3,`rect`,6))}function wE(e,t){e&1&&(A(),Fg(0,`path`,7)(1,`path`,8)(2,`path`,9))}function TE(e,t){e&1&&(A(),Fg(0,`circle`,10)(1,`path`,11)(2,`circle`,12))}function EE(e,t){e&1&&(A(),Fg(0,`path`,1))}function DE(e,t){e&1&&(A(),Fg(0,`path`,13)(1,`path`,14)(2,`path`,15)(3,`path`,16))}function OE(e,t){e&1&&(A(),Fg(0,`ellipse`,17)(1,`path`,18)(2,`path`,19))}function kE(e,t){e&1&&(A(),Fg(0,`rect`,20)(1,`path`,21)(2,`path`,22)(3,`path`,23))}function AE(e,t){e&1&&(A(),Fg(0,`circle`,24)(1,`path`,25)(2,`path`,26))}function jE(e,t){e&1&&(A(),Fg(0,`path`,27)(1,`path`,28)(2,`path`,29)(3,`path`,30)(4,`circle`,31))}function ME(e,t){e&1&&(A(),Fg(0,`path`,2))}var NE=class e{name=$.required();static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-tab-icon`]],inputs:{name:[1,`name`]},decls:11,vars:1,consts:[[`viewBox`,`0 0 24 24`,`width`,`16`,`height`,`16`,`fill`,`none`,`stroke`,`currentColor`,`stroke-width`,`1.8`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`,`aria-hidden`,`true`],[`d`,`M22 12h-4l-3 9L9 3l-3 9H2`],[`d`,`m8 3 4 8 5-5 5 15H2L8 3z`],[`x`,`3`,`y`,`3`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`14`,`y`,`3`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`x`,`14`,`y`,`12`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`3`,`y`,`16`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`d`,`M12 2 3 7l9 5 9-5-9-5Z`],[`d`,`m3 12 9 5 9-5`],[`d`,`m3 17 9 5 9-5`],[`cx`,`6`,`cy`,`19`,`r`,`3`],[`d`,`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`],[`cx`,`18`,`cy`,`5`,`r`,`3`],[`d`,`M12 22v-5`],[`d`,`M9 8V2`],[`d`,`M15 8V2`],[`d`,`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`],[`cx`,`12`,`cy`,`5`,`rx`,`9`,`ry`,`3`],[`d`,`M3 5v14a9 3 0 0 0 18 0V5`],[`d`,`M3 12a9 3 0 0 0 18 0`],[`x`,`3`,`y`,`4`,`width`,`18`,`height`,`16`,`rx`,`2`],[`d`,`M7 9h10`],[`d`,`M7 13h6`],[`d`,`M7 17h8`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M3 12h18`],[`d`,`M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18Z`],[`d`,`M4 7h10`],[`d`,`M4 17h6`],[`d`,`m14 13 4 4-4 4`],[`d`,`M10 17h8`],[`cx`,`18`,`cy`,`7`,`r`,`3`]],template:function(e,t){if(e&1&&(A(),H(0,`svg`,0),P(1,CE,4,0)(2,wE,3,0)(3,TE,3,0)(4,EE,1,0,`:svg:path`,1)(5,DE,4,0)(6,OE,3,0)(7,kE,4,0)(8,AE,3,0)(9,jE,5,0)(10,ME,1,0,`:svg:path`,2),U()),e&2){let e;M(),F((e=t.name())===`dashboard`?1:e===`components`?2:e===`routes`?3:e===`signals`?4:e===`injectors`?5:e===`store`?6:e===`forms`?7:e===`network`?8:e===`pipes`?9:e===`analog`?10:-1)}},styles:[`[_nghost-%COMP%] { +`))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await ee(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[iw]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function Jw(e,t){let{channel:n,rpcOptions:r={}}=t;return _x(e,{...n,timeout:-1,...r,proxify:!1})}function Yw(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(ix.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new Fw(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new Fw(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(ix.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new Fw(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(ix.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let ee=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(ix.client.connectionError,e),m(new Fw(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new Fw(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),v=Jw(a.functions,{channel:ee,rpcOptions:o});a.register({name:ix.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new Fw(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e),m(e),i.emit(ix.client.isTrustedUpdated,!1)}});let te=n;async function ne(e){te=e;let t=await v.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new Fw(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e)}return i.emit(ix.client.isTrustedUpdated,c),t.isTrusted}async function re(e){let t=(await v.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(te=t,c=!0,d.resolve(!0),f(`connected`),i.emit(ix.client.isTrustedUpdated,!0)),t}async function ie(e={}){await v.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function ae(){return c?!0:ne(te??``)}async function oe(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t;try{return await Promise.race([d.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),c}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:ae,requestTrustWithToken:ne,requestTrustWithCode:re,requestAuthCode:ie,ensureTrusted:oe,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(ix.client.error,t,String(e[0]));return}return v.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$callOptional(...e),t)},close:()=>{ee.close()}}}function Xw(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Zw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Xw(n.sse,r??`./`,location);return Yw({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>qw({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Qw(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:$w(r)?Qw(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function $w(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function eT(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function tT(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function nT(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function rT(e){if(e.error)throw Qw(e.error);return e.output}function iT(e){return e.some(e=>e!=null)}function aT(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function oT(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?HC(e):e}function a(e,t){return i(aT(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return nT(r)?rT(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(eT(r)){if(iT(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(tT(r)){let e=Lx(n),i=r.records[e];if(i)return rT(await s(i,r.serialization));if(r.fallback)return rT(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!iT(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function sT(e){let t=oT(await e.fetchJsonFromBases(aw),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var cT=``;function lT(e,t){return`${e}${cT}${t}`}function uT(e){let t=new Map,n=new Map;e.client.register({name:ix.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(lT(e,n))?._push(r,i)}}),e.client.register({name:ix.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=lT(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:ix.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=lT(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(ix.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(cT);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=lT(n,r),o=t.get(a);if(o)return o;let s=JC({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(ix.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=lT(t,r),a=n.get(i);if(a)return a;let o=qC({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function dT(){}var fT=new Map;function pT(e){let t=e.url;e.authToken&&(t=`${t}?${cw}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=dT,onError:i=dT,onDisconnected:a=dT,definitions:o=fT}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Uw(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function mT(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Wx(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function hT(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=mT(n.websocket,r??`./`,location);return Yw({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>pT({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function gT(e){return e.includes(`:`)}function _T(e,t){return gT(t)?t:`${e}:${t}`}function vT(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function yT(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return vT(a)}function bT(e,t){return{global:yT(e,t,`global`),project:yT(e,t,`project`)}}function xT(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(gT(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(_T(t,n),...r)),callEvent:((n,...r)=>e.callEvent(_T(t,n),...r)),callOptional:((n,...r)=>e.callOptional(_T(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(_T(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(_T(t,n),r,i),upload:(n,r)=>e.streaming.upload(_T(t,n),r)}},settings:bT(e,t),scope:e.scope}}function ST(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function CT(e,t={}){let n=t.modelContext??ST();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=ZC(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=vx(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:xx(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>wT(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function wT(e,t,n){try{let r=Cx(n,e.args?.length);return{content:[{type:`text`,text:TT(await(await _w(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:ET(e)}]}}}function TT(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function ET(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function DT(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function OT(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=Rx(),a=Array.isArray(t)?t:[t],o=await Pw(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new lw({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new vw(f),m=e.webmcp===!1?void 0:CT(p),h,g=!1;async function _(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Ux(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let ee={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},v=DT(e.transport??`auto`,s),te=v===`static`?await sT({fetchJsonFromBases:_}):v===`sse`?Zw({...ee,sseOptions:e.sseOptions}):hT({...ee,wsOptions:e.wsOptions}),ne;try{ne=new BroadcastChannel(`devframe-auth`)}catch{}let re,ie=!1;function ae(e){return((...t)=>ie||!re?e(...t):re.then(()=>e(...t)))}function oe(){g=!0;try{h?.(),m?.()}finally{try{ne?.close()}finally{te.close?.()}}}let se={events:i,get isTrusted(){return te.isTrusted},get status(){return te.status},get connectionError(){return te.connectionError},get transport(){return te.transport??v},get connection(){return o},connectionMeta:s,ensureTrusted:te.ensureTrusted,requestTrust:te.requestTrust,requestTrustWithToken:async e=>(Aw(e),o={...o,authToken:e},te.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await te.requestTrustWithCode(e);if(!t)return!1;Aw(t),o={...o,authToken:t};try{ne?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>te.requestAuthCode(e),call:ae(te.call),callEvent:ae(te.callEvent),callOptional:ae(te.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:oe};se.sharedState=Vw(se),se.streaming=uT(se),se.services=Bw(se);let ce=new Map;se.scope=(e=>{if(!e)return se;let t=ce.get(e);return t||(t=xT(se,e),ce.set(e,t)),t}),f.rpc=se;function le(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ue(){if(e.simpleAuth!==!1&&le()&&typeof globalThis.prompt==`function`)for(await se.requestAuthCode().catch(()=>{});!se.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await se.requestTrustWithCode(t))return}}async function de(){let t=await te.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await zw(se,{param:n}):!1;t||r||se.isTrusted||await ue()}return re=de().then(()=>{ie=!0},()=>{ie=!0}),s.mcp&&tw(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-BXhoSh1z-DlWvzvAg.js`);return{setupBrowserAgentRpcBridge:e}},[],import.meta.url).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(se))}).catch(()=>{}),ne&&(ne.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&se.requestTrustWithToken(e.data.authToken)}),se}var kT=OT,AT=[`components`,`injectors`,`signals`,`ngrx`,`forms`,`router`,`pipes`,`http`,`analog`],jT=[`forms`,`router`,`ngrx`,`http`,`analog`],MT={refreshMs:{default:3e3,min:500,max:8e3},navigations:{default:50,min:5,max:500},formTimeline:{default:200,min:10,max:2e3},httpCalls:{default:200,min:10,max:2e3},changeLog:{default:200,min:10,max:2e3},cdCycles:{default:200,min:10,max:2e3}},NT={"opted-out":`the request sets transferCache: false`,post:`POST requests are left out unless includePostRequests is set`,method:`only GET, HEAD and POST requests are cached`,"auth-headers":`it sends an Authorization, Proxy-Authorization or Cookie header`,credentials:`it sends credentials (withCredentials or credentials: include/same-origin)`,"no-cache-request":`the request asks for no-store, no-cache or private`,"no-cache-response":`the response has Cache-Control no-store, no-cache or private`,"set-cookie":`the response sets a cookie`,error:`failed responses are not stored`,mocked:`a fault rule answered before the transfer cache ran`,"cache-off-or-filter":`the transfer cache is off, or its filter (or another withHttpTransferCacheOptions setting) left it out`},PT=[[200,`OK`],[201,`Created`],[202,`Accepted`],[203,`Non-Authoritative Information`],[204,`No Content`],[205,`Reset Content`],[206,`Partial Content`],[207,`Multi-Status`],[208,`Already Reported`],[226,`IM Used`],[300,`Multiple Choices`],[301,`Moved Permanently`],[302,`Found`],[303,`See Other`],[304,`Not Modified`],[307,`Temporary Redirect`],[308,`Permanent Redirect`],[400,`Bad Request`],[401,`Unauthorized`],[402,`Payment Required`],[403,`Forbidden`],[404,`Not Found`],[405,`Method Not Allowed`],[406,`Not Acceptable`],[407,`Proxy Authentication Required`],[408,`Request Timeout`],[409,`Conflict`],[410,`Gone`],[411,`Length Required`],[412,`Precondition Failed`],[413,`Content Too Large`],[414,`URI Too Long`],[415,`Unsupported Media Type`],[416,`Range Not Satisfiable`],[417,`Expectation Failed`],[418,`I'm a Teapot`],[421,`Misdirected Request`],[422,`Unprocessable Content`],[423,`Locked`],[424,`Failed Dependency`],[425,`Too Early`],[426,`Upgrade Required`],[428,`Precondition Required`],[429,`Too Many Requests`],[431,`Request Header Fields Too Large`],[451,`Unavailable For Legal Reasons`],[499,`Client Closed Request`],[500,`Internal Server Error`],[501,`Not Implemented`],[502,`Bad Gateway`],[503,`Service Unavailable`],[504,`Gateway Timeout`],[505,`HTTP Version Not Supported`],[506,`Variant Also Negotiates`],[507,`Insufficient Storage`],[508,`Loop Detected`],[510,`Not Extended`],[511,`Network Authentication Required`],[520,`Web Server Returned an Unknown Error`],[521,`Web Server Is Down`],[522,`Connection Timed Out`],[523,`Origin Is Unreachable`],[524,`A Timeout Occurred`]];function FT(e){return PT.some(([t])=>t===e)}var IT=`pangular`;function LT(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function RT(e,t){return typeof e==`boolean`?e:t}var zT=100,BT=100;function VT(e){if(!Array.isArray(e))return[];let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e&&e.length<=BT);return[...new Set(t)].slice(0,zT)}function HT(e,t){let{default:n,min:r,max:i}=MT[t];return typeof e!=`number`||!Number.isFinite(e)?n:Math.min(i,Math.max(r,Math.round(e)))}function UT(e,t){return Object.fromEntries(e.map(e=>[e,t(e)]))}function WT(e){let t=LT(e),n=LT(t.agent),r=LT(t.inspectors),i=LT(n.tools),a=LT(t.actions),o=RT(t.actions,!0),s=LT(t.redaction),c=LT(t.limits),l=UT(AT,e=>RT(r[e],!0));return{inspectors:l,agent:{readOnly:RT(n.readOnly,!1),tools:UT(AT,e=>l[e]&&RT(i[e],!0))},actions:UT(jT,e=>l[e]&&RT(a[e],o)),redaction:{secretNames:VT(s.secretNames),unmask:VT(s.unmask)},limits:Object.fromEntries(Object.keys(MT).map(e=>[e,HT(c[e],e)]))}}function GT(e){let t=e?.configs;return WT(t?.[IT])}function KT(e){return`${{forms:`Writing to forms`,router:`Navigating`,ngrx:`Restoring NgRx state and dispatching actions`,http:`Changing HTTP mock rules and clearing HTTP calls`,analog:`Calling API routes`}[e]} is turned off in the devtools config (actions.${e}).`}var qT={components:`Components`,injectors:`Injectors`,signals:`Signals`,ngrx:`NgRx`,forms:`Forms`,router:`Router`,pipes:`Pipes`,http:`HTTP`,analog:`Analog`},JT={forms:`Form writes`,router:`Navigation`,ngrx:`NgRx restore and dispatch`,http:`HTTP mocking`,analog:`Analog API calls`},YT={refreshMs:e=>`poll every ${e} ms`,navigations:e=>`${e} navigations`,formTimeline:e=>`${e} form events`,httpCalls:e=>`${e} HTTP calls`,changeLog:e=>`${e} NgRx changes`,cdCycles:e=>`${e} change detection cycles`};function XT(e){let t=[],n=(e,n)=>{n.length&&t.push({label:e,value:n.join(`, `)})},r=AT.filter(t=>e.inspectors[t]);return n(`Inspectors off`,AT.filter(t=>!e.inspectors[t]).map(e=>qT[e])),n(`Agent`,e.agent.readOnly?[`Read-only`]:[]),n(`Hidden from the agent`,r.filter(t=>!e.agent.tools[t]).map(e=>qT[e])),n(`Blocked actions`,jT.filter(t=>e.inspectors[t]&&!e.actions[t]).map(e=>JT[e])),n(`Extra secret names`,e.redaction.secretNames),n(`Unmasked names`,e.redaction.unmask),n(`Limits`,Object.keys(MT).filter(t=>e.limits[t]!==MT[t].default).map(t=>YT[t](e.limits[t]))),t}var ZT=`pangular-page-id`,QT=null;function $T(e){QT=e}function eE(){if(QT)return QT;try{return new URLSearchParams(location.search).get(`pageId`)||(window.top===window?null:sessionStorage.getItem(ZT)||null)}catch{return null}}function tE(e,t){if(t.chosen&&e[t.chosen])return t.chosen;if(t.host)return t.host;if(t.previous&&e[t.previous])return t.previous;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n?.pageId??null}function nE(e,t){return e?t?e.pages?.[t]??null:e:null}function rE(e,t){return e?t?e.pages?.[t]??null:e.graph??null:null}function iE(e,t,n){return e?e.scope(`pangular`).rpc.call(t,...n===void 0?[]:[n]):Promise.resolve(null)}function aE(e,t,n){return iE(e,t,n).then(e=>e,()=>null)}function oE(e){return e?.connectionMeta.backend===`static`}function sE(e){let t=()=>{let t=e()?.scope(`pangular`).rpc;t&&(t.callEvent(`request-page-highlight`,null),t.callEvent(`request-form-highlight`,null))};return addEventListener(`pagehide`,t),()=>{removeEventListener(`pagehide`,t),t()}}function cE(e){return e.split(`@`)[1]??``}var lE={signal:`Signal Forms`,reactive:`Reactive`,template:`Template-driven`},uE={own:`validator`,directive:`template attribute`,tree:`cross-field rule`,async:`async`,parse:`parse`,submission:`server`,schema:`schema`,manual:`setErrors`},dE=aE,fE={key:`name looks secret`,"input-type":`password input`,autocomplete:`autocomplete is a secret kind`,marker:`marked as mask`,parent:`inside a secret group`,config:`listed in mask`};function pE(e){return fE[e]??e}var mE=`https://pangular-inspector.dev/security/#opt-fields-in-or-out`;async function hE(e,t){return await dE(e,`request-form-action`,t)??{ok:!1,error:`The devtools server did not answer.`}}function gE(e){return`${e.ok?e.message??`Done.`:e.error??`Failed.`}${e.skipped?.length?` Skipped: ${e.skipped.map(e=>`${e.path} (${e.reason})`).join(`, `)}.`:``}${e.status?` Status: ${e.status}.`:``}`}var _E=/"(?:[^"\\\n]|\\.)*"|`([^`\n]*)`|\*\*/g;function vE(e){return(e??``).replace(/^_Labels, paths.*_\n\n/,``).replace(_E,(e,t)=>t??(e===`**`?``:e))}function yE(e){return GT(e?.connectionMeta)}function bE(e,t){return yE(e).actions[t]}var xE={components:`components`,routes:`router`,signals:`signals`,injectors:`injectors`,store:`ngrx`,forms:`forms`,pipes:`pipes`,network:`http`,analog:`analog`};function SE(e,t){let n=xE[e];return!n||t.inspectors[n]}function CE(e,t){e&1&&(A(),Fg(0,`rect`,3)(1,`rect`,4)(2,`rect`,5)(3,`rect`,6))}function wE(e,t){e&1&&(A(),Fg(0,`path`,7)(1,`path`,8)(2,`path`,9))}function TE(e,t){e&1&&(A(),Fg(0,`circle`,10)(1,`path`,11)(2,`circle`,12))}function EE(e,t){e&1&&(A(),Fg(0,`path`,1))}function DE(e,t){e&1&&(A(),Fg(0,`path`,13)(1,`path`,14)(2,`path`,15)(3,`path`,16))}function OE(e,t){e&1&&(A(),Fg(0,`ellipse`,17)(1,`path`,18)(2,`path`,19))}function kE(e,t){e&1&&(A(),Fg(0,`rect`,20)(1,`path`,21)(2,`path`,22)(3,`path`,23))}function AE(e,t){e&1&&(A(),Fg(0,`circle`,24)(1,`path`,25)(2,`path`,26))}function jE(e,t){e&1&&(A(),Fg(0,`path`,27)(1,`path`,28)(2,`path`,29)(3,`path`,30)(4,`circle`,31))}function ME(e,t){e&1&&(A(),Fg(0,`path`,2))}var NE=class e{name=$.required();static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-tab-icon`]],inputs:{name:[1,`name`]},decls:11,vars:1,consts:[[`viewBox`,`0 0 24 24`,`width`,`16`,`height`,`16`,`fill`,`none`,`stroke`,`currentColor`,`stroke-width`,`1.8`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`,`aria-hidden`,`true`],[`d`,`M22 12h-4l-3 9L9 3l-3 9H2`],[`d`,`m8 3 4 8 5-5 5 15H2L8 3z`],[`x`,`3`,`y`,`3`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`14`,`y`,`3`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`x`,`14`,`y`,`12`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`3`,`y`,`16`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`d`,`M12 2 3 7l9 5 9-5-9-5Z`],[`d`,`m3 12 9 5 9-5`],[`d`,`m3 17 9 5 9-5`],[`cx`,`6`,`cy`,`19`,`r`,`3`],[`d`,`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`],[`cx`,`18`,`cy`,`5`,`r`,`3`],[`d`,`M12 22v-5`],[`d`,`M9 8V2`],[`d`,`M15 8V2`],[`d`,`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`],[`cx`,`12`,`cy`,`5`,`rx`,`9`,`ry`,`3`],[`d`,`M3 5v14a9 3 0 0 0 18 0V5`],[`d`,`M3 12a9 3 0 0 0 18 0`],[`x`,`3`,`y`,`4`,`width`,`18`,`height`,`16`,`rx`,`2`],[`d`,`M7 9h10`],[`d`,`M7 13h6`],[`d`,`M7 17h8`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M3 12h18`],[`d`,`M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18Z`],[`d`,`M4 7h10`],[`d`,`M4 17h6`],[`d`,`m14 13 4 4-4 4`],[`d`,`M10 17h8`],[`cx`,`18`,`cy`,`7`,`r`,`3`]],template:function(e,t){if(e&1&&(A(),H(0,`svg`,0),P(1,CE,4,0)(2,wE,3,0)(3,TE,3,0)(4,EE,1,0,`:svg:path`,1)(5,DE,4,0)(6,OE,3,0)(7,kE,4,0)(8,AE,3,0)(9,jE,5,0)(10,ME,1,0,`:svg:path`,2),U()),e&2){let e;M(),F((e=t.name())===`dashboard`?1:e===`components`?2:e===`routes`?3:e===`signals`?4:e===`injectors`?5:e===`store`?6:e===`forms`?7:e===`network`?8:e===`pipes`?9:e===`analog`?10:-1)}},styles:[`[_nghost-%COMP%] { display: inline-flex; flex-shrink: 0; }`]})},PE=(e,t)=>t.tab,FE=(e,t)=>t.label;function IE(e,t){e&1&&J(0),e&2&&X(` `,K().meta()?.projectName,` `)}function LE(e,t){e&1&&J(0,` Project details unavailable `)}function RE(e,t){e&1&&J(0,` Loading… `)}function zE(e,t){e&1&&(J(0,` Run `),z(1,`code`),J(2,`pangular build`),B(),J(3,` again to rebuild the report. `))}function BE(e,t){e&1&&J(0,` Check that the dev server is running, then reload the panel. `)}function VE(e,t){if(e&1&&(z(0,`p`,4),P(1,zE,4,0)(2,BE,1,0),B()),e&2){let e=K();M(),F(e.staticReport()?1:2)}}function HE(e,t){e&1&&(z(0,`li`,6)(1,`span`),J(2,`Analog`),B(),J(3),B()),e&2&&(M(3),Y(t))}function UE(e,t){e&1&&(z(0,`li`)(1,`span`),J(2,`Change detection`),B(),J(3),B()),e&2&&(M(3),Y(t))}function WE(e,t){if(e&1&&(z(0,`span`,17),J(1),B(),z(2,`span`,18),J(3),B()),e&2){let e=K().$implicit,t=K();M(),Y(t.cards()[e.tab]?.value),M(2),Y(t.cards()[e.tab]?.sub)}}function GE(e,t){e&1&&(z(0,`span`,19),J(1,`–`),B(),z(2,`span`,18),J(3,`Count unavailable`),B())}function KE(e,t){e&1&&(V(0,`span`,20),z(1,`span`,18),J(2,`Counting…`),B())}function qE(e,t){if(e&1){let e=W();z(0,`button`,11),G(`click`,function(){let t=O(e).$implicit;return k(K().navigate.emit(t.tab))}),z(1,`span`,12)(2,`span`,13),V(3,`app-tab-icon`,14),B(),z(4,`span`,15),J(5,`→`),B()(),z(6,`span`,16),J(7),B(),P(8,WE,4,2)(9,GE,4,0)(10,KE,3,0),B()}if(e&2){let e,n=t.$implicit,r=t.$index,i=K().stateOf(n.tab);C_(`animation-delay`,60*r,`ms`),N(`aria-busy`,i===`loading`),M(3),R(`name`,n.tab),M(4),Y(n.label),M(),F((e=i)===`ready`?8:e===`error`?9:10)}}function JE(e,t){e&1&&(z(0,`p`),J(1,`Loading…`),B())}function YE(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2),B(),z(3,`dd`),J(4),B()()),e&2){let e=t.$implicit;M(2),Y(e.label),M(2),Y(e.value)}}function XE(e,t){if(e&1&&(z(0,`dl`),I(1,YE,5,2,`div`,null,FE),B()),e&2){let e=K();M(),L(e.configItems())}}function ZE(e,t){e&1&&(z(0,`p`),J(1,`Defaults`),B())}var QE=[{tab:`components`,label:`Components`},{tab:`routes`,label:`Routes`},{tab:`signals`,label:`Signals`},{tab:`injectors`,label:`Injectors`},{tab:`store`,label:`NgRx declarations`},{tab:`pipes`,label:`Pipes`},{tab:`forms`,label:`Forms`},{tab:`network`,label:`SSR & HTTP`}];function $E(e){return QE.filter(t=>SE(t.tab,e))}var eD={zoneless:`Zoneless`,zone:`zone.js`,"zone-unused":`Zoneless, zone.js loaded`};function tD(e){return e&&Object.hasOwn(eD,e)?eD[e]:null}var nD=new Set([`signal`,`computed`,`linkedSignal`,`effect`]),rD={action:[`action`,`actions`],reducer:[`reducer`,`reducers`],effect:[`effect`,`effects`],selector:[`selector`,`selectors`],feature:[`feature`,`features`],"store-setup":[`setup call`,`setup calls`],"signal-store":[`signal store`,`signal stores`],"signal-state":[`signal state`,`signal states`],"signal-method":[`signal method`,`signal methods`]};function iD(e,t,n){return`${e} ${e===1?t:n}`}function aD(e,t){for(let n of e??[])t(n),aD(n.children,t)}function oD(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`discovered in source`};let t=e.filter(e=>e.kind===`directive`).length;return{value:e.length-t,sub:`components · ${iD(t,`directive`,`directives`)}`}}function sD(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`route entries in source`};let t=e.filter(e=>e.kind===`redirect`).length;return{value:new Set(e.filter(e=>e.kind===`page`).map(e=>e.fullPath??e.path??``)).size,sub:`navigable paths · ${iD(t,`redirect`,`redirects`)}`}}function cD(e){let t=new Map;for(let n of e)n.kind&&t.set(n.kind,(t.get(n.kind)??0)+1);if(!t.size)return{value:e.length,sub:`declarations in source`};let n=[...t].sort((e,t)=>t[1]-e[1]).map(([e,t])=>{let[n,r]=rD[e]??[e,e];return iD(t,n,r)});return{value:e.length,sub:n.join(` · `)}}function lD(e,t){let n=e?.forms??[],r=t?n.filter(e=>cE(e.id)===t):n;if(!r.length)return{value:0,sub:`no forms on the page yet`};let i=r.filter(e=>e.root?.status===`INVALID`).length;return{value:r.length,sub:`${r.length===1?`form`:`forms`} · ${i} invalid`}}function uD(e){return e.cancelled||e.status===void 0?!1:e.status===0||e.status>=400}function dD(e,t){let n=e?.pages??[],r=t?n.find(e=>e.pageId===t)??null:n.reduce((e,t)=>!e||t.reportedAt>e.reportedAt?t:e,null),i=t&&!r?[]:e?.serverCalls??[],a=r?.initialUrl,o=[...a?i.filter(e=>!e.pageUrl||e.pageUrl===a):i,...r?.calls??[]];if(!o.length)return{value:0,sub:`no calls recorded yet`};let s=o.filter(uD).length;return{value:o.length,sub:`${o.length===1?`call`:`calls`} · ${s} failed`}}var fD=class e{rpc=$(null);navigate=Ov();staticReport=Q(()=>oE(this.rpc()));meta=j(null);config=Q(()=>yE(this.rpc()));stats=Q(()=>this.rpc()?$E(this.config()):[]);configItems=Q(()=>XT(this.config()));metaState=j(`loading`);states=j({});rows=j({});injectorTree=j(null);signalGraph=j(null);formsState=j(null);httpState=j(null);pageId=eE();destroyRef=E(Cs);stopLive=[];zone=Q(()=>tD(nE(this.injectorTree(),this.pageId)?.zone));liveInjectors=Q(()=>{let e=nE(this.injectorTree(),this.pageId);if(!e?.roots?.length)return null;let t=0,n=0,r=e=>{t++,n+=e.providers?.length??0};return aD(e.roots,r),aD(e.environment,r),{injectors:t,providers:n}});liveSignals=Q(()=>{let e=rE(this.signalGraph(),this.pageId);return e?.nodes?.length?e.nodes.filter(e=>nD.has(e.kind??``)).length:null});cards=Q(()=>{let e=this.rows(),t={};if(e.components&&(t.components=oD(e.components)),e.routes&&(t.routes=sD(e.routes)),e.store&&(t.store=cD(e.store)),e.pipes){let n=e.pipes.filter(e=>e.builtin).length;t.pipes={value:e.pipes.length-n,sub:n?`custom pipes · ${n} built-in in use`:`custom pipes in source`}}let n=this.liveSignals();n===null?e.signals&&(t.signals={value:e.signals.length,sub:`signal declarations in source`}):t.signals={value:n,sub:e.signals?`live on the page · ${e.signals.length} declared in source`:`live on the page`};let r=this.liveInjectors();r?t.injectors={value:r.injectors,sub:`live injectors · ${iD(r.providers,`provider`,`providers`)}`}:e.injectors&&(t.injectors={value:e.injectors.filter(e=>e.type!==`injection`).length,sub:`provider declarations in source`});let i=this.formsState();i&&(t.forms=lD(i,this.pageId));let a=this.httpState();return a&&(t.network=dD(a,this.pageId)),t});constructor(){uc(()=>{let e=this.rpc();if(!e)return;let t=e.scope(`pangular`);this.metaState.set(`loading`),this.states.set({}),this.rows.set({}),this.formsState.set(null),this.httpState.set(null),t.rpc.call(`build-meta`).then(e=>{this.meta.set(e),this.metaState.set(`ready`)}).catch(()=>this.metaState.set(`error`));let n=yE(e),r=e=>SE(e,n);r(`components`)&&this.load(t.rpc.call(`get-components`),`components`),r(`routes`)&&this.load(t.rpc.call(`get-routes`),`routes`),r(`signals`)&&this.load(t.rpc.call(`get-signals`),`signals`),r(`injectors`)&&this.load(t.rpc.call(`get-providers`),`injectors`),r(`store`)&&this.load(t.rpc.call(`get-ngrx-store`),`store`),r(`pipes`)&&this.load(t.rpc.call(`get-pipes`),`pipes`),this.watchLive(e,n)}),this.destroyRef.onDestroy(()=>this.unwatch())}stateOf(e){return(e===`signals`?this.liveSignals():e===`injectors`?this.liveInjectors():null)===null?this.states()[e]??`loading`:`ready`}load(e,t){let n=e=>this.states.update(n=>({...n,[t]:e}));e.then(e=>{this.rows.update(n=>({...n,[t]:Array.isArray(e)?e:[]})),n(`ready`)}).catch(()=>n(`error`))}async watchLive(e,t){this.unwatch();let n=e.scope(`pangular`).rpc,r=async(t,r,i)=>{let a=e=>i&&this.states.update(t=>({...t,[i]:e}));try{let i=await n.sharedState(t);if(this.destroyRef.destroyed||this.rpc()!==e)return;r(i.value()),a(`ready`),this.stopLive.push(i.on(`updated`,e=>r(e)))}catch{if(this.destroyRef.destroyed||this.rpc()!==e)return;r(null),a(`error`)}};await Promise.all([t.inspectors.injectors&&r(`injector-tree`,e=>this.injectorTree.set(e)),t.inspectors.signals&&r(`signal-graph`,e=>this.signalGraph.set(e)),SE(`forms`,t)&&r(`forms`,e=>this.formsState.set(e??{}),`forms`),SE(`network`,t)&&r(`http`,e=>this.httpState.set(e??{}),`network`)])}unwatch(){for(let e of this.stopLive.splice(0))e()}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-dashboard`]],inputs:{rpc:[1,`rpc`]},outputs:{navigate:`navigate`},decls:33,vars:14,consts:[[`aria-labelledby`,`project-title`,1,`project`],[1,`project-head`],[1,`eyebrow`],[`id`,`project-title`],[1,`hint`],[1,`chips`],[1,`analog`],[1,`grid`],[`type`,`button`,1,`stat`,3,`animation-delay`],[`aria-labelledby`,`config-title`,1,`config`],[`id`,`config-title`],[`type`,`button`,1,`stat`,3,`click`],[1,`top`],[1,`icon`],[3,`name`],[`aria-hidden`,`true`,1,`go`],[1,`label`],[1,`big`],[1,`sub`],[1,`big`,`muted`],[`aria-hidden`,`true`,1,`big`,`skeleton`]],template:function(e,t){if(e&1&&(z(0,`section`,0)(1,`div`,1)(2,`p`,2),J(3,`Project`),B(),z(4,`h2`,3),P(5,IE,1,1)(6,LE,1,0)(7,RE,1,0),B(),P(8,VE,3,1,`p`,4),B(),z(9,`ul`,5)(10,`li`)(11,`span`),J(12,`Angular`),B(),J(13),B(),z(14,`li`)(15,`span`),J(16,`TypeScript`),B(),J(17),B(),z(18,`li`)(19,`span`),J(20,`SSR`),B(),J(21),B(),P(22,HE,4,1,`li`,6),P(23,UE,4,1,`li`),B()(),z(24,`div`,7),I(25,qE,11,6,`button`,8,PE),B(),z(27,`section`,9)(28,`h2`,10),J(29,`Configuration`),B(),P(30,JE,2,0,`p`)(31,XE,3,0,`dl`)(32,ZE,2,0,`p`),B()),e&2){let e,n,r;N(`aria-busy`,t.metaState()===`loading`),M(4),q(`muted`,t.metaState()!==`ready`),M(),F((e=t.metaState())===`ready`?5:e===`error`?6:7),M(3),F(t.metaState()===`error`?8:-1),M(),q(`pending`,t.metaState()===`loading`),M(4),Y(t.meta()?.angularVersion??`…`),M(4),Y(t.meta()?.typescript??`…`),M(4),Y(t.meta()?t.meta()?.ssr?`On`:`Off`:`…`),M(),F((n=t.meta()?.analog)?22:-1,n),M(),F((r=t.zone())?23:-1,r),M(2),L(t.stats()),M(2),N(`aria-busy`,!t.rpc()),M(3),F(t.rpc()?t.configItems().length?31:32:30)}},dependencies:[NE],styles:[`[_nghost-%COMP%] { @@ -9564,7 +9564,7 @@ code[_ngcontent-%COMP%] { .divider[_ngcontent-%COMP%] { display: none; } -}`]})},tB=(e,t)=>t.file+t.name,nB=(e,t)=>t.file+`:`+t.line,rB=(e,t)=>t.name;function iB(e,t){e&1&&(z(0,`p`,13),A(),z(1,`svg`,26),V(2,`circle`,27)(3,`path`,28),B(),ps(),z(4,`span`),J(5),B()()),e&2&&(M(5),Y(t))}function aB(e,t){if(e&1&&(z(0,`p`,13),A(),z(1,`svg`,26),V(2,`circle`,27)(3,`path`,28),B(),ps(),z(4,`span`)(5,`strong`),J(6),B(),J(7,` Pipe prototypes are patched in the inspected page to count calls and keep the last input and output. Stop recording when you are done. `),B()()),e&2){let e=K();M(6),X(`Recording on `,e.instrumentedPages().length,` page(s).`)}}function oB(e,t){e&1&&(z(0,`div`,14),V(1,`span`,29),z(2,`p`,30),J(3,`Scanning pipes…`),B()())}function sB(e,t){if(e&1){let e=W();z(0,`div`,15)(1,`p`,30),J(2,`Couldn't load pipes`),B(),z(3,`p`,31),J(4,`The devtools server did not answer. Check that it is running.`),B(),z(5,`button`,32),G(`click`,function(){return O(e),k(K().refresh())}),J(6,`Try again`),B()()}}function cB(e,t){e&1&&(z(0,`div`,16)(1,`p`,30),J(2,`No pipes found`),B(),z(3,`p`,31),J(4,` No @Pipe classes were found in the source, and no template uses a built-in pipe yet. `),B()())}function lB(e,t){e&1&&(z(0,`span`,43),J(1,`stale?`),B())}function uB(e,t){if(e&1&&(z(0,`span`,44),J(1),B()),e&2){K();let e=iv(0);M(),X(``,e.instanceCount,` live`)}}function dB(e,t){e&1&&(z(0,`span`,45),J(1,`built-in`),B())}function fB(e,t){e&1&&(z(0,`span`,45),J(1,`NgModule`),B())}function pB(e,t){if(e&1&&(z(0,`span`,47),J(1),B()),e&2){let e=K().$implicit;M(),X(`+`,(e.usageCount??1)-1,` more`)}}function mB(e,t){if(e&1){let e=W();nv(0),z(1,`li`)(2,`button`,38),G(`click`,function(){let t=O(e).$implicit;return k(K(3).select(t))})(`mouseenter`,function(){O(e);let t=iv(0);return k(K(3).highlightPipe(t))})(`mouseleave`,function(){return O(e),k(K(3).highlight(null))})(`focus`,function(){O(e);let t=iv(0);return k(K(3).highlightPipe(t))})(`blur`,function(){return O(e),k(K(3).highlight(null))}),z(3,`span`,39)(4,`span`,40),J(5),B(),z(6,`span`,41),J(7),B()(),z(8,`span`,42),P(9,lB,2,0,`span`,43),P(10,uB,2,1,`span`,44),P(11,dB,2,0,`span`,45),P(12,fB,2,0,`span`,45),z(13,`span`,45),J(14),B()(),z(15,`span`,46),J(16),P(17,pB,2,1,`span`,47),B()()()}if(e&2){let e=t.$implicit,n=K(3),r=rv(n.liveFor(e.name));M(2),q(`selected`,n.isSelected(e)),N(`aria-current`,n.isSelected(e)||null),M(3),Y(e.name),M(2),Y(e.className),M(2),F(r?.stale?9:-1),M(),F(r?10:-1),M(),F(e.builtin?11:-1),M(),F(e.isStandalone?-1:12),M(),q(`impure`,!e.isPure),M(),Y(e.isPure?`pure`:`impure`),M(2),Z(` `,e.file,`:`,e.line,` `),M(),F(e.builtin&&(e.usageCount??0)>1?17:-1)}}function hB(e,t){if(e&1){let e=W();z(0,`ul`,37),G(`keydown`,function(t){return O(e),k(K(2).onListKey(t))}),I(1,mB,18,16,`li`,null,tB),B()}if(e&2){let e=K(2);M(),L(e.filtered())}}function gB(e,t){e&1&&J(0),e&2&&X(` Nothing matches “`,K(3).filter().trim(),`” in this view. `)}function _B(e,t){e&1&&J(0,` None of the pipes fit this filter. `)}function vB(e,t){if(e&1){let e=W();z(0,`div`,35)(1,`p`,30),J(2,`No pipes match`),B(),z(3,`p`,31),P(4,gB,1,1)(5,_B,1,0),B(),z(6,`button`,32),G(`click`,function(){return O(e),k(K(2).clearFilters())}),J(7,`Clear filters`),B()()}if(e&2){let e=K(2);M(4),F(e.filter().trim()?4:5)}}function yB(e,t){e&1&&(z(0,`span`,45),J(1,`built-in`),B())}function bB(e,t){if(e&1&&(z(0,`dt`),J(1,`File`),B(),z(2,`dd`,51),J(3),B()),e&2){let e=K();M(3),Z(``,e.file,`:`,e.line)}}function xB(e,t){if(e&1&&(z(0,`li`,51),J(1),B()),e&2){let e=t.$implicit;M(),Z(``,e.file,`:`,e.line)}}function SB(e,t){if(e&1&&(z(0,`div`,50)(1,`h3`),J(2,` Used in templates `),z(3,`span`,21),J(4),B()(),z(5,`ul`,53),I(6,xB,2,2,`li`,51,nB),B()()),e&2){let e=K();M(4),Y(e.usageCount),M(2),L(e.usages)}}function CB(e,t){e&1&&(z(0,`p`,54)(1,`span`,43),J(2,`experimental`),B(),J(3,` This pure pipe got an argument whose contents changed while its reference stayed the same, so it may be showing a stale value. `),B())}function wB(e,t){if(e&1){let e=W();z(0,`button`,59),G(`click`,function(){let t=O(e);return k(K(5).highlight(t,!0))})(`mouseenter`,function(){let t=O(e);return k(K(5).highlight(t))})(`mouseleave`,function(){return O(e),k(K(5).highlight(null))})(`focus`,function(){let t=O(e);return k(K(5).highlight(t))})(`blur`,function(){return O(e),k(K(5).highlight(null))}),z(1,`span`,51),J(2),B(),z(3,`span`,60),J(4),B()()}if(e&2){let e=K().$implicit;N(`aria-label`,`Highlight `+e.name+` on the page`),M(2),Y(e.name),M(2),Y(e.count)}}function TB(e,t){if(e&1&&(z(0,`span`,58)(1,`span`,51),J(2),B(),z(3,`span`,60),J(4),B()()),e&2){let e=K().$implicit;M(2),Y(e.name),M(2),Y(e.count)}}function EB(e,t){if(e&1&&(z(0,`li`),P(1,wB,5,3,`button`,57)(2,TB,5,2,`span`,58),B()),e&2){let e,n=t.$implicit;M(),F((e=n.targets?.[0])?1:2,e)}}function DB(e,t){if(e&1&&(z(0,`li`,61),J(1),z(2,`span`,62),J(3),B()()),e&2){let e=t.$implicit,n=K(6);M(),Z(` `,n.describe(e.lastArgs),` → `,n.describe(e.lastResult),` `),M(2),X(``,e.callCount,`×`)}}function OB(e,t){if(e&1&&(z(0,`dt`),J(1,`Per instance`),B(),z(2,`dd`)(3,`ul`,53),I(4,DB,4,3,`li`,61,Cg),B()()),e&2){let e=K();M(4),L(e.instances)}}function kB(e,t){if(e&1&&(z(0,`dt`),J(1,`Last caller`),B(),z(2,`dd`,61),J(3),B()),e&2){let e=K();M(3),Y(e.lastCaller)}}function AB(e,t){if(e&1&&(z(0,`dt`),J(1,`Calls`),B(),z(2,`dd`),J(3),B(),z(4,`dt`),J(5,`Last input`),B(),z(6,`dd`,61),J(7),B(),z(8,`dt`),J(9,`Last output`),B(),z(10,`dd`,61),J(11),B(),P(12,OB,6,0),P(13,kB,4,1)),e&2){let e=t,n=K(4);M(3),Y(e.callCount),M(4),Y(n.describe(e.lastArgs)),M(4),Y(n.describe(e.lastResult)),M(),F(e.instances?.length?12:-1),M(),F(e.lastCaller?13:-1)}}function jB(e,t){e&1&&(z(0,`dt`),J(1,`Calls`),B(),z(2,`dd`,63),J(3,`None recorded yet.`),B())}function MB(e,t){e&1&&(z(0,`p`,56),J(1,`Turn on “Record calls” to see call counts and values.`),B())}function NB(e,t){if(e&1&&(P(0,CB,4,0,`p`,54),z(1,`dl`)(2,`dt`),J(3,`Instances`),B(),z(4,`dd`),J(5),B(),z(6,`dt`),J(7,`Used by`),B(),z(8,`dd`)(9,`ul`,55),I(10,EB,3,1,`li`,null,rB),B()(),P(12,AB,14,5)(13,jB,4,0),B(),P(14,MB,2,0,`p`,56)),e&2){let e,n=t,r=K(3);F(n.stale?0:-1),M(5),Y(n.instanceCount),M(5),L(n.components),M(2),F((e=n.call)?12:r.instrumenting()?13:-1,e),M(2),F(!n.call&&!r.instrumenting()?14:-1)}}function PB(e,t){e&1&&(z(0,`p`,52),J(1,` Not in use on the connected page. Open a view that uses it, or connect the app. `),B())}function FB(e,t){if(e&1&&(z(0,`header`,48)(1,`h2`,49),J(2),B(),z(3,`span`,45),J(4),B(),P(5,yB,2,0,`span`,45),B(),z(6,`div`,50)(7,`h3`),J(8,`Declaration`),B(),z(9,`dl`)(10,`dt`),J(11,`Class`),B(),z(12,`dd`,51),J(13),B(),z(14,`dt`),J(15,`Source`),B(),z(16,`dd`),J(17),B(),P(18,bB,4,2),z(19,`dt`),J(20,`Standalone`),B(),z(21,`dd`),J(22),B(),z(23,`dt`),J(24,`Pure`),B(),z(25,`dd`),J(26),B()()(),P(27,SB,8,1,`div`,50),z(28,`div`,50)(29,`h3`),J(30,`Live on the page`),B(),P(31,NB,15,4)(32,PB,2,0,`p`,52),B()),e&2){let e,n=t,r=K(2);M(2),Y(n.name),M(),q(`impure`,!n.isPure),M(),Y(n.isPure?`pure`:`impure`),M(),F(n.builtin?5:-1),M(8),Y(n.className),M(4),Y(n.builtin?`@angular/common`:`This project`),M(),F(n.builtin?-1:18),M(4),Y(n.isStandalone?`Yes`:`No, declared in an NgModule`),M(4),X(` `,n.isPure?`Yes, reruns only when an input changes`:`No, reruns on every check`,` `),M(),F(n.builtin&&n.usages?.length?27:-1),M(4),F((e=r.liveFor(n.name))?31:32,e)}}function IB(e,t){e&1&&(z(0,`h2`,64),J(1,`Pipe details`),B(),z(2,`div`,65)(3,`p`,30),J(4,`Pick a pipe`),B(),z(5,`p`,31),J(6,` See where it is declared, which components use it and what it last returned. `),B()())}function LB(e,t){if(e&1&&(z(0,`div`,17)(1,`div`,33),P(2,hB,3,0,`ul`,34)(3,vB,8,1,`div`,35),B(),z(4,`section`,36),P(5,FB,33,12)(6,IB,7,0),B()()),e&2){let e,t=K();M(2),F(t.filtered().length?2:3),M(3),F((e=t.selected())?5:6,e)}}function RB(e,t){if(e&1){let e=W();z(0,`button`,73),G(`click`,function(){let t=O(e);return k(K(3).highlight(t))})(`focus`,function(){let t=O(e);return k(K(3).highlight(t))})(`blur`,function(){return O(e),k(K(3).highlight(null))}),J(1),B()}if(e&2){let e=K().$implicit;N(`aria-label`,`Highlight `+e.component+` on the page`),M(),X(` `,e.component,` `)}}function zB(e,t){if(e&1&&(z(0,`span`,71),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.component)}}function BB(e,t){e&1&&(z(0,`span`,45),J(1,`no source`),B())}function VB(e,t){e&1&&(z(0,`span`,43),J(1,`duplicate subscription`),B())}function HB(e,t){e&1&&(z(0,`span`,43),J(1,`resubscribing`),B())}function UB(e,t){if(e&1){let e=W();z(0,`li`,69),G(`mouseenter`,function(){let t=O(e).$implicit;return k(K(2).highlight(t.target))})(`mouseleave`,function(){return O(e),k(K(2).highlight(null))}),P(1,RB,2,2,`button`,70)(2,zB,2,1,`span`,71),P(3,BB,2,0,`span`,45),P(4,VB,2,0,`span`,43),P(5,HB,2,0,`span`,43),z(6,`span`,72),J(7),B()()}if(e&2){let e,n=t.$implicit;M(),F((e=n.target)?1:2,e),M(2),F(n.hasSource?-1:3),M(),F(n.duplicate?4:-1),M(),F(n.resubscribing?5:-1),M(2),Y(n.latestValue??`no value yet`)}}function WB(e,t){if(e&1&&(z(0,`section`,18)(1,`h2`,66),J(2,` Async subscriptions `),z(3,`span`,21),J(4),B()(),z(5,`p`,56),J(6,` Each `),z(7,`span`,51),J(8,`| async`),B(),J(9,` subscribes on its own. Two on the same source mean the work runs twice. A source that changes on every check, like `),z(10,`span`,51),J(11,`getData() | async`),B(),J(12,`, resubscribes each time. `),B(),z(13,`ul`,67),I(14,UB,8,5,`li`,68,Cg),B()()),e&2){let e=K();M(4),Y(e.async().length),M(10),L(e.async())}}function GB(e,t){e&1&&(z(0,`span`,21),J(1),B()),e&2&&(M(),Y(t.length))}function KB(e,t){e&1&&(z(0,`p`,22),J(1,`Couldn't run the lint check. Try Refresh.`),B())}function qB(e,t){e&1&&(z(0,`p`,23),J(1,`Checking…`),B())}function JB(e,t){e&1&&(z(0,`p`,24),J(1,`No problems found.`),B())}function YB(e,t){if(e&1&&(z(0,`li`,74)(1,`div`,75)(2,`span`,76),J(3),B(),z(4,`code`,77),J(5),B(),z(6,`span`,78),J(7),B()(),z(8,`p`,79),J(9),B(),z(10,`p`,80)(11,`span`,81),J(12,`Fix`),B(),J(13),B()()),e&2){let e=t.$implicit;M(2),N(`data-tone`,e.severity),M(),Y(e.severity),M(2),Y(e.rule),M(2),Y_(``,e.pipe,` · `,e.file,`:`,e.line),M(2),Y(e.message),M(4),X(` `,e.fix)}}function XB(e,t){if(e&1&&(z(0,`ul`,25),I(1,YB,14,8,`li`,74,Cg),B()),e&2){let e=K();M(),L(e.lint())}}var ZB=5e3,QB=[{value:`all`,label:`All pipes`},{value:`custom`,label:`Custom`},{value:`builtin`,label:`Built-in`},{value:`impure`,label:`Impure`},{value:`live`,label:`On the page`}],$B=class e{destroyRef=E(Cs);host=E(Ml);rpc=$(null);kindOptions=QB;pipes=j([]);filter=j(``);kind=j(`all`);loading=j(!1);loadFailed=j(!1);selected=j(null);live=j([]);async=j([]);lint=j(null);lintFailed=j(!1);instrumentedPages=j([]);instrumenting=Q(()=>this.instrumentedPages().length>0);pendingRecord=j(null);recordMessage=j(null);recordLabel=Q(()=>{let e=this.pendingRecord();return e===null?this.instrumenting()?`Stop recording`:`Record calls`:e?`Starting…`:`Stopping…`});pendingTimer;liveByName=Q(()=>new Map(this.live().map(e=>[e.name,e])));filtered=Q(()=>{let e=this.filter().trim().toLowerCase(),t=this.kind()??`all`,n=this.liveByName();return this.pipes().filter(r=>t===`custom`&&r.builtin||t===`builtin`&&!r.builtin||t===`impure`&&r.isPure||t===`live`&&!n.has(r.name)?!1:!e||r.name.toLowerCase().includes(e)||r.className.toLowerCase().includes(e)||r.file.toLowerCase().includes(e))});unsubscribe;constructor(){uc(()=>{let e=this.rpc();e&&(this.refresh(),this.loadLive(e))}),this.destroyRef.onDestroy(()=>{this.unsubscribe?.(),clearTimeout(this.pendingTimer),this.highlight(null)})}async refresh(){let e=this.rpc();if(e){this.loading.set(!0),this.loadFailed.set(!1);try{let t=await e.scope(`pangular`).rpc.call(`get-pipes`);this.pipes.set(t);let n=this.selected();if(n){let e=t.find(e=>e.name===n.name&&e.file===n.file);this.selected.set(e??null)}}catch{this.loadFailed.set(!0)}finally{this.loading.set(!1)}this.loadLint(e)}}async loadLint(e){this.lintFailed.set(!1);try{let t=await e.scope(`pangular`).rpc.call(`pipe-lint`);this.lint.set(t)}catch{this.lintFailed.set(!0)}}async loadLive(e){try{let t=await e.scope(`pangular`).rpc.sharedState(`pipe-usage`);if(this.destroyRef.destroyed)return;let n=e=>{let t=e;this.live.set(t?.pipes??[]),this.async.set(t?.async??[]);let n=t?.instrumented??[];this.instrumentedPages.set(n),this.pendingRecord()===n.length>0&&this.settleRecord(null)};n(t.value()),this.unsubscribe?.(),this.unsubscribe=t.on(`updated`,n)}catch{}}async toggleInstrument(){let e=this.rpc();if(!e||this.pendingRecord()!==null)return;let t=!this.instrumenting();this.recordMessage.set(null),this.pendingRecord.set(t);let n;try{let r=t?{pageId:eE()??void 0,on:t}:{on:t};n=await e.scope(`pangular`).rpc.call(`request-instrument-pipes`,r)}catch{this.settleRecord(`Couldn't reach the devtools server. Try again.`);return}if(this.pendingRecord()===t){if(n?.pages===0){this.settleRecord(`No page is connected. Open your app in the browser with the devtools running, then record again.`);return}clearTimeout(this.pendingTimer),this.pendingTimer=setTimeout(()=>{this.pendingRecord()===t&&this.settleRecord(t?`No page confirmed recording. Reload the app and try again.`:`No page confirmed it stopped recording. Reload the app to stop it.`)},ZB)}}settleRecord(e){clearTimeout(this.pendingTimer),this.pendingRecord.set(null),e!==null&&this.recordMessage.set(e)}liveFor(e){return this.liveByName().get(e)}describe(e){if(Array.isArray(e))return e.map(e=>this.describe(e)).join(`, `);if(typeof e==`string`)return e.length>80?`${e.slice(0,80)}…`:e;try{let t=JSON.stringify(e);return t&&t.length>120?`${t.slice(0,120)}…`:t??String(e)}catch{return String(e)}}isSelected(e){let t=this.selected();return t!==null&&t.name===e.name&&t.file===e.file}select(e){this.selected.set(this.isSelected(e)?null:e)}clearFilters(){this.filter.set(``),this.kind.set(`all`)}highlightPipe(e){this.highlight(e?.components.find(e=>e.targets?.length)?.targets?.[0])}highlight(e,t=!1){let n=this.rpc();n&&n.scope(`pangular`).rpc.call(`request-page-highlight`,e?{...e,...t?{reveal:t}:{}}:null).catch(()=>{})}onListKey(e){if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;let t=Array.from(this.host.nativeElement.querySelectorAll(`[data-pipe-row]`));if(!t.length)return;let n=t.indexOf(document.activeElement),r=n;r=e.key===`ArrowDown`?Math.min(n+1,t.length-1):e.key===`ArrowUp`?Math.max(n-1,0):e.key===`Home`?0:t.length-1,e.preventDefault(),t[r]?.focus()}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-pipes-inspector`]],inputs:{rpc:[1,`rpc`]},decls:32,vars:18,consts:[[1,`intro`],[1,`toolbar`],[1,`search`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`search-icon`],[`cx`,`11`,`cy`,`11`,`r`,`7`],[`d`,`m20 20-3.5-3.5`],[`type`,`search`,`placeholder`,`Find a pipe, class or file…`,`aria-label`,`Find a pipe, class or file`,`autocomplete`,`off`,`spellcheck`,`false`,3,`input`,`keydown.escape`,`value`],[`ariaLabel`,`Show pipes`,3,`valueChange`,`options`,`value`],[`aria-live`,`polite`,1,`total`],[1,`actions`],[`type`,`button`,3,`click`,`disabled`],[`type`,`button`,1,`record`,3,`click`],[`aria-hidden`,`true`,1,`rec-dot`],[`role`,`status`,1,`notice`],[`role`,`status`,1,`state`],[`role`,`alert`,1,`state`],[1,`state`],[1,`layout`],[`aria-labelledby`,`async-title`,1,`section`],[`aria-labelledby`,`lint-title`,1,`section`],[`id`,`lint-title`],[1,`pill`],[`role`,`alert`,1,`empty-line`],[`role`,`status`,1,`empty-line`],[1,`empty-line`,`ok`],[1,`findings`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M12 11v5M12 8h.01`],[`aria-hidden`,`true`,1,`spinner`],[1,`state-title`],[1,`state-hint`],[`type`,`button`,3,`click`],[1,`list-wrap`],[`aria-label`,`Pipes`,1,`pipe-list`],[`role`,`status`,1,`state`,`compact`],[`id`,`pipe-detail`,`aria-labelledby`,`pipe-detail-title`,1,`detail`],[`aria-label`,`Pipes`,1,`pipe-list`,3,`keydown`],[`type`,`button`,`data-pipe-row`,``,`aria-controls`,`pipe-detail`,1,`row`,3,`click`,`mouseenter`,`mouseleave`,`focus`,`blur`],[1,`row-main`],[1,`name`,`mono`],[1,`sub`,`mono`],[1,`row-meta`],[1,`chip`,`warn`],[1,`chip`,`live`],[1,`chip`],[1,`row-file`,`mono`],[1,`more`],[1,`detail-head`],[`id`,`pipe-detail-title`,1,`mono`],[1,`block`],[1,`mono`],[1,`empty-line`],[1,`sites`],[`role`,`note`,1,`warning`],[1,`chips`],[1,`hint`],[`type`,`button`,1,`component`],[1,`component`],[`type`,`button`,1,`component`,3,`click`,`mouseenter`,`mouseleave`,`focus`,`blur`],[1,`count`],[1,`mono`,`value`],[1,`calls`],[1,`muted`],[`id`,`pipe-detail-title`,1,`visually-hidden`],[1,`state`,`compact`],[`id`,`async-title`],[1,`async-list`],[1,`async-row`],[1,`async-row`,3,`mouseenter`,`mouseleave`],[`type`,`button`,1,`component-name`,`mono`],[1,`mono`,`component-name`],[1,`mono`,`value`,`latest`],[`type`,`button`,1,`component-name`,`mono`,3,`click`,`focus`,`blur`],[1,`finding`],[1,`finding-head`],[1,`severity`],[1,`mono`,`rule`],[1,`where`,`mono`],[1,`finding-message`],[1,`finding-fix`],[1,`fix-label`]],template:function(e,t){if(e&1&&(z(0,`p`,0),J(1,` Pipes declared in your source and the built-in pipes your templates use. Live data shows which components use each pipe on the page; turn on recording to capture calls and the last input and output. `),B(),z(2,`div`,1)(3,`div`,2),A(),z(4,`svg`,3),V(5,`circle`,4)(6,`path`,5),B(),ps(),z(7,`input`,6),G(`input`,function(e){return t.filter.set(e.target.value)})(`keydown.escape`,function(){return t.filter.set(``)}),B()(),z(8,`app-select`,7),ev(`valueChange`,function(e){return $_(t.kind,e)||(t.kind=e),e}),B(),z(9,`span`,8),J(10),B(),z(11,`div`,9)(12,`button`,10),G(`click`,function(){return t.refresh()}),J(13,`Refresh`),B(),z(14,`button`,11),G(`click`,function(){return t.toggleInstrument()}),V(15,`span`,12),J(16),B()()(),P(17,iB,6,1,`p`,13),P(18,aB,8,1,`p`,13),P(19,oB,4,0,`div`,14)(20,sB,7,0,`div`,15)(21,cB,5,0,`div`,16)(22,LB,7,2,`div`,17),P(23,WB,16,1,`section`,18),z(24,`section`,19)(25,`h2`,20),J(26,` Lint `),P(27,GB,2,1,`span`,21),B(),P(28,KB,2,0,`p`,22)(29,qB,2,0,`p`,23)(30,JB,2,0,`p`,24)(31,XB,3,0,`ul`,25),B()),e&2){let e,n;M(7),R(`value`,t.filter()),M(),R(`options`,t.kindOptions),Q_(`value`,t.kind),M(2),Z(``,t.filtered().length,` of `,t.pipes().length),M(2),R(`disabled`,t.loading()),M(2),q(`on`,t.instrumenting()),N(`aria-pressed`,t.instrumenting())(`aria-busy`,t.pendingRecord()!==null)(`aria-disabled`,t.pendingRecord()!==null),M(2),X(` `,t.recordLabel(),` `),M(),F((e=t.recordMessage())?17:-1,e),M(),F(t.instrumenting()?18:-1),M(),F(t.loading()&&t.pipes().length===0?19:t.loadFailed()&&t.pipes().length===0?20:t.pipes().length===0?21:22),M(4),F(t.async().length>0?23:-1),M(4),F((n=t.lint())?27:-1,n),M(),F(t.lintFailed()?28:t.lint()===null?29:t.lint().length?31:30)}},dependencies:[AD],styles:[`[_nghost-%COMP%] { +}`]})},tB=(e,t)=>t.file+t.name,nB=(e,t)=>t.file+`:`+t.line,rB=(e,t)=>t.name;function iB(e,t){e&1&&(z(0,`p`,13),A(),z(1,`svg`,26),V(2,`circle`,27)(3,`path`,28),B(),ps(),z(4,`span`),J(5),B()()),e&2&&(M(5),Y(t))}function aB(e,t){if(e&1&&(z(0,`p`,13),A(),z(1,`svg`,26),V(2,`circle`,27)(3,`path`,28),B(),ps(),z(4,`span`)(5,`strong`),J(6),B(),J(7,` Pipe prototypes are patched in the inspected page to count calls and keep the last input and output. Stop recording when you are done. `),B()()),e&2){let e=K();M(6),X(`Recording on `,e.instrumentedPages().length,` page(s).`)}}function oB(e,t){e&1&&(z(0,`div`,14),V(1,`span`,29),z(2,`p`,30),J(3,`Scanning pipes…`),B()())}function sB(e,t){if(e&1){let e=W();z(0,`div`,15)(1,`p`,30),J(2,`Couldn't load pipes`),B(),z(3,`p`,31),J(4,`The devtools server did not answer. Check that it is running.`),B(),z(5,`button`,32),G(`click`,function(){return O(e),k(K().refresh())}),J(6,`Try again`),B()()}}function cB(e,t){e&1&&(z(0,`div`,16)(1,`p`,30),J(2,`No pipes found`),B(),z(3,`p`,31),J(4,` No @Pipe classes were found in the source, and no template uses a built-in pipe yet. `),B()())}function lB(e,t){e&1&&(z(0,`span`,43),J(1,`stale?`),B())}function uB(e,t){if(e&1&&(z(0,`span`,44),J(1),B()),e&2){K();let e=iv(0);M(),X(``,e.instanceCount,` live`)}}function dB(e,t){e&1&&(z(0,`span`,45),J(1,`built-in`),B())}function fB(e,t){e&1&&(z(0,`span`,45),J(1,`NgModule`),B())}function pB(e,t){if(e&1&&(z(0,`span`,47),J(1),B()),e&2){let e=K().$implicit;M(),X(`+`,(e.usageCount??1)-1,` more`)}}function mB(e,t){if(e&1){let e=W();nv(0),z(1,`li`)(2,`button`,38),G(`click`,function(){let t=O(e).$implicit;return k(K(3).select(t))})(`mouseenter`,function(){O(e);let t=iv(0);return k(K(3).highlightPipe(t))})(`mouseleave`,function(){return O(e),k(K(3).highlight(null))})(`focus`,function(){O(e);let t=iv(0);return k(K(3).highlightPipe(t))})(`blur`,function(){return O(e),k(K(3).highlight(null))}),z(3,`span`,39)(4,`span`,40),J(5),B(),z(6,`span`,41),J(7),B()(),z(8,`span`,42),P(9,lB,2,0,`span`,43),P(10,uB,2,1,`span`,44),P(11,dB,2,0,`span`,45),P(12,fB,2,0,`span`,45),z(13,`span`,45),J(14),B()(),z(15,`span`,46),J(16),P(17,pB,2,1,`span`,47),B()()()}if(e&2){let e=t.$implicit,n=K(3),r=rv(n.liveFor(e.name));M(2),q(`selected`,n.isSelected(e)),N(`aria-current`,n.isSelected(e)||null),M(3),Y(e.name),M(2),Y(e.className),M(2),F(r?.stale?9:-1),M(),F(r?10:-1),M(),F(e.builtin?11:-1),M(),F(e.isStandalone?-1:12),M(),q(`impure`,!e.isPure),M(),Y(e.isPure?`pure`:`impure`),M(2),Z(` `,e.file,`:`,e.line,` `),M(),F(e.builtin&&(e.usageCount??0)>1?17:-1)}}function hB(e,t){if(e&1){let e=W();z(0,`ul`,37),G(`keydown`,function(t){return O(e),k(K(2).onListKey(t))}),I(1,mB,18,16,`li`,null,tB),B()}if(e&2){let e=K(2);M(),L(e.filtered())}}function gB(e,t){e&1&&J(0),e&2&&X(` Nothing matches “`,K(3).filter().trim(),`” in this view. `)}function _B(e,t){e&1&&J(0,` None of the pipes fit this filter. `)}function vB(e,t){if(e&1){let e=W();z(0,`div`,35)(1,`p`,30),J(2,`No pipes match`),B(),z(3,`p`,31),P(4,gB,1,1)(5,_B,1,0),B(),z(6,`button`,32),G(`click`,function(){return O(e),k(K(2).clearFilters())}),J(7,`Clear filters`),B()()}if(e&2){let e=K(2);M(4),F(e.filter().trim()?4:5)}}function yB(e,t){e&1&&(z(0,`span`,45),J(1,`built-in`),B())}function bB(e,t){if(e&1&&(z(0,`dt`),J(1,`File`),B(),z(2,`dd`,51),J(3),B()),e&2){let e=K();M(3),Z(``,e.file,`:`,e.line)}}function xB(e,t){if(e&1&&(z(0,`li`,51),J(1),B()),e&2){let e=t.$implicit;M(),Z(``,e.file,`:`,e.line)}}function SB(e,t){if(e&1&&(z(0,`div`,50)(1,`h3`),J(2,` Used in templates `),z(3,`span`,21),J(4),B()(),z(5,`ul`,53),I(6,xB,2,2,`li`,51,nB),B()()),e&2){let e=K();M(4),Y(e.usageCount),M(2),L(e.usages)}}function CB(e,t){e&1&&(z(0,`p`,54)(1,`span`,43),J(2,`experimental`),B(),J(3,` This pure pipe got an argument whose contents changed while its reference stayed the same, so it may be showing a stale value. `),B())}function wB(e,t){if(e&1){let e=W();z(0,`button`,59),G(`click`,function(){let t=O(e);return k(K(5).highlight(t,!0))})(`mouseenter`,function(){let t=O(e);return k(K(5).highlight(t))})(`mouseleave`,function(){return O(e),k(K(5).highlight(null))})(`focus`,function(){let t=O(e);return k(K(5).highlight(t))})(`blur`,function(){return O(e),k(K(5).highlight(null))}),z(1,`span`,51),J(2),B(),z(3,`span`,60),J(4),B()()}if(e&2){let e=K().$implicit;N(`aria-label`,`Highlight `+e.name+` on the page`),M(2),Y(e.name),M(2),Y(e.count)}}function TB(e,t){if(e&1&&(z(0,`span`,58)(1,`span`,51),J(2),B(),z(3,`span`,60),J(4),B()()),e&2){let e=K().$implicit;M(2),Y(e.name),M(2),Y(e.count)}}function EB(e,t){if(e&1&&(z(0,`li`),P(1,wB,5,3,`button`,57)(2,TB,5,2,`span`,58),B()),e&2){let e,n=t.$implicit;M(),F((e=n.targets?.[0])?1:2,e)}}function DB(e,t){if(e&1&&(z(0,`li`,61),J(1),z(2,`span`,62),J(3),B()()),e&2){let e=t.$implicit,n=K(6);M(),Z(` `,n.describe(e.lastArgs),` → `,n.describe(e.lastResult),` `),M(2),X(``,e.callCount,`×`)}}function OB(e,t){if(e&1&&(z(0,`dt`),J(1,`Per instance`),B(),z(2,`dd`)(3,`ul`,53),I(4,DB,4,3,`li`,61,Cg),B()()),e&2){let e=K();M(4),L(e.instances)}}function kB(e,t){if(e&1&&(z(0,`dt`),J(1,`Last caller`),B(),z(2,`dd`,61),J(3),B()),e&2){let e=K();M(3),Y(e.lastCaller)}}function AB(e,t){if(e&1&&(z(0,`dt`),J(1,`Calls`),B(),z(2,`dd`),J(3),B(),z(4,`dt`),J(5,`Last input`),B(),z(6,`dd`,61),J(7),B(),z(8,`dt`),J(9,`Last output`),B(),z(10,`dd`,61),J(11),B(),P(12,OB,6,0),P(13,kB,4,1)),e&2){let e=t,n=K(4);M(3),Y(e.callCount),M(4),Y(n.describe(e.lastArgs)),M(4),Y(n.describe(e.lastResult)),M(),F(e.instances?.length?12:-1),M(),F(e.lastCaller?13:-1)}}function jB(e,t){e&1&&(z(0,`dt`),J(1,`Calls`),B(),z(2,`dd`,63),J(3,`None recorded yet.`),B())}function MB(e,t){e&1&&(z(0,`p`,56),J(1,`Turn on “Record calls” to see call counts and values.`),B())}function NB(e,t){if(e&1&&(P(0,CB,4,0,`p`,54),z(1,`dl`)(2,`dt`),J(3,`Instances`),B(),z(4,`dd`),J(5),B(),z(6,`dt`),J(7,`Used by`),B(),z(8,`dd`)(9,`ul`,55),I(10,EB,3,1,`li`,null,rB),B()(),P(12,AB,14,5)(13,jB,4,0),B(),P(14,MB,2,0,`p`,56)),e&2){let e,n=t,r=K(3);F(n.stale?0:-1),M(5),Y(n.instanceCount),M(5),L(n.components),M(2),F((e=n.call)?12:r.instrumenting()?13:-1,e),M(2),F(!n.call&&!r.instrumenting()?14:-1)}}function PB(e,t){e&1&&(z(0,`p`,52),J(1,` Not in use on the connected page. Open a view that uses it, or connect the app. `),B())}function FB(e,t){if(e&1&&(z(0,`header`,48)(1,`h2`,49),J(2),B(),z(3,`span`,45),J(4),B(),P(5,yB,2,0,`span`,45),B(),z(6,`div`,50)(7,`h3`),J(8,`Declaration`),B(),z(9,`dl`)(10,`dt`),J(11,`Class`),B(),z(12,`dd`,51),J(13),B(),z(14,`dt`),J(15,`Source`),B(),z(16,`dd`),J(17),B(),P(18,bB,4,2),z(19,`dt`),J(20,`Standalone`),B(),z(21,`dd`),J(22),B(),z(23,`dt`),J(24,`Pure`),B(),z(25,`dd`),J(26),B()()(),P(27,SB,8,1,`div`,50),z(28,`div`,50)(29,`h3`),J(30,`Live on the page`),B(),P(31,NB,15,4)(32,PB,2,0,`p`,52),B()),e&2){let e,n=t,r=K(2);M(2),Y(n.name),M(),q(`impure`,!n.isPure),M(),Y(n.isPure?`pure`:`impure`),M(),F(n.builtin?5:-1),M(8),Y(n.className),M(4),Y(n.builtin?`@angular/common`:`This project`),M(),F(n.builtin?-1:18),M(4),Y(n.isStandalone?`Yes`:`No, declared in an NgModule`),M(4),X(` `,n.isPure?`Yes, reruns only when an input changes`:`No, reruns on every check`,` `),M(),F(n.builtin&&n.usages?.length?27:-1),M(4),F((e=r.liveFor(n.name))?31:32,e)}}function IB(e,t){e&1&&(z(0,`h2`,64),J(1,`Pipe details`),B(),z(2,`div`,65)(3,`p`,30),J(4,`Pick a pipe`),B(),z(5,`p`,31),J(6,` See where it is declared, which components use it and what it last returned. `),B()())}function LB(e,t){if(e&1&&(z(0,`div`,17)(1,`div`,33),P(2,hB,3,0,`ul`,34)(3,vB,8,1,`div`,35),B(),z(4,`section`,36),P(5,FB,33,12)(6,IB,7,0),B()()),e&2){let e,t=K();M(2),F(t.filtered().length?2:3),M(3),F((e=t.selected())?5:6,e)}}function RB(e,t){if(e&1){let e=W();z(0,`button`,73),G(`click`,function(){let t=O(e);return k(K(3).highlight(t))})(`focus`,function(){let t=O(e);return k(K(3).highlight(t))})(`blur`,function(){return O(e),k(K(3).highlight(null))}),J(1),B()}if(e&2){let e=K().$implicit;N(`aria-label`,`Highlight `+e.component+` on the page`),M(),X(` `,e.component,` `)}}function zB(e,t){if(e&1&&(z(0,`span`,71),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.component)}}function BB(e,t){e&1&&(z(0,`span`,45),J(1,`no source`),B())}function VB(e,t){e&1&&(z(0,`span`,43),J(1,`duplicate subscription`),B())}function HB(e,t){e&1&&(z(0,`span`,43),J(1,`resubscribing`),B())}function UB(e,t){if(e&1){let e=W();z(0,`li`,69),G(`mouseenter`,function(){let t=O(e).$implicit;return k(K(2).highlight(t.target))})(`mouseleave`,function(){return O(e),k(K(2).highlight(null))}),P(1,RB,2,2,`button`,70)(2,zB,2,1,`span`,71),P(3,BB,2,0,`span`,45),P(4,VB,2,0,`span`,43),P(5,HB,2,0,`span`,43),z(6,`span`,72),J(7),B()()}if(e&2){let e,n=t.$implicit;M(),F((e=n.target)?1:2,e),M(2),F(n.hasSource?-1:3),M(),F(n.duplicate?4:-1),M(),F(n.resubscribing?5:-1),M(2),Y(n.latestValue??`no value yet`)}}function WB(e,t){if(e&1&&(z(0,`section`,18)(1,`h2`,66),J(2,` Async subscriptions `),z(3,`span`,21),J(4),B()(),z(5,`p`,56),J(6,` Each `),z(7,`span`,51),J(8,`| async`),B(),J(9,` subscribes on its own. Two on the same source mean the work runs twice. A source that changes on every check, like `),z(10,`span`,51),J(11,`getData() | async`),B(),J(12,`, resubscribes each time. `),B(),z(13,`ul`,67),I(14,UB,8,5,`li`,68,Cg),B()()),e&2){let e=K();M(4),Y(e.async().length),M(10),L(e.async())}}function GB(e,t){e&1&&(z(0,`span`,21),J(1),B()),e&2&&(M(),Y(t.length))}function KB(e,t){e&1&&(z(0,`p`,22),J(1,`Couldn't run the lint check. Try Refresh.`),B())}function qB(e,t){e&1&&(z(0,`p`,23),J(1,`Checking…`),B())}function JB(e,t){e&1&&(z(0,`p`,24),J(1,`No problems found.`),B())}function YB(e,t){if(e&1){let e=W();z(0,`button`,83),G(`click`,function(){O(e),K();let t=iv(6);return k(K(2).showPipe(t))}),z(1,`span`,84),J(2,`Show pipe `),B(),J(3),B()}if(e&2){let e=K().$implicit;M(3),X(``,e.pipe,` `)}}function XB(e,t){if(e&1&&J(0),e&2){let e=K().$implicit;X(` `,e.pipe,` `)}}function ZB(e,t){if(e&1&&(z(0,`li`,74)(1,`div`,75)(2,`span`,76),J(3),B(),z(4,`code`,77),J(5),B(),nv(6),z(7,`span`,78),P(8,YB,4,1,`button`,79)(9,XB,1,1),J(10),B()(),z(11,`p`,80),J(12),B(),z(13,`p`,81)(14,`span`,82),J(15,`Fix`),B(),J(16),B()()),e&2){let e=t.$implicit;M(2),N(`data-tone`,e.severity),M(),Y(e.severity),M(2),Y(e.rule),M();let n=rv(K(2).pipeFor(e));M(2),F(n?8:9),M(2),Z(` · `,e.file,`:`,e.line,` `),M(2),Y(e.message),M(4),X(` `,e.fix)}}function QB(e,t){if(e&1&&(z(0,`ul`,25),I(1,ZB,17,9,`li`,74,Cg),B()),e&2){let e=K();M(),L(e.lint())}}var $B=5e3,eV=[{value:`all`,label:`All pipes`},{value:`custom`,label:`Custom`},{value:`builtin`,label:`Built-in`},{value:`impure`,label:`Impure`},{value:`live`,label:`On the page`}],tV=class e{destroyRef=E(Cs);host=E(Ml);injector=E(xs);rpc=$(null);kindOptions=eV;pipes=j([]);filter=j(``);kind=j(`all`);loading=j(!1);loadFailed=j(!1);selected=j(null);live=j([]);async=j([]);lint=j(null);lintFailed=j(!1);instrumentedPages=j([]);instrumenting=Q(()=>this.instrumentedPages().length>0);pendingRecord=j(null);recordMessage=j(null);recordLabel=Q(()=>{let e=this.pendingRecord();return e===null?this.instrumenting()?`Stop recording`:`Record calls`:e?`Starting…`:`Stopping…`});pendingTimer;liveByName=Q(()=>new Map(this.live().map(e=>[e.name,e])));filtered=Q(()=>{let e=this.filter(),t=this.kind()??`all`;return this.pipes().filter(n=>this.fitsKind(n,t)&&this.fitsQuery(n,e))});pipesByName=Q(()=>{let e=new Map;for(let t of this.pipes())e.set(t.name,[...e.get(t.name)??[],t]);return e});unsubscribe;constructor(){uc(()=>{let e=this.rpc();e&&(this.refresh(),this.loadLive(e))}),this.destroyRef.onDestroy(()=>{this.unsubscribe?.(),clearTimeout(this.pendingTimer),this.highlight(null)})}async refresh(){let e=this.rpc();if(e){this.loading.set(!0),this.loadFailed.set(!1);try{let t=await e.scope(`pangular`).rpc.call(`get-pipes`);this.pipes.set(t);let n=this.selected();if(n){let e=t.find(e=>e.name===n.name&&e.file===n.file);this.selected.set(e??null)}}catch{this.loadFailed.set(!0)}finally{this.loading.set(!1)}this.loadLint(e)}}async loadLint(e){this.lintFailed.set(!1);try{let t=await e.scope(`pangular`).rpc.call(`pipe-lint`);this.lint.set(t)}catch{this.lintFailed.set(!0)}}async loadLive(e){try{let t=await e.scope(`pangular`).rpc.sharedState(`pipe-usage`);if(this.destroyRef.destroyed)return;let n=e=>{let t=e;this.live.set(t?.pipes??[]),this.async.set(t?.async??[]);let n=t?.instrumented??[];this.instrumentedPages.set(n),this.pendingRecord()===n.length>0&&this.settleRecord(null)};n(t.value()),this.unsubscribe?.(),this.unsubscribe=t.on(`updated`,n)}catch{}}async toggleInstrument(){let e=this.rpc();if(!e||this.pendingRecord()!==null)return;let t=!this.instrumenting();this.recordMessage.set(null),this.pendingRecord.set(t);let n;try{let r=t?{pageId:eE()??void 0,on:t}:{on:t};n=await e.scope(`pangular`).rpc.call(`request-instrument-pipes`,r)}catch{this.settleRecord(`Couldn't reach the devtools server. Try again.`);return}if(this.pendingRecord()===t){if(n?.pages===0){this.settleRecord(`No page is connected. Open your app in the browser with the devtools running, then record again.`);return}clearTimeout(this.pendingTimer),this.pendingTimer=setTimeout(()=>{this.pendingRecord()===t&&this.settleRecord(t?`No page confirmed recording. Reload the app and try again.`:`No page confirmed it stopped recording. Reload the app to stop it.`)},$B)}}settleRecord(e){clearTimeout(this.pendingTimer),this.pendingRecord.set(null),e!==null&&this.recordMessage.set(e)}liveFor(e){return this.liveByName().get(e)}describe(e){if(Array.isArray(e))return e.map(e=>this.describe(e)).join(`, `);if(typeof e==`string`)return e.length>80?`${e.slice(0,80)}…`:e;try{let t=JSON.stringify(e);return t&&t.length>120?`${t.slice(0,120)}…`:t??String(e)}catch{return String(e)}}isSelected(e){let t=this.selected();return t!==null&&t.name===e.name&&t.file===e.file}select(e){this.selected.set(this.isSelected(e)?null:e)}pipeFor(e){let t=this.pipesByName().get(e.pipe);return t?.length?t.find(t=>t.file===e.file)??t[0]:null}showPipe(e){this.fitsQuery(e,this.filter())||this.filter.set(``),this.fitsKind(e,this.kind()??`all`)||this.kind.set(`all`),this.selected.set(e),Id(()=>{let e=this.host.nativeElement;e.querySelector(`.row.selected`)?.scrollIntoView?.({block:`nearest`}),e.querySelector(`#pipe-detail-title`)?.focus()},{injector:this.injector})}fitsKind(e,t){return t===`custom`?!e.builtin:t===`builtin`?!!e.builtin:t===`impure`?!e.isPure:t!==`live`||this.liveByName().has(e.name)}fitsQuery(e,t){let n=t.trim().toLowerCase();return!n||e.name.toLowerCase().includes(n)||e.className.toLowerCase().includes(n)||e.file.toLowerCase().includes(n)}clearFilters(){this.filter.set(``),this.kind.set(`all`)}highlightPipe(e){this.highlight(e?.components.find(e=>e.targets?.length)?.targets?.[0])}highlight(e,t=!1){let n=this.rpc();n&&n.scope(`pangular`).rpc.call(`request-page-highlight`,e?{...e,...t?{reveal:t}:{}}:null).catch(()=>{})}onListKey(e){if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;let t=Array.from(this.host.nativeElement.querySelectorAll(`[data-pipe-row]`));if(!t.length)return;let n=t.indexOf(document.activeElement),r=n;r=e.key===`ArrowDown`?Math.min(n+1,t.length-1):e.key===`ArrowUp`?Math.max(n-1,0):e.key===`Home`?0:t.length-1,e.preventDefault(),t[r]?.focus()}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-pipes-inspector`]],inputs:{rpc:[1,`rpc`]},decls:32,vars:18,consts:[[1,`intro`],[1,`toolbar`],[1,`search`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`search-icon`],[`cx`,`11`,`cy`,`11`,`r`,`7`],[`d`,`m20 20-3.5-3.5`],[`type`,`search`,`placeholder`,`Find a pipe, class or file…`,`aria-label`,`Find a pipe, class or file`,`autocomplete`,`off`,`spellcheck`,`false`,3,`input`,`keydown.escape`,`value`],[`ariaLabel`,`Show pipes`,3,`valueChange`,`options`,`value`],[`aria-live`,`polite`,1,`total`],[1,`actions`],[`type`,`button`,3,`click`,`disabled`],[`type`,`button`,1,`record`,3,`click`],[`aria-hidden`,`true`,1,`rec-dot`],[`role`,`status`,1,`notice`],[`role`,`status`,1,`state`],[`role`,`alert`,1,`state`],[1,`state`],[1,`layout`],[`aria-labelledby`,`async-title`,1,`section`],[`aria-labelledby`,`lint-title`,1,`section`],[`id`,`lint-title`],[1,`pill`],[`role`,`alert`,1,`empty-line`],[`role`,`status`,1,`empty-line`],[1,`empty-line`,`ok`],[1,`findings`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M12 11v5M12 8h.01`],[`aria-hidden`,`true`,1,`spinner`],[1,`state-title`],[1,`state-hint`],[`type`,`button`,3,`click`],[1,`list-wrap`],[`aria-label`,`Pipes`,1,`pipe-list`],[`role`,`status`,1,`state`,`compact`],[`id`,`pipe-detail`,`aria-labelledby`,`pipe-detail-title`,1,`detail`],[`aria-label`,`Pipes`,1,`pipe-list`,3,`keydown`],[`type`,`button`,`data-pipe-row`,``,`aria-controls`,`pipe-detail`,1,`row`,3,`click`,`mouseenter`,`mouseleave`,`focus`,`blur`],[1,`row-main`],[1,`name`,`mono`],[1,`sub`,`mono`],[1,`row-meta`],[1,`chip`,`warn`],[1,`chip`,`live`],[1,`chip`],[1,`row-file`,`mono`],[1,`more`],[1,`detail-head`],[`id`,`pipe-detail-title`,`tabindex`,`-1`,1,`mono`],[1,`block`],[1,`mono`],[1,`empty-line`],[1,`sites`],[`role`,`note`,1,`warning`],[1,`chips`],[1,`hint`],[`type`,`button`,1,`component`],[1,`component`],[`type`,`button`,1,`component`,3,`click`,`mouseenter`,`mouseleave`,`focus`,`blur`],[1,`count`],[1,`mono`,`value`],[1,`calls`],[1,`muted`],[`id`,`pipe-detail-title`,1,`visually-hidden`],[1,`state`,`compact`],[`id`,`async-title`],[1,`async-list`],[1,`async-row`],[1,`async-row`,3,`mouseenter`,`mouseleave`],[`type`,`button`,1,`component-name`,`mono`],[1,`mono`,`component-name`],[1,`mono`,`value`,`latest`],[`type`,`button`,1,`component-name`,`mono`,3,`click`,`focus`,`blur`],[1,`finding`],[1,`finding-head`],[1,`severity`],[1,`mono`,`rule`],[1,`where`,`mono`],[`type`,`button`,1,`pipe-link`],[1,`finding-message`],[1,`finding-fix`],[1,`fix-label`],[`type`,`button`,1,`pipe-link`,3,`click`],[1,`sr-only`]],template:function(e,t){if(e&1&&(z(0,`p`,0),J(1,` Pipes declared in your source and the built-in pipes your templates use. Live data shows which components use each pipe on the page; turn on recording to capture calls and the last input and output. `),B(),z(2,`div`,1)(3,`div`,2),A(),z(4,`svg`,3),V(5,`circle`,4)(6,`path`,5),B(),ps(),z(7,`input`,6),G(`input`,function(e){return t.filter.set(e.target.value)})(`keydown.escape`,function(){return t.filter.set(``)}),B()(),z(8,`app-select`,7),ev(`valueChange`,function(e){return $_(t.kind,e)||(t.kind=e),e}),B(),z(9,`span`,8),J(10),B(),z(11,`div`,9)(12,`button`,10),G(`click`,function(){return t.refresh()}),J(13,`Refresh`),B(),z(14,`button`,11),G(`click`,function(){return t.toggleInstrument()}),V(15,`span`,12),J(16),B()()(),P(17,iB,6,1,`p`,13),P(18,aB,8,1,`p`,13),P(19,oB,4,0,`div`,14)(20,sB,7,0,`div`,15)(21,cB,5,0,`div`,16)(22,LB,7,2,`div`,17),P(23,WB,16,1,`section`,18),z(24,`section`,19)(25,`h2`,20),J(26,` Lint `),P(27,GB,2,1,`span`,21),B(),P(28,KB,2,0,`p`,22)(29,qB,2,0,`p`,23)(30,JB,2,0,`p`,24)(31,QB,3,0,`ul`,25),B()),e&2){let e,n;M(7),R(`value`,t.filter()),M(),R(`options`,t.kindOptions),Q_(`value`,t.kind),M(2),Z(``,t.filtered().length,` of `,t.pipes().length),M(2),R(`disabled`,t.loading()),M(2),q(`on`,t.instrumenting()),N(`aria-pressed`,t.instrumenting())(`aria-busy`,t.pendingRecord()!==null)(`aria-disabled`,t.pendingRecord()!==null),M(2),X(` `,t.recordLabel(),` `),M(),F((e=t.recordMessage())?17:-1,e),M(),F(t.instrumenting()?18:-1),M(),F(t.loading()&&t.pipes().length===0?19:t.loadFailed()&&t.pipes().length===0?20:t.pipes().length===0?21:22),M(4),F(t.async().length>0?23:-1),M(4),F((n=t.lint())?27:-1,n),M(),F(t.lintFailed()?28:t.lint()===null?29:t.lint().length?31:30)}},dependencies:[AD],styles:[`[_nghost-%COMP%] { display: block; color: var(--%NS%text); font-size: 13px; @@ -9922,6 +9922,16 @@ button[_ngcontent-%COMP%]:disabled { font-size: 15px; font-weight: 600; overflow-wrap: anywhere; + border-radius: 4px; +} + +.detail-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]:focus { + outline: none; +} + +.detail-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; } .block[_ngcontent-%COMP%] { @@ -10176,6 +10186,31 @@ button.component-name[_ngcontent-%COMP%] { overflow-wrap: anywhere; } +button.pipe-link[_ngcontent-%COMP%] { + display: inline; + height: auto; + padding: 0; + border: 0; + border-radius: 4px; + background: none; + color: var(--%NS%accent); + font: inherit; + text-decoration: underline; + text-underline-offset: 3px; + white-space: normal; +} + +button.pipe-link[_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: transparent; + background: none; + color: var(--%NS%accent-hover); +} + +button.pipe-link[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + .finding-message[_ngcontent-%COMP%] { margin: 6px 0 0; color: var(--%NS%text); @@ -10253,7 +10288,7 @@ button.component-name[_ngcontent-%COMP%] { .spinner[_ngcontent-%COMP%] { animation: none; } -}`]})},eV=()=>[],tV=()=>[`/`],nV=(e,t)=>t.id,rV=(e,t)=>t.route.id,iV=(e,t)=>t[0],aV=(e,t)=>t.file+t.method,oV=(e,t)=>t.path,sV=(e,t)=>t.mode,cV=(e,t)=>t.file,lV=(e,t)=>t.rule;function uV(e,t){if(e&1){let e=W();z(0,`div`,0)(1,`h2`,3),J(2,`Could not read the project.`),B(),z(3,`p`,4),J(4,` Check that the dev server with Pangular Inspector is still running, then retry. `),B(),z(5,`button`,5),G(`click`,function(){return O(e),k(K().retry())}),J(6,`Retry`),B()()}}function dV(e,t){e&1&&(z(0,`div`,1),V(1,`span`,6),z(2,`span`),J(3,`Reading the project…`),B()())}function fV(e,t){e&1&&(z(0,`div`,2)(1,`h2`,3),J(2,`This app is not an Analog app.`),B(),z(3,`p`,4),J(4,` Add `),z(5,`code`),J(6,`pangular()`),B(),J(7,` from `),z(8,`code`),J(9,`@pangular-inspector/devtools/vite`),B(),J(10,` next to `),z(11,`code`),J(12,`analog()`),B(),J(13,` in vite.config.ts and run the Analog dev server. `),B()())}function pV(e,t){if(e&1&&(z(0,`div`,11)(1,`span`,9),J(2,`Open in the browser`),B(),z(3,`span`,15),J(4),B()()),e&2){let e=t;M(3),R(`title`,e.url),M(),Y(e.url)}}function mV(e,t){if(e&1){let e=W();z(0,`button`,16),G(`click`,function(){let t=O(e).$implicit;return k(K(2).view.set(t.id))}),J(1),z(2,`span`,17),J(3),B()()}if(e&2){let e=t.$implicit,n=K(2);R(`id`,`analog-tab-`+e.id),N(`aria-selected`,e.id===n.view())(`aria-controls`,`analog-panel-`+e.id)(`tabindex`,e.id===n.view()?0:-1),M(),X(` `,e.label,` `),M(),N(`data-tone`,e.tone),M(),Y(e.count)}}function hV(e,t){e&1&&(z(0,`div`,26),J(1),B()),e&2&&(M(),Y(t))}function gV(e,t){if(e&1&&(z(0,`li`)(1,`span`,31),J(2),B(),z(3,`span`,34),J(4),B()()),e&2){let e=t.$implicit,n=K(5);M(2),Y(n.short(e.file)??e.fullPath),M(),N(`data-kind`,e.kind),M(),Y(e.kind)}}function _V(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Z(``,e[0],` = `,e[1])}}function vV(e,t){if(e&1&&(z(0,`div`,33),I(1,_V,2,2,`span`,35,iV),B()),e&2){let e=K(2),t=K(3);M(),L(t.paramList(e.match.params))}}function yV(e,t){if(e&1&&(z(0,`strong`,31),J(1),B(),J(2,` renders `),z(3,`ol`,32),I(4,gV,5,3,`li`,null,nV),B(),P(6,vV,3,0,`div`,33)),e&2){let e=K(),t=K(3);M(),Y(e.url),M(3),L(e.match.chain),M(2),F(t.paramList(e.match.params).length?6:-1)}}function bV(e,t){if(e&1&&(z(0,`li`)(1,`span`,31),J(2),B(),z(3,`span`,4),J(4),B()()),e&2){let e=t.$implicit,n=K(6);M(2),Y(n.short(e.file)??e.path),M(2),Y(e.reason)}}function xV(e,t){if(e&1&&(z(0,`ul`,36),I(1,bV,5,2,`li`,null,Cg),B()),e&2){let e=K(2);M(),L(e.match.rejected.slice(0,5))}}function SV(e,t){if(e&1&&(z(0,`strong`,31),J(1),B(),J(2,` matches no file route. Angular throws NG04002 "Cannot match any routes". `),P(3,xV,3,0,`ul`,36)),e&2){let e=K();M(),Y(e.url),M(2),F(e.match.rejected.length?3:-1)}}function CV(e,t){if(e&1&&(z(0,`div`,27),P(1,yV,7,2)(2,SV,4,2),B()),e&2){let e=t;N(`data-tone`,e.match.matched?`good`:`bad`),M(),F(e.match.matched?1:2)}}function wV(e,t){e&1&&(z(0,`span`,38),J(1,`└`),B())}function TV(e,t){e&1&&(z(0,`span`,40),J(1,`open`),B())}function EV(e,t){if(e&1&&(z(0,`span`,41)(1,`span`,45),J(2),B(),J(3),B()),e&2){let e=K().$implicit,t=K(3);M(2),Y(t.dir(e.route.file)),M(),Y(t.base(e.route.file))}}function DV(e,t){e&1&&(z(0,`span`,4),J(1,`folder only`),B())}function OV(e,t){if(e&1&&(z(0,`span`,43),J(1),B()),e&2){let e=t.$implicit;M(),X(``,e,`()`)}}function kV(e,t){if(e&1&&(z(0,`span`,44),J(1),B()),e&2){let e=K().$implicit;M(),X(`"`,e.route.title,`"`)}}function AV(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=K().$implicit;M(),Y(e)}}function jV(e,t){if(e&1&&P(0,AV,2,1,`span`,35),e&2){let e=t.$implicit;F(e===`title`?-1:0)}}function MV(e,t){if(e&1&&(z(0,`tr`)(1,`td`)(2,`div`,37),P(3,wV,2,0,`span`,38),z(4,`span`,39),J(5),B(),z(6,`span`,34),J(7),B(),P(8,TV,2,0,`span`,40),B()(),z(9,`td`),P(10,EV,4,2,`span`,41)(11,DV,2,0,`span`,4),B(),z(12,`td`)(13,`div`,42),I(14,OV,2,1,`span`,43,wg),B()(),z(16,`td`),P(17,kV,2,1,`span`,44),I(18,jV,1,1,null,null,wg),B()()),e&2){let e=t.$implicit,n=K(3);q(`open`,n.isOpen(e.route))(`dim`,e.route.kind===`group`||e.route.kind===`implicit`),M(2),C_(`padding-left`,e.depth*16,`px`),M(),F(e.depth?3:-1),M(2),Y(e.route.fullPath),M(),N(`data-kind`,e.route.kind),M(),Y(n.kindText(e.route)),M(),F(n.isOpen(e.route)?8:-1),M(2),F(e.route.file?10:11),M(4),L(n.serverExports(e.route)),M(3),F(e.route.title?17:-1),M(),L(e.route.routeMeta??ov(13,eV))}}function NV(e,t){e&1&&J(0,` No route matches the filter. Try part of a path or a file name. `)}function PV(e,t){e&1&&J(0,` No file routes yet. Add a .page.ts file under src/app/pages. `)}function FV(e,t){if(e&1&&(z(0,`tr`)(1,`td`,46),P(2,NV,1,0)(3,PV,1,0),B()()),e&2){let e=K(3);M(2),F(e.filter().trim()?2:3)}}function IV(e,t){if(e&1){let e=W();z(0,`div`,18)(1,`form`,19),G(`submit`,function(t){O(e);let n=K(2);return t.preventDefault(),k(n.explain())}),z(2,`label`,20),J(3,`Test a URL`),B(),z(4,`input`,21),G(`input`,function(t){return O(e),k(K(2).testUrl.set(t.target.value))}),B(),z(5,`button`,22),J(6),B()(),z(7,`label`,23),J(8,`Filter routes`),B(),z(9,`input`,24),G(`input`,function(t){return O(e),k(K(2).filter.set(t.target.value))}),B()(),z(10,`div`,25),P(11,hV,2,1,`div`,26)(12,CV,3,2,`div`,27),B(),z(13,`div`,28)(14,`table`)(15,`thead`)(16,`tr`)(17,`th`,29),J(18,`Route`),B(),z(19,`th`,29),J(20,`File`),B(),z(21,`th`,29),J(22,`Data`),B(),z(23,`th`,29),J(24,`Route meta`),B()()(),z(25,`tbody`),I(26,MV,20,14,`tr`,30,rV,!1,FV,4,1,`tr`),B()()()}if(e&2){let e,t=K(2);M(4),R(`value`,t.testUrl()),M(),R(`disabled`,t.explaining()),M(),X(` `,t.explaining()?`Explaining…`:`Explain`,` `),M(3),R(`value`,t.filter()),M(2),F((e=t.explainError())?11:(e=t.explained())?12:-1,e),M(15),L(t.routeRows())}}function LV(e,t){if(e&1&&(z(0,`span`,31),J(1),B(),J(2)),e&2){let e=t.$implicit,n=t.$index,r=t.$count;M(),Y(e),M(),X(``,n===r-1?``:`, `,` `)}}function RV(e,t){if(e&1&&(z(0,`div`,47)(1,`strong`),J(2,`load() ran twice`),B(),J(3,` for `),I(4,LV,3,2,null,null,wg),J(6,` : once while server rendering, again in the browser. TransferState did not serve the server result. `),B()),e&2){let e=K(3);M(4),L(e.duplicates())}}function zV(e,t){if(e&1&&(z(0,`span`,31),J(1),B(),J(2)),e&2){let e=t.$implicit,n=t.$index,r=t.$count;M(),Y(e),M(),X(``,n===r-1?``:`, `,` `)}}function BV(e,t){if(e&1&&(z(0,`div`,47)(1,`strong`),J(2,`Server function read ran twice`),B(),J(3,`: `),I(4,zV,3,2,null,null,wg),J(6,` ran while server rendering, then again in the browser. The browser did not use the TransferState seed. `),B()),e&2){let e=K(3);M(4),L(e.refetchedFns())}}function VV(e,t){if(e&1){let e=W();z(0,`label`)(1,`input`,65),G(`change`,function(){let t=O(e).$implicit;return k(K(3).kind.set(t))}),B(),J(2),z(3,`span`,4),J(4),B()()}if(e&2){let e=t.$implicit,n=K(3);q(`on`,n.kind()===e),M(),R(`checked`,n.kind()===e),M(),X(` `,n.kindLabel(e),` `),M(2),Y(n.kindCount(e))}}function HV(e,t){if(e&1&&(z(0,`strong`,70),J(1),B(),z(2,`span`,73),J(3),B()),e&2){let e=t,n=K(5);M(),Y(e.name),M(2),Y(n.short(e.file))}}function UV(e,t){if(e&1&&(z(0,`span`,70),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.url)}}function WV(e,t){e&1&&(z(0,`span`,34),J(1,`ran during server rendering`),B())}function GV(e,t){if(e&1&&J(0),e&2){let e=K(2).$implicit;X(` to `,e.location,` `)}}function KV(e,t){if(e&1&&(z(0,`span`,34),J(1),P(2,GV,1,1),B()),e&2){let e=K().$implicit,t=K(4);N(`data-tone`,t.outcomeTone(e.outcome)),M(),X(``,t.outcomeLabel(e.outcome),` `),M(),F(e.location?2:-1)}}function qV(e,t){if(e&1&&(z(0,`span`,34),J(1),B()),e&2){let e=K().$implicit;N(`data-mode`,e.render===`ssr`?`ssr`:`client`),M(),Y(e.render===`ssr`?`server rendered`:`client only`)}}function JV(e,t){if(e&1&&(z(0,`details`)(1,`summary`),J(2,`Response`),B(),z(3,`pre`,74),J(4),B()()),e&2){let e=K().$implicit,t=K(4);M(4),Y(t.pretty(e.preview))}}function YV(e,t){e&1&&(z(0,`span`,4),J(1,`in process`),B())}function XV(e,t){if(e&1&&J(0),e&2){let e=K().$implicit;X(` `,e.ms,` ms `)}}function ZV(e,t){if(e&1&&(z(0,`tr`)(1,`td`,67),J(2),B(),z(3,`td`)(4,`span`,34),J(5),B()(),z(6,`td`,68)(7,`div`,42)(8,`span`,69),J(9),B(),P(10,HV,4,2)(11,UV,2,1,`span`,70),P(12,WV,2,0,`span`,34),P(13,KV,3,3,`span`,34),P(14,qV,2,2,`span`,34),B(),P(15,JV,5,1,`details`),B(),z(16,`td`)(17,`span`,71),J(18),B()(),z(19,`td`,72),P(20,YV,2,0,`span`,4)(21,XV,1,1),B(),z(22,`td`,4),J(23),B()()),e&2){let e,n=t.$implicit,r=K(4);M(2),Y(r.time(n.at)),M(2),N(`data-call`,n.kind),M(),Y(r.kindLabel(n.kind)),M(3),N(`data-method`,n.method),M(),Y(n.method),M(),F((e=r.fnOf(n))?10:11,e),M(2),F(n.seeded?12:-1),M(),F(n.outcome?13:-1),M(),F(n.render?14:-1),M(),F(n.preview?15:-1),M(2),N(`data-status`,r.statusClass(n.status)),M(),Y(n.status),M(2),F(n.seeded?20:21),M(3),Y(n.from)}}function QV(e,t){if(e&1&&(z(0,`div`,53)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,29),J(5,`At`),B(),z(6,`th`,29),J(7,`Kind`),B(),z(8,`th`,29),J(9,`Request`),B(),z(10,`th`,29),J(11,`Status`),B(),z(12,`th`,66),J(13,`Duration`),B(),z(14,`th`,29),J(15,`From`),B()()(),z(16,`tbody`),I(17,ZV,24,14,`tr`,null,nV),B()()()),e&2){let e=K(3);M(17),L(e.calls())}}function $V(e,t){e&1&&J(0,` No calls of this kind yet. `)}function eH(e,t){e&1&&J(0,` No calls yet. `)}function tH(e,t){if(e&1&&(z(0,`div`,54)(1,`p`,75),P(2,$V,1,0)(3,eH,1,0),B(),z(4,`p`,4),J(5,` Navigate in the app to see page renders, load() fetches, form actions, server functions and API calls. `),B()()),e&2){let e=K(3);M(2),F(e.allCalls().length?2:3)}}function nH(e,t){if(e&1){let e=W();z(0,`tr`)(1,`td`)(2,`span`,69),J(3),B()(),z(4,`td`,31),J(5),B(),z(6,`td`)(7,`span`,41)(8,`span`,45),J(9),B(),J(10),B()(),z(11,`td`,76)(12,`button`,77),G(`click`,function(){let t=O(e).$implicit;return k(K(3).tryApi(t))}),J(13,` Try `),B()()()}if(e&2){let e=t.$implicit,n=K(3);M(2),N(`data-method`,e.method),M(),Y(e.method),M(2),Y(e.path),M(4),Y(n.dir(e.file)),M(),Y(n.base(e.file)),M(2),N(`aria-label`,`Try `+e.method+` `+e.path)}}function rH(e,t){e&1&&(z(0,`tr`)(1,`td`,46),J(2,` No API routes. Add a handler under src/server/routes to test it here. `),B()())}function iH(e,t){if(e&1&&(z(0,`tr`)(1,`td`)(2,`span`,69),J(3),B()(),z(4,`td`,31),J(5),B(),z(6,`td`)(7,`span`,41)(8,`span`,45),J(9),B(),J(10),B()(),z(11,`td`,79),J(12),B()()),e&2){let e=t.$implicit,n=K(4);M(2),N(`data-method`,e.method),M(),Y(e.method),M(2),Y(e.name),M(4),Y(n.dir(e.file)),M(),Y(n.base(e.file)),M(2),Y(n.fnCalls(e.id))}}function aH(e,t){if(e&1&&(z(0,`h2`),J(1,`Server functions`),B(),z(2,`div`,78)(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,29),J(7,`Method`),B(),z(8,`th`,29),J(9,`Name`),B(),z(10,`th`,29),J(11,`File`),B(),z(12,`th`,66),J(13,`Calls`),B()()(),z(14,`tbody`),I(15,iH,13,6,`tr`,null,nV),B()()()),e&2){let e=K(3);M(15),L(e.serverFns())}}function oH(e,t){if(e&1&&(z(0,`p`,61),J(1),B()),e&2){let e=K(3);M(),Y(e.callsOff)}}function sH(e,t){if(e&1&&(z(0,`p`,62),J(1),B()),e&2){let e=K(3);M(),X(` Tick "This request can change data on the dev server" below to send a `,e.method(),` request. `)}}function cH(e,t){if(e&1){let e=W();z(0,`label`,80),J(1,`JSON body`),B(),z(2,`textarea`,81),G(`input`,function(t){return O(e),k(K(3).apiBody.set(t.target.value))}),B(),z(3,`label`,82)(4,`input`,83),G(`change`,function(){O(e);let t=K(3);return k(t.confirmSend.set(!t.confirmSend()))}),B(),J(5,` This request can change data on the dev server`),B()}if(e&2){let e=K(3);M(2),R(`value`,e.apiBody()),M(2),R(`checked`,e.confirmSend())}}function lH(e,t){if(e&1&&(z(0,`p`,63),J(1),B()),e&2){let e=K(3);M(),Z(`Sending `,e.method(),` `,e.apiPath().trim(),`…`)}}function uH(e,t){if(e&1&&(z(0,`div`,57)(1,`span`,84),J(2,`Refused`),B(),z(3,`span`),J(4),B()()),e&2){let e=K();M(4),Y(e.error)}}function dH(e,t){if(e&1&&(z(0,`div`,57)(1,`span`,71),J(2),B(),z(3,`span`,4),J(4),B()(),z(5,`pre`,74),J(6),B()),e&2){let e=K(),t=K(3);M(),N(`data-status`,t.statusClass(e.status??0)),M(),Y(e.status),M(2),Z(``,e.ms,` ms · `,e.type||`no content type`),M(2),Y(t.pretty(e.body??``))}}function fH(e,t){e&1&&(z(0,`div`,64),P(1,uH,5,1,`div`,57)(2,dH,7,5),B()),e&2&&(M(),F(t.error?1:2))}function pH(e,t){if(e&1){let e=W();P(0,RV,7,0,`div`,47),P(1,BV,7,0,`div`,47),z(2,`div`,48)(3,`fieldset`,49)(4,`legend`,50),J(5,`Show calls of kind`),B(),I(6,VV,5,5,`label`,51,wg),B(),z(8,`button`,52),G(`click`,function(){return O(e),k(K(2).clearCalls())}),J(9,` Clear calls `),B()(),P(10,QV,19,0,`div`,53)(11,tH,6,1,`div`,54),z(12,`h2`),J(13,`API routes`),B(),z(14,`div`,55)(15,`table`)(16,`thead`)(17,`tr`)(18,`th`,29),J(19,`Method`),B(),z(20,`th`,29),J(21,`Path`),B(),z(22,`th`,29),J(23,`File`),B(),z(24,`th`,29)(25,`span`,50),J(26,`Actions`),B()()()(),z(27,`tbody`),I(28,nH,14,6,`tr`,null,aV,!1,rH,3,0,`tr`),B()()(),P(31,aH,17,0),z(32,`form`,56),G(`submit`,function(t){O(e);let n=K(2);return t.preventDefault(),k(n.send())}),z(33,`h2`),J(34,`Request playground`),B(),z(35,`div`,57)(36,`app-select`,58),G(`valueChange`,function(t){return O(e),k(K(2).method.set(t??`GET`))}),B(),z(37,`label`,59),J(38,`Path`),B(),z(39,`input`,60),G(`input`,function(t){return O(e),k(K(2).apiPath.set(t.target.value))}),B(),z(40,`button`,22),J(41),B()(),P(42,oH,2,1,`p`,61)(43,sH,2,1,`p`,62),P(44,cH,6,2),P(45,lH,2,2,`p`,63)(46,fH,3,1,`div`,64),B()}if(e&2){let e,t=K(2);F(t.duplicates().length?0:-1),M(),F(t.refetchedFns().length?1:-1),M(5),L(t.kinds),M(2),R(`disabled`,!t.allCalls().length),M(2),F(t.calls().length?10:11),M(18),L(t.project().api),M(3),F(t.serverFns().length?31:-1),M(5),R(`options`,t.methodOptions)(`value`,t.method()),M(3),R(`value`,t.apiPath()),M(),R(`disabled`,!t.canSend()),N(`aria-describedby`,t.sendHintId()),M(),X(` `,t.sending()?`Sending…`:`Send`,` `),M(),F(t.canCall()?t.needsConfirm()?43:-1:42),M(2),F(t.method()===`GET`?-1:44),M(),F(t.sending()?45:(e=t.response())?46:-1,e)}}function mH(e,t){if(e&1&&(z(0,`span`,34),J(1),B()),e&2){let e=t.$implicit;N(`data-mode`,e.mode),M(),Z(``,e.label,` · `,e.count)}}function hH(e,t){if(e&1&&(z(0,`div`,33),I(1,mH,2,3,`span`,34,sV),B()),e&2){let e=K(3);M(),L(e.modeCounts())}}function gH(e,t){e&1&&(z(0,`span`,89),J(1,`differs from config`),B())}function _H(e,t){if(e&1&&(z(0,`div`,42)(1,`span`,71),J(2),B(),z(3,`span`,88),J(4),B(),P(5,gH,2,0,`span`,89),B()),e&2){let e=t,n=K().$implicit,r=K(3);M(),N(`data-status`,r.statusClass(e.status)),M(),Y(e.status),M(2),Z(``,e.render===`client`?`client only`:`server rendered`,` · `,e.ms,` ms`),M(),F(r.mismatch(n)?5:-1)}}function vH(e,t){e&1&&(z(0,`span`,87),J(1,`not requested yet`),B())}function yH(e,t){if(e&1&&(z(0,`span`,41)(1,`span`,45),J(2),B(),J(3),B()),e&2){let e=K().$implicit,t=K(3);M(2),Y(t.dir(e.file)),M(),Y(t.base(e.file))}}function bH(e,t){if(e&1&&(z(0,`tr`)(1,`td`,39),J(2),B(),z(3,`td`)(4,`div`,42)(5,`span`,34),J(6),B(),z(7,`span`,87),J(8),B()()(),z(9,`td`),P(10,_H,6,5,`div`,42)(11,vH,2,0,`span`,87),B(),z(12,`td`),P(13,yH,4,2,`span`,41),B()()),e&2){let e,n=t.$implicit,r=K(3);M(2),Y(n.path),M(3),N(`data-mode`,n.mode),M(),Y(r.modeLabel(n.mode)),M(2),Y(n.reason),M(2),F((e=n.last)?10:11,e),M(3),F(n.file?13:-1)}}function xH(e,t){e&1&&(z(0,`tr`)(1,`td`,46),J(2,` No page routes to render yet. Add a .page.ts file under src/app/pages. `),B()())}function SH(e,t){e&1&&(z(0,`p`,4),J(1,` prerender.routes is a function, so the list is known only at build time. `),B())}function CH(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function wH(e,t){e&1&&(z(0,`span`,87),J(1,`default, nothing configured`),B())}function TH(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function EH(e,t){if(e&1&&(z(0,`dt`),J(1,`From routeRules`),B(),z(2,`dd`),I(3,TH,2,1,`span`,35,wg),B()),e&2){let e=K(2);M(3),L(e.fromRules)}}function DH(e,t){if(e&1&&(z(0,`span`,92),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function OH(e,t){if(e&1&&(z(0,`dt`),J(1,`Static, not listed`),B(),z(2,`dd`),I(3,DH,2,1,`span`,92,wg),B()),e&2){let e=K(2);M(3),L(e.staticMissing)}}function kH(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function AH(e,t){if(e&1&&(z(0,`dt`),J(1,`Need explicit entries`),B(),z(2,`dd`),I(3,kH,2,1,`span`,35,wg),B()),e&2){let e=K(2);M(3),L(e.dynamic)}}function jH(e,t){if(e&1&&(z(0,`span`,93),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function MH(e,t){if(e&1&&(J(0,` · missing `),I(1,jH,2,1,`span`,93,wg)),e&2){let e=K(3);M(),L(e.notBuilt)}}function NH(e,t){if(e&1&&(J(0),P(1,MH,3,0)),e&2){let e=K(2);X(` `,e.built.length,` page(s) in dist/analog/public `),M(),F(e.notBuilt.length?1:-1)}}function PH(e,t){e&1&&(z(0,`span`,87),J(1,`no build yet`),B())}function FH(e,t){if(e&1&&(z(0,`dl`,90)(1,`dt`),J(2,`Listed`),B(),z(3,`dd`),I(4,CH,2,1,`span`,35,wg),P(6,wH,2,0,`span`,87),B(),P(7,EH,5,0),P(8,OH,5,0),P(9,AH,5,0),z(10,`dt`),J(11,`Build output`),B(),z(12,`dd`,91),P(13,NH,2,2)(14,PH,2,0,`span`,87),B()()),e&2){let e=K();M(4),L(e.listed??ov(5,tV)),M(2),F(e.listed?-1:6),M(),F(e.fromRules?.length?7:-1),M(),F(e.staticMissing.length?8:-1),M(),F(e.dynamic.length?9:-1),M(4),F(e.built.length?13:14)}}function IH(e,t){e&1&&(z(0,`div`,86)(1,`h2`),J(2,`Prerender plan`),B(),P(3,SH,2,0,`p`,4)(4,FH,15,6,`dl`,90),B()),e&2&&(M(3),F(t.dynamicConfig?3:4))}function LH(e,t){if(e&1&&(P(0,hH,3,0,`div`,33),z(1,`div`,85)(2,`table`)(3,`thead`)(4,`tr`)(5,`th`,29),J(6,`Route`),B(),z(7,`th`,29),J(8,`Configured`),B(),z(9,`th`,29),J(10,`Last request`),B(),z(11,`th`,29),J(12,`File`),B()()(),z(13,`tbody`),I(14,bH,14,6,`tr`,null,oV,!1,xH,3,0,`tr`),B()()(),P(17,IH,5,1,`div`,86)),e&2){let e,t=K(2);F(t.modeCounts().length?0:-1),M(14),L(t.renderRows()),M(3),F((e=t.plan())?17:-1,e)}}function RH(e,t){if(e&1&&(z(0,`div`)(1,`span`,96),J(2),B()()),e&2){let e=K().$implicit;M(2),Y(e.error)}}function zH(e,t){if(e&1&&(z(0,`div`)(1,`span`,89),J(2),B()()),e&2){let e=K(5);M(2),X(`takes over `,e.base(t))}}function BH(e,t){if(e&1&&(z(0,`tr`)(1,`td`)(2,`strong`),J(3),B(),P(4,RH,3,1,`div`),P(5,zH,3,1,`div`),B(),z(6,`td`,39),J(7),B(),z(8,`td`,31),J(9),B(),z(10,`td`,95),J(11),B(),z(12,`td`)(13,`span`,41)(14,`span`,45),J(15),B(),J(16),B()()()),e&2){let e,n=t.$implicit,r=K(4);M(3),Y(n.attributes.title||`(no title)`),M(),F(n.error?4:-1),M(),F((e=r.shadowed(n.file))?5:-1,e),M(2),Y(r.contentUrl(n.file)??``),M(2),Y(n.slug),M(2),Y(n.attributes.date||``),M(4),Y(r.dir(n.file)),M(),Y(r.base(n.file))}}function VH(e,t){if(e&1&&(z(0,`div`,94)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,29),J(5,`Title`),B(),z(6,`th`,29),J(7,`URL`),B(),z(8,`th`,29),J(9,`Slug`),B(),z(10,`th`,29),J(11,`Date`),B(),z(12,`th`,29),J(13,`File`),B()()(),z(14,`tbody`),I(15,BH,17,8,`tr`,null,cV),B()()()),e&2){let e=K(3);M(15),L(e.project().content)}}function HH(e,t){e&1&&(z(0,`div`,54)(1,`p`,75),J(2,`No markdown files under src/content.`),B(),z(3,`p`,4),J(4,` Add a .md file there to see its title, slug, date and the URL it serves. `),B()())}function UH(e,t){e&1&&P(0,VH,17,0,`div`,94)(1,HH,5,0,`div`,54),e&2&&F(+!K(2).project().content.length)}function WH(e,t){if(e&1&&(z(0,`span`,17),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.items.length)}}function GH(e,t){if(e&1&&(z(0,`span`,41)(1,`span`,45),J(2),B(),J(3),B()),e&2){let e=K().$implicit,t=K(5);M(2),Y(t.dir(e.file)),M(),Y(t.base(e.file))}}function KH(e,t){if(e&1&&(z(0,`span`,39),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.path)}}function qH(e,t){if(e&1&&(z(0,`p`,104),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.message)}}function JH(e,t){if(e&1&&(z(0,`li`),P(1,GH,4,2,`span`,41),P(2,KH,2,1,`span`,39),P(3,qH,2,1,`p`,104),B()),e&2){let e=t.$implicit;M(),F(e.file?1:-1),M(),F(e.path&&e.path!==e.file?2:-1),M(),F(e.message?3:-1)}}function YH(e,t){if(e&1&&(z(0,`li`)(1,`div`,99)(2,`span`,34),J(3),B(),z(4,`strong`,100),J(5),B(),P(6,WH,2,1,`span`,17),B(),z(7,`p`),J(8),B(),z(9,`ul`,101),I(10,JH,4,3,`li`,null,Cg),B(),z(12,`div`,102)(13,`strong`),J(14,`How to fix`),B(),J(15),B(),z(16,`span`,103),J(17),B()()),e&2){let e=t.$implicit,n=K(4);N(`data-tone`,n.tone(e.severity)),M(2),N(`data-tone`,n.tone(e.severity)),M(),Y(e.severity),M(2),Y(e.title),M(),F(e.items.length>1?6:-1),M(2),Y(e.summary),M(2),L(e.items),M(5),X(` `,e.fix),M(2),Y(e.rule)}}function XH(e,t){if(e&1&&(z(0,`p`,4),J(1),B(),z(2,`ul`,98),I(3,YH,18,8,`li`,null,lV),B()),e&2){let e=K(3);M(),Z(` `,e.findings().length,` issue(s) in `,e.lintCards().length,` group(s). Each card says what is wrong, where, and how to fix it. `),M(2),L(e.lintCards())}}function ZH(e,t){e&1&&(z(0,`div`,97)(1,`strong`),J(2,`No Analog problems found.`),B(),J(3,` Routes, server files, prerender config and content all check out. `),B())}function QH(e,t){e&1&&P(0,XH,5,2)(1,ZH,4,0,`div`,97),e&2&&F(+!K(2).findings().length)}function $H(e,t){if(e&1){let e=W();z(0,`section`,7)(1,`div`,8)(2,`span`,9),J(3,`Analog`),B(),z(4,`span`,10),J(5),B()(),z(6,`div`,8)(7,`span`,9),J(8,`Pages`),B(),z(9,`span`,10),J(10),B()(),z(11,`div`,8)(12,`span`,9),J(13,`API routes`),B(),z(14,`span`,10),J(15),B()(),z(16,`div`,8)(17,`span`,9),J(18,`Server calls`),B(),z(19,`span`,10),J(20),B()(),z(21,`div`,8)(22,`span`,9),J(23,`Issues`),B(),z(24,`span`,10),J(25),B()(),P(26,pV,5,2,`div`,11),B(),z(27,`div`,12),G(`keydown`,function(t){return O(e),k(K().onKey(t))}),I(28,mV,4,7,`button`,13,nV),B(),z(30,`div`,14),P(31,IV,29,6)(32,pH,47,15)(33,LH,18,3)(34,UH,2,1)(35,QH,2,1),B()}if(e&2){let e,t,n=K();M(5),Y(n.project().version||`unknown`),M(5),Y(n.pageCount()),M(5),Y(n.project().api.length),M(5),Y(n.allCalls().length),M(),N(`data-tone`,n.findings().length?`warn`:`good`),M(4),Y(n.findings().length),M(),F((e=n.page())?26:-1,e),M(2),L(n.views()),M(2),R(`id`,`analog-panel-`+n.view()),N(`aria-labelledby`,`analog-tab-`+n.view()),M(),F((t=n.view())===`routes`?31:t===`server`?32:t===`render`?33:t===`content`?34:t===`lint`?35:-1)}}var eU={"scan-error":{title:`A folder could not be read`,summary:`Its files are missing from routes, API routes and lint results.`},"duplicate-url":{title:`Two files serve the same URL`,summary:`Only one of them is reachable; the other never renders.`},"sibling-params":{title:`Two dynamic pages in one folder`,summary:`Both are [param] pages at the same level, so the first one always wins.`},"missing-default-export":{title:`Page has no default export`,summary:`Analog needs the component as the default export, so the page renders nothing.`},"redirect-with-component":{title:`Redirect page also exports a component`,summary:`The redirect runs first, so the component never shows.`},"redirect-path-match":{title:`Redirect matches too much`,summary:`An empty-path redirect without pathMatch "full" catches every URL below it.`},"layout-without-outlet":{title:`Layout has no router-outlet`,summary:`The layout has child pages, but without they never render.`},"server-without-load":{title:`.server.ts without load or action`,summary:`The server file exports no load, action or server function, so Analog calls nothing.`},"orphan-server-file":{title:`.server.ts without a page`,summary:`No page file sits next to it, so its load never runs.`},"api-method-suffix":{title:`Unknown method suffix on an API file`,summary:`The suffix is not an HTTP method, so it becomes part of the URL.`},"duplicate-api-route":{title:`Two handlers for one API route`,summary:`Two files answer the same method and path.`},"api-outside-prefix":{title:`Server route outside the API prefix`,summary:`During vite dev only routes under the prefix reach Nitro.`},"prerender-unknown-route":{title:`Prerender entry matches no page`,summary:`prerender.routes lists a path that no page file serves.`},"prerender-missing-root":{title:`Home page is not prerendered`,summary:`static is on, but prerender.routes leaves out /.`},"content-frontmatter":{title:`Broken frontmatter`,summary:`The markdown frontmatter cannot be read.`},"duplicate-slug":{title:`Two posts share a slug`,summary:`injectContent picks one of them at random.`},"content-shadows-page":{title:`Markdown file takes over a page`,summary:`Files under src/content are routes too, so these URLs render the markdown file instead of the [param] page.`},"load-fetched-twice":{title:`load() runs twice`,summary:`These pages fetched their data while rendering on the server and again in the browser.`},"fn-fetched-twice":{title:`Server function read runs twice`,summary:`These reads ran while rendering on the server and again in the browser right after hydration.`},"restart-needed":{title:`New pages need a restart`,summary:`These page files exist, but the running router does not know them yet.`},"hydration-error":{title:`Hydration error`,summary:`The browser DOM did not match the server HTML.`},"api-not-found":{title:`API call failed with 404 or 405`,summary:`A request hit a path or method that no server route handles.`}},tU=new Set([`missing-default-export`,`redirect-with-component`,`redirect-path-match`,`layout-without-outlet`,`server-without-load`,`orphan-server-file`,`load-fetched-twice`,`restart-needed`,`prerender-missing-root`]),nU={ssr:`SSR`,ssg:`Prerendered`,client:`Client only`,cached:`Cached`,redirect:`Redirect`},rU={all:`All`,page:`Pages`,load:`load()`,action:`Actions`,fn:`Server fn`,api:`API`},iU={success:`succeeded`,redirect:`redirected`,invalid:`validation errors`,error:`failed`},aU={success:`good`,redirect:`info`,invalid:`warn`,error:`bad`};function oU(e,t=0,n=[]){for(let r of e)n.push({route:r,depth:t}),oU(r.children,t+1,n);return n}var sU=class e{rpc=$(null);canCall=Q(()=>bE(this.rpc(),`analog`));callsOff=KT(`analog`);kinds=[`all`,`page`,`load`,`action`,`fn`,`api`];methods=[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`];methodOptions=this.methods.map(e=>({value:e,label:e}));view=j(`routes`);project=j(null);loadFailed=j(!1);state=j({});findings=j([]);renderRows=j([]);plan=j(null);filter=j(``);testUrl=j(``);explained=j(null);explainError=j(``);explaining=j(!1);kind=j(`all`);method=j(`GET`);apiPath=j(``);apiBody=j(``);confirmSend=j(!1);response=j(null);sending=j(!1);needsConfirm=Q(()=>this.method()!==`GET`&&!this.confirmSend());canSend=Q(()=>this.canCall()&&!this.sending()&&!this.needsConfirm());sendHintId=Q(()=>this.canCall()?this.needsConfirm()?`analog-confirm-hint`:null:`analog-calls-off`);unsubscribe=null;refreshTimer;refreshRun=0;destroyRef=E(Cs);hostPageId=eE();page=Q(()=>{let e=this.state().pages??[];return(this.hostPageId?e.find(e=>e.pageId===this.hostPageId):e[0])??null});openFiles=Q(()=>new Set((this.page()?.chain??[]).map(e=>e.file)));allCalls=Q(()=>this.state().calls??[]);calls=Q(()=>{let e=this.kind();return this.allCalls().filter(t=>e===`all`||t.kind===e).slice(-150).reverse()});allRoutes=Q(()=>oU(this.project()?.routes??[]));pageCount=Q(()=>this.allRoutes().filter(e=>e.route.file&&e.route.kind!==`layout`).length);routeRows=Q(()=>{let e=this.filter().trim().toLowerCase();return e?this.allRoutes().filter(t=>t.route.fullPath.toLowerCase().includes(e)||!!t.route.file?.toLowerCase().includes(e)):this.allRoutes()});serverFns=Q(()=>this.project()?.serverFns??[]);fnById=Q(()=>new Map(this.serverFns().map(e=>[e.id,e])));refetchedFns=Q(()=>Array.from(new Set((this.state().refetches??[]).map(e=>this.fnById().get(e.id)?.name??e.id))));duplicates=Q(()=>Array.from(new Set((this.state().duplicates??[]).map(e=>e.route))));modeCounts=Q(()=>[`ssr`,`ssg`,`cached`,`client`,`redirect`].map(e=>({mode:e,label:nU[e],count:this.renderRows().filter(t=>t.mode===e).length})).filter(e=>e.count));lintCards=Q(()=>{let e={error:0,warning:1,info:2},t=new Map;for(let e of this.findings()){let n=t.get(e.rule);if(!n){let r=eU[e.rule];n={rule:e.rule,severity:e.severity,title:r?.title??e.rule,summary:r?.summary??e.message,fix:e.fix,items:[]},t.set(e.rule,n)}let r=tU.has(e.rule)||e.message===n.summary?void 0:e.message;n.items.some(t=>t.file===e.file&&t.path===e.path&&t.message===r)||n.items.push({file:e.file,path:e.path,message:r})}return Array.from(t.values()).sort((t,n)=>e[t.severity]-e[n.severity])});views=Q(()=>{let e=this.findings().length;return[{id:`routes`,label:`Routes`,count:this.pageCount(),tone:``},{id:`server`,label:`Server`,count:this.allCalls().length,tone:``},{id:`render`,label:`Render`,count:this.renderRows().length,tone:``},{id:`content`,label:`Content`,count:this.project()?.content.length??0,tone:``},{id:`lint`,label:`Lint`,count:e,tone:e?`warn`:``}]});constructor(){uc(()=>{let e=this.rpc();e&&Cv(()=>void this.load(e))}),uc(()=>{let e=this.view();this.state(),Cv(()=>this.scheduleRefresh(e))}),this.destroyRef.onDestroy(()=>{this.unsubscribe?.(),clearTimeout(this.refreshTimer)})}async load(e){let t=await aE(e,`analog-project`);if(!this.destroyRef.destroyed){this.project.set(t),this.loadFailed.set(t===null);try{let t=await e.scope(`pangular`).rpc.sharedState(`analog`);if(this.destroyRef.destroyed)return;let n=e=>this.state.set(e??{});n(t.value()),this.unsubscribe?.(),this.unsubscribe=t.on(`updated`,n)}catch{this.state.set({})}this.destroyRef.destroyed||await this.refresh(this.view())}}retry(){let e=this.rpc();e&&(this.loadFailed.set(!1),this.load(e))}scheduleRefresh(e){clearTimeout(this.refreshTimer),this.refreshTimer=setTimeout(()=>void this.refresh(e),300)}async refresh(e){let t=this.rpc();if(!t)return;let n=++this.refreshRun,[r,i]=await Promise.all([aE(t,`analog-lint`),aE(t,`analog-render`)]);if(n===this.refreshRun&&(this.findings.set(r??[]),this.renderRows.set(i?.rows??[]),this.plan.set(i?.plan??null),e===`routes`||e===`content`||this.project()===null)){let e=await aE(t,`analog-project`);e&&n===this.refreshRun&&(this.project.set(e),this.loadFailed.set(!1))}}isOpen(e){return!!e.file&&this.openFiles().has(e.file)}kindText(e){return e.catchAll?e.catchAll===`optional`?`optional catch-all`:`catch-all`:e.kind===`implicit`?`folder`:e.kind}serverExports(e){return(e.serverExports??[]).filter(e=>e===`load`||e===`action`)}short(e){return e?.replace(/^\/src\/app\//,``).replace(/^\//,``)}dir(e){let t=this.short(e)??e;return t.includes(`/`)?t.slice(0,t.lastIndexOf(`/`)+1):``}base(e){return e.slice(e.lastIndexOf(`/`)+1)}paramList(e){return Object.entries(e)}kindLabel(e){return rU[e]}kindCount(e){return e===`all`?this.allCalls().length:this.allCalls().filter(t=>t.kind===e).length}modeLabel(e){return nU[e]}mismatch(e){return!e.last?.render||e.mode===`redirect`?!1:e.mode===`client`?e.last.render!==`client`:e.last.render===`client`}fnOf(e){return e.kind===`fn`&&e.route?this.fnById().get(e.route):void 0}fnCalls(e){return this.allCalls().filter(t=>t.kind===`fn`&&t.route===e).length}outcomeLabel(e){return iU[e]}outcomeTone(e){return aU[e]}statusClass(e){return e>=500||e===0?`bad`:e>=400?`warn`:`good`}tone(e){return e===`error`?`bad`:e===`warning`?`warn`:`info`}shadowed(e){return this.findings().find(t=>t.rule===`content-shadows-page`&&t.file===e)?.message.match(/(\/\S+\.page\.ts)/)?.[1]}contentUrl(e){return this.allRoutes().find(t=>t.route.file===e)?.route.fullPath}pretty(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}time=RD;tryApi(e){this.method.set(e.method===`ANY`?`GET`:e.method),this.apiPath.set(e.path.replace(/:(\w+)/g,`1`).replace(`**`,`x`)),this.response.set(null),queueMicrotask(()=>document.getElementById(`api-path`)?.focus())}async clearCalls(){await aE(this.rpc(),`analog-clear-calls`)}async explain(){let e=this.testUrl().trim();if(!e){this.explained.set(null),this.explainError.set(`Type a URL to explain, for example /products/42.`);return}this.explaining.set(!0),this.explainError.set(``);try{let t=await iE(this.rpc(),`analog-explain-url`,e);if(!t)throw Error(`The devtools server did not answer`);this.explained.set({url:e,match:t})}catch(t){let n=String(t?.message||`The devtools server did not answer`);this.explained.set(null),this.explainError.set(`Could not explain ${e}. ${n.replace(/\.?$/,`.`)}`)}finally{this.explaining.set(!1)}}async send(){let e=this.apiPath().trim();if(!e||this.sending()||this.needsConfirm())return;let t;if(this.method()!==`GET`&&this.apiBody().trim())try{t=JSON.parse(this.apiBody())}catch{this.response.set({error:`The body is not valid JSON.`});return}this.response.set(null),this.sending.set(!0);try{let n=await aE(this.rpc(),`analog-call-api`,{method:this.method(),path:e,body:t,confirm:this.confirmSend()});this.response.set(n??{error:`No answer from the devtools server.`})}finally{this.sending.set(!1)}}onKey(e){let t=this.views().map(e=>e.id),n=t.indexOf(this.view()),r=n;if(e.key===`ArrowRight`)r=(n+1)%t.length;else if(e.key===`ArrowLeft`)r=(n-1+t.length)%t.length;else if(e.key===`Home`)r=0;else if(e.key===`End`)r=t.length-1;else return;e.preventDefault(),this.view.set(t[r]);let i=e.currentTarget;queueMicrotask(()=>i.querySelector(`#analog-tab-${t[r]}`)?.focus())}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-analog-inspector`]],inputs:{rpc:[1,`rpc`]},decls:4,vars:1,consts:[[`role`,`alert`,1,`empty`],[`role`,`status`,1,`loading`],[1,`empty`],[1,`empty-title`],[1,`muted`],[`type`,`button`,1,`btn`,3,`click`],[`aria-hidden`,`true`,1,`spinner`],[`aria-label`,`Analog summary`,1,`summary`],[1,`stat`],[1,`label`],[1,`value`],[1,`stat`,`wide`],[`role`,`tablist`,`aria-label`,`Analog views`,1,`tabs`,3,`keydown`],[`type`,`button`,`role`,`tab`,3,`id`],[`role`,`tabpanel`,1,`panel`,3,`id`],[1,`value`,`mono`,3,`title`],[`type`,`button`,`role`,`tab`,3,`click`,`id`],[1,`count`],[1,`toolbar`],[1,`inline`,`explain`,3,`submit`],[`for`,`analog-url`],[`id`,`analog-url`,`type`,`text`,`placeholder`,`/products/42`,1,`field`,`grow`,`mono`,3,`input`,`value`],[`type`,`submit`,1,`btn`,`primary`,3,`disabled`],[`for`,`route-filter`,1,`sr-only`],[`id`,`route-filter`,`type`,`search`,`placeholder`,`Filter by path or file`,1,`field`,`filter`,3,`input`,`value`],[`role`,`status`,1,`explain-result`],[`data-tone`,`bad`,1,`callout`],[1,`callout`],[`role`,`region`,`aria-label`,`File routes`,`tabindex`,`0`,1,`table-wrap`],[`scope`,`col`],[3,`open`,`dim`],[1,`mono`],[1,`chain`],[1,`chips`],[1,`pill`],[1,`chip`,`mono`],[1,`plain`],[1,`route`],[`aria-hidden`,`true`,1,`guide`],[1,`mono`,`path`],[1,`pill`,`live`],[1,`file`],[1,`meta`],[`data-kind`,`load`,1,`pill`],[1,`chip`],[1,`dir`],[`colspan`,`4`,1,`empty-row`],[`data-tone`,`warn`,`role`,`note`,1,`callout`],[1,`calls-bar`],[1,`segmented`],[1,`sr-only`],[3,`on`],[`type`,`button`,1,`btn`,`ghost`,3,`click`,`disabled`],[`role`,`region`,`aria-label`,`Server calls`,`tabindex`,`0`,1,`table-wrap`],[1,`empty-box`],[`role`,`region`,`aria-label`,`API routes`,`tabindex`,`0`,1,`table-wrap`],[1,`card`,`playground`,3,`submit`],[1,`row`],[`ariaLabel`,`Method`,1,`method-select`,3,`valueChange`,`options`,`value`],[`for`,`api-path`,1,`sr-only`],[`id`,`api-path`,`type`,`text`,`placeholder`,`/api/v1/products`,1,`field`,`grow`,`mono`,3,`input`,`value`],[`id`,`analog-calls-off`,1,`muted`],[`id`,`analog-confirm-hint`,1,`muted`],[`role`,`status`,1,`muted`],[`role`,`status`,1,`response`],[`type`,`radio`,`name`,`analog-kind`,1,`sr-only`,3,`change`,`checked`],[`scope`,`col`,1,`num`],[1,`muted`,`nowrap`],[1,`request`],[1,`method`],[1,`mono`,`url`],[1,`status`],[1,`num`,`nowrap`],[1,`mono`,`muted`],[1,`code`],[1,`empty-lead`],[1,`actions`],[`type`,`button`,1,`btn`,`ghost`,3,`click`],[`role`,`region`,`aria-label`,`Server functions`,`tabindex`,`0`,1,`table-wrap`],[1,`num`,`tnum`],[`for`,`api-body`],[`id`,`api-body`,`rows`,`3`,`placeholder`,`{"name": "Ada"}`,1,`field`,`mono`,3,`input`,`value`],[1,`check`],[`type`,`checkbox`,3,`change`,`checked`],[`data-status`,`bad`,1,`status`],[`role`,`region`,`aria-label`,`Render modes`,`tabindex`,`0`,1,`table-wrap`],[1,`card`],[1,`muted`,`small`],[1,`muted`,`small`,`tnum`],[`data-tone`,`warn`,1,`pill`],[1,`facts`],[1,`tnum`],[`data-tone`,`warn`,1,`chip`,`mono`],[`data-tone`,`bad`,1,`chip`,`mono`],[`role`,`region`,`aria-label`,`Content files`,`tabindex`,`0`,1,`table-wrap`],[1,`muted`,`nowrap`,`tnum`],[`data-tone`,`bad`,1,`pill`],[`data-tone`,`good`,`role`,`status`,1,`callout`],[1,`findings`],[1,`finding-head`],[1,`finding-title`],[1,`where`],[1,`fix`],[1,`rule`,`mono`],[1,`detail`]],template:function(e,t){e&1&&P(0,uV,7,0,`div`,0)(1,dV,4,0,`div`,1)(2,fV,14,0,`div`,2)(3,$H,36,10),e&2&&F(t.project()===null&&t.loadFailed()?0:t.project()===null?1:t.project().analog?3:2)},dependencies:[AD],styles:[`@charset "UTF-8"; +}`]})},nV=()=>[],rV=()=>[`/`],iV=(e,t)=>t.id,aV=(e,t)=>t.route.id,oV=(e,t)=>t[0],sV=(e,t)=>t.file+t.method,cV=(e,t)=>t.path,lV=(e,t)=>t.mode,uV=(e,t)=>t.file,dV=(e,t)=>t.rule;function fV(e,t){if(e&1){let e=W();z(0,`div`,0)(1,`h2`,3),J(2,`Could not read the project.`),B(),z(3,`p`,4),J(4,` Check that the dev server with Pangular Inspector is still running, then retry. `),B(),z(5,`button`,5),G(`click`,function(){return O(e),k(K().retry())}),J(6,`Retry`),B()()}}function pV(e,t){e&1&&(z(0,`div`,1),V(1,`span`,6),z(2,`span`),J(3,`Reading the project…`),B()())}function mV(e,t){e&1&&(z(0,`div`,2)(1,`h2`,3),J(2,`This app is not an Analog app.`),B(),z(3,`p`,4),J(4,` Add `),z(5,`code`),J(6,`pangular()`),B(),J(7,` from `),z(8,`code`),J(9,`@pangular-inspector/devtools/vite`),B(),J(10,` next to `),z(11,`code`),J(12,`analog()`),B(),J(13,` in vite.config.ts and run the Analog dev server. `),B()())}function hV(e,t){if(e&1&&(z(0,`div`,11)(1,`span`,9),J(2,`Open in the browser`),B(),z(3,`span`,15),J(4),B()()),e&2){let e=t;M(3),R(`title`,e.url),M(),Y(e.url)}}function gV(e,t){if(e&1){let e=W();z(0,`button`,16),G(`click`,function(){let t=O(e).$implicit;return k(K(2).view.set(t.id))}),J(1),z(2,`span`,17),J(3),B()()}if(e&2){let e=t.$implicit,n=K(2);R(`id`,`analog-tab-`+e.id),N(`aria-selected`,e.id===n.view())(`aria-controls`,`analog-panel-`+e.id)(`tabindex`,e.id===n.view()?0:-1),M(),X(` `,e.label,` `),M(),N(`data-tone`,e.tone),M(),Y(e.count)}}function _V(e,t){e&1&&(z(0,`div`,26),J(1),B()),e&2&&(M(),Y(t))}function vV(e,t){if(e&1&&(z(0,`li`)(1,`span`,31),J(2),B(),z(3,`span`,34),J(4),B()()),e&2){let e=t.$implicit,n=K(5);M(2),Y(n.short(e.file)??e.fullPath),M(),N(`data-kind`,e.kind),M(),Y(e.kind)}}function yV(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Z(``,e[0],` = `,e[1])}}function bV(e,t){if(e&1&&(z(0,`div`,33),I(1,yV,2,2,`span`,35,oV),B()),e&2){let e=K(2),t=K(3);M(),L(t.paramList(e.match.params))}}function xV(e,t){if(e&1&&(z(0,`strong`,31),J(1),B(),J(2,` renders `),z(3,`ol`,32),I(4,vV,5,3,`li`,null,iV),B(),P(6,bV,3,0,`div`,33)),e&2){let e=K(),t=K(3);M(),Y(e.url),M(3),L(e.match.chain),M(2),F(t.paramList(e.match.params).length?6:-1)}}function SV(e,t){if(e&1&&(z(0,`li`)(1,`span`,31),J(2),B(),z(3,`span`,4),J(4),B()()),e&2){let e=t.$implicit,n=K(6);M(2),Y(n.short(e.file)??e.path),M(2),Y(e.reason)}}function CV(e,t){if(e&1&&(z(0,`ul`,36),I(1,SV,5,2,`li`,null,Cg),B()),e&2){let e=K(2);M(),L(e.match.rejected.slice(0,5))}}function wV(e,t){if(e&1&&(z(0,`strong`,31),J(1),B(),J(2,` matches no file route. Angular throws NG04002 "Cannot match any routes". `),P(3,CV,3,0,`ul`,36)),e&2){let e=K();M(),Y(e.url),M(2),F(e.match.rejected.length?3:-1)}}function TV(e,t){if(e&1&&(z(0,`div`,27),P(1,xV,7,2)(2,wV,4,2),B()),e&2){let e=t;N(`data-tone`,e.match.matched?`good`:`bad`),M(),F(e.match.matched?1:2)}}function EV(e,t){e&1&&(z(0,`span`,38),J(1,`└`),B())}function DV(e,t){e&1&&(z(0,`span`,40),J(1,`open`),B())}function OV(e,t){if(e&1&&(z(0,`span`,41)(1,`span`,45),J(2),B(),J(3),B()),e&2){let e=K().$implicit,t=K(3);M(2),Y(t.dir(e.route.file)),M(),Y(t.base(e.route.file))}}function kV(e,t){e&1&&(z(0,`span`,4),J(1,`folder only`),B())}function AV(e,t){if(e&1&&(z(0,`span`,43),J(1),B()),e&2){let e=t.$implicit;M(),X(``,e,`()`)}}function jV(e,t){if(e&1&&(z(0,`span`,44),J(1),B()),e&2){let e=K().$implicit;M(),X(`"`,e.route.title,`"`)}}function MV(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=K().$implicit;M(),Y(e)}}function NV(e,t){if(e&1&&P(0,MV,2,1,`span`,35),e&2){let e=t.$implicit;F(e===`title`?-1:0)}}function PV(e,t){if(e&1&&(z(0,`tr`)(1,`td`)(2,`div`,37),P(3,EV,2,0,`span`,38),z(4,`span`,39),J(5),B(),z(6,`span`,34),J(7),B(),P(8,DV,2,0,`span`,40),B()(),z(9,`td`),P(10,OV,4,2,`span`,41)(11,kV,2,0,`span`,4),B(),z(12,`td`)(13,`div`,42),I(14,AV,2,1,`span`,43,wg),B()(),z(16,`td`),P(17,jV,2,1,`span`,44),I(18,NV,1,1,null,null,wg),B()()),e&2){let e=t.$implicit,n=K(3);q(`open`,n.isOpen(e.route))(`dim`,e.route.kind===`group`||e.route.kind===`implicit`),M(2),C_(`padding-left`,e.depth*16,`px`),M(),F(e.depth?3:-1),M(2),Y(e.route.fullPath),M(),N(`data-kind`,e.route.kind),M(),Y(n.kindText(e.route)),M(),F(n.isOpen(e.route)?8:-1),M(2),F(e.route.file?10:11),M(4),L(n.serverExports(e.route)),M(3),F(e.route.title?17:-1),M(),L(e.route.routeMeta??ov(13,nV))}}function FV(e,t){e&1&&J(0,` No route matches the filter. Try part of a path or a file name. `)}function IV(e,t){e&1&&J(0,` No file routes yet. Add a .page.ts file under src/app/pages. `)}function LV(e,t){if(e&1&&(z(0,`tr`)(1,`td`,46),P(2,FV,1,0)(3,IV,1,0),B()()),e&2){let e=K(3);M(2),F(e.filter().trim()?2:3)}}function RV(e,t){if(e&1){let e=W();z(0,`div`,18)(1,`form`,19),G(`submit`,function(t){O(e);let n=K(2);return t.preventDefault(),k(n.explain())}),z(2,`label`,20),J(3,`Test a URL`),B(),z(4,`input`,21),G(`input`,function(t){return O(e),k(K(2).testUrl.set(t.target.value))}),B(),z(5,`button`,22),J(6),B()(),z(7,`label`,23),J(8,`Filter routes`),B(),z(9,`input`,24),G(`input`,function(t){return O(e),k(K(2).filter.set(t.target.value))}),B()(),z(10,`div`,25),P(11,_V,2,1,`div`,26)(12,TV,3,2,`div`,27),B(),z(13,`div`,28)(14,`table`)(15,`thead`)(16,`tr`)(17,`th`,29),J(18,`Route`),B(),z(19,`th`,29),J(20,`File`),B(),z(21,`th`,29),J(22,`Data`),B(),z(23,`th`,29),J(24,`Route meta`),B()()(),z(25,`tbody`),I(26,PV,20,14,`tr`,30,aV,!1,LV,4,1,`tr`),B()()()}if(e&2){let e,t=K(2);M(4),R(`value`,t.testUrl()),M(),R(`disabled`,t.explaining()),M(),X(` `,t.explaining()?`Explaining…`:`Explain`,` `),M(3),R(`value`,t.filter()),M(2),F((e=t.explainError())?11:(e=t.explained())?12:-1,e),M(15),L(t.routeRows())}}function zV(e,t){if(e&1&&(z(0,`span`,31),J(1),B(),J(2)),e&2){let e=t.$implicit,n=t.$index,r=t.$count;M(),Y(e),M(),X(``,n===r-1?``:`, `,` `)}}function BV(e,t){if(e&1&&(z(0,`div`,47)(1,`strong`),J(2,`load() ran twice`),B(),J(3,` for `),I(4,zV,3,2,null,null,wg),J(6,` : once while server rendering, again in the browser. TransferState did not serve the server result. `),B()),e&2){let e=K(3);M(4),L(e.duplicates())}}function VV(e,t){if(e&1&&(z(0,`span`,31),J(1),B(),J(2)),e&2){let e=t.$implicit,n=t.$index,r=t.$count;M(),Y(e),M(),X(``,n===r-1?``:`, `,` `)}}function HV(e,t){if(e&1&&(z(0,`div`,47)(1,`strong`),J(2,`Server function read ran twice`),B(),J(3,`: `),I(4,VV,3,2,null,null,wg),J(6,` ran while server rendering, then again in the browser. The browser did not use the TransferState seed. `),B()),e&2){let e=K(3);M(4),L(e.refetchedFns())}}function UV(e,t){if(e&1){let e=W();z(0,`label`)(1,`input`,65),G(`change`,function(){let t=O(e).$implicit;return k(K(3).kind.set(t))}),B(),J(2),z(3,`span`,4),J(4),B()()}if(e&2){let e=t.$implicit,n=K(3);q(`on`,n.kind()===e),M(),R(`checked`,n.kind()===e),M(),X(` `,n.kindLabel(e),` `),M(2),Y(n.kindCount(e))}}function WV(e,t){if(e&1&&(z(0,`strong`,70),J(1),B(),z(2,`span`,73),J(3),B()),e&2){let e=t,n=K(5);M(),Y(e.name),M(2),Y(n.short(e.file))}}function GV(e,t){if(e&1&&(z(0,`span`,70),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.url)}}function KV(e,t){e&1&&(z(0,`span`,34),J(1,`ran during server rendering`),B())}function qV(e,t){if(e&1&&J(0),e&2){let e=K(2).$implicit;X(` to `,e.location,` `)}}function JV(e,t){if(e&1&&(z(0,`span`,34),J(1),P(2,qV,1,1),B()),e&2){let e=K().$implicit,t=K(4);N(`data-tone`,t.outcomeTone(e.outcome)),M(),X(``,t.outcomeLabel(e.outcome),` `),M(),F(e.location?2:-1)}}function YV(e,t){if(e&1&&(z(0,`span`,34),J(1),B()),e&2){let e=K().$implicit;N(`data-mode`,e.render===`ssr`?`ssr`:`client`),M(),Y(e.render===`ssr`?`server rendered`:`client only`)}}function XV(e,t){if(e&1&&(z(0,`details`)(1,`summary`),J(2,`Response`),B(),z(3,`pre`,74),J(4),B()()),e&2){let e=K().$implicit,t=K(4);M(4),Y(t.pretty(e.preview))}}function ZV(e,t){e&1&&(z(0,`span`,4),J(1,`in process`),B())}function QV(e,t){if(e&1&&J(0),e&2){let e=K().$implicit;X(` `,e.ms,` ms `)}}function $V(e,t){if(e&1&&(z(0,`tr`)(1,`td`,67),J(2),B(),z(3,`td`)(4,`span`,34),J(5),B()(),z(6,`td`,68)(7,`div`,42)(8,`span`,69),J(9),B(),P(10,WV,4,2)(11,GV,2,1,`span`,70),P(12,KV,2,0,`span`,34),P(13,JV,3,3,`span`,34),P(14,YV,2,2,`span`,34),B(),P(15,XV,5,1,`details`),B(),z(16,`td`)(17,`span`,71),J(18),B()(),z(19,`td`,72),P(20,ZV,2,0,`span`,4)(21,QV,1,1),B(),z(22,`td`,4),J(23),B()()),e&2){let e,n=t.$implicit,r=K(4);M(2),Y(r.time(n.at)),M(2),N(`data-call`,n.kind),M(),Y(r.kindLabel(n.kind)),M(3),N(`data-method`,n.method),M(),Y(n.method),M(),F((e=r.fnOf(n))?10:11,e),M(2),F(n.seeded?12:-1),M(),F(n.outcome?13:-1),M(),F(n.render?14:-1),M(),F(n.preview?15:-1),M(2),N(`data-status`,r.statusClass(n.status)),M(),Y(n.status),M(2),F(n.seeded?20:21),M(3),Y(n.from)}}function eH(e,t){if(e&1&&(z(0,`div`,53)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,29),J(5,`At`),B(),z(6,`th`,29),J(7,`Kind`),B(),z(8,`th`,29),J(9,`Request`),B(),z(10,`th`,29),J(11,`Status`),B(),z(12,`th`,66),J(13,`Duration`),B(),z(14,`th`,29),J(15,`From`),B()()(),z(16,`tbody`),I(17,$V,24,14,`tr`,null,iV),B()()()),e&2){let e=K(3);M(17),L(e.calls())}}function tH(e,t){e&1&&J(0,` No calls of this kind yet. `)}function nH(e,t){e&1&&J(0,` No calls yet. `)}function rH(e,t){if(e&1&&(z(0,`div`,54)(1,`p`,75),P(2,tH,1,0)(3,nH,1,0),B(),z(4,`p`,4),J(5,` Navigate in the app to see page renders, load() fetches, form actions, server functions and API calls. `),B()()),e&2){let e=K(3);M(2),F(e.allCalls().length?2:3)}}function iH(e,t){if(e&1){let e=W();z(0,`tr`)(1,`td`)(2,`span`,69),J(3),B()(),z(4,`td`,31),J(5),B(),z(6,`td`)(7,`span`,41)(8,`span`,45),J(9),B(),J(10),B()(),z(11,`td`,76)(12,`button`,77),G(`click`,function(){let t=O(e).$implicit;return k(K(3).tryApi(t))}),J(13,` Try `),B()()()}if(e&2){let e=t.$implicit,n=K(3);M(2),N(`data-method`,e.method),M(),Y(e.method),M(2),Y(e.path),M(4),Y(n.dir(e.file)),M(),Y(n.base(e.file)),M(2),N(`aria-label`,`Try `+e.method+` `+e.path)}}function aH(e,t){e&1&&(z(0,`tr`)(1,`td`,46),J(2,` No API routes. Add a handler under src/server/routes to test it here. `),B()())}function oH(e,t){if(e&1&&(z(0,`tr`)(1,`td`)(2,`span`,69),J(3),B()(),z(4,`td`,31),J(5),B(),z(6,`td`)(7,`span`,41)(8,`span`,45),J(9),B(),J(10),B()(),z(11,`td`,79),J(12),B()()),e&2){let e=t.$implicit,n=K(4);M(2),N(`data-method`,e.method),M(),Y(e.method),M(2),Y(e.name),M(4),Y(n.dir(e.file)),M(),Y(n.base(e.file)),M(2),Y(n.fnCalls(e.id))}}function sH(e,t){if(e&1&&(z(0,`h2`),J(1,`Server functions`),B(),z(2,`div`,78)(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,29),J(7,`Method`),B(),z(8,`th`,29),J(9,`Name`),B(),z(10,`th`,29),J(11,`File`),B(),z(12,`th`,66),J(13,`Calls`),B()()(),z(14,`tbody`),I(15,oH,13,6,`tr`,null,iV),B()()()),e&2){let e=K(3);M(15),L(e.serverFns())}}function cH(e,t){if(e&1&&(z(0,`p`,61),J(1),B()),e&2){let e=K(3);M(),Y(e.callsOff)}}function lH(e,t){if(e&1&&(z(0,`p`,62),J(1),B()),e&2){let e=K(3);M(),X(` Tick "This request can change data on the dev server" below to send a `,e.method(),` request. `)}}function uH(e,t){if(e&1){let e=W();z(0,`label`,80),J(1,`JSON body`),B(),z(2,`textarea`,81),G(`input`,function(t){return O(e),k(K(3).apiBody.set(t.target.value))}),B(),z(3,`label`,82)(4,`input`,83),G(`change`,function(){O(e);let t=K(3);return k(t.confirmSend.set(!t.confirmSend()))}),B(),J(5,` This request can change data on the dev server`),B()}if(e&2){let e=K(3);M(2),R(`value`,e.apiBody()),M(2),R(`checked`,e.confirmSend())}}function dH(e,t){if(e&1&&(z(0,`p`,63),J(1),B()),e&2){let e=K(3);M(),Z(`Sending `,e.method(),` `,e.apiPath().trim(),`…`)}}function fH(e,t){if(e&1&&(z(0,`div`,57)(1,`span`,84),J(2,`Refused`),B(),z(3,`span`),J(4),B()()),e&2){let e=K();M(4),Y(e.error)}}function pH(e,t){if(e&1&&(z(0,`div`,57)(1,`span`,71),J(2),B(),z(3,`span`,4),J(4),B()(),z(5,`pre`,74),J(6),B()),e&2){let e=K(),t=K(3);M(),N(`data-status`,t.statusClass(e.status??0)),M(),Y(e.status),M(2),Z(``,e.ms,` ms · `,e.type||`no content type`),M(2),Y(t.pretty(e.body??``))}}function mH(e,t){e&1&&(z(0,`div`,64),P(1,fH,5,1,`div`,57)(2,pH,7,5),B()),e&2&&(M(),F(t.error?1:2))}function hH(e,t){if(e&1){let e=W();P(0,BV,7,0,`div`,47),P(1,HV,7,0,`div`,47),z(2,`div`,48)(3,`fieldset`,49)(4,`legend`,50),J(5,`Show calls of kind`),B(),I(6,UV,5,5,`label`,51,wg),B(),z(8,`button`,52),G(`click`,function(){return O(e),k(K(2).clearCalls())}),J(9,` Clear calls `),B()(),P(10,eH,19,0,`div`,53)(11,rH,6,1,`div`,54),z(12,`h2`),J(13,`API routes`),B(),z(14,`div`,55)(15,`table`)(16,`thead`)(17,`tr`)(18,`th`,29),J(19,`Method`),B(),z(20,`th`,29),J(21,`Path`),B(),z(22,`th`,29),J(23,`File`),B(),z(24,`th`,29)(25,`span`,50),J(26,`Actions`),B()()()(),z(27,`tbody`),I(28,iH,14,6,`tr`,null,sV,!1,aH,3,0,`tr`),B()()(),P(31,sH,17,0),z(32,`form`,56),G(`submit`,function(t){O(e);let n=K(2);return t.preventDefault(),k(n.send())}),z(33,`h2`),J(34,`Request playground`),B(),z(35,`div`,57)(36,`app-select`,58),G(`valueChange`,function(t){return O(e),k(K(2).method.set(t??`GET`))}),B(),z(37,`label`,59),J(38,`Path`),B(),z(39,`input`,60),G(`input`,function(t){return O(e),k(K(2).apiPath.set(t.target.value))}),B(),z(40,`button`,22),J(41),B()(),P(42,cH,2,1,`p`,61)(43,lH,2,1,`p`,62),P(44,uH,6,2),P(45,dH,2,2,`p`,63)(46,mH,3,1,`div`,64),B()}if(e&2){let e,t=K(2);F(t.duplicates().length?0:-1),M(),F(t.refetchedFns().length?1:-1),M(5),L(t.kinds),M(2),R(`disabled`,!t.allCalls().length),M(2),F(t.calls().length?10:11),M(18),L(t.project().api),M(3),F(t.serverFns().length?31:-1),M(5),R(`options`,t.methodOptions)(`value`,t.method()),M(3),R(`value`,t.apiPath()),M(),R(`disabled`,!t.canSend()),N(`aria-describedby`,t.sendHintId()),M(),X(` `,t.sending()?`Sending…`:`Send`,` `),M(),F(t.canCall()?t.needsConfirm()?43:-1:42),M(2),F(t.method()===`GET`?-1:44),M(),F(t.sending()?45:(e=t.response())?46:-1,e)}}function gH(e,t){if(e&1&&(z(0,`span`,34),J(1),B()),e&2){let e=t.$implicit;N(`data-mode`,e.mode),M(),Z(``,e.label,` · `,e.count)}}function _H(e,t){if(e&1&&(z(0,`div`,33),I(1,gH,2,3,`span`,34,lV),B()),e&2){let e=K(3);M(),L(e.modeCounts())}}function vH(e,t){e&1&&(z(0,`span`,89),J(1,`differs from config`),B())}function yH(e,t){if(e&1&&(z(0,`div`,42)(1,`span`,71),J(2),B(),z(3,`span`,88),J(4),B(),P(5,vH,2,0,`span`,89),B()),e&2){let e=t,n=K().$implicit,r=K(3);M(),N(`data-status`,r.statusClass(e.status)),M(),Y(e.status),M(2),Z(``,e.render===`client`?`client only`:`server rendered`,` · `,e.ms,` ms`),M(),F(r.mismatch(n)?5:-1)}}function bH(e,t){e&1&&(z(0,`span`,87),J(1,`not requested yet`),B())}function xH(e,t){if(e&1&&(z(0,`span`,41)(1,`span`,45),J(2),B(),J(3),B()),e&2){let e=K().$implicit,t=K(3);M(2),Y(t.dir(e.file)),M(),Y(t.base(e.file))}}function SH(e,t){if(e&1&&(z(0,`tr`)(1,`td`,39),J(2),B(),z(3,`td`)(4,`div`,42)(5,`span`,34),J(6),B(),z(7,`span`,87),J(8),B()()(),z(9,`td`),P(10,yH,6,5,`div`,42)(11,bH,2,0,`span`,87),B(),z(12,`td`),P(13,xH,4,2,`span`,41),B()()),e&2){let e,n=t.$implicit,r=K(3);M(2),Y(n.path),M(3),N(`data-mode`,n.mode),M(),Y(r.modeLabel(n.mode)),M(2),Y(n.reason),M(2),F((e=n.last)?10:11,e),M(3),F(n.file?13:-1)}}function CH(e,t){e&1&&(z(0,`tr`)(1,`td`,46),J(2,` No page routes to render yet. Add a .page.ts file under src/app/pages. `),B()())}function wH(e,t){e&1&&(z(0,`p`,4),J(1,` prerender.routes is a function, so the list is known only at build time. `),B())}function TH(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function EH(e,t){e&1&&(z(0,`span`,87),J(1,`default, nothing configured`),B())}function DH(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function OH(e,t){if(e&1&&(z(0,`dt`),J(1,`From routeRules`),B(),z(2,`dd`),I(3,DH,2,1,`span`,35,wg),B()),e&2){let e=K(2);M(3),L(e.fromRules)}}function kH(e,t){if(e&1&&(z(0,`span`,92),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function AH(e,t){if(e&1&&(z(0,`dt`),J(1,`Static, not listed`),B(),z(2,`dd`),I(3,kH,2,1,`span`,92,wg),B()),e&2){let e=K(2);M(3),L(e.staticMissing)}}function jH(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function MH(e,t){if(e&1&&(z(0,`dt`),J(1,`Need explicit entries`),B(),z(2,`dd`),I(3,jH,2,1,`span`,35,wg),B()),e&2){let e=K(2);M(3),L(e.dynamic)}}function NH(e,t){if(e&1&&(z(0,`span`,93),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function PH(e,t){if(e&1&&(J(0,` · missing `),I(1,NH,2,1,`span`,93,wg)),e&2){let e=K(3);M(),L(e.notBuilt)}}function FH(e,t){if(e&1&&(J(0),P(1,PH,3,0)),e&2){let e=K(2);X(` `,e.built.length,` page(s) in dist/analog/public `),M(),F(e.notBuilt.length?1:-1)}}function IH(e,t){e&1&&(z(0,`span`,87),J(1,`no build yet`),B())}function LH(e,t){if(e&1&&(z(0,`dl`,90)(1,`dt`),J(2,`Listed`),B(),z(3,`dd`),I(4,TH,2,1,`span`,35,wg),P(6,EH,2,0,`span`,87),B(),P(7,OH,5,0),P(8,AH,5,0),P(9,MH,5,0),z(10,`dt`),J(11,`Build output`),B(),z(12,`dd`,91),P(13,FH,2,2)(14,IH,2,0,`span`,87),B()()),e&2){let e=K();M(4),L(e.listed??ov(5,rV)),M(2),F(e.listed?-1:6),M(),F(e.fromRules?.length?7:-1),M(),F(e.staticMissing.length?8:-1),M(),F(e.dynamic.length?9:-1),M(4),F(e.built.length?13:14)}}function RH(e,t){e&1&&(z(0,`div`,86)(1,`h2`),J(2,`Prerender plan`),B(),P(3,wH,2,0,`p`,4)(4,LH,15,6,`dl`,90),B()),e&2&&(M(3),F(t.dynamicConfig?3:4))}function zH(e,t){if(e&1&&(P(0,_H,3,0,`div`,33),z(1,`div`,85)(2,`table`)(3,`thead`)(4,`tr`)(5,`th`,29),J(6,`Route`),B(),z(7,`th`,29),J(8,`Configured`),B(),z(9,`th`,29),J(10,`Last request`),B(),z(11,`th`,29),J(12,`File`),B()()(),z(13,`tbody`),I(14,SH,14,6,`tr`,null,cV,!1,CH,3,0,`tr`),B()()(),P(17,RH,5,1,`div`,86)),e&2){let e,t=K(2);F(t.modeCounts().length?0:-1),M(14),L(t.renderRows()),M(3),F((e=t.plan())?17:-1,e)}}function BH(e,t){if(e&1&&(z(0,`div`)(1,`span`,96),J(2),B()()),e&2){let e=K().$implicit;M(2),Y(e.error)}}function VH(e,t){if(e&1&&(z(0,`div`)(1,`span`,89),J(2),B()()),e&2){let e=K(5);M(2),X(`takes over `,e.base(t))}}function HH(e,t){if(e&1&&(z(0,`tr`)(1,`td`)(2,`strong`),J(3),B(),P(4,BH,3,1,`div`),P(5,VH,3,1,`div`),B(),z(6,`td`,39),J(7),B(),z(8,`td`,31),J(9),B(),z(10,`td`,95),J(11),B(),z(12,`td`)(13,`span`,41)(14,`span`,45),J(15),B(),J(16),B()()()),e&2){let e,n=t.$implicit,r=K(4);M(3),Y(n.attributes.title||`(no title)`),M(),F(n.error?4:-1),M(),F((e=r.shadowed(n.file))?5:-1,e),M(2),Y(r.contentUrl(n.file)??``),M(2),Y(n.slug),M(2),Y(n.attributes.date||``),M(4),Y(r.dir(n.file)),M(),Y(r.base(n.file))}}function UH(e,t){if(e&1&&(z(0,`div`,94)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,29),J(5,`Title`),B(),z(6,`th`,29),J(7,`URL`),B(),z(8,`th`,29),J(9,`Slug`),B(),z(10,`th`,29),J(11,`Date`),B(),z(12,`th`,29),J(13,`File`),B()()(),z(14,`tbody`),I(15,HH,17,8,`tr`,null,uV),B()()()),e&2){let e=K(3);M(15),L(e.project().content)}}function WH(e,t){e&1&&(z(0,`div`,54)(1,`p`,75),J(2,`No markdown files under src/content.`),B(),z(3,`p`,4),J(4,` Add a .md file there to see its title, slug, date and the URL it serves. `),B()())}function GH(e,t){e&1&&P(0,UH,17,0,`div`,94)(1,WH,5,0,`div`,54),e&2&&F(+!K(2).project().content.length)}function KH(e,t){if(e&1&&(z(0,`span`,17),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.items.length)}}function qH(e,t){if(e&1&&(z(0,`span`,41)(1,`span`,45),J(2),B(),J(3),B()),e&2){let e=K().$implicit,t=K(5);M(2),Y(t.dir(e.file)),M(),Y(t.base(e.file))}}function JH(e,t){if(e&1&&(z(0,`span`,39),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.path)}}function YH(e,t){if(e&1&&(z(0,`p`,104),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.message)}}function XH(e,t){if(e&1&&(z(0,`li`),P(1,qH,4,2,`span`,41),P(2,JH,2,1,`span`,39),P(3,YH,2,1,`p`,104),B()),e&2){let e=t.$implicit;M(),F(e.file?1:-1),M(),F(e.path&&e.path!==e.file?2:-1),M(),F(e.message?3:-1)}}function ZH(e,t){if(e&1&&(z(0,`li`)(1,`div`,99)(2,`span`,34),J(3),B(),z(4,`strong`,100),J(5),B(),P(6,KH,2,1,`span`,17),B(),z(7,`p`),J(8),B(),z(9,`ul`,101),I(10,XH,4,3,`li`,null,Cg),B(),z(12,`div`,102)(13,`strong`),J(14,`How to fix`),B(),J(15),B(),z(16,`span`,103),J(17),B()()),e&2){let e=t.$implicit,n=K(4);N(`data-tone`,n.tone(e.severity)),M(2),N(`data-tone`,n.tone(e.severity)),M(),Y(e.severity),M(2),Y(e.title),M(),F(e.items.length>1?6:-1),M(2),Y(e.summary),M(2),L(e.items),M(5),X(` `,e.fix),M(2),Y(e.rule)}}function QH(e,t){if(e&1&&(z(0,`p`,4),J(1),B(),z(2,`ul`,98),I(3,ZH,18,8,`li`,null,dV),B()),e&2){let e=K(3);M(),Z(` `,e.findings().length,` issue(s) in `,e.lintCards().length,` group(s). Each card says what is wrong, where, and how to fix it. `),M(2),L(e.lintCards())}}function $H(e,t){e&1&&(z(0,`div`,97)(1,`strong`),J(2,`No Analog problems found.`),B(),J(3,` Routes, server files, prerender config and content all check out. `),B())}function eU(e,t){e&1&&P(0,QH,5,2)(1,$H,4,0,`div`,97),e&2&&F(+!K(2).findings().length)}function tU(e,t){if(e&1){let e=W();z(0,`section`,7)(1,`div`,8)(2,`span`,9),J(3,`Analog`),B(),z(4,`span`,10),J(5),B()(),z(6,`div`,8)(7,`span`,9),J(8,`Pages`),B(),z(9,`span`,10),J(10),B()(),z(11,`div`,8)(12,`span`,9),J(13,`API routes`),B(),z(14,`span`,10),J(15),B()(),z(16,`div`,8)(17,`span`,9),J(18,`Server calls`),B(),z(19,`span`,10),J(20),B()(),z(21,`div`,8)(22,`span`,9),J(23,`Issues`),B(),z(24,`span`,10),J(25),B()(),P(26,hV,5,2,`div`,11),B(),z(27,`div`,12),G(`keydown`,function(t){return O(e),k(K().onKey(t))}),I(28,gV,4,7,`button`,13,iV),B(),z(30,`div`,14),P(31,RV,29,6)(32,hH,47,15)(33,zH,18,3)(34,GH,2,1)(35,eU,2,1),B()}if(e&2){let e,t,n=K();M(5),Y(n.project().version||`unknown`),M(5),Y(n.pageCount()),M(5),Y(n.project().api.length),M(5),Y(n.allCalls().length),M(),N(`data-tone`,n.findings().length?`warn`:`good`),M(4),Y(n.findings().length),M(),F((e=n.page())?26:-1,e),M(2),L(n.views()),M(2),R(`id`,`analog-panel-`+n.view()),N(`aria-labelledby`,`analog-tab-`+n.view()),M(),F((t=n.view())===`routes`?31:t===`server`?32:t===`render`?33:t===`content`?34:t===`lint`?35:-1)}}var nU={"scan-error":{title:`A folder could not be read`,summary:`Its files are missing from routes, API routes and lint results.`},"duplicate-url":{title:`Two files serve the same URL`,summary:`Only one of them is reachable; the other never renders.`},"sibling-params":{title:`Two dynamic pages in one folder`,summary:`Both are [param] pages at the same level, so the first one always wins.`},"missing-default-export":{title:`Page has no default export`,summary:`Analog needs the component as the default export, so the page renders nothing.`},"redirect-with-component":{title:`Redirect page also exports a component`,summary:`The redirect runs first, so the component never shows.`},"redirect-path-match":{title:`Redirect matches too much`,summary:`An empty-path redirect without pathMatch "full" catches every URL below it.`},"layout-without-outlet":{title:`Layout has no router-outlet`,summary:`The layout has child pages, but without they never render.`},"server-without-load":{title:`.server.ts without load or action`,summary:`The server file exports no load, action or server function, so Analog calls nothing.`},"orphan-server-file":{title:`.server.ts without a page`,summary:`No page file sits next to it, so its load never runs.`},"api-method-suffix":{title:`Unknown method suffix on an API file`,summary:`The suffix is not an HTTP method, so it becomes part of the URL.`},"duplicate-api-route":{title:`Two handlers for one API route`,summary:`Two files answer the same method and path.`},"api-outside-prefix":{title:`Server route outside the API prefix`,summary:`During vite dev only routes under the prefix reach Nitro.`},"prerender-unknown-route":{title:`Prerender entry matches no page`,summary:`prerender.routes lists a path that no page file serves.`},"prerender-missing-root":{title:`Home page is not prerendered`,summary:`static is on, but prerender.routes leaves out /.`},"content-frontmatter":{title:`Broken frontmatter`,summary:`The markdown frontmatter cannot be read.`},"duplicate-slug":{title:`Two posts share a slug`,summary:`injectContent picks one of them at random.`},"content-shadows-page":{title:`Markdown file takes over a page`,summary:`Files under src/content are routes too, so these URLs render the markdown file instead of the [param] page.`},"load-fetched-twice":{title:`load() runs twice`,summary:`These pages fetched their data while rendering on the server and again in the browser.`},"fn-fetched-twice":{title:`Server function read runs twice`,summary:`These reads ran while rendering on the server and again in the browser right after hydration.`},"restart-needed":{title:`New pages need a restart`,summary:`These page files exist, but the running router does not know them yet.`},"hydration-error":{title:`Hydration error`,summary:`The browser DOM did not match the server HTML.`},"api-not-found":{title:`API call failed with 404 or 405`,summary:`A request hit a path or method that no server route handles.`}},rU=new Set([`missing-default-export`,`redirect-with-component`,`redirect-path-match`,`layout-without-outlet`,`server-without-load`,`orphan-server-file`,`load-fetched-twice`,`restart-needed`,`prerender-missing-root`]),iU={ssr:`SSR`,ssg:`Prerendered`,client:`Client only`,cached:`Cached`,redirect:`Redirect`},aU={all:`All`,page:`Pages`,load:`load()`,action:`Actions`,fn:`Server fn`,api:`API`},oU={success:`succeeded`,redirect:`redirected`,invalid:`validation errors`,error:`failed`},sU={success:`good`,redirect:`info`,invalid:`warn`,error:`bad`};function cU(e,t=0,n=[]){for(let r of e)n.push({route:r,depth:t}),cU(r.children,t+1,n);return n}var lU=class e{rpc=$(null);canCall=Q(()=>bE(this.rpc(),`analog`));callsOff=KT(`analog`);kinds=[`all`,`page`,`load`,`action`,`fn`,`api`];methods=[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`];methodOptions=this.methods.map(e=>({value:e,label:e}));view=j(`routes`);project=j(null);loadFailed=j(!1);state=j({});findings=j([]);renderRows=j([]);plan=j(null);filter=j(``);testUrl=j(``);explained=j(null);explainError=j(``);explaining=j(!1);kind=j(`all`);method=j(`GET`);apiPath=j(``);apiBody=j(``);confirmSend=j(!1);response=j(null);sending=j(!1);needsConfirm=Q(()=>this.method()!==`GET`&&!this.confirmSend());canSend=Q(()=>this.canCall()&&!this.sending()&&!this.needsConfirm());sendHintId=Q(()=>this.canCall()?this.needsConfirm()?`analog-confirm-hint`:null:`analog-calls-off`);unsubscribe=null;refreshTimer;refreshRun=0;destroyRef=E(Cs);hostPageId=eE();page=Q(()=>{let e=this.state().pages??[];return(this.hostPageId?e.find(e=>e.pageId===this.hostPageId):e[0])??null});openFiles=Q(()=>new Set((this.page()?.chain??[]).map(e=>e.file)));allCalls=Q(()=>this.state().calls??[]);calls=Q(()=>{let e=this.kind();return this.allCalls().filter(t=>e===`all`||t.kind===e).slice(-150).reverse()});allRoutes=Q(()=>cU(this.project()?.routes??[]));pageCount=Q(()=>this.allRoutes().filter(e=>e.route.file&&e.route.kind!==`layout`).length);routeRows=Q(()=>{let e=this.filter().trim().toLowerCase();return e?this.allRoutes().filter(t=>t.route.fullPath.toLowerCase().includes(e)||!!t.route.file?.toLowerCase().includes(e)):this.allRoutes()});serverFns=Q(()=>this.project()?.serverFns??[]);fnById=Q(()=>new Map(this.serverFns().map(e=>[e.id,e])));refetchedFns=Q(()=>Array.from(new Set((this.state().refetches??[]).map(e=>this.fnById().get(e.id)?.name??e.id))));duplicates=Q(()=>Array.from(new Set((this.state().duplicates??[]).map(e=>e.route))));modeCounts=Q(()=>[`ssr`,`ssg`,`cached`,`client`,`redirect`].map(e=>({mode:e,label:iU[e],count:this.renderRows().filter(t=>t.mode===e).length})).filter(e=>e.count));lintCards=Q(()=>{let e={error:0,warning:1,info:2},t=new Map;for(let e of this.findings()){let n=t.get(e.rule);if(!n){let r=nU[e.rule];n={rule:e.rule,severity:e.severity,title:r?.title??e.rule,summary:r?.summary??e.message,fix:e.fix,items:[]},t.set(e.rule,n)}let r=rU.has(e.rule)||e.message===n.summary?void 0:e.message;n.items.some(t=>t.file===e.file&&t.path===e.path&&t.message===r)||n.items.push({file:e.file,path:e.path,message:r})}return Array.from(t.values()).sort((t,n)=>e[t.severity]-e[n.severity])});views=Q(()=>{let e=this.findings().length;return[{id:`routes`,label:`Routes`,count:this.pageCount(),tone:``},{id:`server`,label:`Server`,count:this.allCalls().length,tone:``},{id:`render`,label:`Render`,count:this.renderRows().length,tone:``},{id:`content`,label:`Content`,count:this.project()?.content.length??0,tone:``},{id:`lint`,label:`Lint`,count:e,tone:e?`warn`:``}]});constructor(){uc(()=>{let e=this.rpc();e&&Cv(()=>void this.load(e))}),uc(()=>{let e=this.view();this.state(),Cv(()=>this.scheduleRefresh(e))}),this.destroyRef.onDestroy(()=>{this.unsubscribe?.(),clearTimeout(this.refreshTimer)})}async load(e){let t=await aE(e,`analog-project`);if(!this.destroyRef.destroyed){this.project.set(t),this.loadFailed.set(t===null);try{let t=await e.scope(`pangular`).rpc.sharedState(`analog`);if(this.destroyRef.destroyed)return;let n=e=>this.state.set(e??{});n(t.value()),this.unsubscribe?.(),this.unsubscribe=t.on(`updated`,n)}catch{this.state.set({})}this.destroyRef.destroyed||await this.refresh(this.view())}}retry(){let e=this.rpc();e&&(this.loadFailed.set(!1),this.load(e))}scheduleRefresh(e){clearTimeout(this.refreshTimer),this.refreshTimer=setTimeout(()=>void this.refresh(e),300)}async refresh(e){let t=this.rpc();if(!t)return;let n=++this.refreshRun,[r,i]=await Promise.all([aE(t,`analog-lint`),aE(t,`analog-render`)]);if(n===this.refreshRun&&(this.findings.set(r??[]),this.renderRows.set(i?.rows??[]),this.plan.set(i?.plan??null),e===`routes`||e===`content`||this.project()===null)){let e=await aE(t,`analog-project`);e&&n===this.refreshRun&&(this.project.set(e),this.loadFailed.set(!1))}}isOpen(e){return!!e.file&&this.openFiles().has(e.file)}kindText(e){return e.catchAll?e.catchAll===`optional`?`optional catch-all`:`catch-all`:e.kind===`implicit`?`folder`:e.kind}serverExports(e){return(e.serverExports??[]).filter(e=>e===`load`||e===`action`)}short(e){return e?.replace(/^\/src\/app\//,``).replace(/^\//,``)}dir(e){let t=this.short(e)??e;return t.includes(`/`)?t.slice(0,t.lastIndexOf(`/`)+1):``}base(e){return e.slice(e.lastIndexOf(`/`)+1)}paramList(e){return Object.entries(e)}kindLabel(e){return aU[e]}kindCount(e){return e===`all`?this.allCalls().length:this.allCalls().filter(t=>t.kind===e).length}modeLabel(e){return iU[e]}mismatch(e){return!e.last?.render||e.mode===`redirect`?!1:e.mode===`client`?e.last.render!==`client`:e.last.render===`client`}fnOf(e){return e.kind===`fn`&&e.route?this.fnById().get(e.route):void 0}fnCalls(e){return this.allCalls().filter(t=>t.kind===`fn`&&t.route===e).length}outcomeLabel(e){return oU[e]}outcomeTone(e){return sU[e]}statusClass(e){return e>=500||e===0?`bad`:e>=400?`warn`:`good`}tone(e){return e===`error`?`bad`:e===`warning`?`warn`:`info`}shadowed(e){return this.findings().find(t=>t.rule===`content-shadows-page`&&t.file===e)?.message.match(/(\/\S+\.page\.ts)/)?.[1]}contentUrl(e){return this.allRoutes().find(t=>t.route.file===e)?.route.fullPath}pretty(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}time=RD;tryApi(e){this.method.set(e.method===`ANY`?`GET`:e.method),this.apiPath.set(e.path.replace(/:(\w+)/g,`1`).replace(`**`,`x`)),this.response.set(null),queueMicrotask(()=>document.getElementById(`api-path`)?.focus())}async clearCalls(){await aE(this.rpc(),`analog-clear-calls`)}async explain(){let e=this.testUrl().trim();if(!e){this.explained.set(null),this.explainError.set(`Type a URL to explain, for example /products/42.`);return}this.explaining.set(!0),this.explainError.set(``);try{let t=await iE(this.rpc(),`analog-explain-url`,e);if(!t)throw Error(`The devtools server did not answer`);this.explained.set({url:e,match:t})}catch(t){let n=String(t?.message||`The devtools server did not answer`);this.explained.set(null),this.explainError.set(`Could not explain ${e}. ${n.replace(/\.?$/,`.`)}`)}finally{this.explaining.set(!1)}}async send(){let e=this.apiPath().trim();if(!e||this.sending()||this.needsConfirm())return;let t;if(this.method()!==`GET`&&this.apiBody().trim())try{t=JSON.parse(this.apiBody())}catch{this.response.set({error:`The body is not valid JSON.`});return}this.response.set(null),this.sending.set(!0);try{let n=await aE(this.rpc(),`analog-call-api`,{method:this.method(),path:e,body:t,confirm:this.confirmSend()});this.response.set(n??{error:`No answer from the devtools server.`})}finally{this.sending.set(!1)}}onKey(e){let t=this.views().map(e=>e.id),n=t.indexOf(this.view()),r=n;if(e.key===`ArrowRight`)r=(n+1)%t.length;else if(e.key===`ArrowLeft`)r=(n-1+t.length)%t.length;else if(e.key===`Home`)r=0;else if(e.key===`End`)r=t.length-1;else return;e.preventDefault(),this.view.set(t[r]);let i=e.currentTarget;queueMicrotask(()=>i.querySelector(`#analog-tab-${t[r]}`)?.focus())}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-analog-inspector`]],inputs:{rpc:[1,`rpc`]},decls:4,vars:1,consts:[[`role`,`alert`,1,`empty`],[`role`,`status`,1,`loading`],[1,`empty`],[1,`empty-title`],[1,`muted`],[`type`,`button`,1,`btn`,3,`click`],[`aria-hidden`,`true`,1,`spinner`],[`aria-label`,`Analog summary`,1,`summary`],[1,`stat`],[1,`label`],[1,`value`],[1,`stat`,`wide`],[`role`,`tablist`,`aria-label`,`Analog views`,1,`tabs`,3,`keydown`],[`type`,`button`,`role`,`tab`,3,`id`],[`role`,`tabpanel`,1,`panel`,3,`id`],[1,`value`,`mono`,3,`title`],[`type`,`button`,`role`,`tab`,3,`click`,`id`],[1,`count`],[1,`toolbar`],[1,`inline`,`explain`,3,`submit`],[`for`,`analog-url`],[`id`,`analog-url`,`type`,`text`,`placeholder`,`/products/42`,1,`field`,`grow`,`mono`,3,`input`,`value`],[`type`,`submit`,1,`btn`,`primary`,3,`disabled`],[`for`,`route-filter`,1,`sr-only`],[`id`,`route-filter`,`type`,`search`,`placeholder`,`Filter by path or file`,1,`field`,`filter`,3,`input`,`value`],[`role`,`status`,1,`explain-result`],[`data-tone`,`bad`,1,`callout`],[1,`callout`],[`role`,`region`,`aria-label`,`File routes`,`tabindex`,`0`,1,`table-wrap`],[`scope`,`col`],[3,`open`,`dim`],[1,`mono`],[1,`chain`],[1,`chips`],[1,`pill`],[1,`chip`,`mono`],[1,`plain`],[1,`route`],[`aria-hidden`,`true`,1,`guide`],[1,`mono`,`path`],[1,`pill`,`live`],[1,`file`],[1,`meta`],[`data-kind`,`load`,1,`pill`],[1,`chip`],[1,`dir`],[`colspan`,`4`,1,`empty-row`],[`data-tone`,`warn`,`role`,`note`,1,`callout`],[1,`calls-bar`],[1,`segmented`],[1,`sr-only`],[3,`on`],[`type`,`button`,1,`btn`,`ghost`,3,`click`,`disabled`],[`role`,`region`,`aria-label`,`Server calls`,`tabindex`,`0`,1,`table-wrap`],[1,`empty-box`],[`role`,`region`,`aria-label`,`API routes`,`tabindex`,`0`,1,`table-wrap`],[1,`card`,`playground`,3,`submit`],[1,`row`],[`ariaLabel`,`Method`,1,`method-select`,3,`valueChange`,`options`,`value`],[`for`,`api-path`,1,`sr-only`],[`id`,`api-path`,`type`,`text`,`placeholder`,`/api/v1/products`,1,`field`,`grow`,`mono`,3,`input`,`value`],[`id`,`analog-calls-off`,1,`muted`],[`id`,`analog-confirm-hint`,1,`muted`],[`role`,`status`,1,`muted`],[`role`,`status`,1,`response`],[`type`,`radio`,`name`,`analog-kind`,1,`sr-only`,3,`change`,`checked`],[`scope`,`col`,1,`num`],[1,`muted`,`nowrap`],[1,`request`],[1,`method`],[1,`mono`,`url`],[1,`status`],[1,`num`,`nowrap`],[1,`mono`,`muted`],[1,`code`],[1,`empty-lead`],[1,`actions`],[`type`,`button`,1,`btn`,`ghost`,3,`click`],[`role`,`region`,`aria-label`,`Server functions`,`tabindex`,`0`,1,`table-wrap`],[1,`num`,`tnum`],[`for`,`api-body`],[`id`,`api-body`,`rows`,`3`,`placeholder`,`{"name": "Ada"}`,1,`field`,`mono`,3,`input`,`value`],[1,`check`],[`type`,`checkbox`,3,`change`,`checked`],[`data-status`,`bad`,1,`status`],[`role`,`region`,`aria-label`,`Render modes`,`tabindex`,`0`,1,`table-wrap`],[1,`card`],[1,`muted`,`small`],[1,`muted`,`small`,`tnum`],[`data-tone`,`warn`,1,`pill`],[1,`facts`],[1,`tnum`],[`data-tone`,`warn`,1,`chip`,`mono`],[`data-tone`,`bad`,1,`chip`,`mono`],[`role`,`region`,`aria-label`,`Content files`,`tabindex`,`0`,1,`table-wrap`],[1,`muted`,`nowrap`,`tnum`],[`data-tone`,`bad`,1,`pill`],[`data-tone`,`good`,`role`,`status`,1,`callout`],[1,`findings`],[1,`finding-head`],[1,`finding-title`],[1,`where`],[1,`fix`],[1,`rule`,`mono`],[1,`detail`]],template:function(e,t){e&1&&P(0,fV,7,0,`div`,0)(1,pV,4,0,`div`,1)(2,mV,14,0,`div`,2)(3,tU,36,10),e&2&&F(t.project()===null&&t.loadFailed()?0:t.project()===null?1:t.project().analog?3:2)},dependencies:[AD],styles:[`@charset "UTF-8"; [_nghost-%COMP%] { --%NS%good: var(--%NS%ok); --%NS%bad: var(--%NS%danger); @@ -11518,7 +11553,7 @@ h2[_ngcontent-%COMP%] { color: var(--%NS%text-strong); font-size: 15px; font-weight: 600; -}`]})},cU=(e,t)=>t.id,lU=(e,t)=>t.id+t.kind,uU=(e,t)=>t.side+t.id,dU=(e,t)=>t.key;function fU(e,t){e&1&&(z(0,`div`,0),V(1,`span`,63),z(2,`span`),J(3,`Loading…`),B()())}function pU(e,t){e&1&&(z(0,`div`,1)(1,`strong`),J(2,`Could not reach the devtools server.`),B(),z(3,`span`),J(4,`Check that the app's dev server is running with the devtools plugin, then reopen this panel.`),B()())}function mU(e,t){e&1&&(z(0,`span`,76),J(1,`this page`),B())}function hU(e,t){e&1&&(z(0,`span`,77),J(1,`overridden`),B())}function gU(e,t){e&1&&(z(0,`span`,78),J(1,`aborted`),B())}function _U(e,t){if(e&1){let e=W();z(0,`tr`,68),G(`click`,function(){let t=O(e).$implicit;return k(K(2).selectedRequestId.set(t.id))}),z(1,`td`,69)(2,`button`,70)(3,`span`,71),J(4),B(),J(5),B()(),z(6,`td`,72),V(7,`span`,73),J(8),B(),z(9,`td`),J(10),B(),z(11,`td`,74),J(12),B(),z(13,`td`,74),J(14),B(),z(15,`td`)(16,`div`,75),P(17,mU,2,0,`span`,76),P(18,hU,2,0,`span`,77),P(19,gU,2,0,`span`,78),B()()()}if(e&2){let e=t.$implicit,n=K(2);q(`selected`,n.selectedRequest()?.id===e.id),M(2),R(`title`,e.url),N(`aria-pressed`,n.selectedRequest()?.id===e.id),M(2),Y(e.method),M(),X(` `,e.url,` `),M(),q(`ok`,n.statusTone(e.status)===`ok`)(`redirect`,n.statusTone(e.status)===`redirect`)(`bad`,n.statusTone(e.status)===`bad`),M(2),X(``,e.status,` `),M(2),Y(n.renderModeLabel(e.renderMode)),M(2),X(``,e.renderMs,` ms`),M(2),Z(``,e.fetches,` (`,e.fetchMs,` ms)`),M(3),F(e.id===n.selected()?.ssrRequestId?17:-1),M(),F(e.overrides?.length?18:-1),M(),F(e.aborted?19:-1)}}function vU(e,t){if(e&1&&(z(0,`span`,83),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.note)}}function yU(e,t){if(e&1&&(z(0,`p`,82)(1,`span`,77),J(2),B(),z(3,`span`),J(4),B(),P(5,vU,2,1,`span`,83),B()),e&2){let e=t.$implicit,n=K(4);M(2),Y(n.overrideLabel(e.kind)),M(2),Y(e.applied?`applied`:`not applied`),M(),F(e.note?5:-1)}}function bU(e,t){if(e&1&&(z(0,`h3`),J(1,`Overrides from the panel`),B(),z(2,`p`,45),J(3,` This response was changed on purpose, so it is not what the app sends on its own. `),B(),I(4,yU,6,3,`p`,82,lU)),e&2){let e=K();M(4),L(e.overrides)}}function xU(e,t){if(e&1&&(J(0,` to `),z(1,`code`),J(2),B()),e&2){let e=K().$implicit;M(2),Y(e.finalUrl)}}function SU(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2,`Guards`),B(),z(3,`dd`),J(4),B()()),e&2){let e=K().$implicit,t=K(4);M(3),q(`bad`,t.guardVerdict(e)===`rejected`),M(),Z(` `,t.msLabel(e.guards.ms),``,t.guardVerdict(e)?`, `+t.guardVerdict(e):``,` `)}}function CU(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2,`Resolvers`),B(),z(3,`dd`),J(4),B()()),e&2){let e=K().$implicit,t=K(4);M(4),Y(t.msLabel(e.resolvers.ms))}}function wU(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2,`Navigation total`),B(),z(3,`dd`),J(4),B()()),e&2){let e=K().$implicit;M(4),X(``,e.durationMs,` ms`)}}function TU(e,t){if(e&1&&(z(0,`p`,45),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.reason)}}function EU(e,t){if(e&1&&(z(0,`dl`,84)(1,`div`)(2,`dt`),J(3,`Navigation`),B(),z(4,`dd`)(5,`code`),J(6),B(),P(7,xU,3,1),J(8),B()(),P(9,SU,5,4,`div`),P(10,CU,5,1,`div`),P(11,wU,5,1,`div`),B(),P(12,TU,2,1,`p`,45)),e&2){let e=t.$implicit;M(6),Y(e.url),M(),F(e.finalUrl?7:-1),M(),X(` (`,e.outcome,`) `),M(),F(e.guards?9:-1),M(),F(e.resolvers?10:-1),M(),F(e.durationMs===void 0?-1:11),M(),F(e.reason?12:-1)}}function DU(e,t){if(e&1&&(z(0,`h3`),J(1,`Router during the render`),B(),I(2,EU,13,7,null,null,Cg)),e&2){let e=K();M(2),L(e.navigations)}}function OU(e,t){e&1&&(z(0,`span`,76),J(1,`cached`),B())}function kU(e,t){if(e&1&&(z(0,`span`,86),J(1,`not cached`),B()),e&2){let e=K().$implicit;R(`title`,K(3).skipText(e.cacheSkip))}}function AU(e,t){if(e&1&&(z(0,`p`,87),J(1),B()),e&2){let e=K().$implicit,t=K(3);M(),X(`Not cached: `,t.skipText(e.cacheSkip),`.`)}}function jU(e,t){if(e&1&&(z(0,`p`,82)(1,`span`,71),J(2),B(),z(3,`span`,85),J(4),B(),z(5,`span`,72),J(6),B(),z(7,`span`,83),J(8),B(),P(9,OU,2,0,`span`,76)(10,kU,2,1,`span`,86),B(),P(11,AU,2,1,`p`,87)),e&2){let e=t.$implicit,n=K(3);M(2),Y(e.method),M(),R(`title`,e.url),M(),Y(e.url),M(),q(`ok`,n.callTone(e)===`ok`)(`bad`,n.callTone(e)===`bad`),M(),Y(n.statusLabel(e)),M(2),X(``,e.durationMs,` ms`),M(),F(e.cacheStored?9:e.cacheSkip?10:-1),M(2),F(!e.cacheStored&&e.cacheSkip?11:-1)}}function MU(e,t){e&1&&(z(0,`p`,45),J(1,`The render made no HttpClient calls.`),B())}function NU(e,t){e&1&&(z(0,`p`,87),J(1),B()),e&2&&(M(),X(`Why: `,t,`.`))}function PU(e,t){if(e&1&&(z(0,`p`,82)(1,`span`,71),J(2),B(),z(3,`span`,85),J(4),B(),z(5,`span`,78),J(6,`cache miss`),B()(),P(7,NU,2,1,`p`,87)),e&2){let e,n=t.$implicit,r=K(4);M(2),Y(n.method),M(),R(`title`,n.url),M(),Y(n.url),M(3),F((e=r.refetchReason(n))?7:-1,e)}}function FU(e,t){if(e&1&&(z(0,`h3`),J(1),B(),z(2,`p`,45),J(3,` These calls ran on the server and again after hydration instead of reading the transfer cache. `),B(),I(4,PU,8,4,null,null,cU)),e&2){let e=K(3);M(),X(`Fetched again in the browser (`,e.refetched().length,`)`),M(3),L(e.refetched())}}function IU(e,t){e&1&&(z(0,`p`,81),J(1,`No server call ran again in the browser.`),B())}function LU(e,t){if(e&1&&(z(0,`div`,67)(1,`h3`,79),J(2),z(3,`code`),J(4),B()(),z(5,`dl`,80)(6,`div`)(7,`dt`),J(8,`Request id`),B(),z(9,`dd`)(10,`code`),J(11),B()()(),z(12,`div`)(13,`dt`),J(14,`Render`),B(),z(15,`dd`),J(16),B()(),z(17,`div`)(18,`dt`),J(19,`Total`),B(),z(20,`dd`),J(21),B()(),z(22,`div`)(23,`dt`),J(24,`Sent`),B(),z(25,`dd`),J(26),B()(),z(27,`div`)(28,`dt`),J(29,`Browser page`),B(),z(30,`dd`),J(31),B()()(),P(32,bU,6,0),P(33,DU,4,0),z(34,`h3`),J(35),B(),I(36,jU,12,11,null,null,cU,!1,MU,2,0,`p`,45),P(39,FU,6,1)(40,IU,2,0,`p`,81),B()),e&2){let e=t,n=K(2);M(2),X(` `,e.method,` `),M(2),Y(e.url),M(7),Y(e.id),M(5),X(``,e.renderMs,` ms`),M(5),X(``,e.durationMs,` ms`),M(5),X(``,e.bytes,` B`),M(5),Y(n.requestPage()?.title||n.requestPage()?.url||`not connected`),M(),F(e.overrides?.length?32:-1),M(),F(e.navigations?.length?33:-1),M(2),X(`Server calls (`,n.requestCalls().length,`)`),M(),L(n.requestCalls()),M(3),F(n.refetched().length?39:n.requestPage()&&n.requestCalls().length?40:-1)}}function RU(e,t){if(e&1&&(z(0,`div`,25)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,64),J(5,`Request`),B(),z(6,`th`,64),J(7,`Status`),B(),z(8,`th`,64),J(9,`Render mode`),B(),z(10,`th`,65),J(11,`Render`),B(),z(12,`th`,65),J(13,`Server calls`),B(),z(14,`th`,64),J(15,`Notes`),B()()(),z(16,`tbody`),I(17,_U,20,20,`tr`,66,cU),B()()(),P(19,LU,41,12,`div`,67)),e&2){let e,t=K();M(17),L(t.requests()),M(2),F((e=t.selectedRequest())?19:-1,e)}}function zU(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No SSR requests traced.`),B(),z(3,`p`,45),J(4,` Add `),z(5,`code`),J(6,`app.use(devtools.ssrMiddleware)`),B(),J(7,` before the Angular handler in `),z(8,`code`),J(9,`server.ts`),B(),J(10,`, then load a server rendered page. `),B()())}function BU(e,t){e&1&&(z(0,`span`,88),J(1,`transfer cache`),B())}function VU(e,t){if(e&1&&(z(0,`span`,88),J(1),B()),e&2){let e=K().$implicit;M(),X(`delayed `,e.delayMs,` ms`)}}function HU(e,t){e&1&&(z(0,`span`,77),J(1,`mocked`),B())}function UU(e,t){e&1&&(z(0,`span`,78),J(1,`faulted`),B())}function WU(e,t){if(e&1&&(z(0,`span`,91),J(1,`rule `),z(2,`code`),J(3),B()()),e&2){let e=t;R(`title`,`Matched rule: `+e),M(3),Y(e)}}function GU(e,t){if(e&1){let e=W();z(0,`tr`,68),G(`click`,function(){let t=O(e).$implicit;return k(K(2).openCall(t.id))}),z(1,`td`)(2,`span`,88),J(3),B()(),z(4,`td`,71),J(5),B(),z(6,`td`,69)(7,`button`,89),J(8),B()(),z(9,`td`,90),J(10),B(),z(11,`td`,72),V(12,`span`,73),J(13),B(),z(14,`td`,74),J(15),B(),z(16,`td`)(17,`div`,75),P(18,BU,2,0,`span`,88),P(19,VU,2,1,`span`,88),P(20,HU,2,0,`span`,77),P(21,UU,2,0,`span`,78),P(22,WU,4,2,`span`,91),B()()()}if(e&2){let e,n=t.$implicit,r=K(2);q(`selected`,r.selectedCall()?.id===n.id),M(2),q(`server`,n.side===`server`),M(),Y(n.side===`server`?`SSR`:`Client`),M(2),Y(n.method),M(2),R(`title`,n.url),N(`data-call-id`,n.id)(`aria-pressed`,r.selectedCall()?.id===n.id)(`aria-controls`,r.selectedCall()?`call-preview`:null),M(),X(` `,n.url,` `),M(),R(`title`,n.pageUrl??``),M(),X(` `,n.pageUrl??``,` `),M(),q(`ok`,r.callTone(n)===`ok`)(`redirect`,r.callTone(n)===`redirect`)(`bad`,r.callTone(n)===`bad`),M(2),X(``,r.statusLabel(n),` `),M(2),X(``,n.durationMs,` ms`),M(3),F(n.cacheHit?18:-1),M(),F(n.delayMs?19:-1),M(),F(n.mocked?20:-1),M(),F(n.faulted?21:-1),M(),F((e=r.rulePatternOf(n))?22:-1,e)}}function KU(e,t){if(e&1&&(z(0,`div`,25)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,64),J(5,`Side`),B(),z(6,`th`,64),J(7,`Method`),B(),z(8,`th`,64),J(9,`URL`),B(),z(10,`th`,64),J(11,`Page`),B(),z(12,`th`,64),J(13,`Status`),B(),z(14,`th`,65),J(15,`Time`),B(),z(16,`th`,64),J(17,`Notes`),B()()(),z(18,`tbody`),I(19,GU,23,26,`tr`,66,uU),B()()()),e&2){let e=K();M(19),L(e.visibleCalls())}}function qU(e,t){e&1&&J(0),e&2&&X(` Nothing matches “`,K(2).callQuery().trim(),`” with these filters. `)}function JU(e,t){e&1&&J(0),e&2&&X(` None of the `,K(2).timeline().length,` requests fit these filters. `)}function YU(e,t){if(e&1){let e=W();z(0,`div`,26)(1,`p`),J(2,`No requests match.`),B(),z(3,`p`,45),P(4,qU,1,1)(5,JU,1,1),B(),z(6,`div`,92)(7,`button`,93),G(`click`,function(){return O(e),k(K().clearCallFilters())}),J(8,`Clear filters`),B()()()}if(e&2){let e=K();M(4),F(e.callQuery().trim()?4:5)}}function XU(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No requests yet.`),B(),z(3,`p`,45),J(4,` Add `),z(5,`code`),J(6,`withPangular()`),B(),J(7,` to `),z(8,`code`),J(9,`provideHttpClient`),B(),J(10,`, then load a page of the app. `),B()())}function ZU(e,t){if(e&1){let e=W();z(0,`button`,100),G(`click`,function(){O(e);let t=K();return k(K().copyPreview(t))}),J(1,` Copy `),B()}if(e&2){let e=K();N(`aria-label`,`Copy the response of `+e.method+` `+e.url)}}function QU(e,t){e&1&&(z(0,`p`,102),J(1,` Matched rule `),z(2,`code`),J(3),B()()),e&2&&(M(3),Y(t))}function $U(e,t){if(e&1){let e=W();z(0,`div`,94),G(`keydown.escape`,function(){return O(e),k(K().closePreview())}),z(1,`div`,95)(2,`h3`,96),J(3,`Response preview`),B(),z(4,`div`,97),P(5,ZU,2,1,`button`,98),z(6,`button`,99),G(`click`,function(){let t=O(e);return k(K().mockCall(t))}),J(7,` Mock this request `),B(),z(8,`button`,100),G(`click`,function(){return O(e),k(K().closePreview())}),J(9,`Close`),B()()(),z(10,`p`,101)(11,`span`,71),J(12),B(),z(13,`span`,72),J(14),B(),z(15,`span`,85),J(16),B()(),P(17,QU,4,1,`p`,102),z(18,`pre`,103),J(19),B()()}if(e&2){let e,n=t,r=K();M(5),F(!n.error&&n.preview?5:-1),M(),R(`disabled`,!r.canWrite()),N(`aria-describedby`,r.canWrite()?null:`http-writes-off`),M(6),Y(n.method),M(),q(`ok`,r.callTone(n)===`ok`)(`redirect`,r.callTone(n)===`redirect`)(`bad`,r.callTone(n)===`bad`),M(),Y(r.statusLabel(n)),M(),R(`title`,n.url),M(),Y(n.url),M(),F((e=r.rulePatternOf(n))?17:-1,e),M(),q(`error`,!!n.error&&!n.cancelled),M(),Y(n.error??r.previewText(n)??`(no body)`)}}function eW(e,t){if(e&1&&(z(0,`p`,30),J(1),B()),e&2){let e=K();M(),Y(e.writesOff)}}function tW(e,t){e&1&&(z(0,`p`,45),J(1,` SSR mocks are not transferred to the client: the browser requests the URL again and gets the real response unless the rule also applies on the client. `),B())}function nW(e,t){e&1&&(z(0,`span`),J(1,`passthrough`),B())}function rW(e,t){if(e&1&&(z(0,`span`,72),J(1),B()),e&2){let e=K().$implicit,t=K();q(`ok`,t.statusTone(e.status)===`ok`)(`redirect`,t.statusTone(e.status)===`redirect`)(`bad`,t.statusTone(e.status)===`bad`),M(),Y(e.status)}}function iW(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),X(``,e.delayMs,` ms`)}}function aW(e,t){e&1&&(z(0,`span`),J(1,`mock body`),B())}function oW(e,t){e&1&&(z(0,`p`,111),J(1,` The SSR mock is not written to TransferState, so the browser requests this URL again. `),B())}function sW(e,t){if(e&1){let e=W();z(0,`li`)(1,`label`,104)(2,`input`,105),G(`change`,function(){let t=O(e).$implicit;return k(K().toggleRule(t.id))}),B(),z(3,`code`,106)(4,`span`,107),J(5),B(),J(6),B()(),z(7,`button`,108),G(`click`,function(){let t=O(e).$implicit;return k(K().removeRule(t.id))}),J(8,` Remove `),B(),z(9,`span`,109)(10,`span`),J(11),B(),P(12,nW,2,0,`span`)(13,rW,2,7,`span`,110),P(14,iW,2,1,`span`),P(15,aW,2,0,`span`),B(),P(16,oW,2,0,`p`,111),B()}if(e&2){let e=t.$implicit,n=K();q(`off`,!e.enabled),M(2),R(`checked`,e.enabled)(`disabled`,!n.canWrite()),N(`aria-describedby`,n.canWrite()?null:`http-writes-off`)(`aria-label`,`Enable rule for `+e.pattern),M(),R(`title`,e.pattern),M(2),Y(e.method||`ANY`),M(),X(` `,e.pattern),M(),R(`disabled`,!n.canWrite()),N(`aria-describedby`,n.canWrite()?null:`http-writes-off`)(`aria-label`,`Remove rule for `+e.pattern),M(4),Y(n.targetLabel(e.target)),M(),F(e.status===void 0?12:13),M(2),F(e.delayMs?14:-1),M(),F(e.body?15:-1),M(),F(n.mocksOnServer(e)?16:-1)}}function cW(e,t){e&1&&(z(0,`li`,52),J(1,`No rules. SSR rules apply on the next page load.`),B())}function lW(e,t){if(e&1){let e=W();z(0,`p`,45),J(1,` Throws while the server renders, so it needs `),z(2,`code`),J(3,`providePangularHttp()`),B(),J(4,` and a page the engine renders. Prerendered files served as static files skip it. `),B(),z(5,`label`),J(6,` Error message `),z(7,`input`,112),G(`input`,function(t){return O(e),k(K().patchOverride(`message`,t))}),B()()}if(e&2){let e=K();M(7),R(`value`,e.overrideDraft().message)}}function uW(e,t){e&1&&J(0,` For a cached HTTP response this is the whole cache record, not only the response body. `)}function dW(e,t){e&1&&(z(0,`p`,116),J(1,` Filled in from the TransferState payload. The value starts empty because the panel only shows a redacted copy, so type the JSON the server should send. `),P(2,uW,1,0),B()),e&2&&(M(2),F(t===`http`?2:-1))}function fW(e,t){if(e&1){let e=W();z(0,`label`),J(1,` TransferState key `),z(2,`input`,113),G(`input`,function(t){return O(e),k(K().patchOverride(`key`,t))}),B()(),z(3,`label`)(4,`span`),J(5,`New JSON value `),z(6,`span`,32),J(7,`(empty removes the entry)`),B()(),z(8,`textarea`,114),G(`input`,function(t){return O(e),k(K().patchOverride(`value`,t))}),B()(),z(9,`p`,115),J(10),B(),P(11,dW,3,1,`p`,116)}if(e&2){let e,t=K();M(2),R(`value`,t.overrideDraft().key),M(6),R(`value`,t.overrideDraft().value),N(`aria-invalid`,t.overrideValueError()?`true`:null)(`aria-describedby`,t.overrideFromPayload()?`override-value-error override-value-note`:`override-value-error`),M(2),Y(t.overrideValueError()),M(),F((e=t.overrideFromPayload())?11:-1,e)}}function pW(e,t){e&1&&(z(0,`p`,45),J(1,` Serves `),z(2,`code`),J(3,`index.csr.html`),B(),J(4,` instead of rendering. Needs `),z(5,`code`),J(6,`browserDistFolder`),B(),J(7,` in `),z(8,`code`),J(9,`initPangularHub()`),B(),J(10,`. `),B())}function mW(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.message)}}function hW(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),Z(``,e.value===void 0?`remove`:`set`,` `,e.key)}}function gW(e,t){if(e&1){let e=W();z(0,`li`)(1,`label`,104)(2,`input`,105),G(`change`,function(){let t=O(e).$implicit;return k(K().toggleOverride(t.id))}),B(),z(3,`code`,106)(4,`span`,107),J(5),B(),J(6),B()(),z(7,`button`,108),G(`click`,function(){let t=O(e).$implicit;return k(K().removeOverride(t.id))}),J(8,` Remove `),B(),z(9,`span`,109),P(10,mW,2,1,`span`),P(11,hW,2,2,`span`),B()()}if(e&2){let e=t.$implicit,n=K();q(`off`,!e.enabled),M(2),R(`checked`,e.enabled)(`disabled`,!n.canWrite()),N(`aria-label`,`Enable `+n.overrideLabel(e.kind)+` for `+e.pattern),M(),R(`title`,e.pattern),M(2),Y(n.overrideLabel(e.kind)),M(),X(` `,e.pattern),M(),R(`disabled`,!n.canWrite()),N(`aria-label`,`Remove `+n.overrideLabel(e.kind)+` for `+e.pattern),M(3),F(e.message?10:-1),M(),F(e.key?11:-1)}}function _W(e,t){e&1&&(z(0,`li`,52),J(1,`No overrides.`),B())}function vW(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2,`DOM nodes hydrated`),B(),z(3,`dd`),J(4),B()(),z(5,`div`)(6,`dt`),J(7,`DOM nodes skipped`),B(),z(8,`dd`),J(9),B()(),z(10,`div`)(11,`dt`),J(12,`Mismatched components`),B(),z(13,`dd`),J(14),B()()),e&2){let e=t;M(4),Y(e.hydrated),M(5),Y(e.skipped),M(4),q(`bad`,e.mismatched>0),M(),Y(e.mismatched)}}function yW(e,t){if(e&1&&(z(0,`span`,118)(1,`span`,119),J(2,`Expected`),B(),z(3,`code`),J(4),B()()),e&2){let e=K().$implicit;M(4),Y(e.expected)}}function bW(e,t){if(e&1&&(z(0,`span`,118)(1,`span`,119),J(2,`Actual`),B(),z(3,`code`),J(4),B()()),e&2){let e=K().$implicit;M(4),Y(e.actual)}}function xW(e,t){if(e&1&&(z(0,`li`)(1,`code`),J(2),B(),P(3,yW,5,1,`span`,118),P(4,bW,5,1,`span`,118),B()),e&2){let e=t.$implicit;M(2),Y(`<`+e.component+`>`),M(),F(e.expected?3:-1),M(),F(e.actual?4:-1)}}function SW(e,t){if(e&1&&(z(0,`h3`),J(1),B(),z(2,`ul`,117),I(3,xW,5,3,`li`,null,Cg),B()),e&2){let e=K();M(),X(`Mismatches (`,e.mismatches.length,`)`),M(2),L(e.mismatches)}}function CW(e,t){if(e&1&&(z(0,`li`)(1,`code`),J(2),B()()),e&2){let e=t.$implicit;M(2),Y(e)}}function wW(e,t){if(e&1&&(z(0,`h3`),J(1,`ngSkipHydration hosts`),B(),z(2,`ul`,120),I(3,CW,3,1,`li`,null,Cg),B()),e&2){let e=K();M(3),L(e.skipHydrationHosts)}}function TW(e,t){e&1&&(z(0,`h3`),J(1,`Warnings`),B(),z(2,`p`,45),J(3,` Not captured: add `),z(4,`code`),J(5,`providePangularHttp()`),B(),J(6,` to the app providers. `),B())}function EW(e,t){if(e&1&&(z(0,`pre`,121),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function DW(e,t){e&1&&(z(0,`p`,81),J(1,`No hydration warnings.`),B())}function OW(e,t){if(e&1&&(z(0,`h3`),J(1),B(),I(2,EW,2,1,`pre`,121,Cg,!1,DW,2,0,`p`,81)),e&2){let e=K();M(),X(`Warnings (`,e.warnings.length,`)`),M(),L(e.warnings)}}function kW(e,t){if(e&1&&(z(0,`dl`,80)(1,`div`)(2,`dt`),J(3,`Enabled`),B(),z(4,`dd`)(5,`span`,88),J(6),B()()(),z(7,`div`)(8,`dt`),J(9,`Hydrated components`),B(),z(10,`dd`),J(11),B()(),z(12,`div`)(13,`dt`),J(14,`Hydrated nodes`),B(),z(15,`dd`),J(16),B()(),z(17,`div`)(18,`dt`),J(19,`Skipped components`),B(),z(20,`dd`),J(21),B()(),z(22,`div`)(23,`dt`),J(24,`App stable after`),B(),z(25,`dd`),J(26),B()(),z(27,`div`)(28,`dt`),J(29,`Incremental defer blocks`),B(),z(30,`dd`),J(31),B()(),P(32,vW,15,5),B(),P(33,SW,5,1),P(34,wW,5,0),P(35,TW,7,0)(36,OW,5,2)),e&2){let e,n=t;M(5),q(`on`,n.enabled)(`off-tag`,!n.enabled),M(),Y(n.enabled?`yes`:`no (client render only)`),M(5),Y(n.hydratedComponents??`n/a`),M(5),Y(n.hydratedNodes??`n/a`),M(5),Y(n.componentsSkippedHydration??`n/a`),M(5),Y(n.stableMs===void 0?`n/a`:n.stableMs+` ms`),M(5),Y(n.deferBlocksWithIncrementalHydration??`n/a`),M(),F((e=n.nodes)?32:-1,e),M(),F(n.mismatches?.length?33:-1),M(),F(n.skipHydrationHosts.length?34:-1),M(),F(n.warningsCaptured===!1?35:36)}}function AW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No hydration data for this page.`),B(),z(3,`p`,45),J(4,`Open a server rendered page of the app to see its stats.`),B()())}function jW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No TransferState script: this page was not server rendered.`),B()())}function MW(e,t){if(e&1&&(z(0,`p`,123),J(1),B()),e&2){let e=K(2);M(),Y(e.error)}}function NW(e,t){e&1&&(z(0,`span`,88),J(1),B()),e&2&&(M(),Y(t))}function PW(e,t){if(e&1&&(z(0,`span`,88),J(1),B(),z(2,`span`,126),J(3),B()),e&2){let e=t,n=K().$implicit,r=K(3);q(`server`,r.statusTone(e.status)===`ok`)(`fault`,r.statusTone(e.status)===`bad`),M(),X(`HTTP `,e.status),M(2),Y(e.url??n.key)}}function FW(e,t){if(e&1&&(z(0,`span`,126),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.key)}}function IW(e,t){if(e&1){let e=W();z(0,`button`,100),G(`click`,function(){O(e);let t=K().$implicit;return k(K(3).editEntry(t))}),J(1,` Edit in SSR overrides `),B()}if(e&2){let e=K().$implicit;N(`aria-label`,`Edit in SSR overrides, key `+e.key)}}function LW(e,t){if(e&1){let e=W();z(0,`details`)(1,`summary`),V(2,`span`,125),P(3,NW,2,1,`span`,88),P(4,PW,4,6)(5,FW,2,1,`span`,126),z(6,`span`,127),J(7),B()(),z(8,`div`,128)(9,`span`,129),J(10,`Key`),B(),z(11,`code`,130),J(12),B(),z(13,`div`,131)(14,`button`,100),G(`click`,function(){let t=O(e).$implicit;return k(K(3).copyKey(t.key))}),J(15,` Copy `),B(),P(16,IW,2,1,`button`,98),B()(),z(17,`pre`,132),J(18),dv(19,`json`),B()()}if(e&2){let e,n,r=t.$implicit,i=K(3);M(3),F((e=i.payloadLabel(r))?3:-1,e),M(),F((n=r.http)?4:5,n),M(3),X(``,r.size,` B`),M(5),Y(r.key),M(2),N(`aria-label`,`Copy key `+r.key),M(2),F(i.canEditEntry(r)?16:-1),M(2),Y(pv(19,7,r.value))}}function RW(e,t){if(e&1&&(z(0,`p`,122),J(1),B(),P(2,MW,2,1,`p`,123),z(3,`div`,124),I(4,LW,20,9,`details`,null,dU),B()),e&2){let e=K();M(),Y_(` `,e.entries.length,` entr`,e.entries.length===1?`y`:`ies`,`, `,e.size,` bytes `),M(),F(e.error?2:-1),M(2),L(e.entries)}}function zW(e,t){e&1&&P(0,jW,3,0,`div`,11)(1,RW,6,4),e&2&&F(+!!t.found)}function BW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`Open a page of the app to see its payload.`),B()())}var VW={kind:`render-error`,pattern:``,message:``,key:``,value:``},HW={"render-error":`Render error`,"client-render":`Client render`,"state-edit":`TransferState edit`},UW={server:`Server`,prerender:`Prerender`,client:`Client`,redirect:`Redirect`,"not-rendered":`Not rendered`,unknown:`Unknown`},WW={pattern:``,method:``,target:`both`,status:``,delayMs:``,body:``};function GW(e){try{let t=new URL(e,`http://x`);return t.pathname+t.search}catch{return e}}var KW=/\[redacted\]|%5Bredacted%5D/gi;function qW(e){return GW(e).replace(KW,`*`)}function JW(e){let t=BD(e);if(t!==null)return t;try{return JSON.parse(e),e.trim()}catch{return null}}var YW=[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`];function XW(e){try{return new URL(e,`http://x`).pathname}catch{return``}}function ZW(e){let t=XW(e);return t===`/`?``:t}var QW=/\[redacted\]|%5Bredacted%5D/i,$W=200,eG=50,tG=500,nG=1e5,rG=[{value:``,label:`None`},...PT.map(([e,t])=>({value:String(e),label:`${e} ${t}`}))],iG=class e{rpc=$(null);canWrite=Q(()=>bE(this.rpc(),`http`));writesOff=KT(`http`);loading=j(!1);failed=j(!1);serverCalls=j([]);pages=j([]);payloads=j({});serverDropped=j(0);requests=j([]);rules=j([]);overrides=j([]);overrideDraft=j({...VW});overrideFromPayload=j(null);overrideKindOptions=[{value:`render-error`,label:`Render error`},{value:`client-render`,label:`Force Client render`},{value:`state-edit`,label:`Edit TransferState entry`}];overrideValueError=Q(()=>{let e=this.overrideDraft().value.trim();if(!e)return``;try{return JSON.parse(e),``}catch{return`The value must be valid JSON.`}});overrideReady=Q(()=>{let e=this.overrideDraft();return!e.pattern.trim()||this.overrides().length>=20?!1:e.kind!==`state-edit`||!!e.key.trim()&&!this.overrideValueError()});hostPageId=eE();selectedPageId=Tv({source:()=>this.pages(),computation:(e,t)=>t?.value&&e.some(e=>e.pageId===t.value)?t.value:e.find(e=>e.pageId===this.hostPageId)?.pageId??e[0]?.pageId??null});selectedCallId=j(null);draft=j({...WW});message=j(``);bodyPlaceholder=`{ "error": "Service unavailable" }`;statusOptions=rG;unsubscribe=[];destroyRef=E(Cs);injector=E(xs);host=E(Ml);selected=Q(()=>this.pages().find(e=>e.pageId===this.selectedPageId())??null);pageRequestId=Q(()=>this.selected()?.ssrRequestId??null);selectedRequestId=Tv(()=>this.pageRequestId());selectedPayload=Q(()=>{let e=this.selectedPageId();return e?this.payloads()[e]??null:null});maxCalls=Q(()=>yE(this.rpc()).limits.httpCalls);droppedCalls=Q(()=>(this.selected()?.dropped??0)+this.serverDropped());pageServerCalls=Q(()=>{let e=this.selected()?.initialUrl;return e?this.serverCalls().filter(t=>!t.pageUrl||t.pageUrl===e):this.serverCalls()});timeline=Q(()=>[...this.pageServerCalls(),...this.selected()?.calls??[]].sort((e,t)=>t.at-e.at));callQuery=j(``);sideFilter=j(`all`);failedOnly=j(!1);sideOptions=[{value:`all`,label:`All sides`},{value:`server`,label:`SSR`},{value:`client`,label:`Client`}];visibleCalls=Q(()=>{let e=this.callQuery().trim().toLowerCase(),t=this.sideFilter()??`all`,n=this.failedOnly();return this.timeline().filter(r=>(t===`all`||r.side===t)&&(!n||this.isFailed(r))&&(!e||`${r.method} ${r.url}`.toLowerCase().includes(e)||`${r.method} ${GW(r.url)}`.toLowerCase().includes(e)))});selectedCall=Q(()=>this.visibleCalls().find(e=>e.id===this.selectedCallId())??null);selectedRequest=Q(()=>this.requests().find(e=>e.id===this.selectedRequestId())??null);requestCalls=Q(()=>{let e=this.selectedRequest()?.id;return e?this.serverCalls().filter(t=>t.requestId===e):[]});requestPage=Q(()=>{let e=this.selectedRequest()?.id;return e?this.pages().find(t=>t.ssrRequestId===e)??null:null});refetched=Q(()=>{let e=this.selectedRequest(),t=this.requestPage();if(!e||!t)return[];let n=new Set(this.requestCalls().filter(e=>e.status).map(e=>`${e.method} ${GW(e.url)}`));return t.calls.filter(t=>t.side===`client`&&!t.cacheHit&&!t.mocked&&t.at>=e.at&&n.has(`${t.method} ${GW(t.url)}`))});draftMocksOnServer=Q(()=>{let e=this.draftRule();return!!e&&this.mocksOnServer(e)});draftRule=Q(()=>{let e=this.draft(),t=e.pattern.trim();if(!t||t.length>tG||this.bodyError()||this.rules().length>=eG)return null;let n=e.body.trim(),r=Math.min(Math.max(Math.round(Number(e.delayMs))||0,0),1e4),i=e.status.trim()?Number(e.status):n?200:void 0;return i!==void 0&&!FT(i)||i===void 0&&!r?null:{pattern:t,enabled:!0,target:e.target,...e.method?{method:e.method}:{},...i===void 0?{}:{status:i},...r?{delayMs:r}:{},...n?{body:n}:{}}});draftHint=Q(()=>{let e=this.draft();return this.rules().length>=eG?`You can add up to ${eG} rules. Remove one to add another.`:e.pattern.trim()?e.pattern.trim().length>tG?`The URL pattern is limited to ${tG} characters.`:this.bodyError()?``:e.status.trim()&&!FT(Number(e.status))?`Pick a status from the list.`:this.draftRule()?!e.status.trim()&&e.body.trim()?`With no status, the mock body returns 200.`:``:`Set a status, a delay or a mock body.`:`Enter a URL pattern to add a rule.`});bodyError=Q(()=>{let e=this.draft().body.trim();if(!e)return``;if(e.length>nG)return`The mock body is limited to ${nG} characters.`;try{return JSON.parse(e),``}catch{return`The mock body must be valid JSON.`}});constructor(){uc(()=>{let e=this.rpc();e&&this.load(e)}),this.destroyRef.onDestroy(()=>this.stopListening())}async load(e){this.loading.set(!0),this.failed.set(!1);try{let t=e.scope(`pangular`).rpc,[n,r]=await Promise.all([t.sharedState(`http`),t.sharedState(`http-payloads`)]);if(this.destroyRef.destroyed)return;let i=e=>{let t=e;this.serverCalls.set(t?.serverCalls??[]),this.serverDropped.set(t?.serverDropped??0),this.requests.set([...t?.requests??[]].reverse()),this.pages.set(t?.pages??[]),this.rules.set(t?.rules??[]),this.overrides.set(t?.ssrOverrides??[])},a=e=>this.payloads.set(e?.pages??{});i(n.value()),a(r.value()),this.stopListening(),this.unsubscribe=[n.on(`updated`,i),r.on(`updated`,a)]}catch{this.failed.set(!0)}finally{this.loading.set(!1)}}guardVerdict(e){return e.guards?.passed===!1?e.outcome===`redirected`?`redirected`:`rejected`:``}msLabel(e){return e===void 0?`n/a`:`${e} ms`}skipText(e){return NT[e]??``}refetchReason(e){let t=`${e.method} ${GW(e.url)}`,n=this.requestCalls().filter(e=>`${e.method} ${GW(e.url)}`===t),r=n[0];return r?.cacheSkip&&n.every(e=>e.cacheSkip===r.cacheSkip)?this.skipText(r.cacheSkip):``}renderModeLabel(e){return UW[e]??`Unknown`}statusLabel(e){return e.cancelled?`cancelled`:e.status?String(e.status):`ERR`}callTone(e){return e.cancelled?`neutral`:this.statusTone(e.status)}isFailed(e){return!!e.cancelled||!e.status||e.status>=400}clearCallFilters(){this.callQuery.set(``),this.sideFilter.set(`all`),this.failedOnly.set(!1),this.host.nativeElement.querySelector(`#timeline-search`)?.focus()}rulePatternOf(e){return e.rulePattern?e.rulePattern:e.ruleId?this.rules().find(t=>t.id===e.ruleId)?.pattern??null:null}openCall(e){this.selectedCallId.set(e),Id(()=>this.host.nativeElement.querySelector(`#preview-heading`)?.focus(),{injector:this.injector})}previewText(e){if(e.preview!==void 0)return BD(e.preview)??e.preview}async copyPreview(e){let t=this.previewText(e);if(t)try{await navigator.clipboard.writeText(t),this.message.set(`Copied.`)}catch{this.message.set(`The clipboard is not available here.`)}}mockCall(e){let t=e.method.toUpperCase(),n=qW(e.url),r=e.error||!e.preview?null:JW(e.preview);this.draft.set({...WW,pattern:n,method:t,body:r??``});let i=`${t} ${n}`;this.message.set(r?`Filled in a rule for ${i} with the preview as its body. Check it, then add the rule.`:e.preview&&!e.error?`Filled in a rule for ${i}. The preview is not complete JSON, so it is not used as the body.`:`Filled in a rule for ${i}. Set a status, a delay or a body, then add the rule.`),Id(()=>this.host.nativeElement.querySelector(`#rule-pattern`)?.focus(),{injector:this.injector})}closePreview(){let e=this.selectedCallId();this.selectedCallId.set(null),e&&[...this.host.nativeElement.querySelectorAll(`button[data-call-id]`)].find(t=>t.dataset.callId===e)?.focus()}stopListening(){for(let e of this.unsubscribe.splice(0))e()}statusTone(e){return e===void 0?`neutral`:e===0||e>=400?`bad`:e>=300?`redirect`:e>=200?`ok`:`neutral`}mocksOnServer(e){return e.target!==`client`&&e.status!==void 0&&e.status<400}payloadLabel(e){return e.source===`hydration`?`hydration annotations`:e.fn?`Analog server function ${e.fn.name??e.fn.id}`:e.source===`analog`?`Analog`:null}targetLabel(e){return e===`both`?`SSR + client`:e===`server`?`SSR only`:`Client only`}pageOptions=Q(()=>this.pages().map(e=>({value:e.pageId,label:e.title||e.url})));methodOptions=Q(()=>{let e=this.draft().method;return[{value:``,label:`Any`},...(e&&!YW.includes(e)?[...YW,e]:YW).map(e=>({value:e,label:e}))]});targetOptions=[{value:`both`,label:`SSR + client`},{value:`server`,label:`SSR only`},{value:`client`,label:`Client only`}];selectPage(e){e&&this.selectedPageId.set(e),this.selectedCallId.set(null),this.overrideFromPayload.set(null)}setDraft(e,t){this.draft.update(n=>({...n,[e]:t}))}patch(e,t){let n=t.target.value;this.draft.update(t=>({...t,[e]:n}))}async addRule(e){e.preventDefault();let t=this.draftRule();if(!t)return;let n={id:`r${Date.now().toString(36)}${Math.random().toString(36).slice(2,6)}`,...t};await this.saveRules([...this.rules(),n],`Rule added.`,n)&&(this.draft.set({...WW}),this.host.nativeElement.querySelector(`#rule-pattern`)?.focus())}toggleRule(e){let t=this.rules().find(t=>t.id===e);t&&this.saveRules(this.rules().map(t=>t.id===e?{...t,enabled:!t.enabled}:t),`Rule updated.`,t)}removeRule(e){let t=this.rules().find(t=>t.id===e);t&&this.saveRules(this.rules().filter(t=>t.id!==e),`Rule removed.`,t)}async clearCalls(){try{await iE(this.rpc(),`clear-http-calls`),this.selectedCallId.set(null),this.message.set(`Timeline cleared.`)}catch{this.message.set(`Could not clear the timeline.`)}}overrideLabel(e){return HW[e]??e}setOverrideDraft(e,t){this.overrideDraft.update(n=>({...n,[e]:t})),e===`kind`&&t!==`state-edit`&&this.overrideFromPayload.set(null)}patchOverride(e,t){let n=t.target.value;this.overrideDraft.update(t=>({...t,[e]:n})),e===`key`&&this.overrideFromPayload.set(null)}async copyKey(e){try{await navigator.clipboard.writeText(e),this.message.set(`Copied.`)}catch{this.message.set(`The clipboard is not available here.`)}}canEditEntry(e){let{key:t}=e;return this.canWrite()&&!!t&&t===t.trim()&&t.length<=$W&&!QW.test(t)}editEntry(e){if(!this.canEditEntry(e))return;let t=this.selected();this.overrideDraft.set({...VW,kind:`state-edit`,pattern:t?ZW(t.initialUrl??t.url):``,key:e.key}),this.overrideFromPayload.set(e.http?`http`:`other`),this.message.set(`Editing the TransferState entry in SSR overrides.`),Id(()=>{let e=this.host.nativeElement.querySelector(this.overrideDraft().pattern?`#override-value`:`#override-pattern`);e?.scrollIntoView?.({block:`center`}),e?.focus()},{injector:this.injector})}async addOverride(e){if(e.preventDefault(),!this.overrideReady())return;let t=this.overrideDraft(),n={id:`o${Date.now().toString(36)}${Math.random().toString(36).slice(2,6)}`,kind:t.kind,pattern:t.pattern.trim(),enabled:!0,...t.kind===`render-error`&&t.message.trim()?{message:t.message.trim()}:{},...t.kind===`state-edit`?{key:t.key.trim()}:{},...t.kind===`state-edit`&&t.value.trim()?{value:t.value.trim()}:{}};await this.saveOverrides([...this.overrides(),n],`Override added. Reload the page.`)&&(this.overrideDraft.set({...VW,kind:t.kind}),this.overrideFromPayload.set(null),this.host.nativeElement.querySelector(`#override-pattern`)?.focus())}toggleOverride(e){this.saveOverrides(this.overrides().map(t=>t.id===e?{...t,enabled:!t.enabled}:t),`Override updated. Reload the page.`)}removeOverride(e){this.saveOverrides(this.overrides().filter(t=>t.id!==e),`Override removed.`)}async saveOverrides(e,t){try{let n=await iE(this.rpc(),`set-ssr-overrides`,e);return this.overrides.set(Array.isArray(n)?n:e),this.message.set(t),!0}catch{return this.message.set(`Could not save the overrides.`),!1}}async saveRules(e,t,n){try{let r=await iE(this.rpc(),`set-http-rules`,e);return this.rules.set(Array.isArray(r)?r:e),this.message.set(n.target===`client`?t:`${t} Reload the page to apply it to SSR.`),!0}catch{return this.message.set(`Could not save the rules.`),!1}}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-network-inspector`]],inputs:{rpc:[1,`rpc`]},decls:126,vars:48,consts:[[`role`,`status`,1,`state`],[`role`,`alert`,1,`state`,`error`],[1,`toolbar`],[1,`page-picker`],[`id`,`page-picker-label`],[`labelledBy`,`page-picker-label`,`emptyText`,`No connected page`,`placeholder`,`No connected page`,3,`valueChange`,`options`,`value`],[`type`,`button`,3,`click`,`disabled`],[`role`,`status`,1,`message`],[1,`grid`],[`aria-labelledby`,`ssr-heading`,1,`panel`,`wide`],[`id`,`ssr-heading`],[1,`empty`],[`aria-labelledby`,`timeline-heading`,1,`panel`,`wide`],[`id`,`timeline-heading`],[`what`,`HTTP calls`,`limit`,`httpCalls`,3,`dropped`,`max`],[`role`,`group`,`aria-label`,`Filter the HTTP timeline`,1,`filters`],[1,`search`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`search-icon`],[`cx`,`11`,`cy`,`11`,`r`,`7`],[`d`,`m20 20-3.5-3.5`],[`id`,`timeline-search`,`type`,`search`,`placeholder`,`Find a URL or method…`,`aria-label`,`Find a URL or method`,`autocomplete`,`off`,`spellcheck`,`false`,3,`input`,`keydown.escape`,`value`],[`ariaLabel`,`Side`,1,`side-filter`,3,`valueChange`,`options`,`value`],[1,`inline`,`failed-toggle`],[`type`,`checkbox`,3,`change`,`checked`],[`aria-live`,`polite`,1,`total`],[1,`table-wrap`],[`role`,`status`,1,`empty`,`no-match`],[`id`,`call-preview`,`role`,`region`,`aria-labelledby`,`preview-heading`,1,`preview`],[`aria-labelledby`,`rules-heading`,1,`panel`],[`id`,`rules-heading`],[`id`,`http-writes-off`,1,`muted`,`small`],[`id`,`rule-form`,1,`rule-form`,3,`submit`],[1,`hint`],[`id`,`rule-pattern`,`required`,``,`spellcheck`,`false`,`autocomplete`,`off`,`placeholder`,`e.g. /api/products`,3,`input`,`value`],[1,`row`],[1,`field-group`],[`id`,`rule-method-label`],[`labelledBy`,`rule-method-label`,3,`valueChange`,`options`,`value`],[`id`,`rule-target-label`],[`labelledBy`,`rule-target-label`,3,`valueChange`,`options`,`value`],[`id`,`rule-status-label`],[`labelledBy`,`rule-status-label`,3,`valueChange`,`options`,`value`],[`type`,`number`,`inputmode`,`numeric`,`min`,`0`,`max`,`10000`,`placeholder`,`0`,3,`input`,`value`],[`rows`,`3`,`spellcheck`,`false`,`aria-describedby`,`body-error`,3,`input`,`placeholder`,`value`],[`id`,`body-error`,1,`field-error`],[1,`muted`,`small`],[`id`,`rule-hint`,1,`muted`,`small`],[1,`form-actions`],[`type`,`submit`,3,`disabled`],[1,`rules-heading`],[1,`rules`],[3,`off`],[1,`empty-rule`],[`aria-labelledby`,`overrides-heading`,1,`panel`],[`id`,`overrides-heading`],[1,`rule-form`,3,`submit`],[`id`,`override-kind-label`],[`labelledBy`,`override-kind-label`,3,`valueChange`,`options`,`value`],[`id`,`override-pattern`,`required`,``,`spellcheck`,`false`,`autocomplete`,`off`,`placeholder`,`e.g. /examples/ssr`,3,`input`,`value`],[`aria-labelledby`,`hydration-heading`,1,`panel`],[`id`,`hydration-heading`],[`aria-labelledby`,`payload-heading`,1,`panel`,`wide`],[`id`,`payload-heading`],[`aria-hidden`,`true`,1,`spinner`],[`scope`,`col`],[`scope`,`col`,1,`num`],[3,`selected`],[`id`,`ssr-detail`,`role`,`region`,`aria-labelledby`,`ssr-detail-heading`,1,`preview`],[3,`click`],[1,`url`],[`type`,`button`,`aria-controls`,`ssr-detail`,1,`link`,3,`title`],[1,`method`],[1,`status`],[`aria-hidden`,`true`,1,`dot`],[1,`num`],[1,`notes`],[1,`tag`,`server`],[1,`tag`,`mock`],[1,`tag`,`fault`],[`id`,`ssr-detail-heading`],[1,`stats`],[1,`muted`,`small`,`ok-note`],[1,`request-call`],[1,`muted`],[1,`stats`,`nav-stats`],[1,`preview-url`,3,`title`],[1,`tag`,3,`title`],[1,`muted`,`small`,`skip-reason`],[1,`tag`],[`type`,`button`,1,`link`,3,`title`],[1,`page-url`,3,`title`],[1,`tag`,`rule-ref`,3,`title`],[1,`empty-actions`],[`type`,`button`,3,`click`],[`id`,`call-preview`,`role`,`region`,`aria-labelledby`,`preview-heading`,1,`preview`,3,`keydown.escape`],[1,`preview-head`],[`id`,`preview-heading`,`tabindex`,`-1`],[1,`preview-actions`],[`type`,`button`,1,`ghost`],[`type`,`button`,`aria-controls`,`rule-form`,1,`ghost`,3,`click`,`disabled`],[`type`,`button`,1,`ghost`,3,`click`],[1,`preview-meta`],[1,`preview-rule`],[`tabindex`,`0`,1,`preview-body`],[1,`inline`],[`type`,`checkbox`,3,`change`,`checked`,`disabled`],[1,`rule-pattern`,3,`title`],[1,`rule-method`],[`type`,`button`,1,`link`,`remove`,3,`click`,`disabled`],[1,`rule-meta`],[1,`status`,3,`ok`,`redirect`,`bad`],[1,`rule-note`],[`spellcheck`,`false`,`placeholder`,`Simulated render error`,3,`input`,`value`],[`id`,`override-key`,`spellcheck`,`false`,`autocomplete`,`off`,3,`input`,`value`],[`id`,`override-value`,`rows`,`3`,`spellcheck`,`false`,3,`input`,`value`],[`id`,`override-value-error`,1,`field-error`],[`id`,`override-value-note`,1,`muted`,`small`],[1,`plain`,`mismatches`],[1,`mismatch-row`],[1,`mismatch-label`],[1,`plain`],[1,`warn`],[1,`muted`,`small`,`summary-line`],[`role`,`alert`,1,`bad`],[1,`entries`],[`aria-hidden`,`true`,1,`chevron`],[1,`entry-key`],[1,`entry-size`],[1,`entry-key-row`],[1,`entry-key-label`],[1,`entry-key-text`],[1,`entry-actions`],[`tabindex`,`0`]],template:function(e,t){if(e&1&&(P(0,fU,4,0,`div`,0)(1,pU,5,0,`div`,1),z(2,`div`,2)(3,`div`,3)(4,`span`,4),J(5,`Page`),B(),z(6,`app-select`,5),G(`valueChange`,function(e){return t.selectPage(e)}),B()(),z(7,`button`,6),G(`click`,function(){return t.clearCalls()}),J(8,` Clear timeline `),B(),z(9,`p`,7),J(10),B()(),z(11,`div`,8)(12,`section`,9)(13,`h2`,10),J(14),B(),P(15,RU,20,1)(16,zU,11,0,`div`,11),B(),z(17,`section`,12)(18,`h2`,13),J(19),B(),V(20,`app-limit-note`,14),z(21,`div`,15)(22,`div`,16),A(),z(23,`svg`,17),V(24,`circle`,18)(25,`path`,19),B(),ps(),z(26,`input`,20),G(`input`,function(e){return t.callQuery.set(e.target.value)})(`keydown.escape`,function(){return t.callQuery.set(``)}),B()(),z(27,`app-select`,21),ev(`valueChange`,function(e){return $_(t.sideFilter,e)||(t.sideFilter=e),e}),B(),z(28,`label`,22)(29,`input`,23),G(`change`,function(e){return t.failedOnly.set(e.target.checked)}),B(),J(30,` Failed only `),B(),z(31,`span`,24),J(32),B()(),P(33,KU,21,0,`div`,25)(34,YU,9,1,`div`,26)(35,XU,11,0,`div`,11),P(36,$U,20,17,`div`,27),B(),z(37,`section`,28)(38,`h2`,29),J(39,`Fault injection`),B(),P(40,eW,2,1,`p`,30),z(41,`form`,31),G(`submit`,function(e){return t.addRule(e)}),z(42,`label`)(43,`span`),J(44,`URL pattern `),z(45,`span`,32),J(46,`(substring or * glob)`),B()(),z(47,`input`,33),G(`input`,function(e){return t.patch(`pattern`,e)}),B()(),z(48,`div`,34)(49,`div`,35)(50,`span`,36),J(51,`Method`),B(),z(52,`app-select`,37),G(`valueChange`,function(e){return t.setDraft(`method`,e??``)}),B()(),z(53,`div`,35)(54,`span`,38),J(55,`Apply on`),B(),z(56,`app-select`,39),G(`valueChange`,function(e){return t.setDraft(`target`,e??`both`)}),B()()(),z(57,`div`,34)(58,`div`,35)(59,`span`,40),J(60,`Status`),B(),z(61,`app-select`,41),G(`valueChange`,function(e){return t.setDraft(`status`,e??``)}),B()(),z(62,`label`),J(63,` Delay (ms) `),z(64,`input`,42),G(`input`,function(e){return t.patch(`delayMs`,e)}),B()()(),z(65,`label`)(66,`span`),J(67,`Mock JSON body `),z(68,`span`,32),J(69,`(optional)`),B()(),z(70,`textarea`,43),G(`input`,function(e){return t.patch(`body`,e)}),B()(),z(71,`p`,44),J(72),B(),P(73,tW,2,0,`p`,45),z(74,`p`,46),J(75),B(),z(76,`div`,47)(77,`button`,48),J(78,` Add rule `),B()()(),z(79,`h3`,49),J(80),B(),z(81,`ul`,50),I(82,sW,17,17,`li`,51,cU,!1,cW,2,0,`li`,52),B()(),z(85,`section`,53)(86,`h2`,54),J(87,`SSR overrides`),B(),z(88,`p`,45),J(89,` Development only. These change what the server sends for matching pages, from the next full page load, and the request is marked `),z(90,`strong`),J(91,`overridden`),B(),J(92,`. `),B(),z(93,`form`,55),G(`submit`,function(e){return t.addOverride(e)}),z(94,`div`,35)(95,`span`,56),J(96,`Override`),B(),z(97,`app-select`,57),G(`valueChange`,function(e){return t.setOverrideDraft(`kind`,e??`render-error`)}),B()(),z(98,`label`)(99,`span`),J(100,`Page pattern `),z(101,`span`,32),J(102,`(substring or * glob)`),B()(),z(103,`input`,58),G(`input`,function(e){return t.patchOverride(`pattern`,e)}),B()(),P(104,lW,8,1)(105,fW,12,6)(106,pW,11,0,`p`,45),z(107,`div`,47)(108,`button`,48),J(109,` Add override `),B()()(),z(110,`h3`,49),J(111),B(),z(112,`ul`,50),I(113,gW,12,12,`li`,51,cU,!1,_W,2,0,`li`,52),B()(),z(116,`section`,59)(117,`h2`,60),J(118,`Hydration`),B(),P(119,kW,37,14)(120,AW,5,0,`div`,11),B(),z(121,`section`,61)(122,`h2`,62),J(123,`TransferState payload`),B(),P(124,zW,2,1)(125,BW,3,0,`div`,11),B()()),e&2){let e,n,r,i;F(t.loading()?0:t.failed()?1:-1),M(6),R(`options`,t.pageOptions())(`value`,t.selected()?.pageId??null),M(),R(`disabled`,!t.canWrite()),N(`aria-describedby`,t.canWrite()?null:`http-writes-off`),M(3),Y(t.message()),M(4),X(`SSR requests (`,t.requests().length,`)`),M(),F(t.requests().length?15:16),M(4),X(`HTTP timeline (`,t.timeline().length,`)`),M(),R(`dropped`,t.droppedCalls())(`max`,t.maxCalls()),M(6),R(`value`,t.callQuery()),M(),R(`options`,t.sideOptions),Q_(`value`,t.sideFilter),M(2),R(`checked`,t.failedOnly()),M(3),Z(``,t.visibleCalls().length,` of `,t.timeline().length),M(),F(t.visibleCalls().length?33:t.timeline().length?34:35),M(3),F((e=t.selectedCall())?36:-1,e),M(4),F(t.canWrite()?-1:40),M(7),R(`value`,t.draft().pattern),M(5),R(`options`,t.methodOptions())(`value`,t.draft().method),M(4),R(`options`,t.targetOptions)(`value`,t.draft().target),M(5),R(`options`,t.statusOptions)(`value`,t.draft().status),M(3),R(`value`,t.draft().delayMs),M(6),R(`placeholder`,t.bodyPlaceholder)(`value`,t.draft().body),N(`aria-invalid`,t.bodyError()?`true`:null),M(2),Y(t.bodyError()),M(),F(t.draftMocksOnServer()?73:-1),M(2),Y(t.draftHint()),M(2),R(`disabled`,!t.canWrite()||!t.draftRule()),N(`aria-describedby`,t.canWrite()?`rule-hint`:`http-writes-off`),M(3),X(`Rules (`,t.rules().length,`)`),M(2),L(t.rules()),M(15),R(`options`,t.overrideKindOptions)(`value`,t.overrideDraft().kind),M(6),R(`value`,t.overrideDraft().pattern),M(),F((n=t.overrideDraft().kind)===`render-error`?104:n===`state-edit`?105:n===`client-render`?106:-1),M(4),R(`disabled`,!t.canWrite()||!t.overrideReady()),N(`aria-describedby`,t.canWrite()?null:`http-writes-off`),M(3),X(`Overrides (`,t.overrides().length,`)`),M(2),L(t.overrides()),M(6),F((r=t.selected()?.hydration)?119:120,r),M(5),F((i=t.selectedPayload())?124:125,i)}},dependencies:[UD,AD,ab],styles:[`@charset "UTF-8"; +}`]})},uU=(e,t)=>t.id,dU=(e,t)=>t.id+t.kind,fU=(e,t)=>t.side+t.id,pU=(e,t)=>t.key;function mU(e,t){e&1&&(z(0,`div`,0),V(1,`span`,63),z(2,`span`),J(3,`Loading…`),B()())}function hU(e,t){e&1&&(z(0,`div`,1)(1,`strong`),J(2,`Could not reach the devtools server.`),B(),z(3,`span`),J(4,`Check that the app's dev server is running with the devtools plugin, then reopen this panel.`),B()())}function gU(e,t){e&1&&(z(0,`span`,76),J(1,`this page`),B())}function _U(e,t){e&1&&(z(0,`span`,77),J(1,`overridden`),B())}function vU(e,t){e&1&&(z(0,`span`,78),J(1,`aborted`),B())}function yU(e,t){if(e&1){let e=W();z(0,`tr`,68),G(`click`,function(){let t=O(e).$implicit;return k(K(2).selectedRequestId.set(t.id))}),z(1,`td`,69)(2,`button`,70)(3,`span`,71),J(4),B(),J(5),B()(),z(6,`td`,72),V(7,`span`,73),J(8),B(),z(9,`td`),J(10),B(),z(11,`td`,74),J(12),B(),z(13,`td`,74),J(14),B(),z(15,`td`)(16,`div`,75),P(17,gU,2,0,`span`,76),P(18,_U,2,0,`span`,77),P(19,vU,2,0,`span`,78),B()()()}if(e&2){let e=t.$implicit,n=K(2);q(`selected`,n.selectedRequest()?.id===e.id),M(2),R(`title`,e.url),N(`aria-pressed`,n.selectedRequest()?.id===e.id),M(2),Y(e.method),M(),X(` `,e.url,` `),M(),q(`ok`,n.statusTone(e.status)===`ok`)(`redirect`,n.statusTone(e.status)===`redirect`)(`bad`,n.statusTone(e.status)===`bad`),M(2),X(``,e.status,` `),M(2),Y(n.renderModeLabel(e.renderMode)),M(2),X(``,e.renderMs,` ms`),M(2),Z(``,e.fetches,` (`,e.fetchMs,` ms)`),M(3),F(e.id===n.selected()?.ssrRequestId?17:-1),M(),F(e.overrides?.length?18:-1),M(),F(e.aborted?19:-1)}}function bU(e,t){if(e&1&&(z(0,`span`,83),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.note)}}function xU(e,t){if(e&1&&(z(0,`p`,82)(1,`span`,77),J(2),B(),z(3,`span`),J(4),B(),P(5,bU,2,1,`span`,83),B()),e&2){let e=t.$implicit,n=K(4);M(2),Y(n.overrideLabel(e.kind)),M(2),Y(e.applied?`applied`:`not applied`),M(),F(e.note?5:-1)}}function SU(e,t){if(e&1&&(z(0,`h3`),J(1,`Overrides from the panel`),B(),z(2,`p`,45),J(3,` This response was changed on purpose, so it is not what the app sends on its own. `),B(),I(4,xU,6,3,`p`,82,dU)),e&2){let e=K();M(4),L(e.overrides)}}function CU(e,t){if(e&1&&(J(0,` to `),z(1,`code`),J(2),B()),e&2){let e=K().$implicit;M(2),Y(e.finalUrl)}}function wU(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2,`Guards`),B(),z(3,`dd`),J(4),B()()),e&2){let e=K().$implicit,t=K(4);M(3),q(`bad`,t.guardVerdict(e)===`rejected`),M(),Z(` `,t.msLabel(e.guards.ms),``,t.guardVerdict(e)?`, `+t.guardVerdict(e):``,` `)}}function TU(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2,`Resolvers`),B(),z(3,`dd`),J(4),B()()),e&2){let e=K().$implicit,t=K(4);M(4),Y(t.msLabel(e.resolvers.ms))}}function EU(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2,`Navigation total`),B(),z(3,`dd`),J(4),B()()),e&2){let e=K().$implicit;M(4),X(``,e.durationMs,` ms`)}}function DU(e,t){if(e&1&&(z(0,`p`,45),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.reason)}}function OU(e,t){if(e&1&&(z(0,`dl`,84)(1,`div`)(2,`dt`),J(3,`Navigation`),B(),z(4,`dd`)(5,`code`),J(6),B(),P(7,CU,3,1),J(8),B()(),P(9,wU,5,4,`div`),P(10,TU,5,1,`div`),P(11,EU,5,1,`div`),B(),P(12,DU,2,1,`p`,45)),e&2){let e=t.$implicit;M(6),Y(e.url),M(),F(e.finalUrl?7:-1),M(),X(` (`,e.outcome,`) `),M(),F(e.guards?9:-1),M(),F(e.resolvers?10:-1),M(),F(e.durationMs===void 0?-1:11),M(),F(e.reason?12:-1)}}function kU(e,t){if(e&1&&(z(0,`h3`),J(1,`Router during the render`),B(),I(2,OU,13,7,null,null,Cg)),e&2){let e=K();M(2),L(e.navigations)}}function AU(e,t){e&1&&(z(0,`span`,76),J(1,`cached`),B())}function jU(e,t){if(e&1&&(z(0,`span`,86),J(1,`not cached`),B()),e&2){let e=K().$implicit;R(`title`,K(3).skipText(e.cacheSkip))}}function MU(e,t){if(e&1&&(z(0,`p`,87),J(1),B()),e&2){let e=K().$implicit,t=K(3);M(),X(`Not cached: `,t.skipText(e.cacheSkip),`.`)}}function NU(e,t){if(e&1&&(z(0,`p`,82)(1,`span`,71),J(2),B(),z(3,`span`,85),J(4),B(),z(5,`span`,72),J(6),B(),z(7,`span`,83),J(8),B(),P(9,AU,2,0,`span`,76)(10,jU,2,1,`span`,86),B(),P(11,MU,2,1,`p`,87)),e&2){let e=t.$implicit,n=K(3);M(2),Y(e.method),M(),R(`title`,e.url),M(),Y(e.url),M(),q(`ok`,n.callTone(e)===`ok`)(`bad`,n.callTone(e)===`bad`),M(),Y(n.statusLabel(e)),M(2),X(``,e.durationMs,` ms`),M(),F(e.cacheStored?9:e.cacheSkip?10:-1),M(2),F(!e.cacheStored&&e.cacheSkip?11:-1)}}function PU(e,t){e&1&&(z(0,`p`,45),J(1,`The render made no HttpClient calls.`),B())}function FU(e,t){e&1&&(z(0,`p`,87),J(1),B()),e&2&&(M(),X(`Why: `,t,`.`))}function IU(e,t){if(e&1&&(z(0,`p`,82)(1,`span`,71),J(2),B(),z(3,`span`,85),J(4),B(),z(5,`span`,78),J(6,`cache miss`),B()(),P(7,FU,2,1,`p`,87)),e&2){let e,n=t.$implicit,r=K(4);M(2),Y(n.method),M(),R(`title`,n.url),M(),Y(n.url),M(3),F((e=r.refetchReason(n))?7:-1,e)}}function LU(e,t){if(e&1&&(z(0,`h3`),J(1),B(),z(2,`p`,45),J(3,` These calls ran on the server and again after hydration instead of reading the transfer cache. `),B(),I(4,IU,8,4,null,null,uU)),e&2){let e=K(3);M(),X(`Fetched again in the browser (`,e.refetched().length,`)`),M(3),L(e.refetched())}}function RU(e,t){e&1&&(z(0,`p`,81),J(1,`No server call ran again in the browser.`),B())}function zU(e,t){if(e&1&&(z(0,`div`,67)(1,`h3`,79),J(2),z(3,`code`),J(4),B()(),z(5,`dl`,80)(6,`div`)(7,`dt`),J(8,`Request id`),B(),z(9,`dd`)(10,`code`),J(11),B()()(),z(12,`div`)(13,`dt`),J(14,`Render`),B(),z(15,`dd`),J(16),B()(),z(17,`div`)(18,`dt`),J(19,`Total`),B(),z(20,`dd`),J(21),B()(),z(22,`div`)(23,`dt`),J(24,`Sent`),B(),z(25,`dd`),J(26),B()(),z(27,`div`)(28,`dt`),J(29,`Browser page`),B(),z(30,`dd`),J(31),B()()(),P(32,SU,6,0),P(33,kU,4,0),z(34,`h3`),J(35),B(),I(36,NU,12,11,null,null,uU,!1,PU,2,0,`p`,45),P(39,LU,6,1)(40,RU,2,0,`p`,81),B()),e&2){let e=t,n=K(2);M(2),X(` `,e.method,` `),M(2),Y(e.url),M(7),Y(e.id),M(5),X(``,e.renderMs,` ms`),M(5),X(``,e.durationMs,` ms`),M(5),X(``,e.bytes,` B`),M(5),Y(n.requestPage()?.title||n.requestPage()?.url||`not connected`),M(),F(e.overrides?.length?32:-1),M(),F(e.navigations?.length?33:-1),M(2),X(`Server calls (`,n.requestCalls().length,`)`),M(),L(n.requestCalls()),M(3),F(n.refetched().length?39:n.requestPage()&&n.requestCalls().length?40:-1)}}function BU(e,t){if(e&1&&(z(0,`div`,25)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,64),J(5,`Request`),B(),z(6,`th`,64),J(7,`Status`),B(),z(8,`th`,64),J(9,`Render mode`),B(),z(10,`th`,65),J(11,`Render`),B(),z(12,`th`,65),J(13,`Server calls`),B(),z(14,`th`,64),J(15,`Notes`),B()()(),z(16,`tbody`),I(17,yU,20,20,`tr`,66,uU),B()()(),P(19,zU,41,12,`div`,67)),e&2){let e,t=K();M(17),L(t.requests()),M(2),F((e=t.selectedRequest())?19:-1,e)}}function VU(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No SSR requests traced.`),B(),z(3,`p`,45),J(4,` Add `),z(5,`code`),J(6,`app.use(devtools.ssrMiddleware)`),B(),J(7,` before the Angular handler in `),z(8,`code`),J(9,`server.ts`),B(),J(10,`, then load a server rendered page. `),B()())}function HU(e,t){e&1&&(z(0,`span`,88),J(1,`transfer cache`),B())}function UU(e,t){if(e&1&&(z(0,`span`,88),J(1),B()),e&2){let e=K().$implicit;M(),X(`delayed `,e.delayMs,` ms`)}}function WU(e,t){e&1&&(z(0,`span`,77),J(1,`mocked`),B())}function GU(e,t){e&1&&(z(0,`span`,78),J(1,`faulted`),B())}function KU(e,t){if(e&1&&(z(0,`span`,91),J(1,`rule `),z(2,`code`),J(3),B()()),e&2){let e=t;R(`title`,`Matched rule: `+e),M(3),Y(e)}}function qU(e,t){if(e&1){let e=W();z(0,`tr`,68),G(`click`,function(){let t=O(e).$implicit;return k(K(2).openCall(t.id))}),z(1,`td`)(2,`span`,88),J(3),B()(),z(4,`td`,71),J(5),B(),z(6,`td`,69)(7,`button`,89),J(8),B()(),z(9,`td`,90),J(10),B(),z(11,`td`,72),V(12,`span`,73),J(13),B(),z(14,`td`,74),J(15),B(),z(16,`td`)(17,`div`,75),P(18,HU,2,0,`span`,88),P(19,UU,2,1,`span`,88),P(20,WU,2,0,`span`,77),P(21,GU,2,0,`span`,78),P(22,KU,4,2,`span`,91),B()()()}if(e&2){let e,n=t.$implicit,r=K(2);q(`selected`,r.selectedCall()?.id===n.id),M(2),q(`server`,n.side===`server`),M(),Y(n.side===`server`?`SSR`:`Client`),M(2),Y(n.method),M(2),R(`title`,n.url),N(`data-call-id`,n.id)(`aria-pressed`,r.selectedCall()?.id===n.id)(`aria-controls`,r.selectedCall()?`call-preview`:null),M(),X(` `,n.url,` `),M(),R(`title`,n.pageUrl??``),M(),X(` `,n.pageUrl??``,` `),M(),q(`ok`,r.callTone(n)===`ok`)(`redirect`,r.callTone(n)===`redirect`)(`bad`,r.callTone(n)===`bad`),M(2),X(``,r.statusLabel(n),` `),M(2),X(``,n.durationMs,` ms`),M(3),F(n.cacheHit?18:-1),M(),F(n.delayMs?19:-1),M(),F(n.mocked?20:-1),M(),F(n.faulted?21:-1),M(),F((e=r.rulePatternOf(n))?22:-1,e)}}function JU(e,t){if(e&1&&(z(0,`div`,25)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,64),J(5,`Side`),B(),z(6,`th`,64),J(7,`Method`),B(),z(8,`th`,64),J(9,`URL`),B(),z(10,`th`,64),J(11,`Page`),B(),z(12,`th`,64),J(13,`Status`),B(),z(14,`th`,65),J(15,`Time`),B(),z(16,`th`,64),J(17,`Notes`),B()()(),z(18,`tbody`),I(19,qU,23,26,`tr`,66,fU),B()()()),e&2){let e=K();M(19),L(e.visibleCalls())}}function YU(e,t){e&1&&J(0),e&2&&X(` Nothing matches “`,K(2).callQuery().trim(),`” with these filters. `)}function XU(e,t){e&1&&J(0),e&2&&X(` None of the `,K(2).timeline().length,` requests fit these filters. `)}function ZU(e,t){if(e&1){let e=W();z(0,`div`,26)(1,`p`),J(2,`No requests match.`),B(),z(3,`p`,45),P(4,YU,1,1)(5,XU,1,1),B(),z(6,`div`,92)(7,`button`,93),G(`click`,function(){return O(e),k(K().clearCallFilters())}),J(8,`Clear filters`),B()()()}if(e&2){let e=K();M(4),F(e.callQuery().trim()?4:5)}}function QU(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No requests yet.`),B(),z(3,`p`,45),J(4,` Add `),z(5,`code`),J(6,`withPangular()`),B(),J(7,` to `),z(8,`code`),J(9,`provideHttpClient`),B(),J(10,`, then load a page of the app. `),B()())}function $U(e,t){if(e&1){let e=W();z(0,`button`,100),G(`click`,function(){O(e);let t=K();return k(K().copyPreview(t))}),J(1,` Copy `),B()}if(e&2){let e=K();N(`aria-label`,`Copy the response of `+e.method+` `+e.url)}}function eW(e,t){e&1&&(z(0,`p`,102),J(1,` Matched rule `),z(2,`code`),J(3),B()()),e&2&&(M(3),Y(t))}function tW(e,t){if(e&1){let e=W();z(0,`div`,94),G(`keydown.escape`,function(){return O(e),k(K().closePreview())}),z(1,`div`,95)(2,`h3`,96),J(3,`Response preview`),B(),z(4,`div`,97),P(5,$U,2,1,`button`,98),z(6,`button`,99),G(`click`,function(){let t=O(e);return k(K().mockCall(t))}),J(7,` Mock this request `),B(),z(8,`button`,100),G(`click`,function(){return O(e),k(K().closePreview())}),J(9,`Close`),B()()(),z(10,`p`,101)(11,`span`,71),J(12),B(),z(13,`span`,72),J(14),B(),z(15,`span`,85),J(16),B()(),P(17,eW,4,1,`p`,102),z(18,`pre`,103),J(19),B()()}if(e&2){let e,n=t,r=K();M(5),F(!n.error&&n.preview?5:-1),M(),R(`disabled`,!r.canWrite()),N(`aria-describedby`,r.canWrite()?null:`http-writes-off`),M(6),Y(n.method),M(),q(`ok`,r.callTone(n)===`ok`)(`redirect`,r.callTone(n)===`redirect`)(`bad`,r.callTone(n)===`bad`),M(),Y(r.statusLabel(n)),M(),R(`title`,n.url),M(),Y(n.url),M(),F((e=r.rulePatternOf(n))?17:-1,e),M(),q(`error`,!!n.error&&!n.cancelled),M(),Y(n.error??r.previewText(n)??`(no body)`)}}function nW(e,t){if(e&1&&(z(0,`p`,30),J(1),B()),e&2){let e=K();M(),Y(e.writesOff)}}function rW(e,t){e&1&&(z(0,`p`,45),J(1,` SSR mocks are not transferred to the client: the browser requests the URL again and gets the real response unless the rule also applies on the client. `),B())}function iW(e,t){e&1&&(z(0,`span`),J(1,`passthrough`),B())}function aW(e,t){if(e&1&&(z(0,`span`,72),J(1),B()),e&2){let e=K().$implicit,t=K();q(`ok`,t.statusTone(e.status)===`ok`)(`redirect`,t.statusTone(e.status)===`redirect`)(`bad`,t.statusTone(e.status)===`bad`),M(),Y(e.status)}}function oW(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),X(``,e.delayMs,` ms`)}}function sW(e,t){e&1&&(z(0,`span`),J(1,`mock body`),B())}function cW(e,t){e&1&&(z(0,`p`,111),J(1,` The SSR mock is not written to TransferState, so the browser requests this URL again. `),B())}function lW(e,t){if(e&1){let e=W();z(0,`li`)(1,`label`,104)(2,`input`,105),G(`change`,function(){let t=O(e).$implicit;return k(K().toggleRule(t.id))}),B(),z(3,`code`,106)(4,`span`,107),J(5),B(),J(6),B()(),z(7,`button`,108),G(`click`,function(){let t=O(e).$implicit;return k(K().removeRule(t.id))}),J(8,` Remove `),B(),z(9,`span`,109)(10,`span`),J(11),B(),P(12,iW,2,0,`span`)(13,aW,2,7,`span`,110),P(14,oW,2,1,`span`),P(15,sW,2,0,`span`),B(),P(16,cW,2,0,`p`,111),B()}if(e&2){let e=t.$implicit,n=K();q(`off`,!e.enabled),M(2),R(`checked`,e.enabled)(`disabled`,!n.canWrite()),N(`aria-describedby`,n.canWrite()?null:`http-writes-off`)(`aria-label`,`Enable rule for `+e.pattern),M(),R(`title`,e.pattern),M(2),Y(e.method||`ANY`),M(),X(` `,e.pattern),M(),R(`disabled`,!n.canWrite()),N(`aria-describedby`,n.canWrite()?null:`http-writes-off`)(`aria-label`,`Remove rule for `+e.pattern),M(4),Y(n.targetLabel(e.target)),M(),F(e.status===void 0?12:13),M(2),F(e.delayMs?14:-1),M(),F(e.body?15:-1),M(),F(n.mocksOnServer(e)?16:-1)}}function uW(e,t){e&1&&(z(0,`li`,52),J(1,`No rules. SSR rules apply on the next page load.`),B())}function dW(e,t){if(e&1){let e=W();z(0,`p`,45),J(1,` Throws while the server renders, so it needs `),z(2,`code`),J(3,`providePangularHttp()`),B(),J(4,` and a page the engine renders. Prerendered files served as static files skip it. `),B(),z(5,`label`),J(6,` Error message `),z(7,`input`,112),G(`input`,function(t){return O(e),k(K().patchOverride(`message`,t))}),B()()}if(e&2){let e=K();M(7),R(`value`,e.overrideDraft().message)}}function fW(e,t){e&1&&J(0,` For a cached HTTP response this is the whole cache record, not only the response body. `)}function pW(e,t){e&1&&(z(0,`p`,116),J(1,` Filled in from the TransferState payload. The value starts empty because the panel only shows a redacted copy, so type the JSON the server should send. `),P(2,fW,1,0),B()),e&2&&(M(2),F(t===`http`?2:-1))}function mW(e,t){if(e&1){let e=W();z(0,`label`),J(1,` TransferState key `),z(2,`input`,113),G(`input`,function(t){return O(e),k(K().patchOverride(`key`,t))}),B()(),z(3,`label`)(4,`span`),J(5,`New JSON value `),z(6,`span`,32),J(7,`(empty removes the entry)`),B()(),z(8,`textarea`,114),G(`input`,function(t){return O(e),k(K().patchOverride(`value`,t))}),B()(),z(9,`p`,115),J(10),B(),P(11,pW,3,1,`p`,116)}if(e&2){let e,t=K();M(2),R(`value`,t.overrideDraft().key),M(6),R(`value`,t.overrideDraft().value),N(`aria-invalid`,t.overrideValueError()?`true`:null)(`aria-describedby`,t.overrideFromPayload()?`override-value-error override-value-note`:`override-value-error`),M(2),Y(t.overrideValueError()),M(),F((e=t.overrideFromPayload())?11:-1,e)}}function hW(e,t){e&1&&(z(0,`p`,45),J(1,` Serves `),z(2,`code`),J(3,`index.csr.html`),B(),J(4,` instead of rendering. Needs `),z(5,`code`),J(6,`browserDistFolder`),B(),J(7,` in `),z(8,`code`),J(9,`initPangularHub()`),B(),J(10,`. `),B())}function gW(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.message)}}function _W(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),Z(``,e.value===void 0?`remove`:`set`,` `,e.key)}}function vW(e,t){if(e&1){let e=W();z(0,`li`)(1,`label`,104)(2,`input`,105),G(`change`,function(){let t=O(e).$implicit;return k(K().toggleOverride(t.id))}),B(),z(3,`code`,106)(4,`span`,107),J(5),B(),J(6),B()(),z(7,`button`,108),G(`click`,function(){let t=O(e).$implicit;return k(K().removeOverride(t.id))}),J(8,` Remove `),B(),z(9,`span`,109),P(10,gW,2,1,`span`),P(11,_W,2,2,`span`),B()()}if(e&2){let e=t.$implicit,n=K();q(`off`,!e.enabled),M(2),R(`checked`,e.enabled)(`disabled`,!n.canWrite()),N(`aria-label`,`Enable `+n.overrideLabel(e.kind)+` for `+e.pattern),M(),R(`title`,e.pattern),M(2),Y(n.overrideLabel(e.kind)),M(),X(` `,e.pattern),M(),R(`disabled`,!n.canWrite()),N(`aria-label`,`Remove `+n.overrideLabel(e.kind)+` for `+e.pattern),M(3),F(e.message?10:-1),M(),F(e.key?11:-1)}}function yW(e,t){e&1&&(z(0,`li`,52),J(1,`No overrides.`),B())}function bW(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2,`DOM nodes hydrated`),B(),z(3,`dd`),J(4),B()(),z(5,`div`)(6,`dt`),J(7,`DOM nodes skipped`),B(),z(8,`dd`),J(9),B()(),z(10,`div`)(11,`dt`),J(12,`Mismatched components`),B(),z(13,`dd`),J(14),B()()),e&2){let e=t;M(4),Y(e.hydrated),M(5),Y(e.skipped),M(4),q(`bad`,e.mismatched>0),M(),Y(e.mismatched)}}function xW(e,t){if(e&1&&(z(0,`span`,118)(1,`span`,119),J(2,`Expected`),B(),z(3,`code`),J(4),B()()),e&2){let e=K().$implicit;M(4),Y(e.expected)}}function SW(e,t){if(e&1&&(z(0,`span`,118)(1,`span`,119),J(2,`Actual`),B(),z(3,`code`),J(4),B()()),e&2){let e=K().$implicit;M(4),Y(e.actual)}}function CW(e,t){if(e&1&&(z(0,`li`)(1,`code`),J(2),B(),P(3,xW,5,1,`span`,118),P(4,SW,5,1,`span`,118),B()),e&2){let e=t.$implicit;M(2),Y(`<`+e.component+`>`),M(),F(e.expected?3:-1),M(),F(e.actual?4:-1)}}function wW(e,t){if(e&1&&(z(0,`h3`),J(1),B(),z(2,`ul`,117),I(3,CW,5,3,`li`,null,Cg),B()),e&2){let e=K();M(),X(`Mismatches (`,e.mismatches.length,`)`),M(2),L(e.mismatches)}}function TW(e,t){if(e&1&&(z(0,`li`)(1,`code`),J(2),B()()),e&2){let e=t.$implicit;M(2),Y(e)}}function EW(e,t){if(e&1&&(z(0,`h3`),J(1,`ngSkipHydration hosts`),B(),z(2,`ul`,120),I(3,TW,3,1,`li`,null,Cg),B()),e&2){let e=K();M(3),L(e.skipHydrationHosts)}}function DW(e,t){e&1&&(z(0,`h3`),J(1,`Warnings`),B(),z(2,`p`,45),J(3,` Not captured: add `),z(4,`code`),J(5,`providePangularHttp()`),B(),J(6,` to the app providers. `),B())}function OW(e,t){if(e&1&&(z(0,`pre`,121),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function kW(e,t){e&1&&(z(0,`p`,81),J(1,`No hydration warnings.`),B())}function AW(e,t){if(e&1&&(z(0,`h3`),J(1),B(),I(2,OW,2,1,`pre`,121,Cg,!1,kW,2,0,`p`,81)),e&2){let e=K();M(),X(`Warnings (`,e.warnings.length,`)`),M(),L(e.warnings)}}function jW(e,t){if(e&1&&(z(0,`dl`,80)(1,`div`)(2,`dt`),J(3,`Enabled`),B(),z(4,`dd`)(5,`span`,88),J(6),B()()(),z(7,`div`)(8,`dt`),J(9,`Hydrated components`),B(),z(10,`dd`),J(11),B()(),z(12,`div`)(13,`dt`),J(14,`Hydrated nodes`),B(),z(15,`dd`),J(16),B()(),z(17,`div`)(18,`dt`),J(19,`Skipped components`),B(),z(20,`dd`),J(21),B()(),z(22,`div`)(23,`dt`),J(24,`App stable after`),B(),z(25,`dd`),J(26),B()(),z(27,`div`)(28,`dt`),J(29,`Incremental defer blocks`),B(),z(30,`dd`),J(31),B()(),P(32,bW,15,5),B(),P(33,wW,5,1),P(34,EW,5,0),P(35,DW,7,0)(36,AW,5,2)),e&2){let e,n=t;M(5),q(`on`,n.enabled)(`off-tag`,!n.enabled),M(),Y(n.enabled?`yes`:`no (client render only)`),M(5),Y(n.hydratedComponents??`n/a`),M(5),Y(n.hydratedNodes??`n/a`),M(5),Y(n.componentsSkippedHydration??`n/a`),M(5),Y(n.stableMs===void 0?`n/a`:n.stableMs+` ms`),M(5),Y(n.deferBlocksWithIncrementalHydration??`n/a`),M(),F((e=n.nodes)?32:-1,e),M(),F(n.mismatches?.length?33:-1),M(),F(n.skipHydrationHosts.length?34:-1),M(),F(n.warningsCaptured===!1?35:36)}}function MW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No hydration data for this page.`),B(),z(3,`p`,45),J(4,`Open a server rendered page of the app to see its stats.`),B()())}function NW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No TransferState script: this page was not server rendered.`),B()())}function PW(e,t){if(e&1&&(z(0,`p`,123),J(1),B()),e&2){let e=K(2);M(),Y(e.error)}}function FW(e,t){e&1&&(z(0,`span`,88),J(1),B()),e&2&&(M(),Y(t))}function IW(e,t){if(e&1&&(z(0,`span`,88),J(1),B(),z(2,`span`,126),J(3),B()),e&2){let e=t,n=K().$implicit,r=K(3);q(`server`,r.statusTone(e.status)===`ok`)(`fault`,r.statusTone(e.status)===`bad`),M(),X(`HTTP `,e.status),M(2),Y(e.url??n.key)}}function LW(e,t){if(e&1&&(z(0,`span`,126),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.key)}}function RW(e,t){if(e&1){let e=W();z(0,`button`,100),G(`click`,function(){O(e);let t=K().$implicit;return k(K(3).editEntry(t))}),J(1,` Edit in SSR overrides `),B()}if(e&2){let e=K().$implicit;N(`aria-label`,`Edit in SSR overrides, key `+e.key)}}function zW(e,t){if(e&1){let e=W();z(0,`details`)(1,`summary`),V(2,`span`,125),P(3,FW,2,1,`span`,88),P(4,IW,4,6)(5,LW,2,1,`span`,126),z(6,`span`,127),J(7),B()(),z(8,`div`,128)(9,`span`,129),J(10,`Key`),B(),z(11,`code`,130),J(12),B(),z(13,`div`,131)(14,`button`,100),G(`click`,function(){let t=O(e).$implicit;return k(K(3).copyKey(t.key))}),J(15,` Copy `),B(),P(16,RW,2,1,`button`,98),B()(),z(17,`pre`,132),J(18),dv(19,`json`),B()()}if(e&2){let e,n,r=t.$implicit,i=K(3);M(3),F((e=i.payloadLabel(r))?3:-1,e),M(),F((n=r.http)?4:5,n),M(3),X(``,r.size,` B`),M(5),Y(r.key),M(2),N(`aria-label`,`Copy key `+r.key),M(2),F(i.canEditEntry(r)?16:-1),M(2),Y(pv(19,7,r.value))}}function BW(e,t){if(e&1&&(z(0,`p`,122),J(1),B(),P(2,PW,2,1,`p`,123),z(3,`div`,124),I(4,zW,20,9,`details`,null,pU),B()),e&2){let e=K();M(),Y_(` `,e.entries.length,` entr`,e.entries.length===1?`y`:`ies`,`, `,e.size,` bytes `),M(),F(e.error?2:-1),M(2),L(e.entries)}}function VW(e,t){e&1&&P(0,NW,3,0,`div`,11)(1,BW,6,4),e&2&&F(+!!t.found)}function HW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`Open a page of the app to see its payload.`),B()())}var UW={kind:`render-error`,pattern:``,message:``,key:``,value:``},WW={"render-error":`Render error`,"client-render":`Client render`,"state-edit":`TransferState edit`},GW={server:`Server`,prerender:`Prerender`,client:`Client`,redirect:`Redirect`,"not-rendered":`Not rendered`,unknown:`Unknown`},KW={pattern:``,method:``,target:`both`,status:``,delayMs:``,body:``};function qW(e){try{let t=new URL(e,`http://x`);return t.pathname+t.search}catch{return e}}var JW=/\[redacted\]|%5Bredacted%5D/gi;function YW(e){return qW(e).replace(JW,`*`)}function XW(e){let t=BD(e);if(t!==null)return t;try{return JSON.parse(e),e.trim()}catch{return null}}var ZW=[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`];function QW(e){try{return new URL(e,`http://x`).pathname}catch{return``}}function $W(e){let t=QW(e);return t===`/`?``:t}var eG=/\[redacted\]|%5Bredacted%5D/i,tG=200,nG=50,rG=500,iG=1e5,aG=[{value:``,label:`None`},...PT.map(([e,t])=>({value:String(e),label:`${e} ${t}`}))],oG=class e{rpc=$(null);canWrite=Q(()=>bE(this.rpc(),`http`));writesOff=KT(`http`);loading=j(!1);failed=j(!1);serverCalls=j([]);pages=j([]);payloads=j({});serverDropped=j(0);requests=j([]);rules=j([]);overrides=j([]);overrideDraft=j({...UW});overrideFromPayload=j(null);overrideKindOptions=[{value:`render-error`,label:`Render error`},{value:`client-render`,label:`Force Client render`},{value:`state-edit`,label:`Edit TransferState entry`}];overrideValueError=Q(()=>{let e=this.overrideDraft().value.trim();if(!e)return``;try{return JSON.parse(e),``}catch{return`The value must be valid JSON.`}});overrideReady=Q(()=>{let e=this.overrideDraft();return!e.pattern.trim()||this.overrides().length>=20?!1:e.kind!==`state-edit`||!!e.key.trim()&&!this.overrideValueError()});hostPageId=eE();selectedPageId=Tv({source:()=>this.pages(),computation:(e,t)=>t?.value&&e.some(e=>e.pageId===t.value)?t.value:e.find(e=>e.pageId===this.hostPageId)?.pageId??e[0]?.pageId??null});selectedCallId=j(null);draft=j({...KW});message=j(``);bodyPlaceholder=`{ "error": "Service unavailable" }`;statusOptions=aG;unsubscribe=[];destroyRef=E(Cs);injector=E(xs);host=E(Ml);selected=Q(()=>this.pages().find(e=>e.pageId===this.selectedPageId())??null);pageRequestId=Q(()=>this.selected()?.ssrRequestId??null);selectedRequestId=Tv(()=>this.pageRequestId());selectedPayload=Q(()=>{let e=this.selectedPageId();return e?this.payloads()[e]??null:null});maxCalls=Q(()=>yE(this.rpc()).limits.httpCalls);droppedCalls=Q(()=>(this.selected()?.dropped??0)+this.serverDropped());pageServerCalls=Q(()=>{let e=this.selected()?.initialUrl;return e?this.serverCalls().filter(t=>!t.pageUrl||t.pageUrl===e):this.serverCalls()});timeline=Q(()=>[...this.pageServerCalls(),...this.selected()?.calls??[]].sort((e,t)=>t.at-e.at));callQuery=j(``);sideFilter=j(`all`);failedOnly=j(!1);sideOptions=[{value:`all`,label:`All sides`},{value:`server`,label:`SSR`},{value:`client`,label:`Client`}];visibleCalls=Q(()=>{let e=this.callQuery().trim().toLowerCase(),t=this.sideFilter()??`all`,n=this.failedOnly();return this.timeline().filter(r=>(t===`all`||r.side===t)&&(!n||this.isFailed(r))&&(!e||`${r.method} ${r.url}`.toLowerCase().includes(e)||`${r.method} ${qW(r.url)}`.toLowerCase().includes(e)))});selectedCall=Q(()=>this.visibleCalls().find(e=>e.id===this.selectedCallId())??null);selectedRequest=Q(()=>this.requests().find(e=>e.id===this.selectedRequestId())??null);requestCalls=Q(()=>{let e=this.selectedRequest()?.id;return e?this.serverCalls().filter(t=>t.requestId===e):[]});requestPage=Q(()=>{let e=this.selectedRequest()?.id;return e?this.pages().find(t=>t.ssrRequestId===e)??null:null});refetched=Q(()=>{let e=this.selectedRequest(),t=this.requestPage();if(!e||!t)return[];let n=new Set(this.requestCalls().filter(e=>e.status).map(e=>`${e.method} ${qW(e.url)}`));return t.calls.filter(t=>t.side===`client`&&!t.cacheHit&&!t.mocked&&t.at>=e.at&&n.has(`${t.method} ${qW(t.url)}`))});draftMocksOnServer=Q(()=>{let e=this.draftRule();return!!e&&this.mocksOnServer(e)});draftRule=Q(()=>{let e=this.draft(),t=e.pattern.trim();if(!t||t.length>rG||this.bodyError()||this.rules().length>=nG)return null;let n=e.body.trim(),r=Math.min(Math.max(Math.round(Number(e.delayMs))||0,0),1e4),i=e.status.trim()?Number(e.status):n?200:void 0;return i!==void 0&&!FT(i)||i===void 0&&!r?null:{pattern:t,enabled:!0,target:e.target,...e.method?{method:e.method}:{},...i===void 0?{}:{status:i},...r?{delayMs:r}:{},...n?{body:n}:{}}});draftHint=Q(()=>{let e=this.draft();return this.rules().length>=nG?`You can add up to ${nG} rules. Remove one to add another.`:e.pattern.trim()?e.pattern.trim().length>rG?`The URL pattern is limited to ${rG} characters.`:this.bodyError()?``:e.status.trim()&&!FT(Number(e.status))?`Pick a status from the list.`:this.draftRule()?!e.status.trim()&&e.body.trim()?`With no status, the mock body returns 200.`:``:`Set a status, a delay or a mock body.`:`Enter a URL pattern to add a rule.`});bodyError=Q(()=>{let e=this.draft().body.trim();if(!e)return``;if(e.length>iG)return`The mock body is limited to ${iG} characters.`;try{return JSON.parse(e),``}catch{return`The mock body must be valid JSON.`}});constructor(){uc(()=>{let e=this.rpc();e&&this.load(e)}),this.destroyRef.onDestroy(()=>this.stopListening())}async load(e){this.loading.set(!0),this.failed.set(!1);try{let t=e.scope(`pangular`).rpc,[n,r]=await Promise.all([t.sharedState(`http`),t.sharedState(`http-payloads`)]);if(this.destroyRef.destroyed)return;let i=e=>{let t=e;this.serverCalls.set(t?.serverCalls??[]),this.serverDropped.set(t?.serverDropped??0),this.requests.set([...t?.requests??[]].reverse()),this.pages.set(t?.pages??[]),this.rules.set(t?.rules??[]),this.overrides.set(t?.ssrOverrides??[])},a=e=>this.payloads.set(e?.pages??{});i(n.value()),a(r.value()),this.stopListening(),this.unsubscribe=[n.on(`updated`,i),r.on(`updated`,a)]}catch{this.failed.set(!0)}finally{this.loading.set(!1)}}guardVerdict(e){return e.guards?.passed===!1?e.outcome===`redirected`?`redirected`:`rejected`:``}msLabel(e){return e===void 0?`n/a`:`${e} ms`}skipText(e){return NT[e]??``}refetchReason(e){let t=`${e.method} ${qW(e.url)}`,n=this.requestCalls().filter(e=>`${e.method} ${qW(e.url)}`===t),r=n[0];return r?.cacheSkip&&n.every(e=>e.cacheSkip===r.cacheSkip)?this.skipText(r.cacheSkip):``}renderModeLabel(e){return GW[e]??`Unknown`}statusLabel(e){return e.cancelled?`cancelled`:e.status?String(e.status):`ERR`}callTone(e){return e.cancelled?`neutral`:this.statusTone(e.status)}isFailed(e){return!!e.cancelled||!e.status||e.status>=400}clearCallFilters(){this.callQuery.set(``),this.sideFilter.set(`all`),this.failedOnly.set(!1),this.host.nativeElement.querySelector(`#timeline-search`)?.focus()}rulePatternOf(e){return e.rulePattern?e.rulePattern:e.ruleId?this.rules().find(t=>t.id===e.ruleId)?.pattern??null:null}openCall(e){this.selectedCallId.set(e),Id(()=>this.host.nativeElement.querySelector(`#preview-heading`)?.focus(),{injector:this.injector})}previewText(e){if(e.preview!==void 0)return BD(e.preview)??e.preview}async copyPreview(e){let t=this.previewText(e);if(t)try{await navigator.clipboard.writeText(t),this.message.set(`Copied.`)}catch{this.message.set(`The clipboard is not available here.`)}}mockCall(e){let t=e.method.toUpperCase(),n=YW(e.url),r=e.error||!e.preview?null:XW(e.preview);this.draft.set({...KW,pattern:n,method:t,body:r??``});let i=`${t} ${n}`;this.message.set(r?`Filled in a rule for ${i} with the preview as its body. Check it, then add the rule.`:e.preview&&!e.error?`Filled in a rule for ${i}. The preview is not complete JSON, so it is not used as the body.`:`Filled in a rule for ${i}. Set a status, a delay or a body, then add the rule.`),Id(()=>this.host.nativeElement.querySelector(`#rule-pattern`)?.focus(),{injector:this.injector})}closePreview(){let e=this.selectedCallId();this.selectedCallId.set(null),e&&[...this.host.nativeElement.querySelectorAll(`button[data-call-id]`)].find(t=>t.dataset.callId===e)?.focus()}stopListening(){for(let e of this.unsubscribe.splice(0))e()}statusTone(e){return e===void 0?`neutral`:e===0||e>=400?`bad`:e>=300?`redirect`:e>=200?`ok`:`neutral`}mocksOnServer(e){return e.target!==`client`&&e.status!==void 0&&e.status<400}payloadLabel(e){return e.source===`hydration`?`hydration annotations`:e.fn?`Analog server function ${e.fn.name??e.fn.id}`:e.source===`analog`?`Analog`:null}targetLabel(e){return e===`both`?`SSR + client`:e===`server`?`SSR only`:`Client only`}pageOptions=Q(()=>this.pages().map(e=>({value:e.pageId,label:e.title||e.url})));methodOptions=Q(()=>{let e=this.draft().method;return[{value:``,label:`Any`},...(e&&!ZW.includes(e)?[...ZW,e]:ZW).map(e=>({value:e,label:e}))]});targetOptions=[{value:`both`,label:`SSR + client`},{value:`server`,label:`SSR only`},{value:`client`,label:`Client only`}];selectPage(e){e&&this.selectedPageId.set(e),this.selectedCallId.set(null),this.overrideFromPayload.set(null)}setDraft(e,t){this.draft.update(n=>({...n,[e]:t}))}patch(e,t){let n=t.target.value;this.draft.update(t=>({...t,[e]:n}))}async addRule(e){e.preventDefault();let t=this.draftRule();if(!t)return;let n={id:`r${Date.now().toString(36)}${Math.random().toString(36).slice(2,6)}`,...t};await this.saveRules([...this.rules(),n],`Rule added.`,n)&&(this.draft.set({...KW}),this.host.nativeElement.querySelector(`#rule-pattern`)?.focus())}toggleRule(e){let t=this.rules().find(t=>t.id===e);t&&this.saveRules(this.rules().map(t=>t.id===e?{...t,enabled:!t.enabled}:t),`Rule updated.`,t)}removeRule(e){let t=this.rules().find(t=>t.id===e);t&&this.saveRules(this.rules().filter(t=>t.id!==e),`Rule removed.`,t)}async clearCalls(){try{await iE(this.rpc(),`clear-http-calls`),this.selectedCallId.set(null),this.message.set(`Timeline cleared.`)}catch{this.message.set(`Could not clear the timeline.`)}}overrideLabel(e){return WW[e]??e}setOverrideDraft(e,t){this.overrideDraft.update(n=>({...n,[e]:t})),e===`kind`&&t!==`state-edit`&&this.overrideFromPayload.set(null)}patchOverride(e,t){let n=t.target.value;this.overrideDraft.update(t=>({...t,[e]:n})),e===`key`&&this.overrideFromPayload.set(null)}async copyKey(e){try{await navigator.clipboard.writeText(e),this.message.set(`Copied.`)}catch{this.message.set(`The clipboard is not available here.`)}}canEditEntry(e){let{key:t}=e;return this.canWrite()&&!!t&&t===t.trim()&&t.length<=tG&&!eG.test(t)}editEntry(e){if(!this.canEditEntry(e))return;let t=this.selected();this.overrideDraft.set({...UW,kind:`state-edit`,pattern:t?$W(t.initialUrl??t.url):``,key:e.key}),this.overrideFromPayload.set(e.http?`http`:`other`),this.message.set(`Editing the TransferState entry in SSR overrides.`),Id(()=>{let e=this.host.nativeElement.querySelector(this.overrideDraft().pattern?`#override-value`:`#override-pattern`);e?.scrollIntoView?.({block:`center`}),e?.focus()},{injector:this.injector})}async addOverride(e){if(e.preventDefault(),!this.overrideReady())return;let t=this.overrideDraft(),n={id:`o${Date.now().toString(36)}${Math.random().toString(36).slice(2,6)}`,kind:t.kind,pattern:t.pattern.trim(),enabled:!0,...t.kind===`render-error`&&t.message.trim()?{message:t.message.trim()}:{},...t.kind===`state-edit`?{key:t.key.trim()}:{},...t.kind===`state-edit`&&t.value.trim()?{value:t.value.trim()}:{}};await this.saveOverrides([...this.overrides(),n],`Override added. Reload the page.`)&&(this.overrideDraft.set({...UW,kind:t.kind}),this.overrideFromPayload.set(null),this.host.nativeElement.querySelector(`#override-pattern`)?.focus())}toggleOverride(e){this.saveOverrides(this.overrides().map(t=>t.id===e?{...t,enabled:!t.enabled}:t),`Override updated. Reload the page.`)}removeOverride(e){this.saveOverrides(this.overrides().filter(t=>t.id!==e),`Override removed.`)}async saveOverrides(e,t){try{let n=await iE(this.rpc(),`set-ssr-overrides`,e);return this.overrides.set(Array.isArray(n)?n:e),this.message.set(t),!0}catch{return this.message.set(`Could not save the overrides.`),!1}}async saveRules(e,t,n){try{let r=await iE(this.rpc(),`set-http-rules`,e);return this.rules.set(Array.isArray(r)?r:e),this.message.set(n.target===`client`?t:`${t} Reload the page to apply it to SSR.`),!0}catch{return this.message.set(`Could not save the rules.`),!1}}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-network-inspector`]],inputs:{rpc:[1,`rpc`]},decls:126,vars:48,consts:[[`role`,`status`,1,`state`],[`role`,`alert`,1,`state`,`error`],[1,`toolbar`],[1,`page-picker`],[`id`,`page-picker-label`],[`labelledBy`,`page-picker-label`,`emptyText`,`No connected page`,`placeholder`,`No connected page`,3,`valueChange`,`options`,`value`],[`type`,`button`,3,`click`,`disabled`],[`role`,`status`,1,`message`],[1,`grid`],[`aria-labelledby`,`ssr-heading`,1,`panel`,`wide`],[`id`,`ssr-heading`],[1,`empty`],[`aria-labelledby`,`timeline-heading`,1,`panel`,`wide`],[`id`,`timeline-heading`],[`what`,`HTTP calls`,`limit`,`httpCalls`,3,`dropped`,`max`],[`role`,`group`,`aria-label`,`Filter the HTTP timeline`,1,`filters`],[1,`search`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`search-icon`],[`cx`,`11`,`cy`,`11`,`r`,`7`],[`d`,`m20 20-3.5-3.5`],[`id`,`timeline-search`,`type`,`search`,`placeholder`,`Find a URL or method…`,`aria-label`,`Find a URL or method`,`autocomplete`,`off`,`spellcheck`,`false`,3,`input`,`keydown.escape`,`value`],[`ariaLabel`,`Side`,1,`side-filter`,3,`valueChange`,`options`,`value`],[1,`inline`,`failed-toggle`],[`type`,`checkbox`,3,`change`,`checked`],[`aria-live`,`polite`,1,`total`],[1,`table-wrap`],[`role`,`status`,1,`empty`,`no-match`],[`id`,`call-preview`,`role`,`region`,`aria-labelledby`,`preview-heading`,1,`preview`],[`aria-labelledby`,`rules-heading`,1,`panel`],[`id`,`rules-heading`],[`id`,`http-writes-off`,1,`muted`,`small`],[`id`,`rule-form`,1,`rule-form`,3,`submit`],[1,`hint`],[`id`,`rule-pattern`,`required`,``,`spellcheck`,`false`,`autocomplete`,`off`,`placeholder`,`e.g. /api/products`,3,`input`,`value`],[1,`row`],[1,`field-group`],[`id`,`rule-method-label`],[`labelledBy`,`rule-method-label`,3,`valueChange`,`options`,`value`],[`id`,`rule-target-label`],[`labelledBy`,`rule-target-label`,3,`valueChange`,`options`,`value`],[`id`,`rule-status-label`],[`labelledBy`,`rule-status-label`,3,`valueChange`,`options`,`value`],[`type`,`number`,`inputmode`,`numeric`,`min`,`0`,`max`,`10000`,`placeholder`,`0`,3,`input`,`value`],[`rows`,`3`,`spellcheck`,`false`,`aria-describedby`,`body-error`,3,`input`,`placeholder`,`value`],[`id`,`body-error`,1,`field-error`],[1,`muted`,`small`],[`id`,`rule-hint`,1,`muted`,`small`],[1,`form-actions`],[`type`,`submit`,3,`disabled`],[1,`rules-heading`],[1,`rules`],[3,`off`],[1,`empty-rule`],[`aria-labelledby`,`overrides-heading`,1,`panel`],[`id`,`overrides-heading`],[1,`rule-form`,3,`submit`],[`id`,`override-kind-label`],[`labelledBy`,`override-kind-label`,3,`valueChange`,`options`,`value`],[`id`,`override-pattern`,`required`,``,`spellcheck`,`false`,`autocomplete`,`off`,`placeholder`,`e.g. /examples/ssr`,3,`input`,`value`],[`aria-labelledby`,`hydration-heading`,1,`panel`],[`id`,`hydration-heading`],[`aria-labelledby`,`payload-heading`,1,`panel`,`wide`],[`id`,`payload-heading`],[`aria-hidden`,`true`,1,`spinner`],[`scope`,`col`],[`scope`,`col`,1,`num`],[3,`selected`],[`id`,`ssr-detail`,`role`,`region`,`aria-labelledby`,`ssr-detail-heading`,1,`preview`],[3,`click`],[1,`url`],[`type`,`button`,`aria-controls`,`ssr-detail`,1,`link`,3,`title`],[1,`method`],[1,`status`],[`aria-hidden`,`true`,1,`dot`],[1,`num`],[1,`notes`],[1,`tag`,`server`],[1,`tag`,`mock`],[1,`tag`,`fault`],[`id`,`ssr-detail-heading`],[1,`stats`],[1,`muted`,`small`,`ok-note`],[1,`request-call`],[1,`muted`],[1,`stats`,`nav-stats`],[1,`preview-url`,3,`title`],[1,`tag`,3,`title`],[1,`muted`,`small`,`skip-reason`],[1,`tag`],[`type`,`button`,1,`link`,3,`title`],[1,`page-url`,3,`title`],[1,`tag`,`rule-ref`,3,`title`],[1,`empty-actions`],[`type`,`button`,3,`click`],[`id`,`call-preview`,`role`,`region`,`aria-labelledby`,`preview-heading`,1,`preview`,3,`keydown.escape`],[1,`preview-head`],[`id`,`preview-heading`,`tabindex`,`-1`],[1,`preview-actions`],[`type`,`button`,1,`ghost`],[`type`,`button`,`aria-controls`,`rule-form`,1,`ghost`,3,`click`,`disabled`],[`type`,`button`,1,`ghost`,3,`click`],[1,`preview-meta`],[1,`preview-rule`],[`tabindex`,`0`,1,`preview-body`],[1,`inline`],[`type`,`checkbox`,3,`change`,`checked`,`disabled`],[1,`rule-pattern`,3,`title`],[1,`rule-method`],[`type`,`button`,1,`link`,`remove`,3,`click`,`disabled`],[1,`rule-meta`],[1,`status`,3,`ok`,`redirect`,`bad`],[1,`rule-note`],[`spellcheck`,`false`,`placeholder`,`Simulated render error`,3,`input`,`value`],[`id`,`override-key`,`spellcheck`,`false`,`autocomplete`,`off`,3,`input`,`value`],[`id`,`override-value`,`rows`,`3`,`spellcheck`,`false`,3,`input`,`value`],[`id`,`override-value-error`,1,`field-error`],[`id`,`override-value-note`,1,`muted`,`small`],[1,`plain`,`mismatches`],[1,`mismatch-row`],[1,`mismatch-label`],[1,`plain`],[1,`warn`],[1,`muted`,`small`,`summary-line`],[`role`,`alert`,1,`bad`],[1,`entries`],[`aria-hidden`,`true`,1,`chevron`],[1,`entry-key`],[1,`entry-size`],[1,`entry-key-row`],[1,`entry-key-label`],[1,`entry-key-text`],[1,`entry-actions`],[`tabindex`,`0`]],template:function(e,t){if(e&1&&(P(0,mU,4,0,`div`,0)(1,hU,5,0,`div`,1),z(2,`div`,2)(3,`div`,3)(4,`span`,4),J(5,`Page`),B(),z(6,`app-select`,5),G(`valueChange`,function(e){return t.selectPage(e)}),B()(),z(7,`button`,6),G(`click`,function(){return t.clearCalls()}),J(8,` Clear timeline `),B(),z(9,`p`,7),J(10),B()(),z(11,`div`,8)(12,`section`,9)(13,`h2`,10),J(14),B(),P(15,BU,20,1)(16,VU,11,0,`div`,11),B(),z(17,`section`,12)(18,`h2`,13),J(19),B(),V(20,`app-limit-note`,14),z(21,`div`,15)(22,`div`,16),A(),z(23,`svg`,17),V(24,`circle`,18)(25,`path`,19),B(),ps(),z(26,`input`,20),G(`input`,function(e){return t.callQuery.set(e.target.value)})(`keydown.escape`,function(){return t.callQuery.set(``)}),B()(),z(27,`app-select`,21),ev(`valueChange`,function(e){return $_(t.sideFilter,e)||(t.sideFilter=e),e}),B(),z(28,`label`,22)(29,`input`,23),G(`change`,function(e){return t.failedOnly.set(e.target.checked)}),B(),J(30,` Failed only `),B(),z(31,`span`,24),J(32),B()(),P(33,JU,21,0,`div`,25)(34,ZU,9,1,`div`,26)(35,QU,11,0,`div`,11),P(36,tW,20,17,`div`,27),B(),z(37,`section`,28)(38,`h2`,29),J(39,`Fault injection`),B(),P(40,nW,2,1,`p`,30),z(41,`form`,31),G(`submit`,function(e){return t.addRule(e)}),z(42,`label`)(43,`span`),J(44,`URL pattern `),z(45,`span`,32),J(46,`(substring or * glob)`),B()(),z(47,`input`,33),G(`input`,function(e){return t.patch(`pattern`,e)}),B()(),z(48,`div`,34)(49,`div`,35)(50,`span`,36),J(51,`Method`),B(),z(52,`app-select`,37),G(`valueChange`,function(e){return t.setDraft(`method`,e??``)}),B()(),z(53,`div`,35)(54,`span`,38),J(55,`Apply on`),B(),z(56,`app-select`,39),G(`valueChange`,function(e){return t.setDraft(`target`,e??`both`)}),B()()(),z(57,`div`,34)(58,`div`,35)(59,`span`,40),J(60,`Status`),B(),z(61,`app-select`,41),G(`valueChange`,function(e){return t.setDraft(`status`,e??``)}),B()(),z(62,`label`),J(63,` Delay (ms) `),z(64,`input`,42),G(`input`,function(e){return t.patch(`delayMs`,e)}),B()()(),z(65,`label`)(66,`span`),J(67,`Mock JSON body `),z(68,`span`,32),J(69,`(optional)`),B()(),z(70,`textarea`,43),G(`input`,function(e){return t.patch(`body`,e)}),B()(),z(71,`p`,44),J(72),B(),P(73,rW,2,0,`p`,45),z(74,`p`,46),J(75),B(),z(76,`div`,47)(77,`button`,48),J(78,` Add rule `),B()()(),z(79,`h3`,49),J(80),B(),z(81,`ul`,50),I(82,lW,17,17,`li`,51,uU,!1,uW,2,0,`li`,52),B()(),z(85,`section`,53)(86,`h2`,54),J(87,`SSR overrides`),B(),z(88,`p`,45),J(89,` Development only. These change what the server sends for matching pages, from the next full page load, and the request is marked `),z(90,`strong`),J(91,`overridden`),B(),J(92,`. `),B(),z(93,`form`,55),G(`submit`,function(e){return t.addOverride(e)}),z(94,`div`,35)(95,`span`,56),J(96,`Override`),B(),z(97,`app-select`,57),G(`valueChange`,function(e){return t.setOverrideDraft(`kind`,e??`render-error`)}),B()(),z(98,`label`)(99,`span`),J(100,`Page pattern `),z(101,`span`,32),J(102,`(substring or * glob)`),B()(),z(103,`input`,58),G(`input`,function(e){return t.patchOverride(`pattern`,e)}),B()(),P(104,dW,8,1)(105,mW,12,6)(106,hW,11,0,`p`,45),z(107,`div`,47)(108,`button`,48),J(109,` Add override `),B()()(),z(110,`h3`,49),J(111),B(),z(112,`ul`,50),I(113,vW,12,12,`li`,51,uU,!1,yW,2,0,`li`,52),B()(),z(116,`section`,59)(117,`h2`,60),J(118,`Hydration`),B(),P(119,jW,37,14)(120,MW,5,0,`div`,11),B(),z(121,`section`,61)(122,`h2`,62),J(123,`TransferState payload`),B(),P(124,VW,2,1)(125,HW,3,0,`div`,11),B()()),e&2){let e,n,r,i;F(t.loading()?0:t.failed()?1:-1),M(6),R(`options`,t.pageOptions())(`value`,t.selected()?.pageId??null),M(),R(`disabled`,!t.canWrite()),N(`aria-describedby`,t.canWrite()?null:`http-writes-off`),M(3),Y(t.message()),M(4),X(`SSR requests (`,t.requests().length,`)`),M(),F(t.requests().length?15:16),M(4),X(`HTTP timeline (`,t.timeline().length,`)`),M(),R(`dropped`,t.droppedCalls())(`max`,t.maxCalls()),M(6),R(`value`,t.callQuery()),M(),R(`options`,t.sideOptions),Q_(`value`,t.sideFilter),M(2),R(`checked`,t.failedOnly()),M(3),Z(``,t.visibleCalls().length,` of `,t.timeline().length),M(),F(t.visibleCalls().length?33:t.timeline().length?34:35),M(3),F((e=t.selectedCall())?36:-1,e),M(4),F(t.canWrite()?-1:40),M(7),R(`value`,t.draft().pattern),M(5),R(`options`,t.methodOptions())(`value`,t.draft().method),M(4),R(`options`,t.targetOptions)(`value`,t.draft().target),M(5),R(`options`,t.statusOptions)(`value`,t.draft().status),M(3),R(`value`,t.draft().delayMs),M(6),R(`placeholder`,t.bodyPlaceholder)(`value`,t.draft().body),N(`aria-invalid`,t.bodyError()?`true`:null),M(2),Y(t.bodyError()),M(),F(t.draftMocksOnServer()?73:-1),M(2),Y(t.draftHint()),M(2),R(`disabled`,!t.canWrite()||!t.draftRule()),N(`aria-describedby`,t.canWrite()?`rule-hint`:`http-writes-off`),M(3),X(`Rules (`,t.rules().length,`)`),M(2),L(t.rules()),M(15),R(`options`,t.overrideKindOptions)(`value`,t.overrideDraft().kind),M(6),R(`value`,t.overrideDraft().pattern),M(),F((n=t.overrideDraft().kind)===`render-error`?104:n===`state-edit`?105:n===`client-render`?106:-1),M(4),R(`disabled`,!t.canWrite()||!t.overrideReady()),N(`aria-describedby`,t.canWrite()?null:`http-writes-off`),M(3),X(`Overrides (`,t.overrides().length,`)`),M(2),L(t.overrides()),M(6),F((r=t.selected()?.hydration)?119:120,r),M(5),F((i=t.selectedPayload())?124:125,i)}},dependencies:[UD,AD,ab],styles:[`@charset "UTF-8"; [_nghost-%COMP%] { display: block; color: var(--%NS%text); @@ -12549,7 +12584,7 @@ summary[_ngcontent-%COMP%]:hover .entry-key[_ngcontent-%COMP%] { .message[_ngcontent-%COMP%] { text-align: left; } -}`]})};function aG(e,t){e&1&&(A(),H(0,`svg`,9),Fg(1,`path`,21),U())}function oG(e,t){e&1&&(A(),H(0,`svg`,10)(1,`defs`)(2,`linearGradient`,22),Fg(3,`stop`,23)(4,`stop`,24),U()(),Fg(5,`path`,25),H(6,`g`,26),Fg(7,`path`,27)(8,`path`,28)(9,`path`,29)(10,`path`,30),U()())}function sG(e,t){e&1&&(A(),H(0,`svg`,11),Fg(1,`path`,31)(2,`path`,32)(3,`path`,33)(4,`path`,34),U())}function cG(e,t){e&1&&(A(),H(0,`svg`,9),Fg(1,`path`,35)(2,`path`,36)(3,`path`,37)(4,`path`,38)(5,`path`,39)(6,`path`,40),U())}function lG(e,t){if(e&1&&(H(0,`a`,16),Fg(1,`img`,41),H(2,`span`,42)(3,`span`,43),J(4,`Being built by`),U(),H(5,`strong`),J(6),U(),H(7,`span`,44),J(8),U()(),H(9,`span`,45),J(10,`→`),U(),H(11,`span`,46),J(12,`(opens in a new tab)`),U()()),e&2){let e=t,n=K();Vg(`href`,`https://github.com/pangular-inspector/devtools/pull/`+n.info().pr,ku),M(),Vg(`src`,`https://github.com/`+e.login+`.png?size=96`,ku),M(5),Y(e.name),M(2),Z(`@`,e.login,` · PR #`,n.info().pr)}}function uG(e,t){if(e&1&&(H(0,`a`,17)(1,`span`,42)(2,`strong`),J(3),U()(),H(4,`span`,45),J(5,`→`),U(),H(6,`span`,46),J(7,`(opens in a new tab)`),U()()),e&2){let e=t;Vg(`href`,e.href,ku),M(3),Y(e.label)}}function dG(e,t){if(e&1&&(H(0,`li`),J(1),U()),e&2){let e=t.$implicit,n=t.$index;C_(`animation-delay`,200+n*120,`ms`),M(),Y(e)}}var fG=class e{info=$.required();plansTitle=Q(()=>{let e=this.info();return e.plansTitle??(e.link?`In an ${e.name} app`:`On the roadmap`)});static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-coming-soon`]],hostVars:2,hostBindings:function(e,t){e&2&&C_(`--%NS%brand`,t.info().color)},inputs:{info:[1,`info`]},decls:30,vars:7,consts:[[`aria-labelledby`,`soon-title`,1,`soon`],[`aria-hidden`,`true`,1,`stage`],[1,`ring`,`r1`],[1,`ring`,`r2`],[1,`orbit`,`o1`],[1,`dot`],[1,`orbit`,`o2`],[1,`orbit`,`o3`],[1,`logo`],[`viewBox`,`0 0 256 256`,`width`,`96`,`height`,`96`],[`viewBox`,`0 0 32 32`,`width`,`88`,`height`,`88`],[`viewBox`,`0 0 256 182`,`width`,`104`,`height`,`74`],[1,`badge`],[`aria-hidden`,`true`,1,`spark`],[`id`,`soon-title`],[1,`summary`],[`target`,`_blank`,`rel`,`noopener noreferrer`,1,`author`,3,`href`],[`target`,`_blank`,`rel`,`noopener noreferrer`,1,`author`,`cta`,3,`href`],[1,`plans-title`],[1,`plans`],[3,`animation-delay`],[`fill`,`#3c5afd`,`d`,`M237.248 18.752q18.061 18.06 18.748 45.247V192c-.457 18.12-6.707 33.207-18.748 45.247c-12.04 12.04-27.127 18.291-45.251 18.752H63.999q-27.187-.69-45.247-18.752C6.712 225.208.46 210.121 0 192.001V64q.69-27.187 18.752-45.247Q36.812.692 63.999 0h127.998c18.124.46 33.211 6.711 45.251 18.752m-17.655 103q-6.033-6.003-6.28-15.066V64q-.192-9.063-6.221-15.091c-4.02-4.023-9.054-6.093-15.095-6.22h-21.312v106.626L85.315 42.687H63.999c-6.042.128-11.072 2.198-15.091 6.221c-4.023 4.02-6.093 9.05-6.22 15.09v42.688q-.249 9.063-6.281 15.066q-6.03 5.996-15.091 6.246q9.062.255 15.09 6.25c4.024 4.002 6.115 9.024 6.281 15.066V192c.128 6.037 2.198 11.072 6.221 15.091q6.03 6.03 15.09 6.22h21.317V106.687l85.37 106.627h21.312c6.041-.128 11.076-2.202 15.095-6.221s6.093-9.054 6.22-15.09v-42.688q.249-9.063 6.281-15.066q6.03-5.995 15.091-6.25q-9.062-.25-15.09-6.246`],[`id`,`an-hero-grad`,`x1`,`0`,`y1`,`0`,`x2`,`1`,`y2`,`1`],[`offset`,`0`,`stop-color`,`#f0224f`],[`offset`,`1`,`stop-color`,`#c4002d`],[`d`,`M16 0C27.2 0 32 4.8 32 16S27.2 32 16 32 0 27.2 0 16 4.8 0 16 0Z`,`fill`,`url(#an-hero-grad)`],[`transform`,`translate(6.4 6.4) scale(0.8)`,`fill`,`#fff`],[`d`,`M14.8486 0L23.138 16.8551L23.9996 3.99892L14.8486 0Z`],[`d`,`M16.9875 17.7114H7.01272L5.73926 20.627L12.0001 24L18.261 20.627L16.9875 17.7114Z`],[`d`,`M8.72168 13.9298H15.2812L11.9997 6.39575L8.72168 13.9298Z`],[`d`,`M9.15103 0L0 3.99892L0.861556 16.8551L9.15103 0Z`],[`fill`,`#c30f2e`,`d`,`M152.228.001L48.455 181.046H256L152.228 0z`],[`fill`,`#dd0330`,`d`,`M88.314 26.967L0 181.52h176.628L88.315 26.967z`],[`fill`,`#fff`,`d`,`M18.167 135.294h220.236v-2.419H18.167z`],[`fill`,`#fff`,`d`,`M204.38 170.667c-.861 0-1.67-.358-2.348-1.034c-4.045-4.063-4.221-20.586-4.026-45.33c.11-13.521.257-32.043-1.9-33.504c-2.104.873-2.315 16.172-2.451 26.301c-.162 11.785-.327 23.98-2.242 30.189c-.57 1.84-1.306 3.525-2.786 3.39c-2.086-.185-2.76-3.48-4.317-16.478c-.647-5.4-1.317-10.98-2.101-13.14a11 11 0 0 0-.269-.66c-.835 1.889-1.8 7.079-2.47 10.682c-.927 4.976-1.803 9.676-2.9 11.726c-.847 1.575-2.19 3.63-4.067 3.231c-2.558-.537-3.323-5.693-3.552-8.719c0-25.455-3.33-28.417-3.997-28.753l-.107.081l-.162-.036c-2.377 1.038-2.506 9.294-2.627 17.276c-.096 5.856-.198 12.492-1.053 18.701c-1.108 8.05-2.448 9.603-4.115 9.507c-3.838-.262-3.95-13.482-3.95-14.987c0-.472.012-1.028.027-1.642c.074-3.076.205-8.8-1.687-10.604c-.25-.239-.603-.515-.879-.437c-1.347.339-2.745 4.714-3.209 6.153c-.147.457-.265.833-.364 1.09c-.078.214-.177.515-.294.88c-1.02 3.095-2.18 6.183-4.16 6.944c-.732.284-1.498.222-2.216-.183c-.953-.541-1.73-1.646-2.455-3.482c-.397-1.016-.735-2.046-1.082-3.081c-.419-1.263-.85-2.569-1.384-3.808c-.419-.965-1.464-1.4-2.796-1.164c-2.768.494-3.232 3.29-3.622 7.5c-.07.733-.137 1.452-.228 2.128c-.011.198-.501 6.38-.814 8.344c-.865 5.39-2.002 7.512-3.89 7.358c-4.66-.398-6.798-20.836-6.684-29.47c.088-6.592-1.104-9-1.818-9.382c-.074-.034-.189-.096-.46.095c-.843.571-1.594 2.348-1.363 4.215c2.566 20.32.674 43.592-3.96 48.833c-1.46 1.649-3.448 1.627-4.832.236c-4.049-4.064-4.218-20.586-4.026-45.33c.11-13.521.254-32.043-1.9-33.504c-2.105.873-2.311 16.172-2.45 26.301c-.163 11.785-.329 23.98-2.246 30.189c-.57 1.84-1.307 3.525-2.782 3.39c-2.091-.186-2.761-3.48-4.321-16.478c-.649-5.4-1.319-10.98-2.101-13.14c-.1-.273-.189-.49-.27-.66c-.832 1.889-1.796 7.079-2.466 10.682c-.927 4.976-1.803 9.676-2.904 11.726c-.846 1.575-2.19 3.63-4.063 3.231c-2.558-.537-3.324-5.693-3.552-8.719c-.003-25.455-3.33-28.417-3.997-28.753l-.106.081l-.166-.036c-2.374 1.038-2.503 9.293-2.629 17.276c-.091 5.856-.194 12.492-1.048 18.701c-1.107 8.05-2.437 9.618-4.111 9.507c-3.846-.262-3.958-13.482-3.958-14.987c0-.472.016-1.028.03-1.642c.074-3.076.207-8.8-1.685-10.604c-.25-.239-.603-.515-.88-.438c-1.347.34-2.75 4.715-3.206 6.155a47 47 0 0 1-.364 1.09q-.16.432-.298.875c-1.02 3.096-2.18 6.187-4.155 6.95c-.736.282-1.506.22-2.22-.185c-.953-.541-1.734-1.646-2.454-3.482c-.398-1.016-.74-2.046-1.083-3.081c-.42-1.263-.854-2.569-1.387-3.808c-.416-.965-1.465-1.4-2.797-1.164c-3.188.567-3.943 4.52-4.55 9.238l-.106.839l-2.411-.32l.114-.824c.527-4.137 1.328-10.39 6.53-11.31c2.446-.435 4.585.581 5.446 2.583c.578 1.34 1.031 2.695 1.466 4.008c.324.99.654 1.98 1.037 2.959c.674 1.708 1.197 2.15 1.392 2.257c1.218-.38 2.462-4.167 2.873-5.414c.13-.402.24-.732.328-.968c.085-.233.195-.571.328-.98c1.097-3.43 2.474-7.144 4.918-7.762c.747-.191 1.903-.166 3.157 1.035c2.665 2.544 2.525 8.48 2.433 12.41c-.014.59-.028 1.126-.028 1.583c0 6.272.93 10.655 1.64 12.16c.367-.77.998-2.63 1.598-7.007c.831-6.066.938-12.624 1.027-18.41c.161-10.24.275-17.663 3.982-19.408c.552-.339 1.469-.522 2.436-.033c3.586 1.803 5.326 11.885 5.326 30.817c.225 2.926 1.013 6.006 1.66 6.448c.004-.066.53-.39 1.394-2.01c.925-1.718 1.845-6.665 2.655-11.026c1.792-9.614 2.606-12.989 4.726-13.166c1.615-.158 2.362 1.896 2.676 2.76c.883 2.422 1.537 7.888 2.23 13.678c.54 4.49 1.31 10.902 2.094 13.497c.084-.228.18-.5.283-.836c1.815-5.878 1.98-17.887 2.14-29.507c.22-16.14.503-26.139 3.448-28.226a2.44 2.44 0 0 1 2.233-.316c3.448 1.144 3.714 11.254 3.519 35.8c-.14 17.799-.313 39.952 3.323 43.603c.317.32.542.32.622.32c.17 0 .413-.161.67-.452c3.681-4.162 6.01-26.022 3.372-46.927c-.328-2.602.677-5.337 2.392-6.514c.946-.652 2.036-.736 2.978-.232c2.145 1.14 3.187 5.024 3.102 11.546c-.15 11.387 2.584 24.714 4.37 26.842c.282-.471.842-1.763 1.379-5.145c.301-1.87.799-8.153.806-8.216c.09-.71.155-1.398.217-2.097c.369-3.924.82-8.804 5.613-9.654c2.444-.435 4.583.577 5.448 2.583c.577 1.34 1.027 2.695 1.46 4.008c.332.99.664 1.98 1.046 2.959c.67 1.708 1.197 2.15 1.387 2.257c1.218-.38 2.467-4.167 2.875-5.41c.132-.402.243-.737.328-.973c.088-.228.195-.57.324-.979c1.1-3.43 2.477-7.144 4.924-7.762c.74-.191 1.9-.166 3.154 1.035c2.665 2.543 2.526 8.48 2.437 12.41q-.029.792-.033 1.583c0 6.272.931 10.655 1.641 12.16c.365-.77.994-2.63 1.601-7.007c.832-6.066.931-12.624 1.027-18.41c.159-10.24.273-17.663 3.98-19.408c.55-.339 1.467-.522 2.44-.033c3.58 1.803 5.325 11.884 5.325 30.817c.224 2.926 1.012 6.006 1.656 6.448c.008-.066.526-.39 1.399-2.01c.923-1.718 1.84-6.665 2.653-11.026c1.786-9.614 2.602-12.989 4.722-13.166c1.62-.158 2.367 1.896 2.68 2.76c.88 2.422 1.535 7.888 2.233 13.678c.534 4.49 1.304 10.902 2.092 13.497c.08-.228.176-.5.28-.836c1.813-5.878 1.976-17.887 2.138-29.507c.216-16.14.504-26.139 3.448-28.226a2.45 2.45 0 0 1 2.234-.316c3.452 1.144 3.718 11.254 3.52 35.8c-.141 17.799-.314 39.952 3.319 43.603c.324.32.544.32.63.32c.165 0 .408-.161.662-.452c3.687-4.162 6.014-26.022 3.375-46.927c-.342-2.723.43-5.47 1.84-6.526c.71-.537 1.575-.647 2.37-.313c2.054.877 3.445 4.63 4.255 11.484c.339 2.87.641 5.974.931 9.036c.641 6.683 1.509 15.69 2.684 17.67c.36-.46 1.096-1.704 2.19-5.038l2.307.753c-1.696 5.157-3.026 7.1-4.755 6.902c-2.69-.299-3.468-5.734-4.84-20.055c-.29-3.048-.59-6.132-.928-8.989c-1.03-8.74-2.782-9.532-2.801-9.54c-.342.174-1.137 1.992-.842 4.31c2.558 20.32.673 43.597-3.964 48.834c-.747.842-1.587 1.27-2.485 1.27`],[`fill`,`#53b9ff`,`d`,`M39.863 54.115L.311 93.716l60.995 61.179L0 216.385l39.428 39.619l61.43-61.507l61.097 61.068l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m140.517 154.896l-39.658 39.601l61.097 61.069l39.552-39.602z`],[`fill-opacity`,`.2`,`d`,`m140.517 154.896l-39.658 39.601l15.267 15.182z`],[`fill`,`#53b9ff`,`d`,`M194.57 100.985L256 39.478L216.431 0l-61.412 61.384L93.917.311L54.365 39.913L216.01 201.761l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m115.36 100.987l39.659-39.602L93.917.313L54.365 39.914z`],[`fill-opacity`,`.2`,`d`,`m115.359 100.985l39.659-39.601l-15.271-15.186z`],[`width`,`40`,`height`,`40`,`alt`,``,3,`src`],[1,`who`],[1,`by`],[1,`login`],[`aria-hidden`,`true`,1,`go`],[1,`sr-only`]],template:function(e,t){if(e&1&&(H(0,`section`,0)(1,`div`,1),Fg(2,`span`,2)(3,`span`,3),H(4,`span`,4),Fg(5,`span`,5),U(),H(6,`span`,6),Fg(7,`span`,5),U(),H(8,`span`,7),Fg(9,`span`,5),U(),H(10,`div`,8),P(11,aG,2,0,`:svg:svg`,9)(12,oG,11,0,`:svg:svg`,10)(13,sG,5,0,`:svg:svg`,11)(14,cG,7,0,`:svg:svg`,9),U()(),H(15,`p`,12)(16,`span`,13),J(17,`✦`),U(),J(18),U(),H(19,`h2`,14),J(20),U(),H(21,`p`,15),J(22),U(),P(23,lG,13,5,`a`,16),P(24,uG,8,2,`a`,17),H(25,`h3`,18),J(26),U(),H(27,`ul`,19),I(28,dG,2,3,`li`,20,wg),U()()),e&2){let e,n,r;M(11),F((e=t.info().id)===`nativescript`?11:e===`angular-native`?12:e===`analog`?13:e===`capacitor`?14:-1),M(7),X(` `,t.info().badge),M(2),Y(t.info().heading),M(2),Y(t.info().summary),M(),F((n=t.info().author)?23:-1,n),M(),F((r=t.info().link)?24:-1,r),M(2),X(` `,t.plansTitle(),` `),M(2),L(t.info().plans)}},styles:[`[_nghost-%COMP%] { +}`]})};function sG(e,t){e&1&&(A(),H(0,`svg`,9),Fg(1,`path`,21),U())}function cG(e,t){e&1&&(A(),H(0,`svg`,10)(1,`defs`)(2,`linearGradient`,22),Fg(3,`stop`,23)(4,`stop`,24),U()(),Fg(5,`path`,25),H(6,`g`,26),Fg(7,`path`,27)(8,`path`,28)(9,`path`,29)(10,`path`,30),U()())}function lG(e,t){e&1&&(A(),H(0,`svg`,11),Fg(1,`path`,31)(2,`path`,32)(3,`path`,33)(4,`path`,34),U())}function uG(e,t){e&1&&(A(),H(0,`svg`,9),Fg(1,`path`,35)(2,`path`,36)(3,`path`,37)(4,`path`,38)(5,`path`,39)(6,`path`,40),U())}function dG(e,t){if(e&1&&(H(0,`a`,16),Fg(1,`img`,41),H(2,`span`,42)(3,`span`,43),J(4,`Being built by`),U(),H(5,`strong`),J(6),U(),H(7,`span`,44),J(8),U()(),H(9,`span`,45),J(10,`→`),U(),H(11,`span`,46),J(12,`(opens in a new tab)`),U()()),e&2){let e=t,n=K();Vg(`href`,`https://github.com/pangular-inspector/devtools/pull/`+n.info().pr,ku),M(),Vg(`src`,`https://github.com/`+e.login+`.png?size=96`,ku),M(5),Y(e.name),M(2),Z(`@`,e.login,` · PR #`,n.info().pr)}}function fG(e,t){if(e&1&&(H(0,`a`,17)(1,`span`,42)(2,`strong`),J(3),U()(),H(4,`span`,45),J(5,`→`),U(),H(6,`span`,46),J(7,`(opens in a new tab)`),U()()),e&2){let e=t;Vg(`href`,e.href,ku),M(3),Y(e.label)}}function pG(e,t){if(e&1&&(H(0,`li`),J(1),U()),e&2){let e=t.$implicit,n=t.$index;C_(`animation-delay`,200+n*120,`ms`),M(),Y(e)}}var mG=class e{info=$.required();plansTitle=Q(()=>{let e=this.info();return e.plansTitle??(e.link?`In an ${e.name} app`:`On the roadmap`)});static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-coming-soon`]],hostVars:2,hostBindings:function(e,t){e&2&&C_(`--%NS%brand`,t.info().color)},inputs:{info:[1,`info`]},decls:30,vars:7,consts:[[`aria-labelledby`,`soon-title`,1,`soon`],[`aria-hidden`,`true`,1,`stage`],[1,`ring`,`r1`],[1,`ring`,`r2`],[1,`orbit`,`o1`],[1,`dot`],[1,`orbit`,`o2`],[1,`orbit`,`o3`],[1,`logo`],[`viewBox`,`0 0 256 256`,`width`,`96`,`height`,`96`],[`viewBox`,`0 0 32 32`,`width`,`88`,`height`,`88`],[`viewBox`,`0 0 256 182`,`width`,`104`,`height`,`74`],[1,`badge`],[`aria-hidden`,`true`,1,`spark`],[`id`,`soon-title`],[1,`summary`],[`target`,`_blank`,`rel`,`noopener noreferrer`,1,`author`,3,`href`],[`target`,`_blank`,`rel`,`noopener noreferrer`,1,`author`,`cta`,3,`href`],[1,`plans-title`],[1,`plans`],[3,`animation-delay`],[`fill`,`#3c5afd`,`d`,`M237.248 18.752q18.061 18.06 18.748 45.247V192c-.457 18.12-6.707 33.207-18.748 45.247c-12.04 12.04-27.127 18.291-45.251 18.752H63.999q-27.187-.69-45.247-18.752C6.712 225.208.46 210.121 0 192.001V64q.69-27.187 18.752-45.247Q36.812.692 63.999 0h127.998c18.124.46 33.211 6.711 45.251 18.752m-17.655 103q-6.033-6.003-6.28-15.066V64q-.192-9.063-6.221-15.091c-4.02-4.023-9.054-6.093-15.095-6.22h-21.312v106.626L85.315 42.687H63.999c-6.042.128-11.072 2.198-15.091 6.221c-4.023 4.02-6.093 9.05-6.22 15.09v42.688q-.249 9.063-6.281 15.066q-6.03 5.996-15.091 6.246q9.062.255 15.09 6.25c4.024 4.002 6.115 9.024 6.281 15.066V192c.128 6.037 2.198 11.072 6.221 15.091q6.03 6.03 15.09 6.22h21.317V106.687l85.37 106.627h21.312c6.041-.128 11.076-2.202 15.095-6.221s6.093-9.054 6.22-15.09v-42.688q.249-9.063 6.281-15.066q6.03-5.995 15.091-6.25q-9.062-.25-15.09-6.246`],[`id`,`an-hero-grad`,`x1`,`0`,`y1`,`0`,`x2`,`1`,`y2`,`1`],[`offset`,`0`,`stop-color`,`#f0224f`],[`offset`,`1`,`stop-color`,`#c4002d`],[`d`,`M16 0C27.2 0 32 4.8 32 16S27.2 32 16 32 0 27.2 0 16 4.8 0 16 0Z`,`fill`,`url(#an-hero-grad)`],[`transform`,`translate(6.4 6.4) scale(0.8)`,`fill`,`#fff`],[`d`,`M14.8486 0L23.138 16.8551L23.9996 3.99892L14.8486 0Z`],[`d`,`M16.9875 17.7114H7.01272L5.73926 20.627L12.0001 24L18.261 20.627L16.9875 17.7114Z`],[`d`,`M8.72168 13.9298H15.2812L11.9997 6.39575L8.72168 13.9298Z`],[`d`,`M9.15103 0L0 3.99892L0.861556 16.8551L9.15103 0Z`],[`fill`,`#c30f2e`,`d`,`M152.228.001L48.455 181.046H256L152.228 0z`],[`fill`,`#dd0330`,`d`,`M88.314 26.967L0 181.52h176.628L88.315 26.967z`],[`fill`,`#fff`,`d`,`M18.167 135.294h220.236v-2.419H18.167z`],[`fill`,`#fff`,`d`,`M204.38 170.667c-.861 0-1.67-.358-2.348-1.034c-4.045-4.063-4.221-20.586-4.026-45.33c.11-13.521.257-32.043-1.9-33.504c-2.104.873-2.315 16.172-2.451 26.301c-.162 11.785-.327 23.98-2.242 30.189c-.57 1.84-1.306 3.525-2.786 3.39c-2.086-.185-2.76-3.48-4.317-16.478c-.647-5.4-1.317-10.98-2.101-13.14a11 11 0 0 0-.269-.66c-.835 1.889-1.8 7.079-2.47 10.682c-.927 4.976-1.803 9.676-2.9 11.726c-.847 1.575-2.19 3.63-4.067 3.231c-2.558-.537-3.323-5.693-3.552-8.719c0-25.455-3.33-28.417-3.997-28.753l-.107.081l-.162-.036c-2.377 1.038-2.506 9.294-2.627 17.276c-.096 5.856-.198 12.492-1.053 18.701c-1.108 8.05-2.448 9.603-4.115 9.507c-3.838-.262-3.95-13.482-3.95-14.987c0-.472.012-1.028.027-1.642c.074-3.076.205-8.8-1.687-10.604c-.25-.239-.603-.515-.879-.437c-1.347.339-2.745 4.714-3.209 6.153c-.147.457-.265.833-.364 1.09c-.078.214-.177.515-.294.88c-1.02 3.095-2.18 6.183-4.16 6.944c-.732.284-1.498.222-2.216-.183c-.953-.541-1.73-1.646-2.455-3.482c-.397-1.016-.735-2.046-1.082-3.081c-.419-1.263-.85-2.569-1.384-3.808c-.419-.965-1.464-1.4-2.796-1.164c-2.768.494-3.232 3.29-3.622 7.5c-.07.733-.137 1.452-.228 2.128c-.011.198-.501 6.38-.814 8.344c-.865 5.39-2.002 7.512-3.89 7.358c-4.66-.398-6.798-20.836-6.684-29.47c.088-6.592-1.104-9-1.818-9.382c-.074-.034-.189-.096-.46.095c-.843.571-1.594 2.348-1.363 4.215c2.566 20.32.674 43.592-3.96 48.833c-1.46 1.649-3.448 1.627-4.832.236c-4.049-4.064-4.218-20.586-4.026-45.33c.11-13.521.254-32.043-1.9-33.504c-2.105.873-2.311 16.172-2.45 26.301c-.163 11.785-.329 23.98-2.246 30.189c-.57 1.84-1.307 3.525-2.782 3.39c-2.091-.186-2.761-3.48-4.321-16.478c-.649-5.4-1.319-10.98-2.101-13.14c-.1-.273-.189-.49-.27-.66c-.832 1.889-1.796 7.079-2.466 10.682c-.927 4.976-1.803 9.676-2.904 11.726c-.846 1.575-2.19 3.63-4.063 3.231c-2.558-.537-3.324-5.693-3.552-8.719c-.003-25.455-3.33-28.417-3.997-28.753l-.106.081l-.166-.036c-2.374 1.038-2.503 9.293-2.629 17.276c-.091 5.856-.194 12.492-1.048 18.701c-1.107 8.05-2.437 9.618-4.111 9.507c-3.846-.262-3.958-13.482-3.958-14.987c0-.472.016-1.028.03-1.642c.074-3.076.207-8.8-1.685-10.604c-.25-.239-.603-.515-.88-.438c-1.347.34-2.75 4.715-3.206 6.155a47 47 0 0 1-.364 1.09q-.16.432-.298.875c-1.02 3.096-2.18 6.187-4.155 6.95c-.736.282-1.506.22-2.22-.185c-.953-.541-1.734-1.646-2.454-3.482c-.398-1.016-.74-2.046-1.083-3.081c-.42-1.263-.854-2.569-1.387-3.808c-.416-.965-1.465-1.4-2.797-1.164c-3.188.567-3.943 4.52-4.55 9.238l-.106.839l-2.411-.32l.114-.824c.527-4.137 1.328-10.39 6.53-11.31c2.446-.435 4.585.581 5.446 2.583c.578 1.34 1.031 2.695 1.466 4.008c.324.99.654 1.98 1.037 2.959c.674 1.708 1.197 2.15 1.392 2.257c1.218-.38 2.462-4.167 2.873-5.414c.13-.402.24-.732.328-.968c.085-.233.195-.571.328-.98c1.097-3.43 2.474-7.144 4.918-7.762c.747-.191 1.903-.166 3.157 1.035c2.665 2.544 2.525 8.48 2.433 12.41c-.014.59-.028 1.126-.028 1.583c0 6.272.93 10.655 1.64 12.16c.367-.77.998-2.63 1.598-7.007c.831-6.066.938-12.624 1.027-18.41c.161-10.24.275-17.663 3.982-19.408c.552-.339 1.469-.522 2.436-.033c3.586 1.803 5.326 11.885 5.326 30.817c.225 2.926 1.013 6.006 1.66 6.448c.004-.066.53-.39 1.394-2.01c.925-1.718 1.845-6.665 2.655-11.026c1.792-9.614 2.606-12.989 4.726-13.166c1.615-.158 2.362 1.896 2.676 2.76c.883 2.422 1.537 7.888 2.23 13.678c.54 4.49 1.31 10.902 2.094 13.497c.084-.228.18-.5.283-.836c1.815-5.878 1.98-17.887 2.14-29.507c.22-16.14.503-26.139 3.448-28.226a2.44 2.44 0 0 1 2.233-.316c3.448 1.144 3.714 11.254 3.519 35.8c-.14 17.799-.313 39.952 3.323 43.603c.317.32.542.32.622.32c.17 0 .413-.161.67-.452c3.681-4.162 6.01-26.022 3.372-46.927c-.328-2.602.677-5.337 2.392-6.514c.946-.652 2.036-.736 2.978-.232c2.145 1.14 3.187 5.024 3.102 11.546c-.15 11.387 2.584 24.714 4.37 26.842c.282-.471.842-1.763 1.379-5.145c.301-1.87.799-8.153.806-8.216c.09-.71.155-1.398.217-2.097c.369-3.924.82-8.804 5.613-9.654c2.444-.435 4.583.577 5.448 2.583c.577 1.34 1.027 2.695 1.46 4.008c.332.99.664 1.98 1.046 2.959c.67 1.708 1.197 2.15 1.387 2.257c1.218-.38 2.467-4.167 2.875-5.41c.132-.402.243-.737.328-.973c.088-.228.195-.57.324-.979c1.1-3.43 2.477-7.144 4.924-7.762c.74-.191 1.9-.166 3.154 1.035c2.665 2.543 2.526 8.48 2.437 12.41q-.029.792-.033 1.583c0 6.272.931 10.655 1.641 12.16c.365-.77.994-2.63 1.601-7.007c.832-6.066.931-12.624 1.027-18.41c.159-10.24.273-17.663 3.98-19.408c.55-.339 1.467-.522 2.44-.033c3.58 1.803 5.325 11.884 5.325 30.817c.224 2.926 1.012 6.006 1.656 6.448c.008-.066.526-.39 1.399-2.01c.923-1.718 1.84-6.665 2.653-11.026c1.786-9.614 2.602-12.989 4.722-13.166c1.62-.158 2.367 1.896 2.68 2.76c.88 2.422 1.535 7.888 2.233 13.678c.534 4.49 1.304 10.902 2.092 13.497c.08-.228.176-.5.28-.836c1.813-5.878 1.976-17.887 2.138-29.507c.216-16.14.504-26.139 3.448-28.226a2.45 2.45 0 0 1 2.234-.316c3.452 1.144 3.718 11.254 3.52 35.8c-.141 17.799-.314 39.952 3.319 43.603c.324.32.544.32.63.32c.165 0 .408-.161.662-.452c3.687-4.162 6.014-26.022 3.375-46.927c-.342-2.723.43-5.47 1.84-6.526c.71-.537 1.575-.647 2.37-.313c2.054.877 3.445 4.63 4.255 11.484c.339 2.87.641 5.974.931 9.036c.641 6.683 1.509 15.69 2.684 17.67c.36-.46 1.096-1.704 2.19-5.038l2.307.753c-1.696 5.157-3.026 7.1-4.755 6.902c-2.69-.299-3.468-5.734-4.84-20.055c-.29-3.048-.59-6.132-.928-8.989c-1.03-8.74-2.782-9.532-2.801-9.54c-.342.174-1.137 1.992-.842 4.31c2.558 20.32.673 43.597-3.964 48.834c-.747.842-1.587 1.27-2.485 1.27`],[`fill`,`#53b9ff`,`d`,`M39.863 54.115L.311 93.716l60.995 61.179L0 216.385l39.428 39.619l61.43-61.507l61.097 61.068l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m140.517 154.896l-39.658 39.601l61.097 61.069l39.552-39.602z`],[`fill-opacity`,`.2`,`d`,`m140.517 154.896l-39.658 39.601l15.267 15.182z`],[`fill`,`#53b9ff`,`d`,`M194.57 100.985L256 39.478L216.431 0l-61.412 61.384L93.917.311L54.365 39.913L216.01 201.761l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m115.36 100.987l39.659-39.602L93.917.313L54.365 39.914z`],[`fill-opacity`,`.2`,`d`,`m115.359 100.985l39.659-39.601l-15.271-15.186z`],[`width`,`40`,`height`,`40`,`alt`,``,3,`src`],[1,`who`],[1,`by`],[1,`login`],[`aria-hidden`,`true`,1,`go`],[1,`sr-only`]],template:function(e,t){if(e&1&&(H(0,`section`,0)(1,`div`,1),Fg(2,`span`,2)(3,`span`,3),H(4,`span`,4),Fg(5,`span`,5),U(),H(6,`span`,6),Fg(7,`span`,5),U(),H(8,`span`,7),Fg(9,`span`,5),U(),H(10,`div`,8),P(11,sG,2,0,`:svg:svg`,9)(12,cG,11,0,`:svg:svg`,10)(13,lG,5,0,`:svg:svg`,11)(14,uG,7,0,`:svg:svg`,9),U()(),H(15,`p`,12)(16,`span`,13),J(17,`✦`),U(),J(18),U(),H(19,`h2`,14),J(20),U(),H(21,`p`,15),J(22),U(),P(23,dG,13,5,`a`,16),P(24,fG,8,2,`a`,17),H(25,`h3`,18),J(26),U(),H(27,`ul`,19),I(28,pG,2,3,`li`,20,wg),U()()),e&2){let e,n,r;M(11),F((e=t.info().id)===`nativescript`?11:e===`angular-native`?12:e===`analog`?13:e===`capacitor`?14:-1),M(7),X(` `,t.info().badge),M(2),Y(t.info().heading),M(2),Y(t.info().summary),M(),F((n=t.info().author)?23:-1,n),M(),F((r=t.info().link)?24:-1,r),M(2),X(` `,t.plansTitle(),` `),M(2),L(t.info().plans)}},styles:[`[_nghost-%COMP%] { display: block; min-height: 100%; background: radial-gradient(60% 50% at 50% 18%, color-mix(in srgb, var(--%NS%brand) 22%, transparent), transparent 70%); @@ -12911,7 +12946,7 @@ h2[_ngcontent-%COMP%] { .author[_ngcontent-%COMP%]:hover .go[_ngcontent-%COMP%] { transform: none; } -}`]})};function pG(e){return` +}`]})};function hG(e){return` .devframes-dock-entry button { transition: opacity 0.2s, filter 0.2s, background-color 0.2s, transform 0.3s; } @@ -12942,7 +12977,7 @@ h2[_ngcontent-%COMP%] { transition: none; } } -`}var mG=new Map;function hG(e,t=`dark`,n=50){let r=e?.querySelector(`devframes-dock-standalone`)?.shadowRoot;if(r){if(e){let t=mG.get(e);t!==void 0&&(clearTimeout(t),mG.delete(e))}let n=r.querySelector(`style[data-pangular]`);n||(n=e.createElement(`style`),n.dataset.pangular=``,r.append(n)),n.textContent=pG(t);return}if(n>0&&e){let r=mG.get(e);r!==void 0&&clearTimeout(r);let i=setTimeout(()=>{mG.delete(e),hG(e,t,n-1)},100);mG.set(e,i)}}var gG=class e{current=j(`dark`);constructor(){let e=E(Cs),t=yG(),n=document.documentElement.dataset.theme,r=n===`light`||n===`dark`;if(n===`light`||n===`dark`)this.current.set(n);else if(t)r=!0,this.apply(vG(t));else{let t=_G();if(t){this.current.set(t.matches?`light`:`dark`);let n=e=>{r||this.current.set(e.matches?`light`:`dark`)};t.addEventListener(`change`,n),e.onDestroy(()=>t.removeEventListener(`change`,n))}}let i;try{i=new BroadcastChannel(`pangular:theme`)}catch{}uc(()=>{let e=this.current();try{i?.postMessage(e)}catch{}try{let t=window;for(;t!==t.parent;)t=t.parent,t.postMessage({type:`pangular:theme-change`,theme:e},`*`)}catch{}});let a=e=>{if(e.source!==window.parent)return;let t=e.data;t?.type===`pangular:theme-change`&&(r=!0,this.apply(t.theme===`dark`?`dark`:`light`))};window.addEventListener(`message`,a);let o;t&&(o=new MutationObserver(()=>this.apply(vG(t))),o.observe(t,{attributes:!0,attributeFilter:[`class`]})),e.onDestroy(()=>{window.removeEventListener(`message`,a),o?.disconnect(),i?.close()})}apply(e){this.current.set(e),document.documentElement.dataset.theme=e}static ɵfac=function(t){return new(t||e)};static ɵprov=kl({token:e,factory:e.ɵfac})};function _G(){try{return window.matchMedia?.(`(prefers-color-scheme: light)`)??null}catch{return null}}function vG(e){return e.classList.contains(`dark`)?`dark`:`light`}function yG(){try{return window.frameElement?.closest(`.devframes-color-root`)??null}catch{return null}}var bG=`__DEVFRAME_HUB_CLIENT_CONTEXT__`,xG=`pangular:`;function SG(){try{return window.parent===window?void 0:window.parent[bG]}catch{return}}function CG(e,t,n=50){let r=SG();if(!r){if(n<=0||window.parent===window)return()=>{};let r=()=>{},i=setTimeout(()=>r=CG(e,t,n-1),100);return()=>{clearTimeout(i),r()}}let i=e.map(e=>r.docks.getStateById(xG+e)?.events.on(`entry:activated`,()=>t(e))??(()=>{})),a=r.docks.selectedId,o=e.find(e=>xG+e===a);return o&&t(o),()=>i.forEach(e=>e())}async function wG(e){let t=SG();if(!t)return!1;try{return await t.docks.switchEntry(xG+e)}catch{return!1}}var TG=`pangular-tab`;function EG(e,t,n){let r=new URLSearchParams(e.replace(/^#/,``)).get(`tab`)||t;return n.find(e=>e===r)}function DG(e){try{return sessionStorage.getItem(`${TG}:${e}`)}catch{return null}}function OG(e,t){try{sessionStorage.setItem(`${TG}:${e}`,t)}catch{}}function kG(e,t){try{return new URL(e,t.href).origin===t.origin}catch{return!1}}function AG(e,t){if(t.protocol!==`chrome-extension:`)return!1;try{let{protocol:t}=new URL(e);return t===`http:`||t===`https:`}catch{return!1}}function jG(e=location){let t=new URLSearchParams(e.search).get(`baseURL`);if(t&&(kG(t,e)||AG(t,e)))return t;if(!(e.pathname.includes(`__pangular`)||e.pathname.includes(`__devframes/`)))return[`/__pangular/`,`./`]}var MG=[`nav`],NG=[`main`],PG=e=>[e],FG=(e,t)=>t.id;function IG(e,t){e&1&&(A(),z(0,`svg`,4),V(1,`path`,20),B())}function LG(e,t){e&1&&(A(),z(0,`svg`,4),V(1,`path`,21)(2,`path`,22)(3,`path`,23)(4,`path`,24)(5,`path`,25)(6,`path`,26),B())}function RG(e,t){e&1&&(A(),z(0,`svg`,5)(1,`defs`)(2,`linearGradient`,27),V(3,`stop`,28)(4,`stop`,29),B()(),V(5,`path`,30),z(6,`g`,31),V(7,`path`,32)(8,`path`,33)(9,`path`,34)(10,`path`,35),B()())}function zG(e,t){e&1&&(A(),z(0,`svg`,6),V(1,`path`,36)(2,`path`,37)(3,`path`,38)(4,`path`,39),B())}function BG(e,t){e&1&&(A(),z(0,`svg`,7),V(1,`path`,40),B())}function VG(e,t){e&1&&(A(),z(0,`svg`,8)(1,`defs`)(2,`linearGradient`,41),V(3,`stop`,42)(4,`stop`,43)(5,`stop`,44)(6,`stop`,45)(7,`stop`,46)(8,`stop`,47),B()(),V(9,`path`,48),B())}function HG(e,t){e&1&&(A(),z(0,`svg`,9),V(1,`rect`,49),z(2,`g`,50)(3,`defs`)(4,`mask`,51),V(5,`rect`,52),z(6,`g`,53),V(7,`path`,54)(8,`path`,55),B()(),z(9,`clipPath`,56),V(10,`rect`,57),B()(),z(11,`g`,58),V(12,`ellipse`,59),B(),z(13,`g`,60),V(14,`path`,61)(15,`path`,62),B(),z(16,`g`,58),V(17,`ellipse`,63)(18,`ellipse`,64),z(19,`g`,65),V(20,`line`,66)(21,`circle`,67)(22,`line`,68)(23,`circle`,69),B()()()())}function UG(e,t){if(e&1){let e=W();z(0,`button`,71),G(`click`,function(){let t=O(e).$implicit;return k(K(2).switchTab(t.id))}),V(1,`app-tab-icon`,72),z(2,`span`),J(3),B()()}if(e&2){let e=t.$implicit,n=K(2);q(`active`,n.tab()===e.id),N(`aria-current`,n.tab()===e.id?`page`:null),M(),R(`name`,e.id),M(2),Y(e.label)}}function WG(e,t){e&1&&I(0,UG,4,5,`button`,70,FG),e&2&&L(K().tabs())}function GG(e,t){e&1&&(z(0,`p`,16),J(1,` Can't reach the devtools server. Check that the dev server is running, then reload. `),B())}function KG(e,t){e&1&&V(0,`app-coming-soon`,17),e&2&&R(`info`,t)}function qG(e,t){e&1&&(z(0,`p`,18),J(1,`Looking for an Angular Native app…`),B())}function JG(e,t){e&1&&(z(0,`p`,19),J(1,` This inspector is turned off in the devtools config (`),z(2,`code`),J(3,`inspectors`),B(),J(4,`). `),B())}function YG(e,t){if(e&1){let e=W();z(0,`app-dashboard`,75),G(`navigate`,function(t){return O(e),k(K(3).switchTab(t))}),B()}e&2&&R(`rpc`,K(3).rpc())}function XG(e,t){if(e&1){let e=W();z(0,`app-component-tree`,76),G(`focusHandled`,function(){return O(e),k(K(3).componentFocus.set(null))})(`showForm`,function(t){return O(e),k(K(3).showForm(t))}),B()}if(e&2){let e=K(3);R(`rpc`,e.rpc())(`focus`,e.componentFocus())}}function ZG(e,t){if(e&1){let e=W();z(0,`app-route-inspector`,77),G(`showComponent`,function(t){return O(e),k(K(3).showComponent(t))}),B()}e&2&&R(`rpc`,K(3).rpc())}function QG(e,t){e&1&&V(0,`app-signal-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function $G(e,t){e&1&&V(0,`app-di-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function eK(e,t){e&1&&V(0,`app-store-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function tK(e,t){e&1&&V(0,`app-network-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function nK(e,t){if(e&1){let e=W();z(0,`app-forms-inspector`,78),G(`focusHandled`,function(){return O(e),k(K(3).formFocus.set(null))}),B()}if(e&2){let e=K(3);R(`rpc`,e.rpc())(`focus`,e.formFocus())}}function rK(e,t){e&1&&V(0,`app-pipes-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function iK(e,t){e&1&&V(0,`app-analog-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function aK(e,t){if(e&1&&P(0,YG,1,1,`app-dashboard`,73)(1,XG,1,2,`app-component-tree`,74)(2,ZG,1,1,`app-route-inspector`,73)(3,QG,1,1,`app-signal-inspector`,73)(4,$G,1,1,`app-di-inspector`,73)(5,eK,1,1,`app-store-inspector`,73)(6,tK,1,1,`app-network-inspector`,73)(7,nK,1,2,`app-forms-inspector`,74)(8,rK,1,1,`app-pipes-inspector`,73)(9,iK,1,1,`app-analog-inspector`,73),e&2){let e;F((e=K(2).tab())===`dashboard`?0:e===`components`?1:e===`routes`?2:e===`signals`?3:e===`injectors`?4:e===`store`?5:e===`network`?6:e===`forms`?7:e===`pipes`?8:e===`analog`?9:-1)}}function oK(e,t){e&1&&I(0,aK,10,1,null,null,wg),e&2&&L(sv(0,PG,K().scopeKey()))}var sK=[`angular`,`ngrx`,`analog`,`angular-native`,`nativescript`,`capacitor`],cK={angular:`Angular`,ngrx:`NgRx Store`,analog:`Analog`,"angular-native":`Angular Native`,nativescript:`NativeScript`,capacitor:`Capacitor`},lK={ngrx:`#d770e8`,analog:`#ff5470`,"angular-native":`#ff4d6d`,nativescript:`#8196ff`,capacitor:`#53b9ff`},uK={ngrx:`#a21caf`,analog:`#be123c`,"angular-native":`#be123c`,nativescript:`#3448c5`,capacitor:`#0369a1`},dK={ngrx:`store`,analog:`analog`},fK={store:`ngrx`,analog:`analog`},pK={"angular-native":[`components`,`signals`,`injectors`,`store`,`pipes`]},mK={capacitor:{id:`capacitor`,name:`Capacitor`,badge:`Coming Soon`,heading:`Capacitor Support`,summary:`Connect Ionic and Capacitor apps running in a device WebView back to these tools.`,color:`#119eff`,plans:[`Manual overlay start for apps that load from capacitor:// or a device`,`Connection settings passed in, no cross-origin probing`,`Setup guides for the Android emulator and iOS simulator`],pr:21,author:{name:`Erkam Yaman`,login:`erkamyaman`}}},hK={id:`nativescript`,name:`NativeScript`,badge:`Available`,heading:`Inspect NativeScript apps`,summary:`A NativeScript Angular app reports from the simulator or device to this server, and its components, signals, injectors and NgRx stores show up in the Angular dock.`,color:`#3c5afd`,plansTitle:`Set up an app`,plans:[`Install @pangular-inspector/devtools and @valor/nativescript-websockets`,`Call initNativeScriptOverlay() in main.ts, before the app bootstraps`,`Run npx pangular dev --no-auth in the app, then open the Angular dock`],link:{label:`NativeScript setup guide`,href:`https://pangular-inspector.dev/guides/nativescript/`}},gK={id:`analog`,name:`Analog`,badge:`Not in this app`,heading:`This app doesn’t use Analog`,summary:`In an Analog app this dock shows your file routes, server load() and API calls, render modes and route lint.`,color:`#dd0330`,plans:[`Which page, layout and .server.ts files render a URL`,`Every load(), server function and API call with timing`,`SSR, prerendered or client only, per page`],link:{label:`Get started with Analog`,href:`https://analogjs.org/docs/getting-started`}},_K={id:`angular-native`,name:`Angular Native`,badge:`Not connected`,heading:`No Angular Native app is connected`,summary:`Start the overlay in your Angular Native app and run this server with --no-auth. The tabs fill as soon as the app reports.`,color:`#e11d48`,plans:[`The component tree, with the view outlined on the device`,`Signals and injectors of the running app`,`Live @ngrx/signals and @ngrx/store state`],link:{label:`Set up Angular Native`,href:`https://pangular-inspector.dev/guides/angular-native/`}};function vK(){let e=new URLSearchParams(location.search).get(`view`);return sK.find(t=>t===e)??null}Ub(class e{analog=j(!1);allTabs=[{id:`dashboard`,label:`Dashboard`},{id:`analog`,label:`Analog`},{id:`components`,label:`Components`},{id:`routes`,label:`Routes`},{id:`signals`,label:`Signals`},{id:`injectors`,label:`Injectors`},{id:`store`,label:`Store`},{id:`forms`,label:`Forms`},{id:`pipes`,label:`Pipes`},{id:`network`,label:`SSR & HTTP`}];view=j(vK());viewAccent=Q(()=>{let e=this.view(),t=this.themeService.current()===`light`?uK:lK;return(e&&t[e])??null});title=Q(()=>{let e=this.view();return e?cK[e]:`Pangular Inspector`});mainLabel=Q(()=>this.availableTabs().find(e=>e.id===this.tab())?.label??this.title());analogKnown=j(!1);nativePageId=j(null);nativeKnown=j(!1);scopeKey=Q(()=>this.view()===`angular-native`?this.nativePageId()??``:``);comingSoon=Q(()=>{let e=this.view();return e===`analog`?this.analogKnown()&&!this.analog()?gK:void 0:e===`nativescript`?hK:e===`angular-native`?this.nativeKnown()&&!this.nativePageId()?_K:void 0:e?mK[e]:void 0});config=Q(()=>yE(this.rpc()));tabEnabled=SE;availableTabs=Q(()=>{if(this.comingSoon())return[];let e=this.view(),t=e?dK[e]:void 0,n=this.allTabs.filter(e=>SE(e.id,this.config()));if(t)return n.filter(e=>e.id===t);let r=e?pK[e]:void 0;return r?n.filter(e=>r.includes(e.id)):n.filter(t=>(t.id!==`analog`||this.analog())&&!(e===`angular`&&fK[t.id]))});tabs=Q(()=>{let e=this.availableTabs();if(this.rpc())return e;let t=this.tab();return e.filter(e=>e.id===`dashboard`||e.id===t)});tab=Tv(()=>{let e=this.view();return e&&(dK[e]??pK[e]?.[0])||`dashboard`});rpc=j(null);connected=j(!1);connectionFailed=j(!1);hiddenPages=j([]);pageId=eE();backgroundNote=Q(()=>{let e=this.hiddenPages();return this.pageId?e.includes(this.pageId)?`Tab in background, showing the last data.`:``:e.length?e.length===1?`A tab is in the background, showing its last data.`:`${e.length} tabs are in the background, showing their last data.`:``});stopVisibility=()=>{};stopNative=()=>{};stopFollowing=()=>{};stopHighlights=()=>{};nav=Rv(`nav`);main=Rv(`main`);injector=E(xs);themeService=E(gG);navObserver;navFade=j({start:!1,end:!1});constructor(){Id(()=>{let e=this.nav()?.nativeElement;e&&typeof ResizeObserver<`u`&&(this.navObserver=new ResizeObserver(()=>this.measureNav()),this.navObserver.observe(e))}),ey(()=>{this.tab(),this.tabs(),Cv(()=>{this.revealActiveTab(),this.measureNav()})}),uc(()=>{let e=this.themeService.current();Cv(()=>{try{window.parent!==window&&hG(window.parent.document,e)}catch{}})})}measureNav(){let e=this.nav()?.nativeElement;if(!e)return;let t=e.scrollWidth-e.clientWidth,n=e.scrollLeft>1,r=t>1&&e.scrollLeftn?e.scrollLeft=Math.max(0,n):e.scrollLeftthis.showView(e)));let e=EG(location.hash,DG(this.tabScope()),this.availableTabs().map(e=>e.id));e?this.tab.set(e):!this.view()&&EG(location.hash,DG(this.tabScope()),[`analog`])===`analog`&&(this.restoreAnalog=!0),this.stopHighlights=sE(()=>this.rpc());let t=jG();kT(t?{baseURL:t}:{}).then(e=>{this.rpc.set(e),this.connected.set(!0),this.watchVisibility(e),this.watchAngularNative(e),e.scope(`pangular`).rpc.call(`analog-project`).then(e=>{let t=!!e?.analog;this.analog.set(t),this.analogKnown.set(!0),t&&this.restoreAnalog&&SE(`analog`,this.config())&&this.tab.set(`analog`),this.restoreAnalog=!1,!t&&this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)},()=>{this.analogKnown.set(!0),this.restoreAnalog=!1,this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)}),e.events.on(`connection:status`,e=>{this.connected.set(e===`connected`)})},()=>{this.connectionFailed.set(!0),this.analogKnown.set(!0),this.nativeKnown.set(!0)})}ngOnDestroy(){this.stopNative(),this.stopFollowing(),this.stopVisibility(),this.stopHighlights(),this.navObserver?.disconnect()}showView(e){if(e===this.view())return;$T(e===`angular-native`?this.nativePageId():null),this.view.set(e);let t=new URL(location.href);t.searchParams.set(`view`,e),t.hash=``,history.replaceState(history.state,``,t)}formFocus=j(null);componentFocus=Tv({source:this.tab,computation:()=>null});showForm(e){this.formFocus.set({id:e}),this.switchTab(`forms`)}showComponent(e){this.config().inspectors.components&&(this.switchTab(`components`),this.componentFocus.set(e))}inspectFromPanel({source:e,origin:t,data:n}){if(e!==window.parent||t!==location.origin)return;let r=n;r?.type===`pangular:inspect-component`&&typeof r.id==`string`&&this.tab()===`components`&&this.config().inspectors.components&&this.componentFocus.set({id:r.id})}switchTab(e){let t=fK[e];if(this.view()===`angular`&&t){this.activateDock(t,e);return}this.setTab(e),history.replaceState(history.state,``,`#tab=${e}`)}restoreAnalog=!1;setTab(e){this.restoreAnalog=!1,this.keepFocus(),this.tab.set(e),OG(this.tabScope(),e)}tabScope(){return this.view()??`panel`}async watchAngularNative(e){try{let t=await e.scope(`pangular`).rpc.sharedState(`component-tree`),n=e=>{let t=e?.pages,n=bD(t,this.nativePageId());this.view()===`angular-native`&&$T(n),this.nativePageId.set(n),this.nativeKnown.set(!0)};n(t.value()),this.stopNative(),this.stopNative=t.on(`updated`,n)}catch{this.nativeKnown.set(!0)}}async watchVisibility(e){try{let t=await e.scope(`pangular`).rpc.sharedState(`page-visibility`),n=e=>{let t=e?.hidden;this.hiddenPages.set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])};n(t.value()),this.stopVisibility(),this.stopVisibility=t.on(`updated`,n)}catch{}}keepFocus(){let e=document.activeElement,t=this.main()?.nativeElement;(!e||e===document.body||t?.contains(e))&&Id(()=>{let e=document.activeElement;e&&e!==document.body||(this.nav()?.nativeElement.querySelector(`button.active`)??this.main()?.nativeElement)?.focus()},{injector:this.injector})}async activateDock(e,t){if(await wG(e))return;if(window.parent===window){this.keepFocus(),this.showView(e);return}let n=this.rpc();if(!n?.call){this.setTab(t);return}try{await n.call(`hub:docks:activate`,{dockId:`pangular:${e}`}),this.keepFocus(),this.showView(e)}catch{this.setTab(t)}}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-root`]],viewQuery:function(e,t){e&1&&e_(t.nav,MG,5)(t.main,NG,5),e&2&&t_(2)},hostVars:2,hostBindings:function(e,t){e&1&&G(`message`,function(e){return t.inspectFromPanel(e)},ju),e&2&&C_(`--%NS%accent`,t.viewAccent())},decls:28,vars:21,consts:[[`nav`,``],[`main`,``],[1,`brand`],[1,`mark`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 256 256`,`aria-hidden`,`true`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 32 32`,`aria-hidden`,`true`],[`width`,`24`,`height`,`17`,`viewBox`,`0 0 256 182`,`aria-hidden`,`true`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 24 24`,`fill`,`currentColor`,`aria-hidden`,`true`],[`width`,`20`,`height`,`22`,`viewBox`,`0 0 223 236`,`aria-hidden`,`true`],[`width`,`30`,`height`,`30`,`viewBox`,`0 0 500 500`,`aria-hidden`,`true`],[1,`title`],[`aria-label`,`Inspectors`,3,`scroll`],[`role`,`status`,1,`status`],[`aria-hidden`,`true`,1,`dot`],[`tabindex`,`-1`],[`role`,`status`,1,`background-note`],[`role`,`alert`,1,`connection-error`],[3,`info`],[`role`,`status`,1,`turned-off`],[1,`turned-off`],[`fill`,`#3c5afd`,`d`,`M237.248 18.752q18.061 18.06 18.748 45.247V192c-.457 18.12-6.707 33.207-18.748 45.247c-12.04 12.04-27.127 18.291-45.251 18.752H63.999q-27.187-.69-45.247-18.752C6.712 225.208.46 210.121 0 192.001V64q.69-27.187 18.752-45.247Q36.812.692 63.999 0h127.998c18.124.46 33.211 6.711 45.251 18.752m-17.655 103q-6.033-6.003-6.28-15.066V64q-.192-9.063-6.221-15.091c-4.02-4.023-9.054-6.093-15.095-6.22h-21.312v106.626L85.315 42.687H63.999c-6.042.128-11.072 2.198-15.091 6.221c-4.023 4.02-6.093 9.05-6.22 15.09v42.688q-.249 9.063-6.281 15.066q-6.03 5.996-15.091 6.246q9.062.255 15.09 6.25c4.024 4.002 6.115 9.024 6.281 15.066V192c.128 6.037 2.198 11.072 6.221 15.091q6.03 6.03 15.09 6.22h21.317V106.687l85.37 106.627h21.312c6.041-.128 11.076-2.202 15.095-6.221s6.093-9.054 6.22-15.09v-42.688q.249-9.063 6.281-15.066q6.03-5.995 15.091-6.25q-9.062-.25-15.09-6.246`],[`fill`,`#53b9ff`,`d`,`M39.863 54.115L.311 93.716l60.995 61.179L0 216.385l39.428 39.619l61.43-61.507l61.097 61.068l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m140.517 154.896l-39.658 39.601l61.097 61.069l39.552-39.602z`],[`fill-opacity`,`.2`,`d`,`m140.517 154.896l-39.658 39.601l15.267 15.182z`],[`fill`,`#53b9ff`,`d`,`M194.57 100.985L256 39.478L216.431 0l-61.412 61.384L93.917.311L54.365 39.913L216.01 201.761l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m115.36 100.987l39.659-39.602L93.917.313L54.365 39.914z`],[`fill-opacity`,`.2`,`d`,`m115.359 100.985l39.659-39.601l-15.271-15.186z`],[`id`,`an-mark-grad`,`x1`,`0`,`y1`,`0`,`x2`,`1`,`y2`,`1`],[`offset`,`0`,`stop-color`,`#f0224f`],[`offset`,`1`,`stop-color`,`#c4002d`],[`d`,`M16 0C27.2 0 32 4.8 32 16S27.2 32 16 32 0 27.2 0 16 4.8 0 16 0Z`,`fill`,`url(#an-mark-grad)`],[`transform`,`translate(6.4 6.4) scale(0.8)`,`fill`,`#fff`],[`d`,`M14.8486 0L23.138 16.8551L23.9996 3.99892L14.8486 0Z`],[`d`,`M16.9875 17.7114H7.01272L5.73926 20.627L12.0001 24L18.261 20.627L16.9875 17.7114Z`],[`d`,`M8.72168 13.9298H15.2812L11.9997 6.39575L8.72168 13.9298Z`],[`d`,`M9.15103 0L0 3.99892L0.861556 16.8551L9.15103 0Z`],[`fill`,`#c30f2e`,`d`,`M152.228.001L48.455 181.046H256L152.228 0z`],[`fill`,`#dd0330`,`d`,`M88.314 26.967L0 181.52h176.628L88.315 26.967z`],[`fill`,`#fff`,`d`,`M18.167 135.294h220.236v-2.419H18.167z`],[`fill`,`#fff`,`d`,`M204.38 170.667c-.861 0-1.67-.358-2.348-1.034c-4.045-4.063-4.221-20.586-4.026-45.33c.11-13.521.257-32.043-1.9-33.504c-2.104.873-2.315 16.172-2.451 26.301c-.162 11.785-.327 23.98-2.242 30.189c-.57 1.84-1.306 3.525-2.786 3.39c-2.086-.185-2.76-3.48-4.317-16.478c-.647-5.4-1.317-10.98-2.101-13.14a11 11 0 0 0-.269-.66c-.835 1.889-1.8 7.079-2.47 10.682c-.927 4.976-1.803 9.676-2.9 11.726c-.847 1.575-2.19 3.63-4.067 3.231c-2.558-.537-3.323-5.693-3.552-8.719c0-25.455-3.33-28.417-3.997-28.753l-.107.081l-.162-.036c-2.377 1.038-2.506 9.294-2.627 17.276c-.096 5.856-.198 12.492-1.053 18.701c-1.108 8.05-2.448 9.603-4.115 9.507c-3.838-.262-3.95-13.482-3.95-14.987c0-.472.012-1.028.027-1.642c.074-3.076.205-8.8-1.687-10.604c-.25-.239-.603-.515-.879-.437c-1.347.339-2.745 4.714-3.209 6.153c-.147.457-.265.833-.364 1.09c-.078.214-.177.515-.294.88c-1.02 3.095-2.18 6.183-4.16 6.944c-.732.284-1.498.222-2.216-.183c-.953-.541-1.73-1.646-2.455-3.482c-.397-1.016-.735-2.046-1.082-3.081c-.419-1.263-.85-2.569-1.384-3.808c-.419-.965-1.464-1.4-2.796-1.164c-2.768.494-3.232 3.29-3.622 7.5c-.07.733-.137 1.452-.228 2.128c-.011.198-.501 6.38-.814 8.344c-.865 5.39-2.002 7.512-3.89 7.358c-4.66-.398-6.798-20.836-6.684-29.47c.088-6.592-1.104-9-1.818-9.382c-.074-.034-.189-.096-.46.095c-.843.571-1.594 2.348-1.363 4.215c2.566 20.32.674 43.592-3.96 48.833c-1.46 1.649-3.448 1.627-4.832.236c-4.049-4.064-4.218-20.586-4.026-45.33c.11-13.521.254-32.043-1.9-33.504c-2.105.873-2.311 16.172-2.45 26.301c-.163 11.785-.329 23.98-2.246 30.189c-.57 1.84-1.307 3.525-2.782 3.39c-2.091-.186-2.761-3.48-4.321-16.478c-.649-5.4-1.319-10.98-2.101-13.14c-.1-.273-.189-.49-.27-.66c-.832 1.889-1.796 7.079-2.466 10.682c-.927 4.976-1.803 9.676-2.904 11.726c-.846 1.575-2.19 3.63-4.063 3.231c-2.558-.537-3.324-5.693-3.552-8.719c-.003-25.455-3.33-28.417-3.997-28.753l-.106.081l-.166-.036c-2.374 1.038-2.503 9.293-2.629 17.276c-.091 5.856-.194 12.492-1.048 18.701c-1.107 8.05-2.437 9.618-4.111 9.507c-3.846-.262-3.958-13.482-3.958-14.987c0-.472.016-1.028.03-1.642c.074-3.076.207-8.8-1.685-10.604c-.25-.239-.603-.515-.88-.438c-1.347.34-2.75 4.715-3.206 6.155a47 47 0 0 1-.364 1.09q-.16.432-.298.875c-1.02 3.096-2.18 6.187-4.155 6.95c-.736.282-1.506.22-2.22-.185c-.953-.541-1.734-1.646-2.454-3.482c-.398-1.016-.74-2.046-1.083-3.081c-.42-1.263-.854-2.569-1.387-3.808c-.416-.965-1.465-1.4-2.797-1.164c-3.188.567-3.943 4.52-4.55 9.238l-.106.839l-2.411-.32l.114-.824c.527-4.137 1.328-10.39 6.53-11.31c2.446-.435 4.585.581 5.446 2.583c.578 1.34 1.031 2.695 1.466 4.008c.324.99.654 1.98 1.037 2.959c.674 1.708 1.197 2.15 1.392 2.257c1.218-.38 2.462-4.167 2.873-5.414c.13-.402.24-.732.328-.968c.085-.233.195-.571.328-.98c1.097-3.43 2.474-7.144 4.918-7.762c.747-.191 1.903-.166 3.157 1.035c2.665 2.544 2.525 8.48 2.433 12.41c-.014.59-.028 1.126-.028 1.583c0 6.272.93 10.655 1.64 12.16c.367-.77.998-2.63 1.598-7.007c.831-6.066.938-12.624 1.027-18.41c.161-10.24.275-17.663 3.982-19.408c.552-.339 1.469-.522 2.436-.033c3.586 1.803 5.326 11.885 5.326 30.817c.225 2.926 1.013 6.006 1.66 6.448c.004-.066.53-.39 1.394-2.01c.925-1.718 1.845-6.665 2.655-11.026c1.792-9.614 2.606-12.989 4.726-13.166c1.615-.158 2.362 1.896 2.676 2.76c.883 2.422 1.537 7.888 2.23 13.678c.54 4.49 1.31 10.902 2.094 13.497c.084-.228.18-.5.283-.836c1.815-5.878 1.98-17.887 2.14-29.507c.22-16.14.503-26.139 3.448-28.226a2.44 2.44 0 0 1 2.233-.316c3.448 1.144 3.714 11.254 3.519 35.8c-.14 17.799-.313 39.952 3.323 43.603c.317.32.542.32.622.32c.17 0 .413-.161.67-.452c3.681-4.162 6.01-26.022 3.372-46.927c-.328-2.602.677-5.337 2.392-6.514c.946-.652 2.036-.736 2.978-.232c2.145 1.14 3.187 5.024 3.102 11.546c-.15 11.387 2.584 24.714 4.37 26.842c.282-.471.842-1.763 1.379-5.145c.301-1.87.799-8.153.806-8.216c.09-.71.155-1.398.217-2.097c.369-3.924.82-8.804 5.613-9.654c2.444-.435 4.583.577 5.448 2.583c.577 1.34 1.027 2.695 1.46 4.008c.332.99.664 1.98 1.046 2.959c.67 1.708 1.197 2.15 1.387 2.257c1.218-.38 2.467-4.167 2.875-5.41c.132-.402.243-.737.328-.973c.088-.228.195-.57.324-.979c1.1-3.43 2.477-7.144 4.924-7.762c.74-.191 1.9-.166 3.154 1.035c2.665 2.543 2.526 8.48 2.437 12.41q-.029.792-.033 1.583c0 6.272.931 10.655 1.641 12.16c.365-.77.994-2.63 1.601-7.007c.832-6.066.931-12.624 1.027-18.41c.159-10.24.273-17.663 3.98-19.408c.55-.339 1.467-.522 2.44-.033c3.58 1.803 5.325 11.884 5.325 30.817c.224 2.926 1.012 6.006 1.656 6.448c.008-.066.526-.39 1.399-2.01c.923-1.718 1.84-6.665 2.653-11.026c1.786-9.614 2.602-12.989 4.722-13.166c1.62-.158 2.367 1.896 2.68 2.76c.88 2.422 1.535 7.888 2.233 13.678c.534 4.49 1.304 10.902 2.092 13.497c.08-.228.176-.5.28-.836c1.813-5.878 1.976-17.887 2.138-29.507c.216-16.14.504-26.139 3.448-28.226a2.45 2.45 0 0 1 2.234-.316c3.452 1.144 3.718 11.254 3.52 35.8c-.141 17.799-.314 39.952 3.319 43.603c.324.32.544.32.63.32c.165 0 .408-.161.662-.452c3.687-4.162 6.014-26.022 3.375-46.927c-.342-2.723.43-5.47 1.84-6.526c.71-.537 1.575-.647 2.37-.313c2.054.877 3.445 4.63 4.255 11.484c.339 2.87.641 5.974.931 9.036c.641 6.683 1.509 15.69 2.684 17.67c.36-.46 1.096-1.704 2.19-5.038l2.307.753c-1.696 5.157-3.026 7.1-4.755 6.902c-2.69-.299-3.468-5.734-4.84-20.055c-.29-3.048-.59-6.132-.928-8.989c-1.03-8.74-2.782-9.532-2.801-9.54c-.342.174-1.137 1.992-.842 4.31c2.558 20.32.673 43.597-3.964 48.834c-.747.842-1.587 1.27-2.485 1.27`],[`d`,`M12.024.017V0L12 .008L11.976 0v.017L.812 3.892l1.605 14.875l9.559 5.207V24l.024-.013l.024.013v-.026l9.559-5.207l1.605-14.875zm6.868 14.244q-1.64 3.948-6.031 4.166c-2.829 0-4.661-1.7-4.66-1.7q-1.745-1.359-2.398-3.417c-.695-.76-.702-.841-.774-1.145c-.072-.303.045-.388.249-.685q.204-.298.098-.85q-.26-.36-.3-1.128q0-.37.496-.783q.495-.413.607-.632q.083-.119.065-1.031q-.006-.897.995-.975c1-.08 1.565-.832 1.879-1.174c.21-.228.52-.339.91-.341c.551-.026 1.052.185 1.484.62c1.075-.055 2.176.235 3.292.863q2.379 1.414 2.596 3.055q-.257 2.158-5.788-.113q-2.895.819-2.846 3.552q0 2.508 2.422 3.643c-.787-.772-1.122-1.422-1.01-1.959q2.456 2.906 5.588 2.173c-.92.032-1.65-.264-2.198-.893q2.116-.05 3.998-1.972c-.724.576-1.482.794-2.284.657q3.26-2.563 2.307-5.98l-.002-.006a3.02 3.02 0 0 1 .788 2.03q.023 1.175-.795 2.477q.613-.478 1.413-2.047c.23 2.117-.625 3.724-2.574 4.825q.934-.085 2.473-1.23m-5.567-6.63a.319.319 0 1 1 .638 0a.319.319 0 0 1-.638 0`],[`id`,`ng-grad`,`x1`,`49`,`x2`,`226`,`y1`,`214`,`y2`,`130`,`gradientUnits`,`userSpaceOnUse`],[`stop-color`,`#E40035`],[`offset`,`.24`,`stop-color`,`#F60A48`],[`offset`,`.352`,`stop-color`,`#F20755`],[`offset`,`.494`,`stop-color`,`#DC087D`],[`offset`,`.745`,`stop-color`,`#9717E7`],[`offset`,`1`,`stop-color`,`#6C00F5`],[`fill`,`url(#ng-grad)`,`d`,`m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z`],[`width`,`500`,`height`,`500`,`rx`,`112`,`fill`,`#1c1a17`],[`transform`,`translate(250 252) scale(1.38) translate(-120 -129)`],[`id`,`pi-mark-mask`],[`x`,`-60`,`y`,`-60`,`width`,`360`,`height`,`380`,`fill`,`#fff`],[`fill`,`none`,`stroke`,`#000`,`stroke-width`,`30`,`stroke-linejoin`,`miter`],[`d`,`M88 66 V196`],[`d`,`M88 66 H143 L170 98 L143 130 H88 Z`],[`id`,`pi-mark-clip`],[`x`,`-40`,`y`,`129`,`width`,`320`,`height`,`200`],[`transform`,`rotate(-10 120 129)`],[`cx`,`120`,`cy`,`129`,`rx`,`128`,`ry`,`34`,`fill`,`none`,`stroke`,`#78350f`,`stroke-width`,`10`],[`mask`,`url(#pi-mark-mask)`],[`fill`,`#fbbf24`,`d`,`M120 5 L2 46 L22 198 L120 253 Z`],[`fill`,`#f59e0b`,`d`,`M120 5 L238 46 L218 198 L120 253 Z`],[`clip-path`,`url(#pi-mark-clip)`,`cx`,`120`,`cy`,`129`,`rx`,`128`,`ry`,`34`,`fill`,`none`,`stroke`,`#1c1a17`,`stroke-width`,`22`],[`clip-path`,`url(#pi-mark-clip)`,`cx`,`120`,`cy`,`129`,`rx`,`128`,`ry`,`34`,`fill`,`none`,`stroke`,`#fde68a`,`stroke-width`,`10`],[`transform`,`translate(230.9 146.0) rotate(10) scale(1.5) translate(-4 -4)`],[`x1`,`9`,`y1`,`9`,`x2`,`21`,`y2`,`21`,`stroke`,`#1c1a17`,`stroke-width`,`14`,`stroke-linecap`,`round`],[`r`,`16`,`fill`,`#1c1a17`],[`x1`,`9`,`y1`,`9`,`x2`,`21`,`y2`,`21`,`stroke`,`#fde68a`,`stroke-width`,`7`,`stroke-linecap`,`round`],[`r`,`12`,`fill`,`#1c1a17`,`stroke`,`#fde68a`,`stroke-width`,`5`],[`type`,`button`,3,`active`],[`type`,`button`,3,`click`],[3,`name`],[3,`rpc`],[3,`rpc`,`focus`],[3,`navigate`,`rpc`],[3,`focusHandled`,`showForm`,`rpc`,`focus`],[3,`showComponent`,`rpc`],[3,`focusHandled`,`rpc`,`focus`]],template:function(e,t){if(e&1&&(z(0,`header`)(1,`h1`,2)(2,`span`,3),P(3,IG,2,0,`:svg:svg`,4)(4,LG,7,0,`:svg:svg`,4)(5,RG,11,0,`:svg:svg`,5)(6,zG,5,0,`:svg:svg`,6)(7,BG,2,0,`:svg:svg`,7)(8,VG,10,0,`:svg:svg`,8)(9,HG,24,0,`:svg:svg`,9),B(),z(10,`span`,10),J(11),B()(),z(12,`nav`,11,0),G(`scroll`,function(){return t.measureNav()}),P(14,WG,2,0),B(),z(15,`span`,12)(16,`span`,13),V(17,`span`),B(),J(18),B()(),z(19,`main`,14,1)(21,`p`,15),J(22),B(),P(23,GG,2,0,`p`,16)(24,KG,1,1,`app-coming-soon`,17)(25,qG,2,0,`p`,18)(26,JG,5,0,`p`,19)(27,oK,2,2),B()),e&2){let e;M(2),q(`ng-mark`,t.view()===`angular`)(`pi-mark`,!t.view()),M(),F(t.view()===`nativescript`?3:t.view()===`capacitor`?4:t.view()===`angular-native`?5:t.view()===`analog`?6:t.view()===`ngrx`?7:t.view()===`angular`?8:9),M(7),q(`ng-text`,t.view()===`angular`),M(),Y(t.title()),M(),q(`fade-start`,t.navFade().start)(`fade-end`,t.navFade().end),M(2),F(t.availableTabs().length>1?14:-1),M(),q(`connected`,t.connected())(`failed`,t.connectionFailed()),M(3),X(` `,t.connected()?`Live`:t.connectionFailed()?`Disconnected`:`Connecting…`,` `),M(),N(`aria-label`,t.mainLabel()),M(3),Y(t.backgroundNote()),M(),F(t.connectionFailed()?23:(e=t.comingSoon())?24:t.view()===`angular-native`&&!t.nativePageId()?25:t.tabEnabled(t.tab(),t.config())?27:26,e)}},dependencies:[fD,Ak,iN,_P,kF,LL,eB,$B,sU,iG,fG,NE],styles:[`[_nghost-%COMP%] { +`}var gG=new Map;function _G(e,t=`dark`,n=50){let r=e?.querySelector(`devframes-dock-standalone`)?.shadowRoot;if(r){if(e){let t=gG.get(e);t!==void 0&&(clearTimeout(t),gG.delete(e))}let n=r.querySelector(`style[data-pangular]`);n||(n=e.createElement(`style`),n.dataset.pangular=``,r.append(n)),n.textContent=hG(t);return}if(n>0&&e){let r=gG.get(e);r!==void 0&&clearTimeout(r);let i=setTimeout(()=>{gG.delete(e),_G(e,t,n-1)},100);gG.set(e,i)}}var vG=class e{current=j(`dark`);constructor(){let e=E(Cs),t=xG(),n=document.documentElement.dataset.theme,r=n===`light`||n===`dark`;if(n===`light`||n===`dark`)this.current.set(n);else if(t)r=!0,this.apply(bG(t));else{let t=yG();if(t){this.current.set(t.matches?`light`:`dark`);let n=e=>{r||this.current.set(e.matches?`light`:`dark`)};t.addEventListener(`change`,n),e.onDestroy(()=>t.removeEventListener(`change`,n))}}let i;try{i=new BroadcastChannel(`pangular:theme`)}catch{}uc(()=>{let e=this.current();try{i?.postMessage(e)}catch{}try{let t=window;for(;t!==t.parent;)t=t.parent,t.postMessage({type:`pangular:theme-change`,theme:e},`*`)}catch{}});let a=e=>{if(e.source!==window.parent)return;let t=e.data;t?.type===`pangular:theme-change`&&(r=!0,this.apply(t.theme===`dark`?`dark`:`light`))};window.addEventListener(`message`,a);let o;t&&(o=new MutationObserver(()=>this.apply(bG(t))),o.observe(t,{attributes:!0,attributeFilter:[`class`]})),e.onDestroy(()=>{window.removeEventListener(`message`,a),o?.disconnect(),i?.close()})}apply(e){this.current.set(e),document.documentElement.dataset.theme=e}static ɵfac=function(t){return new(t||e)};static ɵprov=kl({token:e,factory:e.ɵfac})};function yG(){try{return window.matchMedia?.(`(prefers-color-scheme: light)`)??null}catch{return null}}function bG(e){return e.classList.contains(`dark`)?`dark`:`light`}function xG(){try{return window.frameElement?.closest(`.devframes-color-root`)??null}catch{return null}}var SG=`__DEVFRAME_HUB_CLIENT_CONTEXT__`,CG=`pangular:`;function wG(){try{return window.parent===window?void 0:window.parent[SG]}catch{return}}function TG(e,t,n=50){let r=wG();if(!r){if(n<=0||window.parent===window)return()=>{};let r=()=>{},i=setTimeout(()=>r=TG(e,t,n-1),100);return()=>{clearTimeout(i),r()}}let i=e.map(e=>r.docks.getStateById(CG+e)?.events.on(`entry:activated`,()=>t(e))??(()=>{})),a=r.docks.selectedId,o=e.find(e=>CG+e===a);return o&&t(o),()=>i.forEach(e=>e())}async function EG(e){let t=wG();if(!t)return!1;try{return await t.docks.switchEntry(CG+e)}catch{return!1}}var DG=`pangular-tab`;function OG(e,t,n){let r=new URLSearchParams(e.replace(/^#/,``)).get(`tab`)||t;return n.find(e=>e===r)}function kG(e){try{return sessionStorage.getItem(`${DG}:${e}`)}catch{return null}}function AG(e,t){try{sessionStorage.setItem(`${DG}:${e}`,t)}catch{}}function jG(e,t){try{return new URL(e,t.href).origin===t.origin}catch{return!1}}function MG(e,t){if(t.protocol!==`chrome-extension:`)return!1;try{let{protocol:t}=new URL(e);return t===`http:`||t===`https:`}catch{return!1}}function NG(e=location){let t=new URLSearchParams(e.search).get(`baseURL`);if(t&&(jG(t,e)||MG(t,e)))return t;if(!(e.pathname.includes(`__pangular`)||e.pathname.includes(`__devframes/`)))return[`/__pangular/`,`./`]}var PG=[`nav`],FG=[`main`],IG=e=>[e],LG=(e,t)=>t.id;function RG(e,t){e&1&&(A(),z(0,`svg`,4),V(1,`path`,20),B())}function zG(e,t){e&1&&(A(),z(0,`svg`,4),V(1,`path`,21)(2,`path`,22)(3,`path`,23)(4,`path`,24)(5,`path`,25)(6,`path`,26),B())}function BG(e,t){e&1&&(A(),z(0,`svg`,5)(1,`defs`)(2,`linearGradient`,27),V(3,`stop`,28)(4,`stop`,29),B()(),V(5,`path`,30),z(6,`g`,31),V(7,`path`,32)(8,`path`,33)(9,`path`,34)(10,`path`,35),B()())}function VG(e,t){e&1&&(A(),z(0,`svg`,6),V(1,`path`,36)(2,`path`,37)(3,`path`,38)(4,`path`,39),B())}function HG(e,t){e&1&&(A(),z(0,`svg`,7),V(1,`path`,40),B())}function UG(e,t){e&1&&(A(),z(0,`svg`,8)(1,`defs`)(2,`linearGradient`,41),V(3,`stop`,42)(4,`stop`,43)(5,`stop`,44)(6,`stop`,45)(7,`stop`,46)(8,`stop`,47),B()(),V(9,`path`,48),B())}function WG(e,t){e&1&&(A(),z(0,`svg`,9),V(1,`rect`,49),z(2,`g`,50)(3,`defs`)(4,`mask`,51),V(5,`rect`,52),z(6,`g`,53),V(7,`path`,54)(8,`path`,55),B()(),z(9,`clipPath`,56),V(10,`rect`,57),B()(),z(11,`g`,58),V(12,`ellipse`,59),B(),z(13,`g`,60),V(14,`path`,61)(15,`path`,62),B(),z(16,`g`,58),V(17,`ellipse`,63)(18,`ellipse`,64),z(19,`g`,65),V(20,`line`,66)(21,`circle`,67)(22,`line`,68)(23,`circle`,69),B()()()())}function GG(e,t){if(e&1){let e=W();z(0,`button`,71),G(`click`,function(){let t=O(e).$implicit;return k(K(2).switchTab(t.id))}),V(1,`app-tab-icon`,72),z(2,`span`),J(3),B()()}if(e&2){let e=t.$implicit,n=K(2);q(`active`,n.tab()===e.id),N(`aria-current`,n.tab()===e.id?`page`:null),M(),R(`name`,e.id),M(2),Y(e.label)}}function KG(e,t){e&1&&I(0,GG,4,5,`button`,70,LG),e&2&&L(K().tabs())}function qG(e,t){e&1&&(z(0,`p`,16),J(1,` Can't reach the devtools server. Check that the dev server is running, then reload. `),B())}function JG(e,t){e&1&&V(0,`app-coming-soon`,17),e&2&&R(`info`,t)}function YG(e,t){e&1&&(z(0,`p`,18),J(1,`Looking for an Angular Native app…`),B())}function XG(e,t){e&1&&(z(0,`p`,19),J(1,` This inspector is turned off in the devtools config (`),z(2,`code`),J(3,`inspectors`),B(),J(4,`). `),B())}function ZG(e,t){if(e&1){let e=W();z(0,`app-dashboard`,75),G(`navigate`,function(t){return O(e),k(K(3).switchTab(t))}),B()}e&2&&R(`rpc`,K(3).rpc())}function QG(e,t){if(e&1){let e=W();z(0,`app-component-tree`,76),G(`focusHandled`,function(){return O(e),k(K(3).componentFocus.set(null))})(`showForm`,function(t){return O(e),k(K(3).showForm(t))}),B()}if(e&2){let e=K(3);R(`rpc`,e.rpc())(`focus`,e.componentFocus())}}function $G(e,t){if(e&1){let e=W();z(0,`app-route-inspector`,77),G(`showComponent`,function(t){return O(e),k(K(3).showComponent(t))}),B()}e&2&&R(`rpc`,K(3).rpc())}function eK(e,t){e&1&&V(0,`app-signal-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function tK(e,t){e&1&&V(0,`app-di-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function nK(e,t){e&1&&V(0,`app-store-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function rK(e,t){e&1&&V(0,`app-network-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function iK(e,t){if(e&1){let e=W();z(0,`app-forms-inspector`,78),G(`focusHandled`,function(){return O(e),k(K(3).formFocus.set(null))}),B()}if(e&2){let e=K(3);R(`rpc`,e.rpc())(`focus`,e.formFocus())}}function aK(e,t){e&1&&V(0,`app-pipes-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function oK(e,t){e&1&&V(0,`app-analog-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function sK(e,t){if(e&1&&P(0,ZG,1,1,`app-dashboard`,73)(1,QG,1,2,`app-component-tree`,74)(2,$G,1,1,`app-route-inspector`,73)(3,eK,1,1,`app-signal-inspector`,73)(4,tK,1,1,`app-di-inspector`,73)(5,nK,1,1,`app-store-inspector`,73)(6,rK,1,1,`app-network-inspector`,73)(7,iK,1,2,`app-forms-inspector`,74)(8,aK,1,1,`app-pipes-inspector`,73)(9,oK,1,1,`app-analog-inspector`,73),e&2){let e;F((e=K(2).tab())===`dashboard`?0:e===`components`?1:e===`routes`?2:e===`signals`?3:e===`injectors`?4:e===`store`?5:e===`network`?6:e===`forms`?7:e===`pipes`?8:e===`analog`?9:-1)}}function cK(e,t){e&1&&I(0,sK,10,1,null,null,wg),e&2&&L(sv(0,IG,K().scopeKey()))}var lK=[`angular`,`ngrx`,`analog`,`angular-native`,`nativescript`,`capacitor`],uK={angular:`Angular`,ngrx:`NgRx Store`,analog:`Analog`,"angular-native":`Angular Native`,nativescript:`NativeScript`,capacitor:`Capacitor`},dK={ngrx:`#d770e8`,analog:`#ff5470`,"angular-native":`#ff4d6d`,nativescript:`#8196ff`,capacitor:`#53b9ff`},fK={ngrx:`#a21caf`,analog:`#be123c`,"angular-native":`#be123c`,nativescript:`#3448c5`,capacitor:`#0369a1`},pK={ngrx:`store`,analog:`analog`},mK={store:`ngrx`,analog:`analog`},hK={"angular-native":[`components`,`signals`,`injectors`,`store`,`pipes`]},gK={capacitor:{id:`capacitor`,name:`Capacitor`,badge:`Coming Soon`,heading:`Capacitor Support`,summary:`Connect Ionic and Capacitor apps running in a device WebView back to these tools.`,color:`#119eff`,plans:[`Manual overlay start for apps that load from capacitor:// or a device`,`Connection settings passed in, no cross-origin probing`,`Setup guides for the Android emulator and iOS simulator`],pr:21,author:{name:`Erkam Yaman`,login:`erkamyaman`}}},_K={id:`nativescript`,name:`NativeScript`,badge:`Available`,heading:`Inspect NativeScript apps`,summary:`A NativeScript Angular app reports from the simulator or device to this server, and its components, signals, injectors and NgRx stores show up in the Angular dock.`,color:`#3c5afd`,plansTitle:`Set up an app`,plans:[`Install @pangular-inspector/devtools and @valor/nativescript-websockets`,`Call initNativeScriptOverlay() in main.ts, before the app bootstraps`,`Run npx pangular dev --no-auth in the app, then open the Angular dock`],link:{label:`NativeScript setup guide`,href:`https://pangular-inspector.dev/guides/nativescript/`}},vK={id:`analog`,name:`Analog`,badge:`Not in this app`,heading:`This app doesn’t use Analog`,summary:`In an Analog app this dock shows your file routes, server load() and API calls, render modes and route lint.`,color:`#dd0330`,plans:[`Which page, layout and .server.ts files render a URL`,`Every load(), server function and API call with timing`,`SSR, prerendered or client only, per page`],link:{label:`Get started with Analog`,href:`https://analogjs.org/docs/getting-started`}},yK={id:`angular-native`,name:`Angular Native`,badge:`Not connected`,heading:`No Angular Native app is connected`,summary:`Start the overlay in your Angular Native app and run this server with --no-auth. The tabs fill as soon as the app reports.`,color:`#e11d48`,plans:[`The component tree, with the view outlined on the device`,`Signals and injectors of the running app`,`Live @ngrx/signals and @ngrx/store state`],link:{label:`Set up Angular Native`,href:`https://pangular-inspector.dev/guides/angular-native/`}};function bK(){let e=new URLSearchParams(location.search).get(`view`);return lK.find(t=>t===e)??null}Ub(class e{analog=j(!1);allTabs=[{id:`dashboard`,label:`Dashboard`},{id:`analog`,label:`Analog`},{id:`components`,label:`Components`},{id:`routes`,label:`Routes`},{id:`signals`,label:`Signals`},{id:`injectors`,label:`Injectors`},{id:`store`,label:`Store`},{id:`forms`,label:`Forms`},{id:`pipes`,label:`Pipes`},{id:`network`,label:`SSR & HTTP`}];view=j(bK());viewAccent=Q(()=>{let e=this.view(),t=this.themeService.current()===`light`?fK:dK;return(e&&t[e])??null});title=Q(()=>{let e=this.view();return e?uK[e]:`Pangular Inspector`});mainLabel=Q(()=>this.availableTabs().find(e=>e.id===this.tab())?.label??this.title());analogKnown=j(!1);nativePageId=j(null);nativeKnown=j(!1);scopeKey=Q(()=>this.view()===`angular-native`?this.nativePageId()??``:``);comingSoon=Q(()=>{let e=this.view();return e===`analog`?this.analogKnown()&&!this.analog()?vK:void 0:e===`nativescript`?_K:e===`angular-native`?this.nativeKnown()&&!this.nativePageId()?yK:void 0:e?gK[e]:void 0});config=Q(()=>yE(this.rpc()));tabEnabled=SE;availableTabs=Q(()=>{if(this.comingSoon())return[];let e=this.view(),t=e?pK[e]:void 0,n=this.allTabs.filter(e=>SE(e.id,this.config()));if(t)return n.filter(e=>e.id===t);let r=e?hK[e]:void 0;return r?n.filter(e=>r.includes(e.id)):n.filter(t=>(t.id!==`analog`||this.analog())&&!(e===`angular`&&mK[t.id]))});tabs=Q(()=>{let e=this.availableTabs();if(this.rpc())return e;let t=this.tab();return e.filter(e=>e.id===`dashboard`||e.id===t)});tab=Tv(()=>{let e=this.view();return e&&(pK[e]??hK[e]?.[0])||`dashboard`});rpc=j(null);connected=j(!1);connectionFailed=j(!1);hiddenPages=j([]);pageId=eE();backgroundNote=Q(()=>{let e=this.hiddenPages();return this.pageId?e.includes(this.pageId)?`Tab in background, showing the last data.`:``:e.length?e.length===1?`A tab is in the background, showing its last data.`:`${e.length} tabs are in the background, showing their last data.`:``});stopVisibility=()=>{};stopNative=()=>{};stopFollowing=()=>{};stopHighlights=()=>{};nav=Rv(`nav`);main=Rv(`main`);injector=E(xs);themeService=E(vG);navObserver;navFade=j({start:!1,end:!1});constructor(){Id(()=>{let e=this.nav()?.nativeElement;e&&typeof ResizeObserver<`u`&&(this.navObserver=new ResizeObserver(()=>this.measureNav()),this.navObserver.observe(e))}),ey(()=>{this.tab(),this.tabs(),Cv(()=>{this.revealActiveTab(),this.measureNav()})}),uc(()=>{let e=this.themeService.current();Cv(()=>{try{window.parent!==window&&_G(window.parent.document,e)}catch{}})})}measureNav(){let e=this.nav()?.nativeElement;if(!e)return;let t=e.scrollWidth-e.clientWidth,n=e.scrollLeft>1,r=t>1&&e.scrollLeftn?e.scrollLeft=Math.max(0,n):e.scrollLeftthis.showView(e)));let e=OG(location.hash,kG(this.tabScope()),this.availableTabs().map(e=>e.id));e?this.tab.set(e):!this.view()&&OG(location.hash,kG(this.tabScope()),[`analog`])===`analog`&&(this.restoreAnalog=!0),this.stopHighlights=sE(()=>this.rpc());let t=NG();kT(t?{baseURL:t}:{}).then(e=>{this.rpc.set(e),this.connected.set(!0),this.watchVisibility(e),this.watchAngularNative(e),e.scope(`pangular`).rpc.call(`analog-project`).then(e=>{let t=!!e?.analog;this.analog.set(t),this.analogKnown.set(!0),t&&this.restoreAnalog&&SE(`analog`,this.config())&&this.tab.set(`analog`),this.restoreAnalog=!1,!t&&this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)},()=>{this.analogKnown.set(!0),this.restoreAnalog=!1,this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)}),e.events.on(`connection:status`,e=>{this.connected.set(e===`connected`)})},()=>{this.connectionFailed.set(!0),this.analogKnown.set(!0),this.nativeKnown.set(!0)})}ngOnDestroy(){this.stopNative(),this.stopFollowing(),this.stopVisibility(),this.stopHighlights(),this.navObserver?.disconnect()}showView(e){if(e===this.view())return;$T(e===`angular-native`?this.nativePageId():null),this.view.set(e);let t=new URL(location.href);t.searchParams.set(`view`,e),t.hash=``,history.replaceState(history.state,``,t)}formFocus=j(null);componentFocus=Tv({source:this.tab,computation:()=>null});showForm(e){this.formFocus.set({id:e}),this.switchTab(`forms`)}showComponent(e){this.config().inspectors.components&&(this.switchTab(`components`),this.componentFocus.set(e))}inspectFromPanel({source:e,origin:t,data:n}){if(e!==window.parent||t!==location.origin)return;let r=n;r?.type===`pangular:inspect-component`&&typeof r.id==`string`&&this.tab()===`components`&&this.config().inspectors.components&&this.componentFocus.set({id:r.id})}switchTab(e){let t=mK[e];if(this.view()===`angular`&&t){this.activateDock(t,e);return}this.setTab(e),history.replaceState(history.state,``,`#tab=${e}`)}restoreAnalog=!1;setTab(e){this.restoreAnalog=!1,this.keepFocus(),this.tab.set(e),AG(this.tabScope(),e)}tabScope(){return this.view()??`panel`}async watchAngularNative(e){try{let t=await e.scope(`pangular`).rpc.sharedState(`component-tree`),n=e=>{let t=e?.pages,n=bD(t,this.nativePageId());this.view()===`angular-native`&&$T(n),this.nativePageId.set(n),this.nativeKnown.set(!0)};n(t.value()),this.stopNative(),this.stopNative=t.on(`updated`,n)}catch{this.nativeKnown.set(!0)}}async watchVisibility(e){try{let t=await e.scope(`pangular`).rpc.sharedState(`page-visibility`),n=e=>{let t=e?.hidden;this.hiddenPages.set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])};n(t.value()),this.stopVisibility(),this.stopVisibility=t.on(`updated`,n)}catch{}}keepFocus(){let e=document.activeElement,t=this.main()?.nativeElement;(!e||e===document.body||t?.contains(e))&&Id(()=>{let e=document.activeElement;e&&e!==document.body||(this.nav()?.nativeElement.querySelector(`button.active`)??this.main()?.nativeElement)?.focus()},{injector:this.injector})}async activateDock(e,t){if(await EG(e))return;if(window.parent===window){this.keepFocus(),this.showView(e);return}let n=this.rpc();if(!n?.call){this.setTab(t);return}try{await n.call(`hub:docks:activate`,{dockId:`pangular:${e}`}),this.keepFocus(),this.showView(e)}catch{this.setTab(t)}}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-root`]],viewQuery:function(e,t){e&1&&e_(t.nav,PG,5)(t.main,FG,5),e&2&&t_(2)},hostVars:2,hostBindings:function(e,t){e&1&&G(`message`,function(e){return t.inspectFromPanel(e)},ju),e&2&&C_(`--%NS%accent`,t.viewAccent())},decls:28,vars:21,consts:[[`nav`,``],[`main`,``],[1,`brand`],[1,`mark`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 256 256`,`aria-hidden`,`true`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 32 32`,`aria-hidden`,`true`],[`width`,`24`,`height`,`17`,`viewBox`,`0 0 256 182`,`aria-hidden`,`true`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 24 24`,`fill`,`currentColor`,`aria-hidden`,`true`],[`width`,`20`,`height`,`22`,`viewBox`,`0 0 223 236`,`aria-hidden`,`true`],[`width`,`30`,`height`,`30`,`viewBox`,`0 0 500 500`,`aria-hidden`,`true`],[1,`title`],[`aria-label`,`Inspectors`,3,`scroll`],[`role`,`status`,1,`status`],[`aria-hidden`,`true`,1,`dot`],[`tabindex`,`-1`],[`role`,`status`,1,`background-note`],[`role`,`alert`,1,`connection-error`],[3,`info`],[`role`,`status`,1,`turned-off`],[1,`turned-off`],[`fill`,`#3c5afd`,`d`,`M237.248 18.752q18.061 18.06 18.748 45.247V192c-.457 18.12-6.707 33.207-18.748 45.247c-12.04 12.04-27.127 18.291-45.251 18.752H63.999q-27.187-.69-45.247-18.752C6.712 225.208.46 210.121 0 192.001V64q.69-27.187 18.752-45.247Q36.812.692 63.999 0h127.998c18.124.46 33.211 6.711 45.251 18.752m-17.655 103q-6.033-6.003-6.28-15.066V64q-.192-9.063-6.221-15.091c-4.02-4.023-9.054-6.093-15.095-6.22h-21.312v106.626L85.315 42.687H63.999c-6.042.128-11.072 2.198-15.091 6.221c-4.023 4.02-6.093 9.05-6.22 15.09v42.688q-.249 9.063-6.281 15.066q-6.03 5.996-15.091 6.246q9.062.255 15.09 6.25c4.024 4.002 6.115 9.024 6.281 15.066V192c.128 6.037 2.198 11.072 6.221 15.091q6.03 6.03 15.09 6.22h21.317V106.687l85.37 106.627h21.312c6.041-.128 11.076-2.202 15.095-6.221s6.093-9.054 6.22-15.09v-42.688q.249-9.063 6.281-15.066q6.03-5.995 15.091-6.25q-9.062-.25-15.09-6.246`],[`fill`,`#53b9ff`,`d`,`M39.863 54.115L.311 93.716l60.995 61.179L0 216.385l39.428 39.619l61.43-61.507l61.097 61.068l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m140.517 154.896l-39.658 39.601l61.097 61.069l39.552-39.602z`],[`fill-opacity`,`.2`,`d`,`m140.517 154.896l-39.658 39.601l15.267 15.182z`],[`fill`,`#53b9ff`,`d`,`M194.57 100.985L256 39.478L216.431 0l-61.412 61.384L93.917.311L54.365 39.913L216.01 201.761l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m115.36 100.987l39.659-39.602L93.917.313L54.365 39.914z`],[`fill-opacity`,`.2`,`d`,`m115.359 100.985l39.659-39.601l-15.271-15.186z`],[`id`,`an-mark-grad`,`x1`,`0`,`y1`,`0`,`x2`,`1`,`y2`,`1`],[`offset`,`0`,`stop-color`,`#f0224f`],[`offset`,`1`,`stop-color`,`#c4002d`],[`d`,`M16 0C27.2 0 32 4.8 32 16S27.2 32 16 32 0 27.2 0 16 4.8 0 16 0Z`,`fill`,`url(#an-mark-grad)`],[`transform`,`translate(6.4 6.4) scale(0.8)`,`fill`,`#fff`],[`d`,`M14.8486 0L23.138 16.8551L23.9996 3.99892L14.8486 0Z`],[`d`,`M16.9875 17.7114H7.01272L5.73926 20.627L12.0001 24L18.261 20.627L16.9875 17.7114Z`],[`d`,`M8.72168 13.9298H15.2812L11.9997 6.39575L8.72168 13.9298Z`],[`d`,`M9.15103 0L0 3.99892L0.861556 16.8551L9.15103 0Z`],[`fill`,`#c30f2e`,`d`,`M152.228.001L48.455 181.046H256L152.228 0z`],[`fill`,`#dd0330`,`d`,`M88.314 26.967L0 181.52h176.628L88.315 26.967z`],[`fill`,`#fff`,`d`,`M18.167 135.294h220.236v-2.419H18.167z`],[`fill`,`#fff`,`d`,`M204.38 170.667c-.861 0-1.67-.358-2.348-1.034c-4.045-4.063-4.221-20.586-4.026-45.33c.11-13.521.257-32.043-1.9-33.504c-2.104.873-2.315 16.172-2.451 26.301c-.162 11.785-.327 23.98-2.242 30.189c-.57 1.84-1.306 3.525-2.786 3.39c-2.086-.185-2.76-3.48-4.317-16.478c-.647-5.4-1.317-10.98-2.101-13.14a11 11 0 0 0-.269-.66c-.835 1.889-1.8 7.079-2.47 10.682c-.927 4.976-1.803 9.676-2.9 11.726c-.847 1.575-2.19 3.63-4.067 3.231c-2.558-.537-3.323-5.693-3.552-8.719c0-25.455-3.33-28.417-3.997-28.753l-.107.081l-.162-.036c-2.377 1.038-2.506 9.294-2.627 17.276c-.096 5.856-.198 12.492-1.053 18.701c-1.108 8.05-2.448 9.603-4.115 9.507c-3.838-.262-3.95-13.482-3.95-14.987c0-.472.012-1.028.027-1.642c.074-3.076.205-8.8-1.687-10.604c-.25-.239-.603-.515-.879-.437c-1.347.339-2.745 4.714-3.209 6.153c-.147.457-.265.833-.364 1.09c-.078.214-.177.515-.294.88c-1.02 3.095-2.18 6.183-4.16 6.944c-.732.284-1.498.222-2.216-.183c-.953-.541-1.73-1.646-2.455-3.482c-.397-1.016-.735-2.046-1.082-3.081c-.419-1.263-.85-2.569-1.384-3.808c-.419-.965-1.464-1.4-2.796-1.164c-2.768.494-3.232 3.29-3.622 7.5c-.07.733-.137 1.452-.228 2.128c-.011.198-.501 6.38-.814 8.344c-.865 5.39-2.002 7.512-3.89 7.358c-4.66-.398-6.798-20.836-6.684-29.47c.088-6.592-1.104-9-1.818-9.382c-.074-.034-.189-.096-.46.095c-.843.571-1.594 2.348-1.363 4.215c2.566 20.32.674 43.592-3.96 48.833c-1.46 1.649-3.448 1.627-4.832.236c-4.049-4.064-4.218-20.586-4.026-45.33c.11-13.521.254-32.043-1.9-33.504c-2.105.873-2.311 16.172-2.45 26.301c-.163 11.785-.329 23.98-2.246 30.189c-.57 1.84-1.307 3.525-2.782 3.39c-2.091-.186-2.761-3.48-4.321-16.478c-.649-5.4-1.319-10.98-2.101-13.14c-.1-.273-.189-.49-.27-.66c-.832 1.889-1.796 7.079-2.466 10.682c-.927 4.976-1.803 9.676-2.904 11.726c-.846 1.575-2.19 3.63-4.063 3.231c-2.558-.537-3.324-5.693-3.552-8.719c-.003-25.455-3.33-28.417-3.997-28.753l-.106.081l-.166-.036c-2.374 1.038-2.503 9.293-2.629 17.276c-.091 5.856-.194 12.492-1.048 18.701c-1.107 8.05-2.437 9.618-4.111 9.507c-3.846-.262-3.958-13.482-3.958-14.987c0-.472.016-1.028.03-1.642c.074-3.076.207-8.8-1.685-10.604c-.25-.239-.603-.515-.88-.438c-1.347.34-2.75 4.715-3.206 6.155a47 47 0 0 1-.364 1.09q-.16.432-.298.875c-1.02 3.096-2.18 6.187-4.155 6.95c-.736.282-1.506.22-2.22-.185c-.953-.541-1.734-1.646-2.454-3.482c-.398-1.016-.74-2.046-1.083-3.081c-.42-1.263-.854-2.569-1.387-3.808c-.416-.965-1.465-1.4-2.797-1.164c-3.188.567-3.943 4.52-4.55 9.238l-.106.839l-2.411-.32l.114-.824c.527-4.137 1.328-10.39 6.53-11.31c2.446-.435 4.585.581 5.446 2.583c.578 1.34 1.031 2.695 1.466 4.008c.324.99.654 1.98 1.037 2.959c.674 1.708 1.197 2.15 1.392 2.257c1.218-.38 2.462-4.167 2.873-5.414c.13-.402.24-.732.328-.968c.085-.233.195-.571.328-.98c1.097-3.43 2.474-7.144 4.918-7.762c.747-.191 1.903-.166 3.157 1.035c2.665 2.544 2.525 8.48 2.433 12.41c-.014.59-.028 1.126-.028 1.583c0 6.272.93 10.655 1.64 12.16c.367-.77.998-2.63 1.598-7.007c.831-6.066.938-12.624 1.027-18.41c.161-10.24.275-17.663 3.982-19.408c.552-.339 1.469-.522 2.436-.033c3.586 1.803 5.326 11.885 5.326 30.817c.225 2.926 1.013 6.006 1.66 6.448c.004-.066.53-.39 1.394-2.01c.925-1.718 1.845-6.665 2.655-11.026c1.792-9.614 2.606-12.989 4.726-13.166c1.615-.158 2.362 1.896 2.676 2.76c.883 2.422 1.537 7.888 2.23 13.678c.54 4.49 1.31 10.902 2.094 13.497c.084-.228.18-.5.283-.836c1.815-5.878 1.98-17.887 2.14-29.507c.22-16.14.503-26.139 3.448-28.226a2.44 2.44 0 0 1 2.233-.316c3.448 1.144 3.714 11.254 3.519 35.8c-.14 17.799-.313 39.952 3.323 43.603c.317.32.542.32.622.32c.17 0 .413-.161.67-.452c3.681-4.162 6.01-26.022 3.372-46.927c-.328-2.602.677-5.337 2.392-6.514c.946-.652 2.036-.736 2.978-.232c2.145 1.14 3.187 5.024 3.102 11.546c-.15 11.387 2.584 24.714 4.37 26.842c.282-.471.842-1.763 1.379-5.145c.301-1.87.799-8.153.806-8.216c.09-.71.155-1.398.217-2.097c.369-3.924.82-8.804 5.613-9.654c2.444-.435 4.583.577 5.448 2.583c.577 1.34 1.027 2.695 1.46 4.008c.332.99.664 1.98 1.046 2.959c.67 1.708 1.197 2.15 1.387 2.257c1.218-.38 2.467-4.167 2.875-5.41c.132-.402.243-.737.328-.973c.088-.228.195-.57.324-.979c1.1-3.43 2.477-7.144 4.924-7.762c.74-.191 1.9-.166 3.154 1.035c2.665 2.543 2.526 8.48 2.437 12.41q-.029.792-.033 1.583c0 6.272.931 10.655 1.641 12.16c.365-.77.994-2.63 1.601-7.007c.832-6.066.931-12.624 1.027-18.41c.159-10.24.273-17.663 3.98-19.408c.55-.339 1.467-.522 2.44-.033c3.58 1.803 5.325 11.884 5.325 30.817c.224 2.926 1.012 6.006 1.656 6.448c.008-.066.526-.39 1.399-2.01c.923-1.718 1.84-6.665 2.653-11.026c1.786-9.614 2.602-12.989 4.722-13.166c1.62-.158 2.367 1.896 2.68 2.76c.88 2.422 1.535 7.888 2.233 13.678c.534 4.49 1.304 10.902 2.092 13.497c.08-.228.176-.5.28-.836c1.813-5.878 1.976-17.887 2.138-29.507c.216-16.14.504-26.139 3.448-28.226a2.45 2.45 0 0 1 2.234-.316c3.452 1.144 3.718 11.254 3.52 35.8c-.141 17.799-.314 39.952 3.319 43.603c.324.32.544.32.63.32c.165 0 .408-.161.662-.452c3.687-4.162 6.014-26.022 3.375-46.927c-.342-2.723.43-5.47 1.84-6.526c.71-.537 1.575-.647 2.37-.313c2.054.877 3.445 4.63 4.255 11.484c.339 2.87.641 5.974.931 9.036c.641 6.683 1.509 15.69 2.684 17.67c.36-.46 1.096-1.704 2.19-5.038l2.307.753c-1.696 5.157-3.026 7.1-4.755 6.902c-2.69-.299-3.468-5.734-4.84-20.055c-.29-3.048-.59-6.132-.928-8.989c-1.03-8.74-2.782-9.532-2.801-9.54c-.342.174-1.137 1.992-.842 4.31c2.558 20.32.673 43.597-3.964 48.834c-.747.842-1.587 1.27-2.485 1.27`],[`d`,`M12.024.017V0L12 .008L11.976 0v.017L.812 3.892l1.605 14.875l9.559 5.207V24l.024-.013l.024.013v-.026l9.559-5.207l1.605-14.875zm6.868 14.244q-1.64 3.948-6.031 4.166c-2.829 0-4.661-1.7-4.66-1.7q-1.745-1.359-2.398-3.417c-.695-.76-.702-.841-.774-1.145c-.072-.303.045-.388.249-.685q.204-.298.098-.85q-.26-.36-.3-1.128q0-.37.496-.783q.495-.413.607-.632q.083-.119.065-1.031q-.006-.897.995-.975c1-.08 1.565-.832 1.879-1.174c.21-.228.52-.339.91-.341c.551-.026 1.052.185 1.484.62c1.075-.055 2.176.235 3.292.863q2.379 1.414 2.596 3.055q-.257 2.158-5.788-.113q-2.895.819-2.846 3.552q0 2.508 2.422 3.643c-.787-.772-1.122-1.422-1.01-1.959q2.456 2.906 5.588 2.173c-.92.032-1.65-.264-2.198-.893q2.116-.05 3.998-1.972c-.724.576-1.482.794-2.284.657q3.26-2.563 2.307-5.98l-.002-.006a3.02 3.02 0 0 1 .788 2.03q.023 1.175-.795 2.477q.613-.478 1.413-2.047c.23 2.117-.625 3.724-2.574 4.825q.934-.085 2.473-1.23m-5.567-6.63a.319.319 0 1 1 .638 0a.319.319 0 0 1-.638 0`],[`id`,`ng-grad`,`x1`,`49`,`x2`,`226`,`y1`,`214`,`y2`,`130`,`gradientUnits`,`userSpaceOnUse`],[`stop-color`,`#E40035`],[`offset`,`.24`,`stop-color`,`#F60A48`],[`offset`,`.352`,`stop-color`,`#F20755`],[`offset`,`.494`,`stop-color`,`#DC087D`],[`offset`,`.745`,`stop-color`,`#9717E7`],[`offset`,`1`,`stop-color`,`#6C00F5`],[`fill`,`url(#ng-grad)`,`d`,`m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z`],[`width`,`500`,`height`,`500`,`rx`,`112`,`fill`,`#1c1a17`],[`transform`,`translate(250 252) scale(1.38) translate(-120 -129)`],[`id`,`pi-mark-mask`],[`x`,`-60`,`y`,`-60`,`width`,`360`,`height`,`380`,`fill`,`#fff`],[`fill`,`none`,`stroke`,`#000`,`stroke-width`,`30`,`stroke-linejoin`,`miter`],[`d`,`M88 66 V196`],[`d`,`M88 66 H143 L170 98 L143 130 H88 Z`],[`id`,`pi-mark-clip`],[`x`,`-40`,`y`,`129`,`width`,`320`,`height`,`200`],[`transform`,`rotate(-10 120 129)`],[`cx`,`120`,`cy`,`129`,`rx`,`128`,`ry`,`34`,`fill`,`none`,`stroke`,`#78350f`,`stroke-width`,`10`],[`mask`,`url(#pi-mark-mask)`],[`fill`,`#fbbf24`,`d`,`M120 5 L2 46 L22 198 L120 253 Z`],[`fill`,`#f59e0b`,`d`,`M120 5 L238 46 L218 198 L120 253 Z`],[`clip-path`,`url(#pi-mark-clip)`,`cx`,`120`,`cy`,`129`,`rx`,`128`,`ry`,`34`,`fill`,`none`,`stroke`,`#1c1a17`,`stroke-width`,`22`],[`clip-path`,`url(#pi-mark-clip)`,`cx`,`120`,`cy`,`129`,`rx`,`128`,`ry`,`34`,`fill`,`none`,`stroke`,`#fde68a`,`stroke-width`,`10`],[`transform`,`translate(230.9 146.0) rotate(10) scale(1.5) translate(-4 -4)`],[`x1`,`9`,`y1`,`9`,`x2`,`21`,`y2`,`21`,`stroke`,`#1c1a17`,`stroke-width`,`14`,`stroke-linecap`,`round`],[`r`,`16`,`fill`,`#1c1a17`],[`x1`,`9`,`y1`,`9`,`x2`,`21`,`y2`,`21`,`stroke`,`#fde68a`,`stroke-width`,`7`,`stroke-linecap`,`round`],[`r`,`12`,`fill`,`#1c1a17`,`stroke`,`#fde68a`,`stroke-width`,`5`],[`type`,`button`,3,`active`],[`type`,`button`,3,`click`],[3,`name`],[3,`rpc`],[3,`rpc`,`focus`],[3,`navigate`,`rpc`],[3,`focusHandled`,`showForm`,`rpc`,`focus`],[3,`showComponent`,`rpc`],[3,`focusHandled`,`rpc`,`focus`]],template:function(e,t){if(e&1&&(z(0,`header`)(1,`h1`,2)(2,`span`,3),P(3,RG,2,0,`:svg:svg`,4)(4,zG,7,0,`:svg:svg`,4)(5,BG,11,0,`:svg:svg`,5)(6,VG,5,0,`:svg:svg`,6)(7,HG,2,0,`:svg:svg`,7)(8,UG,10,0,`:svg:svg`,8)(9,WG,24,0,`:svg:svg`,9),B(),z(10,`span`,10),J(11),B()(),z(12,`nav`,11,0),G(`scroll`,function(){return t.measureNav()}),P(14,KG,2,0),B(),z(15,`span`,12)(16,`span`,13),V(17,`span`),B(),J(18),B()(),z(19,`main`,14,1)(21,`p`,15),J(22),B(),P(23,qG,2,0,`p`,16)(24,JG,1,1,`app-coming-soon`,17)(25,YG,2,0,`p`,18)(26,XG,5,0,`p`,19)(27,cK,2,2),B()),e&2){let e;M(2),q(`ng-mark`,t.view()===`angular`)(`pi-mark`,!t.view()),M(),F(t.view()===`nativescript`?3:t.view()===`capacitor`?4:t.view()===`angular-native`?5:t.view()===`analog`?6:t.view()===`ngrx`?7:t.view()===`angular`?8:9),M(7),q(`ng-text`,t.view()===`angular`),M(),Y(t.title()),M(),q(`fade-start`,t.navFade().start)(`fade-end`,t.navFade().end),M(2),F(t.availableTabs().length>1?14:-1),M(),q(`connected`,t.connected())(`failed`,t.connectionFailed()),M(3),X(` `,t.connected()?`Live`:t.connectionFailed()?`Disconnected`:`Connecting…`,` `),M(),N(`aria-label`,t.mainLabel()),M(3),Y(t.backgroundNote()),M(),F(t.connectionFailed()?23:(e=t.comingSoon())?24:t.view()===`angular-native`&&!t.nativePageId()?25:t.tabEnabled(t.tab(),t.config())?27:26,e)}},dependencies:[fD,Ak,iN,_P,kF,LL,eB,tV,lU,oG,mG,NE],styles:[`[_nghost-%COMP%] { --%NS%accent-soft: color-mix(in srgb, var(--%NS%accent) 12%, transparent); --%NS%accent-line: color-mix(in srgb, var(--%NS%accent) 45%, transparent); display: flex; diff --git a/extension/ui/index.html b/extension/ui/index.html index eccbaf0e..7d803549 100644 --- a/extension/ui/index.html +++ b/extension/ui/index.html @@ -9,7 +9,7 @@ Pangular Inspector - + From 3f2c202753b79ac2d202a72ad29a4dc3ae9dcc0d Mon Sep 17 00:00:00 2001 From: erKam Date: Sun, 11 Oct 2026 05:35:09 +0000 Subject: [PATCH 2/2] build(extension): rebuild the panel bundle The merge with main changed the panel, so the committed bundle is rebuilt to match. --- .../browser-agent-rpc-BXhoSh1z-CSxlKyzP.js | 1 + extension/ui/assets/index-7mfkZAtT.css | 1 + extension/ui/assets/index-cXWBDTJ3.js | 13421 ++++++++++++++++ extension/ui/favicon.svg | 9 + extension/ui/index.html | 18 + extension/ui/theme-init.js | 10 + 6 files changed, 13460 insertions(+) create mode 100644 extension/ui/assets/browser-agent-rpc-BXhoSh1z-CSxlKyzP.js create mode 100644 extension/ui/assets/index-7mfkZAtT.css create mode 100644 extension/ui/assets/index-cXWBDTJ3.js create mode 100644 extension/ui/favicon.svg create mode 100644 extension/ui/index.html create mode 100644 extension/ui/theme-init.js diff --git a/extension/ui/assets/browser-agent-rpc-BXhoSh1z-CSxlKyzP.js b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-CSxlKyzP.js new file mode 100644 index 00000000..72ffde67 --- /dev/null +++ b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-CSxlKyzP.js @@ -0,0 +1 @@ +import{t as e}from"./index-cXWBDTJ3.js";var t=Symbol.for(`devframe:browser-agent-registry`),{tools:n,listeners:r}=globalThis[t]??={tools:new Map,listeners:new Set};function i(){return[...n.values()]}function a(e){return r.add(e),()=>r.delete(e)}var o=`devframe:client-id`,s;function c(t=globalThis.window){try{let n=t?.sessionStorage;if(n){let t=n.getItem(o);return t||(t=e(),n.setItem(o,t)),t}}catch{}return s??=e(),s}function l(e){e.client.register({name:`devframe:agent:invoke-client-tool`,type:`action`,jsonSerializable:!0,handler:async(e,t)=>{let n=i().find(t=>t.id===e);if(!n)throw Error(`[devframe/agent] browser tool "${e}" not found`);return await n.invoke(t)}});let t=!1,n=!1,r=0,o=()=>{t||n||(t=!0,queueMicrotask(async()=>{if(t=!1,n)return;let a=i().map(({invoke:e,...t})=>t);(a.length!==0||r!==0)&&(r=a.length,await e.callOptional(`devframe:agent:sync-client-tools`,c(),a).catch(()=>{}))}))},s=a(o),l=e.events.on(`connection:status`,e=>{e===`connected`&&o()});return o(),()=>{n=!0,s(),l()}}export{l as setupBrowserAgentRpcBridge}; \ No newline at end of file diff --git a/extension/ui/assets/index-7mfkZAtT.css b/extension/ui/assets/index-7mfkZAtT.css new file mode 100644 index 00000000..0d8f9251 --- /dev/null +++ b/extension/ui/assets/index-7mfkZAtT.css @@ -0,0 +1 @@ +:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0b0b0e;--surface:#131317;--surface-2:#1a1a20;--surface-3:#222229;--border:#25252c;--border-strong:#34343d;--text:#ececf1;--text-strong:#fafafa;--text-2:#a1a1aa;--text-3:#8e8e99;--accent:#f5a524;--accent-hover:#fbbf4d;--accent-ink:#1c1300;--accent-soft:color-mix(in srgb, var(--accent) 12%, transparent);--accent-line:color-mix(in srgb, var(--accent) 45%, transparent);--ok:#4ade80;--warn:#fbbf24;--danger:#f87171;--radius:14px;--radius-sm:9px;--control-h:34px;--header-h:45px;--shadow:0 10px 30px -16px #000c;--ease:cubic-bezier(.2, .8, .2, 1);--font-sans:system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, monospace}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--surface:#f7f7f9;--surface-2:#f0f0f3;--surface-3:#e8e8ec;--border:#e2e2e7;--border-strong:#c8c8d0;--text:#18181b;--text-strong:#0a0a0d;--text-2:#52525b;--text-3:#5f5f68;--accent:#92400e;--accent-hover:#a04510;--accent-ink:#fff;--ok:#166534;--warn:#92400e;--danger:#b91c1c;--shadow:0 2px 12px -4px #0000001f}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--surface:#f7f7f9;--surface-2:#f0f0f3;--surface-3:#e8e8ec;--border:#e2e2e7;--border-strong:#c8c8d0;--text:#18181b;--text-strong:#0a0a0d;--text-2:#52525b;--text-3:#5f5f68;--accent:#92400e;--accent-hover:#a04510;--accent-ink:#fff;--ok:#166534;--warn:#92400e;--danger:#b91c1c;--shadow:0 2px 12px -4px #0000001f}*,:before,:after{box-sizing:border-box;margin:0}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg)}body{min-width:320px;font-family:var(--font-sans);background:var(--bg);color:var(--text);font-feature-settings:"cv11", "ss01";font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}:where(button,input,select,textarea){font-family:inherit}:where(button){-webkit-tap-highlight-color:transparent}:where(button:disabled,[aria-disabled=true]){cursor:not-allowed}:where(:focus-visible){outline:2px solid var(--accent);outline-offset:2px}textarea{box-sizing:border-box;resize:vertical;field-sizing:content;width:100%;max-width:100%;min-height:5.5em;max-height:20em;line-height:1.5;display:block}select:not([multiple]){appearance:none;text-overflow:ellipsis;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238e8e99' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:14px;padding-right:36px}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) select:not([multiple]){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235f5f68' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")}}:root[data-theme=light] select:not([multiple]){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235f5f68' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")}::selection{background:color-mix(in srgb, var(--accent) 35%, transparent)}@keyframes enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}.sr-only,.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}} diff --git a/extension/ui/assets/index-cXWBDTJ3.js b/extension/ui/assets/index-cXWBDTJ3.js new file mode 100644 index 00000000..9888b8db --- /dev/null +++ b/extension/ui/assets/index-cXWBDTJ3.js @@ -0,0 +1,13421 @@ +(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Object.defineProperty,t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,i=(t,n,r)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r,a=(e,a)=>{for(var o in a||={})n.call(a,o)&&i(e,o,a[o]);if(t)for(var o of t(a))r.call(a,o)&&i(e,o,a[o]);return e},o=(e,t,n)=>(i(e,typeof t==`symbol`?t:t+``,n),n),s=globalThis;function c(e){let t=s.__Zone_symbol_prefix;return(typeof t==`string`?t:`__zone_symbol__`)+e}function l(){let e=s.performance;function t(t){e&&e.mark&&e.mark(t)}function n(t,n){e&&e.measure&&e.measure(t,n)}t(`Zone`);let r=class e{constructor(e,t){o(this,`_parent`),o(this,`_name`),o(this,`_properties`),o(this,`_zoneDelegate`),this._parent=e,this._name=t?t.name||`unnamed`:``,this._properties=t&&t.properties||{},this._zoneDelegate=new l(this,this._parent&&this._parent._zoneDelegate,t)}static assertZonePatched(){if(s.Promise!==fe.ZoneAwarePromise)throw Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let t=e.current;for(;t.parent;)t=t.parent;return t}static get current(){return me.zone}static get currentTask(){return he}static __load_patch(r,i,a=!1){if(Object.hasOwn(fe,r)){let e=s[c(`forceDuplicateZoneCheck`)]===!0;if(!a&&e)throw Error(`Already loaded patch: `+r)}else if(!s[`__Zone_disable_`+r]){let a=`Zone:`+r;t(a),fe[r]=i(s,e,pe),n(a,a)}}get parent(){return this._parent}get name(){return this._name}get(e){let t=this.getZoneWith(e);if(t)return t._properties[e]}getZoneWith(e){let t=this;for(;t;){if(Object.hasOwn(t._properties,e))return t;t=t._parent}return null}fork(e){if(!e)throw Error(`ZoneSpec required!`);return this._zoneDelegate.fork(this,e)}wrap(e,t){if(typeof e!=`function`)throw Error(`Expecting function got: `+e);let n=this._zoneDelegate.intercept(this,e,t),r=this;return function(){return r.runGuarded(n,this,arguments,t)}}run(e,t,n,r){me={parent:me,zone:this};try{return this._zoneDelegate.invoke(this,e,t,n,r)}finally{me=me.parent}}runGuarded(e,t=null,n,r){me={parent:me,zone:this};try{try{return this._zoneDelegate.invoke(this,e,t,n,r)}catch(e){if(this._zoneDelegate.handleError(this,e))throw e}}finally{me=me.parent}}runTask(e,t,n){if(e.zone!=this)throw Error(`A task can only be run in the zone of creation! (Creation: `+(e.zone||ne).name+`; Execution: `+this.name+`)`);let r=e,{type:i,data:{isPeriodic:a=!1,isRefreshable:o=!1}={}}=e;if(e.state===re&&(i===de||i===ue))return;let s=e.state!=oe;s&&r._transitionTo(oe,ae);let c=he;he=r,me={parent:me,zone:this};try{i==ue&&e.data&&!a&&!o&&(e.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,r,t,n)}catch(e){if(this._zoneDelegate.handleError(this,e))throw e}}finally{let t=e.state;if(t!==re&&t!==ce){if(i==de||a||o&&t===ie)s&&r._transitionTo(ae,oe,ie);else{let e=r._zoneDelegates;this._updateTaskCount(r,-1),s&&r._transitionTo(re,oe,re),o&&(r._zoneDelegates=e)}}me=me.parent,he=c}}scheduleTask(e){if(e.zone&&e.zone!==this){let t=this;for(;t;){if(t===e.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${e.zone.name}`);t=t.parent}}e._transitionTo(ie,re);let t=[];e._zoneDelegates=t,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(t){throw e._transitionTo(ce,ie,re),this._zoneDelegate.handleError(this,t),t}return e._zoneDelegates===t&&this._updateTaskCount(e,1),e.state==ie&&e._transitionTo(ae,ie),e}scheduleMicroTask(e,t,n,r){return this.scheduleTask(new u(le,e,t,n,r,void 0))}scheduleMacroTask(e,t,n,r,i){return this.scheduleTask(new u(ue,e,t,n,r,i))}scheduleEventTask(e,t,n,r,i){return this.scheduleTask(new u(de,e,t,n,r,i))}cancelTask(e){if(e.zone!=this)throw Error(`A task can only be cancelled in the zone of creation! (Creation: `+(e.zone||ne).name+`; Execution: `+this.name+`)`);if(e.state===ae||e.state===oe){e._transitionTo(se,ae,oe);try{this._zoneDelegate.cancelTask(this,e)}catch(t){throw e._transitionTo(ce,se),this._zoneDelegate.handleError(this,t),t}return this._updateTaskCount(e,-1),e._transitionTo(re,se),e.runCount=-1,e}}_updateTaskCount(e,t){let n=e._zoneDelegates;t==-1&&(e._zoneDelegates=null);for(let r=0;re.hasTask(n,r),onScheduleTask:(e,t,n,r)=>e.scheduleTask(n,r),onInvokeTask:(e,t,n,r,i,a)=>e.invokeTask(n,r,i,a),onCancelTask:(e,t,n,r)=>e.cancelTask(n,r)};class l{constructor(e,t,n){o(this,`_zone`),o(this,`_taskCounts`,{microTask:0,macroTask:0,eventTask:0}),o(this,`_forkDlgt`),o(this,`_forkZS`),o(this,`_forkCurrZone`),o(this,`_interceptDlgt`),o(this,`_interceptZS`),o(this,`_interceptCurrZone`),o(this,`_invokeDlgt`),o(this,`_invokeZS`),o(this,`_invokeCurrZone`),o(this,`_handleErrorDlgt`),o(this,`_handleErrorZS`),o(this,`_handleErrorCurrZone`),o(this,`_scheduleTaskDlgt`),o(this,`_scheduleTaskZS`),o(this,`_scheduleTaskCurrZone`),o(this,`_invokeTaskDlgt`),o(this,`_invokeTaskZS`),o(this,`_invokeTaskCurrZone`),o(this,`_cancelTaskDlgt`),o(this,`_cancelTaskZS`),o(this,`_cancelTaskCurrZone`),o(this,`_hasTaskDlgt`),o(this,`_hasTaskDlgtOwner`),o(this,`_hasTaskZS`),o(this,`_hasTaskCurrZone`),this._zone=e,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._forkCurrZone=n&&(n.onFork?this._zone:t._forkCurrZone),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this._zone:t._interceptCurrZone),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this._zone:t._invokeCurrZone),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this._zone:t._handleErrorCurrZone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this._zone:t._scheduleTaskCurrZone),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this._zone:t._invokeTaskCurrZone),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this._zone:t._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let r=n&&n.onHasTask,i=t&&t._hasTaskZS;(r||i)&&(this._hasTaskZS=r?n:a,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,n.onScheduleTask||(this._scheduleTaskZS=a,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this._zone),n.onInvokeTask||(this._invokeTaskZS=a,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this._zone),n.onCancelTask||(this._cancelTaskZS=a,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this._zone))}get zone(){return this._zone}fork(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new i(e,t)}intercept(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,e,t,n):t}invoke(e,t,n,r,i){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,e,t,n,r,i):t.apply(n,r)}handleError(e,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,e,t)}scheduleTask(e,t){let n=t;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,e,t),n||=t;else if(t.scheduleFn)t.scheduleFn(t);else if(t.type==le)v(t);else throw Error(`Task is missing scheduleFn.`);return n}invokeTask(e,t,n,r){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,e,t,n,r):t.callback.apply(n,r)}cancelTask(e,t){let n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,e,t);else{if(!t.cancelFn)throw Error(`Task is not cancelable`);n=t.cancelFn(t)}return n}hasTask(e,t){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,e,t)}catch(t){this.handleError(e,t)}}_updateTaskCount(e,t){let n=this._taskCounts,r=n[e],i=n[e]=r+t;if(i<0)throw Error(`More tasks executed then were scheduled.`);if(r==0||i==0){let t={microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e};this.hasTask(this._zone,t)}}}class u{constructor(e,t,n,r,i,a){if(o(this,`type`),o(this,`source`),o(this,`invoke`),o(this,`callback`),o(this,`data`),o(this,`scheduleFn`),o(this,`cancelFn`),o(this,`_zone`,null),o(this,`runCount`,0),o(this,`_zoneDelegates`,null),o(this,`_state`,`notScheduled`),this.type=e,this.source=t,this.data=r,this.scheduleFn=i,this.cancelFn=a,!n)throw Error(`callback is not defined`);this.callback=n;let c=this;this.invoke=e===de&&r&&r.useG?u.invokeTask:function(){return u.invokeTask.call(s,c,this,arguments)}}static invokeTask(e,t,n){e||=this,ge++;try{return e.runCount++,e.zone.runTask(e,t,n)}finally{try{ge===1&&!s[m]&&te()}finally{ge--}}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(re,ie)}_transitionTo(e,t,n){if(this._state===t||this._state===n)this._state=e,e==re&&(this._zoneDelegates=null);else throw Error(`${this.type} '${this.source}': can not transition to '${e}', expecting state '${t}'${n?` or '`+n+`'`:``}, was '${this._state}'.`)}toString(){return this.data&&this.data.handleId!==void 0?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let d=c(`setTimeout`),f=c(`Promise`),p=c(`then`),m=c(`enable_native_microtask_draining`),h=[],g=!1,_;function ee(e){!_&&s[f]&&(_=s[f].resolve(0)),_?(_[p]??_.then).call(_,e):s[d](e,0)}function v(e){let t=s[m],n=t&&h.length===0&&!g,r=!t&&ge===0&&h.length===0;(n||r)&&ee(te),e&&h.push(e)}function te(){if(!g){g=!0;try{for(;h.length;){let e=h;h=[];for(let t of e)try{t.zone.runTask(t,null,null)}catch(e){pe.onUnhandledError(e)}}}finally{if(s[m])g=!1,pe.microtaskDrainDone();else try{pe.microtaskDrainDone()}finally{g=!1}}}}let ne={name:`NO ZONE`},re=`notScheduled`,ie=`scheduling`,ae=`scheduled`,oe=`running`,se=`canceling`,ce=`unknown`,le=`microTask`,ue=`macroTask`,de=`eventTask`,fe=Object.create(null),pe={symbol:c,currentZoneFrame:()=>me,onUnhandledError:_e,microtaskDrainDone:_e,scheduleMicroTask:v,showUncaughtError:()=>!i[c(`ignoreConsoleErrorUncaughtError`)],patchEventTarget:()=>[],patchOnProperties:_e,patchMethod:()=>_e,bindArguments:()=>[],patchThen:()=>_e,patchMacroTask:()=>_e,patchEventPrototype:()=>_e,getGlobalObjects:()=>void 0,ObjectDefineProperty:()=>_e,ObjectGetOwnPropertyDescriptor:()=>void 0,ObjectCreate:()=>void 0,ArraySlice:()=>[],patchClass:()=>_e,wrapWithCurrentZone:()=>_e,filterProperties:()=>[],attachOriginToPatched:()=>_e,_redefineProperty:()=>_e,patchCallbacks:()=>_e,nativeScheduleMicroTask:ee},me={parent:null,zone:new i(null,null)},he=null,ge=0;function _e(){}return n(`Zone`,`Zone`),i}function u(){let e=globalThis,t=e[c(`forceDuplicateZoneCheck`)]===!0;if(e.Zone&&(t||typeof e.Zone.__symbol__!=`function`))throw Error(`Zone already loaded.`);return e.Zone??=l(),e.Zone}var d=Object.getOwnPropertyDescriptor,f=Object.defineProperty,p=Object.getPrototypeOf,m=Object.create,h=Array.prototype.slice,g=`addEventListener`,_=`removeEventListener`,ee=c(g),v=c(_),te=`true`,ne=`false`,re=c(``);function ie(e,t){return Zone.current.wrap(e,t)}function ae(e,t,n,r,i){return Zone.current.scheduleMacroTask(e,t,n,r,i)}var oe=c,se=typeof window<`u`,ce=se?window:void 0,le=se&&ce||globalThis,ue=`removeAttribute`;function de(e,t){for(let n=e.length-1;n>=0;n--)typeof e[n]==`function`&&(e[n]=ie(e[n],t+`_`+n));return e}function fe(e,t){let n=e.constructor.name;for(let r=0;r{let t=function(){return e.apply(this,de(arguments,n+`.`+i))};return De(t,e),t})(a)}}}function pe(e){return e?e.writable===!1?!1:typeof e.get!=`function`||e.set!==void 0:!0}var me=typeof WorkerGlobalScope<`u`&&self instanceof WorkerGlobalScope,he=!(`nw`in le)&&le.process!==void 0&&le.process.toString()===`[object process]`,ge=!he&&!me&&!!(se&&ce.HTMLElement),_e=le.process!==void 0&&le.process.toString()===`[object process]`&&!me&&!!(se&&ce.HTMLElement),ve=Object.create(null),ye=oe(`enable_beforeunload`),be=function(e){if(e||=le.event,!e)return;let t=ve[e.type];t||=ve[e.type]=oe(`ON_PROPERTY`+e.type);let n=this||e.target||le,r=n[t],i;if(ge&&n===ce&&e.type===`error`){let t=e;i=r&&r.call(this,t.message,t.filename,t.lineno,t.colno,t.error),i===!0&&e.preventDefault()}else i=r&&r.apply(this,arguments),e.type===`beforeunload`&&le[ye]&&typeof i==`string`?e.returnValue=i:i!=null&&!i&&e.preventDefault();return i};function xe(e,t,n){let r=d(e,t);if(!r&&n&&d(n,t)&&(r={enumerable:!0,configurable:!0}),!r||!r.configurable)return;let i=oe(`on`+t+`patched`);if(Object.hasOwn(e,i)&&e[i])return;delete r.writable,delete r.value;let a=r.get,o=r.set,s=t.slice(2),c=ve[s];c||=ve[s]=oe(`ON_PROPERTY`+s),r.set=function(t){let n=this;!n&&e===le&&(n=le),n&&(typeof n[c]==`function`&&n.removeEventListener(s,be),o?.call(n,null),n[c]=t,typeof t==`function`&&n.addEventListener(s,be,!1))},r.get=function(){let n=this;if(!n&&e===le&&(n=le),!n)return null;let i=n[c];if(i)return i;if(a){let e=a.call(this);if(e)return r.set.call(this,e),typeof n[ue]==`function`&&n.removeAttribute(t),e}return null},f(e,t,r),e[i]=!0}function Se(e,t,n){if(t)for(let r=0;rfunction(t,r){let a=n(t,r);return a.cbIdx>=0&&typeof r[a.cbIdx]==`function`?ae(a.name,r[a.cbIdx],a,i):e.apply(t,r)})}function De(e,t){e[oe(`OriginalDelegate`)]=t}function Oe(e){return typeof e==`function`}function ke(e){return typeof e==`number`}var Ae={useG:!0},je=Object.create(null),Me={},Ne=RegExp(`^`+re+`(\\w+)(true|false)$`),Pe=oe(`propagationStopped`),Fe=[`capture`,`once`,`passive`,`signal`];function Ie(e,t){let n=(t?t(e):e)+ne,r=(t?t(e):e)+te,i=re+n,a=re+r;je[e]={[ne]:i,[te]:a}}function Le(e,t,n,r){let i=r&&r.add||g,o=r&&r.rm||_,s=r&&r.listeners||`eventListeners`,c=r&&r.rmAll||`removeAllListeners`,l=oe(i),u=`.`+i+`:`,d=function(e,t,n){if(e.isRemoved)return;let r=e.callback;typeof r==`object`&&r.handleEvent&&(e.callback=e=>r.handleEvent(e),e.originalDelegate=r);let i;try{e.invoke(e,t,[n])}catch(e){i=e}let a=e.options;if(a&&typeof a==`object`&&a.once){let r=e.originalDelegate?e.originalDelegate:e.callback;t[o].call(t,n.type,r,a)}return i};function f(n,r,i){if(r||=e.event,!r)return;let a=n||r.target||e,o=a[je[r.type][i?te:ne]];if(o){let e=[];if(o.length===1){let t=d(o[0],a,r);t&&e.push(t)}else{let t=o.slice();for(let n=0;n{throw r})}}}let m=function(e){return f(this,e,!1)},h=function(e){return f(this,e,!0)};function ee(t,n){if(!t)return!1;let r=!0;n&&n.useG!==void 0&&(r=n.useG);let d=n&&n.vh,f=!0;n&&n.chkDup!==void 0&&(f=n.chkDup);let g=!1;n&&n.rt!==void 0&&(g=n.rt);let _=t;for(;_&&!Object.hasOwn(_,i);)_=p(_);if(!_&&t[i]&&(_=t),!_||_[l])return!1;let ee=n&&n.eventNameToString,v={},ie=_[l]=_[i],ae=_[oe(o)]=_[o],se=_[oe(s)]=_[s],ce=_[oe(c)]=_[c],le;n&&n.prepend&&(le=_[oe(n.prepend)]=_[n.prepend]);function ue(e,t){return t?typeof e==`boolean`?{capture:e,passive:!0}:e?(typeof e==`object`&&e.passive!==!1&&(e.passive=!0),e):{passive:!0}:e}let de=function(e){if(!v.isExisting)return ie.call(v.target,v.eventName,v.capture?h:m,v.options)},fe=function(e){if(!e.isRemoved){let t=je[e.eventName],n;t&&(n=t[e.capture?te:ne]);let r=n&&e.target[n];if(r){for(let t=0;tge.zone.cancelTask(ge);t.call(_,`abort`,e,{once:!0}),ge.removeAbortListener=()=>_.removeEventListener(`abort`,e)}if(v.target=null,me&&(me.taskData=null),ie&&(v.options.once=!0),typeof ge.options!=`boolean`&&(ge.options=g),ge.target=l,ge.capture=re,ge.eventName=u,m&&(ge.originalDelegate=p),c?ce.unshift(ge):ce.push(ge),s)return l}};return _[i]=Ce(ie,u,_e,ve,g),le&&(_.prependListener=Ce(le,`.prependListener:`,me,ve,g,!0)),_[o]=function(){let t=this||e,r=arguments[0];n&&n.transferEventName&&(r=n.transferEventName(r));let i=arguments[2],a=i?typeof i==`boolean`||i.capture:!1,o=arguments[1];if(!o)return ae.apply(this,arguments);if(d&&!d(ae,o,t,arguments))return;let s=je[r],c;s&&(c=s[a?te:ne]);let l=c&&t[c];if(l)for(let e=0;efunction(t,n){t[Pe]=!0,e&&e.apply(t,n)})}function Be(e,t){t.patchMethod(e,`queueMicrotask`,e=>function(e,t){Zone.current.scheduleMicroTask(`queueMicrotask`,t[0])})}var Ve=oe(`zoneTask`);function He(e,t,n,r){let i=null,a=null;t+=r,n+=r;let o={};function s(t){let n=t.data;n.args[0]=function(){return t.invoke.apply(this,arguments)};let r=i.apply(e,n.args);return ke(r)?n.handleId=r:(n.handle=r,n.isRefreshable=Oe(r?.refresh)),t}function c(t){let{handle:n,handleId:r}=t.data;return a.call(e,n??r)}i=Te(e,t,n=>function(i,a){if(Oe(a[0])){let e={isRefreshable:!1,isPeriodic:r===`Interval`,delay:r===`Timeout`||r===`Interval`?a[1]||0:void 0,args:a},n=a[0];a[0]=function(){try{return n.apply(this,arguments)}finally{let{handle:t,handleId:n,isPeriodic:r,isRefreshable:i}=e;!r&&!i&&(n?delete o[n]:t&&(t[Ve]=null))}};let i=ae(t,a[0],e,s,c);if(!i)return i;let{handleId:l,handle:u,isRefreshable:d,isPeriodic:f}=i.data;if(l)o[l]=i;else if(u&&(u[Ve]=i,d&&!f)){let e=u.refresh;u.refresh=function(){let{zone:t,state:n}=i;return n===`notScheduled`?(i._state=`scheduled`,t._updateTaskCount(i,1)):n===`running`&&(i._state=`scheduling`),e.call(this)}}return u??l??i}return n.apply(e,a)}),a=Te(e,n,t=>function(n,r){let i=r[0],a;ke(i)?(a=o[i],delete o[i]):(a=i?.[Ve],a?i[Ve]=null:a=i),a?.type?a.cancelFn&&a.zone.cancelTask(a):t.apply(e,r)})}function Ue(e,t){let{isBrowser:n,isMix:r}=t.getGlobalObjects();(n||r)&&e.customElements&&`customElements`in e&&t.patchCallbacks(t,e.customElements,`customElements`,`define`,[`connectedCallback`,`disconnectedCallback`,`adoptedCallback`,`attributeChangedCallback`,`formAssociatedCallback`,`formDisabledCallback`,`formResetCallback`,`formStateRestoreCallback`])}function We(e,t){if(Zone[t.symbol(`patchEventTarget`)])return;let{eventNames:n,zoneSymbolEventNames:r,TRUE_STR:i,FALSE_STR:a,ZONE_SYMBOL_PREFIX:o}=t.getGlobalObjects();for(let e=0;et.target===e);if(r.length===0)return t;let i=r[0].ignoreProperties;return t.filter(e=>i.indexOf(e)===-1)}function qe(e,t,n,r){e&&Se(e,Ke(e,t,n),r)}function Je(e){return Object.getOwnPropertyNames(e).filter(e=>e.startsWith(`on`)&&e.length>2).map(e=>e.substring(2))}function Ye(e,t){if(he&&!_e||Zone[e.symbol(`patchEvents`)])return;let n=t.__Zone_ignore_on_properties,r=[];if(ge){let e=window;r=r.concat([`Document`,`SVGElement`,`Element`,`HTMLElement`,`HTMLBodyElement`,`HTMLMediaElement`,`HTMLFrameSetElement`,`HTMLFrameElement`,`HTMLIFrameElement`,`HTMLMarqueeElement`,`Worker`]),qe(e,Je(e),n,p(e))}r=r.concat([`XMLHttpRequest`,`XMLHttpRequestEventTarget`,`IDBIndex`,`IDBRequest`,`IDBOpenDBRequest`,`IDBDatabase`,`IDBTransaction`,`IDBCursor`,`WebSocket`]);for(let e=0;e{let t=`clear`;He(e,`set`,t,`Timeout`),He(e,`set`,t,`Interval`),He(e,`set`,t,`Immediate`)}),e.__load_patch(`requestAnimationFrame`,e=>{He(e,`request`,`cancel`,`AnimationFrame`),He(e,`mozRequest`,`mozCancel`,`AnimationFrame`),He(e,`webkitRequest`,`webkitCancel`,`AnimationFrame`)}),e.__load_patch(`blocking`,(e,t)=>{let n=[`alert`,`prompt`,`confirm`];for(let r=0;rfunction(r,a){return t.current.run(n,e,a,i)})}}),e.__load_patch(`EventTarget`,(e,t,n)=>{Ge(e,n),We(e,n);let r=e.XMLHttpRequestEventTarget;r&&r.prototype&&n.patchEventTarget(e,n,[r.prototype])}),e.__load_patch(`MutationObserver`,(e,t,n)=>{we(`MutationObserver`),we(`WebKitMutationObserver`)}),e.__load_patch(`IntersectionObserver`,(e,t,n)=>{we(`IntersectionObserver`)}),e.__load_patch(`FileReader`,(e,t,n)=>{we(`FileReader`)}),e.__load_patch(`on_property`,(e,t,n)=>{Ye(n,e)}),e.__load_patch(`customElements`,(e,t,n)=>{Ue(e,n)}),e.__load_patch(`XHR`,(e,t)=>{c(e);let n=oe(`xhrTask`),r=oe(`xhrSync`),i=oe(`xhrListener`),a=oe(`xhrScheduled`),o=oe(`xhrURL`),s=oe(`xhrErrorBeforeScheduled`);function c(e){let c=e.XMLHttpRequest;if(!c)return;let l=c.prototype;function u(e){return e[n]}let d=l[ee],f=l[v];if(!d){let t=e.XMLHttpRequestEventTarget;if(t){let e=t.prototype;d=e[ee],f=e[v]}}let p=`readystatechange`,m=`scheduled`;function h(e){let r=e.data,o=r.target;o[a]=!1,o[s]=!1;let c=o[i];d||(d=o[ee],f=o[v]),c&&f.call(o,p,c);let l=o[i]=()=>{if(o.readyState===o.DONE){if(!r.aborted&&o[a]&&e.state===m){let n=o[t.__symbol__(`loadfalse`)];if(o.status!==0&&n&&n.length>0){let i=e.invoke;e.invoke=function(){let n=o[t.__symbol__(`loadfalse`)];for(let t=0;tfunction(e,t){return e[r]=t[2]==0,e[o]=t[1],te.apply(e,t)}),ne=oe(`fetchTaskAborting`),re=oe(`fetchTaskScheduling`),ie=Te(l,`send`,()=>function(e,n){if(t.current[re]===!0||e[r])return ie.apply(e,n);{let t={target:e,url:e[o],isPeriodic:!1,args:n,aborted:!1},r=ae(`XMLHttpRequest.send`,g,t,h,_);e&&e[s]===!0&&!t.aborted&&r.state===m&&r.invoke()}}),se=Te(l,`abort`,()=>function(e,n){let r=u(e);if(r&&typeof r.type==`string`){if(r.cancelFn==null||r.data&&r.data.aborted)return;r.zone.cancelTask(r)}else if(t.current[ne]===!0)return se.apply(e,n)})}}),e.__load_patch(`geolocation`,e=>{e.navigator&&e.navigator.geolocation&&fe(e.navigator.geolocation,[`getCurrentPosition`,`watchPosition`])}),e.__load_patch(`PromiseRejectionEvent`,(e,t)=>{function n(t){return function(n){Re(e,t).forEach(r=>{let i=e.PromiseRejectionEvent;if(i){let e=new i(t,{promise:n.promise,reason:n.rejection});r.invoke(e)}})}}e.PromiseRejectionEvent&&(t[oe(`unhandledPromiseRejectionHandler`)]=n(`unhandledrejection`),t[oe(`rejectionHandledHandler`)]=n(`rejectionhandled`))}),e.__load_patch(`queueMicrotask`,(e,t,n)=>{Be(e,n)})}function Ze(e){e.__load_patch(`ZoneAwarePromise`,(e,t,n)=>{let r=Object.getOwnPropertyDescriptor,i=Object.defineProperty;function a(e){return e&&e.toString===Object.prototype.toString?(e.constructor&&e.constructor.name||``)+`: `+JSON.stringify(e):e?e.toString():Object.prototype.toString.call(e)}let o=n.symbol,s=[],c=e[o(`DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION`)]!==!1,l=o(`Promise`),u=o(`then`);n.onUnhandledError=e=>{if(n.showUncaughtError()){let t=e&&e.rejection;t&&e.zone&&e.task?console.error(`Unhandled Promise rejection:`,t instanceof Error?t.message:t,`; Zone:`,e.zone.name,`; Task:`,e.task&&e.task.source,`; Value:`,t,t instanceof Error?t.stack:void 0):console.error(e)}},n.microtaskDrainDone=()=>{for(;s.length;){let e=s.shift();try{e.zone.runGuarded(()=>{throw e.throwOriginal?e.rejection:e})}catch(e){f(e)}}};let d=o(`unhandledPromiseRejectionHandler`);function f(e){n.onUnhandledError(e);try{let n=t[d];typeof n==`function`&&n.call(this,e)}catch{}}function p(e){return e&&typeof e.then==`function`}function m(e){return e}function h(e){return de.reject(e)}let g=o(`state`),_=o(`value`),ee=o(`finally`),v=o(`parentPromiseValue`),te=o(`parentPromiseState`);function ne(e,t){return n=>{try{ae(e,t,n)}catch(t){ae(e,!1,t)}}}let re=function(){let e=!1;return function(t){return function(){e||(e=!0,t.apply(null,arguments))}}},ie=o(`currentTaskTrace`);function ae(e,r,o){let l=re();if(e===o)throw TypeError(`Promise resolved with itself`);if(e[g]===null){let u=null;try{(typeof o==`object`||typeof o==`function`)&&(u=o&&o.then)}catch(t){return l(()=>{ae(e,!1,t)})(),e}if(r!==!1&&o instanceof de&&Object.hasOwn(o,g)&&Object.hasOwn(o,_)&&o[g]!==null)se(o),ae(e,o[g],o[_]);else if(r!==!1&&typeof u==`function`)try{u.call(o,l(ne(e,r)),l(ne(e,!1)))}catch(t){l(()=>{ae(e,!1,t)})()}else{e[g]=r;let l=e[_];if(e[_]=o,e[ee]===ee&&r===!0&&(e[g]=e[te],e[_]=e[v]),r===!1&&o instanceof Error){let e=t.currentTask&&t.currentTask.data&&t.currentTask.data.__creationTrace__;e&&i(o,ie,{configurable:!0,enumerable:!1,writable:!0,value:e})}for(let t=0;t{try{let r=e[_],i=!!n&&ee===n[ee];i&&(n[v]=r,n[te]=a),ae(n,!0,t.run(o,void 0,i&&o!==h&&o!==m?[]:[r]))}catch(e){ae(n,!1,e)}},n)}let le=function(){},ue=e.AggregateError;class de{static toString(){return`function ZoneAwarePromise() { [native code] }`}static resolve(e){return e instanceof de?e:ae(new this(null),!0,e)}static reject(e){return ae(new this(null),!1,e)}static withResolvers(){let e={};return e.promise=new de((t,n)=>{e.resolve=t,e.reject=n}),e}static any(e){if(!e||typeof e[Symbol.iterator]!=`function`)return Promise.reject(new ue([],`All promises were rejected`));let t=[],n=0;try{for(let r of e)n++,t.push(de.resolve(r))}catch{return Promise.reject(new ue([],`All promises were rejected`))}if(n===0)return Promise.reject(new ue([],`All promises were rejected`));let r=!1,i=[];return new de((e,a)=>{for(let o=0;o{r||(r=!0,e(t))},e=>{i.push(e),n--,n===0&&(r=!0,a(new ue(i,`All promises were rejected`)))})})}static race(e){let t,n,r=new this((e,r)=>{t=e,n=r});function i(e){t(e)}function a(e){n(e)}for(let t of e)p(t)||(t=this.resolve(t)),t.then(i,a);return r}static all(e){return de.allWithCallback(e)}static allSettled(e){return(this&&this.prototype instanceof de?this:de).allWithCallback(e,{thenCallback:e=>({status:`fulfilled`,value:e}),errorCallback:e=>({status:`rejected`,reason:e})})}static allWithCallback(e,t){let n,r,i=new this((e,t)=>{n=e,r=t}),a=2,o=0,s=[];for(let i of e){p(i)||(i=this.resolve(i));let e=o;try{i.then(r=>{s[e]=t?t.thenCallback(r):r,a--,a===0&&n(s)},i=>{t?(s[e]=t.errorCallback(i),a--,a===0&&n(s)):r(i)})}catch(e){r(e)}a++,o++}return a-=2,a===0&&n(s),i}constructor(e){let t=this;if(!(t instanceof de))throw Error(`Must be an instanceof Promise.`);t[g]=null,t[_]=[];try{let n=re();e&&e(n(ne(t,!0)),n(ne(t,!1)))}catch(e){ae(t,!1,e)}}get[Symbol.toStringTag](){return`Promise`}get[Symbol.species](){return de}then(e,n){let r=this.constructor?.[Symbol.species];(!r||typeof r!=`function`)&&(r=this.constructor||de);let i=new r(le),a=t.current;return this[g]==null?this[_].push(a,i,e,n):ce(this,a,i,e,n),i}catch(e){return this.then(null,e)}finally(e){let n=this.constructor?.[Symbol.species];(!n||typeof n!=`function`)&&(n=de);let r=new n(le);r[ee]=ee;let i=t.current;return this[g]==null?this[_].push(i,r,e,e):ce(this,i,r,e,e),r}}de.resolve=de.resolve,de.reject=de.reject,de.race=de.race,de.all=de.all;let fe=e[l]=e.Promise;e.Promise=de;let pe=o(`thenPatched`);function me(e){let t=e.prototype,n=r(t,`then`);if(n&&(n.writable===!1||!n.configurable))return;let i=t.then;t[u]=i,e.prototype.then=function(e,t){return new de((e,t)=>{i.call(this,e,t)}).then(e,t)},e[pe]=!0}n.patchThen=me;function he(e){return function(t,n){let r=e.apply(t,n);if(r instanceof de)return r;let i=r.constructor;return i[pe]||me(i),r}}if(fe){me(fe);let t=fe.try;t&&typeof t==`function`&&(de.try=t),Te(e,`fetch`,e=>he(e))}return Promise[t.__symbol__(`uncaughtPromiseErrors`)]=s,de})}function Qe(e){e.__load_patch(`toString`,e=>{let t=Function.prototype.toString,n=oe(`OriginalDelegate`),r=oe(`Promise`),i=oe(`Error`),a=function(){if(typeof this==`function`){let a=this[n];if(a)return typeof a==`function`?t.call(a):Object.prototype.toString.call(a);if(this===Promise){let n=e[r];if(n)return t.call(n)}if(this===Error){let n=e[i];if(n)return t.call(n)}}return t.call(this)};a[n]=t,Function.prototype.toString=a;let o=Object.prototype.toString;Object.prototype.toString=function(){return typeof Promise==`function`&&this instanceof Promise?`[object Promise]`:o.call(this)}})}function $e(e,t,n,r,i){let a=Zone.__symbol__(r);if(t[a])return;let o=t[a]=t[r];t[r]=function(a,s,c){return s&&s.prototype&&i.forEach(function(t){let i=`${n}.${r}::`+t,a=s.prototype;try{if(Object.hasOwn(a,t)){let n=e.ObjectGetOwnPropertyDescriptor(a,t);n&&n.value?(n.value=e.wrapWithCurrentZone(n.value,i),e._redefineProperty(s.prototype,t,n)):a[t]&&(a[t]=e.wrapWithCurrentZone(a[t],i))}else a[t]&&(a[t]=e.wrapWithCurrentZone(a[t],i))}catch{}}),o.call(t,a,s,c)},e.attachOriginToPatched(t[r],o)}function et(e){e.__load_patch(`util`,(e,t,n)=>{let r=Je(e);n.patchOnProperties=Se,n.patchMethod=Te,n.bindArguments=de,n.patchMacroTask=Ee;let i=t.__symbol__(`BLACK_LISTED_EVENTS`),a=t.__symbol__(`UNPATCHED_EVENTS`);e[a]&&(e[i]=e[a]),e[i]&&(t[i]=t[a]=e[i]),n.patchEventPrototype=ze,n.patchEventTarget=Le,n.ObjectDefineProperty=f,n.ObjectGetOwnPropertyDescriptor=d,n.ObjectCreate=m,n.ArraySlice=h,n.patchClass=we,n.wrapWithCurrentZone=ie,n.filterProperties=Ke,n.attachOriginToPatched=De,n._redefineProperty=Object.defineProperty,n.patchCallbacks=$e,n.getGlobalObjects=()=>({globalSources:Me,zoneSymbolEventNames:je,eventNames:r,isBrowser:ge,isMix:_e,isNode:he,TRUE_STR:te,FALSE_STR:ne,ZONE_SYMBOL_PREFIX:re,ADD_EVENT_LISTENER_STR:g,REMOVE_EVENT_LISTENER_STR:_})})}function tt(e){Ze(e),Qe(e),et(e)}var nt=u();tt(nt),Xe(nt);var rt=(function(e){return e[e.NONE=0]=`NONE`,e[e.HTML=1]=`HTML`,e[e.STYLE=2]=`STYLE`,e[e.SCRIPT=3]=`SCRIPT`,e[e.URL=4]=`URL`,e[e.RESOURCE_URL=5]=`RESOURCE_URL`,e[e.ATTRIBUTE_NO_BINDING=6]=`ATTRIBUTE_NO_BINDING`,e})(rt||{}),it=(function(e){return e[e.None=0]=`None`,e[e.Const=1]=`Const`,e})(it||{}),at=class{modifiers;constructor(e=it.None){this.modifiers=e}hasModifier(e){return(this.modifiers&e)!==0}},ot=(function(e){return e[e.Dynamic=0]=`Dynamic`,e[e.Bool=1]=`Bool`,e[e.String=2]=`String`,e[e.Int=3]=`Int`,e[e.Number=4]=`Number`,e[e.Function=5]=`Function`,e[e.Inferred=6]=`Inferred`,e[e.None=7]=`None`,e})(ot||{}),st=class extends at{name;constructor(e,t){super(t),this.name=e}visitType(e,t){return e.visitBuiltinType(this,t)}};ot.Dynamic;var ct=new st(ot.Inferred);ot.Bool,ot.Int,ot.Number,ot.String,ot.Function,ot.None;var y=(function(e){return e[e.Equals=0]=`Equals`,e[e.NotEquals=1]=`NotEquals`,e[e.Assign=2]=`Assign`,e[e.Identical=3]=`Identical`,e[e.NotIdentical=4]=`NotIdentical`,e[e.Minus=5]=`Minus`,e[e.Plus=6]=`Plus`,e[e.Divide=7]=`Divide`,e[e.Multiply=8]=`Multiply`,e[e.Modulo=9]=`Modulo`,e[e.And=10]=`And`,e[e.Or=11]=`Or`,e[e.BitwiseOr=12]=`BitwiseOr`,e[e.BitwiseAnd=13]=`BitwiseAnd`,e[e.Lower=14]=`Lower`,e[e.LowerEquals=15]=`LowerEquals`,e[e.Bigger=16]=`Bigger`,e[e.BiggerEquals=17]=`BiggerEquals`,e[e.NullishCoalesce=18]=`NullishCoalesce`,e[e.Exponentiation=19]=`Exponentiation`,e[e.In=20]=`In`,e[e.InstanceOf=21]=`InstanceOf`,e[e.AdditionAssignment=22]=`AdditionAssignment`,e[e.SubtractionAssignment=23]=`SubtractionAssignment`,e[e.MultiplicationAssignment=24]=`MultiplicationAssignment`,e[e.DivisionAssignment=25]=`DivisionAssignment`,e[e.RemainderAssignment=26]=`RemainderAssignment`,e[e.ExponentiationAssignment=27]=`ExponentiationAssignment`,e[e.AndAssignment=28]=`AndAssignment`,e[e.OrAssignment=29]=`OrAssignment`,e[e.NullishCoalesceAssignment=30]=`NullishCoalesceAssignment`,e})(y||{});function lt(e,t){return e==null||t==null?e==t:e.isEquivalent(t)}function ut(e,t,n){let r=e.length;if(r!==t.length)return!1;for(let i=0;ie.isEquivalent(t))}var ft=class{leadingComments;type;sourceSpan;constructor(e,t,n){this.leadingComments=n,this.type=e||null,this.sourceSpan=t||null}prop(e,t){return new St(this,e,null,t)}key(e,t,n){return new Ct(this,e,t,n)}callFn(e,t,n,r){return new ht(this,e,null,t,n,r)}instantiate(e,t,n,r){return new gt(this,e,t,n)}conditional(e,t=null,n,r){return new bt(this,e,t,null,n)}equals(e,t){return new xt(y.Equals,this,e,null,t)}notEquals(e,t){return new xt(y.NotEquals,this,e,null,t)}identical(e,t){return new xt(y.Identical,this,e,null,t)}notIdentical(e,t){return new xt(y.NotIdentical,this,e,null,t)}minus(e,t){return new xt(y.Minus,this,e,null,t)}plus(e,t){return new xt(y.Plus,this,e,null,t)}divide(e,t){return new xt(y.Divide,this,e,null,t)}multiply(e,t){return new xt(y.Multiply,this,e,null,t)}modulo(e,t){return new xt(y.Modulo,this,e,null,t)}power(e,t){return new xt(y.Exponentiation,this,e,null,t)}and(e,t){return new xt(y.And,this,e,null,t)}bitwiseOr(e,t){return new xt(y.BitwiseOr,this,e,null,t)}bitwiseAnd(e,t){return new xt(y.BitwiseAnd,this,e,null,t)}or(e,t){return new xt(y.Or,this,e,null,t)}lower(e,t){return new xt(y.Lower,this,e,null,t)}lowerEquals(e,t){return new xt(y.LowerEquals,this,e,null,t)}bigger(e,t){return new xt(y.Bigger,this,e,null,t)}biggerEquals(e,t){return new xt(y.BiggerEquals,this,e,null,t)}isBlank(e){return this.equals(Ot,e)}nullishCoalesce(e,t){return new xt(y.NullishCoalesce,this,e,null,t)}toStmt(e){return new jt(this,null,e)}},pt=class e extends ft{name;constructor(e,t,n,r){super(t,n,r),this.name=e}isEquivalent(t){return t instanceof e&&this.name===t.name}isConstant(){return!1}visitExpression(e,t){return e.visitReadVarExpr(this,t)}clone(){return new e(this.name,this.type,this.sourceSpan)}set(e){return new xt(y.Assign,this,e,null,this.sourceSpan)}},mt=class e extends ft{expr;constructor(e,t,n,r){super(t,n,r),this.expr=e}visitExpression(e,t){return e.visitTypeofExpr(this,t)}isEquivalent(t){return t instanceof e&&t.expr.isEquivalent(this.expr)}isConstant(){return this.expr.isConstant()}clone(){return new e(this.expr.clone())}},ht=class e extends ft{fn;args;pure;isOptional;constructor(e,t,n,r,i=!1,a,o=!1){super(n,r,a),this.fn=e,this.args=t,this.pure=i,this.isOptional=o}get receiver(){return this.fn}isEquivalent(t){return t instanceof e&&this.fn.isEquivalent(t.fn)&&dt(this.args,t.args)&&this.pure===t.pure}isConstant(){return!1}visitExpression(e,t){return e.visitInvokeFunctionExpr(this,t)}clone(){return new e(this.fn.clone(),this.args.map(e=>e.clone()),this.type,this.sourceSpan,this.pure,[],this.isOptional)}},gt=class e extends ft{classExpr;args;constructor(e,t,n,r,i){super(n,r,i),this.classExpr=e,this.args=t}isEquivalent(t){return t instanceof e&&this.classExpr.isEquivalent(t.classExpr)&&dt(this.args,t.args)}isConstant(){return!1}visitExpression(e,t){return e.visitInstantiateExpr(this,t)}clone(){return new e(this.classExpr.clone(),this.args.map(e=>e.clone()),this.type,this.sourceSpan)}},_t=class e extends ft{body;flags;constructor(e,t,n,r){super(null,n,r),this.body=e,this.flags=t}isEquivalent(t){return t instanceof e&&this.body===t.body&&this.flags===t.flags}isConstant(){return!0}visitExpression(e,t){return e.visitRegularExpressionLiteral(this,t)}clone(){return new e(this.body,this.flags,this.sourceSpan)}},vt=class e extends ft{value;constructor(e,t,n,r){super(t,n,r),this.value=e}isEquivalent(t){return t instanceof e&&this.value===t.value}isConstant(){return!0}visitExpression(e,t){return e.visitLiteralExpr(this,t)}clone(){return new e(this.value,this.type,this.sourceSpan)}},yt=class e extends ft{value;typeParams;constructor(e,t,n=null,r,i){super(t,r,i),this.value=e,this.typeParams=n}isEquivalent(t){return t instanceof e&&this.value.name===t.value.name&&this.value.moduleName===t.value.moduleName}isConstant(){return!1}visitExpression(e,t){return e.visitExternalExpr(this,t)}clone(){return new e(this.value,this.type,this.typeParams,this.sourceSpan)}},bt=class e extends ft{condition;falseCase;trueCase;constructor(e,t,n=null,r,i,a){super(r||t.type,i,a),this.condition=e,this.falseCase=n,this.trueCase=t}isEquivalent(t){return t instanceof e&&this.condition.isEquivalent(t.condition)&&this.trueCase.isEquivalent(t.trueCase)&<(this.falseCase,t.falseCase)}isConstant(){return!1}visitExpression(e,t){return e.visitConditionalExpr(this,t)}clone(){return new e(this.condition.clone(),this.trueCase.clone(),this.falseCase?.clone(),this.type,this.sourceSpan)}},xt=class e extends ft{operator;rhs;lhs;constructor(e,t,n,r,i,a){super(r||t.type,i,a),this.operator=e,this.rhs=n,this.lhs=t}isEquivalent(t){return t instanceof e&&this.operator===t.operator&&this.lhs.isEquivalent(t.lhs)&&this.rhs.isEquivalent(t.rhs)}isConstant(){return!1}visitExpression(e,t){return e.visitBinaryOperatorExpr(this,t)}clone(){return new e(this.operator,this.lhs.clone(),this.rhs.clone(),this.type,this.sourceSpan)}isAssignment(){let e=this.operator;return e===y.Assign||e===y.AdditionAssignment||e===y.SubtractionAssignment||e===y.MultiplicationAssignment||e===y.DivisionAssignment||e===y.RemainderAssignment||e===y.ExponentiationAssignment||e===y.AndAssignment||e===y.OrAssignment||e===y.NullishCoalesceAssignment}},St=class e extends ft{receiver;name;isOptional;constructor(e,t,n,r,i,a=!1){super(n,r,i),this.receiver=e,this.name=t,this.isOptional=a}get index(){return this.name}isEquivalent(t){return t instanceof e&&this.receiver.isEquivalent(t.receiver)&&this.name===t.name&&this.isOptional===t.isOptional}isConstant(){return!1}visitExpression(e,t){return e.visitReadPropExpr(this,t)}set(e){return new xt(y.Assign,this.receiver.prop(this.name),e,null,this.sourceSpan)}clone(){return new e(this.receiver.clone(),this.name,this.type,this.sourceSpan,[],this.isOptional)}},Ct=class e extends ft{receiver;index;isOptional;constructor(e,t,n,r,i,a=!1){super(n,r,i),this.receiver=e,this.index=t,this.isOptional=a}isEquivalent(t){return t instanceof e&&this.receiver.isEquivalent(t.receiver)&&this.index.isEquivalent(t.index)&&this.isOptional===t.isOptional}isConstant(){return!1}visitExpression(e,t){return e.visitReadKeyExpr(this,t)}set(e){return new xt(y.Assign,this.receiver.key(this.index),e,null,this.sourceSpan)}clone(){return new e(this.receiver.clone(),this.index.clone(),this.type,this.sourceSpan,[],this.isOptional)}},wt=class e extends ft{entries;constructor(e,t,n,r){super(t,n,r),this.entries=e}isConstant(){return this.entries.every(e=>e.isConstant())}isEquivalent(t){return t instanceof e&&dt(this.entries,t.entries)}visitExpression(e,t){return e.visitLiteralArrayExpr(this,t)}clone(){return new e(this.entries.map(e=>e.clone()),this.type,this.sourceSpan)}},Tt=class e{expression;constructor(e){this.expression=e}isEquivalent(t){return t instanceof e&&this.expression.isEquivalent(t.expression)}clone(){return new e(this.expression.clone())}isConstant(){return this.expression.isConstant()}},Et=class e extends ft{entries;valueType=null;constructor(e,t,n,r){super(t,n,r),this.entries=e,t&&(this.valueType=t.valueType)}isEquivalent(t){return t instanceof e&&dt(this.entries,t.entries)}isConstant(){return this.entries.every(e=>e.isConstant())}visitExpression(e,t){return e.visitLiteralMapExpr(this,t)}clone(){let t=this.entries.map(e=>e.clone());return new e(t,this.type,this.sourceSpan)}},Dt=class e extends ft{expression;constructor(e,t,n){super(null,t,n),this.expression=e}isEquivalent(t){return t instanceof e&&this.expression.isEquivalent(t.expression)}isConstant(){return this.expression.isConstant()}visitExpression(e,t){return e.visitSpreadElementExpr(this,t)}clone(){return new e(this.expression.clone(),this.sourceSpan)}},Ot=new vt(null,ct,null),kt=(function(e){return e[e.None=0]=`None`,e[e.Final=1]=`Final`,e[e.Private=2]=`Private`,e[e.Exported=4]=`Exported`,e[e.Static=8]=`Static`,e})(kt||{}),At=class{modifiers;sourceSpan;leadingComments;constructor(e=kt.None,t=null,n){this.modifiers=e,this.sourceSpan=t,this.leadingComments=n}hasModifier(e){return(this.modifiers&e)!==0}addLeadingComment(e){this.leadingComments=this.leadingComments??[],this.leadingComments.push(e)}},jt=class e extends At{expr;constructor(e,t,n){super(kt.None,t,n),this.expr=e}isEquivalent(t){return t instanceof e&&this.expr.isEquivalent(t.expr)}visitStatement(e,t){return e.visitExpressionStmt(this,t)}};(class e{static INSTANCE=new e;keyOf(e){if(e instanceof vt&&typeof e.value==`string`)return`"${e.value}"`;if(e instanceof vt)return String(e.value);if(e instanceof _t)return`/${e.body}/${e.flags??``}`;if(e instanceof wt){let t=[];for(let n of e.entries)t.push(this.keyOf(n));return`[${t.join(`,`)}]`}if(e instanceof Et){let t=[];for(let n of e.entries)if(n instanceof Tt)t.push(`...`+this.keyOf(n.expression));else{let e=n.key;n.quoted&&(e=`"${e}"`),t.push(e+`:`+this.keyOf(n.value))}return`{${t.join(`,`)}}`}if(e instanceof yt)return`import("${e.value.moduleName}", ${e.value.name})`;if(e instanceof pt)return`read(${e.name})`;if(e instanceof mt)return`typeof(${this.keyOf(e.expr)})`;if(e instanceof Dt)return`...${this.keyOf(e.expression)}`;throw Error(`${this.constructor.name} does not handle expressions of type ${e.constructor.name}`)}});var b=`@angular/core`,x=(()=>{class e{static core={name:null,moduleName:b};static namespaceHTML={name:`ɵɵnamespaceHTML`,moduleName:b};static namespaceMathML={name:`ɵɵnamespaceMathML`,moduleName:b};static namespaceSVG={name:`ɵɵnamespaceSVG`,moduleName:b};static element={name:`ɵɵelement`,moduleName:b};static elementStart={name:`ɵɵelementStart`,moduleName:b};static elementEnd={name:`ɵɵelementEnd`,moduleName:b};static foreignComponent={name:`ɵɵforeignComponent`,moduleName:b};static foreignContent={name:`ɵɵforeignContent`,moduleName:b};static foreignContentFn={name:`ɵɵforeignContentFn`,moduleName:b};static domElement={name:`ɵɵdomElement`,moduleName:b};static domElementStart={name:`ɵɵdomElementStart`,moduleName:b};static domElementEnd={name:`ɵɵdomElementEnd`,moduleName:b};static domElementContainer={name:`ɵɵdomElementContainer`,moduleName:b};static domElementContainerStart={name:`ɵɵdomElementContainerStart`,moduleName:b};static domElementContainerEnd={name:`ɵɵdomElementContainerEnd`,moduleName:b};static domTemplate={name:`ɵɵdomTemplate`,moduleName:b};static domListener={name:`ɵɵdomListener`,moduleName:b};static advance={name:`ɵɵadvance`,moduleName:b};static syntheticHostProperty={name:`ɵɵsyntheticHostProperty`,moduleName:b};static syntheticHostListener={name:`ɵɵsyntheticHostListener`,moduleName:b};static attribute={name:`ɵɵattribute`,moduleName:b};static classProp={name:`ɵɵclassProp`,moduleName:b};static elementContainerStart={name:`ɵɵelementContainerStart`,moduleName:b};static elementContainerEnd={name:`ɵɵelementContainerEnd`,moduleName:b};static elementContainer={name:`ɵɵelementContainer`,moduleName:b};static styleMap={name:`ɵɵstyleMap`,moduleName:b};static classMap={name:`ɵɵclassMap`,moduleName:b};static styleProp={name:`ɵɵstyleProp`,moduleName:b};static interpolate={name:`ɵɵinterpolate`,moduleName:b};static interpolate1={name:`ɵɵinterpolate1`,moduleName:b};static interpolate2={name:`ɵɵinterpolate2`,moduleName:b};static interpolate3={name:`ɵɵinterpolate3`,moduleName:b};static interpolate4={name:`ɵɵinterpolate4`,moduleName:b};static interpolate5={name:`ɵɵinterpolate5`,moduleName:b};static interpolate6={name:`ɵɵinterpolate6`,moduleName:b};static interpolate7={name:`ɵɵinterpolate7`,moduleName:b};static interpolate8={name:`ɵɵinterpolate8`,moduleName:b};static interpolateV={name:`ɵɵinterpolateV`,moduleName:b};static nextContext={name:`ɵɵnextContext`,moduleName:b};static resetView={name:`ɵɵresetView`,moduleName:b};static templateCreate={name:`ɵɵtemplate`,moduleName:b};static defer={name:`ɵɵdefer`,moduleName:b};static deferWhen={name:`ɵɵdeferWhen`,moduleName:b};static deferOnIdle={name:`ɵɵdeferOnIdle`,moduleName:b};static deferOnImmediate={name:`ɵɵdeferOnImmediate`,moduleName:b};static deferOnTimer={name:`ɵɵdeferOnTimer`,moduleName:b};static deferOnHover={name:`ɵɵdeferOnHover`,moduleName:b};static deferOnInteraction={name:`ɵɵdeferOnInteraction`,moduleName:b};static deferOnViewport={name:`ɵɵdeferOnViewport`,moduleName:b};static deferPrefetchWhen={name:`ɵɵdeferPrefetchWhen`,moduleName:b};static deferPrefetchOnIdle={name:`ɵɵdeferPrefetchOnIdle`,moduleName:b};static deferPrefetchOnImmediate={name:`ɵɵdeferPrefetchOnImmediate`,moduleName:b};static deferPrefetchOnTimer={name:`ɵɵdeferPrefetchOnTimer`,moduleName:b};static deferPrefetchOnHover={name:`ɵɵdeferPrefetchOnHover`,moduleName:b};static deferPrefetchOnInteraction={name:`ɵɵdeferPrefetchOnInteraction`,moduleName:b};static deferPrefetchOnViewport={name:`ɵɵdeferPrefetchOnViewport`,moduleName:b};static deferHydrateWhen={name:`ɵɵdeferHydrateWhen`,moduleName:b};static deferHydrateNever={name:`ɵɵdeferHydrateNever`,moduleName:b};static deferHydrateOnIdle={name:`ɵɵdeferHydrateOnIdle`,moduleName:b};static deferHydrateOnImmediate={name:`ɵɵdeferHydrateOnImmediate`,moduleName:b};static deferHydrateOnTimer={name:`ɵɵdeferHydrateOnTimer`,moduleName:b};static deferHydrateOnHover={name:`ɵɵdeferHydrateOnHover`,moduleName:b};static deferHydrateOnInteraction={name:`ɵɵdeferHydrateOnInteraction`,moduleName:b};static deferHydrateOnViewport={name:`ɵɵdeferHydrateOnViewport`,moduleName:b};static deferEnableTimerScheduling={name:`ɵɵdeferEnableTimerScheduling`,moduleName:b};static enableIncrementalHydrationRuntime={name:`ɵɵenableIncrementalHydrationRuntime`,moduleName:b};static conditionalCreate={name:`ɵɵconditionalCreate`,moduleName:b};static conditionalBranchCreate={name:`ɵɵconditionalBranchCreate`,moduleName:b};static conditional={name:`ɵɵconditional`,moduleName:b};static repeater={name:`ɵɵrepeater`,moduleName:b};static repeaterCreate={name:`ɵɵrepeaterCreate`,moduleName:b};static repeaterTrackByIndex={name:`ɵɵrepeaterTrackByIndex`,moduleName:b};static repeaterTrackByIdentity={name:`ɵɵrepeaterTrackByIdentity`,moduleName:b};static componentInstance={name:`ɵɵcomponentInstance`,moduleName:b};static text={name:`ɵɵtext`,moduleName:b};static enableBindings={name:`ɵɵenableBindings`,moduleName:b};static disableBindings={name:`ɵɵdisableBindings`,moduleName:b};static getCurrentView={name:`ɵɵgetCurrentView`,moduleName:b};static textInterpolate={name:`ɵɵtextInterpolate`,moduleName:b};static textInterpolate1={name:`ɵɵtextInterpolate1`,moduleName:b};static textInterpolate2={name:`ɵɵtextInterpolate2`,moduleName:b};static textInterpolate3={name:`ɵɵtextInterpolate3`,moduleName:b};static textInterpolate4={name:`ɵɵtextInterpolate4`,moduleName:b};static textInterpolate5={name:`ɵɵtextInterpolate5`,moduleName:b};static textInterpolate6={name:`ɵɵtextInterpolate6`,moduleName:b};static textInterpolate7={name:`ɵɵtextInterpolate7`,moduleName:b};static textInterpolate8={name:`ɵɵtextInterpolate8`,moduleName:b};static textInterpolateV={name:`ɵɵtextInterpolateV`,moduleName:b};static restoreView={name:`ɵɵrestoreView`,moduleName:b};static pureFunction0={name:`ɵɵpureFunction0`,moduleName:b};static pureFunction1={name:`ɵɵpureFunction1`,moduleName:b};static pureFunction2={name:`ɵɵpureFunction2`,moduleName:b};static pureFunction3={name:`ɵɵpureFunction3`,moduleName:b};static pureFunction4={name:`ɵɵpureFunction4`,moduleName:b};static pureFunction5={name:`ɵɵpureFunction5`,moduleName:b};static pureFunction6={name:`ɵɵpureFunction6`,moduleName:b};static pureFunction7={name:`ɵɵpureFunction7`,moduleName:b};static pureFunction8={name:`ɵɵpureFunction8`,moduleName:b};static pureFunctionV={name:`ɵɵpureFunctionV`,moduleName:b};static pipeBind1={name:`ɵɵpipeBind1`,moduleName:b};static pipeBind2={name:`ɵɵpipeBind2`,moduleName:b};static pipeBind3={name:`ɵɵpipeBind3`,moduleName:b};static pipeBind4={name:`ɵɵpipeBind4`,moduleName:b};static pipeBindV={name:`ɵɵpipeBindV`,moduleName:b};static domProperty={name:`ɵɵdomProperty`,moduleName:b};static ariaProperty={name:`ɵɵariaProperty`,moduleName:b};static property={name:`ɵɵproperty`,moduleName:b};static control={name:`ɵɵcontrol`,moduleName:b};static controlCreate={name:`ɵɵcontrolCreate`,moduleName:b};static animationEnterListener={name:`ɵɵanimateEnterListener`,moduleName:b};static animationLeaveListener={name:`ɵɵanimateLeaveListener`,moduleName:b};static animationEnter={name:`ɵɵanimateEnter`,moduleName:b};static animationLeave={name:`ɵɵanimateLeave`,moduleName:b};static i18n={name:`ɵɵi18n`,moduleName:b};static i18nAttributes={name:`ɵɵi18nAttributes`,moduleName:b};static i18nExp={name:`ɵɵi18nExp`,moduleName:b};static i18nStart={name:`ɵɵi18nStart`,moduleName:b};static i18nEnd={name:`ɵɵi18nEnd`,moduleName:b};static i18nApply={name:`ɵɵi18nApply`,moduleName:b};static i18nPostprocess={name:`ɵɵi18nPostprocess`,moduleName:b};static pipe={name:`ɵɵpipe`,moduleName:b};static projection={name:`ɵɵprojection`,moduleName:b};static projectionDef={name:`ɵɵprojectionDef`,moduleName:b};static reference={name:`ɵɵreference`,moduleName:b};static inject={name:`ɵɵinject`,moduleName:b};static injectAttribute={name:`ɵɵinjectAttribute`,moduleName:b};static directiveInject={name:`ɵɵdirectiveInject`,moduleName:b};static invalidFactory={name:`ɵɵinvalidFactory`,moduleName:b};static invalidFactoryDep={name:`ɵɵinvalidFactoryDep`,moduleName:b};static templateRefExtractor={name:`ɵɵtemplateRefExtractor`,moduleName:b};static forwardRef={name:`forwardRef`,moduleName:b};static resolveForwardRef={name:`resolveForwardRef`,moduleName:b};static replaceMetadata={name:`ɵɵreplaceMetadata`,moduleName:b};static getReplaceMetadataURL={name:`ɵɵgetReplaceMetadataURL`,moduleName:b};static ɵɵdefineInjectable={name:`ɵɵdefineInjectable`,moduleName:b};static declareInjectable={name:`ɵɵngDeclareInjectable`,moduleName:b};static InjectableDeclaration={name:`ɵɵInjectableDeclaration`,moduleName:b};static defineService={name:`ɵɵdefineService`,moduleName:b};static declareService={name:`ɵɵngDeclareService`,moduleName:b};static resolveWindow={name:`ɵɵresolveWindow`,moduleName:b};static resolveDocument={name:`ɵɵresolveDocument`,moduleName:b};static resolveBody={name:`ɵɵresolveBody`,moduleName:b};static getComponentDepsFactory={name:`ɵɵgetComponentDepsFactory`,moduleName:b};static defineComponent={name:`ɵɵdefineComponent`,moduleName:b};static declareComponent={name:`ɵɵngDeclareComponent`,moduleName:b};static setComponentScope={name:`ɵɵsetComponentScope`,moduleName:b};static ChangeDetectionStrategy={name:`ChangeDetectionStrategy`,moduleName:b};static ViewEncapsulation={name:`ViewEncapsulation`,moduleName:b};static ComponentDeclaration={name:`ɵɵComponentDeclaration`,moduleName:b};static FactoryDeclaration={name:`ɵɵFactoryDeclaration`,moduleName:b};static declareFactory={name:`ɵɵngDeclareFactory`,moduleName:b};static FactoryTarget={name:`ɵɵFactoryTarget`,moduleName:b};static defineDirective={name:`ɵɵdefineDirective`,moduleName:b};static declareDirective={name:`ɵɵngDeclareDirective`,moduleName:b};static DirectiveDeclaration={name:`ɵɵDirectiveDeclaration`,moduleName:b};static InjectorDef={name:`ɵɵInjectorDef`,moduleName:b};static InjectorDeclaration={name:`ɵɵInjectorDeclaration`,moduleName:b};static defineInjector={name:`ɵɵdefineInjector`,moduleName:b};static declareInjector={name:`ɵɵngDeclareInjector`,moduleName:b};static NgModuleDeclaration={name:`ɵɵNgModuleDeclaration`,moduleName:b};static ModuleWithProviders={name:`ModuleWithProviders`,moduleName:b};static defineNgModule={name:`ɵɵdefineNgModule`,moduleName:b};static declareNgModule={name:`ɵɵngDeclareNgModule`,moduleName:b};static setNgModuleScope={name:`ɵɵsetNgModuleScope`,moduleName:b};static registerNgModuleType={name:`ɵɵregisterNgModuleType`,moduleName:b};static PipeDeclaration={name:`ɵɵPipeDeclaration`,moduleName:b};static definePipe={name:`ɵɵdefinePipe`,moduleName:b};static declarePipe={name:`ɵɵngDeclarePipe`,moduleName:b};static declareClassMetadata={name:`ɵɵngDeclareClassMetadata`,moduleName:b};static declareClassMetadataAsync={name:`ɵɵngDeclareClassMetadataAsync`,moduleName:b};static setClassMetadata={name:`ɵsetClassMetadata`,moduleName:b};static setClassMetadataAsync={name:`ɵsetClassMetadataAsync`,moduleName:b};static setClassDebugInfo={name:`ɵsetClassDebugInfo`,moduleName:b};static queryRefresh={name:`ɵɵqueryRefresh`,moduleName:b};static viewQuery={name:`ɵɵviewQuery`,moduleName:b};static loadQuery={name:`ɵɵloadQuery`,moduleName:b};static contentQuery={name:`ɵɵcontentQuery`,moduleName:b};static viewQuerySignal={name:`ɵɵviewQuerySignal`,moduleName:b};static contentQuerySignal={name:`ɵɵcontentQuerySignal`,moduleName:b};static queryAdvance={name:`ɵɵqueryAdvance`,moduleName:b};static twoWayProperty={name:`ɵɵtwoWayProperty`,moduleName:b};static twoWayBindingSet={name:`ɵɵtwoWayBindingSet`,moduleName:b};static twoWayListener={name:`ɵɵtwoWayListener`,moduleName:b};static declareLet={name:`ɵɵdeclareLet`,moduleName:b};static storeLet={name:`ɵɵstoreLet`,moduleName:b};static readContextLet={name:`ɵɵreadContextLet`,moduleName:b};static arrowFunction={name:`ɵɵarrowFunction`,moduleName:b};static attachSourceLocations={name:`ɵɵattachSourceLocations`,moduleName:b};static NgOnChangesFeature={name:`ɵɵNgOnChangesFeature`,moduleName:b};static ControlFeature={name:`ɵɵControlFeature`,moduleName:b};static InheritDefinitionFeature={name:`ɵɵInheritDefinitionFeature`,moduleName:b};static ProvidersFeature={name:`ɵɵProvidersFeature`,moduleName:b};static HostDirectivesFeature={name:`ɵɵHostDirectivesFeature`,moduleName:b};static ExternalStylesFeature={name:`ɵɵExternalStylesFeature`,moduleName:b};static listener={name:`ɵɵlistener`,moduleName:b};static getInheritedFactory={name:`ɵɵgetInheritedFactory`,moduleName:b};static sanitizeHtml={name:`ɵɵsanitizeHtml`,moduleName:b};static sanitizeStyle={name:`ɵɵsanitizeStyle`,moduleName:b};static validateAttribute={name:`ɵɵvalidateAttribute`,moduleName:b};static sanitizeResourceUrl={name:`ɵɵsanitizeResourceUrl`,moduleName:b};static sanitizeScript={name:`ɵɵsanitizeScript`,moduleName:b};static sanitizeUrl={name:`ɵɵsanitizeUrl`,moduleName:b};static sanitizeUrlOrResourceUrl={name:`ɵɵsanitizeUrlOrResourceUrl`,moduleName:b};static trustConstantHtml={name:`ɵɵtrustConstantHtml`,moduleName:b};static trustConstantResourceUrl={name:`ɵɵtrustConstantResourceUrl`,moduleName:b};static inputDecorator={name:`Input`,moduleName:b};static outputDecorator={name:`Output`,moduleName:b};static viewChildDecorator={name:`ViewChild`,moduleName:b};static viewChildrenDecorator={name:`ViewChildren`,moduleName:b};static contentChildDecorator={name:`ContentChild`,moduleName:b};static contentChildrenDecorator={name:`ContentChildren`,moduleName:b};static InputSignalBrandWriteType={name:`ɵINPUT_SIGNAL_BRAND_WRITE_TYPE`,moduleName:b};static UnwrapDirectiveSignalInputs={name:`ɵUnwrapDirectiveSignalInputs`,moduleName:b};static unwrapWritableSignal={name:`ɵunwrapWritableSignal`,moduleName:b};static assertType={name:`ɵassertType`,moduleName:b}}return e})();y.And,y.Bigger,y.BiggerEquals,y.BitwiseOr,y.BitwiseAnd,y.Divide,y.Assign,y.Equals,y.Identical,y.Lower,y.LowerEquals,y.Minus,y.Modulo,y.Exponentiation,y.Multiply,y.NotEquals,y.NotIdentical,y.NullishCoalesce,y.Or,y.Plus,y.In,y.InstanceOf,y.AdditionAssignment,y.SubtractionAssignment,y.MultiplicationAssignment,y.DivisionAssignment,y.RemainderAssignment,y.ExponentiationAssignment,y.AndAssignment,y.OrAssignment,y.NullishCoalesceAssignment;var Mt=class{span;sourceSpan;constructor(e,t){this.span=e,this.sourceSpan=t}toString(){return`AST`}},Nt=class extends Mt{receiver;args;argumentSpan;constructor(e,t,n,r,i){super(e,t),this.receiver=n,this.args=r,this.argumentSpan=i}visit(e,t=null){return e.visitCall(this,t)}},Pt=(function(e){return e[e.Property=0]=`Property`,e[e.Attribute=1]=`Attribute`,e[e.Class=2]=`Class`,e[e.Style=3]=`Style`,e[e.LegacyAnimation=4]=`LegacyAnimation`,e[e.TwoWay=5]=`TwoWay`,e[e.Animation=6]=`Animation`,e})(Pt||{}),Ft=`(:(where|is)\\()?`,It=`-shadowcsshost`,Lt=`-shadowcsscontext`,Rt=`[^)(]*`,zt=String.raw`(?:\(${Rt}\)|${Rt})+?`,Bt=String.raw`(?:\(${zt}\)|${Rt})+?`,Vt=String.raw`(?:\((${Bt})\))`;String.raw`(:nth-[-\w]+)`+Vt,It+Vt+``,`${Ft}`,Lt+Vt+``;var S=(function(e){return e[e.ListEnd=0]=`ListEnd`,e[e.Statement=1]=`Statement`,e[e.Variable=2]=`Variable`,e[e.ElementStart=3]=`ElementStart`,e[e.Element=4]=`Element`,e[e.ForeignComponent=5]=`ForeignComponent`,e[e.Template=6]=`Template`,e[e.ElementEnd=7]=`ElementEnd`,e[e.ContainerStart=8]=`ContainerStart`,e[e.Container=9]=`Container`,e[e.ContainerEnd=10]=`ContainerEnd`,e[e.DisableBindings=11]=`DisableBindings`,e[e.ConditionalCreate=12]=`ConditionalCreate`,e[e.ConditionalBranchCreate=13]=`ConditionalBranchCreate`,e[e.Conditional=14]=`Conditional`,e[e.EnableBindings=15]=`EnableBindings`,e[e.Text=16]=`Text`,e[e.Listener=17]=`Listener`,e[e.InterpolateText=18]=`InterpolateText`,e[e.Binding=19]=`Binding`,e[e.Property=20]=`Property`,e[e.StyleProp=21]=`StyleProp`,e[e.ClassProp=22]=`ClassProp`,e[e.StyleMap=23]=`StyleMap`,e[e.ClassMap=24]=`ClassMap`,e[e.Advance=25]=`Advance`,e[e.Pipe=26]=`Pipe`,e[e.Attribute=27]=`Attribute`,e[e.ExtractedAttribute=28]=`ExtractedAttribute`,e[e.Defer=29]=`Defer`,e[e.DeferOn=30]=`DeferOn`,e[e.DeferWhen=31]=`DeferWhen`,e[e.I18nMessage=32]=`I18nMessage`,e[e.DomProperty=33]=`DomProperty`,e[e.Namespace=34]=`Namespace`,e[e.ProjectionDef=35]=`ProjectionDef`,e[e.EnableIncrementalHydrationRuntime=36]=`EnableIncrementalHydrationRuntime`,e[e.Projection=37]=`Projection`,e[e.Content=38]=`Content`,e[e.RepeaterCreate=39]=`RepeaterCreate`,e[e.Repeater=40]=`Repeater`,e[e.TwoWayProperty=41]=`TwoWayProperty`,e[e.TwoWayListener=42]=`TwoWayListener`,e[e.DeclareLet=43]=`DeclareLet`,e[e.StoreLet=44]=`StoreLet`,e[e.I18nStart=45]=`I18nStart`,e[e.I18n=46]=`I18n`,e[e.I18nEnd=47]=`I18nEnd`,e[e.I18nExpression=48]=`I18nExpression`,e[e.I18nApply=49]=`I18nApply`,e[e.IcuStart=50]=`IcuStart`,e[e.IcuEnd=51]=`IcuEnd`,e[e.IcuPlaceholder=52]=`IcuPlaceholder`,e[e.I18nContext=53]=`I18nContext`,e[e.I18nAttributes=54]=`I18nAttributes`,e[e.SourceLocation=55]=`SourceLocation`,e[e.Animation=56]=`Animation`,e[e.AnimationString=57]=`AnimationString`,e[e.AnimationBinding=58]=`AnimationBinding`,e[e.AnimationListener=59]=`AnimationListener`,e[e.Control=60]=`Control`,e[e.ControlCreate=61]=`ControlCreate`,e})(S||{}),Ht=(function(e){return e[e.LexicalRead=0]=`LexicalRead`,e[e.Context=1]=`Context`,e[e.TrackContext=2]=`TrackContext`,e[e.ReadVariable=3]=`ReadVariable`,e[e.NextContext=4]=`NextContext`,e[e.Reference=5]=`Reference`,e[e.StoreLet=6]=`StoreLet`,e[e.ContextLetReference=7]=`ContextLetReference`,e[e.GetCurrentView=8]=`GetCurrentView`,e[e.RestoreView=9]=`RestoreView`,e[e.ResetView=10]=`ResetView`,e[e.PureFunctionExpr=11]=`PureFunctionExpr`,e[e.PureFunctionParameterExpr=12]=`PureFunctionParameterExpr`,e[e.PipeBinding=13]=`PipeBinding`,e[e.PipeBindingVariadic=14]=`PipeBindingVariadic`,e[e.SafePropertyRead=15]=`SafePropertyRead`,e[e.SafeKeyedRead=16]=`SafeKeyedRead`,e[e.SafeNavigationMigration=17]=`SafeNavigationMigration`,e[e.SafeTernaryExpr=18]=`SafeTernaryExpr`,e[e.EmptyExpr=19]=`EmptyExpr`,e[e.AssignTemporaryExpr=20]=`AssignTemporaryExpr`,e[e.ReadTemporaryExpr=21]=`ReadTemporaryExpr`,e[e.SlotLiteralExpr=22]=`SlotLiteralExpr`,e[e.ConditionalCase=23]=`ConditionalCase`,e[e.ConstCollected=24]=`ConstCollected`,e[e.TwoWayBindingSet=25]=`TwoWayBindingSet`,e[e.ForeignContent=26]=`ForeignContent`,e[e.ArrowFunction=27]=`ArrowFunction`,e})(Ht||{}),Ut=(function(e){return e[e.None=0]=`None`,e[e.AlwaysInline=1]=`AlwaysInline`,e})(Ut||{}),Wt=(function(e){return e[e.Context=0]=`Context`,e[e.Identifier=1]=`Identifier`,e[e.SavedView=2]=`SavedView`,e[e.Alias=3]=`Alias`,e})(Wt||{}),Gt=(function(e){return e[e.Attribute=0]=`Attribute`,e[e.ClassName=1]=`ClassName`,e[e.StyleProperty=2]=`StyleProperty`,e[e.Property=3]=`Property`,e[e.Template=4]=`Template`,e[e.I18n=5]=`I18n`,e[e.LegacyAnimation=6]=`LegacyAnimation`,e[e.TwoWayProperty=7]=`TwoWayProperty`,e[e.Animation=8]=`Animation`,e})(Gt||{}),Kt=(function(e){return e[e.Creation=0]=`Creation`,e[e.Postproccessing=1]=`Postproccessing`,e})(Kt||{}),qt=(function(e){return e[e.I18nText=0]=`I18nText`,e[e.I18nAttribute=1]=`I18nAttribute`,e})(qt||{}),Jt=(function(e){return e[e.None=0]=`None`,e[e.ElementTag=1]=`ElementTag`,e[e.TemplateTag=2]=`TemplateTag`,e[e.OpenTag=4]=`OpenTag`,e[e.CloseTag=8]=`CloseTag`,e[e.ExpressionIndex=16]=`ExpressionIndex`,e})(Jt||{}),Yt=(function(e){return e[e.HTML=0]=`HTML`,e[e.SVG=1]=`SVG`,e[e.Math=2]=`Math`,e})(Yt||{}),Xt=(function(e){return e[e.Idle=0]=`Idle`,e[e.Immediate=1]=`Immediate`,e[e.Timer=2]=`Timer`,e[e.Hover=3]=`Hover`,e[e.Interaction=4]=`Interaction`,e[e.Viewport=5]=`Viewport`,e[e.Never=6]=`Never`,e})(Xt||{}),Zt=(function(e){return e[e.RootI18n=0]=`RootI18n`,e[e.Icu=1]=`Icu`,e[e.Attr=2]=`Attr`,e})(Zt||{}),Qt=(function(e){return e[e.NgTemplate=0]=`NgTemplate`,e[e.Structural=1]=`Structural`,e[e.Block=2]=`Block`,e})(Qt||{}),$t=(function(e){return e[e.None=0]=`None`,e[e.InChildOperation=1]=`InChildOperation`,e[e.InArrowFunctionOperation=2]=`InArrowFunctionOperation`,e[e.InSafeNavigationMigration=4]=`InSafeNavigationMigration`,e})($t||{});S.Element,S.ElementStart,S.Container,S.ContainerStart,S.Template,S.RepeaterCreate,S.ConditionalCreate,S.ConditionalBranchCreate;var C=(function(e){return e[e.Tmpl=0]=`Tmpl`,e[e.Host=1]=`Host`,e[e.Both=2]=`Both`,e})(C||{}),en=(function(e){return e[e.Full=0]=`Full`,e[e.DomOnly=1]=`DomOnly`,e})(en||{});x.ariaProperty,x.ariaProperty,x.attribute,x.attribute,x.classProp,x.classProp,x.element,x.element,x.elementContainer,x.elementContainer,x.elementContainerEnd,x.elementContainerEnd,x.elementContainerStart,x.elementContainerStart,x.elementEnd,x.elementEnd,x.elementStart,x.elementStart,x.domProperty,x.domProperty,x.i18nExp,x.i18nExp,x.listener,x.listener,x.listener,x.listener,x.property,x.property,x.styleProp,x.styleProp,x.syntheticHostListener,x.syntheticHostListener,x.syntheticHostProperty,x.syntheticHostProperty,x.templateCreate,x.templateCreate,x.twoWayProperty,x.twoWayProperty,x.twoWayListener,x.twoWayListener,x.declareLet,x.declareLet,x.conditionalCreate,x.conditionalBranchCreate,x.conditionalBranchCreate,x.conditionalBranchCreate,x.domElement,x.domElement,x.domElementStart,x.domElementStart,x.domElementEnd,x.domElementEnd,x.domElementContainer,x.domElementContainer,x.domElementContainerStart,x.domElementContainerStart,x.domElementContainerEnd,x.domElementContainerEnd,x.domListener,x.domListener,x.domTemplate,x.domTemplate,x.animationEnter,x.animationEnter,x.animationLeave,x.animationLeave,x.animationEnterListener,x.animationEnterListener,x.animationLeaveListener,x.animationLeaveListener,y.And,y.Bigger,y.BiggerEquals,y.BitwiseOr,y.BitwiseAnd,y.Divide,y.Assign,y.Equals,y.Identical,y.Lower,y.LowerEquals,y.Minus,y.Modulo,y.Exponentiation,y.Multiply,y.NotEquals,y.NotIdentical,y.NullishCoalesce,y.Or,y.Plus,y.In,y.InstanceOf,y.AdditionAssignment,y.SubtractionAssignment,y.MultiplicationAssignment,y.DivisionAssignment,y.RemainderAssignment,y.ExponentiationAssignment,y.AndAssignment,y.OrAssignment,y.NullishCoalesceAssignment,S.Property,S.Property,S.Property,S.Attribute,S.Attribute,S.Property,S.TwoWayProperty,S.Container,S.ContainerStart,S.ContainerEnd,S.Element,S.ElementStart,S.ElementEnd,S.Template,S.ElementEnd,S.ElementStart,S.Element,S.ContainerEnd,S.ContainerStart,S.Container,S.I18nEnd,S.I18nStart,S.I18n,S.Pipe;var tn=` \f +\r \v ᠎ - \u2028\u2029   `;`${tn}`,`${tn}`;var nn=(function(e){return e[e.Character=0]=`Character`,e[e.Identifier=1]=`Identifier`,e[e.PrivateIdentifier=2]=`PrivateIdentifier`,e[e.Keyword=3]=`Keyword`,e[e.String=4]=`String`,e[e.Operator=5]=`Operator`,e[e.Number=6]=`Number`,e[e.RegExpBody=7]=`RegExpBody`,e[e.RegExpFlags=8]=`RegExpFlags`,e[e.Error=9]=`Error`,e})(nn||{}),rn=(function(e){return e[e.Plain=0]=`Plain`,e[e.TemplateLiteralPart=1]=`TemplateLiteralPart`,e[e.TemplateLiteralEnd=2]=`TemplateLiteralEnd`,e})(rn||{});nn.Character,S.StyleMap,S.ClassMap,S.StyleProp,S.ClassProp,S.Attribute,S.Property,S.Attribute,S.Control,S.DomProperty,S.DomProperty,S.Attribute,S.StyleMap,S.ClassMap,S.StyleProp,S.ClassProp,S.Listener,S.TwoWayListener,S.AnimationListener,S.StyleMap,S.ClassMap,S.StyleProp,S.ClassProp,S.Property,S.TwoWayProperty,S.DomProperty,S.Attribute,S.Animation,S.Control,Xt.Idle,x.deferOnIdle,x.deferPrefetchOnIdle,x.deferHydrateOnIdle,Xt.Immediate,x.deferOnImmediate,x.deferPrefetchOnImmediate,x.deferHydrateOnImmediate,Xt.Timer,x.deferOnTimer,x.deferPrefetchOnTimer,x.deferHydrateOnTimer,Xt.Hover,x.deferOnHover,x.deferPrefetchOnHover,x.deferHydrateOnHover,Xt.Interaction,x.deferOnInteraction,x.deferPrefetchOnInteraction,x.deferHydrateOnInteraction,Xt.Viewport,x.deferOnViewport,x.deferPrefetchOnViewport,x.deferHydrateOnViewport,Xt.Never,x.deferHydrateNever,x.deferHydrateNever,x.deferHydrateNever,x.pipeBind1,x.pipeBind2,x.pipeBind3,x.pipeBind4,x.textInterpolate,x.textInterpolate1,x.textInterpolate2,x.textInterpolate3,x.textInterpolate4,x.textInterpolate5,x.textInterpolate6,x.textInterpolate7,x.textInterpolate8,x.textInterpolateV,x.interpolate,x.interpolate1,x.interpolate2,x.interpolate3,x.interpolate4,x.interpolate5,x.interpolate6,x.interpolate7,x.interpolate8,x.interpolateV,x.pureFunction0,x.pureFunction1,x.pureFunction2,x.pureFunction3,x.pureFunction4,x.pureFunction5,x.pureFunction6,x.pureFunction7,x.pureFunction8,x.pureFunctionV,x.resolveWindow,x.resolveDocument,x.resolveBody,rt.HTML,x.sanitizeHtml,rt.RESOURCE_URL,x.sanitizeResourceUrl,rt.SCRIPT,x.sanitizeScript,rt.STYLE,x.sanitizeStyle,rt.URL,x.sanitizeUrl,rt.ATTRIBUTE_NO_BINDING,x.validateAttribute,rt.HTML,x.trustConstantHtml,rt.RESOURCE_URL,x.trustConstantResourceUrl;var an=(function(e){return e[e.None=0]=`None`,e[e.ViewContextRead=1]=`ViewContextRead`,e[e.ViewContextWrite=2]=`ViewContextWrite`,e[e.SideEffectful=4]=`SideEffectful`,e})(an||{});C.Tmpl,C.Tmpl,C.Both,C.Host,C.Tmpl,C.Tmpl,C.Tmpl,C.Both,C.Both,C.Both,C.Tmpl,C.Both,C.Both,C.Tmpl,C.Both,C.Tmpl,C.Both,C.Both,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Both,C.Both,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Both,C.Both,C.Both,C.Tmpl,C.Tmpl,C.Both,C.Tmpl,C.Tmpl,C.Tmpl,C.Both,C.Both,C.Tmpl,C.Both,C.Both,C.Both,C.Both,C.Both,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Both,C.Tmpl,C.Both,C.Tmpl,C.Both,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Tmpl,C.Both,C.Both,C.Both,Pt.Property,Gt.Property,Pt.TwoWay,Gt.TwoWayProperty,Pt.Attribute,Gt.Attribute,Pt.Class,Gt.ClassName,Pt.Style,Gt.StyleProperty,Pt.LegacyAnimation,Gt.LegacyAnimation,Pt.Animation,Gt.Animation;var on=`%COMP%`;`${on}`,`${on}`,class e{static SINGLETON=new e;static veWillInferAnyFor(t){let n=e.SINGLETON;return t instanceof Nt?t.visit(n):t.receiver.visit(n)}visitUnary(e){return e.expr.visit(this)}visitBinary(e){return e.left.visit(this)||e.right.visit(this)}visitChain(){return!1}visitConditional(e){return e.condition.visit(this)||e.trueExp.visit(this)||e.falseExp.visit(this)}visitCall(){return!0}visitSafeCall(){return!1}visitImplicitReceiver(){return!1}visitThisReceiver(){return!1}visitInterpolation(e){return e.expressions.some(e=>e.visit(this))}visitKeyedRead(){return!1}visitLiteralArray(){return!0}visitLiteralMap(){return!0}visitLiteralPrimitive(){return!1}visitPipe(){return!0}visitPrefixNot(e){return e.expression.visit(this)}visitTypeofExpression(e){return e.expression.visit(this)}visitVoidExpression(e){return e.expression.visit(this)}visitNonNullAssert(e){return e.expression.visit(this)}visitPropertyRead(){return!1}visitSafePropertyRead(){return!1}visitSafeKeyedRead(){return!1}visitTemplateLiteral(){return!1}visitTemplateLiteralElement(){return!1}visitTaggedTemplateLiteral(){return!1}visitParenthesizedExpression(e){return e.expression.visit(this)}visitRegularExpressionLiteral(){return!1}visitSpreadElement(e){return e.expression.visit(this)}visitArrowFunction(e,t){return!1}};var sn=null,cn=!1,ln=1,un=null,dn=Symbol(`SIGNAL`);function w(e){let t=sn;return sn=e,t}function fn(){return sn}var pn={version:0,lastCleanEpoch:0,dirty:!1,producers:void 0,producersTail:void 0,consumers:void 0,consumersTail:void 0,recomputing:!1,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:`unknown`,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function mn(e){if(cn)throw Error(``);if(sn===null)return;sn.consumerOnSignalRead(e);let t=sn.producersTail;if(t!==void 0&&t.producer===e)return;let n,r=sn.recomputing;if(r&&(n=t===void 0?sn.producers:t.nextProducer,n!==void 0&&n.producer===e)){sn.producersTail=n,n.lastReadVersion=e.version,n.knownValidAtEpoch=ln;return}let i=e.consumersTail;if(i!==void 0&&i.consumer===sn&&(!r||i.knownValidAtEpoch===ln))return;let a=kn(sn),o={producer:e,consumer:sn,nextProducer:n,prevConsumer:void 0,knownValidAtEpoch:ln,lastReadVersion:e.version,nextConsumer:void 0};sn.producersTail=o,t===void 0?sn.producers=o:t.nextProducer=o,a&&Dn(e,o)}function hn(){ln++}function gn(e){if((!kn(e)||e.dirty)&&(e.dirty||e.lastCleanEpoch!==ln)){if(!e.producerMustRecompute(e)&&!Tn(e)){bn(e);return}e.producerRecomputeValue(e),bn(e)}}function _n(e){if(e.consumers===void 0)return;let t=cn;cn=!0;try{for(let t=e.consumers;t!==void 0;t=t.nextConsumer){let e=t.consumer;e.dirty||yn(e)}}finally{cn=t}}function vn(){return sn?.consumerAllowSignalWrites!==!1}function yn(e){e.dirty=!0,_n(e),e.consumerMarkedDirty?.(e)}function bn(e){e.dirty=!1,e.lastCleanEpoch=ln}function xn(e){return e&&Sn(e),w(e)}function Sn(e){if(e.producersTail?.knownValidAtEpoch===ln){let t=e.producers;for(;t!==void 0;)t.knownValidAtEpoch=null,t=t.nextProducer}e.producersTail=void 0,e.recomputing=!0}function Cn(e,t){w(t),e&&wn(e)}function wn(e){e.recomputing=!1;let t=e.producersTail,n=t===void 0?e.producers:t.nextProducer;if(n!==void 0){if(kn(e))do n=On(n);while(n!==void 0);t===void 0?e.producers=void 0:t.nextProducer=void 0}}function Tn(e){for(let t=e.producers;t!==void 0;t=t.nextProducer){let e=t.producer,n=t.lastReadVersion;if(n!==e.version||(gn(e),n!==e.version))return!0}return!1}function En(e){if(kn(e)){let t=e.producers;for(;t!==void 0;)t=On(t)}e.producers=void 0,e.producersTail=void 0,e.consumers=void 0,e.consumersTail=void 0}function Dn(e,t){let n=e.consumersTail,r=kn(e);if(n===void 0?(t.nextConsumer=void 0,e.consumers=t):(t.nextConsumer=n.nextConsumer,n.nextConsumer=t),t.prevConsumer=n,e.consumersTail=t,!r)for(let t=e.producers;t!==void 0;t=t.nextProducer)Dn(t.producer,t)}function On(e){let t=e.producer,n=e.nextProducer,r=e.nextConsumer,i=e.prevConsumer;if(e.nextConsumer=void 0,e.prevConsumer=void 0,r===void 0?t.consumersTail=i:r.prevConsumer=i,i!==void 0)i.nextConsumer=r;else if(t.consumers=r,!kn(t)){let e=t.producers;for(;e!==void 0;)e=On(e)}return n}function kn(e){return e.consumerIsAlwaysLive||e.consumers!==void 0}function An(e){un?.(e)}function jn(e,t){return Object.is(e,t)}function Mn(e,t){let n=Object.create(In);n.computation=e,t!==void 0&&(n.equal=t);let r=()=>{if(gn(n),mn(n),n.value===Fn)throw n.error;return n.value};return r[dn]=n,An(n),r}var Nn=Symbol(`UNSET`),Pn=Symbol(`COMPUTING`),Fn=Symbol(`ERRORED`),In={...pn,value:Nn,dirty:!0,error:null,equal:jn,kind:`computed`,producerMustRecompute(e){return e.value===Nn||e.value===Pn},producerRecomputeValue(e){if(e.value===Pn)throw Error(``);let t=e.value;e.value=Pn;let n=xn(e),r,i=!1;try{r=e.computation(),w(null),i=t!==Nn&&t!==Fn&&r!==Fn&&e.equal(t,r)}catch(t){r=Fn,e.error=t}finally{Cn(e,n)}if(i){e.value=t;return}e.value=r,e.version++}};function Ln(){throw Error()}var Rn=Ln;function zn(e){Rn(e)}function Bn(e){Rn=e}var Vn=null;function Hn(e,t){let n=Object.create(Kn);n.value=e,t!==void 0&&(n.equal=t);let r=()=>Un(n);return r[dn]=n,An(n),[r,e=>Wn(n,e),e=>Gn(n,e)]}function Un(e){return mn(e),e.value}function Wn(e,t){vn()||zn(e),e.equal(e.value,t)||(e.value=t,qn(e))}function Gn(e,t){vn()||zn(e),Wn(e,t(e.value))}var Kn={...pn,equal:jn,value:void 0,kind:`signal`};function qn(e){e.version++,hn(),_n(e),Vn?.(e)}var Jn={...pn,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,kind:`effect`};function Yn(e){if(e.dirty=!1,e.version>0&&!Tn(e))return;e.version++;let t=xn(e);try{e.cleanup(),e.fn()}finally{Cn(e,t)}}var Xn=void 0;function Zn(){return Xn}function Qn(e){let t=Xn;return Xn=e,t}var $n=Symbol(`NotFound`);function er(e){return e===$n||e?.name===`ɵNotFound`}function tr(e,t,n){let r=Object.create(ir);r.source=e,r.computation=t,n!=null&&(r.equal=n);let i=()=>{if(gn(r),mn(r),r.value===Fn)throw r.error;return r.value};return i[dn]=r,An(r),i}function nr(e,t){gn(e),Wn(e,t),bn(e)}function rr(e,t){if(gn(e),e.value===Fn)throw e.error;Gn(e,t),bn(e)}var ir={...pn,value:Nn,dirty:!0,error:null,equal:jn,kind:`linkedSignal`,producerMustRecompute(e){return e.value===Nn||e.value===Pn},producerRecomputeValue(e){if(e.value===Pn)throw Error(``);let t=e.value;e.value=Pn;let n=xn(e),r,i=!1;try{let n=e.source(),a=t!==Nn&&t!==Fn,o=a?{source:e.sourceValue,value:t}:void 0;r=e.computation(n,o),e.sourceValue=n,w(null),i=a&&r!==Fn&&e.equal(t,r)}catch(t){r=Fn,e.error=t}finally{Cn(e,n)}if(i){e.value=t;return}e.value=r,e.version++}};function ar(e){let t=w(null);try{return e()}finally{w(t)}}var or=function(e,t){return or=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},or(e,t)};function sr(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);or(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function cr(e){var t=typeof Symbol==`function`&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length==`number`)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function lr(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-->0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function ur(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,i=n.isStopped,a=n.observers;return r||i?gr:(this.currentObservers=null,a.push(e),new hr(function(){t.currentObservers=null,mr(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,i=t.isStopped;n?e.error(r):i&&e.complete()},t.prototype.asObservable=function(){var e=new Hr;return e.source=this,e},t.create=function(e,t){return new Qr(e,t)},t}(Hr),Qr=function(e){sr(t,e);function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return t.prototype.next=function(e){var t,n;(n=(t=this.destination)?.next)==null||n.call(t,e)},t.prototype.error=function(e){var t,n;(n=(t=this.destination)?.error)==null||n.call(t,e)},t.prototype.complete=function(){var e,t;(t=(e=this.destination)?.complete)==null||t.call(e)},t.prototype._subscribe=function(e){return this.source?.subscribe(e)??gr},t}(Zr),$r=function(e){sr(t,e);function t(t){var n=e.call(this)||this;return n._value=t,n}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(t){var n=e.prototype._subscribe.call(this,t);return!n.closed&&t.next(this._value),n},t.prototype.getValue=function(){var e=this,t=e.hasError,n=e.thrownError,r=e._value;if(t)throw n;return this._throwIfClosed(),r},t.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},t}(Zr);function ei(e,t){return qr(function(n,r){var i=0;n.subscribe(Jr(r,function(n){r.next(e.call(t,n,i++))}))})}var ti=`https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss`,T=class extends Error{code;constructor(e,t){super(ri(e,t)),this.code=e}};function ni(e){return`NG0${Math.abs(e)}`}function ri(e,t){return`${ni(e)}${t?`: `+t:``}`}function ii(e){for(let t in e)if(e[t]===ii)return t;throw Error(``)}function ai(e){if(typeof e==`string`)return e;if(Array.isArray(e))return`[${e.map(ai).join(`, `)}]`;if(e==null)return``+e;let t=e.overriddenName||e.name;if(t)return`${t}`;let n=e.toString();if(n==null)return``+n;let r=n.indexOf(` +`);return r>=0?n.slice(0,r):n}function oi(e,t){return e?t?`${e} ${t}`:e:t||``}var si=ii({__forward_ref__:ii});function ci(e){return e.__forward_ref__=ci,e}function li(e){return ui(e)?e():e}function ui(e){return typeof e==`function`&&Object.hasOwn(e,si)&&e.__forward_ref__===ci}function di(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function fi(e){return pi(e,gi)}function pi(e,t){return Object.hasOwn(e,t)&&e[t]||null}function mi(e){return(e?.[gi]??null)||null}function hi(e){return e&&Object.hasOwn(e,_i)?e[_i]:null}var gi=ii({ɵprov:ii}),_i=ii({ɵinj:ii}),vi=class{_desc;ngMetadataName=`InjectionToken`;ɵprov;constructor(e,t){this._desc=e,this.ɵprov=void 0,typeof t==`number`?this.__NG_ELEMENT_ID__=t:t!==void 0&&(this.ɵprov=di({token:this,providedIn:t.providedIn||`root`,factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function yi(e){return e&&!!e.ɵproviders}var bi=ii({ɵcmp:ii}),xi=ii({ɵdir:ii}),Si=ii({ɵpipe:ii}),Ci=ii({ɵfac:ii}),wi=ii({__NG_ELEMENT_ID__:ii}),Ti=ii({__NG_ENV_ID__:ii});function Ei(e){return ki(e,`@Component`),e[bi]||null}function Di(e){return ki(e,`@Directive`),e[xi]||null}function Oi(e){return ki(e,`@Pipe`),e[Si]||null}function ki(e,t){if(e==null)throw new T(-919,!1)}function Ai(e){return typeof e==`string`?e:e==null?``:String(e)}var ji=ii({ngErrorCode:ii}),Mi=ii({ngErrorMessage:ii}),Ni=ii({ngTokenPath:ii});function Pi(e,t){return Ii(``,-200,t)}function Fi(e,t){throw new T(-201,!1)}function Ii(e,t,n){let r=new T(t,e);return r[ji]=t,r[Mi]=e,n&&(r[Ni]=n),r}function Li(e){return e[ji]}var Ri;function zi(){return Ri}function Bi(e){let t=Ri;return Ri=e,t}function Vi(e,t,n){let r=fi(e);if(r&&r.providedIn==`root`)return r.value===void 0?r.value=r.factory():r.value;if(n&8)return null;if(t!==void 0)return t;Fi(e,``)}var Hi=globalThis,Ui={},Wi=`__NG_DI_FLAG__`,Gi=class{injector;constructor(e){this.injector=e}retrieve(e,t){let n=Ji(t)||0;try{return this.injector.get(e,n&8?null:Ui,n)}catch(e){if(er(e))return e;throw e}}};function Ki(e,t=0){let n=Zn();if(n===void 0)throw new T(-203,!1);if(n===null)return Vi(e,void 0,t);{let r=Yi(t),i=n.retrieve(e,r);if(er(i)){if(r.optional)return null;throw i}return i}}function qi(e,t=0){return(zi()||Ki)(li(e),t)}function E(e,t){return qi(e,Ji(t))}function Ji(e){return e===void 0||typeof e==`number`?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Yi(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function Xi(e){let t=[];for(let n=0;nArray.isArray(e)?ta(e,t):t(e))}function na(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function ra(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function ia(e,t,n,r){let i=e.length;if(i==t)e.push(n,r);else if(i===1)e.push(r,e[0]),e[0]=n;else{for(i--,e.push(e[i-1],e[i]);i>t;){let t=i-2;e[i]=e[t],i--}e[t]=n,e[t+1]=r}}function aa(e,t,n){let r=sa(e,t);return r>=0?e[r|1]=n:(r=~r,ia(e,r,t,n)),r}function oa(e,t){let n=sa(e,t);if(n>=0)return e[n|1]}function sa(e,t){return ca(e,t,1)}function ca(e,t,n){let r=0,i=e.length>>n;for(;i!==r;){let a=r+(i-r>>1),o=e[a<t?i=a:r=a+1}return~(i<{n.push(e)};return ta(t,e=>{let t=e;va(t,a,[],r)&&(i||=[],i.push(t))}),i!==void 0&&_a(i,a),n}function _a(e,t){for(let n=0;n{t(e,r)})}}function va(e,t,n,r){if(e=li(e),!e)return!1;let i=null,a=hi(e),o=!a&&Ei(e);if(!a&&!o){let t=e.ngModule;if(a=hi(t),a)i=t;else return!1}else if(o&&!o.standalone)return!1;else i=e;let s=r.has(i);if(o){if(s)return!1;if(r.add(i),o.dependencies){let e=typeof o.dependencies==`function`?o.dependencies():o.dependencies;for(let i of e)va(i,t,n,r)}}else if(a){if(a.imports!=null&&!s){r.add(i);let e;try{ta(a.imports,i=>{va(i,t,n,r)&&(e||=[],e.push(i))})}finally{}e!==void 0&&_a(e,t)}if(!s){let e=Qi(i)||(()=>new i);t({provide:i,useFactory:e,deps:ua},i),t({provide:pa,useValue:i,multi:!0},i),t({provide:da,useValue:()=>qi(i),multi:!0},i)}let o=a.providers;if(o!=null&&!s){let n=e;ya(o,e=>{t(e,n)})}}else return!1;return i!==e&&e.providers!==void 0}function ya(e,t){for(let n of e)yi(n)&&(n=n.ɵproviders),Array.isArray(n)?ya(n,t):t(n)}var ba=ii({provide:String,useValue:ii});function xa(e){return typeof e==`object`&&!!e&&ba in e}function Sa(e){return!!(e&&e.useExisting)}function Ca(e){return!!(e&&e.useFactory)}function wa(e){return typeof e==`function`}var Ta=new vi(``),Ea={},Da={},Oa=void 0;function ka(){return Oa===void 0&&(Oa=new ma),Oa}var Aa=class{},ja=class extends Aa{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(e,t,n,r){super(),this.parent=t,this.source=n,this.scopes=r,Va(e,e=>this.processProvider(e)),this.records.set(fa,La(void 0,this)),r.has(`environment`)&&this.records.set(Aa,La(void 0,this));let i=this.records.get(Ta);i!=null&&typeof i.value==`string`&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(pa,ua,{self:!0}))}retrieve(e,t){let n=Ji(t)||0;try{return this.get(e,Ui,n)}catch(e){if(er(e))return e;throw e}}destroy(){Ia(this),this._destroyed=!0;let e=w(null);try{for(let e of this._ngOnDestroyHooks)e.ngOnDestroy();let e=this._onDestroyHooks;this._onDestroyHooks=[];for(let t of e)t()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),w(e)}}onDestroy(e){return Ia(this),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){Ia(this);let t=Qn(this),n=Bi(void 0);try{return e()}finally{Qn(t),Bi(n)}}get(e,t=Ui,n){if(Ia(this),Object.hasOwn(e,Ti))return e[Ti](this);let r=Ji(n),i=Qn(this),a=Bi(void 0);try{if(!(r&4)){let t=this.records.get(e);if(t===void 0){let n=Ba(e)&&fi(e);t=n&&this.injectableDefInScope(n)?La(Ma(e),Ea):null,this.records.set(e,t)}if(t!=null)return this.hydrate(e,t,r)}let n=r&2?ka():this.parent;return t=r&8&&t===Ui?null:t,n.get(e,t)}catch(e){let t=Li(e);throw t===-200||t===-201?new T(t,null):e}finally{Bi(a),Qn(i)}}resolveInjectorInitializers(){let e=w(null),t=Qn(this),n=Bi(void 0);try{let e=this.get(da,ua,{self:!0});for(let t of e)t()}finally{Qn(t),Bi(n),w(e)}}toString(){return`R3Injector[...]`}processProvider(e){e=li(e);let t=wa(e)?e:li(e&&e.provide),n=Pa(e);if(!wa(e)&&e.multi===!0){let n=this.records.get(t);n||(n=La(void 0,Ea,!0),n.factory=()=>Xi(n.multi),this.records.set(t,n)),t=e,n.multi.push(e)}this.records.set(t,n)}hydrate(e,t,n){let r=w(null);try{if(t.value===Da)throw Pi(``);return t.value===Ea&&(t.value=Da,t.value=t.factory(void 0,n)),typeof t.value==`object`&&t.value&&za(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{w(r)}}injectableDefInScope(e){if(!e.providedIn)return!1;let t=li(e.providedIn);return typeof t==`string`?t===`any`||this.scopes.has(t):this.injectorDefTypes.has(t)}removeOnDestroy(e){let t=this._onDestroyHooks.indexOf(e);t!==-1&&this._onDestroyHooks.splice(t,1)}};function Ma(e){let t=fi(e),n=t===null?Qi(e):t.factory;if(n!==null)return n;if(e instanceof vi)throw new T(-204,!1);if(e instanceof Function)return Na(e);throw new T(-204,!1)}function Na(e){if(e.length>0)throw new T(-204,!1);let t=mi(e);return t===null?()=>new e:()=>t.factory(e)}function Pa(e){return xa(e)?La(void 0,e.useValue):La(Fa(e),Ea)}function Fa(e,t,n){let r;if(wa(e)){let t=li(e);return Qi(t)||Ma(t)}if(xa(e))r=()=>li(e.useValue);else if(Ca(e))r=()=>e.useFactory(...Xi(e.deps||[]));else if(Sa(e))r=(t,n)=>qi(li(e.useExisting),n!==void 0&&n&8?8:void 0);else{let t=li(e&&(e.useClass||e.provide));if(Ra(e))r=()=>new t(...Xi(e.deps));else return Qi(t)||Ma(t)}return r}function Ia(e){if(e.destroyed)throw new T(-205,!1)}function La(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Ra(e){return!!e.deps}function za(e){return typeof e==`object`&&!!e&&typeof e.ngOnDestroy==`function`}function Ba(e){return typeof e==`function`||typeof e==`object`&&e.ngMetadataName===`InjectionToken`}function Va(e,t){for(let n of e)Array.isArray(n)?Va(n,t):n&&yi(n)?Va(n.ɵproviders,t):t(n)}function Ha(e,t){let n;e instanceof ja?(Ia(e),n=e):n=new Gi(e);let r=Qn(n),i=Bi(void 0);try{return t()}finally{Qn(r),Bi(i)}}function Ua(){return zi()!==void 0||Zn()!=null}var Wa=1;function Ga(e){return Array.isArray(e)&&typeof e[Wa]==`object`}function Ka(e){return Array.isArray(e)&&e[Wa]===!0}function qa(e){return!!(e.flags&4)}function Ja(e){return e.componentOffset>-1}function Ya(e){return(e.flags&1)==1}function Xa(e){return!!e.template}function Za(e){return!!(e[2]&512)}function Qa(e){return(e[2]&256)==256}var $a=(function(e){return e[e.NONE=0]=`NONE`,e[e.HTML=1]=`HTML`,e[e.STYLE=2]=`STYLE`,e[e.SCRIPT=3]=`SCRIPT`,e[e.URL=4]=`URL`,e[e.RESOURCE_URL=5]=`RESOURCE_URL`,e[e.ATTRIBUTE_NO_BINDING=6]=`ATTRIBUTE_NO_BINDING`,e})($a||{}),eo=`math`;function to(e){for(;Array.isArray(e);)e=e[0];return e}function no(e,t){return to(t[e])}function ro(e,t){return to(t[e.index])}function io(e,t){return e.data[t]}function ao(e,t){return e[t]}function oo(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function so(e,t){let n=t[e];return Ga(n)?n:n[0]}function co(e){return(e[2]&128)==128}function lo(e){return Ka(e[3])}function uo(e,t){return t==null?null:e[t]}function fo(e){e[17]=0}function po(e){e[2]&1024||(e[2]|=1024,co(e)&&_o(e))}function mo(e,t){for(;e>0;)t=t[14],e--;return t}function ho(e){return!!(e[2]&9216||e[24]?.dirty)}function go(e){e[10].changeDetectionScheduler?.notify(8),e[2]&64&&(e[2]|=1024),ho(e)&&_o(e)}function _o(e){e[10].changeDetectionScheduler?.notify(0);let t=bo(e);for(;t!==null&&!(t[2]&8192||(t[2]|=8192,!co(t)));)t=bo(t)}function vo(e,t){if(Qa(e))throw new T(911,!1);e[21]===null&&(e[21]=[]),e[21].push(t)}function yo(e,t){if(e[21]===null)return;let n=e[21].indexOf(t);n!==-1&&e[21].splice(n,1)}function bo(e){let t=e[3];return Ka(t)?t[3]:t}function xo(e){return e[7]??=[]}function So(e){return e.cleanup??=[]}function Co(e,t,n,r){let i=xo(t);i.push(n),e.firstCreatePass&&So(e).push(r,i.length-1)}var wo={lFrame:as(null),bindingsEnabled:!0,skipHydrationRootTNode:null},To=!1;function Eo(){return wo.lFrame.elementDepthCount}function Do(){wo.lFrame.elementDepthCount++}function Oo(){wo.lFrame.elementDepthCount--}function ko(){return wo.bindingsEnabled}function Ao(){return wo.skipHydrationRootTNode!==null}function jo(e){return wo.skipHydrationRootTNode===e}function Mo(){wo.skipHydrationRootTNode=null}function D(){return wo.lFrame.lView}function No(){return wo.lFrame.tView}function O(e){return wo.lFrame.contextLView=e,e[8]}function k(e){return wo.lFrame.contextLView=null,e}function Po(){let e=Fo();for(;e!==null&&e.type===64;)e=e.parent;return e}function Fo(){return wo.lFrame.currentTNode}function Io(){let e=wo.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function Lo(e,t){let n=wo.lFrame;n.currentTNode=e,n.isParent=t}function Ro(){return wo.lFrame.isParent}function zo(){wo.lFrame.isParent=!1}function Bo(){return wo.lFrame.contextLView}function Vo(){return To}function Ho(e){let t=To;return To=e,t}function Uo(){let e=wo.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function Wo(){return wo.lFrame.bindingIndex}function Go(e){return wo.lFrame.bindingIndex=e}function Ko(){return wo.lFrame.bindingIndex++}function qo(e){let t=wo.lFrame,n=t.bindingIndex;return t.bindingIndex+=e,n}function Jo(){return wo.lFrame.inI18n}function Yo(e,t){let n=wo.lFrame;n.bindingIndex=n.bindingRootIndex=e,Zo(t)}function Xo(){return wo.lFrame.currentDirectiveIndex}function Zo(e){wo.lFrame.currentDirectiveIndex=e}function Qo(e){let t=wo.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function $o(){return wo.lFrame.currentQueryIndex}function es(e){wo.lFrame.currentQueryIndex=e}function ts(e){let t=e[1];return t.type===2?t.declTNode:t.type===1?e[5]:null}function ns(e,t,n){if(n&4){let r=t,i=e;for(;r=r.parent,r===null&&!(n&1)&&(r=ts(i),!(r===null||(i=i[14],r.type&10))););if(r===null)return!1;t=r,e=i}let r=wo.lFrame=is();return r.currentTNode=t,r.lView=e,!0}function rs(e){let t=is(),n=e[1];wo.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function is(){let e=wo.lFrame,t=e===null?null:e.child;return t===null?as(e):t}function as(e){let t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return e!==null&&(e.child=t),t}function os(){let e=wo.lFrame;return wo.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var ss=os;function cs(){let e=os();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function ls(e){return(wo.lFrame.contextLView=mo(e,wo.lFrame.contextLView))[8]}function us(){return wo.lFrame.selectedIndex}function ds(e){wo.lFrame.selectedIndex=e}function fs(){let e=wo.lFrame;return io(e.tView,e.selectedIndex)}function A(){wo.lFrame.currentNamespace=`svg`}function ps(){ms()}function ms(){wo.lFrame.currentNamespace=null}function hs(){return wo.lFrame.currentNamespace}var gs=!0;function _s(){return gs}function vs(e){gs=e}function ys(e,t=null,n=null,r){let i=bs(e,t,n,r);return i.resolveInjectorInitializers(),i}function bs(e,t=null,n=null,r,i=new Set){return new ja([n||ua,ha(e)],t||ka(),null,i)}var xs=class e{static THROW_IF_NOT_FOUND=Ui;static NULL=new ma;static create(e,t){if(Array.isArray(e))return ys({name:``},t,e,``);{let t=e.name??``;return ys({name:t},e.parent,e.providers,t)}}static ɵprov=di({token:e,providedIn:`any`,factory:()=>qi(fa)});static __NG_ELEMENT_ID__=-1},Ss=new vi(``),Cs=class{static __NG_ELEMENT_ID__=Ts;static __NG_ENV_ID__=e=>e},ws=class extends Cs{_lView;constructor(e){super(),this._lView=e}get destroyed(){return Qa(this._lView)}onDestroy(e){let t=this._lView;return vo(t,e),()=>yo(t,e)}};function Ts(){return new ws(D())}var Es=new vi(``),Ds=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new $r(!1);debugTaskTracker=E(Es,{optional:!0});get hasPendingTasks(){return!this.destroyed&&this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new Hr(e=>{e.next(!1),e.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let e=this.taskId++;return this.pendingTasks.add(e),this.debugTaskTracker?.add(e),e}has(e){return this.pendingTasks.has(e)}remove(e){this.pendingTasks.delete(e),this.debugTaskTracker?.remove(e),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static ɵprov=di({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Os=class extends Zr{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(e=!1){super(),this.__isAsync=e,Ua()&&(this.destroyRef=E(Cs,{optional:!0})??void 0,this.pendingTasks=E(Ds,{optional:!0})??void 0)}emit(e){let t=w(null);try{super.next(e)}finally{w(t)}}subscribe(e,t,n){let r=e,i=t||(()=>null),a=n;if(e&&typeof e==`object`){let t=e;r=t.next?.bind(t),i=t.error?.bind(t),a=t.complete?.bind(t)}this.__isAsync&&(i=this.wrapInTimeout(i),r&&=this.wrapInTimeout(r),a&&=this.wrapInTimeout(a));let o=super.subscribe({next:r,error:i,complete:a});return e instanceof hr&&e.add(o),o}wrapInTimeout(e){return t=>{let n=this.pendingTasks?.add();setTimeout(()=>{try{e(t)}finally{n!==void 0&&this.pendingTasks?.remove(n)}})}}};function ks(...e){}function As(e){let t,n;function r(){e=ks;try{n!==void 0&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(n),t!==void 0&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame==`function`&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function js(e){return queueMicrotask(()=>e()),()=>{e=ks}}var Ms=`isAngularZone`,Ns=`isAngularZone_ID`,Ps=0,Fs=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new Os(!1);onMicrotaskEmpty=new Os(!1);onStable=new Os(!1);onError=new Os(!1);constructor(e){let{enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1,scheduleInRootZone:i=!1}=e;if(typeof Zone>`u`)throw new T(908,!1);Zone.assertZonePatched();let a=this;a._nesting=0,a._outer=a._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(a._inner=a._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(a._inner=a._inner.fork(Zone.longStackTraceZoneSpec)),a.shouldCoalesceEventChangeDetection=!r&&n,a.shouldCoalesceRunChangeDetection=r,a.callbackScheduled=!1,a.scheduleInRootZone=i,zs(a)}static isInAngularZone(){return typeof Zone<`u`&&Zone.current.get(Ms)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new T(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new T(909,!1)}run(e,t,n){return this._inner.run(e,t,n)}runTask(e,t,n,r){let i=this._inner,a=i.scheduleEventTask(`NgZoneEvent: `+r,e,Is,ks,ks);try{return i.runTask(a,t,n)}finally{i.cancelTask(a)}}runGuarded(e,t,n){return this._inner.runGuarded(e,t,n)}runOutsideAngular(e){return this._outer.run(e)}},Is={};function Ls(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Rs(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){As(()=>{e.callbackScheduled=!1,Bs(e),e.isCheckStableRunning=!0,Ls(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Bs(e)}function zs(e){let t=()=>{Rs(e)},n=Ps++;e._inner=e._inner.fork({name:`angular`,properties:{[Ms]:!0,[Ns]:n,[Ns+n]:!0},onInvokeTask:(n,r,i,a,o,s)=>{if(Ws(s))return n.invokeTask(i,a,o,s);try{return Vs(e),n.invokeTask(i,a,o,s)}finally{(e.shouldCoalesceEventChangeDetection&&a.type===`eventTask`||e.shouldCoalesceRunChangeDetection)&&t(),Hs(e)}},onInvoke:(n,r,i,a,o,s,c)=>{try{return Vs(e),n.invoke(i,a,o,s,c)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!Gs(s)&&t(),Hs(e)}},onHasTask:(t,n,r,i)=>{t.hasTask(r,i),n===r&&(i.change==`microTask`?(e._hasPendingMicrotasks=i.microTask,Bs(e),Ls(e)):i.change==`macroTask`&&(e.hasPendingMacrotasks=i.macroTask))},onHandleError:(t,n,r,i)=>(t.handleError(r,i),e.runOutsideAngular(()=>e.onError.emit(i)),!1)})}function Bs(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0)}function Vs(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Hs(e){e._nesting--,Ls(e)}var Us=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new Os;onMicrotaskEmpty=new Os;onStable=new Os;onError=new Os;run(e,t,n){return e.apply(t,n)}runGuarded(e,t,n){return e.apply(t,n)}runOutsideAngular(e){return e()}runTask(e,t,n,r){return e.apply(t,n)}};function Ws(e){return Ks(e,`__ignore_ng_zone__`)}function Gs(e){return Ks(e,`__scheduler_tick__`)}function Ks(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var qs=class{_console=console;handleError(e){this._console.error(`ERROR`,e)}},Js=new vi(``,{factory:()=>{let e=E(Fs),t=E(Aa),n;return r=>{e.runOutsideAngular(()=>{t.destroyed&&!n?setTimeout(()=>{throw r}):(n??=t.get(qs),n.handleError(r))})}}}),Ys={provide:da,useValue:()=>{E(qs,{optional:!0})},multi:!0};function j(e,t){let[n,r,i]=Hn(e,t?.equal),a=n;return a[dn],a.set=r,a.update=i,a.asReadonly=Xs.bind(a),a}function Xs(){let e=this[dn];if(e.readonlyFn===void 0){let t=()=>this();t[dn]=e,e.readonlyFn=t}return e.readonlyFn}var Zs=new vi(``,{factory:()=>Qs}),Qs=`ng`,$s=new vi(``),ec=new vi(``,{providedIn:`platform`,factory:()=>`unknown`}),tc=new vi(``,{factory:()=>E(Ss).body?.querySelector(`[ngCspNonce]`)?.getAttribute(`ngCspNonce`)||null}),nc=(()=>{class e{view;node;constructor(e,t){this.view=e,this.node=t}static __NG_ELEMENT_ID__=rc}return e})();function rc(){return new nc(D(),Po())}var ic=class{},ac=new vi(``,{factory:()=>!0}),oc=new vi(``),sc=(()=>{class e{static ɵprov=di({token:e,providedIn:`root`,factory:()=>new cc})}return e})(),cc=class{dirtyEffectCount=0;queues=new Map;add(e){this.enqueue(e),this.schedule(e)}schedule(e){e.dirty&&this.dirtyEffectCount++}remove(e){let t=e.zone,n=this.queues.get(t);n.has(e)&&(n.delete(e),e.dirty&&this.dirtyEffectCount--)}enqueue(e){let t=e.zone;this.queues.has(t)||this.queues.set(t,new Set);let n=this.queues.get(t);n.has(e)||n.add(e)}flush(){for(;this.dirtyEffectCount>0;){let e=!1;for(let[t,n]of this.queues)e||=t===null?this.flushQueue(n):t.run(()=>this.flushQueue(n));e||(this.dirtyEffectCount=0)}}flushQueue(e){let t=!1;for(let n of e)n.dirty&&(this.dirtyEffectCount--,t=!0,n.run());return t}},lc=class{[dn];constructor(e){this[dn]=e}destroy(){this[dn].destroy()}};function uc(e,t){let n=t?.injector??E(xs),r=t?.manualCleanup===!0?null:n.get(Cs),i,a=n.get(nc,null,{optional:!0}),o=n.get(ic);return a===null?i=hc(e,n.get(sc),o):(i=mc(a.view,o,e),r instanceof ws&&r._lView===a.view&&(r=null)),i.injector=n,r!==null&&(i.onDestroyFns=[r.onDestroy(()=>i.destroy())]),new lc(i)}var dc={...Jn,cleanupFns:void 0,zone:null,onDestroyFns:null,run(){let e=Ho(!1);try{Yn(this)}finally{Ho(e)}},cleanup(){if(!this.cleanupFns?.length)return;let e=w(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],w(e)}}},fc={...dc,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(En(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.scheduler.remove(this)}},pc={...dc,consumerMarkedDirty(){this.view[2]|=8192,_o(this.view),this.notifier.notify(13)},destroy(){if(En(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.view[23]?.delete(this)}};function mc(e,t,n){let r=Object.create(pc);return r.view=e,r.zone=typeof Zone<`u`?Zone.current:null,r.notifier=t,r.fn=gc(r,n),e[23]??=new Set,e[23].add(r),r.consumerMarkedDirty(r),r}function hc(e,t,n){let r=Object.create(fc);return r.fn=gc(r,e),r.scheduler=t,r.notifier=n,r.zone=typeof Zone<`u`?Zone.current:null,r.scheduler.add(r),r.notifier.notify(12),r}function gc(e,t){return()=>{t(t=>(e.cleanupFns??=[]).push(t))}}function _c(e){return typeof e==`function`&&e[dn]!==void 0}function vc(e){return _c(e)&&typeof e.set==`function`}var yc=Symbol(`InputSignalNode#UNSET`),bc={...Kn,transformFn:void 0,applyValueToInputSignal(e,t){Wn(e,t)}};function xc(e){return{toString:e}.toString()}var Sc=(function(e){return e[e.TemplateCreateStart=0]=`TemplateCreateStart`,e[e.TemplateCreateEnd=1]=`TemplateCreateEnd`,e[e.TemplateUpdateStart=2]=`TemplateUpdateStart`,e[e.TemplateUpdateEnd=3]=`TemplateUpdateEnd`,e[e.LifecycleHookStart=4]=`LifecycleHookStart`,e[e.LifecycleHookEnd=5]=`LifecycleHookEnd`,e[e.OutputStart=6]=`OutputStart`,e[e.OutputEnd=7]=`OutputEnd`,e[e.BootstrapApplicationStart=8]=`BootstrapApplicationStart`,e[e.BootstrapApplicationEnd=9]=`BootstrapApplicationEnd`,e[e.BootstrapComponentStart=10]=`BootstrapComponentStart`,e[e.BootstrapComponentEnd=11]=`BootstrapComponentEnd`,e[e.ChangeDetectionStart=12]=`ChangeDetectionStart`,e[e.ChangeDetectionEnd=13]=`ChangeDetectionEnd`,e[e.ChangeDetectionSyncStart=14]=`ChangeDetectionSyncStart`,e[e.ChangeDetectionSyncEnd=15]=`ChangeDetectionSyncEnd`,e[e.AfterRenderHooksStart=16]=`AfterRenderHooksStart`,e[e.AfterRenderHooksEnd=17]=`AfterRenderHooksEnd`,e[e.ComponentStart=18]=`ComponentStart`,e[e.ComponentEnd=19]=`ComponentEnd`,e[e.DeferBlockStateStart=20]=`DeferBlockStateStart`,e[e.DeferBlockStateEnd=21]=`DeferBlockStateEnd`,e[e.DynamicComponentStart=22]=`DynamicComponentStart`,e[e.DynamicComponentEnd=23]=`DynamicComponentEnd`,e[e.HostBindingsUpdateStart=24]=`HostBindingsUpdateStart`,e[e.HostBindingsUpdateEnd=25]=`HostBindingsUpdateEnd`,e})(Sc||{}),Cc=class{previousValue;currentValue;firstChange;constructor(e,t,n){this.previousValue=e,this.currentValue=t,this.firstChange=n}isFirstChange(){return this.firstChange}};function wc(e,t,n,r){t===null?e[n]=r:t.applyValueToInputSignal(t,r)}var Tc=null,Ec=(()=>{Tc=Oc;let e=()=>Oc;return e.ngInherit=!0,e})();function Dc(){return Tc}function Oc(e){return e.type.prototype.ngOnChanges&&(e.setInput=Ac),kc}function kc(){let e=Mc(this),t=e?.current;if(t){let n=e.previous;if(n===la)e.previous=t;else for(let e in t)n[e]=t[e];e.current=null,this.ngOnChanges(t)}}function Ac(e,t,n,r,i){let a=this.declaredInputs[r],o=Mc(e)||Nc(e,{previous:la,current:null}),s=o.current||={},c=o.previous,l=c[a];s[a]=new Cc(l&&l.currentValue,n,c===la),wc(e,t,i,n)}var jc=`__ngSimpleChanges__`;function Mc(e){return Object.hasOwn(e,jc)&&e[jc]||null}function Nc(e,t){return e[jc]=t}var Pc=[],Fc=function(e,t=null,n){for(let r=0;r=r)break}else t[c]<0&&(e[17]+=65536),(s>14>16&&(e[2]&3)===t&&(e[2]+=16384,Hc(o,a)):Hc(o,a)}var Wc=-1,Gc=class{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(e,t,n,r){this.factory=e,this.name=r,this.canSeeViewProviders=t,this.injectImpl=n}};function Kc(e){return!!(e.flags&8)}function qc(e){return!!(e.flags&16)}function Jc(e,t,n){let r=0;for(;rt){o=a-1;break}}}for(;a>16}function nl(e,t){let n=tl(e),r=t;for(;n>0;)r=r[14],n--;return r}var rl=!0;function il(e){let t=rl;return rl=e,t}var al=255,ol=5,sl=0,cl={};function ll(e,t,n){let r;typeof n==`string`?r=n.charCodeAt(0)||0:Object.hasOwn(n,wi)&&(r=n[wi]),r??=n[wi]=sl++;let i=r&al,a=1<>ol)]|=a}function ul(e,t){let n=fl(e,t);if(n!==-1)return n;let r=t[1];r.firstCreatePass&&(e.injectorIndex=t.length,dl(r.data,e),dl(t,null),dl(r.blueprint,null));let i=pl(e,t),a=e.injectorIndex;if($c(i)){let e=el(i),n=nl(i,t),r=n[1].data;for(let i=0;i<8;i++)t[a+i]=n[e+i]|r[e+i]}return t[a+8]=i,a}function dl(e,t){e.push(0,0,0,0,0,0,0,0,t)}function fl(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function pl(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,i=t;for(;i!==null;){if(r=Ol(i),r===null)return Wc;if(n++,i=i[14],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return Wc}function ml(e,t,n){ll(e,t,n)}function hl(e,t,n){if(n&8||e!==void 0)return e;Fi(t,`NodeInjector`)}function gl(e,t,n,r){if(n&8&&r===void 0&&(r=null),!(n&3)){let i=e[9],a=Bi(void 0);try{return i?i.get(t,r,n&8):Vi(t,r,n&8)}finally{Bi(a)}}return hl(r,t,n)}function _l(e,t,n,r=0,i){if(e!==null){if(t[2]&2048&&!(r&2)){let i=Dl(e,t,n,r,cl);if(i!==cl)return i}let i=vl(e,t,n,r,cl);if(i!==cl)return i}return gl(t,n,r,i)}function vl(e,t,n,r,i){let a=Sl(n);if(typeof a==`function`){if(!ns(t,e,r))return r&1?hl(i,n,r):gl(t,n,r,i);try{let e;if(e=a(r),e==null&&!(r&8))Fi(n);else return e}finally{ss()}}else if(typeof a==`number`){let i=null,o=fl(e,t),s=Wc,c=r&1?t[15][5]:null;for((o===-1||r&4)&&(s=o===-1?pl(e,t):t[o+8],s===Wc||!wl(r,!1)?o=-1:(i=t[1],o=el(s),t=nl(s,t)));o!==-1;){let e=t[1];if(Cl(a,o,e.data)){let e=yl(o,t,n,i,r,c);if(e!==cl)return e}s=t[o+8],s!==Wc&&wl(r,t[1].data[o+8]===c)&&Cl(a,o,t)?(i=e,o=el(s),t=nl(s,t)):o=-1}}return i}function yl(e,t,n,r,i,a){let o=t[1],s=o.data[e+8],c=bl(s,o,n,r==null?Ja(s)&&rl:r!=o&&!!(s.type&3),i&1&&a===s);return c===null?cl:xl(t,o,c,s,i)}function bl(e,t,n,r,i){let a=e.providerIndexes,o=t.data,s=a&1048575,c=e.directiveStart,l=e.directiveEnd,u=a>>20,d=r?s:s+u,f=i?s+u:l;for(let e=d;e=c&&t.type===n)return e}if(i){let e=o[c];if(e&&Xa(e)&&e.type===n)return c}return null}function xl(e,t,n,r,i){let a=e[n],o=t.data;if(a instanceof Gc){let s=a;if(s.resolving)throw Pi(``);let c=il(s.canSeeViewProviders);s.resolving=!0,o[n].type||o[n];let l=s.injectImpl?Bi(s.injectImpl):null;ns(e,r,0);try{a=e[n]=s.factory(void 0,i,o,e,r),t.firstCreatePass&&n>=r.directiveStart&&Ic(n,o[n],t)}finally{l!==null&&Bi(l),il(c),s.resolving=!1,ss()}}return a}function Sl(e){if(typeof e==`string`)return e.charCodeAt(0)||0;let t=Object.hasOwn(e,wi)?e[wi]:void 0;return typeof t==`number`?t>=0?t&al:El:t}function Cl(e,t,n){let r=1<>ol)]&r)}function wl(e,t){return!(e&2)&&!(e&1&&t)}var Tl=class{_tNode;_lView;constructor(e,t){this._tNode=e,this._lView=t}get(e,t,n){return _l(this._tNode,this._lView,e,Ji(n),t)}};function El(){return new Tl(Po(),D())}function Dl(e,t,n,r,i){let a=e,o=t;for(;a!==null&&o!==null&&o[2]&2048&&!Za(o);){let e=vl(a,o,n,r|2,cl);if(e!==cl)return e;r&=-5;let t=a.parent;if(!t){let e=o[20];if(e){let t=e.get(n,cl,r);if(t!==cl)return t}t=Ol(o),o=o[14]}a=t}return i}function Ol(e){let t=e[1],n=t.type;return n===2?t.declTNode:n===1?e[5]:null}function kl(e){return{token:e.token,providedIn:e.autoProvided===!1?null:`root`,factory:e.factory,value:void 0}}function Al(){return jl(Po(),D())}function jl(e,t){return new Ml(ro(e,t))}var Ml=(()=>{class e{nativeElement;constructor(e){this.nativeElement=e}static __NG_ELEMENT_ID__=Al}return e})();function Nl(e){return e instanceof Ml?e.nativeElement:e}function Pl(){return this._results[Symbol.iterator]()}var Fl=class{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new Zr}constructor(e=!1){this._emitDistinctChangesOnly=e}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,t){return this._results.reduce(e,t)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,t){this.dirty=!1;let n=ea(e);(this._changesDetected=!$i(this._results,n,t))&&(this._results=n,this.length=n.length,this.last=n[this.length-1],this.first=n[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.next(this)}onDirty(e){this._onDirty=e}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}[Symbol.iterator]=Pl};function Il(e){return(e.flags&128)==128}var Ll=(function(e){return e[e.OnPush=0]=`OnPush`,e[e.Eager=1]=`Eager`,e[e.Default=1]=`Default`,e})(Ll||{}),Rl=new Map,zl=0;function Bl(){return zl++}function Vl(e){Rl.set(e[19],e)}function Hl(e){Rl.delete(e[19])}var Ul=`__ngContext__`;function Wl(e,t){Ga(t)?(e[Ul]=t[19],Vl(t)):e[Ul]=t}function Gl(e){return ql(e[12])}function Kl(e){return ql(e[4])}function ql(e){for(;e!==null&&!Ka(e);)e=e[4];return e}var Jl=void 0;function Yl(e){Jl=e}function Xl(){if(Jl!==void 0)return Jl;if(typeof document<`u`)return document;throw new T(210,!1)}var Zl=!1,Ql=new vi(``,{factory:()=>Zl}),$l=new WeakMap;function eu(e,t){if(typeof e!=`object`||!e)return;let n=$l.get(e);n||(n=new WeakSet,$l.set(e,n)),n.add(t)}function tu(e){return(e.flags&32)==32}var nu=()=>null;function ru(e,t,n=!1){return nu(e,t,n)}function iu(e,t){let n=e.contentQueries;if(n!==null){let r=w(null);try{for(let r=0;r|^->||--!>|)/g,gu=`​$1​`;function _u(e){return e.replace(mu,e=>e.replace(hu,gu))}function vu(e,t){return e.createText(t)}function yu(e,t,n){e.setValue(t,n)}function bu(e,t){return e.createComment(_u(t))}function xu(e,t,n){return e.createElement(t,n)}function Su(e,t,n,r,i){e.insertBefore(t,n,r,i)}function Cu(e,t,n){e.appendChild(t,n)}function wu(e,t,n,r,i){r===null?Cu(e,t,n):Su(e,t,n,r,i)}function Tu(e,t,n,r){e.removeChild(null,t,n,r)}function Eu(e,t,n){e.setAttribute(t,`style`,n)}function Du(e,t,n){n===``?e.removeAttribute(t,`class`):e.setAttribute(t,`class`,n)}function Ou(e,t,n){let{mergedAttrs:r,classes:i,styles:a}=n;r!==null&&Jc(e,t,r),i!==null&&Du(e,t,i),a!==null&&Eu(e,t,a)}function ku(e){let t=Au();return t?t.sanitize($a.URL,e)||``:uu(e,`URL`)?lu(e):pu(Ai(e))}function Au(){let e=D();return e&&e[10].sanitizer}function ju(e){return e.ownerDocument.defaultView}function Mu(e){return e.ownerDocument}function Nu(e,t,n){let r=e.length;for(;;){let i=e.indexOf(t,n);if(i===-1)return i;if(i===0||e.charCodeAt(i-1)<=32){let n=t.length;if(i+n===r||e.charCodeAt(i+n)<=32)return i}n=i+1}}var Pu=`ng-template`;function Fu(e,t,n,r){let i=0;if(r){for(;i-1){let e;for(;++ia?``:i[u+1].toLowerCase(),r&2&&l!==e){if(zu(r))return!1;o=!0}}}}}return zu(r)||o}function zu(e){return!(e&1)}function Bu(e,t,n,r){if(t===null)return-1;let i=0;if(r||!n){let n=!1;for(;i-1)for(n++;n0?`="`+t+`"`:``)+`]`}else r&8?i+=`.`+o:r&4&&(i+=` `+o)}else i!==``&&!zu(o)&&(t+=Wu(a,i),i=``),r=o,a||=!zu(r);n++}return i!==``&&(t+=Wu(a,i)),t}function Ku(e){return e.map(Gu).join(`,`)}function qu(e){let t=[],n=[],r=1,i=2;for(;r!1});function $u(e){if(!e)return 0;let t=e.toLowerCase().indexOf(`ms`)>-1?1:1e3;return parseFloat(e)*t}function ed(e,t){return e.getPropertyValue(t).split(`,`).map(e=>e.trim())}function td(e){let t=ed(e,`transition-property`),n=ed(e,`transition-duration`),r=ed(e,`transition-delay`),i={propertyName:``,duration:0,animationName:void 0};for(let e=0;ei.duration&&(i.propertyName=t[e],i.duration=a)}return i}function nd(e){let t=ed(e,`animation-name`),n=ed(e,`animation-delay`),r=ed(e,`animation-duration`),i=ed(e,`animation-iteration-count`),a={animationName:``,propertyName:void 0,duration:0};for(let e=0;ea.duration&&s!==`infinite`&&(a.animationName=t[e],a.duration=o)}return a}function rd(e,t){return e!==void 0&&e.duration>t.duration}function id(e){return(e.animationName!=null||e.propertyName!=null)&&e.duration>0}function ad(e){let t=e.effect?.getTiming();if(t===void 0)return;let n=typeof t.duration==`number`?t.duration:0,r=(t.delay??0)+n,i=e.playbackRate;return i!==void 0&&i!==0&&i!==1&&(r/=Math.abs(i)),r}function od(e,t){let n=getComputedStyle(e),r=nd(n),i=td(n),a=r.duration>i.duration?r:i;rd(t.get(e),a)||id(a)&&t.set(e,a)}function sd(e,t,n){if(!n)return;let r=e.getAnimations();return r.length===0?od(e,t):cd(e,t,r)}function cd(e,t,n){let r={animationName:void 0,propertyName:void 0,duration:0};for(let e of n){if(e.effect?.getTiming()?.iterations===1/0)continue;let t=ad(e)??0,n,i;e.animationName?i=e.animationName:n=e.transitionProperty,t>=r.duration&&(r={animationName:i,propertyName:n,duration:t})}rd(t.get(e),r)||id(r)&&t.set(e,r)}var ld=new Set,ud=!1,dd=1,fd=typeof document<`u`&&typeof document?.documentElement?.getAnimations==`function`;function pd(e){return e[9].get(Qu,ud)}function md(e,t,n){let r=gd.get(e);if(r){for(let e of t)r.classList.push(e);for(let e of n)r.cleanupFns.push(e)}else gd.set(e,{classList:t,cleanupFns:n})}function hd(e){let t=gd.get(e);if(t){for(let e of t.cleanupFns)e();gd.delete(e)}_d.delete(e)}var gd=new WeakMap,_d=new WeakMap,vd=new WeakMap;function yd(e){return e?e[14]??e:null}var bd=new WeakSet;function xd(e,t,n){let r=vd.get(e);if(!r||r.length===0)return;let i=t.parentNode,a=t.previousSibling,o=yd(n);for(let e=r.length-1;e>=0;e--){let{el:n,declarationView:s}=r[e],c=n.parentNode;n===t?(r.splice(e,1),bd.add(n),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}}))):(a&&n===a||c&&i&&c!==i&&(o===null||s===null||o===s))&&(r.splice(e,1),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}})),n.parentNode?.removeChild(n))}}function Sd(e,t,n){let r=yd(n),i=vd.get(e);i?i.some(e=>e.el===t)||i.push({el:t,declarationView:r}):vd.set(e,[{el:t,declarationView:r}])}function Cd(e){let t=e[26]??={};return t.enter??=new Map}function wd(e){let t=typeof e==`function`?e():e,n=Array.isArray(t)?t:null;return typeof t==`string`&&(n=t.trim().split(/\s+/).filter(e=>e)),n}function Td(e){return e.composedPath?e.composedPath()[0]:e.target}function Ed(e,t){let n=_d.get(t);if(n===void 0)return!0;if(t!==Td(e))return!1;let r=e.animation;if(r){let e=ad(r);if(e!==void 0&&e+dd{class e{impl=null;execute(){this.impl?.execute()}static ɵprov=di({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Nd=[0,1,2,3],Pd=(()=>{class e{ngZone=E(Fs);scheduler=E(ic);errorHandler=E(qs,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){E(kd,{optional:!0})}execute(){let e=this.sequences.size>0;e&&Fc(Sc.AfterRenderHooksStart),this.executing=!0;for(let e of Nd)for(let t of this.sequences)if(!t.erroredOrDestroyed&&t.hooks[e])try{t.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>{let n=t.hooks[e];return n(t.pipelinedValue)},t.snapshot))}catch(e){t.erroredOrDestroyed=!0,this.errorHandler?.handleError(e)}this.executing=!1;for(let e of this.sequences)e.afterRun(),e.once&&(this.sequences.delete(e),e.destroy());for(let e of this.deferredRegistrations)this.sequences.add(e);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),e&&Fc(Sc.AfterRenderHooksEnd)}register(e){let{view:t}=e;t===void 0?this.executing?this.deferredRegistrations.add(e):this.addSequence(e):((t[25]??=[]).push(e),_o(t),t[2]|=8192)}addSequence(e){this.sequences.add(e),this.scheduler.notify(7)}unregister(e){this.executing&&this.sequences.has(e)?(e.erroredOrDestroyed=!0,e.pipelinedValue=void 0,e.once=!0):(this.sequences.delete(e),this.deferredRegistrations.delete(e))}maybeTrace(e,t){return t?t.run(Od.AFTER_NEXT_RENDER,e):e()}static ɵprov=di({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Fd=class{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(e,t,n,r,i,a=null){this.impl=e,this.hooks=t,this.view=n,this.once=r,this.snapshot=a,this.unregisterOnDestroy=i?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();let e=this.view?.[25];e&&(this.view[25]=e.filter(e=>e!==this))}};function Id(e,t){let n=t?.injector??E(xs);return jd(`NgAfterNextRender`),Rd(e,n,t,!0)}function Ld(e){return e instanceof Function?[void 0,void 0,e,void 0]:[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function Rd(e,t,n,r){let i=t.get(Md);i.impl??=t.get(Pd);let a=t.get(kd,null,{optional:!0}),o=n?.manualCleanup===!0?null:t.get(Cs),s=t.get(nc,null,{optional:!0}),c=new Fd(i.impl,Ld(e),s?.view,r,o,a?.snapshot(null));return i.impl.register(c),c}var zd=new vi(``,{factory:()=>{let e=E(Aa),t=new Set;return e.onDestroy(()=>t.clear()),{queue:t,isScheduled:!1,scheduler:null,injector:e}}});function Bd(e,t,n){let r=e.get(zd);if(Array.isArray(t))for(let e of t)r.queue.add(e),n?.detachedLeaveAnimationFns?.push(e);else r.queue.add(t),n?.detachedLeaveAnimationFns?.push(t);r.scheduler&&r.scheduler(e)}function Vd(e,t){let n=e.get(zd);if(Array.isArray(t))for(let e of t)n.queue.delete(e);else n.queue.delete(t)}function Hd(e,t){let n=e.get(zd);if(t.detachedLeaveAnimationFns){for(let e of t.detachedLeaveAnimationFns)n.queue.delete(e);t.detachedLeaveAnimationFns=void 0}}function Ud(e){let t=e.get(zd);t.isScheduled||=(Id(()=>{t.isScheduled=!1;for(let e of t.queue)e();t.queue.clear()},{injector:t.injector}),!0)}function Wd(e){let t=e.get(zd);t.scheduler=Ud,t.scheduler(e)}function Gd(e,t){for(let[n,r]of t)Bd(e,r.animateFns)}function Kd(e,t,n,r){let i=e?.[26]?.enter;t!==null&&i&&i.has(n.index)&&Gd(r,i)}function qd(e,t,n,r){try{n.get(fa)}catch{return r(!1)}let i=e?.[26];i?.enter?.has(t.index)&&Vd(n,i.enter.get(t.index).animateFns);let a=Jd(e,t,i);if(a.size===0){let n=!1;if(e){let r=[];Xd(e,t,r),n=r.length>0}if(!n)return r(!1)}e&&ld.add(e[19]),Bd(n,()=>Yd(e,t,i||void 0,a,r),i||void 0)}function Jd(e,t,n){let r=new Map,i=n?.leave;if(i&&i.has(t.index)&&r.set(t.index,i.get(t.index)),e&&i)for(let[n,a]of i){if(r.has(n))continue;let i=e[1].data[n].parent;for(;i;){if(i===t){r.set(n,a);break}i=i.parent}}return r}function Yd(e,t,n,r,i){let a=[];if(n&&n.leave)for(let[e]of r){if(!n.leave.has(e))continue;let t=n.leave.get(e);for(let e of t.animateFns){let{promise:t}=e();a.push(t)}n.detachedLeaveAnimationFns=void 0}if(e&&Xd(e,t,a),a.length>0){let t=n||e?.[26];if(t){let n=t.running;n&&a.push(n),t.running=Promise.allSettled(a),Qd(e,t.running,i)}else Promise.allSettled(a).then(()=>{e&&ld.delete(e[19]),i(!0)})}else e&&ld.delete(e[19]),i(!1)}function Xd(e,t,n){if(t.type&12){let r=e[t.index];if(Ka(r))for(let e=10;e{e[26]?.running===t&&(e[26].running=void 0,ld.delete(e[19])),n(!0)})}function $d(e,t,n,r,i,a,o,s){if(i!=null){let c,l=!1;Ka(i)?c=i:Ga(i)&&(l=!0,i=i[0]);let u=to(i);e===0&&r!==null?(Kd(s,r,a,n),o==null?Cu(t,r,u):Su(t,r,u,o||null,!0)):e===1&&r!==null?(Kd(s,r,a,n),Su(t,r,u,o||null,!0),xd(a,u,s)):e===2?(s?.[26]?.leave?.has(a.index)&&Sd(a,u,s),bd.delete(u),qd(s,a,n,e=>{if(bd.has(u)){bd.delete(u);return}Tu(t,u,l,e)})):e===3&&(bd.delete(u),qd(s,a,n,()=>{t.destroyNode(u)})),c!=null&&Cf(t,e,n,c,a,r,o)}}function ef(e,t){nf(e,t),t[0]=null,t[5]=null}function tf(e,t,n,r,i,a){r[0]=i,r[5]=t,bf(e,r,n,1,i,a)}function nf(e,t){t[10].changeDetectionScheduler?.notify(9),bf(e,t,t[11],2,null,null)}function rf(e){let t=e[12];if(!t)return sf(e[1],e);for(;t;){let n=null;if(Ga(t))n=t[12];else{let e=t[10];e&&(n=e)}if(!n){for(;t&&!t[4]&&t!==e;)Ga(t)&&sf(t[1],t),t=t[3];t===null&&(t=e),Ga(t)&&sf(t[1],t),n=t&&t[4]}t=n}}function af(e,t){let n=e[9],r=n.indexOf(t);n.splice(r,1)}function of(e,t){if(Qa(t))return;let n=t[11];n.destroyNode&&bf(e,t,n,3,null,null),rf(t)}function sf(e,t){if(Qa(t))return;let n=w(null);try{t[2]&=-129,t[2]|=256,t[24]&&En(t[24]),lf(e,t),cf(e,t),t[1].type===1&&t[11].destroy();let n=t[16];if(n!==null&&Ka(t[3])){n!==t[3]&&af(n,t);let r=t[18];r!==null&&r.detachView(e)}Hl(t)}finally{w(n)}}function cf(e,t){let n=e.cleanup,r=t[7];if(n!==null)for(let e=0;e=0?r[t]():r[-t].unsubscribe(),e+=2}else{let t=r[n[e+1]];n[e].call(t)}r!==null&&(t[7]=null);let i=t[21];if(i!==null){t[21]=null;for(let e=0;e27&&Nf(e,t,27,!1),Fc(o?Sc.TemplateUpdateStart:Sc.TemplateCreateStart,i,n),n(r,i)}finally{ds(a),Fc(o?Sc.TemplateUpdateEnd:Sc.TemplateCreateEnd,i,n)}}function Lf(e,t,n){Wf(e,t,n),(n.flags&64)==64&&Gf(e,t,n)}function Rf(e,t,n=ro){let r=t.localNames;if(r!==null){let i=t.index+1;for(let a=0;a{_o(e.lView)},consumerOnSignalRead(){this.lView[24]=this}};function hp(e){let t=e[24]??Object.create(gp);return t.lView=e,t}var gp={...pn,consumerIsAlwaysLive:!0,kind:`template`,consumerMarkedDirty:e=>{let t=bo(e.lView);for(;t&&!_p(t[1]);)t=bo(t);t&&po(t)},consumerOnSignalRead(){this.lView[24]=this}};function _p(e){return e.type!==2}function vp(e){if(e[23]===null)return;let t=!0;for(;t;){let n=!1;for(let t of e[23])if(t.dirty&&(n=!0,t.zone===null||Zone.current===t.zone?t.run():t.zone.run(()=>t.run()),e[23]===null))return;t=n&&!!(e[2]&8192)}}var yp=100;function bp(e,t=0){let n=e[10].rendererFactory;n.begin?.();try{xp(e,t)}finally{n.end?.()}}function xp(e,t){let n=Vo();try{Ho(!0),Dp(e,t);let n=0;for(;ho(e);){if(n===yp)throw new T(103,!1);n++,Dp(e,1)}}finally{Ho(n)}}function Sp(e,t,n,r){if(Qa(t))return;let i=t[2];rs(t);let a=!0,o=null,s=null;_p(e)?(s=dp(t),o=xn(s)):fn()===null?(a=!1,s=hp(t),o=xn(s)):t[24]&&=(En(t[24]),null);try{fo(t),Go(e.bindingStartIndex),n!==null&&If(e,t,n,2,r);let a=(i&3)==3;if(a){let n=e.preOrderCheckHooks;n!==null&&Rc(t,n,null)}else{let n=e.preOrderHooks;n!==null&&zc(t,n,0,null),Bc(t,0)}if(wp(t),vp(t),Cp(t,0),e.contentQueries!==null&&iu(e,t),a){let n=e.contentCheckHooks;n!==null&&Rc(t,n)}else{let n=e.contentHooks;n!==null&&zc(t,n,1),Bc(t,1)}kp(e,t);let o=e.components;o!==null&&Op(t,o,0);let s=e.viewQuery;if(s!==null&&au(2,s,r),a){let n=e.viewCheckHooks;n!==null&&Rc(t,n)}else{let n=e.viewHooks;n!==null&&zc(t,n,2),Bc(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[22]){for(let e of t[22])e();t[22]=null}lp(t),t[2]&=-73}catch(e){throw _o(t),e}finally{s!==null&&(Cn(s,o),a&&pp(s)),cs()}}function Cp(e,t){for(let n=Gl(e);n!==null;n=Kl(n))for(let e=10;e0&&(e[n-1][4]=r[4]);let a=ra(e,10+t);ef(r[1],r);let o=a[18];o!==null&&o.detachView(a[1]),r[3]=null,r[4]=null,r[2]&=-129}return r}function Ip(e,t,n,r){let i=10+r,a=n.length;r>0&&(n[i-1][4]=t),r-1&&(Fp(e,n),ra(t,n))}this._attachedToViewContainer=!1}of(this._lView[1],this._lView)}onDestroy(e){vo(this._lView,e)}markForCheck(){Ap(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[2]&=-129}reattach(){go(this._lView),this._lView[2]|=128}detectChanges(){this._lView[2]|=1024,bp(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new T(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let e=Za(this._lView),t=this._lView[16];t!==null&&!e&&af(t,this._lView),nf(this._lView[1],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new T(902,!1);this._appRef=e;let t=Za(this._lView),n=this._lView[16];n!==null&&!t&&Lp(n,this._lView),go(this._lView)}},zp=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=Bp;constructor(e,t,n){this._declarationLView=e,this._declarationTContainer=t,this.elementRef=n}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,t){return this.createEmbeddedViewImpl(e,t)}createEmbeddedViewImpl(e,t,n){return new Rp(ap(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:t,dehydratedView:n}))}}return e})();function Bp(){return Vp(Po(),D())}function Vp(e,t){return e.type&4?new zp(t,e,jl(e,t)):null}function Hp(e,t,n,r,i){let a=e.data[t];if(a===null)a=Up(e,t,n,r,i),Jo()&&(a.flags|=32);else if(a.type&64){a.type=n,a.value=r,a.attrs=i;let e=Io();a.injectorIndex=e===null?-1:e.injectorIndex}return Lo(a,!0),a}function Up(e,t,n,r,i){let a=Fo(),o=Ro(),s=o?a:a&&a.parent,c=e.data[t]=Gp(e,s,n,t,r,i);return Wp(e,c,a,o),c}function Wp(e,t,n,r){e.firstChild===null&&(e.firstChild=t),n!==null&&(r?n.child==null&&t.parent!==null&&(n.child=t):n.next===null&&(n.next=t,t.prev=n))}function Gp(e,t,n,r,i,a){let o=t?t.injectorIndex:-1,s=0;return Ao()&&(s|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:o,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:s,providerIndexes:0,value:i,namespace:hs(),attrs:a,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function Kp(e){let t=e[6]??[],n=e[3][11],r=[];for(let e of t)e.data.di===void 0?qp(e,n):r.push(e);e[6]=r}function qp(e,t){let n=0,r=e.firstChild;if(r){let i=e.data.r;for(;nnull,Yp=()=>null;function Xp(e,t){return Jp(e,t)}function Zp(e,t,n){return Yp(e,t,n)}var Qp=class{},$p=class{},em=(()=>{class e{static ɵprov=di({token:e,providedIn:`root`,factory:()=>null})}return e})();function tm(e){return e.debugInfo?.className||e.type.name||null}var nm={},rm=class{injector;parentInjector;constructor(e,t){this.injector=e,this.parentInjector=t}get(e,t,n){let r=this.injector.get(e,nm,n);return r!==nm||t===nm?r:this.parentInjector.get(e,t,n)}};function im(e,t,n){return e[t]=n}function am(e,t){return e[t]}function om(e,t,n){if(n===Ju)return!1;let r=e[t];return!Object.is(r,n)&&(e[t]=n,!0)}function sm(e,t,n,r){let i=om(e,t,n);return om(e,t+1,r)||i}function cm(e,t,n,r,i){let a=sm(e,t,n,r);return om(e,t+2,i)||a}function lm(e,t,n,r,i,a){let o=sm(e,t,n,r);return sm(e,t+2,i,a)||o}function um(e,t,n){return function r(i){let a=r.__ngNativeEl__;a!==void 0&&eu(i,a),Ap(Ja(e)?so(e.index,t):t,5);let o=t[8],s=dm(t,o,n,i),c=r.__ngNextListenerFn__;for(;c;)s=dm(t,o,c,i)&&s,c=c.__ngNextListenerFn__;return s}}function dm(e,t,n,r){let i=w(null);try{return Fc(Sc.OutputStart,t,n),n(r)!==!1}catch(t){return $f(e,t),!1}finally{Fc(Sc.OutputEnd,t,n),w(i)}}function fm(e,t,n,r,i,a,o,s){let c=Ya(e),l=!1,u=null;if(!r&&c&&(u=mm(t,n,a,e.index)),u!==null){let e=u.__ngLastListenerFn__||u;e.__ngNextListenerFn__=o,u.__ngLastListenerFn__=o,l=!0}else{let o=ro(e,n),c=r?r(o):o;r||(s.__ngNativeEl__=o);let l=i.listen(c,a,s);pm(a)||hm(r?t=>r(to(t[e.index])):e.index,t,n,a,s,l,!1)}return l}function pm(e){return e.startsWith(`animation`)||e.startsWith(`transition`)}function mm(e,t,n,r){let i=e.cleanup;if(i!=null)for(let e=0;er?n[r]:null}typeof a==`string`&&(e+=2)}return null}function hm(e,t,n,r,i,a,o){let s=t.firstCreatePass?So(t):null,c=xo(n),l=c.length;c.push(i,a),s&&s.push(r,e,l,(l+1)*(o?-1:1))}function gm(e,t,n,r,i,a){let o=t[n],s=t[1],c=o[s.data[n].outputs[r]].subscribe(a);hm(e.index,s,t,i,a,c,!0)}var _m=Symbol(`BINDING`),vm=new vi(``);function ym(e,t,n){let r=n?e.styles:null,i=n?e.classes:null,a=0;if(t!==null)for(let e=0;e0&&(n.directiveToIndex=new Map);for(let c=0;c0;){let n=e[--t];if(typeof n==`number`&&n<0)return n}return 0}function Nm(e,t,n){if(n){if(t.exportAs)for(let r=0;r{let[n,r,i]=e[t],a={propName:n,templateName:t,isSignal:(r&Pf.SignalBased)!==0};return i&&(a.transform=i),a})}function Vm(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function Hm(e,t,n){let r=t instanceof Aa?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new rm(n,r):n}function Um(e){let t=e.get($p,null);if(t===null)throw new T(407,!1);return{rendererFactory:t,sanitizer:e.get(em,null),changeDetectionScheduler:e.get(ic,null),ngReflect:!1,tracingService:e.get(kd,null,{optional:!0})}}function Wm(e,t,n){let r=Km(e);return xu(t,r,r===`svg`?`svg`:r===`math`?eo:n)}function Gm(e){if((e&&`localName`in e&&typeof e.localName==`string`?e.localName:e?.tagName)?.toLowerCase()===`script`)throw new T(905,!1)}function Km(e){return(e.selectors[0][0]||`div`).toLowerCase()}var qm=class{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=Bm(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=Vm(this.componentDef.outputs),this.cachedOutputs}constructor(e,t){this.componentDef=e,this.ngModule=t,this.componentType=e.type,this.selector=Ku(e.selectors),this.ngContentSelectors=e.ngContentSelectors??[],this.isBoundToModule=!!t}create(e,t,n,r,i,a,o){Fc(Sc.DynamicComponentStart);let s=w(null);try{let s=this.componentDef,c=Hm(s,r||this.ngModule,e),l=Um(c),u=l.tracingService;return u&&u.componentCreate?u.componentCreate(tm(s),()=>this.createComponentRef(l,c,t,n,i,a,o)):this.createComponentRef(l,c,t,n,i,a,o)}finally{w(s)}}createComponentRef(e,t,n,r,i,a,o){let s=this.componentDef,c=Jm(r,s,a,i),l=e.rendererFactory.createRenderer(null,s),u=r?zf(l,r,s.encapsulation,t):Wm(s,l,o??null);Gm(u);let d=t.get(vm,null),f=Ym(u,()=>t.get(Ss,null)??Xl());d&&d.addHost(f);let p=a?.some(Zm)||i?.some(e=>typeof e!=`function`&&e.bindings.some(Zm)),m=Of(null,c,null,512|Af(s),null,null,e,l,t,null,ru(u,t,!0));d&&Rm&&f instanceof ShadowRoot&&vo(m,()=>{d.removeHost(f)}),m[27]=u,rs(m);let h=null;try{let e=Fm(27,m,2,`#host`,()=>c.directiveRegistry,!0,0);Ou(l,u,e),Wl(u,m),Lf(c,m,e),ou(c,e,m),Im(c,e),n!==void 0&&$m(e,this.ngContentSelectors,n),h=so(e.index,m),m[8]=h[8],rp(c,m,null)}catch(e){throw h!==null&&Hl(h),Hl(m),e}finally{Fc(Sc.DynamicComponentEnd),cs()}return new Qm(this.componentType,m,!!p)}};function Jm(e,t,n,r){let i=e?[`ng-version`,`22.1.7`]:qu(t.selectors[0]),a=null,o=null,s=0;if(n)for(let e of n)s+=e[_m].requiredVars,e.create&&(e.targetIdx=0,(a??=[]).push(e)),e.update&&(e.targetIdx=0,(o??=[]).push(e));if(r)for(let e=0;e{if(n&1&&e)for(let t of e)t.create();if(n&2&&t)for(let e of t)e.update()}}function Zm(e){let t=e[_m].kind;return t===`input`||t===`twoWay`}var Qm=class extends Qp{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(e,t,n){super(),this._rootLView=t,this._hasInputBindings=n,this._tNode=io(t[1],27),this.location=jl(this._tNode,t),this.instance=so(this._tNode.index,t)[8],this.hostView=this.changeDetectorRef=new Rp(t,void 0),this.componentType=e}setInput(e,t){this._hasInputBindings;let n=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(e)&&Object.is(this.previousInputValues.get(e),t))return;let r=this._rootLView;ep(n,r[1],r,e,t),this.previousInputValues.set(e,t),Ap(so(n.index,r),1)}get injector(){return new Tl(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(e){this.hostView.onDestroy(e)}};function $m(e,t,n){let r=e.projection=[];for(let e=0;e{class e{static __NG_ELEMENT_ID__=th}return e})();function th(){return ah(Po(),D())}var nh=class e extends eh{_lContainer;_hostTNode;_hostLView;constructor(e,t,n){super(),this._lContainer=e,this._hostTNode=t,this._hostLView=n}get element(){return jl(this._hostTNode,this._hostLView)}get injector(){return new Tl(this._hostTNode,this._hostLView)}get parentInjector(){let e=pl(this._hostTNode,this._hostLView);if($c(e)){let t=nl(e,this._hostLView),n=el(e),r=t[1].data[n+8];return new Tl(r,t)}return new Tl(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let t=rh(this._lContainer);return t!==null&&t[e]||null}get length(){return this._lContainer.length-10}createEmbeddedView(e,t,n){let r,i;typeof n==`number`?r=n:n!=null&&(r=n.index,i=n.injector);let a=Xp(this._lContainer,e.ssrId),o=e.createEmbeddedViewImpl(t||{},i,a);return this.insertImpl(o,r,op(this._hostTNode,a)),o}createComponent(e,t,n,r,i,a,o){let s,c=t||{};s=c.index,n=c.injector,r=c.projectableNodes,i=c.environmentInjector||c.ngModuleRef,a=c.directives,o=c.bindings;let l=new qm(Ei(e)),u=n||this.parentInjector;if(!i&&l.ngModule==null){let e=this.parentInjector.get(Aa,null);e&&(i=e)}let d=Ei(l.componentType??{}),f=Xp(this._lContainer,d?.id??null),p=f?.firstChild??null,m=l.create(u,r,p,i,a,o,this._getHostElementNamespace());return this.insertImpl(m.hostView,s,op(this._hostTNode,f)),m}_getHostElementNamespace(){if(this._hostTNode.type&2){let e=this._hostTNode.parent??this._hostLView[5];return e!==null&&e.type&2&&typeof e.value==`string`&&e.value.toLowerCase()===`foreignobject`?null:e?.namespace??null}return this._hostTNode.namespace}insert(e,t){return this.insertImpl(e,t,!0)}insertImpl(t,n,r){let i=t._lView;if(lo(i)){let n=this.indexOf(t);if(n!==-1)this.detach(n);else{let n=i[3],r=new e(n,n[5],n[3]);r.detach(r.indexOf(t))}}let a=this._adjustIndex(n),o=this._lContainer;return Np(o,i,a,r),t.attachToViewContainerRef(),na(ih(o),a,t),t}move(e,t){return this.insert(e,t)}indexOf(e){let t=rh(this._lContainer);return t===null?-1:t.indexOf(e)}remove(e){let t=this._adjustIndex(e,-1),n=Fp(this._lContainer,t);n&&(ra(ih(this._lContainer),t),of(n[1],n))}detach(e){let t=this._adjustIndex(e,-1),n=Fp(this._lContainer,t);return n&&ra(ih(this._lContainer),t)!=null?new Rp(n):null}_adjustIndex(e,t=0){return e??this.length+t}};function rh(e){return e[8]}function ih(e){return e[8]||=[]}function ah(e,t){let n,r=t[e.index];return Ka(r)?n=r:(n=jp(r,t,null,e),t[e.index]=n,Mf(t,n)),sh(n,t,e,r),new nh(n,e,t)}function oh(e,t){let n=e[11],r=n.createComment(``),i=ro(t,e);return Su(n,n.parentNode(i),r,n.nextSibling(i),!1),r}var sh=uh,ch=()=>!1;function lh(e,t,n){return ch(e,t,n)}function uh(e,t,n,r){if(e[7])return;let i;i=n.type&8?to(r):oh(t,n),e[7]=i}var dh=class e{queryList;matches=null;constructor(e){this.queryList=e}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},fh=class e{queries;constructor(e=[]){this.queries=e}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries===null?n.length:t.contentQueries[0],i=[];for(let e=0;e0)r.push(o[e/2]);else{let i=a[e+1],o=t[-n];for(let e=10;ee.trim())}function Eh(e,t,n){e.queries===null&&(e.queries=new mh),e.queries.track(new hh(t,n))}function Dh(e,t){return e.queries.getByIndex(t)}function Oh(e,t){let n=e[1],r=Dh(n,t);return r.crossesNgTemplate?xh(n,e,t,[]):bh(n,e,r,t)}function kh(e,t,n){let r,i=Mn(()=>{r._dirtyCounter();let n=Nh(r,e);if(t&&n===void 0)throw new T(-951,!1);return n});return r=i[dn],r._dirtyCounter=j(0),r._flatValue=void 0,i}function Ah(e){return kh(!0,!1,e)}function jh(e){return kh(!0,!0,e)}function Mh(e,t){let n=e[dn];n._lView=D(),n._queryIndex=t,n._queryList=Sh(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(e=>e+1))}function Nh(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[2]&4)return t?void 0:ua;let i=Sh(n,r),a=Oh(n,r);return i.reset(a,Nl),t?i.first:i._changesDetected||e._flatValue===void 0?e._flatValue=i.toArray():e._flatValue}function Ph(e){return!!e&&typeof e.then==`function`}function Fh(e){return!!e&&typeof e.subscribe==`function`}var Ih=class{},Lh=class extends Ih{injector;instance=null;constructor(e){super();let t=new ja([...e.providers,{provide:Ih,useValue:this}],e.parent||ka(),e.debugName,new Set([`environment`]));this.injector=t,e.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function Rh(e,t,n=null){return new Lh({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var zh=(()=>{class e{_injector;cachedInjectors=new Map;constructor(e){this._injector=e}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){let t=ga(!1,e.type),n=t.length>0?Rh([t],this._injector,``):null;this.cachedInjectors.set(e,n)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(let e of this.cachedInjectors.values())e!==null&&e.destroy()}finally{this.cachedInjectors.clear()}}static ɵprov=di({token:e,providedIn:`environment`,factory:()=>new e(qi(Aa))})}return e})();function Bh(e){return xc(()=>{let t=Kh(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection!==Ll.Eager,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?e=>e.get(zh).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||su.Emulated,styles:e.styles||ua,_:null,schemas:e.schemas||null,tView:null,id:``};t.standalone&&jd(`NgStandalone`),qh(n);let r=e.dependencies;return n.directiveDefs=Jh(r,Vh),n.pipeDefs=Jh(r,Oi),n.id=Yh(n),n})}function Vh(e){return Ei(e)||Di(e)}function Hh(e,t){if(e==null)return la;let n={};for(let r in e)if(Object.hasOwn(e,r)){let i=e[r],a,o,s,c;Array.isArray(i)?(s=i[0],a=i[1],o=i[2]??a,c=i[3]||null):(a=i,o=i,s=Pf.None,c=null),n[a]=[r,s,c],t[a]=o}return n}function Uh(e){if(e==null)return la;let t={};for(let n in e)Object.hasOwn(e,n)&&(t[e[n]]=n);return t}function Wh(e){return xc(()=>{let t=Kh(e);return qh(t),t})}function Gh(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function Kh(e){let t={};return{type:e.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputConfig:e.inputs||la,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||ua,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,signalFormsInputPresence:null,inputs:Hh(e.inputs,t),outputs:Uh(e.outputs),debugInfo:null}}function qh(e){e.features?.forEach(t=>t(e))}function Jh(e,t){return e?()=>{let n=typeof e==`function`?e():e,r=[];for(let e of n){let n=t(e);n!==null&&r.push(n)}return r}:null}function Yh(e){let t=0,n=typeof e.consts==`function`?``:e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,n,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(let e of r.join(`|`))t=Math.imul(31,t)+e.charCodeAt(0)<<0;return t+=2147483648,`c`+t}var Xh=new vi(``),Zh=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((e,t)=>{this.resolve=e,this.reject=t});appInits=E(Xh,{optional:!0})??[];injector=E(xs);constructor(){}runInitializers(){if(this.initialized)return;let e=[];for(let t of this.appInits){let n=Ha(this.injector,t);if(Ph(n))e.push(n);else if(Fh(n)){let t=new Promise((e,t)=>{n.subscribe({complete:e,error:t})});e.push(t)}}let t=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{t()}).catch(e=>{this.reject(e)}),e.length===0&&t(),this.initialized=!0}static ɵfac=function(t){return new(t||e)};static ɵprov=kl({token:e,factory:e.ɵfac})}return e})();function Qh(e,t,n,r,i,a,o,s){if(n.firstCreatePass){e.mergedAttrs=Zc(e.mergedAttrs,e.attrs);let t=e.tView=Tf(2,e,i,a,o,n.directiveRegistry,n.pipeRegistry,null,n.schemas,n.consts,null);n.queries!==null&&(n.queries.template(n,e),t.queries=n.queries.embeddedTView(e))}s&&(e.flags|=s),Lo(e,!1);let c=ng(n,t,e,r);_s()&&hf(n,t,c,e),Wl(c,t);let l=jp(c,t,c,e);t[r+27]=l,Mf(t,l),lh(l,e,t)}function $h(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;return t.firstCreatePass?(f=Hp(t,d,4,o||null,s||null),ko()&&xm(t,e,f,uo(t.consts,l),qf),Lc(t,f)):f=t.data[d],Qh(f,e,t,n,r,i,a,c),Ya(f)&&Lf(t,e,f),l!=null&&Rf(e,f,u),f}function eg(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;if(t.firstCreatePass){if(f=Hp(t,d,4,o||null,s||null),l!=null){let e=uo(t.consts,l);f.localNames=[];for(let t=0;t{throw new T(600,``)})}var sg=10,cg=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=E(Js);afterRenderManager=E(Md);zonelessEnabled=E(ac);rootEffectScheduler=E(sc);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new Zr;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=E(Ds);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(ei(e=>!e))}constructor(){E(kd,{optional:!0})}whenStable(){let e;return new Promise(t=>{e=this.isStable.subscribe({next:e=>{e&&t()}})}).finally(()=>{e.unsubscribe()})}_injector=E(Aa);_rendererFactory=null;get injector(){return this._injector}bootstrap(e,t){return this.bootstrapImpl(e,t)}bootstrapImpl(e,t,n=xs.NULL){return this._injector.get(Fs).run(()=>{if(Fc(Sc.BootstrapComponentStart),!this._injector.get(Zh).done)throw new T(405,``);let r=Ei(e),i=this._injector.get(Ih),a=new qm(r,i);this.componentTypes.push(e);let{hostElement:o,directives:s,bindings:c}=lg(t),l=o||a.selector,u=a.create(n,[],l,i.injector,s,c),d=u.location.nativeElement,f=u.injector.get(ig,null);return f?.registerApplication(d),u.onDestroy(()=>{this.detachView(u.hostView),ug(this.components,u),f?.unregisterApplication(d)}),this._loadComponent(u),Fc(Sc.BootstrapComponentEnd,u),u})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){Fc(Sc.ChangeDetectionStart),this.tracingSnapshot===null?this.tickImpl():this.tracingSnapshot.run(Od.CHANGE_DETECTION,this.tickImpl)}tickImpl=()=>{if(this._runningTick)throw Fc(Sc.ChangeDetectionEnd),new T(101,!1);let e=w(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,w(e),this.afterTick.next(),Fc(Sc.ChangeDetectionEnd)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get($p,null,{optional:!0}));let e=0;for(;this.dirtyFlags!==0&&e++ho(e))){this.dirtyFlags|=2;return}this.dirtyFlags&=-8}attachView(e){let t=e;this._views.push(t),t.attachToAppRef(this)}detachView(e){let t=e;ug(this._views,t),t.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView);try{this.tick()}catch(e){this.internalErrorHandler(e)}this.components.push(e),this._injector.get(ag,[]).forEach(t=>t(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>ug(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new T(406,!1);let e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}static ɵfac=function(t){return new(t||e)};static ɵprov=kl({token:e,factory:e.ɵfac})}return e})();function lg(e){return e===void 0||typeof e==`string`||e instanceof Element?{hostElement:e}:e}function ug(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function N(e,t,n,r){let i=D();return om(i,Ko(),t)&&(No(),Jf(fs(),i,e,t,n,r)),N}function dg(e){if(jd(`NgAnimateEnter`),!fd)return dg;let t=D();if(pd(t))return dg;let n=Po(),r=t[9].get(Fs);return Dd(Cd(t),n,()=>fg(t,n,e,r)),Wd(t[9]),Gd(t[9],Cd(t)),dg}function fg(e,t,n,r){let i=ro(t,e),a=e[11],o=wd(n),s=[],c=!1,l=e=>{if(Td(e)!==i)return;let t=e instanceof AnimationEvent?`animationend`:`transitionend`;r.runOutsideAngular(()=>{a.listen(i,t,u)})},u=e=>{Td(e)===i&&(Ed(e,i)&&(c=!0),pg(e,i,a))};if(o&&o.length>0){r.runOutsideAngular(()=>{s.push(a.listen(i,`animationstart`,l)),s.push(a.listen(i,`transitionstart`,l))}),md(i,o,s);for(let e of o)a.addClass(i,e);r.runOutsideAngular(()=>{requestAnimationFrame(()=>{if(!c&&(sd(i,_d,fd),!_d.has(i))){for(let e of o)a.removeClass(i,e);hd(i)}})})}}function pg(e,t,n){let r=gd.get(t);if(Td(e)===t&&r&&Ed(e,t)){e.stopPropagation();for(let e of r.classList)n.removeClass(t,e);hd(t)}}var mg=class{destroy(e){}updateValue(e,t){}swap(e,t){let n=Math.min(e,t),r=Math.max(e,t),i=this.detach(r);if(r-n>1){let e=this.detach(n);this.attach(n,i),this.attach(r,e)}else this.attach(n,i)}move(e,t){this.attach(t,this.detach(e))}};function hg(e,t,n,r,i){return e===n&&Object.is(t,r)?1:Object.is(i(e,t),i(n,r))?-1:0}function gg(e,t,n,r){let i,a,o=0,s=e.length-1;if(Array.isArray(t)){w(r);let c=t.length-1;for(w(null);o<=s&&o<=c;){let r=e.at(o),l=t[o],u=hg(o,r,o,l,n);if(u!==0){u<0&&e.updateValue(o,l),o++;continue}let d=e.at(s),f=t[c],p=hg(s,d,c,f,n);if(p!==0){p<0&&e.updateValue(s,f),s--,c--;continue}let m=n(o,r),h=n(s,d),g=n(o,l);if(Object.is(g,h)){let t=n(c,f);Object.is(t,m)?(e.swap(o,s),e.updateValue(s,f),c--,s--):e.move(s,o),e.updateValue(o,l),o++;continue}if(i??=new bg,a??=yg(e,o,s,n),_g(e,i,o,g))e.updateValue(o,l),o++,s++;else if(a.has(g))i.set(m,e.detach(o)),s--;else{let n=e.create(o,t[o]);e.attach(o,n),o++,s++}}for(;o<=c;)vg(e,i,n,o,t[o]),o++}else if(t!=null){w(r);let c=t[Symbol.iterator]();w(null);let l=c.next();for(;!l.done&&o<=s;){let t=e.at(o),r=l.value,u=hg(o,t,o,r,n);if(u!==0)u<0&&e.updateValue(o,r),o++,l=c.next();else{i??=new bg,a??=yg(e,o,s,n);let u=n(o,r);if(_g(e,i,o,u))e.updateValue(o,r),o++,s++,l=c.next();else if(!a.has(u))e.attach(o,e.create(o,r)),o++,s++,l=c.next();else{let r=n(o,t);i.set(r,e.detach(o)),s--}}}for(;!l.done;)vg(e,i,n,e.length,l.value),l=c.next()}for(;o<=s;)e.destroy(e.detach(s--));i?.forEach(t=>{e.destroy(t)})}function _g(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function vg(e,t,n,r,i){if(_g(e,t,r,n(r,i)))e.updateValue(r,i);else{let t=e.create(r,i);e.attach(r,t)}}function yg(e,t,n,r){let i=new Set;for(let a=t;a<=n;a++)i.add(r(a,e.at(a)));return i}var bg=class{kvMap=new Map;_vMap=void 0;has(e){return this.kvMap.has(e)}delete(e){if(!this.has(e))return!1;let t=this.kvMap.get(e);return this._vMap!==void 0&&this._vMap.has(t)?(this.kvMap.set(e,this._vMap.get(t)),this._vMap.delete(t)):this.kvMap.delete(e),!0}get(e){return this.kvMap.get(e)}set(e,t){if(this.kvMap.has(e)){let n=this.kvMap.get(e);this._vMap===void 0&&(this._vMap=new Map);let r=this._vMap;for(;r.has(n);)n=r.get(n);r.set(n,t)}else this.kvMap.set(e,t)}forEach(e){for(let[t,n]of this.kvMap)if(e(n,t),this._vMap!==void 0){let r=this._vMap;for(;r.has(n);)n=r.get(n),e(n,t)}}};function P(e,t,n,r,i,a,o,s){jd(`NgControlFlow`);let c=D(),l=No();return eg(c,l,e,t,n,r,i,uo(l.consts,a),256,o,s),xg}function xg(e,t,n,r,i,a,o,s){jd(`NgControlFlow`);let c=D(),l=No();return eg(c,l,e,t,n,r,i,uo(l.consts,a),512,o,s),xg}function F(e,t){jd(`NgControlFlow`);let n=D(),r=Ko(),i=n[r]===Ju?-1:n[r],a=i===-1?void 0:Dg(n,27+i);if(om(n,r,e)){let r=w(null);try{if(a!==void 0&&Pp(a,0),e!==-1){let r=27+e,i=Dg(n,r),a=Mg(n[1],r),o=Zp(i,a,n);Np(i,ap(n,a,t,{dehydratedView:o}),0,op(a,o))}}finally{w(r)}}else if(a!==void 0){let e=Mp(a,0);e!==void 0&&(e[8]=t)}}var Sg=class{lContainer;$implicit;$index;constructor(e,t,n){this.lContainer=e,this.$implicit=t,this.$index=n}get $count(){return this.lContainer.length-10}};function Cg(e){return e}function wg(e,t){return t}var Tg=class{hasEmptyBlock;trackByFn;liveCollection;constructor(e,t,n){this.hasEmptyBlock=e,this.trackByFn=t,this.liveCollection=n}};function I(e,t,n,r,i,a,o,s,c,l,u,d,f){jd(`NgControlFlow`);let p=D(),m=No(),h=c!==void 0,g=D(),_=new Tg(h,s?o.bind(g[15][8]):o);g[27+e]=_,eg(p,m,e+1,t,n,r,i,uo(m.consts,a),256),h&&eg(p,m,e+2,c,l,u,d,uo(m.consts,f),512)}var Eg=class extends mg{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(e,t,n){super(),this.lContainer=e,this.hostLView=t,this.templateTNode=n}get length(){return this.lContainer.length-10}at(e){return this.getLView(e)[8].$implicit}attach(e,t){let n=t[6];this.needsIndexUpdate||=e!==this.length,Np(this.lContainer,t,e,op(this.templateTNode,n)),Og(this.lContainer,e)}detach(e){return this.needsIndexUpdate||=e!==this.length-1,kg(this.lContainer,e),Ag(this.lContainer,e)}create(e,t){let n=Xp(this.lContainer,this.templateTNode.tView.ssrId);return ap(this.hostLView,this.templateTNode,new Sg(this.lContainer,t,e),{dehydratedView:n})}destroy(e){of(e[1],e)}updateValue(e,t){this.getLView(e)[8].$implicit=t}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let e=0;e0){let e=n[9];Hd(e,r),ld.delete(n[19]),r.detachedLeaveAnimationFns=void 0}}function kg(e,t){if(e.length<=10)return;let n=e[10+t],r=n?n[26]:void 0;r&&r.leave&&r.leave.size>0&&(r.detachedLeaveAnimationFns=[])}function Ag(e,t){return Fp(e,t)}function jg(e,t){return Mp(e,t)}function Mg(e,t){return io(e,t)}function R(e,t,n){let r=D();return om(r,Ko(),t)&&(No(),Vf(fs(),r,e,t,r[11],n)),R}function Ng(e,t,n,r,i){ep(t,e,n,i?`class`:`style`,r)}function z(e,t,n,r){let i=D(),a=i[1],o=e+27,s=a.firstCreatePass?Fm(o,i,2,t,qf,ko(),n,r):a.data[o];if(Ja(s)){let n=i[10].tracingService;if(n&&n.componentCreate){let o=a.data[s.directiveStart+s.componentOffset];return n.componentCreate(tm(o),()=>(Pg(e,t,i,s,r),z))}}return Pg(e,t,i,s,r),z}function Pg(e,t,n,r,i){if(Zf(r,n,e,t,Ig),Ya(r)){let e=n[1];Lf(e,n,r),ou(e,r,n)}i!=null&&Rf(n,r)}function B(){let e=No(),t=Qf(Po());return e.firstCreatePass&&Im(e,t),jo(t)&&Mo(),Oo(),t.classesWithoutHost!=null&&Kc(t)&&Ng(e,t,D(),t.classesWithoutHost,!0),t.stylesWithoutHost!=null&&qc(t)&&Ng(e,t,D(),t.stylesWithoutHost,!1),B}function V(e,t,n,r){return z(e,t,n,r),B(),V}function H(e,t,n,r){let i=D(),a=i[1],o=e+27,s=a.firstCreatePass?Lm(o,a,2,t,n,r):a.data[o];return Zf(s,i,e,t,Ig),r!=null&&Rf(i,s),H}function U(){return jo(Qf(Po()))&&Mo(),Oo(),U}function Fg(e,t,n,r){return H(e,t,n,r),U(),Fg}var Ig=(e,t,n,r,i)=>(vs(!0),xu(t[11],r,hs()));function Lg(e,t,n){let r=D(),i=r[1],a=e+27,o=i.firstCreatePass?Fm(a,r,8,`ng-container`,qf,ko(),t,n):i.data[a];if(Zf(o,r,e,`ng-container`,Bg),Ya(o)){let e=r[1];Lf(e,r,o),ou(e,o,r)}return n!=null&&Rf(r,o),Lg}function Rg(){let e=No(),t=Qf(Po());return e.firstCreatePass&&Im(e,t),Rg}function zg(e,t,n){return Lg(e,t,n),Rg(),zg}var Bg=(e,t,n,r,i)=>(vs(!0),bu(t[11],``));function W(){return D()}function Vg(e,t,n){let r=D();return om(r,Ko(),t)&&(No(),Hf(fs(),r,e,t,r[11],n)),Vg}var Hg=void 0;function Ug(e){let t=Math.floor(Math.abs(e)),n=e.toString().replace(/^[^.]*\.?/,``).length;return t===1&&n===0?1:5}var Wg=[`en`,[[`a`,`p`],[`AM`,`PM`]],[[`AM`,`PM`]],[[`S`,`M`,`T`,`W`,`T`,`F`,`S`],[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`]],Hg,[[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]],Hg,[[`B`,`A`],[`BC`,`AD`],[`Before Christ`,`Anno Domini`]],0,[6,0],[`M/d/yy`,`MMM d, y`,`MMMM d, y`,`EEEE, MMMM d, y`],[`h:mm a`,`h:mm:ss a`,`h:mm:ss a z`,`h:mm:ss a zzzz`],[`{1}, {0}`,Hg,Hg,Hg],[`.`,`,`,`;`,`%`,`+`,`-`,`E`,`×`,`‰`,`∞`,`NaN`,`:`],[`#,##0.###`,`#,##0%`,`¤#,##0.00`,`#E0`],`USD`,`$`,`US Dollar`,{},`ltr`,Ug],Gg=Object.create(null);function Kg(e){let t=Yg(e),n=qg(t);if(n)return n;let r=t.split(`-`)[0];if(n=qg(r),n)return n;if(r===`en`)return Wg;throw new T(701,!1)}function qg(e){if(!(e in Gg)){let t=Hi.ng&&Hi.ng.common&&Hi.ng.common.locales&&Hi.ng.common.locales[e];return t!==void 0&&(Gg[e]=t),t}return Gg[e]}var Jg={LocaleId:0,DayPeriodsFormat:1,DayPeriodsStandalone:2,DaysFormat:3,DaysStandalone:4,MonthsFormat:5,MonthsStandalone:6,Eras:7,FirstDayOfWeek:8,WeekendRange:9,DateFormat:10,TimeFormat:11,DateTimeFormat:12,NumberSymbols:13,NumberFormats:14,CurrencyCode:15,CurrencySymbol:16,CurrencyName:17,Currencies:18,Directionality:19,PluralCase:20,ExtraData:21};function Yg(e){return e.toLowerCase().replace(/_/g,`-`)}var Xg=`en-US`;function Zg(e){typeof e==`string`&&e.toLowerCase().replace(/_/g,`-`)}function G(e,t,n){let r=D(),i=No(),a=Po();return $g(i,r,r[11],a,e,t,n),G}function Qg(e,t,n){let r=D(),i=No(),a=Po();return(a.type&3||n)&&fm(a,i,r,n,r[11],e,t,um(a,r,t)),Qg}function $g(e,t,n,r,i,a,o){let s=!0,c=null;if((r.type&3||o)&&(c??=um(r,t,a),fm(r,e,t,o,n,i,a,c)&&(s=!1)),s){let e=r.outputs?.[i],n=r.hostDirectiveOutputs?.[i];if(n&&n.length)for(let e=0;e>17&32767}function a_(e){return(e&2)==2}function o_(e,t){return e&131071|t<<17}function s_(e){return e|2}function c_(e){return(e&131068)>>2}function l_(e,t){return e&-131069|t<<2}function u_(e){return(e&1)==1}function d_(e){return e|1}function f_(e,t,n,r,i,a){let o=a?t.classBindings:t.styleBindings,s=i_(o),c=c_(o);e[r]=n;let l=!1,u;if(Array.isArray(n)){let e=n;u=e[1],(u===null||sa(e,u)>0)&&(l=!0)}else u=n;if(i){if(c!==0){let t=i_(e[s+1]);e[r+1]=r_(t,s),t!==0&&(e[t+1]=l_(e[t+1],r)),e[s+1]=o_(e[s+1],r)}else e[r+1]=r_(s,0),s!==0&&(e[s+1]=l_(e[s+1],r)),s=r}else e[r+1]=r_(c,0),s===0?s=r:e[c+1]=l_(e[c+1],r),c=r;l&&(e[r+1]=s_(e[r+1])),m_(e,u,r,!0),m_(e,u,r,!1),p_(t,u,e,r,a),o=r_(s,c),a?t.classBindings=o:t.styleBindings=o}function p_(e,t,n,r,i){let a=i?e.residualClasses:e.residualStyles;a!=null&&typeof t==`string`&&sa(a,t)>=0&&(n[r+1]=d_(n[r+1]))}function m_(e,t,n,r){let i=e[n+1],a=t===null,o=r?i_(i):c_(i),s=!1;for(;o!==0&&(s===!1||a);){let n=e[o],i=e[o+1];h_(n,t)&&(s=!0,e[o+1]=r?d_(i):s_(i)),o=r?i_(i):c_(i)}s&&(e[n+1]=r?s_(i):d_(i))}function h_(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t==`string`?sa(e,t)>=0:!1}var g_={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function __(e){return e.substring(g_.key,g_.keyEnd)}function v_(e){return b_(e),y_(e,x_(e,0,g_.textEnd))}function y_(e,t){let n=g_.textEnd;return n===t?-1:(t=g_.keyEnd=S_(e,g_.key=t,n),x_(e,t,n))}function b_(e){g_.key=0,g_.keyEnd=0,g_.value=0,g_.valueEnd=0,g_.textEnd=e.length}function x_(e,t,n){for(;t32;)t++;return t}function C_(e,t,n){return E_(e,t,n,!1),C_}function q(e,t){return E_(e,t,null,!0),q}function w_(e){D_(L_,T_,e,!0)}function T_(e,t){for(let n=v_(t);n>=0;n=y_(t,n))aa(e,__(t),!0)}function E_(e,t,n,r){let i=D(),a=No(),o=qo(2);if(a.firstUpdatePass&&k_(a,e,o,r),t!==Ju&&om(i,o,t)){let s=a.data[us()];z_(a,s,i,i[11],e,i[o+1]=H_(t,n),r,o)}}function D_(e,t,n,r){let i=No(),a=qo(2);i.firstUpdatePass&&k_(i,null,a,r);let o=D();if(n!==Ju&&om(o,a,n)){let s=i.data[us()];if(U_(s,r)&&!O_(i,a)){let e=r?s.classesWithoutHost:s.stylesWithoutHost;e!==null&&(n=oi(e,n||``)),Ng(i,s,o,n,r)}else R_(i,s,o,o[11],o[a+1],o[a+1]=I_(e,t,n),r,a)}}function O_(e,t){return t>=e.expandoStartIndex}function k_(e,t,n,r){let i=e.data;if(i[n+1]===null){let a=i[us()],o=O_(e,n);U_(a,r)&&t===null&&!o&&(t=!1),t=A_(i,a,t,r),f_(i,a,t,n,o,r)}}function A_(e,t,n,r){let i=Qo(e),a=r?t.residualClasses:t.residualStyles;if(i===null)(r?t.classBindings:t.styleBindings)===0&&(n=P_(null,e,t,n,r),n=F_(n,t.attrs,r),a=null);else{let o=t.directiveStylingLast;if(o===-1||e[o]!==i){if(n=P_(i,e,t,n,r),a===null){let n=j_(e,t,r);n!==void 0&&Array.isArray(n)&&(n=P_(null,e,t,n[1],r),n=F_(n,t.attrs,r),M_(e,t,r,n))}else a=N_(e,t,r)}}return a!==void 0&&(r?t.residualClasses=a:t.residualStyles=a),n}function j_(e,t,n){let r=n?t.classBindings:t.styleBindings;if(c_(r)!==0)return e[i_(r)]}function M_(e,t,n,r){let i=n?t.classBindings:t.styleBindings;e[i_(i)]=r}function N_(e,t,n){let r,i=t.directiveEnd;for(let a=1+t.directiveStylingLast;a0;){let t=e[i],a=Array.isArray(t),c=a?t[1]:t,l=c===null,u=n[i+1];u===Ju&&(u=l?ua:void 0);let d=l?oa(u,r):c===r?u:void 0;if(a&&!V_(d)&&(d=oa(t,r)),V_(d)&&(s=d,o))return s;let f=e[i+1];i=o?i_(f):c_(f)}if(t!==null){let e=a?t.residualClasses:t.residualStyles;e!=null&&(s=oa(e,r))}return s}function V_(e){return e!==void 0}function H_(e,t){return e==null||e===``||(typeof t==`string`?e=lu(e)+t:typeof e==`object`&&(e=ai(lu(e)))),e}function U_(e,t){return!!(e.flags&(t?8:16))}function J(e,t=``){let n=D(),r=No(),i=e+27,a=r.firstCreatePass?Hp(r,i,1,t,null):r.data[i],o=W_(r,n,a,t);n[i]=o,_s()&&hf(r,n,o,a),Lo(a,!1)}var W_=(e,t,n,r)=>(vs(!0),vu(t[11],r));function G_(e,t,n,r=``){return om(e,Ko(),n)?t+Ai(n)+r:Ju}function K_(e,t,n,r,i,a=``){let o=sm(e,Wo(),n,i);return qo(2),o?t+Ai(n)+r+Ai(i)+a:Ju}function q_(e,t,n,r,i,a,o,s=``){let c=cm(e,Wo(),n,i,o);return qo(3),c?t+Ai(n)+r+Ai(i)+a+Ai(o)+s:Ju}function J_(e,t,n,r,i,a,o,s,c,l=``){let u=lm(e,Wo(),n,i,o,c);return qo(4),u?t+Ai(n)+r+Ai(i)+a+Ai(o)+s+Ai(c)+l:Ju}function Y(e){return X(``,e),Y}function X(e,t,n){let r=D(),i=G_(r,e,t,n);return i!==Ju&&Z_(r,us(),i),X}function Z(e,t,n,r,i){let a=D(),o=K_(a,e,t,n,r,i);return o!==Ju&&Z_(a,us(),o),Z}function Y_(e,t,n,r,i,a,o){let s=D(),c=q_(s,e,t,n,r,i,a,o);return c!==Ju&&Z_(s,us(),c),Y_}function X_(e,t,n,r,i,a,o,s,c){let l=D(),u=J_(l,e,t,n,r,i,a,o,s,c);return u!==Ju&&Z_(l,us(),u),X_}function Z_(e,t,n){let r=no(t,e);yu(e[11],r,n)}function Q_(e,t,n){vc(t)&&(t=t());let r=D();return om(r,Ko(),t)&&(No(),Vf(fs(),r,e,t,r[11],n)),Q_}function $_(e,t){let n=vc(e);return n&&e.set(t),n}function ev(e,t){let n=D(),r=No(),i=Po();return $g(r,n,n[11],i,e,t),ev}var tv={};function nv(e){jd(`NgLet`);let t=No(),n=D(),r=e+27;return Lo(Hp(t,r,128,null,null),!1),oo(t,n,r,tv),nv}function rv(e){return oo(No(),D(),us(),e),e}function iv(e){let t=ao(Bo(),27+e);if(t===tv)throw new T(314,!1);return t}function av(e,t,n=``){return G_(D(),e,t,n)}function ov(e,t){let n=Uo()+e,r=D();return r[n]===Ju?im(r,n,t()):am(r,n)}function sv(e,t,n){return lv(D(),Uo(),e,t,n)}function cv(e,t){let n=e[t];return n===Ju?void 0:n}function lv(e,t,n,r,i,a){let o=t+n;return om(e,o,i)?im(e,o+1,a?r.call(a,i):r(i)):cv(e,o+1)}function uv(e,t,n,r,i,a,o){let s=t+n;return sm(e,s,i,a)?im(e,s+2,o?r.call(o,i,a):r(i,a)):cv(e,s+2)}function dv(e,t){let n=No(),r,i=e+27;n.firstCreatePass?(r=fv(t,n.pipeRegistry),n.data[i]=r,r.onDestroy&&(n.destroyHooks??=[]).push(i,r.onDestroy)):r=n.data[i];let a=r.factory||(r.factory=Qi(r.type,!0)),o=Bi(bm);try{let e=il(!1),t=a();return il(e),oo(n,D(),i,t),t}finally{Bi(o)}}function fv(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function pv(e,t,n){let r=e+27,i=D(),a=ao(i,r);return hv(i,r)?lv(i,Uo(),t,a.transform,n,a):a.transform(n)}function mv(e,t,n,r){let i=e+27,a=D(),o=ao(a,i);return hv(a,i)?uv(a,Uo(),t,o.transform,n,r,o):o.transform(n,r)}function hv(e,t){return e[1].data[t].pure}function gv(e,t){return Vp(e,t)}var _v=(()=>{class e{applicationErrorHandler=E(Js);appRef=E(cg);taskService=E(Ds);ngZone=E(Fs);zonelessEnabled=E(ac);tracing=E(kd,{optional:!0});zoneIsDefined=typeof Zone<`u`&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new hr;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Ns):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(E(oc,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{let e=this.taskService.add();if(!this.runningTick&&(this.cleanup(),!this.zonelessEnabled||this.appRef.includeAllTestViews)){this.taskService.remove(e);return}this.switchToMicrotaskScheduler(),this.taskService.remove(e)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{let e=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(e)})})}notify(e){if(!this.zonelessEnabled&&e===5)return;switch(e){case 0:case 2:this.appRef.dirtyFlags|=2;break;case 3:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 6:this.appRef.dirtyFlags|=2;break;case 12:this.appRef.dirtyFlags|=16;break;case 13:this.appRef.dirtyFlags|=2;break;case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;let t=this.useMicrotaskScheduler?js:As;this.pendingRenderTaskId=this.taskService.add(),this.cancelScheduledCallback=this.scheduleInRootZone?Zone.root.run(()=>t(()=>this.tick())):this.ngZone.runOutsideAngular(()=>t(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(`isAngularZone_ID`+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRef.dirtyFlags===0){this.cleanup();return}!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let e=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(e){this.applicationErrorHandler(e)}finally{this.taskService.remove(e),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let e=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(e)}}static ɵfac=function(t){return new(t||e)};static ɵprov=kl({token:e,factory:e.ɵfac})}return e})();function vv(){return[{provide:ic,useExisting:_v},{provide:Fs,useClass:Us},{provide:ac,useValue:!0}]}function yv(){return typeof $localize<`u`&&$localize.locale||`en-US`}var bv=new vi(``,{factory:()=>E(bv,{optional:!0,skipSelf:!0})||yv()}),xv=class{destroyed=!1;listeners=null;errorHandler=E(qs,{optional:!0});isEmitting=!1;hasNullListeners=!1;destroyRef=E(Cs);constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(e){if(this.destroyed)throw new T(953,!1);return(this.listeners??=[]).push(e),{unsubscribe:()=>{let t=this.listeners?this.listeners.indexOf(e):-1;t>-1&&(this.isEmitting?(this.hasNullListeners=!0,this.listeners[t]=null):this.listeners.splice(t,1))}}}emit(e){if(this.destroyed){console.warn(ri(953,!1));return}if(this.listeners===null)return;this.isEmitting=!0;let t=w(null);try{for(let t of this.listeners)try{t!==null&&t(e)}catch(e){this.errorHandler?.handleError(e)}}finally{this.hasNullListeners&&(this.hasNullListeners=!1,this.listeners&&Sv(this.listeners)),w(t),this.isEmitting=!1}}};function Sv(e){let t=e.length-1;for(;t>-1;)e[t]===null&&e.splice(t,1),t--}function Q(e,t){return Mn(e,t?.equal)}function Cv(e){return ar(e)}(class e extends Error{_brand;constructor(e){super(e)}static IDLE=new e(`IDLE`);static LOADING=new e(`LOADING`)});var wv=e=>e;function Tv(e,t){return typeof e==`function`?Ev(tr(e,wv,t?.equal),t?.debugName,t?.set):Ev(tr(e.source,e.computation,e.equal),e.debugName,e.set)}function Ev(e,t,n){let r=e[dn],i=e;if(n!==void 0){let t=e=>nr(r,e);i.set=e=>n(e,t),i.update=r=>n(r(Cv(e)),t)}else i.set=e=>nr(r,e),i.update=e=>rr(r,e);return i.asReadonly=Xs.bind(e),i}function Dv(e,t){let n=Object.create(bc);n.value=e,n.transformFn=t?.transform;function r(){if(mn(n),n.value===yc)throw new T(-950,null);return n.value}return r[dn]=n,r}function Ov(e){return new xv}function kv(e,t){return Dv(e,t)}function Av(e){return Dv(yc,e)}var $=(kv.required=Av,kv);function jv(e,t){let n=Object.create(bc),r=new xv;n.value=e;function i(){return mn(n),Mv(n.value),n.value}return i[dn]=n,i.asReadonly=Xs.bind(i),i.set=e=>{n.equal(n.value,e)||(Wn(n,e),r.emit(e))},i.update=e=>{Mv(n.value),i.set(e(n.value))},i.subscribe=r.subscribe.bind(r),i.destroyRef=r.destroyRef,i}function Mv(e){if(e===yc)throw new T(952,!1)}function Nv(e,t){return jv(e,t)}function Pv(e){return jv(yc,e)}var Fv=(Nv.required=Pv,Nv);function Iv(e,t){return Ah(t)}function Lv(e,t){return jh(t)}var Rv=(Iv.required=Lv,Iv),zv=new vi(``),Bv=new vi(``);function Vv(e){return!e.moduleRef}function Hv(e){let t=Vv(e)?e.r3Injector:e.moduleRef.injector,n=t.get(Fs);return n.run(()=>{Vv(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(Js),i;if(n.runOutsideAngular(()=>{i=n.onError.subscribe({next:r})}),Vv(e)){let n=()=>t.destroy(),r=e.platformInjector.get(zv);r.add(n),t.onDestroy(()=>{i.unsubscribe(),r.delete(n)})}else{let t=()=>e.moduleRef.destroy(),n=e.platformInjector.get(zv);n.add(t),e.moduleRef.onDestroy(()=>{ug(e.allPlatformModules,e.moduleRef),i.unsubscribe(),n.delete(t)})}return Wv(r,n,()=>{let n=t.get(Ds),r=n.add(),i=t.get(Zh);return i.runInitializers(),i.donePromise.then(()=>{if(Zg(t.get(bv,Xg)||`en-US`),!t.get(Bv,!0))return Vv(e)?t.get(cg):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(Vv(e)){let n=t.get(cg);return e.rootComponent!==void 0&&n.bootstrap(e.rootComponent),n}return Uv?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>void n.remove(r))})})}var Uv;function Wv(e,t,n){try{let r=n();return Ph(r)?r.catch(n=>{throw t.runOutsideAngular(()=>e(n)),n}):r}catch(n){throw t.runOutsideAngular(()=>e(n)),n}}var Gv=null;function Kv(e=[],t){return xs.create({name:t,providers:[{provide:Ta,useValue:`platform`},{provide:zv,useValue:new Set([()=>Gv=null])},...e]})}function qv(e=[]){if(Gv)return Gv;let t=Kv(e);return Gv=t,og(),Jv(t),t}function Jv(e){let t=e.get($s,null);Ha(e,()=>{t?.forEach(e=>e())})}function Yv(e){let{rootComponent:t,appProviders:n,platformProviders:r,platformRef:i}=e;Fc(Sc.BootstrapApplicationStart);try{let e=i?.injector??qv(r);return Hv({r3Injector:new Lh({providers:[vv(),Ys,...n||[]],parent:e,debugName:``,runEnvironmentInitializers:!1}).injector,platformInjector:e,rootComponent:t})}catch(e){return Promise.reject(e)}finally{Fc(Sc.BootstrapApplicationEnd)}}var Xv=Symbol(`NOT_SET`),Zv=new Set,Qv={...Kn,kind:`afterRenderEffectPhase`,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:Xv,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(this.sequence.lastPhase===null||this.sequence.lastPhase(mn(r),r.value),r.signal[dn]=r,r.registerCleanupFn=e=>(r.cleanup??=new Set).add(e),this.nodes[e]=r,this.hooks[e]=e=>r.phaseFn(e)}}afterRun(){super.afterRun(),this.lastPhase=null}destroy(){if(this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();super.destroy();for(let e of this.nodes)if(e)try{for(let t of e.cleanup??Zv)t()}finally{En(e)}}};function ey(e,t){let n=t?.injector??E(xs),r=n.get(ic),i=n.get(Md),a=n.get(kd,null,{optional:!0});i.impl??=n.get(Pd);let o=e;typeof o==`function`&&(o={mixedReadWrite:e});let s=n.get(nc,null,{optional:!0}),c=new $v(i.impl,[o.earlyRead,o.write,o.mixedReadWrite,o.read],s?.view,r,n,a?.snapshot(null));return i.impl.register(c),c}var ty=null;function ny(){return ty}function ry(e){ty??=e}var iy=class{},ay=(function(e){return e[e.Format=0]=`Format`,e[e.Standalone=1]=`Standalone`,e})(ay||{}),oy=(function(e){return e[e.Narrow=0]=`Narrow`,e[e.Abbreviated=1]=`Abbreviated`,e[e.Wide=2]=`Wide`,e[e.Short=3]=`Short`,e})(oy||{}),sy=(function(e){return e[e.Short=0]=`Short`,e[e.Medium=1]=`Medium`,e[e.Long=2]=`Long`,e[e.Full=3]=`Full`,e})(sy||{}),cy={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function ly(e){return Kg(e)[Jg.LocaleId]}function uy(e,t,n){let r=Kg(e);return xy(xy([r[Jg.DayPeriodsFormat],r[Jg.DayPeriodsStandalone]],t),n)}function dy(e,t,n){let r=Kg(e);return xy(xy([r[Jg.DaysFormat],r[Jg.DaysStandalone]],t),n)}function fy(e,t,n){let r=Kg(e);return xy(xy([r[Jg.MonthsFormat],r[Jg.MonthsStandalone]],t),n)}function py(e,t){let n=Kg(e)[Jg.Eras];return xy(n,t)}function my(e,t){return xy(Kg(e)[Jg.DateFormat],t)}function hy(e,t){return xy(Kg(e)[Jg.TimeFormat],t)}function gy(e,t){let n=Kg(e)[Jg.DateTimeFormat];return xy(n,t)}function _y(e,t){let n=Kg(e),r=n[Jg.NumberSymbols][t];if(r===void 0){if(t===cy.CurrencyDecimal)return n[Jg.NumberSymbols][cy.Decimal];if(t===cy.CurrencyGroup)return n[Jg.NumberSymbols][cy.Group]}return r}function vy(e){if(!e[Jg.ExtraData])throw new T(2303,!1)}function yy(e){let t=Kg(e);return vy(t),(t[Jg.ExtraData][2]||[]).map(e=>typeof e==`string`?Sy(e):[Sy(e[0]),Sy(e[1])])}function by(e,t,n){let r=Kg(e);return vy(r),xy(xy([r[Jg.ExtraData][0],r[Jg.ExtraData][1]],t)||[],n)||[]}function xy(e,t){for(let n=t;n>-1;n--)if(e[n]!==void 0)return e[n];throw new T(2304,!1)}function Sy(e){let[t,n]=e.split(`:`);return{hours:+t,minutes:+n}}var Cy=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,wy=Object.create(null),Ty=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,Ey=256;function Dy(e,t,n,r){let i=Xy(e);Oy(t),t=Ay(n,t)||t;let a=[],o;for(;t;)if(o=Ty.exec(t),o){a=a.concat(o.slice(1));let e=a.pop();if(!e)break;t=e}else{a.push(t);break}let s=i.getTimezoneOffset();r&&(s=qy(r,s),i=Yy(i,r));let c=``;return a.forEach(e=>{let t=Ky(e);c+=t?t(i,n,s):e===`''`?`'`:e.replace(/(^'|'$)/g,``).replace(/''/g,`'`)}),c}function Oy(e){if(e.length>Ey)throw new T(2300,!1)}function ky(e,t,n){let r=new Date(0);return r.setFullYear(e,t,n),r.setHours(0,0,0),r}function Ay(e,t){let n=ly(e);if(wy[n]??=Object.create(null),wy[n][t])return wy[n][t];let r=``;switch(t){case`shortDate`:r=my(e,sy.Short);break;case`mediumDate`:r=my(e,sy.Medium);break;case`longDate`:r=my(e,sy.Long);break;case`fullDate`:r=my(e,sy.Full);break;case`shortTime`:r=hy(e,sy.Short);break;case`mediumTime`:r=hy(e,sy.Medium);break;case`longTime`:r=hy(e,sy.Long);break;case`fullTime`:r=hy(e,sy.Full);break;case`short`:let t=Ay(e,`shortTime`),n=Ay(e,`shortDate`);r=jy(gy(e,sy.Short),[t,n]);break;case`medium`:let i=Ay(e,`mediumTime`),a=Ay(e,`mediumDate`);r=jy(gy(e,sy.Medium),[i,a]);break;case`long`:let o=Ay(e,`longTime`),s=Ay(e,`longDate`);r=jy(gy(e,sy.Long),[o,s]);break;case`full`:let c=Ay(e,`fullTime`),l=Ay(e,`fullDate`);r=jy(gy(e,sy.Full),[c,l])}return r&&(wy[n][t]=r),r}function jy(e,t){return t&&(e=e.replace(/\{([^}]+)}/g,function(e,n){return Object.hasOwn(t,n)?t[n]:e})),e}function My(e,t,n=`-`,r,i){let a=``;(e<0||i&&e<=0)&&(i?e=-e+1:(e=-e,a=n));let o=String(e);for(;o.length0||s>-n)&&(s+=n),e===3)s===0&&n===-12&&(s=12);else if(e===6)return Ny(s,t);let c=_y(o,cy.MinusSign);return My(s,t,c,r,i)}}function Fy(e,t){switch(e){case 0:return t.getFullYear();case 1:return t.getMonth();case 2:return t.getDate();case 3:return t.getHours();case 4:return t.getMinutes();case 5:return t.getSeconds();case 6:return t.getMilliseconds();case 7:return t.getDay();default:throw new T(2301,!1)}}function Iy(e,t,n=ay.Format,r=!1){return function(i,a){return Ly(i,a,e,t,n,r)}}function Ly(e,t,n,r,i,a){switch(n){case 2:return fy(t,i,r)[e.getMonth()];case 1:return dy(t,i,r)[e.getDay()];case 0:let n=e.getHours(),o=e.getMinutes();if(a){let e=yy(t),a=by(t,i,r),s=e.findIndex(e=>{if(Array.isArray(e)){let[t,r]=e,i=n>=t.hours&&o>=t.minutes,a=n0?Math.floor(i/60):Math.ceil(i/60);switch(e){case 0:return(i>=0?`+`:``)+My(o,2,a)+My(Math.abs(i%60),2,a);case 1:return`GMT`+(i>=0?`+`:``)+My(o,1,a);case 2:return`GMT`+(i>=0?`+`:``)+My(o,2,a)+`:`+My(Math.abs(i%60),2,a);case 3:return r===0?`Z`:(i>=0?`+`:``)+My(o,2,a)+`:`+My(Math.abs(i%60),2,a);default:throw new T(2310,!1)}}}var zy=0,By=4;function Vy(e){let t=ky(e,zy,1).getDay();return ky(e,0,1+(t<=By?By:11)-t)}function Hy(e){let t=e.getDay(),n=t===0?-3:By-t;return ky(e.getFullYear(),e.getMonth(),e.getDate()+n)}function Uy(e,t=!1){return function(n,r){let i;if(t){let e=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,t=n.getDate();i=1+Math.floor((t+e)/7)}else{let e=Hy(n),t=Vy(e.getFullYear()),r=e.getTime()-t.getTime();i=1+Math.round(r/6048e5)}return My(i,e,_y(r,cy.MinusSign))}}function Wy(e,t=!1){return function(n,r){return My(Hy(n).getFullYear(),e,_y(r,cy.MinusSign),t)}}var Gy=Object.create(null);function Ky(e){if(Gy[e])return Gy[e];let t;switch(e){case`G`:case`GG`:case`GGG`:t=Iy(3,oy.Abbreviated);break;case`GGGG`:t=Iy(3,oy.Wide);break;case`GGGGG`:t=Iy(3,oy.Narrow);break;case`y`:t=Py(0,1,0,!1,!0);break;case`yy`:t=Py(0,2,0,!0,!0);break;case`yyy`:t=Py(0,3,0,!1,!0);break;case`yyyy`:t=Py(0,4,0,!1,!0);break;case`Y`:t=Wy(1);break;case`YY`:t=Wy(2,!0);break;case`YYY`:t=Wy(3);break;case`YYYY`:t=Wy(4);break;case`M`:case`L`:t=Py(1,1,1);break;case`MM`:case`LL`:t=Py(1,2,1);break;case`MMM`:t=Iy(2,oy.Abbreviated);break;case`MMMM`:t=Iy(2,oy.Wide);break;case`MMMMM`:t=Iy(2,oy.Narrow);break;case`LLL`:t=Iy(2,oy.Abbreviated,ay.Standalone);break;case`LLLL`:t=Iy(2,oy.Wide,ay.Standalone);break;case`LLLLL`:t=Iy(2,oy.Narrow,ay.Standalone);break;case`w`:t=Uy(1);break;case`ww`:t=Uy(2);break;case`W`:t=Uy(1,!0);break;case`d`:t=Py(2,1);break;case`dd`:t=Py(2,2);break;case`c`:case`cc`:t=Py(7,1);break;case`ccc`:t=Iy(1,oy.Abbreviated,ay.Standalone);break;case`cccc`:t=Iy(1,oy.Wide,ay.Standalone);break;case`ccccc`:t=Iy(1,oy.Narrow,ay.Standalone);break;case`cccccc`:t=Iy(1,oy.Short,ay.Standalone);break;case`E`:case`EE`:case`EEE`:t=Iy(1,oy.Abbreviated);break;case`EEEE`:t=Iy(1,oy.Wide);break;case`EEEEE`:t=Iy(1,oy.Narrow);break;case`EEEEEE`:t=Iy(1,oy.Short);break;case`a`:case`aa`:case`aaa`:t=Iy(0,oy.Abbreviated);break;case`aaaa`:t=Iy(0,oy.Wide);break;case`aaaaa`:t=Iy(0,oy.Narrow);break;case`b`:case`bb`:case`bbb`:t=Iy(0,oy.Abbreviated,ay.Standalone,!0);break;case`bbbb`:t=Iy(0,oy.Wide,ay.Standalone,!0);break;case`bbbbb`:t=Iy(0,oy.Narrow,ay.Standalone,!0);break;case`B`:case`BB`:case`BBB`:t=Iy(0,oy.Abbreviated,ay.Format,!0);break;case`BBBB`:t=Iy(0,oy.Wide,ay.Format,!0);break;case`BBBBB`:t=Iy(0,oy.Narrow,ay.Format,!0);break;case`h`:t=Py(3,1,-12);break;case`hh`:t=Py(3,2,-12);break;case`H`:t=Py(3,1);break;case`HH`:t=Py(3,2);break;case`m`:t=Py(4,1);break;case`mm`:t=Py(4,2);break;case`s`:t=Py(5,1);break;case`ss`:t=Py(5,2);break;case`S`:t=Py(6,1);break;case`SS`:t=Py(6,2);break;case`SSS`:t=Py(6,3);break;case`Z`:case`ZZ`:case`ZZZ`:t=Ry(0);break;case`ZZZZZ`:t=Ry(3);break;case`O`:case`OO`:case`OOO`:case`z`:case`zz`:case`zzz`:t=Ry(1);break;case`OOOO`:case`ZZZZ`:case`zzzz`:t=Ry(2);break;default:return null}return Gy[e]=t,t}function qy(e,t){e=e.replace(/:/g,``);let n=Date.parse(`Jan 01, 1970 00:00:00 `+e)/6e4;return isNaN(n)?t:n}function Jy(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function Yy(e,t,n){let r=e.getTimezoneOffset();return Jy(e,-1*(qy(t,r)-r))}function Xy(e){if(Qy(e))return e;if(typeof e==`number`&&!isNaN(e))return new Date(e);if(typeof e==`string`){if(e=e.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(e)){let[t,n=1,r=1]=e.split(`-`).map(e=>+e);return ky(t,n-1,r)}let t=parseFloat(e);if(!isNaN(e-t))return new Date(t);let n;if(n=e.match(Cy))return Zy(n)}let t=new Date(e);if(!Qy(t))throw new T(2311,!1);return t}function Zy(e){let t=new Date(0),n=0,r=0,i=e[8]?t.setUTCFullYear:t.setFullYear,a=e[8]?t.setUTCHours:t.setHours;e[9]&&(n=Number(e[9]+e[10]),r=Number(e[9]+e[11])),i.call(t,Number(e[1]),Number(e[2])-1,Number(e[3]));let o=Number(e[4]||0)-n,s=Number(e[5]||0)-r,c=Number(e[6]||0),l=Math.floor(parseFloat(`0.`+(e[7]||0))*1e3);return a.call(t,o,s,c,l),t}function Qy(e){return e instanceof Date&&!isNaN(e.valueOf())}var $y=(()=>{class e{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=E(xs);constructor(e){this._viewContainerRef=e}ngOnChanges(e){if(this._shouldRecreateView(e)){let e=this._viewContainerRef;if(this._viewRef&&e.remove(e.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let t=this._createContextForwardProxy();this._viewRef=e.createEmbeddedView(this.ngTemplateOutlet,t,{injector:this._getInjector()})}}_getInjector(){return this.ngTemplateOutletInjector===`outlet`?this.injector:this.ngTemplateOutletInjector??void 0}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,t,n)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,t,n):!1,get:(e,t,n)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,t,n)}})}static ɵfac=function(t){return new(t||e)(bm(eh))};static ɵdir=Wh({type:e,selectors:[[``,`ngTemplateOutlet`,``]],inputs:{ngTemplateOutletContext:`ngTemplateOutletContext`,ngTemplateOutlet:`ngTemplateOutlet`,ngTemplateOutletInjector:`ngTemplateOutletInjector`},features:[Ec]})}return e})();function eb(e,t){return new T(2100,!1)}var tb=`mediumDate`,nb=new vi(``),rb=new vi(``),ib=(()=>{class e{locale;defaultTimezone;defaultOptions;constructor(e,t,n){this.locale=e,this.defaultTimezone=t,this.defaultOptions=n}transform(t,n,r,i){if(t==null||t===``||t!==t)return null;try{let e=n??this.defaultOptions?.dateFormat??tb,a=r??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return Dy(t,e,i||this.locale,a)}catch(t){throw eb(e,t.message)}}static ɵfac=function(t){return new(t||e)(bm(bv,16),bm(nb,24),bm(rb,24))};static ɵpipe=Gh({name:`date`,type:e,pure:!0})}return e})(),ab=(()=>{class e{transform(e){return JSON.stringify(e,null,2)}static ɵfac=function(t){return new(t||e)};static ɵpipe=Gh({name:`json`,type:e,pure:!1})}return e})();function ob(e,t){t=encodeURIComponent(t);for(let n of e.split(`;`)){let e=n.indexOf(`=`),[r,i]=e==-1?[n,``]:[n.slice(0,e),n.slice(e+1)];if(r.trim()!==t)continue;let a=i;try{a=decodeURIComponent(i)}catch{}return a.length>1&&a[0]===`"`&&a[a.length-1]===`"`&&(a=a.slice(1,-1)),a}return null}var sb=`browser`,cb=class{_doc;constructor(e){this._doc=e}manager},lb=(()=>{class e extends cb{constructor(e){super(e)}supports(e){return!0}addEventListener(e,t,n,r){return e.addEventListener(t,n,r),()=>this.removeEventListener(e,t,n,r)}removeEventListener(e,t,n,r){return e.removeEventListener(t,n,r)}static ɵfac=function(t){return new(t||e)(qi(Ss))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),ub=new vi(``),db=(()=>{class e{_zone;_plugins;_eventNameToPlugin=new Map;constructor(e,t){this._zone=t,e.forEach(e=>{e.manager=this});let n=e.filter(e=>!(e instanceof lb));this._plugins=n.slice().reverse();let r=e.find(e=>e instanceof lb);r&&this._plugins.push(r)}addEventListener(e,t,n,r){return this._findPluginFor(t).addEventListener(e,t,n,r)}getZone(){return this._zone}_findPluginFor(e){let t=this._eventNameToPlugin.get(e);if(t)return t;if(t=this._plugins.find(t=>t.supports(e)),!t)throw new T(-5101,!1);return this._eventNameToPlugin.set(e,t),t}static ɵfac=function(t){return new(t||e)(qi(ub),qi(Fs))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),fb=`ng-app-id`;function pb(e){for(let t of e)t.remove()}function mb(e,t){let n=t.createElement(`style`);return n.textContent=e,n}function hb(e,t,n,r){let i=e.head?.querySelectorAll(`style[${fb}="${t}"],link[${fb}="${t}"]`);if(!i||i.length===0)return!1;for(let e of i)e.removeAttribute(fb),e instanceof HTMLLinkElement?r.set(e.href.slice(e.href.lastIndexOf(`/`)+1),{usage:0,elements:[e]}):e.textContent&&n.set(e.textContent,{usage:0,elements:[e]});return!0}function gb(e,t){let n=t.createElement(`link`);return n.setAttribute(`rel`,`stylesheet`),n.setAttribute(`href`,e),n}var _b=(()=>{class e{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(e,t,n,r={}){this.doc=e,this.appId=t,this.nonce=n,hb(e,t,this.inline,this.external)&&this.hosts.add(e.head)}addStyles(e,t){for(let t of e)this.addUsage(t,this.inline,mb);t?.forEach(e=>this.addUsage(e,this.external,gb))}removeStyles(e,t){for(let t of e)this.removeUsage(t,this.inline);t?.forEach(e=>this.removeUsage(e,this.external))}addUsage(e,t,n){let r=t.get(e);r?r.usage++:t.set(e,{usage:1,elements:[...this.hosts].map(t=>this.addElement(t,n(e,this.doc)))})}removeUsage(e,t){let n=t.get(e);n&&(n.usage--,n.usage<=0&&(pb(n.elements),t.delete(e)))}ngOnDestroy(){for(let[,{elements:e}]of[...this.inline,...this.external])pb(e);this.hosts.clear()}addHost(e){if(!this.hosts.has(e)){this.hosts.add(e);for(let[t,{elements:n}]of this.inline)n.push(this.addElement(e,mb(t,this.doc)));for(let[t,{elements:n}]of this.external)n.push(this.addElement(e,gb(t,this.doc)))}}removeHost(e){this.hosts.delete(e);for(let t of[...this.inline.values(),...this.external.values()]){let n=[];for(let r of t.elements)r.parentNode===e?r.remove():n.push(r);t.elements=n}}addElement(e,t){return this.nonce&&t.setAttribute(`nonce`,this.nonce),e.appendChild(t)}static ɵfac=function(t){return new(t||e)(qi(Ss),qi(Zs),qi(tc,8),qi(ec))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),vb={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`,math:`http://www.w3.org/1998/Math/MathML`},yb=/%COMP%/g,bb=`%COMP%`,xb=`_nghost-${bb}`,Sb=`_ngcontent-${bb}`,Cb=!0,wb=new vi(``,{factory:()=>Cb}),Tb=new vi(``);function Eb(e){return Sb.replace(yb,e)}function Db(e){return xb.replace(yb,e)}function Ob(e,t){return t.map(t=>t.replace(yb,e))}var kb=(()=>{class e{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;cssVarNamespace;constructor(e,t,n,r,i,a,o=null,s=null,c=null){this.eventManager=e,this.sharedStylesHost=t,this.appId=n,this.removeStylesOnCompDestroy=r,this.doc=i,this.ngZone=a,this.nonce=o,this.tracingService=s,this.cssVarNamespace=c??``,this.defaultRenderer=new Ab(e,i,a,this.tracingService,this.cssVarNamespace)}createRenderer(e,t){if(!e||!t)return this.defaultRenderer;let n=this.getOrCreateRenderer(e,t);return n instanceof Pb?n.applyToHost(e):n instanceof Nb&&n.applyStyles(),n}getOrCreateRenderer(e,t){let n=this.rendererByCompId,r=n.get(t.id);if(!r){let i=this.doc,a=this.ngZone,o=this.eventManager,s=this.sharedStylesHost,c=this.removeStylesOnCompDestroy,l=this.tracingService;switch(t.encapsulation){case su.Emulated:r=new Pb(o,s,t,this.appId,c,i,a,l,this.cssVarNamespace);break;case su.ShadowDom:return new Mb(o,e,t,i,a,this.nonce,l,this.cssVarNamespace,s);case su.ExperimentalIsolatedShadowDom:return new Mb(o,e,t,i,a,this.nonce,l,this.cssVarNamespace);default:r=new Nb(o,s,t,c,i,a,l,this.cssVarNamespace)}n.set(t.id,r)}return r}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(e){this.rendererByCompId.delete(e)}static ɵfac=function(t){return new(t||e)(qi(db),qi(vm),qi(Zs),qi(wb),qi(Ss),qi(Fs),qi(tc),qi(kd,8),qi(Tb,8))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),Ab=class{eventManager;doc;ngZone;tracingService;cssVarNamespace;data=Object.create(null);throwOnSyntheticProps=!0;constructor(e,t,n,r,i=``){this.eventManager=e,this.doc=t,this.ngZone=n,this.tracingService=r,this.cssVarNamespace=i}destroy(){}destroyNode=null;createElement(e,t){return t?this.doc.createElementNS(vb[t]||t,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,t){(jb(e)?e.content:e).appendChild(t)}insertBefore(e,t,n){if(e){let r=jb(e)?e.content:e;if(n!=null&&n.parentNode!==r)throw new T(-5106,!1);r.insertBefore(t,n)}}removeChild(e,t){t.remove()}selectRootElement(e,t){let n=typeof e==`string`?this.doc.querySelector(e):e;if(!n)throw new T(-5104,!1);return t||(n.textContent=``),n}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,t,n,r){if(r){t=r+`:`+t;let i=vb[r];i?e.setAttributeNS(i,t,n):e.setAttribute(t,n)}else e.setAttribute(t,n)}removeAttribute(e,t,n){if(n){let r=vb[n];r?e.removeAttributeNS(r,t):e.removeAttribute(`${n}:${t}`)}else e.removeAttribute(t)}addClass(e,t){e.classList.add(t)}removeClass(e,t){e.classList.remove(t)}setStyle(e,t,n,r){let i=t.startsWith(`--`);i&&(t=t.replace(`%NS%`,this.cssVarNamespace)),i||r&(Yu.DashCase|Yu.Important)?e.style.setProperty(t,n,r&Yu.Important?`important`:``):e.style[t]=n}removeStyle(e,t,n){let r=t.startsWith(`--`);r&&(t=t.replace(`%NS%`,this.cssVarNamespace)),r||n&Yu.DashCase?e.style.removeProperty(t):e.style[t]=``}setProperty(e,t,n){e!=null&&(e[t]=n)}setValue(e,t){e.nodeValue=t}listen(e,t,n,r){if(typeof e==`string`&&(e=ny().getGlobalEventTarget(this.doc,e),!e))throw new T(-5102,!1);let i=this.decoratePreventDefault(n);return this.tracingService?.wrapEventListener&&(i=this.tracingService.wrapEventListener(e,t,i)),this.eventManager.addEventListener(e,t,i,r)}decoratePreventDefault(e){return t=>{if(t===`__ngUnwrap__`)return e;e(t)===!1&&t.preventDefault()}}};function jb(e){return e.tagName===`TEMPLATE`&&e.content!==void 0}var Mb=class extends Ab{hostEl;sharedStylesHost;shadowRoot;constructor(e,t,n,r,i,a,o,s,c){super(e,r,i,o,s),this.hostEl=t,this.sharedStylesHost=c,this.shadowRoot=t.attachShadow({mode:`open`}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let l=n.styles;l=Ob(n.id,l).map(e=>e.replace(/%NS%/g,s));for(let e of l){let t=document.createElement(`style`);a&&t.setAttribute(`nonce`,a),t.textContent=e,this.shadowRoot.appendChild(t)}let u=n.getExternalStyles?.();if(u)for(let e of u){let t=gb(e,r);a&&t.setAttribute(`nonce`,a),this.shadowRoot.appendChild(t)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,t){return super.appendChild(this.nodeOrShadowRoot(e),t)}insertBefore(e,t,n){return super.insertBefore(this.nodeOrShadowRoot(e),t,n)}removeChild(e,t){return super.removeChild(null,t)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}},Nb=class extends Ab{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(e,t,n,r,i,a,o,s,c){super(e,i,a,o,s),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=r;let l=n.styles,u=c?Ob(c,l):l;this.styles=u.map(e=>e.replace(/%NS%/g,s)),this.styleUrls=n.getExternalStyles?.(c)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&ld.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},Pb=class extends Nb{contentAttr;hostAttr;constructor(e,t,n,r,i,a,o,s,c){let l=r+`-`+n.id;super(e,t,n,i,a,o,s,c,l),this.contentAttr=Eb(l),this.hostAttr=Db(l)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,``)}createElement(e,t){let n=super.createElement(e,t);return super.setAttribute(n,this.contentAttr,``),n}},Fb=class e extends iy{supportsDOMEvents=!0;static makeCurrent(){ry(new e)}onAndCancel(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}dispatchEvent(e,t){e.dispatchEvent(t)}remove(e){e.remove()}createElement(e,t){return t||=this.getDefaultDocument(),t.createElement(e)}createHtmlDocument(){return document.implementation.createHTMLDocument(`fakeTitle`)}getDefaultDocument(){return document}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}isShadowRoot(e){return e instanceof DocumentFragment}getGlobalEventTarget(e,t){return t===`window`?window:t===`document`?e:t===`body`?e.body:null}getBaseHref(e){let t=Lb();return t==null?null:Rb(t)}resetBaseElement(){Ib=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return ob(document.cookie,e)}},Ib=null;function Lb(){return Ib||=document.head.querySelector(`base`),Ib?Ib.getAttribute(`href`):null}function Rb(e){return new URL(e,document.baseURI).pathname}var zb=[`alt`,`control`,`meta`,`shift`],Bb={"\b":`Backspace`," ":`Tab`,"":`Delete`,"\x1B":`Escape`,Del:`Delete`,Esc:`Escape`,Left:`ArrowLeft`,Right:`ArrowRight`,Up:`ArrowUp`,Down:`ArrowDown`,Menu:`ContextMenu`,Scroll:`ScrollLock`,Win:`OS`},Vb={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},Hb=(()=>{class e extends cb{constructor(e){super(e)}supports(t){return e.parseEventName(t)!=null}addEventListener(t,n,r,i){let a=e.parseEventName(n),o=e.eventCallback(a.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>ny().onAndCancel(t,a.domEventName,o,i))}static parseEventName(t){let n=t.toLowerCase().split(`.`),r=n.shift();if(n.length===0||r!==`keydown`&&r!==`keyup`)return null;let i=e._normalizeKey(n.pop()),a=``,o=n.indexOf(`code`);if(o>-1&&(n.splice(o,1),a=`code.`),zb.forEach(e=>{let t=n.indexOf(e);t>-1&&(n.splice(t,1),a+=e+`.`)}),a+=i,n.length!=0||i.length===0)return null;let s={};return s.domEventName=r,s.fullKey=a,s}static matchEventFullKeyCode(e,t){let n=Bb[e.key]||e.key,r=``;return t.indexOf(`code.`)>-1&&(n=e.code,r=`code.`),n==null||!n?!1:(n=n.toLowerCase(),n===` `?n=`space`:n===`.`&&(n=`dot`),zb.forEach(t=>{if(t!==n){let n=Vb[t];n(e)&&(r+=t+`.`)}}),r+=n,r===t)}static eventCallback(t,n,r){return i=>{e.matchEventFullKeyCode(i,t)&&r.runGuarded(()=>n(i))}}static _normalizeKey(e){return e===`esc`?`escape`:e}static ɵfac=function(t){return new(t||e)(qi(Ss))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})();async function Ub(e,t,n){return Yv({rootComponent:e,...Wb(t,n)})}function Wb(e,t){return{platformRef:t?.platformRef,appProviders:[...Yb,...e?.providers??[]],platformProviders:Jb}}function Gb(){Fb.makeCurrent()}function Kb(){return new qs}function qb(){return Yl(document),document}var Jb=[{provide:ec,useValue:sb},{provide:$s,useValue:Gb,multi:!0},{provide:Ss,useFactory:qb}],Yb=[{provide:Ta,useValue:`root`},{provide:qs,useFactory:Kb},{provide:ub,useClass:lb,multi:!0},{provide:ub,useClass:Hb,multi:!0},kb,{provide:vm,useClass:_b},{provide:_b,useExisting:vm},db,{provide:$p,useExisting:kb},[]];function Xb(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e{let r=new ex({code:i,why:Qb(a.why,e),fix:Qb(a.fix,e),docs:o,cause:e.cause,sources:e.sources,data:Qb(a.data,e)},s);for(let e of t)e(r,n);return r};n[i]=s}return n}function rx(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n{e=n,t=r}),resolve:e,reject:t}}var lx=Math.random.bind(Math),ux=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function dx(e=21){let t=``,n=e;for(;n--;)t+=ux[lx()*64|0];return t}var fx=6e4,px=e=>e,mx=px,{clearTimeout:hx,setTimeout:gx}=globalThis;function _x(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=px,deserialize:s=mx,resolver:c,bind:l=`rpc`,timeout:u=fx,proxify:d=!0}=t,f=!1,p=new Map,m,h;async function g(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:g}=cx(),_=dx();s.i=_;let ee;async function v(n=s){return u>=0&&(ee=gx(()=>{try{if(t.onTimeoutError?.call(h,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){g(e)}p.delete(_)},u),typeof ee==`object`&&(ee=ee.unref?.())),p.set(_,{resolve:d,reject:g,timeoutId:ee,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(h,s,v,d):await v()}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}finally{hx(ee),p.delete(_)}return l}let _={$call:(e,...t)=>g(e,t,!1),$callOptional:(e,...t)=>g(e,t,!1,!0),$callEvent:(e,...t)=>g(e,t,!0),$callRaw:e=>g(e.method,e.args,e.event,e.optional),$rejectPendingCalls:v,get $closed(){return f},get $meta(){return t.meta},$close:ee,$functions:e};h=d?new Proxy({},{get(t,n){if(Object.hasOwn(_,n))return _[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>g(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>g(n,e,!1);return i.asEvent=r,i}}):_;function ee(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(te)}function v(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function te(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(h,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?h:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(h,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(h,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(h,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(hx(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(te),h}function vx(e,t){return t.safety?t.safety:e===`static`||e===`query`||e==null?`read`:`action`}var yx=Object.freeze({type:`object`,additionalProperties:!0});function bx(e){let t=e[`~standard`];if(t.jsonSchema)try{return t.jsonSchema.input({target:`draft-2020-12`})}catch{return yx}return yx}function xx(e){if(!e||e.length===0)return{type:`object`,properties:{}};let t={},n=[];for(let r=0;rn[`arg${t}`]);if(`arg0`in n){let e=[];for(;`arg${e.length}`in n;)e.push(n[`arg${e.length}`]);return e}return Object.keys(n).length===0?[]:void 0}function Cx(e,t){return Sx(e,t)??[e]}function wx(e){return typeof e==`string`?`'${e}'`:new Ox().serialize(e)}var Tx=` _-,;:!?.'"()[]{}@*/\\&#%\`^+<=>|~$0123456789abcdefghijklmnopqrstuvwxyz`,Ex=(function(){let e=new Uint8Array(128);for(let t=0;t<69;t++)e[Tx.charCodeAt(t)]=t+1;for(let t=65;t<=90;t++)e[t]=e[t+32];return e})();function Dx(e,t){if(e===t)return 0;let n=Math.min(e.length,t.length),r=0;for(let i=0;ia?-1:1)}return e.length===t.length?r:e.lengththis.compare(e[0],t[0])),r=`${e}{`;for(let e=0;ethis.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e})(),kx=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],Ax=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],jx=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,Mx=[],Nx=class{_data=new Px;_hash=new Px([...kx]);_nDataBytes=0;_minBufferSize=0;finalize(e){e&&this._append(e);let t=this._nDataBytes*8,n=this._data.sigBytes*8;return this._data.words[n>>>5]|=128<<24-n%32,this._data.words[(n+64>>>9<<4)+14]=Math.floor(t/4294967296),this._data.words[(n+64>>>9<<4)+15]=t,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(e,t){let n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],u=n[7];for(let n=0;n<64;n++){if(n<16)Mx[n]=e[t+n]|0;else{let e=Mx[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=Mx[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;Mx[n]=t+Mx[n-7]+i+Mx[n-16]}let d=s&c^~s&l,f=r&i^r&a^i&a,p=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),m=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),h=u+m+d+Ax[n]+Mx[n],g=p+f;u=l,l=c,c=s,s=o+h|0,o=a,a=i,i=r,r=h+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+u|0}_append(e){typeof e==`string`&&(e=Px.fromUtf8(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_process(e){let t,n=this._data.sigBytes/64;n=e?Math.ceil(n):Math.max((n|0)-this._minBufferSize,0);let r=n*16,i=Math.min(r*4,this._data.sigBytes);if(r){for(let e=0;e>>2]|=(n.charCodeAt(e)&255)<<24-e%4*8;return new e(i,r)}toBase64(){let e=[];for(let t=0;t>>2]>>>24-t%4*8&255,r=this.words[t+1>>>2]>>>24-(t+1)%4*8&255,i=this.words[t+2>>>2]>>>24-(t+2)%4*8&255,a=n<<16|r<<8|i;for(let n=0;n<4&&t*8+n*6>>6*(3-n)&63))}return e.join(``)}concat(e){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let t=0;t>>2]>>>24-t%4*8&255;this.words[this.sigBytes+t>>>2]|=n<<24-(this.sigBytes+t)%4*8}else for(let t=0;t>>2]=e.words[t>>>2];this.sigBytes+=e.sigBytes}};function Fx(e){return new Nx().finalize(e).toBase64()}function Ix(e){return Fx(wx(e))}function Lx(e){return Ix(e)}function Rx(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}var zx=/^[\w+.-]{2,}:\/\//;function Bx(e){return e.endsWith(`/`)?e:`${e}/`}function Vx(e){return(e.endsWith(`/`)?e.slice(0,-1):e)||`/`}function Hx(e,...t){let n=e;for(let e of t)e&&e!==`/`&&(n=n?Bx(n)+e.replace(/^\.?\//,``):e);return n}function Ux(e,t){if(!t||t===`/`||zx.test(e))return e;let n=Vx(t);return e.startsWith(n)?e:Hx(n,e)}function Wx(e,t){let n=e.match(zx);return t+(n?e.slice(n[0].length):e)}var Gx=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function Kx(e=21){let t=``,n=e;for(;n--;)t+=Gx[Math.random()*64|0];return t}var qx=Symbol.for(`immer-nothing`),Jx=Symbol.for(`immer-draftable`),Yx=Symbol.for(`immer-state`),Xx=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function Zx(e,...t){{let n=Xx[e],r=xS(n)?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}}var Qx=Object,$x=Qx.getPrototypeOf,eS=`constructor`,tS=`prototype`,nS=`configurable`,rS=`enumerable`,iS=`writable`,aS=`value`,oS=e=>!!e&&!!e[Yx];function sS(e){return e?uS(e)||_S(e)||!!e[Jx]||!!e[eS]?.[Jx]||vS(e)||yS(e):!1}var cS=Qx[tS][eS].toString(),lS=new WeakMap;function uS(e){if(!e||!bS(e))return!1;let t=$x(e);if(t===null||t===Qx[tS])return!0;let n=Qx.hasOwnProperty.call(t,eS)&&t[eS];if(n===Object)return!0;if(!xS(n))return!1;let r=lS.get(n);return r===void 0&&(r=Function.toString.call(n),lS.set(n,r)),r===cS}function dS(e,t,n=!0){fS(e)===0?(n?Reflect.ownKeys(e):Qx.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function fS(e){let t=e[Yx];return t?t.type_:_S(e)?1:vS(e)?2:yS(e)?3:0}var pS=(e,t,n=fS(e))=>n===2?e.has(t):Qx[tS].hasOwnProperty.call(e,t),mS=(e,t,n=fS(e))=>n===2?e.get(t):e[t],hS=(e,t,n,r=fS(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function gS(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var _S=Array.isArray,vS=e=>e instanceof Map,yS=e=>e instanceof Set,bS=e=>typeof e==`object`,xS=e=>typeof e==`function`,SS=e=>typeof e==`boolean`;function CS(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var wS=e=>bS(e)?e?.[Yx]:null,TS=e=>e.copy_||e.base_,ES=e=>e.modified_?e.copy_:e.base_;function DS(e,t){if(vS(e))return new Map(e);if(yS(e))return new Set(e);if(_S(e))return Array[tS].slice.call(e);let n=uS(e);if(t===!0||t===`class_only`&&!n){let t=Qx.getOwnPropertyDescriptors(e);delete t[Yx];let n=Reflect.ownKeys(t);for(let r=0;r1&&Qx.defineProperties(e,{set:AS,add:AS,clear:AS,delete:AS}),Qx.freeze(e),t&&dS(e,(e,t)=>{OS(t,!0)},!1),e)}function kS(){Zx(2)}var AS={[aS]:kS};function jS(e){return e===null||!bS(e)||Qx.isFrozen(e)}var MS=`MapSet`,NS=`Patches`,PS=`ArrayMethods`,FS={};function IS(e){let t=FS[e];return t||Zx(0,e),t}var LS=e=>!!FS[e];function RS(e,t){FS[e]||(FS[e]=t)}var zS,BS=()=>zS,VS=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:LS(MS)?IS(MS):void 0,arrayMethodsPlugin_:LS(PS)?IS(PS):void 0});function HS(e,t){t&&(e.patchPlugin_=IS(NS),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function US(e){WS(e),e.drafts_.forEach(KS),e.drafts_=null}function WS(e){e===zS&&(zS=e.parent_)}var GS=e=>zS=VS(zS,e);function KS(e){let t=e[Yx];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function qS(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[Yx].modified_&&(US(t),Zx(4)),sS(e)&&(e=JS(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[Yx].base_,e,t)}else e=JS(t,n);return YS(t,e,!0),US(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===qx?void 0:e}function JS(e,t){if(jS(t))return t;let n=t[Yx];if(!n)return rC(t,e.handledSet_,e);if(!ZS(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);tC(n,e)}return n.copy_}function YS(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&OS(t,n)}function XS(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var ZS=(e,t)=>e.scope_===t,QS=[];function $S(e,t,n,r){let i=TS(e),a=e.type_;if(r!==void 0&&mS(i,r,a)===t){hS(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;dS(i,(e,n)=>{if(oS(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??QS;for(let e of o)hS(i,e,n,a)}function eC(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!ZS(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=ES(i);$S(e,i.draft_??i,a,n),tC(i,r)})}function tC(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}XS(e)}}function nC(e,t,n){let{scope_:r}=e;if(oS(n)){let i=n[Yx];ZS(i,r)&&i.callbacks_.push(function(){fC(e),$S(e,n,ES(i),t)})}else sS(n)&&e.callbacks_.push(function(){let i=TS(e);e.type_===3?i.has(n)&&rC(n,r.handledSet_,r):mS(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&rC(mS(e.copy_,t,e.type_),r.handledSet_,r)})}function rC(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||oS(e)||t.has(e)||!sS(e)||jS(e)?e:(t.add(e),dS(e,(r,i)=>{if(oS(i)){let t=i[Yx];ZS(t,n)&&(hS(e,r,ES(t),e.type_),XS(t))}else sS(i)&&rC(i,t,n)}),e)}function iC(e,t){let n=_S(e),r={type_:+!!n,scope_:t?t.scope_:BS(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=aC;n&&(i=[r],a=oC);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var aC={get(e,t){if(t===Yx)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=TS(e);if(!pS(i,t,e.type_))return lC(e,i,t);let a=i[t];if(e.finalized_||!sS(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&CS(t))return a;if(a===sC(e.base_,t)||cC(e,t,a)){fC(e);let n=e.type_===1?+t:t,r=mC(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in TS(e)},ownKeys(e){return Reflect.ownKeys(TS(e))},set(e,t,n){let r=uC(TS(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=sC(TS(e),t),i=r?.[Yx];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.delete(t),!0;if(gS(n,r)&&(n!==void 0||pS(e.base_,t,e.type_)))return!0;fC(e),dC(e)}return e.copy_[t]===n&&(n!==void 0||pS(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),nC(e,t,n),!0)},deleteProperty(e,t){return fC(e),sC(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),dC(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=TS(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[iS]:!0,[nS]:e.type_!==1||t!==`length`,[rS]:r[rS],[aS]:n[t]}},defineProperty(){Zx(11)},getPrototypeOf(e){return $x(e.base_)},setPrototypeOf(){Zx(12)}},oC={};for(let e in aC){let t=aC[e];oC[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}oC.deleteProperty=function(e,t){return isNaN(parseInt(t))&&Zx(13),oC.set.call(this,e,t,void 0)},oC.set=function(e,t,n){return t!==`length`&&isNaN(parseInt(t))&&Zx(14),aC.set.call(this,e[0],t,n,e[0])};function sC(e,t){let n=e[Yx];return(n?TS(n):e)[t]}function cC(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!sS(n)||n[Yx]?!1:e.baseRefs_.has(n)}function lC(e,t,n){let r=uC(t,n);return r?aS in r?r[aS]:r.get?.call(e.draft_):void 0}function uC(e,t){if(!(t in e))return;let n=$x(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=$x(n)}}function dC(e){e.modified_||(e.modified_=!0,e.parent_&&dC(e.parent_))}function fC(e){e.copy_||=(e.assigned_=new Map,DS(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var pC=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(xS(e)&&!xS(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}xS(t)||Zx(6),n!==void 0&&!xS(n)&&Zx(7);let r;if(sS(e)){let i=GS(this),a=mC(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?US(i):WS(i)}return HS(i,n),qS(r,i)}if(!e||!bS(e)){if(r=t(e),r===void 0&&(r=e),r===qx&&(r=void 0),this.autoFreeze_&&OS(r,!0),n){let t=[],i=[];IS(NS).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}Zx(1,e)},this.produceWithPatches=(e,t)=>{if(xS(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},SS(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),SS(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),SS(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){sS(e)||Zx(8),oS(e)&&(e=hC(e));let t=GS(this),n=mC(t,e,void 0);return n[Yx].isManual_=!0,WS(t),n}finishDraft(e,t){let n=e&&e[Yx];(!n||!n.isManual_)&&Zx(9);let{scope_:r}=n;return HS(r,t),qS(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=IS(NS).applyPatches_;return oS(e)?r(e,t):this.produce(e,e=>r(e,t))}};function mC(e,t,n,r){let[i,a]=vS(t)?IS(MS).proxyMap_(t,n):yS(t)?IS(MS).proxySet_(t,n):iC(t,n);return(n?.scope_??BS()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?eC(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function hC(e){return oS(e)||Zx(10,e),gC(e)}function gC(e){if(!sS(e)||jS(e))return e;let t=e[Yx],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=DS(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=DS(e,!0);return dS(n,(e,t)=>{hS(n,e,gC(t))},r),t&&(t.finalized_=!1),n}function _C(){Xx.push(`Sets cannot have "replace" patches.`,function(e){return`Unsupported patch operation: `+e},function(e){return`Cannot apply patch, path doesn't resolve: `+e},`Patching reserved attributes like __proto__, prototype and constructor is not allowed`);function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=wS(mS(e,n.key_)),i=mS(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||pS(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e{let u=mS(o,e,c),f=mS(s,e,c),p=l?pS(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===qx?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e[e,u(t)]));if(yS(e))return new Set(Array.from(e).map(u));let t=Object.create($x(e));for(let n in e)t[n]=u(e[n]);return pS(e,Jx)&&(t[Jx]=e[Jx]),t}function d(e){return oS(e)?u(e):e}RS(NS,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var vC=new pC,yC=vC.produce,bC=vC.produceWithPatches.bind(vC),xC=vC.applyPatches.bind(vC),SC=1e3;function CC(e,t){if(e.add(t),e.size>SC){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function wC(e){let{enablePatches:t=!1}=e;t&&_C();let n=Rx(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=Kx())=>{i.has(t)||(_C(),r=xC(r,e),CC(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=Kx())=>{if(!i.has(a)){if(CC(i,a),t){let[t,i]=bC(r,e);if(t===r)return;r=t,n.emit(`updated`,r,i,a)}else{let t=yC(r,e);if(t===r)return;r=t,n.emit(`updated`,r,void 0,a)}}},syncIds:i}}var TC=typeof self==`object`?self:globalThis,EC=new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),DC=new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function OC(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o,r=EC.has(e)?TC[e]:void 0;return n(new(r??TC.Error)(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}if(typeof a==`string`&&DC.has(a))return n(new TC[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function kC(e){return OC(new Map,e)(0)}var AC=``,{toString:jC}={},{keys:MC}=Object;function NC(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=jC.call(e).slice(8,-1);switch(n){case`Array`:return[1,AC];case`Object`:return[2,AC];case`Date`:return[3,AC];case`RegExp`:return[4,AC];case`Map`:return[5,AC];case`Set`:return[6,AC];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function PC([e,t]){return e===0&&(t===`function`||t===`symbol`)}function FC(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=NC(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of MC(r))(e||!PC(NC(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(PC(NC(n))||PC(NC(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!PC(NC(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function IC(e,t={}){let n=[];return FC(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:LC,stringify:RC}=JSON,zC={json:!0,lossy:!0};function BC(e){return kC(LC(e))}function VC(e){return RC(IC(e,zC))}function HC(e){return kC(e)}function UC(e){return VC(e)}function WC(e){return BC(e)}var GC=256,KC=class extends Error{name=`StreamClosedError`};function qC(e={}){let t=e.id??Kx(),n=Math.max(0,e.replayWindow??0),r=Rx(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new KC(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&(a.length-n===1?a.shift():a.splice(0,a.length-n))),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=YC(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function JC(e={}){let t=e.id??Kx(),n=Math.max(1,e.highWaterMark??GC),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function YC(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}var XC=128;function ZC(e){return e.replace(/[^\w-]+/g,`_`).slice(0,XC)}var QC=`modulepreload`,$C=function(e,t){return new URL(e,t).href},ew={},tw=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=$C(t,n),t=s(t),t in ew)return;ew[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:QC,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},nw=`__connection.json`,rw=`__DEVFRAME_CONNECTION__`,iw=`x-birpc-session`,aw=`__rpc-dump/index.json`,ow=`devframe:services`,sw=`devframe_otp`,cw=`devframe_auth_token`;ix.postMessage.remoteAssetsError;var lw=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>Lx(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}},uw=sx({docsBase:`https://devfra.me/errors`,codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is \`false\`; MCP requires JSON-serializable data.`,fix:"Remove `jsonSerializable: false`, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."},DF0043:{why:e=>`RPC function "${e.name}" received an invalid argument at position ${e.index}: ${e.issues}`,fix:"Pass a value that satisfies the `args` schema declared for this function."},DF0044:{why:e=>`RPC function "${e.name}" returned a value that failed its \`returns\` schema: ${e.issues}`,fix:"Make the handler return a value that satisfies the `returns` schema, or relax the schema."}}});function dw(e){if(e.agent&&e.jsonSerializable===!1)throw uw.DF0019({name:e.name});e.agent&&!e.jsonSerializable&&(e.jsonSerializable=!0)}async function fw(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function pw(e){return e.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `)}async function mw(e,t,n){let r=n.slice();if(!t||t.length===0)return r;for(let r=0;r{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function _w(e,t){let n=e.handler;if(!n){let r=await gw(e,t);if(!r.handler)throw uw.DF0024({name:e.name});n=r.handler}let r=e.args,i=e.returns;if(!r&&!i)return n;let a=n;return async(...t)=>{let n=await mw(e.name,r,t),o=await a(...n);return await hw(e.name,i,o)}}var vw=class{context;definitions=new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return _w(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw uw.DF0021({name:e.name});dw(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw uw.DF0022({name:e.name});dw(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await _w(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw uw.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function yw(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw xw(t,`undefined`,r,e);return n}return i!==null&&bw(i,r,e,t),n})}function bw(e,t,n,r){if(typeof e==`bigint`)throw xw(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw xw(r,`Map`,t,n);if(e instanceof Set)throw xw(r,`Set`,t,n);if(e instanceof Date)throw xw(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw xw(r,e.constructor?.name??`class instance`,t,n)}function xw(e,t,n,r){let i=Sw(n,r);return uw.DF0020({name:e||``,type:t,path:i})}function Sw(e,t){return Array.isArray(e)?`[${t}]`:t===``?``:t}var Cw=`__DEVFRAME_CONNECTION_META__`,ww=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function Tw(e){let t=[()=>window?.[e],()=>globalThis?.[e],()=>parent.window?.[e]];for(let e of t)try{let t=e();if(t)return t}catch{}}function Ew(){return Tw(rw)}function Dw(){return Tw(Cw)}function Ow(e){if(e)return e;try{let e=localStorage.getItem(ww);if(e)return e}catch{}return Tw(ww)}function kw(e){globalThis[rw]=e,globalThis[Cw]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&Aw(e.authToken)}function Aw(e){try{localStorage.setItem(ww,e)}catch{}globalThis[ww]=e;let t=Ew();t&&(globalThis[rw]={...t,authToken:e})}function jw(e){let t=Ux(nw,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function Mw(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function Nw(){let e=Ew();if(e)return Mw(e,Ow()??e.authToken??e.connectionMeta.authToken);let t=Dw();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??jw(`./`),authToken:Ow(t.authToken)}}async function Pw(e={}){if(e.connection){let t=Mw(e.connection,Ow(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return kw(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:jw(t[0]??`./`),authToken:Ow(e.authToken??e.connectionMeta.authToken)};return kw(n),n}let n=Nw();if(n){let t=Mw(n,Ow(e.authToken??n.authToken??n.connectionMeta.authToken));return kw(t),t}let r=[];for(let n of t){let t=Ux(nw,n),i=jw(n);try{let n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch connection meta from ${i}: ${n.status}`);let r=await n.json(),a=n.url||i,o={connectionMeta:r,metaBaseUrl:r.baseUrl?new URL(r.baseUrl,a).href:a,authToken:Ow(e.authToken??r.authToken)};return kw(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var Fw=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function Iw(e=sw){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function Lw(e){try{let t=new URL(globalThis.location.href),n=new URLSearchParams(t.hash.replace(/^#/,``));if(!n.has(e))return;n.delete(e),t.hash=n.toString(),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function Rw(e=sw){let t=Iw(e);return t&&Lw(e),t}async function zw(e,t={}){let n=Rw(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function Bw(e){let t={},n=new WeakMap,r,i=()=>(r??=e.sharedState.get(ow,{initialValue:{}}).then(e=>(t=e.value(),e.on(`updated`,e=>{t=e}),e)),r);return i(),{state:i,has:e=>e in t,keys:()=>Object.keys(t),get:r=>{let i=t[r];if(!i)return;let a=n.get(i);return a||(a={...i,rpc:e.scope(i.scope).rpc},n.set(i,a)),a}}}function Vw(e){let t=new Map,n=new Map,r=new Map,i=new Set,a=e.connectionMeta.backend===`static`;function o(e,t){let n=r.get(e);return n&&typeof n==`object`&&!Array.isArray(n)&&typeof t==`object`&&!Array.isArray(t)?{...n,...t}:t}e.client.register({name:ix.broadcast.clientStateUpdated,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.mutate(()=>o(e,n),r)}}),e.client.register({name:ix.broadcast.clientStatePatch,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.patch(n,r)}});function s(t,n){let r=[];return r.push(n.on(`updated`,(n,r,i)=>{a||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,i):e.callEvent(`devframe:rpc:server-state:set`,t,n,i))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return i.add(e),()=>{i.delete(e)}},delete(e){let i=n.get(e);n.delete(e);let a=t.delete(e);return r.delete(e),i?.(),a},get:async(c,l)=>{if(l?.initialValue!==void 0&&r.set(c,l.initialValue),t.has(c))return t.get(c);let u=wC({initialValue:l?.initialValue,enablePatches:!1});async function d(){if(a||e.callEvent(`devframe:rpc:server-state:subscribe`,c),l?.initialValue!==void 0){t.set(c,u);for(let e of i)e(c);return e.call(`devframe:rpc:server-state:get`,c).then(e=>{e!==void 0&&u.mutate(()=>o(c,e))}).catch(e=>{console.error(`Error getting server state`,e)}),n.set(c,s(c,u)),u}{let r=await e.call(`devframe:rpc:server-state:get`,c);u.mutate(()=>o(c,r)),t.set(c,u);for(let e of i)e(c);return n.set(c,s(c,u)),u}}return new Promise(t=>{if(e.isTrusted)d().then(t);else{t(u);let n=!1;e.events.on(ix.client.isTrustedUpdated,e=>{e&&!n&&(n=!0,d())})}})}}}var Hw=new Map;function Uw(e=Hw){let t=new Map;return{serialize:n=>{let r;return n.t===`q`?r=n.m:(r=t.get(n.i),t.delete(n.i)),!(n.t===`s`&&`e`in n)&&r&&e.get(r)?.jsonSerializable===!0?yw(n,r??``):`s:${UC(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?WC(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function Ww(){}function Gw(e){let t=e.search(/\n\n|\r\n\r\n/);if(!(t<0))return{frame:e.slice(0,t),rest:e.slice(t+(e[t]===`\r`?4:2))}}function Kw(e){let t=`message`,n=[];for(let r of e.split(/\r?\n/))r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trimStart():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));return{event:t,data:n}}function qw(e){let{onConnected:t=Ww,onError:n=Ww,onDisconnected:r=Ww,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${cw}=${encodeURIComponent(e.authToken)}`);let s=Uw(i),c=new AbortController,l=!1,u,d,f,p,m=new Promise((e,t)=>{f=e,p=t});m.catch(()=>{});function h(e){l||(l=!0,p(e),n(e),r())}function g(){l||(l=!0,p(Error(`Devframe SSE stream closed`)),r())}function _(e,n){if(e===`session`){f(n),t();return}u?.(n)}async function ee(e){let t=e.getReader();d=t;let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;for(r+=n.decode(i,{stream:!0});;){let e=Gw(r);if(!e)break;r=e.rest;let{event:t,data:n}=Kw(e.frame);n.length>0&&_(t,n.join(` +`))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await ee(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[iw]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function Jw(e,t){let{channel:n,rpcOptions:r={}}=t;return _x(e,{...n,timeout:-1,...r,proxify:!1})}function Yw(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(ix.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new Fw(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new Fw(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(ix.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new Fw(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(ix.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let ee=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(ix.client.connectionError,e),m(new Fw(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new Fw(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),v=Jw(a.functions,{channel:ee,rpcOptions:o});a.register({name:ix.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new Fw(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e),m(e),i.emit(ix.client.isTrustedUpdated,!1)}});let te=n;async function ne(e){te=e;let t=await v.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new Fw(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e)}return i.emit(ix.client.isTrustedUpdated,c),t.isTrusted}async function re(e){let t=(await v.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(te=t,c=!0,d.resolve(!0),f(`connected`),i.emit(ix.client.isTrustedUpdated,!0)),t}async function ie(e={}){await v.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function ae(){return c?!0:ne(te??``)}async function oe(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t;try{return await Promise.race([d.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),c}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:ae,requestTrustWithToken:ne,requestTrustWithCode:re,requestAuthCode:ie,ensureTrusted:oe,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(ix.client.error,t,String(e[0]));return}return v.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$callOptional(...e),t)},close:()=>{ee.close()}}}function Xw(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Zw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Xw(n.sse,r??`./`,location);return Yw({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>qw({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Qw(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:$w(r)?Qw(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function $w(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function eT(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function tT(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function nT(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function rT(e){if(e.error)throw Qw(e.error);return e.output}function iT(e){return e.some(e=>e!=null)}function aT(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function oT(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?HC(e):e}function a(e,t){return i(aT(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return nT(r)?rT(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(eT(r)){if(iT(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(tT(r)){let e=Lx(n),i=r.records[e];if(i)return rT(await s(i,r.serialization));if(r.fallback)return rT(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!iT(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function sT(e){let t=oT(await e.fetchJsonFromBases(aw),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var cT=``;function lT(e,t){return`${e}${cT}${t}`}function uT(e){let t=new Map,n=new Map;e.client.register({name:ix.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(lT(e,n))?._push(r,i)}}),e.client.register({name:ix.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=lT(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:ix.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=lT(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(ix.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(cT);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=lT(n,r),o=t.get(a);if(o)return o;let s=JC({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(ix.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=lT(t,r),a=n.get(i);if(a)return a;let o=qC({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function dT(){}var fT=new Map;function pT(e){let t=e.url;e.authToken&&(t=`${t}?${cw}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=dT,onError:i=dT,onDisconnected:a=dT,definitions:o=fT}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Uw(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function mT(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Wx(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function hT(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=mT(n.websocket,r??`./`,location);return Yw({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>pT({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function gT(e){return e.includes(`:`)}function _T(e,t){return gT(t)?t:`${e}:${t}`}function vT(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function yT(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return vT(a)}function bT(e,t){return{global:yT(e,t,`global`),project:yT(e,t,`project`)}}function xT(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(gT(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(_T(t,n),...r)),callEvent:((n,...r)=>e.callEvent(_T(t,n),...r)),callOptional:((n,...r)=>e.callOptional(_T(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(_T(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(_T(t,n),r,i),upload:(n,r)=>e.streaming.upload(_T(t,n),r)}},settings:bT(e,t),scope:e.scope}}function ST(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function CT(e,t={}){let n=t.modelContext??ST();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=ZC(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=vx(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:xx(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>wT(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function wT(e,t,n){try{let r=Cx(n,e.args?.length);return{content:[{type:`text`,text:TT(await(await _w(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:ET(e)}]}}}function TT(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function ET(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function DT(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function OT(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=Rx(),a=Array.isArray(t)?t:[t],o=await Pw(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new lw({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new vw(f),m=e.webmcp===!1?void 0:CT(p),h,g=!1;async function _(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Ux(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let ee={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},v=DT(e.transport??`auto`,s),te=v===`static`?await sT({fetchJsonFromBases:_}):v===`sse`?Zw({...ee,sseOptions:e.sseOptions}):hT({...ee,wsOptions:e.wsOptions}),ne;try{ne=new BroadcastChannel(`devframe-auth`)}catch{}let re,ie=!1;function ae(e){return((...t)=>ie||!re?e(...t):re.then(()=>e(...t)))}function oe(){g=!0;try{h?.(),m?.()}finally{try{ne?.close()}finally{te.close?.()}}}let se={events:i,get isTrusted(){return te.isTrusted},get status(){return te.status},get connectionError(){return te.connectionError},get transport(){return te.transport??v},get connection(){return o},connectionMeta:s,ensureTrusted:te.ensureTrusted,requestTrust:te.requestTrust,requestTrustWithToken:async e=>(Aw(e),o={...o,authToken:e},te.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await te.requestTrustWithCode(e);if(!t)return!1;Aw(t),o={...o,authToken:t};try{ne?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>te.requestAuthCode(e),call:ae(te.call),callEvent:ae(te.callEvent),callOptional:ae(te.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:oe};se.sharedState=Vw(se),se.streaming=uT(se),se.services=Bw(se);let ce=new Map;se.scope=(e=>{if(!e)return se;let t=ce.get(e);return t||(t=xT(se,e),ce.set(e,t)),t}),f.rpc=se;function le(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ue(){if(e.simpleAuth!==!1&&le()&&typeof globalThis.prompt==`function`)for(await se.requestAuthCode().catch(()=>{});!se.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await se.requestTrustWithCode(t))return}}async function de(){let t=await te.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await zw(se,{param:n}):!1;t||r||se.isTrusted||await ue()}return re=de().then(()=>{ie=!0},()=>{ie=!0}),s.mcp&&tw(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-BXhoSh1z-CSxlKyzP.js`);return{setupBrowserAgentRpcBridge:e}},[],import.meta.url).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(se))}).catch(()=>{}),ne&&(ne.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&se.requestTrustWithToken(e.data.authToken)}),se}var kT=OT,AT=[`components`,`injectors`,`signals`,`ngrx`,`forms`,`router`,`pipes`,`http`,`analog`],jT=[`forms`,`router`,`ngrx`,`http`,`analog`],MT={refreshMs:{default:3e3,min:500,max:8e3},navigations:{default:50,min:5,max:500},formTimeline:{default:200,min:10,max:2e3},httpCalls:{default:200,min:10,max:2e3},changeLog:{default:200,min:10,max:2e3},cdCycles:{default:200,min:10,max:2e3}},NT={"opted-out":`the request sets transferCache: false`,post:`POST requests are left out unless includePostRequests is set`,method:`only GET, HEAD and POST requests are cached`,"auth-headers":`it sends an Authorization, Proxy-Authorization or Cookie header`,credentials:`it sends credentials (withCredentials or credentials: include/same-origin)`,"no-cache-request":`the request asks for no-store, no-cache or private`,"no-cache-response":`the response has Cache-Control no-store, no-cache or private`,"set-cookie":`the response sets a cookie`,error:`failed responses are not stored`,mocked:`a fault rule answered before the transfer cache ran`,"cache-off-or-filter":`the transfer cache is off, or its filter (or another withHttpTransferCacheOptions setting) left it out`},PT=[[200,`OK`],[201,`Created`],[202,`Accepted`],[203,`Non-Authoritative Information`],[204,`No Content`],[205,`Reset Content`],[206,`Partial Content`],[207,`Multi-Status`],[208,`Already Reported`],[226,`IM Used`],[300,`Multiple Choices`],[301,`Moved Permanently`],[302,`Found`],[303,`See Other`],[304,`Not Modified`],[307,`Temporary Redirect`],[308,`Permanent Redirect`],[400,`Bad Request`],[401,`Unauthorized`],[402,`Payment Required`],[403,`Forbidden`],[404,`Not Found`],[405,`Method Not Allowed`],[406,`Not Acceptable`],[407,`Proxy Authentication Required`],[408,`Request Timeout`],[409,`Conflict`],[410,`Gone`],[411,`Length Required`],[412,`Precondition Failed`],[413,`Content Too Large`],[414,`URI Too Long`],[415,`Unsupported Media Type`],[416,`Range Not Satisfiable`],[417,`Expectation Failed`],[418,`I'm a Teapot`],[421,`Misdirected Request`],[422,`Unprocessable Content`],[423,`Locked`],[424,`Failed Dependency`],[425,`Too Early`],[426,`Upgrade Required`],[428,`Precondition Required`],[429,`Too Many Requests`],[431,`Request Header Fields Too Large`],[451,`Unavailable For Legal Reasons`],[499,`Client Closed Request`],[500,`Internal Server Error`],[501,`Not Implemented`],[502,`Bad Gateway`],[503,`Service Unavailable`],[504,`Gateway Timeout`],[505,`HTTP Version Not Supported`],[506,`Variant Also Negotiates`],[507,`Insufficient Storage`],[508,`Loop Detected`],[510,`Not Extended`],[511,`Network Authentication Required`],[520,`Web Server Returned an Unknown Error`],[521,`Web Server Is Down`],[522,`Connection Timed Out`],[523,`Origin Is Unreachable`],[524,`A Timeout Occurred`]];function FT(e){return PT.some(([t])=>t===e)}var IT=`pangular`;function LT(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function RT(e,t){return typeof e==`boolean`?e:t}var zT=100,BT=100;function VT(e){if(!Array.isArray(e))return[];let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e&&e.length<=BT);return[...new Set(t)].slice(0,zT)}function HT(e,t){let{default:n,min:r,max:i}=MT[t];return typeof e!=`number`||!Number.isFinite(e)?n:Math.min(i,Math.max(r,Math.round(e)))}function UT(e,t){return Object.fromEntries(e.map(e=>[e,t(e)]))}function WT(e){let t=LT(e),n=LT(t.agent),r=LT(t.inspectors),i=LT(n.tools),a=LT(t.actions),o=RT(t.actions,!0),s=LT(t.redaction),c=LT(t.limits),l=UT(AT,e=>RT(r[e],!0));return{inspectors:l,agent:{readOnly:RT(n.readOnly,!1),tools:UT(AT,e=>l[e]&&RT(i[e],!0))},actions:UT(jT,e=>l[e]&&RT(a[e],o)),redaction:{secretNames:VT(s.secretNames),unmask:VT(s.unmask)},limits:Object.fromEntries(Object.keys(MT).map(e=>[e,HT(c[e],e)]))}}function GT(e){let t=e?.configs;return WT(t?.[IT])}function KT(e){return`${{forms:`Writing to forms`,router:`Navigating and clearing navigations`,ngrx:`Restoring NgRx state and dispatching actions`,http:`Changing HTTP mock rules and clearing HTTP calls`,analog:`Calling API routes`}[e]} is turned off in the devtools config (actions.${e}).`}var qT={components:`Components`,injectors:`Injectors`,signals:`Signals`,ngrx:`NgRx`,forms:`Forms`,router:`Router`,pipes:`Pipes`,http:`HTTP`,analog:`Analog`},JT={forms:`Form writes`,router:`Navigation`,ngrx:`NgRx restore and dispatch`,http:`HTTP mocking`,analog:`Analog API calls`},YT={refreshMs:e=>`poll every ${e} ms`,navigations:e=>`${e} navigations`,formTimeline:e=>`${e} form events`,httpCalls:e=>`${e} HTTP calls`,changeLog:e=>`${e} NgRx changes`,cdCycles:e=>`${e} change detection cycles`};function XT(e){let t=[],n=(e,n)=>{n.length&&t.push({label:e,value:n.join(`, `)})},r=AT.filter(t=>e.inspectors[t]);return n(`Inspectors off`,AT.filter(t=>!e.inspectors[t]).map(e=>qT[e])),n(`Agent`,e.agent.readOnly?[`Read-only`]:[]),n(`Hidden from the agent`,r.filter(t=>!e.agent.tools[t]).map(e=>qT[e])),n(`Blocked actions`,jT.filter(t=>e.inspectors[t]&&!e.actions[t]).map(e=>JT[e])),n(`Extra secret names`,e.redaction.secretNames),n(`Unmasked names`,e.redaction.unmask),n(`Limits`,Object.keys(MT).filter(t=>e.limits[t]!==MT[t].default).map(t=>YT[t](e.limits[t]))),t}var ZT=`pangular-page-id`,QT=null;function $T(e){QT=e}function eE(){if(QT)return QT;try{return new URLSearchParams(location.search).get(`pageId`)||(window.top===window?null:sessionStorage.getItem(ZT)||null)}catch{return null}}function tE(e,t){if(t.chosen&&e[t.chosen])return t.chosen;if(t.host)return t.host;if(t.previous&&e[t.previous])return t.previous;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n?.pageId??null}function nE(e,t){return e?t?e.pages?.[t]??null:e:null}function rE(e,t){return e?t?e.pages?.[t]??null:e.graph??null:null}function iE(e,t,n){return e?e.scope(`pangular`).rpc.call(t,...n===void 0?[]:[n]):Promise.resolve(null)}function aE(e,t,n){return iE(e,t,n).then(e=>e,()=>null)}function oE(e){return e?.connectionMeta.backend===`static`}function sE(e){let t=()=>{let t=e()?.scope(`pangular`).rpc;t&&(t.callEvent(`request-page-highlight`,null),t.callEvent(`request-form-highlight`,null))};return addEventListener(`pagehide`,t),()=>{removeEventListener(`pagehide`,t),t()}}function cE(e){return e.split(`@`)[1]??``}var lE={signal:`Signal Forms`,reactive:`Reactive`,template:`Template-driven`},uE={own:`validator`,directive:`template attribute`,tree:`cross-field rule`,async:`async`,parse:`parse`,submission:`server`,schema:`schema`,manual:`setErrors`},dE=aE,fE={key:`name looks secret`,"input-type":`password input`,autocomplete:`autocomplete is a secret kind`,marker:`marked as mask`,parent:`inside a secret group`,config:`listed in mask`};function pE(e){return fE[e]??e}var mE=`https://pangular-inspector.dev/security/#opt-fields-in-or-out`;async function hE(e,t){return await dE(e,`request-form-action`,t)??{ok:!1,error:`The devtools server did not answer.`}}function gE(e){return`${e.ok?e.message??`Done.`:e.error??`Failed.`}${e.skipped?.length?` Skipped: ${e.skipped.map(e=>`${e.path} (${e.reason})`).join(`, `)}.`:``}${e.status?` Status: ${e.status}.`:``}`}var _E=/"(?:[^"\\\n]|\\.)*"|`([^`\n]*)`|\*\*/g;function vE(e){return(e??``).replace(/^_Labels, paths.*_\n\n/,``).replace(_E,(e,t)=>t??(e===`**`?``:e))}function yE(e){return GT(e?.connectionMeta)}function bE(e,t){return yE(e).actions[t]}var xE={components:`components`,routes:`router`,signals:`signals`,injectors:`injectors`,store:`ngrx`,forms:`forms`,pipes:`pipes`,network:`http`,analog:`analog`};function SE(e,t){let n=xE[e];return!n||t.inspectors[n]}function CE(e,t){e&1&&(A(),Fg(0,`rect`,3)(1,`rect`,4)(2,`rect`,5)(3,`rect`,6))}function wE(e,t){e&1&&(A(),Fg(0,`path`,7)(1,`path`,8)(2,`path`,9))}function TE(e,t){e&1&&(A(),Fg(0,`circle`,10)(1,`path`,11)(2,`circle`,12))}function EE(e,t){e&1&&(A(),Fg(0,`path`,1))}function DE(e,t){e&1&&(A(),Fg(0,`path`,13)(1,`path`,14)(2,`path`,15)(3,`path`,16))}function OE(e,t){e&1&&(A(),Fg(0,`ellipse`,17)(1,`path`,18)(2,`path`,19))}function kE(e,t){e&1&&(A(),Fg(0,`rect`,20)(1,`path`,21)(2,`path`,22)(3,`path`,23))}function AE(e,t){e&1&&(A(),Fg(0,`circle`,24)(1,`path`,25)(2,`path`,26))}function jE(e,t){e&1&&(A(),Fg(0,`path`,27)(1,`path`,28)(2,`path`,29)(3,`path`,30)(4,`circle`,31))}function ME(e,t){e&1&&(A(),Fg(0,`path`,2))}var NE=class e{name=$.required();static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-tab-icon`]],inputs:{name:[1,`name`]},decls:11,vars:1,consts:[[`viewBox`,`0 0 24 24`,`width`,`16`,`height`,`16`,`fill`,`none`,`stroke`,`currentColor`,`stroke-width`,`1.8`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`,`aria-hidden`,`true`],[`d`,`M22 12h-4l-3 9L9 3l-3 9H2`],[`d`,`m8 3 4 8 5-5 5 15H2L8 3z`],[`x`,`3`,`y`,`3`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`14`,`y`,`3`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`x`,`14`,`y`,`12`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`3`,`y`,`16`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`d`,`M12 2 3 7l9 5 9-5-9-5Z`],[`d`,`m3 12 9 5 9-5`],[`d`,`m3 17 9 5 9-5`],[`cx`,`6`,`cy`,`19`,`r`,`3`],[`d`,`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`],[`cx`,`18`,`cy`,`5`,`r`,`3`],[`d`,`M12 22v-5`],[`d`,`M9 8V2`],[`d`,`M15 8V2`],[`d`,`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`],[`cx`,`12`,`cy`,`5`,`rx`,`9`,`ry`,`3`],[`d`,`M3 5v14a9 3 0 0 0 18 0V5`],[`d`,`M3 12a9 3 0 0 0 18 0`],[`x`,`3`,`y`,`4`,`width`,`18`,`height`,`16`,`rx`,`2`],[`d`,`M7 9h10`],[`d`,`M7 13h6`],[`d`,`M7 17h8`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M3 12h18`],[`d`,`M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18Z`],[`d`,`M4 7h10`],[`d`,`M4 17h6`],[`d`,`m14 13 4 4-4 4`],[`d`,`M10 17h8`],[`cx`,`18`,`cy`,`7`,`r`,`3`]],template:function(e,t){if(e&1&&(A(),H(0,`svg`,0),P(1,CE,4,0)(2,wE,3,0)(3,TE,3,0)(4,EE,1,0,`:svg:path`,1)(5,DE,4,0)(6,OE,3,0)(7,kE,4,0)(8,AE,3,0)(9,jE,5,0)(10,ME,1,0,`:svg:path`,2),U()),e&2){let e;M(),F((e=t.name())===`dashboard`?1:e===`components`?2:e===`routes`?3:e===`signals`?4:e===`injectors`?5:e===`store`?6:e===`forms`?7:e===`network`?8:e===`pipes`?9:e===`analog`?10:-1)}},styles:[`[_nghost-%COMP%] { + display: inline-flex; + flex-shrink: 0; +}`]})},PE=(e,t)=>t.tab,FE=(e,t)=>t.label;function IE(e,t){e&1&&J(0),e&2&&X(` `,K().meta()?.projectName,` `)}function LE(e,t){e&1&&J(0,` Project details unavailable `)}function RE(e,t){e&1&&J(0,` Loading… `)}function zE(e,t){e&1&&(J(0,` Run `),z(1,`code`),J(2,`pangular build`),B(),J(3,` again to rebuild the report. `))}function BE(e,t){e&1&&J(0,` Check that the dev server is running, then reload the panel. `)}function VE(e,t){if(e&1&&(z(0,`p`,4),P(1,zE,4,0)(2,BE,1,0),B()),e&2){let e=K();M(),F(e.staticReport()?1:2)}}function HE(e,t){e&1&&(z(0,`li`,6)(1,`span`),J(2,`Analog`),B(),J(3),B()),e&2&&(M(3),Y(t))}function UE(e,t){e&1&&(z(0,`li`)(1,`span`),J(2,`Change detection`),B(),J(3),B()),e&2&&(M(3),Y(t))}function WE(e,t){if(e&1&&(z(0,`span`,17),J(1),B(),z(2,`span`,18),J(3),B()),e&2){let e=K().$implicit,t=K();M(),Y(t.cards()[e.tab]?.value),M(2),Y(t.cards()[e.tab]?.sub)}}function GE(e,t){e&1&&(z(0,`span`,19),J(1,`–`),B(),z(2,`span`,18),J(3,`Count unavailable`),B())}function KE(e,t){e&1&&(V(0,`span`,20),z(1,`span`,18),J(2,`Counting…`),B())}function qE(e,t){if(e&1){let e=W();z(0,`button`,11),G(`click`,function(){let t=O(e).$implicit;return k(K().navigate.emit(t.tab))}),z(1,`span`,12)(2,`span`,13),V(3,`app-tab-icon`,14),B(),z(4,`span`,15),J(5,`→`),B()(),z(6,`span`,16),J(7),B(),P(8,WE,4,2)(9,GE,4,0)(10,KE,3,0),B()}if(e&2){let e,n=t.$implicit,r=t.$index,i=K().stateOf(n.tab);C_(`animation-delay`,60*r,`ms`),N(`aria-busy`,i===`loading`),M(3),R(`name`,n.tab),M(4),Y(n.label),M(),F((e=i)===`ready`?8:e===`error`?9:10)}}function JE(e,t){e&1&&(z(0,`p`),J(1,`Loading…`),B())}function YE(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2),B(),z(3,`dd`),J(4),B()()),e&2){let e=t.$implicit;M(2),Y(e.label),M(2),Y(e.value)}}function XE(e,t){if(e&1&&(z(0,`dl`),I(1,YE,5,2,`div`,null,FE),B()),e&2){let e=K();M(),L(e.configItems())}}function ZE(e,t){e&1&&(z(0,`p`),J(1,`Defaults`),B())}var QE=[{tab:`components`,label:`Components`},{tab:`routes`,label:`Routes`},{tab:`signals`,label:`Signals`},{tab:`injectors`,label:`Injectors`},{tab:`store`,label:`NgRx declarations`},{tab:`pipes`,label:`Pipes`},{tab:`forms`,label:`Forms`},{tab:`network`,label:`SSR & HTTP`}];function $E(e){return QE.filter(t=>SE(t.tab,e))}var eD={zoneless:`Zoneless`,zone:`zone.js`,"zone-unused":`Zoneless, zone.js loaded`};function tD(e){return e&&Object.hasOwn(eD,e)?eD[e]:null}var nD=new Set([`signal`,`computed`,`linkedSignal`,`effect`]),rD={action:[`action`,`actions`],reducer:[`reducer`,`reducers`],effect:[`effect`,`effects`],selector:[`selector`,`selectors`],feature:[`feature`,`features`],"store-setup":[`setup call`,`setup calls`],"signal-store":[`signal store`,`signal stores`],"signal-state":[`signal state`,`signal states`],"signal-method":[`signal method`,`signal methods`]};function iD(e,t,n){return`${e} ${e===1?t:n}`}function aD(e,t){for(let n of e??[])t(n),aD(n.children,t)}function oD(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`discovered in source`};let t=e.filter(e=>e.kind===`directive`).length;return{value:e.length-t,sub:`components · ${iD(t,`directive`,`directives`)}`}}function sD(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`route entries in source`};let t=e.filter(e=>e.kind===`redirect`).length;return{value:new Set(e.filter(e=>e.kind===`page`).map(e=>e.fullPath??e.path??``)).size,sub:`navigable paths · ${iD(t,`redirect`,`redirects`)}`}}function cD(e){let t=new Map;for(let n of e)n.kind&&t.set(n.kind,(t.get(n.kind)??0)+1);if(!t.size)return{value:e.length,sub:`declarations in source`};let n=[...t].sort((e,t)=>t[1]-e[1]).map(([e,t])=>{let[n,r]=rD[e]??[e,e];return iD(t,n,r)});return{value:e.length,sub:n.join(` · `)}}function lD(e,t){let n=e?.forms??[],r=t?n.filter(e=>cE(e.id)===t):n;if(!r.length)return{value:0,sub:`no forms on the page yet`};let i=r.filter(e=>e.root?.status===`INVALID`).length;return{value:r.length,sub:`${r.length===1?`form`:`forms`} · ${i} invalid`}}function uD(e){return e.cancelled||e.status===void 0?!1:e.status===0||e.status>=400}function dD(e,t){let n=e?.pages??[],r=t?n.find(e=>e.pageId===t)??null:n.reduce((e,t)=>!e||t.reportedAt>e.reportedAt?t:e,null),i=t&&!r?[]:e?.serverCalls??[],a=r?.initialUrl,o=[...a?i.filter(e=>!e.pageUrl||e.pageUrl===a):i,...r?.calls??[]];if(!o.length)return{value:0,sub:`no calls recorded yet`};let s=o.filter(uD).length;return{value:o.length,sub:`${o.length===1?`call`:`calls`} · ${s} failed`}}var fD=class e{rpc=$(null);navigate=Ov();staticReport=Q(()=>oE(this.rpc()));meta=j(null);config=Q(()=>yE(this.rpc()));stats=Q(()=>this.rpc()?$E(this.config()):[]);configItems=Q(()=>XT(this.config()));metaState=j(`loading`);states=j({});rows=j({});injectorTree=j(null);signalGraph=j(null);formsState=j(null);httpState=j(null);pageId=eE();destroyRef=E(Cs);stopLive=[];zone=Q(()=>tD(nE(this.injectorTree(),this.pageId)?.zone));liveInjectors=Q(()=>{let e=nE(this.injectorTree(),this.pageId);if(!e?.roots?.length)return null;let t=0,n=0,r=e=>{t++,n+=e.providers?.length??0};return aD(e.roots,r),aD(e.environment,r),{injectors:t,providers:n}});liveSignals=Q(()=>{let e=rE(this.signalGraph(),this.pageId);return e?.nodes?.length?e.nodes.filter(e=>nD.has(e.kind??``)).length:null});cards=Q(()=>{let e=this.rows(),t={};if(e.components&&(t.components=oD(e.components)),e.routes&&(t.routes=sD(e.routes)),e.store&&(t.store=cD(e.store)),e.pipes){let n=e.pipes.filter(e=>e.builtin).length;t.pipes={value:e.pipes.length-n,sub:n?`custom pipes · ${n} built-in in use`:`custom pipes in source`}}let n=this.liveSignals();n===null?e.signals&&(t.signals={value:e.signals.length,sub:`signal declarations in source`}):t.signals={value:n,sub:e.signals?`live on the page · ${e.signals.length} declared in source`:`live on the page`};let r=this.liveInjectors();r?t.injectors={value:r.injectors,sub:`live injectors · ${iD(r.providers,`provider`,`providers`)}`}:e.injectors&&(t.injectors={value:e.injectors.filter(e=>e.type!==`injection`).length,sub:`provider declarations in source`});let i=this.formsState();i&&(t.forms=lD(i,this.pageId));let a=this.httpState();return a&&(t.network=dD(a,this.pageId)),t});constructor(){uc(()=>{let e=this.rpc();if(!e)return;let t=e.scope(`pangular`);this.metaState.set(`loading`),this.states.set({}),this.rows.set({}),this.formsState.set(null),this.httpState.set(null),t.rpc.call(`build-meta`).then(e=>{this.meta.set(e),this.metaState.set(`ready`)}).catch(()=>this.metaState.set(`error`));let n=yE(e),r=e=>SE(e,n);r(`components`)&&this.load(t.rpc.call(`get-components`),`components`),r(`routes`)&&this.load(t.rpc.call(`get-routes`),`routes`),r(`signals`)&&this.load(t.rpc.call(`get-signals`),`signals`),r(`injectors`)&&this.load(t.rpc.call(`get-providers`),`injectors`),r(`store`)&&this.load(t.rpc.call(`get-ngrx-store`),`store`),r(`pipes`)&&this.load(t.rpc.call(`get-pipes`),`pipes`),this.watchLive(e,n)}),this.destroyRef.onDestroy(()=>this.unwatch())}stateOf(e){return(e===`signals`?this.liveSignals():e===`injectors`?this.liveInjectors():null)===null?this.states()[e]??`loading`:`ready`}load(e,t){let n=e=>this.states.update(n=>({...n,[t]:e}));e.then(e=>{this.rows.update(n=>({...n,[t]:Array.isArray(e)?e:[]})),n(`ready`)}).catch(()=>n(`error`))}async watchLive(e,t){this.unwatch();let n=e.scope(`pangular`).rpc,r=async(t,r,i)=>{let a=e=>i&&this.states.update(t=>({...t,[i]:e}));try{let i=await n.sharedState(t);if(this.destroyRef.destroyed||this.rpc()!==e)return;r(i.value()),a(`ready`),this.stopLive.push(i.on(`updated`,e=>r(e)))}catch{if(this.destroyRef.destroyed||this.rpc()!==e)return;r(null),a(`error`)}};await Promise.all([t.inspectors.injectors&&r(`injector-tree`,e=>this.injectorTree.set(e)),t.inspectors.signals&&r(`signal-graph`,e=>this.signalGraph.set(e)),SE(`forms`,t)&&r(`forms`,e=>this.formsState.set(e??{}),`forms`),SE(`network`,t)&&r(`http`,e=>this.httpState.set(e??{}),`network`)])}unwatch(){for(let e of this.stopLive.splice(0))e()}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-dashboard`]],inputs:{rpc:[1,`rpc`]},outputs:{navigate:`navigate`},decls:33,vars:14,consts:[[`aria-labelledby`,`project-title`,1,`project`],[1,`project-head`],[1,`eyebrow`],[`id`,`project-title`],[1,`hint`],[1,`chips`],[1,`analog`],[1,`grid`],[`type`,`button`,1,`stat`,3,`animation-delay`],[`aria-labelledby`,`config-title`,1,`config`],[`id`,`config-title`],[`type`,`button`,1,`stat`,3,`click`],[1,`top`],[1,`icon`],[3,`name`],[`aria-hidden`,`true`,1,`go`],[1,`label`],[1,`big`],[1,`sub`],[1,`big`,`muted`],[`aria-hidden`,`true`,1,`big`,`skeleton`]],template:function(e,t){if(e&1&&(z(0,`section`,0)(1,`div`,1)(2,`p`,2),J(3,`Project`),B(),z(4,`h2`,3),P(5,IE,1,1)(6,LE,1,0)(7,RE,1,0),B(),P(8,VE,3,1,`p`,4),B(),z(9,`ul`,5)(10,`li`)(11,`span`),J(12,`Angular`),B(),J(13),B(),z(14,`li`)(15,`span`),J(16,`TypeScript`),B(),J(17),B(),z(18,`li`)(19,`span`),J(20,`SSR`),B(),J(21),B(),P(22,HE,4,1,`li`,6),P(23,UE,4,1,`li`),B()(),z(24,`div`,7),I(25,qE,11,6,`button`,8,PE),B(),z(27,`section`,9)(28,`h2`,10),J(29,`Configuration`),B(),P(30,JE,2,0,`p`)(31,XE,3,0,`dl`)(32,ZE,2,0,`p`),B()),e&2){let e,n,r;N(`aria-busy`,t.metaState()===`loading`),M(4),q(`muted`,t.metaState()!==`ready`),M(),F((e=t.metaState())===`ready`?5:e===`error`?6:7),M(3),F(t.metaState()===`error`?8:-1),M(),q(`pending`,t.metaState()===`loading`),M(4),Y(t.meta()?.angularVersion??`…`),M(4),Y(t.meta()?.typescript??`…`),M(4),Y(t.meta()?t.meta()?.ssr?`On`:`Off`:`…`),M(),F((n=t.meta()?.analog)?22:-1,n),M(),F((r=t.zone())?23:-1,r),M(2),L(t.stats()),M(2),N(`aria-busy`,!t.rpc()),M(3),F(t.rpc()?t.configItems().length?31:32:30)}},dependencies:[NE],styles:[`[_nghost-%COMP%] { + display: block; + max-width: 1200px; +} + +.project[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: flex-end; + justify-content: space-between; + gap: 16px 24px; + margin-bottom: 16px; + padding: 24px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: radial-gradient(420px 180px at 100% 0%, var(--%NS%accent-soft), transparent 70%), linear-gradient(180deg, var(--%NS%surface-2), var(--%NS%surface)); + box-shadow: var(--%NS%shadow); +} + +.project-head[_ngcontent-%COMP%] { + flex: 1 1 240px; + min-width: 0; +} + +.eyebrow[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + margin: 0 0 4px; + color: var(--%NS%accent); +} + +h2[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-strong); + font-size: 24px; + line-height: 1.25; + letter-spacing: -0.02em; + overflow-wrap: anywhere; +} + +h2.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-weight: 600; +} + +.hint[_ngcontent-%COMP%] { + margin: 8px 0 0; + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; +} + +.chips[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; + min-width: 0; + margin: 0; + padding: 0; + list-style: none; +} + +.chips[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + gap: 8px; + height: 28px; + max-width: 100%; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + background: var(--%NS%bg); + color: var(--%NS%text-strong); + font-size: 12px; + font-weight: 600; + font-variant-numeric: tabular-nums; + white-space: nowrap; +} + +.chips[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-weight: 500; +} + +.chips.pending[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +.chips[_ngcontent-%COMP%] .analog[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, #dd0330 55%, transparent); +} + +.grid[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(min(100%, 150px), 1fr)); + gap: 12px; +} + +.stat[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + align-items: flex-start; + min-width: 0; + padding: 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + color: inherit; + text-align: left; + font: inherit; + cursor: pointer; + animation: enter 0.4s var(--%NS%ease) both; + transition: border-color 0.2s var(--%NS%ease), transform 0.2s var(--%NS%ease), background-color 0.2s var(--%NS%ease), box-shadow 0.2s var(--%NS%ease); +} + +.stat[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%accent-line); + background: var(--%NS%surface-2); + box-shadow: var(--%NS%shadow); + transform: translateY(-2px); +} + +.stat[_ngcontent-%COMP%]:active { + transform: translateY(0); + background: var(--%NS%surface-3); +} + +.stat[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.top[_ngcontent-%COMP%] { + display: flex; + align-items: center; + justify-content: space-between; + align-self: stretch; + margin-bottom: 12px; +} + +.icon[_ngcontent-%COMP%] { + display: grid; + place-items: center; + width: 32px; + height: 32px; + border: 1px solid var(--%NS%accent-line); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%accent-soft); + color: var(--%NS%accent); +} + +.go[_ngcontent-%COMP%] { + display: grid; + place-items: center; + width: 24px; + height: 24px; + color: var(--%NS%text-3); + transition: transform 0.2s var(--%NS%ease), color 0.2s var(--%NS%ease); +} + +.stat[_ngcontent-%COMP%]:hover .go[_ngcontent-%COMP%], +.stat[_ngcontent-%COMP%]:focus-visible .go[_ngcontent-%COMP%] { + color: var(--%NS%accent); + transform: translateX(3px); +} + +.label[_ngcontent-%COMP%] { + max-width: 100%; + overflow: hidden; + color: var(--%NS%text-2); + font-size: 13px; + font-weight: 500; + line-height: 16px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.big[_ngcontent-%COMP%] { + margin: 4px 0; + color: var(--%NS%text-strong); + font-size: 32px; + font-weight: 750; + line-height: 40px; + letter-spacing: -0.03em; + font-variant-numeric: tabular-nums; +} + +.big.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +.skeleton[_ngcontent-%COMP%] { + display: block; + width: 56px; + height: 32px; + margin-block: 8px; + border-radius: var(--%NS%radius-sm); + background: linear-gradient(90deg, var(--%NS%surface-2), var(--%NS%surface-3), var(--%NS%surface-2)) 0 0/200% 100%; + animation: _ngcontent-%COMP%_shimmer 1.4s linear infinite; +} + +.sub[_ngcontent-%COMP%] { + max-width: 100%; + color: var(--%NS%text-3); + font-size: 12px; + line-height: 16px; +} + +.config[_ngcontent-%COMP%] { + margin-top: 16px; + padding: 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); +} + +.config[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + margin: 0 0 8px; + color: var(--%NS%text-2); +} + +.config[_ngcontent-%COMP%] p[_ngcontent-%COMP%], +.config[_ngcontent-%COMP%] dl[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text); + font-size: 13px; + line-height: 1.5; +} + +.config[_ngcontent-%COMP%] dl[_ngcontent-%COMP%] { + display: grid; + gap: 4px; +} + +.config[_ngcontent-%COMP%] dl[_ngcontent-%COMP%] div[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px 8px; +} + +.config[_ngcontent-%COMP%] dt[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +.config[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]::after { + content: ":"; +} + +.config[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-strong); + overflow-wrap: anywhere; +} + +@keyframes _ngcontent-%COMP%_shimmer { + to { + background-position: -200% 0; + } +} +@media (max-width: 480px) { + .project[_ngcontent-%COMP%] { + padding: 16px; + } + h2[_ngcontent-%COMP%] { + font-size: 20px; + } + .stat[_ngcontent-%COMP%] { + padding: 12px; + } + .big[_ngcontent-%COMP%] { + font-size: 28px; + line-height: 36px; + } +} +@media (prefers-reduced-motion: reduce) { + .stat[_ngcontent-%COMP%], + .stat[_ngcontent-%COMP%]:hover, + .stat[_ngcontent-%COMP%]:active { + transform: none; + } + .stat[_ngcontent-%COMP%]:hover .go[_ngcontent-%COMP%] { + transform: none; + } + .skeleton[_ngcontent-%COMP%] { + animation: none; + } +}`]})},pD=`pangular:panel-action-result`,mD=6e3,hD=0;function gD(e=window){return e.location.protocol===`chrome-extension:`&&e.parent!==e}function _D(e,t=window){let n=`pa-${Date.now().toString(36)}-${++hD}`;return new Promise(r=>{let i=e=>{t.clearTimeout(o),t.removeEventListener(`message`,a),r(e)},a=({source:e,origin:r,data:a})=>{if(e!==t.parent||r!==t.location.origin)return;let o=a;if(o?.type!==pD||o.requestId!==n)return;let{opened:s,error:c}=a;i({ok:o.ok===!0,...s===`file`||s===`class`?{opened:s}:{},...typeof c==`string`?{error:c}:{}})},o=t.setTimeout(()=>i({ok:!1,error:`timeout`}),mD);t.addEventListener(`message`,a),t.parent.postMessage({...e,requestId:n},t.location.origin)})}var vD=class e{available=gD();reveal(e,t){return _D({type:`pangular:reveal-element`,pageId:e,id:t})}openSource(e,t,n){return _D({type:`pangular:open-source`,pageId:e,id:t,...n?{file:n.file,line:n.line}:{}})}static ɵfac=function(t){return new(t||e)};static ɵprov=kl({token:e,factory:e.ɵfac})};function yD(e){return e?.platform===`angular-native`}function bD(e,t){let n=Object.values(e??{}).filter(yD);if(t&&n.some(e=>e.pageId===t))return t;let r=null;for(let e of n)(!r||e.reportedAt>r.reportedAt)&&(r=e);return r?.pageId??null}var xD=[`trigger`],SD=[`list`],CD=(e,t)=>t.value;function wD(e,t){if(e&1&&(H(0,`span`,4),J(1),U()),e&2){let e=K();M(),Y(e.current().hint)}}function TD(e,t){if(e&1&&(H(0,`span`,15),J(1),U()),e&2){let e=K().$implicit;M(),Y(e.hint)}}function ED(e,t){if(e&1){let e=W();H(0,`li`,11),Qg(`pointerenter`,function(){let t=O(e).$index;return k(K(2).active.set(t))})(`pointerdown`,function(e){return e.preventDefault()})(`click`,function(){let t=O(e).$index;return k(K(2).choose(t))}),A(),H(1,`svg`,12),Fg(2,`path`,13),U(),ps(),H(3,`span`,14),J(4),U(),P(5,TD,2,1,`span`,15),U()}if(e&2){let e=t.$implicit,n=t.$index,r=K(2);q(`active`,n===r.active())(`selected`,e.value===r.value()),N(`id`,r.uid+`-opt-`+n)(`aria-selected`,e.value===r.value())(`aria-disabled`,e.disabled||null),M(4),Y(e.label),M(),F(e.hint?5:-1)}}function DD(e,t){if(e&1&&(H(0,`li`,10),J(1),U()),e&2){let e=K(2);M(),Y(e.emptyText())}}function OD(e,t){if(e&1&&(H(0,`ul`,8,1),dg(`list-in`),Qg(`pointerdown`,function(e){return e.preventDefault()}),I(2,ED,6,9,`li`,9,CD,!1,DD,2,1,`li`,10),U()),e&2){let e=K();q(`up`,e.dropUp()),N(`id`,e.uid+`-list`)(`aria-labelledby`,e.labelledBy()||e.uid+`-trigger`),M(2),L(e.options())}}var kD=0,AD=class e{options=$.required();value=Fv(null);placeholder=$(`Select…`);ariaLabel=$(``);labelledBy=$(``);disabled=$(!1);emptyText=$(`Nothing to choose`);uid=`app-select-${++kD}`;open=j(!1);active=j(-1);dropUp=j(!1);current=Q(()=>this.options().find(e=>e.value===this.value())??null);host=E(Ml);injector=E(xs);trigger=Rv.required(`trigger`);list=Rv(`list`);typed=``;typedAt=0;toggle(){this.open()?this.close():this.show()}choose(e){let t=this.options()[e];t&&!t.disabled&&(this.value.set(t.value),this.close(),this.trigger().nativeElement.focus())}onKey(e){let t=this.options(),n=this.open();switch(e.key){case`ArrowDown`:case`ArrowUp`:if(e.preventDefault(),!n){this.show();return}this.move(e.key===`ArrowDown`?1:-1);return;case`Home`:case`End`:if(!n)return;e.preventDefault(),this.setActive(e.key===`Home`?this.firstEnabled(0,1):this.firstEnabled(t.length-1,-1));return;case`Enter`:case` `:e.preventDefault(),n&&this.active()>=0?this.choose(this.active()):this.show();return;case`Escape`:if(!n)return;e.preventDefault(),e.stopPropagation(),this.close();return;case`Tab`:n&&this.close();return;default:e.key.length===1&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&this.typeAhead(e.key)}}onBlur(e){let t=e.relatedTarget;t&&this.host.nativeElement.contains(t)||this.close()}onOutside(e){this.open()&&!this.host.nativeElement.contains(e.target)&&this.close()}show(){if(this.disabled())return;let e=this.host.nativeElement.getBoundingClientRect(),t=window.innerHeight-e.bottom;this.dropUp.set(t<220&&e.top>t);let n=this.options().findIndex(e=>e.value===this.value());this.open.set(!0),this.setActive(n>=0?n:this.firstEnabled(0,1))}close(){this.open.set(!1),this.active.set(-1)}move(e){let t=this.firstEnabled(this.active()+e,e);t>=0&&this.setActive(t)}firstEnabled(e,t){let n=this.options();for(let r=e;r>=0&&r{(this.list()?.nativeElement.querySelector(`#${this.uid}-opt-${e}`))?.scrollIntoView({block:`nearest`})},{injector:this.injector})}typeAhead(e){let t=performance.now();this.typed=t-this.typedAt>600?e.toLowerCase():this.typed+e.toLowerCase(),this.typedAt=t;let n=this.options().findIndex(e=>!e.disabled&&e.label.toLowerCase().startsWith(this.typed));n<0||(this.open()?this.setActive(n):this.value.set(this.options()[n].value))}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-select`]],viewQuery:function(e,t){e&1&&e_(t.trigger,xD,5)(t.list,SD,5),e&2&&t_(2)},hostAttrs:[1,`app-select`],hostVars:2,hostBindings:function(e,t){e&1&&G(`pointerdown`,function(e){return t.onOutside(e)},Mu),e&2&&q(`open`,t.open())},inputs:{options:[1,`options`],value:[1,`value`],placeholder:[1,`placeholder`],ariaLabel:[1,`ariaLabel`],labelledBy:[1,`labelledBy`],disabled:[1,`disabled`],emptyText:[1,`emptyText`]},outputs:{value:`valueChange`},decls:8,vars:12,consts:[[`trigger`,``],[`list`,``],[`type`,`button`,`role`,`combobox`,`aria-haspopup`,`listbox`,1,`trigger`,3,`click`,`keydown`,`blur`,`disabled`],[1,`value`],[1,`value-hint`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`chevron`],[`d`,`m6 9 6 6 6-6`],[`role`,`listbox`,`tabindex`,`-1`,1,`list`,3,`up`],[`role`,`listbox`,`tabindex`,`-1`,1,`list`,3,`pointerdown`],[`role`,`option`,3,`active`,`selected`],[`role`,`option`,`aria-disabled`,`true`,1,`empty`],[`role`,`option`,3,`pointerenter`,`pointerdown`,`click`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`check`],[`d`,`m5 12 5 5 9-10`],[1,`label`],[1,`hint`]],template:function(e,t){e&1&&(H(0,`button`,2,0),Qg(`click`,function(){return t.toggle()})(`keydown`,function(e){return t.onKey(e)})(`blur`,function(e){return t.onBlur(e)}),H(2,`span`,3),J(3),U(),P(4,wD,2,1,`span`,4),A(),H(5,`svg`,5),Fg(6,`path`,6),U()(),P(7,OD,5,5,`ul`,7)),e&2&&(Vg(`disabled`,t.disabled()),N(`id`,t.uid+`-trigger`)(`aria-controls`,t.uid+`-list`)(`aria-expanded`,t.open())(`aria-label`,t.ariaLabel()||null)(`aria-labelledby`,t.labelledBy()||null)(`aria-activedescendant`,t.open()&&t.active()>=0?t.uid+`-opt-`+t.active():null),M(2),q(`placeholder`,!t.current()),M(),X(` `,t.current()?.label??t.placeholder(),` `),M(),F(t.current()?.hint?4:-1),M(3),F(t.open()?7:-1))},styles:[`[_nghost-%COMP%] { + position: relative; + display: inline-flex; + min-width: 0; + vertical-align: middle; +} + +.trigger[_ngcontent-%COMP%] { + display: flex; + align-items: center; + gap: 8px; + width: 100%; + min-width: 0; + height: var(--%NS%control-h, 34px); + padding: 0 10px 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + text-align: left; + cursor: pointer; + transition: border-color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease), background-color 150ms var(--%NS%ease); +} + +.trigger[_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: color-mix(in srgb, var(--%NS%border-strong) 55%, var(--%NS%text-3)); +} + +.trigger[_ngcontent-%COMP%]:focus-visible, +.open[_nghost-%COMP%] .trigger[_ngcontent-%COMP%] { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.trigger[_ngcontent-%COMP%]:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.value[_ngcontent-%COMP%] { + flex: 1 1 auto; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.value.placeholder[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +.value-hint[_ngcontent-%COMP%] { + flex: 0 1 auto; + min-width: 0; + overflow: hidden; + color: var(--%NS%text-3); + font-size: 12px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.chevron[_ngcontent-%COMP%] { + flex: none; + width: 14px; + height: 14px; + fill: none; + stroke: var(--%NS%text-3); + stroke-width: 2.2; + stroke-linecap: round; + stroke-linejoin: round; + transition: transform 150ms var(--%NS%ease); +} + +.open[_nghost-%COMP%] .chevron[_ngcontent-%COMP%] { + transform: rotate(180deg); + stroke: var(--%NS%accent); +} + +.list[_ngcontent-%COMP%] { + position: absolute; + top: calc(100% + 6px); + left: 0; + z-index: 50; + box-sizing: border-box; + min-width: 100%; + max-width: min(480px, 100vw - 24px); + max-height: 280px; + margin: 0; + padding: 4px; + overflow: auto; + list-style: none; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + box-shadow: 0 16px 40px -12px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(0, 0, 0, 0.2); + overscroll-behavior: contain; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .list[_ngcontent-%COMP%] { + box-shadow: 0 12px 32px -12px rgba(0, 0, 0, 0.25); + } +} +:root[data-theme=light] [_nghost-%COMP%] .list[_ngcontent-%COMP%] { + box-shadow: 0 12px 32px -12px rgba(0, 0, 0, 0.25); +} + +.list.up[_ngcontent-%COMP%] { + top: auto; + bottom: calc(100% + 6px); +} + +.list-in[_ngcontent-%COMP%] { + animation: _ngcontent-%COMP%_list-in 140ms var(--%NS%ease) both; +} + +@keyframes _ngcontent-%COMP%_list-in { + from { + opacity: 0; + transform: translateY(-4px) scale(0.98); + } +} +li[_ngcontent-%COMP%] { + display: flex; + align-items: center; + gap: 8px; + min-height: 32px; + padding: 0 10px 0 8px; + border-radius: 6px; + color: var(--%NS%text); + font-size: 13px; + cursor: pointer; + white-space: nowrap; +} + +li.active[_ngcontent-%COMP%] { + background: var(--%NS%surface-3); +} + +li.selected[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-weight: 600; +} + +li[aria-disabled=true][_ngcontent-%COMP%] { + color: var(--%NS%text-3); + cursor: default; +} + +.check[_ngcontent-%COMP%] { + flex: none; + width: 14px; + height: 14px; + fill: none; + stroke: var(--%NS%accent); + stroke-width: 2.4; + stroke-linecap: round; + stroke-linejoin: round; + visibility: hidden; +} + +li.selected[_ngcontent-%COMP%] .check[_ngcontent-%COMP%] { + visibility: visible; +} + +.label[_ngcontent-%COMP%] { + flex: 1 1 auto; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; +} + +.hint[_ngcontent-%COMP%] { + flex: none; + max-width: 50%; + overflow: hidden; + color: var(--%NS%text-3); + font-size: 12px; + font-weight: 400; + text-overflow: ellipsis; +} + +.empty[_ngcontent-%COMP%] { + justify-content: center; +} + +@media (prefers-reduced-motion: reduce) { + .list-in[_ngcontent-%COMP%] { + animation: none; + } + .chevron[_ngcontent-%COMP%] { + transition: none; + } +}`]})};function jD(e,t){let n=t.trim().toLowerCase();if(!n)return{nodes:e,matches:0};let r=0,i=e=>e.name.toLowerCase().includes(n)||e.tag.toLowerCase().includes(n)||!!e.directives?.some(e=>e.toLowerCase().includes(n)),a=e=>e.flatMap(e=>{let t=i(e);t&&r++;let n=a(e.children);return t||n.length?[{...e,children:n}]:[]});return{nodes:a(e),matches:r}}function MD(e,t,n,r=!1){let i=r?`${e}+`:`${e}`;return n?`${t} of ${i}`:`${i} ${e===1&&!r?`instance`:`instances`}`}function ND(e,t,n,r=!1){return n.trim()?t?`${t} of ${r?`${e}+`:`${e}`} ${e===1&&!r?`instance`:`instances`} match.`:`No components match.`:``}function PD(e){let t=e?.components,n=e?.depth;return t&&n?`Showing the first ${t} component instances, and none nested more than ${n} elements deep. Others are not listed or searchable.`:t?`Showing the first ${t} component instances. Others are not listed or searchable.`:n?`Components nested more than ${n} elements deep are not listed or searchable.`:`The page has more components than the tree shows.`}function FD(e,t){let n=t?.detail?.id??null,r=t?.pageId??null;if(r!==e.pageId)return{pageId:r,selectedId:n,detailId:n,destroyed:null};let i=e.selectedId;return n&&n!==e.detailId&&n!==i&&(i=n),i&&t&&!t.truncated&&!ID(t.roots,i)?{pageId:r,selectedId:null,detailId:n,destroyed:i}:{pageId:r,selectedId:i,detailId:n,destroyed:null}}function ID(e,t){return e.some(e=>e.id===t||ID(e.children,t))}function LD(e,t,n){let r=e.indexOf(n);if(r<0)return null;for(let n=r+1;n=0;n--)if(t.has(e[n]))return e[n];return null}function RD(e){return new Date(e).toLocaleTimeString()}var zD=/[ \t\n\r]/;function BD(e){let t=e.trim(),n;try{n=JSON.parse(t)}catch{return null}if(typeof n!=`object`||!n)return null;let r=``,i=0,a=()=>`\n${` `.repeat(i)}`;for(let e=0;e0?0:-1)},styles:[`[_nghost-%COMP%] { + display: block; +} + +.note[_ngcontent-%COMP%] { + margin: 0 0 12px; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface); + color: var(--%NS%text-2); + line-height: 1.5; +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + color: var(--%NS%text); +} + +a[_ngcontent-%COMP%] { + color: var(--%NS%accent); + border-radius: 2px; +} + +a[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +}`]})},WD=(e,t)=>t.id;function GD(e,t){if(e&1){let e=W();z(0,`button`,13),G(`click`,function(){return O(e),k(K().clear())}),J(1,`Clear`),B()}}function KD(e,t){e&1&&(z(0,`p`,9),J(1,`This page can't record change detection. It needs Angular 20 or later.`),B())}function qD(e,t){if(e&1&&(z(0,`tr`)(1,`td`,17),J(2),B(),z(3,`td`,18),J(4),B(),z(5,`td`,18),J(6),B(),z(7,`td`,18),J(8),B()()),e&2){let e=t.$implicit,n=K(2);M(2),Y(e.name),M(2),Y(e.checks),M(2),Y(n.ms(e.ms)),M(2),Y(n.ms(e.maxMs))}}function JD(e,t){if(e&1&&(z(0,`span`,20),J(1,`after `),z(2,`span`,17),J(3),B()()),e&2){let e=K().$implicit;M(3),Y(e.trigger)}}function YD(e,t){if(e&1&&(z(0,`span`,21),J(1,` slowest `),z(2,`span`,17),J(3),B(),J(4),B()),e&2){let e=t,n=K(3);M(3),Y(e.name),M(),X(` `,n.ms(e.ms),` `)}}function XD(e,t){if(e&1&&(z(0,`li`)(1,`span`,19),J(2),B(),z(3,`span`,17),J(4),B(),z(5,`span`),J(6),B(),P(7,JD,4,1,`span`,20),P(8,YD,5,2,`span`,21),B()),e&2){let e,n=t.$implicit,r=K(2);M(2),Y(r.clock(n.at)),M(2),Y(r.ms(n.ms)),M(2),X_(` `,n.checks,` `,n.checks===1?`check`:`checks`,`, `,n.passes,` `,n.passes===1?`pass`:`passes`,` `),M(),F(n.trigger?7:-1),M(),F((e=n.components[0])?8:-1,e)}}function ZD(e,t){if(e&1&&(z(0,`div`,11)(1,`div`)(2,`h3`),J(3,`Slowest components`),B(),z(4,`table`)(5,`thead`)(6,`tr`)(7,`th`,14),J(8,`Component`),B(),z(9,`th`,15),J(10,`Checks`),B(),z(11,`th`,15),J(12,`Self time`),B(),z(13,`th`,15),J(14,`Slowest`),B()()(),z(15,`tbody`),I(16,qD,9,4,`tr`,null,Cg),B()()(),z(18,`div`)(19,`h3`),J(20,`Latest cycles`),B(),z(21,`ol`,16),I(22,XD,9,8,`li`,null,WD),B()()()),e&2){let e=K();M(16),L(e.slowest()),M(6),L(e.latest())}}function QD(e,t){e&1&&(z(0,`p`,12),J(1,`Use the app. Cycles show up here as Angular runs change detection.`),B())}var $D=10,eO=class e{page=$(null);pageId=$(null);rpc=$(null);message=j(``);announcement=j(``);recording=Q(()=>this.page()?.recording===!0);cycles=Q(()=>this.page()?.cycles??[]);maxCycles=Q(()=>yE(this.rpc()).limits.cdCycles);slowest=Q(()=>[...this.page()?.components??[]].sort((e,t)=>t.ms-e.ms).slice(0,$D));latest=Q(()=>this.cycles().slice(-30).reverse());status=Q(()=>{if(this.message())return this.message();let e=this.cycles().length;return this.recording()?`Recording. ${e} ${e===1?`cycle`:`cycles`} so far.`:e?`${e} ${e===1?`cycle`:`cycles`} recorded.`:``});ms(e){return`${e<10?e.toFixed(2):Math.round(e)} ms`}clock(e){return RD(e)}async toggle(){this.recording()?await this.send({on:!1},``,()=>{let e=this.cycles().length;return`Recording stopped. ${e} ${e===1?`cycle`:`cycles`} recorded.`}):await this.send({on:!0},`Starting…`,()=>`Recording started.`)}async clear(){await this.send({clear:!0},``,()=>`Cleared the recorded cycles.`)}async send(e,t,n){this.message.set(t);try{if(!this.rpc())throw Error(`no client`);await iE(this.rpc(),`request-change-detection-record`,{pageId:this.pageId(),...e}),this.message.set(``),this.announce(n())}catch{let e=`Could not reach the page.`;this.message.set(e),this.announce(e)}}announce(e){this.announcement.update(t=>t===e?`${e} `:e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-cd-recording`]],inputs:{page:[1,`page`],pageId:[1,`pageId`],rpc:[1,`rpc`]},decls:18,vars:11,consts:[[`aria-labelledby`,`cd-heading`,1,`cd`],[1,`cd-head`],[`id`,`cd-heading`],[`type`,`button`,3,`click`,`disabled`],[`aria-hidden`,`true`,1,`dot`],[`type`,`button`],[1,`status`],[`role`,`status`,1,`sr-only`],[1,`hint`],[1,`note`],[`what`,`cycles`,`limit`,`cdCycles`,3,`dropped`,`max`],[1,`cd-grid`],[1,`empty`],[`type`,`button`,3,`click`],[`scope`,`col`],[`scope`,`col`,1,`num`],[`aria-label`,`Latest change detection cycles, newest first`,1,`cycles`],[1,`mono`],[1,`num`],[1,`when`],[1,`trigger`],[1,`top`]],template:function(e,t){e&1&&(z(0,`section`,0)(1,`div`,1)(2,`h2`,2),J(3,`Change detection`),B(),z(4,`button`,3),G(`click`,function(){return t.toggle()}),V(5,`span`,4),J(6),B(),P(7,GD,2,0,`button`,5),z(8,`p`,6),J(9),B(),z(10,`p`,7),J(11),B()(),z(12,`p`,8),J(13,` Records each change detection cycle with Angular's profiler: how long it took, how many components it checked and the output that ran before it. Tree rows show how often each instance was checked. Times come from a development build. `),B(),P(14,KD,2,0,`p`,9),V(15,`app-limit-note`,10),P(16,ZD,24,0,`div`,11)(17,QD,2,0,`p`,12),B()),e&2&&(M(4),q(`on`,t.recording()),R(`disabled`,!t.pageId()),M(2),X(` `,t.recording()?`Stop recording`:`Record`,` `),M(),F(t.cycles().length?7:-1),M(2),Y(t.status()),M(2),Y(t.announcement()),M(3),F(t.page()?.supported===!1?14:-1),M(),R(`dropped`,t.page()?.dropped??0)(`max`,t.maxCycles()),M(),F(t.slowest().length?16:t.recording()?17:-1))},dependencies:[UD],styles:[`[_nghost-%COMP%] { + display: block; + margin-top: 16px; +} + +.cd[_ngcontent-%COMP%] { + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + padding: 12px 14px; +} + +.cd-head[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px 12px; +} + +h2[_ngcontent-%COMP%] { + margin: 0; + font-size: 14px; + color: var(--%NS%text-strong); +} + +h3[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + margin: 12px 0 6px; +} + +button[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + gap: 8px; + height: var(--%NS%control-h); + padding: 0 12px; + background: var(--%NS%surface-2); + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text); + cursor: pointer; + font: inherit; + font-size: 13px; +} + +button[_ngcontent-%COMP%]:hover:not(:disabled) { + background: var(--%NS%surface-3); + border-color: var(--%NS%accent-line); +} + +button[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +button[_ngcontent-%COMP%]:disabled { + cursor: not-allowed; + opacity: 0.6; +} + +.dot[_ngcontent-%COMP%] { + width: 8px; + height: 8px; + border-radius: 50%; + background: var(--%NS%text-3); +} + +button.on[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%] { + background: var(--%NS%danger); +} + +.status[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-2); + font-size: 12px; +} + +.hint[_ngcontent-%COMP%], +.note[_ngcontent-%COMP%], +.empty[_ngcontent-%COMP%] { + margin: 8px 0; + color: var(--%NS%text-2); + line-height: 1.5; +} + +.cd-grid[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 0 16px; +} + +@media (min-width: 880px) { + .cd-grid[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); + } +} +table[_ngcontent-%COMP%] { + width: 100%; + border-collapse: collapse; + font-size: 12px; +} + +th[_ngcontent-%COMP%], +td[_ngcontent-%COMP%] { + padding: 4px 6px; + border-bottom: 1px solid var(--%NS%border); + text-align: left; +} + +th[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-weight: 500; +} + +td.mono[_ngcontent-%COMP%] { + overflow-wrap: anywhere; +} + +.num[_ngcontent-%COMP%] { + text-align: right; + font-variant-numeric: tabular-nums; +} + +.mono[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); +} + +.cycles[_ngcontent-%COMP%] { + margin: 0; + padding: 0; + list-style: none; + font-size: 12px; +} + +.cycles[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px 10px; + padding: 4px 0; + border-bottom: 1px solid var(--%NS%border); + color: var(--%NS%text); +} + +.when[_ngcontent-%COMP%], +.trigger[_ngcontent-%COMP%], +.top[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +.trigger[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%], +.top[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%] { + overflow-wrap: anywhere; +}`]})},tO=[`filterInput`],nO=()=>[],rO=(e,t)=>t.node.id,iO=(e,t)=>t.outlet+t.route,aO=(e,t)=>t.formId,oO=(e,t)=>t.name+e,sO=(e,t)=>t.name,cO=(e,t)=>t.token+e,lO=(e,t)=>t.id;function uO(e,t){return this.sourceKey(t)}function dO(e,t){if(e&1){let e=W();z(0,`span`,28),J(1,`Page`),B(),z(2,`app-select`,29),G(`valueChange`,function(t){return O(e),k(K(2).selectPage(t))}),B()}if(e&2){let e=K(2);M(2),R(`options`,e.pageOptions())(`value`,e.page()?.pageId??null)}}function fO(e,t){if(e&1){let e=W();z(0,`button`,30),G(`click`,function(){O(e);let t=K(2);return k(t.picking()?t.cancelPick():t.pick())}),A(),z(1,`svg`,10),V(2,`path`,31),B(),J(3),B()}if(e&2){let e=K(2);q(`on`,e.picking()),M(3),X(` `,e.picking()?`Cancel pick`:`Pick component on page`,` `)}}function pO(e,t){if(e&1&&(z(0,`p`,17),J(1),B()),e&2){let e=K(2);M(),Y(e.pickMessage())}}function mO(e,t){if(e&1&&(z(0,`p`,18),J(1),B()),e&2){let e=K(2);M(),Y(e.truncationText())}}function hO(e,t){e&1&&(z(0,`p`,33),J(1,`The filter only searches the components the tree lists.`),B())}function gO(e,t){if(e&1){let e=W();z(0,`div`,21)(1,`p`,32),J(2),B(),P(3,hO,2,0,`p`,33),z(4,`button`,34),G(`click`,function(){return O(e),k(K(2).clearFilter())}),J(5,`Clear filter`),B()()}if(e&2){let e=K(2);M(2),X(`No components match “`,e.filter().trim(),`”`),M(),F(e.page().truncated?3:-1)}}function _O(e,t){if(e&1){let e=W();z(0,`span`,43),G(`click`,function(t){O(e);let n=K().$implicit;return k(K(2).toggle(n.node.id,t))}),A(),z(1,`svg`,44),V(2,`path`,45),B()()}if(e&2){let e=K().$implicit;q(`open`,e.expanded)}}function vO(e,t){e&1&&V(0,`span`,37)}function yO(e,t){if(e&1&&(z(0,`span`,40),J(1),B()),e&2){let e=t.$implicit;M(),Y(e.route||`/`)}}function bO(e,t){if(e&1&&(z(0,`span`,41),J(1),z(2,`span`,20),J(3),B()()),e&2){let e=t;M(),X(` `,e),M(2),X(` `,e===1?`check`:`checks`,` while recording`)}}function xO(e,t){if(e&1&&(z(0,`span`,42),J(1),z(2,`span`,20),J(3),B()()),e&2){let e=K().$implicit;N(`title`,e.node.directives.join(`, `)),M(),X(` +`,e.node.directives.length,` `),M(2),X(` `,e.node.directives.length===1?`directive`:`directives`,` `)}}function SO(e,t){if(e&1){let e=W();z(0,`div`,35),G(`click`,function(){let t=O(e).$implicit;return k(K(2).select(t.node.id))})(`focus`,function(){let t=O(e).$implicit,n=K(2);return n.focusId.set(t.node.id),k(n.highlight(t.node.id))})(`blur`,function(){return O(e),k(K(2).highlight(null))})(`mouseenter`,function(){let t=O(e).$implicit;return k(K(2).highlight(t.node.id))})(`mouseleave`,function(){return O(e),k(K(2).highlight(null))}),P(1,_O,3,2,`span`,36)(2,vO,1,0,`span`,37),z(3,`span`,38),J(4),B(),z(5,`span`,39),J(6),B(),I(7,yO,2,1,`span`,40,iO),P(9,bO,4,2,`span`,41),P(10,xO,4,3,`span`,42),B()}if(e&2){let e,n=t.$implicit,r=K(2);C_(`--%NS%depth`,n.depth),q(`selected`,r.selectedId()===n.node.id),N(`aria-level`,n.depth+1)(`aria-expanded`,n.hasChildren?n.expanded:null)(`aria-selected`,r.selectedId()===n.node.id)(`tabindex`,r.rovingId()===n.node.id?0:-1)(`data-id`,n.node.id),M(),F(n.hasChildren?1:2),M(3),Y(n.node.name),M(2),X(`<`,n.node.tag,`>`),M(),L(r.routedById().get(n.node.id)??ov(14,nO)),M(2),F((e=r.cdHosts()[n.node.id])?9:-1,e),M(),F(n.node.directives?.length?10:-1)}}function CO(e,t){if(e&1&&(z(0,`p`,50),J(1),B()),e&2){let e=t;M(),Z(``,e.file,`:`,e.line)}}function wO(e,t){if(e&1){let e=W();z(0,`div`,52)(1,`button`,34),G(`click`,function(){O(e);let t=K();return k(K(2).revealInElements(t))}),J(2,`Reveal in Elements`),B(),z(3,`button`,34),G(`click`,function(){O(e);let t=K();return k(K(2).openSource(t))}),J(4,`Open source`),B()(),z(5,`p`,53),J(6),B()}if(e&2){let e=K(3);M(6),Y(e.actionMessage())}}function TO(e,t){if(e&1){let e=W();z(0,`button`,56),G(`click`,function(){let t=O(e).$implicit;return k(K(5).showForm.emit(t.formId))}),J(1),B()}if(e&2){let e=t.$implicit;M(),X(` Show `,e.label,` in Forms `)}}function EO(e,t){if(e&1&&(z(0,`div`,54),I(1,TO,2,1,`button`,55,aO),B()),e&2){let e=K(),t=K(3);M(),L(t.formsIn(e.file))}}function DO(e,t){e&1&&P(0,EO,3,0,`div`,54),e&2&&F(K(3).formsIn(t.file).length?0:-1)}function OO(e,t){if(e&1&&(z(0,`dt`),J(1,`Routed`),B(),z(2,`dd`,58),J(3),B()),e&2){let e=t.$implicit;M(3),Z(``,e.route||`/`,` in outlet `,e.outlet)}}function kO(e,t){if(e&1&&(z(0,`span`,67),J(1),B()),e&2){let e=K().$implicit;M(),X(`(`,e.prop,`)`)}}function AO(e,t){if(e&1&&(z(0,`li`,65)(1,`span`,66),J(2),P(3,kO,2,1,`span`,67),B(),z(4,`pre`),J(5),dv(6,`json`),B()()),e&2){let e=t.$implicit;M(2),X(` `,e.name,` `),M(),F(e.prop===e.name?-1:3),M(2),Y(pv(6,3,e.value))}}function jO(e,t){if(e&1&&(z(0,`ul`,61),I(1,AO,7,5,`li`,65,sO),B()),e&2){let e=K();M(),L(e.inputs)}}function MO(e,t){e&1&&(z(0,`p`,62),J(1,`No inputs.`),B())}function NO(e,t){if(e&1&&(z(0,`li`,69)(1,`span`,58),J(2),B(),z(3,`span`,70),J(4),B()()),e&2){let e=t.$implicit;q(`on`,e.listened),M(2),Y(e.name),M(2),Y(e.listened?`listened`:`no listener`)}}function PO(e,t){if(e&1&&(z(0,`ul`,63),I(1,NO,5,4,`li`,68,sO),B()),e&2){let e=K();M(),L(e.outputs)}}function FO(e,t){e&1&&(z(0,`p`,62),J(1,`No outputs.`),B())}function IO(e,t){if(e&1&&(z(0,`span`,71),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.kind)}}function LO(e,t){if(e&1&&(z(0,`li`,65)(1,`span`,66),J(2),P(3,IO,2,1,`span`,71),B(),z(4,`pre`),J(5),dv(6,`json`),B()()),e&2){let e=t.$implicit;M(2),X(` `,e.name,` `),M(),F(e.kind?3:-1),M(2),Y(pv(6,3,e.value))}}function RO(e,t){if(e&1&&(z(0,`ul`,61),I(1,LO,7,5,`li`,65,sO),B()),e&2){let e=K();M(),L(e.properties)}}function zO(e,t){e&1&&(z(0,`p`,62),J(1,`No other properties.`),B())}function BO(e,t){if(e&1&&(z(0,`li`,72),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function VO(e,t){if(e&1&&(z(0,`div`,59)(1,`h3`),J(2,` DOM listeners `),z(3,`span`,60),J(4),B()(),z(5,`ul`,63),I(6,BO,2,1,`li`,72,wg),B()()),e&2){let e=K();M(4),Y(e.listeners.length),M(2),L(e.listeners)}}function HO(e,t){if(e&1&&(z(0,`li`,65)(1,`span`,66),J(2),B(),z(3,`pre`),J(4),dv(5,`json`),B()()),e&2){let e=t.$implicit;M(2),Y(e.name),M(2),Y(pv(5,2,e.value))}}function UO(e,t){if(e&1&&(z(0,`ul`,61),I(1,HO,6,4,`li`,65,sO),B()),e&2){let e=K().$implicit;M(),L(e.inputs)}}function WO(e,t){if(e&1&&(z(0,`li`,69)(1,`span`,58),J(2),B(),z(3,`span`,70),J(4),B()()),e&2){let e=t.$implicit;q(`on`,e.listened),M(2),Y(e.name),M(2),Y(e.listened?`listened`:`no listener`)}}function GO(e,t){if(e&1&&(z(0,`ul`,63),I(1,WO,5,4,`li`,68,sO),B()),e&2){let e=K().$implicit;M(),L(e.outputs)}}function KO(e,t){e&1&&(z(0,`p`,62),J(1,`No inputs or outputs.`),B())}function qO(e,t){if(e&1&&(z(0,`div`,59)(1,`h3`)(2,`span`,58),J(3),B(),z(4,`span`,71),J(5,`directive on host`),B()(),P(6,UO,3,0,`ul`,61),P(7,GO,3,0,`ul`,63),P(8,KO,2,0,`p`,62),B()),e&2){let e=t.$implicit;M(3),Y(e.name),M(3),F(e.inputs.length?6:-1),M(),F(e.outputs.length?7:-1),M(),F(!e.inputs.length&&!e.outputs.length?8:-1)}}function JO(e,t){if(e&1&&(z(0,`span`,71),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function YO(e,t){if(e&1&&(z(0,`span`,75),J(1,`from `),z(2,`span`,58),J(3),B()()),e&2){let e=K().$implicit;M(3),Y(e.providedByName??`an injector`)}}function XO(e,t){e&1&&(z(0,`span`,76),J(1,`not provided`),B())}function ZO(e,t){if(e&1&&(z(0,`li`,73)(1,`span`,74),J(2),B(),I(3,JO,2,1,`span`,71,wg),P(5,YO,4,1,`span`,75)(6,XO,2,0,`span`,76),B()),e&2){let e=t.$implicit;M(2),Y(e.token),M(),L(e.flags),M(2),F(e.providedBy?5:6)}}function QO(e,t){if(e&1&&(z(0,`ul`,64),I(1,ZO,7,2,`li`,73,cO),B()),e&2){let e=K();M(),L(e.dependencies)}}function $O(e,t){e&1&&(z(0,`p`,62),J(1,`Nothing is injected through the constructor or inject().`),B())}function ek(e,t){if(e&1&&(z(0,`dl`,57)(1,`dt`),J(2,`Change detection`),B(),z(3,`dd`),J(4),B(),z(5,`dt`),J(6,`Encapsulation`),B(),z(7,`dd`),J(8),B(),z(9,`dt`),J(10,`Host path`),B(),z(11,`dd`,58),J(12),B(),I(13,OO,4,2,null,null,iO),B(),z(15,`div`,59)(16,`h3`),J(17,` Inputs `),z(18,`span`,60),J(19),B()(),P(20,jO,3,0,`ul`,61)(21,MO,2,0,`p`,62),B(),z(22,`div`,59)(23,`h3`),J(24,` Outputs `),z(25,`span`,60),J(26),B()(),P(27,PO,3,0,`ul`,63)(28,FO,2,0,`p`,62),B(),z(29,`div`,59)(30,`h3`),J(31,` Properties `),z(32,`span`,60),J(33),B()(),P(34,RO,3,0,`ul`,61)(35,zO,2,0,`p`,62),B(),P(36,VO,8,1,`div`,59),I(37,qO,9,4,`div`,59,oO),z(39,`div`,59)(40,`h3`),J(41,` Injected `),z(42,`span`,60),J(43),B()(),P(44,QO,3,0,`ul`,64)(45,$O,2,0,`p`,62),B()),e&2){let e=t,n=K(),r=K(2);M(4),Y(e.changeDetection??`Unknown`),M(4),Y(e.encapsulation??`Unknown`),M(4),Y(e.path),M(),L(r.routedById().get(n.id)??ov(12,nO)),M(6),Y(e.inputs.length),M(),F(e.inputs.length?20:21),M(6),Y(e.outputs.length),M(),F(e.outputs.length?27:28),M(6),Y(e.properties?.length??0),M(),F(e.properties?.length?34:35),M(2),F(e.listeners.length?36:-1),M(),L(e.directives),M(6),Y(e.dependencies.length),M(),F(e.dependencies.length?44:45)}}function tk(e,t){e&1&&(z(0,`div`,51),V(1,`span`,77),z(2,`p`,33),J(3,`Reading live values from the page…`),B()())}function nk(e,t){if(e&1&&(z(0,`section`,24)(1,`header`,46)(2,`span`,47),J(3,`component`),B(),z(4,`h2`,48),J(5),B(),z(6,`span`,49),J(7),B(),P(8,CO,2,2,`p`,50),P(9,wO,7,1),P(10,DO,1,1),B(),P(11,ek,46,13)(12,tk,4,0,`div`,51),B()),e&2){let e,n,r,i=t,a=K(2);M(5),Y(i.name),M(2),X(`<`,i.tag,`>`),M(),F((e=a.whereOf(i))?8:-1,e),M(),F(a.devtoolsActions()?9:-1),M(),F((n=a.sourceFor(i))?10:-1,n),M(),F((r=a.detail())?11:12,r)}}function rk(e,t){e&1&&(z(0,`p`,32),J(1,`The selected component was destroyed`),B(),z(2,`p`,33)(3,`span`,58),J(4),B(),J(5,` is no longer on the page. Select another component to see its live values. `),B()),e&2&&(M(4),Y(t))}function ik(e,t){e&1&&(z(0,`p`,33),J(1,` Select a component to see its live inputs, properties, outputs, change detection and injected services. `),B())}function ak(e,t){if(e&1&&(z(0,`div`,25),P(1,rk,6,1)(2,ik,2,0,`p`,33),B()),e&2){let e,t=K(2);M(),F((e=t.destroyed())?1:2,e)}}function ok(e,t){e&1&&(z(0,`span`,71),J(1,`hydrate never`),B())}function sk(e,t){if(e&1&&(z(0,`span`,71),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.hydration)}}function ck(e,t){if(e&1){let e=W();z(0,`li`)(1,`button`,80),G(`click`,function(){let t=O(e).$implicit;return k(K(3).showOwner(t))})(`focus`,function(){let t=O(e).$implicit;return k(K(3).highlightBlock(t))})(`blur`,function(){return O(e),k(K(3).highlight(null))})(`mouseenter`,function(){let t=O(e).$implicit;return k(K(3).highlightBlock(t))})(`mouseleave`,function(){return O(e),k(K(3).highlight(null))}),z(2,`span`,38),J(3),B(),z(4,`span`,81),J(5),B(),P(6,ok,2,0,`span`,71)(7,sk,2,1,`span`,71),z(8,`span`,82),J(9),B()()()}if(e&2){let e=t.$implicit;M(),R(`disabled`,!e.owner),M(2),Y(e.owner?.name??`Unknown component`),M(),w_(`defer-state-`+e.state),M(),Y(e.state),M(),F(e.hydrateNever?6:e.hydration===`not-configured`?-1:7),M(3),Y(e.triggers.join(`, `)||`no triggers`)}}function lk(e,t){if(e&1&&(z(0,`section`,26)(1,`h2`,78),J(2,` Defer blocks `),z(3,`span`,60),J(4),B()(),z(5,`ul`,79),I(6,ck,10,7,`li`,null,lO),B()()),e&2){let e=K(2);M(4),Y(e.deferBlocks().length),M(2),L(e.deferBlocks())}}function uk(e,t){if(e&1&&V(0,`app-cd-recording`,27),e&2){let e=K(2);R(`page`,e.cdPage())(`pageId`,e.page().pageId)(`rpc`,e.rpc())}}function dk(e,t){if(e&1){let e=W();z(0,`p`,1),J(1,` Every component instance on the page, in the order Angular rendered them. Hover a row to highlight its host in the page, and select it to read its live inputs, properties, outputs and injected services. `),B(),z(2,`div`,2)(3,`div`,3),A(),z(4,`svg`,4),V(5,`circle`,5)(6,`path`,6),B(),ps(),z(7,`input`,7,0),G(`input`,function(t){return O(e),k(K().setFilter(t.target.value))})(`keydown.escape`,function(){return O(e),k(K().setFilter(``))}),B()(),P(9,dO,3,2),z(10,`span`,8),J(11),B(),z(12,`button`,9),G(`click`,function(){return O(e),k(K().expandAll())}),A(),z(13,`svg`,10),V(14,`path`,11)(15,`path`,12),B(),J(16,` Expand all `),B(),ps(),z(17,`button`,9),G(`click`,function(){return O(e),k(K().collapseAll())}),A(),z(18,`svg`,10),V(19,`path`,13)(20,`path`,14),B(),J(21,` Collapse all `),B(),P(22,fO,4,3,`button`,15),B(),ps(),z(23,`p`,16),J(24),B(),P(25,pO,2,1,`p`,17),P(26,mO,2,1,`p`,18),z(27,`div`,19)(28,`div`)(29,`h2`,20),J(30,`Component tree`),B(),P(31,gO,6,2,`div`,21),z(32,`div`,22),G(`keydown`,function(t){return O(e),k(K().onTreeKey(t))}),I(33,SO,11,15,`div`,23,rO),B()(),P(35,nk,13,6,`section`,24)(36,ak,3,1,`div`,25),B(),P(37,lk,8,1,`section`,26),P(38,uk,1,3,`app-cd-recording`,27)}if(e&2){let e,t=K();M(7),R(`value`,t.filter()),M(2),F(t.pageOptions().length>1?9:-1),M(2),Y(t.countLabel()),M(),R(`disabled`,!!t.filter().trim()),M(5),R(`disabled`,!!t.filter().trim()),M(5),F(t.native()?-1:22),M(2),Y(t.announcement()),M(),F(t.pickMessage()?25:-1),M(),F(t.page().truncated?26:-1),M(5),F(t.rows().length?-1:31),M(),R(`hidden`,!t.rows().length),M(),L(t.rows()),M(2),F((e=t.selectedNode())?35:36,e),M(2),F(t.deferBlocks().length?37:-1),M(),F(!t.staticReport()&&!t.native()?38:-1)}}function fk(e,t){e&1&&(z(0,`p`,18),J(1,` The page reported no component instances. The live tree needs a development build with Angular's debug API. Showing what the source declares instead. `),B())}function pk(e,t){e&1&&(z(0,`p`,83),J(1,` No page is connected, so this lists what the source declares. Open the app in a browser with the devtools connected to see each rendered instance. `),B())}function mk(e,t){if(e&1&&J(0),e&2){let e=K(3);Z(` `,e.filteredSource().length,` of `,e.source().length,` `)}}function hk(e,t){if(e&1&&J(0),e&2){let e=K(3);X_(` `,e.sourceCounts().components,` `,e.sourceCounts().components===1?`component`:`components`,` · `,e.sourceCounts().directives,` `,e.sourceCounts().directives===1?`directive`:`directives`,` `)}}function gk(e,t){if(e&1&&(z(0,`span`,85),P(1,mk,1,2)(2,hk,1,4),B()),e&2){let e=K(2);M(),F(e.filter().trim()?1:2)}}function _k(e,t){e&1&&(z(0,`div`,89),V(1,`span`,77),z(2,`p`,32),J(3,`Scanning components…`),B()())}function vk(e,t){e&1&&(J(0,` Run `),z(1,`code`),J(2,`pangular build`),B(),J(3,` again to rebuild the report. `))}function yk(e,t){e&1&&J(0,` Check that the dev server is running, then try again. `)}function bk(e,t){if(e&1){let e=W();z(0,`div`,90)(1,`p`,32),J(2,`Could not load components`),B(),z(3,`p`,33),P(4,vk,4,0)(5,yk,1,0),B(),z(6,`button`,34),G(`click`,function(){return O(e),k(K(2).refresh())}),J(7,`Retry`),B()()}if(e&2){let e=K(2);M(4),F(e.staticReport()?4:5)}}function xk(e,t){e&1&&(z(0,`div`,91)(1,`p`,32),J(2,`No components found`),B(),z(3,`p`,33),J(4,`No @Component or @Directive was found in the source.`),B()())}function Sk(e,t){if(e&1){let e=W();z(0,`div`,91)(1,`p`,32),J(2),B(),z(3,`button`,34),G(`click`,function(){return O(e),k(K(2).clearFilter())}),J(4,`Clear filter`),B()()}if(e&2){let e=K(2);M(2),X(`No components match “`,e.filter().trim(),`”`)}}function Ck(e,t){if(e&1&&J(0),e&2){let e=K().$implicit;X(` `,K(3).bareName(e.className),` · `)}}function wk(e,t){if(e&1&&(z(0,`dt`),J(1,`Change detection`),B(),z(2,`dd`),J(3),B()),e&2){let e=K(2).$implicit;M(3),Y(e.changeDetection??`Unknown`)}}function Tk(e,t){if(e&1){let e=W();z(0,`button`,56),G(`click`,function(){let t=O(e).$implicit;return k(K(5).showForm.emit(t.formId))}),J(1),B()}if(e&2){let e=t.$implicit;M(),X(` Show `,e.label,` in Forms `)}}function Ek(e,t){if(e&1&&(z(0,`div`,101)(1,`dl`,57)(2,`dt`),J(3,`Class`),B(),z(4,`dd`,58),J(5),B(),z(6,`dt`),J(7,`File`),B(),z(8,`dd`,58),J(9),B(),z(10,`dt`),J(11,`Standalone`),B(),z(12,`dd`),J(13),B(),P(14,wk,4,1),z(15,`dt`),J(16,`Inputs`),B(),z(17,`dd`,58),J(18),B(),z(19,`dt`),J(20,`Outputs`),B(),z(21,`dd`,58),J(22),B()(),I(23,Tk,2,1,`button`,55,aO),B()),e&2){let e=K(),t=e.$implicit,n=e.$index,r=K(3);R(`id`,`ct-source-`+n),M(5),Y(r.bareName(t.className)),M(4),Z(``,t.file,`:`,t.line),M(4),Y(t.isStandalone?`Yes`:`No`),M(),F(t.kind===`component`?14:-1),M(4),Y(t.inputs.join(`, `)||`None`),M(4),Y(t.outputs.join(`, `)||`None`),M(),L(r.formsIn(t.file))}}function Dk(e,t){if(e&1){let e=W();z(0,`li`,94)(1,`button`,95),G(`click`,function(){let t=O(e).$implicit,n=K(3);return k(n.openKey.set(n.openKey()===n.sourceKey(t)?null:n.sourceKey(t)))}),z(2,`span`,96),J(3),B(),z(4,`span`,97)(5,`span`,98),J(6),B(),z(7,`span`,99),P(8,Ck,1,1),J(9),B()(),A(),z(10,`svg`,100),V(11,`path`,45),B()(),P(12,Ek,25,8,`div`,101),B()}if(e&2){let e=t.$implicit,n=t.$index,r=K(3);q(`expanded`,r.openKey()===r.sourceKey(e)),M(),N(`aria-expanded`,r.openKey()===r.sourceKey(e))(`aria-controls`,r.openKey()===r.sourceKey(e)?`ct-source-`+n:null),M(),q(`directive`,e.kind===`directive`),M(),Y(e.kind),M(3),Y(r.sourceLabel(e)),M(2),F(e.selector?8:-1),M(),Z(` `,e.file,`:`,e.line,` `),M(3),F(r.openKey()===r.sourceKey(e)?12:-1)}}function Ok(e,t){if(e&1&&(z(0,`ul`,92),I(1,Dk,13,12,`li`,93,uO,!0),B()),e&2){let e=K(2);M(),L(e.filteredSource())}}function kk(e,t){if(e&1){let e=W();P(0,fk,2,0,`p`,18)(1,pk,2,0,`p`,83),z(2,`div`,2)(3,`div`,3),A(),z(4,`svg`,4),V(5,`circle`,5)(6,`path`,6),B(),ps(),z(7,`input`,84,0),G(`input`,function(t){return O(e),k(K().filter.set(t.target.value))})(`keydown.escape`,function(){return O(e),k(K().filter.set(``))}),B()(),P(9,gk,3,1,`span`,85),z(10,`button`,86),G(`click`,function(){return O(e),k(K().refresh())}),A(),z(11,`svg`,10),V(12,`path`,87)(13,`path`,88),B(),J(14,` Refresh `),B()(),P(15,_k,4,0,`div`,89)(16,bk,8,1,`div`,90)(17,xk,5,0,`div`,91)(18,Sk,5,1,`div`,91)(19,Ok,3,0,`ul`,92)}if(e&2){let e=K();F(+!e.page()),M(7),R(`value`,e.filter()),M(2),F(e.source().length?9:-1),M(),q(`spinning`,e.loading()),N(`aria-busy`,e.loading()),M(5),F(e.loading()&&!e.source().length?15:e.error()&&!e.source().length?16:e.source().length?e.filteredSource().length?19:18:17)}}function Ak(e){return e.replace(/^_(?=[A-Z])/,``)}var jk=class e{rpc=$(null);staticReport=Q(()=>oE(this.rpc()));focus=$(null);showForm=Ov();focusHandled=Ov();filter=j(``);loading=j(!1);error=j(!1);source=j([]);formOwners=j([]);pages=j({});chosenPageId=j(null);selectedId=j(null);destroyed=j(null);announcement=j(``);picking=j(!1);pickMessage=j(``);pickPageId=null;pickSeq=0;focusId=j(null);bridge=E(vD);actionMessage=Tv({source:this.selectedId,computation:()=>``});collapsed=j(new Set);openKey=j(null);routerPages=j([]);pageId=eE();destroyRef=E(Cs);injector=E(xs);host=E(Ml);filterInput=Rv(`filterInput`);cleanups=[];selection={pageId:null,detailId:null};shownPageId=Tv({source:()=>({pages:this.pages(),chosen:this.chosenPageId()}),computation:({pages:e,chosen:t},n)=>tE(e,{chosen:t,host:this.pageId,previous:n?.value??null})});page=Q(()=>{let e=this.shownPageId();return e?this.pages()[e]??null:null});pageOptions=Q(()=>Object.values(this.pages()).map(e=>({value:e.pageId,label:e.title||e.url||`Page ${e.pageId}`,hint:e.url})));live=Q(()=>(this.page()?.roots.length??0)>0);native=Q(()=>yD(this.page()));devtoolsActions=Q(()=>this.bridge.available&&!!this.page()&&!this.native()&&!this.staticReport());cdPages=j({});cdPage=Q(()=>{let e=this.page()?.pageId;return e?this.cdPages()[e]??null:null});cdHosts=Q(()=>this.cdPage()?.hosts??{});index=Q(()=>{let e=new Map,t=new Map,n=(r,i)=>{for(let a of r)e.set(a.id,a),i&&t.set(a.id,i),n(a.children,a.id)};return n(this.page()?.roots??[],null),{map:e,parents:t}});query=Q(()=>this.filter().trim().toLowerCase());filtered=Q(()=>jD(this.page()?.roots??[],this.query()));deferBlocks=Q(()=>this.page()?.deferBlocks??[]);countLabel=Q(()=>MD(this.page()?.count??0,this.filtered().matches,!!this.query(),!!this.page()?.truncated));truncationText=Q(()=>PD(this.page()?.truncatedBy));rows=Q(()=>{let e=[],t=this.collapsed(),n=!!this.query(),r=(i,a)=>{for(let o of i){let i=n||!t.has(o.id);e.push({node:o,depth:a,hasChildren:o.children.length>0,expanded:i}),i&&r(o.children,a+1)}};return r(this.filtered().nodes,0),e});selectedNode=Q(()=>{let e=this.selectedId();return e?this.index().map.get(e)??null:null});detail=Q(()=>{let e=this.page()?.detail;return e&&e.id===this.selectedId()?e:null});rovingId=Q(()=>{let e=this.rows(),t=new Set(e.map(e=>e.node.id)),n=this.focusId();if(n&&t.has(n))return n;let r=this.selectedId();return r&&t.has(r)?r:e[0]?.node.id??null});outlets=Q(()=>{let e=this.page()?.pageId;return this.routerPages().find(t=>t.pageId===e)?.outlets??[]});routedById=Q(()=>{let e=new Map,t=n=>{for(let r of n){if(r.activated&&r.devtoolsId){let t=e.get(r.devtoolsId)??[];t.push({route:r.route??``,outlet:r.outlet}),e.set(r.devtoolsId,t)}r.children&&t(r.children)}};return t(this.outlets()),e});sourceByClass=Q(()=>{let e=new Map;for(let t of this.source()){let n=Ak(t.className);e.set(n,[...e.get(n)??[],t])}return e});filteredSource=Q(()=>{let e=this.query(),t=this.source();return e?t.filter(t=>t.selector.toLowerCase().includes(e)||t.className.toLowerCase().includes(e)||t.file.toLowerCase().includes(e)):t});sourceCounts=Q(()=>{let e=this.source().filter(e=>e.kind===`component`).length;return{components:e,directives:this.source().length-e}});constructor(){uc(()=>{let e=this.page()?.pageId??null;Cv(()=>{this.picking()&&e!==this.pickPageId&&this.dropPick()})}),uc(()=>{let e=this.rpc();e&&(this.refresh(),this.watch(e))}),uc(()=>{let e=this.focus();if(!e)return;let t=this.page()?.pageId??null;if(e.pageId&&t!==e.pageId&&this.pages()[e.pageId]){Cv(()=>this.selectPage(e.pageId));return}this.live()&&Cv(()=>{(!e.pageId||t===e.pageId)&&this.index().map.has(e.id)?this.reveal(e.id):this.announcement.set(`That component is no longer on the page.`),this.focusHandled.emit()})}),this.destroyRef.onDestroy(()=>{this.highlight(null);for(let e of this.cleanups.splice(0))e()})}async watch(e){for(let e of this.cleanups.splice(0))e();let t=e.scope(`pangular`);try{let e=await t.rpc.sharedState(`component-tree`);if(this.destroyRef.destroyed)return;let n=e=>{let t=e?.pages;this.applyPages(t&&typeof t==`object`?t:{})};n(e.value()),this.cleanups.push(e.on(`updated`,n))}catch{this.applyPages({})}try{let e=await t.rpc.sharedState(`change-detection`);if(this.destroyRef.destroyed)return;let n=e=>{let t=e?.pages;this.cdPages.set(t&&typeof t==`object`?t:{})};n(e.value()),this.cleanups.push(e.on(`updated`,n))}catch{this.cdPages.set({})}try{let e=await t.rpc.sharedState(`router`);if(this.destroyRef.destroyed)return;let n=e=>{let t=e?.pages;this.routerPages.set(Array.isArray(t)?t:[])};n(e.value()),this.cleanups.push(e.on(`updated`,n))}catch{this.routerPages.set([])}}async refresh(){let e=this.rpc();if(!e)return;this.loading.set(!0);let t=e.scope(`pangular`);try{this.source.set(await t.rpc.call(`get-components`)),this.error.set(!1)}catch{this.error.set(!0)}finally{this.loading.set(!1)}let n=await t.rpc.call(`forms-owners`).catch(()=>[]);this.formOwners.set(n??[])}formsIn(e){return this.formOwners().filter(t=>t.file===e)}whereOf(e){return this.detail()?.source??this.sourceFor(e)}async revealInElements(e){let t=this.page()?.pageId;if(!t)return;this.actionMessage.set(``);let n=await this.bridge.reveal(t,e.id);this.selectedId()===e.id&&this.actionMessage.set(n.ok?``:`Could not reveal it. The component must be rendered in the tab these DevTools inspect.`)}async openSource(e){let t=this.page()?.pageId;if(!t)return;let n=this.whereOf(e);this.actionMessage.set(``);let r=await this.bridge.openSource(t,e.id,n);this.selectedId()===e.id&&(r.ok||this.actionMessage.set(n?`Not found in Sources. Open ${n.file}:${n.line} in your editor.`:`Could not open the source. The component must be rendered in the tab these DevTools inspect.`))}sourceFor(e){let t=(this.sourceByClass().get(Ak(e.name))??[]).filter(e=>e.kind===`component`);return t.find(t=>t.selector===e.tag)??t[0]??null}sourceKey(e){return`${e.file}#${e.className}`}sourceLabel(e){return e.selector?e.kind===`component`&&/^[a-z][\w-]*$/i.test(e.selector)?`<${e.selector}>`:e.selector:Ak(e.className)}bareName(e){return Ak(e)}applyPages(e){let t=document.activeElement,n=t instanceof HTMLElement&&this.host.nativeElement.contains(t)?t.closest(`.row`)?.dataset.id??null:null,r=n?this.rows().map(e=>e.node.id):[],i=this.index().map;if(this.pages.set(e),this.syncSelection(i),!n)return;let a=new Set(this.rows().map(e=>e.node.id));if(a.has(n))return;let o=LD(r,a,n);o&&(this.focusId.set(o),Id(()=>this.rowElement(o)?.focus(),{injector:this.injector}))}syncSelection(e=this.index().map){let t=this.page(),n=FD({...this.selection,selectedId:this.selectedId()},t?{pageId:t.pageId,roots:t.roots,detail:t.detail,truncated:t.truncated}:null),r=n.destroyed?e.get(n.destroyed)?.name:void 0;this.selection={pageId:n.pageId,detailId:n.detailId},n.selectedId!==this.selectedId()&&this.selectedId.set(n.selectedId),n.selectedId&&this.destroyed.set(null),n.destroyed&&(this.destroyed.set(r??`The component`),this.announcement.set(`The selected component was destroyed.`),this.sendSelection(null))}selectPage(e){e&&(this.chosenPageId.set(e),this.destroyed.set(null),this.syncSelection())}setFilter(e){this.filter.set(e);let{matches:t}=this.filtered();this.announcement.set(ND(this.page()?.count??0,t,e,!!this.page()?.truncated))}clearFilter(){this.live()?this.setFilter(``):this.filter.set(``),this.filterInput()?.nativeElement.focus()}async pick(){let e=this.rpc();if(!e||this.picking())return;let t=++this.pickSeq;this.pickPageId=this.page()?.pageId??null,this.picking.set(!0),this.say(`Click a component in the app. Press Escape to cancel.`);let n=await e.scope(`pangular`).rpc.call(`request-component-pick`,{pageId:this.pickPageId??void 0}).catch(()=>({ok:!1,error:`Could not reach the devtools server.`}));if(t===this.pickSeq){if(this.picking.set(!1),!n?.ok||!n.id){this.say(n?.error??`No component was picked.`);return}n.pageId&&n.pageId!==this.page()?.pageId&&this.selectPage(n.pageId),this.say(`Picked ${n.name??`a component`}.`),this.destroyed.set(null),this.index().map.has(n.id)?this.reveal(n.id):this.selectedId.set(n.id)}}cancelPick(){let e=this.rpc();e&&this.picking()&&e.scope(`pangular`).rpc.call(`cancel-component-pick`,{pageId:this.pickPageId??void 0}).catch(()=>{})}dropPick(){this.cancelPick(),this.pickSeq++,this.picking.set(!1),this.say(`Picking stopped because the page changed.`)}say(e){this.pickMessage.set(e),this.announcement.set(e)}sendSelection(e){let t=this.rpc();t&&t.scope(`pangular`).rpc.call(`select-component`,{pageId:this.page()?.pageId,id:e}).catch(()=>{})}rowElement(e){return this.host.nativeElement.querySelector(`.row[data-id="${CSS.escape(e)}"]`)}select(e){let t=this.selectedId()===e?null:e;this.selectedId.set(t),this.destroyed.set(null),this.focusId.set(e),this.sendSelection(t)}reveal(e){let{parents:t}=this.index();this.collapsed.update(n=>{let r=new Set(n);for(let n=t.get(e);n;n=t.get(n))r.delete(n);return r}),this.rows().some(t=>t.node.id===e)||this.setFilter(``),this.selectedId()!==e&&this.select(e),Id(()=>document.querySelector(`.row[data-id="${CSS.escape(e)}"]`)?.scrollIntoView({block:`nearest`}),{injector:this.injector})}toggle(e,t){t?.stopPropagation(),!this.query()&&this.collapsed.update(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}expandAll(){this.query()||(this.collapsed.set(new Set),this.announce(`Expanded every component.`))}collapseAll(){if(this.query())return;let{map:e,parents:t}=this.index(),n=this.rovingId(),r=new Set;for(let t of e.values())t.children.length&&r.add(t.id);if(this.collapsed.set(r),n){let e=new Set(this.rows().map(e=>e.node.id)),r=n;for(;r&&!e.has(r);)r=t.get(r);r&&this.focusId.set(r)}this.announce(`Collapsed every component. Only the top level is shown.`)}announce(e){this.announcement.update(t=>t===e?`${e}\u00a0`:e)}expandSiblings(e){if(this.query())return;let t=this.index().parents.get(e),n=t?this.index().map.get(t)?.children??[]:this.page()?.roots??[];this.collapsed.update(e=>{let t=new Set(e);for(let e of n)t.delete(e.id);return t})}highlight(e){let t=this.rpc();if(!t)return;let n=e?{pageId:this.page()?.pageId,id:e}:null;t.scope(`pangular`).rpc.call(`request-page-highlight`,n).catch(()=>{})}highlightBlock(e){this.highlight(e.rootIds[0]??e.owner?.id??null)}showOwner(e){e.owner&&this.index().map.has(e.owner.id)&&this.reveal(e.owner.id)}onTreeKey(e){let t=this.rows();if(!t.length)return;let n=t.findIndex(e=>e.node.id===this.rovingId()),r=Math.max(n,0),i=t[r],a=-1;switch(e.key){case`ArrowDown`:a=Math.min(r+1,t.length-1);break;case`ArrowUp`:a=Math.max(r-1,0);break;case`Home`:a=0;break;case`End`:a=t.length-1;break;case`ArrowRight`:i.hasChildren&&!i.expanded?this.toggle(i.node.id):i.hasChildren&&(a=r+1);break;case`ArrowLeft`:if(i.hasChildren&&i.expanded&&!this.query())this.toggle(i.node.id);else{let e=this.index().parents.get(i.node.id);a=t.findIndex(t=>t.node.id===e)}break;case`Enter`:case` `:this.select(i.node.id);break;case`*`:this.expandSiblings(i.node.id);break;default:return}if(e.preventDefault(),a>=0){let e=t[a].node.id;this.focusId.set(e),queueMicrotask(()=>{let t=document.querySelector(`.row[data-id="${CSS.escape(e)}"]`);t?.focus(),t?.scrollIntoView({block:`nearest`})})}}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-component-tree`]],viewQuery:function(e,t){e&1&&e_(t.filterInput,tO,5),e&2&&t_()},hostBindings:function(e,t){e&1&&G(`keydown.escape`,function(){return t.cancelPick()})},inputs:{rpc:[1,`rpc`],focus:[1,`focus`]},outputs:{showForm:`showForm`,focusHandled:`focusHandled`},decls:2,vars:1,consts:[[`filterInput`,``],[1,`intro`],[1,`toolbar`],[1,`search`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`search-icon`],[`cx`,`11`,`cy`,`11`,`r`,`7`],[`d`,`m20 20-3.5-3.5`],[`type`,`search`,`placeholder`,`Filter by class, tag or directive…`,`aria-label`,`Filter components by class, tag or directive`,`autocomplete`,`off`,`spellcheck`,`false`,3,`input`,`keydown.escape`,`value`],[1,`count`],[`type`,`button`,1,`tree-action`,3,`click`,`disabled`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`d`,`m7 15 5 5 5-5`],[`d`,`m7 9 5-5 5 5`],[`d`,`m7 20 5-5 5 5`],[`d`,`m7 4 5 5 5-5`],[`type`,`button`,1,`pick`,3,`on`],[`role`,`status`,1,`sr-only`],[1,`pick-message`],[`role`,`status`,1,`notice`],[1,`layout`],[1,`sr-only`],[1,`state`,`compact`,`tree`],[`role`,`tree`,`aria-label`,`Component instances`,1,`tree`,3,`keydown`,`hidden`],[`role`,`treeitem`,1,`row`,3,`selected`,`--%NS%depth`],[`aria-labelledby`,`ct-detail-title`,1,`detail`],[1,`detail`,`placeholder`],[`aria-labelledby`,`ct-defer-title`,1,`defer`],[3,`page`,`pageId`,`rpc`],[`id`,`ct-page-label`,1,`sr-only`],[`labelledBy`,`ct-page-label`,1,`page-select`,3,`valueChange`,`options`,`value`],[`type`,`button`,1,`pick`,3,`click`],[`d`,`M4 4l6.5 16 2.3-6.7L19.5 11z`],[1,`state-title`],[1,`state-hint`],[`type`,`button`,3,`click`],[`role`,`treeitem`,1,`row`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`],[`aria-hidden`,`true`,1,`twisty`,3,`open`],[`aria-hidden`,`true`,1,`twisty-space`],[1,`name`,`mono`],[1,`tag`,`mono`],[1,`routed`],[1,`checks`],[1,`dirs`],[`aria-hidden`,`true`,1,`twisty`,3,`click`],[`viewBox`,`0 0 24 24`],[`d`,`m9 6 6 6-6 6`],[1,`detail-head`],[1,`badge`],[`id`,`ct-detail-title`,1,`mono`],[1,`mono`,`muted`],[1,`where`,`mono`],[`role`,`status`,1,`state`,`compact`],[`role`,`group`,`aria-label`,`Chrome DevTools`,1,`actions`],[`role`,`status`,1,`where`,`action-message`],[1,`actions`],[`type`,`button`,1,`show-form`],[`type`,`button`,1,`show-form`,3,`click`],[1,`facts`],[1,`mono`],[1,`block`],[1,`pill`],[1,`props`],[1,`empty-line`],[1,`chips`],[1,`deps`],[1,`prop`],[1,`prop-name`,`mono`],[1,`muted`],[1,`chip`,3,`on`],[1,`chip`],[1,`chip-note`],[1,`flag`],[1,`chip`,`mono`],[1,`dep`],[1,`token`,`mono`],[1,`from`],[1,`from`,`missing`],[`aria-hidden`,`true`,1,`spinner`],[`id`,`ct-defer-title`,1,`defer-title`],[1,`defer-list`],[`type`,`button`,1,`defer-row`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`,`disabled`],[1,`defer-state`],[1,`triggers`,`mono`],[1,`notice`],[`type`,`search`,`placeholder`,`Filter by selector, class or file…`,`aria-label`,`Filter components by selector, class or file`,`autocomplete`,`off`,`spellcheck`,`false`,3,`input`,`keydown.escape`,`value`],[`aria-live`,`polite`,1,`count`],[`type`,`button`,1,`refresh`,3,`click`],[`d`,`M20 12a8 8 0 1 1-2.34-5.66`],[`d`,`M20 4v5h-5`],[`role`,`status`,1,`state`],[`role`,`alert`,1,`state`],[1,`state`],[`role`,`list`,1,`source-list`],[1,`source-item`,3,`expanded`],[1,`source-item`],[`type`,`button`,1,`source-toggle`,3,`click`],[1,`kind-flag`],[1,`row-main`],[1,`selector`,`mono`],[1,`file`,`mono`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`chevron`],[1,`inline-detail`,3,`id`]],template:function(e,t){e&1&&P(0,dk,39,14)(1,kk,20,7),e&2&&F(+!t.live())},dependencies:[AD,eO,ab],styles:[`[_nghost-%COMP%] { + display: block; + color: var(--%NS%text); + font-size: 13px; +} + +.mono[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); +} + +.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +.intro[_ngcontent-%COMP%] { + max-width: 720px; + margin: 0 0 12px; + color: var(--%NS%text-2); + line-height: 1.5; +} + +.notice[_ngcontent-%COMP%] { + margin: 0 0 12px; + padding: 10px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface); + color: var(--%NS%text-2); + line-height: 1.5; +} + +.toolbar[_ngcontent-%COMP%] { + position: sticky; + top: 0; + z-index: 2; + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px 12px; + margin: 0 0 12px; + padding: 8px; + background: color-mix(in srgb, var(--%NS%surface) 85%, transparent); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); +} + +.search[_ngcontent-%COMP%] { + position: relative; + flex: 1 1 220px; + min-width: 0; +} + +.search-icon[_ngcontent-%COMP%] { + position: absolute; + top: 50%; + left: 12px; + width: 14px; + height: 14px; + transform: translateY(-50%); + fill: none; + stroke: var(--%NS%text-3); + stroke-width: 2.2; + stroke-linecap: round; + pointer-events: none; +} + +.search[_ngcontent-%COMP%]:focus-within .search-icon[_ngcontent-%COMP%] { + stroke: var(--%NS%accent); +} + +input[type=search][_ngcontent-%COMP%] { + width: 100%; + height: 34px; + padding: 0 12px 0 34px; + background: var(--%NS%bg); + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text); + font: inherit; + font-size: 13px; +} + +input[type=search][_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +input[type=search][_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.count[_ngcontent-%COMP%] { + flex: none; + color: var(--%NS%text-2); + font-size: 12px; + font-variant-numeric: tabular-nums; + white-space: nowrap; +} + +button[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 8px; + height: 34px; + padding: 0 14px; + background: var(--%NS%surface-2); + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text); + cursor: pointer; + font: inherit; + font-size: 13px; + font-weight: 500; + transition: background-color 150ms var(--%NS%ease), border-color 150ms var(--%NS%ease); +} + +button[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-3); + border-color: var(--%NS%accent-line); +} + +button[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +button[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] { + flex: none; + width: 14px; + height: 14px; + fill: none; + stroke: currentColor; + stroke-width: 2.2; + stroke-linecap: round; + stroke-linejoin: round; +} + +.refresh.spinning[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] { + animation: spin 0.8s linear infinite; +} + +.page-select[_ngcontent-%COMP%] { + flex: 0 1 220px; + min-width: 0; +} + +.tree-action[_ngcontent-%COMP%]:disabled, +.tree-action[_ngcontent-%COMP%]:disabled:hover { + background: var(--%NS%surface-2); + border-color: var(--%NS%border-strong); + opacity: 0.5; +} + +.pick.on[_ngcontent-%COMP%] { + background: var(--%NS%accent-soft); + border-color: var(--%NS%accent-line); + color: var(--%NS%text-strong); +} + +.defer[_ngcontent-%COMP%] { + margin-top: 16px; +} + +.defer-title[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + display: flex; + align-items: center; + gap: 6px; + margin: 0 0 8px; +} + +.defer-list[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + margin: 0; + padding: 0; + list-style: none; +} + +.defer-row[_ngcontent-%COMP%] { + justify-content: flex-start; + flex-wrap: wrap; + width: 100%; + height: auto; + min-height: var(--%NS%control-h); + padding: 6px 12px; + background: var(--%NS%surface); + border-color: var(--%NS%border); + text-align: left; +} + +.defer-row[_ngcontent-%COMP%]:disabled { + cursor: default; +} + +.defer-state[_ngcontent-%COMP%] { + padding: 0 8px; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 11px; + line-height: 18px; +} + +.defer-state-complete[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.defer-state-error[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger); +} + +.defer-state-loading[_ngcontent-%COMP%], +.defer-state-placeholder[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +.triggers[_ngcontent-%COMP%] { + min-width: 0; + color: var(--%NS%text-2); + font-size: 12px; + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; +} + +.pick-message[_ngcontent-%COMP%] { + margin: 0 0 12px; + color: var(--%NS%text-2); + line-height: 1.5; +} + +.layout[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 12px; + align-items: start; +} + +@media (min-width: 880px) { + .layout[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr) minmax(340px, 44%); + } + .detail[_ngcontent-%COMP%] { + position: sticky; + top: 64px; + max-height: calc(100vh - 150px); + overflow: auto; + } +} +.tree[_ngcontent-%COMP%] { + min-width: 0; + padding: 6px; + background: var(--%NS%surface); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + animation: enter 0.35s var(--%NS%ease) both; +} + +.row[_ngcontent-%COMP%] { + position: relative; + display: flex; + align-items: center; + gap: 6px; + min-height: 32px; + padding: 0 8px 0 calc(4px + var(--%NS%depth, 0) * 18px); + border-radius: var(--%NS%radius-sm); + cursor: pointer; + transition: background-color 120ms var(--%NS%ease); +} + +.row[_ngcontent-%COMP%]::before { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 14px; + width: calc(var(--%NS%depth, 0) * 18px); + background: repeating-linear-gradient(to right, var(--%NS%border) 0 1px, transparent 1px 18px); + pointer-events: none; +} + +.row[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-2); +} + +.row[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: -2px; +} + +.row.selected[_ngcontent-%COMP%] { + background: var(--%NS%accent-soft); + box-shadow: inset 2px 0 0 var(--%NS%accent); +} + +.twisty[_ngcontent-%COMP%], +.twisty-space[_ngcontent-%COMP%] { + flex: none; + width: 20px; + height: 20px; +} + +.twisty[_ngcontent-%COMP%] { + display: grid; + place-items: center; + border-radius: 4px; + color: var(--%NS%text-3); +} + +.twisty[_ngcontent-%COMP%]:hover { + color: var(--%NS%text); + background: var(--%NS%surface-3); +} + +.twisty[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] { + width: 14px; + height: 14px; + fill: none; + stroke: currentColor; + stroke-width: 2.2; + stroke-linecap: round; + stroke-linejoin: round; + transition: transform 150ms var(--%NS%ease); +} + +.twisty.open[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] { + transform: rotate(90deg); +} + +.name[_ngcontent-%COMP%] { + min-width: 0; + color: var(--%NS%text-strong); + font-size: 12px; + font-weight: 600; + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; +} + +.tag[_ngcontent-%COMP%] { + flex: 0 1 auto; + min-width: 0; + color: var(--%NS%text-2); + font-size: 12px; + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; +} + +.routed[_ngcontent-%COMP%] { + flex: none; + max-width: 40%; + padding: 0 8px; + border: 1px solid var(--%NS%accent-line); + border-radius: 99px; + background: var(--%NS%accent-soft); + color: var(--%NS%accent); + font-family: var(--%NS%font-mono); + font-size: 11px; + line-height: 18px; + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; +} + +.checks[_ngcontent-%COMP%] { + flex: none; + margin-left: auto; + padding: 0 7px; + border-radius: 99px; + background: var(--%NS%accent-soft); + color: var(--%NS%text); + font-size: 11px; + line-height: 18px; + font-variant-numeric: tabular-nums; +} + +.checks[_ngcontent-%COMP%] + .dirs[_ngcontent-%COMP%] { + margin-left: 0; +} + +.dirs[_ngcontent-%COMP%] { + flex: none; + margin-left: auto; + padding: 0 7px; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 11px; + line-height: 18px; +} + +.detail[_ngcontent-%COMP%] { + min-width: 0; + background: var(--%NS%surface); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + animation: enter 0.35s var(--%NS%ease) both; +} + +.detail.placeholder[_ngcontent-%COMP%] { + padding: 24px 16px; + border-style: dashed; + text-align: center; +} + +.detail-head[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 6px 10px; + padding: 14px 16px; + border-bottom: 1px solid var(--%NS%border); +} + +.detail-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] { + min-width: 0; + margin: 0; + color: var(--%NS%text-strong); + font-size: 15px; + font-weight: 600; + overflow-wrap: anywhere; +} + +.where[_ngcontent-%COMP%] { + width: 100%; + margin: 0; + color: var(--%NS%text-2); + font-size: 12px; + overflow-wrap: anywhere; +} + +.badge[_ngcontent-%COMP%] { + padding: 2px 8px; + border-radius: 99px; + border-color: color-mix(in srgb, var(--%NS%accent) 30%, transparent); + background: color-mix(in srgb, var(--%NS%accent) 12%, transparent); + color: var(--%NS%accent); + font-size: 10px; + font-weight: 700; + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.actions[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; + width: 100%; +} + +.show-form[_ngcontent-%COMP%] { + background: var(--%NS%accent); + border-color: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +.show-form[_ngcontent-%COMP%]:hover { + background: var(--%NS%accent-hover); + border-color: var(--%NS%accent-hover); +} + +.facts[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + gap: 8px 16px; + margin: 0; + padding: 14px 16px; + border-bottom: 1px solid var(--%NS%border); +} + +.facts[_ngcontent-%COMP%] dt[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + align-self: center; +} + +.facts[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] { + min-width: 0; + margin: 0; + color: var(--%NS%text); + overflow-wrap: anywhere; +} + +.block[_ngcontent-%COMP%] { + padding: 14px 16px; + border-bottom: 1px solid var(--%NS%border); +} + +.block[_ngcontent-%COMP%]:last-child { + border-bottom: 0; +} + +h3[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + display: flex; + align-items: center; + gap: 6px; + margin: 0 0 8px; +} + +.pill[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 18px; + height: 16px; + padding: 0 5px; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 10px; + font-weight: 600; + letter-spacing: 0; +} + +.props[_ngcontent-%COMP%], +.deps[_ngcontent-%COMP%], +.chips[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + margin: 0; + padding: 0; + list-style: none; +} + +.chips[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; +} + +.prop[_ngcontent-%COMP%], +.dep[_ngcontent-%COMP%] { + min-width: 0; + padding: 8px 10px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); +} + +.prop-name[_ngcontent-%COMP%] { + display: block; + margin-bottom: 4px; + color: var(--%NS%text-strong); + font-size: 12px; + font-weight: 600; +} + +pre[_ngcontent-%COMP%] { + max-height: 200px; + margin: 0; + overflow: auto; + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 12px; + line-height: 1.5; + white-space: pre-wrap; + overflow-wrap: anywhere; +} + +.chip[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 2px 10px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + color: var(--%NS%text); + font-size: 12px; +} + +.chip.on[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.chip-note[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 11px; +} + +.chip.on[_ngcontent-%COMP%] .chip-note[_ngcontent-%COMP%] { + color: inherit; +} + +.dep[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 6px 8px; +} + +.token[_ngcontent-%COMP%] { + min-width: 0; + color: var(--%NS%text-strong); + font-size: 12px; + font-weight: 600; + overflow-wrap: anywhere; +} + +.flag[_ngcontent-%COMP%] { + padding: 0 6px; + border: 1px solid var(--%NS%border-strong); + border-radius: 5px; + color: var(--%NS%text-2); + font-family: var(--%NS%font-mono); + font-size: 10px; + font-weight: 400; + letter-spacing: 0; + line-height: 16px; + text-transform: none; +} + +.from[_ngcontent-%COMP%] { + margin-left: auto; + color: var(--%NS%text-2); + font-size: 12px; +} + +.from[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%] { + color: var(--%NS%text); +} + +.from.missing[_ngcontent-%COMP%] { + color: var(--%NS%warn); +} + +.empty-line[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-2); +} + +.state[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + padding: 40px 16px; + text-align: center; + background: var(--%NS%surface); + border: 1px dashed var(--%NS%border-strong); + border-radius: var(--%NS%radius); +} + +.state.compact[_ngcontent-%COMP%] { + padding: 24px 12px; + border: 0; + background: none; +} + +.state-title[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; + overflow-wrap: anywhere; +} + +.state-hint[_ngcontent-%COMP%] { + max-width: 440px; + margin: 0 auto; + color: var(--%NS%text-2); + line-height: 1.5; +} + +.spinner[_ngcontent-%COMP%] { + width: 20px; + height: 20px; + border: 2px solid var(--%NS%border-strong); + border-top-color: var(--%NS%accent); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +@media (prefers-reduced-motion: reduce) { + .spinner[_ngcontent-%COMP%], + .refresh.spinning[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] { + animation: none; + } +} +.source-list[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + gap: 8px; + margin: 0; + padding: 0; + list-style: none; +} + +.source-item[_ngcontent-%COMP%] { + min-width: 0; + background: var(--%NS%surface); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + overflow: hidden; +} + +.source-item.expanded[_ngcontent-%COMP%] { + border-color: var(--%NS%accent-line); + box-shadow: inset 2px 0 0 var(--%NS%accent); +} + +.source-toggle[_ngcontent-%COMP%] { + justify-content: flex-start; + gap: 12px; + width: 100%; + height: auto; + min-height: 52px; + padding: 10px 16px; + background: none; + border: 0; + border-radius: 0; + text-align: left; +} + +.source-toggle[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-2); +} + +.source-toggle[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: -2px; +} + +.kind-flag[_ngcontent-%COMP%] { + flex: none; + padding: 1px 8px; + border-radius: 99px; + border-color: color-mix(in srgb, var(--%NS%accent) 30%, transparent); + background: color-mix(in srgb, var(--%NS%accent) 12%, transparent); + color: var(--%NS%accent); + font-size: 10px; + font-weight: 700; + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.kind-flag.directive[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.row-main[_ngcontent-%COMP%] { + display: flex; + flex: 1; + flex-direction: column; + gap: 2px; + min-width: 0; +} + +.selector[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-weight: 600; + overflow-wrap: anywhere; +} + +.file[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 12px; + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; +} + +.chevron[_ngcontent-%COMP%] { + flex: none; + width: 16px; + height: 16px; + fill: none; + stroke: var(--%NS%text-3); + stroke-width: 2.2; + transition: transform 200ms var(--%NS%ease); +} + +.expanded[_ngcontent-%COMP%] .chevron[_ngcontent-%COMP%] { + transform: rotate(90deg); + stroke: var(--%NS%accent); +} + +.inline-detail[_ngcontent-%COMP%] { + padding: 0 0 12px; + border-top: 1px solid var(--%NS%border); +} + +.inline-detail[_ngcontent-%COMP%] .facts[_ngcontent-%COMP%] { + border-bottom: 0; +} + +.inline-detail[_ngcontent-%COMP%] .show-form[_ngcontent-%COMP%] { + margin: 0 16px; +}`]})};function Mk(e){return e.line?`${e.file}:${e.line}`:e.file}function Nk(e,t){let n=t.filter(t=>t.fullPath===e.fullPath&&t.redirectTo!==void 0==(e.redirectTo!==void 0));return n.find(t=>!!e.component&&t.component===e.component)??n.find(t=>!t.component||!e.component)}var Pk=aE;function Fk(e){return e.startsWith(`/`)&&!e.startsWith(`//`)&&!/^\/*[a-z][a-z0-9+.-]*:/i.test(e)&&!e.includes(`[redacted]`)&&e.length<=2e3}var Ik=`Could not reach the page.`;async function Lk(e,t,n){return await Pk(e,`request-router-action`,{pageId:t,request:n})??{error:`Could not reach the page.`}}function Rk(e){return e===`succeeded`?`good`:e===`redirected`||e===`pending`||e===`skipped`?`warn`:e===`cancelled`||e===`failed`?`bad`:``}var zk=()=>[],Bk=(e,t)=>t[0],Vk=(e,t)=>t.input;function Hk(e,t){if(e&1&&(H(0,`p`,3),J(1,` The browser shows `),H(2,`code`),J(3),U(),J(4,`, not the router URL (skipLocationChange, browserUrl, a failed navigation or code that changed history). `),U()),e&2){let e=K();M(3),Y(e.browserUrl)}}function Uk(e,t){if(e&1&&(H(0,`p`,12),J(1),U()),e&2){let e=K(3);M(),Y(e.navigationOff)}}function Wk(e,t){if(e&1){let e=W();H(0,`div`,8),Fg(1,`span`,9),H(2,`span`,10),J(3,`Navigating to `),H(4,`code`),J(5),U(),J(6),U(),H(7,`button`,11),Qg(`click`,function(){return O(e),k(K(2).abort())}),J(8,` Abort `),U()(),P(9,Uk,2,1,`p`,12)}if(e&2){let e=t,n=K(2);M(5),Y(e.url),M(),X(` (#`,e.id,`)`),M(),Vg(`disabled`,!n.navigationAllowed()),N(`aria-describedby`,n.navigationAllowed()?null:`route-current-writes-off`),M(2),F(n.navigationAllowed()?-1:9)}}function Gk(e,t){if(e&1&&(H(0,`p`,4),J(1),U()),e&2){let e=K(2);M(),Y(e.message())}}function Kk(e,t){if(e&1&&(H(0,`dt`),J(1,`Document title`),U(),H(2,`dd`),J(3),U()),e&2){let e=K();M(3),Y(e.title)}}function qk(e,t){if(e&1&&(H(0,`dt`),J(1,`Query params`),U(),H(2,`dd`)(3,`code`),J(4),dv(5,`json`),U()()),e&2){let e=K();M(4),Y(pv(5,1,e.queryParams))}}function Jk(e,t){if(e&1&&(H(0,`dt`),J(1,`Fragment`),U(),H(2,`dd`)(3,`code`),J(4),U()()),e&2){let e=K();M(4),Y(e.fragment)}}function Yk(e,t){if(e&1&&(H(0,`span`,14),J(1),U()),e&2){let e=K().$implicit;M(),Y(e.route.outlet)}}function Xk(e,t){e&1&&(H(0,`span`,14),J(1,`lazy`),U())}function Zk(e,t){if(e&1&&(H(0,`div`,15),J(1),U()),e&2){let e=K().$implicit;M(),Z(` title `,e.route.title,``,e.route.ownTitle===!1?` (inherited)`:``,` `)}}function Qk(e,t){if(e&1&&(H(0,`code`,16),J(1),U()),e&2){let e=K().$implicit;M(),Y(e.route.component)}}function $k(e,t){e&1&&(H(0,`span`,19),J(1,`–`),U(),H(2,`span`,20),J(3,`none`),U())}function eA(e,t){e&1&&(H(0,`span`,14),J(1,`inherited`),U())}function tA(e,t){if(e&1&&(H(0,`div`,17)(1,`code`),J(2),dv(3,`json`),U(),P(4,eA,2,0,`span`,14),U()),e&2){let e=t.$implicit,n=K().$implicit;M(2),Z(``,e[0],`: `,pv(3,3,e[1])),M(2),F(n.route.paramSources?.[e[0]]===`inherited`?4:-1)}}function nA(e,t){e&1&&(H(0,`span`,19),J(1,`–`),U(),H(2,`span`,20),J(3,`none`),U())}function rA(e,t){e&1&&(H(0,`span`,14),J(1),U()),e&2&&(M(),Y(t))}function iA(e,t){if(e&1&&(H(0,`div`,18)(1,`code`),J(2),dv(3,`json`),U(),P(4,rA,2,1,`span`,14),U()),e&2){let e,n=t.$implicit,r=K().$implicit;M(2),Z(``,n[0],`: `,pv(3,3,n[1])),M(2),F((e=r.route.dataSources?.[n[0]])?4:-1,e)}}function aA(e,t){e&1&&(H(0,`span`,19),J(1,`–`),U(),H(2,`span`,20),J(3,`none`),U())}function oA(e,t){if(e&1&&(H(0,`span`,14),J(1),U()),e&2){let e=t.$implicit;M(),Y(e)}}function sA(e,t){if(e&1&&(H(0,`span`,14),J(1),U()),e&2){let e=t.$implicit;M(),X(`resolve `,e)}}function cA(e,t){e&1&&(H(0,`span`,19),J(1,`–`),U(),H(2,`span`,20),J(3,`none`),U())}function lA(e,t){if(e&1&&(H(0,`tr`)(1,`td`,13),J(2),P(3,Yk,2,1,`span`,14),P(4,Xk,2,0,`span`,14),P(5,Zk,2,2,`div`,15),U(),H(6,`td`),P(7,Qk,2,1,`code`,16)(8,$k,4,0),U(),H(9,`td`),I(10,tA,5,5,`div`,17,Bk,!1,nA,4,0),U(),H(13,`td`),I(14,iA,5,5,`div`,18,Bk,!1,aA,4,0),U(),H(17,`td`),I(18,oA,2,1,`span`,14,wg),I(20,sA,2,1,`span`,14,wg),P(22,cA,4,0),U()()),e&2){let e=t.$implicit,n=K(2);M(),C_(`padding-left`,14+e.depth*16,`px`),M(),X(` `,e.depth===0&&!e.route.path?`(root)`:`/`+e.route.path,` `),M(),F(e.route.outlet===`primary`?-1:3),M(),F(e.route.lazy?4:-1),M(),F(e.route.title?5:-1),M(2),F(e.route.component?7:8),M(3),L(n.entries(e.route.params)),M(4),L(n.entries(e.route.data)),M(4),L(n.guardList(e.route)),M(2),L(e.route.resolvers??ov(10,zk)),M(2),F(!n.guardList(e.route).length&&!e.route.resolvers?.length?22:-1)}}function uA(e,t){if(e&1){let e=W();H(0,`button`,26),Qg(`click`,function(){O(e);let t=K(2).$implicit,n=K(3);return k(n.showComponent.emit({pageId:n.page().pageId,id:t.outlet.devtoolsId}))}),J(1,` Show in Components`),H(2,`span`,20),J(3),U()()}if(e&2){let e=K(2).$implicit;M(3),X(`: `,e.outlet.component??e.outlet.element??`routed component`)}}function dA(e,t){if(e&1&&(H(0,`code`),J(1),U(),J(2,` for `),H(3,`code`),J(4),U(),P(5,uA,4,1,`button`,25)),e&2){let e=K().$implicit,t=K(3);M(),Y(e.outlet.component??`?`),M(3),Y(e.outlet.route??`?`),M(),F(e.outlet.devtoolsId&&t.componentsOn()?5:-1)}}function fA(e,t){e&1&&(H(0,`span`,23),J(1,`not activated`),U())}function pA(e,t){e&1&&(H(0,`span`,14),J(1,`detached by reuse strategy`),U())}function mA(e,t){if(e&1&&(H(0,`span`,14),J(1),U()),e&2){let e=t.$implicit;M(),Z(`input `,e.input,` ← `,e.source)}}function hA(e,t){if(e&1&&(H(0,`span`,24),J(1,`routerOutletData `),H(2,`code`),J(3),U()()),e&2){let e=K().$implicit;M(3),Y(e.outlet.data)}}function gA(e,t){if(e&1&&(H(0,`li`)(1,`span`,14),J(2),U(),P(3,dA,6,3)(4,fA,2,0,`span`,23),P(5,pA,2,0,`span`,14),I(6,mA,2,2,`span`,14,Vk),P(8,hA,4,1,`span`,24),U()),e&2){let e=t.$implicit,n=K(3);C_(`padding-left`,10+e.depth*16,`px`),M(2),Y(e.outlet.outlet),M(),F(e.outlet.activated?3:4),M(2),F(e.outlet.detached?5:-1),M(),L(n.boundInputs(e.outlet)),M(2),F(e.outlet.data===void 0?-1:8)}}function _A(e,t){if(e&1&&(H(0,`h3`),J(1,`Outlets`),U(),H(2,`ul`,21),I(3,gA,9,6,`li`,22,Cg),U()),e&2){let e=K(2);M(3),L(e.outletRows())}}function vA(e,t){if(e&1&&(H(0,`p`,1)(1,`span`,2),J(2,`URL`),U(),H(3,`code`),J(4),U()(),P(5,Hk,5,1,`p`,3),P(6,Wk,10,5),P(7,Gk,2,1,`p`,4),H(8,`dl`,5),P(9,Kk,4,1),P(10,qk,6,3),P(11,Jk,5,1),U(),H(12,`h3`),J(13,`Active routes`),U(),H(14,`div`,6)(15,`table`)(16,`thead`)(17,`tr`)(18,`th`,7),J(19,`Route`),U(),H(20,`th`,7),J(21,`Component`),U(),H(22,`th`,7),J(23,`Params`),U(),H(24,`th`,7),J(25,`Data`),U(),H(26,`th`,7),J(27,`Guards and resolvers`),U()()(),H(28,`tbody`),I(29,lA,23,11,`tr`,null,Cg),U()()(),P(31,_A,5,0)),e&2){let e,n=t,r=K();M(4),Y(n.url),M(),F(n.urlDrift&&n.browserUrl?5:-1),M(),F((e=n.pending)?6:-1,e),M(),F(r.message()?7:-1),M(2),F(n.title?9:-1),M(),F(r.hasKeys(n.queryParams)?10:-1),M(),F(n.fragment?11:-1),M(18),L(r.rows()),M(2),F(r.outletRows().length?31:-1)}}function yA(e,t){e&1&&(H(0,`div`,0)(1,`p`,27),J(2,`This page reports no Router.`),U(),H(3,`p`,23),J(4,` Add `),H(5,`code`),J(6,`provideRouter()`),U(),J(7,` to the app config and navigate once to see the active routes here. `),U()())}var bA=class e{page=$.required();rpc=$(null);navigationAllowed=Q(()=>bE(this.rpc(),`router`));navigationOff=KT(`router`);componentsOn=Q(()=>yE(this.rpc()).inspectors.components);showComponent=Ov();pageId=Q(()=>this.page().pageId);message=Tv({source:this.pageId,computation:()=>``});rows=Q(()=>{let e=[],t=(n,r)=>{e.push({route:n,depth:r});for(let e of n.children)t(e,r+1)},n=this.page().snapshot?.root;return n&&t(n,0),e});outletRows=Q(()=>{let e=[],t=(n,r)=>{for(let i of n)e.push({outlet:i,depth:r}),i.children&&t(i.children,r+1)};return t(this.page().outlets??[],0),e});hasKeys(e){return Object.keys(e).length>0}entries(e){return Object.entries(e)}guardList(e){return Object.entries(e.guards??{}).flatMap(([e,t])=>t.map(t=>`${e} ${t}`))}boundInputs(e){return(e.inputs??[]).filter(e=>e.source!==`unset`)}async abort(){let e=this.pageId(),t=await Lk(this.rpc(),e,{action:`abort`});e===this.pageId()&&this.message.set(t.error?String(t.error):`Aborted navigation #${t.aborted}.`)}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-route-current`]],inputs:{page:[1,`page`],rpc:[1,`rpc`]},outputs:{showComponent:`showComponent`},decls:2,vars:1,consts:[[1,`empty`],[1,`url`],[1,`url-label`],[`role`,`note`,1,`note`],[`role`,`status`,1,`muted`],[1,`facts`],[`role`,`region`,`aria-label`,`Active routes`,`tabindex`,`0`,1,`table-scroll`],[`scope`,`col`],[`role`,`status`,1,`pending`],[`aria-hidden`,`true`,1,`pulse`],[1,`pending-text`],[`type`,`button`,1,`small`,3,`click`,`disabled`],[`id`,`route-current-writes-off`,1,`muted`],[1,`path`],[1,`tag`],[1,`sub`],[1,`component`],[1,`entry`],[1,`entry`,`data`],[`aria-hidden`,`true`,1,`nil`],[1,`visually-hidden`],[1,`outlets`],[3,`padding-left`],[1,`muted`],[1,`outlet-data`],[`type`,`button`,1,`small`,`show-component`],[`type`,`button`,1,`small`,`show-component`,3,`click`],[1,`empty-title`]],template:function(e,t){if(e&1&&P(0,vA,32,8)(1,yA,8,0,`div`,0),e&2){let e;F((e=t.page().snapshot)?0:1,e)}},dependencies:[ab],styles:[`.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; +} + +.nil[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12.5px; + color: var(--%NS%text); + overflow-wrap: anywhere; +} + +.tag[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + max-width: 100%; + min-height: 20px; + margin: 2px 4px 2px 0; + padding: 0 8px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 11.5px; + line-height: 1.4; + vertical-align: middle; + overflow-wrap: anywhere; + white-space: normal; +} + +.badge[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + min-height: 20px; + padding: 0 8px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-size: 11px; + font-weight: 600; + line-height: 1.4; + white-space: nowrap; + vertical-align: middle; +} + +.badge[data-tone=good][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.badge[data-tone=warn][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +.badge[data-tone=bad][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger); +} + +button.small[_ngcontent-%COMP%] { + display: inline-flex; + flex: none; + align-items: center; + justify-content: center; + gap: 6px; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + white-space: nowrap; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease), border-color 0.15s var(--%NS%ease), transform 0.1s var(--%NS%ease); +} + +button.small[_ngcontent-%COMP%]:hover:not(:disabled) { + background: var(--%NS%surface-3); + border-color: color-mix(in srgb, var(--%NS%text-3) 50%, var(--%NS%border-strong)); +} + +button.small[_ngcontent-%COMP%]:active:not(:disabled) { + transform: translateY(1px); +} + +button.small[_ngcontent-%COMP%]:disabled { + opacity: 0.55; + cursor: not-allowed; +} + +button.small.primary[_ngcontent-%COMP%] { + border-color: var(--%NS%accent); + background: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +button.small.primary[_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: var(--%NS%accent-hover); + background: var(--%NS%accent-hover); +} + +button.small[_ngcontent-%COMP%]:focus-visible, +.table-scroll[_ngcontent-%COMP%]:focus-visible, +input[type=checkbox][_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +input.field[_ngcontent-%COMP%], +select[_ngcontent-%COMP%] { + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background-color: var(--%NS%bg); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + transition: border-color 0.15s var(--%NS%ease), box-shadow 0.15s var(--%NS%ease); +} + +input.field[_ngcontent-%COMP%] { + text-overflow: ellipsis; +} + +input.field[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +input.field[_ngcontent-%COMP%]:hover:not(:focus), +select[_ngcontent-%COMP%]:hover:not(:focus) { + border-color: color-mix(in srgb, var(--%NS%text-3) 50%, var(--%NS%border-strong)); +} + +input.field[_ngcontent-%COMP%]:focus-visible, +select[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.note[_ngcontent-%COMP%] { + margin: 0; + padding: 10px 14px; + border: 1px solid color-mix(in srgb, var(--%NS%warn) 30%, transparent); + border-radius: var(--%NS%radius-sm); + background: color-mix(in srgb, var(--%NS%warn) 10%, transparent); + color: var(--%NS%text); + font-size: 13px; + line-height: 1.5; +} + +.empty[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + justify-items: center; + margin: 0; + padding: 40px 24px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + text-align: center; + animation: enter 0.35s var(--%NS%ease) both; +} + +.empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 0; + max-width: 480px; + line-height: 1.6; +} + +.empty-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.empty[_ngcontent-%COMP%] .small[_ngcontent-%COMP%] { + margin-top: 8px; +} + +.facts[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + align-items: baseline; + gap: 8px 24px; + margin: 0; + padding: 14px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + font-size: 13px; +} + +.facts[_ngcontent-%COMP%]:empty { + display: none; +} + +dt[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +dd[_ngcontent-%COMP%] { + min-width: 0; + margin: 0; + color: var(--%NS%text); + overflow-wrap: anywhere; + font-variant-numeric: tabular-nums; +} + +.table-scroll[_ngcontent-%COMP%] { + overflow-x: auto; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + box-shadow: var(--%NS%shadow); + animation: enter 0.35s var(--%NS%ease) both; +} + +table[_ngcontent-%COMP%] { + width: 100%; + border-collapse: collapse; + font-size: 13px; + font-variant-numeric: tabular-nums; +} + +th[_ngcontent-%COMP%] { + padding: 10px 14px; + border-bottom: 1px solid var(--%NS%border); + background: color-mix(in srgb, var(--%NS%surface-2) 60%, var(--%NS%surface)); + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.06em; + text-align: left; + text-transform: uppercase; + white-space: nowrap; +} + +td[_ngcontent-%COMP%] { + padding: 10px 14px; + border-bottom: 1px solid var(--%NS%border); + color: var(--%NS%text); + line-height: 1.5; + vertical-align: top; + transition: background-color 0.15s var(--%NS%ease); +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] { + border-bottom: none; +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] { + background: var(--%NS%surface-2); +} + +.path[_ngcontent-%COMP%] { + color: var(--%NS%accent); + font-family: var(--%NS%font-mono); + font-size: 12.5px; + white-space: nowrap; +} + +h3[_ngcontent-%COMP%] { + margin: 8px 0 -4px; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +@media (max-width: 480px) { + .facts[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + gap: 2px; + } + .facts[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] + dt[_ngcontent-%COMP%] { + margin-top: 8px; + } +} +[_nghost-%COMP%] { + display: grid; + gap: 16px; + min-width: 0; +} + +.url[_ngcontent-%COMP%] { + display: flex; + align-items: baseline; + gap: 12px; + min-width: 0; + margin: 0; + padding: 12px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + box-shadow: var(--%NS%shadow); +} + +.url-label[_ngcontent-%COMP%] { + flex: none; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.url[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + min-width: 0; + color: var(--%NS%accent); + font-size: 14px; + font-weight: 500; +} + +.pending[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: center; + padding: 6px 6px 6px 14px; + border: 1px solid color-mix(in srgb, var(--%NS%warn) 30%, transparent); + border-radius: var(--%NS%radius-sm); + background: color-mix(in srgb, var(--%NS%warn) 10%, transparent); + color: var(--%NS%warn); + font-size: 13px; +} + +.pending-text[_ngcontent-%COMP%] { + flex: 1 1 200px; + min-width: 0; +} + +.pending[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); +} + +.pulse[_ngcontent-%COMP%] { + flex: none; + width: 8px; + height: 8px; + border-radius: 99px; + background: var(--%NS%warn); + animation: _ngcontent-%COMP%_pulse 1.2s ease-in-out infinite; +} + +@keyframes _ngcontent-%COMP%_pulse { + 50% { + opacity: 0.35; + } +} +@media (prefers-reduced-motion: reduce) { + .pulse[_ngcontent-%COMP%] { + animation: none; + } +} +.sub[_ngcontent-%COMP%] { + margin-top: 4px; + color: var(--%NS%text-2); + font-family: var(--%NS%font-sans); + font-size: 12px; + white-space: normal; +} + +.component[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); +} + +.entry[_ngcontent-%COMP%] + .entry[_ngcontent-%COMP%] { + margin-top: 2px; +} + +.data[_ngcontent-%COMP%] { + max-width: 360px; +} + +.outlets[_ngcontent-%COMP%] { + display: grid; + gap: 2px; + margin: 0; + padding: 6px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + color: var(--%NS%text); + font-size: 13px; + list-style: none; + animation: enter 0.35s var(--%NS%ease) both; +} + +.outlets[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + padding-top: 6px; + padding-right: 10px; + padding-bottom: 6px; + border-radius: var(--%NS%radius-sm); + line-height: 1.8; + overflow-wrap: anywhere; + transition: background-color 0.15s var(--%NS%ease); +} + +.outlets[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-2); +} + +.show-component[_ngcontent-%COMP%] { + margin-left: 6px; + vertical-align: middle; +} + +.outlet-data[_ngcontent-%COMP%] { + display: block; + color: var(--%NS%text-2); + font-size: 12px; +}`]})};function xA(e,t){if(e&1&&(H(0,`span`,8),J(1),U()),e&2){let e=K(2);M(),X(``,e.counts().error,` error(s)`)}}function SA(e,t){if(e&1&&(H(0,`span`,9),J(1),U()),e&2){let e=K(2);M(),X(``,e.counts().warning,` warning(s)`)}}function CA(e,t){if(e&1&&(H(0,`span`,10),J(1),U()),e&2){let e=K(2);M(),X(``,e.counts().info,` info`)}}function wA(e,t){if(e&1&&(H(0,`span`,3),P(1,xA,2,1,`span`,8),P(2,SA,2,1,`span`,9),P(3,CA,2,1,`span`,10),U()),e&2){let e=K();M(),F(e.counts().error?1:-1),M(),F(e.counts().warning?2:-1),M(),F(e.counts().info?3:-1)}}function TA(e,t){if(e&1){let e=W();H(0,`div`,4)(1,`p`,11),J(2,`The route checks could not run.`),U(),H(3,`p`,2),J(4,`The devtools server did not answer. Check that it is still running.`),U(),H(5,`button`,1),Qg(`click`,function(){return O(e),k(K().run())}),J(6,`Retry`),U()()}}function EA(e,t){e&1&&(H(0,`p`,5),J(1,`Checking…`),U())}function DA(e,t){e&1&&J(0,` This page runs in events-only mode: it has no debug utils (a production build or an unusual setup), so it cannot report its route config. `)}function OA(e,t){e&1&&J(0,` The page has not reported its route config yet. It appears after the app finishes bootstrapping. `)}function kA(e,t){e&1&&J(0,` No page with a router is connected. `)}function AA(e,t){if(e&1&&(H(0,`div`,6)(1,`p`,11),J(2,`No checks ran.`),U(),H(3,`p`,2),P(4,DA,1,0)(5,OA,1,0)(6,kA,1,0),U()()),e&2){let e;M(4),F((e=t)===`events-only`?4:e===`no-config`?5:6)}}function jA(e,t){if(e&1&&(H(0,`li`)(1,`div`,12)(2,`span`,10),J(3),U(),H(4,`code`,13),J(5),U(),H(6,`code`,14),J(7),U()(),H(8,`p`,15),J(9),U(),H(10,`p`,16)(11,`span`,17),J(12,`Fix`),U(),H(13,`span`,18),J(14),H(15,`span`,2),J(16),U()()()()),e&2){let e=t.$implicit,n=K(2);N(`data-severity`,e.severity),M(2),N(`data-tone`,n.severityTone(e.severity)),M(),Y(e.severity),M(2),Y(e.rule),M(2),Y(e.route),M(2),Y(e.message),M(5),X(``,e.fix,` `),M(2),X(`(Angular `,e.angular===`throws`?`throws`:e.angular===`warns`?`warns`:`does not warn`,`)`)}}function MA(e,t){if(e&1&&(H(0,`ul`,7),I(1,jA,17,8,`li`,null,Cg),U()),e&2){let e=K();N(`aria-busy`,e.checking()),M(),L(e.findings())}}function NA(e,t){e&1&&(H(0,`div`,6)(1,`span`,19),A(),H(2,`svg`,20),Fg(3,`path`,21),U()(),ps(),H(4,`p`,11),J(5,`No route config problems found.`),U(),H(6,`p`,2),J(7,`The check runs again after each navigation or config change.`),U()())}var PA=class e{page=$.required();rpc=$(null);result=j(null);failed=j(!1);checking=j(!1);findings=Q(()=>{let e=this.result();return e?.checked?e.findings:[]});notChecked=Q(()=>{let e=this.result();return e&&!e.checked?e.reason:null});counts=Q(()=>{let e={error:0,warning:0,info:0};for(let t of this.findings())e[t.severity]++;return e});key=Q(()=>{let e=this.page(),t=e.navigations[e.navigations.length-1],n=JSON.stringify((e.links??[]).map(e=>[e.text,e.href,e.linkActive!==void 0,e.ariaCurrent===void 0])),r=`${e.setup?.mode}/${e.setup?.features?.componentInputBinding}`;return`${e.pageId}:${e.generation}:${t?.id}:${t?.outcome}:${n}:${r}`});seq=0;checkedPage=null;constructor(){uc(()=>{this.key(),Cv(()=>void this.run())})}severityTone(e){return e===`error`?`bad`:e===`warning`?`warn`:``}async run(){let e=++this.seq,t=this.page().pageId;t!==this.checkedPage&&this.result.set(null),this.checking.set(!0);let n=await Pk(this.rpc(),`router-lint`,t);e===this.seq&&(this.checking.set(!1),this.failed.set(!n),n&&(this.result.set(n),this.checkedPage=t))}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-route-lint`]],inputs:{page:[1,`page`],rpc:[1,`rpc`]},decls:11,vars:4,consts:[[1,`toolbar`],[`type`,`button`,1,`small`,3,`click`],[1,`muted`],[1,`summary`],[`role`,`alert`,1,`empty`],[`role`,`status`,1,`muted`,`empty`],[1,`empty`],[1,`findings`],[`data-tone`,`bad`,1,`badge`],[`data-tone`,`warn`,1,`badge`],[1,`badge`],[1,`empty-title`],[1,`head`],[1,`rule`],[1,`route`],[1,`message`],[1,`fix`],[1,`fix-label`],[1,`fix-text`],[`aria-hidden`,`true`,1,`ok-mark`],[`width`,`16`,`height`,`16`,`viewBox`,`0 0 24 24`,`fill`,`none`,`stroke`,`currentColor`,`stroke-width`,`2.5`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`],[`d`,`M20 6 9 17l-5-5`]],template:function(e,t){if(e&1&&(H(0,`div`,0)(1,`button`,1),Qg(`click`,function(){return t.run()}),J(2),U(),H(3,`span`,2),J(4,`Checks the live config, links and recent navigations. Lazy routes that have not loaded are skipped.`),U(),P(5,wA,4,3,`span`,3),U(),P(6,TA,7,0,`div`,4)(7,EA,2,0,`p`,5)(8,AA,7,1,`div`,6)(9,MA,3,1,`ul`,7)(10,NA,8,0,`div`,6)),e&2){let e;M(),N(`aria-busy`,t.checking()),M(),X(` `,t.checking()?`Checking…`:`Check again`,` `),M(3),F(t.result()?.checked&&t.findings().length?5:-1),M(),F(t.failed()?6:t.result()?(e=t.notChecked())?8:t.findings().length?9:10:7,e)}},styles:[`.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; +} + +.nil[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12.5px; + color: var(--%NS%text); + overflow-wrap: anywhere; +} + +.tag[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + max-width: 100%; + min-height: 20px; + margin: 2px 4px 2px 0; + padding: 0 8px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 11.5px; + line-height: 1.4; + vertical-align: middle; + overflow-wrap: anywhere; + white-space: normal; +} + +.badge[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + min-height: 20px; + padding: 0 8px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-size: 11px; + font-weight: 600; + line-height: 1.4; + white-space: nowrap; + vertical-align: middle; +} + +.badge[data-tone=good][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.badge[data-tone=warn][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +.badge[data-tone=bad][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger); +} + +button.small[_ngcontent-%COMP%] { + display: inline-flex; + flex: none; + align-items: center; + justify-content: center; + gap: 6px; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + white-space: nowrap; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease), border-color 0.15s var(--%NS%ease), transform 0.1s var(--%NS%ease); +} + +button.small[_ngcontent-%COMP%]:hover:not(:disabled) { + background: var(--%NS%surface-3); + border-color: color-mix(in srgb, var(--%NS%text-3) 50%, var(--%NS%border-strong)); +} + +button.small[_ngcontent-%COMP%]:active:not(:disabled) { + transform: translateY(1px); +} + +button.small[_ngcontent-%COMP%]:disabled { + opacity: 0.55; + cursor: not-allowed; +} + +button.small.primary[_ngcontent-%COMP%] { + border-color: var(--%NS%accent); + background: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +button.small.primary[_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: var(--%NS%accent-hover); + background: var(--%NS%accent-hover); +} + +button.small[_ngcontent-%COMP%]:focus-visible, +.table-scroll[_ngcontent-%COMP%]:focus-visible, +input[type=checkbox][_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +input.field[_ngcontent-%COMP%], +select[_ngcontent-%COMP%] { + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background-color: var(--%NS%bg); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + transition: border-color 0.15s var(--%NS%ease), box-shadow 0.15s var(--%NS%ease); +} + +input.field[_ngcontent-%COMP%] { + text-overflow: ellipsis; +} + +input.field[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +input.field[_ngcontent-%COMP%]:hover:not(:focus), +select[_ngcontent-%COMP%]:hover:not(:focus) { + border-color: color-mix(in srgb, var(--%NS%text-3) 50%, var(--%NS%border-strong)); +} + +input.field[_ngcontent-%COMP%]:focus-visible, +select[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.note[_ngcontent-%COMP%] { + margin: 0; + padding: 10px 14px; + border: 1px solid color-mix(in srgb, var(--%NS%warn) 30%, transparent); + border-radius: var(--%NS%radius-sm); + background: color-mix(in srgb, var(--%NS%warn) 10%, transparent); + color: var(--%NS%text); + font-size: 13px; + line-height: 1.5; +} + +.empty[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + justify-items: center; + margin: 0; + padding: 40px 24px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + text-align: center; + animation: enter 0.35s var(--%NS%ease) both; +} + +.empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 0; + max-width: 480px; + line-height: 1.6; +} + +.empty-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.empty[_ngcontent-%COMP%] .small[_ngcontent-%COMP%] { + margin-top: 8px; +} + +.facts[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + align-items: baseline; + gap: 8px 24px; + margin: 0; + padding: 14px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + font-size: 13px; +} + +.facts[_ngcontent-%COMP%]:empty { + display: none; +} + +dt[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +dd[_ngcontent-%COMP%] { + min-width: 0; + margin: 0; + color: var(--%NS%text); + overflow-wrap: anywhere; + font-variant-numeric: tabular-nums; +} + +.table-scroll[_ngcontent-%COMP%] { + overflow-x: auto; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + box-shadow: var(--%NS%shadow); + animation: enter 0.35s var(--%NS%ease) both; +} + +table[_ngcontent-%COMP%] { + width: 100%; + border-collapse: collapse; + font-size: 13px; + font-variant-numeric: tabular-nums; +} + +th[_ngcontent-%COMP%] { + padding: 10px 14px; + border-bottom: 1px solid var(--%NS%border); + background: color-mix(in srgb, var(--%NS%surface-2) 60%, var(--%NS%surface)); + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.06em; + text-align: left; + text-transform: uppercase; + white-space: nowrap; +} + +td[_ngcontent-%COMP%] { + padding: 10px 14px; + border-bottom: 1px solid var(--%NS%border); + color: var(--%NS%text); + line-height: 1.5; + vertical-align: top; + transition: background-color 0.15s var(--%NS%ease); +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] { + border-bottom: none; +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] { + background: var(--%NS%surface-2); +} + +.path[_ngcontent-%COMP%] { + color: var(--%NS%accent); + font-family: var(--%NS%font-mono); + font-size: 12.5px; + white-space: nowrap; +} + +h3[_ngcontent-%COMP%] { + margin: 8px 0 -4px; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +@media (max-width: 480px) { + .facts[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + gap: 2px; + } + .facts[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] + dt[_ngcontent-%COMP%] { + margin-top: 8px; + } +} +[_nghost-%COMP%] { + display: grid; + gap: 12px; + min-width: 0; +} + +.toolbar[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: center; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); +} + +.toolbar[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%] { + flex: 1 1 240px; + font-size: 12px; +} + +.summary[_ngcontent-%COMP%] { + display: inline-flex; + flex-wrap: wrap; + gap: 6px; + font-variant-numeric: tabular-nums; +} + +.ok-mark[_ngcontent-%COMP%] { + display: grid; + place-items: center; + width: 32px; + height: 32px; + margin-bottom: 4px; + border: 1px solid color-mix(in srgb, var(--%NS%ok) 30%, transparent); + border-radius: 99px; + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.findings[_ngcontent-%COMP%] { + display: grid; + gap: 8px; + margin: 0; + padding: 0; + list-style: none; +} + +.findings[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + padding: 12px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + color: var(--%NS%text); + font-size: 13px; + line-height: 1.5; + animation: enter 0.35s var(--%NS%ease) both; + transition: border-color 0.15s var(--%NS%ease); +} + +.findings[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%border-strong); +} + +.findings[_ngcontent-%COMP%] li[data-severity=error][_ngcontent-%COMP%] { + box-shadow: inset 3px 0 0 var(--%NS%danger); +} + +.findings[_ngcontent-%COMP%] li[data-severity=warning][_ngcontent-%COMP%] { + box-shadow: inset 3px 0 0 var(--%NS%warn); +} + +.head[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; + align-items: center; + min-width: 0; +} + +.rule[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-weight: 500; +} + +.route[_ngcontent-%COMP%] { + color: var(--%NS%accent); +} + +.message[_ngcontent-%COMP%] { + margin: 8px 0 0; +} + +.fix[_ngcontent-%COMP%] { + display: flex; + gap: 10px; + align-items: baseline; + margin: 10px 0 0; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); +} + +.fix-label[_ngcontent-%COMP%] { + flex: none; + color: var(--%NS%accent); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.fix-text[_ngcontent-%COMP%] { + min-width: 0; + overflow-wrap: anywhere; +} + +.fix[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%] { + font-size: 12px; +}`]})},FA=(e,t)=>t.name,IA=(e,t)=>t[0];function LA(e,t){e&1&&(H(0,`p`,1),J(1,` Events-only mode: this build has no debug utils (production build or unusual setup), so the route config, lint and actions are limited. `),U())}function RA(e,t){if(e&1&&(H(0,`dt`),J(1,`Angular`),U(),H(2,`dd`),J(3),U()),e&2){let e=K();M(3),Y(e.angularVersion)}}function zA(e,t){if(e&1&&(H(0,`dt`),J(1,`Base href`),U(),H(2,`dd`)(3,`code`),J(4),U()()),e&2){let e=K();M(4),Y(e.baseHref)}}function BA(e,t){if(e&1&&(H(0,`dt`),J(1,`Hydration`),U(),H(2,`dd`),J(3),U()),e&2){let e=K();M(3),X(``,e.hydrated,` component(s) hydrated from server HTML`)}}function VA(e,t){if(e&1&&(H(0,`tr`)(1,`td`,5)(2,`code`),J(3),U()(),H(4,`td`)(5,`code`),J(6),U()(),H(7,`td`,6)(8,`span`,7),J(9),U()()()),e&2){let e=t.$implicit;M(3),Y(e.name),M(3),Y(e.value),M(2),N(`data-tone`,e.set?`warn`:``),M(),Y(e.set?`set`:`default`)}}function HA(e,t){if(e&1&&(H(0,`li`)(1,`span`,7),J(2),U()()),e&2){let e=t.$implicit;M(),N(`data-tone`,e[1]===`off`?``:`good`),M(),Z(``,e[0],`: `,e[1])}}function UA(e,t){if(e&1&&(H(0,`h3`),J(1,`Features`),U(),H(2,`ul`,8),I(3,HA,3,3,`li`,null,IA),U()),e&2){let e=K(),t=K();M(3),L(t.entries(e.features))}}function WA(e,t){if(e&1&&(H(0,`dt`),J(1),U(),H(2,`dd`)(3,`code`),J(4),U()()),e&2){let e=t.$implicit;M(),Y(e[0]),M(3),Y(e[1])}}function GA(e,t){if(e&1&&(H(0,`h3`),J(1,`Strategies`),U(),H(2,`dl`,2),I(3,WA,5,2,null,null,IA),U()),e&2){let e=K(),t=K();M(3),L(t.entries(e.strategies))}}function KA(e,t){if(e&1&&(P(0,LA,2,0,`p`,1),H(1,`dl`,2)(2,`dt`),J(3,`Set up with`),U(),H(4,`dd`),J(5),U(),P(6,RA,4,1),P(7,zA,5,1),P(8,BA,4,1),U(),H(9,`h3`),J(10,`Options`),U(),H(11,`div`,3)(12,`table`)(13,`thead`)(14,`tr`)(15,`th`,4),J(16,`Option`),U(),H(17,`th`,4),J(18,`Value`),U(),H(19,`th`,4),J(20,`Source`),U()()(),H(21,`tbody`),I(22,VA,10,4,`tr`,null,FA),U()()(),P(24,UA,5,0),P(25,GA,5,0)),e&2){let e=t,n=K();F(e.mode===`events-only`?0:-1),M(5),Z(` `,e.setupKind,``,e.routers>1?`, `+e.routers+` routers on the page`:``,` `),M(),F(e.angularVersion?6:-1),M(),F(e.baseHref?7:-1),M(),F(e.hydrated?8:-1),M(14),L(e.options),M(2),F(n.entries(e.features).length?24:-1),M(),F(n.entries(e.strategies).length?25:-1)}}function qA(e,t){e&1&&(H(0,`div`,0)(1,`p`,9),J(2,`The page has not reported its router setup yet.`),U(),H(3,`p`,10),J(4,` It appears after the app finishes bootstrapping. Reload the app if it stays empty. `),U()())}var JA=class e{page=$.required();entries(e){return Object.entries(e)}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-route-setup`]],inputs:{page:[1,`page`]},decls:2,vars:1,consts:[[1,`empty`],[`role`,`note`,1,`note`],[1,`facts`],[`role`,`region`,`aria-label`,`Router options`,`tabindex`,`0`,1,`table-scroll`],[`scope`,`col`],[1,`name`],[1,`source`],[1,`badge`],[1,`chips`],[1,`empty-title`],[1,`muted`]],template:function(e,t){if(e&1&&P(0,KA,26,8)(1,qA,5,0,`div`,0),e&2){let e;F((e=t.page().setup)?0:1,e)}},styles:[`.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; +} + +.nil[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12.5px; + color: var(--%NS%text); + overflow-wrap: anywhere; +} + +.tag[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + max-width: 100%; + min-height: 20px; + margin: 2px 4px 2px 0; + padding: 0 8px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 11.5px; + line-height: 1.4; + vertical-align: middle; + overflow-wrap: anywhere; + white-space: normal; +} + +.badge[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + min-height: 20px; + padding: 0 8px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-size: 11px; + font-weight: 600; + line-height: 1.4; + white-space: nowrap; + vertical-align: middle; +} + +.badge[data-tone=good][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.badge[data-tone=warn][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +.badge[data-tone=bad][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger); +} + +button.small[_ngcontent-%COMP%] { + display: inline-flex; + flex: none; + align-items: center; + justify-content: center; + gap: 6px; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + white-space: nowrap; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease), border-color 0.15s var(--%NS%ease), transform 0.1s var(--%NS%ease); +} + +button.small[_ngcontent-%COMP%]:hover:not(:disabled) { + background: var(--%NS%surface-3); + border-color: color-mix(in srgb, var(--%NS%text-3) 50%, var(--%NS%border-strong)); +} + +button.small[_ngcontent-%COMP%]:active:not(:disabled) { + transform: translateY(1px); +} + +button.small[_ngcontent-%COMP%]:disabled { + opacity: 0.55; + cursor: not-allowed; +} + +button.small.primary[_ngcontent-%COMP%] { + border-color: var(--%NS%accent); + background: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +button.small.primary[_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: var(--%NS%accent-hover); + background: var(--%NS%accent-hover); +} + +button.small[_ngcontent-%COMP%]:focus-visible, +.table-scroll[_ngcontent-%COMP%]:focus-visible, +input[type=checkbox][_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +input.field[_ngcontent-%COMP%], +select[_ngcontent-%COMP%] { + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background-color: var(--%NS%bg); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + transition: border-color 0.15s var(--%NS%ease), box-shadow 0.15s var(--%NS%ease); +} + +input.field[_ngcontent-%COMP%] { + text-overflow: ellipsis; +} + +input.field[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +input.field[_ngcontent-%COMP%]:hover:not(:focus), +select[_ngcontent-%COMP%]:hover:not(:focus) { + border-color: color-mix(in srgb, var(--%NS%text-3) 50%, var(--%NS%border-strong)); +} + +input.field[_ngcontent-%COMP%]:focus-visible, +select[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.note[_ngcontent-%COMP%] { + margin: 0; + padding: 10px 14px; + border: 1px solid color-mix(in srgb, var(--%NS%warn) 30%, transparent); + border-radius: var(--%NS%radius-sm); + background: color-mix(in srgb, var(--%NS%warn) 10%, transparent); + color: var(--%NS%text); + font-size: 13px; + line-height: 1.5; +} + +.empty[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + justify-items: center; + margin: 0; + padding: 40px 24px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + text-align: center; + animation: enter 0.35s var(--%NS%ease) both; +} + +.empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 0; + max-width: 480px; + line-height: 1.6; +} + +.empty-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.empty[_ngcontent-%COMP%] .small[_ngcontent-%COMP%] { + margin-top: 8px; +} + +.facts[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + align-items: baseline; + gap: 8px 24px; + margin: 0; + padding: 14px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + font-size: 13px; +} + +.facts[_ngcontent-%COMP%]:empty { + display: none; +} + +dt[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +dd[_ngcontent-%COMP%] { + min-width: 0; + margin: 0; + color: var(--%NS%text); + overflow-wrap: anywhere; + font-variant-numeric: tabular-nums; +} + +.table-scroll[_ngcontent-%COMP%] { + overflow-x: auto; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + box-shadow: var(--%NS%shadow); + animation: enter 0.35s var(--%NS%ease) both; +} + +table[_ngcontent-%COMP%] { + width: 100%; + border-collapse: collapse; + font-size: 13px; + font-variant-numeric: tabular-nums; +} + +th[_ngcontent-%COMP%] { + padding: 10px 14px; + border-bottom: 1px solid var(--%NS%border); + background: color-mix(in srgb, var(--%NS%surface-2) 60%, var(--%NS%surface)); + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.06em; + text-align: left; + text-transform: uppercase; + white-space: nowrap; +} + +td[_ngcontent-%COMP%] { + padding: 10px 14px; + border-bottom: 1px solid var(--%NS%border); + color: var(--%NS%text); + line-height: 1.5; + vertical-align: top; + transition: background-color 0.15s var(--%NS%ease); +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] { + border-bottom: none; +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] { + background: var(--%NS%surface-2); +} + +.path[_ngcontent-%COMP%] { + color: var(--%NS%accent); + font-family: var(--%NS%font-mono); + font-size: 12.5px; + white-space: nowrap; +} + +h3[_ngcontent-%COMP%] { + margin: 8px 0 -4px; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +@media (max-width: 480px) { + .facts[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + gap: 2px; + } + .facts[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] + dt[_ngcontent-%COMP%] { + margin-top: 8px; + } +} +[_nghost-%COMP%] { + display: grid; + gap: 16px; + min-width: 0; +} + +.name[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); +} + +.source[_ngcontent-%COMP%] { + width: 1%; + white-space: nowrap; +} + +.chips[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 6px; + margin: 0; + padding: 0; + list-style: none; +} + +.chips[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-weight: 500; +} + +.facts[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); +}`]})},YA=(e,t)=>t.id,XA=(e,t)=>t.phase;function ZA(e,t){if(e&1&&(z(0,`p`,8),J(1),B()),e&2){let e=K();M(),Y(e.message())}}function QA(e,t){if(e&1&&(z(0,`p`,9),J(1),B()),e&2){let e=K();M(),Y(e.navigationOff)}}function $A(e,t){e&1&&(z(0,`span`,18),J(1,`→`),B(),z(2,`span`,19),J(3,`then`),B())}function ej(e,t){if(e&1&&(P(0,$A,4,0),z(1,`code`),J(2),B()),e&2){let e=t.$implicit,n=t.$index;F(n===0?-1:0),M(2),Y(e)}}function tj(e,t){if(e&1&&(z(0,`li`)(1,`code`),J(2),B(),z(3,`span`,18),J(4,` → `),B(),z(5,`span`,19),J(6,` to `),B(),z(7,`code`),J(8),B(),J(9),B()),e&2){let e=t.$implicit,n=K(3);M(2),Y(e.from),M(6),Y(e.to),M(),X(`: `,n.hopCause(e),` `)}}function nj(e,t){if(e&1&&(z(0,`div`,13)(1,`p`,14)(2,`span`,15),J(3),B(),I(4,ej,3,2,null,null,Cg),B(),z(6,`ol`,16),I(7,tj,10,3,`li`,null,Cg),B(),z(9,`p`,17),J(10),B()()),e&2){let e=t.$implicit,n=K(2);M(3),Y(n.loopTitle(e)),M(),L(e.cycle),M(3),L(e.hops),M(3),Y(n.loopMeta(e))}}function rj(e,t){if(e&1&&(z(0,`section`,11)(1,`h3`,12),J(2),B(),I(3,nj,11,2,`div`,13,Cg),B()),e&2){let e=K();M(2),X(` `,e.loops().length===1?`Loop detected`:e.loops().length+` loops detected`,` `),M(),L(e.loops())}}function ij(e,t){if(e&1&&(z(0,`span`),V(1,`i`),J(2),B()),e&2){let e=t.$implicit,n=K(2);M(),C_(`background`,n.color(e)),M(),Y(e)}}function aj(e,t){if(e&1&&(z(0,`time`),J(1),B()),e&2){let e=K().$implicit,t=K(2);M(),Y(t.time(e.startedAt))}}function oj(e,t){if(e&1&&(z(0,`span`,18),J(1,`→`),B(),z(2,`span`,19),J(3,`redirected to`),B(),z(4,`code`,27),J(5),B()),e&2){let e=K().$implicit;M(5),Y(e.finalUrl)}}function sj(e,t){if(e&1&&(z(0,`span`,30),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.endedAt===void 0&&e.outcome!==`pending`?`before Pangular Inspector connected`:`started before Pangular Inspector connected`)}}function cj(e,t){if(e&1&&(z(0,`span`,31),J(1),B()),e&2){let e=K().$implicit;M(),X(``,e.phases?.total,`ms`)}}function lj(e,t){if(e&1&&(z(0,`span`,31),J(1),B()),e&2){let e=K().$implicit;M(),X(``,e.endedAt-e.startedAt,`ms`)}}function uj(e,t){e&1&&(z(0,`span`,32),J(1,`probe`),B())}function dj(e,t){if(e&1&&(z(0,`span`,15),J(1,`loop`),z(2,`span`,19),J(3),B()()),e&2){let e=t,n=K(3);M(3),Z(`: part of `,n.loopTitle(e),` `,e.cycle.join(` then `))}}function fj(e,t){if(e&1&&V(0,`span`),e&2){let e=t.$implicit,n=K(4);C_(`width`,e.width,`%`)(`background`,n.color(e.phase)),N(`title`,e.phase+` `+e.ms+`ms`)}}function pj(e,t){if(e&1&&(z(0,`div`,33),I(1,fj,1,5,`span`,39,XA),B()),e&2){let e=K().$implicit,t=K(2);N(`aria-label`,t.barLabel(e)),M(),L(t.bars(e))}}function mj(e,t){if(e&1&&(z(0,`dt`),J(1,`From`),B(),z(2,`dd`)(3,`code`),J(4),B()()),e&2){let e=K().$implicit;M(4),Y(e.from)}}function hj(e,t){if(e&1&&(z(0,`dt`),J(1,`Started by`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().$implicit;M(3),Z(``,e.caller,` (`,e.trigger,`)`)}}function gj(e,t){if(e&1&&(z(0,`dt`),J(1,`Extras`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().$implicit;M(3),Y(e.extras?.join(`, `))}}function _j(e,t){if(e&1&&(z(0,`dt`),J(1,`Redirect of`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().$implicit;M(3),X(`#`,e.redirectedFrom)}}function vj(e,t){if(e&1&&(z(0,`div`),J(1,` This navigation: `),z(2,`code`),J(3),B(),J(4,` to `),z(5,`code`),J(6),B(),J(7),B()),e&2){let e=t.$implicit,n=K(4);M(3),Y(e.from),M(3),Y(e.to),M(),X(`, `,n.hopCause(e),` `)}}function yj(e,t){if(e&1&&(z(0,`dt`),J(1,`Loop`),B(),z(2,`dd`,40),J(3),I(4,vj,8,3,`div`,null,Cg),B()),e&2){let e=t,n=K().$implicit,r=K(2);M(3),X(` `,e.cycle.join(` → `),` `),M(),L(r.hopsOf(e,n))}}function bj(e,t){if(e&1&&(z(0,`dt`),J(1,`Redirects to`),B(),z(2,`dd`)(3,`code`),J(4),B(),J(5),B()),e&2){let e=K().$implicit;M(4),Y(e.redirectTo),M(),X(` (`,e.redirectKind,`) `)}}function xj(e,t){if(e&1&&(z(0,`dt`),J(1,`Guards`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().$implicit,t=K(2);M(3),Z(``,e.guards.names.join(`, `)||`none`,`: `,t.guardResult(e))}}function Sj(e,t){if(e&1&&(z(0,`div`)(1,`code`),J(2),B(),J(3),z(4,`code`),J(5),B(),J(6,`: `),z(7,`strong`),J(8),B(),J(9),B()),e&2){let e=t.$implicit,n=K(4);M(2),Y(e.guard),M(),X(` `,e.kind,` on `),M(2),Y(e.route),M(2),q(`bad`,n.isBad(e.result)),M(),Y(e.result),M(),X(` (`,e.ms,`ms) `)}}function Cj(e,t){if(e&1&&(z(0,`dt`),J(1,`Runs`),B(),z(2,`dd`),I(3,Sj,10,7,`div`,null,Cg),B()),e&2){let e=K().$implicit;M(3),L(e.runs)}}function wj(e,t){if(e&1&&J(0),e&2){let e=K(2).$implicit;X(` leaving `,e.checked.deactivate.join(`, `),`; `)}}function Tj(e,t){if(e&1&&(z(0,`dt`),J(1,`Checked`),B(),z(2,`dd`),P(3,wj,1,1),J(4),B()),e&2){let e=K().$implicit;M(3),F(e.checked.deactivate.length?3:-1),M(),X(` entering `,e.checked.activate.join(`, `)||`nothing new`,` `)}}function Ej(e,t){if(e&1&&(z(0,`dt`),J(1,`Resolvers`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().$implicit;M(3),Y(e.resolvers?.names?.join(`, `))}}function Dj(e,t){if(e&1&&(z(0,`dt`),J(1,`Lazy loaded`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().$implicit;M(3),Y(e.lazyLoaded?.join(`, `))}}function Oj(e,t){if(e&1&&(z(0,`dt`),J(1,`Reused`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().$implicit;M(3),X(` `,e.reused?.join(`, `),` (component kept, only inputs and params change) `)}}function kj(e,t){if(e&1&&(z(0,`dt`),J(1,`HTTP`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().$implicit;M(3),Z(``,e.requests.count,` request(s): `,e.requests.urls.join(`, `))}}function Aj(e,t){if(e&1&&(z(0,`dt`),J(1,`Scroll`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().$implicit;M(3),Y(e.scroll)}}function jj(e,t){if(e&1&&(z(0,`dt`),J(1,`Title after`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().$implicit;M(3),Y(e.title)}}function Mj(e,t){if(e&1&&(z(0,`dt`),J(1,`Warnings`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().$implicit;M(3),Y(e.warnings?.join(` · `))}}function Nj(e,t){if(e&1&&(z(0,`dt`),J(1,`Reason`),B(),z(2,`dd`,40),J(3),B()),e&2){let e=K().$implicit,t=K(2);M(3),Y(t.reasonText(e))}}function Pj(e,t){if(e&1&&(z(0,`dt`),J(1,`Error`),B(),z(2,`dd`,40),J(3),B()),e&2){let e=K().$implicit;M(3),Y(e.errorCode)}}function Fj(e,t){if(e&1&&(z(0,`dt`),J(1,`Error handler`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().$implicit;M(3),Y(e.errorHandler)}}function Ij(e,t){if(e&1&&(z(0,`dt`),J(1,`Earlier`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().$implicit;M(3),X(``,e.earlier,` navigation(s) before Pangular Inspector connected`)}}function Lj(e,t){if(e&1&&(z(0,`p`,38),J(1,` Replay is off: the URL is redacted or not relative. `),B()),e&2){let e=K().$implicit;R(`id`,av(`replay-note-`,e.id))}}function Rj(e,t){if(e&1){let e=W();z(0,`li`)(1,`div`,25),P(2,aj,2,1,`time`),z(3,`span`,26),J(4),B(),z(5,`code`,27),J(6),B(),P(7,oj,6,1),z(8,`span`,28)(9,`span`,29),J(10),B(),P(11,sj,2,1,`span`,30)(12,cj,2,1,`span`,31)(13,lj,2,1,`span`,31),P(14,uj,2,0,`span`,32),P(15,dj,4,2,`span`,15),B()(),P(16,pj,3,1,`div`,33),z(17,`dl`,34),P(18,mj,5,1),P(19,hj,4,2),P(20,gj,4,1),P(21,_j,4,1),P(22,yj,6,1),P(23,bj,6,2),P(24,xj,4,2),P(25,Cj,5,0),P(26,Tj,5,2),P(27,Ej,4,1),P(28,Dj,4,1),P(29,Oj,4,1),P(30,kj,4,2),P(31,Aj,4,1),P(32,jj,4,1),P(33,Mj,4,1),P(34,Nj,4,1),P(35,Pj,4,1),P(36,Fj,4,1),P(37,Ij,4,1),B(),z(38,`div`,35)(39,`button`,36),G(`click`,function(){let t=O(e).$implicit;return k(K(2).replay(t))}),J(40,` Replay `),B(),z(41,`button`,37),G(`click`,function(){let t=O(e).$implicit;return k(K(2).copy(t))}),J(42,` Copy repro `),B(),P(43,Lj,2,2,`p`,38),B()()}if(e&2){let e,n,r=t.$implicit,i=K(2);q(`in-loop`,!!i.loopOf(r)),M(2),F(r.beforeConnect?-1:2),M(2),X(`#`,r.id),M(2),Y(r.url),M(),F(r.finalUrl&&r.finalUrl!==r.url?7:-1),M(2),N(`data-tone`,i.tone(r.outcome)),M(),Y(r.outcome),M(),F(r.beforeConnect?11:r.phases?.total===void 0?r.endedAt===void 0?-1:13:12),M(3),F(r.probe?14:-1),M(),F((e=i.loopOf(r))?15:-1,e),M(),F(i.bars(r).length?16:-1),M(2),F(r.from?18:-1),M(),F(r.caller?19:-1),M(),F(r.extras?.length?20:-1),M(),F(r.redirectedFrom===void 0?-1:21),M(),F((n=i.loopOf(r))?22:-1,n),M(),F(r.redirectTo?23:-1),M(),F(r.guards&&(r.guards.names.length||r.guards.passed===!1)?24:-1),M(),F(r.runs?.length?25:-1),M(),F(r.checked&&(r.checked.activate.length||r.checked.deactivate.length)?26:-1),M(),F(r.resolvers?.names?.length?27:-1),M(),F(r.lazyLoaded?.length?28:-1),M(),F(r.reused?.length?29:-1),M(),F(r.requests?30:-1),M(),F(r.scroll?31:-1),M(),F(r.title?32:-1),M(),F(r.warnings?.length?33:-1),M(),F(r.reason||r.code?34:-1),M(),F(r.errorCode?35:-1),M(),F(r.errorHandler?36:-1),M(),F(r.earlier?37:-1),M(2),R(`disabled`,!i.navigationAllowed()||!i.replayable(r)),N(`aria-describedby`,i.replayNote(r))(`aria-label`,`Replay navigation `+r.id),M(2),N(`aria-label`,`Copy repro for navigation `+r.id),M(2),F(i.replayable(r)?-1:43)}}function zj(e,t){if(e&1&&(z(0,`div`,20)(1,`span`,21),J(2),B(),z(3,`div`,22),I(4,ij,3,3,`span`,null,wg),B()(),z(6,`ol`,23),I(7,Rj,44,37,`li`,24,YA),B()),e&2){let e=K();M(2),Z(``,e.items().length,` of `,e.page().navigations.length,` navigation(s)`),M(2),L(e.phases),M(3),L(e.items())}}function Bj(e,t){if(e&1){let e=W();z(0,`div`,41)(1,`p`,42),J(2,`No navigations match the current filters.`),B(),z(3,`p`,30),J(4),B(),z(5,`button`,37),G(`click`,function(){O(e);let t=K(2),n=n_(2);return t.clearFilters(),k(n.focus())}),J(6,` Clear filters `),B()()}if(e&2){let e=K(2);M(4),X(` `,e.page().navigations.length,` navigation(s) are hidden. Clear the filters to see them. `)}}function Vj(e,t){e&1&&(z(0,`div`,41)(1,`p`,42),J(2,`No navigations since Pangular Inspector connected.`),B(),z(3,`p`,30),J(4,`Earlier ones are not visible. Click a link in the app to record one.`),B()())}function Hj(e,t){e&1&&P(0,Bj,7,1,`div`,41)(1,Vj,5,0,`div`,41),e&2&&F(+!K().page().navigations.length)}var Uj=[`recognize`,`guards`,`resolve`,`activate`],Wj={recognize:`#60a5fa`,guards:`#f59e0b`,resolve:`#2dd4bf`,activate:`#34d399`},Gj=class e{page=$.required();rpc=$(null);maxNavigations=Q(()=>yE(this.rpc()).limits.navigations);navigationAllowed=Q(()=>bE(this.rpc(),`router`));navigationOff=KT(`router`);phases=Uj;pageId=Q(()=>this.page().pageId);filter=Tv({source:this.pageId,computation:()=>``});onlyProblems=Tv({source:this.pageId,computation:()=>!1});message=Tv({source:this.pageId,computation:()=>``});loops=Q(()=>this.page().loops??[]);loopById=Q(()=>{let e=new Map;for(let t of this.loops())for(let n of t.ids)e.set(n,t);return e});items=Q(()=>{let e=this.filter().toLowerCase();return[...this.page().navigations].reverse().filter(t=>(!e||t.url.toLowerCase().includes(e)||!!t.finalUrl?.toLowerCase().includes(e))&&(!this.onlyProblems()||this.isProblem(t)))});isProblem(e){return e.probe?!1:![`succeeded`,`pending`].includes(e.outcome)||this.loopById().has(e.id)}loopOf(e){return this.loopById().get(e.id)}loopTitle(e){return e.kind===`burst`?`navigation loop`:`redirect loop`}hopsOf(e,t){return e.hops.filter(e=>e.id===t.id)}hopCause(e){return e.via===`navigate`?`#${e.id} started by ${e.by??`code`}`:`${e.via===`redirectTo`?`config`:`${e.via} redirect`}${e.by?` ${e.by}`:e.via===`redirectTo`?` redirectTo`:``} in #${e.id}`}loopMeta(e){let t=e.ids.length>1?`Navigations #${e.ids[0]} to #${e.ids[e.ids.length-1]}`:`Navigation #${e.ids[0]}`,n=e.bounces>1?`, came back ${e.bounces} times`:``,r=e.guards.length?` Guards involved: ${e.guards.join(`, `)}.`:``;return`${t}${n}; ${e.end}.${r}`}reasonText(e){return[e.code,e.reason].filter(Boolean).join(`: `)}clearFilters(){this.filter.set(``),this.onlyProblems.set(!1)}tone(e){return Rk(e)}color(e){return Wj[e]}bars(e){let t=e.phases?.total;return t?Uj.filter(t=>(e.phases?.[t]??0)>0).map(n=>({phase:n,ms:e.phases[n],width:Math.max(1,e.phases[n]/t*100)})):[]}barLabel(e){return`Phases: ${this.bars(e).map(e=>`${e.phase} ${e.ms}ms`).join(`, `)}`}guardResult(e){let t=e.guards?.passed;return t===!0?`passed`:t===!1?e.outcome===`redirected`?`redirected`:`blocked`:e.outcome===`pending`?`running`:`did not finish, navigation ${e.outcome}`}isBad(e){return e===`false`||/^(UrlTree|RedirectCommand|threw)/.test(e)}time=RD;instrumentSeq=0;async toggleInstrument(e){let t=e.target,n=t.checked,r=this.pageId(),i=++this.instrumentSeq,a=await Lk(this.rpc(),r,{action:`instrument`,on:n});if(i===this.instrumentSeq){if(r!==this.pageId()){t.checked=!!this.page().instrumented;return}if(a.error){t.checked=!!this.page().instrumented,this.message.set(String(a.error));return}this.message.set(n?`Recording each guard and resolver.`:`Stopped recording guards and resolvers.`)}}replayable(e){return Fk(e.url)}replayNote(e){return this.navigationAllowed()?this.replayable(e)?null:`replay-note-${e.id}`:`route-timeline-writes-off`}async replay(e){this.message.set(`Replaying #${e.id}…`);let t=this.pageId(),n=await Lk(this.rpc(),t,{action:`replay`,id:e.id});if(t!==this.pageId())return;if(n.error){this.message.set(String(n.error));return}let r=n.replay;this.message.set(`Replay of #${e.id}: ${r?.outcome??`unknown`}${n.same?` (same as before)`:` (different from before)`}.`)}async copy(e){let t=this.pageId(),n=await Pk(this.rpc(),`router-export`,{pageId:t,id:e.id});if(t===this.pageId()){if(!n){this.message.set(`Could not build the repro.`);return}try{await navigator.clipboard.writeText(n),t===this.pageId()&&this.message.set(`Copied a markdown repro of #${e.id}.`)}catch{t===this.pageId()&&this.message.set(`The clipboard is not available here.`)}}}async clearNavigations(){let e=this.rpc(),t=this.pageId(),n=`Clearing navigations…`;this.message.set(n);let r;try{if(!e)throw Error(`No connection`);await iE(e,`clear-router-navigations`,t),r=`Navigations cleared.`}catch{r=`Could not clear the navigations.`}t===this.pageId()?this.message.set(r):this.message()===n&&this.message.set(``)}exportJson(){let e=new Blob([JSON.stringify(this.page().navigations,null,2)],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`navigations-${this.page().pageId}.json`,n.click(),URL.revokeObjectURL(t)}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-route-timeline`]],inputs:{page:[1,`page`],rpc:[1,`rpc`]},decls:21,vars:12,consts:[[`filterInput`,``],[1,`toolbar`],[`type`,`search`,`aria-label`,`Filter navigations by URL`,`placeholder`,`Filter by URL`,1,`field`,3,`input`,`keydown.escape`,`value`],[1,`check`],[`type`,`checkbox`,3,`change`,`checked`],[`type`,`button`,1,`small`,`export`,3,`click`],[`type`,`button`,`aria-label`,`Clear navigations`,1,`small`,3,`click`,`disabled`],[`role`,`status`,1,`visually-hidden`],[`aria-hidden`,`true`,1,`message`],[`id`,`route-timeline-writes-off`,1,`message`],[`what`,`navigations`,`limit`,`navigations`,3,`dropped`,`max`],[`aria-labelledby`,`loops-heading`,1,`loops`],[`id`,`loops-heading`],[1,`loop`],[1,`chain`],[`data-tone`,`bad`,1,`badge`],[1,`hops`],[1,`muted`,`loop-meta`],[`aria-hidden`,`true`,1,`arrow`],[1,`visually-hidden`],[1,`meta-row`],[1,`muted`,`count`],[`aria-hidden`,`true`,1,`legend`],[1,`navs`],[3,`in-loop`],[1,`head`],[1,`id`],[1,`url`],[1,`meta`],[1,`badge`],[1,`muted`],[1,`muted`,`ms`],[1,`tag`],[`role`,`img`,1,`bar`],[1,`details`],[1,`actions`],[`type`,`button`,1,`small`,3,`click`,`disabled`],[`type`,`button`,1,`small`,3,`click`],[1,`muted`,`replay-note`,3,`id`],[3,`width`,`background`],[1,`reason`],[1,`empty`],[1,`empty-title`]],template:function(e,t){e&1&&(z(0,`div`,1)(1,`input`,2,0),G(`input`,function(e){return t.filter.set(e.target.value)})(`keydown.escape`,function(){return t.filter.set(``)}),B(),z(3,`label`,3)(4,`input`,4),G(`change`,function(e){return t.onlyProblems.set(e.target.checked)}),B(),J(5,` Only problems `),B(),z(6,`label`,3)(7,`input`,4),G(`change`,function(e){return t.toggleInstrument(e)}),B(),J(8,` Record each guard and resolver `),B(),z(9,`button`,5),G(`click`,function(){return t.exportJson()}),J(10,`Export JSON`),B(),z(11,`button`,6),G(`click`,function(){return t.clearNavigations()}),J(12,` Clear `),B()(),z(13,`p`,7),J(14),B(),P(15,ZA,2,1,`p`,8),P(16,QA,2,1,`p`,9),V(17,`app-limit-note`,10),P(18,rj,5,1,`section`,11),P(19,zj,9,2)(20,Hj,2,1)),e&2&&(M(),R(`value`,t.filter()),M(3),R(`checked`,t.onlyProblems()),M(3),R(`checked`,t.page().instrumented),M(4),R(`disabled`,!t.navigationAllowed()),N(`aria-describedby`,t.navigationAllowed()?null:`route-timeline-writes-off`),M(3),Y(t.message()),M(),F(t.message()?15:-1),M(),F(t.navigationAllowed()?-1:16),M(),R(`dropped`,t.page().dropped??0)(`max`,t.maxNavigations()),M(),F(t.loops().length?18:-1),M(),F(t.items().length?19:20))},dependencies:[UD],styles:[`.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; +} + +.nil[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12.5px; + color: var(--%NS%text); + overflow-wrap: anywhere; +} + +.tag[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + max-width: 100%; + min-height: 20px; + margin: 2px 4px 2px 0; + padding: 0 8px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 11.5px; + line-height: 1.4; + vertical-align: middle; + overflow-wrap: anywhere; + white-space: normal; +} + +.badge[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + min-height: 20px; + padding: 0 8px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-size: 11px; + font-weight: 600; + line-height: 1.4; + white-space: nowrap; + vertical-align: middle; +} + +.badge[data-tone=good][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.badge[data-tone=warn][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +.badge[data-tone=bad][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger); +} + +button.small[_ngcontent-%COMP%] { + display: inline-flex; + flex: none; + align-items: center; + justify-content: center; + gap: 6px; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + white-space: nowrap; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease), border-color 0.15s var(--%NS%ease), transform 0.1s var(--%NS%ease); +} + +button.small[_ngcontent-%COMP%]:hover:not(:disabled) { + background: var(--%NS%surface-3); + border-color: color-mix(in srgb, var(--%NS%text-3) 50%, var(--%NS%border-strong)); +} + +button.small[_ngcontent-%COMP%]:active:not(:disabled) { + transform: translateY(1px); +} + +button.small[_ngcontent-%COMP%]:disabled { + opacity: 0.55; + cursor: not-allowed; +} + +button.small.primary[_ngcontent-%COMP%] { + border-color: var(--%NS%accent); + background: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +button.small.primary[_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: var(--%NS%accent-hover); + background: var(--%NS%accent-hover); +} + +button.small[_ngcontent-%COMP%]:focus-visible, +.table-scroll[_ngcontent-%COMP%]:focus-visible, +input[type=checkbox][_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +input.field[_ngcontent-%COMP%], +select[_ngcontent-%COMP%] { + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background-color: var(--%NS%bg); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + transition: border-color 0.15s var(--%NS%ease), box-shadow 0.15s var(--%NS%ease); +} + +input.field[_ngcontent-%COMP%] { + text-overflow: ellipsis; +} + +input.field[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +input.field[_ngcontent-%COMP%]:hover:not(:focus), +select[_ngcontent-%COMP%]:hover:not(:focus) { + border-color: color-mix(in srgb, var(--%NS%text-3) 50%, var(--%NS%border-strong)); +} + +input.field[_ngcontent-%COMP%]:focus-visible, +select[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.note[_ngcontent-%COMP%] { + margin: 0; + padding: 10px 14px; + border: 1px solid color-mix(in srgb, var(--%NS%warn) 30%, transparent); + border-radius: var(--%NS%radius-sm); + background: color-mix(in srgb, var(--%NS%warn) 10%, transparent); + color: var(--%NS%text); + font-size: 13px; + line-height: 1.5; +} + +.empty[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + justify-items: center; + margin: 0; + padding: 40px 24px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + text-align: center; + animation: enter 0.35s var(--%NS%ease) both; +} + +.empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 0; + max-width: 480px; + line-height: 1.6; +} + +.empty-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.empty[_ngcontent-%COMP%] .small[_ngcontent-%COMP%] { + margin-top: 8px; +} + +.facts[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + align-items: baseline; + gap: 8px 24px; + margin: 0; + padding: 14px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + font-size: 13px; +} + +.facts[_ngcontent-%COMP%]:empty { + display: none; +} + +dt[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +dd[_ngcontent-%COMP%] { + min-width: 0; + margin: 0; + color: var(--%NS%text); + overflow-wrap: anywhere; + font-variant-numeric: tabular-nums; +} + +.table-scroll[_ngcontent-%COMP%] { + overflow-x: auto; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + box-shadow: var(--%NS%shadow); + animation: enter 0.35s var(--%NS%ease) both; +} + +table[_ngcontent-%COMP%] { + width: 100%; + border-collapse: collapse; + font-size: 13px; + font-variant-numeric: tabular-nums; +} + +th[_ngcontent-%COMP%] { + padding: 10px 14px; + border-bottom: 1px solid var(--%NS%border); + background: color-mix(in srgb, var(--%NS%surface-2) 60%, var(--%NS%surface)); + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.06em; + text-align: left; + text-transform: uppercase; + white-space: nowrap; +} + +td[_ngcontent-%COMP%] { + padding: 10px 14px; + border-bottom: 1px solid var(--%NS%border); + color: var(--%NS%text); + line-height: 1.5; + vertical-align: top; + transition: background-color 0.15s var(--%NS%ease); +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] { + border-bottom: none; +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] { + background: var(--%NS%surface-2); +} + +.path[_ngcontent-%COMP%] { + color: var(--%NS%accent); + font-family: var(--%NS%font-mono); + font-size: 12.5px; + white-space: nowrap; +} + +h3[_ngcontent-%COMP%] { + margin: 8px 0 -4px; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +@media (max-width: 480px) { + .facts[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + gap: 2px; + } + .facts[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] + dt[_ngcontent-%COMP%] { + margin-top: 8px; + } +} +[_nghost-%COMP%] { + display: grid; + gap: 12px; + min-width: 0; +} + +.toolbar[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px 16px; + align-items: center; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + color: var(--%NS%text); + font-size: 13px; +} + +.toolbar[_ngcontent-%COMP%] .field[_ngcontent-%COMP%] { + flex: 1 1 200px; + min-width: 0; +} + +.export[_ngcontent-%COMP%] { + margin-left: auto; +} + +.check[_ngcontent-%COMP%] { + display: inline-flex; + gap: 8px; + align-items: center; + min-height: 34px; + color: var(--%NS%text-2); + cursor: pointer; + user-select: none; + transition: color 0.15s var(--%NS%ease); +} + +.check[_ngcontent-%COMP%]:hover { + color: var(--%NS%text); +} + +.check[_ngcontent-%COMP%] input[_ngcontent-%COMP%] { + flex: none; + width: 14px; + height: 14px; + margin: 0; + accent-color: var(--%NS%accent); + cursor: pointer; +} + +.message[_ngcontent-%COMP%] { + margin: 0; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-size: 13px; + overflow-wrap: anywhere; +} + +.meta-row[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 6px 16px; + align-items: center; + justify-content: space-between; + padding: 0 4px; +} + +.count[_ngcontent-%COMP%] { + font-size: 12px; + font-variant-numeric: tabular-nums; +} + +.legend[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 6px 16px; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.legend[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + gap: 6px; +} + +.legend[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { + display: inline-block; + width: 8px; + height: 8px; + border-radius: 99px; +} + +.navs[_ngcontent-%COMP%] { + display: grid; + gap: 8px; + margin: 0; + padding: 0; + list-style: none; +} + +.navs[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] { + min-width: 0; + padding: 12px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + font-size: 13px; + animation: enter 0.35s var(--%NS%ease) both; + transition: border-color 0.15s var(--%NS%ease); +} + +.navs[_ngcontent-%COMP%] > li[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%border-strong); +} + +.head[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 6px 8px; + align-items: center; + min-width: 0; + font-variant-numeric: tabular-nums; +} + +.head[_ngcontent-%COMP%] .url[_ngcontent-%COMP%] { + min-width: 0; + color: var(--%NS%text-strong); + font-weight: 500; +} + +.id[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-family: var(--%NS%font-mono); + font-size: 12px; +} + +.arrow[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +.meta[_ngcontent-%COMP%] { + display: inline-flex; + flex-wrap: wrap; + gap: 6px 8px; + align-items: center; + margin-left: auto; +} + +.ms[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12px; +} + +time[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-family: var(--%NS%font-mono); + font-size: 12px; + font-variant-numeric: tabular-nums; +} + +.bar[_ngcontent-%COMP%] { + display: flex; + gap: 2px; + height: 6px; + margin: 12px 0 4px; + overflow: hidden; + border-radius: 99px; + background: var(--%NS%surface-3); +} + +.bar[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { + display: block; + min-width: 2px; +} + +.details[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + align-items: baseline; + gap: 6px 16px; + margin: 12px 0 0; + font-size: 12.5px; + line-height: 1.5; +} + +.details[_ngcontent-%COMP%]:empty { + display: none; +} + +.details[_ngcontent-%COMP%] dt[_ngcontent-%COMP%] { + letter-spacing: 0.06em; +} + +.reason[_ngcontent-%COMP%], +.bad[_ngcontent-%COMP%] { + color: var(--%NS%danger); +} + +.navs[_ngcontent-%COMP%] > li.in-loop[_ngcontent-%COMP%] { + box-shadow: inset 3px 0 0 var(--%NS%danger); +} + +.loops[_ngcontent-%COMP%] { + display: grid; + gap: 8px; + padding: 12px 16px; + border: 1px solid color-mix(in srgb, var(--%NS%danger) 35%, var(--%NS%border)); + border-radius: var(--%NS%radius); + background: color-mix(in srgb, var(--%NS%danger) 6%, var(--%NS%surface)); + color: var(--%NS%text); + font-size: 13px; + line-height: 1.5; +} + +.loops[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-strong); + font-size: 13px; + letter-spacing: normal; + text-transform: none; +} + +.loop[_ngcontent-%COMP%] + .loop[_ngcontent-%COMP%] { + padding-top: 8px; + border-top: 1px solid var(--%NS%border); +} + +.chain[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px 8px; + align-items: center; + margin: 0; +} + +.hops[_ngcontent-%COMP%] { + margin: 6px 0 0; + padding-left: 20px; +} + +.hops[_ngcontent-%COMP%] li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%] { + margin-top: 2px; +} + +.loop-meta[_ngcontent-%COMP%] { + margin: 6px 0 0; + font-size: 12px; +} + +.actions[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; + margin-top: 12px; + padding-top: 12px; + border-top: 1px solid var(--%NS%border); +} + +.replay-note[_ngcontent-%COMP%] { + align-self: center; + margin: 0; + font-size: 12px; +} + +@media (max-width: 480px) { + .details[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + gap: 2px; + } + .details[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] + dt[_ngcontent-%COMP%] { + margin-top: 6px; + } + .export[_ngcontent-%COMP%] { + margin-left: 0; + } +}`]})},Kj=[`urlInput`],qj=()=>[],Jj=(e,t)=>t.node.id;function Yj(e,t){if(e&1&&(J(0,` with `),H(1,`code`),J(2),dv(3,`json`),U()),e&2){K(2);let e=iv(0);M(2),Y(pv(3,1,e.params))}}function Xj(e,t){if(e&1&&(H(0,`span`,19),J(1,`match`),U(),J(2,` Matches `),H(3,`code`,20),J(4),U(),P(5,Yj,4,3)),e&2){K();let e=iv(0),t=K();M(4),Y(t.chainText(e)),M(),F(t.hasKeys(e.params)?5:-1)}}function Zj(e,t){if(e&1&&(J(0,` Nearest: `),H(1,`code`),J(2),U()),e&2){K(2);let e=iv(0);M(2),Y(e.nearest.join(`, `))}}function Qj(e,t){if(e&1&&(H(0,`span`,21),J(1,`no match`),U(),J(2,` Matches no route (NG04002). `),P(3,Zj,3,1)),e&2){K();let e=iv(0);M(3),F(e.nearest.length?3:-1)}}function $j(e,t){if(e&1&&(H(0,`div`,18),J(1),U()),e&2){let e=t.$implicit;M(),Y(e)}}function eM(e,t){if(e&1&&(nv(0),H(1,`div`,8)(2,`span`,17),J(3,`Result for `),H(4,`code`),J(5),U(),J(6,`:`),U(),P(7,Xj,6,2)(8,Qj,4,1),I(9,$j,2,1,`div`,18,wg),U()),e&2){let e=t,n=rv(e.result);M(),N(`data-matched`,n.matched),M(4),Y(e.url),M(2),F(n.matched?7:8),M(2),L(n.notes)}}function tM(e,t){if(e&1&&(H(0,`p`,9),J(1),U()),e&2){let e=K();M(),Y(e.message())}}function nM(e,t){if(e&1&&(H(0,`p`,11),J(1),U()),e&2){let e=K();M(),Y(e.navigationOff)}}function rM(e,t){e&1&&J(0),e&2&&X(` `,t,` route(s) left out: the page lists at most 200 routes per level and 1000 in total. `)}function iM(e,t){if(e&1&&(H(0,`p`,14),J(1),P(2,rM,1,1),U()),e&2){let e,t=K();M(),Z(` Generation `,t.page().generation,` · `,t.rows().length,` route(s). Lazy routes show their children once loaded. `),M(),F((e=t.page().configTruncated)?2:-1,e)}}function aM(e,t){if(e&1&&(H(0,`div`,15)(1,`p`,22),J(2),U(),H(3,`p`,18),J(4),U()()),e&2){let e=K();M(2),X(` `,e.page().setup?.mode===`events-only`?`This build has no debug utils, so the live config cannot be read.`:`The page has not reported its route config yet.`,` `),M(2),X(` `,e.page().setup?.mode===`events-only`?`Run the app with the development build to inspect the live config.`:`It appears once the router initializes. Navigate in the app if it stays empty.`,` `)}}function oM(e,t){if(e&1){let e=W();H(0,`div`,15)(1,`p`,22),J(2,`No routes match the filter.`),U(),H(3,`p`,18),J(4,`Try a shorter path or a component name.`),U(),H(5,`button`,23),Qg(`click`,function(){O(e);let t=K(),n=n_(16);return t.filter.set(``),k(n.focus())}),J(6,` Clear filter `),U()()}}function sM(e,t){e&1&&(H(0,`span`,27),J(1,`active`),U())}function cM(e,t){if(e&1&&(H(0,`span`,27),J(1),U()),e&2){let e=K().$implicit;M(),X(`lazy `,e.node.lazy)}}function lM(e,t){if(e&1&&(H(0,`span`,27),J(1),U()),e&2){let e=K().$implicit;M(),X(`outlet `,e.node.outlet)}}function uM(e,t){if(e&1&&(H(0,`span`,28)(1,`span`,25),J(2,`declared in `),U(),J(3),U()),e&2){let e=K().$implicit;M(3),Y(e.source)}}function dM(e,t){if(e&1&&(H(0,`span`,29),J(1,`redirect `),H(2,`span`,34),J(3,`→`),U(),H(4,`code`),J(5),U()()),e&2){let e=K().$implicit;M(5),Y(e.node.redirectTo)}}function fM(e,t){if(e&1&&J(0),e&2){let e=K().$implicit;X(` `,e.node.component??(e.node.lazy===`unloaded`?`lazy, not loaded yet`:e.node.kind),` `)}}function pM(e,t){if(e&1&&(H(0,`span`,27),J(1),U()),e&2){let e=t.$implicit;M(),Y(e)}}function mM(e,t){if(e&1&&(H(0,`span`,27),J(1),U()),e&2){let e=t.$implicit;M(),X(`resolve `,e)}}function hM(e,t){e&1&&(H(0,`span`,35),J(1,`–`),U(),H(2,`span`,25),J(3,`none`),U())}function gM(e,t){if(e&1&&J(0),e&2){let e=K().$implicit;X(` `,e.node.title,` `)}}function _M(e,t){e&1&&(H(0,`span`,35),J(1,`–`),U(),H(2,`span`,25),J(3,`none`),U())}function vM(e,t){if(e&1){let e=W();H(0,`input`,37),Qg(`input`,function(t){let n=O(e).$implicit,r=K(2).$implicit;return k(K(2).setParam(r.node.id,n,t.target.value))}),U()}if(e&2){let e=t.$implicit,n=K(2).$implicit,r=K(2);Vg(`placeholder`,e)(`value`,r.paramValues()[n.node.id]?.[e]??``),N(`aria-label`,e+` for `+n.node.fullPath)(`aria-invalid`,r.isInvalid(n.node,e)?`true`:null)(`aria-describedby`,r.isInvalid(n.node,e)?`route-tree-row-result`:null)}}function yM(e,t){if(e&1){let e=W();I(0,vM,1,5,`input`,36,wg),H(2,`button`,7),Qg(`click`,function(){O(e);let t=K().$implicit,n=n_(1);return k(K(2).navigate(t.node,n))}),J(3,` Go `),U()}if(e&2){let e=K().$implicit,t=K(2);L(t.params(e.node)),M(2),Vg(`disabled`,!t.navigationAllowed()),N(`aria-describedby`,t.navigationAllowed()?null:`route-tree-writes-off`)(`aria-label`,`Navigate to `+e.node.fullPath)}}function bM(e,t){if(e&1){let e=W();H(0,`button`,23),Qg(`click`,function(){O(e);let t=K().$implicit;return k(K(2).resolveLazy(t.node))}),J(1,` Read lazy `),U()}if(e&2){let e=K().$implicit;N(`aria-label`,`Read lazy routes of `+e.node.fullPath)}}function xM(e,t){if(e&1&&(H(0,`tr`,33)(1,`td`,38)(2,`p`,39),J(3),U()()()),e&2){let e=K(3);M(3),Y(e.rowResult()?.text)}}function SM(e,t){if(e&1&&(H(0,`tr`,null,2)(2,`td`,26),J(3),P(4,sM,2,0,`span`,27),P(5,cM,2,1,`span`,27),P(6,lM,2,1,`span`,27),P(7,uM,4,1,`span`,28),U(),H(8,`td`),P(9,dM,6,1,`span`,29)(10,fM,1,1),U(),H(11,`td`),I(12,pM,2,1,`span`,27,Cg),I(14,mM,2,1,`span`,27,wg),P(16,hM,4,0),U(),H(17,`td`),P(18,gM,1,1)(19,_M,4,0),U(),H(20,`td`,30)(21,`div`,31),P(22,yM,4,3),P(23,bM,2,1,`button`,32),U()()(),P(24,xM,4,1,`tr`,33)),e&2){let e=t.$implicit,n=K(2);q(`active`,n.isActive(e.node)),M(2),C_(`padding-left`,14+e.depth*16,`px`),M(),X(` `,e.node.fullPath,` `),M(),F(n.isActive(e.node)?4:-1),M(),F(e.node.lazy?5:-1),M(),F(e.node.outlet?6:-1),M(),F(e.source?7:-1),M(2),F(e.node.redirectTo===void 0?10:9),M(3),L(n.guardList(e.node)),M(2),L(e.node.resolvers??ov(15,qj)),M(2),F(!n.guardList(e.node).length&&!e.node.resolvers?.length?16:-1),M(2),F(e.node.title?18:19),M(4),F(n.canNavigate(e.node)?22:-1),M(),F(e.node.kind===`lazy`&&e.node.lazy===`unloaded`?23:-1),M(),F(n.rowResult()?.id===e.node.id?24:-1)}}function CM(e,t){if(e&1&&(H(0,`div`,16)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,24),J(5,`Path`),U(),H(6,`th`,24),J(7,`Target`),U(),H(8,`th`,24),J(9,`Guards and resolvers`),U(),H(10,`th`,24),J(11,`Title`),U(),H(12,`th`,24)(13,`span`,25),J(14,`Actions`),U()()()(),H(15,`tbody`),I(16,SM,25,16,null,null,Jj),U()()()),e&2){let e=K();M(16),L(e.rows())}}var wM=class e{page=$.required();rpc=$(null);navigationAllowed=Q(()=>bE(this.rpc(),`router`));navigationOff=KT(`router`);sources=$([]);filter=j(``);testUrl=j(``);pageId=Q(()=>this.page().pageId);match=Tv({source:this.pageId,computation:()=>null});message=Tv({source:this.pageId,computation:()=>``});rowResult=Tv({source:this.pageId,computation:()=>null});paramValues=Tv({source:this.pageId,computation:()=>({})});checkedRow=Tv({source:this.pageId,computation:()=>null});predictSeq=0;probeSeq=0;urlInput=Rv(`urlInput`);active=Q(()=>new Set(this.page().activeIds??[]));rows=Q(()=>{let e=this.filter().toLowerCase(),t=this.sources(),n=[],r=(i,a)=>{for(let o of i){let i=Nk(o,t),s=i&&Mk(i);(!e||o.fullPath.toLowerCase().includes(e)||o.component?.toLowerCase().includes(e)||s?.toLowerCase().includes(e))&&n.push({node:o,depth:a,source:s}),o.children&&r(o.children,a+1)}};return r(this.page().config??[],0),n});hasKeys(e){return Object.keys(e).length>0}isActive(e){return this.active().has(e.id)}guardList(e){return Object.entries(e.guards??{}).flatMap(([e,t])=>t.map(t=>`${e} ${t}`))}params(e){return(e.fullPath.match(/:([A-Za-z0-9_]+)/g)??[]).map(e=>e.slice(1))}canNavigate(e){return e.redirectTo===void 0&&!e.matcher&&!e.outlet&&!e.fullPath.includes(`**`)&&(!!e.component||e.kind===`component`||e.kind===`lazy`)}setParam(e,t,n){this.paramValues.update(r=>({...r,[e]:{...r[e],[t]:n}}))}missingParams(e){let t=this.paramValues()[e.id]??{};return this.params(e).filter(e=>!t[e])}isInvalid(e,t){return this.checkedRow()===e.id&&!this.paramValues()[e.id]?.[t]}chainText(e){return e.chain.map(e=>e.fullPath).join(` → `)}editUrl(e){this.testUrl.set(e),this.predictSeq++,this.probeSeq++,this.match.set(null),this.message.set(``)}askForUrl(e){this.match.set(null),this.message.set(`Type a URL to ${e}, for example /users/42.`),this.urlInput()?.nativeElement.focus()}async predict(){let e=this.testUrl().trim(),t=++this.predictSeq;if(!e){this.askForUrl(`predict`);return}let n=this.pageId(),r=await Pk(this.rpc(),`router-match`,{pageId:n,url:e});t===this.predictSeq&&n===this.pageId()&&(this.match.set(r&&{url:e,result:r}),r?this.message()===`Could not reach the page.`&&this.message.set(``):this.message.set(Ik))}async probe(){let e=this.testUrl().trim(),t=++this.probeSeq;if(!e){this.askForUrl(`probe`);return}this.message.set(`Running the real matcher in the app…`);let n=this.pageId(),r=await Lk(this.rpc(),n,{action:`probe`,url:e});if(t===this.probeSeq&&n===this.pageId()){if(r.error){this.message.set(String(r.error));return}this.message.set(r.matched?`The app recognized ${e} and its canMatch guards passed. The probe stopped before canActivate guards and resolvers, so those did not run. See the probe entry in Navigations.`:typeof r.redirectedTo==`string`?`A canMatch guard or the navigation error handler redirected ${e} to ${r.redirectedTo}. The probe stopped that navigation before it rendered anything.`:`The app could not recognize ${e}: ${String(r.reason??``)}`)}}async navigate(e,t){let n=this.missingParams(e);if(n.length){this.checkedRow.set(e.id),this.rowResult.set({id:e.id,text:`Fill in ${n.map(e=>`:${e}`).join(`, `)} to navigate.`}),Array.from(t?.querySelectorAll(`input.param`)??[]).find(e=>!e.value)?.focus();return}this.checkedRow.set(null),this.rowResult.set({id:e.id,text:`Navigating to ${e.fullPath}…`});let r=this.pageId(),i=await Lk(this.rpc(),r,{action:`navigate`,pattern:e.fullPath,params:this.paramValues()[e.id]??{}});r===this.pageId()&&this.rowResult.set({id:e.id,text:i.error?String(i.error):`Navigation #${i.id}: ${i.outcome}${i.finalUrl?` at ${i.finalUrl}`:``}.`})}async resolveLazy(e){let t=this.pageId(),n=await Lk(this.rpc(),t,{action:`resolve-lazy`,id:e.id});if(t!==this.pageId())return;if(n.error){this.rowResult.set({id:e.id,text:String(n.error)});return}let r=n.routes??[];this.rowResult.set({id:e.id,text:`${e.fullPath} declares ${r.length} route(s): ${r.map(e=>`/${e.path}`).join(`, `)}. The router loads them for real on the first navigation that needs them.`})}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-route-tree`]],viewQuery:function(e,t){e&1&&e_(t.urlInput,Kj,5),e&2&&t_()},inputs:{page:[1,`page`],rpc:[1,`rpc`],sources:[1,`sources`]},decls:21,vars:10,consts:[[`urlInput`,``],[`filterInput`,``],[`rowEl`,``],[1,`test`,3,`submit`],[`for`,`test-url`],[`id`,`test-url`,`type`,`text`,`placeholder`,`/users/42`,1,`field`,3,`input`,`value`],[`type`,`submit`,1,`small`,`primary`],[`type`,`button`,1,`small`,3,`click`,`disabled`],[`role`,`status`,1,`result`],[`role`,`status`,1,`message`],[`role`,`status`,1,`visually-hidden`],[`id`,`route-tree-writes-off`,1,`message`],[1,`filter-row`],[`type`,`search`,`aria-label`,`Filter routes`,`placeholder`,`Filter by path, component or file`,1,`field`,`filter`,3,`input`,`keydown.escape`,`value`],[1,`muted`,`summary`],[1,`empty`],[`role`,`region`,`aria-label`,`Live route config`,`tabindex`,`0`,1,`table-scroll`],[1,`for`],[1,`muted`],[`data-tone`,`good`,1,`badge`],[1,`chain`],[`data-tone`,`bad`,1,`badge`],[1,`empty-title`],[`type`,`button`,1,`small`,3,`click`],[`scope`,`col`],[1,`visually-hidden`],[1,`path`],[1,`tag`],[1,`src`],[1,`redirect`],[1,`actions`],[1,`actions-inner`],[`type`,`button`,1,`small`],[1,`row-result`],[`aria-hidden`,`true`],[`aria-hidden`,`true`,1,`nil`],[`type`,`text`,1,`field`,`param`,3,`placeholder`,`value`],[`type`,`text`,1,`field`,`param`,3,`input`,`placeholder`,`value`],[`colspan`,`5`],[`id`,`route-tree-row-result`]],template:function(e,t){if(e&1){let e=W();H(0,`form`,3),Qg(`submit`,function(n){return O(e),n.preventDefault(),k(t.predict())}),H(1,`label`,4),J(2,`Test a URL`),U(),H(3,`input`,5,0),Qg(`input`,function(e){return t.editUrl(e.target.value)}),U(),H(5,`button`,6),J(6,`Predict`),U(),H(7,`button`,7),Qg(`click`,function(){return t.probe()}),J(8,` Probe in app `),U()(),P(9,eM,11,4,`div`,8),P(10,tM,2,1,`p`,9),H(11,`p`,10),J(12),U(),P(13,nM,2,1,`p`,11),H(14,`div`,12)(15,`input`,13,1),Qg(`input`,function(e){return t.filter.set(e.target.value)})(`keydown.escape`,function(){return t.filter.set(``)}),U(),P(17,iM,3,3,`p`,14),U(),P(18,aM,5,2,`div`,15)(19,oM,7,0,`div`,15)(20,CM,18,0,`div`,16)}if(e&2){let e;M(3),Vg(`value`,t.testUrl()),M(4),Vg(`disabled`,!t.navigationAllowed()),N(`aria-describedby`,t.navigationAllowed()?null:`route-tree-writes-off`),M(2),F((e=t.match())?9:-1,e),M(),F(t.message()?10:-1),M(2),Y(t.rowResult()?.text),M(),F(t.navigationAllowed()?-1:13),M(2),Vg(`value`,t.filter()),M(2),F(t.page().config?17:-1),M(),F(t.page().config?t.rows().length?20:19:18)}},dependencies:[ab],styles:[`.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; +} + +.nil[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12.5px; + color: var(--%NS%text); + overflow-wrap: anywhere; +} + +.tag[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + max-width: 100%; + min-height: 20px; + margin: 2px 4px 2px 0; + padding: 0 8px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 11.5px; + line-height: 1.4; + vertical-align: middle; + overflow-wrap: anywhere; + white-space: normal; +} + +.badge[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + min-height: 20px; + padding: 0 8px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-size: 11px; + font-weight: 600; + line-height: 1.4; + white-space: nowrap; + vertical-align: middle; +} + +.badge[data-tone=good][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.badge[data-tone=warn][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +.badge[data-tone=bad][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger); +} + +button.small[_ngcontent-%COMP%] { + display: inline-flex; + flex: none; + align-items: center; + justify-content: center; + gap: 6px; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + white-space: nowrap; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease), border-color 0.15s var(--%NS%ease), transform 0.1s var(--%NS%ease); +} + +button.small[_ngcontent-%COMP%]:hover:not(:disabled) { + background: var(--%NS%surface-3); + border-color: color-mix(in srgb, var(--%NS%text-3) 50%, var(--%NS%border-strong)); +} + +button.small[_ngcontent-%COMP%]:active:not(:disabled) { + transform: translateY(1px); +} + +button.small[_ngcontent-%COMP%]:disabled { + opacity: 0.55; + cursor: not-allowed; +} + +button.small.primary[_ngcontent-%COMP%] { + border-color: var(--%NS%accent); + background: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +button.small.primary[_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: var(--%NS%accent-hover); + background: var(--%NS%accent-hover); +} + +button.small[_ngcontent-%COMP%]:focus-visible, +.table-scroll[_ngcontent-%COMP%]:focus-visible, +input[type=checkbox][_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +input.field[_ngcontent-%COMP%], +select[_ngcontent-%COMP%] { + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background-color: var(--%NS%bg); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + transition: border-color 0.15s var(--%NS%ease), box-shadow 0.15s var(--%NS%ease); +} + +input.field[_ngcontent-%COMP%] { + text-overflow: ellipsis; +} + +input.field[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +input.field[_ngcontent-%COMP%]:hover:not(:focus), +select[_ngcontent-%COMP%]:hover:not(:focus) { + border-color: color-mix(in srgb, var(--%NS%text-3) 50%, var(--%NS%border-strong)); +} + +input.field[_ngcontent-%COMP%]:focus-visible, +select[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.note[_ngcontent-%COMP%] { + margin: 0; + padding: 10px 14px; + border: 1px solid color-mix(in srgb, var(--%NS%warn) 30%, transparent); + border-radius: var(--%NS%radius-sm); + background: color-mix(in srgb, var(--%NS%warn) 10%, transparent); + color: var(--%NS%text); + font-size: 13px; + line-height: 1.5; +} + +.empty[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + justify-items: center; + margin: 0; + padding: 40px 24px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + text-align: center; + animation: enter 0.35s var(--%NS%ease) both; +} + +.empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 0; + max-width: 480px; + line-height: 1.6; +} + +.empty-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.empty[_ngcontent-%COMP%] .small[_ngcontent-%COMP%] { + margin-top: 8px; +} + +.facts[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + align-items: baseline; + gap: 8px 24px; + margin: 0; + padding: 14px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + font-size: 13px; +} + +.facts[_ngcontent-%COMP%]:empty { + display: none; +} + +dt[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +dd[_ngcontent-%COMP%] { + min-width: 0; + margin: 0; + color: var(--%NS%text); + overflow-wrap: anywhere; + font-variant-numeric: tabular-nums; +} + +.table-scroll[_ngcontent-%COMP%] { + overflow-x: auto; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + box-shadow: var(--%NS%shadow); + animation: enter 0.35s var(--%NS%ease) both; +} + +table[_ngcontent-%COMP%] { + width: 100%; + border-collapse: collapse; + font-size: 13px; + font-variant-numeric: tabular-nums; +} + +th[_ngcontent-%COMP%] { + padding: 10px 14px; + border-bottom: 1px solid var(--%NS%border); + background: color-mix(in srgb, var(--%NS%surface-2) 60%, var(--%NS%surface)); + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.06em; + text-align: left; + text-transform: uppercase; + white-space: nowrap; +} + +td[_ngcontent-%COMP%] { + padding: 10px 14px; + border-bottom: 1px solid var(--%NS%border); + color: var(--%NS%text); + line-height: 1.5; + vertical-align: top; + transition: background-color 0.15s var(--%NS%ease); +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] { + border-bottom: none; +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] { + background: var(--%NS%surface-2); +} + +.path[_ngcontent-%COMP%] { + color: var(--%NS%accent); + font-family: var(--%NS%font-mono); + font-size: 12.5px; + white-space: nowrap; +} + +h3[_ngcontent-%COMP%] { + margin: 8px 0 -4px; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +@media (max-width: 480px) { + .facts[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + gap: 2px; + } + .facts[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] + dt[_ngcontent-%COMP%] { + margin-top: 8px; + } +} +[_nghost-%COMP%] { + display: grid; + gap: 12px; + min-width: 0; +} + +.test[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; + align-items: center; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + box-shadow: var(--%NS%shadow); + color: var(--%NS%text); + font-size: 13px; +} + +.test[_ngcontent-%COMP%] label[_ngcontent-%COMP%] { + margin-right: 4px; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + white-space: nowrap; +} + +.test[_ngcontent-%COMP%] input[_ngcontent-%COMP%] { + flex: 1 1 200px; + min-width: 0; + font-family: var(--%NS%font-mono); + font-size: 12.5px; +} + +.result[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px 8px; + align-items: center; + padding: 10px 14px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-size: 13px; + line-height: 1.5; + animation: enter 0.35s var(--%NS%ease) both; +} + +.result[data-matched=true][_ngcontent-%COMP%] { + box-shadow: inset 3px 0 0 var(--%NS%ok); +} + +.result[data-matched=false][_ngcontent-%COMP%] { + box-shadow: inset 3px 0 0 var(--%NS%danger); +} + +.result[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%] { + flex-basis: 100%; + font-size: 12px; +} + +.result[_ngcontent-%COMP%] .for[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +.result[_ngcontent-%COMP%] .for[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + color: var(--%NS%text); + overflow-wrap: anywhere; +} + +.chain[_ngcontent-%COMP%] { + color: var(--%NS%accent); +} + +.message[_ngcontent-%COMP%] { + margin: 0; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-size: 13px; + overflow-wrap: anywhere; +} + +.filter-row[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px 16px; + align-items: center; +} + +.filter[_ngcontent-%COMP%] { + flex: 0 1 320px; + min-width: 0; +} + +.summary[_ngcontent-%COMP%] { + flex: 1 1 240px; + margin: 0; + font-size: 12px; + font-variant-numeric: tabular-nums; +} + +td[_ngcontent-%COMP%] { + vertical-align: middle; +} + +.redirect[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +.src[_ngcontent-%COMP%] { + display: block; + margin-top: 2px; + color: var(--%NS%text-2); + font-family: var(--%NS%font-mono); + font-size: 11.5px; + overflow-wrap: anywhere; +} + +tr.active[_ngcontent-%COMP%] td[_ngcontent-%COMP%] { + background: var(--%NS%accent-soft); + color: var(--%NS%text-strong); +} + +tr.active[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] { + background: color-mix(in srgb, var(--%NS%accent) 16%, transparent); +} + +tr.active[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child { + box-shadow: inset 3px 0 0 var(--%NS%accent); +} + +.actions[_ngcontent-%COMP%] { + width: 1%; + padding-top: 6px; + padding-bottom: 6px; + white-space: nowrap; +} + +.actions-inner[_ngcontent-%COMP%] { + display: flex; + gap: 6px; + align-items: center; + justify-content: flex-end; +} + +.param[_ngcontent-%COMP%] { + width: 96px; + font-family: var(--%NS%font-mono); + font-size: 12px; +} + +.param[aria-invalid=true][_ngcontent-%COMP%] { + border-color: var(--%NS%danger); +} + +.row-result[_ngcontent-%COMP%] td[_ngcontent-%COMP%] { + padding-top: 0; + background: transparent; +} + +.row-result[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text); + font-size: 13px; + overflow-wrap: anywhere; +} + +@media (max-width: 480px) { + .filter[_ngcontent-%COMP%] { + flex-basis: 100%; + } +}`]})},TM=(e,t)=>t.id;function EM(e,t){if(e&1){let e=W();z(0,`div`,4)(1,`span`,5),J(2,`Page`),B(),z(3,`app-select`,6),G(`valueChange`,function(t){return O(e),k(K(2).pageId.set(t))}),B()()}if(e&2){let e=K(),t=K();M(3),R(`options`,t.pageOptions())(`value`,e.pageId)}}function DM(e,t){e&1&&P(0,EM,4,2,`div`,4),e&2&&F(K().pages().length>1?0:-1)}function OM(e,t){if(e&1){let e=W();z(0,`div`,1)(1,`p`,7),J(2,`Could not load the live router state.`),B(),z(3,`p`,8),J(4,` Check that the dev server with Pangular Inspector is still running, then retry. `),B(),z(5,`button`,9),G(`click`,function(){return O(e),k(K().retry())}),J(6,`Retry`),B()()}}function kM(e,t){e&1&&(z(0,`p`,2),J(1,`Loading the live router state…`),B())}function AM(e,t){if(e&1&&(z(0,`span`,17),J(1),B(),z(2,`span`,18),J(3),B()),e&2){let e=K(3);M(),Y(e.problems()),M(2),X(`, `,e.problems(),` problem navigations`)}}function jM(e,t){if(e&1){let e=W();z(0,`button`,16),G(`click`,function(){let t=O(e).$implicit;return k(K(2).selected.set(t.id))}),J(1),P(2,AM,4,2),B()}if(e&2){let e=t.$implicit,n=K(2);R(`id`,`router-tab-`+e.id),N(`aria-selected`,e.id===n.selected())(`aria-controls`,`router-panel-`+e.id)(`tabindex`,e.id===n.selected()?0:-1),M(),X(` `,e.label,` `),M(),F(e.id===`navigations`&&n.problems()>0?2:-1)}}function MM(e,t){if(e&1){let e=W();z(0,`app-route-current`,19),G(`showComponent`,function(t){return O(e),k(K(2).showComponent.emit(t))}),B()}if(e&2){let e=K(),t=K();R(`page`,e)(`rpc`,t.rpc())}}function NM(e,t){if(e&1&&V(0,`app-route-timeline`,13),e&2){let e=K(),t=K();R(`page`,e)(`rpc`,t.rpc())}}function PM(e,t){if(e&1&&V(0,`app-route-tree`,14),e&2){let e=K(),t=K();R(`page`,e)(`rpc`,t.rpc())(`sources`,t.sources())}}function FM(e,t){e&1&&V(0,`app-route-setup`,15),e&2&&R(`page`,K())}function IM(e,t){if(e&1&&V(0,`app-route-lint`,13),e&2){let e=K(),t=K();R(`page`,e)(`rpc`,t.rpc())}}function LM(e,t){if(e&1){let e=W();z(0,`div`,10),G(`keydown`,function(t){return O(e),k(K().onKey(t))}),I(1,jM,3,6,`button`,11,TM),B(),z(3,`div`,12),P(4,MM,1,2,`app-route-current`,13)(5,NM,1,2,`app-route-timeline`,13)(6,PM,1,3,`app-route-tree`,14)(7,FM,1,1,`app-route-setup`,15)(8,IM,1,2,`app-route-lint`,13),B()}if(e&2){let e,t=K();M(),L(t.tabs),M(2),R(`id`,`router-panel-`+t.selected()),N(`aria-labelledby`,`router-tab-`+t.selected()),M(),F((e=t.selected())===`current`?4:e===`navigations`?5:e===`routes`?6:e===`setup`?7:e===`lint`?8:-1)}}function RM(e,t){e&1&&(z(0,`div`,3)(1,`p`,7),J(2,`No page is reporting router state yet.`),B(),z(3,`p`,8),J(4,` Open the app in a browser. This view updates as soon as a page connects. `),B()())}var zM=[{id:`current`,label:`Current`},{id:`navigations`,label:`Navigations`},{id:`routes`,label:`Routes`},{id:`setup`,label:`Setup`},{id:`lint`,label:`Lint`}],BM=class e{rpc=$(null);sources=$([]);showComponent=Ov();tabs=zM;selected=j(`current`);pages=j([]);hostPageId=eE();loading=j(!0);failed=j(!1);pageId=Tv({source:this.pages,computation:(e,t)=>t?.value&&e.some(e=>e.pageId===t.value)?t.value:this.hostPageId?e.find(e=>e.pageId===this.hostPageId)?.pageId??null:e.find(e=>e.snapshot)?.pageId??e[0]?.pageId??null});unsubscribe=null;destroyRef=E(Cs);page=Q(()=>{let e=this.pages();return e.find(e=>e.pageId===this.pageId())??(this.hostPageId?null:e[0])??null});problems=Q(()=>(this.page()?.navigations??[]).filter(e=>!e.probe&&[`failed`,`cancelled`,`redirected`].includes(e.outcome)).length);constructor(){uc(()=>{let e=this.rpc();e&&this.load(e)}),this.destroyRef.onDestroy(()=>this.unsubscribe?.())}async load(e){this.loading.set(!0),this.failed.set(!1);try{let t=await e.scope(`pangular`).rpc.sharedState(`router`);if(this.destroyRef.destroyed)return;let n=e=>{this.pages.set(e?.pages??[])};n(t.value()),this.unsubscribe?.(),this.unsubscribe=t.on(`updated`,n)}catch{this.failed.set(!0)}finally{this.loading.set(!1)}}retry(){let e=this.rpc();e&&this.load(e)}pageOptions=Q(()=>this.pages().map(e=>({value:e.pageId,label:e.snapshot?.url??e.pageId,hint:e.pageId})));onKey(e){let t=this.tabs.map(e=>e.id),n=t.indexOf(this.selected()),r=n;if(e.key===`ArrowRight`)r=(n+1)%t.length;else if(e.key===`ArrowLeft`)r=(n-1+t.length)%t.length;else if(e.key===`Home`)r=0;else if(e.key===`End`)r=t.length-1;else return;e.preventDefault(),this.selected.set(t[r]);let i=e.currentTarget;queueMicrotask(()=>i.querySelector(`#router-tab-${t[r]}`)?.focus())}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-live-route`]],inputs:{rpc:[1,`rpc`],sources:[1,`sources`]},outputs:{showComponent:`showComponent`},decls:8,vars:2,consts:[[1,`section-head`],[`role`,`alert`,1,`empty`],[`role`,`status`,1,`muted`,`empty`],[1,`empty`],[1,`page-pick`],[`id`,`live-route-page-label`,1,`page-label`],[`labelledBy`,`live-route-page-label`,3,`valueChange`,`options`,`value`],[1,`empty-title`],[1,`muted`],[`type`,`button`,1,`retry`,3,`click`],[`role`,`tablist`,`aria-label`,`Router views`,1,`tabs`,3,`keydown`],[`type`,`button`,`role`,`tab`,3,`id`],[`role`,`tabpanel`,1,`panel`,3,`id`],[3,`page`,`rpc`],[3,`page`,`rpc`,`sources`],[3,`page`],[`type`,`button`,`role`,`tab`,3,`click`,`id`],[`aria-hidden`,`true`,1,`count`],[1,`visually-hidden`],[3,`showComponent`,`page`,`rpc`]],template:function(e,t){if(e&1&&(z(0,`div`,0)(1,`h2`),J(2,`Live router`),B(),P(3,DM,1,1),B(),P(4,OM,7,0,`div`,1)(5,kM,2,0,`p`,2)(6,LM,9,3)(7,RM,5,0,`div`,3)),e&2){let e,n;M(3),F((e=t.page())?3:-1,e),M(),F(t.failed()?4:t.loading()?5:(n=t.page())?6:7,n)}},dependencies:[bA,PA,JA,Gj,wM,AD],styles:[`[_nghost-%COMP%] { + display: grid; + gap: 16px; + min-width: 0; + margin-bottom: 32px; +} + +.section-head[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px 16px; + align-items: center; + justify-content: space-between; + min-height: 34px; +} + +h2[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; +} + +.empty[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + justify-items: center; + margin: 0; + padding: 40px 24px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + text-align: center; + animation: enter 0.35s var(--%NS%ease) both; +} + +.empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 0; + max-width: 480px; +} + +.empty-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.retry[_ngcontent-%COMP%] { + height: 34px; + margin-top: 8px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease); +} + +.retry[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-3); +} + +.retry[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.page-pick[_ngcontent-%COMP%] { + display: flex; + flex: 0 1 420px; + gap: 10px; + align-items: center; + min-width: 0; +} + +.page-label[_ngcontent-%COMP%] { + flex: none; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.page-pick[_ngcontent-%COMP%] app-select[_ngcontent-%COMP%] { + flex: 1 1 auto; + width: 100%; +} + +.tabs[_ngcontent-%COMP%] { + display: flex; + justify-self: start; + max-width: 100%; + gap: 2px; + padding: 3px; + overflow-x: auto; + border: 1px solid var(--%NS%border); + border-radius: 10px; + background: var(--%NS%bg); +} + +[role=tab][_ngcontent-%COMP%] { + display: inline-flex; + flex: none; + align-items: center; + gap: 6px; + height: 26px; + padding: 0 12px; + border: none; + border-radius: 7px; + background: transparent; + color: var(--%NS%text-2); + font: inherit; + font-size: 13px; + font-weight: 500; + white-space: nowrap; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease), color 0.15s var(--%NS%ease), box-shadow 0.15s var(--%NS%ease); +} + +[role=tab][_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-2); + color: var(--%NS%text); +} + +[role=tab][aria-selected=true][_ngcontent-%COMP%] { + background: var(--%NS%surface-3); + color: var(--%NS%text-strong); + box-shadow: inset 0 0 0 1px var(--%NS%border-strong); +} + +[role=tab][_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: -2px; +} + +.panel[_ngcontent-%COMP%] { + min-width: 0; + animation: enter 0.35s var(--%NS%ease) both; +} + +.count[_ngcontent-%COMP%] { + min-width: 18px; + padding: 0 6px; + border: 1px solid color-mix(in srgb, var(--%NS%danger) 30%, transparent); + border-radius: 99px; + background: color-mix(in srgb, var(--%NS%danger) 12%, var(--%NS%surface)); + color: var(--%NS%danger); + font-size: 11px; + font-weight: 600; + line-height: 16px; + text-align: center; + font-variant-numeric: tabular-nums; +}`]})};function VM(e,t){e&1&&J(0,` The Routes tab above shows what the router uses. `)}function HM(e,t){if(e&1){let e=W();z(0,`button`,13),G(`click`,function(){O(e);let t=K();return k(t.expanded.set(!t.expanded()))}),J(1),B()}if(e&2){let e=K();N(`aria-expanded`,e.expanded()),M(),X(` `,e.expanded()?`Hide table`:`Show table`,` `)}}function UM(e,t){e&1&&(J(0,` Run `),z(1,`code`),J(2,`pangular build`),B(),J(3,` again to rebuild the report. `))}function WM(e,t){e&1&&J(0,` Check that the dev server is running, then refresh. `)}function GM(e,t){if(e&1&&(z(0,`div`,11)(1,`p`,14),J(2,`Could not scan the route files.`),B(),z(3,`p`,15),P(4,UM,4,0)(5,WM,1,0),B()()),e&2){let e=K();M(4),F(e.staticReport()?4:5)}}function KM(e,t){e&1&&(z(0,`p`,12),J(1,`Scanning routes…`),B())}function qM(e,t){if(e&1){let e=W();z(0,`div`,16)(1,`p`,14),J(2,`No routes match the filter.`),B(),z(3,`p`,15),J(4,`Search by path, component, guard, title or file name.`),B(),z(5,`button`,10),G(`click`,function(){O(e);let t=K(2),n=n_(12);return t.filter.set(``),k(n.focus())}),J(6,` Clear filter `),B()()}}function JM(e,t){e&1&&(z(0,`div`,16)(1,`p`,14),J(2,`No routes found.`),B(),z(3,`p`,15),J(4,` Routes are read from `),z(5,`code`),J(6,`*.routes.ts`),B(),J(7,` and `),z(8,`code`),J(9,`*routing.module.ts`),B(),J(10,` files, the files they lazy load, plus Analog pages. Add one and refresh. `),B()())}function YM(e,t){e&1&&P(0,qM,7,0,`div`,16)(1,JM,11,0,`div`,16),e&2&&F(+!K().routes().length)}function XM(e,t){if(e&1&&(z(0,`span`,21),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.kind)}}function ZM(e,t){if(e&1&&(z(0,`span`,22)(1,`span`,25),J(2,`→`),B(),z(3,`span`,26),J(4,`redirects to`),B(),J(5),B()),e&2){let e=K().$implicit;M(5),X(` `,e.redirectTo)}}function QM(e,t){if(e&1&&(z(0,`code`,23),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.component)}}function $M(e,t){e&1&&(z(0,`span`,27),J(1,`–`),B(),z(2,`span`,26),J(3,`none`),B())}function eN(e,t){if(e&1&&(z(0,`span`,21),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function tN(e,t){e&1&&(z(0,`span`,27),J(1,`–`),B(),z(2,`span`,26),J(3,`none`),B())}function nN(e,t){if(e&1&&J(0),e&2){let e=K().$implicit;X(` `,e.title,` `)}}function rN(e,t){e&1&&(z(0,`span`,27),J(1,`–`),B(),z(2,`span`,26),J(3,`none`),B())}function iN(e,t){if(e&1&&(z(0,`tr`)(1,`td`,20),J(2),P(3,XM,2,1,`span`,21),B(),z(4,`td`),P(5,ZM,6,1,`span`,22)(6,QM,2,1,`code`,23)(7,$M,4,0),B(),z(8,`td`),I(9,eN,2,1,`span`,21,Cg,!1,tN,4,0),B(),z(12,`td`),P(13,nN,1,1)(14,rN,4,0),B(),z(15,`td`,24),J(16),B()()),e&2){let e=t.$implicit,n=K(2);M(2),X(` `,e.fullPath,` `),M(),F(e.kind===`page`?-1:3),M(2),F(e.redirectTo===void 0?e.component?6:7:5),M(4),L(n.checks(e)),M(4),F(e.title?13:14),M(3),Y(n.location(e))}}function aN(e,t){if(e&1&&(z(0,`p`,17),J(1),B(),z(2,`div`,18)(3,`table`)(4,`thead`)(5,`tr`)(6,`th`,19),J(7,`Path`),B(),z(8,`th`,19),J(9,`Component / Target`),B(),z(10,`th`,19),J(11,`Guards and resolvers`),B(),z(12,`th`,19),J(13,`Title`),B(),z(14,`th`,19),J(15,`Declared in`),B()()(),z(16,`tbody`),I(17,iN,17,6,`tr`,null,Cg),B()()()),e&2){let e=K();M(),Y_(` `,e.filtered().length,` of `,e.routes().length,` route entries, `,e.navigable(),` navigable `),M(16),L(e.filtered())}}var oN=class e{rpc=$(null);showComponent=Ov();staticReport=Q(()=>oE(this.rpc()));routes=j([]);filter=j(``);loading=j(!1);error=j(!1);live=Rv(BM);liveHasConfig=Q(()=>!!this.live()?.page()?.config);expanded=Tv(()=>!this.liveHasConfig());navigable=Q(()=>this.filtered().filter(e=>e.kind===`page`).length);filtered=Q(()=>{let e=this.filter().toLowerCase().trim(),t=this.routes();return e?t.filter(t=>t.fullPath.toLowerCase().includes(e)||t.component&&t.component.toLowerCase().includes(e)||t.redirectTo&&t.redirectTo.toLowerCase().includes(e)||t.title&&t.title.toLowerCase().includes(e)||this.checks(t).some(t=>t.toLowerCase().includes(e))||t.file.toLowerCase().includes(e)):t});constructor(){uc(()=>{this.rpc()&&this.refresh()})}checks(e){return[...Object.entries(e.guards??{}).flatMap(([e,t])=>t.map(t=>`${e} ${t}`)),...(e.resolvers??[]).map(e=>`resolve ${e}`)]}location(e){return Mk(e)}onFilterInput(e){let t=e.target;this.filter.set(t?.value??``)}async refresh(){let e=this.rpc();if(e){this.loading.set(!0),this.error.set(!1);try{let t=await e.scope(`pangular`).rpc.call(`get-routes`);this.routes.set(t)}catch{this.error.set(!0)}finally{this.loading.set(!1)}}}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-route-inspector`]],viewQuery:function(e,t){e&1&&e_(t.live,BM,5),e&2&&t_()},inputs:{rpc:[1,`rpc`]},outputs:{showComponent:`showComponent`},decls:19,vars:9,consts:[[`filterInput`,``],[3,`showComponent`,`rpc`,`sources`],[`aria-labelledby`,`config-heading`,1,`config`],[1,`section-head`],[`id`,`config-heading`],[1,`muted`,`hint`],[`type`,`button`,`aria-controls`,`config-body`,1,`small`,`toggle`],[`id`,`config-body`,1,`config-body`,3,`hidden`],[1,`toolbar`],[`type`,`search`,`aria-label`,`Filter source routes`,`placeholder`,`Filter routes…`,1,`field`,3,`input`,`keydown.escape`,`value`],[`type`,`button`,1,`small`,3,`click`],[`role`,`alert`,1,`empty`],[`role`,`status`,1,`muted`,`empty`],[`type`,`button`,`aria-controls`,`config-body`,1,`small`,`toggle`,3,`click`],[1,`empty-title`],[1,`muted`],[1,`empty`],[1,`muted`,`count`],[`role`,`region`,`aria-label`,`Source route config table`,`tabindex`,`0`,1,`table-scroll`],[`scope`,`col`],[1,`path`],[1,`tag`],[1,`redirect`],[1,`component`],[1,`file`],[`aria-hidden`,`true`],[1,`visually-hidden`],[`aria-hidden`,`true`,1,`nil`]],template:function(e,t){e&1&&(z(0,`app-live-route`,1),G(`showComponent`,function(e){return t.showComponent.emit(e)}),B(),z(1,`section`,2)(2,`div`,3)(3,`h2`,4),J(4,`Source route config`),B(),z(5,`span`,5),J(6,` Read from your source files. `),P(7,VM,1,0),B(),P(8,HM,2,2,`button`,6),B(),z(9,`div`,7)(10,`div`,8)(11,`input`,9,0),G(`input`,function(e){return t.onFilterInput(e)})(`keydown.escape`,function(){return t.filter.set(``)}),B(),z(13,`button`,10),G(`click`,function(){return t.refresh()}),J(14),B()(),P(15,GM,6,1,`div`,11)(16,KM,2,0,`p`,12)(17,YM,2,1)(18,aN,19,3),B()()),e&2&&(R(`rpc`,t.rpc())(`sources`,t.routes()),M(7),F(t.liveHasConfig()?7:-1),M(),F(t.liveHasConfig()?8:-1),M(),R(`hidden`,!t.expanded()),M(2),R(`value`,t.filter()),M(2),N(`aria-busy`,t.loading()),M(),X(` `,t.loading()?`Scanning…`:`Refresh`,` `),M(),F(t.error()?15:t.loading()&&t.routes().length===0?16:t.filtered().length===0?17:18))},dependencies:[BM],styles:[`.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; +} + +.nil[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12.5px; + color: var(--%NS%text); + overflow-wrap: anywhere; +} + +.tag[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + max-width: 100%; + min-height: 20px; + margin: 2px 4px 2px 0; + padding: 0 8px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 11.5px; + line-height: 1.4; + vertical-align: middle; + overflow-wrap: anywhere; + white-space: normal; +} + +.badge[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + min-height: 20px; + padding: 0 8px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-size: 11px; + font-weight: 600; + line-height: 1.4; + white-space: nowrap; + vertical-align: middle; +} + +.badge[data-tone=good][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.badge[data-tone=warn][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +.badge[data-tone=bad][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger); +} + +button.small[_ngcontent-%COMP%] { + display: inline-flex; + flex: none; + align-items: center; + justify-content: center; + gap: 6px; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + white-space: nowrap; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease), border-color 0.15s var(--%NS%ease), transform 0.1s var(--%NS%ease); +} + +button.small[_ngcontent-%COMP%]:hover:not(:disabled) { + background: var(--%NS%surface-3); + border-color: color-mix(in srgb, var(--%NS%text-3) 50%, var(--%NS%border-strong)); +} + +button.small[_ngcontent-%COMP%]:active:not(:disabled) { + transform: translateY(1px); +} + +button.small[_ngcontent-%COMP%]:disabled { + opacity: 0.55; + cursor: not-allowed; +} + +button.small.primary[_ngcontent-%COMP%] { + border-color: var(--%NS%accent); + background: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +button.small.primary[_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: var(--%NS%accent-hover); + background: var(--%NS%accent-hover); +} + +button.small[_ngcontent-%COMP%]:focus-visible, +.table-scroll[_ngcontent-%COMP%]:focus-visible, +input[type=checkbox][_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +input.field[_ngcontent-%COMP%], +select[_ngcontent-%COMP%] { + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background-color: var(--%NS%bg); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + transition: border-color 0.15s var(--%NS%ease), box-shadow 0.15s var(--%NS%ease); +} + +input.field[_ngcontent-%COMP%] { + text-overflow: ellipsis; +} + +input.field[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +input.field[_ngcontent-%COMP%]:hover:not(:focus), +select[_ngcontent-%COMP%]:hover:not(:focus) { + border-color: color-mix(in srgb, var(--%NS%text-3) 50%, var(--%NS%border-strong)); +} + +input.field[_ngcontent-%COMP%]:focus-visible, +select[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.note[_ngcontent-%COMP%] { + margin: 0; + padding: 10px 14px; + border: 1px solid color-mix(in srgb, var(--%NS%warn) 30%, transparent); + border-radius: var(--%NS%radius-sm); + background: color-mix(in srgb, var(--%NS%warn) 10%, transparent); + color: var(--%NS%text); + font-size: 13px; + line-height: 1.5; +} + +.empty[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + justify-items: center; + margin: 0; + padding: 40px 24px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + text-align: center; + animation: enter 0.35s var(--%NS%ease) both; +} + +.empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 0; + max-width: 480px; + line-height: 1.6; +} + +.empty-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.empty[_ngcontent-%COMP%] .small[_ngcontent-%COMP%] { + margin-top: 8px; +} + +.facts[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + align-items: baseline; + gap: 8px 24px; + margin: 0; + padding: 14px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + font-size: 13px; +} + +.facts[_ngcontent-%COMP%]:empty { + display: none; +} + +dt[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +dd[_ngcontent-%COMP%] { + min-width: 0; + margin: 0; + color: var(--%NS%text); + overflow-wrap: anywhere; + font-variant-numeric: tabular-nums; +} + +.table-scroll[_ngcontent-%COMP%] { + overflow-x: auto; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + box-shadow: var(--%NS%shadow); + animation: enter 0.35s var(--%NS%ease) both; +} + +table[_ngcontent-%COMP%] { + width: 100%; + border-collapse: collapse; + font-size: 13px; + font-variant-numeric: tabular-nums; +} + +th[_ngcontent-%COMP%] { + padding: 10px 14px; + border-bottom: 1px solid var(--%NS%border); + background: color-mix(in srgb, var(--%NS%surface-2) 60%, var(--%NS%surface)); + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.06em; + text-align: left; + text-transform: uppercase; + white-space: nowrap; +} + +td[_ngcontent-%COMP%] { + padding: 10px 14px; + border-bottom: 1px solid var(--%NS%border); + color: var(--%NS%text); + line-height: 1.5; + vertical-align: top; + transition: background-color 0.15s var(--%NS%ease); +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] { + border-bottom: none; +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] { + background: var(--%NS%surface-2); +} + +.path[_ngcontent-%COMP%] { + color: var(--%NS%accent); + font-family: var(--%NS%font-mono); + font-size: 12.5px; + white-space: nowrap; +} + +h3[_ngcontent-%COMP%] { + margin: 8px 0 -4px; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +@media (max-width: 480px) { + .facts[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + gap: 2px; + } + .facts[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] + dt[_ngcontent-%COMP%] { + margin-top: 8px; + } +} +[_nghost-%COMP%] { + display: block; + min-width: 0; +} + +.config[_ngcontent-%COMP%] { + display: grid; + gap: 12px; + min-width: 0; +} + +.section-head[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px 12px; + align-items: baseline; +} + +h2[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.hint[_ngcontent-%COMP%], +.count[_ngcontent-%COMP%] { + margin: 0; + font-size: 12px; + font-variant-numeric: tabular-nums; +} + +.count[_ngcontent-%COMP%] { + margin-bottom: -4px; + padding: 0 4px; +} + +.config-body[_ngcontent-%COMP%] { + display: grid; + gap: 12px; + min-width: 0; +} + +.config-body[hidden][_ngcontent-%COMP%] { + display: none; +} + +.toggle[_ngcontent-%COMP%] { + margin-left: auto; +} + +.toolbar[_ngcontent-%COMP%] { + display: flex; + gap: 8px; + align-items: center; +} + +.toolbar[_ngcontent-%COMP%] .field[_ngcontent-%COMP%] { + flex: 1; + min-width: 0; +} + +.component[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); +} + +.redirect[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-family: var(--%NS%font-mono); + font-size: 12.5px; + overflow-wrap: anywhere; +} + +.file[_ngcontent-%COMP%] { + min-width: 160px; + color: var(--%NS%text-2); + font-family: var(--%NS%font-mono); + font-size: 12px; + overflow-wrap: anywhere; +}`]})},sN=[`filterInput`],cN=e=>({id:e,label:`Status history`}),lN=e=>({id:e,label:`Value history`}),uN=(e,t)=>t.kind,dN=(e,t)=>t.name+t.file+t.line,fN=(e,t)=>t.epoch,pN=(e,t)=>t.id;function mN(e,t){if(e&1){let e=W();z(0,`div`,4)(1,`span`,14),J(2,`Page`),B(),z(3,`app-select`,15),G(`valueChange`,function(t){return O(e),k(K().selectPage(t))}),B()()}if(e&2){let e=K();M(3),R(`options`,e.pageOptions())(`value`,e.shownPageId())}}function hN(e,t){if(e&1){let e=W();z(0,`div`,5)(1,`span`,16),J(2,`Graph of`),B(),z(3,`app-select`,17),G(`valueChange`,function(t){return O(e),k(K().pickComponent(t))}),B()()}if(e&2){let e=K();M(3),R(`options`,e.componentOptions())(`value`,e.pickerValue())}}function gN(e,t){if(e&1&&(z(0,`span`,20),J(1),B()),e&2){let e=K(2);M(),Y(e.sourceNote(e.graph().source))}}function _N(e,t){if(e&1&&(z(0,`p`,7)(1,`span`,18),J(2),B(),z(3,`span`,19),J(4),B(),P(5,gN,2,1,`span`,20),B()),e&2){let e=t,n=K();M(2),Y(e.name),M(2),Y(e.path),M(),F(n.graph().source?5:-1)}}function vN(e,t){if(e&1&&(z(0,`p`,7)(1,`span`,18),J(2),B(),z(3,`span`,20),J(4,`environment injector`),B()()),e&2){let e=K();M(2),Y(e.injectorLabel(t))}}function yN(e,t){e&1&&(z(0,`p`,8),J(1,` The picked component or injector is gone or has no signal graph, so this shows another one. `),B())}function bN(e,t){e&1&&J(0,` The effects registered on this injector and the signals they read. A signal that no effect reads is not part of the graph. Pick a kind to filter. `)}function xN(e,t){e&1&&J(0,` The live signal graph of one component. Only signals that its template or an effect has read appear here; a signal nothing has read yet is not part of the graph. Pick a kind to filter. `)}function SN(e,t){e&1&&J(0,` Every signal, computed and effect found in your source. Pick a kind to filter. `)}function CN(e,t){e&1&&(z(0,`p`,8),J(1,` The live signal graph needs Angular 20.1 or later. This list comes from a source scan. `),B())}function wN(e,t){e&1&&(z(0,`p`,8),J(1,` The signal write hook did not load. Value history shows sampled values only, with no exact set entries. `),B())}function TN(e,t){if(e&1&&(z(0,`p`,8),J(1),B()),e&2){let e=K();M(),Z(` Showing `,e.graph().nodes.length,` of `,t,` signals. The rest and their edges are left out. `)}}function EN(e,t){if(e&1){let e=W();z(0,`button`,21),G(`click`,function(){let t=O(e).$implicit,n=K(2);return k(n.kind.set(n.kind()===t.kind?null:t.kind))}),V(1,`span`,24),z(2,`span`,25),J(3),B(),z(4,`span`,22),J(5),B()()}if(e&2){let e=t.$implicit,n=K(2);q(`active`,n.kind()===e.kind),N(`aria-pressed`,n.kind()===e.kind),M(),C_(`background`,n.kindColor(e.kind)),M(2),Y(e.kind),M(2),Y(e.count)}}function DN(e,t){if(e&1){let e=W();z(0,`div`,10)(1,`button`,21),G(`click`,function(){return O(e),k(K().kind.set(null))}),J(2,` All `),z(3,`span`,22),J(4),B()(),I(5,EN,6,7,`button`,23,uN),B()}if(e&2){let e=K();M(),q(`active`,!e.kind()),N(`aria-pressed`,!e.kind()),M(3),Y(e.kindTotal()),M(),L(e.kindCounts())}}function ON(e,t){e&1&&(z(0,`div`,11),V(1,`span`,26),z(2,`p`,27),J(3,`Scanning source for signals…`),B()())}function kN(e,t){e&1&&(z(0,`div`,12)(1,`p`,27),J(2,`No signals found.`),B(),z(3,`p`,28),J(4,` No `),z(5,`code`),J(6,`signal()`),B(),J(7,`, `),z(8,`code`),J(9,`computed()`),B(),J(10,` or `),z(11,`code`),J(12,`effect()`),B(),J(13,` calls were found in your source. To see the live graph, run Angular 20.1 or later with the overlay connected and select a component. `),B()())}function AN(e,t){if(e&1&&(z(0,`span`,38),J(1,`·`),B(),z(2,`span`),J(3),B()),e&2){let e=K().$implicit;M(3),X(`in <`,e.component,`>`)}}function jN(e,t){if(e&1&&(z(0,`div`,31)(1,`div`,33)(2,`span`,34),J(3),B(),z(4,`span`,35),J(5),B()(),z(6,`div`,36)(7,`span`,37),J(8),B(),P(9,AN,4,1),B()()),e&2){let e=t.$implicit,n=K(2);M(2),C_(`background`,n.kindColor(e.kind)),M(),Y(e.kind),M(2),Y(e.name),M(2),R(`title`,e.file+`:`+e.line),M(),Z(``,e.file,`:`,e.line),M(),F(e.component?9:-1)}}function MN(e,t){if(e&1){let e=W();z(0,`div`,32)(1,`p`,27),J(2,`No signals match.`),B(),z(3,`p`,28),J(4,`Try a different name or kind.`),B(),z(5,`button`,39),G(`click`,function(){return O(e),k(K(2).clearFilters())}),J(6,`Clear filters`),B()()}}function NN(e,t){if(e&1&&(z(0,`p`,29),J(1,`Signals from source scan (static analysis):`),B(),z(2,`div`,30),I(3,jN,10,8,`div`,31,dN,!1,MN,7,0,`div`,32),B()),e&2){let e=K();M(3),L(e.filteredSourceSignals())}}function PN(e,t){if(e&1&&(z(0,`span`,45),J(1),B()),e&2){let e=K().$implicit;M(),X(``,e.missed,` earlier not captured`)}}function FN(e,t){if(e&1&&(z(0,`li`)(1,`span`,43)(2,`time`),J(3),dv(4,`date`),B(),z(5,`span`,44),J(6),B(),z(7,`span`),J(8),B(),P(9,PN,2,1,`span`,45),B(),z(10,`pre`),J(11),dv(12,`json`),B()()),e&2){let e=t.$implicit,n=K(3);M(3),Y(mv(4,7,e.at,`HH:mm:ss.SSS`)),M(2),w_(`source-`+e.source),M(),Y(n.sourceLabel(e.source)),M(2),X(`epoch `,e.epoch),M(),F(e.missed?9:-1),M(2),Y(pv(12,10,e.value))}}function IN(e,t){if(e&1&&(z(0,`h4`,40),J(1),B(),z(2,`p`,41),J(3),B(),z(4,`ol`,42),I(5,FN,13,12,`li`,null,fN),B()),e&2){let e=K(),t=e.id,n=e.label,r=K();R(`id`,`history-heading-`+t),M(),Y(n),M(2),Y(r.historySummary(t)),M(),N(`aria-labelledby`,`history-heading-`+t),M(),L(r.selectedHistory())}}function LN(e,t){e&1&&P(0,IN,7,4),e&2&&F(K().selectedHistory().length?0:-1)}function RN(e,t){if(e&1&&(z(0,`span`,54),J(1),B()),e&2){let e=K().$implicit;w_(`tone-`+K(2).statusTone(e.status)),M(),Y(e.status)}}function zN(e,t){if(e&1&&(z(0,`span`,50),J(1),B()),e&2){let e=t;M(),Z(``,e,` `,e===1?`change`:`changes`)}}function BN(e,t){if(e&1&&(z(0,`span`,52),J(1),dv(2,`json`),B()),e&2){let e=K().$implicit;M(),Y(pv(2,1,e.error))}}function VN(e,t){if(e&1&&(z(0,`span`,52),J(1),dv(2,`json`),B()),e&2){let e=K().$implicit;M(),Y(pv(2,1,e.value))}}function HN(e,t){e&1&&(z(0,`p`,28),J(1,` This resource has no name. Pass `),z(2,`code`),J(3,`debugName`),B(),J(4,` to `),z(5,`code`),J(6,`resource()`),B(),J(7,` or `),z(8,`code`),J(9,`httpResource()`),B(),J(10,` to name it here. `),B())}function UN(e,t){if(e&1&&(z(0,`dt`),J(1,`Loading`),B(),z(2,`dd`),J(3),B()),e&2){let e=K(2).$implicit;M(3),Y(e.isLoading?`yes`:`no`)}}function WN(e,t){if(e&1&&(z(0,`dt`),J(1,`HTTP status`),B(),z(2,`dd`),J(3),B()),e&2){let e=K(2).$implicit;M(3),Y(e.statusCode)}}function GN(e,t){if(e&1&&(z(0,`dt`),J(1,`Params`),B(),z(2,`dd`)(3,`pre`,58),J(4),dv(5,`json`),B()()),e&2){let e=K(2).$implicit;M(3),N(`aria-label`,`Params of `+e.name),M(),Y(pv(5,2,e.params))}}function KN(e,t){if(e&1&&(z(0,`dt`),J(1,`Value`),B(),z(2,`dd`)(3,`pre`,58),J(4),dv(5,`json`),B()()),e&2){let e=K(2).$implicit;M(3),N(`aria-label`,`Value of `+e.name),M(),Y(pv(5,2,e.value))}}function qN(e,t){if(e&1&&(z(0,`dt`),J(1,`Error`),B(),z(2,`dd`)(3,`pre`,58),J(4),dv(5,`json`),B()()),e&2){let e=K(2).$implicit;M(3),N(`aria-label`,`Error of `+e.name),M(),Y(pv(5,2,e.error))}}function JN(e,t){if(e&1&&(z(0,`li`)(1,`span`,59),J(2),B(),z(3,`span`,60),J(4),B()()),e&2){let e=t.$implicit,n=K(5);M(),C_(`background`,n.kindColor(e.kind)),M(),Y(e.kind),M(2),Y(e.label??e.id)}}function YN(e,t){if(e&1&&(z(0,`ul`,40),I(1,JN,5,4,`li`,null,pN),B()),e&2){let e=K(2).$implicit,t=K(2);R(`id`,`resource-internals-`+e.id),M(),L(t.internalsOf(e))}}function XN(e,t){if(e&1){let e=W();z(0,`div`,53)(1,`h3`,55),J(2),B(),P(3,HN,11,0,`p`,28),z(4,`dl`)(5,`dt`),J(6,`Status`),B(),z(7,`dd`),J(8),B(),P(9,UN,4,1),P(10,WN,4,1),P(11,GN,6,4),P(12,KN,6,4),P(13,qN,6,4),B(),zg(14,56),z(15,`button`,57),G(`click`,function(){O(e);let t=K(3);return k(t.showInternals.set(!t.showInternals()))}),J(16),B(),P(17,YN,3,1,`ul`,40),B()}if(e&2){let e=K().$implicit,t=K(2),n=n_(22);R(`id`,`signal-detail-`+e.id),M(2),Y(e.name),M(),F(e.named?-1:3),M(5),Y(e.status??`unknown`),M(),F(e.isLoading===void 0?-1:9),M(),F(e.statusCode===void 0?-1:10),M(),F(e.params===void 0?-1:11),M(),F(e.value===void 0?-1:12),M(),F(e.error===void 0?-1:13),M(),R(`ngTemplateOutlet`,n)(`ngTemplateOutletContext`,sv(16,cN,e.id)),M(),N(`aria-expanded`,t.showInternals())(`aria-controls`,`resource-internals-`+e.id),M(),Z(` `,t.showInternals()?`Hide`:`Show`,` internal signals (`,e.nodeIds.length,`) `),M(),F(t.showInternals()?17:-1)}}function ZN(e,t){if(e&1){let e=W();z(0,`li`)(1,`button`,48),G(`click`,function(){let t=O(e).$implicit;return k(K(2).select(t.id))}),z(2,`span`,33)(3,`span`,34),J(4,`resource`),B(),z(5,`span`,35),J(6),B(),P(7,RN,2,3,`span`,49),P(8,zN,2,2,`span`,50),V(9,`span`,51),B(),P(10,BN,3,3,`span`,52)(11,VN,3,3,`span`,52),B(),P(12,XN,18,18,`div`,53),B()}if(e&2){let e,n=t.$implicit,r=K(2);M(),q(`selected`,r.selectedId()===n.id),N(`aria-expanded`,r.selectedId()===n.id)(`aria-controls`,`signal-detail-`+n.id)(`data-card`,n.id),M(2),C_(`background`,r.kindColor(`resource`)),M(3),Y(n.name),M(),F(n.status?7:-1),M(),F((e=n.changes)?8:-1,e),M(2),F(n.error===void 0?n.value===void 0?-1:11:10),M(2),F(r.selectedId()===n.id?12:-1)}}function QN(e,t){if(e&1&&(z(0,`h2`,46),J(1,`Resources`),B(),z(2,`ul`,47),I(3,ZN,13,12,`li`,null,pN),B()),e&2){let e=K();M(3),L(e.filteredResources())}}function $N(e,t){if(e&1&&(z(0,`span`,50),J(1),B()),e&2){let e=t;M(),Z(``,e,` `,e===1?`change`:`changes`)}}function eP(e,t){if(e&1&&(z(0,`span`,52),J(1),dv(2,`json`),B()),e&2){let e=K().$implicit;M(),Y(pv(2,1,e.value))}}function tP(e,t){if(e&1&&(z(0,`span`,38),J(1,`·`),B(),z(2,`span`),J(3),B()),e&2){let e=K().$implicit,t=K(2);M(3),X(`Deps: `,t.getDependencies(e).length)}}function nP(e,t){if(e&1&&(z(0,`span`,38),J(1,`·`),B(),z(2,`span`),J(3),B()),e&2){let e=K().$implicit,t=K(2);M(3),X(`Consumers: `,t.getConsumers(e).length)}}function rP(e,t){if(e&1&&(z(0,`dt`),J(1,`Value`),B(),z(2,`dd`)(3,`pre`,58),J(4),dv(5,`json`),B()()),e&2){let e=K(4);M(3),N(`aria-label`,`Value of `+(e.selectedNode().label??`signal`)),M(),Y(pv(5,2,e.selectedNode().value))}}function iP(e,t){if(e&1){let e=W();z(0,`li`)(1,`button`,63),G(`click`,function(){let t=O(e).$implicit;return k(K(5).jumpTo(t))}),z(2,`span`,59),J(3),B(),z(4,`span`,60),J(5),B()()()}if(e&2){let e=t.$implicit,n=K(5);M(),N(`aria-label`,`Go to `+e.kind+` `+(e.label??e.id)),M(),C_(`background`,n.kindColor(e.kind)),M(),Y(e.kind),M(2),Y(e.label??e.id)}}function aP(e,t){if(e&1&&(z(0,`h4`),J(1,`Dependencies (producers)`),B(),z(2,`ul`),I(3,iP,6,5,`li`,null,pN),B()),e&2){let e=K(4);M(3),L(e.getDependencies(e.selectedNode()))}}function oP(e,t){if(e&1){let e=W();z(0,`li`)(1,`button`,63),G(`click`,function(){let t=O(e).$implicit;return k(K(5).jumpTo(t))}),z(2,`span`,59),J(3),B(),z(4,`span`,60),J(5),B()()()}if(e&2){let e=t.$implicit,n=K(5);M(),N(`aria-label`,`Go to `+e.kind+` `+(e.label??e.id)),M(),C_(`background`,n.kindColor(e.kind)),M(),Y(e.kind),M(2),Y(e.label??e.id)}}function sP(e,t){if(e&1&&(z(0,`h4`),J(1,`Consumers`),B(),z(2,`ul`),I(3,oP,6,5,`li`,null,pN),B()),e&2){let e=K(4);M(3),L(e.getConsumers(e.selectedNode()))}}function cP(e,t){if(e&1&&(z(0,`div`,53)(1,`h3`,55),J(2),B(),z(3,`dl`)(4,`dt`),J(5,`Kind`),B(),z(6,`dd`),J(7),B(),z(8,`dt`),J(9,`Epoch`),B(),z(10,`dd`),J(11),B(),P(12,rP,6,4),B(),P(13,aP,5,0),P(14,sP,5,0),zg(15,56),B()),e&2){let e=K().$implicit,t=K(2),n=n_(22);R(`id`,`signal-detail-`+e.id),M(2),Y(t.selectedNode().label??t.selectedNode().id),M(5),Y(t.selectedNode().kind),M(4),Y(t.selectedNode().epoch),M(),F(t.selectedNode().value===void 0?-1:12),M(),F(t.getDependencies(t.selectedNode()).length?13:-1),M(),F(t.getConsumers(t.selectedNode()).length?14:-1),M(),R(`ngTemplateOutlet`,n)(`ngTemplateOutletContext`,sv(9,lN,e.id))}}function lP(e,t){if(e&1){let e=W();z(0,`li`)(1,`button`,48),G(`click`,function(){let t=O(e).$implicit;return k(K(2).select(t.id))}),z(2,`span`,33)(3,`span`,34),J(4),B(),z(5,`span`,35),J(6),B(),P(7,$N,2,2,`span`,50),V(8,`span`,51),B(),P(9,eP,3,3,`span`,52),z(10,`span`,36)(11,`span`),J(12),B(),P(13,tP,4,1),P(14,nP,4,1),B()(),P(15,cP,16,11,`div`,53),B()}if(e&2){let e,n=t.$implicit,r=K(2);M(),q(`selected`,r.selectedId()===n.id),N(`aria-expanded`,r.selectedId()===n.id)(`aria-controls`,`signal-detail-`+n.id)(`data-card`,n.id),M(2),C_(`background`,r.kindColor(n.kind)),M(),Y(n.kind),M(2),Y(n.label??`(unnamed)`),M(),F((e=r.changeCount(n.id))?7:-1,e),M(2),F(n.value===void 0?-1:9),M(3),X(`Epoch: `,n.epoch),M(),F(r.getDependencies(n).length?13:-1),M(),F(r.getConsumers(n).length?14:-1),M(),F(r.selectedId()===n.id&&r.selectedNode()?15:-1)}}function uP(e,t){if(e&1){let e=W();z(0,`button`,39),G(`click`,function(){return O(e),k(K(3).clearFilters())}),J(1,`Clear filters`),B()}}function dP(e,t){if(e&1&&(z(0,`li`,62)(1,`p`,27),J(2),B(),z(3,`p`,28),J(4),B(),P(5,uP,2,0,`button`,64),B()),e&2){let e=K(2);M(2),X(` `,e.hasAnySignals()?`No signals match.`:`No signals in this graph.`,` `),M(2),X(` `,e.hasAnySignals()?`Try a different name or kind.`:`Select a component that reads signals, or interact with the page to create some.`,` `),M(),F(e.hasAnySignals()?5:-1)}}function fP(e,t){if(e&1&&(z(0,`h2`,46),J(1,`Signals`),B(),z(2,`ul`,61),I(3,lP,16,15,`li`,null,pN,!1,dP,6,3,`li`,62),B()),e&2){let e=K();M(3),L(e.filteredNodes())}}var pP=`follow`,mP=`env:`,hP=50,gP={selected:`picked`,routed:`rendered by the router`,root:`first component with signals`},_P={write:`set`,sample:`sampled`,initial:`initial`},vP={resolved:`ok`,local:`ok`,loading:`warn`,reloading:`warn`,error:`danger`},yP={signal:`#facc15`,computed:`#60a5fa`,linkedSignal:`#34d399`,effect:`#fb923c`,template:`#94a3b8`,afterRenderEffectPhase:`#f472b6`,childSignalProp:`#fef08a`,"input (signal)":`#f59e0b`,"input.required (signal)":`#f59e0b`,"output (signal)":`#ec4899`,"model (signal)":`#14b8a6`,"model.required (signal)":`#14b8a6`,"viewChild (signal)":`#a3e635`,"viewChild.required (signal)":`#a3e635`,"viewChildren (signal)":`#a3e635`,"contentChild (signal)":`#fda4af`,"contentChild.required (signal)":`#fda4af`,"contentChildren (signal)":`#fda4af`,resource:`#06b6d4`,unknown:`#a1a1aa`},bP=class e{rpc=$(null);destroyRef=E(Cs);host=E(Ml);filterInput=Rv(`filterInput`);injector=E(xs);pageId=eE();cleanups=[];treePages=j({});graphState=j({graph:null,pages:{}});chosenPageId=j(null);announcement=j(``);graphPages=Q(()=>{let{graph:e,pages:t}=this.graphState();return Object.keys(t).length?t:e?{[e.pageId??``]:e}:{}});shownPageId=Tv({source:()=>({pages:this.graphPages(),newest:this.graphState().graph?.pageId??null,chosen:this.chosenPageId()}),computation:({pages:e,newest:t,chosen:n},r)=>{let i={};for(let n of Object.keys(e))i[n]={pageId:n,reportedAt:+(n===t)};return tE(i,{chosen:n,host:this.pageId,previous:r?.value??null})}});reported=Q(()=>{let e=this.shownPageId();return e===null?null:this.graphPages()[e]??null});unsupported=Q(()=>!!this.reported()?.unsupported);graph=Q(()=>{let e=this.reported();return e?.unsupported?null:e});graphOwner=Q(()=>{let e=this.graph();return e?`${e.pageId??``}|${e.component?.id??e.injector?.id??``}`:null});pickedByPage=j({});picked=Q(()=>this.pickedByPage()[this.targetPageId()??``]??null);pageOptions=Q(()=>{if(this.pageId)return[];let e=this.treePages();return Object.keys(this.graphPages()).map(t=>{let n=e[t];return{value:t,label:n?.title||n?.url||`Page ${t}`,hint:n?.url}})});showInternals=j(!1);sourceSignals=j([]);sourceLoaded=j(!1);filter=j(``);kind=j(null);resources=Q(()=>this.graph()?.resources??[]);internalIds=Q(()=>new Set(this.resources().flatMap(e=>e.nodeIds)));visibleNodes=Q(()=>{let e=this.internalIds();return(this.graph()?.nodes??[]).filter(t=>!e.has(t.id))});hasAnySignals=Q(()=>this.visibleNodes().length+this.resources().length>0);kindCounts=Q(()=>{let e=this.graph()?[...this.visibleNodes().map(e=>e.kind),...this.resources().map(()=>`resource`)]:this.sourceSignals().map(e=>e.kind),t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);return[...t].map(([e,t])=>({kind:e,count:t}))});kindTotal=Q(()=>this.kindCounts().reduce((e,t)=>e+t.count,0));selectedId=Tv({source:this.graphOwner,computation:()=>null});selectedNode=Q(()=>this.graph()?.nodes.find(e=>e.id===this.selectedId())??null);jumpedPast=j(null);jumpNote=Q(()=>{let e=this.jumpedPast();return!e||this.filter()||this.kind()||this.selectedId()!==e.id?``:`Cleared the filters to show ${e.label}.`});selectedHistory=Q(()=>{let e=this.selectedId();return e?[...this.graph()?.history?.[e]??[]].reverse():[]});kindLegend=Object.entries(yP).map(([e,t])=>({kind:e,color:t}));filteredResources=Q(()=>{let e=this.filter().toLowerCase(),t=this.kind();return t&&t!==`resource`?[]:this.resources().filter(t=>!e||t.name.toLowerCase().includes(e)||`resource`.includes(e))});filteredNodes=Q(()=>{let e=this.filter().toLowerCase(),t=this.kind();return this.visibleNodes().filter(n=>(!t||n.kind===t)&&(!e||(n.label??``).toLowerCase().includes(e)||n.kind.toLowerCase().includes(e))).sort((e,t)=>e.id.localeCompare(t.id,void 0,{numeric:!0}))});filteredSourceSignals=Q(()=>{let e=this.filter().toLowerCase(),t=this.kind();return this.sourceSignals().filter(n=>(!t||n.kind===t)&&(!e||n.name.toLowerCase().includes(e)||n.kind.toLowerCase().includes(e)||n.file.toLowerCase().includes(e)))});targetPageId=Q(()=>this.pageId??(this.shownPageId()||null)??this.graph()?.pageId??this.latestTreePage()?.pageId??null);latestTreePage=Q(()=>{let e=null;for(let[t,n]of Object.entries(this.treePages())){let r=n.reportedAt??0;(!e||r>e.reportedAt)&&(e={pageId:t,reportedAt:r})}return e});componentOptions=Q(()=>{let e=this.targetPageId(),t=(e?this.treePages()[e]?.roots:void 0)??[],n=[],r=e=>{for(let t of e)n.push(t),r(t.children)};r(t);let i=this.graph()?.environments??[];if(!n.length&&!i.length)return[];let a=new Map;for(let e of n)a.set(e.name,(a.get(e.name)??0)+1);let o=new Map,s=[{value:pP,label:`Follow the routed component`,hint:`automatic`},...i.map(e=>({value:mP+e.id,label:this.injectorLabel(e),hint:`injector`}))];for(let e of n){let t=(o.get(e.name)??0)+1;o.set(e.name,t),s.push({value:e.id,label:(a.get(e.name)??0)>1?`${e.name} #${t}`:e.name,hint:`<${e.tag}>`})}return s});pickerValue=Q(()=>{let e=this.picked();return e&&this.componentOptions().some(t=>t.value===e)?e:pP});constructor(){uc(()=>{let e=this.rpc();e&&(this.loadSignalGraph(e),this.loadSourceSignals(e))}),this.destroyRef.onDestroy(()=>{for(let e of this.cleanups.splice(0))e()})}async loadSignalGraph(e){for(let e of this.cleanups.splice(0))e();let t=e.scope(`pangular`);try{let e=await t.rpc.sharedState(`signal-graph`);if(this.destroyRef.destroyed)return;let n=e=>{let t=e,n=t?.pages&&typeof t.pages==`object`?t.pages:{};this.notePageGone(n),this.graphState.set({graph:t?.graph??null,pages:n})};n(e.value()),this.cleanups.push(e.on(`updated`,n))}catch{this.graphState.set({graph:null,pages:{}})}try{let e=await t.rpc.sharedState(`component-tree`);if(this.destroyRef.destroyed)return;let n=e=>{let t=e?.pages;this.treePages.set(t&&typeof t==`object`?t:{})};n(e.value()),this.cleanups.push(e.on(`updated`,n))}catch{this.treePages.set({})}}notePageGone(e){let t=this.chosenPageId();if(!t||e[t])return;let n=this.pageOptions().find(e=>e.value===t)?.label??`The chosen page`;this.chosenPageId.set(null),this.announcement.set(`${n} closed, so this shows another page.`)}selectPage(e){if(!e||e===this.shownPageId())return;this.chosenPageId.set(e);let t=this.pageOptions().find(t=>t.value===e)?.label??e;this.announcement.set(`Showing the signal graph of ${t}.`)}pickComponent(e){let t=e&&e!==pP?e:null,n=this.targetPageId()??void 0;this.pickedByPage.update(e=>{let r={...e};return t?r[n??``]=t:delete r[n??``],r});let r=this.rpc();if(!r)return;let i=t?.startsWith(mP)?{pageId:n,env:t.slice(4)}:{pageId:n,id:t};r.scope(`pangular`).rpc.call(`select-signal-target`,i).catch(()=>{})}injectorLabel(e){return e.name===`Root`?`Root services`:e.name}sourceNote(e){return gP[e]}async loadSourceSignals(e){let t=e.scope(`pangular`);try{let e=await t.rpc.call(`get-signals`);this.sourceSignals.set(e)}catch{}finally{this.sourceLoaded.set(!0)}}clearFilters(){this.resetFilters(),this.filterInput()?.nativeElement.focus()}resetFilters(){this.filter.set(``),this.kind.set(null)}select(e){this.selectedId.set(this.selectedId()===e?null:e),this.showInternals.set(!1)}jumpTo(e){let t=this.resources().find(t=>t.nodeIds.includes(e.id)),n=t?.id??e.id,r=t?!this.filteredResources().some(e=>e.id===n):!this.filteredNodes().some(e=>e.id===n);r&&this.resetFilters(),this.jumpedPast.set(r?{id:n,label:t?.name??e.label??e.id}:null),this.selectedId.set(n),this.showInternals.set(!!t),Id(()=>{let e=[...this.host.nativeElement.querySelectorAll(`.node-card[data-card]`)].find(e=>e.dataset.card===n);e?.scrollIntoView?.({block:`nearest`}),e?.focus({preventScroll:!0})},{injector:this.injector})}changeCount(e){let t=this.graph(),n=t?.nodes.find(t=>t.id===e)?.changes??t?.resources?.find(t=>t.id===e)?.changes;return n===void 0?(t?.history?.[e]??[]).reduce((e,t)=>e+(t.source===`initial`?0:1+(t.missed??0)),0):n}historySummary(e){let t=this.changeCount(e),n=this.graph()?.history?.[e]?.length??0;return t?`${`${t} ${t===1?`change`:`changes`} recorded`}${n>=hP&&t>=n?`, showing the last ${n}`:``}, newest first.`:`No changes recorded yet. The entry below is the value seen first.`}statusTone(e){return vP[e]??`neutral`}internalsOf(e){let t=new Set(e.nodeIds);return(this.graph()?.nodes??[]).filter(e=>t.has(e.id))}sourceLabel(e){return _P[e]}kindColor(e){return yP[e]??yP.unknown}getDependencies(e){let t=this.graph();if(!t)return[];let n=t.nodes.findIndex(t=>t.id===e.id);return t.edges.filter(e=>e.consumer===n).map(e=>t.nodes[e.producer]).filter(Boolean)}getConsumers(e){let t=this.graph();if(!t)return[];let n=t.nodes.findIndex(t=>t.id===e.id);return t.edges.filter(e=>e.producer===n).map(e=>t.nodes[e.consumer]).filter(Boolean)}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-signal-inspector`]],viewQuery:function(e,t){e&1&&e_(t.filterInput,sN,5),e&2&&t_()},inputs:{rpc:[1,`rpc`]},decls:27,vars:17,consts:[[`filterInput`,``],[`historyTpl`,``],[1,`toolbar`],[`type`,`search`,`placeholder`,`Filter by name or kind…`,`aria-label`,`Filter signals by name or kind`,3,`input`,`keydown.escape`,`value`],[1,`picker`,`page-picker`],[1,`picker`],[`role`,`status`,1,`sr-only`],[1,`showing`],[`role`,`status`,1,`fallback`],[1,`intro`],[`role`,`group`,`aria-label`,`Filter by kind`,1,`kinds`],[`role`,`status`,1,`empty`],[1,`empty`],[`role`,`status`,1,`jump-note`],[`id`,`signals-page-label`,1,`label-key`],[`labelledBy`,`signals-page-label`,3,`valueChange`,`options`,`value`],[`id`,`signals-component-label`,1,`label-key`],[`labelledBy`,`signals-component-label`,3,`valueChange`,`options`,`value`],[1,`showing-name`],[1,`mono`],[1,`source-note`],[`type`,`button`,1,`kind-chip`,3,`click`],[1,`count`],[`type`,`button`,1,`kind-chip`,3,`active`],[`aria-hidden`,`true`,1,`dot`],[1,`chip-text`],[`aria-hidden`,`true`,1,`spinner`],[1,`empty-title`],[1,`hint`],[1,`source-label`],[1,`nodes`],[1,`node-card`],[`role`,`status`,1,`empty`,`compact`],[1,`node-header`],[1,`kind-badge`],[1,`node-label`],[1,`node-meta`],[1,`file`,3,`title`],[`aria-hidden`,`true`,1,`sep`],[`type`,`button`,1,`reset`,3,`click`],[3,`id`],[1,`history-summary`],[`tabindex`,`0`,1,`history`,`scroll-box`],[1,`history-meta`],[1,`source-tag`],[1,`missed`],[1,`list-heading`],[`role`,`list`,1,`nodes`,`resources`],[`type`,`button`,1,`node-card`,3,`click`],[1,`status-tag`,3,`class`],[1,`changed-badge`],[`aria-hidden`,`true`,1,`chevron`],[1,`node-value`],[1,`detail-panel`,3,`id`],[1,`status-tag`],[1,`detail-title`],[3,`ngTemplateOutlet`,`ngTemplateOutletContext`],[`type`,`button`,1,`reset`,`internals-toggle`,3,`click`],[`role`,`region`,`tabindex`,`0`,1,`scroll-box`],[1,`kind-badge`,`sm`],[1,`rel-label`],[`role`,`list`,1,`nodes`],[1,`empty`,`compact`],[`type`,`button`,1,`rel-link`,3,`click`],[`type`,`button`,1,`reset`]],template:function(e,t){if(e&1&&(z(0,`div`,2)(1,`input`,3,0),G(`input`,function(e){return t.filter.set(e.target.value)})(`keydown.escape`,function(){return t.filter.set(``)}),B(),P(3,mN,4,2,`div`,4),P(4,hN,4,2,`div`,5),B(),z(5,`p`,6),J(6),B(),P(7,_N,6,3,`p`,7)(8,vN,5,1,`p`,7),P(9,yN,2,0,`p`,8),z(10,`p`,9),P(11,bN,1,0)(12,xN,1,0)(13,SN,1,0),B(),P(14,CN,2,0,`p`,8),P(15,wN,2,0,`p`,8),P(16,TN,2,2,`p`,8),P(17,DN,7,4,`div`,10),P(18,ON,4,0,`div`,11),P(19,kN,14,0,`div`,12),P(20,NN,6,1),tg(21,LN,1,1,`ng-template`,null,1,gv),z(23,`p`,13),J(24),B(),P(25,QN,5,0),P(26,fP,6,1)),e&2){let e,n;M(),R(`value`,t.filter()),M(2),F(t.pageOptions().length>1?3:-1),M(),F(t.componentOptions().length?4:-1),M(2),Y(t.announcement()),M(),F((e=t.graph()?.component)?7:(e=t.graph()?.injector)?8:-1,e),M(2),F(t.graph()&&t.picked()&&t.graph().source!==`selected`?9:-1),M(2),F(t.graph()?.injector?11:t.graph()?12:13),M(3),F(t.unsupported()?14:-1),M(),F(t.graph()?.writeHook===!1?15:-1),M(),F((n=t.graph()?.nodeCount)?16:-1,n),M(),F(t.kindCounts().length?17:-1),M(),F(!t.graph()&&!t.sourceLoaded()?18:-1),M(),F(!t.graph()&&t.sourceLoaded()&&t.sourceSignals().length===0?19:-1),M(),F(!t.graph()&&t.sourceSignals().length>0?20:-1),M(4),Y(t.jumpNote()),M(),F(t.graph()&&t.filteredResources().length?25:-1),M(),F(t.graph()&&(t.visibleNodes().length||!t.filteredResources().length)?26:-1)}},dependencies:[$y,AD,ib,ab],styles:[`[_nghost-%COMP%] { + display: block; + min-width: 0; + color: var(--%NS%text); + font-size: 13px; +} + +.toolbar[_ngcontent-%COMP%] { + position: sticky; + top: 0; + z-index: 2; + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: center; + margin: 0 0 16px; + padding: 10px 12px; + background: color-mix(in srgb, var(--%NS%surface) 85%, transparent); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); +} + +input[_ngcontent-%COMP%] { + flex: 1 1 200px; + min-width: 0; + height: 34px; + padding: 0 12px; + background: var(--%NS%bg); + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + outline: none; + transition: border-color 0.15s var(--%NS%ease), box-shadow 0.15s var(--%NS%ease); +} + +input[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +input[_ngcontent-%COMP%]:hover { + border-color: color-mix(in srgb, var(--%NS%text-3) 60%, var(--%NS%border-strong)); +} + +input[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.empty[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + text-align: center; + padding: 40px 24px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + animation: enter 0.35s var(--%NS%ease) both; +} + +.empty.compact[_ngcontent-%COMP%] { + padding: 24px 16px; + border-style: dashed; + background: transparent; +} + +.empty-title[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.hint[_ngcontent-%COMP%] { + max-width: 460px; + margin: 0; + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.55; + overflow-wrap: anywhere; +} + +.hint[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + padding: 1px 5px; + font-family: var(--%NS%font-mono); + font-size: 12px; + color: var(--%NS%text); + background: var(--%NS%surface-3); + border: 1px solid var(--%NS%border); + border-radius: 5px; +} + +.reset[_ngcontent-%COMP%] { + height: 34px; + margin-top: 4px; + padding: 0 14px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease), border-color 0.15s var(--%NS%ease); +} + +.reset[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-3); +} + +.reset[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.spinner[_ngcontent-%COMP%] { + width: 18px; + height: 18px; + border: 2px solid var(--%NS%border-strong); + border-top-color: var(--%NS%accent); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +@media (prefers-reduced-motion: reduce) { + .spinner[_ngcontent-%COMP%] { + animation: none; + border-top-color: var(--%NS%border-strong); + } +} +.intro[_ngcontent-%COMP%] { + margin: 0 0 12px; + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; +} + +.kinds[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 6px; + margin-bottom: 16px; +} + +.kind-chip[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + gap: 6px; + max-width: 100%; + height: 28px; + padding: 0 10px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text-2); + font: inherit; + font-size: 12px; + font-weight: 500; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease), border-color 0.15s var(--%NS%ease), color 0.15s var(--%NS%ease); +} + +.kind-chip[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%border-strong); + background: var(--%NS%surface-3); + color: var(--%NS%text); +} + +.kind-chip[_ngcontent-%COMP%]:active { + transform: translateY(0.5px); +} + +.kind-chip.active[_ngcontent-%COMP%] { + border-color: var(--%NS%accent-line); + background: var(--%NS%accent-soft); + color: var(--%NS%text-strong); +} + +.kind-chip[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.chip-text[_ngcontent-%COMP%] { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.kind-chip[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] { + flex: none; + min-width: 18px; + padding: 0 5px; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 11px; + line-height: 16px; + text-align: center; + font-variant-numeric: tabular-nums; +} + +.kind-chip.active[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] { + background: color-mix(in srgb, var(--%NS%accent) 22%, transparent); + color: var(--%NS%text-strong); +} + +.dot[_ngcontent-%COMP%] { + flex: none; + width: 8px; + height: 8px; + border-radius: 50%; +} + +.node-header[_ngcontent-%COMP%] { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 6px 8px; + min-width: 0; +} + +.kind-badge[_ngcontent-%COMP%] { + flex: none; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 10.5px; + line-height: 18px; + padding: 0 8px; + border-radius: 99px; + color: #0b0b0e; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.06em; +} + +.node-label[_ngcontent-%COMP%] { + min-width: 0; + font-family: var(--%NS%font-mono); + font-size: 13px; + font-weight: 500; + color: var(--%NS%text-strong); + overflow-wrap: anywhere; +} + +.node-meta[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 2px 6px; + min-width: 0; + margin-top: 6px; + font-size: 12px; + color: var(--%NS%text-3); + font-variant-numeric: tabular-nums; +} + +.node-meta[_ngcontent-%COMP%] .file[_ngcontent-%COMP%] { + min-width: 0; + font-family: var(--%NS%font-mono); + font-size: 11.5px; + overflow-wrap: anywhere; +} + +.sep[_ngcontent-%COMP%] { + color: var(--%NS%border-strong); +} + +dl[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + gap: 8px 16px; + margin: 0; + font-size: 13px; +} + +dt[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + padding-top: 2px; +} + +dd[_ngcontent-%COMP%] { + min-width: 0; + margin: 0; + color: var(--%NS%text); + font-variant-numeric: tabular-nums; + overflow-wrap: anywhere; +} + +pre[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12.5px; + line-height: 1.55; + white-space: pre-wrap; + overflow-wrap: anywhere; + margin: 0; + color: var(--%NS%text); +} + +.nodes[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + gap: 8px; + list-style: none; + padding: 0; + margin: 0; + animation: enter 0.35s var(--%NS%ease) both; +} + +.node-card[_ngcontent-%COMP%] { + display: block; + width: 100%; + min-width: 0; + text-align: left; + font: inherit; + color: inherit; + background: var(--%NS%surface); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + padding: 12px 16px; + transition: background-color 0.15s var(--%NS%ease), border-color 0.15s var(--%NS%ease), box-shadow 0.15s var(--%NS%ease); +} + +.node-card[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-2); + border-color: var(--%NS%border-strong); +} + +.picker[_ngcontent-%COMP%] { + display: flex; + align-items: center; + gap: 8px; + flex: 1 1 260px; + min-width: 0; +} + +.picker[_ngcontent-%COMP%] app-select[_ngcontent-%COMP%] { + flex: 1 1 auto; + min-width: 0; +} + +.page-picker[_ngcontent-%COMP%] { + flex: 0 1 240px; +} + +.label-key[_ngcontent-%COMP%] { + flex: none; + color: var(--%NS%text-2); + font-size: 12px; +} + +.showing[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: baseline; + gap: 4px 10px; + margin: 0 0 8px; + font-size: 12px; + color: var(--%NS%text-2); +} + +.showing-name[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-family: var(--%NS%font-mono); + font-size: 13px; + font-weight: 600; +} + +.mono[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + overflow-wrap: anywhere; +} + +.source-note[_ngcontent-%COMP%] { + padding: 0 8px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + line-height: 18px; +} + +.fallback[_ngcontent-%COMP%] { + margin: 0 0 8px; + color: var(--%NS%warn); + font-size: 12px; +} + +.source-label[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + margin: 0 0 12px; +} + +.nodes[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] { + display: block; + min-width: 0; + padding: 0; +} + +button.node-card[_ngcontent-%COMP%] { + cursor: pointer; +} + +.node-card[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.node-card.selected[_ngcontent-%COMP%] { + background: var(--%NS%accent-soft); + border-color: var(--%NS%accent-line); + box-shadow: inset 2px 0 0 var(--%NS%accent); +} + +.chevron[_ngcontent-%COMP%] { + flex: none; + width: 7px; + height: 7px; + margin-left: auto; + border-right: 1.5px solid var(--%NS%text-3); + border-bottom: 1.5px solid var(--%NS%text-3); + transform: translateY(-2px) rotate(45deg); + transition: transform 0.2s var(--%NS%ease), border-color 0.15s var(--%NS%ease); +} + +.node-card[_ngcontent-%COMP%]:hover .chevron[_ngcontent-%COMP%] { + border-color: var(--%NS%text); +} + +.node-card.selected[_ngcontent-%COMP%] .chevron[_ngcontent-%COMP%] { + border-color: var(--%NS%accent); + transform: translateY(2px) rotate(-135deg); +} + +.node-value[_ngcontent-%COMP%] { + display: block; + margin-top: 8px; + padding: 4px 8px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-family: var(--%NS%font-mono); + font-size: 12px; + color: var(--%NS%text-2); + background: var(--%NS%bg); + border: 1px solid var(--%NS%border); + border-radius: 6px; +} + +.node-card.selected[_ngcontent-%COMP%] .node-value[_ngcontent-%COMP%] { + background: color-mix(in srgb, var(--%NS%bg) 70%, transparent); +} + +.kind-badge.sm[_ngcontent-%COMP%] { + font-size: 10px; + line-height: 16px; + padding: 0 6px; +} + +.changed-badge[_ngcontent-%COMP%] { + flex: none; + font-size: 11px; + font-weight: 500; + line-height: 16px; + padding: 0 8px; + border: 1px solid; + border-radius: 99px; + font-variant-numeric: tabular-nums; +} + +.changed-badge[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +.detail-panel[_ngcontent-%COMP%] { + margin-top: 8px; + padding: 16px; + background: var(--%NS%surface); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + box-shadow: var(--%NS%shadow); + animation: enter 0.25s var(--%NS%ease) both; +} + +.detail-title[_ngcontent-%COMP%] { + margin: 0 0 16px; + font-family: var(--%NS%font-mono); + font-size: 14px; + font-weight: 600; + color: var(--%NS%accent); + overflow-wrap: anywhere; +} + +.detail-panel[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + margin: 20px 0 8px; +} + +.detail-panel[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] { + max-height: 240px; + overflow: auto; + padding: 8px 12px; + background: var(--%NS%surface-2); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); +} + +.scroll-box[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: -2px; +} + +.list-heading[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + margin: 16px 0 8px; +} + +.resources[_ngcontent-%COMP%] { + margin-bottom: 8px; +} + +.status-tag[_ngcontent-%COMP%] { + flex: none; + font-size: 11px; + font-weight: 500; + line-height: 16px; + padding: 0 8px; + border: 1px solid; + border-radius: 99px; +} + +.tone-ok[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.tone-warn[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +.tone-danger[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger); +} + +.tone-neutral[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + border-color: var(--%NS%border-strong); +} + +.detail-panel[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%] { + margin: 0 0 12px; +} + +.internals-toggle[_ngcontent-%COMP%] { + margin-top: 16px; +} + +.detail-panel[_ngcontent-%COMP%] .internals-toggle[_ngcontent-%COMP%] + ul[_ngcontent-%COMP%] { + margin-top: 8px; +} + +.detail-panel[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + gap: 2px; + list-style: none; + padding: 0; + margin: 0; + font-size: 13px; +} + +.detail-panel[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%], +.rel-link[_ngcontent-%COMP%] { + display: flex; + align-items: center; + gap: 8px; + min-width: 0; + min-height: 28px; + padding: 4px 8px; + color: var(--%NS%text-2); + border-radius: 6px; +} + +.detail-panel[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:has(> .rel-link) { + padding: 0; +} + +.rel-link[_ngcontent-%COMP%] { + width: 100%; + font: inherit; + text-align: left; + background: none; + border: 0; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease), color 0.15s var(--%NS%ease); +} + +.rel-link[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-2); + color: var(--%NS%text); +} + +.rel-link[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.jump-note[_ngcontent-%COMP%] { + margin: 0; + font-size: 12px; + color: var(--%NS%text-2); +} + +.jump-note[_ngcontent-%COMP%]:not(:empty) { + margin-bottom: 8px; +} + +.rel-label[_ngcontent-%COMP%] { + min-width: 0; + font-family: var(--%NS%font-mono); + font-size: 12.5px; + overflow-wrap: anywhere; +} + +.history-summary[_ngcontent-%COMP%] { + margin: 0 0 8px; + font-size: 12px; + color: var(--%NS%text-2); + font-variant-numeric: tabular-nums; +} + +.history[_ngcontent-%COMP%] { + list-style: none; + padding: 4px; + margin: 0; + max-height: 320px; + overflow: auto; + background: var(--%NS%surface-2); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); +} + +.history[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + display: block; + padding: 8px; + border-radius: 6px; + transition: background-color 0.15s var(--%NS%ease); +} + +.history[_ngcontent-%COMP%] li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%] { + border-top: 1px solid var(--%NS%border); +} + +.history[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-3); +} + +.history-meta[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px 8px; + align-items: center; + margin-bottom: 4px; + font-size: 11px; + color: var(--%NS%text-2); + font-variant-numeric: tabular-nums; +} + +.history-meta[_ngcontent-%COMP%] time[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + color: var(--%NS%text); +} + +.source-tag[_ngcontent-%COMP%] { + line-height: 16px; + padding: 0 8px; + border-radius: 99px; + background: var(--%NS%surface-3); + border: 1px solid var(--%NS%border-strong); + color: var(--%NS%text); +} + +.source-write[_ngcontent-%COMP%] { + color: #93c5fd; + background: color-mix(in srgb, #60a5fa 12%, transparent); + border-color: color-mix(in srgb, #60a5fa 30%, transparent); +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .source-write[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, #1d4ed8 30%, transparent); + background: color-mix(in srgb, #1d4ed8 12%, transparent); + color: #1d4ed8; + } +} +:root[data-theme=light] [_nghost-%COMP%] .source-write[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, #1d4ed8 30%, transparent); + background: color-mix(in srgb, #1d4ed8 12%, transparent); + color: #1d4ed8; +} + +.missed[_ngcontent-%COMP%] { + color: var(--%NS%warn); +} + +@media (max-width: 480px) { + .toolbar[_ngcontent-%COMP%] { + padding: 8px; + } + .toolbar[_ngcontent-%COMP%] input[_ngcontent-%COMP%], + .picker[_ngcontent-%COMP%] { + flex-basis: 100%; + } + .node-card[_ngcontent-%COMP%], + .detail-panel[_ngcontent-%COMP%] { + padding: 12px; + } + dl[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + gap: 4px; + } + dd[_ngcontent-%COMP%] + dt[_ngcontent-%COMP%] { + margin-top: 8px; + } +}`]})},xP=[`queryInput`],SP=(e,t)=>t.node.injector.id,CP=(e,t)=>t.id,wP=(e,t)=>t.from+t.token+e,TP=(e,t)=>t.token+e,EP=(e,t)=>t.type,DP=(e,t)=>t.token+t.file+t.line;function OP(e,t){if(e&1){let e=W();z(0,`div`,4)(1,`span`,5),J(2,`Page`),B(),z(3,`app-select`,6),G(`valueChange`,function(t){return O(e),k(K(2).selectPage(t))}),B()()}if(e&2){let e=K(2);M(3),R(`options`,e.pageOptions())(`value`,e.shownPageId())}}function kP(e,t){e&1&&P(0,OP,4,2,`div`,4),e&2&&F(K().pageOptions().length>1?0:-1)}function AP(e,t){if(e&1){let e=W();z(0,`label`,18)(1,`input`,19),G(`change`,function(){O(e);let t=K(2);return k(t.componentsOnly.set(!t.componentsOnly()))}),B(),J(2,` Components only `),B()}if(e&2){let e=K(2);M(),R(`checked`,e.componentsOnly())}}function jP(e,t){e&1&&(z(0,`p`,20),A(),z(1,`svg`,29),V(2,`circle`,30)(3,`path`,31),B(),ps(),z(4,`span`)(5,`strong`),J(6,`This page has more than 2000 element injectors.`),B(),J(7,` Only the first 2000 are shown, so a lookup path or a provider can point to one that is not listed. `),B()())}function MP(e,t){if(e&1){let e=W();z(0,`button`,34),G(`click`,function(){let t=O(e).$implicit;return k(K(3).reveal(t.id))}),V(1,`span`,35),z(2,`span`,36),J(3),B(),z(4,`span`,37),J(5),B()()}if(e&2){let e=t.$implicit,n=K(3);M(),C_(`background`,n.tone(e.kind)),M(2),Y(e.label),M(2),Y(e.tokens)}}function NP(e,t){if(e&1&&(z(0,`div`,21)(1,`span`,32),J(2,`Provided by`),B(),I(3,MP,6,4,`button`,33,CP),B()),e&2){let e=K(2);M(3),L(e.providedBy())}}function PP(e,t){if(e&1){let e=W();z(0,`div`,22),J(1),z(2,`button`,38),G(`click`,function(){return O(e),k(K(2).clearQuery())}),J(3,`Clear search`),B()()}if(e&2){let e=K(2);M(),X(` Nothing here matches “`,e.query().trim(),`”. `)}}function FP(e,t){e&1&&J(0,` None of them provide anything themselves. `)}function IP(e,t){e&1&&J(0,` Turn off “Components only” to see directives. `)}function LP(e,t){e&1&&J(0,` Try a different search. `)}function RP(e,t){if(e&1&&(z(0,`div`,24)(1,`p`,39),J(2,`No injectors to show`),B(),z(3,`p`,40),P(4,FP,1,0)(5,IP,1,0)(6,LP,1,0),B()()),e&2){let e=K(2);M(4),F(e.onlyProviding()?4:e.componentsOnly()&&e.view()===`element`?5:6)}}function zP(e,t){if(e&1){let e=W();z(0,`span`,51),G(`click`,function(t){O(e);let n=K().$implicit;return k(K(2).toggle(n.node.injector.id,t))}),A(),z(1,`svg`,52),V(2,`path`,53),B()()}if(e&2){let e=K().$implicit;q(`open`,e.expanded)}}function BP(e,t){e&1&&V(0,`span`,43)}function VP(e,t){if(e&1&&(z(0,`span`,47),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.node.injector.component)}}function HP(e,t){if(e&1&&(z(0,`span`,47),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.node.injector.directives.join(`, `))}}function UP(e,t){if(e&1&&(z(0,`span`,49),A(),z(1,`svg`,29),V(2,`path`,54),B(),ps(),z(3,`span`,45),J(4,`injects`),B(),J(5),B()),e&2){let e=K().$implicit;N(`title`,e.node.dependencies.length+` injected`),M(5),X(` `,e.node.dependencies.length,` `)}}function WP(e,t){if(e&1&&(z(0,`span`,50),A(),z(1,`svg`,29),V(2,`path`,55),B(),ps(),z(3,`span`,45),J(4,`provides`),B(),J(5),B()),e&2){let e=K().$implicit;N(`title`,e.node.injector.providerCount+` provided`),M(5),X(` `,e.node.injector.providerCount,` `)}}function GP(e,t){if(e&1){let e=W();z(0,`div`,41),G(`click`,function(){let t=O(e).$implicit;return k(K(2).select(t.node.injector.id))})(`focus`,function(){let t=O(e).$implicit,n=K(2);return n.focusId.set(t.node.injector.id),k(n.highlight(t.node))})(`blur`,function(){return O(e),k(K(2).highlight(null))})(`mouseenter`,function(){let t=O(e).$implicit;return k(K(2).highlight(t.node))})(`mouseleave`,function(){return O(e),k(K(2).highlight(null))}),P(1,zP,3,2,`span`,42)(2,BP,1,0,`span`,43),z(3,`span`,44),J(4),B(),z(5,`span`,45),J(6),B(),z(7,`span`,46),J(8),B(),P(9,VP,2,1,`span`,47)(10,HP,2,1,`span`,47),z(11,`span`,48),P(12,UP,6,2,`span`,49),P(13,WP,6,2,`span`,50),B()()}if(e&2){let e=t.$implicit,n=K(2);C_(`--%NS%depth`,e.depth),q(`selected`,n.selected()?.injector?.id===e.node.injector.id),N(`aria-level`,e.depth+1)(`aria-expanded`,e.hasChildren?e.expanded:null)(`aria-selected`,n.selected()?.injector?.id===e.node.injector.id)(`tabindex`,n.rovingId()===e.node.injector.id?0:-1)(`data-id`,e.node.injector.id),M(),F(e.hasChildren?1:2),M(2),C_(`--%NS%tone`,n.tone(n.kind(e.node))),N(`title`,n.kind(e.node)),M(),Y(n.kind(e.node)[0].toUpperCase()),M(2),Y(n.kind(e.node)),M(2),Y(n.label(e.node)),M(),F(e.node.injector.component?9:e.node.injector.directives?.length?10:-1),M(3),F((e.node.dependencies?.length??0)>0?12:-1),M(),F(e.node.injector.providerCount>0?13:-1)}}function KP(e,t){if(e&1){let e=W();z(0,`button`,10),G(`click`,function(){let t=O(e);return k(K(3).reveal(t.node.injector.id))}),J(1),B()}if(e&2){let e=K(3);M(),X(` Show `,e.label(t.node),` `)}}function qP(e,t){if(e&1&&(z(0,`section`,27)(1,`header`,56)(2,`h2`,57),J(3),B()(),z(4,`div`,58)(5,`p`,40),J(6,` This injector is no longer on the page. Its component or directive was destroyed. `),B(),P(7,KP,2,1,`button`,59),B()()),e&2){let e,n=K(2);M(3),Y(t),M(4),F((e=n.rows()[0])?7:-1,e)}}function JP(e,t){if(e&1&&(z(0,`li`),J(1),B()),e&2){let e=t.$implicit;q(`is-component`,e===K(2).injector.component),M(),Y(e)}}function YP(e,t){if(e&1&&(z(0,`ul`,61),I(1,JP,2,3,`li`,68,wg),B()),e&2){let e=K();M(),L(e.injector.directives)}}function XP(e,t){if(e&1&&(z(0,`span`,69),V(1,`span`,35),J(2,` Null injector `),z(3,`span`,71),J(4,`throws NullInjectorError`),B()()),e&2){let e=K(4);M(),C_(`background`,e.tone(`null`))}}function ZP(e,t){if(e&1&&(z(0,`span`,73),J(1),z(2,`span`,45),J(3),B()()),e&2){let e=K(2).$implicit;M(),X(` `,e.providers,` `),M(2),Y(e.providers===1?`provider`:`providers`)}}function QP(e,t){if(e&1){let e=W();z(0,`button`,72),G(`click`,function(){O(e);let t=K().$implicit;return k(K(3).reveal(t.id))}),V(1,`span`,35),z(2,`span`,36),J(3),B(),P(4,ZP,4,2,`span`,73),B()}if(e&2){let e=K().$implicit,t=K(3);M(),C_(`background`,t.tone(e.kind)),M(2),Y(e.label),M(),F(e.providers?4:-1)}}function $P(e,t){if(e&1&&(z(0,`li`),P(1,XP,5,2,`span`,69)(2,QP,5,4,`button`,70),B()),e&2){let e=t.$implicit,n=t.$index,r=K(3);q(`current`,n===0),M(),F(e.id===r.nullId?1:2)}}function eF(e,t){e&1&&(z(0,`p`,63),J(1,`Only services this injector has already created are listed.`),B())}function tF(e,t){if(e&1&&(z(0,`span`,79),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function nF(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),X(`for `,e.from)}}function rF(e,t){if(e&1){let e=W();z(0,`button`,84),G(`click`,function(){let t=O(e);return k(K(6).reveal(t))}),V(1,`span`,35),J(2,` from `),z(3,`span`,36),J(4),B()()}if(e&2){let e=t,n=K(6);M(),C_(`background`,n.tone(n.kindById(e))),M(3),Y(n.labelById(e))}}function iF(e,t){e&1&&(z(0,`span`,82),J(1,`optional, not provided`),B())}function aF(e,t){e&1&&(z(0,`span`,83),J(1,`not provided anywhere`),B())}function oF(e,t){if(e&1&&(z(0,`li`,76)(1,`div`,77)(2,`span`,78),J(3),B(),I(4,tF,2,1,`span`,79,wg),B(),z(6,`div`,80),P(7,nF,2,1,`span`),P(8,rF,5,3,`button`,81)(9,iF,2,0,`span`,82)(10,aF,2,0,`span`,83),B()()),e&2){let e,n=t.$implicit,r=K(3);q(`hit`,K(2).matches(n.token)),M(3),Y(n.token),M(),L(n.flags),M(3),F(r.injector.type!==`element`||r.injector.directives&&r.injector.directives.length>1?7:-1),M(),F((e=n.providedBy)?8:n.flags.includes(`optional`)?9:10,e)}}function sF(e,t){if(e&1&&(z(0,`ul`,74),I(1,oF,11,5,`li`,75,wP),B()),e&2){let e=K(2);M(),L(e.dependencies)}}function cF(e,t){e&1&&(z(0,`p`,67),J(1,`Nothing is injected through the constructor or inject().`),B())}function lF(e,t){e&1&&(z(0,`p`,67),J(1,`No service created here has injected anything yet.`),B())}function uF(e,t){if(e&1&&(z(0,`div`,62)(1,`h3`),J(2),z(3,`span`,11),J(4),B()(),P(5,eF,2,0,`p`,63),P(6,sF,3,0,`ul`,74)(7,cF,2,0,`p`,67)(8,lF,2,0,`p`,67),B()),e&2){let e=K();M(2),X(` `,e.injector.type===`element`?`Injected here`:`Injected by its services`,` `),M(2),Y(e.dependencies?.length??0),M(),F(e.injector.type===`element`?-1:5),M(),F(e.dependencies?.length?6:e.injector.type===`element`?7:8)}}function dF(e,t){e&1&&(z(0,`span`,79),J(1,`viewProviders`),B())}function fF(e,t){e&1&&(z(0,`span`,79),J(1,`multi`),B())}function pF(e,t){if(e&1&&(z(0,`div`,80),J(1),B()),e&2){let e=K().$implicit;M(),X(`via `,e.importPath.join(` › `))}}function mF(e,t){if(e&1&&(z(0,`li`,86)(1,`div`,77)(2,`span`,78),J(3),B(),z(4,`span`,87),J(5),B(),P(6,dF,2,0,`span`,79),P(7,fF,2,0,`span`,79),B(),P(8,pF,2,1,`div`,80),B()),e&2){let e=t.$implicit,n=K(4);q(`hit`,n.matches(e.token)),M(3),Y(e.token),M(2),Y(e.type===`unknown`?`provider`:`use`+n.capital(e.type)),M(),F(e.isViewProvider?6:-1),M(),F(e.multi?7:-1),M(),F(e.importPath?.length?8:-1)}}function hF(e,t){if(e&1&&(z(0,`ul`,66),I(1,mF,9,7,`li`,85,TP),B()),e&2){let e=K();M(),L(e.providers)}}function gF(e,t){e&1&&J(0,` No providers or viewProviders on this element. `)}function _F(e,t){e&1&&J(0,` This injector has no providers of its own. `)}function vF(e,t){if(e&1&&(z(0,`p`,67),P(1,gF,1,0)(2,_F,1,0),B()),e&2){let e=K();M(),F(e.injector.type===`element`?1:2)}}function yF(e,t){if(e&1&&(z(0,`section`,28)(1,`header`,56)(2,`span`,60),J(3),B(),z(4,`h2`,57),J(5),B(),P(6,YP,3,0,`ul`,61),B(),z(7,`div`,62)(8,`h3`),J(9,`Lookup path`),B(),z(10,`p`,63),J(11,`Angular asks these injectors in order until one has the token.`),B(),z(12,`ol`,64),I(13,$P,3,3,`li`,65,CP),B()(),P(15,uF,9,4,`div`,62),z(16,`div`,62)(17,`h3`),J(18,` Provides `),z(19,`span`,11),J(20),B()(),P(21,hF,3,0,`ul`,66)(22,vF,3,1,`p`,67),B()()),e&2){let e=t,n=K(2);M(2),C_(`--%NS%tone`,n.tone(n.kind(e))),M(),Y(n.kind(e)),M(2),Y(n.label(e)),M(),F(e.injector.directives?.length?6:-1),M(7),L(n.path()),M(2),F(e.injector.type===`element`||e.dependencies?15:-1),M(5),Y(e.providers.length),M(),F(e.providers.length?21:22)}}function bF(e,t){if(e&1){let e=W();z(0,`p`,7),J(1,` Every component and directive gets an injector. When it asks for a token, Angular walks up this tree, then through the environment injectors, until something provides it. `),B(),z(2,`div`,8)(3,`div`,9)(4,`button`,10),G(`click`,function(){return O(e),k(K().setView(`element`))}),J(5,` Elements `),z(6,`span`,11),J(7),B()(),z(8,`button`,10),G(`click`,function(){return O(e),k(K().setView(`environment`))}),J(9,` Environment `),z(10,`span`,11),J(11),B()()(),z(12,`div`,12),A(),z(13,`svg`,13),V(14,`circle`,14)(15,`path`,15),B(),ps(),z(16,`input`,16,1),G(`input`,function(t){return O(e),k(K().query.set(t.target.value))})(`keydown.escape`,function(){return O(e),k(K().query.set(``))}),B()(),zg(18,17),P(19,AP,3,1,`label`,18),z(20,`label`,18)(21,`input`,19),G(`change`,function(){O(e);let t=K();return k(t.onlyProviding.set(!t.onlyProviding()))}),B(),J(22,` With providers `),B()(),P(23,jP,8,0,`p`,20),P(24,NP,5,0,`div`,21)(25,PP,4,1,`div`,22),z(26,`div`,23),P(27,RP,7,1,`div`,24),z(28,`div`,25),G(`keydown`,function(t){return O(e),k(K().onTreeKey(t))}),I(29,GP,14,19,`div`,26,SP),B(),P(31,qP,8,2,`section`,27)(32,yF,23,8,`section`,28),B()}if(e&2){let e,t=K(),n=n_(3);M(4),q(`active`,t.view()===`element`),N(`aria-pressed`,t.view()===`element`),M(3),Y(t.elementCount()),M(),q(`active`,t.view()===`environment`),N(`aria-pressed`,t.view()===`environment`),M(3),Y(t.environmentCount()),M(5),R(`value`,t.query()),M(2),R(`ngTemplateOutlet`,n),M(),F(t.view()===`element`?19:-1),M(2),R(`checked`,t.onlyProviding()),M(2),F(t.truncated()?23:-1),M(),F(t.providedBy().length?24:t.query().trim()&&!t.rows().length?25:-1),M(3),F(t.rows().length?-1:27),M(),R(`hidden`,!t.rows().length),N(`aria-label`,t.view()===`element`?`Element injectors`:`Environment injectors`),M(),L(t.rows()),M(2),F((e=t.gone())?31:(e=t.selected())?32:-1,e)}}function xF(e,t){e&1&&(z(0,`div`,3),V(1,`span`,88),z(2,`p`,39),J(3,`Loading dependency injection data…`),B()())}function SF(e,t){if(e&1&&(z(0,`div`,8),zg(1,17),B()),e&2){K(2);let e=n_(3);M(),R(`ngTemplateOutlet`,e)}}function CF(e,t){e&1&&(P(0,SF,2,1,`div`,8),z(1,`div`,24)(2,`p`,39),J(3,`No DI data found`),B(),z(4,`p`,40),J(5,` Open the app in a browser with the devtools connected to see its live injectors. No providers, injectables or inject() calls were found in the source either. `),B()()),e&2&&F(K().pageOptions().length>1?0:-1)}function wF(e,t){if(e&1){let e=W();z(0,`div`,24)(1,`p`,39),J(2),B(),z(3,`p`,40),J(4,`Try part of a token name or a file path.`),B(),z(5,`button`,10),G(`click`,function(){return O(e),k(K(2).clearQuery())}),J(6,`Clear filter`),B()()}if(e&2){let e=K(2);M(2),X(`No providers match “`,e.query(),`”`)}}function TF(e,t){if(e&1&&(z(0,`span`,98),J(1),B()),e&2){let e=K().$implicit;M(),X(`providedIn: `,e.providedIn)}}function EF(e,t){if(e&1&&(z(0,`span`,100),J(1),B()),e&2){let e=K().$implicit;M(),X(`as `,e.source)}}function DF(e,t){if(e&1&&(z(0,`li`,95)(1,`div`,96)(2,`span`,97),J(3),B(),P(4,TF,2,1,`span`,98),B(),z(5,`div`,99)(6,`span`,64),J(7),B(),P(8,EF,2,1,`span`,100),B()()),e&2){let e=t.$implicit;M(3),Y(e.token),M(),F(e.providedIn?4:-1),M(3),Z(``,e.file,`:`,e.line),M(),F(e.source!==`class`&&e.source!==`providers array`?8:-1)}}function OF(e,t){if(e&1&&(z(0,`section`,92)(1,`h2`),J(2),z(3,`span`,93),J(4),B()(),z(5,`ul`,94),I(6,DF,9,5,`li`,95,DP),B()()),e&2){let e=t.$implicit;M(2),X(` `,e.label,` `),M(2),Y(e.items.length),M(2),L(e.items)}}function kF(e,t){if(e&1&&(z(0,`div`,91),I(1,OF,8,2,`section`,92,EP),B()),e&2){let e=K(2);M(),L(e.groupedProviders())}}function AF(e,t){if(e&1){let e=W();z(0,`div`,8)(1,`div`,12),A(),z(2,`svg`,13),V(3,`circle`,14)(4,`path`,15),B(),ps(),z(5,`input`,89,1),G(`input`,function(t){return O(e),k(K().query.set(t.target.value))})(`keydown.escape`,function(){return O(e),k(K().query.set(``))}),B()(),zg(7,17),z(8,`span`,90),J(9),B()(),z(10,`p`,20),A(),z(11,`svg`,29),V(12,`circle`,30)(13,`path`,31),B(),ps(),z(14,`span`)(15,`strong`),J(16,`DI from source scan (static analysis).`),B(),J(17,` Connect the overlay on Angular 20 or later to see the live injector tree. `),B()(),P(18,wF,7,1,`div`,24)(19,kF,3,0,`div`,91)}if(e&2){let e=K(),t=n_(3);M(5),R(`value`,e.query()),M(2),R(`ngTemplateOutlet`,t),M(2),Z(` `,e.sourceMatchCount(),` of `,e.sourceProviders().length,` `),M(9),F(e.groupedProviders().length===0?18:19)}}var jF=`inj-null`,MF={component:`var(--accent)`,directive:`var(--directive)`,environment:`var(--ok)`,null:`var(--text-3)`};function NF(e){return e.injector.type===`element`?e.injector.component?`component`:`directive`:`environment`}function PF(e){return e.injector.type===`element`?`<${e.injector.name}>`:e.injector.name}function FF(e){return Array.isArray(e)}var IF=class e{rpc=$(null);injector=E(xs);nullId=jF;hostPage=eE();treeState=j(null);pageTitles=j({});chosenPageId=j(null);treePages=Q(()=>{let e=this.treeState();if(!e)return{};let t=e.pages&&typeof e.pages==`object`?e.pages:{};return Object.keys(t).length||this.hostPage?t:{"":e}});shownPageId=Tv({source:()=>({pages:this.treePages(),chosen:this.chosenPageId()}),computation:({pages:e,chosen:t},n)=>{let r={};for(let[t,n]of Object.entries(e))r[t]={pageId:t,reportedAt:typeof n?.reportedAt==`number`?n.reportedAt:0};return tE(r,{chosen:t,host:this.hostPage,previous:n?.value??null})}});shownPage=Q(()=>{let e=this.shownPageId();return e===null?null:this.treePages()[e]??null});roots=Q(()=>{let e=this.shownPage()?.roots;return FF(e)?e:[]});environment=Q(()=>{let e=this.shownPage()?.environment;return FF(e)?e:[]});truncated=Q(()=>this.shownPage()?.truncated===!0);multiPage=Q(()=>!this.hostPage&&Object.keys(this.treePages()).length>1);pageOptions=Q(()=>{if(!this.multiPage())return[];let e=this.pageTitles();return Object.keys(this.treePages()).map(t=>{let n=e[t];return{value:t,label:n?.title||n?.url||`Page ${t}`,hint:n?.url}})});pageKey=Q(()=>this.shownPageId()??``);perPage(e){let t=new Map;return Tv({source:this.pageKey,computation:(n,r)=>(r&&t.set(r.source,r.value),t.has(n)?t.get(n):e())})}sourceProviders=j([]);loaded=j(!1);view=j(`element`);query=j(``);queryInput=Rv(`queryInput`);onlyProviding=j(!1);componentsOnly=j(!0);collapsed=this.perPage(()=>new Set);selectedId=this.perPage(()=>null);focusId=this.perPage(()=>null);announcement=j(``);selectedLabel=this.perPage(()=>null);wasGone=!1;index=Q(()=>{let e=new Map,t=new Map,n=(r,i)=>{for(let a of r)e.set(a.injector.id,a),i&&t.set(a.injector.id,i),n(a.children,a.injector.id)};return n(this.roots(),null),n(this.environment(),null),{map:e,parents:t}});elementCount=Q(()=>this.count(this.roots()));environmentCount=Q(()=>this.count(this.environment()));visible=Q(()=>{let e=this.view()===`element`?this.roots():this.environment();this.view()===`element`&&this.componentsOnly()&&(e=this.prune(e,e=>!!e.injector.component)),this.onlyProviding()&&(e=this.prune(e,e=>e.providers.length>0));let t=this.normalizedQuery();return t&&(e=this.prune(e,e=>this.nodeMatches(e,t))),e});rows=Q(()=>{let e=[],t=this.collapsed(),n=!!this.normalizedQuery(),r=(i,a)=>{for(let o of i){let i=n||!t.has(o.injector.id);e.push({node:o,depth:a,hasChildren:o.children.length>0,expanded:i}),i&&r(o.children,a+1)}};return r(this.visible(),0),e});selected=Q(()=>{let e=this.selectedId();return e?this.index().map.get(e)??null:this.rows()[0]?.node??null});gone=Q(()=>{let e=this.selectedId();return e&&!this.index().map.has(e)?this.selectedLabel()??`The injector`:null});rovingId=Q(()=>{let e=this.rows(),t=this.focusId()??this.selected()?.injector.id;return t&&e.some(e=>e.node.injector.id===t)?t:e[0]?.node.injector.id??null});path=Q(()=>{let e=this.selected();if(!e)return[];let{map:t,parents:n}=this.index(),r=e.injector.path??[];if(!r.length){r=[e.injector.id];let t=n.get(e.injector.id);for(;t;)r.push(t),t=n.get(t);r.push(jF)}return r.map(e=>{let n=t.get(e);return{id:e,label:n?PF(n):e===jF?`Null injector`:`Not listed`,kind:n?NF(n):`null`,providers:n?.providers.length??0}})});providedBy=Q(()=>{let e=this.normalizedQuery();if(!e)return[];let t=[];for(let n of this.index().map.values()){let r=n.providers.filter(t=>t.token.toLowerCase().includes(e));r.length&&t.push({id:n.injector.id,label:PF(n),kind:NF(n),tokens:r.map(e=>e.token).join(`, `)})}return t.slice(0,12)});groupedProviders=Q(()=>{let e=this.normalizedQuery(),t=e?this.sourceProviders().filter(t=>t.token.toLowerCase().includes(e)||t.file.toLowerCase().includes(e)):this.sourceProviders(),n=[{type:`root-provider`,label:`Root Providers (provide*)`,items:[]},{type:`injectable`,label:`Injectable Services`,items:[]},{type:`injection`,label:`inject() Calls`,items:[]},{type:`provider`,label:`Component Providers`,items:[]}];for(let e of t)n.find(t=>t.type===e.type)?.items.push(e);return n.filter(e=>e.items.length>0)});sourceMatchCount=Q(()=>this.groupedProviders().reduce((e,t)=>e+t.items.length,0));normalizedQuery=Q(()=>this.query().trim().toLowerCase());destroyRef=E(Cs);stopTree=null;treeLoad=0;constructor(){uc(()=>{let e=this.rpc();e&&(this.loadInjectorTree(e),this.loadSourceProviders(e))}),uc(e=>{let t=this.rpc();if(!t||!this.multiPage())return;let n=!0,r=null;e(()=>{n=!1,r?.()}),t.scope(`pangular`).rpc.sharedState(`component-tree`).then(e=>{if(!n)return;let t=e=>{let t=e?.pages;this.pageTitles.set(t&&typeof t==`object`?t:{})};t(e.value()),r=e.on(`updated`,t)}).catch(()=>{})}),this.destroyRef.onDestroy(()=>{this.stopTree?.(),this.highlight(null)})}clearQuery(){this.query.set(``),this.queryInput()?.nativeElement.focus()}label(e){return PF(e)}kind(e){return NF(e)}tone(e){return MF[e]??MF.null}kindById(e){let t=this.index().map.get(e);return t?NF(t):`null`}labelById(e){let t=this.index().map.get(e);return t?PF(t):e===jF?`Null injector`:`not listed`}capital(e){return e.charAt(0).toUpperCase()+e.slice(1)}matches(e){let t=this.normalizedQuery();return!!t&&e.toLowerCase().includes(t)}setView(e){this.view()!==e&&(this.view.set(e),this.choose(null),this.focusId.set(null))}select(e){this.choose(e),this.focusId.set(e)}choose(e){let t=e?this.index().map.get(e):void 0;this.selectedId.set(e),this.selectedLabel.set(t?PF(t):null),this.wasGone=!1}syncGone(){let e=this.gone()!==null;if(e&&!this.wasGone){let e=`The selected injector is no longer on the page.`;this.announcement.update(t=>t===e?`${e}\u00a0`:e)}this.wasGone=e}selectPage(e){if(!e||e===this.shownPageId())return;this.chosenPageId.set(e),this.wasGone=this.gone()!==null;let t=this.pageOptions().find(t=>t.value===e)?.label??e;this.announcement.set(`Showing the injectors of ${t}.`)}notePageGone(e){let t=this.chosenPageId();if(!t||e?.[t])return;let n=this.pageOptions().find(e=>e.value===t)?.label??`The chosen page`;this.chosenPageId.set(null),this.announcement.set(`${n} closed, so this shows another page.`),this.wasGone=!0}toggle(e,t){t?.stopPropagation(),!this.normalizedQuery()&&this.collapsed.update(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}reveal(e){let t=this.index().map.get(e);if(!t)return;this.setView(t.injector.type===`element`?`element`:`environment`);let{parents:n}=this.index();this.collapsed.update(t=>{let r=new Set(t),i=n.get(e);for(;i;)r.delete(i),i=n.get(i);return r}),this.onlyProviding()&&t.providers.length===0&&this.onlyProviding.set(!1),t.injector.type===`element`&&!t.injector.component&&this.componentsOnly.set(!1),this.select(e),Id(()=>this.focusRow(e,!1),{injector:this.injector})}highlight(e){let t=this.rpc();if(!t)return;let n=e?.injector.type===`element`?e.injector.selector??null:null,r=n?{pageId:this.shownPageId()||null,selector:n}:null;t.scope(`pangular`).rpc.call(`request-page-highlight`,r).catch(()=>{})}onTreeKey(e){let t=this.rows();if(!t.length)return;let n=this.rovingId(),r=t.findIndex(e=>e.node.injector.id===n),i=Math.max(r,0),a=t[i],o=-1;switch(e.key){case`ArrowDown`:o=Math.min(i+1,t.length-1);break;case`ArrowUp`:o=Math.max(i-1,0);break;case`Home`:o=0;break;case`End`:o=t.length-1;break;case`ArrowRight`:a.hasChildren&&!a.expanded?this.toggle(a.node.injector.id):a.hasChildren&&(o=i+1);break;case`ArrowLeft`:if(a.hasChildren&&a.expanded&&!this.normalizedQuery())this.toggle(a.node.injector.id);else{let e=this.index().parents.get(a.node.injector.id);o=t.findIndex(t=>t.node.injector.id===e)}break;case`Enter`:case` `:this.select(a.node.injector.id);break;default:return}if(e.preventDefault(),o>=0){let e=t[o].node.injector.id;this.focusId.set(e),this.choose(e),queueMicrotask(()=>this.focusRow(e,!0))}}focusRow(e,t){let n=document.querySelector(`.row[data-id="${CSS.escape(e)}"]`);n&&(t&&n.focus(),n.scrollIntoView({block:`nearest`}))}clearTree(){this.stopTree?.(),this.stopTree=null}async loadInjectorTree(e){let t=++this.treeLoad;this.clearTree();let n=e.scope(`pangular`),r;try{r=await n.rpc.sharedState(`injector-tree`)}catch{return}if(this.destroyRef.destroyed||this.rpc()!==e||t!==this.treeLoad)return;let i=e=>{let t=e&&typeof e==`object`?e:null;this.notePageGone(t?.pages),this.treeState.set(t),this.syncGone()};i(r.value()),this.clearTree(),this.stopTree=r.on(`updated`,i)}async loadSourceProviders(e){let t=e.scope(`pangular`);try{this.sourceProviders.set(await t.rpc.call(`get-providers`))}catch{this.sourceProviders.set([])}finally{this.loaded.set(!0)}}count(e){return e.reduce((e,t)=>e+1+this.count(t.children),0)}nodeMatches(e,t){let n=e.injector;return n.name.toLowerCase().includes(t)||!!n.component?.toLowerCase().includes(t)||!!n.directives?.some(e=>e.toLowerCase().includes(t))||e.providers.some(e=>e.token.toLowerCase().includes(t))||!!e.dependencies?.some(e=>e.token.toLowerCase().includes(t))}prune(e,t){let n=[];for(let r of e){let e=this.prune(r.children,t);(t(r)||e.length)&&n.push({...r,children:e})}return n}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-di-inspector`]],viewQuery:function(e,t){e&1&&e_(t.queryInput,xP,5),e&2&&t_()},inputs:{rpc:[1,`rpc`]},decls:8,vars:2,consts:[[`pagePicker`,``],[`queryInput`,``],[`role`,`status`,1,`sr-only`],[`role`,`status`,1,`state`],[1,`page-picker`],[`id`,`di-page-label`,1,`label-key`],[`labelledBy`,`di-page-label`,3,`valueChange`,`options`,`value`],[1,`intro`],[1,`toolbar`],[`role`,`group`,`aria-label`,`Injector tree`,1,`segmented`],[`type`,`button`,3,`click`],[1,`pill`],[1,`search`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`search-icon`],[`cx`,`11`,`cy`,`11`,`r`,`7`],[`d`,`m20 20-3.5-3.5`],[`type`,`search`,`placeholder`,`Find a token, component or injector…`,`aria-label`,`Find a token, component or injector`,`autocomplete`,`off`,`spellcheck`,`false`,3,`input`,`keydown.escape`,`value`],[3,`ngTemplateOutlet`],[1,`checkbox`],[`type`,`checkbox`,3,`change`,`checked`],[1,`notice`],[`role`,`status`,1,`where`],[`role`,`status`,1,`where`,`muted`],[1,`layout`],[1,`state`],[`role`,`tree`,1,`tree`,3,`keydown`,`hidden`],[`role`,`treeitem`,1,`row`,3,`selected`,`--%NS%depth`],[`aria-labelledby`,`di-detail-title`,1,`detail`,`gone`],[`aria-labelledby`,`di-detail-title`,1,`detail`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M12 11v5M12 8h.01`],[1,`where-label`],[`type`,`button`,1,`chip`],[`type`,`button`,1,`chip`,3,`click`],[`aria-hidden`,`true`,1,`dot`],[1,`mono`],[1,`chip-tokens`],[`type`,`button`,1,`link`,3,`click`],[1,`state-title`],[1,`state-hint`],[`role`,`treeitem`,1,`row`,3,`click`,`focus`,`blur`,`mouseenter`,`mouseleave`],[`aria-hidden`,`true`,1,`twisty`,3,`open`],[`aria-hidden`,`true`,1,`twisty-space`],[`aria-hidden`,`true`,1,`kind`],[1,`sr-only`],[1,`name`,`mono`],[1,`sub`],[1,`meta`],[1,`count`],[1,`count`,`provides`],[`aria-hidden`,`true`,1,`twisty`,3,`click`],[`viewBox`,`0 0 24 24`],[`d`,`m9 6 6 6-6 6`],[`d`,`M12 5v14M5 12l7 7 7-7`],[`d`,`M21 8 12 3 3 8v8l9 5 9-5z`],[1,`detail-head`],[`id`,`di-detail-title`,1,`mono`],[1,`state`,`compact`],[`type`,`button`],[1,`badge`],[`aria-label`,`Classes on this element`,1,`classes`],[1,`block`],[1,`hint`],[1,`path`],[3,`current`],[1,`providers`],[1,`empty-line`],[3,`is-component`],[1,`step`,`null`],[`type`,`button`,1,`step`],[1,`hint-inline`],[`type`,`button`,1,`step`,3,`click`],[1,`step-count`],[1,`deps`],[1,`dep`,3,`hit`],[1,`dep`],[1,`dep-main`],[1,`token`,`mono`],[1,`flag`],[1,`dep-meta`],[`type`,`button`,1,`from`],[1,`from`,`absent`],[1,`from`,`missing`],[`type`,`button`,1,`from`,3,`click`],[1,`provider`,3,`hit`],[1,`provider`],[1,`flag`,`kind-flag`],[`aria-hidden`,`true`,1,`spinner`],[`type`,`search`,`placeholder`,`Filter by token or file…`,`aria-label`,`Filter by token or file`,`autocomplete`,`off`,`spellcheck`,`false`,3,`input`,`keydown.escape`,`value`],[`aria-live`,`polite`,1,`total`],[1,`source-providers`],[1,`provider-group`],[1,`section-count`],[`role`,`list`,1,`provider-list`],[1,`provider-card`],[1,`provider-header`],[1,`token`],[1,`provided-in`],[1,`provider-meta`],[1,`as`]],template:function(e,t){e&1&&(z(0,`p`,2),J(1),B(),tg(2,kP,1,1,`ng-template`,null,0,gv),P(4,bF,33,18)(5,xF,4,0,`div`,3)(6,CF,6,1)(7,AF,20,5)),e&2&&(M(),Y(t.announcement()),M(3),F(t.roots().length>0?4:t.loaded()?t.sourceProviders().length===0?6:7:5))},dependencies:[$y,AD],styles:[`[_nghost-%COMP%] { + --%NS%directive: #7cb4ff; + display: block; + color: var(--%NS%text); + font-size: 13px; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] { + --%NS%directive: #1d4ed8; + } +} +:root[data-theme=light] [_nghost-%COMP%] { + --%NS%directive: #1d4ed8; +} + +.mono[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); +} + +.intro[_ngcontent-%COMP%] { + max-width: 720px; + margin: 0 0 12px; + color: var(--%NS%text-2); + line-height: 1.5; +} + +.toolbar[_ngcontent-%COMP%] { + position: sticky; + top: 0; + z-index: 2; + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: center; + margin: 0 0 12px; + padding: 8px; + background: color-mix(in srgb, var(--%NS%surface) 85%, transparent); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); +} + +.page-picker[_ngcontent-%COMP%] { + display: flex; + flex: 0 1 240px; + align-items: center; + gap: 8px; + min-width: 0; +} + +.page-picker[_ngcontent-%COMP%] app-select[_ngcontent-%COMP%] { + flex: 1 1 auto; + min-width: 0; +} + +.label-key[_ngcontent-%COMP%] { + flex: none; + color: var(--%NS%text-2); + font-size: 12px; +} + +.segmented[_ngcontent-%COMP%] { + display: inline-flex; + flex: none; + padding: 3px; + gap: 2px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); +} + +.segmented[_ngcontent-%COMP%] button[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + gap: 6px; + height: 26px; + padding: 0 10px; + border: 0; + border-radius: 6px; + background: none; + color: var(--%NS%text-2); + font-size: 12px; + font-weight: 600; + cursor: pointer; + transition: background-color 150ms var(--%NS%ease), color 150ms var(--%NS%ease); +} + +.segmented[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover { + color: var(--%NS%text); +} + +.segmented[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%] { + background: var(--%NS%surface-3); + color: var(--%NS%text-strong); +} + +.segmented[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: -2px; +} + +.pill[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + min-width: 18px; + height: 16px; + padding: 0 5px; + justify-content: center; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 10px; + font-weight: 600; + letter-spacing: 0; + font-variant-numeric: tabular-nums; +} + +.segmented[_ngcontent-%COMP%] .active[_ngcontent-%COMP%] .pill[_ngcontent-%COMP%] { + background: var(--%NS%accent-soft); + color: var(--%NS%accent); +} + +.search[_ngcontent-%COMP%] { + position: relative; + flex: 1 1 220px; + min-width: 0; +} + +.search-icon[_ngcontent-%COMP%] { + position: absolute; + top: 50%; + left: 12px; + width: 14px; + height: 14px; + transform: translateY(-50%); + fill: none; + stroke: var(--%NS%text-3); + stroke-width: 2.2; + stroke-linecap: round; + pointer-events: none; +} + +.search[_ngcontent-%COMP%]:focus-within .search-icon[_ngcontent-%COMP%] { + stroke: var(--%NS%accent); +} + +input[type=search][_ngcontent-%COMP%] { + width: 100%; + height: 34px; + padding: 0 12px 0 34px; + background: var(--%NS%bg); + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text); + font-size: 13px; + transition: border-color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +input[type=search][_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +input[type=search][_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.checkbox[_ngcontent-%COMP%] { + display: flex; + align-items: center; + gap: 8px; + height: 34px; + color: var(--%NS%text-2); + white-space: nowrap; + cursor: pointer; +} + +.checkbox[_ngcontent-%COMP%]:hover { + color: var(--%NS%text); +} + +.checkbox[_ngcontent-%COMP%] input[_ngcontent-%COMP%] { + width: 15px; + height: 15px; + margin: 0; + accent-color: var(--%NS%accent); + cursor: pointer; +} + +.checkbox[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.total[_ngcontent-%COMP%] { + flex: none; + color: var(--%NS%text-2); + font-size: 12px; + white-space: nowrap; +} + +.where[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 6px; + margin: 0 0 12px; + padding: 8px 10px; + border: 1px solid var(--%NS%accent-line); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%accent-soft); + animation: enter 0.2s var(--%NS%ease) both; +} + +.where.muted[_ngcontent-%COMP%] { + border-color: var(--%NS%border); + background: var(--%NS%surface); + color: var(--%NS%text-2); +} + +.where-label[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + margin-right: 4px; + color: var(--%NS%accent); +} + +.chip[_ngcontent-%COMP%], +.from[_ngcontent-%COMP%], +.step[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + gap: 6px; + min-width: 0; + max-width: 100%; + height: 26px; + padding: 0 10px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + background: var(--%NS%surface); + color: var(--%NS%text); + font-size: 12px; + cursor: pointer; + transition: border-color 150ms var(--%NS%ease), background-color 150ms var(--%NS%ease); +} + +.chip[_ngcontent-%COMP%]:hover, +.from[_ngcontent-%COMP%]:hover, +.step[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%accent-line); + background: var(--%NS%surface-2); +} + +.chip[_ngcontent-%COMP%]:focus-visible, +.from[_ngcontent-%COMP%]:focus-visible, +.step[_ngcontent-%COMP%]:focus-visible, +.link[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.chip-tokens[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; +} + +.link[_ngcontent-%COMP%] { + padding: 0; + border: 0; + background: none; + color: var(--%NS%accent); + font-size: 13px; + cursor: pointer; + text-decoration: underline; + text-underline-offset: 2px; +} + +.dot[_ngcontent-%COMP%] { + flex: none; + width: 7px; + height: 7px; + border-radius: 50%; +} + +.layout[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 12px; + align-items: start; +} + +@media (min-width: 880px) { + .layout[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr) minmax(340px, 44%); + } + .detail[_ngcontent-%COMP%] { + position: sticky; + top: 64px; + max-height: calc(100vh - 150px); + overflow: auto; + } +} +.tree[_ngcontent-%COMP%] { + min-width: 0; + padding: 6px; + background: var(--%NS%surface); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + animation: enter 0.35s var(--%NS%ease) both; +} + +.row[_ngcontent-%COMP%] { + position: relative; + display: flex; + align-items: center; + gap: 6px; + min-height: 32px; + padding: 0 8px 0 calc(4px + var(--%NS%depth, 0) * 18px); + border-radius: var(--%NS%radius-sm); + cursor: pointer; + transition: background-color 120ms var(--%NS%ease); +} + +.row[_ngcontent-%COMP%]::before { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 14px; + width: calc(var(--%NS%depth, 0) * 18px); + background: repeating-linear-gradient(to right, var(--%NS%border) 0 1px, transparent 1px 18px); + pointer-events: none; +} + +.row[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-2); +} + +.row[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: -2px; +} + +.row.selected[_ngcontent-%COMP%] { + background: var(--%NS%accent-soft); + box-shadow: inset 2px 0 0 var(--%NS%accent); +} + +.twisty[_ngcontent-%COMP%], +.twisty-space[_ngcontent-%COMP%] { + flex: none; + width: 20px; + height: 20px; +} + +.twisty[_ngcontent-%COMP%] { + display: grid; + place-items: center; + padding: 0; + border: 0; + border-radius: 4px; + background: none; + color: var(--%NS%text-3); + cursor: pointer; +} + +.twisty[_ngcontent-%COMP%]:hover { + color: var(--%NS%text); + background: var(--%NS%surface-3); +} + +.twisty[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] { + width: 14px; + height: 14px; + fill: none; + stroke: currentColor; + stroke-width: 2.2; + stroke-linecap: round; + stroke-linejoin: round; + transition: transform 150ms var(--%NS%ease); +} + +.twisty.open[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] { + transform: rotate(90deg); +} + +.kind[_ngcontent-%COMP%] { + flex: none; + display: grid; + place-items: center; + width: 18px; + height: 18px; + border-radius: 5px; + background: color-mix(in srgb, var(--%NS%tone) 16%, transparent); + color: var(--%NS%tone); + font-size: 10px; + font-weight: 700; +} + +.name[_ngcontent-%COMP%] { + min-width: 0; + color: var(--%NS%text); + font-size: 12px; + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; +} + +.row.selected[_ngcontent-%COMP%] .name[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-weight: 600; +} + +.sub[_ngcontent-%COMP%] { + flex: 0 1 auto; + min-width: 0; + color: var(--%NS%text-3); + font-size: 12px; + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; +} + +.meta[_ngcontent-%COMP%] { + display: inline-flex; + flex: none; + gap: 4px; + margin-left: auto; + padding-left: 8px; +} + +.count[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + gap: 3px; + height: 20px; + padding: 0 7px; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 11px; +} + +.count.provides[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.count[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] { + width: 11px; + height: 11px; + fill: none; + stroke: currentColor; + stroke-width: 2.2; + stroke-linecap: round; + stroke-linejoin: round; +} + +.detail[_ngcontent-%COMP%] { + min-width: 0; + background: var(--%NS%surface); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + animation: enter 0.35s var(--%NS%ease) both; +} + +.detail-head[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px 10px; + padding: 14px 16px; + border-bottom: 1px solid var(--%NS%border); +} + +.detail-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] { + flex: 1 1 auto; + min-width: 0; + margin: 0; + color: var(--%NS%text-strong); + font-size: 15px; + font-weight: 600; + overflow-wrap: anywhere; +} + +.badge[_ngcontent-%COMP%] { + padding: 2px 8px; + border-radius: 99px; + background: color-mix(in srgb, var(--%NS%tone) 14%, transparent); + color: var(--%NS%tone); + font-size: 10px; + font-weight: 700; + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.classes[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; +} + +.classes[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + padding: 1px 8px; + border: 1px solid var(--%NS%border-strong); + border-radius: 6px; + color: var(--%NS%text-2); + font-family: var(--%NS%font-mono); + font-size: 11px; +} + +.classes[_ngcontent-%COMP%] li.is-component[_ngcontent-%COMP%] { + border-color: var(--%NS%accent-line); + color: var(--%NS%accent); +} + +.block[_ngcontent-%COMP%] { + padding: 14px 16px; + border-bottom: 1px solid var(--%NS%border); +} + +.block[_ngcontent-%COMP%]:last-child { + border-bottom: 0; +} + +h3[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + display: flex; + align-items: center; + gap: 6px; + margin: 0 0 8px; +} + +.hint[_ngcontent-%COMP%] { + margin: -4px 0 10px; + color: var(--%NS%text-3); + font-size: 12px; +} + +.path[_ngcontent-%COMP%] { + position: relative; + display: grid; + gap: 6px; + margin: 0; + padding: 0 0 0 18px; + list-style: none; +} + +.path[_ngcontent-%COMP%]::before { + content: ""; + position: absolute; + top: 13px; + bottom: 13px; + left: 5px; + width: 1px; + background: var(--%NS%border-strong); +} + +.path[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + position: relative; + min-width: 0; +} + +.path[_ngcontent-%COMP%] li[_ngcontent-%COMP%]::before { + content: ""; + position: absolute; + top: 12px; + left: -16px; + width: 9px; + height: 1px; + background: var(--%NS%border-strong); +} + +.path[_ngcontent-%COMP%] li.current[_ngcontent-%COMP%] .step[_ngcontent-%COMP%] { + border-color: var(--%NS%accent); + background: var(--%NS%accent-soft); +} + +.step.null[_ngcontent-%COMP%] { + cursor: default; + color: var(--%NS%text-2); +} + +.step.null[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%border-strong); + background: var(--%NS%surface); +} + +.hint-inline[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +.step-count[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; +} + +.deps[_ngcontent-%COMP%], +.providers[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + margin: 0; + padding: 0; + list-style: none; +} + +.dep[_ngcontent-%COMP%], +.provider[_ngcontent-%COMP%] { + min-width: 0; + padding: 8px 10px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); +} + +.dep.hit[_ngcontent-%COMP%], +.provider.hit[_ngcontent-%COMP%] { + border-color: var(--%NS%accent-line); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.dep-main[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 6px; +} + +.token[_ngcontent-%COMP%] { + min-width: 0; + color: var(--%NS%text-strong); + font-size: 12px; + font-weight: 600; + overflow-wrap: anywhere; +} + +.flag[_ngcontent-%COMP%] { + padding: 0 6px; + border: 1px solid var(--%NS%border-strong); + border-radius: 5px; + color: var(--%NS%text-2); + font-family: var(--%NS%font-mono); + font-size: 10px; + line-height: 16px; +} + +.kind-flag[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%accent) 30%, transparent); + background: color-mix(in srgb, var(--%NS%accent) 12%, transparent); + color: var(--%NS%accent); +} + +.dep-meta[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 6px 10px; + margin-top: 6px; + color: var(--%NS%text-3); + font-size: 12px; + overflow-wrap: anywhere; +} + +.from[_ngcontent-%COMP%] { + height: 22px; + padding: 0 8px; + color: var(--%NS%text-2); +} + +.from[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%] { + color: var(--%NS%text); +} + +.from.absent[_ngcontent-%COMP%] { + cursor: default; + background: none; +} + +.from.missing[_ngcontent-%COMP%] { + cursor: default; + border-color: color-mix(in srgb, var(--%NS%warn) 40%, transparent); + background: none; + color: var(--%NS%warn); +} + +.empty-line[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-2); +} + +.state[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + padding: 40px 16px; + text-align: center; + background: var(--%NS%surface); + border: 1px dashed var(--%NS%border-strong); + border-radius: var(--%NS%radius); + animation: enter 0.35s var(--%NS%ease) both; +} + +.state.compact[_ngcontent-%COMP%] { + padding: 24px 12px; + border: 0; +} + +.state-title[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.state-hint[_ngcontent-%COMP%] { + max-width: 440px; + margin: 0; + color: var(--%NS%text-2); + line-height: 1.5; +} + +.spinner[_ngcontent-%COMP%] { + width: 20px; + height: 20px; + border: 2px solid var(--%NS%border-strong); + border-top-color: var(--%NS%accent); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +@media (prefers-reduced-motion: reduce) { + .spinner[_ngcontent-%COMP%] { + animation: none; + } +} +button[_ngcontent-%COMP%] { + font: inherit; +} + +.state[_ngcontent-%COMP%] button[_ngcontent-%COMP%], +.provider-group[_ngcontent-%COMP%] button[_ngcontent-%COMP%] { + height: 34px; + padding: 0 14px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + cursor: pointer; +} + +.state-title[_ngcontent-%COMP%] + .state-hint[_ngcontent-%COMP%] + button[_ngcontent-%COMP%] { + margin-top: 8px; +} + +.state[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.gone[_ngcontent-%COMP%] .state[_ngcontent-%COMP%] { + align-items: flex-start; + text-align: left; +} + +.notice[_ngcontent-%COMP%] { + display: flex; + align-items: flex-start; + gap: 8px; + margin: 0 0 16px; + padding: 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface); + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; +} + +.notice[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] { + color: var(--%NS%text); + font-weight: 600; +} + +.notice[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] { + flex: none; + width: 16px; + height: 16px; + margin-top: 2px; + fill: none; + stroke: var(--%NS%accent); + stroke-width: 2; + stroke-linecap: round; +} + +.source-providers[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + gap: 24px; + animation: enter 0.35s var(--%NS%ease) both; +} + +.provider-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + display: flex; + align-items: center; + gap: 8px; + margin: 0 0 8px; +} + +.section-count[_ngcontent-%COMP%] { + padding: 0 6px; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 10px; + letter-spacing: 0; + line-height: 16px; + font-variant-numeric: tabular-nums; +} + +.provider-list[_ngcontent-%COMP%] { + list-style: none; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + gap: 6px; +} + +.provider-card[_ngcontent-%COMP%] { + min-width: 0; + background: var(--%NS%surface); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + padding: 8px 12px; + transition: background-color 150ms var(--%NS%ease), border-color 150ms var(--%NS%ease); +} + +.provider-card[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-2); + border-color: var(--%NS%border-strong); +} + +.provider-header[_ngcontent-%COMP%] { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 4px 8px; +} + +.provider-header[_ngcontent-%COMP%] .token[_ngcontent-%COMP%] { + font-size: 13px; + font-weight: 600; +} + +.provided-in[_ngcontent-%COMP%] { + font-size: 11px; + padding: 1px 8px; + border-radius: 99px; + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); + border-width: 1px; + border-style: solid; +} + +.provider-meta[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 0 8px; + margin-top: 4px; + font-family: var(--%NS%font-mono); + font-size: 11px; + color: var(--%NS%text-3); +} + +.provider-meta[_ngcontent-%COMP%] .path[_ngcontent-%COMP%] { + min-width: 0; + overflow-wrap: anywhere; +} + +.provider-meta[_ngcontent-%COMP%] .as[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +}`]})};function LF(e,t){if(e.pageId!==t.pageId)return!1;let n=e.log.at(-1);if(!n)return!0;let r=t.log.at(-1);if(!r||r.seqe.seq===n.seq);return!i||i.timestamp===n.timestamp}var RF=`@type`,zF=new Set([`undefined`,`number`,`bigint`,`symbol`,`function`,`Date`,`RegExp`,`Error`,`Element`,`Map`,`Set`]);function BF(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&RF in e&&zF.has(e[RF])}function VF(e){return/^[A-Za-z_$][\w$]*$/.test(e)?e:JSON.stringify(e)}function HF(e,t=``){if(e===null)return`null`;if(typeof e==`string`)return JSON.stringify(e);if(typeof e!=`object`)return String(e);let n=t+` `;if(Array.isArray(e))return e.length?`[\n${e.map(e=>n+HF(e,n)).join(`, +`)}\n${t}]`:`[]`;if(BF(e)){let r=e;switch(r[RF]){case`undefined`:return`undefined`;case`Date`:return`Date(${r.value})`;case`bigint`:return`${r.value}n`;case`symbol`:return`Symbol(${r.value})`;case`function`:return`ƒ ${r.name}()`;case`Error`:return`${r.name??`Error`}: ${r.message}`;case`Element`:return`<${r.value}>`;case`Map`:{let e=r.entries??[];if(!e.length)return`Map(${r.size}) {}`;let i=e.map(([e,t])=>`${n}${HF(e,n)} => ${HF(t,n)}`);return`Map(${r.size}) {\n${i.join(`, +`)}\n${t}}`}case`Set`:{let e=r.values??[];return e.length?`Set(${r.size}) {\n${e.map(e=>n+HF(e,n)).join(`, +`)}\n${t}}`:`Set(${r.size}) {}`}default:return String(r.value??r[RF])}}let r=Object.entries(e);return r.length?`{\n${r.map(([e,t])=>`${n}${VF(e)}: ${HF(t,n)}`).join(`, +`)}\n${t}}`:`{}`}function UF(e,t=120){let n=HF(e).replace(/\s*\n\s*/g,` `);return n.length>t?`${n.slice(0,t-1)}…`:n}var WF=[`eventDetailHeading`],GF=[`cancelButton`],KF=[`restoreButton`],qF=[`stateTree`],JF=[`filterInput`],YF=[`latestButton`],XF=e=>({selected:e,headingLevel:5,idPrefix:`ngrx-change`}),ZF=e=>({selected:e,headingLevel:3,idPrefix:`ngrx-event`}),QF=(e,t)=>t.id,$F=(e,t)=>t.seq,eI=(e,t)=>t.key,tI=(e,t)=>t.name,nI=(e,t)=>t.idsKey,rI=(e,t)=>t.path,iI=(e,t)=>t.kind,aI=(e,t)=>t.name+t.file+t.line;function oI(e,t){if(e&1){let e=W();z(0,`span`,24),J(1,`Page`),B(),z(2,`app-select`,25),G(`valueChange`,function(t){return O(e),k(K().selectPage(t))}),B()}if(e&2){let e=K();M(2),R(`options`,e.pageOptions())(`value`,e.page()?.pageId??null)}}function sI(e,t){if(e&1&&(z(0,`span`,14),J(1),B()),e&2){let e=K();M(),Y(e.liveStores().length)}}function cI(e,t){if(e&1){let e=W();z(0,`div`,15)(1,`p`,26),J(2,`Could not load the live store state.`),B(),z(3,`p`,27),J(4,`Check that the dev server with Pangular Inspector is still running.`),B(),z(5,`button`,28),G(`click`,function(){return O(e),k(K().retry())}),J(6,`Retry`),B()()}}function lI(e,t){e&1&&(z(0,`div`,16)(1,`p`,26),J(2,`No page is reporting NgRx state yet.`),B(),z(3,`p`,27),J(4,` Open the app in a browser. Stores show up here as soon as the page creates them. `),B()())}function uI(e,t){e&1&&(z(0,`p`,26),J(1,`No signal store instance on this page yet.`),B(),z(2,`p`,27),J(3,` A `),z(4,`code`),J(5,`signalStore`),B(),J(6,` is created the first time something injects it. Navigate to a page that uses the store and it appears here. `),B())}function dI(e,t){e&1&&(z(0,`p`,26),J(1,`The @ngrx/store Store was not found on this page.`),B(),z(2,`p`,27),J(3,` Check that `),z(4,`code`),J(5,`provideStore()`),B(),J(6,` or `),z(7,`code`),J(8,`StoreModule.forRoot()`),B(),J(9,` is part of the providers of the running app. `),B())}function fI(e,t){e&1&&(z(0,`p`,26),J(1,`This page has no NgRx store.`),B(),z(2,`p`,27),J(3,` Stores from `),z(4,`code`),J(5,`@ngrx/signals`),B(),J(6,` (`),z(7,`code`),J(8,`signalStore`),B(),J(9,`, `),z(10,`code`),J(11,`signalState`),B(),J(12,`) and `),z(13,`code`),J(14,`@ngrx/store`),B(),J(15,` are listed here once the app creates them. `),B())}function pI(e,t){if(e&1&&(z(0,`div`,16),P(1,uI,7,0)(2,dI,10,0)(3,fI,16,0),B()),e&2){let e=K();M(),F(e.usesSignals()?1:e.usesClassic()?2:3)}}function mI(e,t){if(e&1){let e=W();z(0,`li`)(1,`button`,32),G(`click`,function(){let t=O(e).$implicit;return k(K(2).selectStore(t.id))}),z(2,`span`,33),V(3,`span`,34),z(4,`span`,35),J(5),B()(),z(6,`span`,36),J(7),B()()()}if(e&2){let e=t.$implicit,n=K(2);M(),q(`selected`,e.id===n.store()?.id),N(`aria-pressed`,e.id===n.store()?.id),M(2),C_(`background`,n.kindColor(e.kind)),M(2),Y(e.label),M(2),X_(` `,n.kindLabel(e.kind),` · `,e.scope,` · `,n.changeCount(e.id),` `,n.changeCount(e.id)===1?`change`:`changes`,` `)}}function hI(e,t){e&1&&(z(0,`li`,30),J(1,`No stores match this filter.`),B())}function gI(e,t){if(e&1&&(z(0,`span`,40),J(1),B()),e&2){let e=t;R(`title`,e),M(),Y(e)}}function _I(e,t){if(e&1&&(z(0,`span`,39),J(1),B()),e&2){let e=K();M(),Y(e.classic.devtools?`Store DevTools on`:`Store DevTools off`)}}function vI(e,t){if(e&1&&(z(0,`code`),J(1),B(),J(2)),e&2){let e=t.$implicit,n=t.$index,r=t.$count;M(),Y(e),M(),X(``,n===r-1?``:`, `,` `)}}function yI(e,t){if(e&1&&(z(0,`p`,41),J(1,` Referenced by `),I(2,vI,3,2,null,null,wg),B()),e&2){let e=K();M(2),L(e.signal.references)}}function bI(e,t){if(e&1&&(z(0,`p`,57),J(1),B()),e&2){let e=K(4);M(),Y(e.restoreOff)}}function xI(e,t){if(e&1){let e=W();z(0,`div`,42)(1,`p`)(2,`strong`),J(3,`Viewing a past state.`),B(),J(4,` New actions are logged but do not change the state until you go back to the latest state. `),B(),z(5,`button`,56,3),G(`click`,function(){return O(e),k(K(3).backToLatest())}),J(7,` Back to latest `),B(),P(8,bI,2,1,`p`,57),B()}if(e&2){let e=K(3);M(5),R(`disabled`,e.busy()||!e.canRestore()),N(`aria-describedby`,e.canRestore()?null:`store-latest-off`),M(3),F(e.canRestore()?-1:8)}}function SI(e,t){if(e&1&&(z(0,`dt`),J(1),B(),z(2,`dd`)(3,`code`,65),J(4),B()()),e&2){let e=t.$implicit;M(),Y(e.key),M(2),R(`title`,e.full),M(),Y(e.value)}}function CI(e,t){if(e&1&&(z(0,`dl`,60),I(1,SI,5,3,null,null,eI),B()),e&2){let e=K(4);M(),L(e.computedEntries())}}function wI(e,t){e&1&&(z(0,`p`,61),J(1,`No computed signals.`),B())}function TI(e,t){e&1&&(z(0,`span`,67),J(1,`signalMethod`),B())}function EI(e,t){e&1&&(z(0,`span`,67),J(1,`rxMethod`),B())}function DI(e,t){if(e&1&&(z(0,`li`,66),J(1),P(2,TI,2,0,`span`,67)(3,EI,2,0,`span`,67),z(4,`span`,68),J(5),B()()),e&2){let e=t.$implicit,n=K(5);M(),X(` `,e.name,` `),M(),F(e.signalMethod?2:e.rx?3:-1),M(3),Y_(``,e.calls,` `,e.calls===1?`call`:`calls`,``,n.methodDuration(e))}}function OI(e,t){if(e&1&&(z(0,`ul`,63),I(1,DI,6,5,`li`,66,tI),B()),e&2){let e=K();M(),L(e.methods)}}function kI(e,t){e&1&&(z(0,`p`,61),J(1,`No methods.`),B())}function AI(e,t){if(e&1&&(z(0,`li`,66),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function jI(e,t){if(e&1&&(z(0,`li`,75),J(1),B()),e&2){let e=K().$implicit;R(`title`,K(5).entityOverflowTitle(e.ids,e.count)),M(),X(` +`,e.count-30,` more `)}}function MI(e,t){if(e&1&&(z(0,`code`,65),J(1),B()),e&2){let e=K(2).$implicit,t=K(5);R(`title`,t.prettyText(e.selected)),M(),Y(t.shortText(e.selected))}}function NI(e,t){e&1&&(z(0,`span`,61),J(1,`None selected`),B())}function PI(e,t){if(e&1&&(z(0,`dl`,60)(1,`dt`),J(2,`Selected`),B(),z(3,`dd`),P(4,MI,2,2,`code`,65)(5,NI,2,0,`span`,61),B()()),e&2){let e=K().$implicit;M(4),F(e.selected===void 0?5:4)}}function FI(e,t){if(e&1&&(z(0,`div`,71)(1,`div`,72)(2,`span`,66),J(3),B(),z(4,`span`,73),J(5),B()(),z(6,`ul`,74),I(7,AI,2,1,`li`,66,wg),P(9,jI,2,2,`li`,75),B(),P(10,PI,6,1,`dl`,60),B()),e&2){let e=t.$implicit,n=K(5);M(3),Y(e.collection??`entities`),M(2),Z(``,e.count,` `,e.count===1?`entity`:`entities`),M(),N(`aria-label`,(e.collection??`entities`)+` ids`),M(),L(n.entityIds(e.ids)),M(2),F(e.count>30?9:-1),M(),F(e.selectedId===void 0?-1:10)}}function II(e,t){if(e&1&&(z(0,`section`,64)(1,`h4`,69),J(2,`Entities`),B(),z(3,`div`,70),I(4,FI,11,6,`div`,71,nI),B()()),e&2){let e=K();M(4),L(e.entities)}}function LI(e,t){if(e&1&&(z(0,`section`,58)(1,`h4`,59),J(2,`Computed`),B(),P(3,CI,3,0,`dl`,60)(4,wI,2,0,`p`,61),z(5,`h4`,62),J(6,`Methods`),B(),P(7,OI,3,0,`ul`,63)(8,kI,2,0,`p`,61),B(),P(9,II,6,0,`section`,64)),e&2){let e=t,n=K(3);M(3),F(n.computedEntries().length?3:4),M(4),F(e.methods.length?7:8),M(2),F(e.entities?.length?9:-1)}}function RI(e,t){if(e&1&&(z(0,`span`,80),J(1),B()),e&2){let e=t;R(`title`,`Caused by `+K(4).kindLabel(`event`)+`: `+e.type),M(),Y(e.type)}}function zI(e,t){if(e&1&&(z(0,`span`,67),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.origin)}}function BI(e,t){if(e&1&&J(0),e&2){let e=K().$implicit;X(` · `,K(3).formatDuration(e.durationMs),` `)}}function VI(e,t){if(e&1){let e=W();z(0,`li`)(1,`button`,76),G(`click`,function(){let t=O(e).$implicit;return k(K(3).selectChange(t.seq))}),z(2,`span`,77),J(3),B(),z(4,`span`,78)(5,`span`,79),J(6),B(),P(7,RI,2,2,`span`,80),B(),z(8,`span`,81),P(9,zI,2,1,`span`,67),J(10),P(11,BI,1,1),B()()()}if(e&2){let e,n=t.$implicit,r=K(3);M(),q(`selected`,n.seq===r.selectedChangeSeq()),N(`aria-pressed`,n.seq===r.selectedChangeSeq())(`aria-controls`,n.seq===r.selectedChangeSeq()?`ngrx-change-detail`:null),M(2),X(`#`,n.seq),M(2),R(`title`,n.type),M(),Y(n.type),M(),F((e=n.causedByEvent)?7:-1,e),M(2),F(n.origin?9:-1),M(),Z(` `,n.diff.length===0?`no change`:n.diff.length+(n.diff.length===1?` change`:` changes`),` · `,r.formatTime(n.timestamp),` `),M(),F(n.durationMs===void 0?-1:11)}}function HI(e,t){e&1&&J(0,` No entries match this filter. `)}function UI(e,t){e&1&&J(0,` No actions dispatched since the page connected. `)}function WI(e,t){e&1&&J(0,` No state changes yet. Method calls and patchState writes that change the state are recorded here. `)}function GI(e,t){if(e&1&&(z(0,`li`,30),P(1,HI,1,0)(2,UI,1,0)(3,WI,1,0),B()),e&2){let e=K(),t=K(2);M(),F(t.filter()?1:e.classic?2:3)}}function KI(e,t){if(e&1&&(z(0,`div`,54),zg(1,82),B()),e&2){K(3);let e=n_(20);M(),R(`ngTemplateOutlet`,e)(`ngTemplateOutletContext`,sv(2,XF,t))}}function qI(e,t){if(e&1&&V(0,`option`,87),e&2){let e=t.$implicit;R(`value`,e)}}function JI(e,t){if(e&1&&(z(0,`p`,93),J(1),B()),e&2){let e=K(4);M(),Y(e.restoreOff)}}function YI(e,t){if(e&1){let e=W();z(0,`section`,55)(1,`h4`,83),J(2,`Dispatch an action`),B(),z(3,`form`,84),G(`submit`,function(t){return O(e),k(K(3).dispatchAction(t))}),z(4,`label`)(5,`span`),J(6,`Type`),B(),z(7,`input`,85),G(`input`,function(t){return O(e),k(K(3).dispatchType.set(t.target.value))}),B()(),z(8,`datalist`,86),I(9,qI,1,1,`option`,87,wg),B(),z(11,`label`)(12,`span`),J(13,`Payload `),z(14,`span`,88),J(15,`(JSON object, optional)`),B()(),z(16,`textarea`,89),G(`input`,function(t){return O(e),k(K(3).dispatchPayload.set(t.target.value))}),B()(),z(17,`p`,90),J(18),B(),z(19,`div`,91)(20,`button`,92),J(21,` Dispatch `),B()(),P(22,JI,2,1,`p`,93),B()()}if(e&2){let e=K(3);M(7),R(`value`,e.dispatchType()),M(2),L(e.actionTypes()),M(7),R(`value`,e.dispatchPayload()),N(`aria-invalid`,e.payloadError()?`true`:null),M(2),Y(e.payloadError()),M(2),R(`disabled`,e.busy()||!e.canRestore()||!e.dispatchRequest()),N(`aria-describedby`,e.canRestore()?null:`store-dispatch-off`),M(2),F(e.canRestore()?-1:22)}}function XI(e,t){if(e&1){let e=W();z(0,`div`,31)(1,`div`,37)(2,`h3`),J(3),B(),z(4,`div`,38)(5,`span`,39),J(6),B(),z(7,`span`,39),J(8),B(),P(9,gI,2,2,`span`,40),P(10,_I,2,1,`span`,39),B(),P(11,yI,4,0,`p`,41),B(),P(12,xI,9,3,`div`,42),z(13,`div`,43)(14,`section`,44)(15,`div`,45)(16,`h4`,46),J(17,`State`),B(),z(18,`button`,47),G(`click`,function(){return O(e),k(K(2).copyState())}),J(19,` Copy `),B()(),z(20,`pre`,48,2),J(22),B()(),P(23,LI,10,3),B(),z(24,`section`,49)(25,`h4`,50),J(26),z(27,`span`,14),J(28),B()(),V(29,`app-limit-note`,51),z(30,`div`,52)(31,`ul`,53),I(32,VI,12,12,`li`,null,$F,!1,GI,4,1,`li`,30),B(),P(35,KI,2,4,`div`,54),B()(),P(36,YI,23,7,`section`,55),B()}if(e&2){let e,n,r,i=t,a=K(2);M(3),Y(i.label),M(3),Y(a.kindLabel(i.kind)),M(2),X(`scope: `,i.scope),M(),F((e=i.signal?.declaredIn)?9:-1,e),M(),F(i.classic?10:-1),M(),F(i.signal?.references?.length?11:-1),M(),F(i.classic?.paused?12:-1),M(10),Y(a.stateText()),M(),F((n=i.signal)?23:-1,n),M(3),X(` `,i.classic?`Action log`:`Change log`,` `),M(2),Y(a.storeLog().length),M(),R(`dropped`,a.page()?.dropped??0)(`max`,a.maxLog()),M(2),N(`aria-label`,i.classic?`Actions`:`Changes`),M(),L(a.storeLog()),M(3),F((r=a.changeEntry())?35:-1,r),M(),F(i.classic?36:-1)}}function ZI(e,t){if(e&1&&(z(0,`div`,17)(1,`ul`,29),I(2,mI,8,10,`li`,null,QF,!1,hI,2,0,`li`,30),B(),P(5,XI,37,17,`div`,31),B()),e&2){let e,t=K();M(2),L(t.filteredStores()),M(3),F((e=t.store())?5:-1,e)}}function QI(e,t){if(e&1&&(z(0,`code`,100),J(1),B()),e&2){let e=K().$implicit,t=K(2);R(`title`,t.prettyText(e.payload)),M(),Y(t.shortText(e.payload))}}function $I(e,t){if(e&1){let e=W();z(0,`li`)(1,`button`,98),G(`click`,function(){let t=O(e).$implicit;return k(K(2).selectEvent(t.seq))}),V(2,`span`,34),z(3,`span`,99),J(4),B(),P(5,QI,2,2,`code`,100),z(6,`span`,101),J(7),B()()()}if(e&2){let e=t.$implicit,n=K(2);M(),q(`selected`,e.seq===n.selectedEventSeq()),N(`aria-pressed`,e.seq===n.selectedEventSeq())(`aria-controls`,e.seq===n.selectedEventSeq()?`ngrx-event-detail`:null),M(),C_(`background`,n.kindColor(`event`)),M(),R(`title`,e.eventType??e.type),M(),Y(e.eventType??e.type),M(),F(e.payload===void 0?-1:5),M(2),Y(n.formatTime(e.timestamp))}}function eL(e,t){e&1&&(z(0,`li`,30),J(1,`No events match this filter.`),B())}function tL(e,t){if(e&1&&(z(0,`div`,97,4),zg(2,82),B()),e&2){K(2);let e=n_(20);M(2),R(`ngTemplateOutlet`,e)(`ngTemplateOutletContext`,sv(2,ZF,t))}}function nL(e,t){if(e&1&&(z(0,`section`,19)(1,`div`,12)(2,`h2`,94),J(3,`Events`),B(),z(4,`span`,14),J(5),B()(),z(6,`p`,95),J(7,` Events dispatched through @ngrx/signals/events, across every store on this page. `),B(),z(8,`ul`,96),I(9,$I,8,10,`li`,null,$F,!1,eL,2,0,`li`,30),B(),P(12,tL,3,4,`div`,97),B()),e&2){let e,t=K();M(5),Y(t.pageEvents().length),M(4),L(t.pageEvents()),M(3),F((e=t.eventEntry())?12:-1,e)}}function rL(e,t){if(e&1&&(z(0,`dt`),J(1,`Origin`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().selected,t=K();M(3),Y(t.originText(e.origin))}}function iL(e,t){if(e&1&&(z(0,`dt`),J(1,`Duration`),B(),z(2,`dd`),J(3),B()),e&2){let e=K().selected,t=K();M(3),Y(t.formatDuration(e.durationMs))}}function aL(e,t){if(e&1&&(z(0,`dt`),J(1,`Action`),B(),z(2,`dd`)(3,`pre`,106),J(4),B()()),e&2){let e=K().selected,t=K();M(4),Y(t.prettyText(e.action))}}function oL(e,t){if(e&1&&(z(0,`dt`),J(1,`Arguments`),B(),z(2,`dd`)(3,`pre`,106),J(4),B()()),e&2){let e=K().selected,t=K();M(4),Y(t.prettyText(e.args))}}function sL(e,t){if(e&1&&(z(0,`dt`),J(1,`Payload`),B(),z(2,`dd`)(3,`pre`,106),J(4),B()()),e&2){let e=K().selected,t=K();M(4),Y(t.prettyText(e.payload))}}function cL(e,t){if(e&1&&(z(0,`pre`,106),J(1),B()),e&2){let e=K(),t=K(2);M(),Y(t.prettyText(e.payload))}}function lL(e,t){if(e&1&&(z(0,`dt`),J(1,`Caused by event`),B(),z(2,`dd`)(3,`code`,107),J(4),B(),P(5,cL,2,1,`pre`,106),B()),e&2){let e=t;M(4),Y(e.type),M(),F(e.payload===void 0?-1:5)}}function uL(e,t){if(e&1){let e=W();z(0,`button`,112),G(`click`,function(){O(e);let t=K(2).selected;return k(K().copyDiff(t))}),J(1,` Copy `),B()}if(e&2){let e=K(2).selected;N(`aria-label`,`Copy the state diff of #`+e.seq)}}function dL(e,t){if(e&1&&(z(0,`code`,117),J(1),B()),e&2){let e=K().$implicit,t=K(4);M(),Y(t.shortText(e.before))}}function fL(e,t){e&1&&(z(0,`span`,119),J(1,`→`),B(),z(2,`span`,120),J(3,`became`),B())}function pL(e,t){if(e&1&&(z(0,`code`,118),J(1),B()),e&2){let e=K().$implicit,t=K(4);M(),Y(t.shortText(e.after))}}function mL(e,t){if(e&1&&(z(0,`li`)(1,`span`,114),J(2),B(),z(3,`code`,115),J(4),B(),z(5,`span`,116),P(6,dL,2,1,`code`,117),P(7,fL,4,0),P(8,pL,2,1,`code`,118),B()()),e&2){let e=t.$implicit,n=K(4);w_(`diff-row `+e.op),M(2),Y(n.opLabel(e.op)),M(2),Y(e.path),M(2),F(e.op===`add`?-1:6),M(),F(e.op===`change`?7:-1),M(),F(e.op===`remove`?-1:8)}}function hL(e,t){if(e&1&&(z(0,`ul`,111),I(1,mL,9,7,`li`,113,rI),B()),e&2){let e=K(2).selected;M(),L(e.diff)}}function gL(e,t){e&1&&(z(0,`p`,61),J(1,`The state did not change.`),B())}function _L(e,t){if(e&1&&(z(0,`div`,108)(1,`div`,109),J(2,`State diff`),B(),P(3,uL,2,1,`button`,110),B(),P(4,hL,3,0,`ul`,111)(5,gL,2,0,`p`,61)),e&2){let e=K(),t=e.selected,n=e.headingLevel;M(),N(`aria-level`,n+1),M(2),F(t.diff.length?3:-1),M(),F(t.diff.length?4:5)}}function vL(e,t){if(e&1&&J(0),e&2){let e=K(2).selected;X(` Store DevTools jumps the app state to the state right after action #`,e.seq,`. Until you go back to the latest state, new actions are logged but do not change the state. `)}}function yL(e,t){if(e&1&&J(0),e&2){let e=K(3).selected;Z(` This sets every state key of `,t.label,` back to its value right after change #`,e.seq,`. Components that read the store update at once, and a new "Restore" entry is added to the log. `)}}function bL(e,t){if(e&1&&J(0),e&2){let e=K(3).selected;X(` This sets every state key of the store back to its value right after change #`,e.seq,`. Components that read the store update at once, and a new "Restore" entry is added to the log. `)}}function xL(e,t){if(e&1&&P(0,yL,1,2)(1,bL,1,1),e&2){let e;F((e=K(3).store())?0:1,e)}}function SL(e,t){if(e&1){let e=W();z(0,`div`,121),G(`keydown.escape`,function(t){return O(e),k(K(2).cancelRestore(t))}),z(1,`p`,122),P(2,vL,1,1)(3,xL,2,1),B(),z(4,`div`,91)(5,`button`,56),G(`click`,function(){O(e);let t=K().selected;return k(K().restore(t.seq,t.source===`store`))}),J(6,` Restore `),B(),z(7,`button`,28,5),G(`click`,function(){return O(e),k(K(2).cancelRestore())}),J(9,` Cancel `),B()()()}if(e&2){let e=K(),t=e.selected,n=e.idPrefix,r=K();N(`aria-labelledby`,n+`-confirm-text`),M(),R(`id`,n+`-confirm-text`),M(),F(t.source===`store`?2:3),M(3),R(`disabled`,r.busy())}}function CL(e,t){if(e&1){let e=W();z(0,`button`,127,6),G(`click`,function(){O(e);let t=K(2).selected;return k(K().askRestore(t.seq))}),J(2,` Restore this state `),B()}if(e&2){let e=K(2).idPrefix,t=K();R(`disabled`,!t.canRestore()),N(`aria-describedby`,t.canRestore()?null:e+`-writes-off`)}}function wL(e,t){if(e&1){let e=W();z(0,`button`,128),G(`click`,function(){O(e);let t=K(2).selected;return k(K().dispatchAgain(t.seq))}),J(1,` Dispatch again `),B()}if(e&2){let e=K(2).idPrefix,t=K();R(`disabled`,t.busy()||!t.canRestore()),N(`aria-describedby`,t.canRestore()?null:e+`-writes-off`)}}function TL(e,t){if(e&1&&(z(0,`p`,126),J(1),B()),e&2){let e=K(2).idPrefix,t=K();R(`id`,e+`-writes-off`),M(),Y(t.restoreOff)}}function EL(e,t){if(e&1&&(z(0,`div`,123),P(1,CL,3,2,`button`,124),P(2,wL,2,2,`button`,125),B(),P(3,TL,2,2,`p`,126)),e&2){let e=K().selected,t=K();M(),F(e.restorable?1:-1),M(),F(t.canAgain(e)?2:-1),M(),F(t.canRestore()?-1:3)}}function DL(e,t){e&1&&(J(0,` Store DevTools no longer holds this action, so this state cannot be restored. It was dropped past `),z(1,`code`),J(2,`maxAge`),B(),J(3,`, or the Store DevTools history was committed, reset or imported. `))}function OL(e,t){e&1&&(J(0,` Store DevTools never recorded this action, so this state cannot be restored. An `),z(1,`code`),J(2,`actionsBlocklist`),B(),J(3,`, `),z(4,`code`),J(5,`actionsSafelist`),B(),J(6,` or `),z(7,`code`),J(8,`predicate`),B(),J(9,` option filtered it out, or recording was paused. `))}function kL(e,t){e&1&&(J(0,` Time travel for @ngrx/store needs `),z(1,`code`),J(2,`provideStoreDevtools()`),B(),J(3,`. Without it, entries cannot be restored. `))}function AL(e,t){if(e&1&&(z(0,`p`,105),P(1,DL,4,0)(2,OL,10,0)(3,kL,4,0),B()),e&2){let e=K().selected;M(),F(e.unrestorable===`dropped`?1:e.unrestorable===`not-recorded`?2:3)}}function jL(e,t){if(e&1&&(z(0,`section`,102)(1,`div`,103),J(2),B(),z(3,`dl`,60)(4,`dt`),J(5,`Time`),B(),z(6,`dd`),J(7),B(),P(8,rL,4,1),P(9,iL,4,1),P(10,aL,5,1),P(11,oL,5,1),P(12,sL,5,1),P(13,lL,6,2),B(),P(14,_L,6,3),P(15,SL,10,4,`div`,104),P(16,EL,4,3),P(17,AL,4,1,`p`,105),B()),e&2){let e,n=t.selected,r=t.headingLevel,i=t.idPrefix,a=K();N(`aria-labelledby`,i+`-entry-heading`),M(),R(`id`,i+`-entry-heading`),N(`aria-level`,r),M(),Z(` #`,n.seq,` `,n.type,` `),M(5),Y(a.formatTime(n.timestamp)),M(),F(n.origin?8:-1),M(),F(n.durationMs===void 0?-1:9),M(),F(n.action===void 0?-1:10),M(),F(n.args?.length?11:-1),M(),F(n.source===`event`&&n.payload!==void 0?12:-1),M(),F((e=n.causedByEvent)?13:-1,e),M(),F(n.source===`event`?-1:14),M(),F(n.restorable&&a.confirmSeq()===n.seq?15:-1),M(),F(a.confirmSeq()!==n.seq&&(n.restorable||a.canAgain(n))?16:-1),M(),F(!n.restorable&&n.source===`store`?17:-1)}}function ML(e,t){if(e&1&&(z(0,`span`,14),J(1),B()),e&2){let e=K();M(),Y(e.sourceEntries().length)}}function NL(e,t){e&1&&(z(0,`div`,22),V(1,`span`,129),z(2,`p`,26),J(3,`Scanning source for NgRx declarations…`),B()())}function PL(e,t){e&1&&(z(0,`div`,23)(1,`p`,26),J(2,`No NgRx declarations found in source.`),B(),z(3,`p`,27),J(4,` The scan looks for `),z(5,`code`),J(6,`signalStore`),B(),J(7,`, `),z(8,`code`),J(9,`signalState`),B(),J(10,`, `),z(11,`code`),J(12,`signalMethod`),B(),J(13,`, `),z(14,`code`),J(15,`createAction`),B(),J(16,`, `),z(17,`code`),J(18,`createReducer`),B(),J(19,`, `),z(20,`code`),J(21,`createEffect`),B(),J(22,`, `),z(23,`code`),J(24,`createSelector`),B(),J(25,` and `),z(26,`code`),J(27,`createFeature`),B(),J(28,`. `),B()())}function FL(e,t){if(e&1){let e=W();z(0,`button`,131),G(`click`,function(){let t=O(e).$implicit,n=K(2);return k(n.kind.set(n.kind()===t.kind?null:t.kind))}),V(1,`span`,34),z(2,`span`,136),J(3),B(),z(4,`span`,132),J(5),B()()}if(e&2){let e=t.$implicit,n=K(2);q(`active`,n.kind()===e.kind),N(`aria-pressed`,n.kind()===e.kind),M(),C_(`background`,n.kindColor(e.kind)),M(2),Y(n.kindLabel(e.kind)),M(2),Y(e.count)}}function IL(e,t){if(e&1&&(z(0,`p`,141),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.detail)}}function LL(e,t){if(e&1&&(z(0,`li`,135)(1,`div`,137),V(2,`span`,34),z(3,`span`,138),J(4),B(),z(5,`span`,39),J(6),B()(),z(7,`div`,139)(8,`span`,140),J(9),B()(),P(10,IL,2,1,`p`,141),B()),e&2){let e=t.$implicit,n=K(2);M(2),C_(`background`,n.kindColor(e.kind)),M(2),Y(e.name),M(2),Y(n.kindLabel(e.kind)),M(2),R(`title`,e.file+`:`+e.line),M(),Z(``,e.file,`:`,e.line),M(),F(e.detail?10:-1)}}function RL(e,t){if(e&1){let e=W();z(0,`li`)(1,`div`,22)(2,`p`,26),J(3,`No declarations match.`),B(),z(4,`button`,28),G(`click`,function(){return O(e),k(K(2).clearFilters())}),J(5,`Clear filters`),B()()()}}function zL(e,t){if(e&1){let e=W();z(0,`div`,130)(1,`button`,131),G(`click`,function(){return O(e),k(K().kind.set(null))}),J(2,` All `),z(3,`span`,132),J(4),B()(),I(5,FL,6,7,`button`,133,iI),B(),z(7,`ul`,134),I(8,LL,11,8,`li`,135,aI,!1,RL,6,0,`li`),B()}if(e&2){let e=K();M(),q(`active`,!e.kind()),N(`aria-pressed`,!e.kind()),M(3),Y(e.sourceEntries().length),M(),L(e.groupedEntries()),M(3),L(e.filteredEntries())}}var BL={action:`#f59e0b`,reducer:`#a78bfa`,effect:`#fb923c`,selector:`#60a5fa`,feature:`#34d399`,"store-setup":`#94a3b8`,"signal-store":`#e879f9`,"signal-state":`#22d3ee`,"signal-method":`#fb7185`,store:`#a78bfa`,event:`var(--warn)`},VL={"signal-store":`signalStore`,"signal-state":`signalState`,"signal-method":`signalMethod`,"store-setup":`store setup`,store:`@ngrx/store`,event:`event`},HL={dispatch:`store.dispatch(action)`,effect:`NgRx effect (Store.next)`,reactive:`store.dispatch(() => action)`};function UL(e){if(!e.trim())return{};let t;try{t=JSON.parse(e)}catch{return{error:`The payload is not valid JSON.`}}return!t||typeof t!=`object`||Array.isArray(t)?{error:`The payload must be a JSON object, like {"id": 7}.`}:Object.prototype.hasOwnProperty.call(t,`type`)?{error:`The payload cannot have a "type" key. Put the action type in the Type field.`}:{payload:t}}var WL=new Set([`action`,`reducer`,`effect`,`selector`,`feature`,`store-setup`]),GL=class e{rpc=$(null);canRestore=Q(()=>bE(this.rpc(),`ngrx`));restoreOff=KT(`ngrx`);filter=j(``);kind=j(null);sourceEntries=j([]);sourceLoaded=j(!1);pages=j([]);failed=j(!1);selectedPageId=j(null);hostPageId=eE();maxLog=Q(()=>yE(this.rpc()).limits.changeLog);selectedStoreId=j(null);focusEventSeq=j(null);eventDetailHeading=Rv(`eventDetailHeading`);busy=j(!1);focusLatest=j(!1);focusConfirm=j(null);cancelButton=Rv(`cancelButton`);restoreButton=Rv(`restoreButton`);stateTree=Rv(`stateTree`);filterInput=Rv(`filterInput`);latestButton=Rv(`latestButton`);message=j(``);destroyRef=E(Cs);unsubscribe=null;page=Q(()=>{let e=this.pages();return e.find(e=>e.pageId===this.selectedPageId())??e.find(e=>e.pageId===this.hostPageId)??e[0]??null});logKey=Q(()=>{let e=this.page();return{pageId:e?.pageId??null,log:e?.log??[]}});logSession=Tv({source:this.logKey,computation:(e,t)=>t?LF(t.source,e)?t.value:t.value+1:0});selectedChangeSeq=Tv({source:this.logSession,computation:()=>null});selectedEventSeq=Tv({source:this.logSession,computation:()=>null});confirmSeq=Tv({source:this.logSession,computation:()=>null});pageOptions=Q(()=>this.pages().map(e=>({value:e.pageId,label:e.title||e.url,hint:e.url})));liveStores=Q(()=>{let e=this.page();if(!e)return[];let t=e.stores.map(e=>({id:e.id,label:e.name??e.references[0]??e.className,kind:e.kind,scope:e.scope,signal:e}));return e.classic&&t.push({id:`store`,label:`Store`,kind:`store`,scope:e.classic.scope,classic:e.classic}),t});filteredStores=Q(()=>{let e=this.filter().trim().toLowerCase();return e?this.liveStores().filter(t=>t.label.toLowerCase().includes(e)||t.kind.includes(e)||(t.signal?.stateKeys??[]).some(t=>t.toLowerCase().includes(e))||(this.page()?.log??[]).some(n=>n.storeId===t.id&&n.type.toLowerCase().includes(e))):this.liveStores()});store=Q(()=>{let e=this.liveStores();return e.find(e=>e.id===this.selectedStoreId())??e[0]??null});stateText=Q(()=>{let e=this.store();return e?HF(e.signal?e.signal.state:e.classic?.state):``});computedEntries=Q(()=>Object.entries(this.store()?.signal?.computed??{}).map(([e,t])=>({key:e,value:UF(t,160),full:HF(t)})));storeLog=Q(()=>{let e=this.store()?.id,t=this.filter().trim().toLowerCase();return(this.page()?.log??[]).filter(n=>n.storeId===e&&(!t||n.type.toLowerCase().includes(t)||this.storeMatches(t))).reverse()});hasEvents=Q(()=>(this.page()?.log??[]).some(e=>e.source===`event`));pageEvents=Q(()=>{let e=this.filter().trim().toLowerCase();return(this.page()?.log??[]).filter(t=>t.source===`event`&&(!e||t.type.toLowerCase().includes(e))).slice().reverse()});changeEntry=Q(()=>{let e=this.selectedChangeSeq();return e===null?null:this.storeLog().find(t=>t.seq===e)??null});eventEntry=Q(()=>{let e=this.selectedEventSeq();return e===null?null:this.pageEvents().find(t=>t.seq===e)??null});dispatchType=j(``);dispatchPayload=j(``);actionTypes=Q(()=>{let e=new Set;for(let t of this.sourceEntries())for(let n of t.types??[])e.add(n);for(let t of this.page()?.log??[])t.source===`store`&&t.action!==void 0&&e.add(t.type);return[...e].sort().slice(0,200)});payloadError=Q(()=>UL(this.dispatchPayload()).error??``);dispatchRequest=Q(()=>{let e=this.dispatchType().trim(),{payload:t,error:n}=UL(this.dispatchPayload());return!e||n?null:{type:`dispatch`,action:e,...t?{payload:t}:{}}});usesSignals=Q(()=>this.sourceEntries().some(e=>e.kind===`signal-store`||e.kind===`signal-state`));usesClassic=Q(()=>this.sourceEntries().some(e=>WL.has(e.kind)));filteredEntries=Q(()=>{let e=this.filter().trim().toLowerCase(),t=this.kind();return this.sourceEntries().filter(n=>(!t||n.kind===t)&&(!e||n.name.toLowerCase().includes(e)||n.kind.includes(e)||(n.detail??``).toLowerCase().includes(e)))});groupedEntries=Q(()=>{let e=new Map;for(let t of this.sourceEntries())e.set(t.kind,(e.get(t.kind)??0)+1);return[...e.entries()].map(([e,t])=>({kind:e,count:t}))});constructor(){uc(()=>{let e=this.rpc();e&&this.load(e)}),ey(()=>{let e=this.latestButton();e&&this.focusLatest()&&!this.busy()&&(this.focusLatest.set(!1),e.nativeElement.focus())}),uc(()=>{let e=this.focusConfirm(),t=e===`cancel`?this.cancelButton():this.restoreButton();e&&t&&(this.focusConfirm.set(null),t.nativeElement.focus())}),ey(()=>{let e=this.focusEventSeq(),t=this.eventDetailHeading();e!==null&&t&&(this.focusEventSeq.set(null),t.nativeElement.focus())}),this.destroyRef.onDestroy(()=>this.unsubscribe?.())}storeMatches(e){let t=this.store();return!!t&&t.label.toLowerCase().includes(e)}async load(e){this.failed.set(!1),iE(e,`get-ngrx-store`).then(e=>this.sourceEntries.set(Array.isArray(e)?e:[])).catch(()=>this.sourceEntries.set([])).finally(()=>this.sourceLoaded.set(!0));try{let t=await e.scope(`pangular`).rpc.sharedState(`ngrx-store`);if(this.destroyRef.destroyed)return;let n=e=>{let t=e;this.pages.set(Array.isArray(t?.pages)?t.pages:[])};n(t.value()),this.unsubscribe?.(),this.unsubscribe=t.on(`updated`,n)}catch{this.failed.set(!0)}}retry(){let e=this.rpc();e&&this.load(e)}selectPage(e){this.selectedPageId.set(e),this.selectedStoreId.set(null),this.selectedChangeSeq.set(null),this.selectedEventSeq.set(null),this.confirmSeq.set(null),this.message.set(``)}selectStore(e){this.selectedStoreId.set(e),this.selectedChangeSeq.set(null),this.confirmSeq.set(null),this.message.set(``)}selectChange(e){this.selectedChangeSeq.set(this.selectedChangeSeq()===e?null:e),this.confirmSeq.set(null),this.message.set(``)}copyState(){return this.copyText(this.stateText())}copyDiff(e){return this.copyText(HF(e.diff))}async copyText(e){try{await navigator.clipboard.writeText(e),this.message.set(`Copied.`)}catch{this.message.set(`The clipboard is not available here.`)}}askRestore(e){this.confirmSeq.set(e),this.focusConfirm.set(`cancel`)}cancelRestore(e){e?.preventDefault(),this.confirmSeq.set(null),this.focusConfirm.set(`restore`)}async restore(e,t){let n=this.page();if(!n)return;this.busy.set(!0),this.focusLatest.set(!1);let r=!1;try{let i=await iE(this.rpc(),`request-ngrx-action`,{pageId:n.pageId,request:{type:`restore`,seq:e}});this.message.set(i?.error??i?.message??`Restored.`),r=t&&!i?.error&&!!i?.paused}catch{this.message.set(`Could not reach the page to restore the state.`)}finally{this.busy.set(!1),this.confirmSeq.set(null),this.focusLatest.set(r),r||this.stateTree()?.nativeElement.focus()}}selectEvent(e){let t=this.selectedEventSeq()===e?null:e;this.selectedEventSeq.set(t),t!==null&&this.focusEventSeq.set(t)}async backToLatest(){let e=this.page();if(e){this.busy.set(!0);try{let t=await iE(this.rpc(),`request-ngrx-action`,{pageId:e.pageId,request:{type:`latest`}});this.focusLatest.set(!1),this.stateTree()?.nativeElement.focus(),this.message.set(t?.error??t?.message??`Back on the latest state.`)}catch{this.message.set(`Could not reach the page to go back to the latest state.`)}finally{this.busy.set(!1)}}}canAgain(e){return e.source===`store`&&e.action!==void 0}async dispatchAction(e){e.preventDefault();let t=this.dispatchRequest();t&&await this.send(t,`Could not reach the page to dispatch the action.`)}dispatchAgain(e){return this.send({type:`dispatch-again`,seq:e},`Could not reach the page to dispatch the action again.`)}async send(e,t){let n=this.page();if(!n||this.busy())return;let r=this.logSession();this.busy.set(!0);try{let t=await iE(this.rpc(),`request-ngrx-action`,{pageId:n.pageId,request:e});this.message.set(t?.error??t?.message??`Dispatched.`),t?.entry&&this.logSession()===r&&(this.selectedStoreId.set(`store`),this.selectedChangeSeq.set(t.entry.seq))}catch{this.message.set(t)}finally{this.busy.set(!1)}}clearFilters(){this.filter.set(``),this.kind.set(null),this.filterInput()?.nativeElement.focus()}changeCount(e){return(this.page()?.log??[]).filter(t=>t.storeId===e).length}entityIds(e){return e.slice(0,30)}entityOverflowTitle(e,t){let n=e.slice(30).join(`, `);return t>e.length?`${n} (first ${e.length} of ${t} shown)`:n}kindColor(e){return BL[e]??`var(--text-3)`}kindLabel(e){return VL[e]??e}originText(e){return HL[e]??e}opLabel(e){return e===`add`?`added`:e===`remove`?`removed`:`changed`}prettyText(e){return HF(e)}shortText(e){return UF(e)}formatTime=RD;formatDuration(e){return e<=0?`<1ms`:`${Math.round(e)}ms`}methodDuration(e){let t=[];return e.avgDurationMs!==void 0&&t.push(`avg ${this.formatDuration(e.avgDurationMs)}`),e.lastDurationMs!==void 0&&t.push(`last ${this.formatDuration(e.lastDurationMs)}`),t.length?` · ${t.join(` · `)}`:``}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-store-inspector`]],viewQuery:function(e,t){e&1&&e_(t.eventDetailHeading,WF,5)(t.cancelButton,GF,5)(t.restoreButton,KF,5)(t.stateTree,qF,5)(t.filterInput,JF,5)(t.latestButton,YF,5),e&2&&t_(6)},inputs:{rpc:[1,`rpc`]},decls:29,vars:11,consts:[[`filterInput`,``],[`entryDetailTpl`,``],[`stateTree`,``],[`latestButton`,``],[`eventDetailHeading`,``],[`cancelButton`,``],[`restoreButton`,``],[1,`toolbar`],[`type`,`search`,`placeholder`,`Filter stores, changes and declarations…`,`aria-label`,`Filter stores, changes and source declarations`,3,`input`,`keydown.escape`,`value`],[1,`status`],[`aria-hidden`,`true`,1,`live-dot`],[`aria-labelledby`,`ngrx-live-heading`,1,`block`],[1,`section-head`],[`id`,`ngrx-live-heading`],[1,`pill`],[`role`,`alert`,1,`empty`],[1,`empty`],[1,`live-layout`],[`role`,`status`,1,`message`],[`aria-labelledby`,`ngrx-events-heading`,1,`block`],[`aria-labelledby`,`ngrx-source-heading`,1,`block`],[`id`,`ngrx-source-heading`],[`role`,`status`,1,`empty`,`compact`],[1,`empty`,`compact`],[`id`,`ngrx-page-label`,1,`visually-hidden`],[`labelledBy`,`ngrx-page-label`,1,`page-select`,3,`valueChange`,`options`,`value`],[1,`empty-title`],[1,`hint`],[`type`,`button`,1,`btn`,3,`click`],[`aria-label`,`Stores on this page`,1,`store-list`],[1,`muted`,`pad`],[1,`store-detail`],[`type`,`button`,1,`store-item`,3,`click`],[1,`store-top`],[`aria-hidden`,`true`,1,`dot`],[1,`store-name`],[1,`store-meta`],[1,`detail-head`],[1,`chips`],[1,`chip`],[1,`chip`,`mono`,3,`title`],[1,`refs`],[1,`paused`],[1,`facts`],[`aria-labelledby`,`ngrx-state-heading`,1,`fact`],[1,`fact-head`],[`id`,`ngrx-state-heading`],[`type`,`button`,`aria-label`,`Copy state`,1,`btn`,`copy`,3,`click`],[`tabindex`,`0`,`aria-labelledby`,`ngrx-state-heading`,1,`tree`],[`aria-labelledby`,`ngrx-log-heading`,1,`log`],[`id`,`ngrx-log-heading`],[`what`,`changes on this page`,`limit`,`changeLog`,3,`dropped`,`max`],[1,`log-layout`],[1,`log-list`],[`id`,`ngrx-change-detail`],[`aria-labelledby`,`ngrx-dispatch-heading`,1,`dispatch`],[`type`,`button`,1,`btn`,`primary`,3,`click`,`disabled`],[`id`,`store-latest-off`,1,`hint`,`small`],[`aria-labelledby`,`ngrx-computed-heading`,1,`fact`],[`id`,`ngrx-computed-heading`],[1,`kv`],[1,`muted`],[`id`,`ngrx-methods-heading`,1,`spaced`],[`aria-labelledby`,`ngrx-methods-heading`,1,`methods`],[`aria-labelledby`,`ngrx-entities-heading`,1,`fact`],[3,`title`],[1,`chip`,`mono`],[1,`tag`],[1,`calls`],[`id`,`ngrx-entities-heading`],[1,`entities`],[1,`entity-group`],[1,`entity-head`],[1,`entity-count`],[1,`chips`,`entity-ids`],[1,`chip`,`more`,3,`title`],[`type`,`button`,1,`log-item`,3,`click`],[1,`seq`],[1,`log-type-row`],[1,`log-type`,3,`title`],[1,`tag`,3,`title`],[1,`log-meta`],[3,`ngTemplateOutlet`,`ngTemplateOutletContext`],[`id`,`ngrx-dispatch-heading`],[1,`dispatch-form`,3,`submit`],[`required`,``,`spellcheck`,`false`,`autocomplete`,`off`,`list`,`ngrx-action-types`,`placeholder`,`e.g. [Cart] Add Item`,3,`input`,`value`],[`id`,`ngrx-action-types`],[3,`value`],[1,`optional`],[`rows`,`3`,`spellcheck`,`false`,`placeholder`,`e.g. {"id": 7}`,`aria-describedby`,`ngrx-payload-error`,3,`input`,`value`],[`id`,`ngrx-payload-error`,1,`field-error`],[1,`actions`],[`type`,`submit`,1,`btn`,`primary`,3,`disabled`],[`id`,`store-dispatch-off`,1,`hint`,`small`],[`id`,`ngrx-events-heading`],[1,`intro`],[`aria-label`,`Dispatched events`,1,`events-list`],[`id`,`ngrx-event-detail`,`tabindex`,`-1`,1,`event-detail-focus`],[`type`,`button`,1,`event-item`,3,`click`],[1,`event-type`,`mono`,3,`title`],[1,`event-payload`,3,`title`],[1,`event-time`],[1,`entry`],[`role`,`heading`,1,`entry-heading`,3,`id`],[`role`,`group`,1,`confirm`],[1,`hint`,`small`],[1,`code`],[1,`mono`],[1,`sub-head`],[`role`,`heading`,1,`sub`],[`type`,`button`,1,`btn`,`copy`],[1,`diff`],[`type`,`button`,1,`btn`,`copy`,3,`click`],[3,`class`],[1,`op`],[1,`path`],[1,`values`],[1,`before`],[1,`after`],[`aria-hidden`,`true`,1,`arrow`],[1,`visually-hidden`],[`role`,`group`,1,`confirm`,3,`keydown.escape`],[3,`id`],[1,`entry-actions`],[`type`,`button`,1,`btn`,`restore`,3,`disabled`],[`type`,`button`,1,`btn`,3,`disabled`],[1,`hint`,`small`,3,`id`],[`type`,`button`,1,`btn`,`restore`,3,`click`,`disabled`],[`type`,`button`,1,`btn`,3,`click`,`disabled`],[`aria-hidden`,`true`,1,`spinner`],[`role`,`group`,`aria-label`,`Filter declarations by kind`,1,`kinds`],[`type`,`button`,1,`kind-chip`,3,`click`],[1,`count`],[`type`,`button`,1,`kind-chip`,3,`active`],[1,`nodes`],[1,`node-card`],[1,`chip-text`],[1,`node-header`],[1,`node-label`],[1,`node-meta`],[1,`file`,3,`title`],[1,`detail`]],template:function(e,t){e&1&&(z(0,`div`,7)(1,`input`,8,0),G(`input`,function(e){return t.filter.set(e.target.value)})(`keydown.escape`,function(){return t.filter.set(``)}),B(),P(3,oI,3,2),z(4,`span`,9),V(5,`span`,10),J(6),B()(),z(7,`section`,11)(8,`div`,12)(9,`h2`,13),J(10,`Live stores`),B(),P(11,sI,2,1,`span`,14),B(),P(12,cI,7,0,`div`,15)(13,lI,5,0,`div`,16)(14,pI,4,1,`div`,16)(15,ZI,6,2,`div`,17),z(16,`p`,18),J(17),B()(),P(18,nL,13,3,`section`,19),tg(19,jL,18,16,`ng-template`,null,1,gv),z(21,`section`,20)(22,`div`,12)(23,`h2`,21),J(24,`Source declarations`),B(),P(25,ML,2,1,`span`,14),B(),P(26,NL,4,0,`div`,22)(27,PL,29,0,`div`,23)(28,zL,11,5),B()),e&2&&(M(),R(`value`,t.filter()),M(2),F(t.pages().length>1?3:-1),M(),q(`on`,!!t.page()),M(2),X(` `,t.page()?`Live`:`No page connected`,` `),M(5),F(t.liveStores().length?11:-1),M(),F(t.failed()?12:t.page()?t.liveStores().length?15:14:13),M(5),Y(t.message()),M(),F(t.hasEvents()?18:-1),M(7),F(t.sourceEntries().length?25:-1),M(),F(t.sourceLoaded()?t.sourceEntries().length===0?27:28:26))},dependencies:[UD,AD,$y],styles:[`[_nghost-%COMP%] { + display: grid; + gap: 24px; + min-width: 0; + color: var(--%NS%text); + font-size: 13px; +} + +.intro[_ngcontent-%COMP%] { + max-width: 720px; + margin: 0; + color: var(--%NS%text-2); + line-height: 1.5; +} + +.toolbar[_ngcontent-%COMP%] { + position: sticky; + top: 0; + z-index: 2; + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: center; + padding: 10px 12px; + background: color-mix(in srgb, var(--%NS%surface) 85%, transparent); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); +} + +input[_ngcontent-%COMP%] { + flex: 1 1 220px; + min-width: 0; + height: 34px; + padding: 0 12px; + background: var(--%NS%bg); + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + outline: none; + transition: border-color 0.15s var(--%NS%ease), box-shadow 0.15s var(--%NS%ease); +} + +input[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +input[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.page-select[_ngcontent-%COMP%] { + flex: 0 1 220px; + min-width: 0; +} + +.status[_ngcontent-%COMP%] { + display: inline-flex; + flex: none; + align-items: center; + gap: 6px; + color: var(--%NS%text-2); + font-size: 12px; + font-weight: 500; +} + +.live-dot[_ngcontent-%COMP%] { + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--%NS%text-3); +} + +.status.on[_ngcontent-%COMP%] .live-dot[_ngcontent-%COMP%] { + background: var(--%NS%ok); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--%NS%ok) 20%, transparent); + animation: _ngcontent-%COMP%_pulse 2s infinite; +} + +@keyframes _ngcontent-%COMP%_pulse { + 50% { + opacity: 0.4; + } +} +.block[_ngcontent-%COMP%] { + display: grid; + gap: 12px; + min-width: 0; +} + +.section-head[_ngcontent-%COMP%] { + display: flex; + align-items: center; + gap: 8px; + min-height: 24px; +} + +h2[_ngcontent-%COMP%], +h4[_ngcontent-%COMP%], +.sub[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + display: flex; + align-items: center; + gap: 8px; + margin: 0; +} + +h4[_ngcontent-%COMP%] { + margin-bottom: 10px; +} + +.spaced[_ngcontent-%COMP%] { + margin-top: 16px; +} + +.sub[_ngcontent-%COMP%] { + margin: 14px 0 8px; +} + +.fact-head[_ngcontent-%COMP%], +.sub-head[_ngcontent-%COMP%] { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + min-width: 0; +} + +.fact-head[_ngcontent-%COMP%] { + margin-bottom: 10px; +} + +.fact-head[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] { + margin: 0; +} + +.sub-head[_ngcontent-%COMP%] { + margin: 14px 0 8px; +} + +.sub-head[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%] { + margin: 0; +} + +.btn.copy[_ngcontent-%COMP%] { + flex: none; + height: 26px; + padding: 0 10px; + font-size: 12px; +} + +.pill[_ngcontent-%COMP%] { + min-width: 20px; + padding: 0 7px; + border-radius: 99px; + background: var(--%NS%surface-2); + border: 1px solid var(--%NS%border); + color: var(--%NS%text-2); + font-size: 11px; + font-weight: 500; + letter-spacing: 0; + line-height: 18px; + text-align: center; + font-variant-numeric: tabular-nums; +} + +.empty[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + text-align: center; + padding: 36px 24px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + animation: enter 0.35s var(--%NS%ease) both; +} + +.empty.compact[_ngcontent-%COMP%] { + padding: 24px 16px; + border-style: dashed; + background: transparent; +} + +.empty-title[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.hint[_ngcontent-%COMP%] { + max-width: 520px; + margin: 0; + color: var(--%NS%text-2); + line-height: 1.55; + overflow-wrap: anywhere; +} + +.hint.small[_ngcontent-%COMP%] { + margin-top: 12px; + font-size: 12px; +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12px; +} + +.hint[_ngcontent-%COMP%] code[_ngcontent-%COMP%], +.refs[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + padding: 1px 5px; + color: var(--%NS%text); + background: var(--%NS%surface-3); + border: 1px solid var(--%NS%border); + border-radius: 5px; +} + +.muted[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-2); +} + +.pad[_ngcontent-%COMP%] { + padding: 20px 12px; + text-align: center; + line-height: 1.5; +} + +.btn[_ngcontent-%COMP%] { + height: 32px; + padding: 0 14px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease), border-color 0.15s var(--%NS%ease); +} + +.btn[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-3); +} + +.btn[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.btn[_ngcontent-%COMP%]:disabled { + opacity: 0.6; + cursor: default; +} + +.btn.primary[_ngcontent-%COMP%], +.btn.restore[_ngcontent-%COMP%] { + border-color: var(--%NS%accent-line); + background: var(--%NS%accent-soft); + color: var(--%NS%text-strong); +} + +.btn.restore[_ngcontent-%COMP%] { + margin-top: 14px; +} + +.live-layout[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: minmax(180px, 240px) minmax(0, 1fr); + min-width: 0; + background: var(--%NS%surface); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + box-shadow: var(--%NS%shadow); + overflow: hidden; + animation: enter 0.35s var(--%NS%ease) both; +} + +ul[_ngcontent-%COMP%] { + list-style: none; + margin: 0; + padding: 0; +} + +.store-list[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + gap: 2px; + padding: 8px; + border-right: 1px solid var(--%NS%border); + background: var(--%NS%surface-2); +} + +.store-item[_ngcontent-%COMP%], +.log-item[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 3px; + width: 100%; + padding: 8px 10px; + border: none; + border-radius: var(--%NS%radius-sm); + background: transparent; + color: inherit; + font: inherit; + text-align: left; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease); +} + +.store-item[_ngcontent-%COMP%]:hover, +.log-item[_ngcontent-%COMP%]:hover, +.event-item[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-3); +} + +.store-item[_ngcontent-%COMP%]:focus-visible, +.log-item[_ngcontent-%COMP%]:focus-visible, +.event-item[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: -2px; +} + +.store-item.selected[_ngcontent-%COMP%], +.log-item.selected[_ngcontent-%COMP%], +.event-item.selected[_ngcontent-%COMP%] { + background: var(--%NS%accent-soft); + box-shadow: inset 2px 0 0 var(--%NS%accent); +} + +.store-top[_ngcontent-%COMP%] { + display: flex; + align-items: center; + gap: 8px; + min-width: 0; + max-width: 100%; +} + +.store-name[_ngcontent-%COMP%] { + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; + font-family: var(--%NS%font-mono); + font-weight: 600; + color: var(--%NS%text-strong); +} + +.store-meta[_ngcontent-%COMP%], +.log-meta[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 11.5px; + font-variant-numeric: tabular-nums; +} + +.dot[_ngcontent-%COMP%] { + flex: none; + width: 8px; + height: 8px; + border-radius: 50%; +} + +.store-detail[_ngcontent-%COMP%] { + display: grid; + gap: 16px; + min-width: 0; + padding: 16px; +} + +.detail-head[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] { + margin: 0 0 8px; + color: var(--%NS%accent); + font-family: var(--%NS%font-mono); + font-size: 15px; + font-weight: 600; + overflow-wrap: anywhere; +} + +.chips[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 6px; +} + +.chip[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + gap: 6px; + max-width: 100%; + padding: 1px 8px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text-2); + font-size: 11.5px; + line-height: 18px; + overflow-wrap: anywhere; +} + +.chip.mono[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); +} + +.refs[_ngcontent-%COMP%] { + margin: 10px 0 0; + color: var(--%NS%text-2); + line-height: 1.8; +} + +.facts[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); + gap: 16px; + min-width: 0; +} + +.fact[_ngcontent-%COMP%] { + min-width: 0; +} + +pre[_ngcontent-%COMP%] { + margin: 0; + font-family: var(--%NS%font-mono); + font-size: 12px; + line-height: 1.55; + white-space: pre-wrap; + overflow-wrap: anywhere; + color: var(--%NS%text); +} + +.tree[_ngcontent-%COMP%], +.code[_ngcontent-%COMP%] { + max-height: 360px; + overflow: auto; + padding: 10px 12px; + background: var(--%NS%surface-2); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); +} + +.code[_ngcontent-%COMP%] { + max-height: 220px; +} + +.tree[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.kv[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + gap: 6px 14px; + margin: 0; +} + +.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12px; + color: var(--%NS%text-2); +} + +.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] { + min-width: 0; + margin: 0; + overflow-wrap: anywhere; +} + +.methods[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 6px; +} + +.methods[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + flex-wrap: wrap; + row-gap: 2px; +} + +.tag[_ngcontent-%COMP%] { + padding: 0 5px; + border-radius: 4px; + background: var(--%NS%accent-soft); + color: var(--%NS%text-strong); + font-size: 10.5px; +} + +.calls[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-family: var(--%NS%font-sans, inherit); + font-size: 11px; +} + +.entities[_ngcontent-%COMP%] { + display: grid; + gap: 14px; +} + +.entity-group[_ngcontent-%COMP%] { + display: grid; + gap: 8px; +} + +.entity-head[_ngcontent-%COMP%] { + display: flex; + align-items: center; + gap: 8px; +} + +.entity-count[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 11.5px; + font-variant-numeric: tabular-nums; +} + +.entity-ids[_ngcontent-%COMP%] { + margin: 0; +} + +.chip.more[_ngcontent-%COMP%] { + border-style: dashed; + color: var(--%NS%text-3); +} + +.events-list[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + gap: 2px; + max-height: 260px; + overflow: auto; + padding: 6px; + background: var(--%NS%surface); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + animation: enter 0.35s var(--%NS%ease) both; +} + +.event-item[_ngcontent-%COMP%] { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 8px 10px; + width: 100%; + min-width: 0; + padding: 7px 10px; + border: none; + border-radius: var(--%NS%radius-sm); + background: transparent; + color: inherit; + font: inherit; + text-align: left; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease); +} + +.event-type[_ngcontent-%COMP%] { + flex: none; + font-weight: 600; + color: var(--%NS%text-strong); + font-size: 12.5px; +} + +.event-payload[_ngcontent-%COMP%] { + flex: 1 1 160px; + min-width: 0; + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; + color: var(--%NS%text-2); +} + +.event-time[_ngcontent-%COMP%] { + flex: none; + margin-left: auto; + color: var(--%NS%text-3); + font-size: 11.5px; + font-variant-numeric: tabular-nums; +} + +.log[_ngcontent-%COMP%] { + min-width: 0; + padding-top: 16px; + border-top: 1px solid var(--%NS%border); +} + +.log-layout[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: minmax(200px, 300px) minmax(0, 1fr); + gap: 16px; + min-width: 0; +} + +.log-list[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + gap: 2px; + max-height: 420px; + overflow: auto; + padding: 2px; +} + +.log-item[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: auto minmax(0, 1fr); + column-gap: 8px; + row-gap: 2px; +} + +.seq[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11.5px; + font-variant-numeric: tabular-nums; +} + +.log-type-row[_ngcontent-%COMP%] { + display: flex; + align-items: center; + gap: 6px; + min-width: 0; +} + +.log-type[_ngcontent-%COMP%] { + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; + min-width: 0; + font-family: var(--%NS%font-mono); + font-size: 12.5px; + color: var(--%NS%text); +} + +.log-meta[_ngcontent-%COMP%] { + grid-column: 2; +} + +.entry[_ngcontent-%COMP%] { + min-width: 0; + padding: 14px; + border: 1px solid var(--%NS%accent-line); + border-radius: var(--%NS%radius-sm); + animation: enter 0.25s var(--%NS%ease) both; +} + +.entry[_ngcontent-%COMP%] .entry-heading[_ngcontent-%COMP%] { + margin: 0 0 12px; + font-family: var(--%NS%font-mono); + font-size: 13px; + font-weight: 600; + color: var(--%NS%text-strong); + overflow-wrap: anywhere; +} + +.diff[_ngcontent-%COMP%] { + display: grid; + gap: 4px; +} + +.diff-row[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: auto minmax(0, max-content) minmax(0, 1fr); + gap: 8px; + align-items: baseline; + padding: 5px 8px; + border-radius: 6px; + background: var(--%NS%surface-2); +} + +.op[_ngcontent-%COMP%] { + font-size: 10.5px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--%NS%text-2); +} + +.diff-row.add[_ngcontent-%COMP%] .op[_ngcontent-%COMP%] { + color: var(--%NS%ok); +} + +.diff-row.remove[_ngcontent-%COMP%] .op[_ngcontent-%COMP%] { + color: var(--%NS%danger); +} + +.path[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + overflow-wrap: anywhere; +} + +.values[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px 6px; + min-width: 0; + overflow-wrap: anywhere; +} + +.before[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + text-decoration: line-through; +} + +.after[_ngcontent-%COMP%] { + color: var(--%NS%text); +} + +.arrow[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +.confirm[_ngcontent-%COMP%] { + margin-top: 14px; + padding: 12px; + border: 1px solid var(--%NS%accent-line); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%accent-soft); +} + +.confirm[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 0 0 10px; + line-height: 1.5; +} + +.actions[_ngcontent-%COMP%], +.entry-actions[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +.entry-actions[_ngcontent-%COMP%] { + margin-top: 14px; +} + +.entry-actions[_ngcontent-%COMP%] .btn.restore[_ngcontent-%COMP%] { + margin-top: 0; +} + +.dispatch[_ngcontent-%COMP%] { + min-width: 0; + margin-top: 16px; + padding-top: 16px; + border-top: 1px solid var(--%NS%border); +} + +.dispatch-form[_ngcontent-%COMP%] { + display: grid; + gap: 10px; + max-width: 560px; +} + +.dispatch-form[_ngcontent-%COMP%] label[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + color: var(--%NS%text-2); + font-size: 12px; + font-weight: 500; +} + +.optional[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-weight: 400; +} + +.dispatch-form[_ngcontent-%COMP%] input[_ngcontent-%COMP%] { + width: 100%; + font-family: var(--%NS%font-mono); + font-size: 12.5px; +} + +textarea[_ngcontent-%COMP%] { + width: 100%; + min-width: 0; + padding: 8px 10px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 12px; + resize: vertical; + transition: border-color 0.15s var(--%NS%ease), box-shadow 0.15s var(--%NS%ease); +} + +textarea[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +textarea[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +textarea[aria-invalid=true][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 60%, transparent); +} + +.field-error[_ngcontent-%COMP%] { + margin: -4px 0 0; + color: var(--%NS%danger); + font-size: 12px; +} + +.field-error[_ngcontent-%COMP%]:empty { + display: none; +} + +.paused[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 10px 14px; + margin-bottom: 14px; + padding: 10px 12px; + border: 1px solid color-mix(in srgb, var(--%NS%warn) 40%, transparent); + border-radius: var(--%NS%radius-sm); + background: color-mix(in srgb, var(--%NS%warn) 10%, transparent); +} + +.paused[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + flex: 1 1 240px; + margin: 0; + line-height: 1.5; +} + +.paused[_ngcontent-%COMP%] .hint.small[_ngcontent-%COMP%] { + flex-basis: 100%; + margin-top: 0; +} + +.message[_ngcontent-%COMP%]:empty { + display: none; +} + +.message[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-2); +} + +.kinds[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 6px; +} + +.kind-chip[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + gap: 6px; + max-width: 100%; + height: 28px; + padding: 0 10px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text-2); + font: inherit; + font-size: 12px; + font-weight: 500; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease), border-color 0.15s var(--%NS%ease), color 0.15s var(--%NS%ease); +} + +.kind-chip[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%border-strong); + background: var(--%NS%surface-3); + color: var(--%NS%text); +} + +.kind-chip.active[_ngcontent-%COMP%] { + border-color: var(--%NS%accent-line); + background: var(--%NS%accent-soft); + color: var(--%NS%text-strong); +} + +.kind-chip[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.chip-text[_ngcontent-%COMP%] { + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; +} + +.kind-chip[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] { + flex: none; + min-width: 18px; + padding: 0 5px; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 11px; + line-height: 16px; + text-align: center; + font-variant-numeric: tabular-nums; +} + +.nodes[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + gap: 8px; + animation: enter 0.35s var(--%NS%ease) both; +} + +.node-card[_ngcontent-%COMP%] { + min-width: 0; + padding: 12px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + border-radius: var(--%NS%radius-sm); +} + +.node-header[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 6px 8px; + min-width: 0; +} + +.node-label[_ngcontent-%COMP%] { + min-width: 0; + font-family: var(--%NS%font-mono); + font-weight: 500; + color: var(--%NS%text-strong); + overflow-wrap: anywhere; +} + +.node-meta[_ngcontent-%COMP%] { + margin-top: 6px; + color: var(--%NS%text-3); + font-size: 12px; +} + +.file[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 11.5px; + overflow-wrap: anywhere; +} + +.detail[_ngcontent-%COMP%] { + margin: 6px 0 0; + color: var(--%NS%text-2); + font-size: 12px; + line-height: 1.5; + overflow-wrap: anywhere; +} + +.spinner[_ngcontent-%COMP%] { + width: 18px; + height: 18px; + border: 2px solid var(--%NS%border-strong); + border-top-color: var(--%NS%accent); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +@media (prefers-reduced-motion: reduce) { + .spinner[_ngcontent-%COMP%], + .status.on[_ngcontent-%COMP%] .live-dot[_ngcontent-%COMP%] { + animation: none; + } +} +@media (max-width: 760px) { + .live-layout[_ngcontent-%COMP%], + .log-layout[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + } + .store-list[_ngcontent-%COMP%] { + border-right: none; + border-bottom: 1px solid var(--%NS%border); + } +} +@media (max-width: 480px) { + .toolbar[_ngcontent-%COMP%] { + padding: 8px; + } + .toolbar[_ngcontent-%COMP%] input[_ngcontent-%COMP%], + .page-select[_ngcontent-%COMP%] { + flex-basis: 100%; + } + .store-detail[_ngcontent-%COMP%] { + padding: 12px; + } + .kv[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + } +}`]})},KL=[`heading`];function qL(e,t){if(e&1){let e=W();H(0,`div`,6)(1,`p`,9),J(2,`Could not explain this field. The devtools server did not answer.`),U(),H(3,`button`,11),Qg(`click`,function(){return O(e),k(K().retry())}),J(4,`Try again`),U()()}}function JL(e,t){if(e&1&&(H(0,`pre`,7),J(1),U()),e&2){let e=K();N(`aria-busy`,e.text()===null?`true`:null),M(),Y(e.text()??`Loading…`)}}function YL(e,t){if(e&1){let e=W();H(0,`div`,8)(1,`label`,15),J(2),U(),H(3,`input`,16),Qg(`input`,function(t){return O(e),k(K().draft.set(t.target.value))})(`keydown.enter`,function(){return O(e),k(K().setValue())}),U(),H(4,`button`,17),Qg(`click`,function(){return O(e),k(K().setValue())}),J(5,` Set `),U()()}if(e&2){let e=K();M(2),X(`New value for `,e.node().path),M(),Vg(`value`,e.draft()),M(),Vg(`disabled`,!e.canWrite()),N(`aria-describedby`,e.canWrite()?null:`field-writes-off`)}}function XL(e,t){if(e&1&&(H(0,`p`,9),J(1),H(2,`a`,18),J(3,`How to unmask it`),U()()),e&2){let e=K();M(),X(` No Set editor: this field is redacted (`,e.redactLabel(e.node().redacted),`). `),M(),Vg(`href`,e.unmaskDocsUrl,ku)}}function ZL(e,t){if(e&1&&(H(0,`p`,13),J(1),U()),e&2){let e=K();M(),Y(e.writesOff)}}var QL=class e{form=$.required();node=$.required();version=$(0);rpc=$(null);closed=Ov();canWrite=Q(()=>bE(this.rpc(),`forms`));writesOff=KT(`forms`);redactLabel=pE;unmaskDocsUrl=mE;target=Q(()=>`${this.form().id}|${this.node().path}`);text=Tv({source:this.target,computation:()=>null});failed=Tv({source:this.target,computation:()=>!1});attempt=j(0);heading=Rv.required(`heading`);host=E(Ml);draft=Tv({source:this.target,computation:()=>``});message=Tv({source:this.target,computation:()=>``});constructor(){uc(()=>{let e=this.form().id,t=this.node().path;this.version(),this.attempt();let n=this.rpc();Cv(()=>this.load(n,e,t))}),ey(()=>{this.target();let e=Cv(this.heading).nativeElement;this.host.nativeElement.scrollIntoView?.({block:`nearest`}),e.focus({preventScroll:!0})})}async load(e,t,n){if(!e)return;let r=await dE(e,`forms-explain`,{kind:`field`,form:t,path:n});if(this.form().id===t&&this.node().path===n){if(r===null){this.failed.set(!0);return}this.failed.set(!1),this.text.set(vE(r))}}retry(){this.failed.set(!1),this.attempt.update(e=>e+1)}async act(e){let t=this.form().id,n=this.node().path,r=await hE(this.rpc(),{action:e,formId:t,path:n});this.form().id===t&&this.node().path===n&&this.message.set(r.expression?`${gE(r)} ${r.expression}`:gE(r))}async setValue(){let e=this.form().id,t=this.node().path,n=await hE(this.rpc(),{action:`set-value`,formId:e,path:t,value:this.draft(),coerce:!0,mode:`user`});this.form().id===e&&this.node().path===t&&this.message.set(gE(n))}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-forms-field-detail`]],viewQuery:function(e,t){e&1&&e_(t.heading,KL,5),e&2&&t_()},hostAttrs:[`role`,`region`,`aria-labelledby`,`forms-field-heading`],inputs:{form:[1,`form`],node:[1,`node`],version:[1,`version`],rpc:[1,`rpc`]},outputs:{closed:`closed`},decls:26,vars:11,consts:[[`heading`,``],[1,`head`],[1,`section-label`],[`id`,`forms-field-heading`,`tabindex`,`-1`],[1,`tag`],[`type`,`button`,1,`small`,`close`,3,`click`],[`role`,`alert`,1,`failed`],[1,`explain`],[1,`editor`],[1,`muted`],[`role`,`group`,`aria-label`,`Field actions`,1,`row`],[`type`,`button`,1,`small`,3,`click`],[`type`,`button`,1,`small`,3,`click`,`disabled`],[`id`,`field-writes-off`,1,`muted`],[`role`,`status`,1,`status`],[`for`,`field-value`,1,`sr-only`],[`id`,`field-value`,`type`,`text`,`placeholder`,`New value, read as the current value's type`,`autocomplete`,`off`,`spellcheck`,`false`,1,`field-input`,3,`input`,`keydown.enter`,`value`],[`type`,`button`,1,`small`,`primary`,3,`click`,`disabled`],[`target`,`_blank`,`rel`,`noopener noreferrer`,3,`href`]],template:function(e,t){e&1&&(H(0,`div`,1)(1,`span`,2),J(2,`Field`),U(),H(3,`h3`,3,0),J(5),U(),H(6,`span`,4),J(7),U(),H(8,`button`,5),Qg(`click`,function(){return t.closed.emit()}),J(9,` Close `),U()(),P(10,qL,5,0,`div`,6)(11,JL,2,2,`pre`,7),P(12,YL,6,4,`div`,8)(13,XL,4,2,`p`,9),H(14,`div`,10)(15,`button`,11),Qg(`click`,function(){return t.act(`focus`)}),J(16,`Focus`),U(),H(17,`button`,12),Qg(`click`,function(){return t.act(`mark-touched`)}),J(18,` Touch `),U(),H(19,`button`,12),Qg(`click`,function(){return t.act(`revalidate`)}),J(20,` Revalidate `),U(),H(21,`button`,11),Qg(`click`,function(){return t.act(`store-as-global`)}),J(22,`Store as global`),U()(),P(23,ZL,2,1,`p`,13),H(24,`p`,14),J(25),U()),e&2&&(M(5),Y(t.node().path||`(form)`),M(2),Y(t.node().type),M(),N(`aria-label`,`Close details for `+(t.node().path||`the form`)),M(2),F(t.failed()?10:11),M(2),F(t.node().type===`control`&&!t.node().redacted?12:t.node().type===`control`?13:-1),M(5),Vg(`disabled`,!t.canWrite()),N(`aria-describedby`,t.canWrite()?null:`field-writes-off`),M(2),Vg(`disabled`,!t.canWrite()),N(`aria-describedby`,t.canWrite()?null:`field-writes-off`),M(4),F(t.canWrite()?-1:23),M(2),Y(t.message()))},styles:[`.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12.5px; +} + +.small[_ngcontent-%COMP%] { + display: inline-block; + max-width: 100%; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + line-height: 32px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + cursor: pointer; + transition: background-color 150ms var(--%NS%ease), border-color 150ms var(--%NS%ease), color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.small[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-3); + border-color: color-mix(in srgb, var(--%NS%text-3) 55%, var(--%NS%border-strong)); +} + +.small[_ngcontent-%COMP%]:active { + background: var(--%NS%border-strong); +} + +.small[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.small[_ngcontent-%COMP%]:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.small.primary[_ngcontent-%COMP%] { + background: var(--%NS%accent); + border-color: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +.small.primary[_ngcontent-%COMP%]:hover { + background: var(--%NS%accent-hover); + border-color: var(--%NS%accent-hover); +} + +.small.danger[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 40%, transparent); + color: var(--%NS%danger); +} + +.small.danger[_ngcontent-%COMP%]:hover { + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + border-color: color-mix(in srgb, var(--%NS%danger) 55%, transparent); +} + +.small.armed[_ngcontent-%COMP%] { + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.small.danger.armed[_ngcontent-%COMP%] { + background: var(--%NS%danger); + border-color: var(--%NS%danger); + color: #1f0707; + font-weight: 600; + box-shadow: 0 0 0 3px color-mix(in srgb, var(--%NS%danger) 18%, transparent); +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .small.danger.armed[_ngcontent-%COMP%] { + color: #fff; + } +} +:root[data-theme=light] [_nghost-%COMP%] .small.danger.armed[_ngcontent-%COMP%] { + color: #fff; +} + +.field-input[_ngcontent-%COMP%] { + min-width: 0; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 13px; + transition: border-color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.field-input[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); + font-family: var(--%NS%font-sans); +} + +.field-input[_ngcontent-%COMP%]:hover { + border-color: color-mix(in srgb, var(--%NS%text-3) 55%, var(--%NS%border-strong)); +} + +.field-input[_ngcontent-%COMP%]:focus, +.field-input[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.explain[_ngcontent-%COMP%] { + margin: 0; + padding: 12px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 12.5px; + line-height: 1.6; + white-space: pre-wrap; + overflow-wrap: anywhere; + tab-size: 2; +} + +.explain[aria-busy=true][_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +.section-label[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.tag[_ngcontent-%COMP%] { + display: inline-block; + margin: 0; + padding: 1px 8px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text-2); + font-size: 11px; + font-weight: 500; + line-height: 18px; + white-space: nowrap; + font-variant-numeric: tabular-nums; +} + +.tag[data-tone=ok][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, var(--%NS%surface)); + color: var(--%NS%ok); +} + +.tag[data-tone=warn][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, var(--%NS%surface)); + color: var(--%NS%warn); +} + +.tag[data-tone=bad][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, var(--%NS%surface)); + color: var(--%NS%danger); +} + +.status[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-2); + font-size: 12.5px; + line-height: 1.5; + overflow-wrap: anywhere; +} + +.empty-state[_ngcontent-%COMP%] { + display: grid; + justify-items: center; + gap: 6px; + margin: 0; + padding: 40px 24px; + border: 1px dashed var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; + text-align: center; +} + +.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + max-width: 52ch; + margin: 0; +} + +.empty-state[_ngcontent-%COMP%] .empty-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.spinner[_ngcontent-%COMP%] { + width: 16px; + height: 16px; + border: 2px solid var(--%NS%border-strong); + border-top-color: var(--%NS%accent); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +[_nghost-%COMP%] { + display: flex; + flex-direction: column; + gap: 12px; + min-width: 0; + padding: 16px; + background: var(--%NS%surface-2); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + animation: enter 0.35s var(--%NS%ease) both; +} + +.head[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px 8px; + align-items: center; + min-width: 0; +} + +.head[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%] { + flex-basis: 100%; +} + +h3[_ngcontent-%COMP%] { + flex: 1 1 0; + min-width: 0; + margin: 0; + color: var(--%NS%text-strong); + font-family: var(--%NS%font-mono); + font-size: 14px; + font-weight: 600; + line-height: 1.4; + overflow-wrap: anywhere; + border-radius: 4px; +} + +h3[_ngcontent-%COMP%]:focus { + outline: none; +} + +a[_ngcontent-%COMP%] { + color: var(--%NS%accent); + border-radius: 2px; +} + +a[_ngcontent-%COMP%]:focus-visible, +h3[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.close[_ngcontent-%COMP%] { + margin-left: auto; +} + +.failed[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: center; +} + +.failed[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 0; + font-size: 12.5px; +} + +.editor[_ngcontent-%COMP%] { + display: flex; + gap: 8px; + align-items: center; +} + +.editor[_ngcontent-%COMP%] .field-input[_ngcontent-%COMP%] { + flex: 1 1 auto; +} + +.row[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; + align-items: center; +} + +.status[_ngcontent-%COMP%] { + margin-top: -4px; +} + +.status[_ngcontent-%COMP%]:empty { + height: 0; + margin: -12px 0 0; +}`]})};function $L(e,t){if(e&1){let e=W();H(0,`div`,0)(1,`p`,4),J(2,`Could not explain this form`),U(),H(3,`p`),J(4,`The devtools server did not answer. Check that the app is running, then try again.`),U(),H(5,`button`,2),Qg(`click`,function(){return O(e),k(K().retry())}),J(6,`Try again`),U()()}}function eR(e,t){if(e&1&&(H(0,`section`,5)(1,`h3`,6),J(2,`Submit`),U(),H(3,`pre`,7),J(4),U()(),H(5,`section`,8)(6,`h3`,9),J(7,`Payload`),U(),H(8,`pre`,7),J(9),U()()),e&2){let e=K();M(3),N(`aria-busy`,e.submit()===null?`true`:null),M(),Y(e.submit()??`Loading…`),M(4),N(`aria-busy`,e.payload()===null?`true`:null),M(),Y(e.payload()??`Loading…`)}}function tR(e,t){if(e&1){let e=W();H(0,`div`,0)(1,`p`,3),J(2,`Could not check this form`),U(),H(3,`p`),J(4,`The devtools server did not answer. Check that the app is running, then try again.`),U(),H(5,`button`,4),Qg(`click`,function(){return O(e),k(K().retry())}),J(6,`Try again`),U()()}}function nR(e,t){e&1&&(H(0,`div`,1),Fg(1,`span`,5),H(2,`p`),J(3,`Checking the form for problems…`),U()())}function rR(e,t){e&1&&(H(0,`div`,2)(1,`span`,6),A(),H(2,`svg`,7),Fg(3,`path`,8),U()(),ps(),H(4,`p`,3),J(5,`No problems found`),U(),H(6,`p`),J(7,`For generic accessibility checks, run axe on the page.`),U()())}function iR(e,t){if(e&1&&(H(0,`span`,15),J(1,`at `),H(2,`code`),J(3),U()()),e&2){let e=K().$implicit;M(3),Y(e.path)}}function aR(e,t){if(e&1&&(H(0,`li`)(1,`div`,12)(2,`span`,13),J(3),U(),H(4,`code`,14),J(5),U(),P(6,iR,4,1,`span`,15),U(),H(7,`p`,16),J(8),U(),H(9,`p`,17)(10,`span`,18),J(11,`Fix`),U(),J(12),U()()),e&2){let e=t.$implicit;N(`data-severity`,e.severity),M(2),N(`data-tone`,e.severity===`info`?``:e.severity===`error`?`bad`:`warn`),M(),Y(e.severity),M(2),Y(e.rule),M(),F(e.path?6:-1),M(2),Y(e.message),M(4),X(` `,e.fix)}}function oR(e,t){if(e&1&&(H(0,`p`,9)(1,`span`,10),J(2),U(),J(3),U(),H(4,`ul`,11),I(5,aR,13,7,`li`,null,Cg),U()),e&2){let e=K();M(2),Y(e.findings().length),M(),X(` `,e.findings().length===1?`finding`:`findings`,` `),M(2),L(e.findings())}}var sR=class e{formId=$.required();version=$(0);rpc=$(null);submit=Tv({source:this.formId,computation:()=>null});payload=Tv({source:this.formId,computation:()=>null});failed=Tv({source:this.formId,computation:()=>!1});message=j(``);attempt=j(0);constructor(){uc(()=>{let e=this.formId();this.version(),this.attempt();let t=this.rpc();t&&Cv(async()=>{let[n,r]=await Promise.all([dE(t,`forms-explain`,{kind:`submit`,form:e}),dE(t,`forms-explain`,{kind:`payload`,form:e})]);if(this.formId()===e){if(n===null||r===null){this.failed.set(!0);return}this.failed.set(!1),this.submit.set(vE(n)),this.payload.set(vE(r))}})})}retry(){this.failed.set(!1),this.attempt.update(e=>e+1)}async copyFixture(){let e=(await dE(this.rpc(),`forms-explain`,{kind:`fixture`,form:this.formId()})??``).match(/```ts\n([\s\S]*)```\s*$/)?.[1];if(!e){this.message.set(`No test fixture is available for this form.`);return}try{await navigator.clipboard.writeText(e),this.message.set(`Copied.`)}catch{this.message.set(`Clipboard is not available here.`)}}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-forms-submit`]],inputs:{formId:[1,`formId`],version:[1,`version`],rpc:[1,`rpc`]},decls:7,vars:2,consts:[[`role`,`alert`,1,`empty-state`],[1,`fixture`],[`type`,`button`,1,`small`,3,`click`],[`role`,`status`,1,`status`],[1,`empty-title`],[`aria-labelledby`,`forms-submit-title`,1,`block`],[`id`,`forms-submit-title`,1,`section-label`],[1,`explain`],[`aria-labelledby`,`forms-payload-title`,1,`block`],[`id`,`forms-payload-title`,1,`section-label`]],template:function(e,t){e&1&&(P(0,$L,7,0,`div`,0)(1,eR,10,4),H(2,`div`,1)(3,`button`,2),Qg(`click`,function(){return t.copyFixture()}),J(4,`Copy test fixture`),U(),H(5,`span`,3),J(6),U()()),e&2&&(F(+!t.failed()),M(6),Y(t.message()))},styles:[`.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12.5px; +} + +.small[_ngcontent-%COMP%] { + display: inline-block; + max-width: 100%; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + line-height: 32px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + cursor: pointer; + transition: background-color 150ms var(--%NS%ease), border-color 150ms var(--%NS%ease), color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.small[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-3); + border-color: color-mix(in srgb, var(--%NS%text-3) 55%, var(--%NS%border-strong)); +} + +.small[_ngcontent-%COMP%]:active { + background: var(--%NS%border-strong); +} + +.small[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.small[_ngcontent-%COMP%]:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.small.primary[_ngcontent-%COMP%] { + background: var(--%NS%accent); + border-color: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +.small.primary[_ngcontent-%COMP%]:hover { + background: var(--%NS%accent-hover); + border-color: var(--%NS%accent-hover); +} + +.small.danger[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 40%, transparent); + color: var(--%NS%danger); +} + +.small.danger[_ngcontent-%COMP%]:hover { + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + border-color: color-mix(in srgb, var(--%NS%danger) 55%, transparent); +} + +.small.armed[_ngcontent-%COMP%] { + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.small.danger.armed[_ngcontent-%COMP%] { + background: var(--%NS%danger); + border-color: var(--%NS%danger); + color: #1f0707; + font-weight: 600; + box-shadow: 0 0 0 3px color-mix(in srgb, var(--%NS%danger) 18%, transparent); +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .small.danger.armed[_ngcontent-%COMP%] { + color: #fff; + } +} +:root[data-theme=light] [_nghost-%COMP%] .small.danger.armed[_ngcontent-%COMP%] { + color: #fff; +} + +.field-input[_ngcontent-%COMP%] { + min-width: 0; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 13px; + transition: border-color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.field-input[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); + font-family: var(--%NS%font-sans); +} + +.field-input[_ngcontent-%COMP%]:hover { + border-color: color-mix(in srgb, var(--%NS%text-3) 55%, var(--%NS%border-strong)); +} + +.field-input[_ngcontent-%COMP%]:focus, +.field-input[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.explain[_ngcontent-%COMP%] { + margin: 0; + padding: 12px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 12.5px; + line-height: 1.6; + white-space: pre-wrap; + overflow-wrap: anywhere; + tab-size: 2; +} + +.explain[aria-busy=true][_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +.section-label[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.tag[_ngcontent-%COMP%] { + display: inline-block; + margin: 0; + padding: 1px 8px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text-2); + font-size: 11px; + font-weight: 500; + line-height: 18px; + white-space: nowrap; + font-variant-numeric: tabular-nums; +} + +.tag[data-tone=ok][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, var(--%NS%surface)); + color: var(--%NS%ok); +} + +.tag[data-tone=warn][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, var(--%NS%surface)); + color: var(--%NS%warn); +} + +.tag[data-tone=bad][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, var(--%NS%surface)); + color: var(--%NS%danger); +} + +.status[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-2); + font-size: 12.5px; + line-height: 1.5; + overflow-wrap: anywhere; +} + +.empty-state[_ngcontent-%COMP%] { + display: grid; + justify-items: center; + gap: 6px; + margin: 0; + padding: 40px 24px; + border: 1px dashed var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; + text-align: center; +} + +.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + max-width: 52ch; + margin: 0; +} + +.empty-state[_ngcontent-%COMP%] .empty-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.spinner[_ngcontent-%COMP%] { + width: 16px; + height: 16px; + border: 2px solid var(--%NS%border-strong); + border-top-color: var(--%NS%accent); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +[_nghost-%COMP%] { + display: grid; + gap: 16px; + min-width: 0; + animation: enter 0.35s var(--%NS%ease) both; +} + +.block[_ngcontent-%COMP%] { + display: grid; + gap: 8px; + min-width: 0; +} + +.explain[_ngcontent-%COMP%] { + max-height: 420px; + overflow: auto; +} + +.fixture[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: center; +}`]})},cR=class e{formId=$.required();version=$(0);rpc=$(null);findings=Tv({source:this.formId,computation:()=>null});failed=Tv({source:this.formId,computation:()=>!1});attempt=j(0);constructor(){uc(()=>{let e=this.formId();this.version(),this.attempt();let t=this.rpc();t&&Cv(async()=>{let n=await dE(t,`forms-lint`,{form:e});this.formId()===e&&(this.failed.set(n===null),n&&this.findings.set(n))})})}retry(){this.failed.set(!1),this.attempt.update(e=>e+1)}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-forms-lint`]],inputs:{formId:[1,`formId`],version:[1,`version`],rpc:[1,`rpc`]},decls:4,vars:1,consts:[[`role`,`alert`,1,`empty-state`],[`role`,`status`,1,`empty-state`],[1,`empty-state`],[1,`empty-title`],[`type`,`button`,1,`small`,3,`click`],[`aria-hidden`,`true`,1,`spinner`],[`aria-hidden`,`true`,1,`ok-icon`],[`width`,`16`,`height`,`16`,`viewBox`,`0 0 24 24`,`fill`,`none`,`stroke`,`currentColor`,`stroke-width`,`2.5`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`],[`d`,`M20 6 9 17l-5-5`],[1,`summary`],[1,`tabular`],[1,`findings`],[1,`meta`],[1,`tag`,`severity`],[1,`rule`],[1,`muted`,`path`],[1,`message`],[1,`fix`],[1,`fix-label`]],template:function(e,t){e&1&&P(0,tR,7,0,`div`,0)(1,nR,4,0,`div`,1)(2,rR,8,0,`div`,2)(3,oR,7,2),e&2&&F(t.failed()?0:t.findings()===null?1:t.findings().length?3:2)},styles:[`.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12.5px; +} + +.small[_ngcontent-%COMP%] { + display: inline-block; + max-width: 100%; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + line-height: 32px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + cursor: pointer; + transition: background-color 150ms var(--%NS%ease), border-color 150ms var(--%NS%ease), color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.small[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-3); + border-color: color-mix(in srgb, var(--%NS%text-3) 55%, var(--%NS%border-strong)); +} + +.small[_ngcontent-%COMP%]:active { + background: var(--%NS%border-strong); +} + +.small[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.small[_ngcontent-%COMP%]:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.small.primary[_ngcontent-%COMP%] { + background: var(--%NS%accent); + border-color: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +.small.primary[_ngcontent-%COMP%]:hover { + background: var(--%NS%accent-hover); + border-color: var(--%NS%accent-hover); +} + +.small.danger[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 40%, transparent); + color: var(--%NS%danger); +} + +.small.danger[_ngcontent-%COMP%]:hover { + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + border-color: color-mix(in srgb, var(--%NS%danger) 55%, transparent); +} + +.small.armed[_ngcontent-%COMP%] { + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.small.danger.armed[_ngcontent-%COMP%] { + background: var(--%NS%danger); + border-color: var(--%NS%danger); + color: #1f0707; + font-weight: 600; + box-shadow: 0 0 0 3px color-mix(in srgb, var(--%NS%danger) 18%, transparent); +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .small.danger.armed[_ngcontent-%COMP%] { + color: #fff; + } +} +:root[data-theme=light] [_nghost-%COMP%] .small.danger.armed[_ngcontent-%COMP%] { + color: #fff; +} + +.field-input[_ngcontent-%COMP%] { + min-width: 0; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 13px; + transition: border-color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.field-input[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); + font-family: var(--%NS%font-sans); +} + +.field-input[_ngcontent-%COMP%]:hover { + border-color: color-mix(in srgb, var(--%NS%text-3) 55%, var(--%NS%border-strong)); +} + +.field-input[_ngcontent-%COMP%]:focus, +.field-input[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.explain[_ngcontent-%COMP%] { + margin: 0; + padding: 12px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 12.5px; + line-height: 1.6; + white-space: pre-wrap; + overflow-wrap: anywhere; + tab-size: 2; +} + +.explain[aria-busy=true][_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +.section-label[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.tag[_ngcontent-%COMP%] { + display: inline-block; + margin: 0; + padding: 1px 8px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text-2); + font-size: 11px; + font-weight: 500; + line-height: 18px; + white-space: nowrap; + font-variant-numeric: tabular-nums; +} + +.tag[data-tone=ok][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, var(--%NS%surface)); + color: var(--%NS%ok); +} + +.tag[data-tone=warn][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, var(--%NS%surface)); + color: var(--%NS%warn); +} + +.tag[data-tone=bad][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, var(--%NS%surface)); + color: var(--%NS%danger); +} + +.status[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-2); + font-size: 12.5px; + line-height: 1.5; + overflow-wrap: anywhere; +} + +.empty-state[_ngcontent-%COMP%] { + display: grid; + justify-items: center; + gap: 6px; + margin: 0; + padding: 40px 24px; + border: 1px dashed var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; + text-align: center; +} + +.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + max-width: 52ch; + margin: 0; +} + +.empty-state[_ngcontent-%COMP%] .empty-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.spinner[_ngcontent-%COMP%] { + width: 16px; + height: 16px; + border: 2px solid var(--%NS%border-strong); + border-top-color: var(--%NS%accent); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +[_nghost-%COMP%] { + display: grid; + gap: 12px; + min-width: 0; +} + +.ok-icon[_ngcontent-%COMP%] { + display: grid; + place-items: center; + width: 32px; + height: 32px; + margin-bottom: 4px; + border-radius: 50%; + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.summary[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-2); + font-size: 12.5px; +} + +.tabular[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-weight: 600; + font-variant-numeric: tabular-nums; +} + +.findings[_ngcontent-%COMP%] { + display: grid; + gap: 8px; + margin: 0; + padding: 0; + list-style: none; + color: var(--%NS%text); + font-size: 13px; + animation: enter 0.35s var(--%NS%ease) both; +} + +.findings[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + min-width: 0; + padding: 12px 16px; + background: var(--%NS%surface-2); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + box-shadow: inset 3px 0 0 var(--%NS%border-strong); + transition: border-color 150ms var(--%NS%ease); +} + +.findings[_ngcontent-%COMP%] li[data-severity=error][_ngcontent-%COMP%] { + box-shadow: inset 3px 0 0 var(--%NS%danger); +} + +.findings[_ngcontent-%COMP%] li[data-severity=warning][_ngcontent-%COMP%] { + box-shadow: inset 3px 0 0 var(--%NS%warn); +} + +.findings[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%border-strong); +} + +.meta[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px 8px; + align-items: center; + min-width: 0; +} + +.severity[_ngcontent-%COMP%] { + text-transform: uppercase; + letter-spacing: 0.06em; +} + +.rule[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-weight: 600; + overflow-wrap: anywhere; +} + +.path[_ngcontent-%COMP%] { + font-size: 12.5px; + overflow-wrap: anywhere; +} + +.path[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + color: #fde68a; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .path[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + color: var(--%NS%accent); + } +} +:root[data-theme=light] [_nghost-%COMP%] .path[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + color: var(--%NS%accent); +} + +.message[_ngcontent-%COMP%], +.fix[_ngcontent-%COMP%] { + margin: 0; + line-height: 1.5; + overflow-wrap: anywhere; +} + +.fix[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 12.5px; +} + +.fix-label[_ngcontent-%COMP%] { + margin-right: 4px; + color: var(--%NS%accent); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.06em; + text-transform: uppercase; +}`]})},lR=[`pathInput`],uR=()=>[],dR=(e,t)=>t.formId+`#`+t.seq;function fR(e,t){e&1&&V(0,`span`,6)}function pR(e,t){if(e&1){let e=W();z(0,`label`)(1,`input`,21),G(`change`,function(){let t=O(e).$implicit;return k(K().filter.set(t))}),B(),J(2),B()}if(e&2){let e=t.$implicit,n=K();M(),R(`value`,e)(`checked`,e===n.filter()),M(),X(` `,e,` `)}}function mR(e,t){if(e&1&&(z(0,`span`,26),J(1),B()),e&2){let e=K().$implicit;N(`data-tone`,e.outcome===`ran`?``:`bad`),M(),Y(e.outcome)}}function hR(e,t){if(e&1&&(z(0,`span`,26),J(1),B()),e&2){let e=K().$implicit;M(),X(`×`,e.count)}}function gR(e,t){if(e&1&&(z(0,`span`,26),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.origin)}}function _R(e,t){if(e&1&&(z(0,`span`,26),J(1),B()),e&2){let e=K().$implicit;N(`data-tone`,e.ms>1e3?`warn`:``),M(),X(`pending `,e.ms,`ms`)}}function vR(e,t){if(e&1&&(z(0,`span`,26),J(1),B()),e&2){let e=K().$implicit;N(`data-tone`,e.renders>20?`warn`:``),M(),Z(``,e.renders,` renders: `,(e.rendered??ov(3,uR)).join(`, `))}}function yR(e,t){if(e&1&&(z(0,`span`,29),J(1),B(),z(2,`span`,30),J(3,`→`),B(),z(4,`span`,9),J(5,`changed to`),B()),e&2){let e=K(2).$implicit;M(),Y(e.prev)}}function bR(e,t){if(e&1&&(z(0,`div`,27),P(1,yR,6,1),J(2),B()),e&2){let e=K().$implicit;M(),F(e.prev===void 0?-1:1),M(),X(` `,e.detail,` `)}}function xR(e,t){if(e&1&&(z(0,`span`,28),J(1),B()),e&2){let e=K().$implicit;M(),X(`from `,e.caller)}}function SR(e,t){if(e&1&&(z(0,`li`)(1,`time`),J(2),B(),z(3,`div`,22)(4,`div`,23)(5,`code`,24),J(6),B(),z(7,`span`,25),J(8),B(),P(9,mR,2,2,`span`,26),P(10,hR,2,1,`span`,26),P(11,gR,2,1,`span`,26),P(12,_R,2,2,`span`,26),P(13,vR,2,4,`span`,26),B(),P(14,bR,3,2,`div`,27),P(15,xR,2,1,`span`,28),B()()),e&2){let e=t.$implicit,n=K(2);N(`data-type`,e.type),M(),N(`datetime`,n.iso(e.timestamp)),M(),Y(n.time(e.timestamp)),M(4),Y(e.path||`(form)`),M(2),Y(e.type),M(),F(e.outcome?9:-1),M(),F(e.count&&e.count>1?10:-1),M(),F(e.origin?11:-1),M(),F(e.ms===void 0?-1:12),M(),F(e.renders?13:-1),M(),F(e.prev!==void 0||e.detail?14:-1),M(),F(e.caller?15:-1)}}function CR(e,t){if(e&1&&(z(0,`ol`,19),I(1,SR,16,12,`li`,null,dR),B()),e&2){let e=K();M(),L(e.shown())}}function wR(e,t){if(e&1){let e=W();z(0,`div`,20)(1,`p`,31),J(2,`No events match these filters`),B(),z(3,`p`),J(4,`Change the path, type or origin, or interact with the form to record more.`),B(),z(5,`button`,32),G(`click`,function(){return O(e),k(K().clearFilters())}),J(6,`Clear filters`),B()()}}function TR(e,t){e&1&&(z(0,`div`,20)(1,`p`,31),J(2,`No changes yet`),B(),z(3,`p`),J(4,`Type into the form to see them here.`),B()())}var ER=[`all`,`user`,`code`,`agent`,`devtools`],DR=[`value`,`status`,`touched`,`dirty`,`submit`,`reset`,`added`,`removed`,`moved`,`validators`],OR=class e{events=$.required();recording=$(!1);record=Ov();toggle(e){let t=e.target;t.checked=this.recording(),this.record.emit(!this.recording())}origins=ER;filter=j(`all`);pathFilter=j(``);typeFilter=j(`all`);pathInput=Rv(`pathInput`);typeOptions=Q(()=>{let e=new Set(this.events().map(e=>e.type)),t=this.typeFilter();t&&t!==`all`&&e.add(t);let n=DR.filter(t=>e.has(t)),r=[...e].filter(e=>!DR.includes(e)).sort();return[{value:`all`,label:`All types`},...[...n,...r].map(e=>({value:e,label:e}))]});matching=Q(()=>{let e=this.filter(),t=this.typeFilter()??`all`,n=this.pathFilter().trim().toLowerCase();return this.events().filter(r=>(e===`all`||r.origin===e)&&(t===`all`||r.type===t)&&(!n||r.path.toLowerCase().includes(n)))});shown=Q(()=>this.matching().slice(-100).reverse());filtered=Q(()=>this.filter()!==`all`||(this.typeFilter()??`all`)!==`all`||!!this.pathFilter().trim());summary=Q(()=>{let e=this.events().length,t=this.matching().length,n=e=>e===1?`event`:`events`,r=this.filtered()?` matching ${n(t)}`:` ${n(t)}`;return t>100?`Showing the latest 100 of ${t}${r}`:this.filtered()?`${t} of ${e} ${n(e)}`:`${e} ${n(e)}`});filterStatus=Q(()=>(this.filter(),this.typeFilter(),this.pathFilter(),Cv(()=>this.summary())));clearFilters(){this.pathFilter.set(``),this.typeFilter.set(`all`),this.filter.set(`all`),this.pathInput()?.nativeElement.focus()}iso(e){return new Date(e).toISOString()}time=RD;static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-forms-timeline`]],viewQuery:function(e,t){e&1&&e_(t.pathInput,lR,5),e&2&&t_()},inputs:{events:[1,`events`],recording:[1,`recording`]},outputs:{record:`record`},decls:29,vars:10,consts:[[`pathInput`,``],[1,`toolbar`],[1,`record`],[`type`,`checkbox`,3,`change`,`checked`],[1,`record-text`],[1,`record-title`],[`aria-hidden`,`true`,1,`rec-dot`],[1,`record-hint`],[1,`chips`],[1,`sr-only`],[1,`filters`],[1,`search`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`search-icon`],[`cx`,`11`,`cy`,`11`,`r`,`7`],[`d`,`m20 20-3.5-3.5`],[`type`,`search`,`placeholder`,`Filter by field path…`,`aria-label`,`Filter by field path`,`autocomplete`,`off`,`spellcheck`,`false`,3,`input`,`keydown.escape`,`value`],[`ariaLabel`,`Event type`,3,`valueChange`,`options`,`value`],[1,`total`],[`role`,`status`,1,`sr-only`],[1,`events`],[1,`empty-state`],[`type`,`radio`,`name`,`timeline-origin`,3,`change`,`value`,`checked`],[1,`body`],[1,`line`],[1,`path`],[1,`event-type`],[1,`tag`],[1,`detail`],[1,`caller`],[1,`prev`],[`aria-hidden`,`true`,1,`arrow`],[1,`empty-title`],[`type`,`button`,1,`small`,3,`click`]],template:function(e,t){if(e&1){let e=W();z(0,`div`,1)(1,`label`,2)(2,`input`,3),G(`change`,function(e){return t.toggle(e)}),B(),z(3,`span`,4)(4,`span`,5),P(5,fR,1,0,`span`,6),J(6,` Record details `),B(),z(7,`span`,7),J(8,`Record calling code, validator changes and renders per keystroke`),B()()(),z(9,`fieldset`,8)(10,`legend`,9),J(11,`Show changes from`),B(),I(12,pR,3,3,`label`,null,wg),B()(),z(14,`div`,10)(15,`div`,11),A(),z(16,`svg`,12),V(17,`circle`,13)(18,`path`,14),B(),ps(),z(19,`input`,15,0),G(`input`,function(e){return t.pathFilter.set(e.target.value)})(`keydown.escape`,function(){return t.pathFilter.set(``)}),B()(),z(21,`app-select`,16),ev(`valueChange`,function(n){return O(e),$_(t.typeFilter,n)||(t.typeFilter=n),k(n)}),B(),z(22,`span`,17),J(23),B(),z(24,`span`,18),J(25),B()(),P(26,CR,3,0,`ol`,19)(27,wR,7,0,`div`,20)(28,TR,5,0,`div`,20)}e&2&&(M(),q(`on`,t.recording()),M(),R(`checked`,t.recording()),M(3),F(t.recording()?5:-1),M(7),L(t.origins),M(7),R(`value`,t.pathFilter()),M(2),R(`options`,t.typeOptions()),Q_(`value`,t.typeFilter),M(2),Y(t.summary()),M(2),Y(t.filterStatus()),M(),F(t.shown().length?26:t.events().length?27:28))},dependencies:[AD],styles:[`.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12.5px; +} + +.small[_ngcontent-%COMP%] { + display: inline-block; + max-width: 100%; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + line-height: 32px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + cursor: pointer; + transition: background-color 150ms var(--%NS%ease), border-color 150ms var(--%NS%ease), color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.small[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-3); + border-color: color-mix(in srgb, var(--%NS%text-3) 55%, var(--%NS%border-strong)); +} + +.small[_ngcontent-%COMP%]:active { + background: var(--%NS%border-strong); +} + +.small[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.small[_ngcontent-%COMP%]:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.small.primary[_ngcontent-%COMP%] { + background: var(--%NS%accent); + border-color: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +.small.primary[_ngcontent-%COMP%]:hover { + background: var(--%NS%accent-hover); + border-color: var(--%NS%accent-hover); +} + +.small.danger[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 40%, transparent); + color: var(--%NS%danger); +} + +.small.danger[_ngcontent-%COMP%]:hover { + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + border-color: color-mix(in srgb, var(--%NS%danger) 55%, transparent); +} + +.small.armed[_ngcontent-%COMP%] { + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.small.danger.armed[_ngcontent-%COMP%] { + background: var(--%NS%danger); + border-color: var(--%NS%danger); + color: #1f0707; + font-weight: 600; + box-shadow: 0 0 0 3px color-mix(in srgb, var(--%NS%danger) 18%, transparent); +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .small.danger.armed[_ngcontent-%COMP%] { + color: #fff; + } +} +:root[data-theme=light] [_nghost-%COMP%] .small.danger.armed[_ngcontent-%COMP%] { + color: #fff; +} + +.field-input[_ngcontent-%COMP%] { + min-width: 0; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 13px; + transition: border-color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.field-input[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); + font-family: var(--%NS%font-sans); +} + +.field-input[_ngcontent-%COMP%]:hover { + border-color: color-mix(in srgb, var(--%NS%text-3) 55%, var(--%NS%border-strong)); +} + +.field-input[_ngcontent-%COMP%]:focus, +.field-input[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.explain[_ngcontent-%COMP%] { + margin: 0; + padding: 12px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 12.5px; + line-height: 1.6; + white-space: pre-wrap; + overflow-wrap: anywhere; + tab-size: 2; +} + +.explain[aria-busy=true][_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +.section-label[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.tag[_ngcontent-%COMP%] { + display: inline-block; + margin: 0; + padding: 1px 8px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text-2); + font-size: 11px; + font-weight: 500; + line-height: 18px; + white-space: nowrap; + font-variant-numeric: tabular-nums; +} + +.tag[data-tone=ok][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, var(--%NS%surface)); + color: var(--%NS%ok); +} + +.tag[data-tone=warn][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, var(--%NS%surface)); + color: var(--%NS%warn); +} + +.tag[data-tone=bad][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, var(--%NS%surface)); + color: var(--%NS%danger); +} + +.status[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-2); + font-size: 12.5px; + line-height: 1.5; + overflow-wrap: anywhere; +} + +.empty-state[_ngcontent-%COMP%] { + display: grid; + justify-items: center; + gap: 6px; + margin: 0; + padding: 40px 24px; + border: 1px dashed var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; + text-align: center; +} + +.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + max-width: 52ch; + margin: 0; +} + +.empty-state[_ngcontent-%COMP%] .empty-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.spinner[_ngcontent-%COMP%] { + width: 16px; + height: 16px; + border: 2px solid var(--%NS%border-strong); + border-top-color: var(--%NS%accent); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +[_nghost-%COMP%] { + display: grid; + gap: 12px; + min-width: 0; +} + +.toolbar[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 12px; + align-items: center; + justify-content: space-between; +} + +.record[_ngcontent-%COMP%] { + display: inline-flex; + flex: 1 1 260px; + gap: 10px; + align-items: flex-start; + min-width: 0; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + cursor: pointer; + transition: border-color 150ms var(--%NS%ease), background-color 150ms var(--%NS%ease); +} + +.record[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%border-strong); +} + +.record.on[_ngcontent-%COMP%] { + border-color: var(--%NS%accent-line); + background: var(--%NS%accent-soft); +} + +.record[_ngcontent-%COMP%]:has(input:focus-visible) { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.record[_ngcontent-%COMP%] input[_ngcontent-%COMP%] { + flex: none; + width: 16px; + height: 16px; + margin: 2px 0 0; + accent-color: var(--%NS%accent); + cursor: pointer; +} + +.record[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus-visible { + outline: none; +} + +.record-text[_ngcontent-%COMP%] { + display: grid; + gap: 2px; + min-width: 0; +} + +.record-title[_ngcontent-%COMP%] { + display: inline-flex; + gap: 6px; + align-items: center; + color: var(--%NS%text-strong); + font-size: 13px; + font-weight: 500; +} + +.record-hint[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 12px; + line-height: 1.4; +} + +.rec-dot[_ngcontent-%COMP%] { + width: 8px; + height: 8px; + border-radius: 50%; + background: var(--%NS%danger); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--%NS%danger) 20%, transparent); + animation: _ngcontent-%COMP%_rec-pulse 1.6s ease-in-out infinite; +} + +@keyframes _ngcontent-%COMP%_rec-pulse { + 50% { + opacity: 0.45; + } +} +.chips[_ngcontent-%COMP%] { + display: inline-flex; + flex: none; + gap: 2px; + min-width: 0; + height: 34px; + margin: 0; + padding: 2px; + background: var(--%NS%bg); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); +} + +.chips[_ngcontent-%COMP%] label[_ngcontent-%COMP%] { + position: relative; + display: inline-flex; + align-items: center; + height: 28px; + padding: 0 12px; + border-radius: 7px; + color: var(--%NS%text-2); + font-size: 12.5px; + font-weight: 500; + text-transform: capitalize; + cursor: pointer; + user-select: none; + transition: background-color 150ms var(--%NS%ease), color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.chips[_ngcontent-%COMP%] label[_ngcontent-%COMP%]:hover { + color: var(--%NS%text); + background: var(--%NS%surface-2); +} + +.chips[_ngcontent-%COMP%] input[_ngcontent-%COMP%] { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + margin: 0; + opacity: 0; + cursor: pointer; +} + +.chips[_ngcontent-%COMP%] label[_ngcontent-%COMP%]:has(input:checked) { + background: var(--%NS%surface-3); + color: var(--%NS%text-strong); + box-shadow: inset 0 0 0 1px var(--%NS%border-strong); +} + +.chips[_ngcontent-%COMP%] label[_ngcontent-%COMP%]:has(input:focus-visible) { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.filters[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: center; + min-width: 0; +} + +.search[_ngcontent-%COMP%] { + position: relative; + flex: 1 1 200px; + min-width: 0; +} + +.search-icon[_ngcontent-%COMP%] { + position: absolute; + top: 50%; + left: 12px; + width: 14px; + height: 14px; + transform: translateY(-50%); + fill: none; + stroke: var(--%NS%text-3); + stroke-width: 2.2; + stroke-linecap: round; + pointer-events: none; +} + +.search[_ngcontent-%COMP%]:focus-within .search-icon[_ngcontent-%COMP%] { + stroke: var(--%NS%accent); +} + +input[type=search][_ngcontent-%COMP%] { + width: 100%; + height: var(--%NS%control-h); + padding: 0 12px 0 34px; + background: var(--%NS%bg); + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text); + font-size: 13px; + transition: border-color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +input[type=search][_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +input[type=search][_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.filters[_ngcontent-%COMP%] app-select[_ngcontent-%COMP%] { + width: 150px; +} + +.total[_ngcontent-%COMP%] { + flex: none; + color: var(--%NS%text-2); + font-size: 12px; + font-variant-numeric: tabular-nums; +} + +.empty-state[_ngcontent-%COMP%] .small[_ngcontent-%COMP%] { + margin-top: 6px; +} + +.events[_ngcontent-%COMP%] { + display: grid; + gap: 2px; + margin: 0; + padding: 4px; + list-style: none; + background: var(--%NS%surface-2); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + font-size: 13px; + animation: enter 0.35s var(--%NS%ease) both; +} + +.events[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: 11ch minmax(0, 1fr); + gap: 12px; + align-items: baseline; + padding: 8px 12px; + border-radius: 6px; + color: var(--%NS%text); + transition: background-color 150ms var(--%NS%ease); +} + +.events[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-3); +} + +.events[_ngcontent-%COMP%] li[data-type=submit][_ngcontent-%COMP%] { + background: var(--%NS%accent-soft); + box-shadow: inset 2px 0 0 var(--%NS%accent); + color: var(--%NS%text-strong); +} + +.events[_ngcontent-%COMP%] li[data-type=submit][_ngcontent-%COMP%] time[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +time[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-family: var(--%NS%font-mono); + font-size: 12px; + font-variant-numeric: tabular-nums; + white-space: nowrap; +} + +.body[_ngcontent-%COMP%] { + display: grid; + gap: 4px; + min-width: 0; +} + +.line[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px 8px; + align-items: center; + min-width: 0; +} + +.path[_ngcontent-%COMP%] { + color: #fde68a; + overflow-wrap: anywhere; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .path[_ngcontent-%COMP%] { + color: var(--%NS%accent); + } +} +:root[data-theme=light] [_nghost-%COMP%] .path[_ngcontent-%COMP%] { + color: var(--%NS%accent); +} + +.event-type[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 12px; + font-weight: 600; +} + +.tag[_ngcontent-%COMP%] { + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; +} + +.detail[_ngcontent-%COMP%] { + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 12.5px; + overflow-wrap: anywhere; +} + +.prev[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + text-decoration: line-through; + text-decoration-color: color-mix(in srgb, var(--%NS%text-2) 50%, transparent); +} + +.arrow[_ngcontent-%COMP%] { + margin: 0 6px; + color: var(--%NS%text-3); +} + +.caller[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-family: var(--%NS%font-mono); + font-size: 12px; + overflow-wrap: anywhere; +} + +@media (max-width: 480px) { + .events[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + gap: 4px; + } + .chips[_ngcontent-%COMP%] { + width: 100%; + } + .filters[_ngcontent-%COMP%] app-select[_ngcontent-%COMP%] { + flex: 1 1 140px; + width: auto; + } + .total[_ngcontent-%COMP%] { + flex: 1 1 100%; + } + .chips[_ngcontent-%COMP%] label[_ngcontent-%COMP%] { + flex: 1; + justify-content: center; + padding: 0 8px; + } +}`]})},kR=(e,t)=>t.path;function AR(e,t){e&1&&(H(0,`span`,6),J(1,`duplicate name`),U())}function jR(e,t){if(e&1&&(H(0,`p`,7),J(1),U()),e&2){let e=K();M(),Y(e.description)}}function MR(e,t){if(e&1&&(H(0,`p`,8),J(1),U()),e&2){let e=K();M(),Y(e.error)}}function NR(e,t){if(e&1&&(H(0,`li`)(1,`code`),J(2),U(),J(3),U()),e&2){let e=t.$implicit;M(2),Y(e.path),M(),X(` is `,e.reason,` `)}}function PR(e,t){if(e&1&&(H(0,`div`,9)(1,`p`,10),J(2,`Angular could not infer an input schema. These fields block it:`),U(),H(3,`ul`),I(4,NR,4,2,`li`,null,kR),U()()),e&2){let e=K();M(4),L(e.blocking)}}function FR(e,t){e&1&&(H(0,`span`,12),J(1,`required`),U())}function IR(e,t){if(e&1&&(H(0,`li`)(1,`code`),J(2),U(),P(3,FR,2,0,`span`,12),U()),e&2){let e=t.$implicit,n=K(3);M(2),Y(e),M(),F(n.isRequired(e)?3:-1)}}function LR(e,t){if(e&1&&(H(0,`div`,9)(1,`p`,10),J(2,`Inputs`),U(),H(3,`ul`,11),I(4,IR,4,2,`li`,null,wg),U()()),e&2){let e=K();M(4),L(e.inputs)}}function RR(e,t){if(e&1&&(H(0,`li`)(1,`code`),J(2),U(),J(3),U()),e&2){let e=t.$implicit;M(2),Y(e.path),M(),X(` is now `,e.now?`required`:`optional`,` `)}}function zR(e,t){if(e&1&&(H(0,`div`,9)(1,`p`,10),J(2,` Required changed since registration. Angular reads it once, so agents still see the old schema: `),U(),H(3,`ul`),I(4,RR,4,2,`li`,null,kR),U()()),e&2){let e=K();M(4),L(e.requiredChanged)}}function BR(e,t){if(e&1&&(H(0,`span`,10),J(1),U()),e&2){let e=K().$implicit;M(),X(``,e.ms,` ms`)}}function VR(e,t){if(e&1&&(H(0,`span`,10),J(1),U()),e&2){let e=K().$implicit;M(),X(`fields `,e.fields.join(`, `))}}function HR(e,t){if(e&1&&(H(0,`pre`,13),J(1),U()),e&2){let e=K().$implicit;M(),Y(e.detail)}}function UR(e,t){if(e&1&&(H(0,`li`)(1,`time`),J(2),dv(3,`date`),U(),H(4,`span`,5),J(5),U(),P(6,BR,2,1,`span`,10),P(7,VR,2,1,`span`,10),P(8,HR,2,1,`pre`,13),U()),e&2){let e=t.$implicit,n=K(3);M(),N(`datetime`,n.iso(e.at)),M(),Y(mv(3,7,e.at,`HH:mm:ss`)),M(2),N(`data-state`,e.outcome),M(),Y(n.outcome(e.outcome)),M(),F(e.ms===void 0?-1:6),M(),F(e.fields?.length?7:-1),M(),F(e.detail?8:-1)}}function WR(e,t){if(e&1&&(H(0,`ul`),I(1,UR,9,10,`li`,null,Cg),U()),e&2){let e=K();M(),L(e.calls)}}function GR(e,t){e&1&&(H(0,`p`,10),J(1,` Calls are not recorded for a tool registered before the inspector attached. `),U())}function KR(e,t){e&1&&(H(0,`p`,10),J(1,`No agent has called this tool since the inspector attached.`),U())}function qR(e,t){if(e&1&&(H(0,`section`,0)(1,`div`,2)(2,`h3`,3),J(3,`WebMCP tool`),U(),H(4,`code`,4),J(5),U(),H(6,`span`,5),J(7),U(),P(8,AR,2,0,`span`,6),U(),P(9,jR,2,1,`p`,7),P(10,MR,2,1,`p`,8),P(11,PR,6,0,`div`,9),P(12,LR,6,0,`div`,9),P(13,zR,6,0,`div`,9),H(14,`div`,9)(15,`p`,10),J(16,`Recent calls`),U(),P(17,WR,3,0,`ul`)(18,GR,2,0,`p`,10)(19,KR,2,0,`p`,10),U()()),e&2){let e=t,n=K();M(5),Y(e.name),M(),N(`data-state`,e.status),M(),Y(n.statusText()),M(),F(e.duplicate?8:-1),M(),F(e.description?9:-1),M(),F(e.status===`failed`&&e.error&&e.error!==`schema`?10:-1),M(),F(e.blocking?.length?11:-1),M(),F(e.inputs?.length?12:-1),M(),F(e.requiredChanged?.length?13:-1),M(4),F(e.calls?.length?17:e.seen===`list`?18:19)}}function JR(e,t){e&1&&(H(0,`p`,1),J(1,` This app uses `),H(2,`code`),J(3,`provideExperimentalWebMcpForms()`),U(),J(4,`, but the browser has no `),H(5,`code`),J(6,`modelContext`),U(),J(7,`, so Angular registers no WebMCP tool for this form. `),U())}var YR={running:`running`,submitted:`submitted`,failed:`submit failed`,done:`done`,threw:`threw`},XR=class e{tool=$();page=$();signalForm=$(!1);statusText=Q(()=>{let e=this.tool();return e?e.status===`failed`?`not registered`:e.status===`registering`?`registering`:e.seen===`list`?`registered before the inspector attached`:`registered`:``});noModelContext=Q(()=>{let e=this.page();return this.signalForm()&&!!e&&!e.modelContext&&!!e.provided});isRequired(e){let t=e.slice(0,e.lastIndexOf(`:`));return this.tool()?.required?.includes(t)??!1}outcome(e){return YR[e]??e}iso(e){return new Date(e).toISOString()}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-forms-webmcp`]],inputs:{tool:[1,`tool`],page:[1,`page`],signalForm:[1,`signalForm`]},decls:2,vars:1,consts:[[`aria-labelledby`,`forms-webmcp-title`,1,`webmcp`],[1,`note`],[1,`head`],[`id`,`forms-webmcp-title`,1,`section-label`],[1,`name`],[1,`state`],[`data-state`,`failed`,1,`state`],[1,`description`],[1,`problem`],[1,`group`],[1,`muted`],[1,`inputs`],[1,`tag`],[1,`detail`]],template:function(e,t){if(e&1&&P(0,qR,20,10,`section`,0)(1,JR,8,0,`p`,1),e&2){let e;F((e=t.tool())?0:t.noModelContext()?1:-1,e)}},dependencies:[ib],styles:[`[_nghost-%COMP%] { + display: contents; +} + +.webmcp[_ngcontent-%COMP%] { + display: grid; + gap: 8px; + min-width: 0; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + font-size: 13px; + color: var(--%NS%text); +} + +.head[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 6px 10px; + align-items: center; +} + +.section-label[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + margin: 0; +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12.5px; + overflow-wrap: anywhere; +} + +.name[_ngcontent-%COMP%] { + font-weight: 600; +} + +.state[_ngcontent-%COMP%] { + padding: 0 8px; + border: 1px solid var(--%NS%border-strong); + border-radius: 999px; + color: var(--%NS%text-2); + font-size: 12px; + line-height: 20px; +} + +.state[data-state=failed][_ngcontent-%COMP%], +.state[data-state=threw][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 45%, transparent); + color: var(--%NS%danger); +} + +.state[data-state=registered][_ngcontent-%COMP%], +.state[data-state=submitted][_ngcontent-%COMP%] { + border-color: var(--%NS%accent-line); + color: var(--%NS%text); +} + +.description[_ngcontent-%COMP%], +.problem[_ngcontent-%COMP%], +.note[_ngcontent-%COMP%] { + margin: 0; + overflow-wrap: anywhere; +} + +.problem[_ngcontent-%COMP%] { + color: var(--%NS%danger); +} + +.note[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 13px; +} + +.muted[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-2); +} + +.group[_ngcontent-%COMP%] { + display: grid; + gap: 4px; + min-width: 0; +} + +ul[_ngcontent-%COMP%] { + display: grid; + gap: 4px; + margin: 0; + padding: 0 0 0 16px; + overflow-wrap: anywhere; +} + +li[_ngcontent-%COMP%] { + min-width: 0; +} + +li[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] + *[_ngcontent-%COMP%] { + margin-left: 6px; +} + +.tag[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 11px; +} + +.detail[_ngcontent-%COMP%] { + margin: 4px 0 0; + padding: 6px 8px; + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + font-family: var(--%NS%font-mono); + font-size: 12px; + white-space: pre-wrap; + overflow-wrap: anywhere; +}`]})},ZR=()=>[],QR=(e,t)=>t.id,$R=(e,t)=>t.node.path;function ez(e,t){e&1&&(z(0,`div`,0),V(1,`span`,4),z(2,`p`),J(3,`Connecting to the devtools server…`),B()())}function tz(e,t){if(e&1){let e=W();z(0,`div`,1)(1,`p`,5),J(2,`Could not load forms`),B(),z(3,`p`,6),J(4,` The devtools server did not answer. Check that the app is running, then try again. `),B(),z(5,`button`,7),G(`click`,function(){return O(e),k(K().retry())}),J(6,`Try again`),B()()}}function nz(e,t){e&1&&(z(0,`div`,0),V(1,`span`,4),z(2,`p`),J(3,`Loading forms…`),B()())}function rz(e,t){e&1&&(z(0,`div`,2)(1,`p`,5),J(2,`No forms on the page yet`),B(),z(3,`p`,6),J(4,` Open a page that renders a form. Signal Forms, reactive and template-driven forms all show up here, in development builds. `),B()())}function iz(e,t){if(e&1){let e=W();z(0,`div`,2)(1,`p`,5),J(2,`No forms on this page`),B(),z(3,`p`,6),J(4),B(),z(5,`button`,7),G(`click`,function(){return O(e),k(K().allPages.set(!0))}),J(6,` Show forms from all pages `),B()()}if(e&2){let e=K();M(4),Z(` Other connected tabs report `,e.forms().length,` `,e.forms().length===1?`form`:`forms`,`. `)}}function az(e,t){if(e&1){let e=W();z(0,`label`,11)(1,`input`,15),G(`change`,function(t){return O(e),k(K(2).allPages.set(t.target.checked))}),B(),J(2,` All pages `),B()}if(e&2){let e=K(2);M(),R(`checked`,e.allPages())}}function oz(e,t){e&1&&(z(0,`span`,22),J(1),z(2,`span`,21),J(3,` errors`),B()()),e&2&&(M(),Y(t))}function sz(e,t){if(e&1){let e=W();z(0,`li`)(1,`button`,16),G(`click`,function(){let t=O(e).$implicit;return k(K(2).selectForm(t.id))}),V(2,`span`,17),z(3,`span`,18),J(4),B(),z(5,`span`,19),J(6),z(7,`span`,20),J(8),B(),z(9,`span`,21),J(10),B()(),P(11,oz,4,1,`span`,22),B()()}if(e&2){let e,n=t.$implicit,r=K(2);M(),q(`active`,n.id===r.selected()?.id),N(`aria-current`,n.id===r.selected()?.id?`true`:null),M(),N(`data-status`,n.root.status),M(),N(`title`,n.label),M(),Y(n.label),M(2),X(``,r.kindLabel(n.kind),` · `),M(2),Y(n.id),M(2),X(`, `,n.root.status),M(),F((e=r.counts().get(n.id)?.errors)?11:-1,e)}}function cz(e,t){if(e&1){let e=W();z(0,`section`,13)(1,`h2`,23),J(2),B(),z(3,`p`,24),J(4,` This form is no longer on the page. It comes back here if the page renders it again. `),B(),z(5,`button`,7),G(`click`,function(){O(e);let t=K(2);return k(t.selectForm(t.visible()[0].id))}),J(6),B()()}if(e&2){let e=K(2);M(2),Y(t),M(4),X(` Show `,e.visible()[0].label,` `)}}function lz(e,t){if(e&1){let e=W();z(0,`section`,13)(1,`h2`,23),J(2),B(),z(3,`p`,6),J(4,`This form is on another page. Tick "All pages" to see it again.`),B(),z(5,`button`,7),G(`click`,function(){return O(e),k(K(2).allPages.set(!0))}),J(6,` Show forms from all pages `),B()()}e&2&&(M(2),Y(t))}function uz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K();M(),Y(e.submitted?`submitted`:`not submitted`)}}function dz(e,t){e&1&&(z(0,`span`),J(1,`submitting`),B())}function fz(e,t){if(e&1){let e=W();z(0,`li`)(1,`button`,46),G(`click`,function(){let t=O(e).$implicit;return k(K(4).showField(t.path))}),z(2,`span`,21),J(3,`Show field `),B(),z(4,`code`),J(5),B(),z(6,`span`,21),J(7,`:`),B(),J(8),z(9,`code`,47),J(10),B()()()}if(e&2){let e=t.$implicit;M(5),Y(e.path||`(form)`),M(3),X(` `,e.message,` `),M(2),Y(e.kind)}}function pz(e,t){if(e&1&&(z(0,`details`,30)(1,`summary`),J(2),B(),z(3,`ul`),I(4,fz,11,3,`li`,null,Cg),B()()),e&2){let e=K();M(2),X(`Error summary (`,e.errorSummary.length,`)`),M(2),L(e.errorSummary)}}function mz(e,t){if(e&1){let e=W();z(0,`button`,34),G(`click`,function(){return O(e),k(K(3).confirmAct(`restore`))}),J(1),B()}if(e&2){let e=K(3);q(`armed`,e.armed()===`restore`),R(`disabled`,!e.canWrite()),N(`aria-describedby`,e.canWrite()?null:`forms-writes-off`)(`title`,`Restore `+e.snapshot()),M(),X(` `,e.armed()===`restore`?`Confirm restore`:`Restore `+e.snapshot(),` `)}}function hz(e,t){if(e&1&&(z(0,`p`,40),J(1),B()),e&2){let e=K(3);M(),Y(e.writesOff)}}function gz(e,t){if(e&1){let e=W();z(0,`button`,48),G(`click`,function(){let t=O(e).$implicit;return k(K(3).tab_.set(t.id))}),J(1),B()}if(e&2){let e=t.$implicit,n=K(3);R(`id`,`forms-tab-`+e.id),N(`aria-selected`,e.id===n.tab_())(`aria-controls`,`forms-panel-`+e.id)(`tabindex`,e.id===n.tab_()?0:-1),M(),X(` `,e.label,` `)}}function _z(e,t){if(e&1){let e=W();z(0,`label`)(1,`input`,15),G(`change`,function(){let t=O(e).$implicit;return k(K(4).toggleChip(t.id))}),B(),J(2),B()}if(e&2){let e=t.$implicit,n=K(4);M(),R(`checked`,n.active().has(e.id)),M(),X(` `,e.label,` `)}}function vz(e,t){if(e&1&&(z(0,`div`,6),J(1,` typed `),z(2,`code`),J(3),dv(4,`json`),B(),J(5,`, not in the model yet `),B()),e&2){let e=K(2).$implicit;M(3),Y(pv(4,1,e.node.uncommitted))}}function yz(e,t){if(e&1&&(z(0,`div`,6),J(1,` resets to `),z(2,`code`),J(3),dv(4,`json`),B()()),e&2){let e=K(2).$implicit;M(3),Y(pv(4,1,e.node.defaultValue))}}function bz(e,t){if(e&1&&(z(0,`code`),J(1),dv(2,`json`),B(),P(3,vz,6,3,`div`,6),P(4,yz,5,3,`div`,6)),e&2){let e=K().$implicit;M(),Y(pv(2,3,e.node.value)),M(2),F(e.node.uncommitted===void 0?-1:3),M(),F(e.node.defaultValue===void 0?-1:4)}}function xz(e,t){e&1&&(z(0,`span`,6),J(1,`not created yet`),B())}function Sz(e,t){if(e&1&&(z(0,`span`,28),J(1),B()),e&2){let e=K().$implicit;N(`data-status`,e.node.status),M(),Y(e.node.status)}}function Cz(e,t){e&1&&(z(0,`span`),J(1,`touched`),B())}function wz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.node.changed===!1?`dirty, unchanged`:`dirty`)}}function Tz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),X(`not validated (`,e.node.skipped,`)`)}}function Ez(e,t){if(e&1&&(z(0,`span`,63),J(1),B()),e&2){let e=K().$implicit;M(),X(`stale: `,e.node.stale.join(`, `))}}function Dz(e,t){e&1&&(z(0,`span`,63),J(1,`view out of sync`),B())}function Oz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit,t=K(4);M(),X(`redacted: `,t.redactLabel(e.node.redacted))}}function kz(e,t){e&1&&(z(0,`span`),J(1,`required`),B())}function Az(e,t){e&1&&(z(0,`span`),J(1,`readonly`),B())}function jz(e,t){e&1&&(z(0,`span`),J(1,`hidden`),B())}function Mz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),X(`updates on `,e.node.updateOn)}}function Nz(e,t){e&1&&(z(0,`span`),J(1,`debouncing`),B())}function Pz(e,t){e&1&&(z(0,`span`),J(1,`validators`),B())}function Fz(e,t){e&1&&(z(0,`span`),J(1,`async validator`),B())}function Iz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function Lz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.node.accessor)}}function Rz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),X(`name `,e.node.name)}}function zz(e,t){if(e&1&&(z(0,`span`),J(1),dv(2,`json`),B()),e&2){let e=t.$implicit;M(),X(`metadata `,pv(2,1,e))}}function Bz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=t.$implicit;M(),X(`disabled: `,e)}}function Vz(e,t){if(e&1&&(z(0,`span`,66),J(1),B()),e&2){let e=K().$implicit;M(),X(`at `,e.params.path)}}function Hz(e,t){if(e&1&&(z(0,`span`,66),J(1),B()),e&2){let e=K().$implicit,t=K(5);M(),Y(t.sourceText(e))}}function Uz(e,t){if(e&1&&(z(0,`div`),J(1),z(2,`code`,47),J(3),B(),P(4,Vz,2,1,`span`,66),P(5,Hz,2,1,`span`,66),B()),e&2){let e=t.$implicit,n=K().$implicit,r=K(4);M(),X(` `,r.errorText(n.node,e),` `),M(2),Y(e.kind),M(),F(e.kind===`standardSchema`&&e.params?.path?4:-1),M(),F(e.source?5:-1)}}function Wz(e,t){e&1&&(z(0,`div`,65),J(1,`not shown to the user`),B())}function Gz(e,t){if(e&1&&(z(0,`tr`)(1,`td`,67),J(2),B()()),e&2){let e=K().$implicit;M(),C_(`padding-left`,28+e.depth*16,`px`),M(),Z(` `,e.node.truncated,` more fields under `,e.node.path||`the form`,` not shown `)}}function Kz(e,t){if(e&1){let e=W();z(0,`tr`,56),G(`mouseenter`,function(){let t=O(e).$implicit,n=K(2);return k(K(2).highlight(n.id,t.node.path))})(`mouseleave`,function(){return O(e),k(K(4).highlight(null,``))}),z(1,`th`,57)(2,`button`,58),G(`focus`,function(){let t=O(e).$implicit,n=K(2);return k(K(2).highlight(n.id,t.node.path))})(`blur`,function(){return O(e),k(K(4).highlight(null,``))})(`click`,function(){let t=O(e).$implicit;return k(K(4).toggleField(t.node.path))}),J(3),B(),z(4,`span`,59),J(5),B()(),z(6,`td`,60),P(7,bz,5,5),B(),z(8,`td`,61),P(9,xz,2,0,`span`,6)(10,Sz,2,2,`span`,28),B(),z(11,`td`,62),P(12,Cz,2,0,`span`),P(13,wz,2,1,`span`),P(14,Tz,2,1,`span`),P(15,Ez,2,1,`span`,63),P(16,Dz,2,0,`span`,63),P(17,Oz,2,1,`span`),P(18,kz,2,0,`span`),P(19,Az,2,0,`span`),P(20,jz,2,0,`span`),P(21,Mz,2,1,`span`),P(22,Nz,2,0,`span`),P(23,Pz,2,0,`span`),P(24,Fz,2,0,`span`),I(25,Iz,2,1,`span`,null,wg),P(27,Lz,2,1,`span`),P(28,Rz,2,1,`span`),I(29,zz,3,3,`span`,null,Cg),I(31,Bz,2,1,`span`,null,Cg),B(),z(33,`td`,64),I(34,Uz,6,4,`div`,null,Cg),P(36,Wz,2,0,`div`,65),B()(),P(37,Gz,3,4,`tr`)}if(e&2){let e=t.$implicit,n=K(4);q(`invalid`,e.node.errors.length),M(),C_(`padding-left`,12+e.depth*16,`px`),M(),N(`aria-label`,`Show details for `+(e.node.path||`the form`))(`aria-pressed`,e.node.path===n.fieldPath())(`title`,e.node.path||`(form)`),M(),X(` `,e.node.key||`(form)`,` `),M(2),Y(e.node.type),M(2),F(e.node.type===`control`?7:-1),M(2),F(e.node.materialized===!1?9:10),M(3),F(e.node.touched?12:-1),M(),F(e.node.dirty?13:-1),M(),F(e.node.skipped?14:-1),M(),F(e.node.stale?.length?15:-1),M(),F(e.node.dom?.drift===void 0?-1:16),M(),F(e.node.redacted?17:-1),M(),F(e.node.required?18:-1),M(),F(e.node.readonly?19:-1),M(),F(e.node.hidden?20:-1),M(),F(e.node.updateOn?21:-1),M(),F(e.node.debouncing?22:-1),M(),F(e.node.validators?.sync?23:-1),M(),F(e.node.validators?.async?24:-1),M(),L(n.constraintList(e.node)),M(2),F(e.node.accessor?27:-1),M(),F(e.node.name?28:-1),M(),L(e.node.metadata??ov(28,ZR)),M(2),L(e.node.disabledReasons??ov(29,ZR)),M(3),L(e.node.errors),M(2),F(e.node.errors.length&&e.node.dom?.errorShown===!1?36:-1),M(),F(e.node.truncated?37:-1)}}function qz(e,t){e&1&&J(0),e&2&&X(` No field path matches "`,K(5).filter(),`". `)}function Jz(e,t){e&1&&J(0,` No field matches the selected filters. `)}function Yz(e,t){if(e&1&&(z(0,`tr`)(1,`td`,68),P(2,qz,1,1)(3,Jz,1,0),B()()),e&2){let e=K(4);M(2),F(e.filter()?2:3)}}function Xz(e,t){if(e&1){let e=W();z(0,`app-forms-field-detail`,69),G(`closed`,function(){return O(e),k(K(4).closeField())}),B()}if(e&2){let e=K(2),n=K(2);R(`form`,e)(`node`,t)(`version`,n.version())(`rpc`,n.rpc())}}function Zz(e,t){if(e&1){let e=W();z(0,`div`,49)(1,`input`,50),G(`input`,function(t){return O(e),k(K(3).onFilter(t))})(`keydown.escape`,function(){return O(e),k(K(3).filter.set(``))}),B(),z(2,`fieldset`,51)(3,`legend`,21),J(4,`Show only fields that are`),B(),I(5,_z,3,2,`label`,null,QR),B()(),z(7,`div`,52)(8,`table`,53)(9,`thead`)(10,`tr`)(11,`th`,54),J(12,`Field`),B(),z(13,`th`,54),J(14,`Value`),B(),z(15,`th`,54),J(16,`Status`),B(),z(17,`th`,54),J(18,`State`),B(),z(19,`th`,54),J(20,`Errors`),B()()(),z(21,`tbody`),I(22,Kz,38,30,null,null,$R,!1,Yz,4,1,`tr`),B()()(),P(25,Xz,1,4,`app-forms-field-detail`,55)}if(e&2){let e,t=K(3);M(),R(`value`,t.filter()),M(4),L(t.chips),M(17),L(t.rows()),M(3),F((e=t.selectedNode())?25:-1,e)}}function Qz(e,t){if(e&1){let e=W();V(0,`app-limit-note`,70),z(1,`app-forms-timeline`,71),G(`record`,function(t){return O(e),k(K(3).setRecording(t))}),B()}if(e&2){let e=K(3);R(`dropped`,e.droppedEvents())(`max`,e.maxEvents()),M(),R(`events`,e.selectedEvents())(`recording`,e.recording())}}function $z(e,t){if(e&1&&V(0,`app-forms-submit`,45),e&2){let e=K(),t=K(2);R(`formId`,e.id)(`version`,t.version())(`rpc`,t.rpc())}}function eB(e,t){if(e&1&&V(0,`app-forms-lint`,45),e&2){let e=K(),t=K(2);R(`formId`,e.id)(`version`,t.version())(`rpc`,t.rpc())}}function tB(e,t){if(e&1){let e=W();z(0,`section`,14)(1,`div`,25)(2,`h2`,23),J(3),B(),z(4,`p`,26),J(5),z(6,`code`),J(7),B()()(),z(8,`div`,27)(9,`span`,28),J(10),B(),z(11,`span`),J(12),B(),z(13,`span`),J(14),B(),P(15,uz,2,1,`span`),P(16,dz,2,0,`span`),z(17,`span`,29)(18,`b`),J(19),B(),J(20,` fields · `),z(21,`b`),J(22),B(),J(23,` errors`),B()(),P(24,pz,6,1,`details`,30),V(25,`app-forms-webmcp`,31),z(26,`div`,32)(27,`div`,33)(28,`button`,34),G(`click`,function(){return O(e),k(K(2).act(`touch-all`))}),J(29,` Touch all `),B(),z(30,`button`,34),G(`click`,function(){return O(e),k(K(2).act(`revalidate`))}),J(31,` Revalidate `),B(),z(32,`button`,7),G(`click`,function(){return O(e),k(K(2).act(`focus-first-invalid`))}),J(33,` Focus first invalid `),B(),z(34,`button`,7),G(`click`,function(){O(e);let t=K(2);return k(t.picking()?t.cancelPick():t.pick())}),J(35),B(),V(36,`span`,35),z(37,`button`,7),G(`click`,function(){return O(e),k(K(2).act(`snapshot`))}),J(38,`Snapshot`),B(),P(39,mz,2,6,`button`,36),V(40,`span`,37),z(41,`button`,38),G(`click`,function(){return O(e),k(K(2).confirmAct(`reset`))}),J(42),B(),z(43,`button`,39),G(`click`,function(){return O(e),k(K(2).confirmAct(`submit`))}),J(44),B()(),P(45,hz,2,1,`p`,40),z(46,`p`,41),J(47),B()(),z(48,`div`,42),G(`keydown`,function(t){return O(e),k(K(2).onKey(t))}),I(49,gz,2,5,`button`,43,QR),B(),z(51,`div`,44),P(52,Zz,26,3)(53,Qz,2,4)(54,$z,1,3,`app-forms-submit`,45)(55,eB,1,3,`app-forms-lint`,45),B()()}if(e&2){let e,n=t,r=K(2);M(3),Y(n.label),M(2),X(` `,r.kindLabel(n.kind),` · `),M(2),Y(n.id),M(2),N(`data-status`,n.root.status),M(),Y(n.root.status),M(2),Y(n.root.dirty?`dirty`:`pristine`),M(2),Y(n.root.touched?`touched`:`untouched`),M(),F(n.submitted===void 0?-1:15),M(),F(n.root.submitting?16:-1),M(3),Y(r.counts().get(n.id)?.fields),M(2),q(`has-errors`,r.counts().get(n.id)?.errors),M(),Y(r.counts().get(n.id)?.errors),M(2),F(n.errorSummary?.length?24:-1),M(),R(`tool`,n.webMcp)(`page`,r.webMcpPage(n.id))(`signalForm`,n.kind===`signal`),M(3),R(`disabled`,!r.canWrite()),N(`aria-describedby`,r.canWrite()?null:`forms-writes-off`),M(2),R(`disabled`,!r.canWrite()),N(`aria-describedby`,r.canWrite()?null:`forms-writes-off`),M(4),q(`on`,r.picking()),N(`aria-pressed`,!!r.picking()),M(),X(` `,r.picking()?`Cancel picking`:`Pick field on page`,` `),M(4),F(r.snapshot()?39:-1),M(2),q(`armed`,r.armed()===`reset`),R(`disabled`,!r.canWrite()),N(`aria-describedby`,r.canWrite()?null:`forms-writes-off`),M(),X(` `,r.armed()===`reset`?`Confirm reset`:`Reset`,` `),M(),q(`armed`,r.armed()===`submit`),R(`disabled`,!r.canWrite()),N(`aria-describedby`,r.canWrite()?null:`forms-writes-off`),M(),X(` `,r.armed()===`submit`?`Confirm submit`:`Submit`,` `),M(),F(r.canWrite()?-1:45),M(2),Y(r.message()),M(2),L(r.tabs),M(2),R(`id`,`forms-panel-`+r.tab_()),N(`aria-labelledby`,`forms-tab-`+r.tab_()),M(),F((e=r.tab_())===`fields`?52:e===`timeline`?53:e===`submit`?54:e===`lint`?55:-1)}}function nB(e,t){if(e&1&&(z(0,`div`,3)(1,`div`,8)(2,`h2`,9),J(3,` Forms `),z(4,`span`,10),J(5),B()(),P(6,az,3,1,`label`,11),z(7,`ul`,12),I(8,sz,12,10,`li`,null,QR),B()(),P(10,cz,7,2,`section`,13)(11,lz,7,1,`section`,13)(12,tB,56,41,`section`,14),B()),e&2){let e,t=K();M(5),Y(t.visible().length),M(),F(t.hostPageId&&(t.allPages()||t.otherPages())?6:-1),M(2),L(t.visible()),M(2),F((e=t.missing())?10:(e=t.hidden())?11:(e=t.selected())?12:-1,e)}}var rB=[{id:`fields`,label:`Fields`},{id:`timeline`,label:`Timeline`},{id:`submit`,label:`Submit`},{id:`lint`,label:`Lint`}],iB=[{id:`invalid`,label:`Invalid`},{id:`dirty`,label:`Dirty`},{id:`touched`,label:`Touched`},{id:`disabled`,label:`Disabled`},{id:`hidden-error`,label:`Error not shown`}];function aB(e,t){switch(t){case`invalid`:return e.errors.length>0;case`dirty`:return e.dirty&&e.type===`control`;case`touched`:return e.touched&&e.type===`control`;case`disabled`:return e.status===`DISABLED`;case`hidden-error`:return e.dom?.errorShown===!1}}function oB(e){return e.errors.length+(e.children??[]).reduce((e,t)=>e+oB(t),0)}function sB(e){return e.children?e.children.reduce((e,t)=>e+sB(t),0):+(e.type===`control`&&e.materialized!==!1)}var cB=class e{rpc=$(null);focus=$(null);canWrite=Q(()=>bE(this.rpc(),`forms`));redactLabel=pE;writesOff=KT(`forms`);focusHandled=Ov();forms=j([]);webMcp=j([]);events=j([]);loading=j(!0);failed=j(!1);selectedId=j(null);selectedLabel=j(null);hostPageId=eE();allPages=j(!1);visible=Q(()=>{let e=this.forms(),t=this.hostPageId;return t&&!this.allPages()?e.filter(e=>cE(e.id)===t):e});otherPages=Q(()=>this.forms().some(e=>cE(e.id)!==this.hostPageId));instrumented=j([]);recording=Q(()=>{let e=this.selected()?.id??``;return this.instrumented().some(t=>e.endsWith(`@${t}`))});filter=j(``);tabs=rB;chips=iB;tab_=j(`fields`);active=j(new Set);version=j(0);message=j(``);webMcpPage(e){let t=cE(e);return this.webMcp().find(e=>e.pageId===t)}picking=j(null);pickSeq=0;unsubscribe=null;destroyRef=E(Cs);host=E(Ml);injector=E(xs);counts=Q(()=>new Map(this.visible().map(e=>[e.id,{fields:sB(e.root),errors:oB(e.root)}])));chosen=Q(()=>{let e=this.selectedId();if(e===null)return null;let t=this.forms(),n=this.selectedLabel(),r=cE(e);return t.find(t=>t.id===e)??t.find(e=>e.label===n&&cE(e.id)===r)??null});selected=Q(()=>{let e=this.visible();if(this.selectedId()===null)return e[0]??null;let t=this.chosen();return t&&e.includes(t)?t:null});missing=Q(()=>this.selectedId()!==null&&!this.chosen()&&this.visible().length?this.selectedLabel()??this.selectedId():null);hidden=Q(()=>{let e=this.chosen();return e&&!this.selected()&&this.visible().length?e.label:null});selectedFormId=Q(()=>this.selected()?.id??null);fieldPath=Tv({source:this.selectedFormId,computation:()=>null});armed=Tv({source:this.selectedFormId,computation:()=>null});snapshot=Tv({source:this.selectedFormId,computation:()=>null});rows=Q(()=>{let e=this.selected();if(!e)return[];let t=this.filter().toLowerCase(),n=Array.from(this.active()),r=[],i=(e,a)=>{let o=r.length,s=(!t||e.path.toLowerCase().includes(t))&&n.every(t=>aB(e,t));for(let t of e.children??[])s=i(t,a+1)||s;return s&&r.splice(o,0,{node:e,depth:a}),s};return i(e.root,0),r});selectedNode=Q(()=>{let e=this.fieldPath(),t=this.selected();if(e===null||!t)return null;let n=t=>t.path===e?t:(t.children??[]).map(n).find(Boolean)??null;return n(t.root)});dropped=j({});droppedEvents=Q(()=>{let e=this.selected()?.id;return e?this.dropped()[cE(e)]??0:0});maxEvents=Q(()=>yE(this.rpc()).limits.formTimeline);selectedEvents=Q(()=>{let e=this.selected()?.id;return this.events().filter(t=>t.formId===e).slice(-200)});constructor(){uc(()=>{let e=this.rpc();e&&this.load(e)}),uc(()=>{let e=this.focus();e&&Cv(()=>{this.selectForm(e.id),this.focusHandled.emit()})}),this.destroyRef.onDestroy(()=>{this.unsubscribe?.(),this.highlight(null,``)})}async load(e){this.loading.set(!0),this.failed.set(!1);try{let t=await e.scope(`pangular`).rpc.sharedState(`forms`);if(this.destroyRef.destroyed)return;let n=e=>{let t=e;this.forms.set(t?.forms??[]),this.events.set(t?.events??[]),this.instrumented.set(t?.instrumented??[]),this.dropped.set(t?.dropped??{}),this.webMcp.set(t?.webMcp??[]),this.version.update(e=>e+1)};n(t.value()),this.unsubscribe?.(),this.unsubscribe=t.on(`updated`,n)}catch{this.failed.set(!0)}finally{this.loading.set(!1)}}retry(){let e=this.rpc();e&&this.load(e)}async pick(){let e=this.selected();if(!e)return;let t=++this.pickSeq;this.picking.set(e.id),this.message.set(`Click a field in the app. Press Escape or Cancel picking to stop.`);let n=await hE(this.rpc(),{action:`pick`,formId:e.id});if(t!==this.pickSeq)return;this.picking.set(null);let r=n;if(!n.ok||!r.formId){this.message.set(gE(n));return}this.selectForm(r.formId),this.tab_.set(`fields`),this.fieldPath.set(r.path??``),this.message.set(`Picked ${r.path||`(form)`}.`)}cancelPick(){let e=this.picking();e&&hE(this.rpc(),{action:`cancel-pick`,formId:e})}async setRecording(e){let t=this.selected();if(!t)return;let n=await hE(this.rpc(),{action:`instrument`,formId:t.id,value:e});this.message.set(gE(n))}selectForm(e){this.hostPageId&&cE(e)&&cE(e)!==this.hostPageId&&this.allPages.set(!0),this.selectedId.set(e),this.selectedLabel.set(this.forms().find(t=>t.id===e)?.label??null),this.filter.set(``),this.fieldPath.set(null),this.snapshot.set(null),this.armed.set(null)}toggleField(e){this.fieldPath.update(t=>t===e?null:e)}closeField(){let e=this.host.nativeElement,t=e.querySelector(`button.field[aria-pressed="true"]`)??e.querySelector(`.table-scroll`);this.fieldPath.set(null),t?.focus()}showField(e){this.tab_.set(`fields`);let t=()=>this.rows().some(t=>t.node.path===e);t()||this.filter.set(``),t()||this.active.set(new Set),this.fieldPath.set(e),Id(()=>{let e=this.host.nativeElement;e.querySelector(`button.field[aria-pressed="true"]`)?.scrollIntoView?.({block:`nearest`}),(e.querySelector(`#forms-field-heading`)??e.querySelector(`.table-scroll`))?.focus()},{injector:this.injector})}toggleChip(e){this.active.update(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}async act(e,t={}){let n=this.selected();if(!n)return;this.armed.set(null);let r=await hE(this.rpc(),{action:e,formId:n.id,...t});r.snapshot&&this.selected()?.id===n.id&&this.snapshot.set(r.snapshot),this.message.set(gE(r))}confirmAct(e){if(this.armed()!==e){this.armed.set(e),this.message.set(`Press "Confirm ${e}" to ${e} the form in the app.`);return}this.act(e,{confirm:!0,snapshot:this.snapshot()??void 0})}onKey(e){let t=this.tabs.map(e=>e.id),n=t.indexOf(this.tab_()),r=n;if(e.key===`ArrowRight`)r=(n+1)%t.length;else if(e.key===`ArrowLeft`)r=(n-1+t.length)%t.length;else if(e.key===`Home`)r=0;else if(e.key===`End`)r=t.length-1;else return;e.preventDefault(),this.tab_.set(t[r]);let i=e.currentTarget;queueMicrotask(()=>i.querySelector(`#forms-tab-${t[r]}`)?.focus())}sourceText(e){let t=uE[e.source??``]??e.source??``;return e.from===void 0?t:`${t} on ${e.from||`the form`}`}onFilter(e){this.filter.set(e.target.value)}highlight(e,t){let n=this.rpc();n&&n.scope(`pangular`).rpc.callEvent(`request-form-highlight`,e?{formId:e,path:t}:null)}kindLabel(e){return lE[e]}constraintList(e){return Object.entries(e.constraints??{}).map(([e,t])=>`${e} ${t}`)}errorText(e,t){return/^[a-z]/.test(t.message)?`${e.key||`The form`} ${t.message}`:t.message}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-forms-inspector`]],hostBindings:function(e,t){e&1&&G(`keydown.escape`,function(){return t.cancelPick()})},inputs:{rpc:[1,`rpc`],focus:[1,`focus`]},outputs:{focusHandled:`focusHandled`},decls:6,vars:1,consts:[[`role`,`status`,1,`empty`],[`role`,`alert`,1,`empty`],[1,`empty`],[1,`layout`],[`aria-hidden`,`true`,1,`spinner`],[1,`empty-title`],[1,`muted`],[`type`,`button`,1,`small`,3,`click`],[1,`sidebar`],[`id`,`forms-list-heading`,1,`list-heading`],[1,`list-count`],[1,`page-toggle`],[`aria-labelledby`,`forms-list-heading`,1,`form-list`],[`aria-labelledby`,`forms-detail-title`,1,`detail`,`gone`],[`aria-labelledby`,`forms-detail-title`,1,`detail`],[`type`,`checkbox`,3,`change`,`checked`],[`type`,`button`,1,`form-item`,3,`click`],[`aria-hidden`,`true`,1,`dot`],[1,`label`],[1,`kind`],[1,`id`],[1,`sr-only`],[1,`count`],[`id`,`forms-detail-title`],[`role`,`status`,1,`muted`],[1,`detail-head`],[1,`detail-meta`],[1,`summary`],[1,`badge`],[1,`totals`],[1,`error-summary`],[3,`tool`,`page`,`signalForm`],[1,`action-bar`],[`role`,`group`,`aria-label`,`Form actions`,1,`actions`],[`type`,`button`,1,`small`,3,`click`,`disabled`],[`aria-hidden`,`true`,1,`divider`],[`type`,`button`,1,`small`,3,`armed`,`disabled`],[`aria-hidden`,`true`,1,`spacer`],[`type`,`button`,1,`small`,`danger`,3,`click`,`disabled`],[`type`,`button`,1,`small`,`primary`,3,`click`,`disabled`],[`id`,`forms-writes-off`,1,`muted`],[`role`,`status`,1,`status`],[`role`,`tablist`,`aria-label`,`Form views`,1,`tabs`,3,`keydown`],[`type`,`button`,`role`,`tab`,3,`id`],[`role`,`tabpanel`,1,`panel`,3,`id`],[3,`formId`,`version`,`rpc`],[`type`,`button`,1,`summary-link`,3,`click`],[1,`kind-tag`],[`type`,`button`,`role`,`tab`,3,`click`,`id`],[1,`filters`],[`type`,`search`,`placeholder`,`Filter fields by path`,`aria-label`,`Filter fields by path`,`autocomplete`,`off`,`spellcheck`,`false`,1,`filter`,3,`input`,`keydown.escape`,`value`],[1,`chips`],[`role`,`region`,`aria-label`,`Fields`,`tabindex`,`0`,1,`table-scroll`],[1,`fields`],[`scope`,`col`],[3,`form`,`node`,`version`,`rpc`],[3,`mouseenter`,`mouseleave`],[`scope`,`row`,1,`name`],[`type`,`button`,1,`field`,3,`focus`,`blur`,`click`],[1,`type`],[1,`value`],[1,`status-cell`],[1,`flags`],[1,`warn`],[1,`errors`],[1,`unseen`],[1,`source`],[`colspan`,`5`,1,`muted`,`truncated`],[`colspan`,`5`,1,`no-match`],[3,`closed`,`form`,`node`,`version`,`rpc`],[`what`,`form events on this page`,`limit`,`formTimeline`,3,`dropped`,`max`],[3,`record`,`events`,`recording`]],template:function(e,t){e&1&&P(0,ez,4,0,`div`,0)(1,tz,7,0,`div`,1)(2,nz,4,0,`div`,0)(3,rz,5,0,`div`,2)(4,iz,7,2,`div`,2)(5,nB,13,3,`div`,3),e&2&&F(t.rpc()?t.failed()?1:t.loading()?2:t.forms().length?t.visible().length?5:4:3:0)},dependencies:[QL,OR,sR,cR,XR,UD,ab],styles:[`.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12.5px; +} + +.small[_ngcontent-%COMP%] { + display: inline-block; + max-width: 100%; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + line-height: 32px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + cursor: pointer; + transition: background-color 150ms var(--%NS%ease), border-color 150ms var(--%NS%ease), color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.small[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-3); + border-color: color-mix(in srgb, var(--%NS%text-3) 55%, var(--%NS%border-strong)); +} + +.small[_ngcontent-%COMP%]:active { + background: var(--%NS%border-strong); +} + +.small[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.small[_ngcontent-%COMP%]:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.small.primary[_ngcontent-%COMP%] { + background: var(--%NS%accent); + border-color: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +.small.primary[_ngcontent-%COMP%]:hover { + background: var(--%NS%accent-hover); + border-color: var(--%NS%accent-hover); +} + +.small.danger[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 40%, transparent); + color: var(--%NS%danger); +} + +.small.danger[_ngcontent-%COMP%]:hover { + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + border-color: color-mix(in srgb, var(--%NS%danger) 55%, transparent); +} + +.small.armed[_ngcontent-%COMP%] { + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.small.danger.armed[_ngcontent-%COMP%] { + background: var(--%NS%danger); + border-color: var(--%NS%danger); + color: #1f0707; + font-weight: 600; + box-shadow: 0 0 0 3px color-mix(in srgb, var(--%NS%danger) 18%, transparent); +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .small.danger.armed[_ngcontent-%COMP%] { + color: #fff; + } +} +:root[data-theme=light] [_nghost-%COMP%] .small.danger.armed[_ngcontent-%COMP%] { + color: #fff; +} + +.field-input[_ngcontent-%COMP%] { + min-width: 0; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 13px; + transition: border-color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.field-input[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); + font-family: var(--%NS%font-sans); +} + +.field-input[_ngcontent-%COMP%]:hover { + border-color: color-mix(in srgb, var(--%NS%text-3) 55%, var(--%NS%border-strong)); +} + +.field-input[_ngcontent-%COMP%]:focus, +.field-input[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.explain[_ngcontent-%COMP%] { + margin: 0; + padding: 12px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text); + font-family: var(--%NS%font-mono); + font-size: 12.5px; + line-height: 1.6; + white-space: pre-wrap; + overflow-wrap: anywhere; + tab-size: 2; +} + +.explain[aria-busy=true][_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +.section-label[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.tag[_ngcontent-%COMP%] { + display: inline-block; + margin: 0; + padding: 1px 8px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text-2); + font-size: 11px; + font-weight: 500; + line-height: 18px; + white-space: nowrap; + font-variant-numeric: tabular-nums; +} + +.tag[data-tone=ok][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, var(--%NS%surface)); + color: var(--%NS%ok); +} + +.tag[data-tone=warn][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, var(--%NS%surface)); + color: var(--%NS%warn); +} + +.tag[data-tone=bad][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, var(--%NS%surface)); + color: var(--%NS%danger); +} + +.status[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-2); + font-size: 12.5px; + line-height: 1.5; + overflow-wrap: anywhere; +} + +.empty-state[_ngcontent-%COMP%] { + display: grid; + justify-items: center; + gap: 6px; + margin: 0; + padding: 40px 24px; + border: 1px dashed var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; + text-align: center; +} + +.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + max-width: 52ch; + margin: 0; +} + +.empty-state[_ngcontent-%COMP%] .empty-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.spinner[_ngcontent-%COMP%] { + width: 16px; + height: 16px; + border: 2px solid var(--%NS%border-strong); + border-top-color: var(--%NS%accent); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +[_nghost-%COMP%] { + display: block; +} + +.layout[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: minmax(200px, 260px) minmax(0, 1fr); + gap: 16px; + align-items: start; +} + +.sidebar[_ngcontent-%COMP%] { + min-width: 0; + padding: 8px; + background: var(--%NS%surface); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + animation: enter 0.35s var(--%NS%ease) both; +} + +.list-heading[_ngcontent-%COMP%] { + display: flex; + gap: 8px; + align-items: center; + margin: 4px 8px 8px; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.list-count[_ngcontent-%COMP%] { + padding: 0 6px; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 11px; + letter-spacing: 0; + line-height: 18px; + font-variant-numeric: tabular-nums; +} + +.form-list[_ngcontent-%COMP%] { + display: grid; + gap: 2px; + align-content: start; + margin: 0; + padding: 0; + list-style: none; +} + +.form-item[_ngcontent-%COMP%] { + width: 100%; + display: grid; + grid-template-columns: 8px minmax(0, 1fr) auto; + grid-template-areas: "dot label count" ". kind kind"; + gap: 2px 10px; + align-items: center; + padding: 8px 10px; + border: 0; + border-radius: var(--%NS%radius-sm); + background: transparent; + color: var(--%NS%text); + font: inherit; + text-align: left; + cursor: pointer; + transition: background-color 150ms var(--%NS%ease), color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.form-item[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-2); +} + +.form-item[_ngcontent-%COMP%]:active { + background: var(--%NS%surface-3); +} + +.form-item.active[_ngcontent-%COMP%] { + background: var(--%NS%accent-soft); + box-shadow: inset 2px 0 0 var(--%NS%accent); + color: var(--%NS%text-strong); +} + +.form-item[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.form-item[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%] { + grid-area: dot; +} + +.form-item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] { + grid-area: label; + min-width: 0; + overflow: hidden; + font-size: 13px; + font-weight: 500; + text-overflow: ellipsis; + white-space: nowrap; +} + +.form-item[_ngcontent-%COMP%] .kind[_ngcontent-%COMP%] { + grid-area: kind; + min-width: 0; + overflow: hidden; + color: var(--%NS%text-3); + font-size: 12px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.form-item[_ngcontent-%COMP%] .id[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 11.5px; +} + +.form-item.active[_ngcontent-%COMP%] .kind[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +.form-item[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] { + grid-area: count; + min-width: 20px; + padding: 0 7px; + border: 1px solid color-mix(in srgb, var(--%NS%danger) 30%, transparent); + border-radius: 99px; + background: color-mix(in srgb, var(--%NS%danger) 12%, var(--%NS%surface)); + color: var(--%NS%danger); + font-size: 11px; + font-weight: 600; + line-height: 18px; + text-align: center; + font-variant-numeric: tabular-nums; +} + +.dot[_ngcontent-%COMP%] { + width: 8px; + height: 8px; + border-radius: 50%; + background: var(--%NS%ok); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--%NS%ok) 15%, transparent); +} + +.dot[data-status=INVALID][_ngcontent-%COMP%] { + background: var(--%NS%danger); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--%NS%danger) 15%, transparent); +} + +.dot[data-status=PENDING][_ngcontent-%COMP%] { + background: var(--%NS%warn); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--%NS%warn) 15%, transparent); +} + +.dot[data-status=DISABLED][_ngcontent-%COMP%] { + background: var(--%NS%text-3); + box-shadow: none; +} + +.detail[_ngcontent-%COMP%] { + display: grid; + gap: 16px; + min-width: 0; + padding: 16px; + background: var(--%NS%surface); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + box-shadow: var(--%NS%shadow); + animation: enter 0.35s var(--%NS%ease) both; +} + +.detail-head[_ngcontent-%COMP%] { + display: grid; + gap: 4px; + min-width: 0; +} + +.detail-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-strong); + font-size: 16px; + font-weight: 600; + line-height: 1.3; + overflow-wrap: anywhere; +} + +.detail-meta[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-3); + font-size: 12px; + overflow-wrap: anywhere; +} + +.detail-meta[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 11.5px; +} + +.gone[_ngcontent-%COMP%] { + justify-items: start; +} + +.gone[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-strong); + font-size: 16px; + font-weight: 600; + overflow-wrap: anywhere; +} + +.gone[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 0; +} + +.page-toggle[_ngcontent-%COMP%] { + display: flex; + gap: 8px; + align-items: center; + min-height: 32px; + margin: 0 8px 8px; + color: var(--%NS%text-2); + font-size: 13px; + cursor: pointer; +} + +.page-toggle[_ngcontent-%COMP%] input[_ngcontent-%COMP%] { + width: 16px; + height: 16px; + margin: 0; + accent-color: var(--%NS%accent); +} + +.page-toggle[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.error-summary[_ngcontent-%COMP%] { + min-width: 0; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + font-size: 13px; +} + +.error-summary[_ngcontent-%COMP%] summary[_ngcontent-%COMP%] { + color: var(--%NS%text); + font-weight: 500; + cursor: pointer; +} + +.error-summary[_ngcontent-%COMP%] summary[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.error-summary[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] { + display: grid; + gap: 4px; + margin: 8px 0 0; + padding: 0 0 0 16px; + color: var(--%NS%text); + overflow-wrap: anywhere; +} + +.summary-link[_ngcontent-%COMP%] { + display: inline; + padding: 0; + border: none; + border-radius: 4px; + background: none; + color: inherit; + font: inherit; + text-align: left; + cursor: pointer; +} + +.summary-link[_ngcontent-%COMP%] code[_ngcontent-%COMP%]:first-of-type { + color: var(--%NS%accent); + text-decoration: underline; + text-underline-offset: 3px; +} + +.summary-link[_ngcontent-%COMP%]:hover code[_ngcontent-%COMP%]:first-of-type { + color: var(--%NS%accent-hover); +} + +.summary-link[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.error-summary[_ngcontent-%COMP%] .kind-tag[_ngcontent-%COMP%] { + margin-left: 6px; + color: var(--%NS%text-2); + font-size: 11px; +} + +.summary[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 6px; + align-items: center; + color: var(--%NS%text-2); + font-size: 12px; +} + +.summary[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]:not(.badge):not(.totals) { + padding: 0 10px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + line-height: 22px; +} + +.totals[_ngcontent-%COMP%] { + margin-left: auto; + color: var(--%NS%text-3); + font-variant-numeric: tabular-nums; +} + +.totals[_ngcontent-%COMP%] b[_ngcontent-%COMP%] { + color: var(--%NS%text); + font-weight: 600; +} + +.totals[_ngcontent-%COMP%] b.has-errors[_ngcontent-%COMP%] { + color: var(--%NS%danger); +} + + +.badge[_ngcontent-%COMP%] { + display: inline-block; + padding: 0 8px; + border: 1px solid color-mix(in srgb, var(--%NS%ok) 30%, transparent); + border-radius: 99px; + background: color-mix(in srgb, var(--%NS%ok) 12%, var(--%NS%surface)); + color: var(--%NS%ok); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.04em; + line-height: 20px; + white-space: nowrap; +} + +.summary[_ngcontent-%COMP%] > .badge[_ngcontent-%COMP%] { + line-height: 22px; +} + +.badge[data-status=INVALID][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, var(--%NS%surface)); + color: var(--%NS%danger); +} + +.badge[data-status=PENDING][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, var(--%NS%surface)); + color: var(--%NS%warn); +} + +.badge[data-status=DISABLED][_ngcontent-%COMP%] { + border-color: var(--%NS%border-strong); + background: var(--%NS%surface-2); + color: var(--%NS%text-2); +} + +.action-bar[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + gap: 8px; + padding-bottom: 16px; + border-bottom: 1px solid var(--%NS%border); +} + +.actions[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; + align-items: center; +} + +.divider[_ngcontent-%COMP%] { + width: 1px; + height: 20px; + background: var(--%NS%border-strong); +} + +.spacer[_ngcontent-%COMP%] { + flex: 1 1 0; +} + +.actions[_ngcontent-%COMP%] .small[_ngcontent-%COMP%]:not(.primary):not(.danger) { + max-width: 240px; +} + +.small.on[_ngcontent-%COMP%] { + background: var(--%NS%accent-soft); + border-color: var(--%NS%accent-line); + color: var(--%NS%text-strong); +} + +.status[_ngcontent-%COMP%]:empty { + height: 0; + margin-top: -8px; +} + +.tabs[_ngcontent-%COMP%] { + display: inline-flex; + justify-self: start; + gap: 2px; + max-width: 100%; + height: 34px; + padding: 2px; + overflow-x: auto; + background: var(--%NS%bg); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); +} + +.tabs[_ngcontent-%COMP%] [role=tab][_ngcontent-%COMP%] { + flex: none; + height: 28px; + padding: 0 14px; + border: 0; + border-radius: 7px; + background: transparent; + color: var(--%NS%text-2); + font: inherit; + font-size: 13px; + font-weight: 500; + cursor: pointer; + transition: background-color 150ms var(--%NS%ease), color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.tabs[_ngcontent-%COMP%] [role=tab][_ngcontent-%COMP%]:hover { + color: var(--%NS%text); + background: var(--%NS%surface-2); +} + +.tabs[_ngcontent-%COMP%] [role=tab][aria-selected=true][_ngcontent-%COMP%] { + background: var(--%NS%surface-3); + color: var(--%NS%text-strong); + box-shadow: inset 0 0 0 1px var(--%NS%border-strong); +} + +.tabs[_ngcontent-%COMP%] [role=tab][_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: -2px; +} + +.panel[_ngcontent-%COMP%] { + display: grid; + gap: 12px; + min-width: 0; + animation: enter 0.35s var(--%NS%ease) both; +} + +.filters[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: center; +} + +.chips[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 6px; + min-width: 0; + margin: 0; + padding: 0; + border: 0; +} + +.chips[_ngcontent-%COMP%] label[_ngcontent-%COMP%] { + position: relative; + display: inline-flex; + align-items: center; + height: 28px; + padding: 0 12px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text-2); + font-size: 12px; + font-weight: 500; + white-space: nowrap; + cursor: pointer; + user-select: none; + transition: background-color 150ms var(--%NS%ease), border-color 150ms var(--%NS%ease), color 150ms var(--%NS%ease); +} + +.chips[_ngcontent-%COMP%] label[_ngcontent-%COMP%]:hover { + color: var(--%NS%text); + border-color: var(--%NS%border-strong); +} + +.chips[_ngcontent-%COMP%] input[_ngcontent-%COMP%] { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + margin: 0; + opacity: 0; + cursor: pointer; +} + +.chips[_ngcontent-%COMP%] label[_ngcontent-%COMP%]:has(input:checked) { + border-color: var(--%NS%accent-line); + background: var(--%NS%accent-soft); + color: var(--%NS%accent); +} + +.chips[_ngcontent-%COMP%] label[_ngcontent-%COMP%]:has(input:focus-visible) { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.filter[_ngcontent-%COMP%] { + flex: 1 1 220px; + min-width: 0; + height: 34px; + padding: 0 12px 0 34px; + background-color: var(--%NS%bg); + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238e8e99' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: 12px center; + background-size: 14px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + transition: border-color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +.filter[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +.filter[_ngcontent-%COMP%]:hover { + border-color: color-mix(in srgb, var(--%NS%text-3) 55%, var(--%NS%border-strong)); +} + +.filter[_ngcontent-%COMP%]:focus, +.filter[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.table-scroll[_ngcontent-%COMP%] { + overflow-x: auto; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); +} + +.table-scroll[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.fields[_ngcontent-%COMP%] { + width: 100%; + min-width: 680px; + border-collapse: collapse; + font-size: 13px; +} + +.fields[_ngcontent-%COMP%] th[_ngcontent-%COMP%], +.fields[_ngcontent-%COMP%] td[_ngcontent-%COMP%] { + padding: 8px 12px; + border-bottom: 1px solid var(--%NS%border); + text-align: left; + vertical-align: top; + line-height: 20px; +} + +.fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child > *[_ngcontent-%COMP%] { + border-bottom: 0; +} + +.fields[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%] { + background: var(--%NS%surface-2); + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.06em; + line-height: 16px; + text-transform: uppercase; + white-space: nowrap; +} + +.fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] th[_ngcontent-%COMP%] { + color: var(--%NS%text); + font-weight: 500; + white-space: nowrap; +} + +.fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] { + transition: background-color 150ms var(--%NS%ease); +} + +.fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-2); +} + +.fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.invalid[_ngcontent-%COMP%] > th[_ngcontent-%COMP%] { + box-shadow: inset 2px 0 0 color-mix(in srgb, var(--%NS%danger) 60%, transparent); +} + +.fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:has(.field[aria-pressed=true]) { + background: var(--%NS%accent-soft); +} + +.fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:has(.field[aria-pressed=true]) > th[_ngcontent-%COMP%] { + box-shadow: inset 2px 0 0 var(--%NS%accent); + color: var(--%NS%text-strong); +} + +.name[_ngcontent-%COMP%] { + max-width: 280px; +} + +.field[_ngcontent-%COMP%] { + display: inline-block; + max-width: 200px; + padding: 0; + overflow: hidden; + border: none; + border-radius: 4px; + background: none; + color: inherit; + font-family: var(--%NS%font-mono); + font-size: 12.5px; + font-weight: 500; + line-height: 20px; + text-align: left; + text-overflow: ellipsis; + vertical-align: top; + white-space: nowrap; + cursor: pointer; + transition: color 150ms var(--%NS%ease); +} + +.field[_ngcontent-%COMP%]:hover { + color: var(--%NS%accent-hover); + text-decoration: underline; + text-underline-offset: 3px; +} + +.field[aria-pressed=true][_ngcontent-%COMP%] { + color: var(--%NS%accent); +} + +.field[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.type[_ngcontent-%COMP%] { + margin-left: 8px; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 400; + vertical-align: top; +} + +.value[_ngcontent-%COMP%] { + min-width: 140px; + max-width: 320px; +} + +.value[_ngcontent-%COMP%] code[_ngcontent-%COMP%], +.errors[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + color: #fde68a; + overflow-wrap: anywhere; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .value[_ngcontent-%COMP%] code[_ngcontent-%COMP%], + :root:not([data-theme=dark]) [_nghost-%COMP%] .errors[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + color: var(--%NS%accent); + } +} +:root[data-theme=light] [_nghost-%COMP%] .value[_ngcontent-%COMP%] code[_ngcontent-%COMP%], +:root[data-theme=light] [_nghost-%COMP%] .errors[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + color: var(--%NS%accent); +} + +.value[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%] { + margin-top: 2px; + font-size: 12px; +} + +.status-cell[_ngcontent-%COMP%] { + white-space: nowrap; +} + +.flags[_ngcontent-%COMP%] { + min-width: 160px; +} + +.flags[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { + display: inline-block; + margin: 0 4px 4px 0; + padding: 0 8px; + border: 1px solid var(--%NS%border); + border-radius: 99px; + background: var(--%NS%surface-2); + color: var(--%NS%text-2); + font-size: 11px; + line-height: 18px; + white-space: nowrap; +} + +.flags[_ngcontent-%COMP%] span.warn[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, var(--%NS%surface)); + color: var(--%NS%warn); +} + +.errors[_ngcontent-%COMP%] { + min-width: 180px; +} + +.errors[_ngcontent-%COMP%] div[_ngcontent-%COMP%] { + color: var(--%NS%danger); + overflow-wrap: anywhere; +} + +.errors[_ngcontent-%COMP%] div[_ngcontent-%COMP%] + div[_ngcontent-%COMP%] { + margin-top: 4px; +} + +.errors[_ngcontent-%COMP%] .kind-tag[_ngcontent-%COMP%] { + margin-left: 6px; + color: var(--%NS%text-3); + font-size: 11px; +} + +.source[_ngcontent-%COMP%] { + margin-left: 6px; + color: var(--%NS%text-2); + font-size: 11px; +} + +.errors[_ngcontent-%COMP%] .unseen[_ngcontent-%COMP%] { + color: var(--%NS%warn); + font-size: 11px; +} + +.truncated[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 12px; + font-style: italic; +} + +.fields[_ngcontent-%COMP%] .no-match[_ngcontent-%COMP%] { + padding: 24px 12px; + color: var(--%NS%text-2); + text-align: center; +} + +.empty[_ngcontent-%COMP%] { + display: grid; + justify-items: center; + gap: 8px; + margin: 0; + padding: 48px 24px; + background: var(--%NS%surface); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + color: var(--%NS%text-2); + font-size: 13px; + line-height: 1.5; + text-align: center; + animation: enter 0.35s var(--%NS%ease) both; +} + +.empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + max-width: 52ch; + margin: 0; +} + +.empty[_ngcontent-%COMP%] .small[_ngcontent-%COMP%] { + margin-top: 8px; +} + +.empty-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 15px; + font-weight: 600; +} + +@media (max-width: 720px) { + .layout[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + } + .form-list[_ngcontent-%COMP%] { + max-height: 240px; + overflow-y: auto; + } +} +@media (max-width: 480px) { + .detail[_ngcontent-%COMP%] { + padding: 12px; + } + .totals[_ngcontent-%COMP%] { + flex-basis: 100%; + margin-left: 0; + } + .spacer[_ngcontent-%COMP%], + .divider[_ngcontent-%COMP%] { + display: none; + } +}`]})},lB=[`filterInput`],uB=(e,t)=>t.file+t.name,dB=(e,t)=>t.file+`:`+t.line,fB=(e,t)=>t.name;function pB(e,t){e&1&&(z(0,`p`,14),A(),z(1,`svg`,27),V(2,`circle`,28)(3,`path`,29),B(),ps(),z(4,`span`),J(5),B()()),e&2&&(M(5),Y(t))}function mB(e,t){if(e&1&&(z(0,`p`,14),A(),z(1,`svg`,27),V(2,`circle`,28)(3,`path`,29),B(),ps(),z(4,`span`)(5,`strong`),J(6),B(),J(7,` Pipe prototypes are patched in the inspected page to count calls and keep the last input and output. Stop recording when you are done. `),B()()),e&2){let e=K();M(6),X(`Recording on `,e.instrumentedPages().length,` page(s).`)}}function hB(e,t){e&1&&(z(0,`div`,15),V(1,`span`,30),z(2,`p`,31),J(3,`Scanning pipes…`),B()())}function gB(e,t){if(e&1){let e=W();z(0,`div`,16)(1,`p`,31),J(2,`Couldn't load pipes`),B(),z(3,`p`,32),J(4,`The devtools server did not answer. Check that it is running.`),B(),z(5,`button`,33),G(`click`,function(){return O(e),k(K().refresh())}),J(6,`Try again`),B()()}}function _B(e,t){e&1&&(z(0,`div`,17)(1,`p`,31),J(2,`No pipes found`),B(),z(3,`p`,32),J(4,` No @Pipe classes were found in the source, and no template uses a built-in pipe yet. `),B()())}function vB(e,t){e&1&&(z(0,`span`,44),J(1,`stale?`),B())}function yB(e,t){if(e&1&&(z(0,`span`,45),J(1),B()),e&2){K();let e=iv(0);M(),X(``,e.instanceCount,` live`)}}function bB(e,t){e&1&&(z(0,`span`,46),J(1,`built-in`),B())}function xB(e,t){e&1&&(z(0,`span`,46),J(1,`NgModule`),B())}function SB(e,t){if(e&1&&(z(0,`span`,48),J(1),B()),e&2){let e=K().$implicit;M(),X(`+`,(e.usageCount??1)-1,` more`)}}function CB(e,t){if(e&1){let e=W();nv(0),z(1,`li`)(2,`button`,39),G(`click`,function(){let t=O(e).$implicit;return k(K(3).select(t))})(`mouseenter`,function(){O(e);let t=iv(0);return k(K(3).highlightPipe(t))})(`mouseleave`,function(){return O(e),k(K(3).highlight(null))})(`focus`,function(){O(e);let t=iv(0);return k(K(3).highlightPipe(t))})(`blur`,function(){return O(e),k(K(3).highlight(null))}),z(3,`span`,40)(4,`span`,41),J(5),B(),z(6,`span`,42),J(7),B()(),z(8,`span`,43),P(9,vB,2,0,`span`,44),P(10,yB,2,1,`span`,45),P(11,bB,2,0,`span`,46),P(12,xB,2,0,`span`,46),z(13,`span`,46),J(14),B()(),z(15,`span`,47),J(16),P(17,SB,2,1,`span`,48),B()()()}if(e&2){let e=t.$implicit,n=K(3),r=rv(n.liveFor(e.name));M(2),q(`selected`,n.isSelected(e)),N(`aria-current`,n.isSelected(e)||null),M(3),Y(e.name),M(2),Y(e.className),M(2),F(r?.stale?9:-1),M(),F(r?10:-1),M(),F(e.builtin?11:-1),M(),F(e.isStandalone?-1:12),M(),q(`impure`,!e.isPure),M(),Y(e.isPure?`pure`:`impure`),M(2),Z(` `,e.file,`:`,e.line,` `),M(),F(e.builtin&&(e.usageCount??0)>1?17:-1)}}function wB(e,t){if(e&1){let e=W();z(0,`ul`,38),G(`keydown`,function(t){return O(e),k(K(2).onListKey(t))}),I(1,CB,18,16,`li`,null,uB),B()}if(e&2){let e=K(2);M(),L(e.filtered())}}function TB(e,t){e&1&&J(0),e&2&&X(` Nothing matches “`,K(3).filter().trim(),`” in this view. `)}function EB(e,t){e&1&&J(0,` None of the pipes fit this filter. `)}function DB(e,t){if(e&1){let e=W();z(0,`div`,36)(1,`p`,31),J(2,`No pipes match`),B(),z(3,`p`,32),P(4,TB,1,1)(5,EB,1,0),B(),z(6,`button`,33),G(`click`,function(){return O(e),k(K(2).clearFilters())}),J(7,`Clear filters`),B()()}if(e&2){let e=K(2);M(4),F(e.filter().trim()?4:5)}}function OB(e,t){e&1&&(z(0,`span`,46),J(1,`built-in`),B())}function kB(e,t){if(e&1&&(z(0,`dt`),J(1,`File`),B(),z(2,`dd`,52),J(3),B()),e&2){let e=K();M(3),Z(``,e.file,`:`,e.line)}}function AB(e,t){if(e&1&&(z(0,`li`,52),J(1),B()),e&2){let e=t.$implicit;M(),Z(``,e.file,`:`,e.line)}}function jB(e,t){if(e&1&&(z(0,`div`,51)(1,`h3`),J(2,` Used in templates `),z(3,`span`,22),J(4),B()(),z(5,`ul`,54),I(6,AB,2,2,`li`,52,dB),B()()),e&2){let e=K();M(4),Y(e.usageCount),M(2),L(e.usages)}}function MB(e,t){e&1&&(z(0,`p`,55)(1,`span`,44),J(2,`experimental`),B(),J(3,` This pure pipe got an argument whose contents changed while its reference stayed the same, so it may be showing a stale value. `),B())}function NB(e,t){if(e&1){let e=W();z(0,`button`,60),G(`click`,function(){let t=O(e);return k(K(5).highlight(t,!0))})(`mouseenter`,function(){let t=O(e);return k(K(5).highlight(t))})(`mouseleave`,function(){return O(e),k(K(5).highlight(null))})(`focus`,function(){let t=O(e);return k(K(5).highlight(t))})(`blur`,function(){return O(e),k(K(5).highlight(null))}),z(1,`span`,52),J(2),B(),z(3,`span`,61),J(4),B()()}if(e&2){let e=K().$implicit;N(`aria-label`,`Highlight `+e.name+` on the page`),M(2),Y(e.name),M(2),Y(e.count)}}function PB(e,t){if(e&1&&(z(0,`span`,59)(1,`span`,52),J(2),B(),z(3,`span`,61),J(4),B()()),e&2){let e=K().$implicit;M(2),Y(e.name),M(2),Y(e.count)}}function FB(e,t){if(e&1&&(z(0,`li`),P(1,NB,5,3,`button`,58)(2,PB,5,2,`span`,59),B()),e&2){let e,n=t.$implicit;M(),F((e=n.targets?.[0])?1:2,e)}}function IB(e,t){if(e&1&&(z(0,`li`,62),J(1),z(2,`span`,63),J(3),B()()),e&2){let e=t.$implicit,n=K(6);M(),Z(` `,n.describe(e.lastArgs),` → `,n.describe(e.lastResult),` `),M(2),X(``,e.callCount,`×`)}}function LB(e,t){if(e&1&&(z(0,`dt`),J(1,`Per instance`),B(),z(2,`dd`)(3,`ul`,54),I(4,IB,4,3,`li`,62,Cg),B()()),e&2){let e=K();M(4),L(e.instances)}}function RB(e,t){if(e&1&&(z(0,`dt`),J(1,`Last caller`),B(),z(2,`dd`,62),J(3),B()),e&2){let e=K();M(3),Y(e.lastCaller)}}function zB(e,t){if(e&1&&(z(0,`dt`),J(1,`Calls`),B(),z(2,`dd`),J(3),B(),z(4,`dt`),J(5,`Last input`),B(),z(6,`dd`,62),J(7),B(),z(8,`dt`),J(9,`Last output`),B(),z(10,`dd`,62),J(11),B(),P(12,LB,6,0),P(13,RB,4,1)),e&2){let e=t,n=K(4);M(3),Y(e.callCount),M(4),Y(n.describe(e.lastArgs)),M(4),Y(n.describe(e.lastResult)),M(),F(e.instances?.length?12:-1),M(),F(e.lastCaller?13:-1)}}function BB(e,t){e&1&&(z(0,`dt`),J(1,`Calls`),B(),z(2,`dd`,64),J(3,`None recorded yet.`),B())}function VB(e,t){e&1&&(z(0,`p`,57),J(1,`Turn on “Record calls” to see call counts and values.`),B())}function HB(e,t){if(e&1&&(P(0,MB,4,0,`p`,55),z(1,`dl`)(2,`dt`),J(3,`Instances`),B(),z(4,`dd`),J(5),B(),z(6,`dt`),J(7,`Used by`),B(),z(8,`dd`)(9,`ul`,56),I(10,FB,3,1,`li`,null,fB),B()(),P(12,zB,14,5)(13,BB,4,0),B(),P(14,VB,2,0,`p`,57)),e&2){let e,n=t,r=K(3);F(n.stale?0:-1),M(5),Y(n.instanceCount),M(5),L(n.components),M(2),F((e=n.call)?12:r.instrumenting()?13:-1,e),M(2),F(!n.call&&!r.instrumenting()?14:-1)}}function UB(e,t){e&1&&(z(0,`p`,53),J(1,` Not in use on the connected page. Open a view that uses it, or connect the app. `),B())}function WB(e,t){if(e&1&&(z(0,`header`,49)(1,`h2`,50),J(2),B(),z(3,`span`,46),J(4),B(),P(5,OB,2,0,`span`,46),B(),z(6,`div`,51)(7,`h3`),J(8,`Declaration`),B(),z(9,`dl`)(10,`dt`),J(11,`Class`),B(),z(12,`dd`,52),J(13),B(),z(14,`dt`),J(15,`Source`),B(),z(16,`dd`),J(17),B(),P(18,kB,4,2),z(19,`dt`),J(20,`Standalone`),B(),z(21,`dd`),J(22),B(),z(23,`dt`),J(24,`Pure`),B(),z(25,`dd`),J(26),B()()(),P(27,jB,8,1,`div`,51),z(28,`div`,51)(29,`h3`),J(30,`Live on the page`),B(),P(31,HB,15,4)(32,UB,2,0,`p`,53),B()),e&2){let e,n=t,r=K(2);M(2),Y(n.name),M(),q(`impure`,!n.isPure),M(),Y(n.isPure?`pure`:`impure`),M(),F(n.builtin?5:-1),M(8),Y(n.className),M(4),Y(n.builtin?`@angular/common`:`This project`),M(),F(n.builtin?-1:18),M(4),Y(n.isStandalone?`Yes`:`No, declared in an NgModule`),M(4),X(` `,n.isPure?`Yes, reruns only when an input changes`:`No, reruns on every check`,` `),M(),F(n.builtin&&n.usages?.length?27:-1),M(4),F((e=r.liveFor(n.name))?31:32,e)}}function GB(e,t){e&1&&(z(0,`h2`,65),J(1,`Pipe details`),B(),z(2,`div`,66)(3,`p`,31),J(4,`Pick a pipe`),B(),z(5,`p`,32),J(6,` See where it is declared, which components use it and what it last returned. `),B()())}function KB(e,t){if(e&1&&(z(0,`div`,18)(1,`div`,34),P(2,wB,3,0,`ul`,35)(3,DB,8,1,`div`,36),B(),z(4,`section`,37),P(5,WB,33,12)(6,GB,7,0),B()()),e&2){let e,t=K();M(2),F(t.filtered().length?2:3),M(3),F((e=t.selected())?5:6,e)}}function qB(e,t){if(e&1){let e=W();z(0,`button`,74),G(`click`,function(){let t=O(e);return k(K(3).highlight(t))})(`focus`,function(){let t=O(e);return k(K(3).highlight(t))})(`blur`,function(){return O(e),k(K(3).highlight(null))}),J(1),B()}if(e&2){let e=K().$implicit;N(`aria-label`,`Highlight `+e.component+` on the page`),M(),X(` `,e.component,` `)}}function JB(e,t){if(e&1&&(z(0,`span`,72),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.component)}}function YB(e,t){e&1&&(z(0,`span`,46),J(1,`no source`),B())}function XB(e,t){e&1&&(z(0,`span`,44),J(1,`duplicate subscription`),B())}function ZB(e,t){e&1&&(z(0,`span`,44),J(1,`resubscribing`),B())}function QB(e,t){if(e&1){let e=W();z(0,`li`,70),G(`mouseenter`,function(){let t=O(e).$implicit;return k(K(2).highlight(t.target))})(`mouseleave`,function(){return O(e),k(K(2).highlight(null))}),P(1,qB,2,2,`button`,71)(2,JB,2,1,`span`,72),P(3,YB,2,0,`span`,46),P(4,XB,2,0,`span`,44),P(5,ZB,2,0,`span`,44),z(6,`span`,73),J(7),B()()}if(e&2){let e,n=t.$implicit;M(),F((e=n.target)?1:2,e),M(2),F(n.hasSource?-1:3),M(),F(n.duplicate?4:-1),M(),F(n.resubscribing?5:-1),M(2),Y(n.latestValue??`no value yet`)}}function $B(e,t){if(e&1&&(z(0,`section`,19)(1,`h2`,67),J(2,` Async subscriptions `),z(3,`span`,22),J(4),B()(),z(5,`p`,57),J(6,` Each `),z(7,`span`,52),J(8,`| async`),B(),J(9,` subscribes on its own. Two on the same source mean the work runs twice. A source that changes on every check, like `),z(10,`span`,52),J(11,`getData() | async`),B(),J(12,`, resubscribes each time. `),B(),z(13,`ul`,68),I(14,QB,8,5,`li`,69,Cg),B()()),e&2){let e=K();M(4),Y(e.async().length),M(10),L(e.async())}}function eV(e,t){e&1&&(z(0,`span`,22),J(1),B()),e&2&&(M(),Y(t.length))}function tV(e,t){e&1&&(z(0,`p`,23),J(1,`Couldn't run the lint check. Try Refresh.`),B())}function nV(e,t){e&1&&(z(0,`p`,24),J(1,`Checking…`),B())}function rV(e,t){e&1&&(z(0,`p`,25),J(1,`No problems found.`),B())}function iV(e,t){if(e&1){let e=W();z(0,`button`,84),G(`click`,function(){O(e),K();let t=iv(6);return k(K(2).showPipe(t))}),z(1,`span`,85),J(2,`Show pipe `),B(),J(3),B()}if(e&2){let e=K().$implicit;M(3),X(``,e.pipe,` `)}}function aV(e,t){if(e&1&&J(0),e&2){let e=K().$implicit;X(` `,e.pipe,` `)}}function oV(e,t){if(e&1&&(z(0,`li`,75)(1,`div`,76)(2,`span`,77),J(3),B(),z(4,`code`,78),J(5),B(),nv(6),z(7,`span`,79),P(8,iV,4,1,`button`,80)(9,aV,1,1),J(10),B()(),z(11,`p`,81),J(12),B(),z(13,`p`,82)(14,`span`,83),J(15,`Fix`),B(),J(16),B()()),e&2){let e=t.$implicit;M(2),N(`data-tone`,e.severity),M(),Y(e.severity),M(2),Y(e.rule),M();let n=rv(K(2).pipeFor(e));M(2),F(n?8:9),M(2),Z(` · `,e.file,`:`,e.line,` `),M(2),Y(e.message),M(4),X(` `,e.fix)}}function sV(e,t){if(e&1&&(z(0,`ul`,26),I(1,oV,17,9,`li`,75,Cg),B()),e&2){let e=K();M(),L(e.lint())}}var cV=5e3,lV=[{value:`all`,label:`All pipes`},{value:`custom`,label:`Custom`},{value:`builtin`,label:`Built-in`},{value:`impure`,label:`Impure`},{value:`live`,label:`On the page`}],uV=class e{destroyRef=E(Cs);host=E(Ml);injector=E(xs);filterInput=Rv(`filterInput`);rpc=$(null);kindOptions=lV;pipes=j([]);filter=j(``);kind=j(`all`);loading=j(!1);loadFailed=j(!1);selected=j(null);live=j([]);async=j([]);lint=j(null);lintFailed=j(!1);instrumentedPages=j([]);instrumenting=Q(()=>this.instrumentedPages().length>0);pendingRecord=j(null);recordMessage=j(null);recordLabel=Q(()=>{let e=this.pendingRecord();return e===null?this.instrumenting()?`Stop recording`:`Record calls`:e?`Starting…`:`Stopping…`});pendingTimer;liveByName=Q(()=>new Map(this.live().map(e=>[e.name,e])));filtered=Q(()=>{let e=this.filter(),t=this.kind()??`all`;return this.pipes().filter(n=>this.fitsKind(n,t)&&this.fitsQuery(n,e))});pipesByName=Q(()=>{let e=new Map;for(let t of this.pipes())e.set(t.name,[...e.get(t.name)??[],t]);return e});unsubscribe;constructor(){uc(()=>{let e=this.rpc();e&&(this.refresh(),this.loadLive(e))}),this.destroyRef.onDestroy(()=>{this.unsubscribe?.(),clearTimeout(this.pendingTimer),this.highlight(null)})}async refresh(){let e=this.rpc();if(e){this.loading.set(!0),this.loadFailed.set(!1);try{let t=await e.scope(`pangular`).rpc.call(`get-pipes`);this.pipes.set(t);let n=this.selected();if(n){let e=t.find(e=>e.name===n.name&&e.file===n.file);this.selected.set(e??null)}}catch{this.loadFailed.set(!0)}finally{this.loading.set(!1)}this.loadLint(e)}}async loadLint(e){this.lintFailed.set(!1);try{let t=await e.scope(`pangular`).rpc.call(`pipe-lint`);this.lint.set(t)}catch{this.lintFailed.set(!0)}}async loadLive(e){try{let t=await e.scope(`pangular`).rpc.sharedState(`pipe-usage`);if(this.destroyRef.destroyed)return;let n=e=>{let t=e;this.live.set(t?.pipes??[]),this.async.set(t?.async??[]);let n=t?.instrumented??[];this.instrumentedPages.set(n),this.pendingRecord()===n.length>0&&this.settleRecord(null)};n(t.value()),this.unsubscribe?.(),this.unsubscribe=t.on(`updated`,n)}catch{}}async toggleInstrument(){let e=this.rpc();if(!e||this.pendingRecord()!==null)return;let t=!this.instrumenting();this.recordMessage.set(null),this.pendingRecord.set(t);let n;try{let r=t?{pageId:eE()??void 0,on:t}:{on:t};n=await e.scope(`pangular`).rpc.call(`request-instrument-pipes`,r)}catch{this.settleRecord(`Couldn't reach the devtools server. Try again.`);return}if(this.pendingRecord()===t){if(n?.pages===0){this.settleRecord(`No page is connected. Open your app in the browser with the devtools running, then record again.`);return}clearTimeout(this.pendingTimer),this.pendingTimer=setTimeout(()=>{this.pendingRecord()===t&&this.settleRecord(t?`No page confirmed recording. Reload the app and try again.`:`No page confirmed it stopped recording. Reload the app to stop it.`)},cV)}}settleRecord(e){clearTimeout(this.pendingTimer),this.pendingRecord.set(null),e!==null&&this.recordMessage.set(e)}liveFor(e){return this.liveByName().get(e)}describe(e){if(Array.isArray(e))return e.map(e=>this.describe(e)).join(`, `);if(typeof e==`string`)return e.length>80?`${e.slice(0,80)}…`:e;try{let t=JSON.stringify(e);return t&&t.length>120?`${t.slice(0,120)}…`:t??String(e)}catch{return String(e)}}isSelected(e){let t=this.selected();return t!==null&&t.name===e.name&&t.file===e.file}select(e){this.selected.set(this.isSelected(e)?null:e)}pipeFor(e){let t=this.pipesByName().get(e.pipe);return t?.length?t.find(t=>t.file===e.file)??t[0]:null}showPipe(e){this.fitsQuery(e,this.filter())||this.filter.set(``),this.fitsKind(e,this.kind()??`all`)||this.kind.set(`all`),this.selected.set(e),Id(()=>{let e=this.host.nativeElement;e.querySelector(`.row.selected`)?.scrollIntoView?.({block:`nearest`}),e.querySelector(`#pipe-detail-title`)?.focus()},{injector:this.injector})}fitsKind(e,t){return t===`custom`?!e.builtin:t===`builtin`?!!e.builtin:t===`impure`?!e.isPure:t!==`live`||this.liveByName().has(e.name)}fitsQuery(e,t){let n=t.trim().toLowerCase();return!n||e.name.toLowerCase().includes(n)||e.className.toLowerCase().includes(n)||e.file.toLowerCase().includes(n)}clearFilters(){this.filter.set(``),this.kind.set(`all`),this.filterInput()?.nativeElement.focus()}highlightPipe(e){this.highlight(e?.components.find(e=>e.targets?.length)?.targets?.[0])}highlight(e,t=!1){let n=this.rpc();n&&n.scope(`pangular`).rpc.call(`request-page-highlight`,e?{...e,...t?{reveal:t}:{}}:null).catch(()=>{})}onListKey(e){if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;let t=Array.from(this.host.nativeElement.querySelectorAll(`[data-pipe-row]`));if(!t.length)return;let n=t.indexOf(document.activeElement),r=n;r=e.key===`ArrowDown`?Math.min(n+1,t.length-1):e.key===`ArrowUp`?Math.max(n-1,0):e.key===`Home`?0:t.length-1,e.preventDefault(),t[r]?.focus()}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-pipes-inspector`]],viewQuery:function(e,t){e&1&&e_(t.filterInput,lB,5),e&2&&t_()},inputs:{rpc:[1,`rpc`]},decls:33,vars:18,consts:[[`filterInput`,``],[1,`intro`],[1,`toolbar`],[1,`search`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`search-icon`],[`cx`,`11`,`cy`,`11`,`r`,`7`],[`d`,`m20 20-3.5-3.5`],[`type`,`search`,`placeholder`,`Find a pipe, class or file…`,`aria-label`,`Find a pipe, class or file`,`autocomplete`,`off`,`spellcheck`,`false`,3,`input`,`keydown.escape`,`value`],[`ariaLabel`,`Show pipes`,3,`valueChange`,`options`,`value`],[`aria-live`,`polite`,1,`total`],[1,`actions`],[`type`,`button`,3,`click`,`disabled`],[`type`,`button`,1,`record`,3,`click`],[`aria-hidden`,`true`,1,`rec-dot`],[`role`,`status`,1,`notice`],[`role`,`status`,1,`state`],[`role`,`alert`,1,`state`],[1,`state`],[1,`layout`],[`aria-labelledby`,`async-title`,1,`section`],[`aria-labelledby`,`lint-title`,1,`section`],[`id`,`lint-title`],[1,`pill`],[`role`,`alert`,1,`empty-line`],[`role`,`status`,1,`empty-line`],[1,`empty-line`,`ok`],[1,`findings`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M12 11v5M12 8h.01`],[`aria-hidden`,`true`,1,`spinner`],[1,`state-title`],[1,`state-hint`],[`type`,`button`,3,`click`],[1,`list-wrap`],[`aria-label`,`Pipes`,1,`pipe-list`],[`role`,`status`,1,`state`,`compact`],[`id`,`pipe-detail`,`aria-labelledby`,`pipe-detail-title`,1,`detail`],[`aria-label`,`Pipes`,1,`pipe-list`,3,`keydown`],[`type`,`button`,`data-pipe-row`,``,`aria-controls`,`pipe-detail`,1,`row`,3,`click`,`mouseenter`,`mouseleave`,`focus`,`blur`],[1,`row-main`],[1,`name`,`mono`],[1,`sub`,`mono`],[1,`row-meta`],[1,`chip`,`warn`],[1,`chip`,`live`],[1,`chip`],[1,`row-file`,`mono`],[1,`more`],[1,`detail-head`],[`id`,`pipe-detail-title`,`tabindex`,`-1`,1,`mono`],[1,`block`],[1,`mono`],[1,`empty-line`],[1,`sites`],[`role`,`note`,1,`warning`],[1,`chips`],[1,`hint`],[`type`,`button`,1,`component`],[1,`component`],[`type`,`button`,1,`component`,3,`click`,`mouseenter`,`mouseleave`,`focus`,`blur`],[1,`count`],[1,`mono`,`value`],[1,`calls`],[1,`muted`],[`id`,`pipe-detail-title`,1,`visually-hidden`],[1,`state`,`compact`],[`id`,`async-title`],[1,`async-list`],[1,`async-row`],[1,`async-row`,3,`mouseenter`,`mouseleave`],[`type`,`button`,1,`component-name`,`mono`],[1,`mono`,`component-name`],[1,`mono`,`value`,`latest`],[`type`,`button`,1,`component-name`,`mono`,3,`click`,`focus`,`blur`],[1,`finding`],[1,`finding-head`],[1,`severity`],[1,`mono`,`rule`],[1,`where`,`mono`],[`type`,`button`,1,`pipe-link`],[1,`finding-message`],[1,`finding-fix`],[1,`fix-label`],[`type`,`button`,1,`pipe-link`,3,`click`],[1,`sr-only`]],template:function(e,t){if(e&1){let e=W();z(0,`p`,1),J(1,` Pipes declared in your source and the built-in pipes your templates use. Live data shows which components use each pipe on the page; turn on recording to capture calls and the last input and output. `),B(),z(2,`div`,2)(3,`div`,3),A(),z(4,`svg`,4),V(5,`circle`,5)(6,`path`,6),B(),ps(),z(7,`input`,7,0),G(`input`,function(e){return t.filter.set(e.target.value)})(`keydown.escape`,function(){return t.filter.set(``)}),B()(),z(9,`app-select`,8),ev(`valueChange`,function(n){return O(e),$_(t.kind,n)||(t.kind=n),k(n)}),B(),z(10,`span`,9),J(11),B(),z(12,`div`,10)(13,`button`,11),G(`click`,function(){return t.refresh()}),J(14,`Refresh`),B(),z(15,`button`,12),G(`click`,function(){return t.toggleInstrument()}),V(16,`span`,13),J(17),B()()(),P(18,pB,6,1,`p`,14),P(19,mB,8,1,`p`,14),P(20,hB,4,0,`div`,15)(21,gB,7,0,`div`,16)(22,_B,5,0,`div`,17)(23,KB,7,2,`div`,18),P(24,$B,16,1,`section`,19),z(25,`section`,20)(26,`h2`,21),J(27,` Lint `),P(28,eV,2,1,`span`,22),B(),P(29,tV,2,0,`p`,23)(30,nV,2,0,`p`,24)(31,rV,2,0,`p`,25)(32,sV,3,0,`ul`,26),B()}if(e&2){let e,n;M(7),R(`value`,t.filter()),M(2),R(`options`,t.kindOptions),Q_(`value`,t.kind),M(2),Z(``,t.filtered().length,` of `,t.pipes().length),M(2),R(`disabled`,t.loading()),M(2),q(`on`,t.instrumenting()),N(`aria-pressed`,t.instrumenting())(`aria-busy`,t.pendingRecord()!==null)(`aria-disabled`,t.pendingRecord()!==null),M(2),X(` `,t.recordLabel(),` `),M(),F((e=t.recordMessage())?18:-1,e),M(),F(t.instrumenting()?19:-1),M(),F(t.loading()&&t.pipes().length===0?20:t.loadFailed()&&t.pipes().length===0?21:t.pipes().length===0?22:23),M(4),F(t.async().length>0?24:-1),M(4),F((n=t.lint())?28:-1,n),M(),F(t.lintFailed()?29:t.lint()===null?30:t.lint().length?32:31)}},dependencies:[AD],styles:[`[_nghost-%COMP%] { + display: block; + color: var(--%NS%text); + font-size: 13px; +} + +.mono[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); +} + +.intro[_ngcontent-%COMP%] { + max-width: 720px; + margin: 0 0 12px; + color: var(--%NS%text-2); + line-height: 1.5; +} + +.toolbar[_ngcontent-%COMP%] { + position: sticky; + top: 0; + z-index: 2; + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: center; + margin: 0 0 12px; + padding: 8px; + background: color-mix(in srgb, var(--%NS%surface) 85%, transparent); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); +} + +.search[_ngcontent-%COMP%] { + position: relative; + flex: 1 1 220px; + min-width: 0; +} + +.search-icon[_ngcontent-%COMP%] { + position: absolute; + top: 50%; + left: 12px; + width: 14px; + height: 14px; + transform: translateY(-50%); + fill: none; + stroke: var(--%NS%text-3); + stroke-width: 2.2; + stroke-linecap: round; + pointer-events: none; +} + +.search[_ngcontent-%COMP%]:focus-within .search-icon[_ngcontent-%COMP%] { + stroke: var(--%NS%accent); +} + +input[type=search][_ngcontent-%COMP%] { + width: 100%; + height: var(--%NS%control-h); + padding: 0 12px 0 34px; + background: var(--%NS%bg); + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text); + font-size: 13px; + transition: border-color 150ms var(--%NS%ease), box-shadow 150ms var(--%NS%ease); +} + +input[type=search][_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +input[type=search][_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.toolbar[_ngcontent-%COMP%] app-select[_ngcontent-%COMP%] { + width: 150px; +} + +.total[_ngcontent-%COMP%] { + flex: none; + color: var(--%NS%text-2); + font-size: 12px; + white-space: nowrap; + font-variant-numeric: tabular-nums; +} + +.actions[_ngcontent-%COMP%] { + display: flex; + gap: 8px; + margin-left: auto; +} + +button[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 8px; + height: var(--%NS%control-h); + padding: 0 14px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-weight: 500; + white-space: nowrap; + cursor: pointer; + transition: background-color 150ms var(--%NS%ease), border-color 150ms var(--%NS%ease); +} + +button[_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: var(--%NS%accent-line); + background: var(--%NS%surface-3); +} + +button[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +button[_ngcontent-%COMP%]:disabled { + cursor: default; + opacity: 0.6; +} + +.record[aria-busy=true][_ngcontent-%COMP%] { + cursor: progress; +} + +.rec-dot[_ngcontent-%COMP%] { + width: 8px; + height: 8px; + border-radius: 50%; + background: var(--%NS%text-3); +} + +.record.on[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%accent) 30%, transparent); + background: color-mix(in srgb, var(--%NS%accent) 12%, transparent); + color: var(--%NS%accent); +} + +.record.on[_ngcontent-%COMP%] .rec-dot[_ngcontent-%COMP%] { + background: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +.notice[_ngcontent-%COMP%] { + display: flex; + align-items: flex-start; + gap: 8px; + margin: 0 0 12px; + padding: 10px 12px; + border: 1px solid var(--%NS%accent-line); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%accent-soft); + color: var(--%NS%text-2); + line-height: 1.5; + animation: enter 0.2s var(--%NS%ease) both; +} + +.notice[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-weight: 600; +} + +.notice[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] { + flex: none; + width: 16px; + height: 16px; + margin-top: 2px; + fill: none; + stroke: var(--%NS%accent); + stroke-width: 2; + stroke-linecap: round; +} + +.layout[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 12px; + align-items: start; +} + +@media (min-width: 880px) { + .layout[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr) minmax(340px, 44%); + } + .detail[_ngcontent-%COMP%] { + position: sticky; + top: 64px; + max-height: calc(100vh - 150px); + overflow: auto; + } +} +.list-wrap[_ngcontent-%COMP%] { + min-width: 0; +} + +.pipe-list[_ngcontent-%COMP%] { + display: grid; + gap: 2px; + margin: 0; + padding: 6px; + list-style: none; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + animation: enter 0.35s var(--%NS%ease) both; +} + +.row[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 2px 12px; + width: 100%; + height: auto; + padding: 8px 10px; + border: 0; + border-radius: var(--%NS%radius-sm); + background: none; + text-align: left; + font-weight: 400; + white-space: normal; +} + +.row[_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: transparent; + background: var(--%NS%surface-2); +} + +.row[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: -2px; +} + +.row.selected[_ngcontent-%COMP%] { + background: var(--%NS%accent-soft); + box-shadow: inset 2px 0 0 var(--%NS%accent); +} + +.row-main[_ngcontent-%COMP%] { + display: flex; + align-items: baseline; + gap: 8px; + min-width: 0; +} + +.name[_ngcontent-%COMP%] { + flex: none; + color: var(--%NS%text-strong); + font-size: 13px; + font-weight: 600; +} + +.sub[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 12px; + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; +} + +.row-meta[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + gap: 4px; +} + +.row-file[_ngcontent-%COMP%] { + grid-column: 1/-1; + color: var(--%NS%text-3); + font-size: 11px; + overflow-wrap: anywhere; +} + +.more[_ngcontent-%COMP%] { + margin-left: 6px; + color: var(--%NS%text-2); +} + +.chip[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + height: 18px; + padding: 0 7px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + color: var(--%NS%text-2); + font-size: 10px; + font-weight: 600; + letter-spacing: 0.04em; + text-transform: uppercase; + white-space: nowrap; +} + +.chip.impure[_ngcontent-%COMP%], +.chip.warn[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +.chip.live[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.pill[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 18px; + height: 16px; + padding: 0 5px; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 10px; + font-weight: 600; + letter-spacing: 0; + font-variant-numeric: tabular-nums; +} + +.detail[_ngcontent-%COMP%] { + min-width: 0; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + animation: enter 0.35s var(--%NS%ease) both; +} + +.detail-head[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px 10px; + padding: 14px 16px; + border-bottom: 1px solid var(--%NS%border); +} + +.detail-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] { + flex: 1 1 auto; + min-width: 0; + margin: 0; + color: var(--%NS%text-strong); + font-size: 15px; + font-weight: 600; + overflow-wrap: anywhere; + border-radius: 4px; +} + +.detail-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]:focus { + outline: none; +} + +.detail-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.block[_ngcontent-%COMP%] { + padding: 14px 16px; + border-bottom: 1px solid var(--%NS%border); +} + +.block[_ngcontent-%COMP%]:last-child { + border-bottom: 0; +} + +h3[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + display: flex; + align-items: center; + gap: 6px; + margin: 0 0 10px; +} + +dl[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + gap: 6px 14px; + margin: 0; +} + +dt[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +dd[_ngcontent-%COMP%] { + min-width: 0; + margin: 0; + color: var(--%NS%text); +} + +.value[_ngcontent-%COMP%] { + font-size: 12px; + overflow-wrap: anywhere; +} + +.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +.sites[_ngcontent-%COMP%] { + display: grid; + gap: 4px; + margin: 0; + padding: 0; + list-style: none; + color: var(--%NS%text-2); + font-size: 12px; + overflow-wrap: anywhere; +} + +.calls[_ngcontent-%COMP%] { + margin-left: 6px; + color: var(--%NS%text-3); +} + +.chips[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 6px; + margin: 0; + padding: 0; + list-style: none; +} + +.component[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + gap: 6px; + height: 24px; + padding: 0 4px 0 10px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + background: var(--%NS%bg); + font-size: 12px; + transition: border-color 150ms var(--%NS%ease), background-color 150ms var(--%NS%ease); +} + +button.component[_ngcontent-%COMP%] { + height: 24px; + padding: 0 4px 0 10px; + border-radius: 99px; + background: var(--%NS%bg); + font-size: 12px; + font-weight: 400; +} + +.count[_ngcontent-%COMP%] { + padding: 0 6px; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 10px; + line-height: 16px; + font-variant-numeric: tabular-nums; +} + +.warning[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: baseline; + gap: 8px; + margin: 0 0 12px; + padding: 8px 10px; + border: 1px solid color-mix(in srgb, var(--%NS%warn) 30%, transparent); + border-radius: var(--%NS%radius-sm); + background: color-mix(in srgb, var(--%NS%warn) 8%, transparent); + color: var(--%NS%text); + line-height: 1.5; +} + +.hint[_ngcontent-%COMP%] { + margin: 8px 0 0; + color: var(--%NS%text-3); + font-size: 12px; +} + +.empty-line[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-2); + line-height: 1.5; +} + +.empty-line.ok[_ngcontent-%COMP%] { + color: var(--%NS%ok); +} + +.section[_ngcontent-%COMP%] { + margin-top: 20px; + animation: enter 0.35s var(--%NS%ease) both; +} + +.section[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + display: flex; + align-items: center; + gap: 8px; + margin: 0 0 8px; +} + +.section[_ngcontent-%COMP%] > .hint[_ngcontent-%COMP%] { + margin: -2px 0 10px; +} + +.async-list[_ngcontent-%COMP%], +.findings[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + margin: 0; + padding: 0; + list-style: none; +} + +.async-row[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 6px 8px; + min-width: 0; + padding: 8px 12px; + border-radius: var(--%NS%radius-sm); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + transition: background-color 150ms var(--%NS%ease), border-color 150ms var(--%NS%ease); +} + +.async-row[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%border-strong); + background: var(--%NS%surface-2); +} + +.component-name[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-weight: 600; +} + +button.component-name[_ngcontent-%COMP%] { + height: 24px; + padding: 0 8px; + margin-left: -8px; + border-color: transparent; + background: none; + font-size: 13px; +} + +.latest[_ngcontent-%COMP%] { + flex: 1 1 100%; + color: var(--%NS%text-2); +} + +.finding[_ngcontent-%COMP%] { + padding: 10px 12px; + border-radius: var(--%NS%radius-sm); + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); +} + +.finding-head[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 6px 8px; +} + +.severity[_ngcontent-%COMP%] { + padding: 0 7px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + color: var(--%NS%text-2); + font-size: 10px; + font-weight: 700; + letter-spacing: 0.06em; + line-height: 16px; + text-transform: uppercase; +} + +.severity[data-tone=warning][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +.severity[data-tone=error][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger); +} + +.rule[_ngcontent-%COMP%] { + color: var(--%NS%accent); + font-size: 12px; +} + +.where[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + overflow-wrap: anywhere; +} + +button.pipe-link[_ngcontent-%COMP%] { + display: inline; + height: auto; + padding: 0; + border: 0; + border-radius: 4px; + background: none; + color: var(--%NS%accent); + font: inherit; + text-decoration: underline; + text-underline-offset: 3px; + white-space: normal; +} + +button.pipe-link[_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: transparent; + background: none; + color: var(--%NS%accent-hover); +} + +button.pipe-link[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.finding-message[_ngcontent-%COMP%] { + margin: 6px 0 0; + color: var(--%NS%text); + line-height: 1.5; +} + +.finding-fix[_ngcontent-%COMP%] { + margin: 4px 0 0; + color: var(--%NS%text-2); + line-height: 1.5; +} + +.fix-label[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + margin-right: 4px; +} + +.state[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + padding: 40px 16px; + text-align: center; + background: var(--%NS%surface); + border: 1px dashed var(--%NS%border-strong); + border-radius: var(--%NS%radius); + animation: enter 0.35s var(--%NS%ease) both; +} + +.state.compact[_ngcontent-%COMP%] { + padding: 28px 16px; + border: 0; + background: none; +} + +.list-wrap[_ngcontent-%COMP%] .state.compact[_ngcontent-%COMP%] { + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); +} + +.state-title[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.state-hint[_ngcontent-%COMP%] { + max-width: 440px; + margin: 0; + color: var(--%NS%text-2); + line-height: 1.5; +} + +.state[_ngcontent-%COMP%] button[_ngcontent-%COMP%] { + margin-top: 8px; +} + +.spinner[_ngcontent-%COMP%] { + width: 20px; + height: 20px; + border: 2px solid var(--%NS%border-strong); + border-top-color: var(--%NS%accent); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +@media (prefers-reduced-motion: reduce) { + .spinner[_ngcontent-%COMP%] { + animation: none; + } +}`]})},dV=()=>[],fV=()=>[`/`],pV=(e,t)=>t.id,mV=(e,t)=>t.route.id,hV=(e,t)=>t[0],gV=(e,t)=>t.file+t.method,_V=(e,t)=>t.path,vV=(e,t)=>t.mode,yV=(e,t)=>t.file,bV=(e,t)=>t.rule;function xV(e,t){if(e&1){let e=W();z(0,`div`,0)(1,`h2`,3),J(2,`Could not read the project.`),B(),z(3,`p`,4),J(4,` Check that the dev server with Pangular Inspector is still running, then retry. `),B(),z(5,`button`,5),G(`click`,function(){return O(e),k(K().retry())}),J(6,`Retry`),B()()}}function SV(e,t){e&1&&(z(0,`div`,1),V(1,`span`,6),z(2,`span`),J(3,`Reading the project…`),B()())}function CV(e,t){e&1&&(z(0,`div`,2)(1,`h2`,3),J(2,`This app is not an Analog app.`),B(),z(3,`p`,4),J(4,` Add `),z(5,`code`),J(6,`pangular()`),B(),J(7,` from `),z(8,`code`),J(9,`@pangular-inspector/devtools/vite`),B(),J(10,` next to `),z(11,`code`),J(12,`analog()`),B(),J(13,` in vite.config.ts and run the Analog dev server. `),B()())}function wV(e,t){if(e&1&&(z(0,`div`,11)(1,`span`,9),J(2,`Open in the browser`),B(),z(3,`span`,15),J(4),B()()),e&2){let e=t;M(3),R(`title`,e.url),M(),Y(e.url)}}function TV(e,t){if(e&1){let e=W();z(0,`button`,16),G(`click`,function(){let t=O(e).$implicit;return k(K(2).view.set(t.id))}),J(1),z(2,`span`,17),J(3),B()()}if(e&2){let e=t.$implicit,n=K(2);R(`id`,`analog-tab-`+e.id),N(`aria-selected`,e.id===n.view())(`aria-controls`,`analog-panel-`+e.id)(`tabindex`,e.id===n.view()?0:-1),M(),X(` `,e.label,` `),M(),N(`data-tone`,e.tone),M(),Y(e.count)}}function EV(e,t){e&1&&(z(0,`div`,26),J(1),B()),e&2&&(M(),Y(t))}function DV(e,t){if(e&1&&(z(0,`li`)(1,`span`,31),J(2),B(),z(3,`span`,34),J(4),B()()),e&2){let e=t.$implicit,n=K(5);M(2),Y(n.short(e.file)??e.fullPath),M(),N(`data-kind`,e.kind),M(),Y(e.kind)}}function OV(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Z(``,e[0],` = `,e[1])}}function kV(e,t){if(e&1&&(z(0,`div`,33),I(1,OV,2,2,`span`,35,hV),B()),e&2){let e=K(2),t=K(3);M(),L(t.paramList(e.match.params))}}function AV(e,t){if(e&1&&(z(0,`strong`,31),J(1),B(),J(2,` renders `),z(3,`ol`,32),I(4,DV,5,3,`li`,null,pV),B(),P(6,kV,3,0,`div`,33)),e&2){let e=K(),t=K(3);M(),Y(e.url),M(3),L(e.match.chain),M(2),F(t.paramList(e.match.params).length?6:-1)}}function jV(e,t){if(e&1&&(z(0,`li`)(1,`span`,31),J(2),B(),z(3,`span`,4),J(4),B()()),e&2){let e=t.$implicit,n=K(6);M(2),Y(n.short(e.file)??e.path),M(2),Y(e.reason)}}function MV(e,t){if(e&1&&(z(0,`ul`,36),I(1,jV,5,2,`li`,null,Cg),B()),e&2){let e=K(2);M(),L(e.match.rejected.slice(0,5))}}function NV(e,t){if(e&1&&(z(0,`strong`,31),J(1),B(),J(2,` matches no file route. Angular throws NG04002 "Cannot match any routes". `),P(3,MV,3,0,`ul`,36)),e&2){let e=K();M(),Y(e.url),M(2),F(e.match.rejected.length?3:-1)}}function PV(e,t){if(e&1&&(z(0,`div`,27),P(1,AV,7,2)(2,NV,4,2),B()),e&2){let e=t;N(`data-tone`,e.match.matched?`good`:`bad`),M(),F(e.match.matched?1:2)}}function FV(e,t){e&1&&(z(0,`span`,38),J(1,`└`),B())}function IV(e,t){e&1&&(z(0,`span`,40),J(1,`open`),B())}function LV(e,t){if(e&1&&(z(0,`span`,41)(1,`span`,45),J(2),B(),J(3),B()),e&2){let e=K().$implicit,t=K(3);M(2),Y(t.dir(e.route.file)),M(),Y(t.base(e.route.file))}}function RV(e,t){e&1&&(z(0,`span`,4),J(1,`folder only`),B())}function zV(e,t){if(e&1&&(z(0,`span`,43),J(1),B()),e&2){let e=t.$implicit;M(),X(``,e,`()`)}}function BV(e,t){if(e&1&&(z(0,`span`,44),J(1),B()),e&2){let e=K().$implicit;M(),X(`"`,e.route.title,`"`)}}function VV(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=K().$implicit;M(),Y(e)}}function HV(e,t){if(e&1&&P(0,VV,2,1,`span`,35),e&2){let e=t.$implicit;F(e===`title`?-1:0)}}function UV(e,t){if(e&1&&(z(0,`tr`)(1,`td`)(2,`div`,37),P(3,FV,2,0,`span`,38),z(4,`span`,39),J(5),B(),z(6,`span`,34),J(7),B(),P(8,IV,2,0,`span`,40),B()(),z(9,`td`),P(10,LV,4,2,`span`,41)(11,RV,2,0,`span`,4),B(),z(12,`td`)(13,`div`,42),I(14,zV,2,1,`span`,43,wg),B()(),z(16,`td`),P(17,BV,2,1,`span`,44),I(18,HV,1,1,null,null,wg),B()()),e&2){let e=t.$implicit,n=K(3);q(`open`,n.isOpen(e.route))(`dim`,e.route.kind===`group`||e.route.kind===`implicit`),M(2),C_(`padding-left`,e.depth*16,`px`),M(),F(e.depth?3:-1),M(2),Y(e.route.fullPath),M(),N(`data-kind`,e.route.kind),M(),Y(n.kindText(e.route)),M(),F(n.isOpen(e.route)?8:-1),M(2),F(e.route.file?10:11),M(4),L(n.serverExports(e.route)),M(3),F(e.route.title?17:-1),M(),L(e.route.routeMeta??ov(13,dV))}}function WV(e,t){e&1&&J(0,` No route matches the filter. Try part of a path or a file name. `)}function GV(e,t){e&1&&J(0,` No file routes yet. Add a .page.ts file under src/app/pages. `)}function KV(e,t){if(e&1&&(z(0,`tr`)(1,`td`,46),P(2,WV,1,0)(3,GV,1,0),B()()),e&2){let e=K(3);M(2),F(e.filter().trim()?2:3)}}function qV(e,t){if(e&1){let e=W();z(0,`div`,18)(1,`form`,19),G(`submit`,function(t){O(e);let n=K(2);return t.preventDefault(),k(n.explain())}),z(2,`label`,20),J(3,`Test a URL`),B(),z(4,`input`,21),G(`input`,function(t){return O(e),k(K(2).testUrl.set(t.target.value))}),B(),z(5,`button`,22),J(6),B()(),z(7,`label`,23),J(8,`Filter routes`),B(),z(9,`input`,24),G(`input`,function(t){return O(e),k(K(2).filter.set(t.target.value))})(`keydown.escape`,function(){return O(e),k(K(2).filter.set(``))}),B()(),z(10,`div`,25),P(11,EV,2,1,`div`,26)(12,PV,3,2,`div`,27),B(),z(13,`div`,28)(14,`table`)(15,`thead`)(16,`tr`)(17,`th`,29),J(18,`Route`),B(),z(19,`th`,29),J(20,`File`),B(),z(21,`th`,29),J(22,`Data`),B(),z(23,`th`,29),J(24,`Route meta`),B()()(),z(25,`tbody`),I(26,UV,20,14,`tr`,30,mV,!1,KV,4,1,`tr`),B()()()}if(e&2){let e,t=K(2);M(4),R(`value`,t.testUrl()),M(),R(`disabled`,t.explaining()),M(),X(` `,t.explaining()?`Explaining…`:`Explain`,` `),M(3),R(`value`,t.filter()),M(2),F((e=t.explainError())?11:(e=t.explained())?12:-1,e),M(15),L(t.routeRows())}}function JV(e,t){if(e&1&&(z(0,`span`,31),J(1),B(),J(2)),e&2){let e=t.$implicit,n=t.$index,r=t.$count;M(),Y(e),M(),X(``,n===r-1?``:`, `,` `)}}function YV(e,t){if(e&1&&(z(0,`div`,47)(1,`strong`),J(2,`load() ran twice`),B(),J(3,` for `),I(4,JV,3,2,null,null,wg),J(6,` : once while server rendering, again in the browser. TransferState did not serve the server result. `),B()),e&2){let e=K(3);M(4),L(e.duplicates())}}function XV(e,t){if(e&1&&(z(0,`span`,31),J(1),B(),J(2)),e&2){let e=t.$implicit,n=t.$index,r=t.$count;M(),Y(e),M(),X(``,n===r-1?``:`, `,` `)}}function ZV(e,t){if(e&1&&(z(0,`div`,47)(1,`strong`),J(2,`Server function read ran twice`),B(),J(3,`: `),I(4,XV,3,2,null,null,wg),J(6,` ran while server rendering, then again in the browser. The browser did not use the TransferState seed. `),B()),e&2){let e=K(3);M(4),L(e.refetchedFns())}}function QV(e,t){if(e&1){let e=W();z(0,`label`)(1,`input`,79),G(`change`,function(){let t=O(e).$implicit;return k(K(3).kind.set(t))}),B(),J(2),z(3,`span`,4),J(4),B()()}if(e&2){let e=t.$implicit,n=K(3);q(`on`,n.kind()===e),M(),R(`checked`,n.kind()===e),N(`data-kind`,e),M(),X(` `,n.kindLabel(e),` `),M(2),Y(n.kindCount(e))}}function $V(e,t){if(e&1&&J(0),e&2){let e=K(4);Z(` Showing the newest `,e.shownCount(),` of `,e.matchingCalls().length,`. `)}}function eH(e,t){e&1&&J(0),e&2&&X(` The dev server keeps only the newest `,K(4).maxServerCalls,` calls and drops older ones. `)}function tH(e,t){if(e&1&&(z(0,`p`,65),P(1,$V,1,2),P(2,eH,1,1),B()),e&2){let e=K(3);M(),F(e.shownCount()1?6:-1),M(2),Y(e.summary),M(2),L(e.items),M(5),X(` `,e.fix),M(2),Y(e.rule)}}function pU(e,t){if(e&1&&(z(0,`p`,4),J(1),B(),z(2,`ul`,112),I(3,fU,18,8,`li`,null,bV),B()),e&2){let e=K(3);M(),Z(` `,e.findings().length,` issue(s) in `,e.lintCards().length,` group(s). Each card says what is wrong, where, and how to fix it. `),M(2),L(e.lintCards())}}function mU(e,t){e&1&&(z(0,`div`,111)(1,`strong`),J(2,`No Analog problems found.`),B(),J(3,` Routes, server files, prerender config and content all check out. `),B())}function hU(e,t){e&1&&P(0,pU,5,2)(1,mU,4,0,`div`,111),e&2&&F(+!K(2).findings().length)}function gU(e,t){if(e&1){let e=W();z(0,`section`,7)(1,`div`,8)(2,`span`,9),J(3,`Analog`),B(),z(4,`span`,10),J(5),B()(),z(6,`div`,8)(7,`span`,9),J(8,`Pages`),B(),z(9,`span`,10),J(10),B()(),z(11,`div`,8)(12,`span`,9),J(13,`API routes`),B(),z(14,`span`,10),J(15),B()(),z(16,`div`,8)(17,`span`,9),J(18,`Server calls`),B(),z(19,`span`,10),J(20),B()(),z(21,`div`,8)(22,`span`,9),J(23,`Issues`),B(),z(24,`span`,10),J(25),B()(),P(26,wV,5,2,`div`,11),B(),z(27,`div`,12),G(`keydown`,function(t){return O(e),k(K().onKey(t))}),I(28,TV,4,7,`button`,13,pV),B(),z(30,`div`,14),P(31,qV,29,6)(32,AH,65,21)(33,eU,18,3)(34,oU,2,1)(35,hU,2,1),B()}if(e&2){let e,t,n=K();M(5),Y(n.project().version||`unknown`),M(5),Y(n.pageCount()),M(5),Y(n.project().api.length),M(5),Y(n.allCalls().length),M(),N(`data-tone`,n.findings().length?`warn`:`good`),M(4),Y(n.findings().length),M(),F((e=n.page())?26:-1,e),M(2),L(n.views()),M(2),R(`id`,`analog-panel-`+n.view()),N(`aria-labelledby`,`analog-tab-`+n.view()),M(),F((t=n.view())===`routes`?31:t===`server`?32:t===`render`?33:t===`content`?34:t===`lint`?35:-1)}}var _U={"scan-error":{title:`A folder could not be read`,summary:`Its files are missing from routes, API routes and lint results.`},"duplicate-url":{title:`Two files serve the same URL`,summary:`Only one of them is reachable; the other never renders.`},"sibling-params":{title:`Two dynamic pages in one folder`,summary:`Both are [param] pages at the same level, so the first one always wins.`},"missing-default-export":{title:`Page has no default export`,summary:`Analog needs the component as the default export, so the page renders nothing.`},"redirect-with-component":{title:`Redirect page also exports a component`,summary:`The redirect runs first, so the component never shows.`},"redirect-path-match":{title:`Redirect matches too much`,summary:`An empty-path redirect without pathMatch "full" catches every URL below it.`},"layout-without-outlet":{title:`Layout has no router-outlet`,summary:`The layout has child pages, but without they never render.`},"server-without-load":{title:`.server.ts without load or action`,summary:`The server file exports no load, action or server function, so Analog calls nothing.`},"orphan-server-file":{title:`.server.ts without a page`,summary:`No page file sits next to it, so its load never runs.`},"api-method-suffix":{title:`Unknown method suffix on an API file`,summary:`The suffix is not an HTTP method, so it becomes part of the URL.`},"duplicate-api-route":{title:`Two handlers for one API route`,summary:`Two files answer the same method and path.`},"api-outside-prefix":{title:`Server route outside the API prefix`,summary:`During vite dev only routes under the prefix reach Nitro.`},"prerender-unknown-route":{title:`Prerender entry matches no page`,summary:`prerender.routes lists a path that no page file serves.`},"prerender-missing-root":{title:`Home page is not prerendered`,summary:`static is on, but prerender.routes leaves out /.`},"content-frontmatter":{title:`Broken frontmatter`,summary:`The markdown frontmatter cannot be read.`},"duplicate-slug":{title:`Two posts share a slug`,summary:`injectContent picks one of them at random.`},"content-shadows-page":{title:`Markdown file takes over a page`,summary:`Files under src/content are routes too, so these URLs render the markdown file instead of the [param] page.`},"load-fetched-twice":{title:`load() runs twice`,summary:`These pages fetched their data while rendering on the server and again in the browser.`},"fn-fetched-twice":{title:`Server function read runs twice`,summary:`These reads ran while rendering on the server and again in the browser right after hydration.`},"restart-needed":{title:`New pages need a restart`,summary:`These page files exist, but the running router does not know them yet.`},"hydration-error":{title:`Hydration error`,summary:`The browser DOM did not match the server HTML.`},"api-not-found":{title:`API call failed with 404 or 405`,summary:`A request hit a path or method that no server route handles.`}},vU=200,yU=new Set([`missing-default-export`,`redirect-with-component`,`redirect-path-match`,`layout-without-outlet`,`server-without-load`,`orphan-server-file`,`load-fetched-twice`,`restart-needed`,`prerender-missing-root`]),bU={ssr:`SSR`,ssg:`Prerendered`,client:`Client only`,cached:`Cached`,redirect:`Redirect`},xU={all:`All`,page:`Pages`,load:`load()`,action:`Actions`,fn:`Server fn`,api:`API`},SU={success:`succeeded`,redirect:`redirected`,invalid:`validation errors`,error:`failed`},CU={success:`good`,redirect:`info`,invalid:`warn`,error:`bad`};function wU(e,t=0,n=[]){for(let r of e)n.push({route:r,depth:t}),wU(r.children,t+1,n);return n}var TU=class e{rpc=$(null);canCall=Q(()=>bE(this.rpc(),`analog`));callsOff=KT(`analog`);kinds=[`all`,`page`,`load`,`action`,`fn`,`api`];methods=[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`];methodOptions=this.methods.map(e=>({value:e,label:e}));view=j(`routes`);project=j(null);loadFailed=j(!1);state=j({});findings=j([]);renderRows=j([]);plan=j(null);filter=j(``);testUrl=j(``);explained=j(null);explainError=j(``);explaining=j(!1);kind=j(`all`);method=j(`GET`);apiPath=j(``);apiBody=j(``);confirmSend=j(!1);response=j(null);sending=j(!1);needsConfirm=Q(()=>this.method()!==`GET`&&!this.confirmSend());canSend=Q(()=>this.canCall()&&!this.sending()&&!this.needsConfirm());sendHintId=Q(()=>this.canCall()?this.needsConfirm()?`analog-confirm-hint`:null:`analog-calls-off`);unsubscribe=null;refreshTimer;refreshRun=0;destroyRef=E(Cs);host=E(Ml);hostPageId=eE();page=Q(()=>{let e=this.state().pages??[];return(this.hostPageId?e.find(e=>e.pageId===this.hostPageId):e[0])??null});openFiles=Q(()=>new Set((this.page()?.chain??[]).map(e=>e.file)));allCalls=Q(()=>this.state().calls??[]);maxServerCalls=vU;callQuery=j(``);failedOnly=j(!1);callsMessage=j(``);callFiltered=Q(()=>!!this.callQuery().trim()||this.failedOnly());matchingCalls=Q(()=>{let e=this.kind(),t=this.callQuery().trim().toLowerCase(),n=this.failedOnly();return this.allCalls().filter(r=>(e===`all`||r.kind===e)&&(!n||this.isFailed(r))&&(!t||this.callText(r).includes(t)))});calls=Q(()=>this.matchingCalls().slice(-150).reverse());shownCount=Q(()=>this.calls().length);serverFull=Q(()=>this.allCalls().length>=vU);allRoutes=Q(()=>wU(this.project()?.routes??[]));pageCount=Q(()=>this.allRoutes().filter(e=>e.route.file&&e.route.kind!==`layout`).length);routeRows=Q(()=>{let e=this.filter().trim().toLowerCase();return e?this.allRoutes().filter(t=>t.route.fullPath.toLowerCase().includes(e)||!!t.route.file?.toLowerCase().includes(e)):this.allRoutes()});serverFns=Q(()=>this.project()?.serverFns??[]);fnById=Q(()=>new Map(this.serverFns().map(e=>[e.id,e])));refetchedFns=Q(()=>Array.from(new Set((this.state().refetches??[]).map(e=>this.fnById().get(e.id)?.name??e.id))));duplicates=Q(()=>Array.from(new Set((this.state().duplicates??[]).map(e=>e.route))));modeCounts=Q(()=>[`ssr`,`ssg`,`cached`,`client`,`redirect`].map(e=>({mode:e,label:bU[e],count:this.renderRows().filter(t=>t.mode===e).length})).filter(e=>e.count));lintCards=Q(()=>{let e={error:0,warning:1,info:2},t=new Map;for(let e of this.findings()){let n=t.get(e.rule);if(!n){let r=_U[e.rule];n={rule:e.rule,severity:e.severity,title:r?.title??e.rule,summary:r?.summary??e.message,fix:e.fix,items:[]},t.set(e.rule,n)}let r=yU.has(e.rule)||e.message===n.summary?void 0:e.message;n.items.some(t=>t.file===e.file&&t.path===e.path&&t.message===r)||n.items.push({file:e.file,path:e.path,message:r})}return Array.from(t.values()).sort((t,n)=>e[t.severity]-e[n.severity])});views=Q(()=>{let e=this.findings().length;return[{id:`routes`,label:`Routes`,count:this.pageCount(),tone:``},{id:`server`,label:`Server`,count:this.allCalls().length,tone:``},{id:`render`,label:`Render`,count:this.renderRows().length,tone:``},{id:`content`,label:`Content`,count:this.project()?.content.length??0,tone:``},{id:`lint`,label:`Lint`,count:e,tone:e?`warn`:``}]});constructor(){uc(()=>{let e=this.rpc();e&&Cv(()=>void this.load(e))}),uc(()=>{let e=this.view();this.state(),Cv(()=>this.scheduleRefresh(e))}),this.destroyRef.onDestroy(()=>{this.unsubscribe?.(),clearTimeout(this.refreshTimer)})}async load(e){let t=await aE(e,`analog-project`);if(!this.destroyRef.destroyed){this.project.set(t),this.loadFailed.set(t===null);try{let t=await e.scope(`pangular`).rpc.sharedState(`analog`);if(this.destroyRef.destroyed)return;let n=e=>this.state.set(e??{});n(t.value()),this.unsubscribe?.(),this.unsubscribe=t.on(`updated`,n)}catch{this.state.set({})}this.destroyRef.destroyed||await this.refresh(this.view())}}retry(){let e=this.rpc();e&&(this.loadFailed.set(!1),this.load(e))}scheduleRefresh(e){clearTimeout(this.refreshTimer),this.refreshTimer=setTimeout(()=>void this.refresh(e),300)}async refresh(e){let t=this.rpc();if(!t)return;let n=++this.refreshRun,[r,i]=await Promise.all([aE(t,`analog-lint`),aE(t,`analog-render`)]);if(n===this.refreshRun&&(this.findings.set(r??[]),this.renderRows.set(i?.rows??[]),this.plan.set(i?.plan??null),e===`routes`||e===`content`||this.project()===null)){let e=await aE(t,`analog-project`);e&&n===this.refreshRun&&(this.project.set(e),this.loadFailed.set(!1))}}isOpen(e){return!!e.file&&this.openFiles().has(e.file)}kindText(e){return e.catchAll?e.catchAll===`optional`?`optional catch-all`:`catch-all`:e.kind===`implicit`?`folder`:e.kind}serverExports(e){return(e.serverExports??[]).filter(e=>e===`load`||e===`action`)}short(e){return e?.replace(/^\/src\/app\//,``).replace(/^\//,``)}dir(e){let t=this.short(e)??e;return t.includes(`/`)?t.slice(0,t.lastIndexOf(`/`)+1):``}base(e){return e.slice(e.lastIndexOf(`/`)+1)}paramList(e){return Object.entries(e)}kindLabel(e){return xU[e]}kindCount(e){return e===`all`?this.allCalls().length:this.allCalls().filter(t=>t.kind===e).length}modeLabel(e){return bU[e]}mismatch(e){return!e.last?.render||e.mode===`redirect`?!1:e.mode===`client`?e.last.render!==`client`:e.last.render===`client`}fnOf(e){return e.kind===`fn`&&e.route?this.fnById().get(e.route):void 0}fnCalls(e){return this.allCalls().filter(t=>t.kind===`fn`&&t.route===e).length}outcomeLabel(e){return SU[e]}outcomeTone(e){return CU[e]}statusClass(e){return e>=500||e===0?`bad`:e>=400?`warn`:`good`}tone(e){return e===`error`?`bad`:e===`warning`?`warn`:`info`}shadowed(e){return this.findings().find(t=>t.rule===`content-shadows-page`&&t.file===e)?.message.match(/(\/\S+\.page\.ts)/)?.[1]}contentUrl(e){return this.allRoutes().find(t=>t.route.file===e)?.route.fullPath}pretty(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}time=RD;tryApi(e){this.method.set(e.method===`ANY`?`GET`:e.method),this.apiPath.set(e.path.replace(/:(\w+)/g,`1`).replace(`**`,`x`)),this.response.set(null),queueMicrotask(()=>document.getElementById(`api-path`)?.focus())}isFailed(e){return!e.status||e.status>=400||e.outcome===`error`}callText(e){let t=this.fnOf(e);return[e.url,e.route,t?.name,t?.file].filter(Boolean).join(` `).toLowerCase()}clearCallFilters(){this.callQuery.set(``),this.failedOnly.set(!1),this.kind.set(`all`),queueMicrotask(()=>this.host.nativeElement.querySelector(`#analog-call-search`)?.focus())}async clearCalls(){let e=this.rpc();try{if(!e)throw Error(`No devtools server`);await iE(e,`analog-clear-calls`),this.callsMessage.set(`Calls cleared.`),queueMicrotask(()=>this.host.nativeElement.querySelector(`input[name="analog-kind"]:checked`)?.focus())}catch{this.callsMessage.set(`Could not clear the calls.`)}}async explain(){let e=this.testUrl().trim();if(!e){this.explained.set(null),this.explainError.set(`Type a URL to explain, for example /products/42.`);return}this.explaining.set(!0),this.explainError.set(``);try{let t=await iE(this.rpc(),`analog-explain-url`,e);if(!t)throw Error(`The devtools server did not answer`);this.explained.set({url:e,match:t})}catch(t){let n=String(t?.message||`The devtools server did not answer`);this.explained.set(null),this.explainError.set(`Could not explain ${e}. ${n.replace(/\.?$/,`.`)}`)}finally{this.explaining.set(!1)}}async send(){let e=this.apiPath().trim();if(!e||this.sending()||this.needsConfirm())return;let t;if(this.method()!==`GET`&&this.apiBody().trim())try{t=JSON.parse(this.apiBody())}catch{this.response.set({error:`The body is not valid JSON.`});return}this.response.set(null),this.sending.set(!0);try{let n=await aE(this.rpc(),`analog-call-api`,{method:this.method(),path:e,body:t,confirm:this.confirmSend()});this.response.set(n??{error:`No answer from the devtools server.`})}finally{this.sending.set(!1)}}onKey(e){let t=this.views().map(e=>e.id),n=t.indexOf(this.view()),r=n;if(e.key===`ArrowRight`)r=(n+1)%t.length;else if(e.key===`ArrowLeft`)r=(n-1+t.length)%t.length;else if(e.key===`Home`)r=0;else if(e.key===`End`)r=t.length-1;else return;e.preventDefault(),this.view.set(t[r]);let i=e.currentTarget;queueMicrotask(()=>i.querySelector(`#analog-tab-${t[r]}`)?.focus())}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-analog-inspector`]],inputs:{rpc:[1,`rpc`]},decls:4,vars:1,consts:[[`role`,`alert`,1,`empty`],[`role`,`status`,1,`loading`],[1,`empty`],[1,`empty-title`],[1,`muted`],[`type`,`button`,1,`btn`,3,`click`],[`aria-hidden`,`true`,1,`spinner`],[`aria-label`,`Analog summary`,1,`summary`],[1,`stat`],[1,`label`],[1,`value`],[1,`stat`,`wide`],[`role`,`tablist`,`aria-label`,`Analog views`,1,`tabs`,3,`keydown`],[`type`,`button`,`role`,`tab`,3,`id`],[`role`,`tabpanel`,1,`panel`,3,`id`],[1,`value`,`mono`,3,`title`],[`type`,`button`,`role`,`tab`,3,`click`,`id`],[1,`count`],[1,`toolbar`],[1,`inline`,`explain`,3,`submit`],[`for`,`analog-url`],[`id`,`analog-url`,`type`,`text`,`placeholder`,`/products/42`,1,`field`,`grow`,`mono`,3,`input`,`value`],[`type`,`submit`,1,`btn`,`primary`,3,`disabled`],[`for`,`route-filter`,1,`sr-only`],[`id`,`route-filter`,`type`,`search`,`placeholder`,`Filter by path or file`,1,`field`,`filter`,3,`input`,`keydown.escape`,`value`],[`role`,`status`,1,`explain-result`],[`data-tone`,`bad`,1,`callout`],[1,`callout`],[`role`,`region`,`aria-label`,`File routes`,`tabindex`,`0`,1,`table-wrap`],[`scope`,`col`],[3,`open`,`dim`],[1,`mono`],[1,`chain`],[1,`chips`],[1,`pill`],[1,`chip`,`mono`],[1,`plain`],[1,`route`],[`aria-hidden`,`true`,1,`guide`],[1,`mono`,`path`],[1,`pill`,`live`],[1,`file`],[1,`meta`],[`data-kind`,`load`,1,`pill`],[1,`chip`],[1,`dir`],[`colspan`,`4`,1,`empty-row`],[`data-tone`,`warn`,`role`,`note`,1,`callout`],[`id`,`analog-calls-heading`],[1,`calls-bar`],[1,`segmented`],[1,`sr-only`],[3,`on`],[1,`calls-actions`],[`type`,`button`,1,`btn`,`ghost`,3,`click`,`disabled`],[`role`,`status`,1,`calls-message`],[`role`,`group`,`aria-label`,`Filter the server calls`,1,`call-filters`],[1,`search`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`search-icon`],[`cx`,`11`,`cy`,`11`,`r`,`7`],[`d`,`m20 20-3.5-3.5`],[`id`,`analog-call-search`,`type`,`search`,`placeholder`,`Find a URL, path or function…`,`aria-label`,`Find a URL, path or function`,`autocomplete`,`off`,`spellcheck`,`false`,1,`field`,3,`input`,`keydown.escape`,`value`],[1,`check`],[`type`,`checkbox`,3,`change`,`checked`],[`aria-live`,`polite`,1,`total`],[1,`note`],[`role`,`region`,`aria-label`,`Server calls`,`tabindex`,`0`,1,`table-wrap`],[`role`,`status`,1,`empty-box`,`no-match`],[1,`empty-box`],[`role`,`region`,`aria-label`,`API routes`,`tabindex`,`0`,1,`table-wrap`],[1,`card`,`playground`,3,`submit`],[1,`row`],[`ariaLabel`,`Method`,1,`method-select`,3,`valueChange`,`options`,`value`],[`for`,`api-path`,1,`sr-only`],[`id`,`api-path`,`type`,`text`,`placeholder`,`/api/v1/products`,1,`field`,`grow`,`mono`,3,`input`,`value`],[`id`,`analog-calls-off`,1,`muted`],[`id`,`analog-confirm-hint`,1,`muted`],[`role`,`status`,1,`muted`],[`role`,`status`,1,`response`],[`type`,`radio`,`name`,`analog-kind`,1,`sr-only`,3,`change`,`checked`],[`scope`,`col`,1,`num`],[1,`muted`,`nowrap`],[1,`request`],[1,`method`],[1,`mono`,`url`],[1,`status`],[1,`num`,`nowrap`],[1,`mono`,`muted`],[1,`code`],[1,`empty-lead`],[1,`empty-actions`],[`type`,`button`,1,`btn`,`ghost`,3,`click`],[1,`actions`],[`role`,`region`,`aria-label`,`Server functions`,`tabindex`,`0`,1,`table-wrap`],[1,`num`,`tnum`],[`for`,`api-body`],[`id`,`api-body`,`rows`,`3`,`placeholder`,`{"name": "Ada"}`,1,`field`,`mono`,3,`input`,`value`],[1,`check`,`confirm-send`],[`data-status`,`bad`,1,`status`],[`role`,`region`,`aria-label`,`Render modes`,`tabindex`,`0`,1,`table-wrap`],[1,`card`],[1,`muted`,`small`],[1,`muted`,`small`,`tnum`],[`data-tone`,`warn`,1,`pill`],[1,`facts`],[1,`tnum`],[`data-tone`,`warn`,1,`chip`,`mono`],[`data-tone`,`bad`,1,`chip`,`mono`],[`role`,`region`,`aria-label`,`Content files`,`tabindex`,`0`,1,`table-wrap`],[1,`muted`,`nowrap`,`tnum`],[`data-tone`,`bad`,1,`pill`],[`data-tone`,`good`,`role`,`status`,1,`callout`],[1,`findings`],[1,`finding-head`],[1,`finding-title`],[1,`where`],[1,`fix`],[1,`rule`,`mono`],[1,`detail`]],template:function(e,t){e&1&&P(0,xV,7,0,`div`,0)(1,SV,4,0,`div`,1)(2,CV,14,0,`div`,2)(3,gU,36,10),e&2&&F(t.project()===null&&t.loadFailed()?0:t.project()===null?1:t.project().analog?3:2)},dependencies:[AD],styles:[`@charset "UTF-8"; +[_nghost-%COMP%] { + --%NS%good: var(--%NS%ok); + --%NS%bad: var(--%NS%danger); + --%NS%info: #60a5fa; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] { + --%NS%info: #1d4ed8; + } +} +:root[data-theme=light] [_nghost-%COMP%] { + --%NS%info: #1d4ed8; +} + +[_nghost-%COMP%] { + --%NS%mono: var(--%NS%font-mono); + display: grid; + gap: 16px; + min-width: 0; + color: var(--%NS%text); + font-size: 13px; +} + +.loading[_ngcontent-%COMP%] { + display: flex; + gap: 12px; + align-items: center; + padding: 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + color: var(--%NS%text-2); +} + +.spinner[_ngcontent-%COMP%] { + width: 16px; + height: 16px; + flex: none; + border: 2px solid var(--%NS%border-strong); + border-top-color: var(--%NS%accent); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +@media (prefers-reduced-motion: reduce) { + .spinner[_ngcontent-%COMP%] { + animation: none; + border-color: var(--%NS%accent-line); + } +} +.tnum[_ngcontent-%COMP%] { + font-variant-numeric: tabular-nums; +} + +.meta[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 6px 8px; + align-items: center; + min-width: 0; +} + +.empty-row[_ngcontent-%COMP%] { + padding: 24px 16px; + color: var(--%NS%text-2); + text-align: center; +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td.empty-row[_ngcontent-%COMP%] { + background: transparent; +} + +.empty-box[_ngcontent-%COMP%] { + display: grid; + gap: 4px; + padding: 24px 16px; + border: 1px dashed var(--%NS%border-strong); + border-radius: var(--%NS%radius); + text-align: center; +} + +.empty-box[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 0; + line-height: 1.55; +} + +.empty-lead[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-weight: 600; +} + +.mono[_ngcontent-%COMP%] { + font-family: var(--%NS%mono); + font-size: 12.5px; +} + +.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +.small[_ngcontent-%COMP%] { + font-size: 12px; +} + +.nowrap[_ngcontent-%COMP%] { + white-space: nowrap; +} + +code[_ngcontent-%COMP%] { + padding: 1px 6px; + border: 1px solid var(--%NS%border); + border-radius: 6px; + background: var(--%NS%surface-2); + color: var(--%NS%text-strong); + font-family: var(--%NS%mono); + font-size: 12.5px; +} + +.summary[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); + gap: 12px; + animation: enter 0.35s var(--%NS%ease) both; +} + +.stat[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + align-content: start; + padding: 12px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + box-shadow: var(--%NS%shadow); + transition: border-color 180ms var(--%NS%ease), background-color 180ms var(--%NS%ease); +} + +.stat[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%border-strong); +} + +.stat.wide[_ngcontent-%COMP%] { + grid-column: span 2; + min-width: 0; +} + +@media (max-width: 340px) { + .stat.wide[_ngcontent-%COMP%] { + grid-column: 1/-1; + } +} +.stat[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; +} + +.stat[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 20px; + font-weight: 600; + letter-spacing: -0.01em; + font-variant-numeric: tabular-nums; + overflow-wrap: anywhere; +} + +.stat[_ngcontent-%COMP%] .value.mono[_ngcontent-%COMP%] { + overflow: hidden; + color: var(--%NS%text); + font-size: 13px; + font-weight: 500; + line-height: 24px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.stat[data-tone=warn][_ngcontent-%COMP%] .value[_ngcontent-%COMP%] { + color: var(--%NS%warn); +} + +.stat[data-tone=good][_ngcontent-%COMP%] .value[_ngcontent-%COMP%] { + color: var(--%NS%ok); +} + +.tabs[_ngcontent-%COMP%] { + display: inline-flex; + flex-wrap: wrap; + gap: 2px; + justify-self: start; + max-width: 100%; + padding: 3px; + border: 1px solid var(--%NS%border); + border-radius: 10px; + background: var(--%NS%bg); +} + +[role=tab][_ngcontent-%COMP%] { + display: inline-flex; + gap: 8px; + align-items: center; + min-height: 28px; + padding: 4px 12px; + border: none; + border-radius: 7px; + background: transparent; + color: var(--%NS%text-2); + font: inherit; + font-weight: 500; + cursor: pointer; + transition: background-color 180ms var(--%NS%ease), color 180ms var(--%NS%ease), box-shadow 180ms var(--%NS%ease); +} + +[role=tab][_ngcontent-%COMP%]:hover { + color: var(--%NS%text); +} + +[role=tab][aria-selected=true][_ngcontent-%COMP%] { + background: var(--%NS%surface-3); + color: var(--%NS%text-strong); + box-shadow: inset 0 0 0 1px var(--%NS%border-strong); +} + +.count[_ngcontent-%COMP%] { + min-width: 20px; + padding: 0 6px; + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 11px; + font-weight: 600; + line-height: 18px; + text-align: center; + font-variant-numeric: tabular-nums; +} + +[role=tab][aria-selected=true][_ngcontent-%COMP%] .count[_ngcontent-%COMP%] { + background: var(--%NS%border-strong); + color: var(--%NS%text); +} + +.count[data-tone=warn][_ngcontent-%COMP%], +[role=tab][aria-selected=true][_ngcontent-%COMP%] .count[data-tone=warn][_ngcontent-%COMP%] { + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +.panel[_ngcontent-%COMP%] { + display: grid; + gap: 16px; + min-width: 0; + animation: enter 0.35s var(--%NS%ease) both; +} + +.toolbar[_ngcontent-%COMP%] { + position: sticky; + top: 0; + z-index: 2; + display: flex; + flex-wrap: wrap; + gap: 12px; + align-items: center; + justify-content: space-between; + padding: 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: color-mix(in srgb, var(--%NS%surface) 85%, transparent); + backdrop-filter: blur(10px); +} + +.explain[_ngcontent-%COMP%] { + flex: 1 1 320px; + min-width: 0; +} + +.filter[_ngcontent-%COMP%] { + flex: 0 1 240px; + min-width: 0; +} + +@media (max-width: 560px) { + .filter[_ngcontent-%COMP%] { + flex: 1 1 100%; + } +} +.inline[_ngcontent-%COMP%], +.row[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; + align-items: center; +} + +.inline[_ngcontent-%COMP%] > label[_ngcontent-%COMP%], +.playground[_ngcontent-%COMP%] > label[_ngcontent-%COMP%]:not(.check) { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; +} + +.field[_ngcontent-%COMP%] { + box-sizing: border-box; + height: 34px; + padding: 0 12px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background-color: var(--%NS%bg); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + transition: border-color 180ms var(--%NS%ease), box-shadow 180ms var(--%NS%ease); +} + +.field.mono[_ngcontent-%COMP%] { + font-family: var(--%NS%mono); + font-size: 13px; +} + +.field[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +.field[_ngcontent-%COMP%]:focus, +.field[_ngcontent-%COMP%]:focus-visible { + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); + outline: none; +} + +.method-select[_ngcontent-%COMP%] { + width: 112px; + font-family: var(--%NS%mono); +} + +textarea.field[_ngcontent-%COMP%] { + height: auto; + padding: 8px 12px; +} + +.grow[_ngcontent-%COMP%] { + flex: 1 1 180px; + min-width: 0; +} + +.btn[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + height: 34px; + padding: 0 14px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font: inherit; + font-size: 13px; + font-weight: 500; + cursor: pointer; + transition: background-color 160ms var(--%NS%ease), border-color 160ms var(--%NS%ease), color 160ms var(--%NS%ease); +} + +.btn[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-3); + border-color: var(--%NS%border-strong); +} + +.btn[_ngcontent-%COMP%]:active { + transform: translateY(1px); +} + +.btn.primary[_ngcontent-%COMP%] { + border-color: var(--%NS%accent); + background: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +.btn.primary[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%accent-hover); + background: var(--%NS%accent-hover); +} + +.btn.ghost[_ngcontent-%COMP%] { + height: 28px; + padding: 0 12px; + font-size: 12px; +} + +.btn.ghost[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%accent-line); + color: var(--%NS%text-strong); +} + +td.actions[_ngcontent-%COMP%] { + width: 1%; + text-align: right; + vertical-align: middle; +} + +.btn[_ngcontent-%COMP%]:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +[role=tab][_ngcontent-%COMP%]:focus-visible, +.btn[_ngcontent-%COMP%]:focus-visible, +.table-wrap[_ngcontent-%COMP%]:focus-visible, +summary[_ngcontent-%COMP%]:focus-visible, +.segmented[_ngcontent-%COMP%] label[_ngcontent-%COMP%]:focus-within { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.callout[_ngcontent-%COMP%] { + padding: 12px 16px; + border: 1px solid color-mix(in srgb, var(--%NS%info) 30%, transparent); + border-radius: var(--%NS%radius); + background: color-mix(in srgb, var(--%NS%info) 8%, var(--%NS%surface)); + line-height: 1.6; + animation: enter 0.35s var(--%NS%ease) both; +} + +.callout[data-tone=good][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); +} + +.callout[data-tone=warn][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); +} + +.callout[data-tone=bad][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); +} + +.callout[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); +} + +.callout[_ngcontent-%COMP%] strong.mono[_ngcontent-%COMP%] { + overflow-wrap: anywhere; +} + +.chain[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; + margin: 8px 0 0; + padding: 0; + list-style: none; +} + +.chain[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + display: inline-flex; + gap: 6px; + align-items: center; + min-width: 0; + overflow-wrap: anywhere; +} + +.chain[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:not(:last-child)::after { + content: "›"; + margin-left: 2px; + color: var(--%NS%text-3); +} + +.callout[_ngcontent-%COMP%] .chips[_ngcontent-%COMP%] { + margin-top: 8px; +} + +.plain[_ngcontent-%COMP%] { + margin: 8px 0 0; + padding-left: 18px; +} + +.plain[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +.table-wrap[_ngcontent-%COMP%] { + overflow-x: auto; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + box-shadow: var(--%NS%shadow); + animation: enter 0.35s var(--%NS%ease) both; +} + +table[_ngcontent-%COMP%] { + width: 100%; + min-width: 560px; + border-collapse: collapse; +} + +th[_ngcontent-%COMP%], +td[_ngcontent-%COMP%] { + padding: 10px 12px; + border-bottom: 1px solid var(--%NS%border); + text-align: left; + vertical-align: top; +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] { + border-bottom: none; +} + +th[_ngcontent-%COMP%] { + position: sticky; + top: 0; + background: var(--%NS%surface); + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.06em; + white-space: nowrap; +} + +.num[_ngcontent-%COMP%] { + text-align: right; + font-variant-numeric: tabular-nums; +} + +td.nowrap[_ngcontent-%COMP%] { + font-variant-numeric: tabular-nums; +} + +tbody[_ngcontent-%COMP%] td[_ngcontent-%COMP%] { + transition: background-color 160ms var(--%NS%ease); +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] { + background: var(--%NS%surface-2); +} + +tr.open[_ngcontent-%COMP%] td[_ngcontent-%COMP%] { + background: var(--%NS%accent-soft); + color: var(--%NS%text-strong); +} + +tr.open[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] { + background: color-mix(in srgb, var(--%NS%accent) 16%, transparent); +} + +tr.open[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child { + box-shadow: inset 2px 0 0 var(--%NS%accent); +} + +tr.dim[_ngcontent-%COMP%] .path[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +.route[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; + align-items: center; +} + +.guide[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-family: var(--%NS%mono); +} + +.path[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + overflow-wrap: anywhere; +} + +.file[_ngcontent-%COMP%] { + font-family: var(--%NS%mono); + font-size: 12.5px; + color: var(--%NS%text); + overflow-wrap: anywhere; +} + +.dir[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +.pill[_ngcontent-%COMP%], +.chip[_ngcontent-%COMP%], +.status[_ngcontent-%COMP%], +.method[_ngcontent-%COMP%] { + display: inline-block; + padding: 1px 8px; + border-radius: 99px; + font-size: 11px; + font-weight: 500; + line-height: 18px; + white-space: nowrap; +} + +.pill[_ngcontent-%COMP%] { + border: 1px solid var(--%NS%border-strong); + background: var(--%NS%surface-2); + color: var(--%NS%text-2); +} + +.chip[_ngcontent-%COMP%] { + margin: 0 4px 4px 0; + padding: 3px 10px; + border: 1px solid var(--%NS%border); + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-size: 12px; + line-height: 16px; +} + +.chip.mono[_ngcontent-%COMP%] { + font-size: 12px; +} + +.chips[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +.chips[_ngcontent-%COMP%] .pill[_ngcontent-%COMP%] { + padding: 3px 10px; + font-size: 12px; +} + +.pill.live[_ngcontent-%COMP%] { + border-color: var(--%NS%accent-line); + background: color-mix(in srgb, var(--%NS%accent) 12%, var(--%NS%surface)); + color: var(--%NS%accent); +} + +.pill[data-kind=layout][_ngcontent-%COMP%] { + border-color: #94a3b8; + color: #e2e8f0; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .pill[data-kind=layout][_ngcontent-%COMP%] { + border-color: #64748b; + color: #475569; + } +} +:root[data-theme=light] [_nghost-%COMP%] .pill[data-kind=layout][_ngcontent-%COMP%] { + border-color: #64748b; + color: #475569; +} + +.pill[data-kind=markdown][_ngcontent-%COMP%] { + border-color: #0ea5e9; + color: #bae6fd; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .pill[data-kind=markdown][_ngcontent-%COMP%] { + border-color: #0284c7; + color: #0369a1; + } +} +:root[data-theme=light] [_nghost-%COMP%] .pill[data-kind=markdown][_ngcontent-%COMP%] { + border-color: #0284c7; + color: #0369a1; +} + +.pill[data-kind=load][_ngcontent-%COMP%] { + border-color: #2dd4bf; + color: #99f6e4; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .pill[data-kind=load][_ngcontent-%COMP%] { + border-color: #0d9488; + color: #0f766e; + } +} +:root[data-theme=light] [_nghost-%COMP%] .pill[data-kind=load][_ngcontent-%COMP%] { + border-color: #0d9488; + color: #0f766e; +} + +.pill[data-mode=ssr][_ngcontent-%COMP%] { + border-color: #3b82f6; + color: #bfdbfe; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .pill[data-mode=ssr][_ngcontent-%COMP%] { + border-color: #2563eb; + color: #1d4ed8; + } +} +:root[data-theme=light] [_nghost-%COMP%] .pill[data-mode=ssr][_ngcontent-%COMP%] { + border-color: #2563eb; + color: #1d4ed8; +} + +.pill[data-mode=ssg][_ngcontent-%COMP%] { + border-color: #22c55e; + color: #bbf7d0; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .pill[data-mode=ssg][_ngcontent-%COMP%] { + border-color: #16a34a; + color: #166534; + } +} +:root[data-theme=light] [_nghost-%COMP%] .pill[data-mode=ssg][_ngcontent-%COMP%] { + border-color: #16a34a; + color: #166534; +} + +.pill[data-mode=client][_ngcontent-%COMP%] { + border-color: #eab308; + color: #fef08a; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .pill[data-mode=client][_ngcontent-%COMP%] { + border-color: #92400e; + color: #713f12; + } +} +:root[data-theme=light] [_nghost-%COMP%] .pill[data-mode=client][_ngcontent-%COMP%] { + border-color: #92400e; + color: #713f12; +} + +.pill[data-mode=cached][_ngcontent-%COMP%] { + border-color: #a855f7; + color: #e9d5ff; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .pill[data-mode=cached][_ngcontent-%COMP%] { + border-color: #9333ea; + color: #7e22ce; + } +} +:root[data-theme=light] [_nghost-%COMP%] .pill[data-mode=cached][_ngcontent-%COMP%] { + border-color: #9333ea; + color: #7e22ce; +} + +.pill[data-mode=redirect][_ngcontent-%COMP%] { + border-color: #94a3b8; + color: #e2e8f0; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .pill[data-mode=redirect][_ngcontent-%COMP%] { + border-color: #64748b; + color: #475569; + } +} +:root[data-theme=light] [_nghost-%COMP%] .pill[data-mode=redirect][_ngcontent-%COMP%] { + border-color: #64748b; + color: #475569; +} + +.pill[data-call=page][_ngcontent-%COMP%] { + border-color: #3b82f6; + color: #bfdbfe; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .pill[data-call=page][_ngcontent-%COMP%] { + border-color: #2563eb; + color: #1d4ed8; + } +} +:root[data-theme=light] [_nghost-%COMP%] .pill[data-call=page][_ngcontent-%COMP%] { + border-color: #2563eb; + color: #1d4ed8; +} + +.pill[data-call=load][_ngcontent-%COMP%] { + border-color: #2dd4bf; + color: #99f6e4; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .pill[data-call=load][_ngcontent-%COMP%] { + border-color: #0d9488; + color: #0f766e; + } +} +:root[data-theme=light] [_nghost-%COMP%] .pill[data-call=load][_ngcontent-%COMP%] { + border-color: #0d9488; + color: #0f766e; +} + +.pill[data-call=fn][_ngcontent-%COMP%] { + border-color: #14b8a6; + color: #99f6e4; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .pill[data-call=fn][_ngcontent-%COMP%] { + border-color: #0d9488; + color: #0f766e; + } +} +:root[data-theme=light] [_nghost-%COMP%] .pill[data-call=fn][_ngcontent-%COMP%] { + border-color: #0d9488; + color: #0f766e; +} + +.pill[data-call=api][_ngcontent-%COMP%] { + border-color: #f97316; + color: #fed7aa; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .pill[data-call=api][_ngcontent-%COMP%] { + border-color: #c2410c; + color: #9a3412; + } +} +:root[data-theme=light] [_nghost-%COMP%] .pill[data-call=api][_ngcontent-%COMP%] { + border-color: #c2410c; + color: #9a3412; +} + +.pill[data-call=action][_ngcontent-%COMP%] { + border-color: #ec4899; + color: #fbcfe8; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .pill[data-call=action][_ngcontent-%COMP%] { + border-color: #db2777; + color: #9d174d; + } +} +:root[data-theme=light] [_nghost-%COMP%] .pill[data-call=action][_ngcontent-%COMP%] { + border-color: #db2777; + color: #9d174d; +} + +[data-tone=good].pill[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +[data-tone=warn].pill[_ngcontent-%COMP%], +[data-tone=warn].chip[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +[data-tone=bad].pill[_ngcontent-%COMP%], +[data-tone=bad].chip[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger); +} + +[data-tone=info].pill[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%info) 30%, transparent); + background: color-mix(in srgb, var(--%NS%info) 12%, transparent); + color: #bfdbfe; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] [data-tone=info].pill[_ngcontent-%COMP%] { + color: var(--%NS%info); + } +} +:root[data-theme=light] [_nghost-%COMP%] [data-tone=info].pill[_ngcontent-%COMP%] { + color: var(--%NS%info); +} + +.status[_ngcontent-%COMP%] { + border: 1px solid var(--%NS%border-strong); + font-family: var(--%NS%mono); + font-weight: 600; + font-variant-numeric: tabular-nums; +} + +.status[data-status=good][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.status[data-status=warn][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +.status[data-status=bad][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger); +} + +.method[_ngcontent-%COMP%] { + min-width: 52px; + border: 1px solid var(--%NS%border-strong); + border-radius: 6px; + background: var(--%NS%surface-2); + color: var(--%NS%text); + font-family: var(--%NS%mono); + font-weight: 600; + text-align: center; +} + +.method[data-method=GET][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, #7dd3fc 30%, transparent); + background: color-mix(in srgb, #7dd3fc 12%, transparent); + color: #7dd3fc; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .method[data-method=GET][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, #0369a1 30%, transparent); + background: color-mix(in srgb, #0369a1 8%, transparent); + color: #0369a1; + } +} +:root[data-theme=light] [_nghost-%COMP%] .method[data-method=GET][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, #0369a1 30%, transparent); + background: color-mix(in srgb, #0369a1 8%, transparent); + color: #0369a1; +} + +.method[data-method=POST][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: #86efac; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .method[data-method=POST][_ngcontent-%COMP%] { + color: var(--%NS%ok); + } +} +:root[data-theme=light] [_nghost-%COMP%] .method[data-method=POST][_ngcontent-%COMP%] { + color: var(--%NS%ok); +} + +.method[data-method=PUT][_ngcontent-%COMP%], +.method[data-method=PATCH][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: #fde68a; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .method[data-method=PUT][_ngcontent-%COMP%], + :root:not([data-theme=dark]) [_nghost-%COMP%] .method[data-method=PATCH][_ngcontent-%COMP%] { + color: var(--%NS%warn); + } +} +:root[data-theme=light] [_nghost-%COMP%] .method[data-method=PUT][_ngcontent-%COMP%], +:root[data-theme=light] [_nghost-%COMP%] .method[data-method=PATCH][_ngcontent-%COMP%] { + color: var(--%NS%warn); +} + +.method[data-method=DELETE][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: #fecaca; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .method[data-method=DELETE][_ngcontent-%COMP%] { + color: var(--%NS%danger); + } +} +:root[data-theme=light] [_nghost-%COMP%] .method[data-method=DELETE][_ngcontent-%COMP%] { + color: var(--%NS%danger); +} + +.request[_ngcontent-%COMP%] { + min-width: 260px; +} + +.request[_ngcontent-%COMP%] .url[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + overflow-wrap: anywhere; +} + +details[_ngcontent-%COMP%] { + margin-top: 8px; +} + +summary[_ngcontent-%COMP%] { + width: fit-content; + border-radius: 6px; + color: var(--%NS%text-2); + font-size: 12px; + cursor: pointer; + transition: color 160ms var(--%NS%ease); +} + +summary[_ngcontent-%COMP%]:hover { + color: var(--%NS%text); +} + +.code[_ngcontent-%COMP%] { + margin: 8px 0 0; + padding: 10px 12px; + max-height: 220px; + overflow: auto; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text); + font-family: var(--%NS%mono); + font-size: 12.5px; + line-height: 1.55; + white-space: pre-wrap; + overflow-wrap: anywhere; +} + +.calls-bar[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + gap: 8px; +} + +.calls-actions[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: center; +} + +.calls-message[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + font-size: 12.5px; +} + +.call-filters[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: center; +} + +.search[_ngcontent-%COMP%] { + position: relative; + flex: 1 1 220px; + min-width: 0; +} + +.search[_ngcontent-%COMP%] .field[_ngcontent-%COMP%] { + width: 100%; + padding-left: 34px; +} + +.search-icon[_ngcontent-%COMP%] { + position: absolute; + top: 50%; + left: 12px; + width: 14px; + height: 14px; + transform: translateY(-50%); + fill: none; + stroke: var(--%NS%text-3); + stroke-width: 2.2; + stroke-linecap: round; + pointer-events: none; +} + +.search[_ngcontent-%COMP%]:focus-within .search-icon[_ngcontent-%COMP%] { + stroke: var(--%NS%accent); +} + +.call-filters[_ngcontent-%COMP%] .check[_ngcontent-%COMP%] { + flex: none; + font-size: 13px; + font-weight: 500; +} + +.total[_ngcontent-%COMP%] { + flex: none; + color: var(--%NS%text-2); + font-size: 12px; + white-space: nowrap; + font-variant-numeric: tabular-nums; +} + +.note[_ngcontent-%COMP%] { + margin: 0; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface); + color: var(--%NS%text-2); + line-height: 1.5; +} + +.empty-actions[_ngcontent-%COMP%] { + display: flex; + justify-content: center; + margin-top: 8px; +} + +.segmented[_ngcontent-%COMP%] { + display: inline-flex; + flex-wrap: wrap; + gap: 2px; + justify-self: start; + margin: 0; + padding: 3px; + border: 1px solid var(--%NS%border); + border-radius: 10px; + background: var(--%NS%bg); +} + +.segmented[_ngcontent-%COMP%] label[_ngcontent-%COMP%] { + display: inline-flex; + gap: 6px; + align-items: center; + padding: 5px 12px; + border-radius: 7px; + background: transparent; + color: var(--%NS%text-2); + font-weight: 500; + cursor: pointer; + transition: background-color 180ms var(--%NS%ease), color 180ms var(--%NS%ease), box-shadow 180ms var(--%NS%ease); +} + +.segmented[_ngcontent-%COMP%] label[_ngcontent-%COMP%]:hover { + color: var(--%NS%text); +} + +.segmented[_ngcontent-%COMP%] label[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 12px; + font-variant-numeric: tabular-nums; +} + +.segmented[_ngcontent-%COMP%] label.on[_ngcontent-%COMP%] { + background: var(--%NS%surface-3); + color: var(--%NS%text-strong); + box-shadow: inset 0 0 0 1px var(--%NS%border-strong); +} + +.segmented[_ngcontent-%COMP%] label.on[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +h2[_ngcontent-%COMP%] { + display: flex; + gap: 8px; + align-items: center; + margin: 8px 0 0; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; +} + +.card[_ngcontent-%COMP%] { + display: grid; + gap: 12px; + padding: 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + box-shadow: var(--%NS%shadow); + animation: enter 0.35s var(--%NS%ease) both; +} + +.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] { + margin: 0; +} + +.check[_ngcontent-%COMP%] { + display: flex; + gap: 8px; + align-items: center; + color: var(--%NS%text-2); + cursor: pointer; +} + +.check[_ngcontent-%COMP%] input[_ngcontent-%COMP%] { + width: 15px; + height: 15px; + margin: 0; + accent-color: var(--%NS%accent); +} + +.check[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.response[_ngcontent-%COMP%] { + display: grid; + gap: 8px; + padding: 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); +} + +.response[_ngcontent-%COMP%] .code[_ngcontent-%COMP%] { + margin: 0; +} + +.facts[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: max-content 1fr; + gap: 10px 16px; + margin: 0; +} + +.facts[_ngcontent-%COMP%] dt[_ngcontent-%COMP%] { + padding-top: 3px; + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; +} + +.facts[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] { + margin: 0; +} + +.findings[_ngcontent-%COMP%] { + display: grid; + gap: 12px; + margin: 0; + padding: 0; + list-style: none; + animation: enter 0.35s var(--%NS%ease) both; +} + +.findings[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] { + position: relative; + padding: 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + box-shadow: inset 3px 0 0 var(--%NS%info), var(--%NS%shadow); + transition: border-color 180ms var(--%NS%ease); +} + +.findings[_ngcontent-%COMP%] > li[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%border-strong); +} + +.findings[_ngcontent-%COMP%] > li[data-tone=bad][_ngcontent-%COMP%] { + box-shadow: inset 3px 0 0 var(--%NS%danger), var(--%NS%shadow); +} + +.findings[_ngcontent-%COMP%] > li[data-tone=warn][_ngcontent-%COMP%] { + box-shadow: inset 3px 0 0 var(--%NS%warn), var(--%NS%shadow); +} + +.findings[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 8px 0 0; + line-height: 1.55; +} + +.findings[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] > p[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +.finding-head[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 8px; + align-items: center; +} + +.finding-title[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); + font-size: 14px; + font-weight: 600; +} + +.where[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + margin: 12px 0 0; + padding: 10px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + list-style: none; +} + +.where[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px 12px; +} + +.where[_ngcontent-%COMP%] .detail[_ngcontent-%COMP%] { + flex-basis: 100%; + margin: 0; + color: var(--%NS%text-2); + overflow-wrap: anywhere; +} + +.fix[_ngcontent-%COMP%] { + margin-top: 12px; + color: var(--%NS%text); + line-height: 1.55; +} + +.fix[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] { + display: block; + margin-bottom: 4px; + color: var(--%NS%ok); + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; +} + +.rule[_ngcontent-%COMP%] { + display: block; + margin-top: 12px; + color: var(--%NS%text-3); + font-size: 12px; +} + +.empty[_ngcontent-%COMP%] { + display: grid; + gap: 8px; + justify-items: center; + padding: 40px 24px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + text-align: center; + animation: enter 0.35s var(--%NS%ease) both; +} + +.empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { + margin: 0; + max-width: 520px; + line-height: 1.6; +} + +.empty-title[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-strong); + font-size: 15px; + font-weight: 600; +}`]})},EU=(e,t)=>t.id,DU=(e,t)=>t.id+t.kind,OU=(e,t)=>t.side+t.id,kU=(e,t)=>t.key;function AU(e,t){e&1&&(z(0,`div`,0),V(1,`span`,64),z(2,`span`),J(3,`Loading…`),B()())}function jU(e,t){e&1&&(z(0,`div`,1)(1,`strong`),J(2,`Could not reach the devtools server.`),B(),z(3,`span`),J(4,`Check that the app's dev server is running with the devtools plugin, then reopen this panel.`),B()())}function MU(e,t){e&1&&(z(0,`span`,77),J(1,`this page`),B())}function NU(e,t){e&1&&(z(0,`span`,78),J(1,`overridden`),B())}function PU(e,t){e&1&&(z(0,`span`,79),J(1,`aborted`),B())}function FU(e,t){if(e&1){let e=W();z(0,`tr`,69),G(`click`,function(){let t=O(e).$implicit;return k(K(2).selectedRequestId.set(t.id))}),z(1,`td`,70)(2,`button`,71)(3,`span`,72),J(4),B(),J(5),B()(),z(6,`td`,73),V(7,`span`,74),J(8),B(),z(9,`td`),J(10),B(),z(11,`td`,75),J(12),B(),z(13,`td`,75),J(14),B(),z(15,`td`)(16,`div`,76),P(17,MU,2,0,`span`,77),P(18,NU,2,0,`span`,78),P(19,PU,2,0,`span`,79),B()()()}if(e&2){let e=t.$implicit,n=K(2);q(`selected`,n.selectedRequest()?.id===e.id),M(2),R(`title`,e.url),N(`aria-pressed`,n.selectedRequest()?.id===e.id),M(2),Y(e.method),M(),X(` `,e.url,` `),M(),q(`ok`,n.statusTone(e.status)===`ok`)(`redirect`,n.statusTone(e.status)===`redirect`)(`bad`,n.statusTone(e.status)===`bad`),M(2),X(``,e.status,` `),M(2),Y(n.renderModeLabel(e.renderMode)),M(2),X(``,e.renderMs,` ms`),M(2),Z(``,e.fetches,` (`,e.fetchMs,` ms)`),M(3),F(e.id===n.selected()?.ssrRequestId?17:-1),M(),F(e.overrides?.length?18:-1),M(),F(e.aborted?19:-1)}}function IU(e,t){if(e&1&&(z(0,`span`,84),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.note)}}function LU(e,t){if(e&1&&(z(0,`p`,83)(1,`span`,78),J(2),B(),z(3,`span`),J(4),B(),P(5,IU,2,1,`span`,84),B()),e&2){let e=t.$implicit,n=K(4);M(2),Y(n.overrideLabel(e.kind)),M(2),Y(e.applied?`applied`:`not applied`),M(),F(e.note?5:-1)}}function RU(e,t){if(e&1&&(z(0,`h3`),J(1,`Overrides from the panel`),B(),z(2,`p`,46),J(3,` This response was changed on purpose, so it is not what the app sends on its own. `),B(),I(4,LU,6,3,`p`,83,DU)),e&2){let e=K();M(4),L(e.overrides)}}function zU(e,t){if(e&1&&(J(0,` to `),z(1,`code`),J(2),B()),e&2){let e=K().$implicit;M(2),Y(e.finalUrl)}}function BU(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2,`Guards`),B(),z(3,`dd`),J(4),B()()),e&2){let e=K().$implicit,t=K(4);M(3),q(`bad`,t.guardVerdict(e)===`rejected`),M(),Z(` `,t.msLabel(e.guards.ms),``,t.guardVerdict(e)?`, `+t.guardVerdict(e):``,` `)}}function VU(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2,`Resolvers`),B(),z(3,`dd`),J(4),B()()),e&2){let e=K().$implicit,t=K(4);M(4),Y(t.msLabel(e.resolvers.ms))}}function HU(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2,`Navigation total`),B(),z(3,`dd`),J(4),B()()),e&2){let e=K().$implicit;M(4),X(``,e.durationMs,` ms`)}}function UU(e,t){if(e&1&&(z(0,`p`,46),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.reason)}}function WU(e,t){if(e&1&&(z(0,`dl`,85)(1,`div`)(2,`dt`),J(3,`Navigation`),B(),z(4,`dd`)(5,`code`),J(6),B(),P(7,zU,3,1),J(8),B()(),P(9,BU,5,4,`div`),P(10,VU,5,1,`div`),P(11,HU,5,1,`div`),B(),P(12,UU,2,1,`p`,46)),e&2){let e=t.$implicit;M(6),Y(e.url),M(),F(e.finalUrl?7:-1),M(),X(` (`,e.outcome,`) `),M(),F(e.guards?9:-1),M(),F(e.resolvers?10:-1),M(),F(e.durationMs===void 0?-1:11),M(),F(e.reason?12:-1)}}function GU(e,t){if(e&1&&(z(0,`h3`),J(1,`Router during the render`),B(),I(2,WU,13,7,null,null,Cg)),e&2){let e=K();M(2),L(e.navigations)}}function KU(e,t){e&1&&(z(0,`span`,77),J(1,`cached`),B())}function qU(e,t){if(e&1&&(z(0,`span`,87),J(1,`not cached`),B()),e&2){let e=K().$implicit;R(`title`,K(3).skipText(e.cacheSkip))}}function JU(e,t){if(e&1&&(z(0,`p`,88),J(1),B()),e&2){let e=K().$implicit,t=K(3);M(),X(`Not cached: `,t.skipText(e.cacheSkip),`.`)}}function YU(e,t){if(e&1&&(z(0,`p`,83)(1,`span`,72),J(2),B(),z(3,`span`,86),J(4),B(),z(5,`span`,73),J(6),B(),z(7,`span`,84),J(8),B(),P(9,KU,2,0,`span`,77)(10,qU,2,1,`span`,87),B(),P(11,JU,2,1,`p`,88)),e&2){let e=t.$implicit,n=K(3);M(2),Y(e.method),M(),R(`title`,e.url),M(),Y(e.url),M(),q(`ok`,n.callTone(e)===`ok`)(`bad`,n.callTone(e)===`bad`),M(),Y(n.statusLabel(e)),M(2),X(``,e.durationMs,` ms`),M(),F(e.cacheStored?9:e.cacheSkip?10:-1),M(2),F(!e.cacheStored&&e.cacheSkip?11:-1)}}function XU(e,t){e&1&&(z(0,`p`,46),J(1,`The render made no HttpClient calls.`),B())}function ZU(e,t){e&1&&(z(0,`p`,88),J(1),B()),e&2&&(M(),X(`Why: `,t,`.`))}function QU(e,t){if(e&1&&(z(0,`p`,83)(1,`span`,72),J(2),B(),z(3,`span`,86),J(4),B(),z(5,`span`,79),J(6,`cache miss`),B()(),P(7,ZU,2,1,`p`,88)),e&2){let e,n=t.$implicit,r=K(4);M(2),Y(n.method),M(),R(`title`,n.url),M(),Y(n.url),M(3),F((e=r.refetchReason(n))?7:-1,e)}}function $U(e,t){if(e&1&&(z(0,`h3`),J(1),B(),z(2,`p`,46),J(3,` These calls ran on the server and again after hydration instead of reading the transfer cache. `),B(),I(4,QU,8,4,null,null,EU)),e&2){let e=K(3);M(),X(`Fetched again in the browser (`,e.refetched().length,`)`),M(3),L(e.refetched())}}function eW(e,t){e&1&&(z(0,`p`,82),J(1,`No server call ran again in the browser.`),B())}function tW(e,t){if(e&1&&(z(0,`div`,68)(1,`h3`,80),J(2),z(3,`code`),J(4),B()(),z(5,`dl`,81)(6,`div`)(7,`dt`),J(8,`Request id`),B(),z(9,`dd`)(10,`code`),J(11),B()()(),z(12,`div`)(13,`dt`),J(14,`Render`),B(),z(15,`dd`),J(16),B()(),z(17,`div`)(18,`dt`),J(19,`Total`),B(),z(20,`dd`),J(21),B()(),z(22,`div`)(23,`dt`),J(24,`Sent`),B(),z(25,`dd`),J(26),B()(),z(27,`div`)(28,`dt`),J(29,`Browser page`),B(),z(30,`dd`),J(31),B()()(),P(32,RU,6,0),P(33,GU,4,0),z(34,`h3`),J(35),B(),I(36,YU,12,11,null,null,EU,!1,XU,2,0,`p`,46),P(39,$U,6,1)(40,eW,2,0,`p`,82),B()),e&2){let e=t,n=K(2);M(2),X(` `,e.method,` `),M(2),Y(e.url),M(7),Y(e.id),M(5),X(``,e.renderMs,` ms`),M(5),X(``,e.durationMs,` ms`),M(5),X(``,e.bytes,` B`),M(5),Y(n.requestPage()?.title||n.requestPage()?.url||`not connected`),M(),F(e.overrides?.length?32:-1),M(),F(e.navigations?.length?33:-1),M(2),X(`Server calls (`,n.requestCalls().length,`)`),M(),L(n.requestCalls()),M(3),F(n.refetched().length?39:n.requestPage()&&n.requestCalls().length?40:-1)}}function nW(e,t){if(e&1&&(z(0,`div`,26)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,65),J(5,`Request`),B(),z(6,`th`,65),J(7,`Status`),B(),z(8,`th`,65),J(9,`Render mode`),B(),z(10,`th`,66),J(11,`Render`),B(),z(12,`th`,66),J(13,`Server calls`),B(),z(14,`th`,65),J(15,`Notes`),B()()(),z(16,`tbody`),I(17,FU,20,20,`tr`,67,EU),B()()(),P(19,tW,41,12,`div`,68)),e&2){let e,t=K();M(17),L(t.requests()),M(2),F((e=t.selectedRequest())?19:-1,e)}}function rW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No SSR requests traced.`),B(),z(3,`p`,46),J(4,` Add `),z(5,`code`),J(6,`app.use(devtools.ssrMiddleware)`),B(),J(7,` before the Angular handler in `),z(8,`code`),J(9,`server.ts`),B(),J(10,`, then load a server rendered page. `),B()())}function iW(e,t){e&1&&(z(0,`span`,89),J(1,`transfer cache`),B())}function aW(e,t){if(e&1&&(z(0,`span`,89),J(1),B()),e&2){let e=K().$implicit;M(),X(`delayed `,e.delayMs,` ms`)}}function oW(e,t){e&1&&(z(0,`span`,78),J(1,`mocked`),B())}function sW(e,t){e&1&&(z(0,`span`,79),J(1,`faulted`),B())}function cW(e,t){if(e&1&&(z(0,`span`,92),J(1,`rule `),z(2,`code`),J(3),B()()),e&2){let e=t;R(`title`,`Matched rule: `+e),M(3),Y(e)}}function lW(e,t){if(e&1){let e=W();z(0,`tr`,69),G(`click`,function(){let t=O(e).$implicit;return k(K(2).openCall(t.id))}),z(1,`td`)(2,`span`,89),J(3),B()(),z(4,`td`,72),J(5),B(),z(6,`td`,70)(7,`button`,90),J(8),B()(),z(9,`td`,91),J(10),B(),z(11,`td`,73),V(12,`span`,74),J(13),B(),z(14,`td`,75),J(15),B(),z(16,`td`)(17,`div`,76),P(18,iW,2,0,`span`,89),P(19,aW,2,1,`span`,89),P(20,oW,2,0,`span`,78),P(21,sW,2,0,`span`,79),P(22,cW,4,2,`span`,92),B()()()}if(e&2){let e,n=t.$implicit,r=K(2);q(`selected`,r.selectedCall()?.id===n.id),M(2),q(`server`,n.side===`server`),M(),Y(n.side===`server`?`SSR`:`Client`),M(2),Y(n.method),M(2),R(`title`,n.url),N(`data-call-id`,n.id)(`aria-pressed`,r.selectedCall()?.id===n.id)(`aria-controls`,r.selectedCall()?`call-preview`:null),M(),X(` `,n.url,` `),M(),R(`title`,n.pageUrl??``),M(),X(` `,n.pageUrl??``,` `),M(),q(`ok`,r.callTone(n)===`ok`)(`redirect`,r.callTone(n)===`redirect`)(`bad`,r.callTone(n)===`bad`),M(2),X(``,r.statusLabel(n),` `),M(2),X(``,n.durationMs,` ms`),M(3),F(n.cacheHit?18:-1),M(),F(n.delayMs?19:-1),M(),F(n.mocked?20:-1),M(),F(n.faulted?21:-1),M(),F((e=r.rulePatternOf(n))?22:-1,e)}}function uW(e,t){if(e&1&&(z(0,`div`,26)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,65),J(5,`Side`),B(),z(6,`th`,65),J(7,`Method`),B(),z(8,`th`,65),J(9,`URL`),B(),z(10,`th`,65),J(11,`Page`),B(),z(12,`th`,65),J(13,`Status`),B(),z(14,`th`,66),J(15,`Time`),B(),z(16,`th`,65),J(17,`Notes`),B()()(),z(18,`tbody`),I(19,lW,23,26,`tr`,67,OU),B()()()),e&2){let e=K();M(19),L(e.visibleCalls())}}function dW(e,t){e&1&&J(0),e&2&&X(` Nothing matches “`,K(2).callQuery().trim(),`” with these filters. `)}function fW(e,t){e&1&&J(0),e&2&&X(` None of the `,K(2).timeline().length,` requests fit these filters. `)}function pW(e,t){if(e&1){let e=W();z(0,`div`,27)(1,`p`),J(2,`No requests match.`),B(),z(3,`p`,46),P(4,dW,1,1)(5,fW,1,1),B(),z(6,`div`,93)(7,`button`,94),G(`click`,function(){return O(e),k(K().clearCallFilters())}),J(8,`Clear filters`),B()()()}if(e&2){let e=K();M(4),F(e.callQuery().trim()?4:5)}}function mW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No requests yet.`),B(),z(3,`p`,46),J(4,` Add `),z(5,`code`),J(6,`withPangular()`),B(),J(7,` to `),z(8,`code`),J(9,`provideHttpClient`),B(),J(10,`, then load a page of the app. `),B()())}function hW(e,t){if(e&1){let e=W();z(0,`button`,101),G(`click`,function(){O(e);let t=K();return k(K().copyPreview(t))}),J(1,` Copy `),B()}if(e&2){let e=K();N(`aria-label`,`Copy the response of `+e.method+` `+e.url)}}function gW(e,t){e&1&&(z(0,`p`,103),J(1,` Matched rule `),z(2,`code`),J(3),B()()),e&2&&(M(3),Y(t))}function _W(e,t){if(e&1){let e=W();z(0,`div`,95),G(`keydown.escape`,function(){return O(e),k(K().closePreview())}),z(1,`div`,96)(2,`h3`,97),J(3,`Response preview`),B(),z(4,`div`,98),P(5,hW,2,1,`button`,99),z(6,`button`,100),G(`click`,function(){let t=O(e);return k(K().mockCall(t))}),J(7,` Mock this request `),B(),z(8,`button`,101),G(`click`,function(){return O(e),k(K().closePreview())}),J(9,`Close`),B()()(),z(10,`p`,102)(11,`span`,72),J(12),B(),z(13,`span`,73),J(14),B(),z(15,`span`,86),J(16),B()(),P(17,gW,4,1,`p`,103),z(18,`pre`,104),J(19),B()()}if(e&2){let e,n=t,r=K();M(5),F(!n.error&&n.preview?5:-1),M(),R(`disabled`,!r.canWrite()),N(`aria-describedby`,r.canWrite()?null:`http-writes-off`),M(6),Y(n.method),M(),q(`ok`,r.callTone(n)===`ok`)(`redirect`,r.callTone(n)===`redirect`)(`bad`,r.callTone(n)===`bad`),M(),Y(r.statusLabel(n)),M(),R(`title`,n.url),M(),Y(n.url),M(),F((e=r.rulePatternOf(n))?17:-1,e),M(),q(`error`,!!n.error&&!n.cancelled),M(),Y(n.error??r.previewText(n)??`(no body)`)}}function vW(e,t){if(e&1&&(z(0,`p`,31),J(1),B()),e&2){let e=K();M(),Y(e.writesOff)}}function yW(e,t){e&1&&(z(0,`p`,46),J(1,` SSR mocks are not transferred to the client: the browser requests the URL again and gets the real response unless the rule also applies on the client. `),B())}function bW(e,t){e&1&&(z(0,`span`),J(1,`passthrough`),B())}function xW(e,t){if(e&1&&(z(0,`span`,73),J(1),B()),e&2){let e=K().$implicit,t=K();q(`ok`,t.statusTone(e.status)===`ok`)(`redirect`,t.statusTone(e.status)===`redirect`)(`bad`,t.statusTone(e.status)===`bad`),M(),Y(e.status)}}function SW(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),X(``,e.delayMs,` ms`)}}function CW(e,t){e&1&&(z(0,`span`),J(1,`mock body`),B())}function wW(e,t){e&1&&(z(0,`p`,112),J(1,` The SSR mock is not written to TransferState, so the browser requests this URL again. `),B())}function TW(e,t){if(e&1){let e=W();z(0,`li`)(1,`label`,105)(2,`input`,106),G(`change`,function(){let t=O(e).$implicit;return k(K().toggleRule(t.id))}),B(),z(3,`code`,107)(4,`span`,108),J(5),B(),J(6),B()(),z(7,`button`,109),G(`click`,function(){let t=O(e).$implicit;return k(K().removeRule(t.id))}),J(8,` Remove `),B(),z(9,`span`,110)(10,`span`),J(11),B(),P(12,bW,2,0,`span`)(13,xW,2,7,`span`,111),P(14,SW,2,1,`span`),P(15,CW,2,0,`span`),B(),P(16,wW,2,0,`p`,112),B()}if(e&2){let e=t.$implicit,n=K();q(`off`,!e.enabled),M(2),R(`checked`,e.enabled)(`disabled`,!n.canWrite()),N(`aria-describedby`,n.canWrite()?null:`http-writes-off`)(`aria-label`,`Enable rule for `+e.pattern),M(),R(`title`,e.pattern),M(2),Y(e.method||`ANY`),M(),X(` `,e.pattern),M(),R(`disabled`,!n.canWrite()),N(`aria-describedby`,n.canWrite()?null:`http-writes-off`)(`aria-label`,`Remove rule for `+e.pattern),M(4),Y(n.targetLabel(e.target)),M(),F(e.status===void 0?12:13),M(2),F(e.delayMs?14:-1),M(),F(e.body?15:-1),M(),F(n.mocksOnServer(e)?16:-1)}}function EW(e,t){e&1&&(z(0,`li`,53),J(1,`No rules. SSR rules apply on the next page load.`),B())}function DW(e,t){if(e&1){let e=W();z(0,`p`,46),J(1,` Throws while the server renders, so it needs `),z(2,`code`),J(3,`providePangularHttp()`),B(),J(4,` and a page the engine renders. Prerendered files served as static files skip it. `),B(),z(5,`label`),J(6,` Error message `),z(7,`input`,113),G(`input`,function(t){return O(e),k(K().patchOverride(`message`,t))}),B()()}if(e&2){let e=K();M(7),R(`value`,e.overrideDraft().message)}}function OW(e,t){e&1&&J(0,` For a cached HTTP response this is the whole cache record, not only the response body. `)}function kW(e,t){e&1&&(z(0,`p`,117),J(1,` Filled in from the TransferState payload. The value starts empty because the panel only shows a redacted copy, so type the JSON the server should send. `),P(2,OW,1,0),B()),e&2&&(M(2),F(t===`http`?2:-1))}function AW(e,t){if(e&1){let e=W();z(0,`label`),J(1,` TransferState key `),z(2,`input`,114),G(`input`,function(t){return O(e),k(K().patchOverride(`key`,t))}),B()(),z(3,`label`)(4,`span`),J(5,`New JSON value `),z(6,`span`,33),J(7,`(empty removes the entry)`),B()(),z(8,`textarea`,115),G(`input`,function(t){return O(e),k(K().patchOverride(`value`,t))}),B()(),z(9,`p`,116),J(10),B(),P(11,kW,3,1,`p`,117)}if(e&2){let e,t=K();M(2),R(`value`,t.overrideDraft().key),M(6),R(`value`,t.overrideDraft().value),N(`aria-invalid`,t.overrideValueError()?`true`:null)(`aria-describedby`,t.overrideFromPayload()?`override-value-error override-value-note`:`override-value-error`),M(2),Y(t.overrideValueError()),M(),F((e=t.overrideFromPayload())?11:-1,e)}}function jW(e,t){e&1&&(z(0,`p`,46),J(1,` Serves `),z(2,`code`),J(3,`index.csr.html`),B(),J(4,` instead of rendering. Needs `),z(5,`code`),J(6,`browserDistFolder`),B(),J(7,` in `),z(8,`code`),J(9,`initPangularHub()`),B(),J(10,`. `),B())}function MW(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.message)}}function NW(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),Z(``,e.value===void 0?`remove`:`set`,` `,e.key)}}function PW(e,t){if(e&1){let e=W();z(0,`li`)(1,`label`,105)(2,`input`,106),G(`change`,function(){let t=O(e).$implicit;return k(K().toggleOverride(t.id))}),B(),z(3,`code`,107)(4,`span`,108),J(5),B(),J(6),B()(),z(7,`button`,109),G(`click`,function(){let t=O(e).$implicit;return k(K().removeOverride(t.id))}),J(8,` Remove `),B(),z(9,`span`,110),P(10,MW,2,1,`span`),P(11,NW,2,2,`span`),B()()}if(e&2){let e=t.$implicit,n=K();q(`off`,!e.enabled),M(2),R(`checked`,e.enabled)(`disabled`,!n.canWrite()),N(`aria-label`,`Enable `+n.overrideLabel(e.kind)+` for `+e.pattern),M(),R(`title`,e.pattern),M(2),Y(n.overrideLabel(e.kind)),M(),X(` `,e.pattern),M(),R(`disabled`,!n.canWrite()),N(`aria-label`,`Remove `+n.overrideLabel(e.kind)+` for `+e.pattern),M(3),F(e.message?10:-1),M(),F(e.key?11:-1)}}function FW(e,t){e&1&&(z(0,`li`,53),J(1,`No overrides.`),B())}function IW(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2,`DOM nodes hydrated`),B(),z(3,`dd`),J(4),B()(),z(5,`div`)(6,`dt`),J(7,`DOM nodes skipped`),B(),z(8,`dd`),J(9),B()(),z(10,`div`)(11,`dt`),J(12,`Mismatched components`),B(),z(13,`dd`),J(14),B()()),e&2){let e=t;M(4),Y(e.hydrated),M(5),Y(e.skipped),M(4),q(`bad`,e.mismatched>0),M(),Y(e.mismatched)}}function LW(e,t){if(e&1&&(z(0,`span`,119)(1,`span`,120),J(2,`Expected`),B(),z(3,`code`),J(4),B()()),e&2){let e=K().$implicit;M(4),Y(e.expected)}}function RW(e,t){if(e&1&&(z(0,`span`,119)(1,`span`,120),J(2,`Actual`),B(),z(3,`code`),J(4),B()()),e&2){let e=K().$implicit;M(4),Y(e.actual)}}function zW(e,t){if(e&1&&(z(0,`li`)(1,`code`),J(2),B(),P(3,LW,5,1,`span`,119),P(4,RW,5,1,`span`,119),B()),e&2){let e=t.$implicit;M(2),Y(`<`+e.component+`>`),M(),F(e.expected?3:-1),M(),F(e.actual?4:-1)}}function BW(e,t){if(e&1&&(z(0,`h3`),J(1),B(),z(2,`ul`,118),I(3,zW,5,3,`li`,null,Cg),B()),e&2){let e=K();M(),X(`Mismatches (`,e.mismatches.length,`)`),M(2),L(e.mismatches)}}function VW(e,t){if(e&1&&(z(0,`li`)(1,`code`),J(2),B()()),e&2){let e=t.$implicit;M(2),Y(e)}}function HW(e,t){if(e&1&&(z(0,`h3`),J(1,`ngSkipHydration hosts`),B(),z(2,`ul`,121),I(3,VW,3,1,`li`,null,Cg),B()),e&2){let e=K();M(3),L(e.skipHydrationHosts)}}function UW(e,t){e&1&&(z(0,`h3`),J(1,`Warnings`),B(),z(2,`p`,46),J(3,` Not captured: add `),z(4,`code`),J(5,`providePangularHttp()`),B(),J(6,` to the app providers. `),B())}function WW(e,t){if(e&1&&(z(0,`pre`,122),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function GW(e,t){e&1&&(z(0,`p`,82),J(1,`No hydration warnings.`),B())}function KW(e,t){if(e&1&&(z(0,`h3`),J(1),B(),I(2,WW,2,1,`pre`,122,Cg,!1,GW,2,0,`p`,82)),e&2){let e=K();M(),X(`Warnings (`,e.warnings.length,`)`),M(),L(e.warnings)}}function qW(e,t){if(e&1&&(z(0,`dl`,81)(1,`div`)(2,`dt`),J(3,`Enabled`),B(),z(4,`dd`)(5,`span`,89),J(6),B()()(),z(7,`div`)(8,`dt`),J(9,`Hydrated components`),B(),z(10,`dd`),J(11),B()(),z(12,`div`)(13,`dt`),J(14,`Hydrated nodes`),B(),z(15,`dd`),J(16),B()(),z(17,`div`)(18,`dt`),J(19,`Skipped components`),B(),z(20,`dd`),J(21),B()(),z(22,`div`)(23,`dt`),J(24,`App stable after`),B(),z(25,`dd`),J(26),B()(),z(27,`div`)(28,`dt`),J(29,`Incremental defer blocks`),B(),z(30,`dd`),J(31),B()(),P(32,IW,15,5),B(),P(33,BW,5,1),P(34,HW,5,0),P(35,UW,7,0)(36,KW,5,2)),e&2){let e,n=t;M(5),q(`on`,n.enabled)(`off-tag`,!n.enabled),M(),Y(n.enabled?`yes`:`no (client render only)`),M(5),Y(n.hydratedComponents??`n/a`),M(5),Y(n.hydratedNodes??`n/a`),M(5),Y(n.componentsSkippedHydration??`n/a`),M(5),Y(n.stableMs===void 0?`n/a`:n.stableMs+` ms`),M(5),Y(n.deferBlocksWithIncrementalHydration??`n/a`),M(),F((e=n.nodes)?32:-1,e),M(),F(n.mismatches?.length?33:-1),M(),F(n.skipHydrationHosts.length?34:-1),M(),F(n.warningsCaptured===!1?35:36)}}function JW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No hydration data for this page.`),B(),z(3,`p`,46),J(4,`Open a server rendered page of the app to see its stats.`),B()())}function YW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No TransferState script: this page was not server rendered.`),B()())}function XW(e,t){if(e&1&&(z(0,`p`,124),J(1),B()),e&2){let e=K(2);M(),Y(e.error)}}function ZW(e,t){e&1&&(z(0,`span`,89),J(1),B()),e&2&&(M(),Y(t))}function QW(e,t){if(e&1&&(z(0,`span`,89),J(1),B(),z(2,`span`,127),J(3),B()),e&2){let e=t,n=K().$implicit,r=K(3);q(`server`,r.statusTone(e.status)===`ok`)(`fault`,r.statusTone(e.status)===`bad`),M(),X(`HTTP `,e.status),M(2),Y(e.url??n.key)}}function $W(e,t){if(e&1&&(z(0,`span`,127),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.key)}}function eG(e,t){if(e&1){let e=W();z(0,`button`,101),G(`click`,function(){O(e);let t=K().$implicit;return k(K(3).editEntry(t))}),J(1,` Edit in SSR overrides `),B()}if(e&2){let e=K().$implicit;N(`aria-label`,`Edit in SSR overrides, key `+e.key)}}function tG(e,t){if(e&1){let e=W();z(0,`details`)(1,`summary`),V(2,`span`,126),P(3,ZW,2,1,`span`,89),P(4,QW,4,6)(5,$W,2,1,`span`,127),z(6,`span`,128),J(7),B()(),z(8,`div`,129)(9,`span`,130),J(10,`Key`),B(),z(11,`code`,131),J(12),B(),z(13,`div`,132)(14,`button`,101),G(`click`,function(){let t=O(e).$implicit;return k(K(3).copyKey(t.key))}),J(15,` Copy `),B(),P(16,eG,2,1,`button`,99),B()(),z(17,`pre`,133),J(18),dv(19,`json`),B()()}if(e&2){let e,n,r=t.$implicit,i=K(3);M(3),F((e=i.payloadLabel(r))?3:-1,e),M(),F((n=r.http)?4:5,n),M(3),X(``,r.size,` B`),M(5),Y(r.key),M(2),N(`aria-label`,`Copy key `+r.key),M(2),F(i.canEditEntry(r)?16:-1),M(2),Y(pv(19,7,r.value))}}function nG(e,t){if(e&1&&(z(0,`p`,123),J(1),B(),P(2,XW,2,1,`p`,124),z(3,`div`,125),I(4,tG,20,9,`details`,null,kU),B()),e&2){let e=K();M(),Y_(` `,e.entries.length,` entr`,e.entries.length===1?`y`:`ies`,`, `,e.size,` bytes `),M(),F(e.error?2:-1),M(2),L(e.entries)}}function rG(e,t){e&1&&P(0,YW,3,0,`div`,11)(1,nG,6,4),e&2&&F(+!!t.found)}function iG(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`Open a page of the app to see its payload.`),B()())}var aG={kind:`render-error`,pattern:``,message:``,key:``,value:``},oG={"render-error":`Render error`,"client-render":`Client render`,"state-edit":`TransferState edit`},sG={server:`Server`,prerender:`Prerender`,client:`Client`,redirect:`Redirect`,"not-rendered":`Not rendered`,unknown:`Unknown`},cG={pattern:``,method:``,target:`both`,status:``,delayMs:``,body:``};function lG(e){try{let t=new URL(e,`http://x`);return t.pathname+t.search}catch{return e}}var uG=/\[redacted\]|%5Bredacted%5D/gi;function dG(e){return lG(e).replace(uG,`*`)}function fG(e){let t=BD(e);if(t!==null)return t;try{return JSON.parse(e),e.trim()}catch{return null}}var pG=[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`];function mG(e){try{return new URL(e,`http://x`).pathname}catch{return``}}function hG(e){let t=mG(e);return t===`/`?``:t}var gG=/\[redacted\]|%5Bredacted%5D/i,_G=200,vG=50,yG=500,bG=1e5,xG=[{value:``,label:`None`},...PT.map(([e,t])=>({value:String(e),label:`${e} ${t}`}))],SG=class e{rpc=$(null);canWrite=Q(()=>bE(this.rpc(),`http`));writesOff=KT(`http`);loading=j(!1);failed=j(!1);serverCalls=j([]);pages=j([]);payloads=j({});serverDropped=j(0);requests=j([]);rules=j([]);overrides=j([]);overrideDraft=j({...aG});overrideFromPayload=j(null);overrideKindOptions=[{value:`render-error`,label:`Render error`},{value:`client-render`,label:`Force Client render`},{value:`state-edit`,label:`Edit TransferState entry`}];overrideValueError=Q(()=>{let e=this.overrideDraft().value.trim();if(!e)return``;try{return JSON.parse(e),``}catch{return`The value must be valid JSON.`}});overrideReady=Q(()=>{let e=this.overrideDraft();return!e.pattern.trim()||this.overrides().length>=20?!1:e.kind!==`state-edit`||!!e.key.trim()&&!this.overrideValueError()});hostPageId=eE();selectedPageId=Tv({source:()=>this.pages(),computation:(e,t)=>t?.value&&e.some(e=>e.pageId===t.value)?t.value:e.find(e=>e.pageId===this.hostPageId)?.pageId??e[0]?.pageId??null});selectedCallId=j(null);draft=j({...cG});message=j(``);bodyPlaceholder=`{ "error": "Service unavailable" }`;statusOptions=xG;unsubscribe=[];destroyRef=E(Cs);injector=E(xs);host=E(Ml);selected=Q(()=>this.pages().find(e=>e.pageId===this.selectedPageId())??null);pageRequestId=Q(()=>this.selected()?.ssrRequestId??null);selectedRequestId=Tv(()=>this.pageRequestId());selectedPayload=Q(()=>{let e=this.selectedPageId();return e?this.payloads()[e]??null:null});maxCalls=Q(()=>yE(this.rpc()).limits.httpCalls);droppedCalls=Q(()=>(this.selected()?.dropped??0)+this.serverDropped());pageServerCalls=Q(()=>{let e=this.selected()?.initialUrl;return e?this.serverCalls().filter(t=>!t.pageUrl||t.pageUrl===e):this.serverCalls()});timeline=Q(()=>[...this.pageServerCalls(),...this.selected()?.calls??[]].sort((e,t)=>t.at-e.at));callQuery=j(``);sideFilter=j(`all`);failedOnly=j(!1);sideOptions=[{value:`all`,label:`All sides`},{value:`server`,label:`SSR`},{value:`client`,label:`Client`}];visibleCalls=Q(()=>{let e=this.callQuery().trim().toLowerCase(),t=this.sideFilter()??`all`,n=this.failedOnly();return this.timeline().filter(r=>(t===`all`||r.side===t)&&(!n||this.isFailed(r))&&(!e||`${r.method} ${r.url}`.toLowerCase().includes(e)||`${r.method} ${lG(r.url)}`.toLowerCase().includes(e)))});filterStatus=Q(()=>{this.callQuery(),this.sideFilter(),this.failedOnly(),this.filterFlip=!this.filterFlip;let e=Cv(()=>`${this.visibleCalls().length} of ${this.timeline().length}`);return this.filterFlip?`${e}\u00a0`:e});filterFlip=!0;selectedCall=Q(()=>this.visibleCalls().find(e=>e.id===this.selectedCallId())??null);selectedRequest=Q(()=>this.requests().find(e=>e.id===this.selectedRequestId())??null);requestCalls=Q(()=>{let e=this.selectedRequest()?.id;return e?this.serverCalls().filter(t=>t.requestId===e):[]});requestPage=Q(()=>{let e=this.selectedRequest()?.id;return e?this.pages().find(t=>t.ssrRequestId===e)??null:null});refetched=Q(()=>{let e=this.selectedRequest(),t=this.requestPage();if(!e||!t)return[];let n=new Set(this.requestCalls().filter(e=>e.status).map(e=>`${e.method} ${lG(e.url)}`));return t.calls.filter(t=>t.side===`client`&&!t.cacheHit&&!t.mocked&&t.at>=e.at&&n.has(`${t.method} ${lG(t.url)}`))});draftMocksOnServer=Q(()=>{let e=this.draftRule();return!!e&&this.mocksOnServer(e)});draftRule=Q(()=>{let e=this.draft(),t=e.pattern.trim();if(!t||t.length>yG||this.bodyError()||this.rules().length>=vG)return null;let n=e.body.trim(),r=Math.min(Math.max(Math.round(Number(e.delayMs))||0,0),1e4),i=e.status.trim()?Number(e.status):n?200:void 0;return i!==void 0&&!FT(i)||i===void 0&&!r?null:{pattern:t,enabled:!0,target:e.target,...e.method?{method:e.method}:{},...i===void 0?{}:{status:i},...r?{delayMs:r}:{},...n?{body:n}:{}}});draftHint=Q(()=>{let e=this.draft();return this.rules().length>=vG?`You can add up to ${vG} rules. Remove one to add another.`:e.pattern.trim()?e.pattern.trim().length>yG?`The URL pattern is limited to ${yG} characters.`:this.bodyError()?``:e.status.trim()&&!FT(Number(e.status))?`Pick a status from the list.`:this.draftRule()?!e.status.trim()&&e.body.trim()?`With no status, the mock body returns 200.`:``:`Set a status, a delay or a mock body.`:`Enter a URL pattern to add a rule.`});bodyError=Q(()=>{let e=this.draft().body.trim();if(!e)return``;if(e.length>bG)return`The mock body is limited to ${bG} characters.`;try{return JSON.parse(e),``}catch{return`The mock body must be valid JSON.`}});constructor(){uc(()=>{let e=this.rpc();e&&this.load(e)}),this.destroyRef.onDestroy(()=>this.stopListening())}async load(e){this.loading.set(!0),this.failed.set(!1);try{let t=e.scope(`pangular`).rpc,[n,r]=await Promise.all([t.sharedState(`http`),t.sharedState(`http-payloads`)]);if(this.destroyRef.destroyed)return;let i=e=>{let t=e;this.serverCalls.set(t?.serverCalls??[]),this.serverDropped.set(t?.serverDropped??0),this.requests.set([...t?.requests??[]].reverse()),this.pages.set(t?.pages??[]),this.rules.set(t?.rules??[]),this.overrides.set(t?.ssrOverrides??[])},a=e=>this.payloads.set(e?.pages??{});i(n.value()),a(r.value()),this.stopListening(),this.unsubscribe=[n.on(`updated`,i),r.on(`updated`,a)]}catch{this.failed.set(!0)}finally{this.loading.set(!1)}}guardVerdict(e){return e.guards?.passed===!1?e.outcome===`redirected`?`redirected`:`rejected`:``}msLabel(e){return e===void 0?`n/a`:`${e} ms`}skipText(e){return NT[e]??``}refetchReason(e){let t=`${e.method} ${lG(e.url)}`,n=this.requestCalls().filter(e=>`${e.method} ${lG(e.url)}`===t),r=n[0];return r?.cacheSkip&&n.every(e=>e.cacheSkip===r.cacheSkip)?this.skipText(r.cacheSkip):``}renderModeLabel(e){return sG[e]??`Unknown`}statusLabel(e){return e.cancelled?`cancelled`:e.status?String(e.status):`ERR`}callTone(e){return e.cancelled?`neutral`:this.statusTone(e.status)}isFailed(e){return!!e.cancelled||!e.status||e.status>=400}clearCallFilters(){this.callQuery.set(``),this.sideFilter.set(`all`),this.failedOnly.set(!1),this.host.nativeElement.querySelector(`#timeline-search`)?.focus()}rulePatternOf(e){return e.rulePattern?e.rulePattern:e.ruleId?this.rules().find(t=>t.id===e.ruleId)?.pattern??null:null}openCall(e){this.selectedCallId.set(e),Id(()=>this.host.nativeElement.querySelector(`#preview-heading`)?.focus(),{injector:this.injector})}previewText(e){if(e.preview!==void 0)return BD(e.preview)??e.preview}async copyPreview(e){let t=this.previewText(e);if(t)try{await navigator.clipboard.writeText(t),this.message.set(`Copied.`)}catch{this.message.set(`The clipboard is not available here.`)}}mockCall(e){let t=e.method.toUpperCase(),n=dG(e.url),r=e.error||!e.preview?null:fG(e.preview);this.draft.set({...cG,pattern:n,method:t,body:r??``});let i=`${t} ${n}`;this.message.set(r?`Filled in a rule for ${i} with the preview as its body. Check it, then add the rule.`:e.preview&&!e.error?`Filled in a rule for ${i}. The preview is not complete JSON, so it is not used as the body.`:`Filled in a rule for ${i}. Set a status, a delay or a body, then add the rule.`),Id(()=>this.host.nativeElement.querySelector(`#rule-pattern`)?.focus(),{injector:this.injector})}closePreview(){let e=this.selectedCallId();this.selectedCallId.set(null),e&&[...this.host.nativeElement.querySelectorAll(`button[data-call-id]`)].find(t=>t.dataset.callId===e)?.focus()}stopListening(){for(let e of this.unsubscribe.splice(0))e()}statusTone(e){return e===void 0?`neutral`:e===0||e>=400?`bad`:e>=300?`redirect`:e>=200?`ok`:`neutral`}mocksOnServer(e){return e.target!==`client`&&e.status!==void 0&&e.status<400}payloadLabel(e){return e.source===`hydration`?`hydration annotations`:e.fn?`Analog server function ${e.fn.name??e.fn.id}`:e.source===`analog`?`Analog`:null}targetLabel(e){return e===`both`?`SSR + client`:e===`server`?`SSR only`:`Client only`}pageOptions=Q(()=>this.pages().map(e=>({value:e.pageId,label:e.title||e.url})));methodOptions=Q(()=>{let e=this.draft().method;return[{value:``,label:`Any`},...(e&&!pG.includes(e)?[...pG,e]:pG).map(e=>({value:e,label:e}))]});targetOptions=[{value:`both`,label:`SSR + client`},{value:`server`,label:`SSR only`},{value:`client`,label:`Client only`}];selectPage(e){e&&this.selectedPageId.set(e),this.selectedCallId.set(null),this.overrideFromPayload.set(null)}setDraft(e,t){this.draft.update(n=>({...n,[e]:t}))}patch(e,t){let n=t.target.value;this.draft.update(t=>({...t,[e]:n}))}async addRule(e){e.preventDefault();let t=this.draftRule();if(!t)return;let n={id:`r${Date.now().toString(36)}${Math.random().toString(36).slice(2,6)}`,...t};await this.saveRules([...this.rules(),n],`Rule added.`,n)&&(this.draft.set({...cG}),this.host.nativeElement.querySelector(`#rule-pattern`)?.focus())}toggleRule(e){let t=this.rules().find(t=>t.id===e);t&&this.saveRules(this.rules().map(t=>t.id===e?{...t,enabled:!t.enabled}:t),`Rule updated.`,t)}removeRule(e){let t=this.rules().find(t=>t.id===e);t&&this.saveRules(this.rules().filter(t=>t.id!==e),`Rule removed.`,t)}async clearCalls(){try{await iE(this.rpc(),`clear-http-calls`),this.selectedCallId.set(null),this.message.set(`Timeline cleared.`)}catch{this.message.set(`Could not clear the timeline.`)}}overrideLabel(e){return oG[e]??e}setOverrideDraft(e,t){this.overrideDraft.update(n=>({...n,[e]:t})),e===`kind`&&t!==`state-edit`&&this.overrideFromPayload.set(null)}patchOverride(e,t){let n=t.target.value;this.overrideDraft.update(t=>({...t,[e]:n})),e===`key`&&this.overrideFromPayload.set(null)}async copyKey(e){try{await navigator.clipboard.writeText(e),this.message.set(`Copied.`)}catch{this.message.set(`The clipboard is not available here.`)}}canEditEntry(e){let{key:t}=e;return this.canWrite()&&!!t&&t===t.trim()&&t.length<=_G&&!gG.test(t)}editEntry(e){if(!this.canEditEntry(e))return;let t=this.selected();this.overrideDraft.set({...aG,kind:`state-edit`,pattern:t?hG(t.initialUrl??t.url):``,key:e.key}),this.overrideFromPayload.set(e.http?`http`:`other`),this.message.set(`Editing the TransferState entry in SSR overrides.`),Id(()=>{let e=this.host.nativeElement.querySelector(this.overrideDraft().pattern?`#override-value`:`#override-pattern`);e?.scrollIntoView?.({block:`center`}),e?.focus()},{injector:this.injector})}async addOverride(e){if(e.preventDefault(),!this.overrideReady())return;let t=this.overrideDraft(),n={id:`o${Date.now().toString(36)}${Math.random().toString(36).slice(2,6)}`,kind:t.kind,pattern:t.pattern.trim(),enabled:!0,...t.kind===`render-error`&&t.message.trim()?{message:t.message.trim()}:{},...t.kind===`state-edit`?{key:t.key.trim()}:{},...t.kind===`state-edit`&&t.value.trim()?{value:t.value.trim()}:{}};await this.saveOverrides([...this.overrides(),n],`Override added. Reload the page.`)&&(this.overrideDraft.set({...aG,kind:t.kind}),this.overrideFromPayload.set(null),this.host.nativeElement.querySelector(`#override-pattern`)?.focus())}toggleOverride(e){this.saveOverrides(this.overrides().map(t=>t.id===e?{...t,enabled:!t.enabled}:t),`Override updated. Reload the page.`)}removeOverride(e){this.saveOverrides(this.overrides().filter(t=>t.id!==e),`Override removed.`)}async saveOverrides(e,t){try{let n=await iE(this.rpc(),`set-ssr-overrides`,e);return this.overrides.set(Array.isArray(n)?n:e),this.message.set(t),!0}catch{return this.message.set(`Could not save the overrides.`),!1}}async saveRules(e,t,n){try{let r=await iE(this.rpc(),`set-http-rules`,e);return this.rules.set(Array.isArray(r)?r:e),this.message.set(n.target===`client`?t:`${t} Reload the page to apply it to SSR.`),!0}catch{return this.message.set(`Could not save the rules.`),!1}}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-network-inspector`]],inputs:{rpc:[1,`rpc`]},decls:128,vars:49,consts:[[`role`,`status`,1,`state`],[`role`,`alert`,1,`state`,`error`],[1,`toolbar`],[1,`page-picker`],[`id`,`page-picker-label`],[`labelledBy`,`page-picker-label`,`emptyText`,`No connected page`,`placeholder`,`No connected page`,3,`valueChange`,`options`,`value`],[`type`,`button`,3,`click`,`disabled`],[`role`,`status`,1,`message`],[1,`grid`],[`aria-labelledby`,`ssr-heading`,1,`panel`,`wide`],[`id`,`ssr-heading`],[1,`empty`],[`aria-labelledby`,`timeline-heading`,1,`panel`,`wide`],[`id`,`timeline-heading`],[`what`,`HTTP calls`,`limit`,`httpCalls`,3,`dropped`,`max`],[`role`,`group`,`aria-label`,`Filter the HTTP timeline`,1,`filters`],[1,`search`],[`viewBox`,`0 0 24 24`,`aria-hidden`,`true`,1,`search-icon`],[`cx`,`11`,`cy`,`11`,`r`,`7`],[`d`,`m20 20-3.5-3.5`],[`id`,`timeline-search`,`type`,`search`,`placeholder`,`Find a URL or method…`,`aria-label`,`Find a URL or method`,`autocomplete`,`off`,`spellcheck`,`false`,3,`input`,`keydown.escape`,`value`],[`ariaLabel`,`Side`,1,`side-filter`,3,`valueChange`,`options`,`value`],[1,`inline`,`failed-toggle`],[`type`,`checkbox`,3,`change`,`checked`],[1,`total`],[`role`,`status`,1,`sr-only`],[1,`table-wrap`],[`role`,`status`,1,`empty`,`no-match`],[`id`,`call-preview`,`role`,`region`,`aria-labelledby`,`preview-heading`,1,`preview`],[`aria-labelledby`,`rules-heading`,1,`panel`],[`id`,`rules-heading`],[`id`,`http-writes-off`,1,`muted`,`small`],[`id`,`rule-form`,1,`rule-form`,3,`submit`],[1,`hint`],[`id`,`rule-pattern`,`required`,``,`spellcheck`,`false`,`autocomplete`,`off`,`placeholder`,`e.g. /api/products`,3,`input`,`value`],[1,`row`],[1,`field-group`],[`id`,`rule-method-label`],[`labelledBy`,`rule-method-label`,3,`valueChange`,`options`,`value`],[`id`,`rule-target-label`],[`labelledBy`,`rule-target-label`,3,`valueChange`,`options`,`value`],[`id`,`rule-status-label`],[`labelledBy`,`rule-status-label`,3,`valueChange`,`options`,`value`],[`type`,`number`,`inputmode`,`numeric`,`min`,`0`,`max`,`10000`,`placeholder`,`0`,3,`input`,`value`],[`rows`,`3`,`spellcheck`,`false`,`aria-describedby`,`body-error`,3,`input`,`placeholder`,`value`],[`id`,`body-error`,1,`field-error`],[1,`muted`,`small`],[`id`,`rule-hint`,1,`muted`,`small`],[1,`form-actions`],[`type`,`submit`,3,`disabled`],[1,`rules-heading`],[1,`rules`],[3,`off`],[1,`empty-rule`],[`aria-labelledby`,`overrides-heading`,1,`panel`],[`id`,`overrides-heading`],[1,`rule-form`,3,`submit`],[`id`,`override-kind-label`],[`labelledBy`,`override-kind-label`,3,`valueChange`,`options`,`value`],[`id`,`override-pattern`,`required`,``,`spellcheck`,`false`,`autocomplete`,`off`,`placeholder`,`e.g. /examples/ssr`,3,`input`,`value`],[`aria-labelledby`,`hydration-heading`,1,`panel`],[`id`,`hydration-heading`],[`aria-labelledby`,`payload-heading`,1,`panel`,`wide`],[`id`,`payload-heading`],[`aria-hidden`,`true`,1,`spinner`],[`scope`,`col`],[`scope`,`col`,1,`num`],[3,`selected`],[`id`,`ssr-detail`,`role`,`region`,`aria-labelledby`,`ssr-detail-heading`,1,`preview`],[3,`click`],[1,`url`],[`type`,`button`,`aria-controls`,`ssr-detail`,1,`link`,3,`title`],[1,`method`],[1,`status`],[`aria-hidden`,`true`,1,`dot`],[1,`num`],[1,`notes`],[1,`tag`,`server`],[1,`tag`,`mock`],[1,`tag`,`fault`],[`id`,`ssr-detail-heading`],[1,`stats`],[1,`muted`,`small`,`ok-note`],[1,`request-call`],[1,`muted`],[1,`stats`,`nav-stats`],[1,`preview-url`,3,`title`],[1,`tag`,3,`title`],[1,`muted`,`small`,`skip-reason`],[1,`tag`],[`type`,`button`,1,`link`,3,`title`],[1,`page-url`,3,`title`],[1,`tag`,`rule-ref`,3,`title`],[1,`empty-actions`],[`type`,`button`,3,`click`],[`id`,`call-preview`,`role`,`region`,`aria-labelledby`,`preview-heading`,1,`preview`,3,`keydown.escape`],[1,`preview-head`],[`id`,`preview-heading`,`tabindex`,`-1`],[1,`preview-actions`],[`type`,`button`,1,`ghost`],[`type`,`button`,`aria-controls`,`rule-form`,1,`ghost`,3,`click`,`disabled`],[`type`,`button`,1,`ghost`,3,`click`],[1,`preview-meta`],[1,`preview-rule`],[`tabindex`,`0`,1,`preview-body`],[1,`inline`],[`type`,`checkbox`,3,`change`,`checked`,`disabled`],[1,`rule-pattern`,3,`title`],[1,`rule-method`],[`type`,`button`,1,`link`,`remove`,3,`click`,`disabled`],[1,`rule-meta`],[1,`status`,3,`ok`,`redirect`,`bad`],[1,`rule-note`],[`spellcheck`,`false`,`placeholder`,`Simulated render error`,3,`input`,`value`],[`id`,`override-key`,`spellcheck`,`false`,`autocomplete`,`off`,3,`input`,`value`],[`id`,`override-value`,`rows`,`3`,`spellcheck`,`false`,3,`input`,`value`],[`id`,`override-value-error`,1,`field-error`],[`id`,`override-value-note`,1,`muted`,`small`],[1,`plain`,`mismatches`],[1,`mismatch-row`],[1,`mismatch-label`],[1,`plain`],[1,`warn`],[1,`muted`,`small`,`summary-line`],[`role`,`alert`,1,`bad`],[1,`entries`],[`aria-hidden`,`true`,1,`chevron`],[1,`entry-key`],[1,`entry-size`],[1,`entry-key-row`],[1,`entry-key-label`],[1,`entry-key-text`],[1,`entry-actions`],[`tabindex`,`0`]],template:function(e,t){if(e&1&&(P(0,AU,4,0,`div`,0)(1,jU,5,0,`div`,1),z(2,`div`,2)(3,`div`,3)(4,`span`,4),J(5,`Page`),B(),z(6,`app-select`,5),G(`valueChange`,function(e){return t.selectPage(e)}),B()(),z(7,`button`,6),G(`click`,function(){return t.clearCalls()}),J(8,` Clear timeline `),B(),z(9,`p`,7),J(10),B()(),z(11,`div`,8)(12,`section`,9)(13,`h2`,10),J(14),B(),P(15,nW,20,1)(16,rW,11,0,`div`,11),B(),z(17,`section`,12)(18,`h2`,13),J(19),B(),V(20,`app-limit-note`,14),z(21,`div`,15)(22,`div`,16),A(),z(23,`svg`,17),V(24,`circle`,18)(25,`path`,19),B(),ps(),z(26,`input`,20),G(`input`,function(e){return t.callQuery.set(e.target.value)})(`keydown.escape`,function(){return t.callQuery.set(``)}),B()(),z(27,`app-select`,21),ev(`valueChange`,function(e){return $_(t.sideFilter,e)||(t.sideFilter=e),e}),B(),z(28,`label`,22)(29,`input`,23),G(`change`,function(e){return t.failedOnly.set(e.target.checked)}),B(),J(30,` Failed only `),B(),z(31,`span`,24),J(32),B(),z(33,`span`,25),J(34),B()(),P(35,uW,21,0,`div`,26)(36,pW,9,1,`div`,27)(37,mW,11,0,`div`,11),P(38,_W,20,17,`div`,28),B(),z(39,`section`,29)(40,`h2`,30),J(41,`Fault injection`),B(),P(42,vW,2,1,`p`,31),z(43,`form`,32),G(`submit`,function(e){return t.addRule(e)}),z(44,`label`)(45,`span`),J(46,`URL pattern `),z(47,`span`,33),J(48,`(substring or * glob)`),B()(),z(49,`input`,34),G(`input`,function(e){return t.patch(`pattern`,e)}),B()(),z(50,`div`,35)(51,`div`,36)(52,`span`,37),J(53,`Method`),B(),z(54,`app-select`,38),G(`valueChange`,function(e){return t.setDraft(`method`,e??``)}),B()(),z(55,`div`,36)(56,`span`,39),J(57,`Apply on`),B(),z(58,`app-select`,40),G(`valueChange`,function(e){return t.setDraft(`target`,e??`both`)}),B()()(),z(59,`div`,35)(60,`div`,36)(61,`span`,41),J(62,`Status`),B(),z(63,`app-select`,42),G(`valueChange`,function(e){return t.setDraft(`status`,e??``)}),B()(),z(64,`label`),J(65,` Delay (ms) `),z(66,`input`,43),G(`input`,function(e){return t.patch(`delayMs`,e)}),B()()(),z(67,`label`)(68,`span`),J(69,`Mock JSON body `),z(70,`span`,33),J(71,`(optional)`),B()(),z(72,`textarea`,44),G(`input`,function(e){return t.patch(`body`,e)}),B()(),z(73,`p`,45),J(74),B(),P(75,yW,2,0,`p`,46),z(76,`p`,47),J(77),B(),z(78,`div`,48)(79,`button`,49),J(80,` Add rule `),B()()(),z(81,`h3`,50),J(82),B(),z(83,`ul`,51),I(84,TW,17,17,`li`,52,EU,!1,EW,2,0,`li`,53),B()(),z(87,`section`,54)(88,`h2`,55),J(89,`SSR overrides`),B(),z(90,`p`,46),J(91,` Development only. These change what the server sends for matching pages, from the next full page load, and the request is marked `),z(92,`strong`),J(93,`overridden`),B(),J(94,`. `),B(),z(95,`form`,56),G(`submit`,function(e){return t.addOverride(e)}),z(96,`div`,36)(97,`span`,57),J(98,`Override`),B(),z(99,`app-select`,58),G(`valueChange`,function(e){return t.setOverrideDraft(`kind`,e??`render-error`)}),B()(),z(100,`label`)(101,`span`),J(102,`Page pattern `),z(103,`span`,33),J(104,`(substring or * glob)`),B()(),z(105,`input`,59),G(`input`,function(e){return t.patchOverride(`pattern`,e)}),B()(),P(106,DW,8,1)(107,AW,12,6)(108,jW,11,0,`p`,46),z(109,`div`,48)(110,`button`,49),J(111,` Add override `),B()()(),z(112,`h3`,50),J(113),B(),z(114,`ul`,51),I(115,PW,12,12,`li`,52,EU,!1,FW,2,0,`li`,53),B()(),z(118,`section`,60)(119,`h2`,61),J(120,`Hydration`),B(),P(121,qW,37,14)(122,JW,5,0,`div`,11),B(),z(123,`section`,62)(124,`h2`,63),J(125,`TransferState payload`),B(),P(126,rG,2,1)(127,iG,3,0,`div`,11),B()()),e&2){let e,n,r,i;F(t.loading()?0:t.failed()?1:-1),M(6),R(`options`,t.pageOptions())(`value`,t.selected()?.pageId??null),M(),R(`disabled`,!t.canWrite()),N(`aria-describedby`,t.canWrite()?null:`http-writes-off`),M(3),Y(t.message()),M(4),X(`SSR requests (`,t.requests().length,`)`),M(),F(t.requests().length?15:16),M(4),X(`HTTP timeline (`,t.timeline().length,`)`),M(),R(`dropped`,t.droppedCalls())(`max`,t.maxCalls()),M(6),R(`value`,t.callQuery()),M(),R(`options`,t.sideOptions),Q_(`value`,t.sideFilter),M(2),R(`checked`,t.failedOnly()),M(3),Z(``,t.visibleCalls().length,` of `,t.timeline().length),M(2),Y(t.filterStatus()),M(),F(t.visibleCalls().length?35:t.timeline().length?36:37),M(3),F((e=t.selectedCall())?38:-1,e),M(4),F(t.canWrite()?-1:42),M(7),R(`value`,t.draft().pattern),M(5),R(`options`,t.methodOptions())(`value`,t.draft().method),M(4),R(`options`,t.targetOptions)(`value`,t.draft().target),M(5),R(`options`,t.statusOptions)(`value`,t.draft().status),M(3),R(`value`,t.draft().delayMs),M(6),R(`placeholder`,t.bodyPlaceholder)(`value`,t.draft().body),N(`aria-invalid`,t.bodyError()?`true`:null),M(2),Y(t.bodyError()),M(),F(t.draftMocksOnServer()?75:-1),M(2),Y(t.draftHint()),M(2),R(`disabled`,!t.canWrite()||!t.draftRule()),N(`aria-describedby`,t.canWrite()?`rule-hint`:`http-writes-off`),M(3),X(`Rules (`,t.rules().length,`)`),M(2),L(t.rules()),M(15),R(`options`,t.overrideKindOptions)(`value`,t.overrideDraft().kind),M(6),R(`value`,t.overrideDraft().pattern),M(),F((n=t.overrideDraft().kind)===`render-error`?106:n===`state-edit`?107:n===`client-render`?108:-1),M(4),R(`disabled`,!t.canWrite()||!t.overrideReady()),N(`aria-describedby`,t.canWrite()?null:`http-writes-off`),M(3),X(`Overrides (`,t.overrides().length,`)`),M(2),L(t.overrides()),M(6),F((r=t.selected()?.hydration)?121:122,r),M(5),F((i=t.selectedPayload())?126:127,i)}},dependencies:[UD,AD,ab],styles:[`@charset "UTF-8"; +[_nghost-%COMP%] { + display: block; + color: var(--%NS%text); + font-size: 13px; +} + +.state[_ngcontent-%COMP%] { + display: flex; + align-items: center; + gap: 8px; + margin: 0 0 16px; + padding: 10px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface); + color: var(--%NS%text-2); +} + +.state.error[_ngcontent-%COMP%] { + flex-direction: column; + align-items: flex-start; + gap: 4px; + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger); +} + +.state.error[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] { + font-weight: 600; +} + +.state.error[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { + color: var(--%NS%text); +} + +.spinner[_ngcontent-%COMP%] { + width: 14px; + height: 14px; + border: 2px solid var(--%NS%border-strong); + border-top-color: var(--%NS%accent); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +.toolbar[_ngcontent-%COMP%] { + position: sticky; + top: 0; + z-index: 2; + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px 12px; + margin: 0 0 16px; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: color-mix(in srgb, var(--%NS%surface) 85%, transparent); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); +} + +.toolbar[_ngcontent-%COMP%] .page-picker[_ngcontent-%COMP%] { + display: flex; + flex: 0 1 auto; + align-items: center; + gap: 8px; + min-width: 0; +} + +.page-picker[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.toolbar[_ngcontent-%COMP%] app-select[_ngcontent-%COMP%] { + width: 280px; + max-width: 420px; +} + +.field-group[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + min-width: 0; + color: var(--%NS%text-2); + font-size: 12px; + font-weight: 500; +} + +.field-group[_ngcontent-%COMP%] app-select[_ngcontent-%COMP%] { + width: 100%; +} + +.message[_ngcontent-%COMP%] { + flex: 1 1 200px; + min-width: 0; + margin: 0; + color: var(--%NS%text-2); + font-size: 12px; + text-align: right; +} + +.message[_ngcontent-%COMP%]:empty { + display: none; +} + +.grid[_ngcontent-%COMP%] { + display: grid; + gap: 16px; + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.panel[_ngcontent-%COMP%] { + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + animation: enter 0.35s var(--%NS%ease) both; + min-width: 0; + padding: 16px; +} + +.wide[_ngcontent-%COMP%] { + grid-column: 1/-1; +} + +h2[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + margin: 0 0 16px; +} + +h3[_ngcontent-%COMP%] { + margin: 16px 0 8px; + color: var(--%NS%text-strong); + font-size: 12px; + font-weight: 600; +} + +p[_ngcontent-%COMP%] { + margin: 0; +} + +label[_ngcontent-%COMP%] { + display: grid; + gap: 6px; + color: var(--%NS%text-2); + font-size: 12px; + font-weight: 500; +} + +label.inline[_ngcontent-%COMP%] { + display: flex; + align-items: center; + gap: 8px; + min-width: 0; + color: var(--%NS%text); + cursor: pointer; +} + +.hint[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-weight: 400; +} + +input[_ngcontent-%COMP%], +select[_ngcontent-%COMP%], +textarea[_ngcontent-%COMP%], +button[_ngcontent-%COMP%] { + font: inherit; + color: var(--%NS%text); +} + +input[_ngcontent-%COMP%]:not([type=checkbox]), +select[_ngcontent-%COMP%], +textarea[_ngcontent-%COMP%] { + width: 100%; + min-width: 0; + padding: 0 10px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background-color: var(--%NS%bg); + transition: border-color 0.2s var(--%NS%ease), box-shadow 0.2s var(--%NS%ease); +} + +input[_ngcontent-%COMP%]:not([type=checkbox]), +select[_ngcontent-%COMP%] { + height: 34px; +} + +select[_ngcontent-%COMP%] { + padding-right: 36px; +} + +textarea[_ngcontent-%COMP%] { + padding: 8px 10px; + font-family: var(--%NS%font-mono); + font-size: 12px; +} + +input[_ngcontent-%COMP%]::placeholder, +textarea[_ngcontent-%COMP%]::placeholder { + color: var(--%NS%text-3); +} + +input[_ngcontent-%COMP%]:not([type=checkbox]):hover, +select[_ngcontent-%COMP%]:hover, +textarea[_ngcontent-%COMP%]:hover { + border-color: color-mix(in srgb, var(--%NS%border-strong) 60%, var(--%NS%text-3)); +} + +input[_ngcontent-%COMP%]:not([type=checkbox]):focus-visible, +select[_ngcontent-%COMP%]:focus-visible, +textarea[_ngcontent-%COMP%]:focus-visible { + outline: none; + border-color: var(--%NS%accent); + box-shadow: 0 0 0 3px var(--%NS%accent-soft); +} + +textarea[aria-invalid=true][_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 60%, transparent); +} + +input[type=checkbox][_ngcontent-%COMP%] { + flex: none; + width: 16px; + height: 16px; + margin: 0; + accent-color: var(--%NS%accent); + cursor: pointer; +} + +button[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + justify-content: center; + height: 34px; + padding: 0 14px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + font-weight: 500; + white-space: nowrap; + cursor: pointer; + transition: background-color 0.2s var(--%NS%ease), border-color 0.2s var(--%NS%ease), color 0.2s var(--%NS%ease), transform 0.1s var(--%NS%ease); +} + +button[_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: var(--%NS%accent-line); + background: var(--%NS%surface-3); +} + +button[_ngcontent-%COMP%]:active:not(:disabled) { + transform: translateY(1px); +} + +button[type=submit][_ngcontent-%COMP%] { + border-color: var(--%NS%accent); + background: var(--%NS%accent); + color: var(--%NS%accent-ink); + font-weight: 600; +} + +button[type=submit][_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: var(--%NS%accent-hover); + background: var(--%NS%accent-hover); +} + +button[_ngcontent-%COMP%]:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +button.ghost[_ngcontent-%COMP%] { + height: 28px; + padding: 0 10px; + border-color: transparent; + background: none; + color: var(--%NS%text-2); + font-size: 12px; +} + +button.ghost[_ngcontent-%COMP%]:hover:not(:disabled) { + border-color: var(--%NS%border-strong); + background: var(--%NS%surface-2); + color: var(--%NS%text); +} + +button.link[_ngcontent-%COMP%] { + display: inline; + height: auto; + padding: 0; + border: none; + border-radius: 4px; + background: none; + color: var(--%NS%text); + text-align: left; +} + +button.link[_ngcontent-%COMP%]:hover:not(:disabled) { + border: none; + background: none; + color: var(--%NS%accent); +} + +button.link[_ngcontent-%COMP%]:active:not(:disabled) { + transform: none; +} + +[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.muted[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +.small[_ngcontent-%COMP%] { + font-size: 12px; +} + +.bad[_ngcontent-%COMP%] { + color: var(--%NS%danger); +} + +.empty[_ngcontent-%COMP%] { + display: grid; + gap: 4px; + padding: 24px 16px; + border: 1px dashed var(--%NS%border-strong); + border-radius: var(--%NS%radius-sm); + color: var(--%NS%text); + text-align: center; + line-height: 1.5; +} + +.empty-actions[_ngcontent-%COMP%] { + display: flex; + justify-content: center; + margin-top: 8px; +} + +.filters[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px 12px; + margin: 0 0 12px; +} + +.search[_ngcontent-%COMP%] { + position: relative; + flex: 1 1 220px; + min-width: 0; +} + +.search-icon[_ngcontent-%COMP%] { + position: absolute; + top: 50%; + left: 12px; + width: 14px; + height: 14px; + transform: translateY(-50%); + fill: none; + stroke: var(--%NS%text-3); + stroke-width: 2.2; + stroke-linecap: round; + pointer-events: none; +} + +.search[_ngcontent-%COMP%]:focus-within .search-icon[_ngcontent-%COMP%] { + stroke: var(--%NS%accent); +} + +.filters[_ngcontent-%COMP%] input[type=search][_ngcontent-%COMP%] { + height: var(--%NS%control-h); + padding-left: 34px; +} + +.filters[_ngcontent-%COMP%] .side-filter[_ngcontent-%COMP%] { + flex: 0 0 140px; +} + +.failed-toggle[_ngcontent-%COMP%] { + flex: none; + height: var(--%NS%control-h); + font-size: 13px; + font-weight: 500; +} + +.total[_ngcontent-%COMP%] { + flex: none; + color: var(--%NS%text-2); + font-size: 12px; + white-space: nowrap; + font-variant-numeric: tabular-nums; +} + +.table-wrap[_ngcontent-%COMP%] { + max-height: min(420px, 60vh); + overflow: auto; + margin: 0 -16px; + padding: 0 16px; +} + +.table-wrap[_ngcontent-%COMP%] [_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: -2px; +} + +thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%] { + position: sticky; + top: 0; + z-index: 1; + background: var(--%NS%surface); +} + +table[_ngcontent-%COMP%] { + width: 100%; + min-width: 560px; + border-collapse: collapse; + font-variant-numeric: tabular-nums; +} + +th[_ngcontent-%COMP%], +td[_ngcontent-%COMP%] { + height: 36px; + padding: 6px 12px; + border-bottom: 1px solid var(--%NS%border); + text-align: left; + vertical-align: middle; + white-space: nowrap; +} + +th[_ngcontent-%COMP%]:first-child, +td[_ngcontent-%COMP%]:first-child { + padding-left: 8px; +} + +th[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + height: 32px; + border-bottom-color: var(--%NS%border-strong); +} + +.num[_ngcontent-%COMP%] { + text-align: right; +} + +td.num[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] { + cursor: pointer; +} + +tbody[_ngcontent-%COMP%] td[_ngcontent-%COMP%] { + transition: background-color 0.15s var(--%NS%ease); +} + +tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] { + background: var(--%NS%surface-2); +} + +tr.selected[_ngcontent-%COMP%] td[_ngcontent-%COMP%], +tr.selected[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] { + background: var(--%NS%accent-soft); +} + +tr.selected[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child { + box-shadow: inset 2px 0 0 var(--%NS%accent); +} + +.method[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12px; + font-weight: 600; + color: var(--%NS%text-strong); +} + +td.url[_ngcontent-%COMP%] { + width: 100%; + max-width: 0; + font-family: var(--%NS%font-mono); + font-size: 12px; +} + +td.url[_ngcontent-%COMP%] button.link[_ngcontent-%COMP%] { + display: block; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +tr.selected[_ngcontent-%COMP%] td.url[_ngcontent-%COMP%] button.link[_ngcontent-%COMP%] { + color: var(--%NS%text-strong); +} + +td.page-url[_ngcontent-%COMP%] { + max-width: 160px; + overflow: hidden; + color: var(--%NS%text-2); + font-family: var(--%NS%font-mono); + font-size: 12px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.rule-note[_ngcontent-%COMP%] { + grid-column: 1/-1; + margin: 0; + padding-left: 24px; + color: var(--%NS%text-2); + font-size: 12px; +} + +.mismatches[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + display: grid; + gap: 4px; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); +} + +.mismatch-row[_ngcontent-%COMP%] { + display: flex; + gap: 8px; + min-width: 0; + font-size: 12px; +} + +.mismatch-row[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + min-width: 0; + overflow-wrap: anywhere; +} + +.mismatch-label[_ngcontent-%COMP%] { + flex: none; + width: 64px; + color: var(--%NS%text-2); +} + +.status[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12px; + font-weight: 600; + color: var(--%NS%text-2); +} + +.status.ok[_ngcontent-%COMP%] { + color: var(--%NS%ok); +} + +.status.bad[_ngcontent-%COMP%] { + color: var(--%NS%danger); +} + +.dot[_ngcontent-%COMP%] { + display: inline-block; + width: 6px; + height: 6px; + margin-right: 6px; + border-radius: 50%; + background: currentColor; + vertical-align: middle; +} + +.notes[_ngcontent-%COMP%] { + display: flex; + gap: 4px; +} + +.tag[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + height: 20px; + padding: 0 8px; + border: 1px solid var(--%NS%border-strong); + border-radius: 99px; + background: var(--%NS%surface-3); + color: var(--%NS%text-2); + font-size: 11px; + font-weight: 600; + white-space: nowrap; +} + +.tag.server[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%accent) 30%, transparent); + background: color-mix(in srgb, var(--%NS%accent) 12%, transparent); + color: var(--%NS%accent); +} + +.tag.fault[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + background: color-mix(in srgb, var(--%NS%danger) 12%, transparent); + color: var(--%NS%danger); +} + +.tag.mock[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%accent) 30%, transparent); + background: color-mix(in srgb, var(--%NS%accent) 12%, transparent); + color: var(--%NS%accent); +} + +.tag.rule-ref[_ngcontent-%COMP%] { + gap: 4px; + max-width: 220px; +} + +.tag.rule-ref[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { + overflow: hidden; + min-width: 0; + text-overflow: ellipsis; + white-space: nowrap; + font-family: var(--%NS%font-mono); +} + +.tag.on[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 30%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 12%, transparent); + color: var(--%NS%ok); +} + +.tag.off-tag[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + background: color-mix(in srgb, var(--%NS%warn) 12%, transparent); + color: var(--%NS%warn); +} + +pre[_ngcontent-%COMP%] { + margin: 0; + padding: 10px 12px; + max-height: 240px; + overflow: auto; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%bg); + color: var(--%NS%text-2); + font: 12px/1.5 var(--%NS%font-mono); + white-space: pre-wrap; + overflow-wrap: anywhere; +} + +pre[_ngcontent-%COMP%] + pre[_ngcontent-%COMP%] { + margin-top: 8px; +} + +pre.warn[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%warn) 30%, transparent); + color: var(--%NS%warn); +} + +pre.error[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 30%, transparent); + color: var(--%NS%danger); +} + +.preview[_ngcontent-%COMP%] { + animation: enter 0.2s var(--%NS%ease) both; + margin-top: 16px; +} + +.preview-head[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + gap: 4px 8px; + margin-bottom: 4px; +} + +.preview-actions[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px; +} + +pre.preview-body[_ngcontent-%COMP%] { + max-height: 320px; +} + +.preview-head[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] { + margin: 0; +} + +.preview-meta[_ngcontent-%COMP%] { + display: flex; + align-items: baseline; + gap: 8px; + min-width: 0; + margin-bottom: 8px; +} + +.request-call[_ngcontent-%COMP%] { + display: flex; + align-items: baseline; + gap: 8px; + min-width: 0; + margin: 0 0 4px; +} + +.request-call[_ngcontent-%COMP%] .preview-url[_ngcontent-%COMP%] { + flex: 1 1 auto; +} + +.skip-reason[_ngcontent-%COMP%] { + margin: 0 0 8px; +} + +.nav-stats[_ngcontent-%COMP%] { + margin-bottom: 8px; +} + +.preview-rule[_ngcontent-%COMP%] { + margin-bottom: 8px; + color: var(--%NS%text-2); + font-size: 12px; +} + +.preview-url[_ngcontent-%COMP%] { + min-width: 0; + overflow: hidden; + color: var(--%NS%text-2); + font-family: var(--%NS%font-mono); + font-size: 12px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.rule-form[_ngcontent-%COMP%] { + display: grid; + gap: 12px; +} + +.row[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 12px; +} + +@media (max-width: 420px) { + .row[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + } +} +.field-error[_ngcontent-%COMP%] { + margin-top: -4px; + color: var(--%NS%danger); + font-size: 12px; +} + +.field-error[_ngcontent-%COMP%]:empty { + display: none; +} + +.form-actions[_ngcontent-%COMP%] { + display: flex; +} + +.rules-heading[_ngcontent-%COMP%] { + margin-top: 24px; +} + +.rules[_ngcontent-%COMP%], +.plain[_ngcontent-%COMP%] { + display: grid; + gap: 8px; + margin: 0; + padding: 0; + list-style: none; +} + +.rules[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + align-items: center; + gap: 4px 12px; + padding: 8px 12px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface-2); + transition: border-color 0.2s var(--%NS%ease), opacity 0.2s var(--%NS%ease); +} + +.rules[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:hover { + border-color: var(--%NS%border-strong); +} + +.rules[_ngcontent-%COMP%] li.off[_ngcontent-%COMP%] .rule-pattern[_ngcontent-%COMP%] { + color: var(--%NS%text-2); + text-decoration: line-through; +} + +.rules[_ngcontent-%COMP%] li.off[_ngcontent-%COMP%] .rule-method[_ngcontent-%COMP%], +.rules[_ngcontent-%COMP%] li.off[_ngcontent-%COMP%] .rule-meta[_ngcontent-%COMP%], +.rules[_ngcontent-%COMP%] li.off[_ngcontent-%COMP%] .rule-meta[_ngcontent-%COMP%] .status[_ngcontent-%COMP%] { + color: var(--%NS%text-3); +} + +.rules[_ngcontent-%COMP%] li.empty-rule[_ngcontent-%COMP%] { + display: block; + padding: 16px 12px; + border-style: dashed; + border-color: var(--%NS%border-strong); + background: none; + color: var(--%NS%text-2); + text-align: center; +} + +.rule-pattern[_ngcontent-%COMP%] { + min-width: 0; + overflow: hidden; + color: var(--%NS%text-strong); + text-overflow: ellipsis; + white-space: nowrap; +} + +.rule-method[_ngcontent-%COMP%] { + color: var(--%NS%accent); + font-weight: 600; +} + +.rule-meta[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + grid-column: 1/-1; + gap: 4px 8px; + padding-left: 24px; + color: var(--%NS%text-2); + font-size: 12px; + font-variant-numeric: tabular-nums; +} + +.rule-meta[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] + span[_ngcontent-%COMP%]::before { + content: "·"; + margin-right: 8px; + color: var(--%NS%text-3); +} + +.rule-meta[_ngcontent-%COMP%] .status[_ngcontent-%COMP%] { + font-size: 11px; +} + +.rules[_ngcontent-%COMP%] button.remove[_ngcontent-%COMP%] { + padding: 2px 4px; + color: var(--%NS%text-2); + font-size: 12px; +} + +.rules[_ngcontent-%COMP%] button.remove[_ngcontent-%COMP%]:hover:not(:disabled) { + color: var(--%NS%danger); +} + +.plain[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + overflow-wrap: anywhere; +} + +code[_ngcontent-%COMP%] { + font-family: var(--%NS%font-mono); + font-size: 12px; +} + +.stats[_ngcontent-%COMP%] { + display: grid; + margin: 0; +} + +.stats[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + min-height: 36px; + padding: 6px 0; + border-bottom: 1px solid var(--%NS%border); +} + +.stats[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child { + border-bottom: none; +} + +dt[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +dd[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-strong); + font-weight: 600; + font-variant-numeric: tabular-nums; + text-align: right; +} + +.ok-note[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +.summary-line[_ngcontent-%COMP%] { + margin-bottom: 8px; + font-variant-numeric: tabular-nums; +} + +.entries[_ngcontent-%COMP%] { + border-top: 1px solid var(--%NS%border); +} + +details[_ngcontent-%COMP%] { + border-bottom: 1px solid var(--%NS%border); +} + +details[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] { + margin: 0 0 12px; +} + +summary[_ngcontent-%COMP%] { + display: flex; + align-items: center; + gap: 8px; + min-height: 36px; + padding: 6px 4px; + border-radius: 4px; + list-style: none; + cursor: pointer; + transition: background-color 0.15s var(--%NS%ease); +} + +summary[_ngcontent-%COMP%]::-webkit-details-marker { + display: none; +} + +summary[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-2); +} + +.chevron[_ngcontent-%COMP%] { + flex: none; + width: 6px; + height: 6px; + margin: 0 4px; + border-right: 1.5px solid var(--%NS%text-3); + border-bottom: 1.5px solid var(--%NS%text-3); + transform: rotate(-45deg); + transition: transform 0.15s var(--%NS%ease); +} + +details[open][_ngcontent-%COMP%] .chevron[_ngcontent-%COMP%] { + transform: rotate(45deg); +} + +.entry-key[_ngcontent-%COMP%] { + flex: 1 1 auto; + min-width: 0; + overflow: hidden; + font-family: var(--%NS%font-mono); + font-size: 12px; + text-overflow: ellipsis; + white-space: nowrap; +} + +summary[_ngcontent-%COMP%]:hover .entry-key[_ngcontent-%COMP%] { + color: var(--%NS%accent); +} + +.entry-key-row[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 4px 8px; + min-width: 0; + margin: 0 0 8px; + padding: 0 4px; +} + +.entry-key-label[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + flex: none; +} + +.entry-key-text[_ngcontent-%COMP%] { + flex: 1 1 200px; + min-width: 0; + color: var(--%NS%text-strong); + overflow-wrap: anywhere; + user-select: text; +} + +.entry-actions[_ngcontent-%COMP%] { + display: flex; + flex-wrap: wrap; + gap: 4px; +} + +.entry-size[_ngcontent-%COMP%] { + flex: none; + color: var(--%NS%text-2); + font-size: 12px; + font-variant-numeric: tabular-nums; +} + +@media (max-width: 760px) { + .grid[_ngcontent-%COMP%] { + grid-template-columns: minmax(0, 1fr); + } + .toolbar[_ngcontent-%COMP%] .page-picker[_ngcontent-%COMP%] { + flex: 1 1 100%; + } + .toolbar[_ngcontent-%COMP%] app-select[_ngcontent-%COMP%] { + flex: 1 1 auto; + width: auto; + max-width: none; + } + .message[_ngcontent-%COMP%] { + text-align: left; + } +}`]})};function CG(e,t){e&1&&(A(),H(0,`svg`,9),Fg(1,`path`,21),U())}function wG(e,t){e&1&&(A(),H(0,`svg`,10)(1,`defs`)(2,`linearGradient`,22),Fg(3,`stop`,23)(4,`stop`,24),U()(),Fg(5,`path`,25),H(6,`g`,26),Fg(7,`path`,27)(8,`path`,28)(9,`path`,29)(10,`path`,30),U()())}function TG(e,t){e&1&&(A(),H(0,`svg`,11),Fg(1,`path`,31)(2,`path`,32)(3,`path`,33)(4,`path`,34),U())}function EG(e,t){e&1&&(A(),H(0,`svg`,9),Fg(1,`path`,35)(2,`path`,36)(3,`path`,37)(4,`path`,38)(5,`path`,39)(6,`path`,40),U())}function DG(e,t){if(e&1&&(H(0,`a`,16),Fg(1,`img`,41),H(2,`span`,42)(3,`span`,43),J(4,`Being built by`),U(),H(5,`strong`),J(6),U(),H(7,`span`,44),J(8),U()(),H(9,`span`,45),J(10,`→`),U(),H(11,`span`,46),J(12,`(opens in a new tab)`),U()()),e&2){let e=t,n=K();Vg(`href`,`https://github.com/pangular-inspector/devtools/pull/`+n.info().pr,ku),M(),Vg(`src`,`https://github.com/`+e.login+`.png?size=96`,ku),M(5),Y(e.name),M(2),Z(`@`,e.login,` · PR #`,n.info().pr)}}function OG(e,t){if(e&1&&(H(0,`a`,17)(1,`span`,42)(2,`strong`),J(3),U()(),H(4,`span`,45),J(5,`→`),U(),H(6,`span`,46),J(7,`(opens in a new tab)`),U()()),e&2){let e=t;Vg(`href`,e.href,ku),M(3),Y(e.label)}}function kG(e,t){if(e&1&&(H(0,`li`),J(1),U()),e&2){let e=t.$implicit,n=t.$index;C_(`animation-delay`,200+n*120,`ms`),M(),Y(e)}}var AG=class e{info=$.required();plansTitle=Q(()=>{let e=this.info();return e.plansTitle??(e.link?`In an ${e.name} app`:`On the roadmap`)});static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-coming-soon`]],hostVars:2,hostBindings:function(e,t){e&2&&C_(`--%NS%brand`,t.info().color)},inputs:{info:[1,`info`]},decls:30,vars:7,consts:[[`aria-labelledby`,`soon-title`,1,`soon`],[`aria-hidden`,`true`,1,`stage`],[1,`ring`,`r1`],[1,`ring`,`r2`],[1,`orbit`,`o1`],[1,`dot`],[1,`orbit`,`o2`],[1,`orbit`,`o3`],[1,`logo`],[`viewBox`,`0 0 256 256`,`width`,`96`,`height`,`96`],[`viewBox`,`0 0 32 32`,`width`,`88`,`height`,`88`],[`viewBox`,`0 0 256 182`,`width`,`104`,`height`,`74`],[1,`badge`],[`aria-hidden`,`true`,1,`spark`],[`id`,`soon-title`],[1,`summary`],[`target`,`_blank`,`rel`,`noopener noreferrer`,1,`author`,3,`href`],[`target`,`_blank`,`rel`,`noopener noreferrer`,1,`author`,`cta`,3,`href`],[1,`plans-title`],[1,`plans`],[3,`animation-delay`],[`fill`,`#3c5afd`,`d`,`M237.248 18.752q18.061 18.06 18.748 45.247V192c-.457 18.12-6.707 33.207-18.748 45.247c-12.04 12.04-27.127 18.291-45.251 18.752H63.999q-27.187-.69-45.247-18.752C6.712 225.208.46 210.121 0 192.001V64q.69-27.187 18.752-45.247Q36.812.692 63.999 0h127.998c18.124.46 33.211 6.711 45.251 18.752m-17.655 103q-6.033-6.003-6.28-15.066V64q-.192-9.063-6.221-15.091c-4.02-4.023-9.054-6.093-15.095-6.22h-21.312v106.626L85.315 42.687H63.999c-6.042.128-11.072 2.198-15.091 6.221c-4.023 4.02-6.093 9.05-6.22 15.09v42.688q-.249 9.063-6.281 15.066q-6.03 5.996-15.091 6.246q9.062.255 15.09 6.25c4.024 4.002 6.115 9.024 6.281 15.066V192c.128 6.037 2.198 11.072 6.221 15.091q6.03 6.03 15.09 6.22h21.317V106.687l85.37 106.627h21.312c6.041-.128 11.076-2.202 15.095-6.221s6.093-9.054 6.22-15.09v-42.688q.249-9.063 6.281-15.066q6.03-5.995 15.091-6.25q-9.062-.25-15.09-6.246`],[`id`,`an-hero-grad`,`x1`,`0`,`y1`,`0`,`x2`,`1`,`y2`,`1`],[`offset`,`0`,`stop-color`,`#f0224f`],[`offset`,`1`,`stop-color`,`#c4002d`],[`d`,`M16 0C27.2 0 32 4.8 32 16S27.2 32 16 32 0 27.2 0 16 4.8 0 16 0Z`,`fill`,`url(#an-hero-grad)`],[`transform`,`translate(6.4 6.4) scale(0.8)`,`fill`,`#fff`],[`d`,`M14.8486 0L23.138 16.8551L23.9996 3.99892L14.8486 0Z`],[`d`,`M16.9875 17.7114H7.01272L5.73926 20.627L12.0001 24L18.261 20.627L16.9875 17.7114Z`],[`d`,`M8.72168 13.9298H15.2812L11.9997 6.39575L8.72168 13.9298Z`],[`d`,`M9.15103 0L0 3.99892L0.861556 16.8551L9.15103 0Z`],[`fill`,`#c30f2e`,`d`,`M152.228.001L48.455 181.046H256L152.228 0z`],[`fill`,`#dd0330`,`d`,`M88.314 26.967L0 181.52h176.628L88.315 26.967z`],[`fill`,`#fff`,`d`,`M18.167 135.294h220.236v-2.419H18.167z`],[`fill`,`#fff`,`d`,`M204.38 170.667c-.861 0-1.67-.358-2.348-1.034c-4.045-4.063-4.221-20.586-4.026-45.33c.11-13.521.257-32.043-1.9-33.504c-2.104.873-2.315 16.172-2.451 26.301c-.162 11.785-.327 23.98-2.242 30.189c-.57 1.84-1.306 3.525-2.786 3.39c-2.086-.185-2.76-3.48-4.317-16.478c-.647-5.4-1.317-10.98-2.101-13.14a11 11 0 0 0-.269-.66c-.835 1.889-1.8 7.079-2.47 10.682c-.927 4.976-1.803 9.676-2.9 11.726c-.847 1.575-2.19 3.63-4.067 3.231c-2.558-.537-3.323-5.693-3.552-8.719c0-25.455-3.33-28.417-3.997-28.753l-.107.081l-.162-.036c-2.377 1.038-2.506 9.294-2.627 17.276c-.096 5.856-.198 12.492-1.053 18.701c-1.108 8.05-2.448 9.603-4.115 9.507c-3.838-.262-3.95-13.482-3.95-14.987c0-.472.012-1.028.027-1.642c.074-3.076.205-8.8-1.687-10.604c-.25-.239-.603-.515-.879-.437c-1.347.339-2.745 4.714-3.209 6.153c-.147.457-.265.833-.364 1.09c-.078.214-.177.515-.294.88c-1.02 3.095-2.18 6.183-4.16 6.944c-.732.284-1.498.222-2.216-.183c-.953-.541-1.73-1.646-2.455-3.482c-.397-1.016-.735-2.046-1.082-3.081c-.419-1.263-.85-2.569-1.384-3.808c-.419-.965-1.464-1.4-2.796-1.164c-2.768.494-3.232 3.29-3.622 7.5c-.07.733-.137 1.452-.228 2.128c-.011.198-.501 6.38-.814 8.344c-.865 5.39-2.002 7.512-3.89 7.358c-4.66-.398-6.798-20.836-6.684-29.47c.088-6.592-1.104-9-1.818-9.382c-.074-.034-.189-.096-.46.095c-.843.571-1.594 2.348-1.363 4.215c2.566 20.32.674 43.592-3.96 48.833c-1.46 1.649-3.448 1.627-4.832.236c-4.049-4.064-4.218-20.586-4.026-45.33c.11-13.521.254-32.043-1.9-33.504c-2.105.873-2.311 16.172-2.45 26.301c-.163 11.785-.329 23.98-2.246 30.189c-.57 1.84-1.307 3.525-2.782 3.39c-2.091-.186-2.761-3.48-4.321-16.478c-.649-5.4-1.319-10.98-2.101-13.14c-.1-.273-.189-.49-.27-.66c-.832 1.889-1.796 7.079-2.466 10.682c-.927 4.976-1.803 9.676-2.904 11.726c-.846 1.575-2.19 3.63-4.063 3.231c-2.558-.537-3.324-5.693-3.552-8.719c-.003-25.455-3.33-28.417-3.997-28.753l-.106.081l-.166-.036c-2.374 1.038-2.503 9.293-2.629 17.276c-.091 5.856-.194 12.492-1.048 18.701c-1.107 8.05-2.437 9.618-4.111 9.507c-3.846-.262-3.958-13.482-3.958-14.987c0-.472.016-1.028.03-1.642c.074-3.076.207-8.8-1.685-10.604c-.25-.239-.603-.515-.88-.438c-1.347.34-2.75 4.715-3.206 6.155a47 47 0 0 1-.364 1.09q-.16.432-.298.875c-1.02 3.096-2.18 6.187-4.155 6.95c-.736.282-1.506.22-2.22-.185c-.953-.541-1.734-1.646-2.454-3.482c-.398-1.016-.74-2.046-1.083-3.081c-.42-1.263-.854-2.569-1.387-3.808c-.416-.965-1.465-1.4-2.797-1.164c-3.188.567-3.943 4.52-4.55 9.238l-.106.839l-2.411-.32l.114-.824c.527-4.137 1.328-10.39 6.53-11.31c2.446-.435 4.585.581 5.446 2.583c.578 1.34 1.031 2.695 1.466 4.008c.324.99.654 1.98 1.037 2.959c.674 1.708 1.197 2.15 1.392 2.257c1.218-.38 2.462-4.167 2.873-5.414c.13-.402.24-.732.328-.968c.085-.233.195-.571.328-.98c1.097-3.43 2.474-7.144 4.918-7.762c.747-.191 1.903-.166 3.157 1.035c2.665 2.544 2.525 8.48 2.433 12.41c-.014.59-.028 1.126-.028 1.583c0 6.272.93 10.655 1.64 12.16c.367-.77.998-2.63 1.598-7.007c.831-6.066.938-12.624 1.027-18.41c.161-10.24.275-17.663 3.982-19.408c.552-.339 1.469-.522 2.436-.033c3.586 1.803 5.326 11.885 5.326 30.817c.225 2.926 1.013 6.006 1.66 6.448c.004-.066.53-.39 1.394-2.01c.925-1.718 1.845-6.665 2.655-11.026c1.792-9.614 2.606-12.989 4.726-13.166c1.615-.158 2.362 1.896 2.676 2.76c.883 2.422 1.537 7.888 2.23 13.678c.54 4.49 1.31 10.902 2.094 13.497c.084-.228.18-.5.283-.836c1.815-5.878 1.98-17.887 2.14-29.507c.22-16.14.503-26.139 3.448-28.226a2.44 2.44 0 0 1 2.233-.316c3.448 1.144 3.714 11.254 3.519 35.8c-.14 17.799-.313 39.952 3.323 43.603c.317.32.542.32.622.32c.17 0 .413-.161.67-.452c3.681-4.162 6.01-26.022 3.372-46.927c-.328-2.602.677-5.337 2.392-6.514c.946-.652 2.036-.736 2.978-.232c2.145 1.14 3.187 5.024 3.102 11.546c-.15 11.387 2.584 24.714 4.37 26.842c.282-.471.842-1.763 1.379-5.145c.301-1.87.799-8.153.806-8.216c.09-.71.155-1.398.217-2.097c.369-3.924.82-8.804 5.613-9.654c2.444-.435 4.583.577 5.448 2.583c.577 1.34 1.027 2.695 1.46 4.008c.332.99.664 1.98 1.046 2.959c.67 1.708 1.197 2.15 1.387 2.257c1.218-.38 2.467-4.167 2.875-5.41c.132-.402.243-.737.328-.973c.088-.228.195-.57.324-.979c1.1-3.43 2.477-7.144 4.924-7.762c.74-.191 1.9-.166 3.154 1.035c2.665 2.543 2.526 8.48 2.437 12.41q-.029.792-.033 1.583c0 6.272.931 10.655 1.641 12.16c.365-.77.994-2.63 1.601-7.007c.832-6.066.931-12.624 1.027-18.41c.159-10.24.273-17.663 3.98-19.408c.55-.339 1.467-.522 2.44-.033c3.58 1.803 5.325 11.884 5.325 30.817c.224 2.926 1.012 6.006 1.656 6.448c.008-.066.526-.39 1.399-2.01c.923-1.718 1.84-6.665 2.653-11.026c1.786-9.614 2.602-12.989 4.722-13.166c1.62-.158 2.367 1.896 2.68 2.76c.88 2.422 1.535 7.888 2.233 13.678c.534 4.49 1.304 10.902 2.092 13.497c.08-.228.176-.5.28-.836c1.813-5.878 1.976-17.887 2.138-29.507c.216-16.14.504-26.139 3.448-28.226a2.45 2.45 0 0 1 2.234-.316c3.452 1.144 3.718 11.254 3.52 35.8c-.141 17.799-.314 39.952 3.319 43.603c.324.32.544.32.63.32c.165 0 .408-.161.662-.452c3.687-4.162 6.014-26.022 3.375-46.927c-.342-2.723.43-5.47 1.84-6.526c.71-.537 1.575-.647 2.37-.313c2.054.877 3.445 4.63 4.255 11.484c.339 2.87.641 5.974.931 9.036c.641 6.683 1.509 15.69 2.684 17.67c.36-.46 1.096-1.704 2.19-5.038l2.307.753c-1.696 5.157-3.026 7.1-4.755 6.902c-2.69-.299-3.468-5.734-4.84-20.055c-.29-3.048-.59-6.132-.928-8.989c-1.03-8.74-2.782-9.532-2.801-9.54c-.342.174-1.137 1.992-.842 4.31c2.558 20.32.673 43.597-3.964 48.834c-.747.842-1.587 1.27-2.485 1.27`],[`fill`,`#53b9ff`,`d`,`M39.863 54.115L.311 93.716l60.995 61.179L0 216.385l39.428 39.619l61.43-61.507l61.097 61.068l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m140.517 154.896l-39.658 39.601l61.097 61.069l39.552-39.602z`],[`fill-opacity`,`.2`,`d`,`m140.517 154.896l-39.658 39.601l15.267 15.182z`],[`fill`,`#53b9ff`,`d`,`M194.57 100.985L256 39.478L216.431 0l-61.412 61.384L93.917.311L54.365 39.913L216.01 201.761l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m115.36 100.987l39.659-39.602L93.917.313L54.365 39.914z`],[`fill-opacity`,`.2`,`d`,`m115.359 100.985l39.659-39.601l-15.271-15.186z`],[`width`,`40`,`height`,`40`,`alt`,``,3,`src`],[1,`who`],[1,`by`],[1,`login`],[`aria-hidden`,`true`,1,`go`],[1,`sr-only`]],template:function(e,t){if(e&1&&(H(0,`section`,0)(1,`div`,1),Fg(2,`span`,2)(3,`span`,3),H(4,`span`,4),Fg(5,`span`,5),U(),H(6,`span`,6),Fg(7,`span`,5),U(),H(8,`span`,7),Fg(9,`span`,5),U(),H(10,`div`,8),P(11,CG,2,0,`:svg:svg`,9)(12,wG,11,0,`:svg:svg`,10)(13,TG,5,0,`:svg:svg`,11)(14,EG,7,0,`:svg:svg`,9),U()(),H(15,`p`,12)(16,`span`,13),J(17,`✦`),U(),J(18),U(),H(19,`h2`,14),J(20),U(),H(21,`p`,15),J(22),U(),P(23,DG,13,5,`a`,16),P(24,OG,8,2,`a`,17),H(25,`h3`,18),J(26),U(),H(27,`ul`,19),I(28,kG,2,3,`li`,20,wg),U()()),e&2){let e,n,r;M(11),F((e=t.info().id)===`nativescript`?11:e===`angular-native`?12:e===`analog`?13:e===`capacitor`?14:-1),M(7),X(` `,t.info().badge),M(2),Y(t.info().heading),M(2),Y(t.info().summary),M(),F((n=t.info().author)?23:-1,n),M(),F((r=t.info().link)?24:-1,r),M(2),X(` `,t.plansTitle(),` `),M(2),L(t.info().plans)}},styles:[`[_nghost-%COMP%] { + display: block; + min-height: 100%; + background: radial-gradient(60% 50% at 50% 18%, color-mix(in srgb, var(--%NS%brand) 22%, transparent), transparent 70%); +} + +.soon[_ngcontent-%COMP%] { + display: flex; + flex-direction: column; + align-items: center; + max-width: 560px; + margin: 0 auto; + padding: 24px 0 40px; + color: var(--%NS%text-2); + text-align: center; +} + +.stage[_ngcontent-%COMP%] { + position: relative; + display: grid; + place-items: center; + width: 180px; + height: 180px; + margin: 0 auto 16px; +} + +.logo[_ngcontent-%COMP%] { + position: relative; + z-index: 2; + display: grid; + place-items: center; + width: 116px; + height: 116px; + border-radius: 32px; + background: var(--%NS%surface-2); + box-shadow: 0 0 0 1px color-mix(in srgb, var(--%NS%brand) 45%, transparent), 0 20px 60px -10px color-mix(in srgb, var(--%NS%brand) 70%, transparent); + animation: _ngcontent-%COMP%_float 4s ease-in-out infinite; +} + +.ring[_ngcontent-%COMP%] { + position: absolute; + inset: 30px; + border-radius: 50%; + border: 1px solid color-mix(in srgb, var(--%NS%brand) 60%, transparent); + animation: _ngcontent-%COMP%_pulse 3s ease-out infinite; +} + +.r2[_ngcontent-%COMP%] { + animation-delay: 1.5s; +} + +.orbit[_ngcontent-%COMP%] { + position: absolute; + inset: 0; + animation: spin 9s linear infinite; +} + +.o2[_ngcontent-%COMP%] { + inset: 18px; + animation-duration: 6s; + animation-direction: reverse; +} + +.o3[_ngcontent-%COMP%] { + inset: 40px; + animation-duration: 12s; +} + +.dot[_ngcontent-%COMP%] { + position: absolute; + top: -4px; + left: 50%; + width: 8px; + height: 8px; + margin-left: -4px; + border-radius: 50%; + background: var(--%NS%brand); + box-shadow: 0 0 12px var(--%NS%brand); +} + +.o2[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%] { + width: 6px; + height: 6px; + background: var(--%NS%accent); + box-shadow: 0 0 10px var(--%NS%accent); +} + +.o3[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%] { + width: 4px; + height: 4px; + background: var(--%NS%text-strong); +} + +.badge[_ngcontent-%COMP%] { + position: relative; + display: inline-flex; + align-items: center; + gap: 6px; + height: 24px; + margin: 0 0 12px; + padding: 0 12px; + overflow: hidden; + border: 1px solid color-mix(in srgb, var(--%NS%brand) 55%, transparent); + border-radius: 99px; + background: color-mix(in srgb, var(--%NS%brand) 14%, var(--%NS%surface)); + color: var(--%NS%text-strong); + font-size: 12px; + font-weight: 600; + letter-spacing: 0.04em; +} + +.badge[_ngcontent-%COMP%]::after { + content: ""; + position: absolute; + inset: 0; + background: linear-gradient(100deg, transparent 20%, rgba(255, 255, 255, 0.2) 50%, transparent 80%); + transform: translateX(-100%); + animation: _ngcontent-%COMP%_shimmer 2.8s ease-in-out infinite; +} + +.spark[_ngcontent-%COMP%] { + color: var(--%NS%accent); + animation: _ngcontent-%COMP%_twinkle 1.6s ease-in-out infinite; +} + +h2[_ngcontent-%COMP%] { + margin: 0; + color: var(--%NS%text-strong); + font-size: 28px; + line-height: 1.2; + letter-spacing: -0.02em; + text-wrap: balance; + overflow-wrap: anywhere; +} + +.summary[_ngcontent-%COMP%] { + max-width: 480px; + margin: 12px 0 24px; + font-size: 14px; + line-height: 1.6; + text-wrap: pretty; +} + +.author[_ngcontent-%COMP%] { + display: inline-flex; + align-items: center; + gap: 12px; + max-width: 100%; + min-height: 44px; + padding: 8px 16px 8px 8px; + border: 1px solid var(--%NS%border-strong); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + color: var(--%NS%text); + text-align: left; + text-decoration: none; + transition: border-color 0.2s var(--%NS%ease), background-color 0.2s var(--%NS%ease), transform 0.2s var(--%NS%ease); +} + +.author[_ngcontent-%COMP%]:hover { + border-color: color-mix(in srgb, var(--%NS%brand) 70%, transparent); + background: var(--%NS%surface-2); + transform: translateY(-2px); +} + +.author[_ngcontent-%COMP%]:active { + transform: none; +} + +.author[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: 2px; +} + +.cta[_ngcontent-%COMP%] { + padding: 8px 16px; +} + +.author[_ngcontent-%COMP%] img[_ngcontent-%COMP%] { + flex: none; + border-radius: 50%; + background: var(--%NS%surface-3); +} + +.who[_ngcontent-%COMP%] { + display: grid; + min-width: 0; + line-height: 1.35; +} + +.who[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] { + overflow: hidden; + color: var(--%NS%text-strong); + font-size: 14px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.by[_ngcontent-%COMP%], +.login[_ngcontent-%COMP%] { + overflow: hidden; + color: var(--%NS%text-2); + font-size: 12px; + font-variant-numeric: tabular-nums; + text-overflow: ellipsis; + white-space: nowrap; +} + +.go[_ngcontent-%COMP%] { + flex: none; + margin-left: 4px; + color: var(--%NS%brand); + font-size: 16px; + transition: transform 0.2s var(--%NS%ease), color 0.2s var(--%NS%ease); +} + +.author[_ngcontent-%COMP%]:hover .go[_ngcontent-%COMP%], +.author[_ngcontent-%COMP%]:focus-visible .go[_ngcontent-%COMP%] { + transform: translateX(3px); +} + +.plans-title[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + width: 100%; + max-width: 440px; + margin: 32px 0 12px; + text-align: left; +} + +.plans[_ngcontent-%COMP%] { + display: grid; + gap: 8px; + width: 100%; + max-width: 440px; + margin: 0 auto; + padding: 0; + list-style: none; + text-align: left; +} + +.plans[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + display: flex; + gap: 12px; + align-items: flex-start; + padding: 12px 16px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius-sm); + background: var(--%NS%surface); + color: var(--%NS%text); + font-size: 13px; + line-height: 20px; + overflow-wrap: anywhere; + opacity: 0; + animation: _ngcontent-%COMP%_rise 0.5s var(--%NS%ease) forwards; +} + +.plans[_ngcontent-%COMP%] li[_ngcontent-%COMP%]::before { + content: ""; + flex: none; + width: 8px; + height: 8px; + margin-top: 6px; + border-radius: 50%; + background: var(--%NS%brand); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--%NS%brand) 20%, transparent); +} + +@media (max-height: 640px) { + .soon[_ngcontent-%COMP%] { + padding-top: 12px; + } + .stage[_ngcontent-%COMP%] { + width: 120px; + height: 120px; + margin-bottom: 8px; + } + .logo[_ngcontent-%COMP%] { + width: 80px; + height: 80px; + border-radius: 22px; + } + .logo[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] { + width: 60px; + height: auto; + } + .o3[_ngcontent-%COMP%] { + display: none; + } + h2[_ngcontent-%COMP%] { + font-size: 22px; + } +} +@media (max-width: 420px) { + h2[_ngcontent-%COMP%] { + font-size: 22px; + } + .author[_ngcontent-%COMP%] { + align-self: stretch; + } + .who[_ngcontent-%COMP%] { + flex: 1; + } +} +@keyframes _ngcontent-%COMP%_float { + 50% { + transform: translateY(-10px) rotate(-2deg); + } +} +@keyframes _ngcontent-%COMP%_pulse { + from { + transform: scale(0.8); + opacity: 0.9; + } + to { + transform: scale(1.6); + opacity: 0; + } +} +@keyframes _ngcontent-%COMP%_shimmer { + 60%, 100% { + transform: translateX(100%); + } +} +@keyframes _ngcontent-%COMP%_twinkle { + 50% { + opacity: 0.35; + transform: scale(0.8); + } +} +@keyframes _ngcontent-%COMP%_rise { + from { + opacity: 0; + transform: translateY(8px); + } + to { + opacity: 1; + transform: none; + } +} +@media (prefers-reduced-motion: reduce) { + .logo[_ngcontent-%COMP%], + .ring[_ngcontent-%COMP%], + .orbit[_ngcontent-%COMP%], + .badge[_ngcontent-%COMP%]::after, + .spark[_ngcontent-%COMP%] { + animation: none; + } + .ring[_ngcontent-%COMP%] { + opacity: 0.3; + } + .plans[_ngcontent-%COMP%] li[_ngcontent-%COMP%] { + opacity: 1; + animation: none; + } + .author[_ngcontent-%COMP%]:hover, + .author[_ngcontent-%COMP%]:hover .go[_ngcontent-%COMP%] { + transform: none; + } +}`]})};function jG(e){return` + .devframes-dock-entry button { + transition: opacity 0.2s, filter 0.2s, background-color 0.2s, transform 0.3s; + } + .devframes-dock-entry button:not(.scale-120) { + opacity: 0.45; + filter: saturate(0); + } + .devframes-dock-entry button:not(.scale-120):hover, + .devframes-dock-entry button:not(.scale-120):focus-visible { + opacity: 1; + filter: none; + } + .devframes-dock-entry button:focus-visible { + outline: 2px solid ${e===`light`?`#92400e`:`#f5a524`}; + outline-offset: 2px; + } + .devframes-dock-entry button.scale-120 { + transform: none; + background: ${e===`light`?`rgba(146, 64, 14, 0.12)`:`rgba(245, 165, 36, 0.16)`}; + box-shadow: inset 0 0 0 1px ${e===`light`?`rgba(146, 64, 14, 0.50)`:`rgba(245, 165, 36, 0.60)`}; + } + iframe { + background: ${e===`light`?`#ffffff`:`#0b0b0e`}; + color-scheme: ${e}; + } + @media (prefers-reduced-motion: reduce) { + .devframes-dock-entry button { + transition: none; + } + } +`}var MG=new Map;function NG(e,t=`dark`,n=50){let r=e?.querySelector(`devframes-dock-standalone`)?.shadowRoot;if(r){if(e){let t=MG.get(e);t!==void 0&&(clearTimeout(t),MG.delete(e))}let n=r.querySelector(`style[data-pangular]`);n||(n=e.createElement(`style`),n.dataset.pangular=``,r.append(n)),n.textContent=jG(t);return}if(n>0&&e){let r=MG.get(e);r!==void 0&&clearTimeout(r);let i=setTimeout(()=>{MG.delete(e),NG(e,t,n-1)},100);MG.set(e,i)}}var PG=class e{current=j(`dark`);constructor(){let e=E(Cs),t=LG(),n=document.documentElement.dataset.theme,r=n===`light`||n===`dark`;if(n===`light`||n===`dark`)this.current.set(n);else if(t)r=!0,this.apply(IG(t));else{let t=FG();if(t){this.current.set(t.matches?`light`:`dark`);let n=e=>{r||this.current.set(e.matches?`light`:`dark`)};t.addEventListener(`change`,n),e.onDestroy(()=>t.removeEventListener(`change`,n))}}let i;try{i=new BroadcastChannel(`pangular:theme`)}catch{}uc(()=>{let e=this.current();try{i?.postMessage(e)}catch{}try{let t=window;for(;t!==t.parent;)t=t.parent,t.postMessage({type:`pangular:theme-change`,theme:e},`*`)}catch{}});let a=e=>{if(e.source!==window.parent)return;let t=e.data;t?.type===`pangular:theme-change`&&(r=!0,this.apply(t.theme===`dark`?`dark`:`light`))};window.addEventListener(`message`,a);let o;t&&(o=new MutationObserver(()=>this.apply(IG(t))),o.observe(t,{attributes:!0,attributeFilter:[`class`]})),e.onDestroy(()=>{window.removeEventListener(`message`,a),o?.disconnect(),i?.close()})}apply(e){this.current.set(e),document.documentElement.dataset.theme=e}static ɵfac=function(t){return new(t||e)};static ɵprov=kl({token:e,factory:e.ɵfac})};function FG(){try{return window.matchMedia?.(`(prefers-color-scheme: light)`)??null}catch{return null}}function IG(e){return e.classList.contains(`dark`)?`dark`:`light`}function LG(){try{return window.frameElement?.closest(`.devframes-color-root`)??null}catch{return null}}var RG=`__DEVFRAME_HUB_CLIENT_CONTEXT__`,zG=`pangular:`;function BG(){try{return window.parent===window?void 0:window.parent[RG]}catch{return}}function VG(e,t,n=50){let r=BG();if(!r){if(n<=0||window.parent===window)return()=>{};let r=()=>{},i=setTimeout(()=>r=VG(e,t,n-1),100);return()=>{clearTimeout(i),r()}}let i=e.map(e=>r.docks.getStateById(zG+e)?.events.on(`entry:activated`,()=>t(e))??(()=>{})),a=r.docks.selectedId,o=e.find(e=>zG+e===a);return o&&t(o),()=>i.forEach(e=>e())}async function HG(e){let t=BG();if(!t)return!1;try{return await t.docks.switchEntry(zG+e)}catch{return!1}}var UG=`pangular-tab`;function WG(e,t,n){let r=new URLSearchParams(e.replace(/^#/,``)).get(`tab`)||t;return n.find(e=>e===r)}function GG(e){try{return sessionStorage.getItem(`${UG}:${e}`)}catch{return null}}function KG(e,t){try{sessionStorage.setItem(`${UG}:${e}`,t)}catch{}}function qG(e,t){try{return new URL(e,t.href).origin===t.origin}catch{return!1}}function JG(e,t){if(t.protocol!==`chrome-extension:`)return!1;try{let{protocol:t}=new URL(e);return t===`http:`||t===`https:`}catch{return!1}}function YG(e=location){let t=new URLSearchParams(e.search).get(`baseURL`);if(t&&(qG(t,e)||JG(t,e)))return t;if(!(e.pathname.includes(`__pangular`)||e.pathname.includes(`__devframes/`)))return[`/__pangular/`,`./`]}var XG=[`nav`],ZG=[`main`],QG=e=>[e],$G=(e,t)=>t.id;function eK(e,t){e&1&&(A(),z(0,`svg`,4),V(1,`path`,20),B())}function tK(e,t){e&1&&(A(),z(0,`svg`,4),V(1,`path`,21)(2,`path`,22)(3,`path`,23)(4,`path`,24)(5,`path`,25)(6,`path`,26),B())}function nK(e,t){e&1&&(A(),z(0,`svg`,5)(1,`defs`)(2,`linearGradient`,27),V(3,`stop`,28)(4,`stop`,29),B()(),V(5,`path`,30),z(6,`g`,31),V(7,`path`,32)(8,`path`,33)(9,`path`,34)(10,`path`,35),B()())}function rK(e,t){e&1&&(A(),z(0,`svg`,6),V(1,`path`,36)(2,`path`,37)(3,`path`,38)(4,`path`,39),B())}function iK(e,t){e&1&&(A(),z(0,`svg`,7),V(1,`path`,40),B())}function aK(e,t){e&1&&(A(),z(0,`svg`,8)(1,`defs`)(2,`linearGradient`,41),V(3,`stop`,42)(4,`stop`,43)(5,`stop`,44)(6,`stop`,45)(7,`stop`,46)(8,`stop`,47),B()(),V(9,`path`,48),B())}function oK(e,t){e&1&&(A(),z(0,`svg`,9),V(1,`rect`,49),z(2,`g`,50)(3,`defs`)(4,`mask`,51),V(5,`rect`,52),z(6,`g`,53),V(7,`path`,54)(8,`path`,55),B()(),z(9,`clipPath`,56),V(10,`rect`,57),B()(),z(11,`g`,58),V(12,`ellipse`,59),B(),z(13,`g`,60),V(14,`path`,61)(15,`path`,62),B(),z(16,`g`,58),V(17,`ellipse`,63)(18,`ellipse`,64),z(19,`g`,65),V(20,`line`,66)(21,`circle`,67)(22,`line`,68)(23,`circle`,69),B()()()())}function sK(e,t){if(e&1){let e=W();z(0,`button`,71),G(`click`,function(){let t=O(e).$implicit;return k(K(2).switchTab(t.id))}),V(1,`app-tab-icon`,72),z(2,`span`),J(3),B()()}if(e&2){let e=t.$implicit,n=K(2);q(`active`,n.tab()===e.id),N(`aria-current`,n.tab()===e.id?`page`:null),M(),R(`name`,e.id),M(2),Y(e.label)}}function cK(e,t){e&1&&I(0,sK,4,5,`button`,70,$G),e&2&&L(K().tabs())}function lK(e,t){e&1&&(z(0,`p`,16),J(1,` Can't reach the devtools server. Check that the dev server is running, then reload. `),B())}function uK(e,t){e&1&&V(0,`app-coming-soon`,17),e&2&&R(`info`,t)}function dK(e,t){e&1&&(z(0,`p`,18),J(1,`Looking for an Angular Native app…`),B())}function fK(e,t){e&1&&(z(0,`p`,19),J(1,` This inspector is turned off in the devtools config (`),z(2,`code`),J(3,`inspectors`),B(),J(4,`). `),B())}function pK(e,t){if(e&1){let e=W();z(0,`app-dashboard`,75),G(`navigate`,function(t){return O(e),k(K(3).switchTab(t))}),B()}e&2&&R(`rpc`,K(3).rpc())}function mK(e,t){if(e&1){let e=W();z(0,`app-component-tree`,76),G(`focusHandled`,function(){return O(e),k(K(3).componentFocus.set(null))})(`showForm`,function(t){return O(e),k(K(3).showForm(t))}),B()}if(e&2){let e=K(3);R(`rpc`,e.rpc())(`focus`,e.componentFocus())}}function hK(e,t){if(e&1){let e=W();z(0,`app-route-inspector`,77),G(`showComponent`,function(t){return O(e),k(K(3).showComponent(t))}),B()}e&2&&R(`rpc`,K(3).rpc())}function gK(e,t){e&1&&V(0,`app-signal-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function _K(e,t){e&1&&V(0,`app-di-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function vK(e,t){e&1&&V(0,`app-store-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function yK(e,t){e&1&&V(0,`app-network-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function bK(e,t){if(e&1){let e=W();z(0,`app-forms-inspector`,78),G(`focusHandled`,function(){return O(e),k(K(3).formFocus.set(null))}),B()}if(e&2){let e=K(3);R(`rpc`,e.rpc())(`focus`,e.formFocus())}}function xK(e,t){e&1&&V(0,`app-pipes-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function SK(e,t){e&1&&V(0,`app-analog-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function CK(e,t){if(e&1&&P(0,pK,1,1,`app-dashboard`,73)(1,mK,1,2,`app-component-tree`,74)(2,hK,1,1,`app-route-inspector`,73)(3,gK,1,1,`app-signal-inspector`,73)(4,_K,1,1,`app-di-inspector`,73)(5,vK,1,1,`app-store-inspector`,73)(6,yK,1,1,`app-network-inspector`,73)(7,bK,1,2,`app-forms-inspector`,74)(8,xK,1,1,`app-pipes-inspector`,73)(9,SK,1,1,`app-analog-inspector`,73),e&2){let e;F((e=K(2).tab())===`dashboard`?0:e===`components`?1:e===`routes`?2:e===`signals`?3:e===`injectors`?4:e===`store`?5:e===`network`?6:e===`forms`?7:e===`pipes`?8:e===`analog`?9:-1)}}function wK(e,t){e&1&&I(0,CK,10,1,null,null,wg),e&2&&L(sv(0,QG,K().scopeKey()))}var TK=[`angular`,`ngrx`,`analog`,`angular-native`,`nativescript`,`capacitor`],EK={angular:`Angular`,ngrx:`NgRx Store`,analog:`Analog`,"angular-native":`Angular Native`,nativescript:`NativeScript`,capacitor:`Capacitor`},DK={ngrx:`#d770e8`,analog:`#ff5470`,"angular-native":`#ff4d6d`,nativescript:`#8196ff`,capacitor:`#53b9ff`},OK={ngrx:`#a21caf`,analog:`#be123c`,"angular-native":`#be123c`,nativescript:`#3448c5`,capacitor:`#0369a1`},kK={ngrx:`store`,analog:`analog`},AK={store:`ngrx`,analog:`analog`},jK={"angular-native":[`components`,`signals`,`injectors`,`store`,`pipes`]},MK={capacitor:{id:`capacitor`,name:`Capacitor`,badge:`Coming Soon`,heading:`Capacitor Support`,summary:`Connect Ionic and Capacitor apps running in a device WebView back to these tools.`,color:`#119eff`,plans:[`Manual overlay start for apps that load from capacitor:// or a device`,`Connection settings passed in, no cross-origin probing`,`Setup guides for the Android emulator and iOS simulator`],pr:21,author:{name:`Erkam Yaman`,login:`erkamyaman`}}},NK={id:`nativescript`,name:`NativeScript`,badge:`Available`,heading:`Inspect NativeScript apps`,summary:`A NativeScript Angular app reports from the simulator or device to this server, and its components, signals, injectors and NgRx stores show up in the Angular dock.`,color:`#3c5afd`,plansTitle:`Set up an app`,plans:[`Install @pangular-inspector/devtools and @valor/nativescript-websockets`,`Call initNativeScriptOverlay() in main.ts, before the app bootstraps`,`Run npx pangular dev --no-auth in the app, then open the Angular dock`],link:{label:`NativeScript setup guide`,href:`https://pangular-inspector.dev/guides/nativescript/`}},PK={id:`analog`,name:`Analog`,badge:`Not in this app`,heading:`This app doesn’t use Analog`,summary:`In an Analog app this dock shows your file routes, server load() and API calls, render modes and route lint.`,color:`#dd0330`,plans:[`Which page, layout and .server.ts files render a URL`,`Every load(), server function and API call with timing`,`SSR, prerendered or client only, per page`],link:{label:`Get started with Analog`,href:`https://analogjs.org/docs/getting-started`}},FK={id:`angular-native`,name:`Angular Native`,badge:`Not connected`,heading:`No Angular Native app is connected`,summary:`Start the overlay in your Angular Native app and run this server with --no-auth. The tabs fill as soon as the app reports.`,color:`#e11d48`,plans:[`The component tree, with the view outlined on the device`,`Signals and injectors of the running app`,`Live @ngrx/signals and @ngrx/store state`],link:{label:`Set up Angular Native`,href:`https://pangular-inspector.dev/guides/angular-native/`}};function IK(){let e=new URLSearchParams(location.search).get(`view`);return TK.find(t=>t===e)??null}Ub(class e{analog=j(!1);allTabs=[{id:`dashboard`,label:`Dashboard`},{id:`analog`,label:`Analog`},{id:`components`,label:`Components`},{id:`routes`,label:`Routes`},{id:`signals`,label:`Signals`},{id:`injectors`,label:`Injectors`},{id:`store`,label:`Store`},{id:`forms`,label:`Forms`},{id:`pipes`,label:`Pipes`},{id:`network`,label:`SSR & HTTP`}];view=j(IK());viewAccent=Q(()=>{let e=this.view(),t=this.themeService.current()===`light`?OK:DK;return(e&&t[e])??null});title=Q(()=>{let e=this.view();return e?EK[e]:`Pangular Inspector`});mainLabel=Q(()=>this.availableTabs().find(e=>e.id===this.tab())?.label??this.title());analogKnown=j(!1);nativePageId=j(null);nativeKnown=j(!1);scopeKey=Q(()=>this.view()===`angular-native`?this.nativePageId()??``:``);comingSoon=Q(()=>{let e=this.view();return e===`analog`?this.analogKnown()&&!this.analog()?PK:void 0:e===`nativescript`?NK:e===`angular-native`?this.nativeKnown()&&!this.nativePageId()?FK:void 0:e?MK[e]:void 0});config=Q(()=>yE(this.rpc()));tabEnabled=SE;availableTabs=Q(()=>{if(this.comingSoon())return[];let e=this.view(),t=e?kK[e]:void 0,n=this.allTabs.filter(e=>SE(e.id,this.config()));if(t)return n.filter(e=>e.id===t);let r=e?jK[e]:void 0;return r?n.filter(e=>r.includes(e.id)):n.filter(t=>(t.id!==`analog`||this.analog())&&!(e===`angular`&&AK[t.id]))});tabs=Q(()=>{let e=this.availableTabs();if(this.rpc())return e;let t=this.tab();return e.filter(e=>e.id===`dashboard`||e.id===t)});tab=Tv(()=>{let e=this.view();return e&&(kK[e]??jK[e]?.[0])||`dashboard`});rpc=j(null);connected=j(!1);connectionFailed=j(!1);hiddenPages=j([]);pageId=eE();backgroundNote=Q(()=>{let e=this.hiddenPages();return this.pageId?e.includes(this.pageId)?`Tab in background, showing the last data.`:``:e.length?e.length===1?`A tab is in the background, showing its last data.`:`${e.length} tabs are in the background, showing their last data.`:``});stopVisibility=()=>{};stopNative=()=>{};stopFollowing=()=>{};stopHighlights=()=>{};nav=Rv(`nav`);main=Rv(`main`);injector=E(xs);themeService=E(PG);navObserver;navFade=j({start:!1,end:!1});constructor(){Id(()=>{let e=this.nav()?.nativeElement;e&&typeof ResizeObserver<`u`&&(this.navObserver=new ResizeObserver(()=>this.measureNav()),this.navObserver.observe(e))}),ey(()=>{this.tab(),this.tabs(),Cv(()=>{this.revealActiveTab(),this.measureNav()})}),uc(()=>{let e=this.themeService.current();Cv(()=>{try{window.parent!==window&&NG(window.parent.document,e)}catch{}})})}measureNav(){let e=this.nav()?.nativeElement;if(!e)return;let t=e.scrollWidth-e.clientWidth,n=e.scrollLeft>1,r=t>1&&e.scrollLeftn?e.scrollLeft=Math.max(0,n):e.scrollLeftthis.showView(e)));let e=WG(location.hash,GG(this.tabScope()),this.availableTabs().map(e=>e.id));e?this.tab.set(e):!this.view()&&WG(location.hash,GG(this.tabScope()),[`analog`])===`analog`&&(this.restoreAnalog=!0),this.stopHighlights=sE(()=>this.rpc());let t=YG();kT(t?{baseURL:t}:{}).then(e=>{this.rpc.set(e),this.connected.set(!0),this.watchVisibility(e),this.watchAngularNative(e),e.scope(`pangular`).rpc.call(`analog-project`).then(e=>{let t=!!e?.analog;this.analog.set(t),this.analogKnown.set(!0),t&&this.restoreAnalog&&SE(`analog`,this.config())&&this.tab.set(`analog`),this.restoreAnalog=!1,!t&&this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)},()=>{this.analogKnown.set(!0),this.restoreAnalog=!1,this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)}),e.events.on(`connection:status`,e=>{this.connected.set(e===`connected`)})},()=>{this.connectionFailed.set(!0),this.analogKnown.set(!0),this.nativeKnown.set(!0)})}ngOnDestroy(){this.stopNative(),this.stopFollowing(),this.stopVisibility(),this.stopHighlights(),this.navObserver?.disconnect()}showView(e){if(e===this.view())return;$T(e===`angular-native`?this.nativePageId():null),this.view.set(e);let t=new URL(location.href);t.searchParams.set(`view`,e),t.hash=``,history.replaceState(history.state,``,t)}formFocus=j(null);componentFocus=Tv({source:this.tab,computation:()=>null});showForm(e){this.formFocus.set({id:e}),this.switchTab(`forms`)}showComponent(e){this.config().inspectors.components&&(this.switchTab(`components`),this.componentFocus.set(e))}inspectFromPanel({source:e,origin:t,data:n}){if(e!==window.parent||t!==location.origin)return;let r=n;r?.type===`pangular:inspect-component`&&typeof r.id==`string`&&this.tab()===`components`&&this.config().inspectors.components&&this.componentFocus.set({id:r.id})}switchTab(e){let t=AK[e];if(this.view()===`angular`&&t){this.activateDock(t,e);return}this.setTab(e),history.replaceState(history.state,``,`#tab=${e}`)}restoreAnalog=!1;setTab(e){this.restoreAnalog=!1,this.keepFocus(),this.tab.set(e),KG(this.tabScope(),e)}tabScope(){return this.view()??`panel`}async watchAngularNative(e){try{let t=await e.scope(`pangular`).rpc.sharedState(`component-tree`),n=e=>{let t=e?.pages,n=bD(t,this.nativePageId());this.view()===`angular-native`&&$T(n),this.nativePageId.set(n),this.nativeKnown.set(!0)};n(t.value()),this.stopNative(),this.stopNative=t.on(`updated`,n)}catch{this.nativeKnown.set(!0)}}async watchVisibility(e){try{let t=await e.scope(`pangular`).rpc.sharedState(`page-visibility`),n=e=>{let t=e?.hidden;this.hiddenPages.set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])};n(t.value()),this.stopVisibility(),this.stopVisibility=t.on(`updated`,n)}catch{}}keepFocus(){let e=document.activeElement,t=this.main()?.nativeElement;(!e||e===document.body||t?.contains(e))&&Id(()=>{let e=document.activeElement;e&&e!==document.body||(this.nav()?.nativeElement.querySelector(`button.active`)??this.main()?.nativeElement)?.focus()},{injector:this.injector})}async activateDock(e,t){if(await HG(e))return;if(window.parent===window){this.keepFocus(),this.showView(e);return}let n=this.rpc();if(!n?.call){this.setTab(t);return}try{await n.call(`hub:docks:activate`,{dockId:`pangular:${e}`}),this.keepFocus(),this.showView(e)}catch{this.setTab(t)}}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-root`]],viewQuery:function(e,t){e&1&&e_(t.nav,XG,5)(t.main,ZG,5),e&2&&t_(2)},hostVars:2,hostBindings:function(e,t){e&1&&G(`message`,function(e){return t.inspectFromPanel(e)},ju),e&2&&C_(`--%NS%accent`,t.viewAccent())},decls:28,vars:21,consts:[[`nav`,``],[`main`,``],[1,`brand`],[1,`mark`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 256 256`,`aria-hidden`,`true`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 32 32`,`aria-hidden`,`true`],[`width`,`24`,`height`,`17`,`viewBox`,`0 0 256 182`,`aria-hidden`,`true`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 24 24`,`fill`,`currentColor`,`aria-hidden`,`true`],[`width`,`20`,`height`,`22`,`viewBox`,`0 0 223 236`,`aria-hidden`,`true`],[`width`,`30`,`height`,`30`,`viewBox`,`0 0 500 500`,`aria-hidden`,`true`],[1,`title`],[`aria-label`,`Inspectors`,3,`scroll`],[`role`,`status`,1,`status`],[`aria-hidden`,`true`,1,`dot`],[`tabindex`,`-1`],[`role`,`status`,1,`background-note`],[`role`,`alert`,1,`connection-error`],[3,`info`],[`role`,`status`,1,`turned-off`],[1,`turned-off`],[`fill`,`#3c5afd`,`d`,`M237.248 18.752q18.061 18.06 18.748 45.247V192c-.457 18.12-6.707 33.207-18.748 45.247c-12.04 12.04-27.127 18.291-45.251 18.752H63.999q-27.187-.69-45.247-18.752C6.712 225.208.46 210.121 0 192.001V64q.69-27.187 18.752-45.247Q36.812.692 63.999 0h127.998c18.124.46 33.211 6.711 45.251 18.752m-17.655 103q-6.033-6.003-6.28-15.066V64q-.192-9.063-6.221-15.091c-4.02-4.023-9.054-6.093-15.095-6.22h-21.312v106.626L85.315 42.687H63.999c-6.042.128-11.072 2.198-15.091 6.221c-4.023 4.02-6.093 9.05-6.22 15.09v42.688q-.249 9.063-6.281 15.066q-6.03 5.996-15.091 6.246q9.062.255 15.09 6.25c4.024 4.002 6.115 9.024 6.281 15.066V192c.128 6.037 2.198 11.072 6.221 15.091q6.03 6.03 15.09 6.22h21.317V106.687l85.37 106.627h21.312c6.041-.128 11.076-2.202 15.095-6.221s6.093-9.054 6.22-15.09v-42.688q.249-9.063 6.281-15.066q6.03-5.995 15.091-6.25q-9.062-.25-15.09-6.246`],[`fill`,`#53b9ff`,`d`,`M39.863 54.115L.311 93.716l60.995 61.179L0 216.385l39.428 39.619l61.43-61.507l61.097 61.068l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m140.517 154.896l-39.658 39.601l61.097 61.069l39.552-39.602z`],[`fill-opacity`,`.2`,`d`,`m140.517 154.896l-39.658 39.601l15.267 15.182z`],[`fill`,`#53b9ff`,`d`,`M194.57 100.985L256 39.478L216.431 0l-61.412 61.384L93.917.311L54.365 39.913L216.01 201.761l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m115.36 100.987l39.659-39.602L93.917.313L54.365 39.914z`],[`fill-opacity`,`.2`,`d`,`m115.359 100.985l39.659-39.601l-15.271-15.186z`],[`id`,`an-mark-grad`,`x1`,`0`,`y1`,`0`,`x2`,`1`,`y2`,`1`],[`offset`,`0`,`stop-color`,`#f0224f`],[`offset`,`1`,`stop-color`,`#c4002d`],[`d`,`M16 0C27.2 0 32 4.8 32 16S27.2 32 16 32 0 27.2 0 16 4.8 0 16 0Z`,`fill`,`url(#an-mark-grad)`],[`transform`,`translate(6.4 6.4) scale(0.8)`,`fill`,`#fff`],[`d`,`M14.8486 0L23.138 16.8551L23.9996 3.99892L14.8486 0Z`],[`d`,`M16.9875 17.7114H7.01272L5.73926 20.627L12.0001 24L18.261 20.627L16.9875 17.7114Z`],[`d`,`M8.72168 13.9298H15.2812L11.9997 6.39575L8.72168 13.9298Z`],[`d`,`M9.15103 0L0 3.99892L0.861556 16.8551L9.15103 0Z`],[`fill`,`#c30f2e`,`d`,`M152.228.001L48.455 181.046H256L152.228 0z`],[`fill`,`#dd0330`,`d`,`M88.314 26.967L0 181.52h176.628L88.315 26.967z`],[`fill`,`#fff`,`d`,`M18.167 135.294h220.236v-2.419H18.167z`],[`fill`,`#fff`,`d`,`M204.38 170.667c-.861 0-1.67-.358-2.348-1.034c-4.045-4.063-4.221-20.586-4.026-45.33c.11-13.521.257-32.043-1.9-33.504c-2.104.873-2.315 16.172-2.451 26.301c-.162 11.785-.327 23.98-2.242 30.189c-.57 1.84-1.306 3.525-2.786 3.39c-2.086-.185-2.76-3.48-4.317-16.478c-.647-5.4-1.317-10.98-2.101-13.14a11 11 0 0 0-.269-.66c-.835 1.889-1.8 7.079-2.47 10.682c-.927 4.976-1.803 9.676-2.9 11.726c-.847 1.575-2.19 3.63-4.067 3.231c-2.558-.537-3.323-5.693-3.552-8.719c0-25.455-3.33-28.417-3.997-28.753l-.107.081l-.162-.036c-2.377 1.038-2.506 9.294-2.627 17.276c-.096 5.856-.198 12.492-1.053 18.701c-1.108 8.05-2.448 9.603-4.115 9.507c-3.838-.262-3.95-13.482-3.95-14.987c0-.472.012-1.028.027-1.642c.074-3.076.205-8.8-1.687-10.604c-.25-.239-.603-.515-.879-.437c-1.347.339-2.745 4.714-3.209 6.153c-.147.457-.265.833-.364 1.09c-.078.214-.177.515-.294.88c-1.02 3.095-2.18 6.183-4.16 6.944c-.732.284-1.498.222-2.216-.183c-.953-.541-1.73-1.646-2.455-3.482c-.397-1.016-.735-2.046-1.082-3.081c-.419-1.263-.85-2.569-1.384-3.808c-.419-.965-1.464-1.4-2.796-1.164c-2.768.494-3.232 3.29-3.622 7.5c-.07.733-.137 1.452-.228 2.128c-.011.198-.501 6.38-.814 8.344c-.865 5.39-2.002 7.512-3.89 7.358c-4.66-.398-6.798-20.836-6.684-29.47c.088-6.592-1.104-9-1.818-9.382c-.074-.034-.189-.096-.46.095c-.843.571-1.594 2.348-1.363 4.215c2.566 20.32.674 43.592-3.96 48.833c-1.46 1.649-3.448 1.627-4.832.236c-4.049-4.064-4.218-20.586-4.026-45.33c.11-13.521.254-32.043-1.9-33.504c-2.105.873-2.311 16.172-2.45 26.301c-.163 11.785-.329 23.98-2.246 30.189c-.57 1.84-1.307 3.525-2.782 3.39c-2.091-.186-2.761-3.48-4.321-16.478c-.649-5.4-1.319-10.98-2.101-13.14c-.1-.273-.189-.49-.27-.66c-.832 1.889-1.796 7.079-2.466 10.682c-.927 4.976-1.803 9.676-2.904 11.726c-.846 1.575-2.19 3.63-4.063 3.231c-2.558-.537-3.324-5.693-3.552-8.719c-.003-25.455-3.33-28.417-3.997-28.753l-.106.081l-.166-.036c-2.374 1.038-2.503 9.293-2.629 17.276c-.091 5.856-.194 12.492-1.048 18.701c-1.107 8.05-2.437 9.618-4.111 9.507c-3.846-.262-3.958-13.482-3.958-14.987c0-.472.016-1.028.03-1.642c.074-3.076.207-8.8-1.685-10.604c-.25-.239-.603-.515-.88-.438c-1.347.34-2.75 4.715-3.206 6.155a47 47 0 0 1-.364 1.09q-.16.432-.298.875c-1.02 3.096-2.18 6.187-4.155 6.95c-.736.282-1.506.22-2.22-.185c-.953-.541-1.734-1.646-2.454-3.482c-.398-1.016-.74-2.046-1.083-3.081c-.42-1.263-.854-2.569-1.387-3.808c-.416-.965-1.465-1.4-2.797-1.164c-3.188.567-3.943 4.52-4.55 9.238l-.106.839l-2.411-.32l.114-.824c.527-4.137 1.328-10.39 6.53-11.31c2.446-.435 4.585.581 5.446 2.583c.578 1.34 1.031 2.695 1.466 4.008c.324.99.654 1.98 1.037 2.959c.674 1.708 1.197 2.15 1.392 2.257c1.218-.38 2.462-4.167 2.873-5.414c.13-.402.24-.732.328-.968c.085-.233.195-.571.328-.98c1.097-3.43 2.474-7.144 4.918-7.762c.747-.191 1.903-.166 3.157 1.035c2.665 2.544 2.525 8.48 2.433 12.41c-.014.59-.028 1.126-.028 1.583c0 6.272.93 10.655 1.64 12.16c.367-.77.998-2.63 1.598-7.007c.831-6.066.938-12.624 1.027-18.41c.161-10.24.275-17.663 3.982-19.408c.552-.339 1.469-.522 2.436-.033c3.586 1.803 5.326 11.885 5.326 30.817c.225 2.926 1.013 6.006 1.66 6.448c.004-.066.53-.39 1.394-2.01c.925-1.718 1.845-6.665 2.655-11.026c1.792-9.614 2.606-12.989 4.726-13.166c1.615-.158 2.362 1.896 2.676 2.76c.883 2.422 1.537 7.888 2.23 13.678c.54 4.49 1.31 10.902 2.094 13.497c.084-.228.18-.5.283-.836c1.815-5.878 1.98-17.887 2.14-29.507c.22-16.14.503-26.139 3.448-28.226a2.44 2.44 0 0 1 2.233-.316c3.448 1.144 3.714 11.254 3.519 35.8c-.14 17.799-.313 39.952 3.323 43.603c.317.32.542.32.622.32c.17 0 .413-.161.67-.452c3.681-4.162 6.01-26.022 3.372-46.927c-.328-2.602.677-5.337 2.392-6.514c.946-.652 2.036-.736 2.978-.232c2.145 1.14 3.187 5.024 3.102 11.546c-.15 11.387 2.584 24.714 4.37 26.842c.282-.471.842-1.763 1.379-5.145c.301-1.87.799-8.153.806-8.216c.09-.71.155-1.398.217-2.097c.369-3.924.82-8.804 5.613-9.654c2.444-.435 4.583.577 5.448 2.583c.577 1.34 1.027 2.695 1.46 4.008c.332.99.664 1.98 1.046 2.959c.67 1.708 1.197 2.15 1.387 2.257c1.218-.38 2.467-4.167 2.875-5.41c.132-.402.243-.737.328-.973c.088-.228.195-.57.324-.979c1.1-3.43 2.477-7.144 4.924-7.762c.74-.191 1.9-.166 3.154 1.035c2.665 2.543 2.526 8.48 2.437 12.41q-.029.792-.033 1.583c0 6.272.931 10.655 1.641 12.16c.365-.77.994-2.63 1.601-7.007c.832-6.066.931-12.624 1.027-18.41c.159-10.24.273-17.663 3.98-19.408c.55-.339 1.467-.522 2.44-.033c3.58 1.803 5.325 11.884 5.325 30.817c.224 2.926 1.012 6.006 1.656 6.448c.008-.066.526-.39 1.399-2.01c.923-1.718 1.84-6.665 2.653-11.026c1.786-9.614 2.602-12.989 4.722-13.166c1.62-.158 2.367 1.896 2.68 2.76c.88 2.422 1.535 7.888 2.233 13.678c.534 4.49 1.304 10.902 2.092 13.497c.08-.228.176-.5.28-.836c1.813-5.878 1.976-17.887 2.138-29.507c.216-16.14.504-26.139 3.448-28.226a2.45 2.45 0 0 1 2.234-.316c3.452 1.144 3.718 11.254 3.52 35.8c-.141 17.799-.314 39.952 3.319 43.603c.324.32.544.32.63.32c.165 0 .408-.161.662-.452c3.687-4.162 6.014-26.022 3.375-46.927c-.342-2.723.43-5.47 1.84-6.526c.71-.537 1.575-.647 2.37-.313c2.054.877 3.445 4.63 4.255 11.484c.339 2.87.641 5.974.931 9.036c.641 6.683 1.509 15.69 2.684 17.67c.36-.46 1.096-1.704 2.19-5.038l2.307.753c-1.696 5.157-3.026 7.1-4.755 6.902c-2.69-.299-3.468-5.734-4.84-20.055c-.29-3.048-.59-6.132-.928-8.989c-1.03-8.74-2.782-9.532-2.801-9.54c-.342.174-1.137 1.992-.842 4.31c2.558 20.32.673 43.597-3.964 48.834c-.747.842-1.587 1.27-2.485 1.27`],[`d`,`M12.024.017V0L12 .008L11.976 0v.017L.812 3.892l1.605 14.875l9.559 5.207V24l.024-.013l.024.013v-.026l9.559-5.207l1.605-14.875zm6.868 14.244q-1.64 3.948-6.031 4.166c-2.829 0-4.661-1.7-4.66-1.7q-1.745-1.359-2.398-3.417c-.695-.76-.702-.841-.774-1.145c-.072-.303.045-.388.249-.685q.204-.298.098-.85q-.26-.36-.3-1.128q0-.37.496-.783q.495-.413.607-.632q.083-.119.065-1.031q-.006-.897.995-.975c1-.08 1.565-.832 1.879-1.174c.21-.228.52-.339.91-.341c.551-.026 1.052.185 1.484.62c1.075-.055 2.176.235 3.292.863q2.379 1.414 2.596 3.055q-.257 2.158-5.788-.113q-2.895.819-2.846 3.552q0 2.508 2.422 3.643c-.787-.772-1.122-1.422-1.01-1.959q2.456 2.906 5.588 2.173c-.92.032-1.65-.264-2.198-.893q2.116-.05 3.998-1.972c-.724.576-1.482.794-2.284.657q3.26-2.563 2.307-5.98l-.002-.006a3.02 3.02 0 0 1 .788 2.03q.023 1.175-.795 2.477q.613-.478 1.413-2.047c.23 2.117-.625 3.724-2.574 4.825q.934-.085 2.473-1.23m-5.567-6.63a.319.319 0 1 1 .638 0a.319.319 0 0 1-.638 0`],[`id`,`ng-grad`,`x1`,`49`,`x2`,`226`,`y1`,`214`,`y2`,`130`,`gradientUnits`,`userSpaceOnUse`],[`stop-color`,`#E40035`],[`offset`,`.24`,`stop-color`,`#F60A48`],[`offset`,`.352`,`stop-color`,`#F20755`],[`offset`,`.494`,`stop-color`,`#DC087D`],[`offset`,`.745`,`stop-color`,`#9717E7`],[`offset`,`1`,`stop-color`,`#6C00F5`],[`fill`,`url(#ng-grad)`,`d`,`m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z`],[`width`,`500`,`height`,`500`,`rx`,`112`,`fill`,`#1c1a17`],[`transform`,`translate(250 252) scale(1.38) translate(-120 -129)`],[`id`,`pi-mark-mask`],[`x`,`-60`,`y`,`-60`,`width`,`360`,`height`,`380`,`fill`,`#fff`],[`fill`,`none`,`stroke`,`#000`,`stroke-width`,`30`,`stroke-linejoin`,`miter`],[`d`,`M88 66 V196`],[`d`,`M88 66 H143 L170 98 L143 130 H88 Z`],[`id`,`pi-mark-clip`],[`x`,`-40`,`y`,`129`,`width`,`320`,`height`,`200`],[`transform`,`rotate(-10 120 129)`],[`cx`,`120`,`cy`,`129`,`rx`,`128`,`ry`,`34`,`fill`,`none`,`stroke`,`#78350f`,`stroke-width`,`10`],[`mask`,`url(#pi-mark-mask)`],[`fill`,`#fbbf24`,`d`,`M120 5 L2 46 L22 198 L120 253 Z`],[`fill`,`#f59e0b`,`d`,`M120 5 L238 46 L218 198 L120 253 Z`],[`clip-path`,`url(#pi-mark-clip)`,`cx`,`120`,`cy`,`129`,`rx`,`128`,`ry`,`34`,`fill`,`none`,`stroke`,`#1c1a17`,`stroke-width`,`22`],[`clip-path`,`url(#pi-mark-clip)`,`cx`,`120`,`cy`,`129`,`rx`,`128`,`ry`,`34`,`fill`,`none`,`stroke`,`#fde68a`,`stroke-width`,`10`],[`transform`,`translate(230.9 146.0) rotate(10) scale(1.5) translate(-4 -4)`],[`x1`,`9`,`y1`,`9`,`x2`,`21`,`y2`,`21`,`stroke`,`#1c1a17`,`stroke-width`,`14`,`stroke-linecap`,`round`],[`r`,`16`,`fill`,`#1c1a17`],[`x1`,`9`,`y1`,`9`,`x2`,`21`,`y2`,`21`,`stroke`,`#fde68a`,`stroke-width`,`7`,`stroke-linecap`,`round`],[`r`,`12`,`fill`,`#1c1a17`,`stroke`,`#fde68a`,`stroke-width`,`5`],[`type`,`button`,3,`active`],[`type`,`button`,3,`click`],[3,`name`],[3,`rpc`],[3,`rpc`,`focus`],[3,`navigate`,`rpc`],[3,`focusHandled`,`showForm`,`rpc`,`focus`],[3,`showComponent`,`rpc`],[3,`focusHandled`,`rpc`,`focus`]],template:function(e,t){if(e&1&&(z(0,`header`)(1,`h1`,2)(2,`span`,3),P(3,eK,2,0,`:svg:svg`,4)(4,tK,7,0,`:svg:svg`,4)(5,nK,11,0,`:svg:svg`,5)(6,rK,5,0,`:svg:svg`,6)(7,iK,2,0,`:svg:svg`,7)(8,aK,10,0,`:svg:svg`,8)(9,oK,24,0,`:svg:svg`,9),B(),z(10,`span`,10),J(11),B()(),z(12,`nav`,11,0),G(`scroll`,function(){return t.measureNav()}),P(14,cK,2,0),B(),z(15,`span`,12)(16,`span`,13),V(17,`span`),B(),J(18),B()(),z(19,`main`,14,1)(21,`p`,15),J(22),B(),P(23,lK,2,0,`p`,16)(24,uK,1,1,`app-coming-soon`,17)(25,dK,2,0,`p`,18)(26,fK,5,0,`p`,19)(27,wK,2,2),B()),e&2){let e;M(2),q(`ng-mark`,t.view()===`angular`)(`pi-mark`,!t.view()),M(),F(t.view()===`nativescript`?3:t.view()===`capacitor`?4:t.view()===`angular-native`?5:t.view()===`analog`?6:t.view()===`ngrx`?7:t.view()===`angular`?8:9),M(7),q(`ng-text`,t.view()===`angular`),M(),Y(t.title()),M(),q(`fade-start`,t.navFade().start)(`fade-end`,t.navFade().end),M(2),F(t.availableTabs().length>1?14:-1),M(),q(`connected`,t.connected())(`failed`,t.connectionFailed()),M(3),X(` `,t.connected()?`Live`:t.connectionFailed()?`Disconnected`:`Connecting…`,` `),M(),N(`aria-label`,t.mainLabel()),M(3),Y(t.backgroundNote()),M(),F(t.connectionFailed()?23:(e=t.comingSoon())?24:t.view()===`angular-native`&&!t.nativePageId()?25:t.tabEnabled(t.tab(),t.config())?27:26,e)}},dependencies:[fD,jk,oN,bP,IF,GL,cB,uV,TU,SG,AG,NE],styles:[`[_nghost-%COMP%] { + --%NS%accent-soft: color-mix(in srgb, var(--%NS%accent) 12%, transparent); + --%NS%accent-line: color-mix(in srgb, var(--%NS%accent) 45%, transparent); + display: flex; + flex-direction: column; + height: 100vh; + height: 100dvh; + min-width: 0; + background: radial-gradient(900px 300px at 10% -10%, color-mix(in srgb, var(--%NS%accent) 7%, transparent), transparent 70%), var(--%NS%bg); +} + +header[_ngcontent-%COMP%] { + position: sticky; + top: 0; + z-index: 10; + display: flex; + flex-wrap: nowrap; + flex-shrink: 0; + align-items: center; + gap: 8px 16px; + height: 45px; + padding: 0 16px; + background: color-mix(in srgb, var(--%NS%surface) 82%, transparent); + backdrop-filter: blur(12px) saturate(1.3); + border-bottom: 1px solid var(--%NS%border); +} + +.brand[_ngcontent-%COMP%] { + display: flex; + flex-shrink: 0; + align-items: center; + gap: 10px; + min-width: 0; + margin: 0; + color: var(--%NS%accent); + font-size: 15px; + font-weight: 650; + line-height: 1.2; + letter-spacing: -0.01em; + white-space: nowrap; +} + +.title[_ngcontent-%COMP%] { + overflow: hidden; + text-overflow: ellipsis; +} + +.mark[_ngcontent-%COMP%] { + display: grid; + flex-shrink: 0; + place-items: center; + width: 30px; + height: 30px; + border-radius: 8px; + background: color-mix(in srgb, var(--%NS%accent) 8%, transparent); + box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--%NS%accent) 28%, transparent); +} + +.mark.pi-mark[_ngcontent-%COMP%] { + background: none; + box-shadow: none; +} + +.mark.ng-mark[_ngcontent-%COMP%] { + background: linear-gradient(135deg, color-mix(in srgb, #f60a48 12%, transparent), color-mix(in srgb, #9717e7 12%, transparent)); + box-shadow: inset 0 0 0 1px color-mix(in srgb, #dc087d 34%, transparent); +} + +.ng-text[_ngcontent-%COMP%] { + background: linear-gradient(90deg, #ff4d75 0%, #f23d9a 45%, #c06bf5 80%, #a98bff 100%); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} +@media (prefers-color-scheme: light) { + :root:not([data-theme=dark]) [_nghost-%COMP%] .ng-text[_ngcontent-%COMP%] { + background-image: linear-gradient(90deg, #be123c 0%, #a21caf 50%, #6d28d9 100%); + } +} +:root[data-theme=light] [_nghost-%COMP%] .ng-text[_ngcontent-%COMP%] { + background-image: linear-gradient(90deg, #be123c 0%, #a21caf 50%, #6d28d9 100%); +} + +nav[_ngcontent-%COMP%] { + position: relative; + display: flex; + flex: 0 1 auto; + flex-wrap: nowrap; + gap: 2px; + min-width: 0; + height: 34px; + padding: 2px; + overflow-x: auto; + overflow-y: hidden; + overscroll-behavior-x: contain; + scroll-padding-inline: 24px; + scrollbar-width: none; + border: 1px solid var(--%NS%border); + border-radius: 10px; + background: var(--%NS%bg); +} + +nav[_ngcontent-%COMP%]::-webkit-scrollbar { + display: none; +} + +nav.fade-start[_ngcontent-%COMP%] { + mask-image: linear-gradient(90deg, transparent, #000 28px); +} + +nav.fade-end[_ngcontent-%COMP%] { + mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent); +} + +nav.fade-start.fade-end[_ngcontent-%COMP%] { + mask-image: linear-gradient(90deg, transparent, #000 28px, #000 calc(100% - 28px), transparent); +} + +nav[_ngcontent-%COMP%]:empty { + display: none; +} + +nav[_ngcontent-%COMP%] button[_ngcontent-%COMP%] { + position: relative; + display: inline-flex; + flex-shrink: 0; + align-items: center; + gap: 6px; + height: 28px; + padding: 0 10px; + border: none; + border-radius: 8px; + background: transparent; + color: var(--%NS%text-2); + font: inherit; + font-size: 13px; + font-weight: 500; + line-height: 1; + white-space: nowrap; + cursor: pointer; + -webkit-tap-highlight-color: transparent; + transition: background-color 0.16s var(--%NS%ease), color 0.16s var(--%NS%ease), box-shadow 0.16s var(--%NS%ease), transform 0.12s var(--%NS%ease); +} + +nav[_ngcontent-%COMP%] button[_ngcontent-%COMP%] app-tab-icon[_ngcontent-%COMP%] { + color: var(--%NS%text-3); + transition: color 0.16s var(--%NS%ease); +} + +nav[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover { + background: var(--%NS%surface-2); + color: var(--%NS%text); +} + +nav[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover app-tab-icon[_ngcontent-%COMP%] { + color: var(--%NS%text-2); +} + +nav[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active { + transform: scale(0.97); +} + +nav[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%] { + background: var(--%NS%surface-3); + color: var(--%NS%text-strong); + box-shadow: inset 0 0 0 1px var(--%NS%border-strong), 0 4px 14px -8px rgba(0, 0, 0, 0.9); +} + +nav[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%] app-tab-icon[_ngcontent-%COMP%] { + color: var(--%NS%accent); +} + +nav[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:focus-visible { + outline: 2px solid var(--%NS%accent); + outline-offset: -2px; +} + +.status[_ngcontent-%COMP%] { + display: inline-flex; + flex-shrink: 0; + align-items: center; + gap: 6px; + height: 24px; + margin-left: auto; + padding: 0 10px 0 6px; + border: 1px solid var(--%NS%border); + border-radius: 999px; + background: var(--%NS%surface); + color: var(--%NS%text-2); + font-size: 11px; + font-weight: 600; + line-height: 1; + letter-spacing: 0.06em; + text-transform: uppercase; + white-space: nowrap; + transition: color 0.2s var(--%NS%ease), border-color 0.2s var(--%NS%ease), background-color 0.2s var(--%NS%ease); +} + +.dot[_ngcontent-%COMP%] { + position: relative; + display: grid; + place-items: center; + width: 12px; + height: 12px; +} + +.dot[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--%NS%warn); + animation: _ngcontent-%COMP%_blink 1.2s ease-in-out infinite; +} + +.dot[_ngcontent-%COMP%]::before { + content: ""; + position: absolute; + inset: 0; + border-radius: 50%; + background: var(--%NS%warn); + opacity: 0; +} + +.status.connected[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%ok) 28%, transparent); + background: color-mix(in srgb, var(--%NS%ok) 8%, transparent); + color: var(--%NS%text); +} + +.status.connected[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { + background: var(--%NS%ok); + box-shadow: 0 0 6px var(--%NS%ok); + animation: none; +} + +.status.failed[_ngcontent-%COMP%] { + border-color: color-mix(in srgb, var(--%NS%danger) 36%, transparent); + color: var(--%NS%text); +} + +.status.failed[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { + background: var(--%NS%danger); + animation: none; +} + +.status.connected[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]::before { + background: var(--%NS%ok); + animation: _ngcontent-%COMP%_ping 2s var(--%NS%ease) infinite; +} + +@keyframes _ngcontent-%COMP%_blink { + 50% { + opacity: 0.3; + } +} +@keyframes _ngcontent-%COMP%_ping { + 0% { + transform: scale(0.5); + opacity: 0.55; + } + 80%, 100% { + transform: scale(1.6); + opacity: 0; + } +} +main[_ngcontent-%COMP%] { + flex: 1; + min-height: 0; + overflow: auto; + overscroll-behavior: contain; + scrollbar-gutter: stable; + padding: 20px; +} + +main[_ngcontent-%COMP%]:focus { + outline: none; +} + +main[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] { + animation: enter 0.28s var(--%NS%ease) both; +} + +.background-note[_ngcontent-%COMP%] { + margin: 0 0 12px; + color: var(--%NS%text-2); + font-size: 12px; +} +.background-note[_ngcontent-%COMP%]:empty { + display: none; +} + +.turned-off[_ngcontent-%COMP%] { + max-width: 60ch; + margin: 0; + padding: 12px 14px; + border: 1px solid var(--%NS%border); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + color: var(--%NS%text); +} + +.connection-error[_ngcontent-%COMP%] { + max-width: 60ch; + margin: 0; + padding: 12px 14px; + border: 1px solid color-mix(in srgb, var(--%NS%danger) 36%, transparent); + border-radius: var(--%NS%radius); + background: var(--%NS%surface); + color: var(--%NS%text); +} + +@media (max-width: 720px) { + header[_ngcontent-%COMP%] { + flex-wrap: wrap; + height: auto; + padding: 8px 16px; + } + nav[_ngcontent-%COMP%] { + order: 3; + flex: 1 1 100%; + } +} +@media (max-width: 560px) { + header[_ngcontent-%COMP%] { + padding-inline: 12px; + } + main[_ngcontent-%COMP%] { + padding: 16px 12px; + } +} +@media (max-width: 400px) { + .brand[_ngcontent-%COMP%] { + flex-shrink: 1; + gap: 8px; + } +}`]})}).catch(console.error);export{Kx as t}; \ No newline at end of file diff --git a/extension/ui/favicon.svg b/extension/ui/favicon.svg new file mode 100644 index 00000000..7e16207c --- /dev/null +++ b/extension/ui/favicon.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/extension/ui/index.html b/extension/ui/index.html new file mode 100644 index 00000000..443c6294 --- /dev/null +++ b/extension/ui/index.html @@ -0,0 +1,18 @@ + + + + + + + + + + Pangular Inspector + + + + + + + + diff --git a/extension/ui/theme-init.js b/extension/ui/theme-init.js new file mode 100644 index 00000000..1863a69d --- /dev/null +++ b/extension/ui/theme-init.js @@ -0,0 +1,10 @@ +(function () { + const param = new URLSearchParams(location.search).get('theme'); + const theme = + param === 'dark' ? 'dark' : param === 'default' || param === 'light' ? 'light' : null; + if (theme) document.documentElement.dataset.theme = theme; + const dark = theme ? theme === 'dark' : !matchMedia('(prefers-color-scheme: light)').matches; + const style = document.createElement('style'); + style.textContent = 'html{background:' + (dark ? '#0b0b0e' : '#ffffff') + '}'; + document.head.prepend(style); +})();