From 4859aeb853d84bcc04f7efca4c40deb837982d47 Mon Sep 17 00:00:00 2001 From: erKam Date: Sat, 10 Oct 2026 22:45:31 +0000 Subject: [PATCH 1/2] feat(forms): add path and type filters and a visible event limit to the timeline The forms timeline could only be filtered by origin, and it showed the last 100 events without saying so. On a busy form the event you are looking for was hard to find, and older events disappeared from the list with no hint that more existed. Add a field path filter (case-insensitive substring, Escape clears it) and an event type select listing the types present, combined with the origin filter, the same way the form-history agent tool combines its path, type and origin arguments. A count next to the filters says "Showing the latest 100 of N events" when the list is cut, and an empty state with Clear filters appears when the filters hide every event. Update the timeline section of the forms inspector docs and rebuild extension/ui. --- app/src/__tests__/forms-timeline.test.ts | 140 ++++++++++++++ app/src/pages/forms-timeline.ts | 172 +++++++++++++++++- apps/docs/src/content/inspectors/forms.md | 12 +- ...=> browser-agent-rpc-BXhoSh1z-DjrWw-na.js} | 2 +- .../{index-BEfrZ0QX.js => index-DY8jaI-m.js} | 96 +++++++++- extension/ui/index.html | 2 +- 6 files changed, 403 insertions(+), 21 deletions(-) create mode 100644 app/src/__tests__/forms-timeline.test.ts rename extension/ui/assets/{browser-agent-rpc-BXhoSh1z-C_twCiPD.js => browser-agent-rpc-BXhoSh1z-DjrWw-na.js} (93%) rename extension/ui/assets/{index-BEfrZ0QX.js => index-DY8jaI-m.js} (94%) diff --git a/app/src/__tests__/forms-timeline.test.ts b/app/src/__tests__/forms-timeline.test.ts new file mode 100644 index 00000000..64d41391 --- /dev/null +++ b/app/src/__tests__/forms-timeline.test.ts @@ -0,0 +1,140 @@ +import { TestBed, type ComponentFixture } from '@angular/core/testing'; +import { afterEach, describe, expect, it } from 'vitest'; +import { FormsTimeline } from '../pages/forms-timeline'; +import type { FormEvent } from '../pages/forms-types'; + +function event(seq: number, path: string, type: string, origin = 'user'): FormEvent { + return { formId: 'signup@p1', path, type, origin, seq, timestamp: 1_700_000_000_000 + seq }; +} + +const EVENTS: FormEvent[] = [ + event(1, 'email', 'value'), + event(2, 'email', 'status', 'code'), + event(3, 'address.city', 'value'), + event(4, 'address.zip', 'touched'), + event(5, 'name', 'value', 'agent'), + event(6, '', 'submit'), +]; + +async function setup(events: FormEvent[]) { + const fixture = TestBed.createComponent(FormsTimeline); + fixture.componentRef.setInput('events', events); + document.body.append(fixture.nativeElement); + await fixture.whenStable(); + return fixture; +} + +function root(fixture: ComponentFixture): HTMLElement { + return fixture.nativeElement as HTMLElement; +} + +function paths(fixture: ComponentFixture): string[] { + return Array.from(root(fixture).querySelectorAll('.events .path')).map( + (el) => el.textContent?.trim() ?? '', + ); +} + +function total(fixture: ComponentFixture): string { + return root(fixture).querySelector('.total')?.textContent?.trim() ?? ''; +} + +async function typePath(fixture: ComponentFixture, value: string) { + const input = root(fixture).querySelector('input[type="search"]')!; + input.value = value; + input.dispatchEvent(new Event('input')); + await fixture.whenStable(); + return input; +} + +afterEach(() => { + document.body.innerHTML = ''; +}); + +describe('FormsTimeline filters', () => { + it('labels the path filter and the event type select', async () => { + const fixture = await setup(EVENTS); + const input = root(fixture).querySelector('input[type="search"]')!; + expect(input.getAttribute('aria-label')).toBe('Filter by field path'); + const select = root(fixture).querySelector('button[role="combobox"]')!; + expect(select.getAttribute('aria-label')).toBe('Event type'); + expect(total(fixture)).toBe('6 events'); + }); + + it('offers All plus only the types present, in the agent tool order', async () => { + const fixture = await setup(EVENTS); + expect(fixture.componentInstance.typeOptions().map((o) => o.value)).toEqual([ + 'all', + 'value', + 'status', + 'touched', + 'submit', + ]); + }); + + it('matches a path substring, ignoring case, and clears it on Escape', async () => { + const fixture = await setup(EVENTS); + const input = await typePath(fixture, 'ADDRESS'); + expect(paths(fixture)).toEqual(['address.zip', 'address.city']); + expect(total(fixture)).toBe('2 of 6 events'); + + input.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true })); + await fixture.whenStable(); + expect(fixture.componentInstance.pathFilter()).toBe(''); + expect(paths(fixture)).toHaveLength(6); + }); + + it('combines path, type and origin', async () => { + const fixture = await setup(EVENTS); + await typePath(fixture, 'e'); + fixture.componentInstance.typeFilter.set('value'); + await fixture.whenStable(); + expect(paths(fixture)).toEqual(['name', 'address.city', 'email']); + + fixture.componentInstance.filter.set('agent'); + await fixture.whenStable(); + expect(paths(fixture)).toEqual(['name']); + expect(total(fixture)).toBe('1 of 6 events'); + }); + + it('says when the list is cut to the latest 100', async () => { + const many = Array.from({ length: 240 }, (_, i) => + event(i + 1, i % 2 ? 'email' : 'name', 'value'), + ); + const fixture = await setup(many); + expect(root(fixture).querySelectorAll('.events li')).toHaveLength(100); + expect(total(fixture)).toBe('Showing the latest 100 of 240 events'); + + await typePath(fixture, 'email'); + expect(total(fixture)).toBe('Showing the latest 100 of 120 matching events'); + + fixture.componentInstance.filter.set('code'); + await fixture.whenStable(); + expect(root(fixture).querySelector('.events')).toBeNull(); + }); + + it('shows Clear filters when the filters hide everything and resets all three', async () => { + const fixture = await setup(EVENTS); + await typePath(fixture, 'nothing'); + fixture.componentInstance.typeFilter.set('status'); + fixture.componentInstance.filter.set('code'); + await fixture.whenStable(); + expect(root(fixture).textContent).toContain('No events match these filters'); + + const clear = Array.from(root(fixture).querySelectorAll('button')).find( + (b) => b.textContent?.trim() === 'Clear filters', + )!; + clear.click(); + await fixture.whenStable(); + expect(fixture.componentInstance.pathFilter()).toBe(''); + expect(fixture.componentInstance.typeFilter()).toBe('all'); + expect(fixture.componentInstance.filter()).toBe('all'); + expect(paths(fixture)).toHaveLength(6); + expect(document.activeElement).toBe(root(fixture).querySelector('input[type="search"]')); + }); + + it('keeps the no-events state when nothing was recorded', async () => { + const fixture = await setup([]); + expect(root(fixture).textContent).toContain('No changes yet'); + expect(root(fixture).textContent).not.toContain('Clear filters'); + }); +}); diff --git a/app/src/pages/forms-timeline.ts b/app/src/pages/forms-timeline.ts index 30b5cd3c..d536dc18 100644 --- a/app/src/pages/forms-timeline.ts +++ b/app/src/pages/forms-timeline.ts @@ -1,11 +1,30 @@ -import { Component, computed, input, output, signal } from '@angular/core'; +import { Component, computed, ElementRef, input, output, signal, viewChild } from '@angular/core'; import { time } from '../format'; +import { Select, type SelectOption } from '../ui/select'; import { FORMS_STYLES, type FormEvent } from './forms-types'; const ORIGINS = ['all', 'user', 'code', 'agent', 'devtools'] as const; +/** How many events the list renders, newest first. */ +export const TIMELINE_SHOWN = 100; + +/** Event types in the order the `form-history` agent tool lists them. */ +const EVENT_TYPES = [ + 'value', + 'status', + 'touched', + 'dirty', + 'submit', + 'reset', + 'added', + 'removed', + 'moved', + 'validators', +]; + @Component({ selector: 'app-forms-timeline', + imports: [Select], template: `
+
+ + + {{ summary() }} +
@if (shown().length) {
    @for (event of shown(); track event.formId + '#' + event.seq) { @@ -88,8 +128,9 @@ const ORIGINS = ['all', 'user', 'code', 'agent', 'devtools'] as const;
} @else if (events().length) {
-

No changes from {{ filter() }}

-

Pick another source above, or interact with the form to record more.

+

No events match these filters

+

Change the path, type or origin, or interact with the form to record more.

+
} @else {
@@ -232,6 +273,65 @@ const ORIGINS = ['all', 'user', 'code', 'agent', 'devtools'] as const; outline: 2px solid var(--accent); outline-offset: 2px; } + .filters { + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: center; + min-width: 0; + } + .search { + position: relative; + flex: 1 1 200px; + min-width: 0; + } + .search-icon { + position: absolute; + top: 50%; + left: 12px; + width: 14px; + height: 14px; + transform: translateY(-50%); + fill: none; + stroke: var(--text-3); + stroke-width: 2.2; + stroke-linecap: round; + pointer-events: none; + } + .search:focus-within .search-icon { + stroke: var(--accent); + } + input[type='search'] { + width: 100%; + height: var(--control-h); + padding: 0 12px 0 34px; + background: var(--bg); + border: 1px solid var(--border-strong); + border-radius: var(--radius-sm); + color: var(--text); + font-size: 13px; + transition: + border-color 150ms var(--ease), + box-shadow 150ms var(--ease); + } + input[type='search']::placeholder { + color: var(--text-3); + } + input[type='search']:focus-visible { + @include m.field-focus; + } + .filters app-select { + width: 150px; + } + .total { + flex: none; + color: var(--text-2); + font-size: 12px; + font-variant-numeric: tabular-nums; + } + .empty-state .small { + margin-top: 6px; + } .events { display: grid; gap: 2px; @@ -331,6 +431,13 @@ const ORIGINS = ['all', 'user', 'code', 'agent', 'devtools'] as const; .chips { width: 100%; } + .filters app-select { + flex: 1 1 140px; + width: auto; + } + .total { + flex: 1 1 100%; + } .chips label { flex: 1; justify-content: center; @@ -353,14 +460,63 @@ export class FormsTimeline { readonly origins = ORIGINS; readonly filter = signal<(typeof ORIGINS)[number]>('all'); - readonly shown = computed(() => { + readonly pathFilter = signal(''); + readonly typeFilter = signal('all'); + private readonly pathInput = viewChild>('pathInput'); + + /** All types, then the types present in the events in the agent tool's order. */ + readonly typeOptions = computed(() => { + const present = new Set(this.events().map((e) => e.type)); + const selected = this.typeFilter(); + if (selected && selected !== 'all') present.add(selected); + const known = EVENT_TYPES.filter((type) => present.has(type)); + const other = [...present].filter((type) => !EVENT_TYPES.includes(type)).sort(); + return [ + { value: 'all', label: 'All types' }, + ...[...known, ...other].map((type) => ({ value: type, label: type })), + ]; + }); + + /** Events that pass the path, type and origin filters, oldest first. */ + readonly matching = computed(() => { const origin = this.filter(); - return this.events() - .filter((e) => origin === 'all' || e.origin === origin) - .slice(-100) - .reverse(); + const type = this.typeFilter() ?? 'all'; + const path = this.pathFilter().trim().toLowerCase(); + return this.events().filter( + (e) => + (origin === 'all' || e.origin === origin) && + (type === 'all' || e.type === type) && + (!path || e.path.toLowerCase().includes(path)), + ); + }); + + readonly shown = computed(() => this.matching().slice(-TIMELINE_SHOWN).reverse()); + + readonly filtered = computed( + () => + this.filter() !== 'all' || + (this.typeFilter() ?? 'all') !== 'all' || + !!this.pathFilter().trim(), + ); + + readonly summary = computed(() => { + const total = this.events().length; + const matching = this.matching().length; + const noun = (n: number) => (n === 1 ? 'event' : 'events'); + const scope = this.filtered() ? ` matching ${noun(matching)}` : ` ${noun(matching)}`; + if (matching > TIMELINE_SHOWN) + return `Showing the latest ${TIMELINE_SHOWN} of ${matching}${scope}`; + if (this.filtered()) return `${matching} of ${total} ${noun(total)}`; + return `${total} ${noun(total)}`; }); + clearFilters() { + this.pathFilter.set(''); + this.typeFilter.set('all'); + this.filter.set('all'); + this.pathInput()?.nativeElement.focus(); + } + iso(timestamp: number) { return new Date(timestamp).toISOString(); } diff --git a/apps/docs/src/content/inspectors/forms.md b/apps/docs/src/content/inspectors/forms.md index b61ddc98..746dd193 100644 --- a/apps/docs/src/content/inspectors/forms.md +++ b/apps/docs/src/content/inspectors/forms.md @@ -66,7 +66,17 @@ Click a field to open its details below the table. Click the field again, or **C ### Timeline view -Recent changes, newest first, each tagged with its origin: user, code, agent (a WebMCP tool call) or devtools. Filter the list by origin. The timeline tracks array items by identity, so moves show as moves. Async validation times show as **pending** tags. The page keeps the last 200 events, set with [`limits.formTimeline`](../getting-started/configuration.md#limits). Once older events are dropped, the timeline and `form-history` say how many. +Recent changes, newest first, each tagged with its origin: user, code, agent (a WebMCP tool call) or devtools. The timeline tracks array items by identity, so moves show as moves. Async validation times show as **pending** tags. The page keeps the last 200 events, set with [`limits.formTimeline`](../getting-started/configuration.md#limits). Once older events are dropped, the timeline and `form-history` say how many. + +Narrow the list with three filters. An event shows only when it passes all of them. + +| Filter | What it matches | +| ------------------------------------ | ------------------------------------------------------------------------------------- | +| **Filter by field path** | Events whose field path contains the text, ignoring case. Press `Escape` to clear it. | +| **Event type** | One event type, such as `value`, `status` or `submit`. Lists only the types present. | +| Origin (**All**, **User** and so on) | Events from one origin. | + +The list shows the latest 100 matching events. When more match, the count next to the filters says so, for example "Showing the latest 100 of 240 events". If the filters hide every event, click **Clear filters** to reset all three. Check **Record details** to add the calling code of each change, validator changes, and component renders per keystroke. It is off by default and applies to the whole page. diff --git a/extension/ui/assets/browser-agent-rpc-BXhoSh1z-C_twCiPD.js b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-DjrWw-na.js similarity index 93% rename from extension/ui/assets/browser-agent-rpc-BXhoSh1z-C_twCiPD.js rename to extension/ui/assets/browser-agent-rpc-BXhoSh1z-DjrWw-na.js index 8ff24a81..56eb128c 100644 --- a/extension/ui/assets/browser-agent-rpc-BXhoSh1z-C_twCiPD.js +++ b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-DjrWw-na.js @@ -1 +1 @@ -import{t as e}from"./index-BEfrZ0QX.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-DY8jaI-m.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-BEfrZ0QX.js b/extension/ui/assets/index-DY8jaI-m.js similarity index 94% rename from extension/ui/assets/index-BEfrZ0QX.js rename to extension/ui/assets/index-DY8jaI-m.js index 4671f32b..b018107f 100644 --- a/extension/ui/assets/index-BEfrZ0QX.js +++ b/extension/ui/assets/index-DY8jaI-m.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-C_twCiPD.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 GT(e?.connectionMeta)}function lE(e,t){return cE(e).actions[t]}var uE={components:`components`,routes:`router`,signals:`signals`,injectors:`injectors`,store:`ngrx`,forms:`forms`,pipes:`pipes`,network:`http`,analog:`analog`};function dE(e,t){let n=uE[e];return!n||t.inspectors[n]}function fE(e,t){e&1&&(A(),Fg(0,`rect`,3)(1,`rect`,4)(2,`rect`,5)(3,`rect`,6))}function pE(e,t){e&1&&(A(),Fg(0,`path`,7)(1,`path`,8)(2,`path`,9))}function mE(e,t){e&1&&(A(),Fg(0,`circle`,10)(1,`path`,11)(2,`circle`,12))}function hE(e,t){e&1&&(A(),Fg(0,`path`,1))}function gE(e,t){e&1&&(A(),Fg(0,`path`,13)(1,`path`,14)(2,`path`,15)(3,`path`,16))}function _E(e,t){e&1&&(A(),Fg(0,`ellipse`,17)(1,`path`,18)(2,`path`,19))}function vE(e,t){e&1&&(A(),Fg(0,`rect`,20)(1,`path`,21)(2,`path`,22)(3,`path`,23))}function yE(e,t){e&1&&(A(),Fg(0,`circle`,24)(1,`path`,25)(2,`path`,26))}function bE(e,t){e&1&&(A(),Fg(0,`path`,27)(1,`path`,28)(2,`path`,29)(3,`path`,30)(4,`circle`,31))}function xE(e,t){e&1&&(A(),Fg(0,`path`,2))}var SE=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,fE,4,0)(2,pE,3,0)(3,mE,3,0)(4,hE,1,0,`:svg:path`,1)(5,gE,4,0)(6,_E,3,0)(7,vE,4,0)(8,yE,3,0)(9,bE,5,0)(10,xE,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-DjrWw-na.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 GT(e?.connectionMeta)}function lE(e,t){return cE(e).actions[t]}var uE={components:`components`,routes:`router`,signals:`signals`,injectors:`injectors`,store:`ngrx`,forms:`forms`,pipes:`pipes`,network:`http`,analog:`analog`};function dE(e,t){let n=uE[e];return!n||t.inspectors[n]}function fE(e,t){e&1&&(A(),Fg(0,`rect`,3)(1,`rect`,4)(2,`rect`,5)(3,`rect`,6))}function pE(e,t){e&1&&(A(),Fg(0,`path`,7)(1,`path`,8)(2,`path`,9))}function mE(e,t){e&1&&(A(),Fg(0,`circle`,10)(1,`path`,11)(2,`circle`,12))}function hE(e,t){e&1&&(A(),Fg(0,`path`,1))}function gE(e,t){e&1&&(A(),Fg(0,`path`,13)(1,`path`,14)(2,`path`,15)(3,`path`,16))}function _E(e,t){e&1&&(A(),Fg(0,`ellipse`,17)(1,`path`,18)(2,`path`,19))}function vE(e,t){e&1&&(A(),Fg(0,`rect`,20)(1,`path`,21)(2,`path`,22)(3,`path`,23))}function yE(e,t){e&1&&(A(),Fg(0,`circle`,24)(1,`path`,25)(2,`path`,26))}function bE(e,t){e&1&&(A(),Fg(0,`path`,27)(1,`path`,28)(2,`path`,29)(3,`path`,30)(4,`circle`,31))}function xE(e,t){e&1&&(A(),Fg(0,`path`,2))}var SE=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,fE,4,0)(2,pE,3,0)(3,mE,3,0)(4,hE,1,0,`:svg:path`,1)(5,gE,4,0)(6,_E,3,0)(7,vE,4,0)(8,yE,3,0)(9,bE,5,0)(10,xE,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; }`]})},CE=(e,t)=>t.tab,wE=(e,t)=>t.label;function TE(e,t){e&1&&J(0),e&2&&X(` `,K().meta()?.projectName,` `)}function EE(e,t){e&1&&J(0,` Project details unavailable `)}function DE(e,t){e&1&&J(0,` Loading… `)}function OE(e,t){e&1&&(J(0,` Run `),z(1,`code`),J(2,`pangular build`),B(),J(3,` again to rebuild the report. `))}function kE(e,t){e&1&&J(0,` Check that the dev server is running, then reload the panel. `)}function AE(e,t){if(e&1&&(z(0,`p`,4),P(1,OE,4,0)(2,kE,1,0),B()),e&2){let e=K();M(),F(e.staticReport()?1:2)}}function jE(e,t){e&1&&(z(0,`li`,6)(1,`span`),J(2,`Analog`),B(),J(3),B()),e&2&&(M(3),Y(t))}function ME(e,t){e&1&&(z(0,`li`)(1,`span`),J(2,`Change detection`),B(),J(3),B()),e&2&&(M(3),Y(t))}function NE(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 PE(e,t){e&1&&(z(0,`span`,19),J(1,`–`),B(),z(2,`span`,18),J(3,`Count unavailable`),B())}function FE(e,t){e&1&&(V(0,`span`,20),z(1,`span`,18),J(2,`Counting…`),B())}function IE(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,NE,4,2)(9,PE,4,0)(10,FE,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 LE(e,t){e&1&&(z(0,`p`),J(1,`Loading…`),B())}function RE(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 zE(e,t){if(e&1&&(z(0,`dl`),I(1,RE,5,2,`div`,null,wE),B()),e&2){let e=K();M(),L(e.configItems())}}function BE(e,t){e&1&&(z(0,`p`),J(1,`Defaults`),B())}var VE=[{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`}],HE={zoneless:`Zoneless`,zone:`zone.js`,"zone-unused":`Zoneless, zone.js loaded`};function UE(e){return e&&Object.hasOwn(HE,e)?HE[e]:null}var WE=new Set([`signal`,`computed`,`linkedSignal`,`effect`]),GE={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 KE(e,t,n){return`${e} ${e===1?t:n}`}function qE(e,t){for(let n of e??[])t(n),qE(n.children,t)}function JE(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 · ${KE(t,`directive`,`directives`)}`}}function YE(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 · ${KE(t,`redirect`,`redirects`)}`}}function XE(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]=GE[e]??[e,e];return KE(t,n,r)});return{value:e.length,sub:n.join(` · `)}}var ZE=class e{rpc=$(null);navigate=Ov();staticReport=Q(()=>oE(this.rpc()));meta=j(null);config=Q(()=>cE(this.rpc()));stats=Q(()=>this.rpc()?VE.filter(e=>dE(e.tab,this.config())):[]);configItems=Q(()=>XT(this.config()));metaState=j(`loading`);states=j({});rows=j({});injectorTree=j(null);signalGraph=j(null);pageId=eE();destroyRef=E(Cs);stopLive=[];zone=Q(()=>UE(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 qE(e.roots,r),qE(e.environment,r),{injectors:t,providers:n}});liveSignals=Q(()=>{let e=rE(this.signalGraph(),this.pageId);return e?.nodes?.length?e.nodes.filter(e=>WE.has(e.kind??``)).length:null});cards=Q(()=>{let e=this.rows(),t={};if(e.components&&(t.components=JE(e.components)),e.routes&&(t.routes=YE(e.routes)),e.store&&(t.store=XE(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();return r?t.injectors={value:r.injectors,sub:`live injectors · ${KE(r.providers,`provider`,`providers`)}`}:e.injectors&&(t.injectors={value:e.injectors.filter(e=>e.type!==`injection`).length,sub:`provider declarations in source`}),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({}),t.rpc.call(`build-meta`).then(e=>{this.meta.set(e),this.metaState.set(`ready`)}).catch(()=>this.metaState.set(`error`));let n=cE(e),r=e=>dE(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)=>{try{let i=await n.sharedState(t);if(this.destroyRef.destroyed||this.rpc()!==e)return;r(i.value()),this.stopLive.push(i.on(`updated`,e=>r(e)))}catch{r(null)}};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))])}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,TE,1,1)(6,EE,1,0)(7,DE,1,0),B(),P(8,AE,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,jE,4,1,`li`,6),P(23,ME,4,1,`li`),B()(),z(24,`div`,7),I(25,IE,11,6,`button`,8,CE),B(),z(27,`section`,9)(28,`h2`,10),J(29,`Configuration`),B(),P(30,LE,2,0,`p`)(31,zE,3,0,`dl`)(32,BE,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:[SE],styles:[`[_nghost-%COMP%] { @@ -7779,7 +7779,7 @@ code[_ngcontent-%COMP%] { font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; -}`]})},UL=()=>[],WL=(e,t)=>t.formId+`#`+t.seq;function GL(e,t){e&1&&Fg(0,`span`,5)}function KL(e,t){if(e&1){let e=W();H(0,`label`)(1,`input`,11),Qg(`change`,function(){let t=O(e).$implicit;return k(K().filter.set(t))}),U(),J(2),U()}if(e&2){let e=t.$implicit,n=K();M(),Vg(`value`,e)(`checked`,e===n.filter()),M(),X(` `,e,` `)}}function qL(e,t){if(e&1&&(H(0,`span`,16),J(1),U()),e&2){let e=K().$implicit;N(`data-tone`,e.outcome===`ran`?``:`bad`),M(),Y(e.outcome)}}function JL(e,t){if(e&1&&(H(0,`span`,16),J(1),U()),e&2){let e=K().$implicit;M(),X(`×`,e.count)}}function YL(e,t){if(e&1&&(H(0,`span`,16),J(1),U()),e&2){let e=K().$implicit;M(),Y(e.origin)}}function XL(e,t){if(e&1&&(H(0,`span`,16),J(1),U()),e&2){let e=K().$implicit;N(`data-tone`,e.ms>1e3?`warn`:``),M(),X(`pending `,e.ms,`ms`)}}function ZL(e,t){if(e&1&&(H(0,`span`,16),J(1),U()),e&2){let e=K().$implicit;N(`data-tone`,e.renders>20?`warn`:``),M(),Z(``,e.renders,` renders: `,(e.rendered??ov(3,UL)).join(`, `))}}function QL(e,t){if(e&1&&(H(0,`span`,19),J(1),U(),H(2,`span`,20),J(3,`→`),U(),H(4,`span`,8),J(5,`changed to`),U()),e&2){let e=K(2).$implicit;M(),Y(e.prev)}}function $L(e,t){if(e&1&&(H(0,`div`,17),P(1,QL,6,1),J(2),U()),e&2){let e=K().$implicit;M(),F(e.prev===void 0?-1:1),M(),X(` `,e.detail,` `)}}function eR(e,t){if(e&1&&(H(0,`span`,18),J(1),U()),e&2){let e=K().$implicit;M(),X(`from `,e.caller)}}function tR(e,t){if(e&1&&(H(0,`li`)(1,`time`),J(2),U(),H(3,`div`,12)(4,`div`,13)(5,`code`,14),J(6),U(),H(7,`span`,15),J(8),U(),P(9,qL,2,2,`span`,16),P(10,JL,2,1,`span`,16),P(11,YL,2,1,`span`,16),P(12,XL,2,2,`span`,16),P(13,ZL,2,4,`span`,16),U(),P(14,$L,3,2,`div`,17),P(15,eR,2,1,`span`,18),U()()),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 nR(e,t){if(e&1&&(H(0,`ol`,9),I(1,tR,16,12,`li`,null,WL),U()),e&2){let e=K();M(),L(e.shown())}}function rR(e,t){if(e&1&&(H(0,`div`,10)(1,`p`,21),J(2),U(),H(3,`p`),J(4,`Pick another source above, or interact with the form to record more.`),U()()),e&2){let e=K();M(2),X(`No changes from `,e.filter())}}function iR(e,t){e&1&&(H(0,`div`,10)(1,`p`,21),J(2,`No changes yet`),U(),H(3,`p`),J(4,`Type into the form to see them here.`),U()())}var aR=[`all`,`user`,`code`,`agent`,`devtools`],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=aR;filter=j(`all`);shown=Q(()=>{let e=this.filter();return this.events().filter(t=>e===`all`||t.origin===e).slice(-100).reverse()});iso(e){return new Date(e).toISOString()}time=CD;static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-forms-timeline`]],inputs:{events:[1,`events`],recording:[1,`recording`]},outputs:{record:`record`},decls:17,vars:5,consts:[[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,`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`]],template:function(e,t){e&1&&(H(0,`div`,0)(1,`label`,1)(2,`input`,2),Qg(`change`,function(e){return t.toggle(e)}),U(),H(3,`span`,3)(4,`span`,4),P(5,GL,1,0,`span`,5),J(6,` Record details `),U(),H(7,`span`,6),J(8,`Record calling code, validator changes and renders per keystroke`),U()()(),H(9,`fieldset`,7)(10,`legend`,8),J(11,`Show changes from`),U(),I(12,KL,3,3,`label`,null,wg),U()(),P(14,nR,3,0,`ol`,9)(15,rR,5,1,`div`,10)(16,iR,5,0,`div`,10)),e&2&&(M(),q(`on`,t.recording()),M(),Vg(`checked`,t.recording()),M(3),F(t.recording()?5:-1),M(7),L(t.origins),M(2),F(t.shown().length?14:t.events().length?15:16))},styles:[`.muted[_ngcontent-%COMP%] { +}`]})},UL=[`pathInput`],WL=()=>[],GL=(e,t)=>t.formId+`#`+t.seq;function KL(e,t){e&1&&V(0,`span`,6)}function qL(e,t){if(e&1){let e=W();z(0,`label`)(1,`input`,20),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 JL(e,t){if(e&1&&(z(0,`span`,25),J(1),B()),e&2){let e=K().$implicit;N(`data-tone`,e.outcome===`ran`?``:`bad`),M(),Y(e.outcome)}}function YL(e,t){if(e&1&&(z(0,`span`,25),J(1),B()),e&2){let e=K().$implicit;M(),X(`×`,e.count)}}function XL(e,t){if(e&1&&(z(0,`span`,25),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.origin)}}function ZL(e,t){if(e&1&&(z(0,`span`,25),J(1),B()),e&2){let e=K().$implicit;N(`data-tone`,e.ms>1e3?`warn`:``),M(),X(`pending `,e.ms,`ms`)}}function QL(e,t){if(e&1&&(z(0,`span`,25),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,WL)).join(`, `))}}function $L(e,t){if(e&1&&(z(0,`span`,28),J(1),B(),z(2,`span`,29),J(3,`→`),B(),z(4,`span`,9),J(5,`changed to`),B()),e&2){let e=K(2).$implicit;M(),Y(e.prev)}}function eR(e,t){if(e&1&&(z(0,`div`,26),P(1,$L,6,1),J(2),B()),e&2){let e=K().$implicit;M(),F(e.prev===void 0?-1:1),M(),X(` `,e.detail,` `)}}function tR(e,t){if(e&1&&(z(0,`span`,27),J(1),B()),e&2){let e=K().$implicit;M(),X(`from `,e.caller)}}function nR(e,t){if(e&1&&(z(0,`li`)(1,`time`),J(2),B(),z(3,`div`,21)(4,`div`,22)(5,`code`,23),J(6),B(),z(7,`span`,24),J(8),B(),P(9,JL,2,2,`span`,25),P(10,YL,2,1,`span`,25),P(11,XL,2,1,`span`,25),P(12,ZL,2,2,`span`,25),P(13,QL,2,4,`span`,25),B(),P(14,eR,3,2,`div`,26),P(15,tR,2,1,`span`,27),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 rR(e,t){if(e&1&&(z(0,`ol`,18),I(1,nR,16,12,`li`,null,GL),B()),e&2){let e=K();M(),L(e.shown())}}function iR(e,t){if(e&1){let e=W();z(0,`div`,19)(1,`p`,30),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`,31),G(`click`,function(){return O(e),k(K().clearFilters())}),J(6,`Clear filters`),B()()}}function aR(e,t){e&1&&(z(0,`div`,19)(1,`p`,30),J(2,`No changes yet`),B(),z(3,`p`),J(4,`Type into the form to see them here.`),B()())}var oR=[`all`,`user`,`code`,`agent`,`devtools`],sR=[`value`,`status`,`touched`,`dirty`,`submit`,`reset`,`added`,`removed`,`moved`,`validators`],cR=class e{events=$.required();recording=$(!1);record=Ov();toggle(e){let t=e.target;t.checked=this.recording(),this.record.emit(!this.recording())}origins=oR;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=sR.filter(t=>e.has(t)),r=[...e].filter(e=>!sR.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)}`});clearFilters(){this.pathFilter.set(``),this.typeFilter.set(`all`),this.filter.set(`all`),this.pathInput()?.nativeElement.focus()}iso(e){return new Date(e).toISOString()}time=CD;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,UL,5),e&2&&t_()},inputs:{events:[1,`events`],recording:[1,`recording`]},outputs:{record:`record`},decls:27,vars:9,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`],[`aria-live`,`polite`,1,`total`],[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,KL,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,qL,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()(),P(24,rR,3,0,`ol`,18)(25,iR,7,0,`div`,19)(26,aR,5,0,`div`,19)}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(),F(t.shown().length?24:t.events().length?25:26))},dependencies:[hD],styles:[`.muted[_ngcontent-%COMP%] { color: var(--%NS%text-2); } @@ -8146,6 +8146,75 @@ code[_ngcontent-%COMP%] { 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; @@ -8264,12 +8333,19 @@ time[_ngcontent-%COMP%] { .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; } -}`]})},sR=(e,t)=>t.path;function cR(e,t){e&1&&(H(0,`span`,6),J(1,`duplicate name`),U())}function lR(e,t){if(e&1&&(H(0,`p`,7),J(1),U()),e&2){let e=K();M(),Y(e.description)}}function uR(e,t){if(e&1&&(H(0,`p`,8),J(1),U()),e&2){let e=K();M(),Y(e.error)}}function dR(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 fR(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,dR,4,2,`li`,null,sR),U()()),e&2){let e=K();M(4),L(e.blocking)}}function pR(e,t){e&1&&(H(0,`span`,12),J(1,`required`),U())}function mR(e,t){if(e&1&&(H(0,`li`)(1,`code`),J(2),U(),P(3,pR,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 hR(e,t){if(e&1&&(H(0,`div`,9)(1,`p`,10),J(2,`Inputs`),U(),H(3,`ul`,11),I(4,mR,4,2,`li`,null,wg),U()()),e&2){let e=K();M(4),L(e.inputs)}}function gR(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 _R(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,gR,4,2,`li`,null,sR),U()()),e&2){let e=K();M(4),L(e.requiredChanged)}}function vR(e,t){if(e&1&&(H(0,`span`,10),J(1),U()),e&2){let e=K().$implicit;M(),X(``,e.ms,` ms`)}}function yR(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 bR(e,t){if(e&1&&(H(0,`pre`,13),J(1),U()),e&2){let e=K().$implicit;M(),Y(e.detail)}}function xR(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,vR,2,1,`span`,10),P(7,yR,2,1,`span`,10),P(8,bR,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 SR(e,t){if(e&1&&(H(0,`ul`),I(1,xR,9,10,`li`,null,Cg),U()),e&2){let e=K();M(),L(e.calls)}}function CR(e,t){e&1&&(H(0,`p`,10),J(1,` Calls are not recorded for a tool registered before the inspector attached. `),U())}function wR(e,t){e&1&&(H(0,`p`,10),J(1,`No agent has called this tool since the inspector attached.`),U())}function TR(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,cR,2,0,`span`,6),U(),P(9,lR,2,1,`p`,7),P(10,uR,2,1,`p`,8),P(11,fR,6,0,`div`,9),P(12,hR,6,0,`div`,9),P(13,_R,6,0,`div`,9),H(14,`div`,9)(15,`p`,10),J(16,`Recent calls`),U(),P(17,SR,3,0,`ul`)(18,CR,2,0,`p`,10)(19,wR,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 ER(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 DR={running:`running`,submitted:`submitted`,failed:`submit failed`,done:`done`,threw:`threw`},OR=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 DR[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,TR,20,10,`section`,0)(1,ER,8,0,`p`,1),e&2){let e;F((e=t.tool())?0:t.noModelContext()?1:-1,e)}},dependencies:[ib],styles:[`[_nghost-%COMP%] { +}`]})},lR=(e,t)=>t.path;function uR(e,t){e&1&&(H(0,`span`,6),J(1,`duplicate name`),U())}function dR(e,t){if(e&1&&(H(0,`p`,7),J(1),U()),e&2){let e=K();M(),Y(e.description)}}function fR(e,t){if(e&1&&(H(0,`p`,8),J(1),U()),e&2){let e=K();M(),Y(e.error)}}function pR(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 mR(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,pR,4,2,`li`,null,lR),U()()),e&2){let e=K();M(4),L(e.blocking)}}function hR(e,t){e&1&&(H(0,`span`,12),J(1,`required`),U())}function gR(e,t){if(e&1&&(H(0,`li`)(1,`code`),J(2),U(),P(3,hR,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 _R(e,t){if(e&1&&(H(0,`div`,9)(1,`p`,10),J(2,`Inputs`),U(),H(3,`ul`,11),I(4,gR,4,2,`li`,null,wg),U()()),e&2){let e=K();M(4),L(e.inputs)}}function vR(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 yR(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,vR,4,2,`li`,null,lR),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 xR(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 SR(e,t){if(e&1&&(H(0,`pre`,13),J(1),U()),e&2){let e=K().$implicit;M(),Y(e.detail)}}function CR(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,xR,2,1,`span`,10),P(8,SR,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,CR,9,10,`li`,null,Cg),U()),e&2){let e=K();M(),L(e.calls)}}function TR(e,t){e&1&&(H(0,`p`,10),J(1,` Calls are not recorded for a tool registered before the inspector attached. `),U())}function ER(e,t){e&1&&(H(0,`p`,10),J(1,`No agent has called this tool since the inspector attached.`),U())}function DR(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,uR,2,0,`span`,6),U(),P(9,dR,2,1,`p`,7),P(10,fR,2,1,`p`,8),P(11,mR,6,0,`div`,9),P(12,_R,6,0,`div`,9),P(13,yR,6,0,`div`,9),H(14,`div`,9)(15,`p`,10),J(16,`Recent calls`),U(),P(17,wR,3,0,`ul`)(18,TR,2,0,`p`,10)(19,ER,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 OR(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 kR={running:`running`,submitted:`submitted`,failed:`submit failed`,done:`done`,threw:`threw`},AR=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 kR[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,DR,20,10,`section`,0)(1,OR,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; } @@ -8389,7 +8465,7 @@ li[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] + *[_ngcontent-%COMP%] { font-size: 12px; white-space: pre-wrap; overflow-wrap: anywhere; -}`]})},kR=()=>[],AR=(e,t)=>t.id,jR=(e,t)=>t.node.path;function MR(e,t){e&1&&(z(0,`div`,0),V(1,`span`,4),z(2,`p`),J(3,`Connecting to the devtools server…`),B()())}function NR(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 PR(e,t){e&1&&(z(0,`div`,0),V(1,`span`,4),z(2,`p`),J(3,`Loading forms…`),B()())}function FR(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 IR(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 LR(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 RR(e,t){e&1&&(z(0,`span`,22),J(1),z(2,`span`,21),J(3,` errors`),B()()),e&2&&(M(),Y(t))}function zR(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,RR,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 BR(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 VR(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K();M(),Y(e.submitted?`submitted`:`not submitted`)}}function HR(e,t){e&1&&(z(0,`span`),J(1,`submitting`),B())}function UR(e,t){if(e&1&&(z(0,`li`)(1,`code`),J(2),B(),J(3),z(4,`code`,46),J(5),B()()),e&2){let e=t.$implicit;M(2),Y(e.path||`(form)`),M(),X(` `,e.message,` `),M(2),Y(e.kind)}}function WR(e,t){if(e&1&&(z(0,`details`,30)(1,`summary`),J(2),B(),z(3,`ul`),I(4,UR,6,3,`li`,null,Cg),B()()),e&2){let e=K();M(2),X(`Error summary (`,e.errorSummary.length,`)`),M(2),L(e.errorSummary)}}function GR(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 KR(e,t){if(e&1&&(z(0,`p`,40),J(1),B()),e&2){let e=K(3);M(),Y(e.writesOff)}}function qR(e,t){if(e&1){let e=W();z(0,`button`,47),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 JR(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 YR(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 XR(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 ZR(e,t){if(e&1&&(z(0,`code`),J(1),dv(2,`json`),B(),P(3,YR,6,3,`div`,6),P(4,XR,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 QR(e,t){e&1&&(z(0,`span`,6),J(1,`not created yet`),B())}function $R(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 ez(e,t){e&1&&(z(0,`span`),J(1,`touched`),B())}function tz(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 nz(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 rz(e,t){if(e&1&&(z(0,`span`,62),J(1),B()),e&2){let e=K().$implicit;M(),X(`stale: `,e.node.stale.join(`, `))}}function iz(e,t){e&1&&(z(0,`span`,62),J(1,`view out of sync`),B())}function az(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 oz(e,t){e&1&&(z(0,`span`),J(1,`required`),B())}function sz(e,t){e&1&&(z(0,`span`),J(1,`readonly`),B())}function cz(e,t){e&1&&(z(0,`span`),J(1,`hidden`),B())}function lz(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 uz(e,t){e&1&&(z(0,`span`),J(1,`debouncing`),B())}function dz(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 pz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function mz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.node.accessor)}}function hz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),X(`name `,e.node.name)}}function gz(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 _z(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`,65),J(1),B()),e&2){let e=K().$implicit;M(),X(`at `,e.params.path)}}function yz(e,t){if(e&1&&(z(0,`span`,65),J(1),B()),e&2){let e=K().$implicit,t=K(5);M(),Y(t.sourceText(e))}}function bz(e,t){if(e&1&&(z(0,`div`),J(1),z(2,`code`,46),J(3),B(),P(4,vz,2,1,`span`,65),P(5,yz,2,1,`span`,65),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 xz(e,t){e&1&&(z(0,`div`,64),J(1,`not shown to the user`),B())}function Sz(e,t){if(e&1&&(z(0,`tr`)(1,`td`,66),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 Cz(e,t){if(e&1){let e=W();z(0,`tr`,55),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`,56)(2,`button`,57),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`,58),J(5),B()(),z(6,`td`,59),P(7,ZR,5,5),B(),z(8,`td`,60),P(9,QR,2,0,`span`,6)(10,$R,2,2,`span`,28),B(),z(11,`td`,61),P(12,ez,2,0,`span`),P(13,tz,2,1,`span`),P(14,nz,2,1,`span`),P(15,rz,2,1,`span`,62),P(16,iz,2,0,`span`,62),P(17,az,2,1,`span`),P(18,oz,2,0,`span`),P(19,sz,2,0,`span`),P(20,cz,2,0,`span`),P(21,lz,2,1,`span`),P(22,uz,2,0,`span`),P(23,dz,2,0,`span`),P(24,fz,2,0,`span`),I(25,pz,2,1,`span`,null,wg),P(27,mz,2,1,`span`),P(28,hz,2,1,`span`),I(29,gz,3,3,`span`,null,Cg),I(31,_z,2,1,`span`,null,Cg),B(),z(33,`td`,63),I(34,bz,6,4,`div`,null,Cg),P(36,xz,2,0,`div`,64),B()(),P(37,Sz,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,kR)),M(2),L(e.node.disabledReasons??ov(29,kR)),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 wz(e,t){e&1&&J(0),e&2&&X(` No field path matches "`,K(5).filter(),`". `)}function Tz(e,t){e&1&&J(0,` No field matches the selected filters. `)}function Ez(e,t){if(e&1&&(z(0,`tr`)(1,`td`,67),P(2,wz,1,1)(3,Tz,1,0),B()()),e&2){let e=K(4);M(2),F(e.filter()?2:3)}}function Dz(e,t){if(e&1){let e=W();z(0,`app-forms-field-detail`,68),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 Oz(e,t){if(e&1){let e=W();z(0,`div`,48)(1,`input`,49),G(`input`,function(t){return O(e),k(K(3).onFilter(t))}),B(),z(2,`fieldset`,50)(3,`legend`,21),J(4,`Show only fields that are`),B(),I(5,JR,3,2,`label`,null,AR),B()(),z(7,`div`,51)(8,`table`,52)(9,`thead`)(10,`tr`)(11,`th`,53),J(12,`Field`),B(),z(13,`th`,53),J(14,`Value`),B(),z(15,`th`,53),J(16,`Status`),B(),z(17,`th`,53),J(18,`State`),B(),z(19,`th`,53),J(20,`Errors`),B()()(),z(21,`tbody`),I(22,Cz,38,30,null,null,jR,!1,Ez,4,1,`tr`),B()()(),P(25,Dz,1,4,`app-forms-field-detail`,54)}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 kz(e,t){if(e&1){let e=W();V(0,`app-limit-note`,69),z(1,`app-forms-timeline`,70),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 Az(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 jz(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 Mz(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,VR,2,1,`span`),P(16,HR,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,WR,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,GR,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,KR,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,qR,2,5,`button`,43,AR),B(),z(51,`div`,44),P(52,Oz,26,3)(53,kz,2,4)(54,Az,1,3,`app-forms-submit`,45)(55,jz,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 Nz(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,LR,3,1,`label`,11),z(7,`ul`,12),I(8,zR,12,10,`li`,null,AR),B()(),P(10,BR,7,2,`section`,13)(11,Mz,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.selected())?11:-1,e)}}var Pz=[{id:`fields`,label:`Fields`},{id:`timeline`,label:`Timeline`},{id:`submit`,label:`Submit`},{id:`lint`,label:`Lint`}],Fz=[{id:`invalid`,label:`Invalid`},{id:`dirty`,label:`Dirty`},{id:`touched`,label:`Touched`},{id:`disabled`,label:`Disabled`},{id:`hidden-error`,label:`Error not shown`}];function Iz(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 Lz(e){return e.errors.length+(e.children??[]).reduce((e,t)=>e+Lz(t),0)}function Rz(e){return e.children?e.children.reduce((e,t)=>e+Rz(t),0):+(e.type===`control`&&e.materialized!==!1)}var zz=class e{rpc=$(null);focus=$(null);canWrite=Q(()=>lE(this.rpc(),`forms`));redactLabel=bL;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=>hL(e.id)===t):e});otherPages=Q(()=>this.forms().some(e=>hL(e.id)!==this.hostPageId));instrumented=j([]);recording=Q(()=>{let e=this.selected()?.id??``;return this.instrumented().some(t=>e.endsWith(`@${t}`))});filter=j(``);tabs=Pz;chips=Fz;tab_=j(`fields`);active=j(new Set);fieldPath=j(null);version=j(0);message=j(``);armed=j(null);snapshot=j(null);webMcpPage(e){let t=hL(e);return this.webMcp().find(e=>e.pageId===t)}picking=j(null);pickSeq=0;unsubscribe=null;destroyRef=E(Cs);host=E(Ml);counts=Q(()=>new Map(this.visible().map(e=>[e.id,{fields:Rz(e.root),errors:Lz(e.root)}])));selected=Q(()=>{let e=this.visible(),t=this.selectedId();if(t===null)return e[0]??null;let n=this.selectedLabel(),r=hL(t);return e.find(e=>e.id===t)??e.find(e=>e.label===n&&hL(e.id)===r)??null});missing=Q(()=>this.selectedId()!==null&&!this.selected()&&this.visible().length?this.selectedLabel()??this.selectedId():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=>Iz(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()[hL(e)]??0:0});maxEvents=Q(()=>cE(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 SL(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(CL(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&&SL(this.rpc(),{action:`cancel-pick`,formId:e})}async setRecording(e){let t=this.selected();if(!t)return;let n=await SL(this.rpc(),{action:`instrument`,formId:t.id,value:e});this.message.set(CL(n))}selectForm(e){this.hostPageId&&hL(e)&&hL(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()}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 SL(this.rpc(),{action:e,formId:n.id,...t});r.snapshot&&this.snapshot.set(r.snapshot),this.message.set(CL(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=_L[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 gL[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`],[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`,`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,MR,4,0,`div`,0)(1,NR,7,0,`div`,1)(2,PR,4,0,`div`,0)(3,FR,5,0,`div`,2)(4,IR,7,2,`div`,2)(5,Nz,12,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:[ML,oR,VL,HL,OR,ED,ab],styles:[`.muted[_ngcontent-%COMP%] { +}`]})},jR=()=>[],MR=(e,t)=>t.id,NR=(e,t)=>t.node.path;function PR(e,t){e&1&&(z(0,`div`,0),V(1,`span`,4),z(2,`p`),J(3,`Connecting to the devtools server…`),B()())}function FR(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 IR(e,t){e&1&&(z(0,`div`,0),V(1,`span`,4),z(2,`p`),J(3,`Loading forms…`),B()())}function LR(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 RR(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 zR(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 BR(e,t){e&1&&(z(0,`span`,22),J(1),z(2,`span`,21),J(3,` errors`),B()()),e&2&&(M(),Y(t))}function VR(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,BR,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 HR(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 UR(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K();M(),Y(e.submitted?`submitted`:`not submitted`)}}function WR(e,t){e&1&&(z(0,`span`),J(1,`submitting`),B())}function GR(e,t){if(e&1&&(z(0,`li`)(1,`code`),J(2),B(),J(3),z(4,`code`,46),J(5),B()()),e&2){let e=t.$implicit;M(2),Y(e.path||`(form)`),M(),X(` `,e.message,` `),M(2),Y(e.kind)}}function KR(e,t){if(e&1&&(z(0,`details`,30)(1,`summary`),J(2),B(),z(3,`ul`),I(4,GR,6,3,`li`,null,Cg),B()()),e&2){let e=K();M(2),X(`Error summary (`,e.errorSummary.length,`)`),M(2),L(e.errorSummary)}}function qR(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 JR(e,t){if(e&1&&(z(0,`p`,40),J(1),B()),e&2){let e=K(3);M(),Y(e.writesOff)}}function YR(e,t){if(e&1){let e=W();z(0,`button`,47),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 XR(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 ZR(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 QR(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 $R(e,t){if(e&1&&(z(0,`code`),J(1),dv(2,`json`),B(),P(3,ZR,6,3,`div`,6),P(4,QR,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 ez(e,t){e&1&&(z(0,`span`,6),J(1,`not created yet`),B())}function tz(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 nz(e,t){e&1&&(z(0,`span`),J(1,`touched`),B())}function rz(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 iz(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 az(e,t){if(e&1&&(z(0,`span`,62),J(1),B()),e&2){let e=K().$implicit;M(),X(`stale: `,e.node.stale.join(`, `))}}function oz(e,t){e&1&&(z(0,`span`,62),J(1,`view out of sync`),B())}function sz(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 cz(e,t){e&1&&(z(0,`span`),J(1,`required`),B())}function lz(e,t){e&1&&(z(0,`span`),J(1,`readonly`),B())}function uz(e,t){e&1&&(z(0,`span`),J(1,`hidden`),B())}function dz(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 fz(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 mz(e,t){e&1&&(z(0,`span`),J(1,`async validator`),B())}function hz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function gz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.node.accessor)}}function _z(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),X(`name `,e.node.name)}}function vz(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 yz(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=t.$implicit;M(),X(`disabled: `,e)}}function bz(e,t){if(e&1&&(z(0,`span`,65),J(1),B()),e&2){let e=K().$implicit;M(),X(`at `,e.params.path)}}function xz(e,t){if(e&1&&(z(0,`span`,65),J(1),B()),e&2){let e=K().$implicit,t=K(5);M(),Y(t.sourceText(e))}}function Sz(e,t){if(e&1&&(z(0,`div`),J(1),z(2,`code`,46),J(3),B(),P(4,bz,2,1,`span`,65),P(5,xz,2,1,`span`,65),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 Cz(e,t){e&1&&(z(0,`div`,64),J(1,`not shown to the user`),B())}function wz(e,t){if(e&1&&(z(0,`tr`)(1,`td`,66),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 Tz(e,t){if(e&1){let e=W();z(0,`tr`,55),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`,56)(2,`button`,57),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`,58),J(5),B()(),z(6,`td`,59),P(7,$R,5,5),B(),z(8,`td`,60),P(9,ez,2,0,`span`,6)(10,tz,2,2,`span`,28),B(),z(11,`td`,61),P(12,nz,2,0,`span`),P(13,rz,2,1,`span`),P(14,iz,2,1,`span`),P(15,az,2,1,`span`,62),P(16,oz,2,0,`span`,62),P(17,sz,2,1,`span`),P(18,cz,2,0,`span`),P(19,lz,2,0,`span`),P(20,uz,2,0,`span`),P(21,dz,2,1,`span`),P(22,fz,2,0,`span`),P(23,pz,2,0,`span`),P(24,mz,2,0,`span`),I(25,hz,2,1,`span`,null,wg),P(27,gz,2,1,`span`),P(28,_z,2,1,`span`),I(29,vz,3,3,`span`,null,Cg),I(31,yz,2,1,`span`,null,Cg),B(),z(33,`td`,63),I(34,Sz,6,4,`div`,null,Cg),P(36,Cz,2,0,`div`,64),B()(),P(37,wz,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,jR)),M(2),L(e.node.disabledReasons??ov(29,jR)),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 Ez(e,t){e&1&&J(0),e&2&&X(` No field path matches "`,K(5).filter(),`". `)}function Dz(e,t){e&1&&J(0,` No field matches the selected filters. `)}function Oz(e,t){if(e&1&&(z(0,`tr`)(1,`td`,67),P(2,Ez,1,1)(3,Dz,1,0),B()()),e&2){let e=K(4);M(2),F(e.filter()?2:3)}}function kz(e,t){if(e&1){let e=W();z(0,`app-forms-field-detail`,68),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 Az(e,t){if(e&1){let e=W();z(0,`div`,48)(1,`input`,49),G(`input`,function(t){return O(e),k(K(3).onFilter(t))}),B(),z(2,`fieldset`,50)(3,`legend`,21),J(4,`Show only fields that are`),B(),I(5,XR,3,2,`label`,null,MR),B()(),z(7,`div`,51)(8,`table`,52)(9,`thead`)(10,`tr`)(11,`th`,53),J(12,`Field`),B(),z(13,`th`,53),J(14,`Value`),B(),z(15,`th`,53),J(16,`Status`),B(),z(17,`th`,53),J(18,`State`),B(),z(19,`th`,53),J(20,`Errors`),B()()(),z(21,`tbody`),I(22,Tz,38,30,null,null,NR,!1,Oz,4,1,`tr`),B()()(),P(25,kz,1,4,`app-forms-field-detail`,54)}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 jz(e,t){if(e&1){let e=W();V(0,`app-limit-note`,69),z(1,`app-forms-timeline`,70),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 Mz(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 Nz(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 Pz(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,UR,2,1,`span`),P(16,WR,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,KR,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,qR,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,JR,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,YR,2,5,`button`,43,MR),B(),z(51,`div`,44),P(52,Az,26,3)(53,jz,2,4)(54,Mz,1,3,`app-forms-submit`,45)(55,Nz,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 Fz(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,zR,3,1,`label`,11),z(7,`ul`,12),I(8,VR,12,10,`li`,null,MR),B()(),P(10,HR,7,2,`section`,13)(11,Pz,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.selected())?11:-1,e)}}var Iz=[{id:`fields`,label:`Fields`},{id:`timeline`,label:`Timeline`},{id:`submit`,label:`Submit`},{id:`lint`,label:`Lint`}],Lz=[{id:`invalid`,label:`Invalid`},{id:`dirty`,label:`Dirty`},{id:`touched`,label:`Touched`},{id:`disabled`,label:`Disabled`},{id:`hidden-error`,label:`Error not shown`}];function Rz(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 zz(e){return e.errors.length+(e.children??[]).reduce((e,t)=>e+zz(t),0)}function Bz(e){return e.children?e.children.reduce((e,t)=>e+Bz(t),0):+(e.type===`control`&&e.materialized!==!1)}var Vz=class e{rpc=$(null);focus=$(null);canWrite=Q(()=>lE(this.rpc(),`forms`));redactLabel=bL;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=>hL(e.id)===t):e});otherPages=Q(()=>this.forms().some(e=>hL(e.id)!==this.hostPageId));instrumented=j([]);recording=Q(()=>{let e=this.selected()?.id??``;return this.instrumented().some(t=>e.endsWith(`@${t}`))});filter=j(``);tabs=Iz;chips=Lz;tab_=j(`fields`);active=j(new Set);fieldPath=j(null);version=j(0);message=j(``);armed=j(null);snapshot=j(null);webMcpPage(e){let t=hL(e);return this.webMcp().find(e=>e.pageId===t)}picking=j(null);pickSeq=0;unsubscribe=null;destroyRef=E(Cs);host=E(Ml);counts=Q(()=>new Map(this.visible().map(e=>[e.id,{fields:Bz(e.root),errors:zz(e.root)}])));selected=Q(()=>{let e=this.visible(),t=this.selectedId();if(t===null)return e[0]??null;let n=this.selectedLabel(),r=hL(t);return e.find(e=>e.id===t)??e.find(e=>e.label===n&&hL(e.id)===r)??null});missing=Q(()=>this.selectedId()!==null&&!this.selected()&&this.visible().length?this.selectedLabel()??this.selectedId():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=>Rz(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()[hL(e)]??0:0});maxEvents=Q(()=>cE(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 SL(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(CL(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&&SL(this.rpc(),{action:`cancel-pick`,formId:e})}async setRecording(e){let t=this.selected();if(!t)return;let n=await SL(this.rpc(),{action:`instrument`,formId:t.id,value:e});this.message.set(CL(n))}selectForm(e){this.hostPageId&&hL(e)&&hL(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()}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 SL(this.rpc(),{action:e,formId:n.id,...t});r.snapshot&&this.snapshot.set(r.snapshot),this.message.set(CL(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=_L[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 gL[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`],[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`,`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,PR,4,0,`div`,0)(1,FR,7,0,`div`,1)(2,IR,4,0,`div`,0)(3,LR,5,0,`div`,2)(4,RR,7,2,`div`,2)(5,Fz,12,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:[ML,cR,VL,HL,AR,ED,ab],styles:[`.muted[_ngcontent-%COMP%] { color: var(--%NS%text-2); } @@ -9402,7 +9478,7 @@ code[_ngcontent-%COMP%] { .divider[_ngcontent-%COMP%] { display: none; } -}`]})},Bz=(e,t)=>t.file+t.name,Vz=(e,t)=>t.file+`:`+t.line,Hz=(e,t)=>t.name;function Uz(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 Wz(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 Gz(e,t){e&1&&(z(0,`div`,14),V(1,`span`,29),z(2,`p`,30),J(3,`Scanning pipes…`),B()())}function Kz(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 qz(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 Jz(e,t){e&1&&(z(0,`span`,43),J(1,`stale?`),B())}function Yz(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 Xz(e,t){e&1&&(z(0,`span`,45),J(1,`built-in`),B())}function Zz(e,t){e&1&&(z(0,`span`,45),J(1,`NgModule`),B())}function Qz(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 $z(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,Jz,2,0,`span`,43),P(10,Yz,2,1,`span`,44),P(11,Xz,2,0,`span`,45),P(12,Zz,2,0,`span`,45),z(13,`span`,45),J(14),B()(),z(15,`span`,46),J(16),P(17,Qz,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 eB(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,$z,18,16,`li`,null,Bz),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 nB(e,t){e&1&&J(0,` None of the pipes fit this filter. `)}function rB(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,tB,1,1)(5,nB,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 iB(e,t){e&1&&(z(0,`span`,45),J(1,`built-in`),B())}function aB(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 oB(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,oB,2,2,`li`,51,Vz),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 lB(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 uB(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 dB(e,t){if(e&1&&(z(0,`li`),P(1,lB,5,3,`button`,57)(2,uB,5,2,`span`,58),B()),e&2){let e,n=t.$implicit;M(),F((e=n.targets?.[0])?1:2,e)}}function fB(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 pB(e,t){if(e&1&&(z(0,`dt`),J(1,`Per instance`),B(),z(2,`dd`)(3,`ul`,53),I(4,fB,4,3,`li`,61,Cg),B()()),e&2){let e=K();M(4),L(e.instances)}}function mB(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 hB(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,pB,6,0),P(13,mB,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 gB(e,t){e&1&&(z(0,`dt`),J(1,`Calls`),B(),z(2,`dd`,63),J(3,`None recorded yet.`),B())}function _B(e,t){e&1&&(z(0,`p`,56),J(1,`Turn on “Record calls” to see call counts and values.`),B())}function vB(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,dB,3,1,`li`,null,Hz),B()(),P(12,hB,14,5)(13,gB,4,0),B(),P(14,_B,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 yB(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 bB(e,t){if(e&1&&(z(0,`header`,48)(1,`h2`,49),J(2),B(),z(3,`span`,45),J(4),B(),P(5,iB,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,aB,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,vB,15,4)(32,yB,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 xB(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 SB(e,t){if(e&1&&(z(0,`div`,17)(1,`div`,33),P(2,eB,3,0,`ul`,34)(3,rB,8,1,`div`,35),B(),z(4,`section`,36),P(5,bB,33,12)(6,xB,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 CB(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 wB(e,t){if(e&1&&(z(0,`span`,71),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.component)}}function TB(e,t){e&1&&(z(0,`span`,45),J(1,`no source`),B())}function EB(e,t){e&1&&(z(0,`span`,43),J(1,`duplicate subscription`),B())}function DB(e,t){e&1&&(z(0,`span`,43),J(1,`resubscribing`),B())}function OB(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,CB,2,2,`button`,70)(2,wB,2,1,`span`,71),P(3,TB,2,0,`span`,45),P(4,EB,2,0,`span`,43),P(5,DB,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 kB(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,OB,8,5,`li`,68,Cg),B()()),e&2){let e=K();M(4),Y(e.async().length),M(10),L(e.async())}}function AB(e,t){e&1&&(z(0,`span`,21),J(1),B()),e&2&&(M(),Y(t.length))}function jB(e,t){e&1&&(z(0,`p`,22),J(1,`Couldn't run the lint check. Try Refresh.`),B())}function MB(e,t){e&1&&(z(0,`p`,23),J(1,`Checking…`),B())}function NB(e,t){e&1&&(z(0,`p`,24),J(1,`No problems found.`),B())}function PB(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 FB(e,t){if(e&1&&(z(0,`ul`,25),I(1,PB,14,8,`li`,74,Cg),B()),e&2){let e=K();M(),L(e.lint())}}var IB=5e3,LB=[{value:`all`,label:`All pipes`},{value:`custom`,label:`Custom`},{value:`builtin`,label:`Built-in`},{value:`impure`,label:`Impure`},{value:`live`,label:`On the page`}],RB=class e{destroyRef=E(Cs);host=E(Ml);rpc=$(null);kindOptions=LB;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{n=await e.scope(`pangular`).rpc.call(`request-instrument-pipes`,t)}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.`)},IB)}}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,Uz,6,1,`p`,13),P(18,Wz,8,1,`p`,13),P(19,Gz,4,0,`div`,14)(20,Kz,7,0,`div`,15)(21,qz,5,0,`div`,16)(22,SB,7,2,`div`,17),P(23,kB,16,1,`section`,18),z(24,`section`,19)(25,`h2`,20),J(26,` Lint `),P(27,AB,2,1,`span`,21),B(),P(28,jB,2,0,`p`,22)(29,MB,2,0,`p`,23)(30,NB,2,0,`p`,24)(31,FB,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:[hD],styles:[`[_nghost-%COMP%] { +}`]})},Hz=(e,t)=>t.file+t.name,Uz=(e,t)=>t.file+`:`+t.line,Wz=(e,t)=>t.name;function Gz(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 Kz(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 qz(e,t){e&1&&(z(0,`div`,14),V(1,`span`,29),z(2,`p`,30),J(3,`Scanning pipes…`),B()())}function Jz(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 Yz(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 Xz(e,t){e&1&&(z(0,`span`,43),J(1,`stale?`),B())}function Zz(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 Qz(e,t){e&1&&(z(0,`span`,45),J(1,`built-in`),B())}function $z(e,t){e&1&&(z(0,`span`,45),J(1,`NgModule`),B())}function eB(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 tB(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,Xz,2,0,`span`,43),P(10,Zz,2,1,`span`,44),P(11,Qz,2,0,`span`,45),P(12,$z,2,0,`span`,45),z(13,`span`,45),J(14),B()(),z(15,`span`,46),J(16),P(17,eB,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 nB(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,tB,18,16,`li`,null,Hz),B()}if(e&2){let e=K(2);M(),L(e.filtered())}}function rB(e,t){e&1&&J(0),e&2&&X(` Nothing matches “`,K(3).filter().trim(),`” in this view. `)}function iB(e,t){e&1&&J(0,` None of the pipes fit this filter. `)}function aB(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,rB,1,1)(5,iB,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 oB(e,t){e&1&&(z(0,`span`,45),J(1,`built-in`),B())}function sB(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 cB(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 lB(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,cB,2,2,`li`,51,Uz),B()()),e&2){let e=K();M(4),Y(e.usageCount),M(2),L(e.usages)}}function uB(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 dB(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 fB(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 pB(e,t){if(e&1&&(z(0,`li`),P(1,dB,5,3,`button`,57)(2,fB,5,2,`span`,58),B()),e&2){let e,n=t.$implicit;M(),F((e=n.targets?.[0])?1:2,e)}}function mB(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 hB(e,t){if(e&1&&(z(0,`dt`),J(1,`Per instance`),B(),z(2,`dd`)(3,`ul`,53),I(4,mB,4,3,`li`,61,Cg),B()()),e&2){let e=K();M(4),L(e.instances)}}function gB(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 _B(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,hB,6,0),P(13,gB,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 vB(e,t){e&1&&(z(0,`dt`),J(1,`Calls`),B(),z(2,`dd`,63),J(3,`None recorded yet.`),B())}function yB(e,t){e&1&&(z(0,`p`,56),J(1,`Turn on “Record calls” to see call counts and values.`),B())}function bB(e,t){if(e&1&&(P(0,uB,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,pB,3,1,`li`,null,Wz),B()(),P(12,_B,14,5)(13,vB,4,0),B(),P(14,yB,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 xB(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 SB(e,t){if(e&1&&(z(0,`header`,48)(1,`h2`,49),J(2),B(),z(3,`span`,45),J(4),B(),P(5,oB,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,sB,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,lB,8,1,`div`,50),z(28,`div`,50)(29,`h3`),J(30,`Live on the page`),B(),P(31,bB,15,4)(32,xB,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 CB(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 wB(e,t){if(e&1&&(z(0,`div`,17)(1,`div`,33),P(2,nB,3,0,`ul`,34)(3,aB,8,1,`div`,35),B(),z(4,`section`,36),P(5,SB,33,12)(6,CB,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 TB(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 EB(e,t){if(e&1&&(z(0,`span`,71),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.component)}}function DB(e,t){e&1&&(z(0,`span`,45),J(1,`no source`),B())}function OB(e,t){e&1&&(z(0,`span`,43),J(1,`duplicate subscription`),B())}function kB(e,t){e&1&&(z(0,`span`,43),J(1,`resubscribing`),B())}function AB(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,TB,2,2,`button`,70)(2,EB,2,1,`span`,71),P(3,DB,2,0,`span`,45),P(4,OB,2,0,`span`,43),P(5,kB,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 jB(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,AB,8,5,`li`,68,Cg),B()()),e&2){let e=K();M(4),Y(e.async().length),M(10),L(e.async())}}function MB(e,t){e&1&&(z(0,`span`,21),J(1),B()),e&2&&(M(),Y(t.length))}function NB(e,t){e&1&&(z(0,`p`,22),J(1,`Couldn't run the lint check. Try Refresh.`),B())}function PB(e,t){e&1&&(z(0,`p`,23),J(1,`Checking…`),B())}function FB(e,t){e&1&&(z(0,`p`,24),J(1,`No problems found.`),B())}function IB(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 LB(e,t){if(e&1&&(z(0,`ul`,25),I(1,IB,14,8,`li`,74,Cg),B()),e&2){let e=K();M(),L(e.lint())}}var RB=5e3,zB=[{value:`all`,label:`All pipes`},{value:`custom`,label:`Custom`},{value:`builtin`,label:`Built-in`},{value:`impure`,label:`Impure`},{value:`live`,label:`On the page`}],BB=class e{destroyRef=E(Cs);host=E(Ml);rpc=$(null);kindOptions=zB;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{n=await e.scope(`pangular`).rpc.call(`request-instrument-pipes`,t)}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.`)},RB)}}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,Gz,6,1,`p`,13),P(18,Kz,8,1,`p`,13),P(19,qz,4,0,`div`,14)(20,Jz,7,0,`div`,15)(21,Yz,5,0,`div`,16)(22,wB,7,2,`div`,17),P(23,jB,16,1,`section`,18),z(24,`section`,19)(25,`h2`,20),J(26,` Lint `),P(27,MB,2,1,`span`,21),B(),P(28,NB,2,0,`p`,22)(29,PB,2,0,`p`,23)(30,FB,2,0,`p`,24)(31,LB,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:[hD],styles:[`[_nghost-%COMP%] { display: block; color: var(--%NS%text); font-size: 13px; @@ -10091,7 +10167,7 @@ button.component-name[_ngcontent-%COMP%] { .spinner[_ngcontent-%COMP%] { animation: none; } -}`]})},zB=()=>[],BB=()=>[`/`],VB=(e,t)=>t.id,HB=(e,t)=>t.route.id,UB=(e,t)=>t[0],WB=(e,t)=>t.file+t.method,GB=(e,t)=>t.path,KB=(e,t)=>t.mode,qB=(e,t)=>t.file,JB=(e,t)=>t.rule;function YB(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 XB(e,t){e&1&&(z(0,`div`,1),V(1,`span`,6),z(2,`span`),J(3,`Reading the project…`),B()())}function ZB(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 QB(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 $B(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 tV(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 nV(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 rV(e,t){if(e&1&&(z(0,`div`,33),I(1,nV,2,2,`span`,35,UB),B()),e&2){let e=K(2),t=K(3);M(),L(t.paramList(e.match.params))}}function iV(e,t){if(e&1&&(z(0,`strong`,31),J(1),B(),J(2,` renders `),z(3,`ol`,32),I(4,tV,5,3,`li`,null,VB),B(),P(6,rV,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 aV(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 oV(e,t){if(e&1&&(z(0,`ul`,36),I(1,aV,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,oV,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,iV,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 lV(e,t){e&1&&(z(0,`span`,38),J(1,`└`),B())}function uV(e,t){e&1&&(z(0,`span`,40),J(1,`open`),B())}function dV(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 fV(e,t){e&1&&(z(0,`span`,4),J(1,`folder only`),B())}function pV(e,t){if(e&1&&(z(0,`span`,43),J(1),B()),e&2){let e=t.$implicit;M(),X(``,e,`()`)}}function mV(e,t){if(e&1&&(z(0,`span`,44),J(1),B()),e&2){let e=K().$implicit;M(),X(`"`,e.route.title,`"`)}}function hV(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=K().$implicit;M(),Y(e)}}function gV(e,t){if(e&1&&P(0,hV,2,1,`span`,35),e&2){let e=t.$implicit;F(e===`title`?-1:0)}}function _V(e,t){if(e&1&&(z(0,`tr`)(1,`td`)(2,`div`,37),P(3,lV,2,0,`span`,38),z(4,`span`,39),J(5),B(),z(6,`span`,34),J(7),B(),P(8,uV,2,0,`span`,40),B()(),z(9,`td`),P(10,dV,4,2,`span`,41)(11,fV,2,0,`span`,4),B(),z(12,`td`)(13,`div`,42),I(14,pV,2,1,`span`,43,wg),B()(),z(16,`td`),P(17,mV,2,1,`span`,44),I(18,gV,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,zB))}}function vV(e,t){e&1&&J(0,` No route matches the filter. Try part of a path or a file name. `)}function yV(e,t){e&1&&J(0,` No file routes yet. Add a .page.ts file under src/app/pages. `)}function bV(e,t){if(e&1&&(z(0,`tr`)(1,`td`,46),P(2,vV,1,0)(3,yV,1,0),B()()),e&2){let e=K(3);M(2),F(e.filter().trim()?2:3)}}function xV(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,eV,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,_V,20,14,`tr`,30,HB,!1,bV,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 SV(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 CV(e,t){if(e&1&&(z(0,`div`,47)(1,`strong`),J(2,`load() ran twice`),B(),J(3,` for `),I(4,SV,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 wV(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 TV(e,t){if(e&1&&(z(0,`div`,47)(1,`strong`),J(2,`Server function read ran twice`),B(),J(3,`: `),I(4,wV,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 EV(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 DV(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 OV(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 AV(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,AV,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 MV(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 NV(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 PV(e,t){e&1&&(z(0,`span`,4),J(1,`in process`),B())}function FV(e,t){if(e&1&&J(0),e&2){let e=K().$implicit;X(` `,e.ms,` ms `)}}function IV(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,DV,4,2)(11,OV,2,1,`span`,70),P(12,kV,2,0,`span`,34),P(13,jV,3,3,`span`,34),P(14,MV,2,2,`span`,34),B(),P(15,NV,5,1,`details`),B(),z(16,`td`)(17,`span`,71),J(18),B()(),z(19,`td`,72),P(20,PV,2,0,`span`,4)(21,FV,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 LV(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,IV,24,14,`tr`,null,VB),B()()()),e&2){let e=K(3);M(17),L(e.calls())}}function RV(e,t){e&1&&J(0,` No calls of this kind yet. `)}function zV(e,t){e&1&&J(0,` No calls yet. `)}function BV(e,t){if(e&1&&(z(0,`div`,54)(1,`p`,75),P(2,RV,1,0)(3,zV,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 VV(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 HV(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 UV(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 WV(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,UV,13,6,`tr`,null,VB),B()()()),e&2){let e=K(3);M(15),L(e.serverFns())}}function GV(e,t){if(e&1&&(z(0,`p`,61),J(1),B()),e&2){let e=K(3);M(),Y(e.callsOff)}}function KV(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 qV(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 JV(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 YV(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 XV(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 ZV(e,t){e&1&&(z(0,`div`,64),P(1,YV,5,1,`div`,57)(2,XV,7,5),B()),e&2&&(M(),F(t.error?1:2))}function QV(e,t){if(e&1){let e=W();P(0,CV,7,0,`div`,47),P(1,TV,7,0,`div`,47),z(2,`div`,48)(3,`fieldset`,49)(4,`legend`,50),J(5,`Show calls of kind`),B(),I(6,EV,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,LV,19,0,`div`,53)(11,BV,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,VV,14,6,`tr`,null,WB,!1,HV,3,0,`tr`),B()()(),P(31,WV,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,GV,2,1,`p`,61)(43,KV,2,1,`p`,62),P(44,qV,6,2),P(45,JV,2,2,`p`,63)(46,ZV,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 $V(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 eH(e,t){if(e&1&&(z(0,`div`,33),I(1,$V,2,3,`span`,34,KB),B()),e&2){let e=K(3);M(),L(e.modeCounts())}}function tH(e,t){e&1&&(z(0,`span`,89),J(1,`differs from config`),B())}function nH(e,t){if(e&1&&(z(0,`div`,42)(1,`span`,71),J(2),B(),z(3,`span`,88),J(4),B(),P(5,tH,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 rH(e,t){e&1&&(z(0,`span`,87),J(1,`not requested yet`),B())}function iH(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 aH(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,nH,6,5,`div`,42)(11,rH,2,0,`span`,87),B(),z(12,`td`),P(13,iH,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 oH(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 lH(e,t){e&1&&(z(0,`span`,87),J(1,`default, nothing configured`),B())}function uH(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function dH(e,t){if(e&1&&(z(0,`dt`),J(1,`From routeRules`),B(),z(2,`dd`),I(3,uH,2,1,`span`,35,wg),B()),e&2){let e=K(2);M(3),L(e.fromRules)}}function fH(e,t){if(e&1&&(z(0,`span`,92),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function pH(e,t){if(e&1&&(z(0,`dt`),J(1,`Static, not listed`),B(),z(2,`dd`),I(3,fH,2,1,`span`,92,wg),B()),e&2){let e=K(2);M(3),L(e.staticMissing)}}function mH(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function hH(e,t){if(e&1&&(z(0,`dt`),J(1,`Need explicit entries`),B(),z(2,`dd`),I(3,mH,2,1,`span`,35,wg),B()),e&2){let e=K(2);M(3),L(e.dynamic)}}function gH(e,t){if(e&1&&(z(0,`span`,93),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function _H(e,t){if(e&1&&(J(0,` · missing `),I(1,gH,2,1,`span`,93,wg)),e&2){let e=K(3);M(),L(e.notBuilt)}}function vH(e,t){if(e&1&&(J(0),P(1,_H,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 yH(e,t){e&1&&(z(0,`span`,87),J(1,`no build yet`),B())}function bH(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,lH,2,0,`span`,87),B(),P(7,dH,5,0),P(8,pH,5,0),P(9,hH,5,0),z(10,`dt`),J(11,`Build output`),B(),z(12,`dd`,91),P(13,vH,2,2)(14,yH,2,0,`span`,87),B()()),e&2){let e=K();M(4),L(e.listed??ov(5,BB)),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 xH(e,t){e&1&&(z(0,`div`,86)(1,`h2`),J(2,`Prerender plan`),B(),P(3,sH,2,0,`p`,4)(4,bH,15,6,`dl`,90),B()),e&2&&(M(3),F(t.dynamicConfig?3:4))}function SH(e,t){if(e&1&&(P(0,eH,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,aH,14,6,`tr`,null,GB,!1,oH,3,0,`tr`),B()()(),P(17,xH,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 CH(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 wH(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 TH(e,t){if(e&1&&(z(0,`tr`)(1,`td`)(2,`strong`),J(3),B(),P(4,CH,3,1,`div`),P(5,wH,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 EH(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,TH,17,8,`tr`,null,qB),B()()()),e&2){let e=K(3);M(15),L(e.project().content)}}function DH(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 OH(e,t){e&1&&P(0,EH,17,0,`div`,94)(1,DH,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 AH(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 MH(e,t){if(e&1&&(z(0,`p`,104),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.message)}}function NH(e,t){if(e&1&&(z(0,`li`),P(1,AH,4,2,`span`,41),P(2,jH,2,1,`span`,39),P(3,MH,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 PH(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,NH,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 FH(e,t){if(e&1&&(z(0,`p`,4),J(1),B(),z(2,`ul`,98),I(3,PH,18,8,`li`,null,JB),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 IH(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 LH(e,t){e&1&&P(0,FH,5,2)(1,IH,4,0,`div`,97),e&2&&F(+!K(2).findings().length)}function RH(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,QB,5,2,`div`,11),B(),z(27,`div`,12),G(`keydown`,function(t){return O(e),k(K().onKey(t))}),I(28,$B,4,7,`button`,13,VB),B(),z(30,`div`,14),P(31,xV,29,6)(32,QV,47,15)(33,SH,18,3)(34,OH,2,1)(35,LH,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 zH={"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.`}},BH=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`]),VH={ssr:`SSR`,ssg:`Prerendered`,client:`Client only`,cached:`Cached`,redirect:`Redirect`},HH={all:`All`,page:`Pages`,load:`load()`,action:`Actions`,fn:`Server fn`,api:`API`},UH={success:`succeeded`,redirect:`redirected`,invalid:`validation errors`,error:`failed`},WH={success:`good`,redirect:`info`,invalid:`warn`,error:`bad`};function GH(e,t=0,n=[]){for(let r of e)n.push({route:r,depth:t}),GH(r.children,t+1,n);return n}var KH=class e{rpc=$(null);canCall=Q(()=>lE(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(()=>GH(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:VH[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=zH[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=BH.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 HH[e]}kindCount(e){return e===`all`?this.allCalls().length:this.allCalls().filter(t=>t.kind===e).length}modeLabel(e){return VH[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 UH[e]}outcomeTone(e){return WH[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=CD;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,YB,7,0,`div`,0)(1,XB,4,0,`div`,1)(2,ZB,14,0,`div`,2)(3,RH,36,10),e&2&&F(t.project()===null&&t.loadFailed()?0:t.project()===null?1:t.project().analog?3:2)},dependencies:[hD],styles:[`@charset "UTF-8"; +}`]})},VB=()=>[],HB=()=>[`/`],UB=(e,t)=>t.id,WB=(e,t)=>t.route.id,GB=(e,t)=>t[0],KB=(e,t)=>t.file+t.method,qB=(e,t)=>t.path,JB=(e,t)=>t.mode,YB=(e,t)=>t.file,XB=(e,t)=>t.rule;function ZB(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 QB(e,t){e&1&&(z(0,`div`,1),V(1,`span`,6),z(2,`span`),J(3,`Reading the project…`),B()())}function $B(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 eV(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 nV(e,t){e&1&&(z(0,`div`,26),J(1),B()),e&2&&(M(),Y(t))}function rV(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 iV(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 aV(e,t){if(e&1&&(z(0,`div`,33),I(1,iV,2,2,`span`,35,GB),B()),e&2){let e=K(2),t=K(3);M(),L(t.paramList(e.match.params))}}function oV(e,t){if(e&1&&(z(0,`strong`,31),J(1),B(),J(2,` renders `),z(3,`ol`,32),I(4,rV,5,3,`li`,null,UB),B(),P(6,aV,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 lV(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 uV(e,t){if(e&1&&(z(0,`div`,27),P(1,oV,7,2)(2,lV,4,2),B()),e&2){let e=t;N(`data-tone`,e.match.matched?`good`:`bad`),M(),F(e.match.matched?1:2)}}function dV(e,t){e&1&&(z(0,`span`,38),J(1,`└`),B())}function fV(e,t){e&1&&(z(0,`span`,40),J(1,`open`),B())}function pV(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 mV(e,t){e&1&&(z(0,`span`,4),J(1,`folder only`),B())}function hV(e,t){if(e&1&&(z(0,`span`,43),J(1),B()),e&2){let e=t.$implicit;M(),X(``,e,`()`)}}function gV(e,t){if(e&1&&(z(0,`span`,44),J(1),B()),e&2){let e=K().$implicit;M(),X(`"`,e.route.title,`"`)}}function _V(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=K().$implicit;M(),Y(e)}}function vV(e,t){if(e&1&&P(0,_V,2,1,`span`,35),e&2){let e=t.$implicit;F(e===`title`?-1:0)}}function yV(e,t){if(e&1&&(z(0,`tr`)(1,`td`)(2,`div`,37),P(3,dV,2,0,`span`,38),z(4,`span`,39),J(5),B(),z(6,`span`,34),J(7),B(),P(8,fV,2,0,`span`,40),B()(),z(9,`td`),P(10,pV,4,2,`span`,41)(11,mV,2,0,`span`,4),B(),z(12,`td`)(13,`div`,42),I(14,hV,2,1,`span`,43,wg),B()(),z(16,`td`),P(17,gV,2,1,`span`,44),I(18,vV,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,VB))}}function bV(e,t){e&1&&J(0,` No route matches the filter. Try part of a path or a file name. `)}function xV(e,t){e&1&&J(0,` No file routes yet. Add a .page.ts file under src/app/pages. `)}function SV(e,t){if(e&1&&(z(0,`tr`)(1,`td`,46),P(2,bV,1,0)(3,xV,1,0),B()()),e&2){let e=K(3);M(2),F(e.filter().trim()?2:3)}}function CV(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,nV,2,1,`div`,26)(12,uV,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,yV,20,14,`tr`,30,WB,!1,SV,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 wV(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 TV(e,t){if(e&1&&(z(0,`div`,47)(1,`strong`),J(2,`load() ran twice`),B(),J(3,` for `),I(4,wV,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 EV(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 DV(e,t){if(e&1&&(z(0,`div`,47)(1,`strong`),J(2,`Server function read ran twice`),B(),J(3,`: `),I(4,EV,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 OV(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 kV(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 AV(e,t){if(e&1&&(z(0,`span`,70),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.url)}}function jV(e,t){e&1&&(z(0,`span`,34),J(1,`ran during server rendering`),B())}function MV(e,t){if(e&1&&J(0),e&2){let e=K(2).$implicit;X(` to `,e.location,` `)}}function NV(e,t){if(e&1&&(z(0,`span`,34),J(1),P(2,MV,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 PV(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 FV(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 IV(e,t){e&1&&(z(0,`span`,4),J(1,`in process`),B())}function LV(e,t){if(e&1&&J(0),e&2){let e=K().$implicit;X(` `,e.ms,` ms `)}}function RV(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,kV,4,2)(11,AV,2,1,`span`,70),P(12,jV,2,0,`span`,34),P(13,NV,3,3,`span`,34),P(14,PV,2,2,`span`,34),B(),P(15,FV,5,1,`details`),B(),z(16,`td`)(17,`span`,71),J(18),B()(),z(19,`td`,72),P(20,IV,2,0,`span`,4)(21,LV,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 zV(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,RV,24,14,`tr`,null,UB),B()()()),e&2){let e=K(3);M(17),L(e.calls())}}function BV(e,t){e&1&&J(0,` No calls of this kind yet. `)}function VV(e,t){e&1&&J(0,` No calls yet. `)}function HV(e,t){if(e&1&&(z(0,`div`,54)(1,`p`,75),P(2,BV,1,0)(3,VV,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 UV(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 WV(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 GV(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 KV(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,GV,13,6,`tr`,null,UB),B()()()),e&2){let e=K(3);M(15),L(e.serverFns())}}function qV(e,t){if(e&1&&(z(0,`p`,61),J(1),B()),e&2){let e=K(3);M(),Y(e.callsOff)}}function JV(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 YV(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 XV(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 ZV(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 QV(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 $V(e,t){e&1&&(z(0,`div`,64),P(1,ZV,5,1,`div`,57)(2,QV,7,5),B()),e&2&&(M(),F(t.error?1:2))}function eH(e,t){if(e&1){let e=W();P(0,TV,7,0,`div`,47),P(1,DV,7,0,`div`,47),z(2,`div`,48)(3,`fieldset`,49)(4,`legend`,50),J(5,`Show calls of kind`),B(),I(6,OV,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,zV,19,0,`div`,53)(11,HV,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,UV,14,6,`tr`,null,KB,!1,WV,3,0,`tr`),B()()(),P(31,KV,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,qV,2,1,`p`,61)(43,JV,2,1,`p`,62),P(44,YV,6,2),P(45,XV,2,2,`p`,63)(46,$V,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 tH(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 nH(e,t){if(e&1&&(z(0,`div`,33),I(1,tH,2,3,`span`,34,JB),B()),e&2){let e=K(3);M(),L(e.modeCounts())}}function rH(e,t){e&1&&(z(0,`span`,89),J(1,`differs from config`),B())}function iH(e,t){if(e&1&&(z(0,`div`,42)(1,`span`,71),J(2),B(),z(3,`span`,88),J(4),B(),P(5,rH,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 aH(e,t){e&1&&(z(0,`span`,87),J(1,`not requested yet`),B())}function oH(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,iH,6,5,`div`,42)(11,aH,2,0,`span`,87),B(),z(12,`td`),P(13,oH,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 lH(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 uH(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function dH(e,t){e&1&&(z(0,`span`,87),J(1,`default, nothing configured`),B())}function fH(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function pH(e,t){if(e&1&&(z(0,`dt`),J(1,`From routeRules`),B(),z(2,`dd`),I(3,fH,2,1,`span`,35,wg),B()),e&2){let e=K(2);M(3),L(e.fromRules)}}function mH(e,t){if(e&1&&(z(0,`span`,92),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function hH(e,t){if(e&1&&(z(0,`dt`),J(1,`Static, not listed`),B(),z(2,`dd`),I(3,mH,2,1,`span`,92,wg),B()),e&2){let e=K(2);M(3),L(e.staticMissing)}}function gH(e,t){if(e&1&&(z(0,`span`,35),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function _H(e,t){if(e&1&&(z(0,`dt`),J(1,`Need explicit entries`),B(),z(2,`dd`),I(3,gH,2,1,`span`,35,wg),B()),e&2){let e=K(2);M(3),L(e.dynamic)}}function vH(e,t){if(e&1&&(z(0,`span`,93),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function yH(e,t){if(e&1&&(J(0,` · missing `),I(1,vH,2,1,`span`,93,wg)),e&2){let e=K(3);M(),L(e.notBuilt)}}function bH(e,t){if(e&1&&(J(0),P(1,yH,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 xH(e,t){e&1&&(z(0,`span`,87),J(1,`no build yet`),B())}function SH(e,t){if(e&1&&(z(0,`dl`,90)(1,`dt`),J(2,`Listed`),B(),z(3,`dd`),I(4,uH,2,1,`span`,35,wg),P(6,dH,2,0,`span`,87),B(),P(7,pH,5,0),P(8,hH,5,0),P(9,_H,5,0),z(10,`dt`),J(11,`Build output`),B(),z(12,`dd`,91),P(13,bH,2,2)(14,xH,2,0,`span`,87),B()()),e&2){let e=K();M(4),L(e.listed??ov(5,HB)),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 CH(e,t){e&1&&(z(0,`div`,86)(1,`h2`),J(2,`Prerender plan`),B(),P(3,lH,2,0,`p`,4)(4,SH,15,6,`dl`,90),B()),e&2&&(M(3),F(t.dynamicConfig?3:4))}function wH(e,t){if(e&1&&(P(0,nH,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,qB,!1,cH,3,0,`tr`),B()()(),P(17,CH,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 TH(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 EH(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 DH(e,t){if(e&1&&(z(0,`tr`)(1,`td`)(2,`strong`),J(3),B(),P(4,TH,3,1,`div`),P(5,EH,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 OH(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,DH,17,8,`tr`,null,YB),B()()()),e&2){let e=K(3);M(15),L(e.project().content)}}function kH(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 AH(e,t){e&1&&P(0,OH,17,0,`div`,94)(1,kH,5,0,`div`,54),e&2&&F(+!K(2).project().content.length)}function jH(e,t){if(e&1&&(z(0,`span`,17),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.items.length)}}function MH(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 NH(e,t){if(e&1&&(z(0,`span`,39),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.path)}}function PH(e,t){if(e&1&&(z(0,`p`,104),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.message)}}function FH(e,t){if(e&1&&(z(0,`li`),P(1,MH,4,2,`span`,41),P(2,NH,2,1,`span`,39),P(3,PH,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 IH(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,jH,2,1,`span`,17),B(),z(7,`p`),J(8),B(),z(9,`ul`,101),I(10,FH,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 LH(e,t){if(e&1&&(z(0,`p`,4),J(1),B(),z(2,`ul`,98),I(3,IH,18,8,`li`,null,XB),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 RH(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 zH(e,t){e&1&&P(0,LH,5,2)(1,RH,4,0,`div`,97),e&2&&F(+!K(2).findings().length)}function BH(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,eV,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,UB),B(),z(30,`div`,14),P(31,CV,29,6)(32,eH,47,15)(33,wH,18,3)(34,AH,2,1)(35,zH,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 VH={"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.`}},HH=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`]),UH={ssr:`SSR`,ssg:`Prerendered`,client:`Client only`,cached:`Cached`,redirect:`Redirect`},WH={all:`All`,page:`Pages`,load:`load()`,action:`Actions`,fn:`Server fn`,api:`API`},GH={success:`succeeded`,redirect:`redirected`,invalid:`validation errors`,error:`failed`},KH={success:`good`,redirect:`info`,invalid:`warn`,error:`bad`};function qH(e,t=0,n=[]){for(let r of e)n.push({route:r,depth:t}),qH(r.children,t+1,n);return n}var JH=class e{rpc=$(null);canCall=Q(()=>lE(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(()=>qH(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:UH[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=VH[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=HH.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 WH[e]}kindCount(e){return e===`all`?this.allCalls().length:this.allCalls().filter(t=>t.kind===e).length}modeLabel(e){return UH[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 GH[e]}outcomeTone(e){return KH[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=CD;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,ZB,7,0,`div`,0)(1,QB,4,0,`div`,1)(2,$B,14,0,`div`,2)(3,BH,36,10),e&2&&F(t.project()===null&&t.loadFailed()?0:t.project()===null?1:t.project().analog?3:2)},dependencies:[hD],styles:[`@charset "UTF-8"; [_nghost-%COMP%] { --%NS%good: var(--%NS%ok); --%NS%bad: var(--%NS%danger); @@ -11356,7 +11432,7 @@ h2[_ngcontent-%COMP%] { color: var(--%NS%text-strong); font-size: 15px; font-weight: 600; -}`]})},qH=(e,t)=>t.id,JH=(e,t)=>t.id+t.kind,YH=(e,t)=>t.side+t.id,XH=(e,t)=>t.key;function ZH(e,t){e&1&&(z(0,`div`,0),V(1,`span`,51),z(2,`span`),J(3,`Loading…`),B()())}function QH(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 $H(e,t){e&1&&(z(0,`span`,64),J(1,`this page`),B())}function eU(e,t){e&1&&(z(0,`span`,65),J(1,`overridden`),B())}function tU(e,t){e&1&&(z(0,`span`,66),J(1,`aborted`),B())}function nU(e,t){if(e&1){let e=W();z(0,`tr`,56),G(`click`,function(){let t=O(e).$implicit;return k(K(2).selectedRequestId.set(t.id))}),z(1,`td`,57)(2,`button`,58)(3,`span`,59),J(4),B(),J(5),B()(),z(6,`td`,60),V(7,`span`,61),J(8),B(),z(9,`td`),J(10),B(),z(11,`td`,62),J(12),B(),z(13,`td`,62),J(14),B(),z(15,`td`)(16,`div`,63),P(17,$H,2,0,`span`,64),P(18,eU,2,0,`span`,65),P(19,tU,2,0,`span`,66),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 rU(e,t){if(e&1&&(z(0,`span`,71),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.note)}}function iU(e,t){if(e&1&&(z(0,`p`,70)(1,`span`,65),J(2),B(),z(3,`span`),J(4),B(),P(5,rU,2,1,`span`,71),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 aU(e,t){if(e&1&&(z(0,`h3`),J(1,`Overrides from the panel`),B(),z(2,`p`,34),J(3,` This response was changed on purpose, so it is not what the app sends on its own. `),B(),I(4,iU,6,3,`p`,70,JH)),e&2){let e=K();M(4),L(e.overrides)}}function oU(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 lU(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`,34),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.reason)}}function dU(e,t){if(e&1&&(z(0,`dl`,72)(1,`div`)(2,`dt`),J(3,`Navigation`),B(),z(4,`dd`)(5,`code`),J(6),B(),P(7,oU,3,1),J(8),B()(),P(9,sU,5,4,`div`),P(10,cU,5,1,`div`),P(11,lU,5,1,`div`),B(),P(12,uU,2,1,`p`,34)),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 fU(e,t){if(e&1&&(z(0,`h3`),J(1,`Router during the render`),B(),I(2,dU,13,7,null,null,Cg)),e&2){let e=K();M(2),L(e.navigations)}}function pU(e,t){e&1&&(z(0,`span`,64),J(1,`cached`),B())}function mU(e,t){if(e&1&&(z(0,`span`,74),J(1,`not cached`),B()),e&2){let e=K().$implicit;R(`title`,K(3).skipText(e.cacheSkip))}}function hU(e,t){if(e&1&&(z(0,`p`,75),J(1),B()),e&2){let e=K().$implicit,t=K(3);M(),X(`Not cached: `,t.skipText(e.cacheSkip),`.`)}}function gU(e,t){if(e&1&&(z(0,`p`,70)(1,`span`,59),J(2),B(),z(3,`span`,73),J(4),B(),z(5,`span`,60),J(6),B(),z(7,`span`,71),J(8),B(),P(9,pU,2,0,`span`,64)(10,mU,2,1,`span`,74),B(),P(11,hU,2,1,`p`,75)),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 _U(e,t){e&1&&(z(0,`p`,34),J(1,`The render made no HttpClient calls.`),B())}function vU(e,t){e&1&&(z(0,`p`,75),J(1),B()),e&2&&(M(),X(`Why: `,t,`.`))}function yU(e,t){if(e&1&&(z(0,`p`,70)(1,`span`,59),J(2),B(),z(3,`span`,73),J(4),B(),z(5,`span`,66),J(6,`cache miss`),B()(),P(7,vU,2,1,`p`,75)),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 bU(e,t){if(e&1&&(z(0,`h3`),J(1),B(),z(2,`p`,34),J(3,` These calls ran on the server and again after hydration instead of reading the transfer cache. `),B(),I(4,yU,8,4,null,null,qH)),e&2){let e=K(3);M(),X(`Fetched again in the browser (`,e.refetched().length,`)`),M(3),L(e.refetched())}}function xU(e,t){e&1&&(z(0,`p`,69),J(1,`No server call ran again in the browser.`),B())}function SU(e,t){if(e&1&&(z(0,`div`,55)(1,`h3`,67),J(2),z(3,`code`),J(4),B()(),z(5,`dl`,68)(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,aU,6,0),P(33,fU,4,0),z(34,`h3`),J(35),B(),I(36,gU,12,11,null,null,qH,!1,_U,2,0,`p`,34),P(39,bU,6,1)(40,xU,2,0,`p`,69),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 CU(e,t){if(e&1&&(z(0,`div`,15)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,52),J(5,`Request`),B(),z(6,`th`,52),J(7,`Status`),B(),z(8,`th`,52),J(9,`Render mode`),B(),z(10,`th`,53),J(11,`Render`),B(),z(12,`th`,53),J(13,`Server calls`),B(),z(14,`th`,52),J(15,`Notes`),B()()(),z(16,`tbody`),I(17,nU,20,20,`tr`,54,qH),B()()(),P(19,SU,41,12,`div`,55)),e&2){let e,t=K();M(17),L(t.requests()),M(2),F((e=t.selectedRequest())?19:-1,e)}}function wU(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No SSR requests traced.`),B(),z(3,`p`,34),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 TU(e,t){e&1&&(z(0,`span`,76),J(1,`transfer cache`),B())}function EU(e,t){if(e&1&&(z(0,`span`,76),J(1),B()),e&2){let e=K().$implicit;M(),X(`delayed `,e.delayMs,` ms`)}}function DU(e,t){e&1&&(z(0,`span`,65),J(1,`mocked`),B())}function OU(e,t){e&1&&(z(0,`span`,66),J(1,`faulted`),B())}function kU(e,t){if(e&1&&(z(0,`span`,79),J(1,`rule `),z(2,`code`),J(3),B()()),e&2){let e=t;R(`title`,`Matched rule: `+e),M(3),Y(e)}}function AU(e,t){if(e&1){let e=W();z(0,`tr`,56),G(`click`,function(){let t=O(e).$implicit;return k(K(2).openCall(t.id))}),z(1,`td`)(2,`span`,76),J(3),B()(),z(4,`td`,59),J(5),B(),z(6,`td`,57)(7,`button`,77),J(8),B()(),z(9,`td`,78),J(10),B(),z(11,`td`,60),V(12,`span`,61),J(13),B(),z(14,`td`,62),J(15),B(),z(16,`td`)(17,`div`,63),P(18,TU,2,0,`span`,76),P(19,EU,2,1,`span`,76),P(20,DU,2,0,`span`,65),P(21,OU,2,0,`span`,66),P(22,kU,4,2,`span`,79),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`,15)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,52),J(5,`Side`),B(),z(6,`th`,52),J(7,`Method`),B(),z(8,`th`,52),J(9,`URL`),B(),z(10,`th`,52),J(11,`Page`),B(),z(12,`th`,52),J(13,`Status`),B(),z(14,`th`,53),J(15,`Time`),B(),z(16,`th`,52),J(17,`Notes`),B()()(),z(18,`tbody`),I(19,AU,23,26,`tr`,54,YH),B()()()),e&2){let e=K();M(19),L(e.timeline())}}function MU(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No requests yet.`),B(),z(3,`p`,34),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 NU(e,t){e&1&&(z(0,`p`,85),J(1,` Matched rule `),z(2,`code`),J(3),B()()),e&2&&(M(3),Y(t))}function PU(e,t){if(e&1){let e=W();z(0,`div`,80),G(`keydown.escape`,function(){return O(e),k(K().closePreview())}),z(1,`div`,81)(2,`h3`,82),J(3,`Response preview`),B(),z(4,`button`,83),G(`click`,function(){return O(e),k(K().closePreview())}),J(5,`Close`),B()(),z(6,`p`,84)(7,`span`,59),J(8),B(),z(9,`span`,60),J(10),B(),z(11,`span`,73),J(12),B()(),P(13,NU,4,1,`p`,85),z(14,`pre`),J(15),B()()}if(e&2){let e,n=t,r=K();M(8),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))?13:-1,e),M(),q(`error`,!!n.error&&!n.cancelled),M(),Y(n.error??n.preview??`(no body)`)}}function FU(e,t){if(e&1&&(z(0,`p`,19),J(1),B()),e&2){let e=K();M(),Y(e.writesOff)}}function IU(e,t){e&1&&(z(0,`p`,34),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 LU(e,t){e&1&&(z(0,`span`),J(1,`passthrough`),B())}function RU(e,t){if(e&1&&(z(0,`span`,60),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 zU(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),X(``,e.delayMs,` ms`)}}function BU(e,t){e&1&&(z(0,`span`),J(1,`mock body`),B())}function VU(e,t){e&1&&(z(0,`p`,93),J(1,` The SSR mock is not written to TransferState, so the browser requests this URL again. `),B())}function HU(e,t){if(e&1){let e=W();z(0,`li`)(1,`label`,86)(2,`input`,87),G(`change`,function(){let t=O(e).$implicit;return k(K().toggleRule(t.id))}),B(),z(3,`code`,88)(4,`span`,89),J(5),B(),J(6),B()(),z(7,`button`,90),G(`click`,function(){let t=O(e).$implicit;return k(K().removeRule(t.id))}),J(8,` Remove `),B(),z(9,`span`,91)(10,`span`),J(11),B(),P(12,LU,2,0,`span`)(13,RU,2,7,`span`,92),P(14,zU,2,1,`span`),P(15,BU,2,0,`span`),B(),P(16,VU,2,0,`p`,93),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 UU(e,t){e&1&&(z(0,`li`,41),J(1,`No rules. SSR rules apply on the next page load.`),B())}function WU(e,t){if(e&1){let e=W();z(0,`p`,34),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`,94),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 GU(e,t){if(e&1){let e=W();z(0,`label`),J(1,` TransferState key `),z(2,`input`,95),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`,21),J(7,`(empty removes the entry)`),B()(),z(8,`textarea`,96),G(`input`,function(t){return O(e),k(K().patchOverride(`value`,t))}),B()(),z(9,`p`,97),J(10),B()}if(e&2){let e=K();M(2),R(`value`,e.overrideDraft().key),M(6),R(`value`,e.overrideDraft().value),N(`aria-invalid`,e.overrideValueError()?`true`:null),M(2),Y(e.overrideValueError())}}function KU(e,t){e&1&&(z(0,`p`,34),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 qU(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.message)}}function JU(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 YU(e,t){if(e&1){let e=W();z(0,`li`)(1,`label`,86)(2,`input`,87),G(`change`,function(){let t=O(e).$implicit;return k(K().toggleOverride(t.id))}),B(),z(3,`code`,88)(4,`span`,89),J(5),B(),J(6),B()(),z(7,`button`,90),G(`click`,function(){let t=O(e).$implicit;return k(K().removeOverride(t.id))}),J(8,` Remove `),B(),z(9,`span`,91),P(10,qU,2,1,`span`),P(11,JU,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 XU(e,t){e&1&&(z(0,`li`,41),J(1,`No overrides.`),B())}function ZU(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 QU(e,t){if(e&1&&(z(0,`span`,99)(1,`span`,100),J(2,`Expected`),B(),z(3,`code`),J(4),B()()),e&2){let e=K().$implicit;M(4),Y(e.expected)}}function $U(e,t){if(e&1&&(z(0,`span`,99)(1,`span`,100),J(2,`Actual`),B(),z(3,`code`),J(4),B()()),e&2){let e=K().$implicit;M(4),Y(e.actual)}}function eW(e,t){if(e&1&&(z(0,`li`)(1,`code`),J(2),B(),P(3,QU,5,1,`span`,99),P(4,$U,5,1,`span`,99),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 tW(e,t){if(e&1&&(z(0,`h3`),J(1),B(),z(2,`ul`,98),I(3,eW,5,3,`li`,null,Cg),B()),e&2){let e=K();M(),X(`Mismatches (`,e.mismatches.length,`)`),M(2),L(e.mismatches)}}function nW(e,t){if(e&1&&(z(0,`li`)(1,`code`),J(2),B()()),e&2){let e=t.$implicit;M(2),Y(e)}}function rW(e,t){if(e&1&&(z(0,`h3`),J(1,`ngSkipHydration hosts`),B(),z(2,`ul`,101),I(3,nW,3,1,`li`,null,Cg),B()),e&2){let e=K();M(3),L(e.skipHydrationHosts)}}function iW(e,t){e&1&&(z(0,`h3`),J(1,`Warnings`),B(),z(2,`p`,34),J(3,` Not captured: add `),z(4,`code`),J(5,`providePangularHttp()`),B(),J(6,` to the app providers. `),B())}function aW(e,t){if(e&1&&(z(0,`pre`,102),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function oW(e,t){e&1&&(z(0,`p`,69),J(1,`No hydration warnings.`),B())}function sW(e,t){if(e&1&&(z(0,`h3`),J(1),B(),I(2,aW,2,1,`pre`,102,Cg,!1,oW,2,0,`p`,69)),e&2){let e=K();M(),X(`Warnings (`,e.warnings.length,`)`),M(),L(e.warnings)}}function cW(e,t){if(e&1&&(z(0,`dl`,68)(1,`div`)(2,`dt`),J(3,`Enabled`),B(),z(4,`dd`)(5,`span`,76),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,ZU,15,5),B(),P(33,tW,5,1),P(34,rW,5,0),P(35,iW,7,0)(36,sW,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 lW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No hydration data for this page.`),B(),z(3,`p`,34),J(4,`Open a server rendered page of the app to see its stats.`),B()())}function uW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No TransferState script: this page was not server rendered.`),B()())}function dW(e,t){if(e&1&&(z(0,`p`,104),J(1),B()),e&2){let e=K(2);M(),Y(e.error)}}function fW(e,t){e&1&&(z(0,`span`,76),J(1),B()),e&2&&(M(),Y(t))}function pW(e,t){if(e&1&&(z(0,`span`,76),J(1),B(),z(2,`span`,107),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 mW(e,t){if(e&1&&(z(0,`span`,107),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.key)}}function hW(e,t){if(e&1&&(z(0,`details`)(1,`summary`),V(2,`span`,106),P(3,fW,2,1,`span`,76),P(4,pW,4,6)(5,mW,2,1,`span`,107),z(6,`span`,108),J(7),B()(),z(8,`pre`),J(9),dv(10,`json`),B()()),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(2),Y(pv(10,4,r.value))}}function gW(e,t){if(e&1&&(z(0,`p`,103),J(1),B(),P(2,dW,2,1,`p`,104),z(3,`div`,105),I(4,hW,11,6,`details`,null,XH),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 _W(e,t){e&1&&P(0,uW,3,0,`div`,11)(1,gW,6,4),e&2&&F(+!!t.found)}function vW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`Open a page of the app to see its payload.`),B()())}var yW={kind:`render-error`,pattern:``,message:``,key:``,value:``},bW={"render-error":`Render error`,"client-render":`Client render`,"state-edit":`TransferState edit`},xW={server:`Server`,prerender:`Prerender`,client:`Client`,redirect:`Redirect`,"not-rendered":`Not rendered`,unknown:`Unknown`},SW={pattern:``,method:``,target:`both`,status:``,delayMs:``,body:``};function CW(e){try{let t=new URL(e,`http://x`);return t.pathname+t.search}catch{return e}}var wW=50,TW=500,EW=1e5,DW=[{value:``,label:`None`},...PT.map(([e,t])=>({value:String(e),label:`${e} ${t}`}))],OW=class e{rpc=$(null);canWrite=Q(()=>lE(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({...yW});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({...SW});message=j(``);bodyPlaceholder=`{ "error": "Service unavailable" }`;statusOptions=DW;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(()=>cE(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));selectedCall=Q(()=>this.timeline().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} ${CW(e.url)}`));return t.calls.filter(t=>t.side===`client`&&!t.cacheHit&&!t.mocked&&t.at>=e.at&&n.has(`${t.method} ${CW(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>TW||this.bodyError()||this.rules().length>=wW)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>=wW?`You can add up to ${wW} rules. Remove one to add another.`:e.pattern.trim()?e.pattern.trim().length>TW?`The URL pattern is limited to ${TW} 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>EW)return`The mock body is limited to ${EW} 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} ${CW(e.url)}`,n=this.requestCalls().filter(e=>`${e.method} ${CW(e.url)}`===t),r=n[0];return r?.cacheSkip&&n.every(e=>e.cacheSkip===r.cacheSkip)?this.skipText(r.cacheSkip):``}renderModeLabel(e){return xW[e]??`Unknown`}statusLabel(e){return e.cancelled?`cancelled`:e.status?String(e.status):`ERR`}callTone(e){return e.cancelled?`neutral`:this.statusTone(e.status)}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})}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=[{value:``,label:`Any`},...[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`].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)}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({...SW}),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 bW[e]??e}setOverrideDraft(e,t){this.overrideDraft.update(n=>({...n,[e]:t}))}patchOverride(e,t){let n=t.target.value;this.overrideDraft.update(t=>({...t,[e]:n}))}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({...yW,kind:t.kind}),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:113,vars:42,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`],[1,`table-wrap`],[`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`],[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`],[`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`],[`id`,`call-preview`,`role`,`region`,`aria-labelledby`,`preview-heading`,1,`preview`,3,`keydown.escape`],[1,`preview-head`],[`id`,`preview-heading`,`tabindex`,`-1`],[`type`,`button`,1,`ghost`,3,`click`],[1,`preview-meta`],[1,`preview-rule`],[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`],[`spellcheck`,`false`,`autocomplete`,`off`,3,`input`,`value`],[`rows`,`3`,`spellcheck`,`false`,`aria-describedby`,`override-value-error`,3,`input`,`value`],[`id`,`override-value-error`,1,`field-error`],[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`]],template:function(e,t){if(e&1&&(P(0,ZH,4,0,`div`,0)(1,QH,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,CU,20,1)(16,wU,11,0,`div`,11),B(),z(17,`section`,12)(18,`h2`,13),J(19),B(),V(20,`app-limit-note`,14),P(21,jU,21,0,`div`,15)(22,MU,11,0,`div`,11),P(23,PU,16,14,`div`,16),B(),z(24,`section`,17)(25,`h2`,18),J(26,`Fault injection`),B(),P(27,FU,2,1,`p`,19),z(28,`form`,20),G(`submit`,function(e){return t.addRule(e)}),z(29,`label`)(30,`span`),J(31,`URL pattern `),z(32,`span`,21),J(33,`(substring or * glob)`),B()(),z(34,`input`,22),G(`input`,function(e){return t.patch(`pattern`,e)}),B()(),z(35,`div`,23)(36,`div`,24)(37,`span`,25),J(38,`Method`),B(),z(39,`app-select`,26),G(`valueChange`,function(e){return t.setDraft(`method`,e??``)}),B()(),z(40,`div`,24)(41,`span`,27),J(42,`Apply on`),B(),z(43,`app-select`,28),G(`valueChange`,function(e){return t.setDraft(`target`,e??`both`)}),B()()(),z(44,`div`,23)(45,`div`,24)(46,`span`,29),J(47,`Status`),B(),z(48,`app-select`,30),G(`valueChange`,function(e){return t.setDraft(`status`,e??``)}),B()(),z(49,`label`),J(50,` Delay (ms) `),z(51,`input`,31),G(`input`,function(e){return t.patch(`delayMs`,e)}),B()()(),z(52,`label`)(53,`span`),J(54,`Mock JSON body `),z(55,`span`,21),J(56,`(optional)`),B()(),z(57,`textarea`,32),G(`input`,function(e){return t.patch(`body`,e)}),B()(),z(58,`p`,33),J(59),B(),P(60,IU,2,0,`p`,34),z(61,`p`,35),J(62),B(),z(63,`div`,36)(64,`button`,37),J(65,` Add rule `),B()()(),z(66,`h3`,38),J(67),B(),z(68,`ul`,39),I(69,HU,17,17,`li`,40,qH,!1,UU,2,0,`li`,41),B()(),z(72,`section`,42)(73,`h2`,43),J(74,`SSR overrides`),B(),z(75,`p`,34),J(76,` Development only. These change what the server sends for matching pages, from the next full page load, and the request is marked `),z(77,`strong`),J(78,`overridden`),B(),J(79,`. `),B(),z(80,`form`,20),G(`submit`,function(e){return t.addOverride(e)}),z(81,`div`,24)(82,`span`,44),J(83,`Override`),B(),z(84,`app-select`,45),G(`valueChange`,function(e){return t.setOverrideDraft(`kind`,e??`render-error`)}),B()(),z(85,`label`)(86,`span`),J(87,`Page pattern `),z(88,`span`,21),J(89,`(substring or * glob)`),B()(),z(90,`input`,46),G(`input`,function(e){return t.patchOverride(`pattern`,e)}),B()(),P(91,WU,8,1)(92,GU,11,4)(93,KU,11,0,`p`,34),z(94,`div`,36)(95,`button`,37),J(96,` Add override `),B()()(),z(97,`h3`,38),J(98),B(),z(99,`ul`,39),I(100,YU,12,12,`li`,40,qH,!1,XU,2,0,`li`,41),B()(),z(103,`section`,47)(104,`h2`,48),J(105,`Hydration`),B(),P(106,cW,37,14)(107,lW,5,0,`div`,11),B(),z(108,`section`,49)(109,`h2`,50),J(110,`TransferState payload`),B(),P(111,_W,2,1)(112,vW,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(),F(t.timeline().length?21:22),M(2),F((e=t.selectedCall())?23:-1,e),M(4),F(t.canWrite()?-1:27),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()?60:-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`?91:n===`state-edit`?92:n===`client-render`?93:-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)?106:107,r),M(5),F((i=t.selectedPayload())?111:112,i)}},dependencies:[ED,hD,ab],styles:[`@charset "UTF-8"; +}`]})},YH=(e,t)=>t.id,XH=(e,t)=>t.id+t.kind,ZH=(e,t)=>t.side+t.id,QH=(e,t)=>t.key;function $H(e,t){e&1&&(z(0,`div`,0),V(1,`span`,51),z(2,`span`),J(3,`Loading…`),B()())}function eU(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 tU(e,t){e&1&&(z(0,`span`,64),J(1,`this page`),B())}function nU(e,t){e&1&&(z(0,`span`,65),J(1,`overridden`),B())}function rU(e,t){e&1&&(z(0,`span`,66),J(1,`aborted`),B())}function iU(e,t){if(e&1){let e=W();z(0,`tr`,56),G(`click`,function(){let t=O(e).$implicit;return k(K(2).selectedRequestId.set(t.id))}),z(1,`td`,57)(2,`button`,58)(3,`span`,59),J(4),B(),J(5),B()(),z(6,`td`,60),V(7,`span`,61),J(8),B(),z(9,`td`),J(10),B(),z(11,`td`,62),J(12),B(),z(13,`td`,62),J(14),B(),z(15,`td`)(16,`div`,63),P(17,tU,2,0,`span`,64),P(18,nU,2,0,`span`,65),P(19,rU,2,0,`span`,66),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 aU(e,t){if(e&1&&(z(0,`span`,71),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.note)}}function oU(e,t){if(e&1&&(z(0,`p`,70)(1,`span`,65),J(2),B(),z(3,`span`),J(4),B(),P(5,aU,2,1,`span`,71),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`,34),J(3,` This response was changed on purpose, so it is not what the app sends on its own. `),B(),I(4,oU,6,3,`p`,70,XH)),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 lU(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 uU(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 dU(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 fU(e,t){if(e&1&&(z(0,`p`,34),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.reason)}}function pU(e,t){if(e&1&&(z(0,`dl`,72)(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,lU,5,4,`div`),P(10,uU,5,1,`div`),P(11,dU,5,1,`div`),B(),P(12,fU,2,1,`p`,34)),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 mU(e,t){if(e&1&&(z(0,`h3`),J(1,`Router during the render`),B(),I(2,pU,13,7,null,null,Cg)),e&2){let e=K();M(2),L(e.navigations)}}function hU(e,t){e&1&&(z(0,`span`,64),J(1,`cached`),B())}function gU(e,t){if(e&1&&(z(0,`span`,74),J(1,`not cached`),B()),e&2){let e=K().$implicit;R(`title`,K(3).skipText(e.cacheSkip))}}function _U(e,t){if(e&1&&(z(0,`p`,75),J(1),B()),e&2){let e=K().$implicit,t=K(3);M(),X(`Not cached: `,t.skipText(e.cacheSkip),`.`)}}function vU(e,t){if(e&1&&(z(0,`p`,70)(1,`span`,59),J(2),B(),z(3,`span`,73),J(4),B(),z(5,`span`,60),J(6),B(),z(7,`span`,71),J(8),B(),P(9,hU,2,0,`span`,64)(10,gU,2,1,`span`,74),B(),P(11,_U,2,1,`p`,75)),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 yU(e,t){e&1&&(z(0,`p`,34),J(1,`The render made no HttpClient calls.`),B())}function bU(e,t){e&1&&(z(0,`p`,75),J(1),B()),e&2&&(M(),X(`Why: `,t,`.`))}function xU(e,t){if(e&1&&(z(0,`p`,70)(1,`span`,59),J(2),B(),z(3,`span`,73),J(4),B(),z(5,`span`,66),J(6,`cache miss`),B()(),P(7,bU,2,1,`p`,75)),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 SU(e,t){if(e&1&&(z(0,`h3`),J(1),B(),z(2,`p`,34),J(3,` These calls ran on the server and again after hydration instead of reading the transfer cache. `),B(),I(4,xU,8,4,null,null,YH)),e&2){let e=K(3);M(),X(`Fetched again in the browser (`,e.refetched().length,`)`),M(3),L(e.refetched())}}function CU(e,t){e&1&&(z(0,`p`,69),J(1,`No server call ran again in the browser.`),B())}function wU(e,t){if(e&1&&(z(0,`div`,55)(1,`h3`,67),J(2),z(3,`code`),J(4),B()(),z(5,`dl`,68)(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,mU,4,0),z(34,`h3`),J(35),B(),I(36,vU,12,11,null,null,YH,!1,yU,2,0,`p`,34),P(39,SU,6,1)(40,CU,2,0,`p`,69),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 TU(e,t){if(e&1&&(z(0,`div`,15)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,52),J(5,`Request`),B(),z(6,`th`,52),J(7,`Status`),B(),z(8,`th`,52),J(9,`Render mode`),B(),z(10,`th`,53),J(11,`Render`),B(),z(12,`th`,53),J(13,`Server calls`),B(),z(14,`th`,52),J(15,`Notes`),B()()(),z(16,`tbody`),I(17,iU,20,20,`tr`,54,YH),B()()(),P(19,wU,41,12,`div`,55)),e&2){let e,t=K();M(17),L(t.requests()),M(2),F((e=t.selectedRequest())?19:-1,e)}}function EU(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No SSR requests traced.`),B(),z(3,`p`,34),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 DU(e,t){e&1&&(z(0,`span`,76),J(1,`transfer cache`),B())}function OU(e,t){if(e&1&&(z(0,`span`,76),J(1),B()),e&2){let e=K().$implicit;M(),X(`delayed `,e.delayMs,` ms`)}}function kU(e,t){e&1&&(z(0,`span`,65),J(1,`mocked`),B())}function AU(e,t){e&1&&(z(0,`span`,66),J(1,`faulted`),B())}function jU(e,t){if(e&1&&(z(0,`span`,79),J(1,`rule `),z(2,`code`),J(3),B()()),e&2){let e=t;R(`title`,`Matched rule: `+e),M(3),Y(e)}}function MU(e,t){if(e&1){let e=W();z(0,`tr`,56),G(`click`,function(){let t=O(e).$implicit;return k(K(2).openCall(t.id))}),z(1,`td`)(2,`span`,76),J(3),B()(),z(4,`td`,59),J(5),B(),z(6,`td`,57)(7,`button`,77),J(8),B()(),z(9,`td`,78),J(10),B(),z(11,`td`,60),V(12,`span`,61),J(13),B(),z(14,`td`,62),J(15),B(),z(16,`td`)(17,`div`,63),P(18,DU,2,0,`span`,76),P(19,OU,2,1,`span`,76),P(20,kU,2,0,`span`,65),P(21,AU,2,0,`span`,66),P(22,jU,4,2,`span`,79),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 NU(e,t){if(e&1&&(z(0,`div`,15)(1,`table`)(2,`thead`)(3,`tr`)(4,`th`,52),J(5,`Side`),B(),z(6,`th`,52),J(7,`Method`),B(),z(8,`th`,52),J(9,`URL`),B(),z(10,`th`,52),J(11,`Page`),B(),z(12,`th`,52),J(13,`Status`),B(),z(14,`th`,53),J(15,`Time`),B(),z(16,`th`,52),J(17,`Notes`),B()()(),z(18,`tbody`),I(19,MU,23,26,`tr`,54,ZH),B()()()),e&2){let e=K();M(19),L(e.timeline())}}function PU(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No requests yet.`),B(),z(3,`p`,34),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 FU(e,t){e&1&&(z(0,`p`,85),J(1,` Matched rule `),z(2,`code`),J(3),B()()),e&2&&(M(3),Y(t))}function IU(e,t){if(e&1){let e=W();z(0,`div`,80),G(`keydown.escape`,function(){return O(e),k(K().closePreview())}),z(1,`div`,81)(2,`h3`,82),J(3,`Response preview`),B(),z(4,`button`,83),G(`click`,function(){return O(e),k(K().closePreview())}),J(5,`Close`),B()(),z(6,`p`,84)(7,`span`,59),J(8),B(),z(9,`span`,60),J(10),B(),z(11,`span`,73),J(12),B()(),P(13,FU,4,1,`p`,85),z(14,`pre`),J(15),B()()}if(e&2){let e,n=t,r=K();M(8),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))?13:-1,e),M(),q(`error`,!!n.error&&!n.cancelled),M(),Y(n.error??n.preview??`(no body)`)}}function LU(e,t){if(e&1&&(z(0,`p`,19),J(1),B()),e&2){let e=K();M(),Y(e.writesOff)}}function RU(e,t){e&1&&(z(0,`p`,34),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 zU(e,t){e&1&&(z(0,`span`),J(1,`passthrough`),B())}function BU(e,t){if(e&1&&(z(0,`span`,60),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 VU(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),X(``,e.delayMs,` ms`)}}function HU(e,t){e&1&&(z(0,`span`),J(1,`mock body`),B())}function UU(e,t){e&1&&(z(0,`p`,93),J(1,` The SSR mock is not written to TransferState, so the browser requests this URL again. `),B())}function WU(e,t){if(e&1){let e=W();z(0,`li`)(1,`label`,86)(2,`input`,87),G(`change`,function(){let t=O(e).$implicit;return k(K().toggleRule(t.id))}),B(),z(3,`code`,88)(4,`span`,89),J(5),B(),J(6),B()(),z(7,`button`,90),G(`click`,function(){let t=O(e).$implicit;return k(K().removeRule(t.id))}),J(8,` Remove `),B(),z(9,`span`,91)(10,`span`),J(11),B(),P(12,zU,2,0,`span`)(13,BU,2,7,`span`,92),P(14,VU,2,1,`span`),P(15,HU,2,0,`span`),B(),P(16,UU,2,0,`p`,93),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 GU(e,t){e&1&&(z(0,`li`,41),J(1,`No rules. SSR rules apply on the next page load.`),B())}function KU(e,t){if(e&1){let e=W();z(0,`p`,34),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`,94),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 qU(e,t){if(e&1){let e=W();z(0,`label`),J(1,` TransferState key `),z(2,`input`,95),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`,21),J(7,`(empty removes the entry)`),B()(),z(8,`textarea`,96),G(`input`,function(t){return O(e),k(K().patchOverride(`value`,t))}),B()(),z(9,`p`,97),J(10),B()}if(e&2){let e=K();M(2),R(`value`,e.overrideDraft().key),M(6),R(`value`,e.overrideDraft().value),N(`aria-invalid`,e.overrideValueError()?`true`:null),M(2),Y(e.overrideValueError())}}function JU(e,t){e&1&&(z(0,`p`,34),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 YU(e,t){if(e&1&&(z(0,`span`),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.message)}}function XU(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 ZU(e,t){if(e&1){let e=W();z(0,`li`)(1,`label`,86)(2,`input`,87),G(`change`,function(){let t=O(e).$implicit;return k(K().toggleOverride(t.id))}),B(),z(3,`code`,88)(4,`span`,89),J(5),B(),J(6),B()(),z(7,`button`,90),G(`click`,function(){let t=O(e).$implicit;return k(K().removeOverride(t.id))}),J(8,` Remove `),B(),z(9,`span`,91),P(10,YU,2,1,`span`),P(11,XU,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 QU(e,t){e&1&&(z(0,`li`,41),J(1,`No overrides.`),B())}function $U(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 eW(e,t){if(e&1&&(z(0,`span`,99)(1,`span`,100),J(2,`Expected`),B(),z(3,`code`),J(4),B()()),e&2){let e=K().$implicit;M(4),Y(e.expected)}}function tW(e,t){if(e&1&&(z(0,`span`,99)(1,`span`,100),J(2,`Actual`),B(),z(3,`code`),J(4),B()()),e&2){let e=K().$implicit;M(4),Y(e.actual)}}function nW(e,t){if(e&1&&(z(0,`li`)(1,`code`),J(2),B(),P(3,eW,5,1,`span`,99),P(4,tW,5,1,`span`,99),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 rW(e,t){if(e&1&&(z(0,`h3`),J(1),B(),z(2,`ul`,98),I(3,nW,5,3,`li`,null,Cg),B()),e&2){let e=K();M(),X(`Mismatches (`,e.mismatches.length,`)`),M(2),L(e.mismatches)}}function iW(e,t){if(e&1&&(z(0,`li`)(1,`code`),J(2),B()()),e&2){let e=t.$implicit;M(2),Y(e)}}function aW(e,t){if(e&1&&(z(0,`h3`),J(1,`ngSkipHydration hosts`),B(),z(2,`ul`,101),I(3,iW,3,1,`li`,null,Cg),B()),e&2){let e=K();M(3),L(e.skipHydrationHosts)}}function oW(e,t){e&1&&(z(0,`h3`),J(1,`Warnings`),B(),z(2,`p`,34),J(3,` Not captured: add `),z(4,`code`),J(5,`providePangularHttp()`),B(),J(6,` to the app providers. `),B())}function sW(e,t){if(e&1&&(z(0,`pre`,102),J(1),B()),e&2){let e=t.$implicit;M(),Y(e)}}function cW(e,t){e&1&&(z(0,`p`,69),J(1,`No hydration warnings.`),B())}function lW(e,t){if(e&1&&(z(0,`h3`),J(1),B(),I(2,sW,2,1,`pre`,102,Cg,!1,cW,2,0,`p`,69)),e&2){let e=K();M(),X(`Warnings (`,e.warnings.length,`)`),M(),L(e.warnings)}}function uW(e,t){if(e&1&&(z(0,`dl`,68)(1,`div`)(2,`dt`),J(3,`Enabled`),B(),z(4,`dd`)(5,`span`,76),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,$U,15,5),B(),P(33,rW,5,1),P(34,aW,5,0),P(35,oW,7,0)(36,lW,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 dW(e,t){e&1&&(z(0,`div`,11)(1,`p`),J(2,`No hydration data for this page.`),B(),z(3,`p`,34),J(4,`Open a server rendered page of the app to see its stats.`),B()())}function fW(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`,104),J(1),B()),e&2){let e=K(2);M(),Y(e.error)}}function mW(e,t){e&1&&(z(0,`span`,76),J(1),B()),e&2&&(M(),Y(t))}function hW(e,t){if(e&1&&(z(0,`span`,76),J(1),B(),z(2,`span`,107),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 gW(e,t){if(e&1&&(z(0,`span`,107),J(1),B()),e&2){let e=K().$implicit;M(),Y(e.key)}}function _W(e,t){if(e&1&&(z(0,`details`)(1,`summary`),V(2,`span`,106),P(3,mW,2,1,`span`,76),P(4,hW,4,6)(5,gW,2,1,`span`,107),z(6,`span`,108),J(7),B()(),z(8,`pre`),J(9),dv(10,`json`),B()()),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(2),Y(pv(10,4,r.value))}}function vW(e,t){if(e&1&&(z(0,`p`,103),J(1),B(),P(2,pW,2,1,`p`,104),z(3,`div`,105),I(4,_W,11,6,`details`,null,QH),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 yW(e,t){e&1&&P(0,fW,3,0,`div`,11)(1,vW,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 xW={kind:`render-error`,pattern:``,message:``,key:``,value:``},SW={"render-error":`Render error`,"client-render":`Client render`,"state-edit":`TransferState edit`},CW={server:`Server`,prerender:`Prerender`,client:`Client`,redirect:`Redirect`,"not-rendered":`Not rendered`,unknown:`Unknown`},wW={pattern:``,method:``,target:`both`,status:``,delayMs:``,body:``};function TW(e){try{let t=new URL(e,`http://x`);return t.pathname+t.search}catch{return e}}var EW=50,DW=500,OW=1e5,kW=[{value:``,label:`None`},...PT.map(([e,t])=>({value:String(e),label:`${e} ${t}`}))],AW=class e{rpc=$(null);canWrite=Q(()=>lE(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({...xW});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=kW;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(()=>cE(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));selectedCall=Q(()=>this.timeline().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} ${TW(e.url)}`));return t.calls.filter(t=>t.side===`client`&&!t.cacheHit&&!t.mocked&&t.at>=e.at&&n.has(`${t.method} ${TW(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>DW||this.bodyError()||this.rules().length>=EW)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>=EW?`You can add up to ${EW} rules. Remove one to add another.`:e.pattern.trim()?e.pattern.trim().length>DW?`The URL pattern is limited to ${DW} 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>OW)return`The mock body is limited to ${OW} 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} ${TW(e.url)}`,n=this.requestCalls().filter(e=>`${e.method} ${TW(e.url)}`===t),r=n[0];return r?.cacheSkip&&n.every(e=>e.cacheSkip===r.cacheSkip)?this.skipText(r.cacheSkip):``}renderModeLabel(e){return CW[e]??`Unknown`}statusLabel(e){return e.cancelled?`cancelled`:e.status?String(e.status):`ERR`}callTone(e){return e.cancelled?`neutral`:this.statusTone(e.status)}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})}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=[{value:``,label:`Any`},...[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`].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)}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 SW[e]??e}setOverrideDraft(e,t){this.overrideDraft.update(n=>({...n,[e]:t}))}patchOverride(e,t){let n=t.target.value;this.overrideDraft.update(t=>({...t,[e]:n}))}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({...xW,kind:t.kind}),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:113,vars:42,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`],[1,`table-wrap`],[`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`],[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`],[`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`],[`id`,`call-preview`,`role`,`region`,`aria-labelledby`,`preview-heading`,1,`preview`,3,`keydown.escape`],[1,`preview-head`],[`id`,`preview-heading`,`tabindex`,`-1`],[`type`,`button`,1,`ghost`,3,`click`],[1,`preview-meta`],[1,`preview-rule`],[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`],[`spellcheck`,`false`,`autocomplete`,`off`,3,`input`,`value`],[`rows`,`3`,`spellcheck`,`false`,`aria-describedby`,`override-value-error`,3,`input`,`value`],[`id`,`override-value-error`,1,`field-error`],[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`]],template:function(e,t){if(e&1&&(P(0,$H,4,0,`div`,0)(1,eU,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,TU,20,1)(16,EU,11,0,`div`,11),B(),z(17,`section`,12)(18,`h2`,13),J(19),B(),V(20,`app-limit-note`,14),P(21,NU,21,0,`div`,15)(22,PU,11,0,`div`,11),P(23,IU,16,14,`div`,16),B(),z(24,`section`,17)(25,`h2`,18),J(26,`Fault injection`),B(),P(27,LU,2,1,`p`,19),z(28,`form`,20),G(`submit`,function(e){return t.addRule(e)}),z(29,`label`)(30,`span`),J(31,`URL pattern `),z(32,`span`,21),J(33,`(substring or * glob)`),B()(),z(34,`input`,22),G(`input`,function(e){return t.patch(`pattern`,e)}),B()(),z(35,`div`,23)(36,`div`,24)(37,`span`,25),J(38,`Method`),B(),z(39,`app-select`,26),G(`valueChange`,function(e){return t.setDraft(`method`,e??``)}),B()(),z(40,`div`,24)(41,`span`,27),J(42,`Apply on`),B(),z(43,`app-select`,28),G(`valueChange`,function(e){return t.setDraft(`target`,e??`both`)}),B()()(),z(44,`div`,23)(45,`div`,24)(46,`span`,29),J(47,`Status`),B(),z(48,`app-select`,30),G(`valueChange`,function(e){return t.setDraft(`status`,e??``)}),B()(),z(49,`label`),J(50,` Delay (ms) `),z(51,`input`,31),G(`input`,function(e){return t.patch(`delayMs`,e)}),B()()(),z(52,`label`)(53,`span`),J(54,`Mock JSON body `),z(55,`span`,21),J(56,`(optional)`),B()(),z(57,`textarea`,32),G(`input`,function(e){return t.patch(`body`,e)}),B()(),z(58,`p`,33),J(59),B(),P(60,RU,2,0,`p`,34),z(61,`p`,35),J(62),B(),z(63,`div`,36)(64,`button`,37),J(65,` Add rule `),B()()(),z(66,`h3`,38),J(67),B(),z(68,`ul`,39),I(69,WU,17,17,`li`,40,YH,!1,GU,2,0,`li`,41),B()(),z(72,`section`,42)(73,`h2`,43),J(74,`SSR overrides`),B(),z(75,`p`,34),J(76,` Development only. These change what the server sends for matching pages, from the next full page load, and the request is marked `),z(77,`strong`),J(78,`overridden`),B(),J(79,`. `),B(),z(80,`form`,20),G(`submit`,function(e){return t.addOverride(e)}),z(81,`div`,24)(82,`span`,44),J(83,`Override`),B(),z(84,`app-select`,45),G(`valueChange`,function(e){return t.setOverrideDraft(`kind`,e??`render-error`)}),B()(),z(85,`label`)(86,`span`),J(87,`Page pattern `),z(88,`span`,21),J(89,`(substring or * glob)`),B()(),z(90,`input`,46),G(`input`,function(e){return t.patchOverride(`pattern`,e)}),B()(),P(91,KU,8,1)(92,qU,11,4)(93,JU,11,0,`p`,34),z(94,`div`,36)(95,`button`,37),J(96,` Add override `),B()()(),z(97,`h3`,38),J(98),B(),z(99,`ul`,39),I(100,ZU,12,12,`li`,40,YH,!1,QU,2,0,`li`,41),B()(),z(103,`section`,47)(104,`h2`,48),J(105,`Hydration`),B(),P(106,uW,37,14)(107,dW,5,0,`div`,11),B(),z(108,`section`,49)(109,`h2`,50),J(110,`TransferState payload`),B(),P(111,yW,2,1)(112,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(),F(t.timeline().length?21:22),M(2),F((e=t.selectedCall())?23:-1,e),M(4),F(t.canWrite()?-1:27),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()?60:-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`?91:n===`state-edit`?92:n===`client-render`?93:-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)?106:107,r),M(5),F((i=t.selectedPayload())?111:112,i)}},dependencies:[ED,hD,ab],styles:[`@charset "UTF-8"; [_nghost-%COMP%] { display: block; color: var(--%NS%text); @@ -12281,7 +12357,7 @@ summary[_ngcontent-%COMP%]:hover .entry-key[_ngcontent-%COMP%] { .message[_ngcontent-%COMP%] { text-align: left; } -}`]})};function kW(e,t){e&1&&(A(),H(0,`svg`,9),Fg(1,`path`,21),U())}function AW(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 jW(e,t){e&1&&(A(),H(0,`svg`,11),Fg(1,`path`,31)(2,`path`,32)(3,`path`,33)(4,`path`,34),U())}function MW(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 NW(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 PW(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 FW(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 IW=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,kW,2,0,`:svg:svg`,9)(12,AW,11,0,`:svg:svg`,10)(13,jW,5,0,`:svg:svg`,11)(14,MW,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,NW,13,5,`a`,16),P(24,PW,8,2,`a`,17),H(25,`h3`,18),J(26),U(),H(27,`ul`,19),I(28,FW,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 jW(e,t){e&1&&(A(),H(0,`svg`,9),Fg(1,`path`,21),U())}function MW(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 NW(e,t){e&1&&(A(),H(0,`svg`,11),Fg(1,`path`,31)(2,`path`,32)(3,`path`,33)(4,`path`,34),U())}function PW(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 FW(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 IW(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 LW(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 RW=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,jW,2,0,`:svg:svg`,9)(12,MW,11,0,`:svg:svg`,10)(13,NW,5,0,`:svg:svg`,11)(14,PW,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,FW,13,5,`a`,16),P(24,IW,8,2,`a`,17),H(25,`h3`,18),J(26),U(),H(27,`ul`,19),I(28,LW,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%); @@ -12643,7 +12719,7 @@ h2[_ngcontent-%COMP%] { .author[_ngcontent-%COMP%]:hover .go[_ngcontent-%COMP%] { transform: none; } -}`]})};function LW(e){return` +}`]})};function zW(e){return` .devframes-dock-entry button { transition: opacity 0.2s, filter 0.2s, background-color 0.2s, transform 0.3s; } @@ -12674,7 +12750,7 @@ h2[_ngcontent-%COMP%] { transition: none; } } -`}var RW=new Map;function zW(e,t=`dark`,n=50){let r=e?.querySelector(`devframes-dock-standalone`)?.shadowRoot;if(r){if(e){let t=RW.get(e);t!==void 0&&(clearTimeout(t),RW.delete(e))}let n=r.querySelector(`style[data-pangular]`);n||(n=e.createElement(`style`),n.dataset.pangular=``,r.append(n)),n.textContent=LW(t);return}if(n>0&&e){let r=RW.get(e);r!==void 0&&clearTimeout(r);let i=setTimeout(()=>{RW.delete(e),zW(e,t,n-1)},100);RW.set(e,i)}}var BW=class e{current=j(`dark`);constructor(){let e=E(Cs),t=UW(),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(HW(t));else{let t=VW();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(HW(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 VW(){try{return window.matchMedia?.(`(prefers-color-scheme: light)`)??null}catch{return null}}function HW(e){return e.classList.contains(`dark`)?`dark`:`light`}function UW(){try{return window.frameElement?.closest(`.devframes-color-root`)??null}catch{return null}}var WW=`__DEVFRAME_HUB_CLIENT_CONTEXT__`,GW=`pangular:`;function KW(){try{return window.parent===window?void 0:window.parent[WW]}catch{return}}function qW(e,t,n=50){let r=KW();if(!r){if(n<=0||window.parent===window)return()=>{};let r=()=>{},i=setTimeout(()=>r=qW(e,t,n-1),100);return()=>{clearTimeout(i),r()}}let i=e.map(e=>r.docks.getStateById(GW+e)?.events.on(`entry:activated`,()=>t(e))??(()=>{})),a=r.docks.selectedId,o=e.find(e=>GW+e===a);return o&&t(o),()=>i.forEach(e=>e())}async function JW(e){let t=KW();if(!t)return!1;try{return await t.docks.switchEntry(GW+e)}catch{return!1}}var YW=`pangular-tab`;function XW(e,t,n){let r=new URLSearchParams(e.replace(/^#/,``)).get(`tab`)||t;return n.find(e=>e===r)}function ZW(e){try{return sessionStorage.getItem(`${YW}:${e}`)}catch{return null}}function QW(e,t){try{sessionStorage.setItem(`${YW}:${e}`,t)}catch{}}function $W(e,t){try{return new URL(e,t.href).origin===t.origin}catch{return!1}}function eG(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 tG(e=location){let t=new URLSearchParams(e.search).get(`baseURL`);if(t&&($W(t,e)||eG(t,e)))return t;if(!(e.pathname.includes(`__pangular`)||e.pathname.includes(`__devframes/`)))return[`/__pangular/`,`./`]}var nG=[`nav`],rG=[`main`],iG=e=>[e],aG=(e,t)=>t.id;function oG(e,t){e&1&&(A(),z(0,`svg`,4),V(1,`path`,20),B())}function sG(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 cG(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 lG(e,t){e&1&&(A(),z(0,`svg`,6),V(1,`path`,36)(2,`path`,37)(3,`path`,38)(4,`path`,39),B())}function uG(e,t){e&1&&(A(),z(0,`svg`,7),V(1,`path`,40),B())}function dG(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 fG(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 pG(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 mG(e,t){e&1&&I(0,pG,4,5,`button`,70,aG),e&2&&L(K().tabs())}function hG(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 gG(e,t){e&1&&V(0,`app-coming-soon`,17),e&2&&R(`info`,t)}function _G(e,t){e&1&&(z(0,`p`,18),J(1,`Looking for an Angular Native app…`),B())}function vG(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 bG(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 xG(e,t){e&1&&V(0,`app-route-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function SG(e,t){e&1&&V(0,`app-signal-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function CG(e,t){e&1&&V(0,`app-di-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function wG(e,t){e&1&&V(0,`app-store-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function TG(e,t){e&1&&V(0,`app-network-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function EG(e,t){if(e&1){let e=W();z(0,`app-forms-inspector`,77),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 DG(e,t){e&1&&V(0,`app-pipes-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function OG(e,t){e&1&&V(0,`app-analog-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function kG(e,t){if(e&1&&P(0,yG,1,1,`app-dashboard`,73)(1,bG,1,2,`app-component-tree`,74)(2,xG,1,1,`app-route-inspector`,73)(3,SG,1,1,`app-signal-inspector`,73)(4,CG,1,1,`app-di-inspector`,73)(5,wG,1,1,`app-store-inspector`,73)(6,TG,1,1,`app-network-inspector`,73)(7,EG,1,2,`app-forms-inspector`,74)(8,DG,1,1,`app-pipes-inspector`,73)(9,OG,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 AG(e,t){e&1&&I(0,kG,10,1,null,null,wg),e&2&&L(sv(0,iG,K().scopeKey()))}var jG=[`angular`,`ngrx`,`analog`,`angular-native`,`nativescript`,`capacitor`],MG={angular:`Angular`,ngrx:`NgRx Store`,analog:`Analog`,"angular-native":`Angular Native`,nativescript:`NativeScript`,capacitor:`Capacitor`},NG={ngrx:`#d770e8`,analog:`#ff5470`,"angular-native":`#ff4d6d`,nativescript:`#8196ff`,capacitor:`#53b9ff`},PG={ngrx:`#a21caf`,analog:`#be123c`,"angular-native":`#be123c`,nativescript:`#3448c5`,capacitor:`#0369a1`},FG={ngrx:`store`,analog:`analog`},IG={store:`ngrx`,analog:`analog`},LG={"angular-native":[`components`,`signals`,`injectors`,`store`,`pipes`]},RG={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`}}},zG={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/`}},BG={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`}},VG={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 HG(){let e=new URLSearchParams(location.search).get(`view`);return jG.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(HG());viewAccent=Q(()=>{let e=this.view(),t=this.themeService.current()===`light`?PG:NG;return(e&&t[e])??null});title=Q(()=>{let e=this.view();return e?MG[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()?BG:void 0:e===`nativescript`?zG:e===`angular-native`?this.nativeKnown()&&!this.nativePageId()?VG:void 0:e?RG[e]:void 0});config=Q(()=>cE(this.rpc()));tabEnabled=dE;availableTabs=Q(()=>{if(this.comingSoon())return[];let e=this.view(),t=e?FG[e]:void 0,n=this.allTabs.filter(e=>dE(e.id,this.config()));if(t)return n.filter(e=>e.id===t);let r=e?LG[e]:void 0;return r?n.filter(e=>r.includes(e.id)):n.filter(t=>(t.id!==`analog`||this.analog())&&!(e===`angular`&&IG[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&&(FG[e]??LG[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(BW);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&&zW(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=XW(location.hash,ZW(this.tabScope()),this.availableTabs().map(e=>e.id));e?this.tab.set(e):!this.view()&&XW(location.hash,ZW(this.tabScope()),[`analog`])===`analog`&&(this.restoreAnalog=!0),this.stopHighlights=sE(()=>this.rpc());let t=tG();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&&dE(`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`)}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=IG[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),QW(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=aD(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 JW(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,nG,5)(t.main,rG,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,`focusHandled`,`rpc`,`focus`]],template:function(e,t){if(e&1&&(z(0,`header`)(1,`h1`,2)(2,`span`,3),P(3,oG,2,0,`:svg:svg`,4)(4,sG,7,0,`:svg:svg`,4)(5,cG,11,0,`:svg:svg`,5)(6,lG,5,0,`:svg:svg`,6)(7,uG,2,0,`:svg:svg`,7)(8,dG,10,0,`:svg:svg`,8)(9,fG,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,mG,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,hG,2,0,`p`,16)(24,gG,1,1,`app-coming-soon`,17)(25,_G,2,0,`p`,18)(26,vG,5,0,`p`,19)(27,AG,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:[ZE,pk,BM,QN,cF,mL,zz,RB,KH,OW,IW,SE],styles:[`[_nghost-%COMP%] { +`}var BW=new Map;function VW(e,t=`dark`,n=50){let r=e?.querySelector(`devframes-dock-standalone`)?.shadowRoot;if(r){if(e){let t=BW.get(e);t!==void 0&&(clearTimeout(t),BW.delete(e))}let n=r.querySelector(`style[data-pangular]`);n||(n=e.createElement(`style`),n.dataset.pangular=``,r.append(n)),n.textContent=zW(t);return}if(n>0&&e){let r=BW.get(e);r!==void 0&&clearTimeout(r);let i=setTimeout(()=>{BW.delete(e),VW(e,t,n-1)},100);BW.set(e,i)}}var HW=class e{current=j(`dark`);constructor(){let e=E(Cs),t=GW(),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(WW(t));else{let t=UW();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(WW(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 UW(){try{return window.matchMedia?.(`(prefers-color-scheme: light)`)??null}catch{return null}}function WW(e){return e.classList.contains(`dark`)?`dark`:`light`}function GW(){try{return window.frameElement?.closest(`.devframes-color-root`)??null}catch{return null}}var KW=`__DEVFRAME_HUB_CLIENT_CONTEXT__`,qW=`pangular:`;function JW(){try{return window.parent===window?void 0:window.parent[KW]}catch{return}}function YW(e,t,n=50){let r=JW();if(!r){if(n<=0||window.parent===window)return()=>{};let r=()=>{},i=setTimeout(()=>r=YW(e,t,n-1),100);return()=>{clearTimeout(i),r()}}let i=e.map(e=>r.docks.getStateById(qW+e)?.events.on(`entry:activated`,()=>t(e))??(()=>{})),a=r.docks.selectedId,o=e.find(e=>qW+e===a);return o&&t(o),()=>i.forEach(e=>e())}async function XW(e){let t=JW();if(!t)return!1;try{return await t.docks.switchEntry(qW+e)}catch{return!1}}var ZW=`pangular-tab`;function QW(e,t,n){let r=new URLSearchParams(e.replace(/^#/,``)).get(`tab`)||t;return n.find(e=>e===r)}function $W(e){try{return sessionStorage.getItem(`${ZW}:${e}`)}catch{return null}}function eG(e,t){try{sessionStorage.setItem(`${ZW}:${e}`,t)}catch{}}function tG(e,t){try{return new URL(e,t.href).origin===t.origin}catch{return!1}}function nG(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 rG(e=location){let t=new URLSearchParams(e.search).get(`baseURL`);if(t&&(tG(t,e)||nG(t,e)))return t;if(!(e.pathname.includes(`__pangular`)||e.pathname.includes(`__devframes/`)))return[`/__pangular/`,`./`]}var iG=[`nav`],aG=[`main`],oG=e=>[e],sG=(e,t)=>t.id;function cG(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 uG(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 dG(e,t){e&1&&(A(),z(0,`svg`,6),V(1,`path`,36)(2,`path`,37)(3,`path`,38)(4,`path`,39),B())}function fG(e,t){e&1&&(A(),z(0,`svg`,7),V(1,`path`,40),B())}function pG(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 mG(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 hG(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 gG(e,t){e&1&&I(0,hG,4,5,`button`,70,sG),e&2&&L(K().tabs())}function _G(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 vG(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 bG(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 xG(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 SG(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 CG(e,t){e&1&&V(0,`app-route-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function wG(e,t){e&1&&V(0,`app-signal-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function TG(e,t){e&1&&V(0,`app-di-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function EG(e,t){e&1&&V(0,`app-store-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function DG(e,t){e&1&&V(0,`app-network-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function OG(e,t){if(e&1){let e=W();z(0,`app-forms-inspector`,77),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 kG(e,t){e&1&&V(0,`app-pipes-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function AG(e,t){e&1&&V(0,`app-analog-inspector`,73),e&2&&R(`rpc`,K(3).rpc())}function jG(e,t){if(e&1&&P(0,xG,1,1,`app-dashboard`,73)(1,SG,1,2,`app-component-tree`,74)(2,CG,1,1,`app-route-inspector`,73)(3,wG,1,1,`app-signal-inspector`,73)(4,TG,1,1,`app-di-inspector`,73)(5,EG,1,1,`app-store-inspector`,73)(6,DG,1,1,`app-network-inspector`,73)(7,OG,1,2,`app-forms-inspector`,74)(8,kG,1,1,`app-pipes-inspector`,73)(9,AG,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 MG(e,t){e&1&&I(0,jG,10,1,null,null,wg),e&2&&L(sv(0,oG,K().scopeKey()))}var NG=[`angular`,`ngrx`,`analog`,`angular-native`,`nativescript`,`capacitor`],PG={angular:`Angular`,ngrx:`NgRx Store`,analog:`Analog`,"angular-native":`Angular Native`,nativescript:`NativeScript`,capacitor:`Capacitor`},FG={ngrx:`#d770e8`,analog:`#ff5470`,"angular-native":`#ff4d6d`,nativescript:`#8196ff`,capacitor:`#53b9ff`},IG={ngrx:`#a21caf`,analog:`#be123c`,"angular-native":`#be123c`,nativescript:`#3448c5`,capacitor:`#0369a1`},LG={ngrx:`store`,analog:`analog`},RG={store:`ngrx`,analog:`analog`},zG={"angular-native":[`components`,`signals`,`injectors`,`store`,`pipes`]},BG={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`}}},VG={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/`}},HG={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`}},UG={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 WG(){let e=new URLSearchParams(location.search).get(`view`);return NG.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(WG());viewAccent=Q(()=>{let e=this.view(),t=this.themeService.current()===`light`?IG:FG;return(e&&t[e])??null});title=Q(()=>{let e=this.view();return e?PG[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()?HG:void 0:e===`nativescript`?VG:e===`angular-native`?this.nativeKnown()&&!this.nativePageId()?UG:void 0:e?BG[e]:void 0});config=Q(()=>cE(this.rpc()));tabEnabled=dE;availableTabs=Q(()=>{if(this.comingSoon())return[];let e=this.view(),t=e?LG[e]:void 0,n=this.allTabs.filter(e=>dE(e.id,this.config()));if(t)return n.filter(e=>e.id===t);let r=e?zG[e]:void 0;return r?n.filter(e=>r.includes(e.id)):n.filter(t=>(t.id!==`analog`||this.analog())&&!(e===`angular`&&RG[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&&(LG[e]??zG[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(HW);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&&VW(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=QW(location.hash,$W(this.tabScope()),this.availableTabs().map(e=>e.id));e?this.tab.set(e):!this.view()&&QW(location.hash,$W(this.tabScope()),[`analog`])===`analog`&&(this.restoreAnalog=!0),this.stopHighlights=sE(()=>this.rpc());let t=rG();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&&dE(`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`)}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=RG[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),eG(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=aD(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 XW(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,iG,5)(t.main,aG,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,`focusHandled`,`rpc`,`focus`]],template:function(e,t){if(e&1&&(z(0,`header`)(1,`h1`,2)(2,`span`,3),P(3,cG,2,0,`:svg:svg`,4)(4,lG,7,0,`:svg:svg`,4)(5,uG,11,0,`:svg:svg`,5)(6,dG,5,0,`:svg:svg`,6)(7,fG,2,0,`:svg:svg`,7)(8,pG,10,0,`:svg:svg`,8)(9,mG,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,gG,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,_G,2,0,`p`,16)(24,vG,1,1,`app-coming-soon`,17)(25,yG,2,0,`p`,18)(26,bG,5,0,`p`,19)(27,MG,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:[ZE,pk,BM,QN,cF,mL,Vz,BB,JH,AW,RW,SE],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 87561996..6131239c 100644 --- a/extension/ui/index.html +++ b/extension/ui/index.html @@ -9,7 +9,7 @@ Pangular Inspector - + From cc88e2274ffc26fa7706d5a3c4d0f3d6c81ab9ba Mon Sep 17 00:00:00 2001 From: erKam Date: Sun, 11 Oct 2026 01:59:11 +0000 Subject: [PATCH 2/2] fix(forms): announce the timeline count only when a filter changes The visible count changes with every recorded event, and its live region made screen readers read it out while the user typed in the app. A separate status now updates only when a filter changes. --- app/src/__tests__/forms-timeline.test.ts | 13 ++++++++++++ app/src/pages/forms-timeline.ts | 25 ++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/app/src/__tests__/forms-timeline.test.ts b/app/src/__tests__/forms-timeline.test.ts index 64d41391..bb38874e 100644 --- a/app/src/__tests__/forms-timeline.test.ts +++ b/app/src/__tests__/forms-timeline.test.ts @@ -112,6 +112,19 @@ describe('FormsTimeline filters', () => { expect(root(fixture).querySelector('.events')).toBeNull(); }); + it('announces the count when a filter changes, not on every new event', async () => { + const fixture = await setup(EVENTS); + const status = () => root(fixture).querySelector('[role="status"]')?.textContent?.trim(); + expect(root(fixture).querySelector('.total')?.hasAttribute('aria-live')).toBe(false); + await typePath(fixture, 'name'); + const filtered = status(); + expect(filtered).toBe(total(fixture)); + fixture.componentRef.setInput('events', [...EVENTS, event(7, 'name', 'value')]); + await fixture.whenStable(); + expect(total(fixture)).not.toBe(filtered); + expect(status()).toBe(filtered); + }); + it('shows Clear filters when the filters hide everything and resets all three', async () => { const fixture = await setup(EVENTS); await typePath(fixture, 'nothing'); diff --git a/app/src/pages/forms-timeline.ts b/app/src/pages/forms-timeline.ts index d536dc18..cc27c129 100644 --- a/app/src/pages/forms-timeline.ts +++ b/app/src/pages/forms-timeline.ts @@ -1,4 +1,13 @@ -import { Component, computed, ElementRef, input, output, signal, viewChild } from '@angular/core'; +import { + Component, + computed, + ElementRef, + input, + output, + signal, + untracked, + viewChild, +} from '@angular/core'; import { time } from '../format'; import { Select, type SelectOption } from '../ui/select'; import { FORMS_STYLES, type FormEvent } from './forms-types'; @@ -76,7 +85,8 @@ const EVENT_TYPES = [ />
- {{ summary() }} + {{ summary() }} + {{ filterStatus() }} @if (shown().length) {
    @@ -510,6 +520,17 @@ export class FormsTimeline { return `${total} ${noun(total)}`; }); + /** + * The count, announced only when a filter changes. The visible count also changes with every + * recorded event, which would make a screen reader talk while the user types in the app. + */ + readonly filterStatus = computed(() => { + this.filter(); + this.typeFilter(); + this.pathFilter(); + return untracked(() => this.summary()); + }); + clearFilters() { this.pathFilter.set(''); this.typeFilter.set('all');