@starterlib/ui 0.3.0 → 0.5.0

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.
@@ -1,11 +1,15 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, model, computed, ChangeDetectionStrategy, Component, Directive, inject, signal, viewChild, effect, DestroyRef } from '@angular/core';
2
+ import { input, model, computed, ChangeDetectionStrategy, Component, Directive, inject, signal, viewChild, effect, DestroyRef, ElementRef, Injector, output, linkedSignal, afterRenderEffect, afterNextRender, booleanAttribute } from '@angular/core';
3
3
  import * as i1 from '@angular/aria/tabs';
4
4
  import { TabList, Tab, Tabs, TabPanel, TabContent } from '@angular/aria/tabs';
5
5
  import { BreakpointObserver } from '@angular/cdk/layout';
6
6
  import { NgTemplateOutlet } from '@angular/common';
7
- import { ST_LIBELLES } from '@starterlib/ui';
7
+ import { ST_LIBELLES, ControleDeSaisie, AnnonceLocale, filtrerOptions, StFormField, StControleDeChamp, StIcon, ContratDeChamp, StIconButton } from '@starterlib/ui';
8
8
  import { StDialog } from '@starterlib/ui/surfaces';
9
+ import { Combobox, ComboboxPopup, ComboboxWidget } from '@angular/aria/combobox';
10
+ import { Listbox, Option } from '@angular/aria/listbox';
11
+ import { CdkConnectedOverlay } from '@angular/cdk/overlay';
12
+ import { Tree, TreeItem, TreeItemGroup } from '@angular/aria/tree';
9
13
 
10
14
  /**
11
15
  * Onglets, sur les primitives `@angular/aria/tabs`.
@@ -269,6 +273,299 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
269
273
  }]
270
274
  }], propDecorators: { stSidenavToggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "stSidenavToggle", required: true }] }] } });
271
275
 
276
+ /**
277
+ * Liste de choix a filtrer en tapant, sur `@angular/aria/combobox` et
278
+ * `@angular/aria/listbox`.
279
+ *
280
+ * ```html
281
+ * <st-combobox libelle="Beneficiaire" [options]="beneficiaires" [formField]="virement.beneficiaire" />
282
+ * <!-- liste servie par le serveur : -->
283
+ * <st-combobox libelle="Commune" filtrage="distant" [options]="communes()"
284
+ * (recherche)="terme.set($event)" [formField]="adresse.commune" />
285
+ * ```
286
+ *
287
+ * Le modele est la VALEUR de l'option choisie, `''` sans choix. Le texte tape ne
288
+ * part jamais dans le modele : « Pari » n'est pas une commune.
289
+ *
290
+ * ⚠️ **Pour une longue liste seulement.** Sous une vingtaine d'options,
291
+ * `st-select` — natif — est plus sur, et plus rapide sur mobile.
292
+ *
293
+ * - La liste s'ouvre a la frappe et a la fleche bas ; Entree choisit, Echap
294
+ * ferme. Le focus reste dans le champ (`aria-activedescendant`).
295
+ * - Le nombre de resultats s'annonce apres la frappe, une fois : le lecteur
296
+ * d'ecran ne voit pas la liste se reduire.
297
+ * - ⚠️ **Quitter le champ sans choisir rend le texte du choix precedent.** Un
298
+ * texte qui ne correspond a aucune option ne reste pas affiche comme s'il etait
299
+ * retenu ; un champ vide, lui, retire le choix.
300
+ * - La liste est posee dans la couche superieure du navigateur (`popover`) par le
301
+ * CDK : un dialogue ou un tableau defilant ne la rogne pas.
302
+ *
303
+ * ⚠️ En `distant`, `recherche` est emis a chaque frappe : a l'application de
304
+ * temporiser, et de ne pas mettre le terme dans l'adresse (SEC-6).
305
+ */
306
+ class StCombobox extends ControleDeSaisie {
307
+ libelles = inject(ST_LIBELLES);
308
+ element = inject(ElementRef);
309
+ injecteur = inject(Injector);
310
+ options = input.required(/* @ts-ignore */
311
+ ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
312
+ filtrage = input('local', /* @ts-ignore */
313
+ ...(ngDevMode ? [{ debugName: "filtrage" }] : /* istanbul ignore next */ []));
314
+ /** Texte tape, a chaque frappe. Sert au filtrage `distant`. */
315
+ recherche = output();
316
+ annonce = new AnnonceLocale(inject(DestroyRef));
317
+ ouvert = signal(false, /* @ts-ignore */
318
+ ...(ngDevMode ? [{ debugName: "ouvert" }] : /* istanbul ignore next */ []));
319
+ /** Texte du champ : le libelle du choix, tant que la personne ne tape pas. */
320
+ texte = linkedSignal(() => this.libelleDe(this.value()), /* @ts-ignore */
321
+ ...(ngDevMode ? [{ debugName: "texte" }] : /* istanbul ignore next */ []));
322
+ /** Ce qui filtre : vide a l'ouverture par la fleche, pour montrer toute la liste. */
323
+ filtre = signal('', /* @ts-ignore */
324
+ ...(ngDevMode ? [{ debugName: "filtre" }] : /* istanbul ignore next */ []));
325
+ /** Option active dans la liste ; le choix n'est retenu qu'a la validation. */
326
+ surlignee = linkedSignal(() => this.value() === '' ? [] : [this.value()], /* @ts-ignore */
327
+ ...(ngDevMode ? [{ debugName: "surlignee" }] : /* istanbul ignore next */ []));
328
+ visibles = computed(() => this.filtrage() === 'local' ? filtrerOptions(this.options(), this.filtre()) : this.options(), /* @ts-ignore */
329
+ ...(ngDevMode ? [{ debugName: "visibles" }] : /* istanbul ignore next */ []));
330
+ liste = viewChild(Listbox, /* @ts-ignore */
331
+ ...(ngDevMode ? [{ debugName: "liste" }] : /* istanbul ignore next */ []));
332
+ constructor() {
333
+ super();
334
+ afterRenderEffect(() => {
335
+ if (this.ouvert())
336
+ this.liste()?.scrollActiveItemIntoView({ block: 'nearest' });
337
+ });
338
+ }
339
+ surSaisie(evenement) {
340
+ const saisie = this.texteSaisi(evenement);
341
+ this.filtre.set(saisie);
342
+ this.recherche.emit(saisie);
343
+ if (this.filtrage() === 'local') {
344
+ this.annonce.annoncer(this.libelles().nombreDeResultats(this.visibles().length));
345
+ }
346
+ }
347
+ basculer() {
348
+ if (this.disabled() || this.readonly())
349
+ return;
350
+ this.filtre.set('');
351
+ this.ouvert.update((ouvert) => !ouvert);
352
+ this.focus();
353
+ }
354
+ valider() {
355
+ const choisie = this.surlignee()[0];
356
+ if (choisie === undefined)
357
+ return;
358
+ this.value.set(choisie);
359
+ this.texte.set(this.libelleDe(choisie));
360
+ this.filtre.set('');
361
+ this.ouvert.set(false);
362
+ afterNextRender(() => {
363
+ this.focus();
364
+ }, { injector: this.injecteur });
365
+ }
366
+ aLaSortie(evenement) {
367
+ const suivant = evenement.relatedTarget;
368
+ if (suivant !== null && this.element.nativeElement.contains(suivant))
369
+ return;
370
+ if (this.texte().trim() === '')
371
+ this.value.set('');
372
+ this.texte.set(this.libelleDe(this.value()));
373
+ this.filtre.set('');
374
+ this.touch.emit();
375
+ }
376
+ libelleDe(valeur) {
377
+ if (valeur === '')
378
+ return '';
379
+ return this.options().find((option) => option.valeur === valeur)?.libelle ?? '';
380
+ }
381
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: StCombobox, deps: [], target: i0.ɵɵFactoryTarget.Component });
382
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: StCombobox, isStandalone: true, selector: "st-combobox", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, filtrage: { classPropertyName: "filtrage", publicName: "filtrage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { recherche: "recherche" }, host: { listeners: { "focusout": "aLaSortie($event)" }, classAttribute: "st-combobox" }, viewQueries: [{ propertyName: "liste", first: true, predicate: Listbox, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<st-form-field\n [libelle]=\"libelle()\"\n [aide]=\"aide()\"\n [erreurs]=\"errors()\"\n [afficherErreurs]=\"touched()\"\n [obligatoire]=\"required()\"\n>\n <div #cadre class=\"st-combobox__cadre\">\n <input\n #champ\n #combobox=\"ngCombobox\"\n class=\"st-combobox__champ\"\n stControleDeChamp\n ngCombobox\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [(value)]=\"texte\"\n [(expanded)]=\"ouvert\"\n [attr.name]=\"name() || null\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n (input)=\"surSaisie($event)\"\n />\n <!-- Voie de la souris vers la liste. Hors tabulation et masque au lecteur\n d'ecran : au clavier, la fleche bas ouvre la liste depuis le champ. -->\n <span\n class=\"st-combobox__ouvrir\"\n aria-hidden=\"true\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"basculer()\"\n >\n <st-icon nom=\"chevron-bas\" taille=\"sm\" />\n </span>\n </div>\n\n <!-- \u26A0\uFE0F La primitive de popup ENVELOPPE la surcouche, et non l'inverse (exemple\n de la documentation d'Aria). Enfermee dans la surcouche, elle ne\n s'enregistre qu'a l'ouverture : liste fermee, le champ annonce\n aria-autocomplete=\"none\" et aucun aria-haspopup, et le lecteur d'ecran\n ignore qu'une liste existe. -->\n <ng-template ngComboboxPopup [combobox]=\"combobox\">\n <ng-template\n [cdkConnectedOverlay]=\"{ origin: cadre, usePopover: 'inline', matchWidth: true }\"\n [cdkConnectedOverlayOpen]=\"ouvert()\"\n >\n <div class=\"st-combobox__popup\">\n @if (visibles().length === 0) {\n <p class=\"st-combobox__vide\">{{ libelles().aucunResultat }}</p>\n }\n <div\n #liste=\"ngListbox\"\n class=\"st-combobox__liste\"\n ngListbox\n ngComboboxWidget\n focusMode=\"activedescendant\"\n [tabindex]=\"-1\"\n [attr.aria-label]=\"libelle()\"\n [activeDescendant]=\"liste.activeDescendant()\"\n [(value)]=\"surlignee\"\n (click)=\"valider()\"\n (keydown.enter)=\"valider()\"\n >\n @for (option of visibles(); track option.valeur) {\n <div\n class=\"st-combobox__option\"\n ngOption\n [value]=\"option.valeur\"\n [label]=\"option.libelle\"\n [disabled]=\"option.desactivee === true\"\n >\n <span>{{ option.libelle }}</span>\n <st-icon class=\"st-combobox__coche\" nom=\"coche\" taille=\"sm\" />\n </div>\n }\n </div>\n </div>\n </ng-template>\n </ng-template>\n</st-form-field>\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\n", styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:block}.st-combobox__cadre{position:relative}.st-combobox__champ:focus-visible{outline:2px solid var(--st-couleur-anneau-focus);outline-offset:2px}.st-combobox__champ{box-sizing:border-box;inline-size:100%;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);font:inherit;color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:1px solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-sm)}.st-combobox__champ[aria-invalid=true]{border-color:var(--st-couleur-danger);box-shadow:inset 0 0 0 1px var(--st-couleur-danger)}.st-combobox__champ:disabled{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface-enfoncee)}.st-combobox__champ:read-only:not(:disabled){background:var(--st-couleur-surface-enfoncee)}.st-combobox__champ{padding-inline-end:calc(var(--st-espacement-3) * 2 + 1rem)}.st-combobox__ouvrir{position:absolute;inset-block:0;inset-inline-end:0;display:flex;align-items:center;padding-inline:var(--st-espacement-3);color:var(--st-couleur-texte-discret);cursor:pointer}.st-combobox__popup{max-block-size:18rem;overflow-y:auto;color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:1px solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-sm);box-shadow:var(--st-ombre-md)}.st-combobox__vide{padding:var(--st-espacement-2) var(--st-espacement-3);margin:0;color:var(--st-couleur-texte-discret)}.st-combobox__option{display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);cursor:pointer}.st-combobox__option[data-active=true]{outline:2px solid var(--st-couleur-anneau-focus);outline-offset:-2px;background:var(--st-couleur-surface-enfoncee)}.st-combobox__option[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-combobox__option[aria-selected=true]{font-weight:var(--st-graisse-semi)}.st-combobox__coche{visibility:hidden}[aria-selected=true]>.st-combobox__coche{visibility:visible}\n"], dependencies: [{ kind: "component", type: StFormField, selector: "st-form-field", inputs: ["libelle", "aide", "complement", "erreurs", "afficherErreurs", "obligatoire", "disposition", "libelleMasque"] }, { kind: "directive", type: StControleDeChamp, selector: "[stControleDeChamp]" }, { kind: "component", type: StIcon, selector: "st-icon", inputs: ["nom", "taille", "ton", "etiquette"] }, { kind: "directive", type: Combobox, selector: "[ngCombobox]", inputs: ["disabled", "readonly", "softDisabled", "alwaysExpanded", "tabindex", "expanded", "value", "inlineSuggestion"], outputs: ["expandedChange", "valueChange"], exportAs: ["ngCombobox"] }, { kind: "directive", type: ComboboxPopup, selector: "ng-template[ngComboboxPopup]", inputs: ["combobox", "popupType"], exportAs: ["ngComboboxPopup"] }, { kind: "directive", type: ComboboxWidget, selector: "[ngComboboxWidget]", inputs: ["activeDescendant"], exportAs: ["ngComboboxWidget"] }, { kind: "directive", type: Listbox, selector: "[ngListbox]", inputs: ["id", "orientation", "multi", "wrap", "softDisabled", "focusMode", "selectionMode", "typeaheadDelay", "disabled", "readonly", "tabindex", "value"], outputs: ["valueChange"], exportAs: ["ngListbox"] }, { kind: "directive", type: Option, selector: "[ngOption]", inputs: ["id", "value", "disabled", "label"], exportAs: ["ngOption"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
383
+ }
384
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: StCombobox, decorators: [{
385
+ type: Component,
386
+ args: [{ selector: 'st-combobox', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
387
+ StFormField,
388
+ StControleDeChamp,
389
+ StIcon,
390
+ Combobox,
391
+ ComboboxPopup,
392
+ ComboboxWidget,
393
+ Listbox,
394
+ Option,
395
+ CdkConnectedOverlay,
396
+ ], host: {
397
+ class: 'st-combobox',
398
+ '(focusout)': 'aLaSortie($event)',
399
+ }, template: "<st-form-field\n [libelle]=\"libelle()\"\n [aide]=\"aide()\"\n [erreurs]=\"errors()\"\n [afficherErreurs]=\"touched()\"\n [obligatoire]=\"required()\"\n>\n <div #cadre class=\"st-combobox__cadre\">\n <input\n #champ\n #combobox=\"ngCombobox\"\n class=\"st-combobox__champ\"\n stControleDeChamp\n ngCombobox\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [(value)]=\"texte\"\n [(expanded)]=\"ouvert\"\n [attr.name]=\"name() || null\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n (input)=\"surSaisie($event)\"\n />\n <!-- Voie de la souris vers la liste. Hors tabulation et masque au lecteur\n d'ecran : au clavier, la fleche bas ouvre la liste depuis le champ. -->\n <span\n class=\"st-combobox__ouvrir\"\n aria-hidden=\"true\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"basculer()\"\n >\n <st-icon nom=\"chevron-bas\" taille=\"sm\" />\n </span>\n </div>\n\n <!-- \u26A0\uFE0F La primitive de popup ENVELOPPE la surcouche, et non l'inverse (exemple\n de la documentation d'Aria). Enfermee dans la surcouche, elle ne\n s'enregistre qu'a l'ouverture : liste fermee, le champ annonce\n aria-autocomplete=\"none\" et aucun aria-haspopup, et le lecteur d'ecran\n ignore qu'une liste existe. -->\n <ng-template ngComboboxPopup [combobox]=\"combobox\">\n <ng-template\n [cdkConnectedOverlay]=\"{ origin: cadre, usePopover: 'inline', matchWidth: true }\"\n [cdkConnectedOverlayOpen]=\"ouvert()\"\n >\n <div class=\"st-combobox__popup\">\n @if (visibles().length === 0) {\n <p class=\"st-combobox__vide\">{{ libelles().aucunResultat }}</p>\n }\n <div\n #liste=\"ngListbox\"\n class=\"st-combobox__liste\"\n ngListbox\n ngComboboxWidget\n focusMode=\"activedescendant\"\n [tabindex]=\"-1\"\n [attr.aria-label]=\"libelle()\"\n [activeDescendant]=\"liste.activeDescendant()\"\n [(value)]=\"surlignee\"\n (click)=\"valider()\"\n (keydown.enter)=\"valider()\"\n >\n @for (option of visibles(); track option.valeur) {\n <div\n class=\"st-combobox__option\"\n ngOption\n [value]=\"option.valeur\"\n [label]=\"option.libelle\"\n [disabled]=\"option.desactivee === true\"\n >\n <span>{{ option.libelle }}</span>\n <st-icon class=\"st-combobox__coche\" nom=\"coche\" taille=\"sm\" />\n </div>\n }\n </div>\n </div>\n </ng-template>\n </ng-template>\n</st-form-field>\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\n", styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:block}.st-combobox__cadre{position:relative}.st-combobox__champ:focus-visible{outline:2px solid var(--st-couleur-anneau-focus);outline-offset:2px}.st-combobox__champ{box-sizing:border-box;inline-size:100%;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);font:inherit;color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:1px solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-sm)}.st-combobox__champ[aria-invalid=true]{border-color:var(--st-couleur-danger);box-shadow:inset 0 0 0 1px var(--st-couleur-danger)}.st-combobox__champ:disabled{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface-enfoncee)}.st-combobox__champ:read-only:not(:disabled){background:var(--st-couleur-surface-enfoncee)}.st-combobox__champ{padding-inline-end:calc(var(--st-espacement-3) * 2 + 1rem)}.st-combobox__ouvrir{position:absolute;inset-block:0;inset-inline-end:0;display:flex;align-items:center;padding-inline:var(--st-espacement-3);color:var(--st-couleur-texte-discret);cursor:pointer}.st-combobox__popup{max-block-size:18rem;overflow-y:auto;color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:1px solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-sm);box-shadow:var(--st-ombre-md)}.st-combobox__vide{padding:var(--st-espacement-2) var(--st-espacement-3);margin:0;color:var(--st-couleur-texte-discret)}.st-combobox__option{display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);cursor:pointer}.st-combobox__option[data-active=true]{outline:2px solid var(--st-couleur-anneau-focus);outline-offset:-2px;background:var(--st-couleur-surface-enfoncee)}.st-combobox__option[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-combobox__option[aria-selected=true]{font-weight:var(--st-graisse-semi)}.st-combobox__coche{visibility:hidden}[aria-selected=true]>.st-combobox__coche{visibility:visible}\n"] }]
400
+ }], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: true }] }], filtrage: [{ type: i0.Input, args: [{ isSignal: true, alias: "filtrage", required: false }] }], recherche: [{ type: i0.Output, args: ["recherche"] }], liste: [{ type: i0.ViewChild, args: [i0.forwardRef(() => Listbox), { isSignal: true }] }] } });
401
+
402
+ /**
403
+ * Choix de plusieurs valeurs dans une liste, sur `@angular/aria/combobox` et
404
+ * `@angular/aria/listbox`.
405
+ *
406
+ * ```html
407
+ * <st-multiselect libelle="Comptes a inclure" [options]="comptes" [formField]="releve.comptes" />
408
+ * ```
409
+ *
410
+ * Le modele est la liste des VALEURS choisies, dans l'ordre des options.
411
+ *
412
+ * - Fleche bas, Entree ou Espace ouvrent la liste ; Espace coche ou decoche
413
+ * l'option active sans fermer ; Echap ferme.
414
+ * - ⚠️ **Chaque choix reste visible et retirable** sous le champ, par un bouton
415
+ * « Retirer … ». Un resume « 3 choix » dans le declencheur ne dit pas lesquels,
416
+ * et obligerait a rouvrir la liste pour en retirer un.
417
+ * - Un choix retire rend le focus au retrait suivant, ou au champ : le focus ne
418
+ * tombe jamais sur le document.
419
+ *
420
+ * ⚠️ Sous une dizaine d'options, un groupe de cases a cocher (`st-fieldset` et
421
+ * `st-checkbox`) est plus simple : tout est visible, rien a ouvrir.
422
+ */
423
+ class StMultiselect extends ContratDeChamp {
424
+ libelles = inject(ST_LIBELLES);
425
+ element = inject(ElementRef);
426
+ injecteur = inject(Injector);
427
+ value = model([], /* @ts-ignore */
428
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
429
+ options = input.required(/* @ts-ignore */
430
+ ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
431
+ annonce = new AnnonceLocale(inject(DestroyRef));
432
+ ouvert = signal(false, /* @ts-ignore */
433
+ ...(ngDevMode ? [{ debugName: "ouvert" }] : /* istanbul ignore next */ []));
434
+ liste = viewChild(Listbox, /* @ts-ignore */
435
+ ...(ngDevMode ? [{ debugName: "liste" }] : /* istanbul ignore next */ []));
436
+ /** La liste d'Aria attend un tableau modifiable ; le modele, lui, est en lecture seule. */
437
+ valeursDeListe = computed(() => [...this.value()], /* @ts-ignore */
438
+ ...(ngDevMode ? [{ debugName: "valeursDeListe" }] : /* istanbul ignore next */ []));
439
+ choisies = computed(() => {
440
+ const valeurs = new Set(this.value());
441
+ return this.options().filter((option) => valeurs.has(option.valeur));
442
+ }, /* @ts-ignore */
443
+ ...(ngDevMode ? [{ debugName: "choisies" }] : /* istanbul ignore next */ []));
444
+ resume = computed(() => {
445
+ const choisies = this.choisies();
446
+ return choisies.length === 0
447
+ ? this.libelles().choisir
448
+ : choisies.map((option) => option.libelle).join(', ');
449
+ }, /* @ts-ignore */
450
+ ...(ngDevMode ? [{ debugName: "resume" }] : /* istanbul ignore next */ []));
451
+ constructor() {
452
+ super();
453
+ afterRenderEffect(() => {
454
+ if (this.ouvert())
455
+ this.liste()?.scrollActiveItemIntoView({ block: 'nearest' });
456
+ });
457
+ }
458
+ /** Le declencheur n'est pas un champ natif : la base ne le trouve pas par `#champ`. */
459
+ focus(options) {
460
+ this.element.nativeElement.querySelector('[ngCombobox]')?.focus(options);
461
+ }
462
+ surChoix(valeurs) {
463
+ if (this.readonly())
464
+ return;
465
+ // Dans l'ordre des options, et non dans l'ordre des clics : un modele stable
466
+ // ne change pas de forme selon le chemin pris pour le remplir.
467
+ const retenues = new Set(valeurs);
468
+ this.value.set(this.options()
469
+ .filter((option) => retenues.has(option.valeur))
470
+ .map((option) => option.valeur));
471
+ }
472
+ retirer(valeur, indice) {
473
+ const restantes = this.value().filter((choisie) => choisie !== valeur);
474
+ this.value.set(restantes);
475
+ this.annonce.annoncer(this.libelles().nombreDeSelections(restantes.length));
476
+ afterNextRender(() => {
477
+ const boutons = this.element.nativeElement.querySelectorAll('.st-multiselect__retrait');
478
+ const suivant = boutons[Math.min(indice, boutons.length - 1)];
479
+ if (suivant !== undefined)
480
+ suivant.focus();
481
+ else
482
+ this.focus();
483
+ }, { injector: this.injecteur });
484
+ }
485
+ aLaSortie(evenement) {
486
+ const suivant = evenement.relatedTarget;
487
+ if (suivant !== null && this.element.nativeElement.contains(suivant))
488
+ return;
489
+ this.touch.emit();
490
+ }
491
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: StMultiselect, deps: [], target: i0.ɵɵFactoryTarget.Component });
492
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: StMultiselect, isStandalone: true, selector: "st-multiselect", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "focusout": "aLaSortie($event)" }, classAttribute: "st-multiselect" }, viewQueries: [{ propertyName: "liste", first: true, predicate: Listbox, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<st-form-field\n [libelle]=\"libelle()\"\n [aide]=\"aide()\"\n [erreurs]=\"errors()\"\n [afficherErreurs]=\"touched()\"\n [obligatoire]=\"required()\"\n>\n <div\n #combobox=\"ngCombobox\"\n class=\"st-multiselect__declencheur\"\n stControleDeChamp\n ngCombobox\n [attr.data-vide]=\"choisies().length === 0 ? '' : null\"\n [(expanded)]=\"ouvert\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n >\n <span class=\"st-multiselect__resume\">{{ resume() }}</span>\n <st-icon class=\"st-multiselect__chevron\" nom=\"chevron-bas\" taille=\"sm\" />\n </div>\n\n <!-- \u26A0\uFE0F La primitive de popup ENVELOPPE la surcouche, et non l'inverse (exemple\n de la documentation d'Aria). Enfermee dans la surcouche, elle ne\n s'enregistre qu'a l'ouverture : liste fermee, le champ annonce\n aria-autocomplete=\"none\" et aucun aria-haspopup, et le lecteur d'ecran\n ignore qu'une liste existe. -->\n <ng-template ngComboboxPopup [combobox]=\"combobox\">\n <ng-template\n [cdkConnectedOverlay]=\"{ origin: combobox.element, usePopover: 'inline', matchWidth: true }\"\n [cdkConnectedOverlayOpen]=\"ouvert()\"\n >\n <div class=\"st-multiselect__popup\">\n <div\n #liste=\"ngListbox\"\n class=\"st-multiselect__liste\"\n ngListbox\n ngComboboxWidget\n focusMode=\"activedescendant\"\n selectionMode=\"explicit\"\n [multi]=\"true\"\n [tabindex]=\"-1\"\n [attr.aria-label]=\"libelle()\"\n [activeDescendant]=\"liste.activeDescendant()\"\n [value]=\"valeursDeListe()\"\n (valueChange)=\"surChoix($event)\"\n >\n @for (option of options(); track option.valeur) {\n <div\n class=\"st-multiselect__option\"\n ngOption\n [value]=\"option.valeur\"\n [label]=\"option.libelle\"\n [disabled]=\"option.desactivee === true\"\n >\n <span>{{ option.libelle }}</span>\n <st-icon class=\"st-multiselect__coche\" nom=\"coche\" taille=\"sm\" />\n </div>\n }\n </div>\n </div>\n </ng-template>\n </ng-template>\n\n @if (choisies().length > 0) {\n <ul class=\"st-multiselect__choix\">\n @for (option of choisies(); track option.valeur; let indice = $index) {\n <li class=\"st-multiselect__puce\">\n <span>{{ option.libelle }}</span>\n <!-- eslint-disable-next-line @angular-eslint/template/elements-content --\n Le contenu vient du gabarit de stIconButton, et l'etiquette est requise. -->\n <button\n class=\"st-multiselect__retrait\"\n stIconButton\n type=\"button\"\n icone=\"croix\"\n taille=\"sm\"\n [etiquette]=\"libelles().retirerLeChoix(option.libelle)\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"retirer(option.valeur, indice)\"\n ></button>\n </li>\n }\n </ul>\n }\n</st-form-field>\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\n", styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:block}.st-multiselect__declencheur:focus-visible{outline:2px solid var(--st-couleur-anneau-focus);outline-offset:2px}.st-multiselect__declencheur{box-sizing:border-box;inline-size:100%;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);font:inherit;color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:1px solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-sm)}.st-multiselect__declencheur[aria-invalid=true]{border-color:var(--st-couleur-danger);box-shadow:inset 0 0 0 1px var(--st-couleur-danger)}.st-multiselect__declencheur:disabled{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__declencheur:read-only:not(:disabled){background:var(--st-couleur-surface-enfoncee)}.st-multiselect__declencheur{display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;cursor:pointer}.st-multiselect__declencheur[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__resume{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-vide]>.st-multiselect__resume{color:var(--st-couleur-texte-discret)}.st-multiselect__chevron{flex:none;color:var(--st-couleur-texte-discret)}.st-multiselect__popup{max-block-size:18rem;overflow-y:auto;color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:1px solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-sm);box-shadow:var(--st-ombre-md)}.st-multiselect__option{display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);cursor:pointer}.st-multiselect__option[data-active=true]{outline:2px solid var(--st-couleur-anneau-focus);outline-offset:-2px;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__option[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-multiselect__option[aria-selected=true]{font-weight:var(--st-graisse-semi)}.st-multiselect__coche{visibility:hidden}[aria-selected=true]>.st-multiselect__coche{visibility:visible}.st-multiselect__choix{display:flex;flex-wrap:wrap;gap:var(--st-espacement-2);padding:0;margin:var(--st-espacement-2) 0 0;list-style:none}.st-multiselect__puce{display:inline-flex;gap:var(--st-espacement-1);align-items:center;padding-inline-start:var(--st-espacement-3);background:var(--st-couleur-surface-enfoncee);border:1px solid var(--st-couleur-bordure);border-radius:var(--st-rayon-pleine)}\n"], dependencies: [{ kind: "component", type: StFormField, selector: "st-form-field", inputs: ["libelle", "aide", "complement", "erreurs", "afficherErreurs", "obligatoire", "disposition", "libelleMasque"] }, { kind: "directive", type: StControleDeChamp, selector: "[stControleDeChamp]" }, { kind: "component", type: StIcon, selector: "st-icon", inputs: ["nom", "taille", "ton", "etiquette"] }, { kind: "component", type: StIconButton, selector: "button[stIconButton]", inputs: ["icone", "etiquette", "variante", "taille", "enfonce"] }, { kind: "directive", type: Combobox, selector: "[ngCombobox]", inputs: ["disabled", "readonly", "softDisabled", "alwaysExpanded", "tabindex", "expanded", "value", "inlineSuggestion"], outputs: ["expandedChange", "valueChange"], exportAs: ["ngCombobox"] }, { kind: "directive", type: ComboboxPopup, selector: "ng-template[ngComboboxPopup]", inputs: ["combobox", "popupType"], exportAs: ["ngComboboxPopup"] }, { kind: "directive", type: ComboboxWidget, selector: "[ngComboboxWidget]", inputs: ["activeDescendant"], exportAs: ["ngComboboxWidget"] }, { kind: "directive", type: Listbox, selector: "[ngListbox]", inputs: ["id", "orientation", "multi", "wrap", "softDisabled", "focusMode", "selectionMode", "typeaheadDelay", "disabled", "readonly", "tabindex", "value"], outputs: ["valueChange"], exportAs: ["ngListbox"] }, { kind: "directive", type: Option, selector: "[ngOption]", inputs: ["id", "value", "disabled", "label"], exportAs: ["ngOption"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
493
+ }
494
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: StMultiselect, decorators: [{
495
+ type: Component,
496
+ args: [{ selector: 'st-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
497
+ StFormField,
498
+ StControleDeChamp,
499
+ StIcon,
500
+ StIconButton,
501
+ Combobox,
502
+ ComboboxPopup,
503
+ ComboboxWidget,
504
+ Listbox,
505
+ Option,
506
+ CdkConnectedOverlay,
507
+ ], host: {
508
+ class: 'st-multiselect',
509
+ '(focusout)': 'aLaSortie($event)',
510
+ }, template: "<st-form-field\n [libelle]=\"libelle()\"\n [aide]=\"aide()\"\n [erreurs]=\"errors()\"\n [afficherErreurs]=\"touched()\"\n [obligatoire]=\"required()\"\n>\n <div\n #combobox=\"ngCombobox\"\n class=\"st-multiselect__declencheur\"\n stControleDeChamp\n ngCombobox\n [attr.data-vide]=\"choisies().length === 0 ? '' : null\"\n [(expanded)]=\"ouvert\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n >\n <span class=\"st-multiselect__resume\">{{ resume() }}</span>\n <st-icon class=\"st-multiselect__chevron\" nom=\"chevron-bas\" taille=\"sm\" />\n </div>\n\n <!-- \u26A0\uFE0F La primitive de popup ENVELOPPE la surcouche, et non l'inverse (exemple\n de la documentation d'Aria). Enfermee dans la surcouche, elle ne\n s'enregistre qu'a l'ouverture : liste fermee, le champ annonce\n aria-autocomplete=\"none\" et aucun aria-haspopup, et le lecteur d'ecran\n ignore qu'une liste existe. -->\n <ng-template ngComboboxPopup [combobox]=\"combobox\">\n <ng-template\n [cdkConnectedOverlay]=\"{ origin: combobox.element, usePopover: 'inline', matchWidth: true }\"\n [cdkConnectedOverlayOpen]=\"ouvert()\"\n >\n <div class=\"st-multiselect__popup\">\n <div\n #liste=\"ngListbox\"\n class=\"st-multiselect__liste\"\n ngListbox\n ngComboboxWidget\n focusMode=\"activedescendant\"\n selectionMode=\"explicit\"\n [multi]=\"true\"\n [tabindex]=\"-1\"\n [attr.aria-label]=\"libelle()\"\n [activeDescendant]=\"liste.activeDescendant()\"\n [value]=\"valeursDeListe()\"\n (valueChange)=\"surChoix($event)\"\n >\n @for (option of options(); track option.valeur) {\n <div\n class=\"st-multiselect__option\"\n ngOption\n [value]=\"option.valeur\"\n [label]=\"option.libelle\"\n [disabled]=\"option.desactivee === true\"\n >\n <span>{{ option.libelle }}</span>\n <st-icon class=\"st-multiselect__coche\" nom=\"coche\" taille=\"sm\" />\n </div>\n }\n </div>\n </div>\n </ng-template>\n </ng-template>\n\n @if (choisies().length > 0) {\n <ul class=\"st-multiselect__choix\">\n @for (option of choisies(); track option.valeur; let indice = $index) {\n <li class=\"st-multiselect__puce\">\n <span>{{ option.libelle }}</span>\n <!-- eslint-disable-next-line @angular-eslint/template/elements-content --\n Le contenu vient du gabarit de stIconButton, et l'etiquette est requise. -->\n <button\n class=\"st-multiselect__retrait\"\n stIconButton\n type=\"button\"\n icone=\"croix\"\n taille=\"sm\"\n [etiquette]=\"libelles().retirerLeChoix(option.libelle)\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"retirer(option.valeur, indice)\"\n ></button>\n </li>\n }\n </ul>\n }\n</st-form-field>\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\n", styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:block}.st-multiselect__declencheur:focus-visible{outline:2px solid var(--st-couleur-anneau-focus);outline-offset:2px}.st-multiselect__declencheur{box-sizing:border-box;inline-size:100%;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);font:inherit;color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:1px solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-sm)}.st-multiselect__declencheur[aria-invalid=true]{border-color:var(--st-couleur-danger);box-shadow:inset 0 0 0 1px var(--st-couleur-danger)}.st-multiselect__declencheur:disabled{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__declencheur:read-only:not(:disabled){background:var(--st-couleur-surface-enfoncee)}.st-multiselect__declencheur{display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;cursor:pointer}.st-multiselect__declencheur[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__resume{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-vide]>.st-multiselect__resume{color:var(--st-couleur-texte-discret)}.st-multiselect__chevron{flex:none;color:var(--st-couleur-texte-discret)}.st-multiselect__popup{max-block-size:18rem;overflow-y:auto;color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:1px solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-sm);box-shadow:var(--st-ombre-md)}.st-multiselect__option{display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);cursor:pointer}.st-multiselect__option[data-active=true]{outline:2px solid var(--st-couleur-anneau-focus);outline-offset:-2px;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__option[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-multiselect__option[aria-selected=true]{font-weight:var(--st-graisse-semi)}.st-multiselect__coche{visibility:hidden}[aria-selected=true]>.st-multiselect__coche{visibility:visible}.st-multiselect__choix{display:flex;flex-wrap:wrap;gap:var(--st-espacement-2);padding:0;margin:var(--st-espacement-2) 0 0;list-style:none}.st-multiselect__puce{display:inline-flex;gap:var(--st-espacement-1);align-items:center;padding-inline-start:var(--st-espacement-3);background:var(--st-couleur-surface-enfoncee);border:1px solid var(--st-couleur-bordure);border-radius:var(--st-rayon-pleine)}\n"] }]
511
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: true }] }], liste: [{ type: i0.ViewChild, args: [i0.forwardRef(() => Listbox), { isSignal: true }] }] } });
512
+
513
+ /**
514
+ * Arbre de donnees hierarchiques, sur `@angular/aria/tree` : dossiers, plan
515
+ * comptable, organisation.
516
+ *
517
+ * ```html
518
+ * <st-tree etiquette="Plan comptable" [noeuds]="comptes" [(selection)]="compte" [(deplies)]="ouverts" />
519
+ * ```
520
+ *
521
+ * ⚠️ **Jamais pour la navigation du site** (UX-17) : une navigation est une liste
522
+ * de liens, que le lecteur d'ecran liste et parcourt comme telle. Un arbre se
523
+ * parcourt aux fleches, un element a la fois, et ses elements ne sont pas des
524
+ * liens. Le mode « navigation » de la primitive n'est donc pas expose.
525
+ *
526
+ * ⚠️ **Les noeuds sont rendus par le composant, a partir de donnees** (FE-6) : la
527
+ * primitive relie un element a son arbre par injection, et un contenu projete
528
+ * garde l'injecteur de l'endroit ou il est ecrit — lecon de `st-menu`.
529
+ *
530
+ * Clavier de la primitive : fleches haut et bas entre les elements visibles,
531
+ * droite pour deplier ou entrer, gauche pour replier ou remonter, Debut et Fin,
532
+ * recherche a la frappe ; Espace ou Entree choisit. Selection et depliage sont des
533
+ * listes de VALEURS, lisibles et restaurables par l'application.
534
+ */
535
+ class StTree {
536
+ /** Nom de l'arbre, lu a l'entree. Obligatoire. */
537
+ etiquette = input.required(/* @ts-ignore */
538
+ ...(ngDevMode ? [{ debugName: "etiquette" }] : /* istanbul ignore next */ []));
539
+ noeuds = input.required(/* @ts-ignore */
540
+ ...(ngDevMode ? [{ debugName: "noeuds" }] : /* istanbul ignore next */ []));
541
+ multiple = input(false, { ...(ngDevMode ? { debugName: "multiple" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
542
+ selection = model([], /* @ts-ignore */
543
+ ...(ngDevMode ? [{ debugName: "selection" }] : /* istanbul ignore next */ []));
544
+ deplies = model([], /* @ts-ignore */
545
+ ...(ngDevMode ? [{ debugName: "deplies" }] : /* istanbul ignore next */ []));
546
+ /** La primitive attend un tableau modifiable ; le modele est en lecture seule. */
547
+ valeursChoisies = computed(() => [...this.selection()], /* @ts-ignore */
548
+ ...(ngDevMode ? [{ debugName: "valeursChoisies" }] : /* istanbul ignore next */ []));
549
+ ensembleDeplie = computed(() => new Set(this.deplies()), /* @ts-ignore */
550
+ ...(ngDevMode ? [{ debugName: "ensembleDeplie" }] : /* istanbul ignore next */ []));
551
+ estDeplie(noeud) {
552
+ return this.ensembleDeplie().has(noeud.valeur);
553
+ }
554
+ surDepliage(noeud, deplie) {
555
+ const deplies = this.deplies().filter((valeur) => valeur !== noeud.valeur);
556
+ this.deplies.set(deplie ? [...deplies, noeud.valeur] : deplies);
557
+ }
558
+ surSelection(valeurs) {
559
+ this.selection.set([...valeurs]);
560
+ }
561
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: StTree, deps: [], target: i0.ɵɵFactoryTarget.Component });
562
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: StTree, isStandalone: true, selector: "st-tree", inputs: { etiquette: { classPropertyName: "etiquette", publicName: "etiquette", isSignal: true, isRequired: true, transformFunction: null }, noeuds: { classPropertyName: "noeuds", publicName: "noeuds", isSignal: true, isRequired: true, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, deplies: { classPropertyName: "deplies", publicName: "deplies", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selection: "selectionChange", deplies: "depliesChange" }, host: { classAttribute: "st-tree" }, ngImport: i0, template: "<ul\n #arbre=\"ngTree\"\n class=\"st-tree__racine\"\n ngTree\n selectionMode=\"explicit\"\n [attr.aria-label]=\"etiquette()\"\n [multi]=\"multiple()\"\n [value]=\"valeursChoisies()\"\n (valueChange)=\"surSelection($event)\"\n>\n <ng-container\n *ngTemplateOutlet=\"niveau; context: { noeuds: noeuds(), parent: arbre, niveau: 1 }\"\n />\n</ul>\n\n<ng-template #niveau let-noeuds=\"noeuds\" let-parent=\"parent\" let-profondeur=\"niveau\">\n @for (noeud of noeuds; track noeud.valeur) {\n <li\n #element=\"ngTreeItem\"\n class=\"st-tree__element\"\n ngTreeItem\n [parent]=\"parent\"\n [value]=\"noeud.valeur\"\n [label]=\"noeud.libelle\"\n [disabled]=\"noeud.desactive === true\"\n [expanded]=\"estDeplie(noeud)\"\n [style.--st-arbre-niveau]=\"profondeur\"\n (expandedChange)=\"surDepliage(noeud, $event)\"\n >\n @if (noeud.enfants?.length) {\n <st-icon\n class=\"st-tree__chevron\"\n taille=\"sm\"\n [nom]=\"estDeplie(noeud) ? 'chevron-bas' : 'chevron-droite'\"\n />\n } @else {\n <span class=\"st-tree__espace\"></span>\n }\n <span class=\"st-tree__libelle\">{{ noeud.libelle }}</span>\n <st-icon class=\"st-tree__coche\" nom=\"coche\" taille=\"sm\" />\n </li>\n @if (noeud.enfants?.length) {\n <ul class=\"st-tree__groupe\" role=\"group\">\n <ng-template ngTreeItemGroup [ownedBy]=\"element\" #groupe=\"ngTreeItemGroup\">\n <ng-container\n *ngTemplateOutlet=\"\n niveau;\n context: { noeuds: noeud.enfants, parent: groupe, niveau: profondeur + 1 }\n \"\n />\n </ng-template>\n </ul>\n }\n }\n</ng-template>\n", styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:block}.st-tree__racine,.st-tree__groupe{padding:0;margin:0;list-style:none}.st-tree__element{display:flex;gap:var(--st-espacement-1);align-items:center;min-block-size:var(--st-cible-tactile-min);padding-inline:calc((var(--st-arbre-niveau, 1) - 1) * 1.5rem + var(--st-espacement-2)) var(--st-espacement-2);cursor:pointer;border-radius:var(--st-rayon-sm)}.st-tree__element:hover{background:var(--st-couleur-surface-survol)}.st-tree__element:focus-visible{outline:2px solid var(--st-couleur-anneau-focus);outline-offset:-2px}.st-tree__element[aria-selected=true]{font-weight:var(--st-graisse-semi);background:var(--st-couleur-primaire-discret)}.st-tree__element[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-tree__chevron,.st-tree__espace{flex:none;inline-size:1rem}.st-tree__coche{margin-inline-start:auto;visibility:hidden}[aria-selected=true]>.st-tree__coche{visibility:visible}.st-tree__groupe:empty{display:none}\n"], dependencies: [{ kind: "directive", type: Tree, selector: "[ngTree]", inputs: ["id", "orientation", "multi", "disabled", "selectionMode", "focusMode", "wrap", "softDisabled", "typeaheadDelay", "tabindex", "value", "nav", "currentType"], outputs: ["valueChange"], exportAs: ["ngTree"] }, { kind: "directive", type: TreeItem, selector: "[ngTreeItem]", inputs: ["id", "value", "parent", "disabled", "selectable", "expanded", "label"], outputs: ["expandedChange"], exportAs: ["ngTreeItem"] }, { kind: "directive", type: TreeItemGroup, selector: "ng-template[ngTreeItemGroup]", inputs: ["ownedBy"], exportAs: ["ngTreeItemGroup"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: StIcon, selector: "st-icon", inputs: ["nom", "taille", "ton", "etiquette"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
563
+ }
564
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: StTree, decorators: [{
565
+ type: Component,
566
+ args: [{ selector: 'st-tree', changeDetection: ChangeDetectionStrategy.OnPush, imports: [Tree, TreeItem, TreeItemGroup, NgTemplateOutlet, StIcon], host: { class: 'st-tree' }, template: "<ul\n #arbre=\"ngTree\"\n class=\"st-tree__racine\"\n ngTree\n selectionMode=\"explicit\"\n [attr.aria-label]=\"etiquette()\"\n [multi]=\"multiple()\"\n [value]=\"valeursChoisies()\"\n (valueChange)=\"surSelection($event)\"\n>\n <ng-container\n *ngTemplateOutlet=\"niveau; context: { noeuds: noeuds(), parent: arbre, niveau: 1 }\"\n />\n</ul>\n\n<ng-template #niveau let-noeuds=\"noeuds\" let-parent=\"parent\" let-profondeur=\"niveau\">\n @for (noeud of noeuds; track noeud.valeur) {\n <li\n #element=\"ngTreeItem\"\n class=\"st-tree__element\"\n ngTreeItem\n [parent]=\"parent\"\n [value]=\"noeud.valeur\"\n [label]=\"noeud.libelle\"\n [disabled]=\"noeud.desactive === true\"\n [expanded]=\"estDeplie(noeud)\"\n [style.--st-arbre-niveau]=\"profondeur\"\n (expandedChange)=\"surDepliage(noeud, $event)\"\n >\n @if (noeud.enfants?.length) {\n <st-icon\n class=\"st-tree__chevron\"\n taille=\"sm\"\n [nom]=\"estDeplie(noeud) ? 'chevron-bas' : 'chevron-droite'\"\n />\n } @else {\n <span class=\"st-tree__espace\"></span>\n }\n <span class=\"st-tree__libelle\">{{ noeud.libelle }}</span>\n <st-icon class=\"st-tree__coche\" nom=\"coche\" taille=\"sm\" />\n </li>\n @if (noeud.enfants?.length) {\n <ul class=\"st-tree__groupe\" role=\"group\">\n <ng-template ngTreeItemGroup [ownedBy]=\"element\" #groupe=\"ngTreeItemGroup\">\n <ng-container\n *ngTemplateOutlet=\"\n niveau;\n context: { noeuds: noeud.enfants, parent: groupe, niveau: profondeur + 1 }\n \"\n />\n </ng-template>\n </ul>\n }\n }\n</ng-template>\n", styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:block}.st-tree__racine,.st-tree__groupe{padding:0;margin:0;list-style:none}.st-tree__element{display:flex;gap:var(--st-espacement-1);align-items:center;min-block-size:var(--st-cible-tactile-min);padding-inline:calc((var(--st-arbre-niveau, 1) - 1) * 1.5rem + var(--st-espacement-2)) var(--st-espacement-2);cursor:pointer;border-radius:var(--st-rayon-sm)}.st-tree__element:hover{background:var(--st-couleur-surface-survol)}.st-tree__element:focus-visible{outline:2px solid var(--st-couleur-anneau-focus);outline-offset:-2px}.st-tree__element[aria-selected=true]{font-weight:var(--st-graisse-semi);background:var(--st-couleur-primaire-discret)}.st-tree__element[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-tree__chevron,.st-tree__espace{flex:none;inline-size:1rem}.st-tree__coche{margin-inline-start:auto;visibility:hidden}[aria-selected=true]>.st-tree__coche{visibility:visible}.st-tree__groupe:empty{display:none}\n"] }]
567
+ }], propDecorators: { etiquette: [{ type: i0.Input, args: [{ isSignal: true, alias: "etiquette", required: true }] }], noeuds: [{ type: i0.Input, args: [{ isSignal: true, alias: "noeuds", required: true }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }, { type: i0.Output, args: ["selectionChange"] }], deplies: [{ type: i0.Input, args: [{ isSignal: true, alias: "deplies", required: false }] }, { type: i0.Output, args: ["depliesChange"] }] } });
568
+
272
569
  /**
273
570
  * @starterlib/ui/interactions — les composants montes sur Angular Aria qui ne
274
571
  * se posent pas au-dessus de la page.
@@ -292,5 +589,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
292
589
  * Generated bundle index. Do not edit.
293
590
  */
294
591
 
295
- export { StSidenav, StSidenavToggle, StTabContent, StTabPanel, StTabs };
592
+ export { StCombobox, StMultiselect, StSidenav, StSidenavToggle, StTabContent, StTabPanel, StTabs, StTree };
296
593
  //# sourceMappingURL=starterlib-ui-interactions.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"starterlib-ui-interactions.mjs","sources":["../../../../packages/ui/interactions/src/lib/onglets/st-tabs.ts","../../../../packages/ui/interactions/src/lib/onglets/st-tabs.html","../../../../packages/ui/interactions/src/lib/onglets/st-tab-panel.ts","../../../../packages/ui/interactions/src/lib/onglets/st-tab-panel.html","../../../../packages/ui/interactions/src/lib/onglets/st-tab-content.ts","../../../../packages/ui/interactions/src/lib/navigation/st-sidenav.ts","../../../../packages/ui/interactions/src/lib/navigation/st-sidenav.html","../../../../packages/ui/interactions/src/lib/navigation/st-sidenav-toggle.ts","../../../../packages/ui/interactions/src/public-api.ts","../../../../packages/ui/interactions/src/starterlib-ui-interactions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"starterlib-ui-interactions.mjs","sources":["../../../../packages/ui/interactions/src/lib/onglets/st-tabs.ts","../../../../packages/ui/interactions/src/lib/onglets/st-tabs.html","../../../../packages/ui/interactions/src/lib/onglets/st-tab-panel.ts","../../../../packages/ui/interactions/src/lib/onglets/st-tab-panel.html","../../../../packages/ui/interactions/src/lib/onglets/st-tab-content.ts","../../../../packages/ui/interactions/src/lib/navigation/st-sidenav.ts","../../../../packages/ui/interactions/src/lib/navigation/st-sidenav.html","../../../../packages/ui/interactions/src/lib/navigation/st-sidenav-toggle.ts","../../../../packages/ui/interactions/src/lib/selection/st-combobox.ts","../../../../packages/ui/interactions/src/lib/selection/st-combobox.html","../../../../packages/ui/interactions/src/lib/selection/st-multiselect.ts","../../../../packages/ui/interactions/src/lib/selection/st-multiselect.html","../../../../packages/ui/interactions/src/lib/arbre/st-tree.ts","../../../../packages/ui/interactions/src/lib/arbre/st-tree.html","../../../../packages/ui/interactions/src/public-api.ts","../../../../packages/ui/interactions/src/starterlib-ui-interactions.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;MAaU,MAAM,CAAA;IACR,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAqB;;IAG7C,SAAS,GAAG,KAAK,CAAC,QAAQ;kFAAU;IAEpC,UAAU,GAAG,KAAK,CAAoB,UAAU;mFAAC;IACjD,WAAW,GAAG,KAAK,CAAsB,aAAa;oFAAC;;IAGvD,SAAS,GAAG,KAAK,CAAqB,SAAS;kFAAC;AAEzD;;;AAGG;AACgB,IAAA,kBAAkB,GAAG,QAAQ,CAC9C,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE,MAAM;2FAC7F;AAEkB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MACrC,IAAI,CAAC,UAAU,EAAE,KAAK,aAAa,GAAG,QAAQ,GAAG,UAAU;iFAC5D;AAEkB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAC5C,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,GAAG,UAAU,GAAG,YAAY;wFAC/D;uGA1BU,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzDnB,mlBAyBA,EAAA,MAAA,EAAA,CAAA,2yCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDyBY,OAAO,2NAAE,GAAG,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOX,MAAM,EAAA,UAAA,EAAA,CAAA;kBAZlB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,eAAA,EAGF,uBAAuB,CAAC,MAAM,WACtC,CAAC,OAAO,EAAE,GAAG,CAAC,EAAA,cAAA,EACP,CAAC,IAAI,CAAC,EAAA,IAAA,EAChB;AACJ,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,yBAAyB,EAAE,eAAe;AAC3C,qBAAA,EAAA,QAAA,EAAA,mlBAAA,EAAA,MAAA,EAAA,CAAA,2yCAAA,CAAA,EAAA;;;AEpDH;;;;;;;AAOG;AASH;;;;AAIwB;MACX,UAAU,CAAA;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,6LCxBvB,kBACA,EAAA,MAAA,EAAA,CAAA,6VAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDuBa,UAAU,EAAA,UAAA,EAAA,CAAA;kBAbtB,SAAS;+BACE,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,kBAC/B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,QAC9D,EAAE,KAAK,EAAE,cAAc,EAAE,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,6VAAA,CAAA,EAAA;;;AEdjC;;;;;;AAMG;AAKH;;;;AAIwB;MACX,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;oBACrC,cAAc,EAAE,CAAC,UAAU,CAAC;AAC7B,iBAAA;;;ACMD;AACA,MAAM,WAAW,GAAG,oBAAoB;AAExC,IAAI,QAAQ,GAAG,CAAC;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;MAYU,SAAS,CAAA;AACH,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AAE/C;;;;AAIG;IACM,SAAS,GAAG,KAAK,CAAgB,IAAI;kFAAC;AAE5B,IAAA,YAAY,GAAG,QAAQ,CACxC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,oBAAoB;qFAC/D;;IAGQ,IAAI,GAAG,KAAK,CAAmB,MAAM;6EAAC;IAEtC,WAAW,GAAG,CAAA,WAAA,EAAc,CAAC,QAAQ,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA,CAAE;IAEhD,UAAU,GAAG,MAAM,CAAC,KAAK;mFAAC;;AAGlC,IAAA,YAAY,GAAG,QAAQ,CAAoC,MAAK;AACvE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,IAAI,IAAI,KAAK,MAAM;AAAE,YAAA,OAAO,IAAI;AAChC,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,YAAY,GAAG,OAAO;IACnD,CAAC;qFAAC;IAEe,aAAa,GAAG,MAAM,CAAC,KAAK;sFAAC;AACrC,IAAA,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;;AAGhC,IAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAuB,SAAS;gFAAC;IAEtE,SAAS,GAAwC,IAAI;AAE7D,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,kBAAkB;aACzC,OAAO,CAAC,WAAW;AACnB,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;YAClB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACnC,QAAA,CAAC,CAAC;;;QAIJ,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,YAAY;gBAAE,IAAI,CAAC,MAAM,EAAE;AACzD,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;YAChC,UAAU,CAAC,WAAW,EAAE;YACxB,IAAI,CAAC,MAAM,EAAE;AACf,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;YAAE;AAEhE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACtD,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;AAC/B,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAE5B,QAAA,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAK;AAC7B,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;gBAAE;AAClC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;QAChC,IAAI,SAAS,KAAK,IAAI;YAAE;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B,SAAS,CAAC,MAAM,EAAE;IACpB;IAEA,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,aAAa,EAAE;YAAE,IAAI,CAAC,MAAM,EAAE;;YAClC,IAAI,CAAC,MAAM,EAAE;IACpB;uGApFW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,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,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,gBAAA,EAAA,gBAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/DtB,kRASA,EAAA,MAAA,EAAA,CAAA,+VAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDgDY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMf,SAAS,EAAA,UAAA,EAAA,CAAA;kBAXrB,SAAS;+BACE,YAAY,EAAA,eAAA,EAGL,uBAAuB,CAAC,MAAM,WACtC,CAAC,gBAAgB,CAAC,EAAA,IAAA,EACrB;AACJ,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,kBAAkB,EAAE,gBAAgB;AACrC,qBAAA,EAAA,QAAA,EAAA,kRAAA,EAAA,MAAA,EAAA,CAAA,+VAAA,CAAA,EAAA;yRAmCmE,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE7F/E;;;;;;;;;AASG;MAUU,eAAe,CAAA;IACjB,eAAe,GAAG,KAAK,CAAC,QAAQ;wFAAa;uGAD3C,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,8BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,aAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,eAAe,EAAE,QAAQ;AACzB,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,eAAe,EAAE,0DAA0D;AAC3E,wBAAA,SAAS,EAAE,8BAA8B;AAC1C,qBAAA;AACF,iBAAA;;;ACYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;AAsBG,MAAO,UAAW,SAAQ,gBAAgB,CAAA;AAC3B,IAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC;AACrD,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEpC,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAA4B;IACpD,QAAQ,GAAG,KAAK,CAAkB,OAAO;iFAAC;;IAG1C,SAAS,GAAG,MAAM,EAAU;IAElB,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;;AAGtB,IAAA,KAAK,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;8EAAC;;IAG1D,MAAM,GAAG,MAAM,CAAC,EAAE;+EAAC;;IAGjB,SAAS,GAAG,YAAY,CAAW,MACpD,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;kFAC1C;AAEkB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MACrC,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;iFAC7F;IAEgB,KAAK,GAAG,SAAS,CAAC,OAAO;8EAAC;AAE3C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,iBAAiB,CAAC,MAAK;YACrB,IAAI,IAAI,CAAC,MAAM,EAAE;AAAE,gBAAA,IAAI,CAAC,KAAK,EAAE,EAAE,wBAAwB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACjF,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,SAAS,CAAC,SAAgB,EAAA;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AACzC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE;YAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;QAClF;IACF;IAEU,QAAQ,GAAA;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE;IACd;IAEU,OAAO,GAAA;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACnC,IAAI,OAAO,KAAK,SAAS;YAAE;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,eAAe,CACb,MAAK;YACH,IAAI,CAAC,KAAK,EAAE;QACd,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAC7B;IACH;AAEU,IAAA,SAAS,CAAC,SAAqB,EAAA;AACvC,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,aAA4B;AACtD,QAAA,IAAI,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE;QACtE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE;AAAE,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;IACnB;AAEQ,IAAA,SAAS,CAAC,MAAc,EAAA;QAC9B,IAAI,MAAM,KAAK,EAAE;AAAE,YAAA,OAAO,EAAE;QAC5B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,OAAO,IAAI,EAAE;IACjF;uGAjFW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA6Bc,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjH5C,ixFAiFA,wyEDZI,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,MAAM,mGACN,QAAQ,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,aAAa,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,cAAc,6HACd,OAAO,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,MAAM,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,mBAAmB,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOV,UAAU,EAAA,UAAA,EAAA,CAAA;kBArBtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,WAAW;wBACX,iBAAiB;wBACjB,MAAM;wBACN,QAAQ;wBACR,aAAa;wBACb,cAAc;wBACd,OAAO;wBACP,MAAM;wBACN,mBAAmB;qBACpB,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,aAAa;AACpB,wBAAA,YAAY,EAAE,mBAAmB;AAClC,qBAAA,EAAA,QAAA,EAAA,ixFAAA,EAAA,MAAA,EAAA,CAAA,gvEAAA,CAAA,EAAA;qWA+BkC,OAAO,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEnF5C;;;;;;;;;;;;;;;;;;;;AAoBG;AAuBG,MAAO,aAAc,SAAQ,cAAc,CAAA;AAC5B,IAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC;AACrD,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEpC,KAAK,GAAG,KAAK,CAAoB,EAAE;8EAAC;IACpC,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAA4B;IAE1C,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;IACxB,KAAK,GAAG,SAAS,CAAC,OAAO;8EAAC;;AAGxB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;uFAAC;AAElD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;iFAAC;AAEiB,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,OAAO,QAAQ,CAAC,MAAM,KAAK;AACzB,cAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClB,cAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACzD,CAAC;+EAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,iBAAiB,CAAC,MAAK;YACrB,IAAI,IAAI,CAAC,MAAM,EAAE;AAAE,gBAAA,IAAI,CAAC,KAAK,EAAE,EAAE,wBAAwB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACjF,QAAA,CAAC,CAAC;IACJ;;AAGS,IAAA,KAAK,CAAC,OAAsB,EAAA;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAc,cAAc,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;IACvF;AAEU,IAAA,QAAQ,CAAC,OAA0B,EAAA;QAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;;;AAGrB,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,OAAO;AACT,aAAA,MAAM,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;aAC9C,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAClC;IACH;IAEU,OAAO,CAAC,MAAc,EAAE,MAAc,EAAA;AAC9C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,KAAK,MAAM,CAAC;AACtE,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3E,eAAe,CACb,MAAK;AACH,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CACzD,0BAA0B,CAC3B;AACD,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7D,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,CAAC,KAAK,EAAE;;gBACrC,IAAI,CAAC,KAAK,EAAE;QACnB,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAC7B;IACH;AAEU,IAAA,SAAS,CAAC,SAAqB,EAAA;AACvC,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,aAA4B;AACtD,QAAA,IAAI,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE;AACtE,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;IACnB;uGAxEW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAUW,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnF5C,onGAsFA,41FD7BI,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,YAAY,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,QAAQ,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,aAAa,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,cAAc,6HACd,OAAO,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,MAAM,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,mBAAmB,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOV,aAAa,EAAA,UAAA,EAAA,CAAA;kBAtBzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,WAAW;wBACX,iBAAiB;wBACjB,MAAM;wBACN,YAAY;wBACZ,QAAQ;wBACR,aAAa;wBACb,cAAc;wBACd,OAAO;wBACP,MAAM;wBACN,mBAAmB;qBACpB,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,YAAY,EAAE,mBAAmB;AAClC,qBAAA,EAAA,QAAA,EAAA,onGAAA,EAAA,MAAA,EAAA,CAAA,oyFAAA,CAAA,EAAA;oVAYkC,OAAO,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE9D5C;;;;;;;;;;;;;;;;;;;;;AAqBG;MASU,MAAM,CAAA;;IAER,SAAS,GAAG,KAAK,CAAC,QAAQ;kFAAU;IACpC,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAA0B;IACjD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAExD,SAAS,GAAG,KAAK,CAAoB,EAAE;kFAAC;IACxC,OAAO,GAAG,KAAK,CAAoB,EAAE;gFAAC;;AAG5B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;wFAAC;AAEzD,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;uFAAC;AAE/D,IAAA,SAAS,CAAC,KAAkB,EAAA;QACpC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;IAChD;IAEU,WAAW,CAAC,KAAkB,EAAE,MAAe,EAAA;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;QAC1E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IACjE;AAEU,IAAA,YAAY,CAAC,OAA0B,EAAA;QAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IAClC;uGAzBW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,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,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnDnB,0tDAuDA,EAAA,MAAA,EAAA,CAAA,qnCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDPY,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,KAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGtD,MAAM,EAAA,UAAA,EAAA,CAAA;kBARlB,SAAS;+BACE,SAAS,EAAA,eAAA,EAGF,uBAAuB,CAAC,MAAM,WACtC,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,CAAC,QAC5D,EAAE,KAAK,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,0tDAAA,EAAA,MAAA,EAAA,CAAA,qnCAAA,CAAA,EAAA;;;AEjD5B;;;;;;;;;;;;;;;;;AAiBG;;ACjBH;;AAEG;;"}