@slotted/angular 0.1.0-beta.2 → 0.1.0-beta.3
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/app-shell.json +1 -1
- package/docs/button-group.json +1 -0
- package/docs/button-group.md +1 -1
- package/docs/button.json +45 -11
- package/docs/button.md +10 -6
- package/docs/chart.json +7 -0
- package/docs/chart.md +1 -0
- package/docs/currency-field.json +32 -1
- package/docs/currency-field.md +4 -1
- package/docs/dialog.examples.md +20 -0
- package/docs/dialog.json +14 -2
- package/docs/dialog.md +1 -1
- package/docs/list.json +19 -1
- package/docs/list.md +3 -1
- package/docs/popover.json +1 -1
- package/docs/segmented-control.json +29 -1
- package/docs/segmented-control.md +17 -1
- package/docs/skills/theme-app/SKILL.md +5 -0
- package/docs/split-button.json +1 -0
- package/docs/split-button.md +1 -1
- package/docs/stat-card.json +1 -0
- package/docs/stat-card.md +1 -1
- package/docs/table.examples.md +1 -1
- package/docs/table.json +70 -1
- package/docs/table.md +10 -1
- package/docs/toggle-group.json +14 -3
- package/docs/toggle-group.md +3 -3
- package/docs/toggle.json +12 -3
- package/docs/toggle.md +3 -3
- package/docs/tokens.md +25 -1
- package/docs/tour.json +1 -1
- package/fesm2022/slotted-angular-app-shell.mjs +48 -16
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
- package/fesm2022/slotted-angular-button-group.mjs +4 -4
- package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-button.mjs +51 -19
- package/fesm2022/slotted-angular-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-cascader.mjs +1 -1
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +41 -20
- package/fesm2022/slotted-angular-chart.mjs.map +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
- package/fesm2022/slotted-angular-currency-field.mjs +59 -8
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-grid.mjs +2 -2
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-list.mjs +2 -2
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-dialog.mjs +4 -4
- package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-filter-bar.mjs +8 -8
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-import-export-center.mjs +1 -1
- package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-list.mjs +28 -17
- package/fesm2022/slotted-angular-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-markdown.mjs +1 -1
- package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
- package/fesm2022/slotted-angular-notification-center.mjs +1 -1
- package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
- package/fesm2022/slotted-angular-segmented-control.mjs +25 -5
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
- package/fesm2022/slotted-angular-split-button.mjs +4 -4
- package/fesm2022/slotted-angular-split-button.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 +94 -7
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle-group.mjs +17 -4
- package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle.mjs +2 -2
- package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
- package/fesm2022/slotted-angular-tour.mjs +1 -1
- package/fesm2022/slotted-angular-tour.mjs.map +1 -1
- package/fesm2022/slotted-angular-transfer.mjs +1 -1
- package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
- package/fesm2022/slotted-angular-wizard.mjs +1 -1
- package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
- package/package.json +3 -3
- package/types/slotted-angular-app-shell.d.ts +6 -0
- package/types/slotted-angular-app-shell.d.ts.map +1 -1
- package/types/slotted-angular-button-group.d.ts +1 -1
- package/types/slotted-angular-button.d.ts +33 -13
- package/types/slotted-angular-button.d.ts.map +1 -1
- package/types/slotted-angular-chart.d.ts +9 -0
- package/types/slotted-angular-chart.d.ts.map +1 -1
- package/types/slotted-angular-currency-field.d.ts +25 -3
- package/types/slotted-angular-currency-field.d.ts.map +1 -1
- package/types/slotted-angular-list.d.ts +42 -27
- package/types/slotted-angular-list.d.ts.map +1 -1
- package/types/slotted-angular-segmented-control.d.ts +15 -2
- package/types/slotted-angular-segmented-control.d.ts.map +1 -1
- package/types/slotted-angular-split-button.d.ts +2 -2
- package/types/slotted-angular-table.d.ts +43 -3
- package/types/slotted-angular-table.d.ts.map +1 -1
- package/types/slotted-angular-toggle-group.d.ts +8 -2
- package/types/slotted-angular-toggle-group.d.ts.map +1 -1
- package/types/slotted-angular-toggle.d.ts +1 -1
- package/types/slotted-angular-toggle.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-button.mjs","sources":["../../button/src/button-defaults.ts","../../button/src/button-appearance.ts","../../button/src/button.constants.ts","../../button/src/button.ts","../../button/src/button-link.ts","../../button/src/icon-button.ts","../../button/src/toggle-button.ts","../../button/src/slotted-angular-button.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type { ButtonSize, ButtonTone, ButtonVariant } from './button.constants';\n\n/**\n * What a button paints itself as here, before it states anything of its own.\n *\n * Every axis is optional, and that is the difference from a family with one\n * member. The four members disagree about their own defaults on purpose — a\n * primary action is accent and solid, an icon button is neutral and ghost — so\n * a token that filled every axis would flatten them into one appearance the\n * moment an application set a single value.\n */\nexport interface ButtonDefaults {\n /**\n * Absence is written explicitly rather than left to the optional marker.\n * Under `exactOptionalPropertyTypes` the two are not interchangeable, and an\n * unset axis has to be expressible by a value as well as by a missing key —\n * a provider that computes its defaults cannot omit a property.\n */\n size?: ButtonSize | undefined;\n tone?: ButtonTone | undefined;\n variant?: ButtonVariant | undefined;\n}\n\nexport const BUTTON_DEFAULTS_TOKEN = new InjectionToken<ButtonDefaults>('slotted button defaults', {\n providedIn: 'root',\n factory: (): ButtonDefaults => ({}),\n});\n\n/**\n * An application decides once how its actions are painted and how large they\n * are, rather than repeating three inputs on every button. A button that states\n * an axis itself still wins: an explicit input is never overridden by the\n * token.\n */\nexport function provideButtonDefaults(defaults: ButtonDefaults) {\n return { provide: BUTTON_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectButtonDefaults(): ButtonDefaults {\n return inject(BUTTON_DEFAULTS_TOKEN);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n effect,\n inject,\n InjectionToken,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { Signal, WritableSignal } from '@angular/core';\nimport type { ButtonMessages, FamilyTranslator } from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport type { ButtonSize, ButtonTone, ButtonVariant } from './button.constants';\nimport { injectButtonDefaults } from './button-defaults';\n\n/** A state attribute is present or absent; it never carries a value. */\nexport function stateAttribute(active: boolean) {\n return active ? '' : null;\n}\n\nexport function blockActivation(event: Event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n}\n\n/**\n * A native button fires the same `click` for a pointer, for Space and for\n * Enter, which is exactly why the family uses one — and why the reason a\n * toggle moved has to be recovered from the event. A click synthesised by the\n * keyboard reports no detail; a real one reports the click count.\n */\nexport function activationReason(event: Event): ChangeReason {\n return event instanceof MouseEvent && event.detail > 0 ? 'pointer' : 'keyboard';\n}\n\n/**\n * Absence has to survive the transform. `booleanAttribute` maps an unset input\n * to `false`, and `false` is a value: it would make every icon button announce\n * itself as an unpressed toggle.\n */\nexport function optionalBoolean(value: boolean | string | undefined) {\n return value === undefined ? undefined : booleanAttribute(value);\n}\n\ninterface AppearanceInputs {\n size: Signal<ButtonSize | undefined>;\n tone: Signal<ButtonTone | undefined>;\n variant: Signal<ButtonVariant | undefined>;\n}\n\ninterface AppearanceFallback {\n size: ButtonSize;\n tone: ButtonTone;\n variant: ButtonVariant;\n}\n\n/**\n * An explicit input wins over the injected default, and the injected default\n * over the member's own. The three are read in that order rather than merged,\n * so an application that provides only `size` leaves each member the tone and\n * the paint it was designed with.\n */\nexport function resolveAppearance(inputs: AppearanceInputs, fallback: AppearanceFallback) {\n const provided = injectButtonDefaults();\n\n return {\n size: computed(() => inputs.size() ?? provided.size ?? fallback.size),\n tone: computed(() => inputs.tone() ?? provided.tone ?? fallback.tone),\n variant: computed(() => inputs.variant() ?? provided.variant ?? fallback.variant),\n };\n}\n\ninterface InertInputs {\n disabled: Signal<boolean>;\n focusableWhenDisabled: Signal<boolean>;\n loading: Signal<boolean>;\n}\n\n/**\n * Being unavailable and being unreachable are two decisions the platform only\n * offers together. `disabled` takes the control out of the tab sequence, which\n * takes its tooltip and its explanation with it; `aria-disabled` announces the\n * same thing and leaves it reachable, at the price of a refusal the family has\n * to enforce itself.\n *\n * A waiting control is always the second kind. React Aria's pending button and\n * Primer's loading button agree: focus must survive an action the person just\n * started, or the keyboard lands somewhere else mid-task.\n */\nexport function resolveInertness(inputs: InertInputs) {\n return {\n refuses: computed(() => inputs.disabled() || inputs.loading()),\n nativelyDisabled: computed(() => inputs.disabled() && !inputs.focusableWhenDisabled()),\n ariaDisabled: computed(() =>\n (inputs.disabled() && inputs.focusableWhenDisabled()) || inputs.loading() ? 'true' : null,\n ),\n };\n}\n\n/**\n * Whether the ring is drawn yet. The wait itself starts at once — the\n * activation is refused from the first millisecond — but a spinner shown for\n * ninety of them is a flash rather than a status, so the picture can lag the\n * state by as long as the consumer says.\n */\nexport function resolveLoadingIndicator(\n loading: Signal<boolean>,\n loadingDelay: Signal<number>,\n): Signal<boolean> {\n const elapsed = signal(false);\n\n effect((onCleanup) => {\n if (!loading() || loadingDelay() <= 0) {\n elapsed.set(false);\n return;\n }\n const timer = setTimeout(() => elapsed.set(true), loadingDelay());\n onCleanup(() => clearTimeout(timer));\n });\n\n return computed(() => loading() && (loadingDelay() <= 0 || elapsed()));\n}\n\n/**\n * What the member is waiting for, published to the visual slots it projects.\n * A slot is written by the consumer on the consumer's own element, so the\n * button cannot reach into it: it tells the slot instead, and the slot draws\n * the ring over the glyph it holds.\n */\nexport interface ButtonWait {\n readonly waiting: Signal<boolean>;\n /** The family's words in the language in force; the ring is named by `loading`. */\n readonly t: FamilyTranslator<ButtonMessages>;\n /**\n * Whether the control has a start slot. The ring takes the first visual slot\n * the control has, and the two slots are siblings — a sibling cannot be\n * injected — so the member that owns both answers for them.\n */\n readonly hasStart: Signal<boolean>;\n}\n\nexport const BUTTON_WAIT = new InjectionToken<ButtonWait>('slotted button wait');\n\n/**\n * Markers rather than wrappers. The part attribute lands on the element the\n * consumer already wrote, so an absent icon leaves no empty box behind and the\n * rendered tree matches the React binding's exactly.\n *\n * They are components rather than directives because a slot has one thing to\n * render of its own: the ring that stands in for its glyph while the control\n * waits. The glyph is projected under it and fades; it is not taken out, both\n * because Angular cannot take back content the consumer projected and because\n * an element that leaves the flow can move what is beside it.\n */\n@Component({\n selector: '[slButtonStart]',\n standalone: true,\n template: `<ng-content></ng-content>\n @if (drawsRing()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"wait?.t('loading') ?? null\"\n ></span>\n }`,\n styleUrls: ['../../../styles/src/button/button.css', '../../../styles/src/spinner/spinner.css'],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slButtonStart',\n host: { 'data-part': 'start' },\n})\nexport class SlButtonStart {\n protected readonly wait = inject(BUTTON_WAIT, { optional: true });\n protected readonly drawsRing = computed(() => this.wait?.waiting() ?? false);\n}\n\n@Component({\n selector: '[slButtonEnd]',\n standalone: true,\n template: `<ng-content></ng-content>\n @if (drawsRing()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"wait?.t('loading') ?? null\"\n ></span>\n }`,\n styleUrls: ['../../../styles/src/button/button.css', '../../../styles/src/spinner/spinner.css'],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slButtonEnd',\n host: { 'data-part': 'end' },\n})\nexport class SlButtonEnd {\n protected readonly wait = inject(BUTTON_WAIT, { optional: true });\n\n /**\n * The ring takes the first visual slot the control has, so an end slot draws\n * it only when there is no start slot to take it.\n */\n protected readonly drawsRing = computed(\n () => (this.wait?.waiting() ?? false) && !(this.wait?.hasStart() ?? false),\n );\n}\n\ninterface PressedSource {\n pressed: Signal<boolean | undefined>;\n defaultPressed: Signal<boolean | undefined>;\n emit: (request: ChangeRequest<boolean>) => void;\n}\n\n/**\n * The controlled and uncontrolled pair, decided by whether the consumer passed\n * a value. `@slotted/core/state` owns that decision so the two bindings cannot\n * disagree about who holds the value; the signal below is only where an\n * uncontrolled toggle keeps its own.\n */\nexport class PressedState {\n private readonly own: WritableSignal<boolean | undefined> = signal(undefined);\n\n constructor(private readonly source: PressedSource) {}\n\n readonly value = () =>\n this.source.pressed() ?? this.own() ?? this.source.defaultPressed() ?? false;\n\n request(event: Event) {\n const next = !this.value();\n const state = createControllable<boolean>({\n controlled: this.source.pressed(),\n initial: this.value(),\n onRequest: (request) => this.source.emit(request),\n });\n\n if (state.request(next, activationReason(event), event)) this.own.set(next);\n }\n}\n","/**\n * The five colours are tones in `docs/token-foundation.md`, so the axis that\n * selects one is `tone`. `variant` names what it actually selects: how the\n * chosen tone is painted.\n */\nexport const BUTTON_TONES = ['accent', 'secondary', 'success', 'warning', 'danger'] as const;\nexport const BUTTON_VARIANTS = ['solid', 'outline', 'ghost'] as const;\nexport const BUTTON_SIZES = ['sm', 'md', 'lg'] as const;\nexport const BUTTON_SHAPES = ['square', 'circle'] as const;\n\nexport const BUTTON_DEFAULTS = { tone: 'accent', variant: 'solid', size: 'md' } as const;\nexport const BUTTON_LINK_DEFAULTS = BUTTON_DEFAULTS;\nexport const ICON_BUTTON_DEFAULTS = {\n tone: 'secondary',\n variant: 'ghost',\n size: 'md',\n shape: 'square',\n} as const;\nexport const TOGGLE_BUTTON_DEFAULTS = {\n tone: 'secondary',\n variant: 'outline',\n size: 'md',\n} as const;\n\nexport type ButtonTone = (typeof BUTTON_TONES)[number];\nexport type ButtonVariant = (typeof BUTTON_VARIANTS)[number];\nexport type ButtonSize = (typeof BUTTON_SIZES)[number];\nexport type ButtonShape = (typeof BUTTON_SHAPES)[number];\nexport type ButtonType = 'button' | 'submit' | 'reset';\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n input,\n numberAttribute,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { buttonMessages, type ButtonMessages, type PartialMessages } from '@slotted/core/i18n';\n\nimport {\n BUTTON_WAIT,\n blockActivation,\n resolveAppearance,\n resolveInertness,\n resolveLoadingIndicator,\n SlButtonEnd,\n SlButtonStart,\n stateAttribute,\n} from './button-appearance';\nimport type { ButtonWait } from './button-appearance';\nimport {\n BUTTON_DEFAULTS,\n type ButtonSize,\n type ButtonTone,\n type ButtonType,\n type ButtonVariant,\n} from './button.constants';\n\n/**\n * A momentary action. Persistent state belongs to SlToggleButton, and\n * navigation to SlButtonLink, so this member never grows an `aria-pressed` or\n * an `href`.\n *\n * There is no `render` input, and there is no need for one: the component is a\n * directive on the element the consumer wrote, so substituting the element is\n * something the consumer does by writing a different one.\n */\n@Component({\n selector: 'button[slButton]',\n standalone: true,\n template: `<ng-content select=\"[slButtonStart]\"></ng-content\n ><span data-part=\"label\"><ng-content></ng-content></span\n ><ng-content select=\"[slButtonEnd]\"></ng-content>\n @if (waiting() && !hasVisualSlot()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }`,\n styleUrls: ['../../../styles/src/button/button.css', '../../../styles/src/spinner/spinner.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slButton',\n providers: [{ provide: BUTTON_WAIT, useExisting: forwardRef(() => SlButton) }],\n host: {\n 'data-ui': 'button',\n 'data-part': 'root',\n '[attr.aria-disabled]': 'inert.ariaDisabled()',\n '[attr.data-tone]': 'appearance.tone()',\n '[attr.data-variant]': 'appearance.variant()',\n '[attr.data-size]': 'appearance.size()',\n '[attr.data-full-width]': 'stateAttribute(fullWidth())',\n '[attr.data-disabled]': 'stateAttribute(disabled())',\n '[attr.data-loading]': 'stateAttribute(loading())',\n '[disabled]': 'inert.nativelyDisabled()',\n '[attr.type]': 'type()',\n },\n})\nexport class SlButton implements ButtonWait {\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * Keeps an unavailable control in the tab sequence, announcing\n * `aria-disabled` instead of carrying the attribute that removes it. The\n * activation is refused either way.\n */\n readonly focusableWhenDisabled = input(false, { transform: booleanAttribute });\n readonly fullWidth = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n /** How long the wait lasts before the ring is drawn. The refusal is immediate. */\n readonly loadingDelay = input(0, { transform: numberAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: what the\n * ring announces itself as (`loading`). It is a progress bar, so it has a name.\n */\n readonly messages = input<PartialMessages<ButtonMessages> | undefined>(undefined);\n /** The family's words in the language in force, with this button's `messages` laid over them. */\n readonly t = injectMessages(buttonMessages, this.messages);\n readonly size = input<ButtonSize | undefined>(undefined);\n readonly tone = input<ButtonTone | undefined>(undefined);\n readonly type = input<ButtonType>('button');\n readonly variant = input<ButtonVariant | undefined>(undefined);\n\n readonly stateAttribute = stateAttribute;\n protected readonly appearance = resolveAppearance(this, BUTTON_DEFAULTS);\n protected readonly inert = resolveInertness(this);\n readonly waiting = resolveLoadingIndicator(this.loading, this.loadingDelay);\n\n private readonly start = contentChild(SlButtonStart);\n private readonly end = contentChild(SlButtonEnd);\n readonly hasStart = computed(() => this.start() !== undefined);\n /**\n * A control with a visual slot gives the ring that box, and the slot draws\n * it. Only a control with neither draws one of its own, centred over the\n * label the stylesheet then fades.\n */\n protected readonly hasVisualSlot = computed(\n () => this.start() !== undefined || this.end() !== undefined,\n );\n\n /**\n * The capture phase, because a control that is unavailable or still working\n * must refuse the activation before any listener the consumer attached to it\n * can run — including the submit a `type=\"submit\"` button would perform while\n * it keeps its place in the tab sequence.\n */\n constructor() {\n const element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n const listener = (event: Event) => {\n if (this.inert.refuses()) blockActivation(event);\n };\n element.addEventListener('click', listener, { capture: true });\n inject(DestroyRef).onDestroy(() =>\n element.removeEventListener('click', listener, { capture: true }),\n );\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { blockActivation, resolveAppearance, stateAttribute } from './button-appearance';\nimport {\n BUTTON_LINK_DEFAULTS,\n type ButtonSize,\n type ButtonTone,\n type ButtonVariant,\n} from './button.constants';\n\n/**\n * Navigation wearing the action surface. The element is an `a`, so activation,\n * the context menu and every modified click stay the platform's, and Space\n * does not activate it because Space does not activate a link. `routerLink`\n * works on it for the same reason: the component is a directive on the\n * consumer's own anchor.\n *\n * A disabled link keeps no `href`. An anchor that keeps its destination and\n * only blocks `click` still navigates on a middle click and on a modified\n * click; taking the destination away is what actually disables it. It stays in\n * the tab sequence with `role=\"link\"` and `aria-disabled`, because a control a\n * keyboard user cannot reach is one they cannot discover is unavailable.\n */\n@Component({\n selector: 'a[slButtonLink]',\n standalone: true,\n template: `<ng-content select=\"[slButtonStart]\"></ng-content\n ><span data-part=\"label\"><ng-content></ng-content></span\n ><ng-content select=\"[slButtonEnd]\"></ng-content>`,\n styleUrl: '../../../styles/src/button/button.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slButtonLink',\n host: {\n 'data-ui': 'button',\n 'data-part': 'root',\n '[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n '[attr.role]': \"disabled() ? 'link' : null\",\n '[attr.href]': 'disabled() ? null : href()',\n '[attr.tabindex]': 'tabIndex()',\n '[attr.data-tone]': 'appearance.tone()',\n '[attr.data-variant]': 'appearance.variant()',\n '[attr.data-size]': 'appearance.size()',\n '[attr.data-full-width]': 'stateAttribute(fullWidth())',\n '[attr.data-disabled]': 'stateAttribute(disabled())',\n },\n})\nexport class SlButtonLink {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly fullWidth = input(false, { transform: booleanAttribute });\n readonly size = input<ButtonSize | undefined>(undefined);\n readonly tone = input<ButtonTone | undefined>(undefined);\n readonly variant = input<ButtonVariant | undefined>(undefined);\n /**\n * The destination, when the anchor is not driven by a router. A `routerLink`\n * on the same element writes the `href` itself, and this input stays unset.\n */\n readonly href = input<string | undefined>(undefined);\n\n readonly stateAttribute = stateAttribute;\n protected readonly appearance = resolveAppearance(this, BUTTON_LINK_DEFAULTS);\n /**\n * A disabled link keeps its place in the tab sequence: without an `href` the\n * anchor would drop out of it, so the zero is stated rather than inherited.\n */\n readonly tabIndex = computed(() => (this.disabled() ? 0 : null));\n\n constructor() {\n const element = inject(ElementRef<HTMLAnchorElement>).nativeElement;\n const destroyRef = inject(DestroyRef);\n const listen = (type: 'click' | 'auxclick' | 'keydown', listener: EventListener) => {\n element.addEventListener(type, listener, { capture: true });\n destroyRef.onDestroy(() => element.removeEventListener(type, listener, { capture: true }));\n };\n\n listen('click', (event) => this.refuse(event));\n listen('auxclick', (event) => this.refuse(event));\n listen('keydown', (event) => {\n if ((event as KeyboardEvent).key === 'Enter') this.refuse(event);\n });\n }\n\n private refuse(event: Event) {\n if (this.disabled()) blockActivation(event);\n }\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n isDevMode,\n numberAttribute,\n output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { buttonMessages, type ButtonMessages, type PartialMessages } from '@slotted/core/i18n';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport {\n blockActivation,\n optionalBoolean,\n PressedState,\n resolveAppearance,\n resolveInertness,\n resolveLoadingIndicator,\n stateAttribute,\n} from './button-appearance';\nimport {\n ICON_BUTTON_DEFAULTS,\n type ButtonShape,\n type ButtonSize,\n type ButtonTone,\n type ButtonType,\n type ButtonVariant,\n} from './button.constants';\n\n/**\n * The same control as SlButton with no room for a label, so the accessible\n * name is an explicit attribute, checked in development because an attribute\n * cannot be made mandatory by a template.\n *\n * It takes `pressed` directly instead of being paired with a toggle component\n * of its own: its name is already an attribute that must not change with the\n * state, so toggling adds no obligation a separate component would exist to\n * enforce. `aria-pressed` appears only once the consumer opts in.\n *\n * The glyph's own box holds the ring while the control waits: it is already\n * the size of the ring, so nothing moves, and the glyph is the one thing this\n * member can afford to hide, because it carries no name.\n */\n@Component({\n selector: 'button[slIconButton]',\n standalone: true,\n template: `<span data-part=\"icon\"\n ><ng-content></ng-content>\n @if (waiting()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }\n </span>`,\n styleUrls: ['../../../styles/src/button/button.css', '../../../styles/src/spinner/spinner.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slIconButton',\n host: {\n 'data-ui': 'button',\n 'data-part': 'root',\n '[attr.aria-disabled]': 'inert.ariaDisabled()',\n '[attr.aria-pressed]': 'toggles() ? isPressed() : null',\n '[attr.data-tone]': 'appearance.tone()',\n '[attr.data-variant]': 'appearance.variant()',\n '[attr.data-size]': 'appearance.size()',\n '[attr.data-shape]': 'shape()',\n '[attr.data-disabled]': 'stateAttribute(disabled())',\n '[attr.data-loading]': 'stateAttribute(loading())',\n '[attr.data-pressed]': 'stateAttribute(toggles() && isPressed())',\n '[disabled]': 'inert.nativelyDisabled()',\n '[attr.type]': 'type()',\n },\n})\nexport class SlIconButton implements AfterViewInit {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly focusableWhenDisabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly loadingDelay = input(0, { transform: numberAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: what the\n * ring announces itself as (`loading`). It is a progress bar, so it has a name.\n */\n readonly messages = input<PartialMessages<ButtonMessages> | undefined>(undefined);\n /** The family's words in the language in force, with this button's `messages` laid over them. */\n readonly t = injectMessages(buttonMessages, this.messages);\n readonly shape = input<ButtonShape>(ICON_BUTTON_DEFAULTS.shape);\n readonly size = input<ButtonSize | undefined>(undefined);\n readonly tone = input<ButtonTone | undefined>(undefined);\n readonly type = input<ButtonType>('button');\n readonly variant = input<ButtonVariant | undefined>(undefined);\n\n /** Present means controlled, for the life of the component. */\n readonly pressed = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n readonly defaultPressed = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the reason, the originating event and `cancel()`. There is no `[(pressed)]`\n * because a two-way binding has one slot and can carry none of those.\n */\n readonly pressedChange = output<ChangeRequest<boolean>>();\n\n readonly stateAttribute = stateAttribute;\n protected readonly appearance = resolveAppearance(this, ICON_BUTTON_DEFAULTS);\n protected readonly inert = resolveInertness(this);\n readonly waiting = resolveLoadingIndicator(this.loading, this.loadingDelay);\n\n private readonly state = new PressedState({\n pressed: this.pressed,\n defaultPressed: this.defaultPressed,\n emit: (request) => this.pressedChange.emit(request),\n });\n readonly isPressed = computed(() => this.state.value());\n /**\n * Whether the consumer opted into the toggle capability at all. Passing\n * either half of the state model is the opt-in, in both bindings: an icon\n * button that announced `aria-pressed` without one would be announcing a\n * state it does not have.\n */\n readonly toggles = computed(\n () => this.pressed() !== undefined || this.defaultPressed() !== undefined,\n );\n\n private readonly element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * The capture phase, because a control that is unavailable or still working\n * must refuse the activation before any listener the consumer attached to it\n * can run.\n */\n constructor() {\n const capture = (event: Event) => {\n if (this.inert.refuses()) blockActivation(event);\n };\n this.element.addEventListener('click', capture, { capture: true });\n this.destroyRef.onDestroy(() =>\n this.element.removeEventListener('click', capture, { capture: true }),\n );\n }\n\n ngAfterViewInit() {\n /**\n * After the view, not in the constructor. A `(click)` written on the same\n * element is bound when the view is created, so a listener registered any\n * earlier runs first and reads `defaultPrevented` before the consumer has\n * had the chance to set it.\n */\n const activate = (event: Event) => {\n if (this.inert.refuses() || event.defaultPrevented || !this.toggles()) return;\n this.state.request(event);\n };\n this.element.addEventListener('click', activate);\n this.destroyRef.onDestroy(() => this.element.removeEventListener('click', activate));\n\n if (!isDevMode()) return;\n\n const label = this.element.getAttribute('aria-label');\n const labelledBy = this.element.getAttribute('aria-labelledby');\n if (!label?.trim() && !labelledBy?.trim()) {\n throw new Error('SlIconButton requires aria-label or aria-labelledby');\n }\n }\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n input,\n numberAttribute,\n output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { buttonMessages, type ButtonMessages, type PartialMessages } from '@slotted/core/i18n';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport {\n BUTTON_WAIT,\n blockActivation,\n optionalBoolean,\n PressedState,\n resolveAppearance,\n resolveInertness,\n resolveLoadingIndicator,\n SlButtonEnd,\n SlButtonStart,\n stateAttribute,\n} from './button-appearance';\nimport type { ButtonWait } from './button-appearance';\nimport {\n TOGGLE_BUTTON_DEFAULTS,\n type ButtonSize,\n type ButtonTone,\n type ButtonType,\n type ButtonVariant,\n} from './button.constants';\n\n/**\n * A two-state action. The APG is explicit that the label of a toggle must not\n * change with its state — \"Mute\" stays \"Mute\" and the state is announced\n * beside it — so this is a component of its own rather than an input on\n * SlButton: reaching for it is what makes that obligation visible.\n *\n * It waits, because a toggle that persists is the common one: \"Follow\",\n * \"Subscribe\" and \"Watch\" all reach a server before the state is true. While\n * it waits it holds the state it still has, so the person is never shown a\n * value that has not been agreed to.\n */\n@Component({\n selector: 'button[slToggleButton]',\n standalone: true,\n template: `<ng-content select=\"[slButtonStart]\"></ng-content\n ><span data-part=\"label\"><ng-content></ng-content></span\n ><ng-content select=\"[slButtonEnd]\"></ng-content>\n @if (waiting() && !hasVisualSlot()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }`,\n styleUrls: ['../../../styles/src/button/button.css', '../../../styles/src/spinner/spinner.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slToggleButton',\n providers: [{ provide: BUTTON_WAIT, useExisting: forwardRef(() => SlToggleButton) }],\n host: {\n 'data-ui': 'button',\n 'data-part': 'root',\n '[attr.aria-disabled]': 'inert.ariaDisabled()',\n '[attr.aria-pressed]': 'isPressed()',\n '[attr.data-tone]': 'appearance.tone()',\n '[attr.data-variant]': 'appearance.variant()',\n '[attr.data-size]': 'appearance.size()',\n '[attr.data-full-width]': 'stateAttribute(fullWidth())',\n '[attr.data-disabled]': 'stateAttribute(disabled())',\n '[attr.data-loading]': 'stateAttribute(loading())',\n '[attr.data-pressed]': 'stateAttribute(isPressed())',\n '[disabled]': 'inert.nativelyDisabled()',\n '[attr.type]': 'type()',\n },\n})\nexport class SlToggleButton implements AfterViewInit, ButtonWait {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly focusableWhenDisabled = input(false, { transform: booleanAttribute });\n readonly fullWidth = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly loadingDelay = input(0, { transform: numberAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: what the\n * ring announces itself as (`loading`). It is a progress bar, so it has a name.\n */\n readonly messages = input<PartialMessages<ButtonMessages> | undefined>(undefined);\n /** The family's words in the language in force, with this button's `messages` laid over them. */\n readonly t = injectMessages(buttonMessages, this.messages);\n readonly size = input<ButtonSize | undefined>(undefined);\n readonly tone = input<ButtonTone | undefined>(undefined);\n readonly type = input<ButtonType>('button');\n readonly variant = input<ButtonVariant | undefined>(undefined);\n\n /** Present means controlled, for the life of the component. */\n readonly pressed = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n readonly defaultPressed = input(false, { transform: booleanAttribute });\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the reason, the originating event and `cancel()`. There is no\n * `[(pressed)]` because a two-way binding has one slot and cannot carry any\n * of those, and a second output for the same transition would be the same\n * failure stated twice.\n */\n readonly pressedChange = output<ChangeRequest<boolean>>();\n\n readonly stateAttribute = stateAttribute;\n protected readonly appearance = resolveAppearance(this, TOGGLE_BUTTON_DEFAULTS);\n protected readonly inert = resolveInertness(this);\n readonly waiting = resolveLoadingIndicator(this.loading, this.loadingDelay);\n\n private readonly start = contentChild(SlButtonStart);\n private readonly end = contentChild(SlButtonEnd);\n readonly hasStart = computed(() => this.start() !== undefined);\n protected readonly hasVisualSlot = computed(\n () => this.start() !== undefined || this.end() !== undefined,\n );\n\n private readonly state = new PressedState({\n pressed: this.pressed,\n defaultPressed: this.defaultPressed,\n emit: (request) => this.pressedChange.emit(request),\n });\n readonly isPressed = computed(() => this.state.value());\n\n private readonly element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * The capture phase, because a control that is unavailable or still working\n * must refuse the activation before any listener the consumer attached to it\n * can run.\n */\n constructor() {\n const capture = (event: Event) => {\n if (this.inert.refuses()) blockActivation(event);\n };\n this.element.addEventListener('click', capture, { capture: true });\n this.destroyRef.onDestroy(() =>\n this.element.removeEventListener('click', capture, { capture: true }),\n );\n }\n\n /**\n * After the view, not in the constructor. A `(click)` written on the same\n * element is bound when the view is created, so a listener registered any\n * earlier runs first and reads `defaultPrevented` before the consumer has\n * had the chance to set it — and a refused activation would move the state\n * anyway.\n */\n ngAfterViewInit() {\n const listener = (event: Event) => {\n if (this.inert.refuses() || event.defaultPrevented) return;\n this.state.request(event);\n };\n this.element.addEventListener('click', listener);\n this.destroyRef.onDestroy(() => this.element.removeEventListener('click', listener));\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-button.mjs","sources":["../../button/src/button-defaults.ts","../../button/src/button-appearance.ts","../../button/src/button.constants.ts","../../button/src/button.ts","../../button/src/button-link.ts","../../button/src/icon-button.ts","../../button/src/toggle-button.ts","../../button/src/slotted-angular-button.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type { ButtonSize, ButtonTone, ButtonVariant } from './button.constants';\n\n/**\n * What a button paints itself as here, before it states anything of its own.\n *\n * Every axis is optional, and that is the difference from a family with one\n * member. The four members disagree about their own defaults on purpose — a\n * primary action is accent and solid, an icon button is neutral and ghost — so\n * a token that filled every axis would flatten them into one appearance the\n * moment an application set a single value.\n */\nexport interface ButtonDefaults {\n /**\n * Absence is written explicitly rather than left to the optional marker.\n * Under `exactOptionalPropertyTypes` the two are not interchangeable, and an\n * unset axis has to be expressible by a value as well as by a missing key —\n * a provider that computes its defaults cannot omit a property.\n */\n size?: ButtonSize | undefined;\n tone?: ButtonTone | undefined;\n variant?: ButtonVariant | undefined;\n}\n\nexport const BUTTON_DEFAULTS_TOKEN = new InjectionToken<ButtonDefaults>('slotted button defaults', {\n providedIn: 'root',\n factory: (): ButtonDefaults => ({}),\n});\n\n/**\n * An application decides once how its actions are painted and how large they\n * are, rather than repeating three inputs on every button. A button that states\n * an axis itself still wins: an explicit input is never overridden by the\n * token.\n */\nexport function provideButtonDefaults(defaults: ButtonDefaults) {\n return { provide: BUTTON_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectButtonDefaults(): ButtonDefaults {\n return inject(BUTTON_DEFAULTS_TOKEN);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n effect,\n inject,\n InjectionToken,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { Signal, WritableSignal } from '@angular/core';\nimport type { ButtonMessages, FamilyTranslator } from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport type { ButtonSize, ButtonTone, ButtonVariant } from './button.constants';\nimport { injectButtonDefaults } from './button-defaults';\n\n/** A state attribute is present or absent; it never carries a value. */\nexport function stateAttribute(active: boolean) {\n return active ? '' : null;\n}\n\nexport function blockActivation(event: Event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n}\n\n/**\n * A native button fires the same `click` for a pointer, for Space and for\n * Enter, which is exactly why the family uses one — and why the reason a\n * toggle moved has to be recovered from the event. A click synthesised by the\n * keyboard reports no detail; a real one reports the click count.\n */\nexport function activationReason(event: Event): ChangeReason {\n return event instanceof MouseEvent && event.detail > 0 ? 'pointer' : 'keyboard';\n}\n\n/**\n * Absence has to survive the transform. `booleanAttribute` maps an unset input\n * to `false`, and `false` is a value: it would make every icon button announce\n * itself as an unpressed toggle.\n */\nexport function optionalBoolean(value: boolean | string | undefined) {\n return value === undefined ? undefined : booleanAttribute(value);\n}\n\ninterface AppearanceInputs {\n size: Signal<ButtonSize | undefined>;\n tone: Signal<ButtonTone | undefined>;\n variant: Signal<ButtonVariant | undefined>;\n}\n\ninterface AppearanceFallback {\n size: ButtonSize;\n tone: ButtonTone;\n variant: ButtonVariant;\n}\n\n/**\n * An explicit input wins over the injected default, and the injected default\n * over the member's own. The three are read in that order rather than merged,\n * so an application that provides only `size` leaves each member the tone and\n * the paint it was designed with.\n */\nexport function resolveAppearance(inputs: AppearanceInputs, fallback: AppearanceFallback) {\n const provided = injectButtonDefaults();\n\n return {\n size: computed(() => inputs.size() ?? provided.size ?? fallback.size),\n tone: computed(() => inputs.tone() ?? provided.tone ?? fallback.tone),\n variant: computed(() => inputs.variant() ?? provided.variant ?? fallback.variant),\n };\n}\n\ninterface InertInputs {\n disabled: Signal<boolean>;\n focusableWhenDisabled: Signal<boolean>;\n loading: Signal<boolean>;\n}\n\n/**\n * Being unavailable and being unreachable are two decisions the platform only\n * offers together. `disabled` takes the control out of the tab sequence, which\n * takes its tooltip and its explanation with it; `aria-disabled` announces the\n * same thing and leaves it reachable, at the price of a refusal the family has\n * to enforce itself.\n *\n * A waiting control is always the second kind. React Aria's pending button and\n * Primer's loading button agree: focus must survive an action the person just\n * started, or the keyboard lands somewhere else mid-task.\n */\nexport function resolveInertness(inputs: InertInputs) {\n return {\n refuses: computed(() => inputs.disabled() || inputs.loading()),\n nativelyDisabled: computed(() => inputs.disabled() && !inputs.focusableWhenDisabled()),\n ariaDisabled: computed(() =>\n (inputs.disabled() && inputs.focusableWhenDisabled()) || inputs.loading() ? 'true' : null,\n ),\n };\n}\n\n/**\n * Whether the ring is drawn yet. The wait itself starts at once — the\n * activation is refused from the first millisecond — but a spinner shown for\n * ninety of them is a flash rather than a status, so the picture can lag the\n * state by as long as the consumer says.\n */\nexport function resolveLoadingIndicator(\n loading: Signal<boolean>,\n loadingDelay: Signal<number>,\n): Signal<boolean> {\n const elapsed = signal(false);\n\n effect((onCleanup) => {\n if (!loading() || loadingDelay() <= 0) {\n elapsed.set(false);\n return;\n }\n const timer = setTimeout(() => elapsed.set(true), loadingDelay());\n onCleanup(() => clearTimeout(timer));\n });\n\n return computed(() => loading() && (loadingDelay() <= 0 || elapsed()));\n}\n\n/**\n * What the member is waiting for, published to the visual slots it projects.\n * A slot is written by the consumer on the consumer's own element, so the\n * button cannot reach into it: it tells the slot instead, and the slot draws\n * the ring over the glyph it holds.\n */\nexport interface ButtonWait {\n readonly waiting: Signal<boolean>;\n /** The family's words in the language in force; the ring is named by `loading`. */\n readonly t: FamilyTranslator<ButtonMessages>;\n /**\n * Whether the control has a start slot. The ring takes the first visual slot\n * the control has, and the two slots are siblings — a sibling cannot be\n * injected — so the member that owns both answers for them.\n */\n readonly hasStart: Signal<boolean>;\n}\n\nexport const BUTTON_WAIT = new InjectionToken<ButtonWait>('slotted button wait');\n\n/**\n * Markers rather than wrappers. The part attribute lands on the element the\n * consumer already wrote, so an absent icon leaves no empty box behind and the\n * rendered tree matches the React binding's exactly.\n *\n * They are components rather than directives because a slot has one thing to\n * render of its own: the ring that stands in for its glyph while the control\n * waits. The glyph is projected under it and fades; it is not taken out, both\n * because Angular cannot take back content the consumer projected and because\n * an element that leaves the flow can move what is beside it.\n */\n@Component({\n selector: '[slButtonStart]',\n standalone: true,\n template: `<ng-content></ng-content>\n @if (drawsRing()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"wait?.t('loading') ?? null\"\n ></span>\n }`,\n styleUrls: ['../../../styles/src/button/button.css', '../../../styles/src/spinner/spinner.css'],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slButtonStart',\n host: { 'data-part': 'start' },\n})\nexport class SlButtonStart {\n protected readonly wait = inject(BUTTON_WAIT, { optional: true });\n protected readonly drawsRing = computed(() => this.wait?.waiting() ?? false);\n}\n\n@Component({\n selector: '[slButtonEnd]',\n standalone: true,\n template: `<ng-content></ng-content>\n @if (drawsRing()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"wait?.t('loading') ?? null\"\n ></span>\n }`,\n styleUrls: ['../../../styles/src/button/button.css', '../../../styles/src/spinner/spinner.css'],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slButtonEnd',\n host: { 'data-part': 'end' },\n})\nexport class SlButtonEnd {\n protected readonly wait = inject(BUTTON_WAIT, { optional: true });\n\n /**\n * The ring takes the first visual slot the control has, so an end slot draws\n * it only when there is no start slot to take it.\n */\n protected readonly drawsRing = computed(\n () => (this.wait?.waiting() ?? false) && !(this.wait?.hasStart() ?? false),\n );\n}\n\ninterface PressedSource {\n pressed: Signal<boolean | undefined>;\n defaultPressed: Signal<boolean | undefined>;\n emit: (request: ChangeRequest<boolean>) => void;\n}\n\n/**\n * The controlled and uncontrolled pair, decided by whether the consumer passed\n * a value. `@slotted/core/state` owns that decision so the two bindings cannot\n * disagree about who holds the value; the signal below is only where an\n * uncontrolled toggle keeps its own.\n */\nexport class PressedState {\n private readonly own: WritableSignal<boolean | undefined> = signal(undefined);\n\n constructor(private readonly source: PressedSource) {}\n\n readonly value = () =>\n this.source.pressed() ?? this.own() ?? this.source.defaultPressed() ?? false;\n\n request(event: Event) {\n const next = !this.value();\n const state = createControllable<boolean>({\n controlled: this.source.pressed(),\n initial: this.value(),\n onRequest: (request) => this.source.emit(request),\n });\n\n if (state.request(next, activationReason(event), event)) this.own.set(next);\n }\n}\n","/**\n * The five colours are tones in `docs/token-foundation.md`, so the axis that\n * selects one is `tone`. `variant` names what it actually selects: how the\n * chosen tone is painted.\n */\nexport const BUTTON_TONES = [\n 'accent',\n 'secondary',\n 'neutral',\n 'success',\n 'warning',\n 'danger',\n] as const;\nexport const BUTTON_VARIANTS = ['solid', 'outline', 'ghost'] as const;\nexport const BUTTON_SIZES = ['sm', 'md', 'lg'] as const;\nexport const BUTTON_SHAPES = ['square', 'circle'] as const;\nexport const BUTTON_JUSTIFICATIONS = ['center', 'between'] as const;\n\nexport const BUTTON_DEFAULTS = { tone: 'accent', variant: 'solid', size: 'md' } as const;\nexport const BUTTON_LINK_DEFAULTS = BUTTON_DEFAULTS;\nexport const ICON_BUTTON_DEFAULTS = {\n tone: 'secondary',\n variant: 'ghost',\n size: 'md',\n shape: 'square',\n} as const;\nexport const TOGGLE_BUTTON_DEFAULTS = {\n tone: 'secondary',\n variant: 'outline',\n size: 'md',\n} as const;\n\nexport type ButtonTone = (typeof BUTTON_TONES)[number];\nexport type ButtonVariant = (typeof BUTTON_VARIANTS)[number];\nexport type ButtonSize = (typeof BUTTON_SIZES)[number];\nexport type ButtonShape = (typeof BUTTON_SHAPES)[number];\nexport type ButtonJustify = (typeof BUTTON_JUSTIFICATIONS)[number];\nexport type ButtonType = 'button' | 'submit' | 'reset';\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n input,\n numberAttribute,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { buttonMessages, type ButtonMessages, type PartialMessages } from '@slotted/core/i18n';\n\nimport {\n BUTTON_WAIT,\n blockActivation,\n resolveAppearance,\n resolveInertness,\n resolveLoadingIndicator,\n SlButtonEnd,\n SlButtonStart,\n stateAttribute,\n} from './button-appearance';\nimport type { ButtonWait } from './button-appearance';\nimport {\n BUTTON_DEFAULTS,\n type ButtonJustify,\n type ButtonSize,\n type ButtonTone,\n type ButtonType,\n type ButtonVariant,\n} from './button.constants';\n\n/**\n * A momentary action. Persistent state belongs to SlToggleButton, and\n * navigation to SlButtonLink, so this member never grows an `aria-pressed` or\n * an `href`.\n *\n * There is no `render` input, and there is no need for one: the component is a\n * directive on the element the consumer wrote, so substituting the element is\n * something the consumer does by writing a different one.\n */\n@Component({\n selector: 'button[slButton]',\n standalone: true,\n template: `<ng-content select=\"[slButtonStart]\"></ng-content\n ><span data-part=\"label\"><ng-content></ng-content></span\n ><ng-content select=\"[slButtonEnd]\"></ng-content>\n @if (waiting() && !hasVisualSlot()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }`,\n styleUrls: ['../../../styles/src/button/button.css', '../../../styles/src/spinner/spinner.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slButton',\n providers: [{ provide: BUTTON_WAIT, useExisting: forwardRef(() => SlButton) }],\n host: {\n 'data-ui': 'button',\n 'data-part': 'root',\n '[attr.aria-disabled]': 'inert.ariaDisabled()',\n '[attr.data-tone]': 'appearance.tone()',\n '[attr.data-variant]': 'appearance.variant()',\n '[attr.data-size]': 'appearance.size()',\n '[attr.data-full-width]': 'stateAttribute(fullWidth())',\n '[attr.data-justify]': 'justify()',\n '[attr.data-disabled]': 'stateAttribute(disabled())',\n '[attr.data-loading]': 'stateAttribute(loading())',\n '[disabled]': 'inert.nativelyDisabled()',\n '[attr.type]': 'type()',\n },\n})\nexport class SlButton implements ButtonWait {\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * Keeps an unavailable control in the tab sequence, announcing\n * `aria-disabled` instead of carrying the attribute that removes it. The\n * activation is refused either way.\n */\n readonly focusableWhenDisabled = input(false, { transform: booleanAttribute });\n readonly fullWidth = input(false, { transform: booleanAttribute });\n /**\n * Where the content sits along the inline axis. `between` sets the label at\n * the start and the end slot at the inline end, as a field trigger reads;\n * the start slot stays beside the label.\n */\n readonly justify = input<ButtonJustify>('center');\n readonly loading = input(false, { transform: booleanAttribute });\n /** How long the wait lasts before the ring is drawn. The refusal is immediate. */\n readonly loadingDelay = input(0, { transform: numberAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: what the\n * ring announces itself as (`loading`). It is a progress bar, so it has a name.\n */\n readonly messages = input<PartialMessages<ButtonMessages> | undefined>(undefined);\n /** The family's words in the language in force, with this button's `messages` laid over them. */\n readonly t = injectMessages(buttonMessages, this.messages);\n readonly size = input<ButtonSize | undefined>(undefined);\n readonly tone = input<ButtonTone | undefined>(undefined);\n readonly type = input<ButtonType>('button');\n readonly variant = input<ButtonVariant | undefined>(undefined);\n\n readonly stateAttribute = stateAttribute;\n protected readonly appearance = resolveAppearance(this, BUTTON_DEFAULTS);\n protected readonly inert = resolveInertness(this);\n readonly waiting = resolveLoadingIndicator(this.loading, this.loadingDelay);\n\n private readonly start = contentChild(SlButtonStart);\n private readonly end = contentChild(SlButtonEnd);\n readonly hasStart = computed(() => this.start() !== undefined);\n /**\n * A control with a visual slot gives the ring that box, and the slot draws\n * it. Only a control with neither draws one of its own, centred over the\n * label the stylesheet then fades.\n */\n protected readonly hasVisualSlot = computed(\n () => this.start() !== undefined || this.end() !== undefined,\n );\n\n /**\n * The capture phase, because a control that is unavailable or still working\n * must refuse the activation before any listener the consumer attached to it\n * can run — including the submit a `type=\"submit\"` button would perform while\n * it keeps its place in the tab sequence.\n */\n constructor() {\n const element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n const listener = (event: Event) => {\n if (this.inert.refuses()) blockActivation(event);\n };\n element.addEventListener('click', listener, { capture: true });\n inject(DestroyRef).onDestroy(() =>\n element.removeEventListener('click', listener, { capture: true }),\n );\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { blockActivation, resolveAppearance, stateAttribute } from './button-appearance';\nimport {\n BUTTON_LINK_DEFAULTS,\n type ButtonJustify,\n type ButtonSize,\n type ButtonTone,\n type ButtonVariant,\n} from './button.constants';\n\n/**\n * Navigation wearing the action surface. The element is an `a`, so activation,\n * the context menu and every modified click stay the platform's, and Space\n * does not activate it because Space does not activate a link. `routerLink`\n * works on it for the same reason: the component is a directive on the\n * consumer's own anchor.\n *\n * A disabled link keeps no `href`. An anchor that keeps its destination and\n * only blocks `click` still navigates on a middle click and on a modified\n * click; taking the destination away is what actually disables it. It stays in\n * the tab sequence with `role=\"link\"` and `aria-disabled`, because a control a\n * keyboard user cannot reach is one they cannot discover is unavailable.\n */\n@Component({\n selector: 'a[slButtonLink]',\n standalone: true,\n template: `<ng-content select=\"[slButtonStart]\"></ng-content\n ><span data-part=\"label\"><ng-content></ng-content></span\n ><ng-content select=\"[slButtonEnd]\"></ng-content>`,\n styleUrl: '../../../styles/src/button/button.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slButtonLink',\n host: {\n 'data-ui': 'button',\n 'data-part': 'root',\n '[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n '[attr.role]': \"disabled() ? 'link' : null\",\n '[attr.href]': 'disabled() ? null : href()',\n '[attr.tabindex]': 'tabIndex()',\n '[attr.data-tone]': 'appearance.tone()',\n '[attr.data-variant]': 'appearance.variant()',\n '[attr.data-size]': 'appearance.size()',\n '[attr.data-full-width]': 'stateAttribute(fullWidth())',\n '[attr.data-justify]': 'justify()',\n '[attr.data-disabled]': 'stateAttribute(disabled())',\n },\n})\nexport class SlButtonLink {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly fullWidth = input(false, { transform: booleanAttribute });\n /**\n * Where the content sits along the inline axis. `between` sets the label at\n * the start and the end slot at the inline end, as a field trigger reads;\n * the start slot stays beside the label.\n */\n readonly justify = input<ButtonJustify>('center');\n readonly size = input<ButtonSize | undefined>(undefined);\n readonly tone = input<ButtonTone | undefined>(undefined);\n readonly variant = input<ButtonVariant | undefined>(undefined);\n /**\n * The destination, when the anchor is not driven by a router. A `routerLink`\n * on the same element writes the `href` itself, and this input stays unset.\n */\n readonly href = input<string | undefined>(undefined);\n\n readonly stateAttribute = stateAttribute;\n protected readonly appearance = resolveAppearance(this, BUTTON_LINK_DEFAULTS);\n /**\n * A disabled link keeps its place in the tab sequence: without an `href` the\n * anchor would drop out of it, so the zero is stated rather than inherited.\n */\n readonly tabIndex = computed(() => (this.disabled() ? 0 : null));\n\n constructor() {\n const element = inject(ElementRef<HTMLAnchorElement>).nativeElement;\n const destroyRef = inject(DestroyRef);\n const listen = (type: 'click' | 'auxclick' | 'keydown', listener: EventListener) => {\n element.addEventListener(type, listener, { capture: true });\n destroyRef.onDestroy(() => element.removeEventListener(type, listener, { capture: true }));\n };\n\n listen('click', (event) => this.refuse(event));\n listen('auxclick', (event) => this.refuse(event));\n listen('keydown', (event) => {\n if ((event as KeyboardEvent).key === 'Enter') this.refuse(event);\n });\n }\n\n private refuse(event: Event) {\n if (this.disabled()) blockActivation(event);\n }\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n isDevMode,\n numberAttribute,\n output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { buttonMessages, type ButtonMessages, type PartialMessages } from '@slotted/core/i18n';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport {\n blockActivation,\n optionalBoolean,\n PressedState,\n resolveAppearance,\n resolveInertness,\n resolveLoadingIndicator,\n stateAttribute,\n} from './button-appearance';\nimport {\n ICON_BUTTON_DEFAULTS,\n type ButtonShape,\n type ButtonSize,\n type ButtonTone,\n type ButtonType,\n type ButtonVariant,\n} from './button.constants';\n\n/**\n * The same control as SlButton with no room for a label, so the accessible\n * name is an explicit attribute, checked in development because an attribute\n * cannot be made mandatory by a template.\n *\n * It takes `pressed` directly instead of being paired with a toggle component\n * of its own: its name is already an attribute that must not change with the\n * state, so toggling adds no obligation a separate component would exist to\n * enforce. `aria-pressed` appears only once the consumer opts in.\n *\n * The glyph's own box holds the ring while the control waits: it is already\n * the size of the ring, so nothing moves, and the glyph is the one thing this\n * member can afford to hide, because it carries no name.\n */\n@Component({\n selector: 'button[slIconButton]',\n standalone: true,\n template: `<span data-part=\"icon\"\n ><ng-content></ng-content>\n @if (waiting()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }\n </span>`,\n styleUrls: ['../../../styles/src/button/button.css', '../../../styles/src/spinner/spinner.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slIconButton',\n host: {\n 'data-ui': 'button',\n 'data-part': 'root',\n '[attr.aria-disabled]': 'inert.ariaDisabled()',\n '[attr.aria-pressed]': 'toggles() ? isPressed() : null',\n '[attr.data-tone]': 'appearance.tone()',\n '[attr.data-variant]': 'appearance.variant()',\n '[attr.data-size]': 'appearance.size()',\n '[attr.data-shape]': 'shape()',\n '[attr.data-disabled]': 'stateAttribute(disabled())',\n '[attr.data-loading]': 'stateAttribute(loading())',\n '[attr.data-pressed]': 'stateAttribute(toggles() && isPressed())',\n '[disabled]': 'inert.nativelyDisabled()',\n '[attr.type]': 'type()',\n },\n})\nexport class SlIconButton implements AfterViewInit {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly focusableWhenDisabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly loadingDelay = input(0, { transform: numberAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: what the\n * ring announces itself as (`loading`). It is a progress bar, so it has a name.\n */\n readonly messages = input<PartialMessages<ButtonMessages> | undefined>(undefined);\n /** The family's words in the language in force, with this button's `messages` laid over them. */\n readonly t = injectMessages(buttonMessages, this.messages);\n readonly shape = input<ButtonShape>(ICON_BUTTON_DEFAULTS.shape);\n readonly size = input<ButtonSize | undefined>(undefined);\n readonly tone = input<ButtonTone | undefined>(undefined);\n readonly type = input<ButtonType>('button');\n readonly variant = input<ButtonVariant | undefined>(undefined);\n\n /** Present means controlled, for the life of the component. */\n readonly pressed = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n readonly defaultPressed = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the reason, the originating event and `cancel()`. There is no `[(pressed)]`\n * because a two-way binding has one slot and can carry none of those.\n */\n readonly pressedChange = output<ChangeRequest<boolean>>();\n\n readonly stateAttribute = stateAttribute;\n protected readonly appearance = resolveAppearance(this, ICON_BUTTON_DEFAULTS);\n protected readonly inert = resolveInertness(this);\n readonly waiting = resolveLoadingIndicator(this.loading, this.loadingDelay);\n\n private readonly state = new PressedState({\n pressed: this.pressed,\n defaultPressed: this.defaultPressed,\n emit: (request) => this.pressedChange.emit(request),\n });\n readonly isPressed = computed(() => this.state.value());\n /**\n * Whether the consumer opted into the toggle capability at all. Passing\n * either half of the state model is the opt-in, in both bindings: an icon\n * button that announced `aria-pressed` without one would be announcing a\n * state it does not have.\n */\n readonly toggles = computed(\n () => this.pressed() !== undefined || this.defaultPressed() !== undefined,\n );\n\n private readonly element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * The capture phase, because a control that is unavailable or still working\n * must refuse the activation before any listener the consumer attached to it\n * can run.\n */\n constructor() {\n const capture = (event: Event) => {\n if (this.inert.refuses()) blockActivation(event);\n };\n this.element.addEventListener('click', capture, { capture: true });\n this.destroyRef.onDestroy(() =>\n this.element.removeEventListener('click', capture, { capture: true }),\n );\n }\n\n ngAfterViewInit() {\n /**\n * After the view, not in the constructor. A `(click)` written on the same\n * element is bound when the view is created, so a listener registered any\n * earlier runs first and reads `defaultPrevented` before the consumer has\n * had the chance to set it.\n */\n const activate = (event: Event) => {\n if (this.inert.refuses() || event.defaultPrevented || !this.toggles()) return;\n this.state.request(event);\n };\n this.element.addEventListener('click', activate);\n this.destroyRef.onDestroy(() => this.element.removeEventListener('click', activate));\n\n if (!isDevMode()) return;\n\n const label = this.element.getAttribute('aria-label');\n const labelledBy = this.element.getAttribute('aria-labelledby');\n if (!label?.trim() && !labelledBy?.trim()) {\n throw new Error('SlIconButton requires aria-label or aria-labelledby');\n }\n }\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n input,\n numberAttribute,\n output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { buttonMessages, type ButtonMessages, type PartialMessages } from '@slotted/core/i18n';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport {\n BUTTON_WAIT,\n blockActivation,\n optionalBoolean,\n PressedState,\n resolveAppearance,\n resolveInertness,\n resolveLoadingIndicator,\n SlButtonEnd,\n SlButtonStart,\n stateAttribute,\n} from './button-appearance';\nimport type { ButtonWait } from './button-appearance';\nimport {\n TOGGLE_BUTTON_DEFAULTS,\n type ButtonJustify,\n type ButtonSize,\n type ButtonTone,\n type ButtonType,\n type ButtonVariant,\n} from './button.constants';\n\n/**\n * A two-state action. The APG is explicit that the label of a toggle must not\n * change with its state — \"Mute\" stays \"Mute\" and the state is announced\n * beside it — so this is a component of its own rather than an input on\n * SlButton: reaching for it is what makes that obligation visible.\n *\n * It waits, because a toggle that persists is the common one: \"Follow\",\n * \"Subscribe\" and \"Watch\" all reach a server before the state is true. While\n * it waits it holds the state it still has, so the person is never shown a\n * value that has not been agreed to.\n */\n@Component({\n selector: 'button[slToggleButton]',\n standalone: true,\n template: `<ng-content select=\"[slButtonStart]\"></ng-content\n ><span data-part=\"label\"><ng-content></ng-content></span\n ><ng-content select=\"[slButtonEnd]\"></ng-content>\n @if (waiting() && !hasVisualSlot()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }`,\n styleUrls: ['../../../styles/src/button/button.css', '../../../styles/src/spinner/spinner.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slToggleButton',\n providers: [{ provide: BUTTON_WAIT, useExisting: forwardRef(() => SlToggleButton) }],\n host: {\n 'data-ui': 'button',\n 'data-part': 'root',\n '[attr.aria-disabled]': 'inert.ariaDisabled()',\n '[attr.aria-pressed]': 'isPressed()',\n '[attr.data-tone]': 'appearance.tone()',\n '[attr.data-variant]': 'appearance.variant()',\n '[attr.data-size]': 'appearance.size()',\n '[attr.data-full-width]': 'stateAttribute(fullWidth())',\n '[attr.data-justify]': 'justify()',\n '[attr.data-disabled]': 'stateAttribute(disabled())',\n '[attr.data-loading]': 'stateAttribute(loading())',\n '[attr.data-pressed]': 'stateAttribute(isPressed())',\n '[disabled]': 'inert.nativelyDisabled()',\n '[attr.type]': 'type()',\n },\n})\nexport class SlToggleButton implements AfterViewInit, ButtonWait {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly focusableWhenDisabled = input(false, { transform: booleanAttribute });\n readonly fullWidth = input(false, { transform: booleanAttribute });\n /**\n * Where the content sits along the inline axis. `between` sets the label at\n * the start and the end slot at the inline end, as a field trigger reads;\n * the start slot stays beside the label.\n */\n readonly justify = input<ButtonJustify>('center');\n readonly loading = input(false, { transform: booleanAttribute });\n readonly loadingDelay = input(0, { transform: numberAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: what the\n * ring announces itself as (`loading`). It is a progress bar, so it has a name.\n */\n readonly messages = input<PartialMessages<ButtonMessages> | undefined>(undefined);\n /** The family's words in the language in force, with this button's `messages` laid over them. */\n readonly t = injectMessages(buttonMessages, this.messages);\n readonly size = input<ButtonSize | undefined>(undefined);\n readonly tone = input<ButtonTone | undefined>(undefined);\n readonly type = input<ButtonType>('button');\n readonly variant = input<ButtonVariant | undefined>(undefined);\n\n /** Present means controlled, for the life of the component. */\n readonly pressed = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: optionalBoolean,\n });\n readonly defaultPressed = input(false, { transform: booleanAttribute });\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the reason, the originating event and `cancel()`. There is no\n * `[(pressed)]` because a two-way binding has one slot and cannot carry any\n * of those, and a second output for the same transition would be the same\n * failure stated twice.\n */\n readonly pressedChange = output<ChangeRequest<boolean>>();\n\n readonly stateAttribute = stateAttribute;\n protected readonly appearance = resolveAppearance(this, TOGGLE_BUTTON_DEFAULTS);\n protected readonly inert = resolveInertness(this);\n readonly waiting = resolveLoadingIndicator(this.loading, this.loadingDelay);\n\n private readonly start = contentChild(SlButtonStart);\n private readonly end = contentChild(SlButtonEnd);\n readonly hasStart = computed(() => this.start() !== undefined);\n protected readonly hasVisualSlot = computed(\n () => this.start() !== undefined || this.end() !== undefined,\n );\n\n private readonly state = new PressedState({\n pressed: this.pressed,\n defaultPressed: this.defaultPressed,\n emit: (request) => this.pressedChange.emit(request),\n });\n readonly isPressed = computed(() => this.state.value());\n\n private readonly element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * The capture phase, because a control that is unavailable or still working\n * must refuse the activation before any listener the consumer attached to it\n * can run.\n */\n constructor() {\n const capture = (event: Event) => {\n if (this.inert.refuses()) blockActivation(event);\n };\n this.element.addEventListener('click', capture, { capture: true });\n this.destroyRef.onDestroy(() =>\n this.element.removeEventListener('click', capture, { capture: true }),\n );\n }\n\n /**\n * After the view, not in the constructor. A `(click)` written on the same\n * element is bound when the view is created, so a listener registered any\n * earlier runs first and reads `defaultPrevented` before the consumer has\n * had the chance to set it — and a refused activation would move the state\n * anyway.\n */\n ngAfterViewInit() {\n const listener = (event: Event) => {\n if (this.inert.refuses() || event.defaultPrevented) return;\n this.state.request(event);\n };\n this.element.addEventListener('click', listener);\n this.destroyRef.onDestroy(() => this.element.removeEventListener('click', listener));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAyBa,qBAAqB,GAAG,IAAI,cAAc,CAAiB,yBAAyB,EAAE;AACjG,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,OAAuB,EAAE,CAAC;AACpC,CAAA;AAED;;;;;AAKG;AACG,SAAU,qBAAqB,CAAC,QAAwB,EAAA;IAC5D,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC/D;SAEgB,oBAAoB,GAAA;AAClC,IAAA,OAAO,MAAM,CAAC,qBAAqB,CAAC;AACtC;;ACxBA;AACM,SAAU,cAAc,CAAC,MAAe,EAAA;IAC5C,OAAO,MAAM,GAAG,EAAE,GAAG,IAAI;AAC3B;AAEM,SAAU,eAAe,CAAC,KAAY,EAAA;IAC1C,KAAK,CAAC,cAAc,EAAE;IACtB,KAAK,CAAC,wBAAwB,EAAE;IAChC,KAAK,CAAC,eAAe,EAAE;AACzB;AAEA;;;;;AAKG;AACG,SAAU,gBAAgB,CAAC,KAAY,EAAA;AAC3C,IAAA,OAAO,KAAK,YAAY,UAAU,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,UAAU;AACjF;AAEA;;;;AAIG;AACG,SAAU,eAAe,CAAC,KAAmC,EAAA;AACjE,IAAA,OAAO,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC;AAClE;AAcA;;;;;AAKG;AACG,SAAU,iBAAiB,CAAC,MAAwB,EAAE,QAA4B,EAAA;AACtF,IAAA,MAAM,QAAQ,GAAG,oBAAoB,EAAE;IAEvC,OAAO;AACL,QAAA,IAAI,EAAE,QAAQ,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;AACrE,QAAA,IAAI,EAAE,QAAQ,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;AACrE,QAAA,OAAO,EAAE,QAAQ,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;KAClF;AACH;AAQA;;;;;;;;;;AAUG;AACG,SAAU,gBAAgB,CAAC,MAAmB,EAAA;IAClD,OAAO;AACL,QAAA,OAAO,EAAE,QAAQ,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;AAC9D,QAAA,gBAAgB,EAAE,QAAQ,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;AACtF,QAAA,YAAY,EAAE,QAAQ,CAAC,MACrB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,qBAAqB,EAAE,KAAK,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAC1F;KACF;AACH;AAEA;;;;;AAKG;AACG,SAAU,uBAAuB,CACrC,OAAwB,EACxB,YAA4B,EAAA;AAE5B,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK;gFAAC;AAE7B,IAAA,MAAM,CAAC,CAAC,SAAS,KAAI;QACnB,IAAI,CAAC,OAAO,EAAE,IAAI,YAAY,EAAE,IAAI,CAAC,EAAE;AACrC,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAClB;QACF;AACA,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC;QACjE,SAAS,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;AACtC,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,QAAQ,CAAC,MAAM,OAAO,EAAE,KAAK,YAAY,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;AACxE;MAoBa,WAAW,GAAG,IAAI,cAAc,CAAa,qBAAqB;AAE/E;;;;;;;;;;AAUG;MAkBU,aAAa,CAAA;IACL,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC9C,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK;kFAAC;uGAFjE,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdd,CAAA;;;;;;;;AAQN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,usWAAA,EAAA,i2FAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAMO,aAAa,EAAA,UAAA,EAAA,CAAA;kBAjBzB,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,QAAA,EACN,CAAA;;;;;;;;MAQN,EAAA,aAAA,EAEW,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,eAAe,QACnB,EAAE,WAAW,EAAE,OAAO,EAAE,EAAA,MAAA,EAAA,CAAA,usWAAA,EAAA,i2FAAA,CAAA,EAAA;;MAwBnB,WAAW,CAAA;IACH,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEjE;;;AAGG;IACgB,SAAS,GAAG,QAAQ,CACrC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC;kFAC3E;uGATU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,KAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdZ,CAAA;;;;;;;;AAQN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,usWAAA,EAAA,i2FAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAMO,WAAW,EAAA,UAAA,EAAA,CAAA;kBAjBvB,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,QAAA,EACN,CAAA;;;;;;;;MAQN,EAAA,aAAA,EAEW,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,aAAa,QACjB,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,MAAA,EAAA,CAAA,usWAAA,EAAA,i2FAAA,CAAA,EAAA;;AAoB9B;;;;;AAKG;MACU,YAAY,CAAA;AAGM,IAAA,MAAA;IAFZ,GAAG,GAAwC,MAAM,CAAC,SAAS;4EAAC;AAE7E,IAAA,WAAA,CAA6B,MAAqB,EAAA;QAArB,IAAA,CAAA,MAAM,GAAN,MAAM;IAAkB;IAE5C,KAAK,GAAG,MACf,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,KAAK;AAE9E,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;QAC1B,MAAM,KAAK,GAAG,kBAAkB,CAAU;AACxC,YAAA,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACjC,YAAA,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE;AACrB,YAAA,SAAS,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAClD,SAAA,CAAC;AAEF,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7E;AACD;;AC/OD;;;;AAIG;AACI,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,WAAW;IACX,SAAS;IACT,SAAS;IACT,SAAS;IACT,QAAQ;CACA;AACH,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAU;AAC9D,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU;AAChD,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU;AACnD,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAU;AAE5D,MAAM,eAAe,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAW;AACjF,MAAM,oBAAoB,GAAG,eAAe;AAC5C,MAAM,oBAAoB,GAAG;AAClC,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,KAAK,EAAE,QAAQ;CACP;AACH,MAAM,sBAAsB,GAAG;AACpC,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,IAAI;CACF;;ACOV;;;;;;;;AAQG;MAmCU,QAAQ,CAAA;IACV,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACjE;;;;AAIG;IACM,qBAAqB,GAAG,KAAK,CAAC,KAAK,6FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACrE,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAClE;;;;AAIG;IACM,OAAO,GAAG,KAAK,CAAgB,QAAQ;gFAAC;IACxC,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;IAEvD,YAAY,GAAG,KAAK,CAAC,CAAC,oFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAChE;;;AAGG;IACM,QAAQ,GAAG,KAAK,CAA8C,SAAS;iFAAC;;IAExE,CAAC,GAAG,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC;IACjD,IAAI,GAAG,KAAK,CAAyB,SAAS;6EAAC;IAC/C,IAAI,GAAG,KAAK,CAAyB,SAAS;6EAAC;IAC/C,IAAI,GAAG,KAAK,CAAa,QAAQ;6EAAC;IAClC,OAAO,GAAG,KAAK,CAA4B,SAAS;gFAAC;IAErD,cAAc,GAAG,cAAc;AACrB,IAAA,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC;AACrD,IAAA,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC;IACxC,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;IAE1D,KAAK,GAAG,YAAY,CAAC,aAAa;8EAAC;IACnC,GAAG,GAAG,YAAY,CAAC,WAAW;4EAAC;IACvC,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS;iFAAC;AAC9D;;;;AAIG;AACgB,IAAA,aAAa,GAAG,QAAQ,CACzC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,SAAS;sFAC7D;AAED;;;;;AAKG;AACH,IAAA,WAAA,GAAA;QACE,MAAM,OAAO,GAAG,MAAM,EAAC,UAA6B,EAAC,CAAC,aAAa;AACnE,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAY,KAAI;AAChC,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;gBAAE,eAAe,CAAC,KAAK,CAAC;AAClD,QAAA,CAAC;AACD,QAAA,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9D,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAC3B,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAClE;IACH;uGA9DW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,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,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,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,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,EAAA,SAAA,EAhBR,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,QAAQ,CAAC,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAmDxC,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACf,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnErC,CAAA;;;;;;;;;;AAUN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,usWAAA,EAAA,i2FAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAqBO,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAlCpB,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,QAAA,EACN,CAAA;;;;;;;;;;MAUN,EAAA,eAAA,EAEa,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,UAAU,EAAA,SAAA,EACT,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,QAAS,CAAC,EAAE,CAAC,EAAA,IAAA,EACxE;AACJ,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,sBAAsB,EAAE,sBAAsB;AAC9C,wBAAA,kBAAkB,EAAE,mBAAmB;AACvC,wBAAA,qBAAqB,EAAE,sBAAsB;AAC7C,wBAAA,kBAAkB,EAAE,mBAAmB;AACvC,wBAAA,wBAAwB,EAAE,6BAA6B;AACvD,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,qBAAqB,EAAE,2BAA2B;AAClD,wBAAA,YAAY,EAAE,0BAA0B;AACxC,wBAAA,aAAa,EAAE,QAAQ;AACxB,qBAAA,EAAA,MAAA,EAAA,CAAA,usWAAA,EAAA,i2FAAA,CAAA,EAAA;AAqCqC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,aAAa,qFACf,WAAW,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC/FjD;;;;;;;;;;;;AAYG;MA0BU,YAAY,CAAA;IACd,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAClE;;;;AAIG;IACM,OAAO,GAAG,KAAK,CAAgB,QAAQ;gFAAC;IACxC,IAAI,GAAG,KAAK,CAAyB,SAAS;6EAAC;IAC/C,IAAI,GAAG,KAAK,CAAyB,SAAS;6EAAC;IAC/C,OAAO,GAAG,KAAK,CAA4B,SAAS;gFAAC;AAC9D;;;AAGG;IACM,IAAI,GAAG,KAAK,CAAqB,SAAS;6EAAC;IAE3C,cAAc,GAAG,cAAc;AACrB,IAAA,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,CAAC;AAC7E;;;AAGG;AACM,IAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;iFAAC;AAEhE,IAAA,WAAA,GAAA;QACE,MAAM,OAAO,GAAG,MAAM,EAAC,UAA6B,EAAC,CAAC,aAAa;AACnE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,QAAA,MAAM,MAAM,GAAG,CAAC,IAAsC,EAAE,QAAuB,KAAI;AACjF,YAAA,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3D,UAAU,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5F,QAAA,CAAC;AAED,QAAA,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjD,QAAA,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,KAAI;AAC1B,YAAA,IAAK,KAAuB,CAAC,GAAG,KAAK,OAAO;AAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAClE,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,MAAM,CAAC,KAAY,EAAA;QACzB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE,eAAe,CAAC,KAAK,CAAC;IAC7C;uGA3CW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtBb,CAAA;;AAE0C,qDAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,usWAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAoBzC,YAAY,EAAA,UAAA,EAAA,CAAA;kBAzBxB,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,QAAA,EACN,CAAA;;sDAE0C,EAAA,eAAA,EAEnC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,cAAc,EAAA,IAAA,EAClB;AACJ,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,aAAa,EAAE,4BAA4B;AAC3C,wBAAA,aAAa,EAAE,4BAA4B;AAC3C,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,kBAAkB,EAAE,mBAAmB;AACvC,wBAAA,qBAAqB,EAAE,sBAAsB;AAC7C,wBAAA,kBAAkB,EAAE,mBAAmB;AACvC,wBAAA,wBAAwB,EAAE,6BAA6B;AACvD,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,sBAAsB,EAAE,4BAA4B;AACrD,qBAAA,EAAA,MAAA,EAAA,CAAA,usWAAA,CAAA,EAAA;;;ACpBH;;;;;;;;;;;;;AAaG;MAmCU,YAAY,CAAA;IACd,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,qBAAqB,GAAG,KAAK,CAAC,KAAK,6FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACrE,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACvD,YAAY,GAAG,KAAK,CAAC,CAAC,oFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAChE;;;AAGG;IACM,QAAQ,GAAG,KAAK,CAA8C,SAAS;iFAAC;;IAExE,CAAC,GAAG,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC;AACjD,IAAA,KAAK,GAAG,KAAK,CAAc,oBAAoB,CAAC,KAAK;8EAAC;IACtD,IAAI,GAAG,KAAK,CAAyB,SAAS;6EAAC;IAC/C,IAAI,GAAG,KAAK,CAAyB,SAAS;6EAAC;IAC/C,IAAI,GAAG,KAAK,CAAa,QAAQ;6EAAC;IAClC,OAAO,GAAG,KAAK,CAA4B,SAAS;gFAAC;;IAGrD,OAAO,GAAG,KAAK,CAAoD,SAAS,+EACnF,SAAS,EAAE,eAAe,EAAA,CAC1B;IACO,cAAc,GAAG,KAAK,CAAoD,SAAS,sFAC1F,SAAS,EAAE,eAAe,EAAA,CAC1B;AACF;;;;AAIG;IACM,aAAa,GAAG,MAAM,EAA0B;IAEhD,cAAc,GAAG,cAAc;AACrB,IAAA,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,CAAC;AAC1D,IAAA,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC;IACxC,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;IAE1D,KAAK,GAAG,IAAI,YAAY,CAAC;QACxC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,cAAc,EAAE,IAAI,CAAC,cAAc;AACnC,QAAA,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AACpD,KAAA,CAAC;IACO,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;kFAAC;AACvD;;;;;AAKG;AACM,IAAA,OAAO,GAAG,QAAQ,CACzB,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,SAAS;gFAC1E;IAEgB,OAAO,GAAG,MAAM,EAAC,UAA6B,EAAC,CAAC,aAAa;AAE7D,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhD;;;;AAIG;AACH,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,OAAO,GAAG,CAAC,KAAY,KAAI;AAC/B,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;gBAAE,eAAe,CAAC,KAAK,CAAC;AAClD,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MACxB,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CACtE;IACH;IAEA,eAAe,GAAA;AACb;;;;;AAKG;AACH,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAY,KAAI;AAChC,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBAAE;AACvE,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3B,QAAA,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;AAChD,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEpF,IAAI,CAAC,SAAS,EAAE;YAAE;QAElB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC;AAC/D,QAAA,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;AACzC,YAAA,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;QACxE;IACF;uGA7FW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,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,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gCAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,0CAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/Bb,CAAA;;;;;;;;;;AAUF,SAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,usWAAA,EAAA,i2FAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAqBG,YAAY,EAAA,UAAA,EAAA,CAAA;kBAlCxB,SAAS;+BACE,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,QAAA,EACN,CAAA;;;;;;;;;;UAUF,EAAA,eAAA,EAES,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,cAAc,EAAA,IAAA,EAClB;AACJ,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,sBAAsB,EAAE,sBAAsB;AAC9C,wBAAA,qBAAqB,EAAE,gCAAgC;AACvD,wBAAA,kBAAkB,EAAE,mBAAmB;AACvC,wBAAA,qBAAqB,EAAE,sBAAsB;AAC7C,wBAAA,kBAAkB,EAAE,mBAAmB;AACvC,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,qBAAqB,EAAE,2BAA2B;AAClD,wBAAA,qBAAqB,EAAE,0CAA0C;AACjE,wBAAA,YAAY,EAAE,0BAA0B;AACxC,wBAAA,aAAa,EAAE,QAAQ;AACxB,qBAAA,EAAA,MAAA,EAAA,CAAA,usWAAA,EAAA,i2FAAA,CAAA,EAAA;;;ACzCH;;;;;;;;;;AAUG;MAqCU,cAAc,CAAA;IAChB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,qBAAqB,GAAG,KAAK,CAAC,KAAK,6FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACrE,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAClE;;;;AAIG;IACM,OAAO,GAAG,KAAK,CAAgB,QAAQ;gFAAC;IACxC,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACvD,YAAY,GAAG,KAAK,CAAC,CAAC,oFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAChE;;;AAGG;IACM,QAAQ,GAAG,KAAK,CAA8C,SAAS;iFAAC;;IAExE,CAAC,GAAG,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC;IACjD,IAAI,GAAG,KAAK,CAAyB,SAAS;6EAAC;IAC/C,IAAI,GAAG,KAAK,CAAyB,SAAS;6EAAC;IAC/C,IAAI,GAAG,KAAK,CAAa,QAAQ;6EAAC;IAClC,OAAO,GAAG,KAAK,CAA4B,SAAS;gFAAC;;IAGrD,OAAO,GAAG,KAAK,CAAoD,SAAS,+EACnF,SAAS,EAAE,eAAe,EAAA,CAC1B;IACO,cAAc,GAAG,KAAK,CAAC,KAAK,sFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACvE;;;;;;AAMG;IACM,aAAa,GAAG,MAAM,EAA0B;IAEhD,cAAc,GAAG,cAAc;AACrB,IAAA,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,sBAAsB,CAAC;AAC5D,IAAA,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC;IACxC,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;IAE1D,KAAK,GAAG,YAAY,CAAC,aAAa;8EAAC;IACnC,GAAG,GAAG,YAAY,CAAC,WAAW;4EAAC;IACvC,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS;iFAAC;AAC3C,IAAA,aAAa,GAAG,QAAQ,CACzC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,SAAS;sFAC7D;IAEgB,KAAK,GAAG,IAAI,YAAY,CAAC;QACxC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,cAAc,EAAE,IAAI,CAAC,cAAc;AACnC,QAAA,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AACpD,KAAA,CAAC;IACO,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;kFAAC;IAEtC,OAAO,GAAG,MAAM,EAAC,UAA6B,EAAC,CAAC,aAAa;AAC7D,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhD;;;;AAIG;AACH,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,OAAO,GAAG,CAAC,KAAY,KAAI;AAC/B,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;gBAAE,eAAe,CAAC,KAAK,CAAC;AAClD,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MACxB,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CACtE;IACH;AAEA;;;;;;AAMG;IACH,eAAe,GAAA;AACb,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAY,KAAI;YAChC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,gBAAgB;gBAAE;AACpD,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3B,QAAA,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;AAChD,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtF;uGAzFW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,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,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,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,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,EAAA,SAAA,EAlBd,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA6D9C,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACf,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7ErC,CAAA;;;;;;;;;;AAUN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,usWAAA,EAAA,i2FAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAuBO,cAAc,EAAA,UAAA,EAAA,CAAA;kBApC1B,SAAS;+BACE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,QAAA,EACN,CAAA;;;;;;;;;;MAUN,EAAA,eAAA,EAEa,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,gBAAgB,EAAA,SAAA,EACf,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,cAAe,CAAC,EAAE,CAAC,EAAA,IAAA,EAC9E;AACJ,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,sBAAsB,EAAE,sBAAsB;AAC9C,wBAAA,qBAAqB,EAAE,aAAa;AACpC,wBAAA,kBAAkB,EAAE,mBAAmB;AACvC,wBAAA,qBAAqB,EAAE,sBAAsB;AAC7C,wBAAA,kBAAkB,EAAE,mBAAmB;AACvC,wBAAA,wBAAwB,EAAE,6BAA6B;AACvD,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,qBAAqB,EAAE,2BAA2B;AAClD,wBAAA,qBAAqB,EAAE,6BAA6B;AACpD,wBAAA,YAAY,EAAE,0BAA0B;AACxC,wBAAA,aAAa,EAAE,QAAQ;AACxB,qBAAA,EAAA,MAAA,EAAA,CAAA,usWAAA,EAAA,i2FAAA,CAAA,EAAA;AA6CqC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,aAAa,qFACf,WAAW,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACrIjD;;AAEG;;"}
|
|
@@ -337,7 +337,7 @@ class SlCascaderBody {
|
|
|
337
337
|
}
|
|
338
338
|
</div>
|
|
339
339
|
</ng-template>
|
|
340
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlButton, selector: "button[slButton]", inputs: ["disabled", "focusableWhenDisabled", "fullWidth", "loading", "loadingDelay", "messages", "size", "tone", "type", "variant"], exportAs: ["slButton"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlHighlight, selector: "[slHighlight]", inputs: ["text", "query", "ranges", "matcher", "current", "locale", "sensitivity", "occurrences", "disabled"], exportAs: ["slHighlight"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
340
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlButton, selector: "button[slButton]", inputs: ["disabled", "focusableWhenDisabled", "fullWidth", "justify", "loading", "loadingDelay", "messages", "size", "tone", "type", "variant"], exportAs: ["slButton"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlHighlight, selector: "[slHighlight]", inputs: ["text", "query", "ranges", "matcher", "current", "locale", "sensitivity", "occurrences", "disabled"], exportAs: ["slHighlight"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
341
341
|
}
|
|
342
342
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCascaderBody, decorators: [{
|
|
343
343
|
type: Component,
|