@basis-ng/primitives 0.0.1-alpha.21 → 0.0.1-alpha.23

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.
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@angular/cdk/menu";
3
+ /**
4
+ * Represents a group of menu items.
5
+ */
6
+ export declare class MenuGroupComponent {
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<MenuGroupComponent, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuGroupComponent, "b-menu-group", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.CdkMenuGroup; inputs: {}; outputs: {}; }]>;
9
+ }
@@ -5,5 +5,5 @@ import * as i1 from "@angular/cdk/menu";
5
5
  */
6
6
  export declare class MenuItemComponent {
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemComponent, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemComponent, "b-menu-item", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.CdkMenuItem; inputs: { "cdkMenuItemDisabled": "disabled"; "cdkMenuitemTypeaheadLabel": "typeaheadLabel"; }; outputs: { "cdkMenuItemTriggered": "triggered"; }; }]>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemComponent, "button[b-menu-item]", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.CdkMenuItem; inputs: { "cdkMenuItemDisabled": "disabled"; "cdkMenuitemTypeaheadLabel": "typeaheadLabel"; }; outputs: { "cdkMenuItemTriggered": "triggered"; }; }]>;
9
9
  }
@@ -5,5 +5,5 @@ import * as i1 from "@angular/cdk/menu";
5
5
  */
6
6
  export declare class MenuItemCheckboxComponent {
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemCheckboxComponent, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemCheckboxComponent, "b-menu-item-checkbox", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.CdkMenuItemCheckbox; inputs: { "cdkMenuItemDisabled": "disabled"; "cdkMenuitemTypeaheadLabel": "typeaheadLabel"; "cdkMenuItemChecked": "active"; }; outputs: { "cdkMenuItemTriggered": "triggered"; }; }]>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemCheckboxComponent, "button[b-menu-item-checkbox]", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.CdkMenuItemCheckbox; inputs: { "cdkMenuItemDisabled": "disabled"; "cdkMenuitemTypeaheadLabel": "typeaheadLabel"; "cdkMenuItemChecked": "active"; }; outputs: { "cdkMenuItemTriggered": "triggered"; }; }]>;
9
9
  }
@@ -5,5 +5,5 @@ import * as i1 from "@angular/cdk/menu";
5
5
  */
6
6
  export declare class MenuItemRadioComponent {
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemRadioComponent, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemRadioComponent, "b-menu-item-radio", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.CdkMenuItemRadio; inputs: { "cdkMenuItemDisabled": "disabled"; "cdkMenuitemTypeaheadLabel": "typeaheadLabel"; "cdkMenuItemChecked": "active"; }; outputs: { "cdkMenuItemTriggered": "triggered"; }; }]>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemRadioComponent, "button[b-menu-item-radio]", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.CdkMenuItemRadio; inputs: { "cdkMenuItemDisabled": "disabled"; "cdkMenuitemTypeaheadLabel": "typeaheadLabel"; "cdkMenuItemChecked": "active"; }; outputs: { "cdkMenuItemTriggered": "triggered"; }; }]>;
9
9
  }
@@ -10,7 +10,7 @@ import { NgStyle, NgClass, CommonModule } from '@angular/common';
10
10
  import * as i1$1 from '@angular/cdk/drag-drop';
11
11
  import { CdkDrag, CdkDragHandle, CdkDropList, CdkDropListGroup } from '@angular/cdk/drag-drop';
12
12
  import * as i1$2 from '@angular/cdk/menu';
13
- import { CdkMenu, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuItemRadio, CdkMenuTrigger } from '@angular/cdk/menu';
13
+ import { CdkMenu, CdkMenuItem, CdkMenuGroup, CdkMenuItemCheckbox, CdkMenuItemRadio, CdkMenuTrigger } from '@angular/cdk/menu';
14
14
  import { ActiveDescendantKeyManager, CdkTrapFocus } from '@angular/cdk/a11y';
15
15
  import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
16
16
 
@@ -591,7 +591,7 @@ class SelectComponent {
591
591
  cdkConnectedOverlay
592
592
  [cdkConnectedOverlayOrigin]="trigger"
593
593
  [cdkConnectedOverlayOpen]="isOpen()"
594
- [cdkConnectedOverlayWidth]="buttonWidth()"
594
+ [cdkConnectedOverlayMinWidth]="buttonWidth()"
595
595
  [cdkConnectedOverlayHasBackdrop]="true"
596
596
  cdkConnectedOverlayBackdropClass="cdk-overlay-transparent-backdrop"
597
597
  [cdkConnectedOverlayPositions]="[
@@ -637,7 +637,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
637
637
  cdkConnectedOverlay
638
638
  [cdkConnectedOverlayOrigin]="trigger"
639
639
  [cdkConnectedOverlayOpen]="isOpen()"
640
- [cdkConnectedOverlayWidth]="buttonWidth()"
640
+ [cdkConnectedOverlayMinWidth]="buttonWidth()"
641
641
  [cdkConnectedOverlayHasBackdrop]="true"
642
642
  cdkConnectedOverlayBackdropClass="cdk-overlay-transparent-backdrop"
643
643
  [cdkConnectedOverlayPositions]="[
@@ -2190,12 +2190,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
2190
2190
  */
2191
2191
  class MenuItemComponent {
2192
2192
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: MenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2193
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.7", type: MenuItemComponent, isStandalone: true, selector: "b-menu-item", hostDirectives: [{ directive: i1$2.CdkMenuItem, inputs: ["cdkMenuItemDisabled", "disabled", "cdkMenuitemTypeaheadLabel", "typeaheadLabel"], outputs: ["cdkMenuItemTriggered", "triggered"] }], ngImport: i0, template: `<ng-content />`, isInline: true });
2193
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.7", type: MenuItemComponent, isStandalone: true, selector: "button[b-menu-item]", hostDirectives: [{ directive: i1$2.CdkMenuItem, inputs: ["cdkMenuItemDisabled", "disabled", "cdkMenuitemTypeaheadLabel", "typeaheadLabel"], outputs: ["cdkMenuItemTriggered", "triggered"] }], ngImport: i0, template: `<ng-content />`, isInline: true });
2194
2194
  }
2195
2195
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: MenuItemComponent, decorators: [{
2196
2196
  type: Component,
2197
2197
  args: [{
2198
- selector: 'b-menu-item',
2198
+ selector: 'button[b-menu-item]',
2199
2199
  imports: [],
2200
2200
  template: `<ng-content />`,
2201
2201
  hostDirectives: [
@@ -2211,17 +2211,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
2211
2211
  }]
2212
2212
  }] });
2213
2213
 
2214
+ /**
2215
+ * Represents a group of menu items.
2216
+ */
2217
+ class MenuGroupComponent {
2218
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: MenuGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2219
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.7", type: MenuGroupComponent, isStandalone: true, selector: "b-menu-group", hostDirectives: [{ directive: i1$2.CdkMenuGroup }], ngImport: i0, template: `<ng-content />`, isInline: true });
2220
+ }
2221
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: MenuGroupComponent, decorators: [{
2222
+ type: Component,
2223
+ args: [{
2224
+ selector: 'b-menu-group',
2225
+ imports: [],
2226
+ template: `<ng-content />`,
2227
+ hostDirectives: [CdkMenuGroup],
2228
+ }]
2229
+ }] });
2230
+
2214
2231
  /**
2215
2232
  * Represents a checkbox menu item.
2216
2233
  */
2217
2234
  class MenuItemCheckboxComponent {
2218
2235
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: MenuItemCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2219
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.7", type: MenuItemCheckboxComponent, isStandalone: true, selector: "b-menu-item-checkbox", hostDirectives: [{ directive: i1$2.CdkMenuItemCheckbox, inputs: ["cdkMenuItemDisabled", "disabled", "cdkMenuitemTypeaheadLabel", "typeaheadLabel", "cdkMenuItemChecked", "active"], outputs: ["cdkMenuItemTriggered", "triggered"] }], ngImport: i0, template: `<ng-content />`, isInline: true });
2236
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.7", type: MenuItemCheckboxComponent, isStandalone: true, selector: "button[b-menu-item-checkbox]", hostDirectives: [{ directive: i1$2.CdkMenuItemCheckbox, inputs: ["cdkMenuItemDisabled", "disabled", "cdkMenuitemTypeaheadLabel", "typeaheadLabel", "cdkMenuItemChecked", "active"], outputs: ["cdkMenuItemTriggered", "triggered"] }], ngImport: i0, template: `<ng-content />`, isInline: true });
2220
2237
  }
2221
2238
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: MenuItemCheckboxComponent, decorators: [{
2222
2239
  type: Component,
2223
2240
  args: [{
2224
- selector: 'b-menu-item-checkbox',
2241
+ selector: 'button[b-menu-item-checkbox]',
2225
2242
  imports: [],
2226
2243
  template: `<ng-content />`,
2227
2244
  hostDirectives: [
@@ -2243,12 +2260,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
2243
2260
  */
2244
2261
  class MenuItemRadioComponent {
2245
2262
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: MenuItemRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2246
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.7", type: MenuItemRadioComponent, isStandalone: true, selector: "b-menu-item-radio", hostDirectives: [{ directive: i1$2.CdkMenuItemRadio, inputs: ["cdkMenuItemDisabled", "disabled", "cdkMenuitemTypeaheadLabel", "typeaheadLabel", "cdkMenuItemChecked", "active"], outputs: ["cdkMenuItemTriggered", "triggered"] }], ngImport: i0, template: `<ng-content />`, isInline: true });
2263
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.7", type: MenuItemRadioComponent, isStandalone: true, selector: "button[b-menu-item-radio]", hostDirectives: [{ directive: i1$2.CdkMenuItemRadio, inputs: ["cdkMenuItemDisabled", "disabled", "cdkMenuitemTypeaheadLabel", "typeaheadLabel", "cdkMenuItemChecked", "active"], outputs: ["cdkMenuItemTriggered", "triggered"] }], ngImport: i0, template: `<ng-content />`, isInline: true });
2247
2264
  }
2248
2265
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: MenuItemRadioComponent, decorators: [{
2249
2266
  type: Component,
2250
2267
  args: [{
2251
- selector: 'b-menu-item-radio',
2268
+ selector: 'button[b-menu-item-radio]',
2252
2269
  imports: [],
2253
2270
  template: `<ng-content />`,
2254
2271
  hostDirectives: [
@@ -2780,7 +2797,7 @@ class ComboboxComponent {
2780
2797
  cdkConnectedOverlay
2781
2798
  [cdkConnectedOverlayOrigin]="trigger"
2782
2799
  [cdkConnectedOverlayOpen]="isOpen()"
2783
- [cdkConnectedOverlayWidth]="buttonWidth()"
2800
+ [cdkConnectedOverlayMinWidth]="buttonWidth()"
2784
2801
  [cdkConnectedOverlayHasBackdrop]="true"
2785
2802
  cdkConnectedOverlayBackdropClass="cdk-overlay-transparent-backdrop"
2786
2803
  [cdkConnectedOverlayPositions]="[
@@ -2826,7 +2843,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
2826
2843
  cdkConnectedOverlay
2827
2844
  [cdkConnectedOverlayOrigin]="trigger"
2828
2845
  [cdkConnectedOverlayOpen]="isOpen()"
2829
- [cdkConnectedOverlayWidth]="buttonWidth()"
2846
+ [cdkConnectedOverlayMinWidth]="buttonWidth()"
2830
2847
  [cdkConnectedOverlayHasBackdrop]="true"
2831
2848
  cdkConnectedOverlayBackdropClass="cdk-overlay-transparent-backdrop"
2832
2849
  [cdkConnectedOverlayPositions]="[
@@ -2875,5 +2892,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
2875
2892
  * Generated bundle index. Do not edit.
2876
2893
  */
2877
2894
 
2878
- export { Alert, AttachedBox, Badge, BottomSheet, Button, ButtonGroup, Checkbox, ColorPicker, ComboboxComponent, CommandComponent, CommandOptionsComponent, Icon, InViewportDirective, InViewportService, Input, InputGroup, LazyContentDirective, Menu, MenuItemCheckboxComponent, MenuItemComponent, MenuItemRadioComponent, MenuLabel, MenuTrigger, OptionComponent, Range, ResponsiveService, Row, RowItem, SelectComponent, SelectOptionsComponent, SideSheet, Spinner, Switch, Tab, Table, Tabs, Textarea, ThemeService, TooltipComponent, Tree, TreeNode };
2895
+ export { Alert, AttachedBox, Badge, BottomSheet, Button, ButtonGroup, Checkbox, ColorPicker, ComboboxComponent, CommandComponent, CommandOptionsComponent, Icon, InViewportDirective, InViewportService, Input, InputGroup, LazyContentDirective, Menu, MenuGroupComponent, MenuItemCheckboxComponent, MenuItemComponent, MenuItemRadioComponent, MenuLabel, MenuTrigger, OptionComponent, Range, ResponsiveService, Row, RowItem, SelectComponent, SelectOptionsComponent, SideSheet, Spinner, Switch, Tab, Table, Tabs, Textarea, ThemeService, TooltipComponent, Tree, TreeNode };
2879
2896
  //# sourceMappingURL=basis-ng-primitives.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"basis-ng-primitives.mjs","sources":["../../../projects/primitives/src/core/services/theme.service.ts","../../../projects/primitives/src/core/components/button/button.component.ts","../../../projects/primitives/src/core/components/button-group/button-group.component.ts","../../../projects/primitives/src/shared/directives/lazy-content.directive.ts","../../../projects/primitives/src/core/components/input/input.component.ts","../../../projects/primitives/src/shared/components/option.component.ts","../../../projects/primitives/src/core/components/select/select-options.component.ts","../../../projects/primitives/src/core/components/icon/icon.component.ts","../../../projects/primitives/src/core/components/select/select.component.ts","../../../projects/primitives/src/core/components/spinner/spinner.component.ts","../../../projects/primitives/src/core/components/spinner/spinner.component.html","../../../projects/primitives/src/core/components/switch/switch.component.ts","../../../projects/primitives/src/core/components/table/table.component.ts","../../../projects/primitives/src/core/components/table/table.component.html","../../../projects/primitives/src/core/components/table/components/row/row.component.ts","../../../projects/primitives/src/core/components/table/components/row/row.component.html","../../../projects/primitives/src/core/components/table/components/row/components/row-item/row-item.component.ts","../../../projects/primitives/src/core/components/table/components/row/components/row-item/row-item.component.html","../../../projects/primitives/src/core/components/tabs/components/tab/tab.component.ts","../../../projects/primitives/src/core/components/tabs/components/tab/tab.component.html","../../../projects/primitives/src/core/components/tabs/tabs.component.ts","../../../projects/primitives/src/core/components/tabs/tabs.component.html","../../../projects/primitives/src/core/services/in-viewport.service.ts","../../../projects/primitives/src/core/directives/in-viewport.directive.ts","../../../projects/primitives/src/core/components/side-sheet/side-sheet.component.ts","../../../projects/primitives/src/core/components/side-sheet/side-sheet.component.html","../../../projects/primitives/src/core/components/bottom-sheet/bottom-sheet.component.ts","../../../projects/primitives/src/core/components/bottom-sheet/bottom-sheet.component.html","../../../projects/primitives/src/core/services/responsive.service.ts","../../../projects/primitives/src/core/components/attached-box/attached-box.component.ts","../../../projects/primitives/src/core/components/attached-box/attached-box.component.html","../../../projects/primitives/src/core/components/badge/badge.component.ts","../../../projects/primitives/src/core/components/checkbox/checkbox.component.ts","../../../projects/primitives/src/core/components/textarea/textarea.component.ts","../../../projects/primitives/src/core/components/input-group/input-group.component.ts","../../../projects/primitives/src/core/components/range/range.component.ts","../../../projects/primitives/src/core/components/tooltip/tooltip.component.ts","../../../projects/primitives/src/core/components/color-picker/color-picker.component.ts","../../../projects/primitives/src/core/components/tree/shared/components/tree-node/tree-node.component.ts","../../../projects/primitives/src/core/components/tree/shared/components/tree-node/tree-node.component.html","../../../projects/primitives/src/core/components/tree/tree.component.ts","../../../projects/primitives/src/core/components/menu/menu.component.ts","../../../projects/primitives/src/core/components/menu/shared/components/menu-label/menu-label.component.ts","../../../projects/primitives/src/core/components/menu/shared/components/menu-item/menu-item.component.ts","../../../projects/primitives/src/core/components/menu/shared/components/menu-item-checkbox/menu-item-checkbox.component.ts","../../../projects/primitives/src/core/components/menu/shared/components/menu-item-radio/menu-item-radio.component.ts","../../../projects/primitives/src/core/components/menu/shared/directives/menu-trigger.directive.ts","../../../projects/primitives/src/core/components/alert/alert.component.ts","../../../projects/primitives/src/core/components/alert/alert.component.html","../../../projects/primitives/src/core/components/command/command-options.component.ts","../../../projects/primitives/src/core/components/command/command.component.ts","../../../projects/primitives/src/core/components/combobox/combobox.component.ts","../../../projects/primitives/src/public-api.ts","../../../projects/primitives/src/basis-ng-primitives.ts"],"sourcesContent":["import { Injectable, Renderer2, RendererFactory2, inject } from '@angular/core';\r\nimport { signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ThemeService {\r\n /**\r\n * Signal representing the current theme.\r\n *\r\n * Possible values:\r\n * - `'light'`: Light theme.\r\n * - `'dark'`: Dark theme.\r\n * - `'auto'`: Automatically determine the theme.\r\n */\r\n readonly theme = signal<'light' | 'dark' | 'auto'>('auto');\r\n\r\n /**\r\n * Renderer2 instance for manipulating the DOM.\r\n * Used to set the `data-theme` attribute on the document root (`<html>`).\r\n */\r\n private renderer: Renderer2;\r\n\r\n /**\r\n * RendererFactory2 instance for creating Renderer2 instances.\r\n * Injected to create the renderer.\r\n */\r\n private rendererFactory = inject(RendererFactory2);\r\n\r\n constructor() {\r\n this.renderer = this.rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n /**\r\n * Applies the specified theme to the document root (`<html>`).\r\n *\r\n * @param theme - The theme to apply. Possible values:\r\n * - `'light'`: Apply the light theme.\r\n * - `'dark'`: Apply the dark theme.\r\n * - `'auto'`: Remove the theme attribute and let the system decide.\r\n */\r\n applyTheme(theme: 'light' | 'dark' | 'auto'): void {\r\n this.theme.set(theme);\r\n if (theme === 'auto') {\r\n this.removeTheme();\r\n return;\r\n }\r\n this.renderer.setAttribute(document.documentElement, 'data-theme', theme);\r\n }\r\n\r\n /**\r\n * Toggles the theme between `'light'` and `'dark'`.\r\n * If the current theme is `'light'`, it switches to `'dark'`, and vice versa.\r\n */\r\n toggleTheme(): void {\r\n this.applyTheme(this.theme() === 'light' ? 'dark' : 'light');\r\n }\r\n\r\n /**\r\n * Removes the `data-theme` attribute from the document body.\r\n * This is used when the theme is set to `'auto'`.\r\n */\r\n removeTheme(): void {\r\n this.renderer.removeAttribute(document.documentElement, 'data-theme');\r\n }\r\n}\r\n","import { Component, ElementRef, inject, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'button[b-button]',\r\n template: ` <ng-content />`,\r\n host: {\r\n '[class]': 'variant() + \" size-\" + size()',\r\n '[class.active]': 'activeEnabled()',\r\n },\r\n})\r\nexport class Button {\r\n /** The variant of the button. */\r\n readonly variant = input<'primary' | 'secondary' | 'ghost' | 'outlined'>(\r\n 'primary'\r\n );\r\n\r\n /** The size of the button. */\r\n readonly size = input<'1' | '2' | '3'>('2');\r\n\r\n /** Whether the button active animation is enabled. */\r\n readonly activeEnabled = input(true);\r\n\r\n /** The element reference of the button. */\r\n el = inject(ElementRef);\r\n}\r\n","import { Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'b-button-group',\r\n template: `<ng-content />`,\r\n host: {\r\n class: 'button-group',\r\n '[class.spaced]': 'spaced()',\r\n },\r\n})\r\nexport class ButtonGroup {\r\n /**\r\n * Whether the buttons should be spaced.\r\n */\r\n readonly spaced = input<boolean>(false);\r\n}\r\n","import { Directive, inject, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[b-lazy]',\r\n standalone: true,\r\n})\r\nexport class LazyContentDirective {\r\n tpl = inject(TemplateRef);\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n computed,\r\n ElementRef,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { NgModel } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'input[b-input]',\r\n template: ``,\r\n host: {\r\n '[type]': 'type()',\r\n '[style.max-width]': 'maxWidth()',\r\n '(input)': 'onInput($event)',\r\n '(blur)': 'onBlur($event)',\r\n '[class]': ' \"size-\" + size() ',\r\n },\r\n})\r\nexport class Input implements AfterViewInit {\r\n /**\r\n * The type of the input.\r\n */\r\n readonly type = input<'text' | 'number' | 'password' | 'email'>('text');\r\n\r\n /**\r\n * The maximum width of the input.\r\n */\r\n readonly maxWidth = input<string>('');\r\n\r\n /**\r\n * The number of decimal places for number input.\r\n */\r\n readonly decimals = input<number>(2);\r\n\r\n /**\r\n * The type of number input (integer or decimal).\r\n */\r\n readonly numberType = input<'integer' | 'decimal'>('integer');\r\n\r\n /**\r\n * Whether the input type is number.\r\n */\r\n readonly isNumberType = computed(() => this.type() === 'number');\r\n\r\n /**\r\n * Reference to the input element.\r\n */\r\n readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n\r\n /**\r\n * Reference to the ngModel directive.\r\n */\r\n private ngModel = inject(NgModel, { optional: true });\r\n\r\n /**\r\n * The size of the input.\r\n */\r\n readonly size = input<'1' | '2' | '3'>('2');\r\n\r\n /**\r\n * After the view has been initialized, set the value of the select.\r\n */\r\n ngAfterViewInit(): void {\r\n const value = this.el.nativeElement.value || this.ngModel?.model;\r\n if (this.isNumberType()) {\r\n const formattedValue = this.formatNumber(value) || '';\r\n this.setValue(formattedValue);\r\n }\r\n }\r\n\r\n /**\r\n * Sets the value of the input element.\r\n * @param value The value to set.\r\n */\r\n setValue(value: string): void {\r\n this.el.nativeElement.value = value;\r\n }\r\n\r\n /**\r\n * Handles the input event.\r\n * @param event The input event.\r\n */\r\n onInput(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n\r\n // If the input is not of number type, update the value and emit the value change event.\r\n if (!this.isNumberType()) {\r\n this.setValue(target.value);\r\n }\r\n }\r\n\r\n /**\r\n * The blur event handler.\r\n * @param event - The blur event.\r\n */\r\n onBlur(event: any): void {\r\n // If the input is of number type, format the value and emit the value change event.\r\n if (this.isNumberType()) {\r\n const formattedValue = this.formatNumber(event.target.value);\r\n this.setValue(formattedValue || '');\r\n }\r\n }\r\n\r\n /**\r\n * Formats the number value.\r\n * @param value - The value to format.\r\n * @returns The formatted value.\r\n */\r\n formatNumber(value: string | null) {\r\n if (value) {\r\n const numericValue = Number(value);\r\n return this.numberType() === 'integer'\r\n ? Math.round(numericValue).toString()\r\n : numericValue.toFixed(this.decimals());\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { CdkOption } from '@angular/cdk/listbox';\r\nimport { Component, ElementRef, inject } from '@angular/core';\r\n\r\n/**\r\n * Component representing an individual option in a select or combobox.\r\n * This component integrates with Angular CDK Option to manage the option's state and behavior.\r\n */\r\n@Component({\r\n selector: 'li[b-option]',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [\r\n {\r\n directive: CdkOption,\r\n inputs: ['cdkOption: value'],\r\n },\r\n ],\r\n})\r\nexport class OptionComponent {\r\n /**\r\n * The `ElementRef` of the option.\r\n * This provides direct access to the DOM element of the option.\r\n */\r\n el = inject(ElementRef);\r\n\r\n /**\r\n * The `CdkOption` instance associated with this option.\r\n * This provides methods and properties for managing the option's state, such as selection and value.\r\n */\r\n cdkOption = inject(CdkOption);\r\n}\r\n","import { CdkListbox } from '@angular/cdk/listbox';\r\nimport {\r\n Component,\r\n contentChildren,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { OptionComponent } from '../../../shared/components/option.component';\r\n\r\n/**\r\n * Component representing the list of options in a select.\r\n * This component integrates with Angular CDK Listbox to manage options and their selection.\r\n */\r\n@Component({\r\n selector: 'ul[b-select-options]',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [\r\n {\r\n directive: CdkListbox,\r\n inputs: ['cdkListboxValue'],\r\n outputs: ['cdkListboxValueChange'],\r\n },\r\n ],\r\n host: {\r\n '[cdkListboxValue]': 'value()',\r\n '(cdkListboxValueChange)': 'handleValueChange($event.value)',\r\n '[style.max-height]': 'maxHeight()',\r\n },\r\n})\r\nexport class SelectOptionsComponent {\r\n /**\r\n * Signal representing the selected values in the listbox.\r\n * This is an array of strings corresponding to the selected option values.\r\n */\r\n readonly value = signal<string[]>([]);\r\n\r\n /**\r\n * Event emitter triggered when the dropdown should close.\r\n * This is used to notify the parent component to close the dropdown.\r\n */\r\n closeEmitter = output();\r\n\r\n /**\r\n * Reference to the host element of the component.\r\n * This provides access to the DOM element of the options list.\r\n */\r\n el = inject(ElementRef);\r\n\r\n /**\r\n * Input for setting the maximum height of the dropdown.\r\n * Defaults to '300px'. This controls the vertical size of the dropdown.\r\n */\r\n readonly maxHeight = input<string>('300px');\r\n\r\n /**\r\n * Reference to the CDK Listbox directive.\r\n * This is used to manage the options and their selection state.\r\n */\r\n listBox = inject(CdkListbox);\r\n\r\n /**\r\n * Reference to the list of options in the dropdown.\r\n * This is a collection of `OptionComponent` instances representing the available options.\r\n */\r\n readonly options = contentChildren(OptionComponent);\r\n\r\n /**\r\n * Handles changes to the selected value in the listbox.\r\n * This method updates the `value` signal, emits the `closeEmitter` event,\r\n * and ensures the parent component is notified of the selection change.\r\n *\r\n * @param value - The new array of selected values.\r\n */\r\n handleValueChange(value: string[]) {\r\n this.value.set(value);\r\n this.closeEmitter.emit();\r\n }\r\n}\r\n","import { Component, computed, inject, input } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { createElement, icons } from 'lucide';\r\n\r\n@Component({\r\n selector: 'i[b-icon]',\r\n imports: [],\r\n template: ``,\r\n host: {\r\n '[innerHTML]': 'iconSvg()',\r\n },\r\n})\r\nexport class Icon {\r\n /**\r\n * The sanitizer service.\r\n */\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n /**\r\n * The icon of the text field.\r\n */\r\n readonly icon = input.required<string>();\r\n\r\n /**\r\n * The size of the icon.\r\n */\r\n readonly size = input(24);\r\n\r\n /**\r\n * The stroke of the icon.\r\n */\r\n readonly strokeWidth = input(1.8);\r\n\r\n /**\r\n * The color of the icon.\r\n */\r\n readonly color = input<string>('var(--foreground, #798194)');\r\n\r\n /**\r\n * The svg of the icon.\r\n */\r\n readonly iconSvg = computed(() => {\r\n if (!(icons as any)[this.icon()]) {\r\n console.error(`Icon '${this.icon()}' not found in Lucide icons.`);\r\n return this.sanitizer.bypassSecurityTrustHtml('');\r\n }\r\n\r\n const iconSvg = createElement((icons as any)[this.icon()], {\r\n width: this.size(),\r\n height: this.size(),\r\n stroke: this.color(),\r\n 'stroke-width': this.strokeWidth(),\r\n });\r\n return this.sanitizer.bypassSecurityTrustHtml(iconSvg.outerHTML);\r\n });\r\n}\r\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\r\nimport {\r\n Component,\r\n computed,\r\n contentChild,\r\n HostListener,\r\n input,\r\n linkedSignal,\r\n model,\r\n OnInit,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { SelectOptionsComponent } from './select-options.component';\r\nimport { Button } from '../button/button.component';\r\nimport { Icon } from '../icon/icon.component';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { forwardRef } from '@angular/core';\r\n\r\n/**\r\n * Component representing a custom select dropdown.\r\n * This component provides a button to toggle the dropdown and displays the selected option(s).\r\n */\r\n@Component({\r\n selector: 'b-select',\r\n imports: [Button, Icon, CdkConnectedOverlay, CdkOverlayOrigin],\r\n template: ` <button\r\n b-button\r\n variant=\"outlined\"\r\n (click)=\"isOpen() ? close() : open()\"\r\n (keydown.arrowUp)=\"!isOpen() && open()\"\r\n (keydown.arrowDown)=\"!isOpen() && open()\"\r\n cdkOverlayOrigin\r\n [activeEnabled]=\"false\"\r\n #trigger=\"cdkOverlayOrigin\">\r\n {{ content() }}\r\n <i b-icon icon=\"ChevronDown\" [size]=\"20\"></i>\r\n </button>\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n [cdkConnectedOverlayWidth]=\"buttonWidth()\"\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayPositions]=\"[\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: 5,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -5,\r\n },\r\n ]\"\r\n (backdropClick)=\"close()\"\r\n (attach)=\"onOverlayAttached()\"\r\n (detach)=\"close()\">\r\n <ng-content />\r\n </ng-template>`,\r\n host: {\r\n '[class.disabled]': 'disabled()',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SelectComponent implements OnInit, ControlValueAccessor {\r\n /**\r\n * Placeholder text displayed when no option is selected.\r\n * Defaults to 'Select an option'.\r\n */\r\n readonly placeholder = input<string>('Select an option');\r\n\r\n /**\r\n * Signal indicating whether the dropdown is currently open.\r\n */\r\n readonly isOpen = signal(false);\r\n\r\n /**\r\n * Reference to the button element used to toggle the dropdown.\r\n * This is used for managing focus and interactions.\r\n */\r\n readonly button = viewChild(Button);\r\n\r\n /**\r\n * Reference to the content component of the dropdown.\r\n * This contains the list of selectable options.\r\n */\r\n readonly optionsList = contentChild(SelectOptionsComponent);\r\n\r\n /**\r\n * Computed signal representing the selected values from the dropdown.\r\n * This is linked to the value of the `OptionsListComponent`.\r\n */\r\n readonly value = linkedSignal(() => this.optionsList()?.value());\r\n\r\n /**\r\n * Linked signal for the width of the button element.\r\n * This is used to set the width of the dropdown overlay.\r\n */\r\n readonly buttonWidth = linkedSignal(\r\n () => this.button()?.el.nativeElement.offsetWidth\r\n );\r\n\r\n /**\r\n * Model indicating whether the select component is disabled.\r\n * When disabled, the dropdown cannot be opened or interacted with.\r\n */\r\n readonly disabled = model(false);\r\n\r\n /**\r\n * Computed signal representing the options available in the dropdown.\r\n * This retrieves the options from the `OptionsListComponent`.\r\n */\r\n readonly options = computed(() => this.optionsList()?.options());\r\n\r\n /**\r\n * Computed signal representing the content of the selected option(s).\r\n * If no option is selected, it returns the placeholder text.\r\n */\r\n readonly content = computed(() => {\r\n const selected = this.value();\r\n if (selected && selected.length > 0) {\r\n return this.options()?.reduce((acc, option) => {\r\n if (selected.includes(option.cdkOption.value)) {\r\n return acc\r\n ? acc + ', ' + option.el.nativeElement.innerText\r\n : option.el.nativeElement.innerText;\r\n }\r\n return acc;\r\n }, '');\r\n } else {\r\n return this.placeholder();\r\n }\r\n });\r\n\r\n /**\r\n * Signal representing the delay before closing the dropdown.\r\n * This is used to provide a smooth transition when closing the dropdown.\r\n */\r\n readonly closeDelay = signal(150);\r\n\r\n /**\r\n * Reference to the CdkConnectedOverlay directive.\r\n * This is used to manage the positioning and visibility of the dropdown overlay.\r\n */\r\n readonly cdkConnectedOverlay = viewChild(CdkConnectedOverlay);\r\n\r\n /**\r\n * Lifecycle hook that is called after the component is initialized.\r\n * It sets up the necessary subscriptions for handling value changes.\r\n */\r\n ngOnInit(): void {\r\n this.handleSelectedValueChange();\r\n }\r\n\r\n /**\r\n * Subscribes to the `closeEmitter` of the `OptionsListComponent` to handle\r\n * changes to the selected value. This ensures the dropdown closes and the\r\n * value is propagated to Angular Forms.\r\n */\r\n handleSelectedValueChange() {\r\n this.optionsList()?.closeEmitter.subscribe(() => {\r\n this.onChange(this.value()!); // Notify Angular Forms about the change\r\n this.onTouched(); // Mark the component as touched\r\n this.close(); // Close the dropdown\r\n });\r\n }\r\n\r\n /**\r\n * Opens the dropdown.\r\n * This method sets the `isOpen` signal to `true`.\r\n */\r\n open() {\r\n this.isOpen.set(true);\r\n }\r\n\r\n /**\r\n * Closes the dropdown with a transition effect and refocuses the button.\r\n * This method sets the `isOpen` signal to `false` after a delay and removes\r\n * the transition class from the overlay panel.\r\n */\r\n close() {\r\n this.cdkConnectedOverlay()?.overlayRef.addPanelClass(\r\n 'cdk-overlay-pane-closing'\r\n );\r\n\r\n setTimeout(() => {\r\n this.isOpen.set(false);\r\n this.cdkConnectedOverlay()?.overlayRef.removePanelClass(\r\n 'cdk-overlay-pane-closing'\r\n );\r\n this.button()?.el.nativeElement.focus();\r\n }, this.closeDelay());\r\n }\r\n\r\n /**\r\n * Focuses the options list when the overlay is attached.\r\n */\r\n onOverlayAttached() {\r\n this.buttonWidth.set(this.button()?.el.nativeElement.offsetWidth);\r\n this.optionsList()?.el.nativeElement.focus();\r\n }\r\n\r\n /**\r\n * Sets the width of the dropdown overlay based on the button's width.\r\n * This ensures that the dropdown aligns properly with the button.\r\n */\r\n @HostListener('window:resize')\r\n setButtonWidth() {\r\n this.buttonWidth.set(this.button()?.el.nativeElement.offsetWidth);\r\n }\r\n\r\n // Control Value Accessor methods\r\n\r\n /**\r\n * Callback function to propagate changes to the model.\r\n * This is called whenever the value changes.\r\n */\r\n private onChange: (value: string[]) => void = () => undefined;\r\n\r\n /**\r\n * Callback function to mark the component as touched.\r\n * This is called when the component loses focus.\r\n */\r\n private onTouched: () => void = () => undefined;\r\n\r\n /**\r\n * Writes a new value to the component.\r\n * This method is called by Angular Forms to update the value of the select component.\r\n * @param value - The new value to set.\r\n */\r\n writeValue(value: string[]): void {\r\n if (value) {\r\n value.forEach(value => {\r\n this.optionsList()?.listBox?.selectValue(value);\r\n });\r\n this.value.set(value);\r\n }\r\n }\r\n\r\n /**\r\n * Registers a callback function to be called when the value changes.\r\n * @param fn - The callback function.\r\n */\r\n registerOnChange(fn: (value: string[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Registers a callback function to be called when the component is touched.\r\n * @param fn - The callback function.\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Sets the disabled state of the component.\r\n * This method is called by Angular Forms to enable or disable the component.\r\n * @param isDisabled - A boolean indicating whether the component should be disabled.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n}\r\n","import { Component, input } from '@angular/core';\r\nimport { NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'b-spinner',\r\n imports: [NgStyle],\r\n templateUrl: './spinner.component.html',\r\n})\r\nexport class Spinner {\r\n readonly active = input<boolean>(true);\r\n readonly color = input<string>('var(--foreground)');\r\n readonly backgroundColor = input<string>('transparent');\r\n readonly size = input<number>(20);\r\n}\r\n","@if (active()) {\r\n <section [ngStyle]=\"{ background: backgroundColor() }\" class=\"background\">\r\n <svg\r\n [attr.height]=\"size()\"\r\n [attr.width]=\"size()\"\r\n preserveAspectRatio=\"xMidYMid\"\r\n style=\"\r\n shape-rendering: auto;\r\n display: block;\r\n background: rgba(122, 122, 122, 0);\r\n \"\r\n viewBox=\"0 0 100 100\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g>\r\n <g transform=\"rotate(0 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.9166666666666666s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(30 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.8333333333333334s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(60 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.75s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(90 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.6666666666666666s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(120 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.5833333333333334s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(150 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.5s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(180 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.4166666666666667s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(210 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.3333333333333333s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(240 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.25s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(270 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.16666666666666666s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(300 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.08333333333333333s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(330 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"0s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g />\r\n </g>\r\n </svg>\r\n </section>\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[b-switch]',\r\n template: ``,\r\n host: {\r\n '[attr.role]': 'switch',\r\n '[attr.checked]': 'value()',\r\n '[attr.aria-checked]': 'value()',\r\n '(click)': 'toggleValue()',\r\n '[class]': 'size()',\r\n '(keydown.enter)': 'toggleValue()',\r\n '(keydown.arrowleft)': 'setValue(false)',\r\n '(keydown.arrowright)': 'setValue(true)',\r\n },\r\n})\r\nexport class Switch implements AfterViewInit {\r\n /**\r\n * Value of the switch.\r\n */\r\n readonly value = model<boolean>(false);\r\n\r\n /**\r\n * The size of the switch.\r\n */\r\n readonly size = input<'default' | 'large'>('default');\r\n\r\n /**\r\n * Reference to the switch element.\r\n */\r\n el = inject(ElementRef);\r\n\r\n /**\r\n * Event emitted when the value changes.\r\n */\r\n valueChange = output<boolean>();\r\n\r\n /**\r\n * Initializes the switch value after the view is initialized.\r\n */\r\n ngAfterViewInit() {\r\n this.value.set(this.el.nativeElement.checked);\r\n }\r\n\r\n /**\r\n * Toggles the value of the switch.\r\n */\r\n toggleValue() {\r\n const newValue = !this.value();\r\n this.value.set(newValue);\r\n this.valueChange.emit(newValue);\r\n }\r\n\r\n /**\r\n * Sets the value of the switch.\r\n * @param newValue - The new value to set.\r\n */\r\n setValue(newValue: boolean) {\r\n this.value.set(newValue);\r\n this.valueChange.emit(newValue);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'b-table',\r\n templateUrl: './table.component.html',\r\n})\r\nexport class Table {}\r\n","<ng-content select=\"[b-row-header]\" />\r\n<ng-content select=\"[b-row-subheader]\" />\r\n<div class=\"scroll-section\">\r\n <ng-content />\r\n</div>\r\n","import { Component, input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'b-row',\r\n imports: [NgClass],\r\n templateUrl: './row.component.html',\r\n})\r\nexport class Row {\r\n readonly header = input<boolean>(false);\r\n readonly subheader = input<boolean>(false);\r\n readonly clickable = input<boolean>(false);\r\n readonly highlighted = input<boolean>(false);\r\n}\r\n","<div\r\n class=\"row-container\"\r\n [ngClass]=\"{\r\n clickable: clickable(),\r\n header: header(),\r\n subheader: subheader(),\r\n highlighted: highlighted(),\r\n }\">\r\n <ng-content />\r\n</div>\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'b-row-item',\r\n imports: [NgStyle],\r\n templateUrl: './row-item.component.html',\r\n})\r\nexport class RowItem {\r\n readonly widthPx = input<number>();\r\n readonly alignedLeft = input<boolean>(false);\r\n readonly isHeader = input<boolean>(false);\r\n readonly style = computed(() => {\r\n return {\r\n width: `${this.widthPx()}px`,\r\n justifyContent: this.alignedLeft() ? 'flex-start' : 'center',\r\n };\r\n });\r\n}\r\n","<div [ngStyle]=\"style()\" class=\"row-item-container\">\r\n <ng-content />\r\n</div>\r\n","import { NgClass } from '@angular/common';\r\nimport { Component, ElementRef, input, output, signal } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'b-tab',\r\n imports: [NgClass],\r\n templateUrl: './tab.component.html',\r\n})\r\nexport class Tab {\r\n readonly value = input.required<string>();\r\n readonly disabled = input<boolean>(false);\r\n readonly selected = signal<boolean>(false);\r\n readonly highlighted = signal<boolean>(false);\r\n selectEmitter = output<Tab>();\r\n\r\n constructor(public el: ElementRef) {}\r\n\r\n /**\r\n * Emit the select event when the tab is selected.\r\n */\r\n onSelect(): void {\r\n this.selectEmitter.emit(this);\r\n }\r\n\r\n /**\r\n * Highlight the tab on mouse enter if it is not disabled and not in keyboard-active mode.\r\n */\r\n onMouseEnter() {\r\n if (\r\n !this.disabled() &&\r\n !this.el.nativeElement.parentElement.parentElement.classList.contains(\r\n 'keyboard-active'\r\n )\r\n ) {\r\n this.highlighted.set(true);\r\n }\r\n }\r\n\r\n /**\r\n * Remove the highlight from the tab on mouse leave if it is not disabled and not in keyboard-active mode.\r\n */\r\n onMouseLeave() {\r\n if (\r\n !this.disabled() &&\r\n !this.el.nativeElement.parentElement.parentElement.classList.contains(\r\n 'keyboard-active'\r\n )\r\n ) {\r\n this.highlighted.set(false);\r\n }\r\n }\r\n}\r\n","<span\r\n tabindex=\"0\"\r\n (click)=\"onSelect()\"\r\n (keydown.enter)=\"onSelect()\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\"\r\n [ngClass]=\"{ selected: selected(), highlighted: highlighted() }\">\r\n <ng-content\r\n/></span>\r\n","import {\r\n Component,\r\n contentChildren,\r\n effect,\r\n HostListener,\r\n model,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { Tab } from './components/tab/tab.component';\r\n\r\n@Component({\r\n selector: 'b-tabs',\r\n templateUrl: './tabs.component.html',\r\n})\r\nexport class Tabs {\r\n readonly tabs = contentChildren(Tab);\r\n readonly selectedIndex = signal<number>(-1);\r\n readonly selectedValue = model<string | null>(null);\r\n readonly highlightedIndex = signal<number>(-1);\r\n changesEmitter = output<string>();\r\n lastSelectedValue: string | null = null;\r\n\r\n constructor() {\r\n effect(() => {\r\n this.handleTabSelection();\r\n this.handleExternalSelectedValue();\r\n this.handleScrollToSelectedTab();\r\n });\r\n }\r\n\r\n /**\r\n * Handle the selection of a tab.\r\n */\r\n handleTabSelection(): void {\r\n this.tabs().forEach((tab, index) => {\r\n tab.selectEmitter.subscribe(tabEmitted => {\r\n this.selectTab(tabEmitted, index);\r\n this.highlightTab(index);\r\n this.handleTabStates();\r\n this.changesEmitter.emit(tab.value());\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Select a tab.\r\n * @param {Tab} tab - The tab to select.\r\n * @param {number} index - The index of the tab.\r\n */\r\n selectTab(tab: Tab, index: number): void {\r\n this.selectedValue.set(tab.value());\r\n this.lastSelectedValue = tab.value();\r\n this.selectedIndex.set(index);\r\n }\r\n\r\n /**\r\n * Highlight a tab.\r\n * @param {number} index - The index of the tab to highlight.\r\n */\r\n highlightTab(index: number) {\r\n this.highlightedIndex.set(index);\r\n }\r\n\r\n /**\r\n * Handle the states of the tabs.\r\n */\r\n handleTabStates(): void {\r\n this.tabs().forEach((tab, index) => {\r\n tab.selected.set(index === this.selectedIndex());\r\n tab.highlighted.set(index === this.highlightedIndex());\r\n });\r\n }\r\n\r\n /**\r\n * Handle the external selected value.\r\n */\r\n handleExternalSelectedValue(): void {\r\n if (this.lastSelectedValue !== this.selectedValue()) {\r\n const selectedOptionIndex = this.tabs().findIndex(\r\n tab => tab.value() === this.selectedValue()\r\n );\r\n if (selectedOptionIndex !== -1) {\r\n this.selectTab(this.tabs()[selectedOptionIndex], selectedOptionIndex);\r\n this.highlightTab(selectedOptionIndex);\r\n this.handleTabStates();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Scroll to the selected tab.\r\n */\r\n handleScrollToSelectedTab() {\r\n if (this.selectedIndex() !== -1) {\r\n this.scrollToTab(this.selectedIndex(), 'smooth');\r\n }\r\n }\r\n\r\n /**\r\n * Handle keyboard events for navigation and selection.\r\n * @param {KeyboardEvent} event - The keyboard event.\r\n */\r\n @HostListener('keydown', ['$event'])\r\n handleKeyboard(event: KeyboardEvent) {\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n event.preventDefault();\r\n this.focusOption('next');\r\n break;\r\n case 'ArrowLeft':\r\n event.preventDefault();\r\n this.focusOption('previous');\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n this.selectFocusedTab();\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Focus on the next or previous tab.\r\n * @param {'next' | 'previous'} direction - The direction to move the focus.\r\n */\r\n focusOption(direction: 'next' | 'previous') {\r\n let index = this.highlightedIndex();\r\n const increment = direction === 'next' ? 1 : -1;\r\n\r\n index += increment;\r\n while (\r\n index >= 0 &&\r\n index < this.tabs().length &&\r\n this.tabs()[index].disabled()\r\n ) {\r\n index += increment;\r\n }\r\n\r\n if (index >= 0 && index < this.tabs().length) {\r\n this.highlightTab(index);\r\n this.handleTabStates();\r\n this.scrollToTab(this.highlightedIndex(), 'smooth');\r\n }\r\n }\r\n\r\n /**\r\n * Select the currently focused tab.\r\n */\r\n selectFocusedTab() {\r\n this.selectTab(\r\n this.tabs()[this.highlightedIndex()],\r\n this.highlightedIndex()\r\n );\r\n this.handleTabStates();\r\n }\r\n\r\n /**\r\n * Scroll to a specific tab.\r\n * @param {number} index - The index of the tab to scroll to.\r\n * @param {string} behavior - The scroll behavior ('instant' or 'smooth').\r\n */\r\n scrollToTab(index: number, behavior: string): void {\r\n const tabsElements = this.tabs();\r\n if (tabsElements[index].el.nativeElement) {\r\n tabsElements[index].el.nativeElement.scrollIntoView({\r\n block: 'nearest',\r\n behavior: behavior,\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"tabs\" [tabIndex]=\"0\">\r\n <ng-content />\r\n</div>\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class InViewportService {\r\n readonly elements = signal<Record<string, boolean>>({});\r\n observer!: IntersectionObserver;\r\n\r\n /**\r\n * Register an element to be tracked by the service.\r\n * @param {string} id - The id of the element to register.\r\n */\r\n registerElement(\r\n id: string,\r\n nativeElement: HTMLElement,\r\n initialVisibility: boolean\r\n ): void {\r\n if (!(id in this.elements())) {\r\n this.elements.set({ ...this.elements(), [id]: initialVisibility });\r\n\r\n // Create an IntersectionObserver to track the element's visibility.\r\n this.observer = new IntersectionObserver(entries => {\r\n entries.forEach(entry => {\r\n const isVisible = entry.isIntersecting;\r\n this.updateElementVisibility(id, isVisible);\r\n });\r\n });\r\n\r\n // Start observing the element.\r\n this.observer.observe(nativeElement);\r\n }\r\n }\r\n\r\n /**\r\n * Unregister an element from being tracked by the service.\r\n * @param {string} id - The id of the element to unregister.\r\n */\r\n unregisterElement(id: string): void {\r\n if (id in this.elements()) {\r\n delete this.elements()[id];\r\n this.observer.disconnect();\r\n }\r\n }\r\n\r\n /**\r\n * Update the visibility of an element.\r\n * @param {string} id - The id of the element to update.\r\n * @param {boolean} isVisible - The new visibility state of the element.\r\n */\r\n updateElementVisibility(id: string, isVisible: boolean): void {\r\n this.elements.set({ ...this.elements(), [id]: isVisible });\r\n }\r\n}\r\n","import { Directive, ElementRef, inject, input, OnDestroy } from '@angular/core';\r\nimport { afterNextRender } from '@angular/core'; // Importante\r\nimport { InViewportService } from '../services/in-viewport.service';\r\n\r\n@Directive({\r\n selector: '[b-in-viewport]',\r\n})\r\nexport class InViewportDirective implements OnDestroy {\r\n readonly inViewportId = input.required<string>();\r\n readonly inViewportInitialVisibility = input<boolean>(false);\r\n el = inject(ElementRef);\r\n inViewportService = inject(InViewportService);\r\n\r\n constructor() {\r\n afterNextRender({\r\n write: () => {\r\n this.inViewportService.registerElement(\r\n this.inViewportId(),\r\n this.el.nativeElement,\r\n this.inViewportInitialVisibility()\r\n );\r\n },\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.inViewportService.unregisterElement(this.inViewportId());\r\n }\r\n}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n computed,\r\n model,\r\n inject,\r\n ElementRef,\r\n HostListener,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n/**\r\n * A sliding sheet component that can be positioned on either side of the screen.\r\n * The sheet slides in from the left or right edge and includes an overlay backdrop.\r\n *\r\n * @selector b-side-sheet\r\n */\r\n@Component({\r\n selector: 'b-side-sheet',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './side-sheet.component.html',\r\n host: {\r\n '[class.left]': 'isLeft()',\r\n '[class.right]': '!isLeft()',\r\n '[class.open]': 'isOpen()',\r\n '[style.width]': 'width()',\r\n },\r\n})\r\nexport class SideSheet {\r\n /**\r\n * Indicates whether the side sheet is open.\r\n */\r\n readonly isOpen = model(false);\r\n\r\n /**\r\n * Specifies the side of the screen where the sheet is positioned.\r\n * Can be either 'left' or 'right'.\r\n */\r\n readonly side = input<'left' | 'right'>('right');\r\n\r\n /**\r\n * Specifies the width of the side sheet.\r\n */\r\n readonly width = input('300px');\r\n\r\n /**\r\n * Computes whether the side sheet is positioned on the left side.\r\n */\r\n readonly isLeft = computed(() => this.side() === 'left');\r\n\r\n /**\r\n * Computes whether the side sheet is positioned on the right side.\r\n */\r\n readonly isRight = computed(() => this.side() === 'right');\r\n\r\n /**\r\n * Event emitted when the side sheet is closed.\r\n */\r\n closeSheet = output<void>();\r\n\r\n /**\r\n * Reference to the host element of the side sheet.\r\n */\r\n private readonly el = inject(ElementRef);\r\n\r\n /**\r\n * Closes the side sheet when clicking outside of it.\r\n *\r\n * @param event - The click event.\r\n */\r\n @HostListener('document:click', ['$event'])\r\n closeOnOutsideClick(event: Event) {\r\n if (this.isOpen() && !this.el.nativeElement.contains(event.target)) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n}\r\n","<button class=\"close-button\" (click)=\"isOpen.set(false)\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"19\"\r\n height=\"19\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"0.094rem\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"lucide lucide-x\">\r\n <path d=\"M18 6 6 18\" />\r\n <path d=\"m6 6 12 12\" />\r\n </svg>\r\n</button>\r\n<ng-content />\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n model,\r\n signal,\r\n computed,\r\n inject,\r\n ElementRef,\r\n HostListener,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'b-bottom-sheet',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './bottom-sheet.component.html',\r\n host: {\r\n '[style.height]': 'height()',\r\n '[class.dragging]': 'isDragging()',\r\n '[style.transform]': 'transform()',\r\n '[class.open]': 'isOpen()',\r\n },\r\n})\r\nexport class BottomSheet {\r\n /**\r\n * Indicates whether the bottom sheet is open.\r\n */\r\n readonly isOpen = model(false);\r\n\r\n /**\r\n * The height of the bottom sheet.\r\n */\r\n readonly height = input('30dvh');\r\n\r\n /**\r\n * Event emitted when the bottom sheet is closed.\r\n */\r\n closeSheet = output<void>();\r\n\r\n /**\r\n * Indicates whether a drag event is in progress.\r\n */\r\n private readonly isDragging = signal(false);\r\n\r\n /**\r\n * The starting Y position of the drag event.\r\n */\r\n readonly startY = signal(0);\r\n\r\n /**\r\n * The current Y translation of the bottom sheet in percentage.\r\n */\r\n private readonly translateY = signal(100);\r\n\r\n /**\r\n * The threshold for closing the bottom sheet, in percentage.\r\n */\r\n readonly closeThreshold = input(30);\r\n\r\n /**\r\n * The computed transform property for the bottom sheet.\r\n */\r\n readonly transform = computed(() =>\r\n this.isDragging()\r\n ? `translateY(${this.translateY()}%)`\r\n : this.isOpen()\r\n ? 'translateY(0%)'\r\n : 'translateY(100%)'\r\n );\r\n\r\n /**\r\n * The reference to the Bottom Sheet DOM element.\r\n */\r\n private readonly el = inject(ElementRef);\r\n\r\n /**\r\n * Closes the bottom sheet when clicking outside of it.\r\n * @param event The click event.\r\n */\r\n @HostListener('document:click', ['$event'])\r\n closeOnOutsideClick(event: Event) {\r\n if (this.isOpen() && !this.el.nativeElement.contains(event.target)) {\r\n this.isOpen.set(false);\r\n this.closeSheet.emit();\r\n }\r\n }\r\n\r\n /**\r\n * Starts the drag event for the bottom sheet.\r\n * @param event The pointer event that starts the drag.\r\n */\r\n startDrag(event: PointerEvent) {\r\n this.isDragging.set(true);\r\n this.startY.set(event.clientY);\r\n // Initialize translateY based on the current state:\r\n this.translateY.set(this.isOpen() ? 0 : 100);\r\n // Disable text selection for better UX\r\n document.body.style.userSelect = 'none';\r\n\r\n const move = (e: PointerEvent) => this.updateDrag(e.clientY);\r\n const end = () => {\r\n this.isDragging.set(false);\r\n this.snapToOpenOrClose();\r\n\r\n // Restore text selection\r\n document.body.style.userSelect = '';\r\n\r\n window.removeEventListener('pointermove', move);\r\n window.removeEventListener('pointerup', end);\r\n };\r\n\r\n window.addEventListener('pointermove', move, { passive: false });\r\n window.addEventListener('pointerup', end);\r\n }\r\n\r\n /**\r\n * Updates the drag position of the bottom sheet.\r\n * @param clientY The current Y position of the pointer.\r\n */\r\n updateDrag(clientY: number) {\r\n const deltaPx = clientY - this.startY();\r\n const sheetHeight = this.el.nativeElement.offsetHeight;\r\n // Convert the pixel delta to a percentage relative to the sheet height\r\n const deltaPercent = (deltaPx / sheetHeight) * 100;\r\n // If open, the initial position is 0%; if closed, it is 100%\r\n const newPos = Math.min(\r\n 100,\r\n Math.max(0, this.isOpen() ? 0 + deltaPercent : 100 + deltaPercent)\r\n );\r\n this.translateY.set(newPos);\r\n }\r\n\r\n /**\r\n * Snaps the bottom sheet to either open or closed state based on the drag position.\r\n */\r\n snapToOpenOrClose() {\r\n if (this.translateY() > this.closeThreshold()) {\r\n this.isOpen.set(false);\r\n } else {\r\n this.isOpen.set(true);\r\n }\r\n }\r\n}\r\n","<div class=\"drag-section\" (pointerdown)=\"startDrag($event)\">\r\n <div class=\"drag-indicator\"></div>\r\n</div>\r\n<ng-content />\r\n","import { Injectable, signal, computed, afterRenderEffect } from '@angular/core';\r\n\r\n/**\r\n * Interface that defines the breakpoints for different device types\r\n */\r\nexport interface DeviceBreakpoints {\r\n /** Maximum width for mobile devices in pixels */\r\n mobile: number;\r\n /** Maximum width for tablet devices in pixels */\r\n tablet: number;\r\n /** Maximum width for desktop devices in pixels */\r\n desktop: number;\r\n}\r\n\r\n/** Available device types */\r\nexport type DeviceType = 'mobile' | 'tablet' | 'desktop';\r\n\r\n/**\r\n * Service that handles responsive design functionality\r\n * Detects current device type based on window width and configurable breakpoints\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ResponsiveService {\r\n /** Signal that holds the breakpoint configuration */\r\n private readonly breakpoints = signal<DeviceBreakpoints>({\r\n mobile: 576,\r\n tablet: 992,\r\n desktop: 1200,\r\n });\r\n\r\n /** Signal that holds the current window width */\r\n private readonly windowWidth = signal<number>(0);\r\n\r\n /**\r\n * Computed signal that returns the current device type based on window width\r\n * @returns The current device type ('mobile', 'tablet', or 'desktop')\r\n */\r\n readonly currentDevice = computed<DeviceType>(() => {\r\n const width = this.windowWidth();\r\n const breaks = this.breakpoints();\r\n\r\n if (width < breaks.mobile) {\r\n return 'mobile';\r\n }\r\n if (width < breaks.tablet) {\r\n return 'tablet';\r\n }\r\n return 'desktop';\r\n });\r\n\r\n constructor() {\r\n afterRenderEffect(() => {\r\n this.initializeWindowWidth();\r\n this.setupResizeListener();\r\n });\r\n }\r\n\r\n /**\r\n * Initializes the window width signal with the current window inner width\r\n * Only called in browser environment\r\n */\r\n private initializeWindowWidth(): void {\r\n this.windowWidth.set(window.innerWidth);\r\n }\r\n\r\n /**\r\n * Sets up the resize event listener to update window width\r\n * Only called in browser environment\r\n */\r\n private setupResizeListener(): void {\r\n window.addEventListener('resize', () => {\r\n this.windowWidth.set(window.innerWidth);\r\n });\r\n }\r\n\r\n /**\r\n * Updates the breakpoint configuration\r\n * @param newBreakpoints - Partial breakpoint configuration to update\r\n */\r\n updateBreakpoints(newBreakpoints: Partial<DeviceBreakpoints>): void {\r\n this.breakpoints.update(current => ({\r\n ...current,\r\n ...newBreakpoints,\r\n }));\r\n }\r\n}\r\n","import {\r\n Component,\r\n model,\r\n viewChild,\r\n ElementRef,\r\n linkedSignal,\r\n HostListener,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { Direction } from './types/direction.type';\r\nimport { Alignment } from './types/alignment.type';\r\nimport { Position } from '../../../shared/types/position.type';\r\n\r\n@Component({\r\n selector: 'b-attached-box',\r\n templateUrl: './attached-box.component.html',\r\n host: {\r\n '[attr.tabindex]': '0',\r\n '(click)': 'type() === \"click\" ? handleMouseEvent($event) : null',\r\n '(keydown)': 'handleKeyboardEvent($event)',\r\n '(mouseenter)': 'type() === \"hover\" ? showContent() : null',\r\n '(mouseleave)': 'type() === \"hover\" ? hideContent() : null',\r\n },\r\n})\r\nexport class AttachedBox {\r\n /**\r\n * Input signal to define the interaction type: 'click' or 'hover'.\r\n * Default is 'click'.\r\n */\r\n readonly type = input<'click' | 'hover'>('click');\r\n\r\n /**\r\n * The trigger element that will be used to open the content.\r\n */\r\n readonly trigger = inject(ElementRef);\r\n\r\n /**\r\n * The content that will be displayed when the trigger is activated.\r\n */\r\n readonly content = viewChild<ElementRef>('content');\r\n\r\n /**\r\n * The position of the content relative to the trigger.\r\n * Example values: 'top-left', 'bottom-center', etc.\r\n */\r\n readonly position = model<Position>('right-top');\r\n\r\n /**\r\n * Signal indicating whether the content is visible or not.\r\n */\r\n readonly isContentVisible = signal<boolean>(false);\r\n\r\n /**\r\n * The gap (spacing) between the trigger and the content.\r\n */\r\n readonly gap = model<number>(10);\r\n\r\n /**\r\n * Signal that dynamically calculates and provides the adjusted position of the content.\r\n * This position is adjusted to prevent overflow and ensure optimal visibility.\r\n */\r\n readonly adjustedPosition = linkedSignal<Position>(() =>\r\n this.calculateAdjustedPosition()\r\n );\r\n\r\n /**\r\n * Signal that provides the animation parameters based on the adjusted\r\n * position of the content. These parameters are used to animate the content.\r\n */\r\n readonly animationParams = computed(() => {\r\n const position = this.adjustedPosition();\r\n const direction = position.split('-')[0];\r\n const isCenter = position.includes('center');\r\n const defaultParams = {\r\n duration: '0.15s',\r\n enterDelay: '0s',\r\n leaveDelay: '0.1s',\r\n scaleFrom: 0.99,\r\n scaleTo: 1,\r\n translateFrom: '',\r\n translateTo: '',\r\n };\r\n\r\n switch (direction) {\r\n case 'top':\r\n return {\r\n ...defaultParams,\r\n translateFrom: isCenter\r\n ? 'translate(-50%, 10px)'\r\n : 'translateY(10px)',\r\n translateTo: isCenter ? 'translate(-50%, 0)' : 'translateY(0)',\r\n };\r\n case 'bottom':\r\n return {\r\n ...defaultParams,\r\n translateFrom: isCenter\r\n ? 'translate(-50%, -10px)'\r\n : 'translateY(-10px)',\r\n translateTo: isCenter ? 'translate(-50%, 0)' : 'translateY(0)',\r\n };\r\n case 'left':\r\n return {\r\n ...defaultParams,\r\n translateFrom: isCenter\r\n ? 'translate(10px, -50%)'\r\n : 'translateX(10px)',\r\n translateTo: isCenter ? 'translate(0, -50%)' : 'translateX(0)',\r\n };\r\n case 'right':\r\n return {\r\n ...defaultParams,\r\n translateFrom: isCenter\r\n ? 'translate(-10px, -50%)'\r\n : 'translateX(-10px)',\r\n translateTo: isCenter ? 'translate(0, -50%)' : 'translateX(0)',\r\n };\r\n default:\r\n return defaultParams;\r\n }\r\n });\r\n\r\n /**\r\n * Recalculates and updates the content's adjusted position when the window is scrolled.\r\n * This ensures the content remains correctly positioned relative to the trigger even when scrolling.\r\n */\r\n @HostListener('window:scroll')\r\n @HostListener('window:resize')\r\n onWindowEvent(): void {\r\n this.adjustedPosition.set(this.calculateAdjustedPosition());\r\n }\r\n\r\n /**\r\n * Closes the content when a click event occurs outside both the trigger and content elements.\r\n * @param event The mouse event representing the click.\r\n */\r\n @HostListener('document:click', ['$event'])\r\n onClickOutside(event: MouseEvent): void {\r\n if (\r\n this.isContentVisible() &&\r\n this.isClickedOutsideContent(event) &&\r\n this.isClickedOutsideTrigger(event)\r\n ) {\r\n this.isContentVisible.set(false);\r\n }\r\n }\r\n\r\n /**\r\n * Determines if a click event occurred outside the trigger and content elements.\r\n * @param event The mouse event representing the click.\r\n * @returns True if the click was outside both the trigger and content elements, false otherwise.\r\n */\r\n isClickedOutsideContent(event: MouseEvent): boolean {\r\n const contentElement = this.content()?.nativeElement;\r\n if (!contentElement) {\r\n return false;\r\n }\r\n return !contentElement.contains(event.target as Node);\r\n }\r\n\r\n /**\r\n * Determines if a click event occurred outside the trigger element.\r\n * @param event The mouse event representing the click.\r\n * @returns True if the click was outside the trigger element, false otherwise.\r\n */\r\n isClickedOutsideTrigger(event: MouseEvent): boolean {\r\n const triggerElement = this.trigger?.nativeElement;\r\n if (!triggerElement) {\r\n return false;\r\n }\r\n return !triggerElement.contains(event.target as Node);\r\n }\r\n\r\n /**\r\n * Handles keyboard events for the component.\r\n * @param event The keyboard event to handle.\r\n */\r\n handleKeyboardEvent(event: KeyboardEvent): void {\r\n if (event.key === 'Escape' || event.key === 'Enter') {\r\n this.toggleContentVisibility();\r\n }\r\n }\r\n\r\n /**\r\n * Handles mouse events for the component.\r\n * @param event The mouse event to handle.\r\n */\r\n handleMouseEvent(event: MouseEvent): void {\r\n if (\r\n this.isClickedOutsideContent(event) &&\r\n !this.isClickedOutsideTrigger(event)\r\n ) {\r\n this.toggleContentVisibility();\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the visibility of the content, switching between visible and hidden states.\r\n * This method is typically called in response to user interaction with the trigger element.\r\n */\r\n toggleContentVisibility(): void {\r\n this.isContentVisible.set(!this.isContentVisible());\r\n }\r\n\r\n /**\r\n * Shows the content (used for hover interaction).\r\n */\r\n showContent(): void {\r\n this.isContentVisible.set(true);\r\n }\r\n\r\n /**\r\n * Hides the content (used for hover interaction).\r\n */\r\n hideContent(): void {\r\n this.isContentVisible.set(false);\r\n }\r\n\r\n /**\r\n * Calculates the optimal adjusted position for the content relative to the trigger.\r\n * This method considers available space in the viewport to prevent content overflow\r\n * and ensures the content is fully visible to the user.\r\n * @returns The adjusted position as a Position type string (e.g., 'bottom-left').\r\n */\r\n private calculateAdjustedPosition(): Position {\r\n if (!this.trigger?.nativeElement || !this.content()?.nativeElement) {\r\n return this.position();\r\n }\r\n\r\n const triggerElement = this.trigger!.nativeElement;\r\n const contentElement = this.content()!.nativeElement;\r\n\r\n const triggerRect = triggerElement.getBoundingClientRect();\r\n const contentRect = contentElement.getBoundingClientRect();\r\n const extraMargin = this.gap();\r\n const [primary, secondary] = this.position().split('-') as [\r\n Direction,\r\n Alignment,\r\n ];\r\n\r\n const adjustedPrimary = this.adjustPrimaryDirection(\r\n primary,\r\n triggerRect,\r\n contentRect,\r\n extraMargin\r\n );\r\n const adjustedSecondary = this.adjustSecondaryAlignment(\r\n secondary,\r\n adjustedPrimary,\r\n triggerRect,\r\n contentRect\r\n );\r\n\r\n return `${adjustedPrimary}-${adjustedSecondary}` as Position;\r\n }\r\n\r\n /**\r\n * Adjusts the primary direction (top, bottom, left, right) of the content's position\r\n * based on available viewport space. This ensures the content does not overflow the screen\r\n * in the primary direction.\r\n * @param primary The initially desired primary direction.\r\n * @param triggerRect The bounding rectangle of the trigger element.\r\n * @param contentRect The bounding rectangle of the content element.\r\n * @param margin Extra margin to consider for spacing around the content.\r\n * @returns The adjusted primary direction.\r\n */\r\n private adjustPrimaryDirection(\r\n primary: Direction,\r\n triggerRect: DOMRect,\r\n contentRect: DOMRect,\r\n margin: number\r\n ): Direction {\r\n if (['top', 'bottom'].includes(primary)) {\r\n const neededSpace = contentRect.height + margin;\r\n const spaceBelow = window.innerHeight - triggerRect.bottom;\r\n const spaceAbove = triggerRect.top;\r\n\r\n if (\r\n primary === 'bottom' &&\r\n spaceBelow < neededSpace &&\r\n spaceAbove > spaceBelow\r\n ) {\r\n return 'top';\r\n }\r\n if (\r\n primary === 'top' &&\r\n spaceAbove < neededSpace &&\r\n spaceBelow > spaceAbove\r\n ) {\r\n return 'bottom';\r\n }\r\n } else {\r\n const neededSpace = contentRect.width + margin;\r\n const spaceRight = window.innerWidth - triggerRect.right;\r\n const spaceLeft = triggerRect.left;\r\n\r\n if (\r\n primary === 'right' &&\r\n spaceRight < neededSpace &&\r\n spaceLeft > spaceRight\r\n ) {\r\n return 'left';\r\n }\r\n if (\r\n primary === 'left' &&\r\n spaceLeft < neededSpace &&\r\n spaceRight > spaceLeft\r\n ) {\r\n return 'right';\r\n }\r\n }\r\n return primary;\r\n }\r\n\r\n /**\r\n * Adjusts the secondary alignment (left, right, center for top/bottom primary, top, bottom, center for left/right primary)\r\n * of the content's position to prevent horizontal or vertical overflow. This method ensures that\r\n * the content is fully visible within the viewport in the secondary dimension.\r\n * @param secondary The initially desired secondary alignment.\r\n * @param primary The already adjusted primary direction.\r\n * @param triggerRect The bounding rectangle of the trigger element.\r\n * @param contentRect The bounding rectangle of the content element.\r\n * @returns The adjusted secondary alignment.\r\n */\r\n private adjustSecondaryAlignment(\r\n secondary: Alignment,\r\n primary: Direction,\r\n triggerRect: DOMRect,\r\n contentRect: DOMRect\r\n ): Alignment {\r\n if (['top', 'bottom'].includes(primary)) {\r\n if (secondary === 'left') {\r\n const contentRightPos = triggerRect.left + contentRect.width;\r\n if (contentRightPos > window.innerWidth) {\r\n return 'right';\r\n }\r\n } else if (secondary === 'right') {\r\n const contentLeftPos = triggerRect.right - contentRect.width;\r\n if (contentLeftPos < 0) {\r\n return 'left';\r\n }\r\n } else if (secondary === 'center') {\r\n const triggerCenter = triggerRect.left + triggerRect.width / 2;\r\n const contentLeftPos = triggerCenter - contentRect.width / 2;\r\n const contentRightPos = contentLeftPos + contentRect.width;\r\n\r\n if (contentLeftPos < 0) {\r\n return 'left';\r\n } else if (contentRightPos > window.innerWidth) {\r\n return 'right';\r\n }\r\n }\r\n } else if (['left', 'right'].includes(primary)) {\r\n if (secondary === 'top') {\r\n const contentBottomPos = triggerRect.top + contentRect.height;\r\n if (contentBottomPos > window.innerHeight) {\r\n return 'bottom';\r\n }\r\n } else if (secondary === 'bottom') {\r\n const contentTopPos = triggerRect.bottom - contentRect.height;\r\n if (contentTopPos < 0) {\r\n return 'top';\r\n }\r\n } else if (secondary === 'center') {\r\n const triggerCenter = triggerRect.top + triggerRect.height / 2;\r\n const contentTopPos = triggerCenter - contentRect.height / 2;\r\n const contentBottomPos = contentTopPos + contentRect.height;\r\n\r\n if (contentTopPos < 0) {\r\n return 'top';\r\n } else if (contentBottomPos > window.innerHeight) {\r\n return 'bottom';\r\n }\r\n }\r\n }\r\n return secondary;\r\n }\r\n}\r\n","<ng-content select=\"[b-attached-box-trigger]\" />\r\n<div\r\n #content\r\n class=\"b-attached-box-content\"\r\n [class]=\"adjustedPosition()\"\r\n [class.visible]=\"isContentVisible()\"\r\n [style.--gap.px]=\"gap()\"\r\n [style.--duration]=\"animationParams().duration\"\r\n [style.--enter-delay]=\"animationParams().enterDelay\"\r\n [style.--leave-delay]=\"animationParams().leaveDelay\"\r\n [style.--scale-from]=\"animationParams().scaleFrom\"\r\n [style.--scale-to]=\"animationParams().scaleTo\"\r\n [style.--translate-from]=\"animationParams().translateFrom\"\r\n [style.--translate-to]=\"animationParams().translateTo\">\r\n <ng-content select=\"[b-attached-box-content]\" />\r\n</div>\r\n","import { Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'span[b-badge]',\r\n template: `<ng-content />`,\r\n host: {\r\n '[class]': 'variant() + \" size-\" + size()',\r\n },\r\n})\r\nexport class Badge {\r\n /** The variant of the badge. */\r\n readonly variant = input<'primary' | 'secondary' | 'ghost' | 'outlined'>(\r\n 'primary'\r\n );\r\n\r\n /** The size of the badge. */\r\n readonly size = input<'small' | 'default'>('default');\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n inject,\r\n model,\r\n output,\r\n AfterViewInit,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[b-checkbox]',\r\n template: ``,\r\n host: {\r\n '[attr.role]': 'checkbox',\r\n '[attr.checked]': 'value()',\r\n '[attr.aria-checked]': 'value()',\r\n '(click)': 'toggleValue()',\r\n '(keydown.enter)': 'toggleValue()',\r\n '(keydown.space)': 'toggleValue()',\r\n },\r\n})\r\nexport class Checkbox implements AfterViewInit {\r\n /**\r\n * Value of the checkbox.\r\n */\r\n readonly value = model<boolean>(false);\r\n\r\n /**\r\n * Reference to the checkbox element.\r\n */\r\n el = inject(ElementRef);\r\n\r\n /**\r\n * Event emitted when the value changes.\r\n */\r\n valueChange = output<boolean>();\r\n\r\n /**\r\n * Initializes the checkbox value after the view is initialized.\r\n */\r\n ngAfterViewInit() {\r\n this.value.set(this.el.nativeElement.checked);\r\n }\r\n\r\n /**\r\n * Toggles the value of the checkbox.\r\n */\r\n toggleValue() {\r\n const newValue = !this.value();\r\n this.value.set(newValue);\r\n this.valueChange.emit(newValue);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'textarea[b-textarea]',\r\n template: ``,\r\n host: {\r\n '[placeholder]': 'placeholder() || \"\"',\r\n '[rows]': 'rows()',\r\n '[cols]': 'cols()',\r\n '[class.ng-invalid]': 'invalid()',\r\n '[class.disabled]': 'disabled()',\r\n '(input)': 'onInput($event)',\r\n '(focus)': 'focused.set(true)',\r\n '(blur)': 'focused.set(false)',\r\n },\r\n})\r\nexport class Textarea {\r\n /**\r\n * The placeholder text for the textarea.\r\n */\r\n readonly placeholder = input<string>('');\r\n\r\n /**\r\n * The value of the textarea.\r\n */\r\n readonly value = signal<string | null>(null);\r\n\r\n /**\r\n * The number of rows for the textarea.\r\n */\r\n readonly rows = input<number>(3);\r\n\r\n /**\r\n * The number of columns for the textarea.\r\n */\r\n readonly cols = input<number>(30);\r\n\r\n /**\r\n * Whether the textarea is invalid.\r\n */\r\n readonly invalid = model<boolean>(false);\r\n\r\n /**\r\n * Whether the textarea is disabled.\r\n */\r\n readonly disabled = model<boolean>(false);\r\n\r\n /**\r\n * Whether the textarea is focused.\r\n * This will be used by the Label component.\r\n */\r\n readonly focused = signal<boolean>(false);\r\n\r\n /**\r\n * Event emitted when the value changes.\r\n */\r\n valueChange = output<string | null>();\r\n\r\n /**\r\n * Reference to the textarea element.\r\n */\r\n readonly el = inject<ElementRef<HTMLTextAreaElement>>(ElementRef);\r\n\r\n /**\r\n * Handles the input event.\r\n * @param event The input event.\r\n */\r\n onInput(event: Event): void {\r\n const target = event.target as HTMLTextAreaElement;\r\n this.value.set(target.value);\r\n this.valueChange.emit(target.value);\r\n }\r\n}\r\n","import { Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'b-input-group',\r\n template: `<ng-content />`,\r\n host: {\r\n '[class.bordered]': 'bordered()',\r\n '[style.max-width]': 'maxWidth()',\r\n },\r\n})\r\nexport class InputGroup {\r\n /**\r\n * Whether the input group elements are separated by a border.\r\n */\r\n readonly bordered = input<boolean>(true);\r\n\r\n /**\r\n * The maximum width of the input.\r\n */\r\n readonly maxWidth = input<string>('');\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n inject,\r\n model,\r\n input,\r\n AfterViewInit,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[b-range]',\r\n template: ``,\r\n host: {\r\n '[attr.value]': 'value()',\r\n '[style.max-width]': 'maxWidth()',\r\n '(input)': 'onInput($event)',\r\n },\r\n})\r\nexport class Range implements AfterViewInit {\r\n /**\r\n * Current value of the range.\r\n */\r\n readonly value = model<string>('0');\r\n\r\n /**\r\n * Maximum width of the range slider.\r\n */\r\n readonly maxWidth = input<string>('100%');\r\n\r\n /**\r\n * Reference to the range element.\r\n */\r\n el = inject(ElementRef);\r\n\r\n /**\r\n * Initializes the range value after the view is initialized.\r\n */\r\n ngAfterViewInit() {\r\n this.value.set(this.el.nativeElement.value);\r\n }\r\n\r\n /**\r\n * Handles the input event to update the value.\r\n */\r\n onInput(event: Event) {\r\n this.value.set((event.target as HTMLInputElement).value);\r\n }\r\n}\r\n","import { Component, input } from '@angular/core';\r\nimport { AttachedBox } from '../attached-box/attached-box.component';\r\nimport { Position } from '../../../shared/types/position.type';\r\n\r\n/**\r\n * TooltipComponent is a reusable UI component that displays a tooltip\r\n * with customizable position, gap, variant, and size.\r\n */\r\n@Component({\r\n selector: 'b-tooltip',\r\n template: `\r\n <b-attached-box [type]=\"'hover'\" [position]=\"position()\" [gap]=\"gap()\">\r\n <ng-content b-attached-box-trigger />\r\n <div\r\n b-attached-box-content\r\n class=\"b-tooltip-content\"\r\n [class]=\"variant() + ' size-' + size()\">\r\n <ng-content select=\"[b-tooltip-content]\" />\r\n </div>\r\n </b-attached-box>\r\n `,\r\n standalone: true,\r\n imports: [AttachedBox],\r\n})\r\nexport class TooltipComponent {\r\n /**\r\n * The position of the tooltip relative to its trigger element.\r\n * Defaults to 'top-center'.\r\n */\r\n readonly position = input<Position>('top-center');\r\n\r\n /**\r\n * The gap (in pixels) between the tooltip and its trigger element.\r\n * Defaults to 8.\r\n */\r\n readonly gap = input(8);\r\n\r\n /**\r\n * The visual variant of the tooltip. Options include:\r\n * - 'primary'\r\n * - 'secondary'\r\n * - 'ghost'\r\n * - 'outlined'\r\n * Defaults to 'primary'.\r\n */\r\n readonly variant = input<'primary' | 'secondary' | 'ghost' | 'outlined'>(\r\n 'primary'\r\n );\r\n\r\n /**\r\n * The size of the tooltip. Options include:\r\n * - 'small'\r\n * - 'default'\r\n * Defaults to 'default'.\r\n */\r\n readonly size = input<'small' | 'default'>('default');\r\n}\r\n","import {\r\n Component,\r\n computed,\r\n contentChild,\r\n input,\r\n signal,\r\n AfterViewInit,\r\n inject,\r\n ElementRef,\r\n} from '@angular/core';\r\nimport { ControlContainer, NgModel } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'input[b-color-picker]',\r\n imports: [],\r\n template: ``,\r\n host: {\r\n '[class.focused]': 'focused()',\r\n '[style.max-width]': 'maxWidth()',\r\n '[style.--value]': 'valueWithSingleQuotes()',\r\n '[style.--text-color]': 'textColor()',\r\n '[class.show-color]': 'showColor()',\r\n '(focus)': 'focused.set(true)',\r\n '(blur)': 'focused.set(false)',\r\n '(input)': 'value.set($event.target.value)',\r\n },\r\n})\r\nexport class ColorPicker implements AfterViewInit {\r\n /**\r\n * Specifies the maximum width of the input.\r\n */\r\n readonly maxWidth = input('');\r\n\r\n /**\r\n * Represents the value of the input.\r\n */\r\n readonly value = signal<string>('#ffffff');\r\n\r\n /**\r\n * Computed signal for the text color with single quotes.\r\n */\r\n readonly valueWithSingleQuotes = computed(() => {\r\n return `'${this.value()}'`;\r\n });\r\n\r\n /**\r\n * A computed signal that dynamically calculates the text color based on the resolved value.\r\n */\r\n readonly textColor = computed(() => {\r\n const backgroundColor = this.resolveColor(this.value());\r\n const hex = backgroundColor.replace('#', '');\r\n const r = parseInt(hex.substring(0, 2), 16);\r\n const g = parseInt(hex.substring(2, 4), 16);\r\n const b = parseInt(hex.substring(4, 6), 16);\r\n\r\n const luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b;\r\n return luminance > 128 ? '#000000' : '#FFFFFF';\r\n });\r\n\r\n /**\r\n * Indicates whether the input is focused.\r\n */\r\n readonly focused = signal<boolean>(false);\r\n\r\n /**\r\n * A reference to the `NgModel` directive.\r\n */\r\n private readonly ngModel = contentChild<NgModel>(NgModel);\r\n\r\n /**\r\n * Indicates whether to show the color value.\r\n */\r\n readonly showColor = input<boolean>(true);\r\n\r\n /**\r\n * A reference to the native element.\r\n */\r\n el = inject(ElementRef);\r\n\r\n /**\r\n * A reference to the control container.\r\n */\r\n private controlContainer = inject(ControlContainer, { optional: true });\r\n\r\n /**\r\n * Lifecycle hook that is called after the view has been initialized.\r\n * Sets the initial value of the picker and attaches event listeners.\r\n */\r\n ngAfterViewInit(): void {\r\n const formControl = this.controlContainer?.control?.get(\r\n this.el.nativeElement.getAttribute('formControlName')\r\n );\r\n\r\n // Inicializa el valor del signal\r\n this.value.set(\r\n this.el?.nativeElement.value || this.ngModel()?.value || '#000000'\r\n );\r\n\r\n // Suscríbete a los cambios del FormControl\r\n formControl?.valueChanges.subscribe((newValue: string) => {\r\n this.value.set(newValue || '#000000');\r\n });\r\n }\r\n\r\n /**\r\n * Resolves a color value, handling cases like `transparent` or `color-mix`.\r\n * @param value The input color value.\r\n * @returns A valid hexadecimal color.\r\n */\r\n resolveColor(value: string): string {\r\n // Handle `color-mix` values\r\n const colorMixMatch = value.match(\r\n /color-mix\\(in srgb, (#[0-9a-fA-F]{6}), (#[0-9a-fA-F]{6}) (\\d+)%\\)/\r\n );\r\n if (colorMixMatch) {\r\n const [, color1, color2, percentage] = colorMixMatch;\r\n return this.calculateColorMix(\r\n color1,\r\n color2,\r\n parseInt(percentage, 10) / 100\r\n );\r\n }\r\n\r\n // Handle `transparent` values\r\n if (value === 'transparent') {\r\n return '#ffffff'; // Default to white for transparency\r\n }\r\n\r\n return value; // Return the original value if no special cases\r\n }\r\n\r\n /**\r\n * Calculates the result of a `color-mix` operation.\r\n * @param color1 The first color in hexadecimal format.\r\n * @param color2 The second color in hexadecimal format.\r\n * @param percentage The mix percentage for the second color.\r\n * @returns The resulting mixed color in hexadecimal format.\r\n */\r\n calculateColorMix(\r\n color1: string,\r\n color2: string,\r\n percentage: number\r\n ): string {\r\n const hexToRgb = (hex: string) => {\r\n const bigint = parseInt(hex.replace('#', ''), 16);\r\n return {\r\n r: (bigint >> 16) & 255,\r\n g: (bigint >> 8) & 255,\r\n b: bigint & 255,\r\n };\r\n };\r\n\r\n const rgbToHex = (r: number, g: number, b: number) =>\r\n `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;\r\n\r\n const rgb1 = hexToRgb(color1);\r\n const rgb2 = hexToRgb(color2);\r\n\r\n const r = Math.round(rgb1.r * (1 - percentage) + rgb2.r * percentage);\r\n const g = Math.round(rgb1.g * (1 - percentage) + rgb2.g * percentage);\r\n const b = Math.round(rgb1.b * (1 - percentage) + rgb2.b * percentage);\r\n\r\n return rgbToHex(r, g, b);\r\n }\r\n}\r\n","import { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\r\nimport {\r\n Component,\r\n contentChild,\r\n inject,\r\n model,\r\n OnInit,\r\n output,\r\n} from '@angular/core';\r\nimport { Tree } from '../../../tree.component';\r\nimport { Icon } from '../../../../icon/icon.component';\r\n\r\n/**\r\n * Represents a tree node component that can be extended, collapsed,\r\n * and optionally supports drag-and-drop functionality.\r\n */\r\n@Component({\r\n selector: 'b-tree-node',\r\n imports: [Icon, CdkDragHandle],\r\n templateUrl: './tree-node.component.html',\r\n hostDirectives: [\r\n {\r\n directive: CdkDrag,\r\n inputs: ['cdkDragDisabled: disabled'],\r\n },\r\n ],\r\n})\r\nexport class TreeNode implements OnInit {\r\n /**\r\n * Indicates whether the node is extended (expanded).\r\n */\r\n readonly extended = model(false);\r\n\r\n /**\r\n * Reference to the `CdkDrag` directive for drag-and-drop functionality.\r\n */\r\n protected node = inject(CdkDrag);\r\n\r\n /**\r\n * Reference to a nested `Tree` component, if present.\r\n */\r\n readonly nestedTree = contentChild(Tree);\r\n\r\n /**\r\n * Emits an event when the node is closed.\r\n */\r\n closeEmitter = output<void>();\r\n\r\n /**\r\n * Lifecycle hook that is called after the component is initialized.\r\n */\r\n ngOnInit(): void {\r\n this.node.lockAxis = 'y';\r\n }\r\n\r\n /**\r\n * Updates the disabled state of the node.\r\n * @param disabled - Whether the node should be disabled.\r\n */\r\n handleNodeDisability(disabled: boolean): void {\r\n this.node.disabled = disabled;\r\n }\r\n\r\n /**\r\n * Toggles the extended (expanded) state of the node.\r\n * Emits a close event if the node is collapsed and contains a nested tree.\r\n */\r\n handleExtension(): void {\r\n const isExtended = this.extended();\r\n this.extended.set(!isExtended);\r\n\r\n if (isExtended && this.nestedTree()) {\r\n this.closeEmitter.emit();\r\n }\r\n }\r\n}\r\n","<section>\r\n @if (!node.disabled) {\r\n <i b-icon icon=\"GripVertical\" [size]=\"15\" cdkDragHandle></i>\r\n }\r\n <div\r\n class=\"projected-content\"\r\n (click)=\"nestedTree() && handleExtension()\"\r\n (keydown.enter)=\"nestedTree() && handleExtension()\"\r\n (keydown.space)=\"nestedTree() && handleExtension()\"\r\n role=\"button\"\r\n tabindex=\"0\">\r\n <ng-content />\r\n </div>\r\n @if (nestedTree()) {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\">\r\n <path d=\"m6 9 6 6 6-6\" />\r\n </svg>\r\n }\r\n</section>\r\n@if (nestedTree() && extended()) {\r\n <div class=\"nested\">\r\n <ng-content select=\"b-tree\" />\r\n </div>\r\n}\r\n","import {\r\n CdkDragDrop,\r\n CdkDropList,\r\n CdkDropListGroup,\r\n} from '@angular/cdk/drag-drop';\r\nimport {\r\n Component,\r\n contentChildren,\r\n effect,\r\n inject,\r\n input,\r\n OnInit,\r\n output,\r\n} from '@angular/core';\r\nimport { TreeNode } from './shared/components/tree-node/tree-node.component';\r\n\r\n/**\r\n * Represents a tree component that supports drag-and-drop functionality\r\n * and manages nested tree nodes.\r\n */\r\n@Component({\r\n selector: 'b-tree',\r\n template: `<ng-content />`,\r\n host: {\r\n '(cdkDropListDropped)': 'dropEmitter.emit($event)',\r\n '[style.max-width]': 'maxWidth()',\r\n },\r\n hostDirectives: [\r\n {\r\n directive: CdkDropList,\r\n inputs: ['id', 'cdkDropListConnectedTo: connectedTo'],\r\n outputs: ['cdkDropListDropped'],\r\n },\r\n CdkDropListGroup,\r\n ],\r\n})\r\nexport class Tree implements OnInit {\r\n /**\r\n * The ID of the tree component.\r\n */\r\n readonly maxWidth = input<string>('100%');\r\n /**\r\n * Determines whether the tree is draggable.\r\n */\r\n readonly draggable = input(false);\r\n\r\n /**\r\n * Reference to the `CdkDropList` directive used for drag-and-drop.\r\n */\r\n private tree = inject(CdkDropList);\r\n\r\n /**\r\n * Collection of nested `TreeNode` components.\r\n */\r\n private readonly nestedNodes = contentChildren(TreeNode);\r\n\r\n /**\r\n * Determines whether to close nodes recursively.\r\n */\r\n readonly closeRecursively = input(false);\r\n\r\n /**\r\n * Emits an event when a drop occurs in the tree.\r\n */\r\n dropEmitter = output<CdkDragDrop<string[]>>();\r\n\r\n /**\r\n * Initializes the `Tree` component and sets up reactive effects.\r\n */\r\n constructor() {\r\n effect(() => {\r\n this.handleTreeDisability();\r\n });\r\n }\r\n\r\n /**\r\n * Lifecycle hook that is called after the component is initialized.\r\n */\r\n ngOnInit(): void {\r\n if (this.closeRecursively()) this.handleCloseRecursively();\r\n }\r\n\r\n /**\r\n * Updates the disabled state of the tree and its nested nodes.\r\n */\r\n private handleTreeDisability(): void {\r\n const isDisabled = !this.draggable();\r\n this.tree.disabled = isDisabled;\r\n\r\n this.nestedNodes().forEach(node => {\r\n node.handleNodeDisability(isDisabled);\r\n });\r\n }\r\n\r\n /**\r\n * Sets up recursive closing behavior for nested nodes.\r\n */\r\n handleCloseRecursively(): void {\r\n this.nestedNodes().forEach(node => {\r\n node.closeEmitter.subscribe(() => {\r\n this.closeNestedNodes();\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Closes all nested nodes recursively.\r\n */\r\n closeNestedNodes(): void {\r\n this.nestedNodes().forEach(node => {\r\n node.extended.set(false);\r\n node.nestedTree()?.closeNestedNodes();\r\n });\r\n }\r\n}\r\n","import { CdkMenu } from '@angular/cdk/menu';\r\nimport { Component } from '@angular/core';\r\n\r\n/**\r\n * Represents a menu component that can optionally float.\r\n */\r\n@Component({\r\n selector: 'b-menu',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [CdkMenu],\r\n})\r\nexport class Menu {}\r\n","import { Component } from '@angular/core';\r\n\r\n/**\r\n * Represents a label for a menu.\r\n */\r\n@Component({\r\n selector: 'b-menu-label',\r\n imports: [],\r\n template: `<ng-content />`,\r\n})\r\nexport class MenuLabel {}\r\n","import { CdkMenuItem } from '@angular/cdk/menu';\r\nimport { Component } from '@angular/core';\r\n\r\n/**\r\n * Represents a menu item with support for typeahead and disabled states.\r\n */\r\n@Component({\r\n selector: 'b-menu-item',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [\r\n {\r\n directive: CdkMenuItem,\r\n inputs: [\r\n 'cdkMenuItemDisabled: disabled',\r\n 'cdkMenuitemTypeaheadLabel: typeaheadLabel',\r\n ],\r\n outputs: ['cdkMenuItemTriggered: triggered'],\r\n },\r\n ],\r\n})\r\nexport class MenuItemComponent {}\r\n","import { CdkMenuItemCheckbox } from '@angular/cdk/menu';\r\nimport { Component } from '@angular/core';\r\n\r\n/**\r\n * Represents a checkbox menu item.\r\n */\r\n@Component({\r\n selector: 'b-menu-item-checkbox',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [\r\n {\r\n directive: CdkMenuItemCheckbox,\r\n inputs: [\r\n 'cdkMenuItemDisabled: disabled',\r\n 'cdkMenuitemTypeaheadLabel: typeaheadLabel',\r\n 'cdkMenuItemChecked: active',\r\n ],\r\n outputs: ['cdkMenuItemTriggered: triggered'],\r\n },\r\n ],\r\n})\r\nexport class MenuItemCheckboxComponent {}\r\n","import { CdkMenuItemRadio } from '@angular/cdk/menu';\r\nimport { Component } from '@angular/core';\r\n\r\n/**\r\n * Represents a radio menu item.\r\n */\r\n@Component({\r\n selector: 'b-menu-item-radio',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [\r\n {\r\n directive: CdkMenuItemRadio,\r\n inputs: [\r\n 'cdkMenuItemDisabled: disabled',\r\n 'cdkMenuitemTypeaheadLabel: typeaheadLabel',\r\n 'cdkMenuItemChecked: active',\r\n ],\r\n outputs: ['cdkMenuItemTriggered: triggered'],\r\n },\r\n ],\r\n})\r\nexport class MenuItemRadioComponent {}\r\n","import { CdkMenuTrigger } from '@angular/cdk/menu';\r\nimport { Directive, inject, input, OnInit } from '@angular/core';\r\nimport { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { Position } from '../../../../../shared/types/position.type';\r\n\r\n@Directive({\r\n selector: '[menuTriggerFor]',\r\n hostDirectives: [\r\n {\r\n directive: CdkMenuTrigger,\r\n inputs: ['cdkMenuTriggerFor: menuTriggerFor'],\r\n },\r\n ],\r\n})\r\nexport class MenuTrigger implements OnInit {\r\n trigger = inject(CdkMenuTrigger);\r\n readonly menuTriggerPosition = input<Position>('right-top');\r\n readonly submenu = input(false);\r\n\r\n ngOnInit(): void {\r\n this.setPosition();\r\n }\r\n\r\n setPosition(): void {\r\n const positionMap: Record<Position, ConnectedPosition> = {\r\n 'top-left': {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: !this.submenu() ? -5 : undefined,\r\n },\r\n 'top-center': {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: !this.submenu() ? -5 : undefined,\r\n },\r\n 'top-right': {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n offsetY: !this.submenu() ? -5 : undefined,\r\n },\r\n 'bottom-left': {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: !this.submenu() ? 5 : undefined,\r\n },\r\n 'bottom-center': {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: !this.submenu() ? 5 : undefined,\r\n },\r\n 'bottom-right': {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetY: !this.submenu() ? 5 : undefined,\r\n },\r\n 'left-top': {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetX: !this.submenu() ? -5 : undefined,\r\n },\r\n 'left-center': {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetX: !this.submenu() ? -5 : undefined,\r\n },\r\n 'left-bottom': {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n offsetX: !this.submenu() ? -5 : undefined,\r\n },\r\n 'right-top': {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetX: !this.submenu() ? 5 : undefined,\r\n },\r\n 'right-center': {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetX: !this.submenu() ? 5 : undefined,\r\n },\r\n 'right-bottom': {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetX: !this.submenu() ? 5 : undefined,\r\n },\r\n };\r\n\r\n const connectedPosition = positionMap[this.menuTriggerPosition()];\r\n this.trigger.menuPosition = [connectedPosition];\r\n }\r\n}\r\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { Icon } from '../icon/icon.component';\r\n\r\n@Component({\r\n selector: 'b-alert',\r\n templateUrl: './alert.component.html',\r\n imports: [Icon],\r\n host: {\r\n '[class]': 'type()',\r\n '[style.max-width]': 'maxWidth()',\r\n },\r\n})\r\nexport class Alert {\r\n /** The type of the alert. */\r\n readonly type = input<'success' | 'error' | 'warning' | 'info'>('info');\r\n\r\n /** The title of the alert. */\r\n readonly title = input<string | null>(null);\r\n\r\n /** The icon of the alert. */\r\n readonly icon = input<string | null>(null);\r\n\r\n /** Whether the alert is dismissible. */\r\n readonly dismissible = input(false);\r\n\r\n /** Event emitted when the alert is dismissed. */\r\n readonly dismissed = output<void>();\r\n\r\n /** The maximum width of the alert. */\r\n readonly maxWidth = input<string | null>(null);\r\n\r\n /** The color foreground of the alert. */\r\n readonly colorForeground = computed(() => {\r\n return this.type() === 'info'\r\n ? 'var(--secondary-foreground)'\r\n : `var(--${this.type()}-foreground)`;\r\n });\r\n\r\n dismiss(): void {\r\n this.dismissed.emit();\r\n }\r\n}\r\n","@if (icon()) {\r\n <div class=\"icon\">\r\n <i b-icon [icon]=\"icon()!\" [size]=\"20\" [color]=\"colorForeground()\"></i>\r\n </div>\r\n}\r\n<div class=\"content\">\r\n @if (title()) {\r\n <div class=\"title\">\r\n {{ title() }}\r\n </div>\r\n }\r\n\r\n <div class=\"body\">\r\n <ng-content />\r\n </div>\r\n</div>\r\n@if (dismissible()) {\r\n <button class=\"close-btn\" (click)=\"dismiss()\">\r\n <i b-icon icon=\"X\" [size]=\"20\" [color]=\"colorForeground()\"></i>\r\n </button>\r\n}\r\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\r\nimport { CdkListbox, CdkOption } from '@angular/cdk/listbox';\r\nimport {\r\n Component,\r\n computed,\r\n contentChildren,\r\n inject,\r\n OnInit,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Component representing a list of command options.\r\n * It uses Angular CDK's listbox and option utilities for accessibility and keyboard navigation.\r\n */\r\n@Component({\r\n selector: 'ul[b-command-options]',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [\r\n {\r\n directive: CdkListbox,\r\n outputs: ['cdkListboxValueChange'],\r\n },\r\n ],\r\n host: {\r\n '(cdkListboxValueChange)': 'selectOption($event.value)',\r\n },\r\n})\r\nexport class CommandOptionsComponent implements OnInit {\r\n /**\r\n * Collection of child options within the listbox.\r\n */\r\n readonly options = contentChildren(CdkOption);\r\n\r\n /**\r\n * Key manager for handling keyboard navigation and active descendant management.\r\n */\r\n readonly listKeyManager = computed(() =>\r\n new ActiveDescendantKeyManager(this.options())\r\n .withWrap()\r\n .withVerticalOrientation()\r\n );\r\n\r\n /**\r\n * Signal representing the currently selected values.\r\n */\r\n readonly value = signal<string[]>([]);\r\n\r\n /**\r\n * Signal representing the currently highlighted option.\r\n */\r\n readonly highlightedOption = signal('1');\r\n\r\n /**\r\n * Reference to the injected CDK Listbox instance.\r\n */\r\n cdkListbox = inject(CdkListbox);\r\n\r\n /**\r\n * Emitter for closing the command options.\r\n */\r\n closeEmitter = output();\r\n\r\n /**\r\n * Lifecycle hook that initializes the component.\r\n * Enables the use of active descendant for the listbox.\r\n */\r\n ngOnInit(): void {\r\n this.cdkListbox.useActiveDescendant = true;\r\n }\r\n\r\n /**\r\n * Selects the currently active option and updates the listbox value.\r\n */\r\n selectOption(value?: string[]): void {\r\n const selectValue = value\r\n ? value\r\n : (this.listKeyManager().activeItem?.value ?? []);\r\n this.value.set(selectValue);\r\n this.cdkListbox.value = this.value();\r\n this.closeEmitter.emit();\r\n }\r\n\r\n /**\r\n * Moves the active item to the next option and updates the highlighted option.\r\n */\r\n nextOption(): void {\r\n this.listKeyManager().setNextItemActive();\r\n this.highlightedOption.set(this.listKeyManager().activeItem?.value ?? '');\r\n this.updateHighlightedOption();\r\n }\r\n\r\n /**\r\n * Moves the active item to the previous option and updates the highlighted option.\r\n */\r\n previousOption(): void {\r\n this.listKeyManager().setPreviousItemActive();\r\n this.highlightedOption.set(this.listKeyManager().activeItem?.value ?? '');\r\n this.updateHighlightedOption();\r\n }\r\n\r\n /**\r\n * Updates the CSS class of options to reflect the currently highlighted option.\r\n */\r\n updateHighlightedOption(): void {\r\n this.options().forEach(option => {\r\n if (option.value === this.highlightedOption()) {\r\n option.element.classList.add('cdk-option-highlighted');\r\n } else {\r\n option.element.classList.remove('cdk-option-highlighted');\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n computed,\r\n contentChild,\r\n ElementRef,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { Input } from '../input/input.component';\r\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\r\nimport { CommandOptionsComponent } from './command-options.component';\r\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\r\n\r\n/**\r\n * Component representing a command input with associated options.\r\n * It provides keyboard navigation and focus trapping for accessibility.\r\n */\r\n@Component({\r\n selector: 'b-command',\r\n imports: [Input, CdkTrapFocus],\r\n template: `<input\r\n type=\"text\"\r\n b-input\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"isDesktop()\"\r\n #trappedInput\r\n (keydown.arrowDown)=\"commandOptions()?.nextOption()\"\r\n (keydown.arrowUp)=\"commandOptions()?.previousOption()\"\r\n (keydown.enter)=\"commandOptions()?.selectOption()\"\r\n (blur)=\"isDesktop() && trappedInput.el.nativeElement.focus()\" />\r\n <ng-content />`,\r\n host: {\r\n '[style.maxHeight]': 'maxHeight()',\r\n },\r\n})\r\nexport class CommandComponent {\r\n /**\r\n * Reference to the child `CommandOptionsComponent` if present.\r\n * Used to interact with the options for navigation and selection.\r\n */\r\n readonly commandOptions = contentChild(CommandOptionsComponent);\r\n\r\n /**\r\n * Input representing the maximum height of the component.\r\n * This can be used to control the visual appearance of the command component.\r\n */\r\n readonly maxHeight = input('300px');\r\n\r\n /**\r\n * Computed signal representing the selected value from the command options.\r\n * This is linked to the value of the `CommandOptionsComponent`.\r\n */\r\n readonly value = computed(() => this.commandOptions()?.value());\r\n\r\n /**\r\n * Computed signal representing the options available in the command options.\r\n * This is linked to the options of the `CommandOptionsComponent`.\r\n */\r\n readonly options = computed(() => this.commandOptions()?.options());\r\n\r\n /**\r\n * Reference to the BreakpointObserver service for responsive design.\r\n */\r\n breakpointObserver = inject(BreakpointObserver);\r\n\r\n /**\r\n * Signal representing whether the current viewport is desktop or not.\r\n * This is determined by checking if the Handset breakpoint is matched.\r\n */\r\n readonly isDesktop = signal(\r\n !this.breakpointObserver.isMatched(Breakpoints.Handset)\r\n );\r\n\r\n /**\r\n * Reference to the host element of the component.\r\n * This provides access to the DOM element of the command component.\r\n */\r\n el = inject(ElementRef);\r\n}\r\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\r\nimport {\r\n Component,\r\n computed,\r\n contentChild,\r\n HostListener,\r\n input,\r\n linkedSignal,\r\n model,\r\n OnInit,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { Button } from '../button/button.component';\r\nimport { Icon } from '../icon/icon.component';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { forwardRef } from '@angular/core';\r\nimport { CommandComponent } from '../command/command.component';\r\n\r\n/**\r\n * Component representing a combobox dropdown.\r\n * This component provides a button to toggle the dropdown and displays the selected option(s) with an input field.\r\n */\r\n@Component({\r\n selector: 'b-combobox',\r\n imports: [Button, Icon, CdkConnectedOverlay, CdkOverlayOrigin],\r\n template: ` <button\r\n b-button\r\n variant=\"outlined\"\r\n (click)=\"isOpen() ? close() : open()\"\r\n (keydown.arrowDown)=\"!isOpen() && open()\"\r\n (keydown.arrowUp)=\"!isOpen() && open()\"\r\n cdkOverlayOrigin\r\n [activeEnabled]=\"false\"\r\n #trigger=\"cdkOverlayOrigin\">\r\n {{ content() }}\r\n <i b-icon icon=\"ChevronDown\" [size]=\"20\"></i>\r\n </button>\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n [cdkConnectedOverlayWidth]=\"buttonWidth()\"\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayPositions]=\"[\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: 5,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -5,\r\n },\r\n ]\"\r\n (backdropClick)=\"close()\"\r\n (attach)=\"onOverlayAttached()\"\r\n (detach)=\"close()\">\r\n <ng-content />\r\n </ng-template>`,\r\n host: {\r\n '[class.disabled]': 'disabled()',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ComboboxComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ComboboxComponent implements OnInit, ControlValueAccessor {\r\n /**\r\n * Placeholder text displayed when no option is selected.\r\n * Defaults to 'Select an option'.\r\n */\r\n readonly placeholder = input<string>('Select an option');\r\n\r\n /**\r\n * Signal indicating whether the dropdown is currently open.\r\n */\r\n readonly isOpen = signal(false);\r\n\r\n /**\r\n * Reference to the button element used to toggle the dropdown.\r\n * This is used for managing focus and interactions.\r\n */\r\n readonly button = viewChild(Button);\r\n\r\n /**\r\n * Reference to the content component of the dropdown.\r\n * This contains the list of selectable options.\r\n */\r\n readonly command = contentChild(CommandComponent);\r\n\r\n /**\r\n * Computed signal representing the selected values from the dropdown.\r\n * This is linked to the value of the `CommandComponent`.\r\n */\r\n readonly value = linkedSignal(() => this.command()?.value());\r\n\r\n /**\r\n * Linked signal for the width of the button element.\r\n * This is used to set the width of the dropdown overlay.\r\n */\r\n readonly buttonWidth = linkedSignal(\r\n () => this.button()?.el.nativeElement.offsetWidth\r\n );\r\n\r\n /**\r\n * Model indicating whether the combobox component is disabled.\r\n * When disabled, the dropdown cannot be opened or interacted with.\r\n */\r\n readonly disabled = model(false);\r\n\r\n /**\r\n * Computed signal representing the options available in the dropdown.\r\n * This retrieves the options from the `CommandComponent`.\r\n */\r\n readonly options = computed(() => this.command()?.options());\r\n\r\n /**\r\n * Computed signal representing the content of the selected option(s).\r\n * If no option is selected, it returns the placeholder text.\r\n */\r\n readonly content = computed(() => {\r\n const selected = this.value();\r\n if (selected && selected.length > 0) {\r\n return this.options()?.reduce((acc, option) => {\r\n if (selected.includes(option.value)) {\r\n return acc ? acc + ', ' + option.getLabel() : option.getLabel();\r\n }\r\n return acc;\r\n }, '');\r\n } else {\r\n return this.placeholder();\r\n }\r\n });\r\n\r\n /**\r\n * Signal representing the delay before closing the dropdown.\r\n * This is used to provide a smooth transition when closing the dropdown.\r\n */\r\n readonly closeDelay = signal(150);\r\n\r\n /**\r\n * Reference to the CdkConnectedOverlay directive.\r\n * This is used to manage the positioning and visibility of the dropdown overlay.\r\n */\r\n readonly cdkConnectedOverlay = viewChild(CdkConnectedOverlay);\r\n\r\n /**\r\n * Lifecycle hook that is called after the component is initialized.\r\n * It sets up the necessary subscriptions for handling value changes.\r\n */\r\n ngOnInit(): void {\r\n this.handleSelectedValueChange();\r\n }\r\n\r\n /**\r\n * Subscribes to the `closeEmitter` of the `CommandComponent` to handle\r\n * changes to the selected value. This ensures the dropdown closes and the\r\n * value is propagated to Angular Forms.\r\n */\r\n handleSelectedValueChange() {\r\n this.command()\r\n ?.commandOptions()\r\n ?.closeEmitter.subscribe(() => {\r\n this.onChange(this.value()!); // Notify Angular Forms about the change\r\n this.onTouched(); // Mark the component as touched\r\n this.close(); // Close the dropdown\r\n });\r\n }\r\n\r\n /**\r\n * Opens the dropdown and focuses the listbox.\r\n * This method sets the `isOpen` signal to `true` and ensures the listbox gains focus.\r\n */\r\n open() {\r\n this.isOpen.set(true);\r\n }\r\n\r\n /**\r\n * Closes the dropdown with a transition effect and refocuses the button.\r\n * This method sets the `isOpen` signal to `false` after a delay and removes\r\n * the transition class from the overlay panel.\r\n */\r\n close() {\r\n this.cdkConnectedOverlay()?.overlayRef.addPanelClass(\r\n 'cdk-overlay-pane-closing'\r\n );\r\n\r\n setTimeout(() => {\r\n this.isOpen.set(false);\r\n this.cdkConnectedOverlay()?.overlayRef.removePanelClass(\r\n 'cdk-overlay-pane-closing'\r\n );\r\n this.button()?.el.nativeElement.focus();\r\n }, this.closeDelay());\r\n }\r\n\r\n /**\r\n * Focuses the input element within the command component when the overlay is attached.\r\n */\r\n onOverlayAttached() {\r\n this.buttonWidth.set(this.button()?.el.nativeElement.offsetWidth);\r\n this.command()?.el.nativeElement.querySelector('input')?.focus();\r\n }\r\n\r\n /**\r\n * Sets the width of the button element when the window is resized.\r\n * This ensures that the dropdown overlay matches the width of the button.\r\n */\r\n @HostListener('window:resize')\r\n setButtonWidth() {\r\n this.buttonWidth.set(this.button()?.el.nativeElement.offsetWidth);\r\n }\r\n\r\n // Control Value Accessor methods\r\n\r\n /**\r\n * Callback function to propagate changes to the model.\r\n * This is called whenever the value changes.\r\n */\r\n private onChange: (value: string[]) => void = () => undefined;\r\n\r\n /**\r\n * Callback function to mark the component as touched.\r\n * This is called when the component loses focus.\r\n */\r\n private onTouched: () => void = () => undefined;\r\n\r\n /**\r\n * Writes a new value to the component.\r\n * This method is called by Angular Forms to update the value of the combobox component.\r\n * @param value - The new value to set.\r\n */\r\n writeValue(value: string[]): void {\r\n if (value) {\r\n value.forEach(value => {\r\n this.command()?.commandOptions()?.cdkListbox?.selectValue(value);\r\n });\r\n this.value.set(value);\r\n }\r\n }\r\n\r\n /**\r\n * Registers a callback function to be called when the value changes.\r\n * @param fn - The callback function.\r\n */\r\n registerOnChange(fn: (value: string[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Registers a callback function to be called when the component is touched.\r\n * @param fn - The callback function.\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Sets the disabled state of the component.\r\n * This method is called by Angular Forms to enable or disable the component.\r\n * @param isDisabled - A boolean indicating whether the component should be disabled.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of basis-ng\r\n */\r\n\r\n/* Theme Service */\r\nexport * from './core/services/theme.service';\r\n\r\n/* Button */\r\nexport * from './core/components/button/button.component';\r\nexport * from './core/components/button-group/button-group.component';\r\n\r\n/* Directives */\r\nexport * from './shared/directives/lazy-content.directive';\r\n\r\n/* Input */\r\nexport * from './core/components/input/input.component';\r\n\r\n/* Select */\r\nexport * from './core/components/select/select.component';\r\nexport * from './core/components/select/select-options.component';\r\nexport * from './shared/components/option.component';\r\n\r\n/* Spinner */\r\nexport * from './core/components/spinner/spinner.component';\r\n\r\n/* Switch */\r\nexport * from './core/components/switch/switch.component';\r\n\r\n/* Table */\r\nexport * from './core/components/table/table.component';\r\nexport * from './core/components/table/components/row/row.component';\r\nexport * from './core/components/table/components/row/components/row-item/row-item.component';\r\n\r\n/* Tabs */\r\nexport * from './core/components/tabs/tabs.component';\r\nexport * from './core/components/tabs/components/tab/tab.component';\r\n\r\n/* InViewport */\r\nexport * from './core/directives/in-viewport.directive';\r\nexport * from './core/services/in-viewport.service';\r\n\r\n/* Side Sheet */\r\nexport * from './core/components/side-sheet/side-sheet.component';\r\n\r\n/* Bottom Sheet */\r\nexport * from './core/components/bottom-sheet/bottom-sheet.component';\r\n\r\n/* Responsive */\r\nexport * from './core/services/responsive.service';\r\n\r\n/* Attached Box */\r\nexport * from './core/components/attached-box/attached-box.component';\r\n\r\n/* Icon */\r\nexport * from './core/components/icon/icon.component';\r\n\r\n/* Badge */\r\nexport * from './core/components/badge/badge.component';\r\n\r\n/* Checkbox */\r\nexport * from './core/components/checkbox/checkbox.component';\r\n\r\n/* Textarea */\r\nexport * from './core/components/textarea/textarea.component';\r\n\r\n/* Input Group */\r\nexport * from './core/components/input-group/input-group.component';\r\n\r\n/* Range */\r\nexport * from './core/components/range/range.component';\r\n\r\n/* Badge */\r\nexport * from './core/components/badge/badge.component';\r\n\r\n/* Tooltip */\r\nexport * from './core/components/tooltip/tooltip.component';\r\n\r\n/* Color Picker */\r\nexport * from './core/components/color-picker/color-picker.component';\r\n\r\n/* Tree */\r\nexport * from './core/components/tree/tree.component';\r\nexport * from './core/components/tree/shared/components/tree-node/tree-node.component';\r\n\r\n/* Menu */\r\nexport * from './core/components/menu/menu.component';\r\nexport * from './core/components/menu/shared/components/menu-label/menu-label.component';\r\nexport * from './core/components/menu/shared/components/menu-item/menu-item.component';\r\nexport * from './core/components/menu/shared/components/menu-item-checkbox/menu-item-checkbox.component';\r\nexport * from './core/components/menu/shared/components/menu-item-radio/menu-item-radio.component';\r\nexport * from './core/components/menu/shared/directives/menu-trigger.directive';\r\n\r\n/* Alert */\r\nexport * from './core/components/alert/alert.component';\r\n\r\n/* Types */\r\n\r\n/* Position */\r\nexport * from './shared/types/position.type';\r\n\r\n/* Command */\r\nexport * from './core/components/command/command.component';\r\nexport * from './core/components/command/command-options.component';\r\n\r\n/* Combobox */\r\nexport * from './core/components/combobox/combobox.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"basis-ng-primitives.mjs","sources":["../../../projects/primitives/src/core/services/theme.service.ts","../../../projects/primitives/src/core/components/button/button.component.ts","../../../projects/primitives/src/core/components/button-group/button-group.component.ts","../../../projects/primitives/src/shared/directives/lazy-content.directive.ts","../../../projects/primitives/src/core/components/input/input.component.ts","../../../projects/primitives/src/shared/components/option.component.ts","../../../projects/primitives/src/core/components/select/select-options.component.ts","../../../projects/primitives/src/core/components/icon/icon.component.ts","../../../projects/primitives/src/core/components/select/select.component.ts","../../../projects/primitives/src/core/components/spinner/spinner.component.ts","../../../projects/primitives/src/core/components/spinner/spinner.component.html","../../../projects/primitives/src/core/components/switch/switch.component.ts","../../../projects/primitives/src/core/components/table/table.component.ts","../../../projects/primitives/src/core/components/table/table.component.html","../../../projects/primitives/src/core/components/table/components/row/row.component.ts","../../../projects/primitives/src/core/components/table/components/row/row.component.html","../../../projects/primitives/src/core/components/table/components/row/components/row-item/row-item.component.ts","../../../projects/primitives/src/core/components/table/components/row/components/row-item/row-item.component.html","../../../projects/primitives/src/core/components/tabs/components/tab/tab.component.ts","../../../projects/primitives/src/core/components/tabs/components/tab/tab.component.html","../../../projects/primitives/src/core/components/tabs/tabs.component.ts","../../../projects/primitives/src/core/components/tabs/tabs.component.html","../../../projects/primitives/src/core/services/in-viewport.service.ts","../../../projects/primitives/src/core/directives/in-viewport.directive.ts","../../../projects/primitives/src/core/components/side-sheet/side-sheet.component.ts","../../../projects/primitives/src/core/components/side-sheet/side-sheet.component.html","../../../projects/primitives/src/core/components/bottom-sheet/bottom-sheet.component.ts","../../../projects/primitives/src/core/components/bottom-sheet/bottom-sheet.component.html","../../../projects/primitives/src/core/services/responsive.service.ts","../../../projects/primitives/src/core/components/attached-box/attached-box.component.ts","../../../projects/primitives/src/core/components/attached-box/attached-box.component.html","../../../projects/primitives/src/core/components/badge/badge.component.ts","../../../projects/primitives/src/core/components/checkbox/checkbox.component.ts","../../../projects/primitives/src/core/components/textarea/textarea.component.ts","../../../projects/primitives/src/core/components/input-group/input-group.component.ts","../../../projects/primitives/src/core/components/range/range.component.ts","../../../projects/primitives/src/core/components/tooltip/tooltip.component.ts","../../../projects/primitives/src/core/components/color-picker/color-picker.component.ts","../../../projects/primitives/src/core/components/tree/shared/components/tree-node/tree-node.component.ts","../../../projects/primitives/src/core/components/tree/shared/components/tree-node/tree-node.component.html","../../../projects/primitives/src/core/components/tree/tree.component.ts","../../../projects/primitives/src/core/components/menu/menu.component.ts","../../../projects/primitives/src/core/components/menu/shared/components/menu-label/menu-label.component.ts","../../../projects/primitives/src/core/components/menu/shared/components/menu-item/menu-item.component.ts","../../../projects/primitives/src/core/components/menu/shared/components/menu-group/menu-group.component.ts","../../../projects/primitives/src/core/components/menu/shared/components/menu-item-checkbox/menu-item-checkbox.component.ts","../../../projects/primitives/src/core/components/menu/shared/components/menu-item-radio/menu-item-radio.component.ts","../../../projects/primitives/src/core/components/menu/shared/directives/menu-trigger.directive.ts","../../../projects/primitives/src/core/components/alert/alert.component.ts","../../../projects/primitives/src/core/components/alert/alert.component.html","../../../projects/primitives/src/core/components/command/command-options.component.ts","../../../projects/primitives/src/core/components/command/command.component.ts","../../../projects/primitives/src/core/components/combobox/combobox.component.ts","../../../projects/primitives/src/public-api.ts","../../../projects/primitives/src/basis-ng-primitives.ts"],"sourcesContent":["import { Injectable, Renderer2, RendererFactory2, inject } from '@angular/core';\r\nimport { signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ThemeService {\r\n /**\r\n * Signal representing the current theme.\r\n *\r\n * Possible values:\r\n * - `'light'`: Light theme.\r\n * - `'dark'`: Dark theme.\r\n * - `'auto'`: Automatically determine the theme.\r\n */\r\n readonly theme = signal<'light' | 'dark' | 'auto'>('auto');\r\n\r\n /**\r\n * Renderer2 instance for manipulating the DOM.\r\n * Used to set the `data-theme` attribute on the document root (`<html>`).\r\n */\r\n private renderer: Renderer2;\r\n\r\n /**\r\n * RendererFactory2 instance for creating Renderer2 instances.\r\n * Injected to create the renderer.\r\n */\r\n private rendererFactory = inject(RendererFactory2);\r\n\r\n constructor() {\r\n this.renderer = this.rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n /**\r\n * Applies the specified theme to the document root (`<html>`).\r\n *\r\n * @param theme - The theme to apply. Possible values:\r\n * - `'light'`: Apply the light theme.\r\n * - `'dark'`: Apply the dark theme.\r\n * - `'auto'`: Remove the theme attribute and let the system decide.\r\n */\r\n applyTheme(theme: 'light' | 'dark' | 'auto'): void {\r\n this.theme.set(theme);\r\n if (theme === 'auto') {\r\n this.removeTheme();\r\n return;\r\n }\r\n this.renderer.setAttribute(document.documentElement, 'data-theme', theme);\r\n }\r\n\r\n /**\r\n * Toggles the theme between `'light'` and `'dark'`.\r\n * If the current theme is `'light'`, it switches to `'dark'`, and vice versa.\r\n */\r\n toggleTheme(): void {\r\n this.applyTheme(this.theme() === 'light' ? 'dark' : 'light');\r\n }\r\n\r\n /**\r\n * Removes the `data-theme` attribute from the document body.\r\n * This is used when the theme is set to `'auto'`.\r\n */\r\n removeTheme(): void {\r\n this.renderer.removeAttribute(document.documentElement, 'data-theme');\r\n }\r\n}\r\n","import { Component, ElementRef, inject, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'button[b-button]',\r\n template: ` <ng-content />`,\r\n host: {\r\n '[class]': 'variant() + \" size-\" + size()',\r\n '[class.active]': 'activeEnabled()',\r\n },\r\n})\r\nexport class Button {\r\n /** The variant of the button. */\r\n readonly variant = input<'primary' | 'secondary' | 'ghost' | 'outlined'>(\r\n 'primary'\r\n );\r\n\r\n /** The size of the button. */\r\n readonly size = input<'1' | '2' | '3'>('2');\r\n\r\n /** Whether the button active animation is enabled. */\r\n readonly activeEnabled = input(true);\r\n\r\n /** The element reference of the button. */\r\n el = inject(ElementRef);\r\n}\r\n","import { Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'b-button-group',\r\n template: `<ng-content />`,\r\n host: {\r\n class: 'button-group',\r\n '[class.spaced]': 'spaced()',\r\n },\r\n})\r\nexport class ButtonGroup {\r\n /**\r\n * Whether the buttons should be spaced.\r\n */\r\n readonly spaced = input<boolean>(false);\r\n}\r\n","import { Directive, inject, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[b-lazy]',\r\n standalone: true,\r\n})\r\nexport class LazyContentDirective {\r\n tpl = inject(TemplateRef);\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n computed,\r\n ElementRef,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { NgModel } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'input[b-input]',\r\n template: ``,\r\n host: {\r\n '[type]': 'type()',\r\n '[style.max-width]': 'maxWidth()',\r\n '(input)': 'onInput($event)',\r\n '(blur)': 'onBlur($event)',\r\n '[class]': ' \"size-\" + size() ',\r\n },\r\n})\r\nexport class Input implements AfterViewInit {\r\n /**\r\n * The type of the input.\r\n */\r\n readonly type = input<'text' | 'number' | 'password' | 'email'>('text');\r\n\r\n /**\r\n * The maximum width of the input.\r\n */\r\n readonly maxWidth = input<string>('');\r\n\r\n /**\r\n * The number of decimal places for number input.\r\n */\r\n readonly decimals = input<number>(2);\r\n\r\n /**\r\n * The type of number input (integer or decimal).\r\n */\r\n readonly numberType = input<'integer' | 'decimal'>('integer');\r\n\r\n /**\r\n * Whether the input type is number.\r\n */\r\n readonly isNumberType = computed(() => this.type() === 'number');\r\n\r\n /**\r\n * Reference to the input element.\r\n */\r\n readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n\r\n /**\r\n * Reference to the ngModel directive.\r\n */\r\n private ngModel = inject(NgModel, { optional: true });\r\n\r\n /**\r\n * The size of the input.\r\n */\r\n readonly size = input<'1' | '2' | '3'>('2');\r\n\r\n /**\r\n * After the view has been initialized, set the value of the select.\r\n */\r\n ngAfterViewInit(): void {\r\n const value = this.el.nativeElement.value || this.ngModel?.model;\r\n if (this.isNumberType()) {\r\n const formattedValue = this.formatNumber(value) || '';\r\n this.setValue(formattedValue);\r\n }\r\n }\r\n\r\n /**\r\n * Sets the value of the input element.\r\n * @param value The value to set.\r\n */\r\n setValue(value: string): void {\r\n this.el.nativeElement.value = value;\r\n }\r\n\r\n /**\r\n * Handles the input event.\r\n * @param event The input event.\r\n */\r\n onInput(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n\r\n // If the input is not of number type, update the value and emit the value change event.\r\n if (!this.isNumberType()) {\r\n this.setValue(target.value);\r\n }\r\n }\r\n\r\n /**\r\n * The blur event handler.\r\n * @param event - The blur event.\r\n */\r\n onBlur(event: any): void {\r\n // If the input is of number type, format the value and emit the value change event.\r\n if (this.isNumberType()) {\r\n const formattedValue = this.formatNumber(event.target.value);\r\n this.setValue(formattedValue || '');\r\n }\r\n }\r\n\r\n /**\r\n * Formats the number value.\r\n * @param value - The value to format.\r\n * @returns The formatted value.\r\n */\r\n formatNumber(value: string | null) {\r\n if (value) {\r\n const numericValue = Number(value);\r\n return this.numberType() === 'integer'\r\n ? Math.round(numericValue).toString()\r\n : numericValue.toFixed(this.decimals());\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { CdkOption } from '@angular/cdk/listbox';\r\nimport { Component, ElementRef, inject } from '@angular/core';\r\n\r\n/**\r\n * Component representing an individual option in a select or combobox.\r\n * This component integrates with Angular CDK Option to manage the option's state and behavior.\r\n */\r\n@Component({\r\n selector: 'li[b-option]',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [\r\n {\r\n directive: CdkOption,\r\n inputs: ['cdkOption: value'],\r\n },\r\n ],\r\n})\r\nexport class OptionComponent {\r\n /**\r\n * The `ElementRef` of the option.\r\n * This provides direct access to the DOM element of the option.\r\n */\r\n el = inject(ElementRef);\r\n\r\n /**\r\n * The `CdkOption` instance associated with this option.\r\n * This provides methods and properties for managing the option's state, such as selection and value.\r\n */\r\n cdkOption = inject(CdkOption);\r\n}\r\n","import { CdkListbox } from '@angular/cdk/listbox';\r\nimport {\r\n Component,\r\n contentChildren,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { OptionComponent } from '../../../shared/components/option.component';\r\n\r\n/**\r\n * Component representing the list of options in a select.\r\n * This component integrates with Angular CDK Listbox to manage options and their selection.\r\n */\r\n@Component({\r\n selector: 'ul[b-select-options]',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [\r\n {\r\n directive: CdkListbox,\r\n inputs: ['cdkListboxValue'],\r\n outputs: ['cdkListboxValueChange'],\r\n },\r\n ],\r\n host: {\r\n '[cdkListboxValue]': 'value()',\r\n '(cdkListboxValueChange)': 'handleValueChange($event.value)',\r\n '[style.max-height]': 'maxHeight()',\r\n },\r\n})\r\nexport class SelectOptionsComponent {\r\n /**\r\n * Signal representing the selected values in the listbox.\r\n * This is an array of strings corresponding to the selected option values.\r\n */\r\n readonly value = signal<string[]>([]);\r\n\r\n /**\r\n * Event emitter triggered when the dropdown should close.\r\n * This is used to notify the parent component to close the dropdown.\r\n */\r\n closeEmitter = output();\r\n\r\n /**\r\n * Reference to the host element of the component.\r\n * This provides access to the DOM element of the options list.\r\n */\r\n el = inject(ElementRef);\r\n\r\n /**\r\n * Input for setting the maximum height of the dropdown.\r\n * Defaults to '300px'. This controls the vertical size of the dropdown.\r\n */\r\n readonly maxHeight = input<string>('300px');\r\n\r\n /**\r\n * Reference to the CDK Listbox directive.\r\n * This is used to manage the options and their selection state.\r\n */\r\n listBox = inject(CdkListbox);\r\n\r\n /**\r\n * Reference to the list of options in the dropdown.\r\n * This is a collection of `OptionComponent` instances representing the available options.\r\n */\r\n readonly options = contentChildren(OptionComponent);\r\n\r\n /**\r\n * Handles changes to the selected value in the listbox.\r\n * This method updates the `value` signal, emits the `closeEmitter` event,\r\n * and ensures the parent component is notified of the selection change.\r\n *\r\n * @param value - The new array of selected values.\r\n */\r\n handleValueChange(value: string[]) {\r\n this.value.set(value);\r\n this.closeEmitter.emit();\r\n }\r\n}\r\n","import { Component, computed, inject, input } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { createElement, icons } from 'lucide';\r\n\r\n@Component({\r\n selector: 'i[b-icon]',\r\n imports: [],\r\n template: ``,\r\n host: {\r\n '[innerHTML]': 'iconSvg()',\r\n },\r\n})\r\nexport class Icon {\r\n /**\r\n * The sanitizer service.\r\n */\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n /**\r\n * The icon of the text field.\r\n */\r\n readonly icon = input.required<string>();\r\n\r\n /**\r\n * The size of the icon.\r\n */\r\n readonly size = input(24);\r\n\r\n /**\r\n * The stroke of the icon.\r\n */\r\n readonly strokeWidth = input(1.8);\r\n\r\n /**\r\n * The color of the icon.\r\n */\r\n readonly color = input<string>('var(--foreground, #798194)');\r\n\r\n /**\r\n * The svg of the icon.\r\n */\r\n readonly iconSvg = computed(() => {\r\n if (!(icons as any)[this.icon()]) {\r\n console.error(`Icon '${this.icon()}' not found in Lucide icons.`);\r\n return this.sanitizer.bypassSecurityTrustHtml('');\r\n }\r\n\r\n const iconSvg = createElement((icons as any)[this.icon()], {\r\n width: this.size(),\r\n height: this.size(),\r\n stroke: this.color(),\r\n 'stroke-width': this.strokeWidth(),\r\n });\r\n return this.sanitizer.bypassSecurityTrustHtml(iconSvg.outerHTML);\r\n });\r\n}\r\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\r\nimport {\r\n Component,\r\n computed,\r\n contentChild,\r\n HostListener,\r\n input,\r\n linkedSignal,\r\n model,\r\n OnInit,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { SelectOptionsComponent } from './select-options.component';\r\nimport { Button } from '../button/button.component';\r\nimport { Icon } from '../icon/icon.component';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { forwardRef } from '@angular/core';\r\n\r\n/**\r\n * Component representing a custom select dropdown.\r\n * This component provides a button to toggle the dropdown and displays the selected option(s).\r\n */\r\n@Component({\r\n selector: 'b-select',\r\n imports: [Button, Icon, CdkConnectedOverlay, CdkOverlayOrigin],\r\n template: ` <button\r\n b-button\r\n variant=\"outlined\"\r\n (click)=\"isOpen() ? close() : open()\"\r\n (keydown.arrowUp)=\"!isOpen() && open()\"\r\n (keydown.arrowDown)=\"!isOpen() && open()\"\r\n cdkOverlayOrigin\r\n [activeEnabled]=\"false\"\r\n #trigger=\"cdkOverlayOrigin\">\r\n {{ content() }}\r\n <i b-icon icon=\"ChevronDown\" [size]=\"20\"></i>\r\n </button>\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n [cdkConnectedOverlayMinWidth]=\"buttonWidth()\"\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayPositions]=\"[\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: 5,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -5,\r\n },\r\n ]\"\r\n (backdropClick)=\"close()\"\r\n (attach)=\"onOverlayAttached()\"\r\n (detach)=\"close()\">\r\n <ng-content />\r\n </ng-template>`,\r\n host: {\r\n '[class.disabled]': 'disabled()',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SelectComponent implements OnInit, ControlValueAccessor {\r\n /**\r\n * Placeholder text displayed when no option is selected.\r\n * Defaults to 'Select an option'.\r\n */\r\n readonly placeholder = input<string>('Select an option');\r\n\r\n /**\r\n * Signal indicating whether the dropdown is currently open.\r\n */\r\n readonly isOpen = signal(false);\r\n\r\n /**\r\n * Reference to the button element used to toggle the dropdown.\r\n * This is used for managing focus and interactions.\r\n */\r\n readonly button = viewChild(Button);\r\n\r\n /**\r\n * Reference to the content component of the dropdown.\r\n * This contains the list of selectable options.\r\n */\r\n readonly optionsList = contentChild(SelectOptionsComponent);\r\n\r\n /**\r\n * Computed signal representing the selected values from the dropdown.\r\n * This is linked to the value of the `OptionsListComponent`.\r\n */\r\n readonly value = linkedSignal(() => this.optionsList()?.value());\r\n\r\n /**\r\n * Linked signal for the width of the button element.\r\n * This is used to set the width of the dropdown overlay.\r\n */\r\n readonly buttonWidth = linkedSignal(\r\n () => this.button()?.el.nativeElement.offsetWidth\r\n );\r\n\r\n /**\r\n * Model indicating whether the select component is disabled.\r\n * When disabled, the dropdown cannot be opened or interacted with.\r\n */\r\n readonly disabled = model(false);\r\n\r\n /**\r\n * Computed signal representing the options available in the dropdown.\r\n * This retrieves the options from the `OptionsListComponent`.\r\n */\r\n readonly options = computed(() => this.optionsList()?.options());\r\n\r\n /**\r\n * Computed signal representing the content of the selected option(s).\r\n * If no option is selected, it returns the placeholder text.\r\n */\r\n readonly content = computed(() => {\r\n const selected = this.value();\r\n if (selected && selected.length > 0) {\r\n return this.options()?.reduce((acc, option) => {\r\n if (selected.includes(option.cdkOption.value)) {\r\n return acc\r\n ? acc + ', ' + option.el.nativeElement.innerText\r\n : option.el.nativeElement.innerText;\r\n }\r\n return acc;\r\n }, '');\r\n } else {\r\n return this.placeholder();\r\n }\r\n });\r\n\r\n /**\r\n * Signal representing the delay before closing the dropdown.\r\n * This is used to provide a smooth transition when closing the dropdown.\r\n */\r\n readonly closeDelay = signal(150);\r\n\r\n /**\r\n * Reference to the CdkConnectedOverlay directive.\r\n * This is used to manage the positioning and visibility of the dropdown overlay.\r\n */\r\n readonly cdkConnectedOverlay = viewChild(CdkConnectedOverlay);\r\n\r\n /**\r\n * Lifecycle hook that is called after the component is initialized.\r\n * It sets up the necessary subscriptions for handling value changes.\r\n */\r\n ngOnInit(): void {\r\n this.handleSelectedValueChange();\r\n }\r\n\r\n /**\r\n * Subscribes to the `closeEmitter` of the `OptionsListComponent` to handle\r\n * changes to the selected value. This ensures the dropdown closes and the\r\n * value is propagated to Angular Forms.\r\n */\r\n handleSelectedValueChange() {\r\n this.optionsList()?.closeEmitter.subscribe(() => {\r\n this.onChange(this.value()!); // Notify Angular Forms about the change\r\n this.onTouched(); // Mark the component as touched\r\n this.close(); // Close the dropdown\r\n });\r\n }\r\n\r\n /**\r\n * Opens the dropdown.\r\n * This method sets the `isOpen` signal to `true`.\r\n */\r\n open() {\r\n this.isOpen.set(true);\r\n }\r\n\r\n /**\r\n * Closes the dropdown with a transition effect and refocuses the button.\r\n * This method sets the `isOpen` signal to `false` after a delay and removes\r\n * the transition class from the overlay panel.\r\n */\r\n close() {\r\n this.cdkConnectedOverlay()?.overlayRef.addPanelClass(\r\n 'cdk-overlay-pane-closing'\r\n );\r\n\r\n setTimeout(() => {\r\n this.isOpen.set(false);\r\n this.cdkConnectedOverlay()?.overlayRef.removePanelClass(\r\n 'cdk-overlay-pane-closing'\r\n );\r\n this.button()?.el.nativeElement.focus();\r\n }, this.closeDelay());\r\n }\r\n\r\n /**\r\n * Focuses the options list when the overlay is attached.\r\n */\r\n onOverlayAttached() {\r\n this.buttonWidth.set(this.button()?.el.nativeElement.offsetWidth);\r\n this.optionsList()?.el.nativeElement.focus();\r\n }\r\n\r\n /**\r\n * Sets the width of the dropdown overlay based on the button's width.\r\n * This ensures that the dropdown aligns properly with the button.\r\n */\r\n @HostListener('window:resize')\r\n setButtonWidth() {\r\n this.buttonWidth.set(this.button()?.el.nativeElement.offsetWidth);\r\n }\r\n\r\n // Control Value Accessor methods\r\n\r\n /**\r\n * Callback function to propagate changes to the model.\r\n * This is called whenever the value changes.\r\n */\r\n private onChange: (value: string[]) => void = () => undefined;\r\n\r\n /**\r\n * Callback function to mark the component as touched.\r\n * This is called when the component loses focus.\r\n */\r\n private onTouched: () => void = () => undefined;\r\n\r\n /**\r\n * Writes a new value to the component.\r\n * This method is called by Angular Forms to update the value of the select component.\r\n * @param value - The new value to set.\r\n */\r\n writeValue(value: string[]): void {\r\n if (value) {\r\n value.forEach(value => {\r\n this.optionsList()?.listBox?.selectValue(value);\r\n });\r\n this.value.set(value);\r\n }\r\n }\r\n\r\n /**\r\n * Registers a callback function to be called when the value changes.\r\n * @param fn - The callback function.\r\n */\r\n registerOnChange(fn: (value: string[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Registers a callback function to be called when the component is touched.\r\n * @param fn - The callback function.\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Sets the disabled state of the component.\r\n * This method is called by Angular Forms to enable or disable the component.\r\n * @param isDisabled - A boolean indicating whether the component should be disabled.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n}\r\n","import { Component, input } from '@angular/core';\r\nimport { NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'b-spinner',\r\n imports: [NgStyle],\r\n templateUrl: './spinner.component.html',\r\n})\r\nexport class Spinner {\r\n readonly active = input<boolean>(true);\r\n readonly color = input<string>('var(--foreground)');\r\n readonly backgroundColor = input<string>('transparent');\r\n readonly size = input<number>(20);\r\n}\r\n","@if (active()) {\r\n <section [ngStyle]=\"{ background: backgroundColor() }\" class=\"background\">\r\n <svg\r\n [attr.height]=\"size()\"\r\n [attr.width]=\"size()\"\r\n preserveAspectRatio=\"xMidYMid\"\r\n style=\"\r\n shape-rendering: auto;\r\n display: block;\r\n background: rgba(122, 122, 122, 0);\r\n \"\r\n viewBox=\"0 0 100 100\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g>\r\n <g transform=\"rotate(0 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.9166666666666666s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(30 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.8333333333333334s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(60 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.75s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(90 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.6666666666666666s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(120 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.5833333333333334s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(150 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.5s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(180 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.4166666666666667s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(210 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.3333333333333333s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(240 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.25s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(270 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.16666666666666666s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(300 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"-0.08333333333333333s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(330 50 50)\">\r\n <rect\r\n [attr.fill]=\"color()\"\r\n height=\"20\"\r\n rx=\"3\"\r\n ry=\"3.2800000000000002\"\r\n width=\"6\"\r\n x=\"47\"\r\n y=\"10\">\r\n <animate\r\n attributeName=\"opacity\"\r\n begin=\"0s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n repeatCount=\"indefinite\"\r\n values=\"1;0\" />\r\n </rect>\r\n </g>\r\n <g />\r\n </g>\r\n </svg>\r\n </section>\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[b-switch]',\r\n template: ``,\r\n host: {\r\n '[attr.role]': 'switch',\r\n '[attr.checked]': 'value()',\r\n '[attr.aria-checked]': 'value()',\r\n '(click)': 'toggleValue()',\r\n '[class]': 'size()',\r\n '(keydown.enter)': 'toggleValue()',\r\n '(keydown.arrowleft)': 'setValue(false)',\r\n '(keydown.arrowright)': 'setValue(true)',\r\n },\r\n})\r\nexport class Switch implements AfterViewInit {\r\n /**\r\n * Value of the switch.\r\n */\r\n readonly value = model<boolean>(false);\r\n\r\n /**\r\n * The size of the switch.\r\n */\r\n readonly size = input<'default' | 'large'>('default');\r\n\r\n /**\r\n * Reference to the switch element.\r\n */\r\n el = inject(ElementRef);\r\n\r\n /**\r\n * Event emitted when the value changes.\r\n */\r\n valueChange = output<boolean>();\r\n\r\n /**\r\n * Initializes the switch value after the view is initialized.\r\n */\r\n ngAfterViewInit() {\r\n this.value.set(this.el.nativeElement.checked);\r\n }\r\n\r\n /**\r\n * Toggles the value of the switch.\r\n */\r\n toggleValue() {\r\n const newValue = !this.value();\r\n this.value.set(newValue);\r\n this.valueChange.emit(newValue);\r\n }\r\n\r\n /**\r\n * Sets the value of the switch.\r\n * @param newValue - The new value to set.\r\n */\r\n setValue(newValue: boolean) {\r\n this.value.set(newValue);\r\n this.valueChange.emit(newValue);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'b-table',\r\n templateUrl: './table.component.html',\r\n})\r\nexport class Table {}\r\n","<ng-content select=\"[b-row-header]\" />\r\n<ng-content select=\"[b-row-subheader]\" />\r\n<div class=\"scroll-section\">\r\n <ng-content />\r\n</div>\r\n","import { Component, input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'b-row',\r\n imports: [NgClass],\r\n templateUrl: './row.component.html',\r\n})\r\nexport class Row {\r\n readonly header = input<boolean>(false);\r\n readonly subheader = input<boolean>(false);\r\n readonly clickable = input<boolean>(false);\r\n readonly highlighted = input<boolean>(false);\r\n}\r\n","<div\r\n class=\"row-container\"\r\n [ngClass]=\"{\r\n clickable: clickable(),\r\n header: header(),\r\n subheader: subheader(),\r\n highlighted: highlighted(),\r\n }\">\r\n <ng-content />\r\n</div>\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'b-row-item',\r\n imports: [NgStyle],\r\n templateUrl: './row-item.component.html',\r\n})\r\nexport class RowItem {\r\n readonly widthPx = input<number>();\r\n readonly alignedLeft = input<boolean>(false);\r\n readonly isHeader = input<boolean>(false);\r\n readonly style = computed(() => {\r\n return {\r\n width: `${this.widthPx()}px`,\r\n justifyContent: this.alignedLeft() ? 'flex-start' : 'center',\r\n };\r\n });\r\n}\r\n","<div [ngStyle]=\"style()\" class=\"row-item-container\">\r\n <ng-content />\r\n</div>\r\n","import { NgClass } from '@angular/common';\r\nimport { Component, ElementRef, input, output, signal } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'b-tab',\r\n imports: [NgClass],\r\n templateUrl: './tab.component.html',\r\n})\r\nexport class Tab {\r\n readonly value = input.required<string>();\r\n readonly disabled = input<boolean>(false);\r\n readonly selected = signal<boolean>(false);\r\n readonly highlighted = signal<boolean>(false);\r\n selectEmitter = output<Tab>();\r\n\r\n constructor(public el: ElementRef) {}\r\n\r\n /**\r\n * Emit the select event when the tab is selected.\r\n */\r\n onSelect(): void {\r\n this.selectEmitter.emit(this);\r\n }\r\n\r\n /**\r\n * Highlight the tab on mouse enter if it is not disabled and not in keyboard-active mode.\r\n */\r\n onMouseEnter() {\r\n if (\r\n !this.disabled() &&\r\n !this.el.nativeElement.parentElement.parentElement.classList.contains(\r\n 'keyboard-active'\r\n )\r\n ) {\r\n this.highlighted.set(true);\r\n }\r\n }\r\n\r\n /**\r\n * Remove the highlight from the tab on mouse leave if it is not disabled and not in keyboard-active mode.\r\n */\r\n onMouseLeave() {\r\n if (\r\n !this.disabled() &&\r\n !this.el.nativeElement.parentElement.parentElement.classList.contains(\r\n 'keyboard-active'\r\n )\r\n ) {\r\n this.highlighted.set(false);\r\n }\r\n }\r\n}\r\n","<span\r\n tabindex=\"0\"\r\n (click)=\"onSelect()\"\r\n (keydown.enter)=\"onSelect()\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\"\r\n [ngClass]=\"{ selected: selected(), highlighted: highlighted() }\">\r\n <ng-content\r\n/></span>\r\n","import {\r\n Component,\r\n contentChildren,\r\n effect,\r\n HostListener,\r\n model,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { Tab } from './components/tab/tab.component';\r\n\r\n@Component({\r\n selector: 'b-tabs',\r\n templateUrl: './tabs.component.html',\r\n})\r\nexport class Tabs {\r\n readonly tabs = contentChildren(Tab);\r\n readonly selectedIndex = signal<number>(-1);\r\n readonly selectedValue = model<string | null>(null);\r\n readonly highlightedIndex = signal<number>(-1);\r\n changesEmitter = output<string>();\r\n lastSelectedValue: string | null = null;\r\n\r\n constructor() {\r\n effect(() => {\r\n this.handleTabSelection();\r\n this.handleExternalSelectedValue();\r\n this.handleScrollToSelectedTab();\r\n });\r\n }\r\n\r\n /**\r\n * Handle the selection of a tab.\r\n */\r\n handleTabSelection(): void {\r\n this.tabs().forEach((tab, index) => {\r\n tab.selectEmitter.subscribe(tabEmitted => {\r\n this.selectTab(tabEmitted, index);\r\n this.highlightTab(index);\r\n this.handleTabStates();\r\n this.changesEmitter.emit(tab.value());\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Select a tab.\r\n * @param {Tab} tab - The tab to select.\r\n * @param {number} index - The index of the tab.\r\n */\r\n selectTab(tab: Tab, index: number): void {\r\n this.selectedValue.set(tab.value());\r\n this.lastSelectedValue = tab.value();\r\n this.selectedIndex.set(index);\r\n }\r\n\r\n /**\r\n * Highlight a tab.\r\n * @param {number} index - The index of the tab to highlight.\r\n */\r\n highlightTab(index: number) {\r\n this.highlightedIndex.set(index);\r\n }\r\n\r\n /**\r\n * Handle the states of the tabs.\r\n */\r\n handleTabStates(): void {\r\n this.tabs().forEach((tab, index) => {\r\n tab.selected.set(index === this.selectedIndex());\r\n tab.highlighted.set(index === this.highlightedIndex());\r\n });\r\n }\r\n\r\n /**\r\n * Handle the external selected value.\r\n */\r\n handleExternalSelectedValue(): void {\r\n if (this.lastSelectedValue !== this.selectedValue()) {\r\n const selectedOptionIndex = this.tabs().findIndex(\r\n tab => tab.value() === this.selectedValue()\r\n );\r\n if (selectedOptionIndex !== -1) {\r\n this.selectTab(this.tabs()[selectedOptionIndex], selectedOptionIndex);\r\n this.highlightTab(selectedOptionIndex);\r\n this.handleTabStates();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Scroll to the selected tab.\r\n */\r\n handleScrollToSelectedTab() {\r\n if (this.selectedIndex() !== -1) {\r\n this.scrollToTab(this.selectedIndex(), 'smooth');\r\n }\r\n }\r\n\r\n /**\r\n * Handle keyboard events for navigation and selection.\r\n * @param {KeyboardEvent} event - The keyboard event.\r\n */\r\n @HostListener('keydown', ['$event'])\r\n handleKeyboard(event: KeyboardEvent) {\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n event.preventDefault();\r\n this.focusOption('next');\r\n break;\r\n case 'ArrowLeft':\r\n event.preventDefault();\r\n this.focusOption('previous');\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n this.selectFocusedTab();\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Focus on the next or previous tab.\r\n * @param {'next' | 'previous'} direction - The direction to move the focus.\r\n */\r\n focusOption(direction: 'next' | 'previous') {\r\n let index = this.highlightedIndex();\r\n const increment = direction === 'next' ? 1 : -1;\r\n\r\n index += increment;\r\n while (\r\n index >= 0 &&\r\n index < this.tabs().length &&\r\n this.tabs()[index].disabled()\r\n ) {\r\n index += increment;\r\n }\r\n\r\n if (index >= 0 && index < this.tabs().length) {\r\n this.highlightTab(index);\r\n this.handleTabStates();\r\n this.scrollToTab(this.highlightedIndex(), 'smooth');\r\n }\r\n }\r\n\r\n /**\r\n * Select the currently focused tab.\r\n */\r\n selectFocusedTab() {\r\n this.selectTab(\r\n this.tabs()[this.highlightedIndex()],\r\n this.highlightedIndex()\r\n );\r\n this.handleTabStates();\r\n }\r\n\r\n /**\r\n * Scroll to a specific tab.\r\n * @param {number} index - The index of the tab to scroll to.\r\n * @param {string} behavior - The scroll behavior ('instant' or 'smooth').\r\n */\r\n scrollToTab(index: number, behavior: string): void {\r\n const tabsElements = this.tabs();\r\n if (tabsElements[index].el.nativeElement) {\r\n tabsElements[index].el.nativeElement.scrollIntoView({\r\n block: 'nearest',\r\n behavior: behavior,\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"tabs\" [tabIndex]=\"0\">\r\n <ng-content />\r\n</div>\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class InViewportService {\r\n readonly elements = signal<Record<string, boolean>>({});\r\n observer!: IntersectionObserver;\r\n\r\n /**\r\n * Register an element to be tracked by the service.\r\n * @param {string} id - The id of the element to register.\r\n */\r\n registerElement(\r\n id: string,\r\n nativeElement: HTMLElement,\r\n initialVisibility: boolean\r\n ): void {\r\n if (!(id in this.elements())) {\r\n this.elements.set({ ...this.elements(), [id]: initialVisibility });\r\n\r\n // Create an IntersectionObserver to track the element's visibility.\r\n this.observer = new IntersectionObserver(entries => {\r\n entries.forEach(entry => {\r\n const isVisible = entry.isIntersecting;\r\n this.updateElementVisibility(id, isVisible);\r\n });\r\n });\r\n\r\n // Start observing the element.\r\n this.observer.observe(nativeElement);\r\n }\r\n }\r\n\r\n /**\r\n * Unregister an element from being tracked by the service.\r\n * @param {string} id - The id of the element to unregister.\r\n */\r\n unregisterElement(id: string): void {\r\n if (id in this.elements()) {\r\n delete this.elements()[id];\r\n this.observer.disconnect();\r\n }\r\n }\r\n\r\n /**\r\n * Update the visibility of an element.\r\n * @param {string} id - The id of the element to update.\r\n * @param {boolean} isVisible - The new visibility state of the element.\r\n */\r\n updateElementVisibility(id: string, isVisible: boolean): void {\r\n this.elements.set({ ...this.elements(), [id]: isVisible });\r\n }\r\n}\r\n","import { Directive, ElementRef, inject, input, OnDestroy } from '@angular/core';\r\nimport { afterNextRender } from '@angular/core'; // Importante\r\nimport { InViewportService } from '../services/in-viewport.service';\r\n\r\n@Directive({\r\n selector: '[b-in-viewport]',\r\n})\r\nexport class InViewportDirective implements OnDestroy {\r\n readonly inViewportId = input.required<string>();\r\n readonly inViewportInitialVisibility = input<boolean>(false);\r\n el = inject(ElementRef);\r\n inViewportService = inject(InViewportService);\r\n\r\n constructor() {\r\n afterNextRender({\r\n write: () => {\r\n this.inViewportService.registerElement(\r\n this.inViewportId(),\r\n this.el.nativeElement,\r\n this.inViewportInitialVisibility()\r\n );\r\n },\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.inViewportService.unregisterElement(this.inViewportId());\r\n }\r\n}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n computed,\r\n model,\r\n inject,\r\n ElementRef,\r\n HostListener,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n/**\r\n * A sliding sheet component that can be positioned on either side of the screen.\r\n * The sheet slides in from the left or right edge and includes an overlay backdrop.\r\n *\r\n * @selector b-side-sheet\r\n */\r\n@Component({\r\n selector: 'b-side-sheet',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './side-sheet.component.html',\r\n host: {\r\n '[class.left]': 'isLeft()',\r\n '[class.right]': '!isLeft()',\r\n '[class.open]': 'isOpen()',\r\n '[style.width]': 'width()',\r\n },\r\n})\r\nexport class SideSheet {\r\n /**\r\n * Indicates whether the side sheet is open.\r\n */\r\n readonly isOpen = model(false);\r\n\r\n /**\r\n * Specifies the side of the screen where the sheet is positioned.\r\n * Can be either 'left' or 'right'.\r\n */\r\n readonly side = input<'left' | 'right'>('right');\r\n\r\n /**\r\n * Specifies the width of the side sheet.\r\n */\r\n readonly width = input('300px');\r\n\r\n /**\r\n * Computes whether the side sheet is positioned on the left side.\r\n */\r\n readonly isLeft = computed(() => this.side() === 'left');\r\n\r\n /**\r\n * Computes whether the side sheet is positioned on the right side.\r\n */\r\n readonly isRight = computed(() => this.side() === 'right');\r\n\r\n /**\r\n * Event emitted when the side sheet is closed.\r\n */\r\n closeSheet = output<void>();\r\n\r\n /**\r\n * Reference to the host element of the side sheet.\r\n */\r\n private readonly el = inject(ElementRef);\r\n\r\n /**\r\n * Closes the side sheet when clicking outside of it.\r\n *\r\n * @param event - The click event.\r\n */\r\n @HostListener('document:click', ['$event'])\r\n closeOnOutsideClick(event: Event) {\r\n if (this.isOpen() && !this.el.nativeElement.contains(event.target)) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n}\r\n","<button class=\"close-button\" (click)=\"isOpen.set(false)\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"19\"\r\n height=\"19\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"0.094rem\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"lucide lucide-x\">\r\n <path d=\"M18 6 6 18\" />\r\n <path d=\"m6 6 12 12\" />\r\n </svg>\r\n</button>\r\n<ng-content />\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n model,\r\n signal,\r\n computed,\r\n inject,\r\n ElementRef,\r\n HostListener,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'b-bottom-sheet',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './bottom-sheet.component.html',\r\n host: {\r\n '[style.height]': 'height()',\r\n '[class.dragging]': 'isDragging()',\r\n '[style.transform]': 'transform()',\r\n '[class.open]': 'isOpen()',\r\n },\r\n})\r\nexport class BottomSheet {\r\n /**\r\n * Indicates whether the bottom sheet is open.\r\n */\r\n readonly isOpen = model(false);\r\n\r\n /**\r\n * The height of the bottom sheet.\r\n */\r\n readonly height = input('30dvh');\r\n\r\n /**\r\n * Event emitted when the bottom sheet is closed.\r\n */\r\n closeSheet = output<void>();\r\n\r\n /**\r\n * Indicates whether a drag event is in progress.\r\n */\r\n private readonly isDragging = signal(false);\r\n\r\n /**\r\n * The starting Y position of the drag event.\r\n */\r\n readonly startY = signal(0);\r\n\r\n /**\r\n * The current Y translation of the bottom sheet in percentage.\r\n */\r\n private readonly translateY = signal(100);\r\n\r\n /**\r\n * The threshold for closing the bottom sheet, in percentage.\r\n */\r\n readonly closeThreshold = input(30);\r\n\r\n /**\r\n * The computed transform property for the bottom sheet.\r\n */\r\n readonly transform = computed(() =>\r\n this.isDragging()\r\n ? `translateY(${this.translateY()}%)`\r\n : this.isOpen()\r\n ? 'translateY(0%)'\r\n : 'translateY(100%)'\r\n );\r\n\r\n /**\r\n * The reference to the Bottom Sheet DOM element.\r\n */\r\n private readonly el = inject(ElementRef);\r\n\r\n /**\r\n * Closes the bottom sheet when clicking outside of it.\r\n * @param event The click event.\r\n */\r\n @HostListener('document:click', ['$event'])\r\n closeOnOutsideClick(event: Event) {\r\n if (this.isOpen() && !this.el.nativeElement.contains(event.target)) {\r\n this.isOpen.set(false);\r\n this.closeSheet.emit();\r\n }\r\n }\r\n\r\n /**\r\n * Starts the drag event for the bottom sheet.\r\n * @param event The pointer event that starts the drag.\r\n */\r\n startDrag(event: PointerEvent) {\r\n this.isDragging.set(true);\r\n this.startY.set(event.clientY);\r\n // Initialize translateY based on the current state:\r\n this.translateY.set(this.isOpen() ? 0 : 100);\r\n // Disable text selection for better UX\r\n document.body.style.userSelect = 'none';\r\n\r\n const move = (e: PointerEvent) => this.updateDrag(e.clientY);\r\n const end = () => {\r\n this.isDragging.set(false);\r\n this.snapToOpenOrClose();\r\n\r\n // Restore text selection\r\n document.body.style.userSelect = '';\r\n\r\n window.removeEventListener('pointermove', move);\r\n window.removeEventListener('pointerup', end);\r\n };\r\n\r\n window.addEventListener('pointermove', move, { passive: false });\r\n window.addEventListener('pointerup', end);\r\n }\r\n\r\n /**\r\n * Updates the drag position of the bottom sheet.\r\n * @param clientY The current Y position of the pointer.\r\n */\r\n updateDrag(clientY: number) {\r\n const deltaPx = clientY - this.startY();\r\n const sheetHeight = this.el.nativeElement.offsetHeight;\r\n // Convert the pixel delta to a percentage relative to the sheet height\r\n const deltaPercent = (deltaPx / sheetHeight) * 100;\r\n // If open, the initial position is 0%; if closed, it is 100%\r\n const newPos = Math.min(\r\n 100,\r\n Math.max(0, this.isOpen() ? 0 + deltaPercent : 100 + deltaPercent)\r\n );\r\n this.translateY.set(newPos);\r\n }\r\n\r\n /**\r\n * Snaps the bottom sheet to either open or closed state based on the drag position.\r\n */\r\n snapToOpenOrClose() {\r\n if (this.translateY() > this.closeThreshold()) {\r\n this.isOpen.set(false);\r\n } else {\r\n this.isOpen.set(true);\r\n }\r\n }\r\n}\r\n","<div class=\"drag-section\" (pointerdown)=\"startDrag($event)\">\r\n <div class=\"drag-indicator\"></div>\r\n</div>\r\n<ng-content />\r\n","import { Injectable, signal, computed, afterRenderEffect } from '@angular/core';\r\n\r\n/**\r\n * Interface that defines the breakpoints for different device types\r\n */\r\nexport interface DeviceBreakpoints {\r\n /** Maximum width for mobile devices in pixels */\r\n mobile: number;\r\n /** Maximum width for tablet devices in pixels */\r\n tablet: number;\r\n /** Maximum width for desktop devices in pixels */\r\n desktop: number;\r\n}\r\n\r\n/** Available device types */\r\nexport type DeviceType = 'mobile' | 'tablet' | 'desktop';\r\n\r\n/**\r\n * Service that handles responsive design functionality\r\n * Detects current device type based on window width and configurable breakpoints\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ResponsiveService {\r\n /** Signal that holds the breakpoint configuration */\r\n private readonly breakpoints = signal<DeviceBreakpoints>({\r\n mobile: 576,\r\n tablet: 992,\r\n desktop: 1200,\r\n });\r\n\r\n /** Signal that holds the current window width */\r\n private readonly windowWidth = signal<number>(0);\r\n\r\n /**\r\n * Computed signal that returns the current device type based on window width\r\n * @returns The current device type ('mobile', 'tablet', or 'desktop')\r\n */\r\n readonly currentDevice = computed<DeviceType>(() => {\r\n const width = this.windowWidth();\r\n const breaks = this.breakpoints();\r\n\r\n if (width < breaks.mobile) {\r\n return 'mobile';\r\n }\r\n if (width < breaks.tablet) {\r\n return 'tablet';\r\n }\r\n return 'desktop';\r\n });\r\n\r\n constructor() {\r\n afterRenderEffect(() => {\r\n this.initializeWindowWidth();\r\n this.setupResizeListener();\r\n });\r\n }\r\n\r\n /**\r\n * Initializes the window width signal with the current window inner width\r\n * Only called in browser environment\r\n */\r\n private initializeWindowWidth(): void {\r\n this.windowWidth.set(window.innerWidth);\r\n }\r\n\r\n /**\r\n * Sets up the resize event listener to update window width\r\n * Only called in browser environment\r\n */\r\n private setupResizeListener(): void {\r\n window.addEventListener('resize', () => {\r\n this.windowWidth.set(window.innerWidth);\r\n });\r\n }\r\n\r\n /**\r\n * Updates the breakpoint configuration\r\n * @param newBreakpoints - Partial breakpoint configuration to update\r\n */\r\n updateBreakpoints(newBreakpoints: Partial<DeviceBreakpoints>): void {\r\n this.breakpoints.update(current => ({\r\n ...current,\r\n ...newBreakpoints,\r\n }));\r\n }\r\n}\r\n","import {\r\n Component,\r\n model,\r\n viewChild,\r\n ElementRef,\r\n linkedSignal,\r\n HostListener,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { Direction } from './types/direction.type';\r\nimport { Alignment } from './types/alignment.type';\r\nimport { Position } from '../../../shared/types/position.type';\r\n\r\n@Component({\r\n selector: 'b-attached-box',\r\n templateUrl: './attached-box.component.html',\r\n host: {\r\n '[attr.tabindex]': '0',\r\n '(click)': 'type() === \"click\" ? handleMouseEvent($event) : null',\r\n '(keydown)': 'handleKeyboardEvent($event)',\r\n '(mouseenter)': 'type() === \"hover\" ? showContent() : null',\r\n '(mouseleave)': 'type() === \"hover\" ? hideContent() : null',\r\n },\r\n})\r\nexport class AttachedBox {\r\n /**\r\n * Input signal to define the interaction type: 'click' or 'hover'.\r\n * Default is 'click'.\r\n */\r\n readonly type = input<'click' | 'hover'>('click');\r\n\r\n /**\r\n * The trigger element that will be used to open the content.\r\n */\r\n readonly trigger = inject(ElementRef);\r\n\r\n /**\r\n * The content that will be displayed when the trigger is activated.\r\n */\r\n readonly content = viewChild<ElementRef>('content');\r\n\r\n /**\r\n * The position of the content relative to the trigger.\r\n * Example values: 'top-left', 'bottom-center', etc.\r\n */\r\n readonly position = model<Position>('right-top');\r\n\r\n /**\r\n * Signal indicating whether the content is visible or not.\r\n */\r\n readonly isContentVisible = signal<boolean>(false);\r\n\r\n /**\r\n * The gap (spacing) between the trigger and the content.\r\n */\r\n readonly gap = model<number>(10);\r\n\r\n /**\r\n * Signal that dynamically calculates and provides the adjusted position of the content.\r\n * This position is adjusted to prevent overflow and ensure optimal visibility.\r\n */\r\n readonly adjustedPosition = linkedSignal<Position>(() =>\r\n this.calculateAdjustedPosition()\r\n );\r\n\r\n /**\r\n * Signal that provides the animation parameters based on the adjusted\r\n * position of the content. These parameters are used to animate the content.\r\n */\r\n readonly animationParams = computed(() => {\r\n const position = this.adjustedPosition();\r\n const direction = position.split('-')[0];\r\n const isCenter = position.includes('center');\r\n const defaultParams = {\r\n duration: '0.15s',\r\n enterDelay: '0s',\r\n leaveDelay: '0.1s',\r\n scaleFrom: 0.99,\r\n scaleTo: 1,\r\n translateFrom: '',\r\n translateTo: '',\r\n };\r\n\r\n switch (direction) {\r\n case 'top':\r\n return {\r\n ...defaultParams,\r\n translateFrom: isCenter\r\n ? 'translate(-50%, 10px)'\r\n : 'translateY(10px)',\r\n translateTo: isCenter ? 'translate(-50%, 0)' : 'translateY(0)',\r\n };\r\n case 'bottom':\r\n return {\r\n ...defaultParams,\r\n translateFrom: isCenter\r\n ? 'translate(-50%, -10px)'\r\n : 'translateY(-10px)',\r\n translateTo: isCenter ? 'translate(-50%, 0)' : 'translateY(0)',\r\n };\r\n case 'left':\r\n return {\r\n ...defaultParams,\r\n translateFrom: isCenter\r\n ? 'translate(10px, -50%)'\r\n : 'translateX(10px)',\r\n translateTo: isCenter ? 'translate(0, -50%)' : 'translateX(0)',\r\n };\r\n case 'right':\r\n return {\r\n ...defaultParams,\r\n translateFrom: isCenter\r\n ? 'translate(-10px, -50%)'\r\n : 'translateX(-10px)',\r\n translateTo: isCenter ? 'translate(0, -50%)' : 'translateX(0)',\r\n };\r\n default:\r\n return defaultParams;\r\n }\r\n });\r\n\r\n /**\r\n * Recalculates and updates the content's adjusted position when the window is scrolled.\r\n * This ensures the content remains correctly positioned relative to the trigger even when scrolling.\r\n */\r\n @HostListener('window:scroll')\r\n @HostListener('window:resize')\r\n onWindowEvent(): void {\r\n this.adjustedPosition.set(this.calculateAdjustedPosition());\r\n }\r\n\r\n /**\r\n * Closes the content when a click event occurs outside both the trigger and content elements.\r\n * @param event The mouse event representing the click.\r\n */\r\n @HostListener('document:click', ['$event'])\r\n onClickOutside(event: MouseEvent): void {\r\n if (\r\n this.isContentVisible() &&\r\n this.isClickedOutsideContent(event) &&\r\n this.isClickedOutsideTrigger(event)\r\n ) {\r\n this.isContentVisible.set(false);\r\n }\r\n }\r\n\r\n /**\r\n * Determines if a click event occurred outside the trigger and content elements.\r\n * @param event The mouse event representing the click.\r\n * @returns True if the click was outside both the trigger and content elements, false otherwise.\r\n */\r\n isClickedOutsideContent(event: MouseEvent): boolean {\r\n const contentElement = this.content()?.nativeElement;\r\n if (!contentElement) {\r\n return false;\r\n }\r\n return !contentElement.contains(event.target as Node);\r\n }\r\n\r\n /**\r\n * Determines if a click event occurred outside the trigger element.\r\n * @param event The mouse event representing the click.\r\n * @returns True if the click was outside the trigger element, false otherwise.\r\n */\r\n isClickedOutsideTrigger(event: MouseEvent): boolean {\r\n const triggerElement = this.trigger?.nativeElement;\r\n if (!triggerElement) {\r\n return false;\r\n }\r\n return !triggerElement.contains(event.target as Node);\r\n }\r\n\r\n /**\r\n * Handles keyboard events for the component.\r\n * @param event The keyboard event to handle.\r\n */\r\n handleKeyboardEvent(event: KeyboardEvent): void {\r\n if (event.key === 'Escape' || event.key === 'Enter') {\r\n this.toggleContentVisibility();\r\n }\r\n }\r\n\r\n /**\r\n * Handles mouse events for the component.\r\n * @param event The mouse event to handle.\r\n */\r\n handleMouseEvent(event: MouseEvent): void {\r\n if (\r\n this.isClickedOutsideContent(event) &&\r\n !this.isClickedOutsideTrigger(event)\r\n ) {\r\n this.toggleContentVisibility();\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the visibility of the content, switching between visible and hidden states.\r\n * This method is typically called in response to user interaction with the trigger element.\r\n */\r\n toggleContentVisibility(): void {\r\n this.isContentVisible.set(!this.isContentVisible());\r\n }\r\n\r\n /**\r\n * Shows the content (used for hover interaction).\r\n */\r\n showContent(): void {\r\n this.isContentVisible.set(true);\r\n }\r\n\r\n /**\r\n * Hides the content (used for hover interaction).\r\n */\r\n hideContent(): void {\r\n this.isContentVisible.set(false);\r\n }\r\n\r\n /**\r\n * Calculates the optimal adjusted position for the content relative to the trigger.\r\n * This method considers available space in the viewport to prevent content overflow\r\n * and ensures the content is fully visible to the user.\r\n * @returns The adjusted position as a Position type string (e.g., 'bottom-left').\r\n */\r\n private calculateAdjustedPosition(): Position {\r\n if (!this.trigger?.nativeElement || !this.content()?.nativeElement) {\r\n return this.position();\r\n }\r\n\r\n const triggerElement = this.trigger!.nativeElement;\r\n const contentElement = this.content()!.nativeElement;\r\n\r\n const triggerRect = triggerElement.getBoundingClientRect();\r\n const contentRect = contentElement.getBoundingClientRect();\r\n const extraMargin = this.gap();\r\n const [primary, secondary] = this.position().split('-') as [\r\n Direction,\r\n Alignment,\r\n ];\r\n\r\n const adjustedPrimary = this.adjustPrimaryDirection(\r\n primary,\r\n triggerRect,\r\n contentRect,\r\n extraMargin\r\n );\r\n const adjustedSecondary = this.adjustSecondaryAlignment(\r\n secondary,\r\n adjustedPrimary,\r\n triggerRect,\r\n contentRect\r\n );\r\n\r\n return `${adjustedPrimary}-${adjustedSecondary}` as Position;\r\n }\r\n\r\n /**\r\n * Adjusts the primary direction (top, bottom, left, right) of the content's position\r\n * based on available viewport space. This ensures the content does not overflow the screen\r\n * in the primary direction.\r\n * @param primary The initially desired primary direction.\r\n * @param triggerRect The bounding rectangle of the trigger element.\r\n * @param contentRect The bounding rectangle of the content element.\r\n * @param margin Extra margin to consider for spacing around the content.\r\n * @returns The adjusted primary direction.\r\n */\r\n private adjustPrimaryDirection(\r\n primary: Direction,\r\n triggerRect: DOMRect,\r\n contentRect: DOMRect,\r\n margin: number\r\n ): Direction {\r\n if (['top', 'bottom'].includes(primary)) {\r\n const neededSpace = contentRect.height + margin;\r\n const spaceBelow = window.innerHeight - triggerRect.bottom;\r\n const spaceAbove = triggerRect.top;\r\n\r\n if (\r\n primary === 'bottom' &&\r\n spaceBelow < neededSpace &&\r\n spaceAbove > spaceBelow\r\n ) {\r\n return 'top';\r\n }\r\n if (\r\n primary === 'top' &&\r\n spaceAbove < neededSpace &&\r\n spaceBelow > spaceAbove\r\n ) {\r\n return 'bottom';\r\n }\r\n } else {\r\n const neededSpace = contentRect.width + margin;\r\n const spaceRight = window.innerWidth - triggerRect.right;\r\n const spaceLeft = triggerRect.left;\r\n\r\n if (\r\n primary === 'right' &&\r\n spaceRight < neededSpace &&\r\n spaceLeft > spaceRight\r\n ) {\r\n return 'left';\r\n }\r\n if (\r\n primary === 'left' &&\r\n spaceLeft < neededSpace &&\r\n spaceRight > spaceLeft\r\n ) {\r\n return 'right';\r\n }\r\n }\r\n return primary;\r\n }\r\n\r\n /**\r\n * Adjusts the secondary alignment (left, right, center for top/bottom primary, top, bottom, center for left/right primary)\r\n * of the content's position to prevent horizontal or vertical overflow. This method ensures that\r\n * the content is fully visible within the viewport in the secondary dimension.\r\n * @param secondary The initially desired secondary alignment.\r\n * @param primary The already adjusted primary direction.\r\n * @param triggerRect The bounding rectangle of the trigger element.\r\n * @param contentRect The bounding rectangle of the content element.\r\n * @returns The adjusted secondary alignment.\r\n */\r\n private adjustSecondaryAlignment(\r\n secondary: Alignment,\r\n primary: Direction,\r\n triggerRect: DOMRect,\r\n contentRect: DOMRect\r\n ): Alignment {\r\n if (['top', 'bottom'].includes(primary)) {\r\n if (secondary === 'left') {\r\n const contentRightPos = triggerRect.left + contentRect.width;\r\n if (contentRightPos > window.innerWidth) {\r\n return 'right';\r\n }\r\n } else if (secondary === 'right') {\r\n const contentLeftPos = triggerRect.right - contentRect.width;\r\n if (contentLeftPos < 0) {\r\n return 'left';\r\n }\r\n } else if (secondary === 'center') {\r\n const triggerCenter = triggerRect.left + triggerRect.width / 2;\r\n const contentLeftPos = triggerCenter - contentRect.width / 2;\r\n const contentRightPos = contentLeftPos + contentRect.width;\r\n\r\n if (contentLeftPos < 0) {\r\n return 'left';\r\n } else if (contentRightPos > window.innerWidth) {\r\n return 'right';\r\n }\r\n }\r\n } else if (['left', 'right'].includes(primary)) {\r\n if (secondary === 'top') {\r\n const contentBottomPos = triggerRect.top + contentRect.height;\r\n if (contentBottomPos > window.innerHeight) {\r\n return 'bottom';\r\n }\r\n } else if (secondary === 'bottom') {\r\n const contentTopPos = triggerRect.bottom - contentRect.height;\r\n if (contentTopPos < 0) {\r\n return 'top';\r\n }\r\n } else if (secondary === 'center') {\r\n const triggerCenter = triggerRect.top + triggerRect.height / 2;\r\n const contentTopPos = triggerCenter - contentRect.height / 2;\r\n const contentBottomPos = contentTopPos + contentRect.height;\r\n\r\n if (contentTopPos < 0) {\r\n return 'top';\r\n } else if (contentBottomPos > window.innerHeight) {\r\n return 'bottom';\r\n }\r\n }\r\n }\r\n return secondary;\r\n }\r\n}\r\n","<ng-content select=\"[b-attached-box-trigger]\" />\r\n<div\r\n #content\r\n class=\"b-attached-box-content\"\r\n [class]=\"adjustedPosition()\"\r\n [class.visible]=\"isContentVisible()\"\r\n [style.--gap.px]=\"gap()\"\r\n [style.--duration]=\"animationParams().duration\"\r\n [style.--enter-delay]=\"animationParams().enterDelay\"\r\n [style.--leave-delay]=\"animationParams().leaveDelay\"\r\n [style.--scale-from]=\"animationParams().scaleFrom\"\r\n [style.--scale-to]=\"animationParams().scaleTo\"\r\n [style.--translate-from]=\"animationParams().translateFrom\"\r\n [style.--translate-to]=\"animationParams().translateTo\">\r\n <ng-content select=\"[b-attached-box-content]\" />\r\n</div>\r\n","import { Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'span[b-badge]',\r\n template: `<ng-content />`,\r\n host: {\r\n '[class]': 'variant() + \" size-\" + size()',\r\n },\r\n})\r\nexport class Badge {\r\n /** The variant of the badge. */\r\n readonly variant = input<'primary' | 'secondary' | 'ghost' | 'outlined'>(\r\n 'primary'\r\n );\r\n\r\n /** The size of the badge. */\r\n readonly size = input<'small' | 'default'>('default');\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n inject,\r\n model,\r\n output,\r\n AfterViewInit,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[b-checkbox]',\r\n template: ``,\r\n host: {\r\n '[attr.role]': 'checkbox',\r\n '[attr.checked]': 'value()',\r\n '[attr.aria-checked]': 'value()',\r\n '(click)': 'toggleValue()',\r\n '(keydown.enter)': 'toggleValue()',\r\n '(keydown.space)': 'toggleValue()',\r\n },\r\n})\r\nexport class Checkbox implements AfterViewInit {\r\n /**\r\n * Value of the checkbox.\r\n */\r\n readonly value = model<boolean>(false);\r\n\r\n /**\r\n * Reference to the checkbox element.\r\n */\r\n el = inject(ElementRef);\r\n\r\n /**\r\n * Event emitted when the value changes.\r\n */\r\n valueChange = output<boolean>();\r\n\r\n /**\r\n * Initializes the checkbox value after the view is initialized.\r\n */\r\n ngAfterViewInit() {\r\n this.value.set(this.el.nativeElement.checked);\r\n }\r\n\r\n /**\r\n * Toggles the value of the checkbox.\r\n */\r\n toggleValue() {\r\n const newValue = !this.value();\r\n this.value.set(newValue);\r\n this.valueChange.emit(newValue);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'textarea[b-textarea]',\r\n template: ``,\r\n host: {\r\n '[placeholder]': 'placeholder() || \"\"',\r\n '[rows]': 'rows()',\r\n '[cols]': 'cols()',\r\n '[class.ng-invalid]': 'invalid()',\r\n '[class.disabled]': 'disabled()',\r\n '(input)': 'onInput($event)',\r\n '(focus)': 'focused.set(true)',\r\n '(blur)': 'focused.set(false)',\r\n },\r\n})\r\nexport class Textarea {\r\n /**\r\n * The placeholder text for the textarea.\r\n */\r\n readonly placeholder = input<string>('');\r\n\r\n /**\r\n * The value of the textarea.\r\n */\r\n readonly value = signal<string | null>(null);\r\n\r\n /**\r\n * The number of rows for the textarea.\r\n */\r\n readonly rows = input<number>(3);\r\n\r\n /**\r\n * The number of columns for the textarea.\r\n */\r\n readonly cols = input<number>(30);\r\n\r\n /**\r\n * Whether the textarea is invalid.\r\n */\r\n readonly invalid = model<boolean>(false);\r\n\r\n /**\r\n * Whether the textarea is disabled.\r\n */\r\n readonly disabled = model<boolean>(false);\r\n\r\n /**\r\n * Whether the textarea is focused.\r\n * This will be used by the Label component.\r\n */\r\n readonly focused = signal<boolean>(false);\r\n\r\n /**\r\n * Event emitted when the value changes.\r\n */\r\n valueChange = output<string | null>();\r\n\r\n /**\r\n * Reference to the textarea element.\r\n */\r\n readonly el = inject<ElementRef<HTMLTextAreaElement>>(ElementRef);\r\n\r\n /**\r\n * Handles the input event.\r\n * @param event The input event.\r\n */\r\n onInput(event: Event): void {\r\n const target = event.target as HTMLTextAreaElement;\r\n this.value.set(target.value);\r\n this.valueChange.emit(target.value);\r\n }\r\n}\r\n","import { Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'b-input-group',\r\n template: `<ng-content />`,\r\n host: {\r\n '[class.bordered]': 'bordered()',\r\n '[style.max-width]': 'maxWidth()',\r\n },\r\n})\r\nexport class InputGroup {\r\n /**\r\n * Whether the input group elements are separated by a border.\r\n */\r\n readonly bordered = input<boolean>(true);\r\n\r\n /**\r\n * The maximum width of the input.\r\n */\r\n readonly maxWidth = input<string>('');\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n inject,\r\n model,\r\n input,\r\n AfterViewInit,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[b-range]',\r\n template: ``,\r\n host: {\r\n '[attr.value]': 'value()',\r\n '[style.max-width]': 'maxWidth()',\r\n '(input)': 'onInput($event)',\r\n },\r\n})\r\nexport class Range implements AfterViewInit {\r\n /**\r\n * Current value of the range.\r\n */\r\n readonly value = model<string>('0');\r\n\r\n /**\r\n * Maximum width of the range slider.\r\n */\r\n readonly maxWidth = input<string>('100%');\r\n\r\n /**\r\n * Reference to the range element.\r\n */\r\n el = inject(ElementRef);\r\n\r\n /**\r\n * Initializes the range value after the view is initialized.\r\n */\r\n ngAfterViewInit() {\r\n this.value.set(this.el.nativeElement.value);\r\n }\r\n\r\n /**\r\n * Handles the input event to update the value.\r\n */\r\n onInput(event: Event) {\r\n this.value.set((event.target as HTMLInputElement).value);\r\n }\r\n}\r\n","import { Component, input } from '@angular/core';\r\nimport { AttachedBox } from '../attached-box/attached-box.component';\r\nimport { Position } from '../../../shared/types/position.type';\r\n\r\n/**\r\n * TooltipComponent is a reusable UI component that displays a tooltip\r\n * with customizable position, gap, variant, and size.\r\n */\r\n@Component({\r\n selector: 'b-tooltip',\r\n template: `\r\n <b-attached-box [type]=\"'hover'\" [position]=\"position()\" [gap]=\"gap()\">\r\n <ng-content b-attached-box-trigger />\r\n <div\r\n b-attached-box-content\r\n class=\"b-tooltip-content\"\r\n [class]=\"variant() + ' size-' + size()\">\r\n <ng-content select=\"[b-tooltip-content]\" />\r\n </div>\r\n </b-attached-box>\r\n `,\r\n standalone: true,\r\n imports: [AttachedBox],\r\n})\r\nexport class TooltipComponent {\r\n /**\r\n * The position of the tooltip relative to its trigger element.\r\n * Defaults to 'top-center'.\r\n */\r\n readonly position = input<Position>('top-center');\r\n\r\n /**\r\n * The gap (in pixels) between the tooltip and its trigger element.\r\n * Defaults to 8.\r\n */\r\n readonly gap = input(8);\r\n\r\n /**\r\n * The visual variant of the tooltip. Options include:\r\n * - 'primary'\r\n * - 'secondary'\r\n * - 'ghost'\r\n * - 'outlined'\r\n * Defaults to 'primary'.\r\n */\r\n readonly variant = input<'primary' | 'secondary' | 'ghost' | 'outlined'>(\r\n 'primary'\r\n );\r\n\r\n /**\r\n * The size of the tooltip. Options include:\r\n * - 'small'\r\n * - 'default'\r\n * Defaults to 'default'.\r\n */\r\n readonly size = input<'small' | 'default'>('default');\r\n}\r\n","import {\r\n Component,\r\n computed,\r\n contentChild,\r\n input,\r\n signal,\r\n AfterViewInit,\r\n inject,\r\n ElementRef,\r\n} from '@angular/core';\r\nimport { ControlContainer, NgModel } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'input[b-color-picker]',\r\n imports: [],\r\n template: ``,\r\n host: {\r\n '[class.focused]': 'focused()',\r\n '[style.max-width]': 'maxWidth()',\r\n '[style.--value]': 'valueWithSingleQuotes()',\r\n '[style.--text-color]': 'textColor()',\r\n '[class.show-color]': 'showColor()',\r\n '(focus)': 'focused.set(true)',\r\n '(blur)': 'focused.set(false)',\r\n '(input)': 'value.set($event.target.value)',\r\n },\r\n})\r\nexport class ColorPicker implements AfterViewInit {\r\n /**\r\n * Specifies the maximum width of the input.\r\n */\r\n readonly maxWidth = input('');\r\n\r\n /**\r\n * Represents the value of the input.\r\n */\r\n readonly value = signal<string>('#ffffff');\r\n\r\n /**\r\n * Computed signal for the text color with single quotes.\r\n */\r\n readonly valueWithSingleQuotes = computed(() => {\r\n return `'${this.value()}'`;\r\n });\r\n\r\n /**\r\n * A computed signal that dynamically calculates the text color based on the resolved value.\r\n */\r\n readonly textColor = computed(() => {\r\n const backgroundColor = this.resolveColor(this.value());\r\n const hex = backgroundColor.replace('#', '');\r\n const r = parseInt(hex.substring(0, 2), 16);\r\n const g = parseInt(hex.substring(2, 4), 16);\r\n const b = parseInt(hex.substring(4, 6), 16);\r\n\r\n const luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b;\r\n return luminance > 128 ? '#000000' : '#FFFFFF';\r\n });\r\n\r\n /**\r\n * Indicates whether the input is focused.\r\n */\r\n readonly focused = signal<boolean>(false);\r\n\r\n /**\r\n * A reference to the `NgModel` directive.\r\n */\r\n private readonly ngModel = contentChild<NgModel>(NgModel);\r\n\r\n /**\r\n * Indicates whether to show the color value.\r\n */\r\n readonly showColor = input<boolean>(true);\r\n\r\n /**\r\n * A reference to the native element.\r\n */\r\n el = inject(ElementRef);\r\n\r\n /**\r\n * A reference to the control container.\r\n */\r\n private controlContainer = inject(ControlContainer, { optional: true });\r\n\r\n /**\r\n * Lifecycle hook that is called after the view has been initialized.\r\n * Sets the initial value of the picker and attaches event listeners.\r\n */\r\n ngAfterViewInit(): void {\r\n const formControl = this.controlContainer?.control?.get(\r\n this.el.nativeElement.getAttribute('formControlName')\r\n );\r\n\r\n // Inicializa el valor del signal\r\n this.value.set(\r\n this.el?.nativeElement.value || this.ngModel()?.value || '#000000'\r\n );\r\n\r\n // Suscríbete a los cambios del FormControl\r\n formControl?.valueChanges.subscribe((newValue: string) => {\r\n this.value.set(newValue || '#000000');\r\n });\r\n }\r\n\r\n /**\r\n * Resolves a color value, handling cases like `transparent` or `color-mix`.\r\n * @param value The input color value.\r\n * @returns A valid hexadecimal color.\r\n */\r\n resolveColor(value: string): string {\r\n // Handle `color-mix` values\r\n const colorMixMatch = value.match(\r\n /color-mix\\(in srgb, (#[0-9a-fA-F]{6}), (#[0-9a-fA-F]{6}) (\\d+)%\\)/\r\n );\r\n if (colorMixMatch) {\r\n const [, color1, color2, percentage] = colorMixMatch;\r\n return this.calculateColorMix(\r\n color1,\r\n color2,\r\n parseInt(percentage, 10) / 100\r\n );\r\n }\r\n\r\n // Handle `transparent` values\r\n if (value === 'transparent') {\r\n return '#ffffff'; // Default to white for transparency\r\n }\r\n\r\n return value; // Return the original value if no special cases\r\n }\r\n\r\n /**\r\n * Calculates the result of a `color-mix` operation.\r\n * @param color1 The first color in hexadecimal format.\r\n * @param color2 The second color in hexadecimal format.\r\n * @param percentage The mix percentage for the second color.\r\n * @returns The resulting mixed color in hexadecimal format.\r\n */\r\n calculateColorMix(\r\n color1: string,\r\n color2: string,\r\n percentage: number\r\n ): string {\r\n const hexToRgb = (hex: string) => {\r\n const bigint = parseInt(hex.replace('#', ''), 16);\r\n return {\r\n r: (bigint >> 16) & 255,\r\n g: (bigint >> 8) & 255,\r\n b: bigint & 255,\r\n };\r\n };\r\n\r\n const rgbToHex = (r: number, g: number, b: number) =>\r\n `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;\r\n\r\n const rgb1 = hexToRgb(color1);\r\n const rgb2 = hexToRgb(color2);\r\n\r\n const r = Math.round(rgb1.r * (1 - percentage) + rgb2.r * percentage);\r\n const g = Math.round(rgb1.g * (1 - percentage) + rgb2.g * percentage);\r\n const b = Math.round(rgb1.b * (1 - percentage) + rgb2.b * percentage);\r\n\r\n return rgbToHex(r, g, b);\r\n }\r\n}\r\n","import { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\r\nimport {\r\n Component,\r\n contentChild,\r\n inject,\r\n model,\r\n OnInit,\r\n output,\r\n} from '@angular/core';\r\nimport { Tree } from '../../../tree.component';\r\nimport { Icon } from '../../../../icon/icon.component';\r\n\r\n/**\r\n * Represents a tree node component that can be extended, collapsed,\r\n * and optionally supports drag-and-drop functionality.\r\n */\r\n@Component({\r\n selector: 'b-tree-node',\r\n imports: [Icon, CdkDragHandle],\r\n templateUrl: './tree-node.component.html',\r\n hostDirectives: [\r\n {\r\n directive: CdkDrag,\r\n inputs: ['cdkDragDisabled: disabled'],\r\n },\r\n ],\r\n})\r\nexport class TreeNode implements OnInit {\r\n /**\r\n * Indicates whether the node is extended (expanded).\r\n */\r\n readonly extended = model(false);\r\n\r\n /**\r\n * Reference to the `CdkDrag` directive for drag-and-drop functionality.\r\n */\r\n protected node = inject(CdkDrag);\r\n\r\n /**\r\n * Reference to a nested `Tree` component, if present.\r\n */\r\n readonly nestedTree = contentChild(Tree);\r\n\r\n /**\r\n * Emits an event when the node is closed.\r\n */\r\n closeEmitter = output<void>();\r\n\r\n /**\r\n * Lifecycle hook that is called after the component is initialized.\r\n */\r\n ngOnInit(): void {\r\n this.node.lockAxis = 'y';\r\n }\r\n\r\n /**\r\n * Updates the disabled state of the node.\r\n * @param disabled - Whether the node should be disabled.\r\n */\r\n handleNodeDisability(disabled: boolean): void {\r\n this.node.disabled = disabled;\r\n }\r\n\r\n /**\r\n * Toggles the extended (expanded) state of the node.\r\n * Emits a close event if the node is collapsed and contains a nested tree.\r\n */\r\n handleExtension(): void {\r\n const isExtended = this.extended();\r\n this.extended.set(!isExtended);\r\n\r\n if (isExtended && this.nestedTree()) {\r\n this.closeEmitter.emit();\r\n }\r\n }\r\n}\r\n","<section>\r\n @if (!node.disabled) {\r\n <i b-icon icon=\"GripVertical\" [size]=\"15\" cdkDragHandle></i>\r\n }\r\n <div\r\n class=\"projected-content\"\r\n (click)=\"nestedTree() && handleExtension()\"\r\n (keydown.enter)=\"nestedTree() && handleExtension()\"\r\n (keydown.space)=\"nestedTree() && handleExtension()\"\r\n role=\"button\"\r\n tabindex=\"0\">\r\n <ng-content />\r\n </div>\r\n @if (nestedTree()) {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\">\r\n <path d=\"m6 9 6 6 6-6\" />\r\n </svg>\r\n }\r\n</section>\r\n@if (nestedTree() && extended()) {\r\n <div class=\"nested\">\r\n <ng-content select=\"b-tree\" />\r\n </div>\r\n}\r\n","import {\r\n CdkDragDrop,\r\n CdkDropList,\r\n CdkDropListGroup,\r\n} from '@angular/cdk/drag-drop';\r\nimport {\r\n Component,\r\n contentChildren,\r\n effect,\r\n inject,\r\n input,\r\n OnInit,\r\n output,\r\n} from '@angular/core';\r\nimport { TreeNode } from './shared/components/tree-node/tree-node.component';\r\n\r\n/**\r\n * Represents a tree component that supports drag-and-drop functionality\r\n * and manages nested tree nodes.\r\n */\r\n@Component({\r\n selector: 'b-tree',\r\n template: `<ng-content />`,\r\n host: {\r\n '(cdkDropListDropped)': 'dropEmitter.emit($event)',\r\n '[style.max-width]': 'maxWidth()',\r\n },\r\n hostDirectives: [\r\n {\r\n directive: CdkDropList,\r\n inputs: ['id', 'cdkDropListConnectedTo: connectedTo'],\r\n outputs: ['cdkDropListDropped'],\r\n },\r\n CdkDropListGroup,\r\n ],\r\n})\r\nexport class Tree implements OnInit {\r\n /**\r\n * The ID of the tree component.\r\n */\r\n readonly maxWidth = input<string>('100%');\r\n /**\r\n * Determines whether the tree is draggable.\r\n */\r\n readonly draggable = input(false);\r\n\r\n /**\r\n * Reference to the `CdkDropList` directive used for drag-and-drop.\r\n */\r\n private tree = inject(CdkDropList);\r\n\r\n /**\r\n * Collection of nested `TreeNode` components.\r\n */\r\n private readonly nestedNodes = contentChildren(TreeNode);\r\n\r\n /**\r\n * Determines whether to close nodes recursively.\r\n */\r\n readonly closeRecursively = input(false);\r\n\r\n /**\r\n * Emits an event when a drop occurs in the tree.\r\n */\r\n dropEmitter = output<CdkDragDrop<string[]>>();\r\n\r\n /**\r\n * Initializes the `Tree` component and sets up reactive effects.\r\n */\r\n constructor() {\r\n effect(() => {\r\n this.handleTreeDisability();\r\n });\r\n }\r\n\r\n /**\r\n * Lifecycle hook that is called after the component is initialized.\r\n */\r\n ngOnInit(): void {\r\n if (this.closeRecursively()) this.handleCloseRecursively();\r\n }\r\n\r\n /**\r\n * Updates the disabled state of the tree and its nested nodes.\r\n */\r\n private handleTreeDisability(): void {\r\n const isDisabled = !this.draggable();\r\n this.tree.disabled = isDisabled;\r\n\r\n this.nestedNodes().forEach(node => {\r\n node.handleNodeDisability(isDisabled);\r\n });\r\n }\r\n\r\n /**\r\n * Sets up recursive closing behavior for nested nodes.\r\n */\r\n handleCloseRecursively(): void {\r\n this.nestedNodes().forEach(node => {\r\n node.closeEmitter.subscribe(() => {\r\n this.closeNestedNodes();\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Closes all nested nodes recursively.\r\n */\r\n closeNestedNodes(): void {\r\n this.nestedNodes().forEach(node => {\r\n node.extended.set(false);\r\n node.nestedTree()?.closeNestedNodes();\r\n });\r\n }\r\n}\r\n","import { CdkMenu } from '@angular/cdk/menu';\r\nimport { Component } from '@angular/core';\r\n\r\n/**\r\n * Represents a menu component that can optionally float.\r\n */\r\n@Component({\r\n selector: 'b-menu',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [CdkMenu],\r\n})\r\nexport class Menu {}\r\n","import { Component } from '@angular/core';\r\n\r\n/**\r\n * Represents a label for a menu.\r\n */\r\n@Component({\r\n selector: 'b-menu-label',\r\n imports: [],\r\n template: `<ng-content />`,\r\n})\r\nexport class MenuLabel {}\r\n","import { CdkMenuItem } from '@angular/cdk/menu';\r\nimport { Component } from '@angular/core';\r\n\r\n/**\r\n * Represents a menu item with support for typeahead and disabled states.\r\n */\r\n@Component({\r\n selector: 'button[b-menu-item]',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [\r\n {\r\n directive: CdkMenuItem,\r\n inputs: [\r\n 'cdkMenuItemDisabled: disabled',\r\n 'cdkMenuitemTypeaheadLabel: typeaheadLabel',\r\n ],\r\n outputs: ['cdkMenuItemTriggered: triggered'],\r\n },\r\n ],\r\n})\r\nexport class MenuItemComponent {}\r\n","import { CdkMenuGroup } from '@angular/cdk/menu';\r\nimport { Component } from '@angular/core';\r\n\r\n/**\r\n * Represents a group of menu items.\r\n */\r\n@Component({\r\n selector: 'b-menu-group',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [CdkMenuGroup],\r\n})\r\nexport class MenuGroupComponent {}\r\n","import { CdkMenuItemCheckbox } from '@angular/cdk/menu';\r\nimport { Component } from '@angular/core';\r\n\r\n/**\r\n * Represents a checkbox menu item.\r\n */\r\n@Component({\r\n selector: 'button[b-menu-item-checkbox]',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [\r\n {\r\n directive: CdkMenuItemCheckbox,\r\n inputs: [\r\n 'cdkMenuItemDisabled: disabled',\r\n 'cdkMenuitemTypeaheadLabel: typeaheadLabel',\r\n 'cdkMenuItemChecked: active',\r\n ],\r\n outputs: ['cdkMenuItemTriggered: triggered'],\r\n },\r\n ],\r\n})\r\nexport class MenuItemCheckboxComponent {}\r\n","import { CdkMenuItemRadio } from '@angular/cdk/menu';\r\nimport { Component } from '@angular/core';\r\n\r\n/**\r\n * Represents a radio menu item.\r\n */\r\n@Component({\r\n selector: 'button[b-menu-item-radio]',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [\r\n {\r\n directive: CdkMenuItemRadio,\r\n inputs: [\r\n 'cdkMenuItemDisabled: disabled',\r\n 'cdkMenuitemTypeaheadLabel: typeaheadLabel',\r\n 'cdkMenuItemChecked: active',\r\n ],\r\n outputs: ['cdkMenuItemTriggered: triggered'],\r\n },\r\n ],\r\n})\r\nexport class MenuItemRadioComponent {}\r\n","import { CdkMenuTrigger } from '@angular/cdk/menu';\r\nimport { Directive, inject, input, OnInit } from '@angular/core';\r\nimport { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { Position } from '../../../../../shared/types/position.type';\r\n\r\n@Directive({\r\n selector: '[menuTriggerFor]',\r\n hostDirectives: [\r\n {\r\n directive: CdkMenuTrigger,\r\n inputs: ['cdkMenuTriggerFor: menuTriggerFor'],\r\n },\r\n ],\r\n})\r\nexport class MenuTrigger implements OnInit {\r\n trigger = inject(CdkMenuTrigger);\r\n readonly menuTriggerPosition = input<Position>('right-top');\r\n readonly submenu = input(false);\r\n\r\n ngOnInit(): void {\r\n this.setPosition();\r\n }\r\n\r\n setPosition(): void {\r\n const positionMap: Record<Position, ConnectedPosition> = {\r\n 'top-left': {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: !this.submenu() ? -5 : undefined,\r\n },\r\n 'top-center': {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: !this.submenu() ? -5 : undefined,\r\n },\r\n 'top-right': {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n offsetY: !this.submenu() ? -5 : undefined,\r\n },\r\n 'bottom-left': {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: !this.submenu() ? 5 : undefined,\r\n },\r\n 'bottom-center': {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: !this.submenu() ? 5 : undefined,\r\n },\r\n 'bottom-right': {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetY: !this.submenu() ? 5 : undefined,\r\n },\r\n 'left-top': {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetX: !this.submenu() ? -5 : undefined,\r\n },\r\n 'left-center': {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetX: !this.submenu() ? -5 : undefined,\r\n },\r\n 'left-bottom': {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n offsetX: !this.submenu() ? -5 : undefined,\r\n },\r\n 'right-top': {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetX: !this.submenu() ? 5 : undefined,\r\n },\r\n 'right-center': {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetX: !this.submenu() ? 5 : undefined,\r\n },\r\n 'right-bottom': {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetX: !this.submenu() ? 5 : undefined,\r\n },\r\n };\r\n\r\n const connectedPosition = positionMap[this.menuTriggerPosition()];\r\n this.trigger.menuPosition = [connectedPosition];\r\n }\r\n}\r\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { Icon } from '../icon/icon.component';\r\n\r\n@Component({\r\n selector: 'b-alert',\r\n templateUrl: './alert.component.html',\r\n imports: [Icon],\r\n host: {\r\n '[class]': 'type()',\r\n '[style.max-width]': 'maxWidth()',\r\n },\r\n})\r\nexport class Alert {\r\n /** The type of the alert. */\r\n readonly type = input<'success' | 'error' | 'warning' | 'info'>('info');\r\n\r\n /** The title of the alert. */\r\n readonly title = input<string | null>(null);\r\n\r\n /** The icon of the alert. */\r\n readonly icon = input<string | null>(null);\r\n\r\n /** Whether the alert is dismissible. */\r\n readonly dismissible = input(false);\r\n\r\n /** Event emitted when the alert is dismissed. */\r\n readonly dismissed = output<void>();\r\n\r\n /** The maximum width of the alert. */\r\n readonly maxWidth = input<string | null>(null);\r\n\r\n /** The color foreground of the alert. */\r\n readonly colorForeground = computed(() => {\r\n return this.type() === 'info'\r\n ? 'var(--secondary-foreground)'\r\n : `var(--${this.type()}-foreground)`;\r\n });\r\n\r\n dismiss(): void {\r\n this.dismissed.emit();\r\n }\r\n}\r\n","@if (icon()) {\r\n <div class=\"icon\">\r\n <i b-icon [icon]=\"icon()!\" [size]=\"20\" [color]=\"colorForeground()\"></i>\r\n </div>\r\n}\r\n<div class=\"content\">\r\n @if (title()) {\r\n <div class=\"title\">\r\n {{ title() }}\r\n </div>\r\n }\r\n\r\n <div class=\"body\">\r\n <ng-content />\r\n </div>\r\n</div>\r\n@if (dismissible()) {\r\n <button class=\"close-btn\" (click)=\"dismiss()\">\r\n <i b-icon icon=\"X\" [size]=\"20\" [color]=\"colorForeground()\"></i>\r\n </button>\r\n}\r\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\r\nimport { CdkListbox, CdkOption } from '@angular/cdk/listbox';\r\nimport {\r\n Component,\r\n computed,\r\n contentChildren,\r\n inject,\r\n OnInit,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Component representing a list of command options.\r\n * It uses Angular CDK's listbox and option utilities for accessibility and keyboard navigation.\r\n */\r\n@Component({\r\n selector: 'ul[b-command-options]',\r\n imports: [],\r\n template: `<ng-content />`,\r\n hostDirectives: [\r\n {\r\n directive: CdkListbox,\r\n outputs: ['cdkListboxValueChange'],\r\n },\r\n ],\r\n host: {\r\n '(cdkListboxValueChange)': 'selectOption($event.value)',\r\n },\r\n})\r\nexport class CommandOptionsComponent implements OnInit {\r\n /**\r\n * Collection of child options within the listbox.\r\n */\r\n readonly options = contentChildren(CdkOption);\r\n\r\n /**\r\n * Key manager for handling keyboard navigation and active descendant management.\r\n */\r\n readonly listKeyManager = computed(() =>\r\n new ActiveDescendantKeyManager(this.options())\r\n .withWrap()\r\n .withVerticalOrientation()\r\n );\r\n\r\n /**\r\n * Signal representing the currently selected values.\r\n */\r\n readonly value = signal<string[]>([]);\r\n\r\n /**\r\n * Signal representing the currently highlighted option.\r\n */\r\n readonly highlightedOption = signal('1');\r\n\r\n /**\r\n * Reference to the injected CDK Listbox instance.\r\n */\r\n cdkListbox = inject(CdkListbox);\r\n\r\n /**\r\n * Emitter for closing the command options.\r\n */\r\n closeEmitter = output();\r\n\r\n /**\r\n * Lifecycle hook that initializes the component.\r\n * Enables the use of active descendant for the listbox.\r\n */\r\n ngOnInit(): void {\r\n this.cdkListbox.useActiveDescendant = true;\r\n }\r\n\r\n /**\r\n * Selects the currently active option and updates the listbox value.\r\n */\r\n selectOption(value?: string[]): void {\r\n const selectValue = value\r\n ? value\r\n : (this.listKeyManager().activeItem?.value ?? []);\r\n this.value.set(selectValue);\r\n this.cdkListbox.value = this.value();\r\n this.closeEmitter.emit();\r\n }\r\n\r\n /**\r\n * Moves the active item to the next option and updates the highlighted option.\r\n */\r\n nextOption(): void {\r\n this.listKeyManager().setNextItemActive();\r\n this.highlightedOption.set(this.listKeyManager().activeItem?.value ?? '');\r\n this.updateHighlightedOption();\r\n }\r\n\r\n /**\r\n * Moves the active item to the previous option and updates the highlighted option.\r\n */\r\n previousOption(): void {\r\n this.listKeyManager().setPreviousItemActive();\r\n this.highlightedOption.set(this.listKeyManager().activeItem?.value ?? '');\r\n this.updateHighlightedOption();\r\n }\r\n\r\n /**\r\n * Updates the CSS class of options to reflect the currently highlighted option.\r\n */\r\n updateHighlightedOption(): void {\r\n this.options().forEach(option => {\r\n if (option.value === this.highlightedOption()) {\r\n option.element.classList.add('cdk-option-highlighted');\r\n } else {\r\n option.element.classList.remove('cdk-option-highlighted');\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n computed,\r\n contentChild,\r\n ElementRef,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { Input } from '../input/input.component';\r\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\r\nimport { CommandOptionsComponent } from './command-options.component';\r\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\r\n\r\n/**\r\n * Component representing a command input with associated options.\r\n * It provides keyboard navigation and focus trapping for accessibility.\r\n */\r\n@Component({\r\n selector: 'b-command',\r\n imports: [Input, CdkTrapFocus],\r\n template: `<input\r\n type=\"text\"\r\n b-input\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"isDesktop()\"\r\n #trappedInput\r\n (keydown.arrowDown)=\"commandOptions()?.nextOption()\"\r\n (keydown.arrowUp)=\"commandOptions()?.previousOption()\"\r\n (keydown.enter)=\"commandOptions()?.selectOption()\"\r\n (blur)=\"isDesktop() && trappedInput.el.nativeElement.focus()\" />\r\n <ng-content />`,\r\n host: {\r\n '[style.maxHeight]': 'maxHeight()',\r\n },\r\n})\r\nexport class CommandComponent {\r\n /**\r\n * Reference to the child `CommandOptionsComponent` if present.\r\n * Used to interact with the options for navigation and selection.\r\n */\r\n readonly commandOptions = contentChild(CommandOptionsComponent);\r\n\r\n /**\r\n * Input representing the maximum height of the component.\r\n * This can be used to control the visual appearance of the command component.\r\n */\r\n readonly maxHeight = input('300px');\r\n\r\n /**\r\n * Computed signal representing the selected value from the command options.\r\n * This is linked to the value of the `CommandOptionsComponent`.\r\n */\r\n readonly value = computed(() => this.commandOptions()?.value());\r\n\r\n /**\r\n * Computed signal representing the options available in the command options.\r\n * This is linked to the options of the `CommandOptionsComponent`.\r\n */\r\n readonly options = computed(() => this.commandOptions()?.options());\r\n\r\n /**\r\n * Reference to the BreakpointObserver service for responsive design.\r\n */\r\n breakpointObserver = inject(BreakpointObserver);\r\n\r\n /**\r\n * Signal representing whether the current viewport is desktop or not.\r\n * This is determined by checking if the Handset breakpoint is matched.\r\n */\r\n readonly isDesktop = signal(\r\n !this.breakpointObserver.isMatched(Breakpoints.Handset)\r\n );\r\n\r\n /**\r\n * Reference to the host element of the component.\r\n * This provides access to the DOM element of the command component.\r\n */\r\n el = inject(ElementRef);\r\n}\r\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\r\nimport {\r\n Component,\r\n computed,\r\n contentChild,\r\n HostListener,\r\n input,\r\n linkedSignal,\r\n model,\r\n OnInit,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { Button } from '../button/button.component';\r\nimport { Icon } from '../icon/icon.component';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { forwardRef } from '@angular/core';\r\nimport { CommandComponent } from '../command/command.component';\r\n\r\n/**\r\n * Component representing a combobox dropdown.\r\n * This component provides a button to toggle the dropdown and displays the selected option(s) with an input field.\r\n */\r\n@Component({\r\n selector: 'b-combobox',\r\n imports: [Button, Icon, CdkConnectedOverlay, CdkOverlayOrigin],\r\n template: ` <button\r\n b-button\r\n variant=\"outlined\"\r\n (click)=\"isOpen() ? close() : open()\"\r\n (keydown.arrowDown)=\"!isOpen() && open()\"\r\n (keydown.arrowUp)=\"!isOpen() && open()\"\r\n cdkOverlayOrigin\r\n [activeEnabled]=\"false\"\r\n #trigger=\"cdkOverlayOrigin\">\r\n {{ content() }}\r\n <i b-icon icon=\"ChevronDown\" [size]=\"20\"></i>\r\n </button>\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n [cdkConnectedOverlayMinWidth]=\"buttonWidth()\"\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayPositions]=\"[\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: 5,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -5,\r\n },\r\n ]\"\r\n (backdropClick)=\"close()\"\r\n (attach)=\"onOverlayAttached()\"\r\n (detach)=\"close()\">\r\n <ng-content />\r\n </ng-template>`,\r\n host: {\r\n '[class.disabled]': 'disabled()',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ComboboxComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ComboboxComponent implements OnInit, ControlValueAccessor {\r\n /**\r\n * Placeholder text displayed when no option is selected.\r\n * Defaults to 'Select an option'.\r\n */\r\n readonly placeholder = input<string>('Select an option');\r\n\r\n /**\r\n * Signal indicating whether the dropdown is currently open.\r\n */\r\n readonly isOpen = signal(false);\r\n\r\n /**\r\n * Reference to the button element used to toggle the dropdown.\r\n * This is used for managing focus and interactions.\r\n */\r\n readonly button = viewChild(Button);\r\n\r\n /**\r\n * Reference to the content component of the dropdown.\r\n * This contains the list of selectable options.\r\n */\r\n readonly command = contentChild(CommandComponent);\r\n\r\n /**\r\n * Computed signal representing the selected values from the dropdown.\r\n * This is linked to the value of the `CommandComponent`.\r\n */\r\n readonly value = linkedSignal(() => this.command()?.value());\r\n\r\n /**\r\n * Linked signal for the width of the button element.\r\n * This is used to set the width of the dropdown overlay.\r\n */\r\n readonly buttonWidth = linkedSignal(\r\n () => this.button()?.el.nativeElement.offsetWidth\r\n );\r\n\r\n /**\r\n * Model indicating whether the combobox component is disabled.\r\n * When disabled, the dropdown cannot be opened or interacted with.\r\n */\r\n readonly disabled = model(false);\r\n\r\n /**\r\n * Computed signal representing the options available in the dropdown.\r\n * This retrieves the options from the `CommandComponent`.\r\n */\r\n readonly options = computed(() => this.command()?.options());\r\n\r\n /**\r\n * Computed signal representing the content of the selected option(s).\r\n * If no option is selected, it returns the placeholder text.\r\n */\r\n readonly content = computed(() => {\r\n const selected = this.value();\r\n if (selected && selected.length > 0) {\r\n return this.options()?.reduce((acc, option) => {\r\n if (selected.includes(option.value)) {\r\n return acc ? acc + ', ' + option.getLabel() : option.getLabel();\r\n }\r\n return acc;\r\n }, '');\r\n } else {\r\n return this.placeholder();\r\n }\r\n });\r\n\r\n /**\r\n * Signal representing the delay before closing the dropdown.\r\n * This is used to provide a smooth transition when closing the dropdown.\r\n */\r\n readonly closeDelay = signal(150);\r\n\r\n /**\r\n * Reference to the CdkConnectedOverlay directive.\r\n * This is used to manage the positioning and visibility of the dropdown overlay.\r\n */\r\n readonly cdkConnectedOverlay = viewChild(CdkConnectedOverlay);\r\n\r\n /**\r\n * Lifecycle hook that is called after the component is initialized.\r\n * It sets up the necessary subscriptions for handling value changes.\r\n */\r\n ngOnInit(): void {\r\n this.handleSelectedValueChange();\r\n }\r\n\r\n /**\r\n * Subscribes to the `closeEmitter` of the `CommandComponent` to handle\r\n * changes to the selected value. This ensures the dropdown closes and the\r\n * value is propagated to Angular Forms.\r\n */\r\n handleSelectedValueChange() {\r\n this.command()\r\n ?.commandOptions()\r\n ?.closeEmitter.subscribe(() => {\r\n this.onChange(this.value()!); // Notify Angular Forms about the change\r\n this.onTouched(); // Mark the component as touched\r\n this.close(); // Close the dropdown\r\n });\r\n }\r\n\r\n /**\r\n * Opens the dropdown and focuses the listbox.\r\n * This method sets the `isOpen` signal to `true` and ensures the listbox gains focus.\r\n */\r\n open() {\r\n this.isOpen.set(true);\r\n }\r\n\r\n /**\r\n * Closes the dropdown with a transition effect and refocuses the button.\r\n * This method sets the `isOpen` signal to `false` after a delay and removes\r\n * the transition class from the overlay panel.\r\n */\r\n close() {\r\n this.cdkConnectedOverlay()?.overlayRef.addPanelClass(\r\n 'cdk-overlay-pane-closing'\r\n );\r\n\r\n setTimeout(() => {\r\n this.isOpen.set(false);\r\n this.cdkConnectedOverlay()?.overlayRef.removePanelClass(\r\n 'cdk-overlay-pane-closing'\r\n );\r\n this.button()?.el.nativeElement.focus();\r\n }, this.closeDelay());\r\n }\r\n\r\n /**\r\n * Focuses the input element within the command component when the overlay is attached.\r\n */\r\n onOverlayAttached() {\r\n this.buttonWidth.set(this.button()?.el.nativeElement.offsetWidth);\r\n this.command()?.el.nativeElement.querySelector('input')?.focus();\r\n }\r\n\r\n /**\r\n * Sets the width of the button element when the window is resized.\r\n * This ensures that the dropdown overlay matches the width of the button.\r\n */\r\n @HostListener('window:resize')\r\n setButtonWidth() {\r\n this.buttonWidth.set(this.button()?.el.nativeElement.offsetWidth);\r\n }\r\n\r\n // Control Value Accessor methods\r\n\r\n /**\r\n * Callback function to propagate changes to the model.\r\n * This is called whenever the value changes.\r\n */\r\n private onChange: (value: string[]) => void = () => undefined;\r\n\r\n /**\r\n * Callback function to mark the component as touched.\r\n * This is called when the component loses focus.\r\n */\r\n private onTouched: () => void = () => undefined;\r\n\r\n /**\r\n * Writes a new value to the component.\r\n * This method is called by Angular Forms to update the value of the combobox component.\r\n * @param value - The new value to set.\r\n */\r\n writeValue(value: string[]): void {\r\n if (value) {\r\n value.forEach(value => {\r\n this.command()?.commandOptions()?.cdkListbox?.selectValue(value);\r\n });\r\n this.value.set(value);\r\n }\r\n }\r\n\r\n /**\r\n * Registers a callback function to be called when the value changes.\r\n * @param fn - The callback function.\r\n */\r\n registerOnChange(fn: (value: string[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Registers a callback function to be called when the component is touched.\r\n * @param fn - The callback function.\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Sets the disabled state of the component.\r\n * This method is called by Angular Forms to enable or disable the component.\r\n * @param isDisabled - A boolean indicating whether the component should be disabled.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of basis-ng\r\n */\r\n\r\n/* Theme Service */\r\nexport * from './core/services/theme.service';\r\n\r\n/* Button */\r\nexport * from './core/components/button/button.component';\r\nexport * from './core/components/button-group/button-group.component';\r\n\r\n/* Directives */\r\nexport * from './shared/directives/lazy-content.directive';\r\n\r\n/* Input */\r\nexport * from './core/components/input/input.component';\r\n\r\n/* Select */\r\nexport * from './core/components/select/select.component';\r\nexport * from './core/components/select/select-options.component';\r\nexport * from './shared/components/option.component';\r\n\r\n/* Spinner */\r\nexport * from './core/components/spinner/spinner.component';\r\n\r\n/* Switch */\r\nexport * from './core/components/switch/switch.component';\r\n\r\n/* Table */\r\nexport * from './core/components/table/table.component';\r\nexport * from './core/components/table/components/row/row.component';\r\nexport * from './core/components/table/components/row/components/row-item/row-item.component';\r\n\r\n/* Tabs */\r\nexport * from './core/components/tabs/tabs.component';\r\nexport * from './core/components/tabs/components/tab/tab.component';\r\n\r\n/* InViewport */\r\nexport * from './core/directives/in-viewport.directive';\r\nexport * from './core/services/in-viewport.service';\r\n\r\n/* Side Sheet */\r\nexport * from './core/components/side-sheet/side-sheet.component';\r\n\r\n/* Bottom Sheet */\r\nexport * from './core/components/bottom-sheet/bottom-sheet.component';\r\n\r\n/* Responsive */\r\nexport * from './core/services/responsive.service';\r\n\r\n/* Attached Box */\r\nexport * from './core/components/attached-box/attached-box.component';\r\n\r\n/* Icon */\r\nexport * from './core/components/icon/icon.component';\r\n\r\n/* Badge */\r\nexport * from './core/components/badge/badge.component';\r\n\r\n/* Checkbox */\r\nexport * from './core/components/checkbox/checkbox.component';\r\n\r\n/* Textarea */\r\nexport * from './core/components/textarea/textarea.component';\r\n\r\n/* Input Group */\r\nexport * from './core/components/input-group/input-group.component';\r\n\r\n/* Range */\r\nexport * from './core/components/range/range.component';\r\n\r\n/* Badge */\r\nexport * from './core/components/badge/badge.component';\r\n\r\n/* Tooltip */\r\nexport * from './core/components/tooltip/tooltip.component';\r\n\r\n/* Color Picker */\r\nexport * from './core/components/color-picker/color-picker.component';\r\n\r\n/* Tree */\r\nexport * from './core/components/tree/tree.component';\r\nexport * from './core/components/tree/shared/components/tree-node/tree-node.component';\r\n\r\n/* Menu */\r\nexport * from './core/components/menu/menu.component';\r\nexport * from './core/components/menu/shared/components/menu-label/menu-label.component';\r\nexport * from './core/components/menu/shared/components/menu-item/menu-item.component';\r\nexport * from './core/components/menu/shared/components/menu-group/menu-group.component';\r\nexport * from './core/components/menu/shared/components/menu-item-checkbox/menu-item-checkbox.component';\r\nexport * from './core/components/menu/shared/components/menu-item-radio/menu-item-radio.component';\r\nexport * from './core/components/menu/shared/directives/menu-trigger.directive';\r\n\r\n/* Alert */\r\nexport * from './core/components/alert/alert.component';\r\n\r\n/* Types */\r\n\r\n/* Position */\r\nexport * from './shared/types/position.type';\r\n\r\n/* Command */\r\nexport * from './core/components/command/command.component';\r\nexport * from './core/components/command/command-options.component';\r\n\r\n/* Combobox */\r\nexport * from './core/components/combobox/combobox.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;MAMa,YAAY,CAAA;AACvB;;;;;;;AAOG;AACM,IAAA,KAAK,GAAG,MAAM,CAA4B,MAAM,CAAC;AAE1D;;;AAGG;AACK,IAAA,QAAQ;AAEhB;;;AAGG;AACK,IAAA,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAElD,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;;AAGjE;;;;;;;AAOG;AACH,IAAA,UAAU,CAAC,KAAgC,EAAA;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;YACpB,IAAI,CAAC,WAAW,EAAE;YAClB;;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,CAAC;;AAG3E;;;AAGG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;;AAG9D;;;AAGG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC;;uGAzD5D,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCKY,MAAM,CAAA;;AAER,IAAA,OAAO,GAAG,KAAK,CACtB,SAAS,CACV;;AAGQ,IAAA,IAAI,GAAG,KAAK,CAAkB,GAAG,CAAC;;AAGlC,IAAA,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC;;AAGpC,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;uGAbZ,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,okBANP,CAAiB,eAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAMhB,MAAM,EAAA,UAAA,EAAA,CAAA;kBARlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAAiB,eAAA,CAAA;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,+BAA+B;AAC1C,wBAAA,gBAAgB,EAAE,iBAAiB;AACpC,qBAAA;AACF,iBAAA;;;MCCY,WAAW,CAAA;AACtB;;AAEG;AACM,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,CAAC;uGAJ5B,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,uSANZ,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAMf,WAAW,EAAA,UAAA,EAAA,CAAA;kBARvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAAgB,cAAA,CAAA;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,gBAAgB,EAAE,UAAU;AAC7B,qBAAA;AACF,iBAAA;;;MCHY,oBAAoB,CAAA;AAC/B,IAAA,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;uGADd,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCgBY,KAAK,CAAA;AAChB;;AAEG;AACM,IAAA,IAAI,GAAG,KAAK,CAA2C,MAAM,CAAC;AAEvE;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,CAAC;AAErC;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAS,CAAC,CAAC;AAEpC;;AAEG;AACM,IAAA,UAAU,GAAG,KAAK,CAAwB,SAAS,CAAC;AAE7D;;AAEG;AACM,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC;AAEhE;;AAEG;AACM,IAAA,EAAE,GAAG,MAAM,CAA+B,UAAU,CAAC;AAE9D;;AAEG;IACK,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAErD;;AAEG;AACM,IAAA,IAAI,GAAG,KAAK,CAAkB,GAAG,CAAC;AAE3C;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK;AAChE,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE;AACrD,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;;;AAIjC;;;AAGG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK;;AAGrC;;;AAGG;AACH,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;;AAG/C,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;;;AAI/B;;;AAGG;AACH,IAAA,MAAM,CAAC,KAAU,EAAA;;AAEf,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5D,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;;;AAIvC;;;;AAIG;AACH,IAAA,YAAY,CAAC,KAAoB,EAAA;QAC/B,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;AAClC,YAAA,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK;kBACzB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ;kBACjC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;;aACpC;AACL,YAAA,OAAO,IAAI;;;uGAjGJ,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAL,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAK,43BATN,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FASD,KAAK,EAAA,UAAA,EAAA,CAAA;kBAXjB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAAE,CAAA;AACZ,oBAAA,IAAI,EAAE;AACJ,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,mBAAmB,EAAE,YAAY;AACjC,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,QAAQ,EAAE,gBAAgB;AAC1B,wBAAA,SAAS,EAAE,oBAAoB;AAChC,qBAAA;AACF,iBAAA;;;ACjBD;;;AAGG;MAYU,eAAe,CAAA;AAC1B;;;AAGG;AACH,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvB;;;AAGG;AACH,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;uGAXlB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,uJARhB,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAQf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAgB,cAAA,CAAA;AAC1B,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,SAAS;4BACpB,MAAM,EAAE,CAAC,kBAAkB,CAAC;AAC7B,yBAAA;AACF,qBAAA;AACF,iBAAA;;;ACLD;;;AAGG;MAkBU,sBAAsB,CAAA;AACjC;;;AAGG;AACM,IAAA,KAAK,GAAG,MAAM,CAAW,EAAE,CAAC;AAErC;;;AAGG;IACH,YAAY,GAAG,MAAM,EAAE;AAEvB;;;AAGG;AACH,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvB;;;AAGG;AACM,IAAA,SAAS,GAAG,KAAK,CAAS,OAAO,CAAC;AAE3C;;;AAGG;AACH,IAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAE5B;;;AAGG;AACM,IAAA,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC;AAEnD;;;;;;AAMG;AACH,IAAA,iBAAiB,CAAC,KAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;uGA9Cf,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,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,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,uBAAA,EAAA,iCAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAmCE,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjDxC,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAcf,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAjBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAgB,cAAA,CAAA;AAC1B,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,UAAU;4BACrB,MAAM,EAAE,CAAC,iBAAiB,CAAC;4BAC3B,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,yBAAyB,EAAE,iCAAiC;AAC5D,wBAAA,oBAAoB,EAAE,aAAa;AACpC,qBAAA;AACF,iBAAA;;;MCpBY,IAAI,CAAA;AACf;;AAEG;AACK,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAExC;;AAEG;AACM,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAU;AAExC;;AAEG;AACM,IAAA,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;AAEzB;;AAEG;AACM,IAAA,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;AAEjC;;AAEG;AACM,IAAA,KAAK,GAAG,KAAK,CAAS,4BAA4B,CAAC;AAE5D;;AAEG;AACM,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QAC/B,IAAI,CAAE,KAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;YAChC,OAAO,CAAC,KAAK,CAAC,CAAS,MAAA,EAAA,IAAI,CAAC,IAAI,EAAE,CAA8B,4BAAA,CAAA,CAAC;YACjE,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,CAAC;;QAGnD,MAAM,OAAO,GAAG,aAAa,CAAE,KAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;AACzD,YAAA,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE;AACnB,YAAA,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;AACpB,YAAA,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE;AACnC,SAAA,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC;AAClE,KAAC,CAAC;uGA1CS,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAJ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAI,gnBALL,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKD,IAAI,EAAA,UAAA,EAAA,CAAA;kBARhB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAE,CAAA;AACZ,oBAAA,IAAI,EAAE;AACJ,wBAAA,aAAa,EAAE,WAAW;AAC3B,qBAAA;AACF,iBAAA;;;ACQD;;;AAGG;MAuDU,eAAe,CAAA;AAC1B;;;AAGG;AACM,IAAA,WAAW,GAAG,KAAK,CAAS,kBAAkB,CAAC;AAExD;;AAEG;AACM,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAE/B;;;AAGG;AACM,IAAA,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAEnC;;;AAGG;AACM,IAAA,WAAW,GAAG,YAAY,CAAC,sBAAsB,CAAC;AAE3D;;;AAGG;AACM,IAAA,KAAK,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC;AAEhE;;;AAGG;AACM,IAAA,WAAW,GAAG,YAAY,CACjC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,CAClD;AAED;;;AAGG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;AAEhC;;;AAGG;AACM,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC;AAEhE;;;AAGG;AACM,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AAC/B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;QAC7B,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAI;gBAC5C,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC7C,oBAAA,OAAO;0BACH,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC;0BACrC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS;;AAEvC,gBAAA,OAAO,GAAG;aACX,EAAE,EAAE,CAAC;;aACD;AACL,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;;AAE7B,KAAC,CAAC;AAEF;;;AAGG;AACM,IAAA,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;AAEjC;;;AAGG;AACM,IAAA,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,CAAC;AAE7D;;;AAGG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,yBAAyB,EAAE;;AAGlC;;;;AAIG;IACH,yBAAyB,GAAA;QACvB,IAAI,CAAC,WAAW,EAAE,EAAE,YAAY,CAAC,SAAS,CAAC,MAAK;YAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAG,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,SAAC,CAAC;;AAGJ;;;AAGG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGvB;;;;AAIG;IACH,KAAK,GAAA;QACH,IAAI,CAAC,mBAAmB,EAAE,EAAE,UAAU,CAAC,aAAa,CAClD,0BAA0B,CAC3B;QAED,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,mBAAmB,EAAE,EAAE,UAAU,CAAC,gBAAgB,CACrD,0BAA0B,CAC3B;YACD,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;AACzC,SAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;;AAGvB;;AAEG;IACH,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC;QACjE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;;AAG9C;;;AAGG;IAEH,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC;;;AAKnE;;;AAGG;AACK,IAAA,QAAQ,GAA8B,MAAM,SAAS;AAE7D;;;AAGG;AACK,IAAA,SAAS,GAAe,MAAM,SAAS;AAE/C;;;;AAIG;AACH,IAAA,UAAU,CAAC,KAAe,EAAA;QACxB,IAAI,KAAK,EAAE;AACT,YAAA,KAAK,CAAC,OAAO,CAAC,KAAK,IAAG;gBACpB,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC;AACjD,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAIzB;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAA6B,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;;uGArMpB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EARf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,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,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,QAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAwBmC,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAN9B,MAAM,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgEO,mBAAmB,EAnIlD,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCO,kBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAxCP,MAAM,EAAE,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,4+BAAE,gBAAgB,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAoDlD,eAAe,EAAA,UAAA,EAAA,CAAA;kBAtD3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;oBACpB,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC9D,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCO,kBAAA,CAAA;AACjB,oBAAA,IAAI,EAAE;AACJ,wBAAA,kBAAkB,EAAE,YAAY;AACjC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;8BAgJC,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe;;;MCnNlB,OAAO,CAAA;AACT,IAAA,MAAM,GAAG,KAAK,CAAU,IAAI,CAAC;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAS,mBAAmB,CAAC;AAC1C,IAAA,eAAe,GAAG,KAAK,CAAS,aAAa,CAAC;AAC9C,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,CAAC;uGAJtB,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,ECRpB,4mOA2OA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtOY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGN,OAAO,EAAA,UAAA,EAAA,CAAA;kBALnB,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,4mOAAA,EAAA;;;MEmBP,MAAM,CAAA;AACjB;;AAEG;AACM,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,CAAC;AAEtC;;AAEG;AACM,IAAA,IAAI,GAAG,KAAK,CAAsB,SAAS,CAAC;AAErD;;AAEG;AACH,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvB;;AAEG;IACH,WAAW,GAAG,MAAM,EAAW;AAE/B;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC;;AAG/C;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGjC;;;AAGG;AACH,IAAA,QAAQ,CAAC,QAAiB,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;;uGA3CtB,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,6pBAZP,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAYD,MAAM,EAAA,UAAA,EAAA,CAAA;kBAdlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAE,CAAA;AACZ,oBAAA,IAAI,EAAE;AACJ,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,gBAAgB,EAAE,SAAS;AAC3B,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,iBAAiB,EAAE,eAAe;AAClC,wBAAA,qBAAqB,EAAE,iBAAiB;AACxC,wBAAA,sBAAsB,EAAE,gBAAgB;AACzC,qBAAA;AACF,iBAAA;;;MCjBY,KAAK,CAAA;uGAAL,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAL,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAK,mECNlB,6JAKA,EAAA,CAAA;;2FDCa,KAAK,EAAA,UAAA,EAAA,CAAA;kBAJjB,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,6JAAA,EAAA;;;MEKR,GAAG,CAAA;AACL,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,CAAC;AAC9B,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC;AACjC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC;AACjC,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,CAAC;uGAJjC,GAAG,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAH,GAAG,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECRhB,4NAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGN,GAAG,EAAA,UAAA,EAAA,CAAA;kBALf,SAAS;+BACE,OAAO,EAAA,OAAA,EACR,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,4NAAA,EAAA;;;MEGP,OAAO,CAAA;IACT,OAAO,GAAG,KAAK,EAAU;AACzB,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,CAAC;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAChC,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;QAC7B,OAAO;AACL,YAAA,KAAK,EAAE,CAAG,EAAA,IAAI,CAAC,OAAO,EAAE,CAAI,EAAA,CAAA;AAC5B,YAAA,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,YAAY,GAAG,QAAQ;SAC7D;AACH,KAAC,CAAC;uGATS,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECRpB,4FAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGN,OAAO,EAAA,UAAA,EAAA,CAAA;kBALnB,SAAS;+BACE,YAAY,EAAA,OAAA,EACb,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,4FAAA,EAAA;;;MEGP,GAAG,CAAA;AAOK,IAAA,EAAA;AANV,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAU;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAChC,IAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC;AACjC,IAAA,WAAW,GAAG,MAAM,CAAU,KAAK,CAAC;IAC7C,aAAa,GAAG,MAAM,EAAO;AAE7B,IAAA,WAAA,CAAmB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE;;AAErB;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG/B;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IACE,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CACnE,iBAAiB,CAClB,EACD;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;;;AAI9B;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IACE,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CACnE,iBAAiB,CAClB,EACD;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;;;uGAxCpB,GAAG,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAH,GAAG,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECRhB,gRASA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDJY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGN,GAAG,EAAA,UAAA,EAAA,CAAA;kBALf,SAAS;+BACE,OAAO,EAAA,OAAA,EACR,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,gRAAA,EAAA;;;MEUP,IAAI,CAAA;AACN,IAAA,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC;AAC3B,IAAA,aAAa,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AAClC,IAAA,aAAa,GAAG,KAAK,CAAgB,IAAI,CAAC;AAC1C,IAAA,gBAAgB,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;IAC9C,cAAc,GAAG,MAAM,EAAU;IACjC,iBAAiB,GAAkB,IAAI;AAEvC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,2BAA2B,EAAE;YAClC,IAAI,CAAC,yBAAyB,EAAE;AAClC,SAAC,CAAC;;AAGJ;;AAEG;IACH,kBAAkB,GAAA;QAChB,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;AACjC,YAAA,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,IAAG;AACvC,gBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC;AACjC,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;gBACxB,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACvC,aAAC,CAAC;AACJ,SAAC,CAAC;;AAGJ;;;;AAIG;IACH,SAAS,CAAC,GAAQ,EAAE,KAAa,EAAA;QAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,KAAK,EAAE;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;;AAG/B;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGlC;;AAEG;IACH,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;AACjC,YAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;AAChD,YAAA,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxD,SAAC,CAAC;;AAGJ;;AAEG;IACH,2BAA2B,GAAA;QACzB,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE;YACnD,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAC/C,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE,CAC5C;AACD,YAAA,IAAI,mBAAmB,KAAK,CAAC,CAAC,EAAE;AAC9B,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;AACrE,gBAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC;gBACtC,IAAI,CAAC,eAAe,EAAE;;;;AAK5B;;AAEG;IACH,yBAAyB,GAAA;QACvB,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,EAAE;YAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC;;;AAIpD;;;AAGG;AAEH,IAAA,cAAc,CAAC,KAAoB,EAAA;AACjC,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,YAAY;gBACf,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACxB;AACF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;gBAC5B;AACF,YAAA,KAAK,OAAO;gBACV,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,gBAAgB,EAAE;gBACvB;;;AAIN;;;AAGG;AACH,IAAA,WAAW,CAAC,SAA8B,EAAA;AACxC,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACnC,QAAA,MAAM,SAAS,GAAG,SAAS,KAAK,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QAE/C,KAAK,IAAI,SAAS;QAClB,OACE,KAAK,IAAI,CAAC;AACV,YAAA,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM;YAC1B,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAC7B;YACA,KAAK,IAAI,SAAS;;AAGpB,QAAA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;AAC5C,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,QAAQ,CAAC;;;AAIvD;;AAEG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EACpC,IAAI,CAAC,gBAAgB,EAAE,CACxB;QACD,IAAI,CAAC,eAAe,EAAE;;AAGxB;;;;AAIG;IACH,WAAW,CAAC,KAAa,EAAE,QAAgB,EAAA;AACzC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE;QAChC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE;YACxC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC;AAClD,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA,CAAC;;;uGAxJK,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAJ,IAAI,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EACiB,GAAG,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBrC,yEAGA,EAAA,CAAA;;2FDYa,IAAI,EAAA,UAAA,EAAA,CAAA;kBAJhB,SAAS;+BACE,QAAQ,EAAA,QAAA,EAAA,yEAAA,EAAA;wDA4FlB,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MElGxB,iBAAiB,CAAA;AACnB,IAAA,QAAQ,GAAG,MAAM,CAA0B,EAAE,CAAC;AACvD,IAAA,QAAQ;AAER;;;AAGG;AACH,IAAA,eAAe,CACb,EAAU,EACV,aAA0B,EAC1B,iBAA0B,EAAA;QAE1B,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,GAAG,iBAAiB,EAAE,CAAC;;YAGlE,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,OAAO,IAAG;AACjD,gBAAA,OAAO,CAAC,OAAO,CAAC,KAAK,IAAG;AACtB,oBAAA,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc;AACtC,oBAAA,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,SAAS,CAAC;AAC7C,iBAAC,CAAC;AACJ,aAAC,CAAC;;AAGF,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;;;AAIxC;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAU,EAAA;AAC1B,QAAA,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;;AAI9B;;;;AAIG;IACH,uBAAuB,CAAC,EAAU,EAAE,SAAkB,EAAA;AACpD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC;;uGA9CjD,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCGY,mBAAmB,CAAA;AACrB,IAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAU;AACvC,IAAA,2BAA2B,GAAG,KAAK,CAAU,KAAK,CAAC;AAC5D,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE7C,IAAA,WAAA,GAAA;AACE,QAAA,eAAe,CAAC;YACd,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpC,IAAI,CAAC,YAAY,EAAE,EACnB,IAAI,CAAC,EAAE,CAAC,aAAa,EACrB,IAAI,CAAC,2BAA2B,EAAE,CACnC;aACF;AACF,SAAA,CAAC;;IAGJ,WAAW,GAAA;QACT,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;;uGAnBpD,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC5B,iBAAA;;;ACMD;;;;;AAKG;MAaU,SAAS,CAAA;AACpB;;AAEG;AACM,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;AAE9B;;;AAGG;AACM,IAAA,IAAI,GAAG,KAAK,CAAmB,OAAO,CAAC;AAEhD;;AAEG;AACM,IAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;AAE/B;;AAEG;AACM,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC;AAExD;;AAEG;AACM,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC;AAE1D;;AAEG;IACH,UAAU,GAAG,MAAM,EAAQ;AAE3B;;AAEG;AACc,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAExC;;;;AAIG;AAEH,IAAA,mBAAmB,CAAC,KAAY,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AAClE,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;;uGA7Cf,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BtB,oeAiBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIY,YAAY,EAAA,CAAA,EAAA,CAAA;;2FASX,SAAS,EAAA,UAAA,EAAA,CAAA;kBAZrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAEjB,IAAA,EAAA;AACJ,wBAAA,cAAc,EAAE,UAAU;AAC1B,wBAAA,eAAe,EAAE,WAAW;AAC5B,wBAAA,cAAc,EAAE,UAAU;AAC1B,wBAAA,eAAe,EAAE,SAAS;AAC3B,qBAAA,EAAA,QAAA,EAAA,oeAAA,EAAA;8BA6CD,mBAAmB,EAAA,CAAA;sBADlB,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;ME/C/B,WAAW,CAAA;AACtB;;AAEG;AACM,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;AAE9B;;AAEG;AACM,IAAA,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;AAEhC;;AAEG;IACH,UAAU,GAAG,MAAM,EAAQ;AAE3B;;AAEG;AACc,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;AAE3C;;AAEG;AACM,IAAA,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AAE3B;;AAEG;AACc,IAAA,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;AAEzC;;AAEG;AACM,IAAA,cAAc,GAAG,KAAK,CAAC,EAAE,CAAC;AAEnC;;AAEG;IACM,SAAS,GAAG,QAAQ,CAAC,MAC5B,IAAI,CAAC,UAAU;AACb,UAAE,CAAc,WAAA,EAAA,IAAI,CAAC,UAAU,EAAE,CAAI,EAAA;AACrC,UAAE,IAAI,CAAC,MAAM;AACX,cAAE;cACA,kBAAkB,CACzB;AAED;;AAEG;AACc,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAExC;;;AAGG;AAEH,IAAA,mBAAmB,CAAC,KAAY,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AAClE,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;;AAI1B;;;AAGG;AACH,IAAA,SAAS,CAAC,KAAmB,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;;AAE9B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;;QAE5C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM;AAEvC,QAAA,MAAM,IAAI,GAAG,CAAC,CAAe,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAK;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,iBAAiB,EAAE;;YAGxB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE;AAEnC,YAAA,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC;AAC/C,YAAA,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,CAAC;AAC9C,SAAC;AAED,QAAA,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAChE,QAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC;;AAG3C;;;AAGG;AACH,IAAA,UAAU,CAAC,OAAe,EAAA;QACxB,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY;;QAEtD,MAAM,YAAY,GAAG,CAAC,OAAO,GAAG,WAAW,IAAI,GAAG;;AAElD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CACrB,GAAG,EACH,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,GAAG,GAAG,GAAG,YAAY,CAAC,CACnE;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;;AAG7B;;AAEG;IACH,iBAAiB,GAAA;QACf,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE;AAC7C,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;aACjB;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;;;uGApHd,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,MAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBxB,4IAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDYY,YAAY,EAAA,CAAA,EAAA,CAAA;;2FASX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAZvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cACd,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAEjB,IAAA,EAAA;AACJ,wBAAA,gBAAgB,EAAE,UAAU;AAC5B,wBAAA,kBAAkB,EAAE,cAAc;AAClC,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,cAAc,EAAE,UAAU;AAC3B,qBAAA,EAAA,QAAA,EAAA,4IAAA,EAAA;8BA2DD,mBAAmB,EAAA,CAAA;sBADlB,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;AEhE5C;;;AAGG;MAIU,iBAAiB,CAAA;;IAEX,WAAW,GAAG,MAAM,CAAoB;AACvD,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,OAAO,EAAE,IAAI;AACd,KAAA,CAAC;;AAGe,IAAA,WAAW,GAAG,MAAM,CAAS,CAAC,CAAC;AAEhD;;;AAGG;AACM,IAAA,aAAa,GAAG,QAAQ,CAAa,MAAK;AACjD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AAEjC,QAAA,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;AACzB,YAAA,OAAO,QAAQ;;AAEjB,QAAA,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;AACzB,YAAA,OAAO,QAAQ;;AAEjB,QAAA,OAAO,SAAS;AAClB,KAAC,CAAC;AAEF,IAAA,WAAA,GAAA;QACE,iBAAiB,CAAC,MAAK;YACrB,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,EAAE;AAC5B,SAAC,CAAC;;AAGJ;;;AAGG;IACK,qBAAqB,GAAA;QAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;;AAGzC;;;AAGG;IACK,mBAAmB,GAAA;AACzB,QAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAK;YACrC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AACzC,SAAC,CAAC;;AAGJ;;;AAGG;AACH,IAAA,iBAAiB,CAAC,cAA0C,EAAA;QAC1D,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,KAAK;AAClC,YAAA,GAAG,OAAO;AACV,YAAA,GAAG,cAAc;AAClB,SAAA,CAAC,CAAC;;uGA7DM,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCIY,WAAW,CAAA;AACtB;;;AAGG;AACM,IAAA,IAAI,GAAG,KAAK,CAAoB,OAAO,CAAC;AAEjD;;AAEG;AACM,IAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC;;AAEG;AACM,IAAA,OAAO,GAAG,SAAS,CAAa,SAAS,CAAC;AAEnD;;;AAGG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAW,WAAW,CAAC;AAEhD;;AAEG;AACM,IAAA,gBAAgB,GAAG,MAAM,CAAU,KAAK,CAAC;AAElD;;AAEG;AACM,IAAA,GAAG,GAAG,KAAK,CAAS,EAAE,CAAC;AAEhC;;;AAGG;IACM,gBAAgB,GAAG,YAAY,CAAW,MACjD,IAAI,CAAC,yBAAyB,EAAE,CACjC;AAED;;;AAGG;AACM,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC5C,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,WAAW,EAAE,EAAE;SAChB;QAED,QAAQ,SAAS;AACf,YAAA,KAAK,KAAK;gBACR,OAAO;AACL,oBAAA,GAAG,aAAa;AAChB,oBAAA,aAAa,EAAE;AACb,0BAAE;AACF,0BAAE,kBAAkB;oBACtB,WAAW,EAAE,QAAQ,GAAG,oBAAoB,GAAG,eAAe;iBAC/D;AACH,YAAA,KAAK,QAAQ;gBACX,OAAO;AACL,oBAAA,GAAG,aAAa;AAChB,oBAAA,aAAa,EAAE;AACb,0BAAE;AACF,0BAAE,mBAAmB;oBACvB,WAAW,EAAE,QAAQ,GAAG,oBAAoB,GAAG,eAAe;iBAC/D;AACH,YAAA,KAAK,MAAM;gBACT,OAAO;AACL,oBAAA,GAAG,aAAa;AAChB,oBAAA,aAAa,EAAE;AACb,0BAAE;AACF,0BAAE,kBAAkB;oBACtB,WAAW,EAAE,QAAQ,GAAG,oBAAoB,GAAG,eAAe;iBAC/D;AACH,YAAA,KAAK,OAAO;gBACV,OAAO;AACL,oBAAA,GAAG,aAAa;AAChB,oBAAA,aAAa,EAAE;AACb,0BAAE;AACF,0BAAE,mBAAmB;oBACvB,WAAW,EAAE,QAAQ,GAAG,oBAAoB,GAAG,eAAe;iBAC/D;AACH,YAAA;AACE,gBAAA,OAAO,aAAa;;AAE1B,KAAC,CAAC;AAEF;;;AAGG;IAGH,aAAa,GAAA;QACX,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;;AAG7D;;;AAGG;AAEH,IAAA,cAAc,CAAC,KAAiB,EAAA;QAC9B,IACE,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EACnC;AACA,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAIpC;;;;AAIG;AACH,IAAA,uBAAuB,CAAC,KAAiB,EAAA;QACvC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;QACpD,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,OAAO,KAAK;;QAEd,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;;AAGvD;;;;AAIG;AACH,IAAA,uBAAuB,CAAC,KAAiB,EAAA;AACvC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa;QAClD,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,OAAO,KAAK;;QAEd,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;;AAGvD;;;AAGG;AACH,IAAA,mBAAmB,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACnD,IAAI,CAAC,uBAAuB,EAAE;;;AAIlC;;;AAGG;AACH,IAAA,gBAAgB,CAAC,KAAiB,EAAA;AAChC,QAAA,IACE,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACnC,YAAA,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EACpC;YACA,IAAI,CAAC,uBAAuB,EAAE;;;AAIlC;;;AAGG;IACH,uBAAuB,GAAA;QACrB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAGrD;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGjC;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGlC;;;;;AAKG;IACK,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE;AAClE,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;;AAGxB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAQ,CAAC,aAAa;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAG,CAAC,aAAa;AAEpD,QAAA,MAAM,WAAW,GAAG,cAAc,CAAC,qBAAqB,EAAE;AAC1D,QAAA,MAAM,WAAW,GAAG,cAAc,CAAC,qBAAqB,EAAE;AAC1D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE;AAC9B,QAAA,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAGrD;AAED,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CACjD,OAAO,EACP,WAAW,EACX,WAAW,EACX,WAAW,CACZ;AACD,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CACrD,SAAS,EACT,eAAe,EACf,WAAW,EACX,WAAW,CACZ;AAED,QAAA,OAAO,CAAG,EAAA,eAAe,CAAI,CAAA,EAAA,iBAAiB,EAAc;;AAG9D;;;;;;;;;AASG;AACK,IAAA,sBAAsB,CAC5B,OAAkB,EAClB,WAAoB,EACpB,WAAoB,EACpB,MAAc,EAAA;QAEd,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACvC,YAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM;YAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM;AAC1D,YAAA,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG;YAElC,IACE,OAAO,KAAK,QAAQ;AACpB,gBAAA,UAAU,GAAG,WAAW;gBACxB,UAAU,GAAG,UAAU,EACvB;AACA,gBAAA,OAAO,KAAK;;YAEd,IACE,OAAO,KAAK,KAAK;AACjB,gBAAA,UAAU,GAAG,WAAW;gBACxB,UAAU,GAAG,UAAU,EACvB;AACA,gBAAA,OAAO,QAAQ;;;aAEZ;AACL,YAAA,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,MAAM;YAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,KAAK;AACxD,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI;YAElC,IACE,OAAO,KAAK,OAAO;AACnB,gBAAA,UAAU,GAAG,WAAW;gBACxB,SAAS,GAAG,UAAU,EACtB;AACA,gBAAA,OAAO,MAAM;;YAEf,IACE,OAAO,KAAK,MAAM;AAClB,gBAAA,SAAS,GAAG,WAAW;gBACvB,UAAU,GAAG,SAAS,EACtB;AACA,gBAAA,OAAO,OAAO;;;AAGlB,QAAA,OAAO,OAAO;;AAGhB;;;;;;;;;AASG;AACK,IAAA,wBAAwB,CAC9B,SAAoB,EACpB,OAAkB,EAClB,WAAoB,EACpB,WAAoB,EAAA;QAEpB,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACvC,YAAA,IAAI,SAAS,KAAK,MAAM,EAAE;gBACxB,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK;AAC5D,gBAAA,IAAI,eAAe,GAAG,MAAM,CAAC,UAAU,EAAE;AACvC,oBAAA,OAAO,OAAO;;;AAEX,iBAAA,IAAI,SAAS,KAAK,OAAO,EAAE;gBAChC,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK;AAC5D,gBAAA,IAAI,cAAc,GAAG,CAAC,EAAE;AACtB,oBAAA,OAAO,MAAM;;;AAEV,iBAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;gBACjC,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC;gBAC9D,MAAM,cAAc,GAAG,aAAa,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC;AAC5D,gBAAA,MAAM,eAAe,GAAG,cAAc,GAAG,WAAW,CAAC,KAAK;AAE1D,gBAAA,IAAI,cAAc,GAAG,CAAC,EAAE;AACtB,oBAAA,OAAO,MAAM;;AACR,qBAAA,IAAI,eAAe,GAAG,MAAM,CAAC,UAAU,EAAE;AAC9C,oBAAA,OAAO,OAAO;;;;aAGb,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC9C,YAAA,IAAI,SAAS,KAAK,KAAK,EAAE;gBACvB,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM;AAC7D,gBAAA,IAAI,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE;AACzC,oBAAA,OAAO,QAAQ;;;AAEZ,iBAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;gBACjC,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;AAC7D,gBAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,oBAAA,OAAO,KAAK;;;AAET,iBAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;gBACjC,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;gBAC9D,MAAM,aAAa,GAAG,aAAa,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;AAC5D,gBAAA,MAAM,gBAAgB,GAAG,aAAa,GAAG,WAAW,CAAC,MAAM;AAE3D,gBAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,oBAAA,OAAO,KAAK;;AACP,qBAAA,IAAI,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE;AAChD,oBAAA,OAAO,QAAQ;;;;AAIrB,QAAA,OAAO,SAAS;;uGA9VP,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,ugCC3BxB,ssBAgBA,EAAA,CAAA;;2FDWa,WAAW,EAAA,UAAA,EAAA,CAAA;kBAXvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAEpB,IAAA,EAAA;AACJ,wBAAA,iBAAiB,EAAE,GAAG;AACtB,wBAAA,SAAS,EAAE,sDAAsD;AACjE,wBAAA,WAAW,EAAE,6BAA6B;AAC1C,wBAAA,cAAc,EAAE,2CAA2C;AAC3D,wBAAA,cAAc,EAAE,2CAA2C;AAC5D,qBAAA,EAAA,QAAA,EAAA,ssBAAA,EAAA;8BAyGD,aAAa,EAAA,CAAA;sBAFZ,YAAY;uBAAC,eAAe;;sBAC5B,YAAY;uBAAC,eAAe;gBAU7B,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MEjI/B,KAAK,CAAA;;AAEP,IAAA,OAAO,GAAG,KAAK,CACtB,SAAS,CACV;;AAGQ,IAAA,IAAI,GAAG,KAAK,CAAsB,SAAS,CAAC;uGAP1C,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAL,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAK,8YALN,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKf,KAAK,EAAA,UAAA,EAAA,CAAA;kBAPjB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAAgB,cAAA,CAAA;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,+BAA+B;AAC3C,qBAAA;AACF,iBAAA;;;MCaY,QAAQ,CAAA;AACnB;;AAEG;AACM,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,CAAC;AAEtC;;AAEG;AACH,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvB;;AAEG;IACH,WAAW,GAAG,MAAM,EAAW;AAE/B;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC;;AAG/C;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;;uGA7BtB,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,2eAVT,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAUD,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAZpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAE,CAAA;AACZ,oBAAA,IAAI,EAAE;AACJ,wBAAA,aAAa,EAAE,UAAU;AACzB,wBAAA,gBAAgB,EAAE,SAAS;AAC3B,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,iBAAiB,EAAE,eAAe;AAClC,wBAAA,iBAAiB,EAAE,eAAe;AACnC,qBAAA;AACF,iBAAA;;;MCIY,QAAQ,CAAA;AACnB;;AAEG;AACM,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,CAAC;AAExC;;AAEG;AACM,IAAA,KAAK,GAAG,MAAM,CAAgB,IAAI,CAAC;AAE5C;;AAEG;AACM,IAAA,IAAI,GAAG,KAAK,CAAS,CAAC,CAAC;AAEhC;;AAEG;AACM,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,CAAC;AAEjC;;AAEG;AACM,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC;AAExC;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAEzC;;;AAGG;AACM,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC;AAEzC;;AAEG;IACH,WAAW,GAAG,MAAM,EAAiB;AAErC;;AAEG;AACM,IAAA,EAAE,GAAG,MAAM,CAAkC,UAAU,CAAC;AAEjE;;;AAGG;AACH,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA6B;QAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;uGAtD1B,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,4jCAZT,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAYD,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAdpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAE,CAAA;AACZ,oBAAA,IAAI,EAAE;AACJ,wBAAA,eAAe,EAAE,qBAAqB;AACtC,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,oBAAoB,EAAE,WAAW;AACjC,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,SAAS,EAAE,mBAAmB;AAC9B,wBAAA,QAAQ,EAAE,oBAAoB;AAC/B,qBAAA;AACF,iBAAA;;;MCbY,UAAU,CAAA;AACrB;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,CAAC;AAExC;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,CAAC;uGAT1B,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,kbANX,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAMf,UAAU,EAAA,UAAA,EAAA,CAAA;kBARtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAAgB,cAAA,CAAA;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,mBAAmB,EAAE,YAAY;AAClC,qBAAA;AACF,iBAAA;;;MCSY,KAAK,CAAA;AAChB;;AAEG;AACM,IAAA,KAAK,GAAG,KAAK,CAAS,GAAG,CAAC;AAEnC;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAS,MAAM,CAAC;AAEzC;;AAEG;AACH,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvB;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;;AAG7C;;AAEG;AACH,IAAA,OAAO,CAAC,KAAY,EAAA;QAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;;uGA3B/C,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAL,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAK,ifAPN,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAOD,KAAK,EAAA,UAAA,EAAA,CAAA;kBATjB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAAE,CAAA;AACZ,oBAAA,IAAI,EAAE;AACJ,wBAAA,cAAc,EAAE,SAAS;AACzB,wBAAA,mBAAmB,EAAE,YAAY;AACjC,wBAAA,SAAS,EAAE,iBAAiB;AAC7B,qBAAA;AACF,iBAAA;;;ACbD;;;AAGG;MAiBU,gBAAgB,CAAA;AAC3B;;;AAGG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAW,YAAY,CAAC;AAEjD;;;AAGG;AACM,IAAA,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AAEvB;;;;;;;AAOG;AACM,IAAA,OAAO,GAAG,KAAK,CACtB,SAAS,CACV;AAED;;;;;AAKG;AACM,IAAA,IAAI,GAAG,KAAK,CAAsB,SAAS,CAAC;uGA/B1C,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAdjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAES,WAAW,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEV,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAhB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;AAUT,EAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,WAAW,CAAC;AACvB,iBAAA;;;MCIY,WAAW,CAAA;AACtB;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;AAE7B;;AAEG;AACM,IAAA,KAAK,GAAG,MAAM,CAAS,SAAS,CAAC;AAE1C;;AAEG;AACM,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG;AAC5B,KAAC,CAAC;AAEF;;AAEG;AACM,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QACjC,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AAC5C,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3C,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3C,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAE3C,QAAA,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC;QACtD,OAAO,SAAS,GAAG,GAAG,GAAG,SAAS,GAAG,SAAS;AAChD,KAAC,CAAC;AAEF;;AAEG;AACM,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC;AAEzC;;AAEG;AACc,IAAA,OAAO,GAAG,YAAY,CAAU,OAAO,CAAC;AAEzD;;AAEG;AACM,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,CAAC;AAEzC;;AAEG;AACH,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvB;;AAEG;IACK,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEvE;;;AAGG;IACH,eAAe,GAAA;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,CACrD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,iBAAiB,CAAC,CACtD;;QAGD,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,IAAI,SAAS,CACnE;;QAGD,WAAW,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,QAAgB,KAAI;YACvD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAC;AACvC,SAAC,CAAC;;AAGJ;;;;AAIG;AACH,IAAA,YAAY,CAAC,KAAa,EAAA;;QAExB,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAC/B,mEAAmE,CACpE;QACD,IAAI,aAAa,EAAE;YACjB,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,aAAa;AACpD,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAC3B,MAAM,EACN,MAAM,EACN,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,GAAG,CAC/B;;;AAIH,QAAA,IAAI,KAAK,KAAK,aAAa,EAAE;YAC3B,OAAO,SAAS,CAAC;;QAGnB,OAAO,KAAK,CAAC;;AAGf;;;;;;AAMG;AACH,IAAA,iBAAiB,CACf,MAAc,EACd,MAAc,EACd,UAAkB,EAAA;AAElB,QAAA,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAI;AAC/B,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,OAAO;AACL,gBAAA,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,IAAI,GAAG;AACvB,gBAAA,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG;gBACtB,CAAC,EAAE,MAAM,GAAG,GAAG;aAChB;AACH,SAAC;QAED,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,KAC/C,CAAI,CAAA,EAAA,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAEpE,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC7B,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;QAE7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC;QACrE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC;QACrE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC;QAErE,OAAO,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;uGAvIf,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,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,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,gCAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAwC2B,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApD9C,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAYD,WAAW,EAAA,UAAA,EAAA,CAAA;kBAfvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAE,CAAA;AACZ,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,WAAW;AAC9B,wBAAA,mBAAmB,EAAE,YAAY;AACjC,wBAAA,iBAAiB,EAAE,yBAAyB;AAC5C,wBAAA,sBAAsB,EAAE,aAAa;AACrC,wBAAA,oBAAoB,EAAE,aAAa;AACnC,wBAAA,SAAS,EAAE,mBAAmB;AAC9B,wBAAA,QAAQ,EAAE,oBAAoB;AAC9B,wBAAA,SAAS,EAAE,gCAAgC;AAC5C,qBAAA;AACF,iBAAA;;;ACdD;;;AAGG;MAYU,QAAQ,CAAA;AACnB;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;AAEhC;;AAEG;AACO,IAAA,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;AAEhC;;AAEG;AACM,IAAA,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;AAExC;;AAEG;IACH,YAAY,GAAG,MAAM,EAAQ;AAE7B;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG;;AAG1B;;;AAGG;AACH,IAAA,oBAAoB,CAAC,QAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAG/B;;;AAGG;IACH,eAAe,GAAA;AACb,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;QAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;AAE9B,QAAA,IAAI,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACnC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;;uGA7CjB,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,mUAcgB,IAAI,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzCzC,m6BAiCA,EDfY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,wGAAE,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FASlB,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAXpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,WACd,CAAC,IAAI,EAAE,aAAa,CAAC,EAEd,cAAA,EAAA;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,OAAO;4BAClB,MAAM,EAAE,CAAC,2BAA2B,CAAC;AACtC,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,m6BAAA,EAAA;;;AETH;;;AAGG;MAiBU,IAAI,CAAA;AACf;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAS,MAAM,CAAC;AACzC;;AAEG;AACM,IAAA,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AAEjC;;AAEG;AACK,IAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AAElC;;AAEG;AACc,IAAA,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC;AAExD;;AAEG;AACM,IAAA,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;AAExC;;AAEG;IACH,WAAW,GAAG,MAAM,EAAyB;AAE7C;;AAEG;AACH,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,oBAAoB,EAAE;AAC7B,SAAC,CAAC;;AAGJ;;AAEG;IACH,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAAE,IAAI,CAAC,sBAAsB,EAAE;;AAG5D;;AAEG;IACK,oBAAoB,GAAA;AAC1B,QAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU;QAE/B,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,IAAG;AAChC,YAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;AACvC,SAAC,CAAC;;AAGJ;;AAEG;IACH,sBAAsB,GAAA;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,IAAG;AAChC,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;gBAC/B,IAAI,CAAC,gBAAgB,EAAE;AACzB,aAAC,CAAC;AACJ,SAAC,CAAC;;AAGJ;;AAEG;IACH,gBAAgB,GAAA;QACd,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,IAAG;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,UAAU,EAAE,EAAE,gBAAgB,EAAE;AACvC,SAAC,CAAC;;uGA5EO,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAJ,IAAI,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAkBgC,QAAQ,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,IAAA,EAAA,wBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhC7C,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAcf,IAAI,EAAA,UAAA,EAAA,CAAA;kBAhBhB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,QAAQ,EAAE,CAAgB,cAAA,CAAA;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,sBAAsB,EAAE,0BAA0B;AAClD,wBAAA,mBAAmB,EAAE,YAAY;AAClC,qBAAA;AACD,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,WAAW;AACtB,4BAAA,MAAM,EAAE,CAAC,IAAI,EAAE,qCAAqC,CAAC;4BACrD,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,yBAAA;wBACD,gBAAgB;AACjB,qBAAA;AACF,iBAAA;;;AChCD;;AAEG;MAOU,IAAI,CAAA;uGAAJ,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAJ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAI,iHAHL,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAGf,IAAI,EAAA,UAAA,EAAA,CAAA;kBANhB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAgB,cAAA,CAAA;oBAC1B,cAAc,EAAE,CAAC,OAAO,CAAC;AAC1B,iBAAA;;;ACTD;;AAEG;MAMU,SAAS,CAAA;uGAAT,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,wEAFV,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,SAAS,EAAA,UAAA,EAAA,CAAA;kBALrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAgB,cAAA,CAAA;AAC3B,iBAAA;;;ACND;;AAEG;MAgBU,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,8QAZlB,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAYf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAf7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAgB,cAAA,CAAA;AAC1B,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,WAAW;AACtB,4BAAA,MAAM,EAAE;gCACN,+BAA+B;gCAC/B,2CAA2C;AAC5C,6BAAA;4BACD,OAAO,EAAE,CAAC,iCAAiC,CAAC;AAC7C,yBAAA;AACF,qBAAA;AACF,iBAAA;;;ACjBD;;AAEG;MAOU,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,4HAHnB,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAGf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAgB,cAAA,CAAA;oBAC1B,cAAc,EAAE,CAAC,YAAY,CAAC;AAC/B,iBAAA;;;ACRD;;AAEG;MAiBU,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,+TAb1B,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAaf,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAhBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAgB,cAAA,CAAA;AAC1B,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,mBAAmB;AAC9B,4BAAA,MAAM,EAAE;gCACN,+BAA+B;gCAC/B,2CAA2C;gCAC3C,4BAA4B;AAC7B,6BAAA;4BACD,OAAO,EAAE,CAAC,iCAAiC,CAAC;AAC7C,yBAAA;AACF,qBAAA;AACF,iBAAA;;;AClBD;;AAEG;MAiBU,sBAAsB,CAAA;uGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,yTAbvB,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAaf,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAhBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAgB,cAAA,CAAA;AAC1B,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,gBAAgB;AAC3B,4BAAA,MAAM,EAAE;gCACN,+BAA+B;gCAC/B,2CAA2C;gCAC3C,4BAA4B;AAC7B,6BAAA;4BACD,OAAO,EAAE,CAAC,iCAAiC,CAAC;AAC7C,yBAAA;AACF,qBAAA;AACF,iBAAA;;;MCPY,WAAW,CAAA;AACtB,IAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AACvB,IAAA,mBAAmB,GAAG,KAAK,CAAW,WAAW,CAAC;AAClD,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;IAE/B,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE;;IAGpB,WAAW,GAAA;AACT,QAAA,MAAM,WAAW,GAAwC;AACvD,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS;AAC1C,aAAA;AACD,YAAA,YAAY,EAAE;AACZ,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS;AAC1C,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS;AAC1C,aAAA;AACD,YAAA,aAAa,EAAE;AACb,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,SAAS;AACzC,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,SAAS;AACzC,aAAA;AACD,YAAA,cAAc,EAAE;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,SAAS;AACzC,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS;AAC1C,aAAA;AACD,YAAA,aAAa,EAAE;AACb,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS;AAC1C,aAAA;AACD,YAAA,aAAa,EAAE;AACb,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS;AAC1C,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,SAAS;AACzC,aAAA;AACD,YAAA,cAAc,EAAE;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,SAAS;AACzC,aAAA;AACD,YAAA,cAAc,EAAE;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,SAAS;AACzC,aAAA;SACF;QAED,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjE,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,iBAAiB,CAAC;;uGAlGtC,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,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,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBATvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,cAAc;4BACzB,MAAM,EAAE,CAAC,mCAAmC,CAAC;AAC9C,yBAAA;AACF,qBAAA;AACF,iBAAA;;;MCDY,KAAK,CAAA;;AAEP,IAAA,IAAI,GAAG,KAAK,CAA2C,MAAM,CAAC;;AAG9D,IAAA,KAAK,GAAG,KAAK,CAAgB,IAAI,CAAC;;AAGlC,IAAA,IAAI,GAAG,KAAK,CAAgB,IAAI,CAAC;;AAGjC,IAAA,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;;IAG1B,SAAS,GAAG,MAAM,EAAQ;;AAG1B,IAAA,QAAQ,GAAG,KAAK,CAAgB,IAAI,CAAC;;AAGrC,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK;AACrB,cAAE;AACF,cAAE,CAAS,MAAA,EAAA,IAAI,CAAC,IAAI,EAAE,cAAc;AACxC,KAAC,CAAC;IAEF,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;uGA3BZ,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAL,KAAK,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,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,UAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZlB,ygBAqBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDfY,IAAI,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAMH,KAAK,EAAA,UAAA,EAAA,CAAA;kBATjB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAEV,OAAA,EAAA,CAAC,IAAI,CAAC,EACT,IAAA,EAAA;AACJ,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,mBAAmB,EAAE,YAAY;AAClC,qBAAA,EAAA,QAAA,EAAA,ygBAAA,EAAA;;;AEEH;;;AAGG;MAeU,uBAAuB,CAAA;AAClC;;AAEG;AACM,IAAA,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC;AAE7C;;AAEG;AACM,IAAA,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,0BAA0B,CAAC,IAAI,CAAC,OAAO,EAAE;AAC1C,SAAA,QAAQ;SACR,uBAAuB,EAAE,CAC7B;AAED;;AAEG;AACM,IAAA,KAAK,GAAG,MAAM,CAAW,EAAE,CAAC;AAErC;;AAEG;AACM,IAAA,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC;AAExC;;AAEG;AACH,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B;;AAEG;IACH,YAAY,GAAG,MAAM,EAAE;AAEvB;;;AAGG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,IAAI;;AAG5C;;AAEG;AACH,IAAA,YAAY,CAAC,KAAgB,EAAA;QAC3B,MAAM,WAAW,GAAG;AAClB,cAAE;AACF,eAAG,IAAI,CAAC,cAAc,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AACpC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;AAG1B;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,cAAc,EAAE,CAAC,iBAAiB,EAAE;AACzC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC;QACzE,IAAI,CAAC,uBAAuB,EAAE;;AAGhC;;AAEG;IACH,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,cAAc,EAAE,CAAC,qBAAqB,EAAE;AAC7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC;QACzE,IAAI,CAAC,uBAAuB,EAAE;;AAGhC;;AAEG;IACH,uBAAuB,GAAA;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,IAAG;YAC9B,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,EAAE,EAAE;gBAC7C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC;;iBACjD;gBACL,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC;;AAE7D,SAAC,CAAC;;uGAnFO,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAIC,SAAS,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAflC,CAAgB,cAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAWf,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAgB,cAAA,CAAA;AAC1B,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,UAAU;4BACrB,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,yBAAyB,EAAE,4BAA4B;AACxD,qBAAA;AACF,iBAAA;;;ACfD;;;AAGG;MAmBU,gBAAgB,CAAA;AAC3B;;;AAGG;AACM,IAAA,cAAc,GAAG,YAAY,CAAC,uBAAuB,CAAC;AAE/D;;;AAGG;AACM,IAAA,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;AAEnC;;;AAGG;AACM,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC;AAE/D;;;AAGG;AACM,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC;AAEnE;;AAEG;AACH,IAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAE/C;;;AAGG;AACM,IAAA,SAAS,GAAG,MAAM,CACzB,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CACxD;AAED;;;AAGG;AACH,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;uGA1CZ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKY,uBAAuB,EApBpD,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;mBAUO,EAXP,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,KAAK,2HAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAgBlB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAlB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;AAC9B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;AAUO,kBAAA,CAAA;AACjB,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,aAAa;AACnC,qBAAA;AACF,iBAAA;;;AChBD;;;AAGG;MAuDU,iBAAiB,CAAA;AAC5B;;;AAGG;AACM,IAAA,WAAW,GAAG,KAAK,CAAS,kBAAkB,CAAC;AAExD;;AAEG;AACM,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAE/B;;;AAGG;AACM,IAAA,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAEnC;;;AAGG;AACM,IAAA,OAAO,GAAG,YAAY,CAAC,gBAAgB,CAAC;AAEjD;;;AAGG;AACM,IAAA,KAAK,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC;AAE5D;;;AAGG;AACM,IAAA,WAAW,GAAG,YAAY,CACjC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,CAClD;AAED;;;AAGG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;AAEhC;;;AAGG;AACM,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC;AAE5D;;;AAGG;AACM,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AAC/B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;QAC7B,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAI;gBAC5C,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACnC,oBAAA,OAAO,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE;;AAEjE,gBAAA,OAAO,GAAG;aACX,EAAE,EAAE,CAAC;;aACD;AACL,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;;AAE7B,KAAC,CAAC;AAEF;;;AAGG;AACM,IAAA,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;AAEjC;;;AAGG;AACM,IAAA,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,CAAC;AAE7D;;;AAGG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,yBAAyB,EAAE;;AAGlC;;;;AAIG;IACH,yBAAyB,GAAA;QACvB,IAAI,CAAC,OAAO;AACV,cAAE,cAAc;AAChB,cAAE,YAAY,CAAC,SAAS,CAAC,MAAK;YAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAG,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,SAAC,CAAC;;AAGN;;;AAGG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGvB;;;;AAIG;IACH,KAAK,GAAA;QACH,IAAI,CAAC,mBAAmB,EAAE,EAAE,UAAU,CAAC,aAAa,CAClD,0BAA0B,CAC3B;QAED,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,mBAAmB,EAAE,EAAE,UAAU,CAAC,gBAAgB,CACrD,0BAA0B,CAC3B;YACD,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;AACzC,SAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;;AAGvB;;AAEG;IACH,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC;AACjE,QAAA,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE;;AAGlE;;;AAGG;IAEH,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC;;;AAKnE;;;AAGG;AACK,IAAA,QAAQ,GAA8B,MAAM,SAAS;AAE7D;;;AAGG;AACK,IAAA,SAAS,GAAe,MAAM,SAAS;AAE/C;;;;AAIG;AACH,IAAA,UAAU,CAAC,KAAe,EAAA;QACxB,IAAI,KAAK,EAAE;AACT,YAAA,KAAK,CAAC,OAAO,CAAC,KAAK,IAAG;AACpB,gBAAA,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC;AAClE,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAIzB;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAA6B,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;;uGArMpB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EARjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,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,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,QAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAwB+B,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EANpB,MAAM,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA8DO,mBAAmB,EAjIlD,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCO,kBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAxCP,MAAM,EAAE,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,4+BAAE,gBAAgB,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAoDlD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAtD7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;oBACtB,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC9D,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCO,kBAAA,CAAA;AACjB,oBAAA,IAAI,EAAE;AACJ,wBAAA,kBAAkB,EAAE,YAAY;AACjC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;8BAgJC,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe;;;AC3N/B;;AAEG;AAEH;;ACJA;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basis-ng/primitives",
3
- "version": "0.0.1-alpha.21",
3
+ "version": "0.0.1-alpha.23",
4
4
  "description": "basis-ng components, animations, directives and services for Angular",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^19.2.0",
package/public-api.d.ts CHANGED
@@ -33,6 +33,7 @@ export * from './core/components/tree/shared/components/tree-node/tree-node.comp
33
33
  export * from './core/components/menu/menu.component';
34
34
  export * from './core/components/menu/shared/components/menu-label/menu-label.component';
35
35
  export * from './core/components/menu/shared/components/menu-item/menu-item.component';
36
+ export * from './core/components/menu/shared/components/menu-group/menu-group.component';
36
37
  export * from './core/components/menu/shared/components/menu-item-checkbox/menu-item-checkbox.component';
37
38
  export * from './core/components/menu/shared/components/menu-item-radio/menu-item-radio.component';
38
39
  export * from './core/components/menu/shared/directives/menu-trigger.directive';