@slotted/angular 0.1.0-beta.4 → 0.1.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/AGENTS.snippet.md +2 -0
- package/docs/app-shell.examples.md +1 -1
- package/docs/app-shell.json +4 -4
- package/docs/app-shell.md +2 -2
- package/docs/guidelines/README.md +2 -2
- package/docs/guidelines/index.md +1 -1
- package/docs/guidelines/own-elements.md +1 -1
- package/docs/page-header.json +1 -0
- package/docs/page-header.md +1 -1
- package/docs/skills/build-own-element/SKILL.md +6 -6
- package/docs/skills/compose-screen/SKILL.md +6 -6
- package/docs/skills/review-screen/SKILL.md +6 -6
- package/docs/skills/theme-app/SKILL.md +1 -1
- package/docs/skills/waiting-states/SKILL.md +2 -2
- package/docs/tabs.json +13 -3
- package/docs/tabs.md +3 -2
- package/fesm2022/slotted-angular-app-shell.mjs +15 -9
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
- package/fesm2022/slotted-angular-cascader.mjs +7 -1
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +13 -3
- package/fesm2022/slotted-angular-chart.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-picker.mjs +4 -6
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-range-picker.mjs +4 -6
- package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-picker.mjs +4 -6
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +4 -6
- package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-entity-picker.mjs +7 -1
- package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-page-header.mjs +2 -2
- package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
- package/fesm2022/slotted-angular-popover.mjs +7 -1
- package/fesm2022/slotted-angular-popover.mjs.map +1 -1
- package/fesm2022/slotted-angular-scroll-area.mjs +6 -2
- package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
- package/fesm2022/slotted-angular-select.mjs +49 -17
- package/fesm2022/slotted-angular-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-stat-card.mjs +2 -2
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-table.mjs +11 -4
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-tabs.mjs +13 -6
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-picker.mjs +4 -6
- package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-time-range-picker.mjs +4 -6
- package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-tooltip.mjs +7 -1
- package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
- package/package.json +3 -3
- package/types/slotted-angular-app-shell.d.ts +5 -3
- package/types/slotted-angular-app-shell.d.ts.map +1 -1
- package/types/slotted-angular-cascader.d.ts.map +1 -1
- package/types/slotted-angular-chart.d.ts +1 -0
- package/types/slotted-angular-chart.d.ts.map +1 -1
- package/types/slotted-angular-date-picker.d.ts +0 -1
- package/types/slotted-angular-date-picker.d.ts.map +1 -1
- package/types/slotted-angular-date-range-picker.d.ts +0 -1
- package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
- package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
- package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-entity-picker.d.ts.map +1 -1
- package/types/slotted-angular-popover.d.ts.map +1 -1
- package/types/slotted-angular-scroll-area.d.ts.map +1 -1
- package/types/slotted-angular-select.d.ts +12 -2
- package/types/slotted-angular-select.d.ts.map +1 -1
- package/types/slotted-angular-table.d.ts +1 -0
- package/types/slotted-angular-table.d.ts.map +1 -1
- package/types/slotted-angular-tabs.d.ts +3 -4
- package/types/slotted-angular-tabs.d.ts.map +1 -1
- package/types/slotted-angular-time-picker.d.ts +0 -1
- package/types/slotted-angular-time-picker.d.ts.map +1 -1
- package/types/slotted-angular-time-range-picker.d.ts +0 -1
- package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
- package/types/slotted-angular-tooltip.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-app-shell.mjs","sources":["../../app-shell/src/app-shell-defaults.ts","../../app-shell/src/app-shell.ts","../../app-shell/src/slotted-angular-app-shell.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/**\n * Which region reaches the corner of the screen. `banner` spans the full width\n * and the navigation starts below it; `nav` spans the full height and the\n * banner starts beside it; `main` spans the navigation the full height as well\n * and puts the banner in the plane of the content, inside the card that holds\n * it. The grid changes where a region is drawn and never where it is written,\n * so the focus order is the same under all three.\n */\nexport type AppShellPrimary = 'banner' | 'nav' | 'main';\n\n/**\n * Which surface carries which plane, for every region at once. `inset` paints\n * the frame with the sunken ground and makes the content a raised card;\n * `flush` runs every region edge to edge, separated at its seams; `floating`\n * makes the navigation a card as well as the content; `panel` holds the\n * navigation, the content and the pane in one card, the banner on the frame\n * above it.\n */\nexport type AppShellCanvas = 'inset' | 'flush' | 'floating' | 'panel';\n\n/**\n * What draws a seam where two regions touch without a gutter. `rule` is a\n * line; `tone` is a ground of its own on the chrome regions, 0.036 OKLab L\n * from the surface, with the subtle tones inside them recomputed from it.\n */\nexport type AppShellSeparation = 'rule' | 'tone';\n\n/**\n * How the navigation region occupies space. `auto` is `inline` at or above the\n * shell's own `APP_SHELL_OVERLAY_AT` inline size and `overlay` below it.\n */\nexport type AppShellNavMode = 'inline' | 'overlay' | 'auto';\n\n/** How the secondary pane occupies space: the navigation's pair, resolved on the same width. */\nexport type AppShellAsideMode = 'inline' | 'overlay' | 'auto';\n\n/** Which end of the line the navigation region sits at. Logical, so the layout mirrors. */\nexport type AppShellNavSide = 'start' | 'end';\n\n/** What a closed inline navigation leaves behind. */\nexport type AppShellCollapsedTo = 'rail' | 'hidden';\n\n/** A step on the region's own width scale. */\nexport type AppShellSize = 'sm' | 'md' | 'lg';\n\n/** Who scrolls: the content column, or the document. */\nexport type AppShellScroll = 'content' | 'document';\n\n/** Whether a dismissal source closes the overlaid navigation. */\nexport type AppShellDismissPolicy = 'close' | 'none';\n\n/** Why the navigation region opened or closed. */\nexport type AppShellOpenReason =\n | 'pointer'\n | 'keyboard'\n | 'escape'\n | 'outsidePress'\n | 'back'\n | 'select'\n | 'resize'\n | 'programmatic';\n\n/** Why the secondary pane opened or closed. No `select`: a pane has no destinations. */\nexport type AppShellAsideOpenReason = Exclude<AppShellOpenReason, 'select'>;\n\n/** Why the pane's extent moved. */\nexport type AppShellAsideExtentReason = 'pointer' | 'keyboard' | 'programmatic';\n\n/**\n * The request the shell makes before the pane's extent moves. `undefined` is\n * the pane back on the measure its size step gives it.\n */\nexport interface AppShellAsideExtentRequest {\n readonly value: number | undefined;\n readonly previous: number | undefined;\n readonly reason: AppShellAsideExtentReason;\n readonly source?: unknown;\n readonly cancelled: boolean;\n cancel(): void;\n}\n\n/** The request the shell makes before the region moves. Cancel it and nothing commits. */\nexport interface AppShellOpenRequest {\n readonly value: boolean;\n readonly previous: boolean;\n readonly reason: AppShellOpenReason;\n readonly source?: unknown;\n readonly cancelled: boolean;\n cancel(): void;\n}\n\nexport interface AppShellDefaults {\n asideMode: AppShellAsideMode;\n asideSize: AppShellSize;\n canvas: AppShellCanvas;\n closeOnNavigate: boolean;\n collapsedTo: AppShellCollapsedTo;\n escape: AppShellDismissPolicy;\n /** The platform's way back — a phone's gesture, a browser's button — closes a modal layer. */\n back: AppShellDismissPolicy;\n modal: boolean;\n navMode: AppShellNavMode;\n navSide: AppShellNavSide;\n navSize: AppShellSize;\n outsidePress: AppShellDismissPolicy;\n primary: AppShellPrimary;\n scroll: AppShellScroll;\n separation: AppShellSeparation;\n}\n\nconst FALLBACK: AppShellDefaults = {\n asideMode: 'auto',\n asideSize: 'md',\n canvas: 'inset',\n closeOnNavigate: true,\n collapsedTo: 'rail',\n escape: 'close',\n back: 'close',\n modal: true,\n navMode: 'auto',\n navSide: 'start',\n navSize: 'md',\n outsidePress: 'close',\n primary: 'banner',\n scroll: 'content',\n separation: 'rule',\n};\n\nexport const APP_SHELL_DEFAULTS = new InjectionToken<AppShellDefaults>(\n 'slotted app shell defaults',\n {\n providedIn: 'root',\n factory: () => FALLBACK,\n },\n);\n\n/**\n * An application decides once how its shell is arranged — which region reaches\n * the corner, which plane the content sits on, how the navigation behaves when\n * the space runs out — rather than repeating the same inputs on every route. A\n * shell that states any of them itself still wins. Its words come from the\n * language in force (`provideSlotted`).\n */\nexport function provideAppShellDefaults(defaults: Partial<AppShellDefaults>) {\n return {\n provide: APP_SHELL_DEFAULTS,\n useFactory: (): AppShellDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a shell renders as here, before it states anything of its own. */\nexport function injectAppShellDefaults(): AppShellDefaults {\n return inject(APP_SHELL_DEFAULTS);\n}\n","import { createDismissableLayer } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport {\n anchorsAtStart,\n EXTENT_LARGE_STEP_PX,\n EXTENT_STEP_PX,\n extentAtPoint,\n holdResizeGesture,\n stepAmountFromPixels,\n stepExtent,\n} from '@slotted/core/extent';\nimport type { ExtentRect, ExtentSide } from '@slotted/core/extent';\nimport { createFocusScope } from '@slotted/core/focus';\nimport { appShellMessages, type AppShellMessages, type PartialMessages } from '@slotted/core/i18n';\nimport { clamp, COMPACT_BELOW, createWidthGate } from '@slotted/core/measure';\nimport { setPortalContainer } from '@slotted/core/portal';\nimport { createPresence } from '@slotted/core/presence';\nimport type { PresenceHandle, PresenceStatus } from '@slotted/core/presence';\nimport { createControllable } from '@slotted/core/state';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n injectProgressIndicatorDefaults,\n SlProgressBar,\n type ProgressSize,\n type ProgressTone,\n} from '@slotted/angular/progress-indicator';\n\nimport { injectAppShellDefaults } from './app-shell-defaults';\nimport type {\n AppShellAsideExtentReason,\n AppShellAsideExtentRequest,\n AppShellAsideMode,\n AppShellAsideOpenReason,\n AppShellCanvas,\n AppShellCollapsedTo,\n AppShellDismissPolicy,\n AppShellNavMode,\n AppShellNavSide,\n AppShellOpenReason,\n AppShellOpenRequest,\n AppShellPrimary,\n AppShellScroll,\n AppShellSeparation,\n AppShellSize,\n} from './app-shell-defaults';\n\nexport type {\n AppShellAsideExtentReason,\n AppShellAsideExtentRequest,\n AppShellAsideMode,\n AppShellAsideOpenReason,\n AppShellCanvas,\n AppShellCollapsedTo,\n AppShellDefaults,\n AppShellDismissPolicy,\n AppShellNavMode,\n AppShellNavSide,\n AppShellOpenReason,\n AppShellOpenRequest,\n AppShellPrimary,\n AppShellScroll,\n AppShellSeparation,\n AppShellSize,\n} from './app-shell-defaults';\n\n/**\n * The inline size the navigation stops being a column at. The stylesheet needs\n * it literal — `@container (inline-size: var(--x))` is invalid CSS — and the\n * script needs it to know whether `Escape`, the focus scope and `inert` are in\n * play. It is the limit of the compact size class, `COMPACT_BELOW`;\n * `specs/components/app-shell/contract.json` states it once, and\n * `app-shell.styles.test.mjs` compares the stylesheet's own condition to it.\n */\nexport const APP_SHELL_OVERLAY_AT = COMPACT_BELOW;\n\nlet nextId = 0;\n\n/**\n * The outer frame of a route: the regions that do not change when the content\n * does.\n *\n * **The layer is composed from `packages/core` and rewritten nowhere.**\n * `measure` answers the shell's own inline size, `dismissable-layer` owns\n * `Escape`, the outside press and the single stack, `focus` contains the\n * keyboard and gives it back to the toggle, and `portal` is told once that this\n * shell is where an overlay belongs.\n *\n * **The element is the consumer's.** `<div slAppShell>` is the frame and the\n * directive adds the grid, the skip links, the veil and the portal root around\n * whatever is projected into it.\n */\n@Component({\n selector: '[slAppShell]',\n standalone: true,\n exportAs: 'slAppShell',\n template: `@if (skipTargets().length > 0) {\n <div data-part=\"skip\">\n @for (target of skipTargets(); track target.href) {\n <a [href]=\"'#' + target.href\">{{ target.label }}</a>\n }\n </div>\n }\n <ng-content />\n @if (veilStatus() !== 'unmounted') {\n <div data-part=\"scrim\" [attr.data-status]=\"veilStatus()\" #scrim></div>\n }\n <div data-part=\"layer\" #layer></div>`,\n styleUrl: '../../../styles/src/app-shell/app-shell.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'app-shell',\n 'data-part': 'root',\n '[attr.data-primary]': 'resolvedPrimary()',\n '[attr.data-canvas]': 'resolvedCanvas()',\n '[attr.data-nav-mode]': 'resolvedMode()',\n '[attr.data-aside-mode]': 'resolvedAsideMode()',\n '[attr.data-nav-side]': 'resolvedNavSide()',\n '[attr.data-nav-size]': 'resolvedNavSize()',\n '[attr.data-aside-size]': 'resolvedAsideSize()',\n '[attr.data-collapsed-to]': 'resolvedCollapsedTo()',\n '[attr.data-scroll]': 'resolvedScroll()',\n '[attr.data-separation]': 'resolvedSeparation()',\n '[attr.data-open]': \"navShownOpen() ? '' : null\",\n '[attr.data-dragging]': \"asideDragging() ? '' : null\",\n '(click)': 'onClick($event)',\n },\n})\nexport class SlAppShell {\n /** Whether the navigation region is showing its full panel. Two-way. */\n readonly navOpen = model<boolean>(true);\n /** Whether the secondary pane is showing. Two-way. */\n readonly asideOpen = model<boolean>(true);\n /**\n * How much of the shell's inline size the pane takes as a column, in\n * `[0, 1]`. Unset means `asideSize` decides. Two-way.\n */\n readonly asideExtent = model<number | undefined>(undefined);\n /** The smallest extent the reader may give the pane. */\n readonly minAsideExtent = input(0.16);\n /** The largest extent the reader may give the pane. */\n readonly maxAsideExtent = input(0.6);\n\n /** Defaults to the provider, then `banner`. */\n readonly primary = input<AppShellPrimary | undefined>(undefined);\n /** Defaults to the provider, then `inset`. */\n readonly canvas = input<AppShellCanvas | undefined>(undefined);\n /** Defaults to the provider, then `auto`. */\n readonly navMode = input<AppShellNavMode | undefined>(undefined);\n /** Defaults to the provider, then `start`. */\n readonly navSide = input<AppShellNavSide | undefined>(undefined);\n /** Defaults to the provider, then `md`. */\n readonly navSize = input<AppShellSize | undefined>(undefined);\n /** Defaults to the provider, then `auto`. */\n readonly asideMode = input<AppShellAsideMode | undefined>(undefined);\n /** Defaults to the provider, then `md`. */\n readonly asideSize = input<AppShellSize | undefined>(undefined);\n /** Defaults to the provider, then `rail`. */\n readonly collapsedTo = input<AppShellCollapsedTo | undefined>(undefined);\n /** Defaults to the provider, then `content`. */\n readonly scroll = input<AppShellScroll | undefined>(undefined);\n /** What draws a seam where two regions touch without a gutter. Defaults to the provider, then `rule`. */\n readonly separation = input<AppShellSeparation | undefined>(undefined);\n /** Defaults to the provider, then `true`. */\n readonly modal = input<boolean | undefined>(undefined, { transform: optionalBoolean });\n /** Defaults to the provider, then `close`. */\n readonly escape = input<AppShellDismissPolicy | undefined>(undefined);\n /** Defaults to the provider, then `close`. */\n readonly outsidePress = input<AppShellDismissPolicy | undefined>(undefined);\n /**\n * The platform's way back — a phone's gesture, a browser's button — closes\n * a modal layer instead of leaving the page. Defaults to the provider, then `close`.\n */\n readonly back = input<AppShellDismissPolicy | undefined>(undefined);\n /** Defaults to the provider, then `true`. */\n readonly closeOnNavigate = input<boolean | undefined>(undefined, { transform: optionalBoolean });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * landmarks' names, the toggles and the skip links. A static `aria-label`\n * on a part still wins.\n */\n readonly messages = input<PartialMessages<AppShellMessages> | undefined>(undefined);\n\n /**\n * The request, before anything commits. `reason` is what tells the reader's\n * own choice from the one the layout forced, which is the line\n * `docs/component-features.md` §15 asks for when it says sidebar persistence\n * belongs to the product.\n */\n readonly navOpenChangeRequest = output<AppShellOpenRequest>();\n /** The pane's request, with the same shape and the reasons a pane can carry. */\n readonly asideOpenChangeRequest = output<AppShellOpenRequest>();\n /** The request before the pane's extent moves, already held inside the limits. */\n readonly asideExtentChangeRequest = output<AppShellAsideExtentRequest>();\n\n private readonly defaults = injectAppShellDefaults();\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n private readonly narrow = signal<boolean | undefined>(undefined);\n /** Whether a pointer is moving the pane's edge, which the host reports as `data-dragging`. */\n readonly asideDragging = signal(false);\n /** The limits, ordered and inside `[0, 1]`. */\n readonly asideBounds = computed(() => {\n const min = clamp(this.minAsideExtent(), 0, 1);\n return { min, max: clamp(this.maxAsideExtent(), min, 1) };\n });\n\n /**\n * Stable ids, and not `crypto.randomUUID()`: a server render and the\n * hydration that follows it have to produce the same string, and a random one\n * produces two.\n */\n private readonly seq = (nextId += 1);\n readonly navId = `slotted-app-shell-${this.seq}-nav`;\n readonly mainId = `slotted-app-shell-${this.seq}-main`;\n readonly asideId = `slotted-app-shell-${this.seq}-aside`;\n readonly toggleId = `slotted-app-shell-${this.seq}-toggle`;\n readonly asideToggleId = `slotted-app-shell-${this.seq}-aside-toggle`;\n\n /** The nodes the layer, the focus scope and the `inert` pass need. */\n readonly nodes: {\n aside: HTMLElement | null;\n asideToggle: HTMLElement | null;\n banner: HTMLElement | null;\n footer: HTMLElement | null;\n main: HTMLElement | null;\n nav: HTMLElement | null;\n toggle: HTMLElement | null;\n } = {\n aside: null,\n asideToggle: null,\n banner: null,\n footer: null,\n main: null,\n nav: null,\n toggle: null,\n };\n\n private readonly regions = signal<{ nav: boolean; main: boolean; aside: boolean }>({\n nav: false,\n main: false,\n aside: false,\n });\n\n readonly resolvedPrimary = computed(() => this.primary() ?? this.defaults.primary);\n readonly resolvedCanvas = computed(() => this.canvas() ?? this.defaults.canvas);\n readonly resolvedNavSide = computed(() => this.navSide() ?? this.defaults.navSide);\n readonly resolvedNavSize = computed(() => this.navSize() ?? this.defaults.navSize);\n readonly resolvedAsideSize = computed(() => this.asideSize() ?? this.defaults.asideSize);\n private readonly wantedAsideMode = computed(() => this.asideMode() ?? this.defaults.asideMode);\n /** The pane's mode, resolved the same way against the same width. */\n readonly resolvedAsideMode = computed<'inline' | 'overlay' | null>(() => {\n const wanted = this.wantedAsideMode();\n if (wanted !== 'auto') return wanted;\n const narrow = this.narrow();\n return narrow === undefined ? null : narrow ? 'overlay' : 'inline';\n });\n readonly asideOverlay = computed(\n () => this.resolvedAsideMode() === 'overlay' && this.asideOpen() && this.regions().aside,\n );\n readonly resolvedCollapsedTo = computed(() => this.collapsedTo() ?? this.defaults.collapsedTo);\n readonly resolvedScroll = computed(() => this.scroll() ?? this.defaults.scroll);\n readonly resolvedSeparation = computed(() => this.separation() ?? this.defaults.separation);\n readonly resolvedModal = computed(() => this.modal() ?? this.defaults.modal);\n readonly resolvedEscape = computed(() => this.escape() ?? this.defaults.escape);\n readonly resolvedBack = computed(() => this.back() ?? this.defaults.back);\n readonly resolvedOutsidePress = computed(() => this.outsidePress() ?? this.defaults.outsidePress);\n readonly resolvedCloseOnNavigate = computed(\n () => this.closeOnNavigate() ?? this.defaults.closeOnNavigate,\n );\n /** The family's words in the language in force, with this shell's `messages` laid over them. */\n readonly t = injectMessages(appShellMessages, this.messages);\n /** Whether the bar on the content's edge is painted, which `main` reports as `aria-busy`. */\n readonly busy = signal(false);\n\n private readonly wantedMode = computed(() => this.navMode() ?? this.defaults.navMode);\n\n /**\n * `null` until the gate has measured, which is what keeps `data-nav-mode` off\n * the host through a server render: below the breakpoint the stylesheet shows\n * the overlaid panel only under `[data-nav-mode='overlay'][data-open]`, so the\n * frame before hydration draws the narrow shell closed.\n */\n readonly resolvedMode = computed<'inline' | 'overlay' | null>(() => {\n const wanted = this.wantedMode();\n if (wanted !== 'auto') return wanted;\n const narrow = this.narrow();\n return narrow === undefined ? null : narrow ? 'overlay' : 'inline';\n });\n\n /**\n * A region nobody rendered has no open state to draw: no `data-open`, no\n * layer and no veil. The regions register in their constructors, so the\n * first render already knows which of them are written.\n */\n readonly navShownOpen = computed(() => this.navOpen() && this.regions().nav);\n readonly overlay = computed(() => this.resolvedMode() === 'overlay' && this.navShownOpen());\n\n /**\n * The veil has a presence of its own, as a dialog's backdrop does. The\n * stylesheet fades it in from `entering` and out through `exiting`, and a\n * veil mounted straight at `open` gave that transition no closed style to\n * start from: it appeared in one frame beside a panel that took two hundred\n * milliseconds to arrive, and left the same way. One presence for both\n * layers, because there is one veil: with both regions overlaid and both\n * open it stays, and it leaves when the last of them does.\n */\n private readonly veil = computed(\n () => (this.overlay() || this.asideOverlay()) && this.resolvedModal(),\n );\n protected readonly veilStatus = signal<PresenceStatus>('unmounted');\n private readonly veilRef = viewChild<ElementRef<HTMLElement>>('scrim');\n /** Created on the first resolved value, so a veil the template opens with does not fade in. */\n private veilPresence: PresenceHandle | null = null;\n\n protected readonly skipTargets = computed(() => {\n const regions = this.regions();\n const targets: { href: string; label: string }[] = [];\n if (regions.main) targets.push({ href: this.mainId, label: this.t('skipToMain') });\n if (regions.nav) targets.push({ href: this.navId, label: this.t('skipToNav') });\n /* A link to a pane the reader closed is a dead destination. */\n if (regions.aside && this.asideOpen()) {\n targets.push({ href: this.asideId, label: this.t('skipToAside') });\n }\n return targets;\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n effect(() => {\n const veil = this.veil();\n if (this.veilPresence === null) {\n this.veilPresence = createPresence({\n present: veil,\n onStatusChange: (next) => this.veilStatus.set(next),\n });\n this.veilStatus.set(this.veilPresence.status);\n return;\n }\n this.veilPresence.sync(veil);\n });\n effect(() => {\n this.veilPresence?.setNode(this.veilRef()?.nativeElement ?? null);\n });\n destroyRef.onDestroy(() => this.veilPresence?.destroy());\n\n afterNextRender(() => {\n const layer = this.host.querySelector<HTMLElement>(':scope > [data-part=\"layer\"]');\n if (layer !== null) {\n setPortalContainer(layer);\n destroyRef.onDestroy(() => setPortalContainer(null, layer.ownerDocument));\n }\n\n /* The shell answers its own inline size and not the window's, which is\n what makes a shell inside a splitter, a preview frame or a Storybook\n stage behave like the narrow window it is the width of. */\n if (typeof ResizeObserver === 'undefined') return;\n const gate = createWidthGate(this.host, {\n at: APP_SHELL_OVERLAY_AT,\n onChange: (narrow) => this.narrow.set(narrow),\n });\n this.narrow.set(gate.narrow());\n destroyRef.onDestroy(() => gate.destroy());\n });\n\n /**\n * Crossing into the overlaid mode with the region open closes it, and says\n * `resize`. A product persisting the reader's own choice writes\n * `if (reason !== 'resize') persist(next)` and keeps the wide preference\n * through every narrow window the reader ever opens.\n */\n /* `undefined` until the first resolved mode is seen: a mode *forced* to\n overlay is the region's starting point, not a crossing, and the first\n run closed a region the template had just opened. Only a mode the width\n decided — `auto` resolving narrow — is a crossing on first sight. */\n /* Crossing back out restores what the crossing in closed, and says\n `resize` again. The flag records only a close the width made: a region\n the reader closed while wide stays closed through a narrow window. */\n let wasOverlay: boolean | undefined;\n let closedByResize = false;\n effect(() => {\n const mode = this.resolvedMode();\n if (mode === null) return;\n const overlay = mode === 'overlay';\n const first = wasOverlay === undefined;\n const entered = overlay && (first ? this.wantedMode() === 'auto' : !wasOverlay);\n const left = !overlay && wasOverlay === true;\n wasOverlay = overlay;\n if (entered) {\n queueMicrotask(() => {\n if (!this.navOpen()) return;\n closedByResize = true;\n this.request(false, 'resize', undefined);\n });\n } else if (left && closedByResize) {\n closedByResize = false;\n queueMicrotask(() => {\n if (!this.navOpen()) this.request(true, 'resize', undefined);\n });\n }\n });\n let asideWasOverlay: boolean | undefined;\n let asideClosedByResize = false;\n effect(() => {\n const mode = this.resolvedAsideMode();\n if (mode === null) return;\n const overlay = mode === 'overlay';\n const first = asideWasOverlay === undefined;\n const entered = overlay && (first ? this.wantedAsideMode() === 'auto' : !asideWasOverlay);\n const left = !overlay && asideWasOverlay === true;\n asideWasOverlay = overlay;\n if (entered) {\n queueMicrotask(() => {\n if (!this.asideOpen()) return;\n asideClosedByResize = true;\n this.requestAside(false, 'resize', undefined);\n });\n } else if (left && asideClosedByResize) {\n asideClosedByResize = false;\n queueMicrotask(() => {\n if (!this.asideOpen()) this.requestAside(true, 'resize', undefined);\n });\n }\n });\n\n /**\n * The overlaid region is a dismissable layer with a focus scope over it.\n * `@slotted/core/dismissable-layer` inerts every sibling of the layer while\n * it is modal, which is the whole of the modal contract: the reader is in\n * the panel, and the ways out are `Escape`, the veil, a destination, and\n * whatever control the consumer put inside the panel. The toggle is inert\n * with the rest of the shell, exactly as a dialog's trigger is, and is\n * registered as a branch so a press on it is never read as a press outside.\n *\n * No surveyed implementation inerts anything: Vaadin and PatternFly draw\n * the veil and leave what is under it operable.\n */\n /**\n * One layer per region, and the same three modules for both: the pane's\n * layer is the navigation's with the region, the trigger and the request\n * swapped. `@slotted/core/dismissable-layer` keeps one stack, so with both\n * open — only possible with both modes forced — `Escape` reaches the topmost.\n */\n const raise = (\n open: () => boolean,\n panel: () => HTMLElement | null,\n trigger: () => HTMLElement | null,\n close: (reason: AppShellAsideOpenReason, source: unknown) => void,\n ) => {\n let layer: DismissableLayerHandle | null = null;\n let release: (() => void) | null = null;\n effect(() => {\n const isOpen = open();\n const modal = this.resolvedModal();\n const escape = this.resolvedEscape();\n const outsidePress = this.resolvedOutsidePress();\n /* A history entry is a modal layer's: a layer the page stays reachable\n under has no claim on the way back. */\n const back = modal && this.resolvedBack() === 'close';\n\n release?.();\n release = null;\n layer?.destroy();\n layer = null;\n if (!isOpen) return;\n\n queueMicrotask(() => {\n const node = panel();\n if (node === null || !open()) return;\n\n const control = trigger();\n layer = createDismissableLayer(node, {\n ...(control === null ? {} : { branches: [control] }),\n back,\n content: node,\n escape: escape === 'close',\n modal,\n onDismiss: (request) => {\n if (request.reason === 'outsidePress' && outsidePress === 'none') {\n return request.cancel();\n }\n close(request.reason as AppShellAsideOpenReason, request.source);\n },\n outsidePress: outsidePress === 'close',\n outsidePressEvent: 'click',\n });\n\n const scope = createFocusScope(node, {\n contain: modal,\n initial: 'first',\n ...(control === null ? {} : { restore: () => control }),\n });\n scope.enter();\n\n release = () => scope.destroy();\n });\n });\n destroyRef.onDestroy(() => {\n release?.();\n layer?.destroy();\n });\n };\n\n raise(\n () => this.overlay(),\n () => this.nodes.nav,\n () => this.nodes.toggle,\n (reason, source) => this.request(false, reason, source),\n );\n raise(\n () => this.asideOverlay(),\n () => this.nodes.aside,\n () => this.nodes.asideToggle,\n (reason, source) => this.requestAside(false, reason, source),\n );\n }\n\n /** The root, which the pane's extent is a fraction of. */\n get element(): HTMLElement {\n return this.host;\n }\n\n /**\n * Asks to move the pane's extent, held inside the limits. `undefined`\n * travels whole: it is the pane back on its size step.\n */\n requestAsideExtent(next: number | undefined, reason: AppShellAsideExtentReason, source: unknown) {\n const { max, min } = this.asideBounds();\n const wanted = next === undefined ? undefined : clamp(next, min, max);\n if (wanted === this.asideExtent()) return;\n\n let cancelled = false;\n const state = createControllable<number | undefined>({\n initial: this.asideExtent(),\n onRequest: (raw) => {\n cancelled = raw.cancelled;\n this.asideExtentChangeRequest.emit({\n cancel: () => raw.cancel(),\n get cancelled() {\n return raw.cancelled;\n },\n previous: raw.previous,\n reason,\n source: raw.source,\n value: raw.value,\n });\n },\n });\n\n if (!state.request(wanted, reason, source) || cancelled) return;\n this.asideExtent.set(wanted);\n }\n\n /** A region says it exists, so a skip link is never written to a target nobody rendered. */\n registerRegion(region: 'nav' | 'main' | 'aside'): () => void {\n this.regions.update((current) => ({ ...current, [region]: true }));\n return () => this.regions.update((current) => ({ ...current, [region]: false }));\n }\n\n /** Asks to move the region, carrying the reason and the originating event. */\n request(next: boolean, reason: AppShellOpenReason, source: unknown) {\n if (next === this.navOpen()) return;\n\n let cancelled = false;\n const state = createControllable<boolean>({\n initial: this.navOpen(),\n onRequest: (raw) => {\n cancelled = raw.cancelled;\n this.navOpenChangeRequest.emit({\n cancel: () => raw.cancel(),\n get cancelled() {\n return raw.cancelled;\n },\n previous: raw.previous,\n reason,\n source: raw.source,\n value: raw.value,\n });\n },\n });\n\n if (!state.request(next, reason, source) || cancelled) return;\n this.navOpen.set(next);\n }\n\n /** Asks to move the pane, carrying the reason and the originating event. */\n requestAside(next: boolean, reason: AppShellAsideOpenReason, source: unknown) {\n if (next === this.asideOpen()) return;\n\n let cancelled = false;\n const state = createControllable<boolean>({\n initial: this.asideOpen(),\n onRequest: (raw) => {\n cancelled = raw.cancelled;\n this.asideOpenChangeRequest.emit({\n cancel: () => raw.cancel(),\n get cancelled() {\n return raw.cancelled;\n },\n previous: raw.previous,\n reason,\n source: raw.source,\n value: raw.value,\n });\n },\n });\n\n if (!state.request(next, reason, source) || cancelled) return;\n this.asideOpen.set(next);\n }\n\n /** Asks to show the pane, with the reason `programmatic`. */\n openAside() {\n this.requestAside(true, 'programmatic', undefined);\n }\n /** Asks to hide it, with the reason `programmatic`. */\n closeAside() {\n this.requestAside(false, 'programmatic', undefined);\n }\n\n /** Asks to show the region, with the reason `programmatic`. */\n openNav() {\n this.request(true, 'programmatic', undefined);\n }\n /** Asks to hide it, with the reason `programmatic`. */\n closeNav() {\n this.request(false, 'programmatic', undefined);\n }\n /** Moves focus into the content region, which is where a skip link sends it. */\n focusMain() {\n this.nodes.main?.focus();\n }\n\n /**\n * A click that lands on an `a[href]` inside the region asks to close, in the\n * overlaid mode only. Vaadin and PatternFly both do it, and without it a\n * phone costs two taps per destination. `defaultPrevented` is no refusal\n * here: a client-side router prevents the native navigation of every link it\n * routes. A disabled destination (`aria-disabled=\"true\"`) stays open; any\n * other refusal cancels the request.\n */\n protected onClick(event: MouseEvent) {\n if (!this.overlay() || !this.resolvedCloseOnNavigate()) return;\n const link = (event.target as Element | null)?.closest?.('a[href]');\n if (!link || this.nodes.nav?.contains(link) !== true) return;\n if (link.getAttribute('aria-disabled') === 'true') return;\n this.request(false, 'select', event);\n }\n}\n\nfunction optionalBoolean(value: unknown): boolean | undefined {\n return value === undefined ? undefined : booleanAttribute(value);\n}\n\n/** Attaches a region's element to the shell and takes it off again on destroy. */\nfunction attach(slot: 'aside' | 'asideToggle' | 'banner' | 'footer' | 'main' | 'nav' | 'toggle') {\n const shell = inject(SlAppShell);\n const node: HTMLElement = inject(ElementRef).nativeElement;\n shell.nodes[slot] = node;\n inject(DestroyRef).onDestroy(() => {\n if (shell.nodes[slot] === node) shell.nodes[slot] = null;\n });\n return shell;\n}\n\n/**\n * The `banner` landmark: a `header` in the context of the `body`, so it needs\n * no `role`.\n */\n@Directive({\n selector: 'header[slAppShellBanner]',\n standalone: true,\n exportAs: 'slAppShellBanner',\n host: { 'data-part': 'banner' },\n})\nexport class SlAppShellBanner {\n constructor() {\n attach('banner');\n }\n}\n\n/** The start cluster of the banner: the toggle, the mark, the name of the workspace. */\n@Directive({\n selector: '[slAppShellBrand]',\n standalone: true,\n exportAs: 'slAppShellBrand',\n host: { 'data-part': 'brand' },\n})\nexport class SlAppShellBrand {}\n\n/** The middle of the bar, and the one cluster that grows: a search, a trail, a route title. */\n@Directive({\n selector: '[slAppShellCentre]',\n standalone: true,\n exportAs: 'slAppShellCentre',\n host: { 'data-part': 'centre' },\n})\nexport class SlAppShellCentre {}\n\n/** The end cluster, pushed there by the space it takes. */\n@Directive({\n selector: '[slAppShellActions]',\n standalone: true,\n exportAs: 'slAppShellActions',\n host: { 'data-part': 'actions' },\n})\nexport class SlAppShellActions {}\n\n/**\n * The `navigation` landmark, and the one element all three modes share. A\n * document with more than one `navigation` needs a unique label on each, so\n * this one carries the family's unless the consumer wrote another.\n */\n@Directive({\n selector: 'nav[slAppShellNav]',\n standalone: true,\n exportAs: 'slAppShellNav',\n host: {\n 'data-part': 'nav',\n '[attr.id]': 'elementId',\n '[attr.aria-label]': 'label()',\n },\n})\nexport class SlAppShellNav {\n private readonly shell = attach('nav');\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n\n protected readonly elementId = this.writtenId ?? this.shell.navId;\n protected readonly label = computed(() => this.written ?? this.shell.t('nav'));\n\n constructor() {\n const remove = this.shell.registerRegion('nav');\n inject(DestroyRef).onDestroy(remove);\n }\n}\n\n/**\n * A strip of marks before the column: the first level of a two-level\n * navigation, inside the one navigation landmark and under its one open state.\n * Closed to `rail`, the region keeps this strip and lets the column go.\n */\n@Directive({\n selector: '[slAppShellNavRail]',\n standalone: true,\n exportAs: 'slAppShellNavRail',\n host: { 'data-part': 'nav-rail' },\n})\nexport class SlAppShellNavRail {}\n\n/** The pinned top of the navigation column. */\n@Directive({\n selector: '[slAppShellNavHeader]',\n standalone: true,\n exportAs: 'slAppShellNavHeader',\n host: { 'data-part': 'nav-header' },\n})\nexport class SlAppShellNavHeader {}\n\n/** The middle, and the only part of the column that scrolls. */\n@Directive({\n selector: '[slAppShellNavBody]',\n standalone: true,\n exportAs: 'slAppShellNavBody',\n host: { 'data-part': 'nav-body' },\n})\nexport class SlAppShellNavBody {}\n\n/** The pinned bottom: the account, the collapse control. */\n@Directive({\n selector: '[slAppShellNavFooter]',\n standalone: true,\n exportAs: 'slAppShellNavFooter',\n host: { 'data-part': 'nav-footer' },\n})\nexport class SlAppShellNavFooter {}\n\n/**\n * The `main` landmark, and the skip link's destination.\n *\n * `tabindex=\"-1\"` is not decoration: a `main` without it takes the scroll and\n * leaves the focus behind in Safari and in Firefox, so the link appears to work\n * and moves nothing a screen reader follows.\n */\n@Directive({\n selector: 'main[slAppShellMain]',\n standalone: true,\n exportAs: 'slAppShellMain',\n host: {\n 'data-part': 'main',\n tabindex: '-1',\n '[attr.id]': 'elementId',\n '[attr.aria-busy]': 'busy()',\n },\n})\nexport class SlAppShellMain {\n private readonly shell = attach('main');\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n protected readonly elementId = this.writtenId ?? this.shell.mainId;\n /** The wait on this region's edge; an `aria-busy` the consumer wrote wins. */\n private readonly writtenBusy = inject(new HostAttributeToken('aria-busy'), { optional: true });\n protected readonly busy = computed(() => this.writtenBusy ?? (this.shell.busy() ? 'true' : null));\n\n constructor() {\n const remove = this.shell.registerRegion('main');\n inject(DestroyRef).onDestroy(remove);\n }\n}\n\n/**\n * The wait for the next page, on the line between the chrome and the content.\n * The element is the consumer's, anywhere inside the shell: the stylesheet\n * lays it over `main` in every arrangement as a frame, and it holds one bar\n * at `edge-start`. Where the line is — the card's border, the banner's seam —\n * is the stylesheet's to know, not the consumer's.\n *\n * `main` is busy for exactly as long as the bar is painted, which the bar\n * itself reports: not from the moment `loading` turns, because a fast answer\n * draws nothing, and not after the bar has gone. `size` defaults to `sm`,\n * `delay` to 200 and `minDuration` to 400 milliseconds; an input, then\n * `provideProgressIndicatorDefaults()`, wins.\n */\n@Component({\n selector: '[slAppShellProgress]',\n standalone: true,\n exportAs: 'slAppShellProgress',\n imports: [SlProgressBar],\n template: `<div\n slProgressBar\n placement=\"edge-start\"\n [buffer]=\"buffer()\"\n [delay]=\"delay() ?? defaults.delay ?? 200\"\n [label]=\"label() ?? shell.t('progress')\"\n [loading]=\"loading()\"\n [max]=\"max()\"\n [min]=\"min()\"\n [minDuration]=\"minDuration() ?? defaults.minDuration ?? 400\"\n [size]=\"size() ?? 'sm'\"\n [tone]=\"tone()\"\n [value]=\"value()\"\n [valueText]=\"valueText()\"\n (withdraw)=\"withdraw.emit()\"\n ></div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'progress' },\n})\nexport class SlAppShellProgress {\n protected readonly shell = inject(SlAppShell);\n protected readonly defaults = injectProgressIndicatorDefaults();\n\n readonly loading = input(true, { transform: booleanAttribute });\n readonly value = input<number | null | undefined>(undefined);\n readonly min = input<number | undefined>(undefined);\n readonly max = input<number | undefined>(undefined);\n readonly buffer = input<number | null | undefined>(undefined);\n readonly valueText = input<string | undefined>(undefined);\n readonly label = input<string | undefined>(undefined);\n readonly tone = input<ProgressTone | undefined>(undefined);\n readonly size = input<ProgressSize | undefined>(undefined);\n readonly delay = input<number | undefined>(undefined);\n readonly minDuration = input<number | undefined>(undefined);\n /** The bar was painted and has been withdrawn. */\n readonly withdraw = output<void>();\n\n private readonly bar = viewChild.required(SlProgressBar);\n\n constructor() {\n effect(() => this.shell.busy.set(this.bar().painted()));\n inject(DestroyRef).onDestroy(() => this.shell.busy.set(false));\n }\n}\n\n/**\n * The `complementary` landmark. It opens and closes the way the navigation\n * region does — a column beside the content or a layer over it, by\n * `asideMode` — and carries its own `data-open`, because the host's is the\n * navigation's and every selector written over it still reads the navigation.\n */\n@Directive({\n selector: 'aside[slAppShellAside]',\n standalone: true,\n exportAs: 'slAppShellAside',\n host: {\n 'data-part': 'aside',\n '[attr.id]': 'elementId',\n '[attr.aria-label]': 'label()',\n '[attr.data-open]': \"shell.asideOpen() ? '' : null\",\n '[style.--slotted-app-shell-aside-extent]': 'extentLength()',\n },\n})\nexport class SlAppShellAside {\n protected readonly shell = attach('aside');\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n protected readonly elementId = this.writtenId ?? this.shell.asideId;\n protected readonly label = computed(() => this.written ?? this.shell.t('aside'));\n /* The extent as the column's width: a fraction of the shell in `cqi`, which\n the stylesheet reads in the column alone. */\n protected readonly extentLength = computed(() => {\n const extent = this.shell.asideExtent();\n return extent === undefined ? null : `${Math.round(extent * 10000) / 100}cqi`;\n });\n\n constructor() {\n const remove = this.shell.registerRegion('aside');\n inject(DestroyRef).onDestroy(remove);\n }\n}\n\n/** The pinned top of the pane: its title, and the control that closes it. */\n@Directive({\n selector: '[slAppShellAsideHeader]',\n standalone: true,\n exportAs: 'slAppShellAsideHeader',\n host: { 'data-part': 'aside-header' },\n})\nexport class SlAppShellAsideHeader {}\n\n/**\n * The middle, and the only part of the pane that scrolls. It stands on the\n * pane's inset; `inset=\"none\"` drops it for content that brings its own.\n */\n@Directive({\n selector: '[slAppShellAsideBody]',\n standalone: true,\n exportAs: 'slAppShellAsideBody',\n host: { 'data-part': 'aside-body', '[attr.data-inset]': 'inset() ?? null' },\n})\nexport class SlAppShellAsideBody {\n /** `none` drops the body's own padding, for content that brings its own inset. */\n readonly inset = input<'none' | undefined>(undefined);\n}\n\n/**\n * The box the pane's extent is a fraction of: the shell's content box, which\n * is what `cqi` resolves against. Physical edges, because the pointer and the\n * rectangle are both in client coordinates.\n */\nfunction shellRect(root: HTMLElement): ExtentRect | null {\n const rect = root.getBoundingClientRect();\n const box = getComputedStyle(root);\n /* A border whose style is none is nought wide, whatever its width says. */\n const border = (style: string, width: string) =>\n style === 'none' || style === 'hidden' ? 0 : parseFloat(width) || 0;\n const start =\n (parseFloat(box.paddingLeft) || 0) + border(box.borderLeftStyle, box.borderLeftWidth);\n const end =\n (parseFloat(box.paddingRight) || 0) + border(box.borderRightStyle, box.borderRightWidth);\n const width = Math.max(0, rect.width - start - end);\n return width > 0 ? { height: rect.height, width, x: rect.x + start, y: rect.y } : null;\n}\n\n/** How far a press on the separator may wander and still be a tap. */\nconst TAP_SLOP_PX = 3;\n\n/**\n * The pane's inner edge, from the WAI-ARIA Window Splitter pattern: a focusable\n * `separator` whose three values are the extent as whole percentages of the\n * shell. **Rendering it is the capability**; there is no `resizable` input.\n *\n * It moves the column alone. Under `asideMode=\"overlay\"` the layer keeps its\n * size step and a closed pane has nothing to resize, so the element is\n * `hidden` there; below the breakpoint the stylesheet hides it, because a row\n * under the content has no inline edge.\n *\n * The arrows are physical, the pattern's own reading: `ArrowLeft` grows an end\n * pane in a left-to-right document, and shrinks it where `navSide=\"end\"` or a\n * mirrored line puts the pane at the start.\n */\n@Directive({\n selector: '[slAppShellAsideResizer]',\n standalone: true,\n exportAs: 'slAppShellAsideResizer',\n host: {\n 'data-part': 'aside-resizer',\n role: 'separator',\n tabindex: '0',\n 'aria-orientation': 'vertical',\n '[attr.aria-controls]': 'shell.asideId',\n '[attr.aria-label]': 'label()',\n '[attr.aria-valuemin]': 'percent(shell.asideBounds().min)',\n '[attr.aria-valuemax]': 'percent(shell.asideBounds().max)',\n '[attr.aria-valuenow]': 'percent(current())',\n '[attr.hidden]': \"shown() ? null : ''\",\n '(pointerdown)': 'pointerDown($event)',\n '(pointermove)': 'pointerMove($event)',\n '(pointerup)': 'endDrag($event)',\n '(lostpointercapture)': 'endDrag($event)',\n '(keydown)': 'keyDown($event)',\n },\n})\nexport class SlAppShellAsideResizer {\n protected readonly shell = inject(SlAppShell);\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n /** Where the press began and how far the edge was from the pointer then. */\n private press: { x: number; offset: number; moved: boolean } | null = null;\n /** What the document looked like before the drag, and how to put it back. */\n private gesture: (() => void) | null = null;\n /** The pane's measure while the size step decides it, read from the layout. */\n private readonly rest = signal<number | undefined>(undefined);\n\n protected readonly label = computed(() => this.written ?? this.shell.t('resizeAside'));\n protected readonly shown = computed(\n () => this.shell.resolvedAsideMode() === 'inline' && this.shell.asideOpen(),\n );\n /* The pane is at the end of the line the navigation is not on. */\n private readonly side = computed<ExtentSide>(() =>\n this.shell.resolvedNavSide() === 'end' ? 'start' : 'end',\n );\n protected readonly current = computed(() => {\n const { max, min } = this.shell.asideBounds();\n return clamp(this.shell.asideExtent() ?? this.rest() ?? min, min, max);\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => this.gesture?.());\n afterNextRender(() => {\n const aside = this.shell.nodes.aside;\n if (aside === null) return;\n const read = () => {\n const rect = shellRect(this.shell.element);\n this.rest.set(rect === null ? undefined : aside.getBoundingClientRect().width / rect.width);\n };\n read();\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(read);\n observer.observe(aside);\n destroyRef.onDestroy(() => observer.disconnect());\n });\n }\n\n protected percent(value: number) {\n return Math.round(clamp(value, 0, 1) * 100);\n }\n\n private isRtl() {\n return getComputedStyle(this.native).direction === 'rtl';\n }\n\n private pointAt(event: PointerEvent, rect: ExtentRect) {\n return extentAtPoint({\n point: { x: event.clientX, y: event.clientY },\n rect,\n rtl: this.isRtl(),\n side: this.side(),\n });\n }\n\n protected pointerDown(event: PointerEvent) {\n if (event.defaultPrevented || event.button !== 0) return;\n const rect = shellRect(this.shell.element);\n if (rect === null) return;\n\n event.preventDefault();\n this.native.setPointerCapture(event.pointerId);\n this.native.focus();\n this.press = {\n moved: false,\n offset: this.current() - this.pointAt(event, rect),\n x: event.clientX,\n };\n }\n\n protected pointerMove(event: PointerEvent) {\n const held = this.press;\n if (held === null) return;\n const rect = shellRect(this.shell.element);\n if (rect === null) return;\n\n if (!held.moved) {\n if (Math.abs(event.clientX - held.x) < TAP_SLOP_PX) return;\n held.moved = true;\n /* The cursor has to survive the pointer leaving the separator, and a drag\n across the page must not select the text under it. Both are the\n document's and neither is reachable from the family's own stylesheet. */\n this.gesture?.();\n this.gesture = holdResizeGesture(this.native.ownerDocument, 'col-resize');\n this.shell.asideDragging.set(true);\n }\n this.shell.requestAsideExtent(this.pointAt(event, rect) + held.offset, 'pointer', event);\n }\n\n protected endDrag(event: PointerEvent) {\n const held = this.press;\n if (held === null) return;\n this.press = null;\n if (this.native.hasPointerCapture(event.pointerId)) {\n this.native.releasePointerCapture(event.pointerId);\n }\n if (!held.moved) return;\n this.gesture?.();\n this.gesture = null;\n this.shell.asideDragging.set(false);\n }\n\n protected keyDown(event: KeyboardEvent) {\n if (event.defaultPrevented) return;\n const side = this.side();\n const { max, min } = this.shell.asideBounds();\n const atStart = anchorsAtStart(side, this.isRtl());\n\n /* A distance and not a proportion, converted against the shell measured at\n the moment of the press. */\n const by = (direction: 1 | -1) => {\n event.preventDefault();\n const rect = shellRect(this.shell.element);\n const amount =\n rect === null\n ? 0\n : stepAmountFromPixels({\n pixels: event.shiftKey ? EXTENT_LARGE_STEP_PX : EXTENT_STEP_PX,\n rect,\n side,\n });\n this.shell.requestAsideExtent(\n stepExtent({ amount, direction, fraction: this.current(), max, min }),\n 'keyboard',\n event,\n );\n };\n\n switch (event.key) {\n case 'ArrowLeft':\n return by(atStart ? -1 : 1);\n case 'ArrowRight':\n return by(atStart ? 1 : -1);\n case 'Home':\n event.preventDefault();\n return this.shell.requestAsideExtent(min, 'keyboard', event);\n case 'End':\n event.preventDefault();\n return this.shell.requestAsideExtent(max, 'keyboard', event);\n default:\n return undefined;\n }\n }\n}\n\n/** The pinned bottom: the actions that close the task the pane holds. */\n@Directive({\n selector: '[slAppShellAsideFooter]',\n standalone: true,\n exportAs: 'slAppShellAsideFooter',\n host: { 'data-part': 'aside-footer' },\n})\nexport class SlAppShellAsideFooter {}\n\n/**\n * The pane's disclosure control, with the navigation control's wiring: it can\n * stand in the pane's own header, in the banner's actions, or anywhere else,\n * and there is still exactly one control carrying the pane's state.\n */\n@Component({\n selector: 'button[slAppShellAsideToggle]',\n standalone: true,\n exportAs: 'slAppShellAsideToggle',\n imports: [SlGlyph, SlIcon],\n /* The panel mark says what a press does, unless the consumer wrote content of their own. */\n template: `<ng-content\n ><span slIcon\n ><svg slGlyph [name]=\"shell.asideOpen() ? 'panel-close' : 'panel-open'\"></svg></span\n ></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'data-part': 'aside-toggle',\n type: 'button',\n '[attr.id]': 'elementId',\n '[attr.aria-controls]': 'controls',\n '[attr.aria-expanded]': 'shell.asideOpen()',\n '[attr.aria-label]': 'label()',\n '(click)': 'press($event)',\n },\n})\nexport class SlAppShellAsideToggle {\n protected readonly shell = attach('asideToggle');\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenControls = inject(new HostAttributeToken('aria-controls'), {\n optional: true,\n });\n\n protected readonly elementId = this.writtenId ?? this.shell.asideToggleId;\n protected readonly controls = this.writtenControls ?? this.shell.asideId;\n protected readonly label = computed(() => {\n if (this.written !== null) return this.written;\n return this.shell.asideOpen() ? this.shell.t('closeAside') : this.shell.t('openAside');\n });\n\n protected press(event: MouseEvent) {\n const reason: AppShellAsideOpenReason = event.detail === 0 ? 'keyboard' : 'pointer';\n this.shell.requestAside(!this.shell.asideOpen(), reason, event);\n }\n}\n\n/** The `contentinfo` landmark: the application's footer, not the page's action bar. */\n@Directive({\n selector: 'footer[slAppShellFooter]',\n standalone: true,\n exportAs: 'slAppShellFooter',\n host: { 'data-part': 'footer' },\n})\nexport class SlAppShellFooter {\n constructor() {\n attach('footer');\n }\n}\n\n/**\n * The disclosure control, by the APG's Disclosure pattern: a `button` carrying\n * `aria-expanded` and `aria-controls`, which `Enter` and `Space` activate\n * natively. It takes its wiring from the shell rather than from its position,\n * so it can stand in the banner, in the navigation's own footer, or anywhere\n * else, and there is still exactly one control carrying the state.\n */\n@Component({\n selector: 'button[slAppShellNavToggle]',\n standalone: true,\n exportAs: 'slAppShellNavToggle',\n imports: [SlGlyph, SlIcon],\n /* The panel mark says what a press does, unless the consumer wrote content of their own. */\n template: `<ng-content\n ><span slIcon><svg slGlyph [name]=\"shell.navOpen() ? 'panel-close' : 'panel-open'\"></svg></span\n ></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'data-part': 'nav-toggle',\n type: 'button',\n '[attr.id]': 'elementId',\n '[attr.aria-controls]': 'controls',\n '[attr.aria-expanded]': 'shell.navOpen()',\n '[attr.aria-label]': 'label()',\n '(click)': 'press($event)',\n },\n})\nexport class SlAppShellNavToggle {\n protected readonly shell = attach('toggle');\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenControls = inject(new HostAttributeToken('aria-controls'), {\n optional: true,\n });\n\n protected readonly elementId = this.writtenId ?? this.shell.toggleId;\n protected readonly controls = this.writtenControls ?? this.shell.navId;\n protected readonly label = computed(() => {\n if (this.written !== null) return this.written;\n return this.shell.navOpen() ? this.shell.t('close') : this.shell.t('open');\n });\n\n protected press(event: MouseEvent) {\n /* A click synthesised by the keyboard reports no detail; a real one does.\n The reason is the difference between a product that persists a press and\n one that cannot tell which gesture it saw. */\n const reason: AppShellOpenReason = event.detail === 0 ? 'keyboard' : 'pointer';\n this.shell.request(!this.shell.navOpen(), reason, event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slotted-angular-app-shell.mjs","sources":["../../app-shell/src/app-shell-defaults.ts","../../app-shell/src/app-shell.ts","../../app-shell/src/slotted-angular-app-shell.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/**\n * Which region reaches the corner of the screen. `banner` spans the full width\n * and the navigation starts below it; `nav` spans the full height and the\n * banner starts beside it; `main` spans the navigation the full height as well\n * and puts the banner in the plane of the content, inside the card that holds\n * it. The grid changes where a region is drawn and never where it is written,\n * so the focus order is the same under all three.\n */\nexport type AppShellPrimary = 'banner' | 'nav' | 'main';\n\n/**\n * Which surface carries which plane, for every region at once. `inset` paints\n * the frame with the sunken ground and makes the content a raised card;\n * `flush` runs every region edge to edge, separated at its seams; `floating`\n * makes the navigation a card as well as the content; `panel` holds the\n * navigation, the content and the pane in one card, the banner on the frame\n * above it.\n */\nexport type AppShellCanvas = 'inset' | 'flush' | 'floating' | 'panel';\n\n/**\n * What draws a seam where two regions touch without a gutter. `rule` is a\n * line; `tone` is a ground of its own on the chrome regions, 0.036 OKLab L\n * from the surface, with the subtle tones inside them recomputed from it.\n */\nexport type AppShellSeparation = 'rule' | 'tone';\n\n/**\n * How the navigation region occupies space. `auto` is `inline` at or above the\n * shell's own `APP_SHELL_OVERLAY_AT` inline size and `overlay` below it.\n */\nexport type AppShellNavMode = 'inline' | 'overlay' | 'auto';\n\n/** How the secondary pane occupies space: the navigation's pair, resolved on the same width. */\nexport type AppShellAsideMode = 'inline' | 'overlay' | 'auto';\n\n/** Which end of the line the navigation region sits at. Logical, so the layout mirrors. */\nexport type AppShellNavSide = 'start' | 'end';\n\n/** What a closed inline navigation leaves behind. */\nexport type AppShellCollapsedTo = 'rail' | 'hidden';\n\n/** A step on the region's own width scale. */\nexport type AppShellSize = 'sm' | 'md' | 'lg';\n\n/** Who scrolls: the content column, or the document. */\nexport type AppShellScroll = 'content' | 'document';\n\n/** Whether a dismissal source closes the overlaid navigation. */\nexport type AppShellDismissPolicy = 'close' | 'none';\n\n/** Why the navigation region opened or closed. */\nexport type AppShellOpenReason =\n | 'pointer'\n | 'keyboard'\n | 'escape'\n | 'outsidePress'\n | 'back'\n | 'select'\n | 'resize'\n | 'programmatic';\n\n/** Why the secondary pane opened or closed. No `select`: a pane has no destinations. */\nexport type AppShellAsideOpenReason = Exclude<AppShellOpenReason, 'select'>;\n\n/** Why the pane's extent moved. */\nexport type AppShellAsideExtentReason = 'pointer' | 'keyboard' | 'programmatic';\n\n/**\n * The request the shell makes before the pane's extent moves. `undefined` is\n * the pane back on the measure its size step gives it.\n */\nexport interface AppShellAsideExtentRequest {\n readonly value: number | undefined;\n readonly previous: number | undefined;\n readonly reason: AppShellAsideExtentReason;\n readonly source?: unknown;\n readonly cancelled: boolean;\n cancel(): void;\n}\n\n/** The request the shell makes before the region moves. Cancel it and nothing commits. */\nexport interface AppShellOpenRequest {\n readonly value: boolean;\n readonly previous: boolean;\n readonly reason: AppShellOpenReason;\n readonly source?: unknown;\n readonly cancelled: boolean;\n cancel(): void;\n}\n\nexport interface AppShellDefaults {\n asideMode: AppShellAsideMode;\n asideSize: AppShellSize;\n canvas: AppShellCanvas;\n closeOnNavigate: boolean;\n collapsedTo: AppShellCollapsedTo;\n escape: AppShellDismissPolicy;\n /** The platform's way back — a phone's gesture, a browser's button — closes a modal layer. */\n back: AppShellDismissPolicy;\n modal: boolean;\n navMode: AppShellNavMode;\n navSide: AppShellNavSide;\n navSize: AppShellSize;\n outsidePress: AppShellDismissPolicy;\n primary: AppShellPrimary;\n scroll: AppShellScroll;\n separation: AppShellSeparation;\n}\n\nconst FALLBACK: AppShellDefaults = {\n asideMode: 'auto',\n asideSize: 'md',\n canvas: 'inset',\n closeOnNavigate: true,\n collapsedTo: 'rail',\n escape: 'close',\n back: 'close',\n modal: true,\n navMode: 'auto',\n navSide: 'start',\n navSize: 'md',\n outsidePress: 'close',\n primary: 'banner',\n scroll: 'content',\n separation: 'rule',\n};\n\nexport const APP_SHELL_DEFAULTS = new InjectionToken<AppShellDefaults>(\n 'slotted app shell defaults',\n {\n providedIn: 'root',\n factory: () => FALLBACK,\n },\n);\n\n/**\n * An application decides once how its shell is arranged — which region reaches\n * the corner, which plane the content sits on, how the navigation behaves when\n * the space runs out — rather than repeating the same inputs on every route. A\n * shell that states any of them itself still wins. Its words come from the\n * language in force (`provideSlotted`).\n */\nexport function provideAppShellDefaults(defaults: Partial<AppShellDefaults>) {\n return {\n provide: APP_SHELL_DEFAULTS,\n useFactory: (): AppShellDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a shell renders as here, before it states anything of its own. */\nexport function injectAppShellDefaults(): AppShellDefaults {\n return inject(APP_SHELL_DEFAULTS);\n}\n","import { createDismissableLayer } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport {\n anchorsAtStart,\n EXTENT_LARGE_STEP_PX,\n EXTENT_STEP_PX,\n extentAtPoint,\n holdResizeGesture,\n stepAmountFromPixels,\n stepExtent,\n} from '@slotted/core/extent';\nimport type { ExtentRect, ExtentSide } from '@slotted/core/extent';\nimport { createFocusScope, focusTarget } from '@slotted/core/focus';\nimport { appShellMessages, type AppShellMessages, type PartialMessages } from '@slotted/core/i18n';\nimport { clamp, COMPACT_BELOW, createWidthGate } from '@slotted/core/measure';\nimport { setPortalContainer } from '@slotted/core/portal';\nimport { createPresence } from '@slotted/core/presence';\nimport type { PresenceHandle, PresenceStatus } from '@slotted/core/presence';\nimport { createControllable } from '@slotted/core/state';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n injectProgressIndicatorDefaults,\n SlProgressBar,\n type ProgressSize,\n type ProgressTone,\n} from '@slotted/angular/progress-indicator';\n\nimport { injectAppShellDefaults } from './app-shell-defaults';\nimport type {\n AppShellAsideExtentReason,\n AppShellAsideExtentRequest,\n AppShellAsideMode,\n AppShellAsideOpenReason,\n AppShellCanvas,\n AppShellCollapsedTo,\n AppShellDismissPolicy,\n AppShellNavMode,\n AppShellNavSide,\n AppShellOpenReason,\n AppShellOpenRequest,\n AppShellPrimary,\n AppShellScroll,\n AppShellSeparation,\n AppShellSize,\n} from './app-shell-defaults';\n\nexport type {\n AppShellAsideExtentReason,\n AppShellAsideExtentRequest,\n AppShellAsideMode,\n AppShellAsideOpenReason,\n AppShellCanvas,\n AppShellCollapsedTo,\n AppShellDefaults,\n AppShellDismissPolicy,\n AppShellNavMode,\n AppShellNavSide,\n AppShellOpenReason,\n AppShellOpenRequest,\n AppShellPrimary,\n AppShellScroll,\n AppShellSeparation,\n AppShellSize,\n} from './app-shell-defaults';\n\n/**\n * The inline size the navigation stops being a column at. The stylesheet needs\n * it literal — `@container (inline-size: var(--x))` is invalid CSS — and the\n * script needs it to know whether `Escape`, the focus scope and `inert` are in\n * play. It is the limit of the compact size class, `COMPACT_BELOW`;\n * `specs/components/app-shell/contract.json` states it once, and\n * `app-shell.styles.test.mjs` compares the stylesheet's own condition to it.\n */\nexport const APP_SHELL_OVERLAY_AT = COMPACT_BELOW;\n\nlet nextId = 0;\n\n/**\n * The outer frame of a route: the regions that do not change when the content\n * does.\n *\n * **The layer is composed from `packages/core` and rewritten nowhere.**\n * `measure` answers the shell's own inline size, `dismissable-layer` owns\n * `Escape`, the outside press and the single stack, `focus` contains the\n * keyboard and gives it back to the toggle, and `portal` is told once that this\n * shell is where an overlay belongs.\n *\n * **The element is the consumer's.** `<div slAppShell>` is the frame and the\n * directive adds the grid, the skip links, the veil and the portal root around\n * whatever is projected into it.\n */\n@Component({\n selector: '[slAppShell]',\n standalone: true,\n exportAs: 'slAppShell',\n template: `@if (skipTargets().length > 0) {\n <div data-part=\"skip\">\n @for (target of skipTargets(); track target.href) {\n <a [href]=\"'#' + target.href\" (click)=\"target.href === mainId && focusMain()\">{{\n target.label\n }}</a>\n }\n </div>\n }\n <ng-content />\n @if (veilStatus() !== 'unmounted') {\n <div data-part=\"scrim\" [attr.data-status]=\"veilStatus()\" #scrim></div>\n }\n <div data-part=\"layer\" #layer></div>`,\n styleUrl: '../../../styles/src/app-shell/app-shell.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'app-shell',\n 'data-part': 'root',\n '[attr.data-primary]': 'resolvedPrimary()',\n '[attr.data-canvas]': 'resolvedCanvas()',\n '[attr.data-nav-mode]': 'resolvedMode()',\n '[attr.data-aside-mode]': 'resolvedAsideMode()',\n '[attr.data-nav-side]': 'resolvedNavSide()',\n '[attr.data-nav-size]': 'resolvedNavSize()',\n '[attr.data-aside-size]': 'resolvedAsideSize()',\n '[attr.data-collapsed-to]': 'resolvedCollapsedTo()',\n '[attr.data-scroll]': 'resolvedScroll()',\n '[attr.data-separation]': 'resolvedSeparation()',\n '[attr.data-open]': \"navShownOpen() ? '' : null\",\n '[attr.data-dragging]': \"asideDragging() ? '' : null\",\n '(click)': 'onClick($event)',\n },\n})\nexport class SlAppShell {\n /** Whether the navigation region is showing its full panel. Two-way. */\n readonly navOpen = model<boolean>(true);\n /** Whether the secondary pane is showing. Two-way. */\n readonly asideOpen = model<boolean>(true);\n /**\n * How much of the shell's inline size the pane takes as a column, in\n * `[0, 1]`. Unset means `asideSize` decides. Two-way.\n */\n readonly asideExtent = model<number | undefined>(undefined);\n /** The smallest extent the reader may give the pane. */\n readonly minAsideExtent = input(0.16);\n /** The largest extent the reader may give the pane. */\n readonly maxAsideExtent = input(0.6);\n\n /** Defaults to the provider, then `banner`. */\n readonly primary = input<AppShellPrimary | undefined>(undefined);\n /** Defaults to the provider, then `inset`. */\n readonly canvas = input<AppShellCanvas | undefined>(undefined);\n /** Defaults to the provider, then `auto`. */\n readonly navMode = input<AppShellNavMode | undefined>(undefined);\n /** Defaults to the provider, then `start`. */\n readonly navSide = input<AppShellNavSide | undefined>(undefined);\n /** Defaults to the provider, then `md`. */\n readonly navSize = input<AppShellSize | undefined>(undefined);\n /** Defaults to the provider, then `auto`. */\n readonly asideMode = input<AppShellAsideMode | undefined>(undefined);\n /** Defaults to the provider, then `md`. */\n readonly asideSize = input<AppShellSize | undefined>(undefined);\n /** Defaults to the provider, then `rail`. */\n readonly collapsedTo = input<AppShellCollapsedTo | undefined>(undefined);\n /** Defaults to the provider, then `content`. */\n readonly scroll = input<AppShellScroll | undefined>(undefined);\n /** What draws a seam where two regions touch without a gutter. Defaults to the provider, then `rule`. */\n readonly separation = input<AppShellSeparation | undefined>(undefined);\n /** Defaults to the provider, then `true`. */\n readonly modal = input<boolean | undefined>(undefined, { transform: optionalBoolean });\n /** Defaults to the provider, then `close`. */\n readonly escape = input<AppShellDismissPolicy | undefined>(undefined);\n /** Defaults to the provider, then `close`. */\n readonly outsidePress = input<AppShellDismissPolicy | undefined>(undefined);\n /**\n * The platform's way back — a phone's gesture, a browser's button — closes\n * a modal layer instead of leaving the page. Defaults to the provider, then `close`.\n */\n readonly back = input<AppShellDismissPolicy | undefined>(undefined);\n /** Defaults to the provider, then `true`. */\n readonly closeOnNavigate = input<boolean | undefined>(undefined, { transform: optionalBoolean });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * landmarks' names, the toggles and the skip links. A static `aria-label`\n * on a part still wins.\n */\n readonly messages = input<PartialMessages<AppShellMessages> | undefined>(undefined);\n\n /**\n * The request, before anything commits. `reason` is what tells the reader's\n * own choice from the one the layout forced, which is the line\n * `docs/component-features.md` §15 asks for when it says sidebar persistence\n * belongs to the product.\n */\n readonly navOpenChangeRequest = output<AppShellOpenRequest>();\n /** The pane's request, with the same shape and the reasons a pane can carry. */\n readonly asideOpenChangeRequest = output<AppShellOpenRequest>();\n /** The request before the pane's extent moves, already held inside the limits. */\n readonly asideExtentChangeRequest = output<AppShellAsideExtentRequest>();\n\n private readonly defaults = injectAppShellDefaults();\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n private readonly narrow = signal<boolean | undefined>(undefined);\n /** Whether a pointer is moving the pane's edge, which the host reports as `data-dragging`. */\n readonly asideDragging = signal(false);\n /** The limits, ordered and inside `[0, 1]`. */\n readonly asideBounds = computed(() => {\n const min = clamp(this.minAsideExtent(), 0, 1);\n return { min, max: clamp(this.maxAsideExtent(), min, 1) };\n });\n\n /**\n * Stable ids, and not `crypto.randomUUID()`: a server render and the\n * hydration that follows it have to produce the same string, and a random one\n * produces two.\n */\n private readonly seq = (nextId += 1);\n readonly navId = `slotted-app-shell-${this.seq}-nav`;\n readonly mainId = `slotted-app-shell-${this.seq}-main`;\n readonly asideId = `slotted-app-shell-${this.seq}-aside`;\n readonly toggleId = `slotted-app-shell-${this.seq}-toggle`;\n readonly asideToggleId = `slotted-app-shell-${this.seq}-aside-toggle`;\n\n /** The nodes the layer, the focus scope and the `inert` pass need. */\n readonly nodes: {\n aside: HTMLElement | null;\n asideToggle: HTMLElement | null;\n banner: HTMLElement | null;\n footer: HTMLElement | null;\n main: HTMLElement | null;\n nav: HTMLElement | null;\n toggle: HTMLElement | null;\n } = {\n aside: null,\n asideToggle: null,\n banner: null,\n footer: null,\n main: null,\n nav: null,\n toggle: null,\n };\n\n private readonly regions = signal<{ nav: boolean; main: boolean; aside: boolean }>({\n nav: false,\n main: false,\n aside: false,\n });\n\n readonly resolvedPrimary = computed(() => this.primary() ?? this.defaults.primary);\n readonly resolvedCanvas = computed(() => this.canvas() ?? this.defaults.canvas);\n readonly resolvedNavSide = computed(() => this.navSide() ?? this.defaults.navSide);\n readonly resolvedNavSize = computed(() => this.navSize() ?? this.defaults.navSize);\n readonly resolvedAsideSize = computed(() => this.asideSize() ?? this.defaults.asideSize);\n private readonly wantedAsideMode = computed(() => this.asideMode() ?? this.defaults.asideMode);\n /** The pane's mode, resolved the same way against the same width. */\n readonly resolvedAsideMode = computed<'inline' | 'overlay' | null>(() => {\n const wanted = this.wantedAsideMode();\n if (wanted !== 'auto') return wanted;\n const narrow = this.narrow();\n return narrow === undefined ? null : narrow ? 'overlay' : 'inline';\n });\n readonly asideOverlay = computed(\n () => this.resolvedAsideMode() === 'overlay' && this.asideOpen() && this.regions().aside,\n );\n readonly resolvedCollapsedTo = computed(() => this.collapsedTo() ?? this.defaults.collapsedTo);\n readonly resolvedScroll = computed(() => this.scroll() ?? this.defaults.scroll);\n readonly resolvedSeparation = computed(() => this.separation() ?? this.defaults.separation);\n readonly resolvedModal = computed(() => this.modal() ?? this.defaults.modal);\n readonly resolvedEscape = computed(() => this.escape() ?? this.defaults.escape);\n readonly resolvedBack = computed(() => this.back() ?? this.defaults.back);\n readonly resolvedOutsidePress = computed(() => this.outsidePress() ?? this.defaults.outsidePress);\n readonly resolvedCloseOnNavigate = computed(\n () => this.closeOnNavigate() ?? this.defaults.closeOnNavigate,\n );\n /** The family's words in the language in force, with this shell's `messages` laid over them. */\n readonly t = injectMessages(appShellMessages, this.messages);\n /** Whether the bar on the content's edge is painted, which `main` reports as `aria-busy`. */\n readonly busy = signal(false);\n\n private readonly wantedMode = computed(() => this.navMode() ?? this.defaults.navMode);\n\n /**\n * `null` until the gate has measured, which is what keeps `data-nav-mode` off\n * the host through a server render: below the breakpoint the stylesheet shows\n * the overlaid panel only under `[data-nav-mode='overlay'][data-open]`, so the\n * frame before hydration draws the narrow shell closed.\n */\n readonly resolvedMode = computed<'inline' | 'overlay' | null>(() => {\n const wanted = this.wantedMode();\n if (wanted !== 'auto') return wanted;\n const narrow = this.narrow();\n return narrow === undefined ? null : narrow ? 'overlay' : 'inline';\n });\n\n /**\n * A region nobody rendered has no open state to draw: no `data-open`, no\n * layer and no veil. The regions register in their constructors, so the\n * first render already knows which of them are written.\n */\n readonly navShownOpen = computed(() => this.navOpen() && this.regions().nav);\n readonly overlay = computed(() => this.resolvedMode() === 'overlay' && this.navShownOpen());\n\n /**\n * The veil has a presence of its own, as a dialog's backdrop does. The\n * stylesheet fades it in from `entering` and out through `exiting`, and a\n * veil mounted straight at `open` gave that transition no closed style to\n * start from: it appeared in one frame beside a panel that took two hundred\n * milliseconds to arrive, and left the same way. One presence for both\n * layers, because there is one veil: with both regions overlaid and both\n * open it stays, and it leaves when the last of them does.\n */\n private readonly veil = computed(\n () => (this.overlay() || this.asideOverlay()) && this.resolvedModal(),\n );\n protected readonly veilStatus = signal<PresenceStatus>('unmounted');\n private readonly veilRef = viewChild<ElementRef<HTMLElement>>('scrim');\n /** Created on the first resolved value, so a veil the template opens with does not fade in. */\n private veilPresence: PresenceHandle | null = null;\n\n protected readonly skipTargets = computed(() => {\n const regions = this.regions();\n const targets: { href: string; label: string }[] = [];\n if (regions.main) targets.push({ href: this.mainId, label: this.t('skipToMain') });\n if (regions.nav) targets.push({ href: this.navId, label: this.t('skipToNav') });\n /* A link to a pane the reader closed is a dead destination. */\n if (regions.aside && this.asideOpen()) {\n targets.push({ href: this.asideId, label: this.t('skipToAside') });\n }\n return targets;\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n effect(() => {\n const veil = this.veil();\n if (this.veilPresence === null) {\n this.veilPresence = createPresence({\n present: veil,\n onStatusChange: (next) => this.veilStatus.set(next),\n });\n this.veilStatus.set(this.veilPresence.status);\n return;\n }\n this.veilPresence.sync(veil);\n });\n effect(() => {\n this.veilPresence?.setNode(this.veilRef()?.nativeElement ?? null);\n });\n destroyRef.onDestroy(() => this.veilPresence?.destroy());\n\n afterNextRender(() => {\n const layer = this.host.querySelector<HTMLElement>(':scope > [data-part=\"layer\"]');\n if (layer !== null) {\n setPortalContainer(layer);\n destroyRef.onDestroy(() => setPortalContainer(null, layer.ownerDocument));\n }\n\n /* The shell answers its own inline size and not the window's, which is\n what makes a shell inside a splitter, a preview frame or a Storybook\n stage behave like the narrow window it is the width of. */\n if (typeof ResizeObserver === 'undefined') return;\n const gate = createWidthGate(this.host, {\n at: APP_SHELL_OVERLAY_AT,\n onChange: (narrow) => this.narrow.set(narrow),\n });\n this.narrow.set(gate.narrow());\n destroyRef.onDestroy(() => gate.destroy());\n });\n\n /**\n * Crossing into the overlaid mode with the region open closes it, and says\n * `resize`. A product persisting the reader's own choice writes\n * `if (reason !== 'resize') persist(next)` and keeps the wide preference\n * through every narrow window the reader ever opens.\n */\n /* `undefined` until the first resolved mode is seen: a mode *forced* to\n overlay is the region's starting point, not a crossing, and the first\n run closed a region the template had just opened. Only a mode the width\n decided — `auto` resolving narrow — is a crossing on first sight. */\n /* Crossing back out restores what the crossing in closed, and says\n `resize` again. The flag records only a close the width made: a region\n the reader closed while wide stays closed through a narrow window. */\n let wasOverlay: boolean | undefined;\n let closedByResize = false;\n effect(() => {\n const mode = this.resolvedMode();\n if (mode === null) return;\n const overlay = mode === 'overlay';\n const first = wasOverlay === undefined;\n const entered = overlay && (first ? this.wantedMode() === 'auto' : !wasOverlay);\n const left = !overlay && wasOverlay === true;\n wasOverlay = overlay;\n if (entered) {\n queueMicrotask(() => {\n if (!this.navOpen()) return;\n closedByResize = true;\n this.request(false, 'resize', undefined);\n });\n } else if (left && closedByResize) {\n closedByResize = false;\n queueMicrotask(() => {\n if (!this.navOpen()) this.request(true, 'resize', undefined);\n });\n }\n });\n let asideWasOverlay: boolean | undefined;\n let asideClosedByResize = false;\n effect(() => {\n const mode = this.resolvedAsideMode();\n if (mode === null) return;\n const overlay = mode === 'overlay';\n const first = asideWasOverlay === undefined;\n const entered = overlay && (first ? this.wantedAsideMode() === 'auto' : !asideWasOverlay);\n const left = !overlay && asideWasOverlay === true;\n asideWasOverlay = overlay;\n if (entered) {\n queueMicrotask(() => {\n if (!this.asideOpen()) return;\n asideClosedByResize = true;\n this.requestAside(false, 'resize', undefined);\n });\n } else if (left && asideClosedByResize) {\n asideClosedByResize = false;\n queueMicrotask(() => {\n if (!this.asideOpen()) this.requestAside(true, 'resize', undefined);\n });\n }\n });\n\n /**\n * The overlaid region is a dismissable layer with a focus scope over it.\n * `@slotted/core/dismissable-layer` inerts every sibling of the layer while\n * it is modal, which is the whole of the modal contract: the reader is in\n * the panel, and the ways out are `Escape`, the veil, a destination, and\n * whatever control the consumer put inside the panel. The toggle is inert\n * with the rest of the shell, exactly as a dialog's trigger is, and is\n * registered as a branch so a press on it is never read as a press outside.\n *\n * No surveyed implementation inerts anything: Vaadin and PatternFly draw\n * the veil and leave what is under it operable.\n */\n /**\n * One layer per region, and the same three modules for both: the pane's\n * layer is the navigation's with the region, the trigger and the request\n * swapped. `@slotted/core/dismissable-layer` keeps one stack, so with both\n * open — only possible with both modes forced — `Escape` reaches the topmost.\n */\n const raise = (\n open: () => boolean,\n panel: () => HTMLElement | null,\n trigger: () => HTMLElement | null,\n close: (reason: AppShellAsideOpenReason, source: unknown) => void,\n ) => {\n let layer: DismissableLayerHandle | null = null;\n let release: (() => void) | null = null;\n effect(() => {\n const isOpen = open();\n const modal = this.resolvedModal();\n const escape = this.resolvedEscape();\n const outsidePress = this.resolvedOutsidePress();\n /* A history entry is a modal layer's: a layer the page stays reachable\n under has no claim on the way back. */\n const back = modal && this.resolvedBack() === 'close';\n\n release?.();\n release = null;\n layer?.destroy();\n layer = null;\n if (!isOpen) return;\n\n queueMicrotask(() => {\n const node = panel();\n if (node === null || !open()) return;\n\n const control = trigger();\n layer = createDismissableLayer(node, {\n ...(control === null ? {} : { branches: [control] }),\n back,\n content: node,\n escape: escape === 'close',\n modal,\n onDismiss: (request) => {\n if (request.reason === 'outsidePress' && outsidePress === 'none') {\n return request.cancel();\n }\n close(request.reason as AppShellAsideOpenReason, request.source);\n },\n outsidePress: outsidePress === 'close',\n outsidePressEvent: 'click',\n });\n\n const scope = createFocusScope(node, {\n contain: modal,\n initial: 'first',\n ...(control === null ? {} : { restore: () => control }),\n });\n scope.enter();\n\n release = () => scope.destroy();\n });\n });\n destroyRef.onDestroy(() => {\n release?.();\n layer?.destroy();\n });\n };\n\n raise(\n () => this.overlay(),\n () => this.nodes.nav,\n () => this.nodes.toggle,\n (reason, source) => this.request(false, reason, source),\n );\n raise(\n () => this.asideOverlay(),\n () => this.nodes.aside,\n () => this.nodes.asideToggle,\n (reason, source) => this.requestAside(false, reason, source),\n );\n }\n\n /** The root, which the pane's extent is a fraction of. */\n get element(): HTMLElement {\n return this.host;\n }\n\n /**\n * Asks to move the pane's extent, held inside the limits. `undefined`\n * travels whole: it is the pane back on its size step.\n */\n requestAsideExtent(next: number | undefined, reason: AppShellAsideExtentReason, source: unknown) {\n const { max, min } = this.asideBounds();\n const wanted = next === undefined ? undefined : clamp(next, min, max);\n if (wanted === this.asideExtent()) return;\n\n let cancelled = false;\n const state = createControllable<number | undefined>({\n initial: this.asideExtent(),\n onRequest: (raw) => {\n cancelled = raw.cancelled;\n this.asideExtentChangeRequest.emit({\n cancel: () => raw.cancel(),\n get cancelled() {\n return raw.cancelled;\n },\n previous: raw.previous,\n reason,\n source: raw.source,\n value: raw.value,\n });\n },\n });\n\n if (!state.request(wanted, reason, source) || cancelled) return;\n this.asideExtent.set(wanted);\n }\n\n /** A region says it exists, so a skip link is never written to a target nobody rendered. */\n registerRegion(region: 'nav' | 'main' | 'aside'): () => void {\n this.regions.update((current) => ({ ...current, [region]: true }));\n return () => this.regions.update((current) => ({ ...current, [region]: false }));\n }\n\n /** Asks to move the region, carrying the reason and the originating event. */\n request(next: boolean, reason: AppShellOpenReason, source: unknown) {\n if (next === this.navOpen()) return;\n\n let cancelled = false;\n const state = createControllable<boolean>({\n initial: this.navOpen(),\n onRequest: (raw) => {\n cancelled = raw.cancelled;\n this.navOpenChangeRequest.emit({\n cancel: () => raw.cancel(),\n get cancelled() {\n return raw.cancelled;\n },\n previous: raw.previous,\n reason,\n source: raw.source,\n value: raw.value,\n });\n },\n });\n\n if (!state.request(next, reason, source) || cancelled) return;\n this.navOpen.set(next);\n }\n\n /** Asks to move the pane, carrying the reason and the originating event. */\n requestAside(next: boolean, reason: AppShellAsideOpenReason, source: unknown) {\n if (next === this.asideOpen()) return;\n\n let cancelled = false;\n const state = createControllable<boolean>({\n initial: this.asideOpen(),\n onRequest: (raw) => {\n cancelled = raw.cancelled;\n this.asideOpenChangeRequest.emit({\n cancel: () => raw.cancel(),\n get cancelled() {\n return raw.cancelled;\n },\n previous: raw.previous,\n reason,\n source: raw.source,\n value: raw.value,\n });\n },\n });\n\n if (!state.request(next, reason, source) || cancelled) return;\n this.asideOpen.set(next);\n }\n\n /** Asks to show the pane, with the reason `programmatic`. */\n openAside() {\n this.requestAside(true, 'programmatic', undefined);\n }\n /** Asks to hide it, with the reason `programmatic`. */\n closeAside() {\n this.requestAside(false, 'programmatic', undefined);\n }\n\n /** Asks to show the region, with the reason `programmatic`. */\n openNav() {\n this.request(true, 'programmatic', undefined);\n }\n /** Asks to hide it, with the reason `programmatic`. */\n closeNav() {\n this.request(false, 'programmatic', undefined);\n }\n /** Moves focus into the content region, which is where a skip link sends it. */\n focusMain() {\n if (this.nodes.main) focusTarget(this.nodes.main);\n }\n\n /**\n * A click that lands on an `a[href]` inside the region asks to close, in the\n * overlaid mode only. Vaadin and PatternFly both do it, and without it a\n * phone costs two taps per destination. `defaultPrevented` is no refusal\n * here: a client-side router prevents the native navigation of every link it\n * routes. A disabled destination (`aria-disabled=\"true\"`) stays open; any\n * other refusal cancels the request.\n */\n protected onClick(event: MouseEvent) {\n if (!this.overlay() || !this.resolvedCloseOnNavigate()) return;\n const link = (event.target as Element | null)?.closest?.('a[href]');\n if (!link || this.nodes.nav?.contains(link) !== true) return;\n if (link.getAttribute('aria-disabled') === 'true') return;\n this.request(false, 'select', event);\n }\n}\n\nfunction optionalBoolean(value: unknown): boolean | undefined {\n return value === undefined ? undefined : booleanAttribute(value);\n}\n\n/** Attaches a region's element to the shell and takes it off again on destroy. */\nfunction attach(slot: 'aside' | 'asideToggle' | 'banner' | 'footer' | 'main' | 'nav' | 'toggle') {\n const shell = inject(SlAppShell);\n const node: HTMLElement = inject(ElementRef).nativeElement;\n shell.nodes[slot] = node;\n inject(DestroyRef).onDestroy(() => {\n if (shell.nodes[slot] === node) shell.nodes[slot] = null;\n });\n return shell;\n}\n\n/**\n * The `banner` landmark: a `header` in the context of the `body`, so it needs\n * no `role`.\n */\n@Directive({\n selector: 'header[slAppShellBanner]',\n standalone: true,\n exportAs: 'slAppShellBanner',\n host: { 'data-part': 'banner' },\n})\nexport class SlAppShellBanner {\n constructor() {\n attach('banner');\n }\n}\n\n/** The start cluster of the banner: the toggle, the mark, the name of the workspace. */\n@Directive({\n selector: '[slAppShellBrand]',\n standalone: true,\n exportAs: 'slAppShellBrand',\n host: { 'data-part': 'brand' },\n})\nexport class SlAppShellBrand {}\n\n/** The middle of the bar, and the one cluster that grows: a search, a trail, a route title. */\n@Directive({\n selector: '[slAppShellCentre]',\n standalone: true,\n exportAs: 'slAppShellCentre',\n host: { 'data-part': 'centre' },\n})\nexport class SlAppShellCentre {}\n\n/** The end cluster, pushed there by the space it takes. */\n@Directive({\n selector: '[slAppShellActions]',\n standalone: true,\n exportAs: 'slAppShellActions',\n host: { 'data-part': 'actions' },\n})\nexport class SlAppShellActions {}\n\n/**\n * The `navigation` landmark, and the one element all three modes share. A\n * document with more than one `navigation` needs a unique label on each, so\n * this one carries the family's unless the consumer wrote another.\n */\n@Directive({\n selector: 'nav[slAppShellNav]',\n standalone: true,\n exportAs: 'slAppShellNav',\n host: {\n 'data-part': 'nav',\n '[attr.id]': 'elementId',\n '[attr.aria-label]': 'label()',\n },\n})\nexport class SlAppShellNav {\n private readonly shell = attach('nav');\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n\n protected readonly elementId = this.writtenId ?? this.shell.navId;\n protected readonly label = computed(() => this.written ?? this.shell.t('nav'));\n\n constructor() {\n const remove = this.shell.registerRegion('nav');\n inject(DestroyRef).onDestroy(remove);\n }\n}\n\n/**\n * A strip of marks before the column: the first level of a two-level\n * navigation, inside the one navigation landmark and under its one open state.\n * Closed to `rail`, the region keeps this strip and lets the column go.\n */\n@Directive({\n selector: '[slAppShellNavRail]',\n standalone: true,\n exportAs: 'slAppShellNavRail',\n host: { 'data-part': 'nav-rail' },\n})\nexport class SlAppShellNavRail {}\n\n/** The pinned top of the navigation column. */\n@Directive({\n selector: '[slAppShellNavHeader]',\n standalone: true,\n exportAs: 'slAppShellNavHeader',\n host: { 'data-part': 'nav-header' },\n})\nexport class SlAppShellNavHeader {}\n\n/** The middle, and the only part of the column that scrolls. */\n@Directive({\n selector: '[slAppShellNavBody]',\n standalone: true,\n exportAs: 'slAppShellNavBody',\n host: { 'data-part': 'nav-body' },\n})\nexport class SlAppShellNavBody {}\n\n/** The pinned bottom: the account, the collapse control. */\n@Directive({\n selector: '[slAppShellNavFooter]',\n standalone: true,\n exportAs: 'slAppShellNavFooter',\n host: { 'data-part': 'nav-footer' },\n})\nexport class SlAppShellNavFooter {}\n\n/**\n * The `main` landmark, and the skip link's destination.\n *\n * It carries no `tabindex` of its own: the skip link and `focusMain()` write\n * `tabindex=\"-1\"` for the one focus they move (`focusTarget`), and the blur or\n * the next pointer press inside removes it. A `main` focusable all the time\n * takes the focus of every click on its text, and the next key draws the ring\n * around the page. A `tabindex` the consumer writes stays.\n */\n@Directive({\n selector: 'main[slAppShellMain]',\n standalone: true,\n exportAs: 'slAppShellMain',\n host: {\n 'data-part': 'main',\n '[attr.id]': 'elementId',\n '[attr.aria-busy]': 'busy()',\n },\n})\nexport class SlAppShellMain {\n private readonly shell = attach('main');\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n protected readonly elementId = this.writtenId ?? this.shell.mainId;\n /** The wait on this region's edge; an `aria-busy` the consumer wrote wins. */\n private readonly writtenBusy = inject(new HostAttributeToken('aria-busy'), { optional: true });\n protected readonly busy = computed(() => this.writtenBusy ?? (this.shell.busy() ? 'true' : null));\n\n constructor() {\n const remove = this.shell.registerRegion('main');\n inject(DestroyRef).onDestroy(remove);\n }\n}\n\n/**\n * The wait for the next page, on the line between the chrome and the content.\n * The element is the consumer's, anywhere inside the shell: the stylesheet\n * lays it over `main` in every arrangement as a frame, and it holds one bar\n * at `edge-start`. Where the line is — the card's border, the banner's seam —\n * is the stylesheet's to know, not the consumer's.\n *\n * `main` is busy for exactly as long as the bar is painted, which the bar\n * itself reports: not from the moment `loading` turns, because a fast answer\n * draws nothing, and not after the bar has gone. `size` defaults to `sm`,\n * `delay` to 200 and `minDuration` to 400 milliseconds; an input, then\n * `provideProgressIndicatorDefaults()`, wins.\n */\n@Component({\n selector: '[slAppShellProgress]',\n standalone: true,\n exportAs: 'slAppShellProgress',\n imports: [SlProgressBar],\n template: `<div\n slProgressBar\n placement=\"edge-start\"\n [buffer]=\"buffer()\"\n [delay]=\"delay() ?? defaults.delay ?? 200\"\n [label]=\"label() ?? shell.t('progress')\"\n [loading]=\"loading()\"\n [max]=\"max()\"\n [min]=\"min()\"\n [minDuration]=\"minDuration() ?? defaults.minDuration ?? 400\"\n [size]=\"size() ?? 'sm'\"\n [tone]=\"tone()\"\n [value]=\"value()\"\n [valueText]=\"valueText()\"\n (withdraw)=\"withdraw.emit()\"\n ></div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'progress' },\n})\nexport class SlAppShellProgress {\n protected readonly shell = inject(SlAppShell);\n protected readonly defaults = injectProgressIndicatorDefaults();\n\n readonly loading = input(true, { transform: booleanAttribute });\n readonly value = input<number | null | undefined>(undefined);\n readonly min = input<number | undefined>(undefined);\n readonly max = input<number | undefined>(undefined);\n readonly buffer = input<number | null | undefined>(undefined);\n readonly valueText = input<string | undefined>(undefined);\n readonly label = input<string | undefined>(undefined);\n readonly tone = input<ProgressTone | undefined>(undefined);\n readonly size = input<ProgressSize | undefined>(undefined);\n readonly delay = input<number | undefined>(undefined);\n readonly minDuration = input<number | undefined>(undefined);\n /** The bar was painted and has been withdrawn. */\n readonly withdraw = output<void>();\n\n private readonly bar = viewChild.required(SlProgressBar);\n\n constructor() {\n effect(() => this.shell.busy.set(this.bar().painted()));\n inject(DestroyRef).onDestroy(() => this.shell.busy.set(false));\n }\n}\n\n/**\n * The `complementary` landmark. It opens and closes the way the navigation\n * region does — a column beside the content or a layer over it, by\n * `asideMode` — and carries its own `data-open`, because the host's is the\n * navigation's and every selector written over it still reads the navigation.\n */\n@Directive({\n selector: 'aside[slAppShellAside]',\n standalone: true,\n exportAs: 'slAppShellAside',\n host: {\n 'data-part': 'aside',\n '[attr.id]': 'elementId',\n '[attr.aria-label]': 'label()',\n '[attr.data-open]': \"shell.asideOpen() ? '' : null\",\n '[style.--slotted-app-shell-aside-extent]': 'extentLength()',\n },\n})\nexport class SlAppShellAside {\n protected readonly shell = attach('aside');\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n protected readonly elementId = this.writtenId ?? this.shell.asideId;\n protected readonly label = computed(() => this.written ?? this.shell.t('aside'));\n /* The extent as the column's width: a fraction of the shell in `cqi`, which\n the stylesheet reads in the column alone. */\n protected readonly extentLength = computed(() => {\n const extent = this.shell.asideExtent();\n return extent === undefined ? null : `${Math.round(extent * 10000) / 100}cqi`;\n });\n\n constructor() {\n const remove = this.shell.registerRegion('aside');\n inject(DestroyRef).onDestroy(remove);\n }\n}\n\n/** The pinned top of the pane: its title, and the control that closes it. */\n@Directive({\n selector: '[slAppShellAsideHeader]',\n standalone: true,\n exportAs: 'slAppShellAsideHeader',\n host: { 'data-part': 'aside-header' },\n})\nexport class SlAppShellAsideHeader {}\n\n/**\n * The middle, and the only part of the pane that scrolls. It stands on the\n * pane's inset; `inset=\"none\"` drops it for content that brings its own.\n */\n@Directive({\n selector: '[slAppShellAsideBody]',\n standalone: true,\n exportAs: 'slAppShellAsideBody',\n host: { 'data-part': 'aside-body', '[attr.data-inset]': 'inset() ?? null' },\n})\nexport class SlAppShellAsideBody {\n /** `none` drops the body's own padding, for content that brings its own inset. */\n readonly inset = input<'none' | undefined>(undefined);\n}\n\n/**\n * The box the pane's extent is a fraction of: the shell's content box, which\n * is what `cqi` resolves against. Physical edges, because the pointer and the\n * rectangle are both in client coordinates.\n */\nfunction shellRect(root: HTMLElement): ExtentRect | null {\n const rect = root.getBoundingClientRect();\n const box = getComputedStyle(root);\n /* A border whose style is none is nought wide, whatever its width says. */\n const border = (style: string, width: string) =>\n style === 'none' || style === 'hidden' ? 0 : parseFloat(width) || 0;\n const start =\n (parseFloat(box.paddingLeft) || 0) + border(box.borderLeftStyle, box.borderLeftWidth);\n const end =\n (parseFloat(box.paddingRight) || 0) + border(box.borderRightStyle, box.borderRightWidth);\n const width = Math.max(0, rect.width - start - end);\n return width > 0 ? { height: rect.height, width, x: rect.x + start, y: rect.y } : null;\n}\n\n/** How far a press on the separator may wander and still be a tap. */\nconst TAP_SLOP_PX = 3;\n\n/**\n * The pane's inner edge, from the WAI-ARIA Window Splitter pattern: a focusable\n * `separator` whose three values are the extent as whole percentages of the\n * shell. **Rendering it is the capability**; there is no `resizable` input.\n *\n * It moves the column alone. Under `asideMode=\"overlay\"` the layer keeps its\n * size step and a closed pane has nothing to resize, so the element is\n * `hidden` there; below the breakpoint the stylesheet hides it, because a row\n * under the content has no inline edge.\n *\n * The arrows are physical, the pattern's own reading: `ArrowLeft` grows an end\n * pane in a left-to-right document, and shrinks it where `navSide=\"end\"` or a\n * mirrored line puts the pane at the start.\n */\n@Directive({\n selector: '[slAppShellAsideResizer]',\n standalone: true,\n exportAs: 'slAppShellAsideResizer',\n host: {\n 'data-part': 'aside-resizer',\n role: 'separator',\n tabindex: '0',\n 'aria-orientation': 'vertical',\n '[attr.aria-controls]': 'shell.asideId',\n '[attr.aria-label]': 'label()',\n '[attr.aria-valuemin]': 'percent(shell.asideBounds().min)',\n '[attr.aria-valuemax]': 'percent(shell.asideBounds().max)',\n '[attr.aria-valuenow]': 'percent(current())',\n '[attr.hidden]': \"shown() ? null : ''\",\n '(pointerdown)': 'pointerDown($event)',\n '(pointermove)': 'pointerMove($event)',\n '(pointerup)': 'endDrag($event)',\n '(lostpointercapture)': 'endDrag($event)',\n '(keydown)': 'keyDown($event)',\n },\n})\nexport class SlAppShellAsideResizer {\n protected readonly shell = inject(SlAppShell);\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n\n /** Where the press began and how far the edge was from the pointer then. */\n private press: { x: number; offset: number; moved: boolean } | null = null;\n /** What the document looked like before the drag, and how to put it back. */\n private gesture: (() => void) | null = null;\n /** The pane's measure while the size step decides it, read from the layout. */\n private readonly rest = signal<number | undefined>(undefined);\n\n protected readonly label = computed(() => this.written ?? this.shell.t('resizeAside'));\n protected readonly shown = computed(\n () => this.shell.resolvedAsideMode() === 'inline' && this.shell.asideOpen(),\n );\n /* The pane is at the end of the line the navigation is not on. */\n private readonly side = computed<ExtentSide>(() =>\n this.shell.resolvedNavSide() === 'end' ? 'start' : 'end',\n );\n protected readonly current = computed(() => {\n const { max, min } = this.shell.asideBounds();\n return clamp(this.shell.asideExtent() ?? this.rest() ?? min, min, max);\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => this.gesture?.());\n afterNextRender(() => {\n const aside = this.shell.nodes.aside;\n if (aside === null) return;\n const read = () => {\n const rect = shellRect(this.shell.element);\n this.rest.set(rect === null ? undefined : aside.getBoundingClientRect().width / rect.width);\n };\n read();\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(read);\n observer.observe(aside);\n destroyRef.onDestroy(() => observer.disconnect());\n });\n }\n\n protected percent(value: number) {\n return Math.round(clamp(value, 0, 1) * 100);\n }\n\n private isRtl() {\n return getComputedStyle(this.native).direction === 'rtl';\n }\n\n private pointAt(event: PointerEvent, rect: ExtentRect) {\n return extentAtPoint({\n point: { x: event.clientX, y: event.clientY },\n rect,\n rtl: this.isRtl(),\n side: this.side(),\n });\n }\n\n protected pointerDown(event: PointerEvent) {\n if (event.defaultPrevented || event.button !== 0) return;\n const rect = shellRect(this.shell.element);\n if (rect === null) return;\n\n event.preventDefault();\n this.native.setPointerCapture(event.pointerId);\n this.native.focus();\n this.press = {\n moved: false,\n offset: this.current() - this.pointAt(event, rect),\n x: event.clientX,\n };\n }\n\n protected pointerMove(event: PointerEvent) {\n const held = this.press;\n if (held === null) return;\n const rect = shellRect(this.shell.element);\n if (rect === null) return;\n\n if (!held.moved) {\n if (Math.abs(event.clientX - held.x) < TAP_SLOP_PX) return;\n held.moved = true;\n /* The cursor has to survive the pointer leaving the separator, and a drag\n across the page must not select the text under it. Both are the\n document's and neither is reachable from the family's own stylesheet. */\n this.gesture?.();\n this.gesture = holdResizeGesture(this.native.ownerDocument, 'col-resize');\n this.shell.asideDragging.set(true);\n }\n this.shell.requestAsideExtent(this.pointAt(event, rect) + held.offset, 'pointer', event);\n }\n\n protected endDrag(event: PointerEvent) {\n const held = this.press;\n if (held === null) return;\n this.press = null;\n if (this.native.hasPointerCapture(event.pointerId)) {\n this.native.releasePointerCapture(event.pointerId);\n }\n if (!held.moved) return;\n this.gesture?.();\n this.gesture = null;\n this.shell.asideDragging.set(false);\n }\n\n protected keyDown(event: KeyboardEvent) {\n if (event.defaultPrevented) return;\n const side = this.side();\n const { max, min } = this.shell.asideBounds();\n const atStart = anchorsAtStart(side, this.isRtl());\n\n /* A distance and not a proportion, converted against the shell measured at\n the moment of the press. */\n const by = (direction: 1 | -1) => {\n event.preventDefault();\n const rect = shellRect(this.shell.element);\n const amount =\n rect === null\n ? 0\n : stepAmountFromPixels({\n pixels: event.shiftKey ? EXTENT_LARGE_STEP_PX : EXTENT_STEP_PX,\n rect,\n side,\n });\n this.shell.requestAsideExtent(\n stepExtent({ amount, direction, fraction: this.current(), max, min }),\n 'keyboard',\n event,\n );\n };\n\n switch (event.key) {\n case 'ArrowLeft':\n return by(atStart ? -1 : 1);\n case 'ArrowRight':\n return by(atStart ? 1 : -1);\n case 'Home':\n event.preventDefault();\n return this.shell.requestAsideExtent(min, 'keyboard', event);\n case 'End':\n event.preventDefault();\n return this.shell.requestAsideExtent(max, 'keyboard', event);\n default:\n return undefined;\n }\n }\n}\n\n/** The pinned bottom: the actions that close the task the pane holds. */\n@Directive({\n selector: '[slAppShellAsideFooter]',\n standalone: true,\n exportAs: 'slAppShellAsideFooter',\n host: { 'data-part': 'aside-footer' },\n})\nexport class SlAppShellAsideFooter {}\n\n/**\n * The pane's disclosure control, with the navigation control's wiring: it can\n * stand in the pane's own header, in the banner's actions, or anywhere else,\n * and there is still exactly one control carrying the pane's state.\n */\n@Component({\n selector: 'button[slAppShellAsideToggle]',\n standalone: true,\n exportAs: 'slAppShellAsideToggle',\n imports: [SlGlyph, SlIcon],\n /* The panel mark says what a press does, unless the consumer wrote content of their own. */\n template: `<ng-content\n ><span slIcon\n ><svg slGlyph [name]=\"shell.asideOpen() ? 'panel-close' : 'panel-open'\"></svg></span\n ></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'data-part': 'aside-toggle',\n type: 'button',\n '[attr.id]': 'elementId',\n '[attr.aria-controls]': 'controls',\n '[attr.aria-expanded]': 'shell.asideOpen()',\n '[attr.aria-label]': 'label()',\n '(click)': 'press($event)',\n },\n})\nexport class SlAppShellAsideToggle {\n protected readonly shell = attach('asideToggle');\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenControls = inject(new HostAttributeToken('aria-controls'), {\n optional: true,\n });\n\n protected readonly elementId = this.writtenId ?? this.shell.asideToggleId;\n protected readonly controls = this.writtenControls ?? this.shell.asideId;\n protected readonly label = computed(() => {\n if (this.written !== null) return this.written;\n return this.shell.asideOpen() ? this.shell.t('closeAside') : this.shell.t('openAside');\n });\n\n protected press(event: MouseEvent) {\n const reason: AppShellAsideOpenReason = event.detail === 0 ? 'keyboard' : 'pointer';\n this.shell.requestAside(!this.shell.asideOpen(), reason, event);\n }\n}\n\n/** The `contentinfo` landmark: the application's footer, not the page's action bar. */\n@Directive({\n selector: 'footer[slAppShellFooter]',\n standalone: true,\n exportAs: 'slAppShellFooter',\n host: { 'data-part': 'footer' },\n})\nexport class SlAppShellFooter {\n constructor() {\n attach('footer');\n }\n}\n\n/**\n * The disclosure control, by the APG's Disclosure pattern: a `button` carrying\n * `aria-expanded` and `aria-controls`, which `Enter` and `Space` activate\n * natively. It takes its wiring from the shell rather than from its position,\n * so it can stand in the banner, in the navigation's own footer, or anywhere\n * else, and there is still exactly one control carrying the state.\n */\n@Component({\n selector: 'button[slAppShellNavToggle]',\n standalone: true,\n exportAs: 'slAppShellNavToggle',\n imports: [SlGlyph, SlIcon],\n /* The panel mark says what a press does, unless the consumer wrote content of their own. */\n template: `<ng-content\n ><span slIcon><svg slGlyph [name]=\"shell.navOpen() ? 'panel-close' : 'panel-open'\"></svg></span\n ></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'data-part': 'nav-toggle',\n type: 'button',\n '[attr.id]': 'elementId',\n '[attr.aria-controls]': 'controls',\n '[attr.aria-expanded]': 'shell.navOpen()',\n '[attr.aria-label]': 'label()',\n '(click)': 'press($event)',\n },\n})\nexport class SlAppShellNavToggle {\n protected readonly shell = attach('toggle');\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenControls = inject(new HostAttributeToken('aria-controls'), {\n optional: true,\n });\n\n protected readonly elementId = this.writtenId ?? this.shell.toggleId;\n protected readonly controls = this.writtenControls ?? this.shell.navId;\n protected readonly label = computed(() => {\n if (this.written !== null) return this.written;\n return this.shell.navOpen() ? this.shell.t('close') : this.shell.t('open');\n });\n\n protected press(event: MouseEvent) {\n /* A click synthesised by the keyboard reports no detail; a real one does.\n The reason is the difference between a product that persists a press and\n one that cannot tell which gesture it saw. */\n const reason: AppShellOpenReason = event.detail === 0 ? 'keyboard' : 'pointer';\n this.shell.request(!this.shell.navOpen(), reason, event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAgHA,MAAM,QAAQ,GAAqB;AACjC,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,YAAY,EAAE,OAAO;AACrB,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,UAAU,EAAE,MAAM;CACnB;MAEY,kBAAkB,GAAG,IAAI,cAAc,CAClD,4BAA4B,EAC5B;AACE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,QAAQ;AACxB,CAAA;AAGH;;;;;;AAMG;AACG,SAAU,uBAAuB,CAAC,QAAmC,EAAA;IACzE,OAAO;AACL,QAAA,OAAO,EAAE,kBAAkB;AAC3B,QAAA,UAAU,EAAE,OAAyB,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;KACnE;AACH;AAEA;SACgB,sBAAsB,GAAA;AACpC,IAAA,OAAO,MAAM,CAAC,kBAAkB,CAAC;AACnC;;ACtEA;;;;;;;AAOG;AACI,MAAM,oBAAoB,GAAG;AAEpC,IAAI,MAAM,GAAG,CAAC;AAEd;;;;;;;;;;;;;AAaG;MAwCU,UAAU,CAAA;;IAEZ,OAAO,GAAG,KAAK,CAAU,IAAI;gFAAC;;IAE9B,SAAS,GAAG,KAAK,CAAU,IAAI;kFAAC;AACzC;;;AAGG;IACM,WAAW,GAAG,KAAK,CAAqB,SAAS;oFAAC;;IAElD,cAAc,GAAG,KAAK,CAAC,IAAI;uFAAC;;IAE5B,cAAc,GAAG,KAAK,CAAC,GAAG;uFAAC;;IAG3B,OAAO,GAAG,KAAK,CAA8B,SAAS;gFAAC;;IAEvD,MAAM,GAAG,KAAK,CAA6B,SAAS;+EAAC;;IAErD,OAAO,GAAG,KAAK,CAA8B,SAAS;gFAAC;;IAEvD,OAAO,GAAG,KAAK,CAA8B,SAAS;gFAAC;;IAEvD,OAAO,GAAG,KAAK,CAA2B,SAAS;gFAAC;;IAEpD,SAAS,GAAG,KAAK,CAAgC,SAAS;kFAAC;;IAE3D,SAAS,GAAG,KAAK,CAA2B,SAAS;kFAAC;;IAEtD,WAAW,GAAG,KAAK,CAAkC,SAAS;oFAAC;;IAE/D,MAAM,GAAG,KAAK,CAA6B,SAAS;+EAAC;;IAErD,UAAU,GAAG,KAAK,CAAiC,SAAS;mFAAC;;IAE7D,KAAK,GAAG,KAAK,CAAsB,SAAS,6EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;;IAE7E,MAAM,GAAG,KAAK,CAAoC,SAAS;+EAAC;;IAE5D,YAAY,GAAG,KAAK,CAAoC,SAAS;qFAAC;AAC3E;;;AAGG;IACM,IAAI,GAAG,KAAK,CAAoC,SAAS;6EAAC;;IAE1D,eAAe,GAAG,KAAK,CAAsB,SAAS,uFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAChG;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAgD,SAAS;iFAAC;AAEnF;;;;;AAKG;IACM,oBAAoB,GAAG,MAAM,EAAuB;;IAEpD,sBAAsB,GAAG,MAAM,EAAuB;;IAEtD,wBAAwB,GAAG,MAAM,EAA8B;IAEvD,QAAQ,GAAG,sBAAsB,EAAE;AACnC,IAAA,IAAI,GAAgB,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;IACpD,MAAM,GAAG,MAAM,CAAsB,SAAS;+EAAC;;IAEvD,aAAa,GAAG,MAAM,CAAC,KAAK;sFAAC;;AAE7B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,QAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE;IAC3D,CAAC;oFAAC;AAEF;;;;AAIG;AACc,IAAA,GAAG,IAAI,MAAM,IAAI,CAAC;AAC1B,IAAA,KAAK,GAAG,CAAA,kBAAA,EAAqB,IAAI,CAAC,GAAG,MAAM;AAC3C,IAAA,MAAM,GAAG,CAAA,kBAAA,EAAqB,IAAI,CAAC,GAAG,OAAO;AAC7C,IAAA,OAAO,GAAG,CAAA,kBAAA,EAAqB,IAAI,CAAC,GAAG,QAAQ;AAC/C,IAAA,QAAQ,GAAG,CAAA,kBAAA,EAAqB,IAAI,CAAC,GAAG,SAAS;AACjD,IAAA,aAAa,GAAG,CAAA,kBAAA,EAAqB,IAAI,CAAC,GAAG,eAAe;;AAG5D,IAAA,KAAK,GAQV;AACF,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,MAAM,EAAE,IAAI;KACb;IAEgB,OAAO,GAAG,MAAM,CAAkD;AACjF,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,KAAK,EAAE,KAAK;AACb,KAAA;gFAAC;AAEO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;wFAAC;AACzE,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;uFAAC;AACtE,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;wFAAC;AACzE,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;wFAAC;AACzE,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS;0FAAC;AACvE,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS;wFAAC;;AAErF,IAAA,iBAAiB,GAAG,QAAQ,CAA8B,MAAK;AACtE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;QACrC,IAAI,MAAM,KAAK,MAAM;AAAE,YAAA,OAAO,MAAM;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,OAAO,MAAM,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ;IACpE,CAAC;0FAAC;IACO,YAAY,GAAG,QAAQ,CAC9B,MAAM,IAAI,CAAC,iBAAiB,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK;qFACzF;AACQ,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW;4FAAC;AACrF,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;uFAAC;AACtE,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;2FAAC;AAClF,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;sFAAC;AACnE,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;uFAAC;AACtE,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;qFAAC;AAChE,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;6FAAC;AACxF,IAAA,uBAAuB,GAAG,QAAQ,CACzC,MAAM,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe;gGAC9D;;IAEQ,CAAC,GAAG,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC;;IAEnD,IAAI,GAAG,MAAM,CAAC,KAAK;6EAAC;AAEZ,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;mFAAC;AAErF;;;;;AAKG;AACM,IAAA,YAAY,GAAG,QAAQ,CAA8B,MAAK;AACjE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;QAChC,IAAI,MAAM,KAAK,MAAM;AAAE,YAAA,OAAO,MAAM;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,OAAO,MAAM,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ;IACpE,CAAC;qFAAC;AAEF;;;;AAIG;AACM,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG;qFAAC;AACnE,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE;gFAAC;AAE3F;;;;;;;;AAQG;IACc,IAAI,GAAG,QAAQ,CAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE;6EACtE;IACkB,UAAU,GAAG,MAAM,CAAiB,WAAW;mFAAC;IAClD,OAAO,GAAG,SAAS,CAA0B,OAAO;gFAAC;;IAE9D,YAAY,GAA0B,IAAI;AAE/B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,MAAM,OAAO,GAAsC,EAAE;QACrD,IAAI,OAAO,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;QAClF,IAAI,OAAO,CAAC,GAAG;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;;QAE/E,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACrC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;QACpE;AACA,QAAA,OAAO,OAAO;IAChB,CAAC;oFAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAErC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;AAC9B,gBAAA,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;AACjC,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,cAAc,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACpD,iBAAA,CAAC;gBACF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gBAC7C;YACF;AACA,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,IAAI,IAAI,CAAC;AACnE,QAAA,CAAC,CAAC;AACF,QAAA,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;QAExD,eAAe,CAAC,MAAK;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAc,8BAA8B,CAAC;AAClF,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;gBAClB,kBAAkB,CAAC,KAAK,CAAC;AACzB,gBAAA,UAAU,CAAC,SAAS,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;YAC3E;AAEA;;AAE6D;YAC7D,IAAI,OAAO,cAAc,KAAK,WAAW;gBAAE;AAC3C,YAAA,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE;AACtC,gBAAA,EAAE,EAAE,oBAAoB;AACxB,gBAAA,QAAQ,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9C,aAAA,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AAC5C,QAAA,CAAC,CAAC;AAEF;;;;;AAKG;AACH;;;AAGuE;AACvE;;AAEwE;AACxE,QAAA,IAAI,UAA+B;QACnC,IAAI,cAAc,GAAG,KAAK;QAC1B,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;YAChC,IAAI,IAAI,KAAK,IAAI;gBAAE;AACnB,YAAA,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS;AAClC,YAAA,MAAM,KAAK,GAAG,UAAU,KAAK,SAAS;YACtC,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,MAAM,GAAG,CAAC,UAAU,CAAC;YAC/E,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,UAAU,KAAK,IAAI;YAC5C,UAAU,GAAG,OAAO;YACpB,IAAI,OAAO,EAAE;gBACX,cAAc,CAAC,MAAK;AAClB,oBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;wBAAE;oBACrB,cAAc,GAAG,IAAI;oBACrB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC1C,gBAAA,CAAC,CAAC;YACJ;AAAO,iBAAA,IAAI,IAAI,IAAI,cAAc,EAAE;gBACjC,cAAc,GAAG,KAAK;gBACtB,cAAc,CAAC,MAAK;AAClB,oBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;wBAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC9D,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,eAAoC;QACxC,IAAI,mBAAmB,GAAG,KAAK;QAC/B,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE;YACrC,IAAI,IAAI,KAAK,IAAI;gBAAE;AACnB,YAAA,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS;AAClC,YAAA,MAAM,KAAK,GAAG,eAAe,KAAK,SAAS;YAC3C,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,MAAM,GAAG,CAAC,eAAe,CAAC;YACzF,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,eAAe,KAAK,IAAI;YACjD,eAAe,GAAG,OAAO;YACzB,IAAI,OAAO,EAAE;gBACX,cAAc,CAAC,MAAK;AAClB,oBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;wBAAE;oBACvB,mBAAmB,GAAG,IAAI;oBAC1B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC/C,gBAAA,CAAC,CAAC;YACJ;AAAO,iBAAA,IAAI,IAAI,IAAI,mBAAmB,EAAE;gBACtC,mBAAmB,GAAG,KAAK;gBAC3B,cAAc,CAAC,MAAK;AAClB,oBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;wBAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC;AACrE,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;AAEF;;;;;;;;;;;AAWG;AACH;;;;;AAKG;QACH,MAAM,KAAK,GAAG,CACZ,IAAmB,EACnB,KAA+B,EAC/B,OAAiC,EACjC,KAAiE,KAC/D;YACF,IAAI,KAAK,GAAkC,IAAI;YAC/C,IAAI,OAAO,GAAwB,IAAI;YACvC,MAAM,CAAC,MAAK;AACV,gBAAA,MAAM,MAAM,GAAG,IAAI,EAAE;AACrB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;AAClC,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;AACpC,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAChD;AACyC;gBACzC,MAAM,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,OAAO;gBAErD,OAAO,IAAI;gBACX,OAAO,GAAG,IAAI;gBACd,KAAK,EAAE,OAAO,EAAE;gBAChB,KAAK,GAAG,IAAI;AACZ,gBAAA,IAAI,CAAC,MAAM;oBAAE;gBAEb,cAAc,CAAC,MAAK;AAClB,oBAAA,MAAM,IAAI,GAAG,KAAK,EAAE;AACpB,oBAAA,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;wBAAE;AAE9B,oBAAA,MAAM,OAAO,GAAG,OAAO,EAAE;AACzB,oBAAA,KAAK,GAAG,sBAAsB,CAAC,IAAI,EAAE;AACnC,wBAAA,IAAI,OAAO,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;wBACpD,IAAI;AACJ,wBAAA,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,MAAM,KAAK,OAAO;wBAC1B,KAAK;AACL,wBAAA,SAAS,EAAE,CAAC,OAAO,KAAI;4BACrB,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc,IAAI,YAAY,KAAK,MAAM,EAAE;AAChE,gCAAA,OAAO,OAAO,CAAC,MAAM,EAAE;4BACzB;4BACA,KAAK,CAAC,OAAO,CAAC,MAAiC,EAAE,OAAO,CAAC,MAAM,CAAC;wBAClE,CAAC;wBACD,YAAY,EAAE,YAAY,KAAK,OAAO;AACtC,wBAAA,iBAAiB,EAAE,OAAO;AAC3B,qBAAA,CAAC;AAEF,oBAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE;AACnC,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,OAAO,EAAE,OAAO;AAChB,wBAAA,IAAI,OAAO,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,OAAO,EAAE,CAAC;AACxD,qBAAA,CAAC;oBACF,KAAK,CAAC,KAAK,EAAE;oBAEb,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;AACjC,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACF,YAAA,UAAU,CAAC,SAAS,CAAC,MAAK;gBACxB,OAAO,IAAI;gBACX,KAAK,EAAE,OAAO,EAAE;AAClB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;QAED,KAAK,CACH,MAAM,IAAI,CAAC,OAAO,EAAE,EACpB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EACpB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EACvB,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CACxD;QACD,KAAK,CACH,MAAM,IAAI,CAAC,YAAY,EAAE,EACzB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EACtB,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAC5B,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAC7D;IACH;;AAGA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,IAAI;IAClB;AAEA;;;AAGG;AACH,IAAA,kBAAkB,CAAC,IAAwB,EAAE,MAAiC,EAAE,MAAe,EAAA;QAC7F,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;QACvC,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;AACrE,QAAA,IAAI,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE;YAAE;QAEnC,IAAI,SAAS,GAAG,KAAK;QACrB,MAAM,KAAK,GAAG,kBAAkB,CAAqB;AACnD,YAAA,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;AAC3B,YAAA,SAAS,EAAE,CAAC,GAAG,KAAI;AACjB,gBAAA,SAAS,GAAG,GAAG,CAAC,SAAS;AACzB,gBAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;AACjC,oBAAA,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE;AAC1B,oBAAA,IAAI,SAAS,GAAA;wBACX,OAAO,GAAG,CAAC,SAAS;oBACtB,CAAC;oBACD,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,MAAM;oBACN,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;AACjB,iBAAA,CAAC;YACJ,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,SAAS;YAAE;AACzD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;IAC9B;;AAGA,IAAA,cAAc,CAAC,MAAgC,EAAA;QAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;QAClE,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC;IAClF;;AAGA,IAAA,OAAO,CAAC,IAAa,EAAE,MAA0B,EAAE,MAAe,EAAA;AAChE,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE;YAAE;QAE7B,IAAI,SAAS,GAAG,KAAK;QACrB,MAAM,KAAK,GAAG,kBAAkB,CAAU;AACxC,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,SAAS,EAAE,CAAC,GAAG,KAAI;AACjB,gBAAA,SAAS,GAAG,GAAG,CAAC,SAAS;AACzB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC7B,oBAAA,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE;AAC1B,oBAAA,IAAI,SAAS,GAAA;wBACX,OAAO,GAAG,CAAC,SAAS;oBACtB,CAAC;oBACD,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,MAAM;oBACN,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;AACjB,iBAAA,CAAC;YACJ,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,SAAS;YAAE;AACvD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;;AAGA,IAAA,YAAY,CAAC,IAAa,EAAE,MAA+B,EAAE,MAAe,EAAA;AAC1E,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;YAAE;QAE/B,IAAI,SAAS,GAAG,KAAK;QACrB,MAAM,KAAK,GAAG,kBAAkB,CAAU;AACxC,YAAA,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;AACzB,YAAA,SAAS,EAAE,CAAC,GAAG,KAAI;AACjB,gBAAA,SAAS,GAAG,GAAG,CAAC,SAAS;AACzB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAC/B,oBAAA,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE;AAC1B,oBAAA,IAAI,SAAS,GAAA;wBACX,OAAO,GAAG,CAAC,SAAS;oBACtB,CAAC;oBACD,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,MAAM;oBACN,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;AACjB,iBAAA,CAAC;YACJ,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,SAAS;YAAE;AACvD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1B;;IAGA,SAAS,GAAA;QACP,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC;IACpD;;IAEA,UAAU,GAAA;QACR,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC;IACrD;;IAGA,OAAO,GAAA;QACL,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC;IAC/C;;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC;IAChD;;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;AAAE,YAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACnD;AAEA;;;;;;;AAOG;AACO,IAAA,OAAO,CAAC,KAAiB,EAAA;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;YAAE;QACxD,MAAM,IAAI,GAAI,KAAK,CAAC,MAAyB,EAAE,OAAO,GAAG,SAAS,CAAC;AACnE,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI;YAAE;AACtD,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM;YAAE;QACnD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;IACtC;uGAvgBW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnCX,CAAA;;;;;;;;;;;;;AAa6B,wCAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0koCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAsB5B,UAAU,EAAA,UAAA,EAAA,CAAA;kBAvCtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,QAAA,EACN,YAAY,EAAA,QAAA,EACZ,CAAA;;;;;;;;;;;;;AAa6B,wCAAA,CAAA,EAAA,eAAA,EAEtB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,oBAAoB,EAAE,kBAAkB;AACxC,wBAAA,sBAAsB,EAAE,gBAAgB;AACxC,wBAAA,wBAAwB,EAAE,qBAAqB;AAC/C,wBAAA,sBAAsB,EAAE,mBAAmB;AAC3C,wBAAA,sBAAsB,EAAE,mBAAmB;AAC3C,wBAAA,wBAAwB,EAAE,qBAAqB;AAC/C,wBAAA,0BAA0B,EAAE,uBAAuB;AACnD,wBAAA,oBAAoB,EAAE,kBAAkB;AACxC,wBAAA,wBAAwB,EAAE,sBAAsB;AAChD,wBAAA,kBAAkB,EAAE,4BAA4B;AAChD,wBAAA,sBAAsB,EAAE,6BAA6B;AACrD,wBAAA,SAAS,EAAE,iBAAiB;AAC7B,qBAAA,EAAA,MAAA,EAAA,CAAA,0koCAAA,CAAA,EAAA;k+EAwL6D,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAoVvE,SAAS,eAAe,CAAC,KAAc,EAAA;AACrC,IAAA,OAAO,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC;AAClE;AAEA;AACA,SAAS,MAAM,CAAC,IAA+E,EAAA;AAC7F,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;IAChC,MAAM,IAAI,GAAgB,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;AAC1D,IAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI;AACxB,IAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;AAChC,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI;AAAE,YAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI;AAC1D,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,KAAK;AACd;AAEA;;;AAGG;MAOU,gBAAgB,CAAA;AAC3B,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,QAAQ,CAAC;IAClB;uGAHW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE;AAChC,iBAAA;;AAOD;MAOa,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;AAC/B,iBAAA;;AAGD;MAOa,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE;AAChC,iBAAA;;AAGD;MAOa,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE;AACjC,iBAAA;;AAGD;;;;AAIG;MAWU,aAAa,CAAA;AACP,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrB,IAAA,OAAO,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1E,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAElE,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;AAC9C,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;8EAAC;AAE9E,IAAA,WAAA,GAAA;QACE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;QAC/C,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACtC;uGAXW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAVzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,WAAW,EAAE,WAAW;AACxB,wBAAA,mBAAmB,EAAE,SAAS;AAC/B,qBAAA;AACF,iBAAA;;AAeD;;;;AAIG;MAOU,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE;AAClC,iBAAA;;AAGD;MAOa,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;AACpC,iBAAA;;AAGD;MAOa,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE;AAClC,iBAAA;;AAGD;MAOa,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;AACpC,iBAAA;;AAGD;;;;;;;;AAQG;MAWU,cAAc,CAAA;AACR,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AACtB,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAClE,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;;AAEjD,IAAA,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3E,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;6EAAC;AAEjG,IAAA,WAAA,GAAA;QACE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACtC;uGAXW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAV1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,WAAW,EAAE,WAAW;AACxB,wBAAA,kBAAkB,EAAE,QAAQ;AAC7B,qBAAA;AACF,iBAAA;;AAeD;;;;;;;;;;;;AAYG;MA0BU,kBAAkB,CAAA;AACV,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;IAC1B,QAAQ,GAAG,+BAA+B,EAAE;IAEtD,OAAO,GAAG,KAAK,CAAC,IAAI,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACtD,KAAK,GAAG,KAAK,CAA4B,SAAS;8EAAC;IACnD,GAAG,GAAG,KAAK,CAAqB,SAAS;4EAAC;IAC1C,GAAG,GAAG,KAAK,CAAqB,SAAS;4EAAC;IAC1C,MAAM,GAAG,KAAK,CAA4B,SAAS;+EAAC;IACpD,SAAS,GAAG,KAAK,CAAqB,SAAS;kFAAC;IAChD,KAAK,GAAG,KAAK,CAAqB,SAAS;8EAAC;IAC5C,IAAI,GAAG,KAAK,CAA2B,SAAS;6EAAC;IACjD,IAAI,GAAG,KAAK,CAA2B,SAAS;6EAAC;IACjD,KAAK,GAAG,KAAK,CAAqB,SAAS;8EAAC;IAC5C,WAAW,GAAG,KAAK,CAAqB,SAAS;oFAAC;;IAElD,QAAQ,GAAG,MAAM,EAAQ;AAEjB,IAAA,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa;4EAAC;AAExD,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChE;uGAvBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,UAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAkBa,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtC7C,CAAA;;;;;;;;;;;;;;;AAeF,SAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAhBE,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAqBZ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAzB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,OAAO,EAAE,CAAC,aAAa,CAAC;AACxB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;AAeF,SAAA,CAAA;oBACR,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE;AAClC,iBAAA;gpCAmB2C,aAAa,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAQzD;;;;;AAKG;MAaU,eAAe,CAAA;AACP,IAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,OAAO,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1E,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAClE,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;AAChD,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;8EAAC;AAChF;AAC+C;AAC5B,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;QACvC,OAAO,MAAM,KAAK,SAAS,GAAG,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAA,GAAA,CAAK;IAC/E,CAAC;qFAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC;QACjD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACtC;uGAhBW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,+BAAA,EAAA,wCAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,WAAW;AACxB,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,kBAAkB,EAAE,+BAA+B;AACnD,wBAAA,0CAA0C,EAAE,gBAAgB;AAC7D,qBAAA;AACF,iBAAA;;AAoBD;MAOa,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;AACtC,iBAAA;;AAGD;;;AAGG;MAOU,mBAAmB,CAAA;;IAErB,KAAK,GAAG,KAAK,CAAqB,SAAS;8EAAC;uGAF1C,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;oBAC/B,IAAI,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE;AAC5E,iBAAA;;AAMD;;;;AAIG;AACH,SAAS,SAAS,CAAC,IAAiB,EAAA;AAClC,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACzC,IAAA,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC;;AAElC,IAAA,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,KAAa,KAC1C,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;IACrE,MAAM,KAAK,GACT,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,eAAe,CAAC;IACvF,MAAM,GAAG,GACP,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,CAAC;AAC1F,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;AACnD,IAAA,OAAO,KAAK,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI;AACxF;AAEA;AACA,MAAM,WAAW,GAAG,CAAC;AAErB;;;;;;;;;;;;;AAaG;MAuBU,sBAAsB,CAAA;AACd,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5B,IAAA,MAAM,GAAgB,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;AACtD,IAAA,OAAO,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;IAGnF,KAAK,GAAyD,IAAI;;IAElE,OAAO,GAAwB,IAAI;;IAE1B,IAAI,GAAG,MAAM,CAAqB,SAAS;6EAAC;AAE1C,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC;8EAAC;IACnE,KAAK,GAAG,QAAQ,CACjC,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;8EAC5E;;IAEgB,IAAI,GAAG,QAAQ,CAAa,MAC3C,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,KAAK,GAAG,OAAO,GAAG,KAAK;6EACzD;AACkB,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;QAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACxE,CAAC;gFAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,QAAA,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC;QAC5C,eAAe,CAAC,MAAK;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;YACpC,IAAI,KAAK,KAAK,IAAI;gBAAE;YACpB,MAAM,IAAI,GAAG,MAAK;gBAChB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,SAAS,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7F,YAAA,CAAC;AACD,YAAA,IAAI,EAAE;YACN,IAAI,OAAO,cAAc,KAAK,WAAW;gBAAE;AAC3C,YAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC;AACzC,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;YACvB,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AACnD,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,OAAO,CAAC,KAAa,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;IAC7C;IAEQ,KAAK,GAAA;QACX,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,KAAK;IAC1D;IAEQ,OAAO,CAAC,KAAmB,EAAE,IAAgB,EAAA;AACnD,QAAA,OAAO,aAAa,CAAC;AACnB,YAAA,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE;YAC7C,IAAI;AACJ,YAAA,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE;AACjB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,SAAA,CAAC;IACJ;AAEU,IAAA,WAAW,CAAC,KAAmB,EAAA;QACvC,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;QAClD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC1C,IAAI,IAAI,KAAK,IAAI;YAAE;QAEnB,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC;AAC9C,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QACnB,IAAI,CAAC,KAAK,GAAG;AACX,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;YAClD,CAAC,EAAE,KAAK,CAAC,OAAO;SACjB;IACH;AAEU,IAAA,WAAW,CAAC,KAAmB,EAAA;AACvC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK;QACvB,IAAI,IAAI,KAAK,IAAI;YAAE;QACnB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC1C,IAAI,IAAI,KAAK,IAAI;YAAE;AAEnB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW;gBAAE;AACpD,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB;;AAE2E;AAC3E,YAAA,IAAI,CAAC,OAAO,IAAI;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC;YACzE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QACpC;QACA,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC;IAC1F;AAEU,IAAA,OAAO,CAAC,KAAmB,EAAA;AACnC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK;QACvB,IAAI,IAAI,KAAK,IAAI;YAAE;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YAClD,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC;QACpD;QACA,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;AACjB,QAAA,IAAI,CAAC,OAAO,IAAI;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;IACrC;AAEU,IAAA,OAAO,CAAC,KAAoB,EAAA;QACpC,IAAI,KAAK,CAAC,gBAAgB;YAAE;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;QAC7C,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAElD;AAC8B;AAC9B,QAAA,MAAM,EAAE,GAAG,CAAC,SAAiB,KAAI;YAC/B,KAAK,CAAC,cAAc,EAAE;YACtB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAC1C,YAAA,MAAM,MAAM,GACV,IAAI,KAAK;AACP,kBAAE;kBACA,oBAAoB,CAAC;oBACnB,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,oBAAoB,GAAG,cAAc;oBAC9D,IAAI;oBACJ,IAAI;AACL,iBAAA,CAAC;AACR,YAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EACrE,UAAU,EACV,KAAK,CACN;AACH,QAAA,CAAC;AAED,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC;AAC9D,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC;AAC9D,YAAA;AACE,gBAAA,OAAO,SAAS;;IAEtB;uGAnJW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,eAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,GAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAtBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,eAAe;AAC5B,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,QAAQ,EAAE,GAAG;AACb,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,sBAAsB,EAAE,kCAAkC;AAC1D,wBAAA,sBAAsB,EAAE,kCAAkC;AAC1D,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,eAAe,EAAE,qBAAqB;AACtC,wBAAA,eAAe,EAAE,qBAAqB;AACtC,wBAAA,eAAe,EAAE,qBAAqB;AACtC,wBAAA,aAAa,EAAE,iBAAiB;AAChC,wBAAA,sBAAsB,EAAE,iBAAiB;AACzC,wBAAA,WAAW,EAAE,iBAAiB;AAC/B,qBAAA;AACF,iBAAA;;AAuJD;MAOa,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;AACtC,iBAAA;;AAGD;;;;AAIG;MAsBU,qBAAqB,CAAA;AACb,IAAA,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC;AAC/B,IAAA,OAAO,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1E,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACpE,eAAe,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,eAAe,CAAC,EAAE;AACjF,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IAEiB,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa;IACtD,QAAQ,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;AACrD,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,OAAO;AAC9C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;IACxF,CAAC;8EAAC;AAEQ,IAAA,KAAK,CAAC,KAAiB,EAAA;AAC/B,QAAA,MAAM,MAAM,GAA4B,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,GAAG,SAAS;AACnF,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC;IACjE;uGAlBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAftB,CAAA;;;iBAGK,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EALL,OAAO,oFAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAiBd,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBArBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;;AAE1B,oBAAA,QAAQ,EAAE,CAAA;;;AAGK,gBAAA,CAAA;oBACf,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,cAAc;AAC3B,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,WAAW,EAAE,WAAW;AACxB,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,sBAAsB,EAAE,mBAAmB;AAC3C,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA;AACF,iBAAA;;AAsBD;MAOa,gBAAgB,CAAA;AAC3B,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,QAAQ,CAAC;IAClB;uGAHW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE;AAChC,iBAAA;;AAOD;;;;;;AAMG;MAqBU,mBAAmB,CAAA;AACX,IAAA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC1B,IAAA,OAAO,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1E,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACpE,eAAe,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,eAAe,CAAC,EAAE;AACjF,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IAEiB,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;IACjD,QAAQ,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;AACnD,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,OAAO;AAC9C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5E,CAAC;8EAAC;AAEQ,IAAA,KAAK,CAAC,KAAiB,EAAA;AAC/B;;AAEgD;AAChD,QAAA,MAAM,MAAM,GAAuB,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,GAAG,SAAS;AAC9E,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC;IAC1D;uGArBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdpB,CAAA;;iBAEK,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAJL,OAAO,oFAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAgBd,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBApB/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;;AAE1B,oBAAA,QAAQ,EAAE,CAAA;;AAEK,gBAAA,CAAA;oBACf,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,YAAY;AACzB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,WAAW,EAAE,WAAW;AACxB,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,sBAAsB,EAAE,iBAAiB;AACzC,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA;AACF,iBAAA;;;AC5uCD;;AAEG;;"}
|
|
@@ -1355,7 +1355,13 @@ class SlCascader extends CascaderBase {
|
|
|
1355
1355
|
}
|
|
1356
1356
|
},
|
|
1357
1357
|
});
|
|
1358
|
-
|
|
1358
|
+
/* `data-open` is written on the element in the task that opened the layer,
|
|
1359
|
+
with the position; the binding says it again on the next check. */
|
|
1360
|
+
void this.positioner.update().then(() => {
|
|
1361
|
+
if (this.open())
|
|
1362
|
+
node.setAttribute('data-open', '');
|
|
1363
|
+
this.positioned.set(true);
|
|
1364
|
+
});
|
|
1359
1365
|
this.layer = createDismissableLayer(node, {
|
|
1360
1366
|
branches: [this.host],
|
|
1361
1367
|
escape: true,
|